/*
* Copyright 1993-2023 NVIDIA Corporation. All rights reserved.
*
* NOTICE TO LICENSEE:
*
* This source code and/or documentation ("Licensed Deliverables") are
* subject to NVIDIA intellectual property rights under U.S. and
* international Copyright laws.
*
* These Licensed Deliverables contained herein is PROPRIETARY and
* CONFIDENTIAL to NVIDIA and is being provided under the terms and
* conditions of a form of NVIDIA software license agreement by and
* between NVIDIA and Licensee ("License Agreement") or electronically
* accepted by Licensee. Notwithstanding any terms or conditions to
* the contrary in the License Agreement, reproduction or disclosure
* of the Licensed Deliverables to any third party without the express
* written consent of NVIDIA is prohibited.
*
* NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
* LICENSE AGREEMENT, NVIDIA MAKES NO REPRESENTATION ABOUT THE
* SUITABILITY OF THESE LICENSED DELIVERABLES FOR ANY PURPOSE. IT IS
* PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND.
* NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THESE LICENSED
* DELIVERABLES, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY,
* NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
* NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
* LICENSE AGREEMENT, IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY
* SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY
* DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THESE LICENSED DELIVERABLES.
*
* U.S. Government End Users. These Licensed Deliverables are a
* "commercial item" as that term is defined at 48 C.F.R. 2.101 (OCT
* 1995), consisting of "commercial computer software" and "commercial
* computer software documentation" as such terms are used in 48
* C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Government
* only as a commercial end item. Consistent with 48 C.F.R.12.212 and
* 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), all
* U.S. Government End Users acquire the Licensed Deliverables with
* only those rights set forth herein.
*
* Any use of the Licensed Deliverables in individual and commercial
* software must include, in the user documentation and internal
* comments to the code, the above Disclaimer and U.S. Government End
* Users Notice.
*/
#if !defined(__CUDA_INCLUDE_COMPILER_INTERNAL_HEADERS__)
#if defined(_MSC_VER)
#pragma message("crt/math_functions.h is an internal header file and must not be used directly. Please use cuda_runtime_api.h or cuda_runtime.h instead.")
#else
#warning "crt/math_functions.h is an internal header file and must not be used directly. Please use cuda_runtime_api.h or cuda_runtime.h instead."
#endif
#define __CUDA_INCLUDE_COMPILER_INTERNAL_HEADERS__
#define __UNDEF_CUDA_INCLUDE_COMPILER_INTERNAL_HEADERS_MATH_FUNCTIONS_H__
#endif
#if !defined(__MATH_FUNCTIONS_H__)
#define __MATH_FUNCTIONS_H__
#if defined(__QNX__) && (__GNUC__ >= 5) && defined(__CUDACC__)
#if __has_include(<__config>)
#include <__config>
#endif
#endif
/**
* \defgroup CUDA_MATH Mathematical Functions
*
* CUDA mathematical functions are always available in device code.
*
* Host implementations of the common mathematical functions are mapped
* in a platform-specific way to standard math library functions, provided
* by the host compiler and respective host libm where available.
* Some functions, not available with the host compilers, are implemented
* in crt/math_functions.hpp header file.
* For example, see ::erfinv(). Other, less common functions,
* like ::rhypot(), ::cyl_bessel_i0() are only available in device code.
*
* Note that many floating-point and integer functions names are
* overloaded for different argument types. For example, the ::log()
* function has the following prototypes:
* \code
* double log(double x);
* float log(float x);
* float logf(float x);
* \endcode
*
* Note also that due to implementation constraints, certain math functions
* from std:: namespace may be callable in device code even via explicitly
* qualified std:: names. However, such use is discouraged, since this
* capability is unsupported, unverified, undocumented, not portable, and
* may change without notice.
*/
/*******************************************************************************
* *
* *
* *
*******************************************************************************/
#if defined(__cplusplus) && defined(__CUDACC__)
/*******************************************************************************
* *
* *
* *
*******************************************************************************/
#include "builtin_types.h"
#include "host_defines.h"
//NOTE: For NVRTC, these declarations have been moved into the compiler (to reduce compile time)
#define EXCLUDE_FROM_RTC
/*******************************************************************************
* *
* *
* *
*******************************************************************************/
extern "C"
{
/* Define math function DOXYGEN toplevel groups, functions will
be added to these groups later.
*/
/**
* \defgroup CUDA_MATH_SINGLE Single Precision Mathematical Functions
* This section describes single precision mathematical functions.
* To use these functions you do not need to include any additional
* header files in your program.
*/
/**
* \defgroup CUDA_MATH_DOUBLE Double Precision Mathematical Functions
* This section describes double precision mathematical functions.
* To use these functions you do not need to include any additional
* header files in your program.
*/
/**
* \defgroup CUDA_MATH_INT Integer Mathematical Functions
* This section describes integer mathematical functions.
* To use these functions you do not need to include any additional
* header files in your program.
*/
/**
* \defgroup CUDA_MATH_INTRINSIC_SINGLE Single Precision Intrinsics
* This section describes single precision intrinsic functions that are
* only supported in device code.
* To use these functions you do not need to include any additional
* header files in your program.
*/
/**
* \defgroup CUDA_MATH_INTRINSIC_DOUBLE Double Precision Intrinsics
* This section describes double precision intrinsic functions that are
* only supported in device code.
* To use these functions you do not need to include any additional
* header files in your program.
*/
/**
* \defgroup CUDA_MATH_INTRINSIC_INT Integer Intrinsics
* This section describes integer intrinsic functions that are
* only supported in device code.
* To use these functions you do not need to include any additional
* header files in your program.
*/
/**
* \defgroup CUDA_MATH_INTRINSIC_CAST Type Casting Intrinsics
* This section describes type casting intrinsic functions that are
* only supported in device code.
* To use these functions you do not need to include any additional
* header files in your program.
*/
/**
*
* \defgroup CUDA_MATH_INTRINSIC_SIMD SIMD Intrinsics
* This section describes SIMD intrinsic functions that are
* only supported in device code.
* To use these functions you do not need to include any additional
* header files in your program.
*/
/**
* @}
*/
#define __DEVICE_FUNCTIONS_DECL__ __host__ __device__
#if !defined(_MSC_VER)
#define __CUDA_MATH_CRTIMP
#else
#if _MSC_VER < 1900
#define __CUDA_MATH_CRTIMP _CRTIMP
#else
#define __CUDA_MATH_CRTIMP _ACRTIMP
#endif
#endif
#if defined(__ANDROID__) && (__ANDROID_API__ <= 20) && !defined(__aarch64__)
static __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __cudart_builtin__ int abs(int);
static __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __cudart_builtin__ long int labs(long int);
static __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __cudart_builtin__ long long int llabs(long long int);
#else /* __ANDROID__ */
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the absolute value of the input \p int argument.
*
* Calculate the absolute value of the input argument \p a.
*
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __cudart_builtin__ int __cdecl abs(int a) __THROW;
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the absolute value of the input \p long \p int argument.
*
* Calculate the absolute value of the input argument \p a.
*
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __cudart_builtin__ long int __cdecl labs(long int a) __THROW;
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the absolute value of the input \p long \p long \p int argument.
*
* Calculate the absolute value of the input argument \p a.
*
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __cudart_builtin__ long long int llabs(long long int a) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
}
#endif
#endif /* __ANDROID__ */
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
/* put all math functions in std */
namespace std {
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the absolute value of the input argument.
*
* Calculate the absolute value of the input argument \p x.
*
* \return
* Returns the absolute value of the input argument.
* - fabs(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
* - fabs(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns +0.
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __cdecl fabs(double x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the absolute value of its argument
*
* Calculate the absolute value of the input argument \p x.
*
* \return
* Returns the absolute value of its argument.
* - fabsf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
* - fabsf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns +0.
* - fabsf(NaN) returns an unspecified NaN.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float fabsf(float x) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* std */
#endif
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the minimum value of the input \p int arguments.
*
* Calculate the minimum value of the arguments \p a and \p b.
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int min(const int a, const int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the minimum value of the input \p unsigned \p int arguments.
*
* Calculate the minimum value of the arguments \p a and \p b.
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ unsigned int umin(const unsigned int a, const unsigned int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the minimum value of the input \p long \p long \p int arguments.
*
* Calculate the minimum value of the arguments \p a and \p b.
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ long long int llmin(const long long int a, const long long int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the minimum value of the input \p unsigned \p long \p long \p int arguments.
*
* Calculate the minimum value of the arguments \p a and \p b.
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ unsigned long long int ullmin(const unsigned long long int a, const unsigned long long int b);
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Determine the minimum numeric value of the arguments.
*
* Determines the minimum numeric value of the arguments \p x and \p y. Treats NaN
* arguments as missing data. If one argument is a NaN and the other is legitimate numeric
* value, the numeric value is chosen.
*
* \return
* Returns the minimum numeric value of the arguments \p x and \p y.
* - If both arguments are NaN, returns NaN.
* - If one argument is NaN, returns the numeric argument.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float fminf(float x, float y) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl fminf(float x, float y);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Determine the minimum numeric value of the arguments.
*
* Determines the minimum numeric value of the arguments \p x and \p y. Treats NaN
* arguments as missing data. If one argument is a NaN and the other is legitimate numeric
* value, the numeric value is chosen.
*
* \return
* Returns the minimum numeric value of the arguments \p x and \p y.
* - If both arguments are NaN, returns NaN.
* - If one argument is NaN, returns the numeric argument.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double fmin(double x, double y) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl fmin(double x, double y);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* std */
#endif
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the maximum value of the input \p int arguments.
*
* Calculate the maximum value of the arguments \p a and \p b.
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int max(const int a, const int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the maximum value of the input \p unsigned \p int arguments.
*
* Calculate the maximum value of the arguments \p a and \p b.
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ unsigned int umax(const unsigned int a, const unsigned int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the maximum value of the input \p long \p long \p int arguments.
*
* Calculate the maximum value of the arguments \p a and \p b.
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ long long int llmax(const long long int a, const long long int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the maximum value of the input \p unsigned \p long \p long \p int arguments.
*
* Calculate the maximum value of the arguments \p a and \p b.
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ unsigned long long int ullmax(const unsigned long long int a, const unsigned long long int b);
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Determine the maximum numeric value of the arguments.
*
* Determines the maximum numeric value of the arguments \p x and \p y. Treats NaN
* arguments as missing data. If one argument is a NaN and the other is legitimate numeric
* value, the numeric value is chosen.
*
* \return
* Returns the maximum numeric values of the arguments \p x and \p y.
* - If both arguments are NaN, returns NaN.
* - If one argument is NaN, returns the numeric argument.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float fmaxf(float x, float y) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl fmaxf(float x, float y);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Determine the maximum numeric value of the arguments.
*
* Determines the maximum numeric value of the arguments \p x and \p y. Treats NaN
* arguments as missing data. If one argument is a NaN and the other is legitimate numeric
* value, the numeric value is chosen.
*
* \return
* Returns the maximum numeric values of the arguments \p x and \p y.
* - If both arguments are NaN, returns NaN.
* - If one argument is NaN, returns the numeric argument.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double fmax(double, double) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl fmax(double, double);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the sine of the input argument.
*
* Calculate the sine of the input argument \p x (measured in radians).
*
* \return
* - sin(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - sin(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns NaN.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __cdecl sin(double x) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the cosine of the input argument.
*
* Calculate the cosine of the input argument \p x (measured in radians).
*
* \return
* - cos(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns 1.
* - cos(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns NaN.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __cdecl cos(double x) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* std */
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the sine and cosine of the first input argument.
*
* Calculate the sine and cosine of the first input argument \p x (measured
* in radians). The results for sine and cosine are written into the
* second argument, \p sptr, and, respectively, third argument, \p cptr.
*
* \return
* - none
*
* \see ::sin() and ::cos().
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ void sincos(double x, double *sptr, double *cptr) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the sine and cosine of the first input argument.
*
* Calculate the sine and cosine of the first input argument \p x (measured
* in radians). The results for sine and cosine are written into the second
* argument, \p sptr, and, respectively, third argument, \p cptr.
*
* \return
* - none
*
* \see ::sinf() and ::cosf().
* \note_accuracy_single
* \note_fastmath
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ void sincosf(float x, float *sptr, float *cptr) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the tangent of the input argument.
*
* Calculate the tangent of the input argument \p x (measured in radians).
*
* \return
* - tan(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - tan(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns NaN.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __cdecl tan(double x) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the square root of the input argument.
*
* Calculate the nonnegative square root of \p x,
* \latexonly $\sqrt{x}$ \endlatexonly
* \xmlonly
*
*
*
* x
*
*
* \endxmlonly.
*
* \return
* Returns
* \latexonly $\sqrt{x}$ \endlatexonly
* \xmlonly
*
*
*
* x
*
*
* \endxmlonly.
* - sqrt(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - sqrt(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
* - sqrt(\p x) returns NaN if \p x is less than 0.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __cdecl sqrt(double x) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* std */
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the reciprocal of the square root of the input argument.
*
* Calculate the reciprocal of the nonnegative square root of \p x,
* \latexonly $1/\sqrt{x}$ \endlatexonly
* \xmlonly
*
*
* 1
*
* /
*
*
* x
*
*
* \endxmlonly.
*
* \return
* Returns
* \latexonly $1/\sqrt{x}$ \endlatexonly
* \xmlonly
*
*
* 1
*
* /
*
*
* x
*
*
* \endxmlonly.
* - rsqrt(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns +0.
* - rsqrt(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
* - rsqrt(\p x) returns NaN if \p x is less than 0.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double rsqrt(double x);
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the reciprocal of the square root of the input argument.
*
* Calculate the reciprocal of the nonnegative square root of \p x,
* \latexonly $1/\sqrt{x}$ \endlatexonly
* \xmlonly
*
*
* 1
*
* /
*
*
* x
*
*
* \endxmlonly.
*
* \return
* Returns
* \latexonly $1/\sqrt{x}$ \endlatexonly
* \xmlonly
*
*
* 1
*
* /
*
*
* x
*
*
* \endxmlonly.
* - rsqrtf(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns +0.
* - rsqrtf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
* - rsqrtf(\p x) returns NaN if \p x is less than 0.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float rsqrtf(float x);
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the base 2 logarithm of the input argument.
*
* Calculate the base 2 logarithm of the input argument \p x.
*
* \return
* - log2(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - log2(1) returns +0.
* - log2(\p x) returns NaN for \p x < 0.
* - log2(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double log2(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl log2(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the base 2 exponential of the input argument.
*
* Calculate
* \latexonly $2^x$ \endlatexonly
* \xmlonly
*
*
*
* 2
* x
*
*
* \endxmlonly,
* the base 2 exponential of the input argument \p x.
*
* \return
* - exp2(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns 1.
* - exp2(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* -
* ∞
*
* \endxmlonly
* ) returns +0.
* - exp2(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double exp2(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl exp2(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the base 2 exponential of the input argument.
*
* Calculate
* \latexonly $2^x$ \endlatexonly
* \xmlonly
*
*
*
* 2
* x
*
*
* \endxmlonly,
* the base 2 exponential of the input argument \p x.
*
* \return
* - exp2f(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns 1.
* - exp2f(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* -
* ∞
*
* \endxmlonly
* ) returns +0.
* - exp2f(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float exp2f(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl exp2f(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* std */
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the base 10 exponential of the input argument.
*
* Calculate
* \latexonly $10^x$ \endlatexonly
* \xmlonly
*
*
*
* 10
* x
*
*
* \endxmlonly,
* the base 10 exponential of the input argument \p x.
*
* \return
* - exp10(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns 1.
* - exp10(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* -
* ∞
*
* \endxmlonly
* ) returns +0.
* - exp10(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double exp10(double x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the base 10 exponential of the input argument.
*
* Calculate
* \latexonly $10^x$ \endlatexonly
* \xmlonly
*
*
*
* 10
* x
*
*
* \endxmlonly,
* the base 10 exponential of the input argument \p x.
*
* \return
* - exp10f(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns 1.
* - exp10f(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* -
* ∞
*
* \endxmlonly
* ) returns +0.
* - exp10f(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_single
* \note_fastmath
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float exp10f(float x) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the base
* \latexonly $e$ \endlatexonly
* \xmlonly
*
*
* e
*
*
* \endxmlonly
* exponential of the input argument, minus 1.
*
* Calculate
* \latexonly $e^x$ \endlatexonly
* \xmlonly
*
*
*
* e
* x
*
*
* \endxmlonly
* -1, the base
* \latexonly $e$ \endlatexonly
* \xmlonly
*
*
* e
*
*
* \endxmlonly
* exponential of the input argument \p x, minus 1.
*
* \return
* - expm1(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly.
* - expm1(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* -
* ∞
*
* \endxmlonly
* ) returns -1.
* - expm1(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double expm1(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl expm1(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the base
* \latexonly $e$ \endlatexonly
* \xmlonly
*
*
* e
*
*
* \endxmlonly
* exponential of the input argument, minus 1.
*
* Calculate
* \latexonly $e^x$ \endlatexonly
* \xmlonly
*
*
*
* e
* x
*
*
* \endxmlonly
* -1, the base
* \latexonly $e$ \endlatexonly
* \xmlonly
*
*
* e
*
*
* \endxmlonly
* exponential of the input argument \p x, minus 1.
*
* \return
* - expm1f(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly.
* - expm1f(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* -
* ∞
*
* \endxmlonly
* ) returns -1.
* - expm1f(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float expm1f(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl expm1f(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the base 2 logarithm of the input argument.
*
* Calculate the base 2 logarithm of the input argument \p x.
*
* \return
* - log2f(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - log2f(1) returns +0.
* - log2f(\p x) returns NaN for \p x < 0.
* - log2f(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_single
* \note_fastmath
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float log2f(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl log2f(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the base 10 logarithm of the input argument.
*
* Calculate the base 10 logarithm of the input argument \p x.
*
* \return
* - log10(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - log10(1) returns +0.
* - log10(\p x) returns NaN for \p x < 0.
* - log10(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __cdecl log10(double x) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the base
* \latexonly $e$ \endlatexonly
* \xmlonly
*
*
* e
*
*
* \endxmlonly
* logarithm of the input argument.
*
* Calculate the base
* \latexonly $e$ \endlatexonly
* \xmlonly
*
*
* e
*
*
* \endxmlonly
* logarithm of the input argument \p x.
*
* \return
* - log(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - log(1) returns +0.
* - log(\p x) returns NaN for \p x < 0.
* - log(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __cdecl log(double x) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the value of
* \latexonly $\log_{e}(1+x)$ \endlatexonly
* \xmlonly
*
*
*
* log
*
* e
*
*
* (
* 1
* +
* x
* )
*
* \endxmlonly.
*
* Calculate the value of
* \latexonly $\log_{e}(1+x)$ \endlatexonly
* \xmlonly
*
*
*
* log
*
* e
*
*
* (
* 1
* +
* x
* )
*
* \endxmlonly
* of the input argument \p x.
*
* \return
* - log1p(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly.
* - log1p(-1) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - log1p(\p x) returns NaN for \p x < -1.
* - log1p(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double log1p(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl log1p(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the value of
* \latexonly $\log_{e}(1+x)$ \endlatexonly
* \xmlonly
*
*
*
* log
*
* e
*
*
* (
* 1
* +
* x
* )
*
* \endxmlonly.
*
* Calculate the value of
* \latexonly $\log_{e}(1+x)$ \endlatexonly
* \xmlonly
*
*
*
* log
*
* e
*
*
* (
* 1
* +
* x
* )
*
* \endxmlonly
* of the input argument \p x.
*
* \return
* - log1pf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly.
* - log1pf(-1) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - log1pf(\p x) returns NaN for \p x < -1.
* - log1pf(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float log1pf(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl log1pf(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the largest integer less than or equal to \p x.
*
* Calculates the largest integer value which is less than or equal to \p x.
*
* \return
* Returns
* \latexonly $\lfloor x \rfloor$ \endlatexonly
* \xmlonly
*
*
* ⌊
* x
* ⌋
*
*
* \endxmlonly
* expressed as a floating-point number.
* - floor(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
* - floor(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl floor(double x) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the base
* \latexonly $e$ \endlatexonly
* \xmlonly
*
*
* e
*
*
* \endxmlonly
* exponential of the input argument.
*
* Calculate
* \latexonly $e^x$ \endlatexonly
* \xmlonly
*
*
*
* e
* x
*
*
* \endxmlonly,
* the base
* \latexonly $e$ \endlatexonly
* \xmlonly
*
*
* e
*
*
* \endxmlonly
* exponential of the input argument \p x.
*
* \return
* - exp(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns 1.
* - exp(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* -
* ∞
*
* \endxmlonly
* ) returns +0.
* - exp(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __cdecl exp(double x) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the hyperbolic cosine of the input argument.
*
* Calculate the hyperbolic cosine of the input argument \p x.
*
* \return
* - cosh(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns 1.
* - cosh(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __cdecl cosh(double x) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the hyperbolic sine of the input argument.
*
* Calculate the hyperbolic sine of the input argument \p x.
*
* \return
* - sinh(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - sinh(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __cdecl sinh(double x) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the hyperbolic tangent of the input argument.
*
* Calculate the hyperbolic tangent of the input argument \p x.
*
* \return
* - tanh(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - tanh(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 1$ \endlatexonly
* \xmlonly
*
*
* ±
* 1
*
*
* \endxmlonly.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __cdecl tanh(double x) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the nonnegative inverse hyperbolic cosine of the input argument.
*
* Calculate the nonnegative inverse hyperbolic cosine of the input argument \p x.
*
* \return
* Result will be in the interval [0,
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ].
* - acosh(1) returns 0.
* - acosh(\p x) returns NaN for \p x in the interval [
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* , 1).
* - acosh(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double acosh(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl acosh(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the nonnegative inverse hyperbolic cosine of the input argument.
*
* Calculate the nonnegative inverse hyperbolic cosine of the input argument \p x.
*
* \return
* Result will be in the interval [0,
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ].
* - acoshf(1) returns 0.
* - acoshf(\p x) returns NaN for \p x in the interval [
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* , 1).
* - acoshf(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float acoshf(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl acoshf(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the inverse hyperbolic sine of the input argument.
*
* Calculate the inverse hyperbolic sine of the input argument \p x.
*
* \return
* - asinh(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - asinh(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double asinh(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl asinh(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the inverse hyperbolic sine of the input argument.
*
* Calculate the inverse hyperbolic sine of the input argument \p x.
*
* \return
* - asinhf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - asinhf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float asinhf(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl asinhf(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the inverse hyperbolic tangent of the input argument.
*
* Calculate the inverse hyperbolic tangent of the input argument \p x.
*
* \return
* - atanh(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - atanh(
* \latexonly $\pm 1$ \endlatexonly
* \xmlonly
*
*
* ±
* 1
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
* - atanh(\p x) returns NaN for \p x outside interval [-1, 1].
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double atanh(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl atanh(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the inverse hyperbolic tangent of the input argument.
*
* Calculate the inverse hyperbolic tangent of the input argument \p x.
*
* \return
* - atanhf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - atanhf(
* \latexonly $\pm 1$ \endlatexonly
* \xmlonly
*
*
* ±
* 1
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
* - atanhf(\p x) returns NaN for \p x outside interval [-1, 1].
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float atanhf(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl atanhf(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the value of
* \latexonly $x\cdot 2^{exp}$ \endlatexonly
* \xmlonly
*
*
* x
* ⋅
*
* 2
*
* e
* x
* p
*
*
*
* \endxmlonly.
*
* Calculate the value of
* \latexonly $x\cdot 2^{exp}$ \endlatexonly
* \xmlonly
*
*
* x
* ⋅
*
* 2
*
* e
* x
* p
*
*
*
*
* \endxmlonly
* of the input arguments \p x and \p exp.
*
* \return
* - ldexp(\p x, \p exp) is equivalent to scalbn(\p x, \p exp).
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl ldexp(double x, int exp) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the value of
* \latexonly $x\cdot 2^{exp}$ \endlatexonly
* \xmlonly
*
*
* x
* ⋅
*
* 2
*
* e
* x
* p
*
*
*
* \endxmlonly.
*
* Calculate the value of
* \latexonly $x\cdot 2^{exp}$ \endlatexonly
* \xmlonly
*
*
* x
* ⋅
*
* 2
*
* e
* x
* p
*
*
*
*
* \endxmlonly
* of the input arguments \p x and \p exp.
*
* \return
* - ldexpf(\p x, \p exp) is equivalent to scalbnf(\p x, \p exp).
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float ldexpf(float x, int exp) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the floating-point representation of the exponent of the input argument.
*
* Calculate the floating-point representation of the exponent of the input argument \p x.
*
* \return
* - logb(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly.
* - logb(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double logb(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl logb(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the floating-point representation of the exponent of the input argument.
*
* Calculate the floating-point representation of the exponent of the input argument \p x.
*
* \return
* - logbf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly.
* - logbf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float logbf(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl logbf(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Compute the unbiased integer exponent of the argument.
*
* Calculates the unbiased integer exponent of the input argument \p x.
*
* \return
* - If successful, returns the unbiased exponent of the argument.
* - ilogb(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns INT_MIN.
* - ilogb(NaN) returns INT_MIN.
* - ilogb(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns INT_MAX.
* - Note: above behavior does not take into account FP_ILOGB0 nor FP_ILOGBNAN.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int ilogb(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP int __cdecl ilogb(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Compute the unbiased integer exponent of the argument.
*
* Calculates the unbiased integer exponent of the input argument \p x.
*
* \return
* - If successful, returns the unbiased exponent of the argument.
* - ilogbf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns INT_MIN.
* - ilogbf(NaN) returns INT_MIN.
* - ilogbf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns INT_MAX.
* - Note: above behavior does not take into account FP_ILOGB0 nor FP_ILOGBNAN.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int ilogbf(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP int __cdecl ilogbf(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Scale floating-point input by integer power of two.
*
* Scale \p x by
* \latexonly $2^n$ \endlatexonly
* \xmlonly
*
*
*
* 2
* n
*
*
*
* \endxmlonly
* by efficient manipulation of the floating-point
* exponent.
*
* \return
* Returns \p x *
* \latexonly $2^n$ \endlatexonly
* \xmlonly
*
*
*
* 2
* n
*
*
* \endxmlonly.
* - scalbn(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p n) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - scalbn(\p x, 0) returns \p x.
* - scalbn(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* , \p n) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double scalbn(double x, int n) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl scalbn(double x, int n);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Scale floating-point input by integer power of two.
*
* Scale \p x by
* \latexonly $2^n$ \endlatexonly
* \xmlonly
*
*
*
* 2
* n
*
*
*
* \endxmlonly
* by efficient manipulation of the floating-point
* exponent.
*
* \return
* Returns \p x *
* \latexonly $2^n$ \endlatexonly
* \xmlonly
*
*
*
* 2
* n
*
*
* \endxmlonly.
* - scalbnf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p n) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - scalbnf(\p x, 0) returns \p x.
* - scalbnf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* , \p n) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float scalbnf(float x, int n) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl scalbnf(float x, int n);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Scale floating-point input by integer power of two.
*
* Scale \p x by
* \latexonly $2^n$ \endlatexonly
* \xmlonly
*
*
*
* 2
* n
*
*
*
* \endxmlonly
* by efficient manipulation of the floating-point
* exponent.
*
* \return
* Returns \p x *
* \latexonly $2^n$ \endlatexonly
* \xmlonly
*
*
*
* 2
* n
*
*
* \endxmlonly.
* - scalbln(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p n) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - scalbln(\p x, 0) returns \p x.
* - scalbln(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* , \p n) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double scalbln(double x, long int n) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl scalbln(double x, long int n);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Scale floating-point input by integer power of two.
*
* Scale \p x by
* \latexonly $2^n$ \endlatexonly
* \xmlonly
*
*
*
* 2
* n
*
*
*
* \endxmlonly
* by efficient manipulation of the floating-point
* exponent.
*
* \return
* Returns \p x *
* \latexonly $2^n$ \endlatexonly
* \xmlonly
*
*
*
* 2
* n
*
*
* \endxmlonly.
* - scalblnf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p n) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - scalblnf(\p x, 0) returns \p x.
* - scalblnf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* , \p n) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float scalblnf(float x, long int n) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl scalblnf(float x, long int n);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Extract mantissa and exponent of a floating-point value
*
* Decompose the floating-point value \p x into a component \p m for the
* normalized fraction element and another term \p n for the exponent.
* The absolute value of \p m will be greater than or equal to 0.5 and
* less than 1.0 or it will be equal to 0;
* \latexonly $x = m\cdot 2^n$ \endlatexonly
* \xmlonly
*
*
* x
* =
* m
* ⋅
*
* 2
* n
*
*
* \endxmlonly.
* The integer exponent \p n will be stored in the location to which \p nptr points.
*
* \return
* Returns the fractional component \p m.
* - frexp(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p nptr) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* and stores zero in the location pointed to by \p nptr.
* - frexp(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* , \p nptr) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* and stores an unspecified value in the
* location to which \p nptr points.
* - frexp(NaN, \p y) returns a NaN and stores an unspecified value in the location to which \p nptr points.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl frexp(double x, int *nptr) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Extract mantissa and exponent of a floating-point value
*
* Decomposes the floating-point value \p x into a component \p m for the
* normalized fraction element and another term \p n for the exponent.
* The absolute value of \p m will be greater than or equal to 0.5 and
* less than 1.0 or it will be equal to 0;
* \latexonly $x = m\cdot 2^n$ \endlatexonly
* \xmlonly
*
*
* x
* =
* m
* ⋅
*
* 2
* n
*
*
* \endxmlonly.
* The integer exponent \p n will be stored in the location to which \p nptr points.
*
* \return
* Returns the fractional component \p m.
* - frexpf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p nptr) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* and stores zero in the location pointed to by \p nptr.
* - frexpf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* , \p nptr) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* and stores an unspecified value in the
* location to which \p nptr points.
* - frexpf(NaN, \p y) returns a NaN and stores an unspecified value in the location to which \p nptr points.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float frexpf(float x, int *nptr) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Round to nearest integer value in floating-point.
*
* Round \p x to the nearest integer value in floating-point format,
* with halfway cases rounded away from zero.
*
* \return
* Returns rounded integer value.
* - round(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - round(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
*
* \note_slow_round See ::rint().
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double round(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl round(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Round to nearest integer value in floating-point.
*
* Round \p x to the nearest integer value in floating-point format,
* with halfway cases rounded away from zero.
*
* \return
* Returns rounded integer value.
* - roundf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - roundf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
*
* \note_slow_round See ::rintf().
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float roundf(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl roundf(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Round to nearest integer value.
*
* Round \p x to the nearest integer value, with halfway cases rounded
* away from zero. If the result is outside the range of the return type,
* the behavior is undefined.
*
* \return
* Returns rounded integer value.
*
* \note_slow_round See ::lrint().
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ long int lround(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP long int __cdecl lround(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Round to nearest integer value.
*
* Round \p x to the nearest integer value, with halfway cases rounded
* away from zero. If the result is outside the range of the return type,
* the behavior is undefined.
*
* \return
* Returns rounded integer value.
*
* \note_slow_round See ::lrintf().
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ long int lroundf(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP long int __cdecl lroundf(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Round to nearest integer value.
*
* Round \p x to the nearest integer value, with halfway cases rounded
* away from zero. If the result is outside the range of the return type,
* the behavior is undefined.
*
* \return
* Returns rounded integer value.
*
* \note_slow_round See ::llrint().
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ long long int llround(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP long long int __cdecl llround(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Round to nearest integer value.
*
* Round \p x to the nearest integer value, with halfway cases rounded
* away from zero. If the result is outside the range of the return type,
* the behavior is undefined.
*
* \return
* Returns rounded integer value.
*
* \note_slow_round See ::llrintf().
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ long long int llroundf(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP long long int __cdecl llroundf(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Round to nearest integer value in floating-point.
*
* Round \p x to the nearest integer value in floating-point format,
* with halfway cases rounded to the nearest even integer value.
*
* \return
* Returns rounded integer value.
* - rint(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - rint(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
*/
#if defined(__CUDA_ARCH__) || defined(__DOXYGEN_ONLY__)
/*
* We don't generate the declaration of rint for host compilation.
* This is acaully a workaround to compile the boost header file when
* Clang 3.8 is used as the host compiler. The boost header file has
* the following example code:
* namespace NS { extern "C" { double rint(double); }
* }
*
* After preprocessing, we get something like below:
*
* extern "C" { double rint(double x) throw(); }
* # 30 "/usr/include/math.h" 3
* extern "C" { double rint(double x) throw(); }
* namespace NS { extern "C" { double rint(double); } }
*
* Although GCC accepts this output, Clang 3.8 doesn't.
* Furthermore, we cannot change the boost header file by adding "throw()"
* to rint's declaration there. So, as a workaround, we just don't generate
* our re-declaration for the host compilation.
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double rint(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl rint(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#endif /* __CUDA_ARCH__ || __DOXYGEN_ONLY__ */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Round input to nearest integer value in floating-point.
*
* Round \p x to the nearest integer value in floating-point format,
* with halfway cases rounded to the nearest even integer value.
*
* \return
* Returns rounded integer value.
* - rintf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - rintf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float rintf(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl rintf(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Round input to nearest integer value.
*
* Round \p x to the nearest integer value,
* with halfway cases rounded to the nearest even integer value.
* If the result is outside the range of the return type,
* the behavior is undefined.
*
* \return
* Returns rounded integer value.
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ long int lrint(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP long int __cdecl lrint(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Round input to nearest integer value.
*
* Round \p x to the nearest integer value,
* with halfway cases rounded to the nearest even integer value.
* If the result is outside the range of the return type,
* the behavior is undefined.
*
* \return
* Returns rounded integer value.
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ long int lrintf(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP long int __cdecl lrintf(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Round input to nearest integer value.
*
* Round \p x to the nearest integer value,
* with halfway cases rounded to the nearest even integer value.
* If the result is outside the range of the return type,
* the behavior is undefined.
*
* \return
* Returns rounded integer value.
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ long long int llrint(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP long long int __cdecl llrint(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Round input to nearest integer value.
*
* Round \p x to the nearest integer value,
* with halfway cases rounded to the nearest even integer value.
* If the result is outside the range of the return type,
* the behavior is undefined.
*
* \return
* Returns rounded integer value.
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ long long int llrintf(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP long long int __cdecl llrintf(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Round the input argument to the nearest integer.
*
* Round argument \p x to an integer value in double precision floating-point format. Uses round to nearest rounding, with ties rounding to even.
*
* \return
* - nearbyint(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - nearbyint(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double nearbyint(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl nearbyint(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Round the input argument to the nearest integer.
*
* Round argument \p x to an integer value in single precision floating-point format. Uses round to nearest rounding, with ties rounding to even.
*
* \return
* - nearbyintf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - nearbyintf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float nearbyintf(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl nearbyintf(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate ceiling of the input argument.
*
* Compute the smallest integer value not less than \p x.
*
* \return
* Returns
* \latexonly $\lceil x \rceil$ \endlatexonly
* \xmlonly
*
*
* ⌈
* x
* ⌉
*
*
* \endxmlonly
expressed as a floating-point number.
* - ceil(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - ceil(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl ceil(double x) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Truncate input argument to the integral part.
*
* Round \p x to the nearest integer value that does not exceed \p x in
* magnitude.
*
* \return
* Returns truncated integer value.
* - trunc(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - trunc(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double trunc(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl trunc(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Truncate input argument to the integral part.
*
* Round \p x to the nearest integer value that does not exceed \p x in
* magnitude.
*
* \return
* Returns truncated integer value.
* - truncf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - truncf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float truncf(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl truncf(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Compute the positive difference between \p x and \p y.
*
* Compute the positive difference between \p x and \p y. The positive
* difference is \p x - \p y when \p x > \p y and +0 otherwise.
*
* \return
* Returns the positive difference between \p x and \p y.
* - fdim(\p x, \p y) returns \p x - \p y if \p x > \p y.
* - fdim(\p x, \p y) returns +0 if \p x
* \latexonly $\leq$ \endlatexonly
* \xmlonly
*
*
* ≤
*
*
* \endxmlonly \p y.
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double fdim(double x, double y) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl fdim(double x, double y);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Compute the positive difference between \p x and \p y.
*
* Compute the positive difference between \p x and \p y. The positive
* difference is \p x - \p y when \p x > \p y and +0 otherwise.
*
* \return
* Returns the positive difference between \p x and \p y.
* - fdimf(\p x, \p y) returns \p x - \p y if \p x > \p y.
* - fdimf(\p x, \p y) returns +0 if \p x
* \latexonly $\leq$ \endlatexonly
* \xmlonly
*
*
* ≤
*
*
* \endxmlonly \p y.
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float fdimf(float x, float y) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl fdimf(float x, float y);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the arc tangent of the ratio of first and second input arguments.
*
* Calculate the principal value of the arc tangent of the ratio of first
* and second input arguments \p y / \p x. The quadrant of the result is
* determined by the signs of inputs \p y and \p x.
*
* \return
* Result will be in radians, in the interval [-
* \latexonly $\pi$ \endlatexonly
* \xmlonly
*
*
* π
*
*
* \endxmlonly
* , +
* \latexonly $\pi$ \endlatexonly
* \xmlonly
*
*
* π
*
*
* \endxmlonly
* ].
* - atan2(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , -0) returns
* \latexonly $\pm \pi$ \endlatexonly
* \xmlonly
*
*
* ±
* π
*
*
* \endxmlonly.
* - atan2(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , +0) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly.
* - atan2(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p x) returns
* \latexonly $\pm \pi$ \endlatexonly
* \xmlonly
*
*
* ±
* π
*
*
* \endxmlonly
* for \p x < 0.
* - atan2(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p x) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* for \p x > 0.
* - atan2(\p y,
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $-\pi$ \endlatexonly
* \xmlonly
*
*
* -
* π
*
*
* \endxmlonly
* /2 for \p y < 0.
* - atan2(\p y,
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pi$ \endlatexonly
* \xmlonly
*
*
* π
*
*
* \endxmlonly
* /2 for \p y > 0.
* - atan2(
* \latexonly $\pm y$ \endlatexonly
* \xmlonly
*
*
* ±
* y
*
*
* \endxmlonly
* ,
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* -
* ∞
*
* \endxmlonly
* ) returns
* \latexonly $\pm \pi$ \endlatexonly
* \xmlonly
*
*
* ±
* π
*
*
* \endxmlonly
* for finite \p y > 0.
* - atan2(
* \latexonly $\pm y$ \endlatexonly
* \xmlonly
*
*
* ±
* y
*
*
* \endxmlonly
* ,
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* for finite \p y > 0.
* - atan2(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* , \p x) returns
* \latexonly $\pm \pi$ \endlatexonly
* \xmlonly
*
*
* ±
* π
*
*
* \endxmlonly
* /2 for finite \p x.
* - atan2(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ,
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* -
* ∞
*
* \endxmlonly
* ) returns
* \latexonly $\pm 3\pi$ \endlatexonly
* \xmlonly
*
*
* ±
* 3
* π
*
*
* \endxmlonly
* /4.
* - atan2(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ,
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly
* ) returns
* \latexonly $\pm \pi$ \endlatexonly
* \xmlonly
*
*
* ±
* π
*
*
* \endxmlonly
* /4.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __cdecl atan2(double y, double x) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the arc tangent of the input argument.
*
* Calculate the principal value of the arc tangent of the input argument \p x.
*
* \return
* Result will be in radians, in the interval [-
* \latexonly $\pi$ \endlatexonly
* \xmlonly
*
*
* π
*
*
* \endxmlonly
* /2, +
* \latexonly $\pi$ \endlatexonly
* \xmlonly
*
*
* π
*
*
* \endxmlonly
* /2].
* - atan(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly.
* - atan(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \pi$ \endlatexonly
* \xmlonly
*
*
* ±
* π
*
*
* \endxmlonly
* /2.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __cdecl atan(double x) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the arc cosine of the input argument.
*
* Calculate the principal value of the arc cosine of the input argument \p x.
*
* \return
* Result will be in radians, in the interval [0,
* \latexonly $\pi$ \endlatexonly
* \xmlonly
*
*
* π
*
*
* \endxmlonly
* ] for \p x inside [-1, +1].
* - acos(1) returns +0.
* - acos(\p x) returns NaN for \p x outside [-1, +1].
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __cdecl acos(double x) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the arc sine of the input argument.
*
* Calculate the principal value of the arc sine of the input argument \p x.
*
* \return
* Result will be in radians, in the interval [-
* \latexonly $\pi$ \endlatexonly
* \xmlonly
*
*
* π
*
*
* \endxmlonly
* /2, +
* \latexonly $\pi$ \endlatexonly
* \xmlonly
*
*
* π
*
*
* \endxmlonly
* /2] for \p x inside [-1, +1].
* - asin(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly.
* - asin(\p x) returns NaN for \p x outside [-1, +1].
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __cdecl asin(double x) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the square root of the sum of squares of two arguments.
*
* Calculate the length of the hypotenuse of a right triangle whose two sides have lengths
* \p x and \p y without undue overflow or underflow.
*
* \return Returns the length of the hypotenuse
* \latexonly $\sqrt{x^2+y^2}$ \endlatexonly
* \xmlonly
*
*
*
*
* x
* 2
*
* +
*
* y
* 2
*
*
*
* \endxmlonly.
* - hypot(\p x,\p y), hypot(\p y,\p x), and hypot(\p x, \p -y) are equivalent.
* - hypot(\p x,
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) is equivalent to fabs(\p x).
* - hypot(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ,\p y) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly,
* even if \p y is a NaN.
*
* \note_accuracy_double
*/
#if defined(_WIN32)
#if defined(_MSC_VER) && _MSC_VER < 1900
static __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __CRTDECL hypot(double x, double y);
#else
extern _ACRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __cdecl hypot(double x, double y);
#endif
#else /* _WIN32 */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double hypot(double x, double y) __THROW;
#endif /* _WIN32 */
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* std */
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate one over the square root of the sum of squares of two arguments.
*
* Calculate one over the length of the hypotenuse of a right triangle whose two sides have
* lengths \p x and \p y without undue overflow or underflow.
*
* \return Returns one over the length of the hypotenuse
* \latexonly $\frac{1}{\sqrt{x^2+y^2}}$ \endlatexonly
* \xmlonly
*
*
*
*
* 1
*
*
*
*
* x
* 2
*
* +
*
* y
* 2
*
*
*
*
*
* \endxmlonly.
* - rhypot(\p x,\p y), rhypot(\p y,\p x), and rhypot(\p x, \p -y) are equivalent.
* - rhypot(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ,\p y) returns +0,
* even if \p y is a NaN.
*
* \note_accuracy_double
*/
extern __device__ __device_builtin__ double rhypot(double x, double y) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the square root of the sum of squares of two arguments.
*
* Calculates the length of the hypotenuse of a right triangle whose two sides have lengths
* \p x and \p y without undue overflow or underflow.
*
* \return Returns the length of the hypotenuse
* \latexonly $\sqrt{x^2+y^2}$ \endlatexonly
* \xmlonly
*
*
*
*
* x
* 2
*
* +
*
* y
* 2
*
*
*
* \endxmlonly.
* - hypotf(\p x,\p y), hypotf(\p y,\p x), and hypotf(\p x, \p -y) are equivalent.
* - hypotf(\p x,
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) is equivalent to fabsf(\p x).
* - hypotf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ,\p y) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly,
* even if \p y is a NaN.
*
* \note_accuracy_single
*/
#if defined(_WIN32)
static __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __CRTDECL hypotf(float x, float y);
#else /* _WIN32 */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float hypotf(float x, float y) __THROW;
#endif /* _WIN32 */
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* std */
#endif
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate one over the square root of the sum of squares of two arguments.
*
* Calculates one over the length of the hypotenuse of a right triangle whose two sides have
* lengths \p x and \p y without undue overflow or underflow.
*
* \return Returns one over the length of the hypotenuse
* \latexonly $\frac{1}{\sqrt{x^2+y^2}}$ \endlatexonly
* \xmlonly
*
*
*
*
* 1
*
*
*
*
* x
* 2
*
* +
*
* y
* 2
*
*
*
*
*
* \endxmlonly.
* - rhypotf(\p x,\p y), rhypotf(\p y,\p x), and rhypotf(\p x, \p -y) are equivalent.
* - rhypotf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ,\p y) returns +0,
* even if \p y is a NaN.
*
* \note_accuracy_single
*/
extern __device__ __device_builtin__ float rhypotf(float x, float y) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the square root of the sum of squares of three coordinates of the argument.
*
* Calculate the length of three dimensional vector in Euclidean space without undue overflow or underflow.
*
* \return Returns the length of 3D vector
* \latexonly $\sqrt{a^2+b^2+c^2}$ \endlatexonly
* \xmlonly
*
*
*
*
* a
* 2
*
* +
*
* b
* 2
*
* +
*
* c
* 2
*
*
*
* \endxmlonly.
* - In the presence of an exactly infinite coordinate
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly
* is returned, even if there are NaNs.
*
* \note_accuracy_double
*/
extern __device__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl norm3d(double a, double b, double c) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate one over the square root of the sum of squares of three coordinates.
*
* Calculate one over the length of three dimensional vector in Euclidean space without undue overflow or underflow.
*
* \return Returns one over the length of the 3D vector
* \latexonly $\frac{1}{\sqrt{a^2+b^2+c^2}}$ \endlatexonly
* \xmlonly
*
*
*
*
* 1
*
*
*
*
* a
* 2
*
* +
*
* b
* 2
*
* +
*
* c
* 2
*
*
*
*
*
* \endxmlonly.
* - In the presence of an exactly infinite coordinate
* \latexonly $+0$ \endlatexonly
* \xmlonly
*
*
* +
* 0
*
* \endxmlonly
* is returned, even if there are NaNs.
*
* \note_accuracy_double
*/
extern __device__ __device_builtin__ double rnorm3d(double a, double b, double c) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the square root of the sum of squares of four coordinates of the argument.
*
* Calculate the length of four dimensional vector in Euclidean space without undue overflow or underflow.
*
* \return Returns the length of 4D vector
* \latexonly $\sqrt{a^2+b^2+c^2+d^2}$ \endlatexonly
* \xmlonly
*
*
*
*
* a
* 2
*
* +
*
* b
* 2
*
* +
*
* c
* 2
*
* +
*
* d
* 2
*
*
*
* \endxmlonly.
* - In the presence of an exactly infinite coordinate
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly
* is returned, even if there are NaNs.
*
* \note_accuracy_double
*/
extern __device__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl norm4d(double a, double b, double c, double d) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate one over the square root of the sum of squares of four coordinates.
*
* Calculate one over the length of four dimensional vector in Euclidean space without undue overflow or underflow.
*
* \return Returns one over the length of the 3D vector
* \latexonly $\frac{1}{\sqrt{a^2+b^2+c^2+d^2}}$ \endlatexonly
* \xmlonly
*
*
*
*
* 1
*
*
*
*
*
* 2
*
* +
*
* b
* 2
*
* +
*
* c
* 2
*
* +
*
* d
* 2
*
*
*
*
*
* \endxmlonly.
* - In the presence of an exactly infinite coordinate
* \latexonly $+0$ \endlatexonly
* \xmlonly
*
*
* +
* 0
*
* \endxmlonly
* is returned, even if there are NaNs.
*
* \note_accuracy_double
*/
extern __device__ __device_builtin__ double rnorm4d(double a, double b, double c, double d) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the square root of the sum of squares of any number of coordinates.
*
* Calculate the length of a vector p, dimension of which is passed as an argument \p without undue overflow or underflow.
*
* \return Returns the length of the dim-D vector
* \latexonly $\sqrt{\sum_{i=0}^{dim-1} p_i^2}$ \endlatexonly
* \xmlonly
*
*
*
*
*
* p
* 0
*
* 2
*
* +
*
*
* p
* 1
*
* 2
*
* + ... +
*
*
* p
*
* dim
* -
* 1
*
*
* 2
*
*
*
* \endxmlonly.
* - In the presence of an exactly infinite coordinate
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly
* is returned, even if there are NaNs.
*
* \note_accuracy_double
*/
__device__ __device_builtin__ double norm(int dim, double const * p) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the reciprocal of square root of the sum of squares of any number of coordinates.
*
* Calculates one over the length of vector \p p, dimension of which is passed as an argument, in Euclidean space without undue overflow or underflow.
*
* \return Returns one over the length of the vector
* \latexonly $\frac{1}{\sqrt{\sum_{i=0}^{dim-1} p_i^2}$ \endlatexonly
* \xmlonly
*
*
*
*
* 1
*
*
*
*
*
* p
* 0
*
* 2
*
* +
*
*
* p
* 1
*
* 2
*
* + ... +
*
*
* p
*
* dim
* -
* 1
*
*
* 2
*
*
*
*
*
* \endxmlonly.
* - In the presence of an exactly infinite coordinate
* \latexonly $+0$ \endlatexonly
* \xmlonly
*
*
* +
* 0
*
* \endxmlonly
* is returned, even if there are NaNs.
*
* \note_accuracy_double
*/
extern __device__ __device_builtin__ double rnorm(int dim, double const * p) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the reciprocal of square root of the sum of squares of any number of coordinates.
*
* Calculates one over the length of vector \p p, dimension of which is passed as an argument, in Euclidean space without undue overflow or underflow.
*
* \return Returns one over the length of the vector
* \latexonly $\frac{1}{\sqrt{\sum_{i=0}^{dim-1} p_i^2}$ \endlatexonly
* \xmlonly
*
*
*
*
* 1
*
*
*
*
*
* p
* 0
*
* 2
*
* +
*
*
* p
* 1
*
* 2
*
* + ... +
*
*
* p
*
* dim
* -
* 1
*
*
* 2
*
*
*
*
*
* \endxmlonly.
* - In the presence of an exactly infinite coordinate
* \latexonly $+0$ \endlatexonly
* \xmlonly
*
*
* +
* 0
*
* \endxmlonly
* is returned, even if there are NaNs.
*
* \note_accuracy_single
*/
extern __device__ __device_builtin__ float rnormf(int dim, float const * p) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the square root of the sum of squares of any number of coordinates.
*
* Calculates the length of a vector \p p, dimension of which is passed as an argument without undue overflow or underflow.
*
* \return Returns the length of the dim-D vector
* \latexonly $\sqrt{\sum_{i=0}^{dim-1} p_i^2}$ \endlatexonly
* \xmlonly
*
*
*
*
*
* p
* 0
*
* 2
*
* +
*
*
* p
* 1
*
* 2
*
* + ... +
*
*
* p
*
* dim
* -
* 1
*
*
* 2
*
*
*
* \endxmlonly.
* - In the presence of an exactly infinite coordinate
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly
* is returned, even if there are NaNs.
*
* \note_accuracy_single
*/
__device__ __device_builtin__ float normf(int dim, float const * p) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the square root of the sum of squares of three coordinates of the argument.
*
* Calculates the length of three dimensional vector in Euclidean space without undue overflow or underflow.
*
* \return Returns the length of the 3D vector
* \latexonly $\sqrt{a^2+b^2+c^2}$ \endlatexonly
* \xmlonly
*
*
*
*
* a
* 2
*
* +
*
* b
* 2
*
* +
*
* c
* 2
*
*
*
* \endxmlonly.
* - In the presence of an exactly infinite coordinate
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly
* is returned, even if there are NaNs.
*
* \note_accuracy_single
*/
extern __device__ __device_builtin__ float norm3df(float a, float b, float c) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate one over the square root of the sum of squares of three coordinates.
*
* Calculates one over the length of three dimension vector in Euclidean space without undue overflow or underflow.
*
* \return Returns one over the length of the 3D vector
* \latexonly $\frac{1}{\sqrt{a^2+b^2+c^2}}$ \endlatexonly
* \xmlonly
*
*
*
*
* 1
*
*
*
*
* a
* 2
*
* +
*
* b
* 2
*
* +
*
* c
* 2
*
*
*
*
*
* \endxmlonly.
* - In the presence of an exactly infinite coordinate
* \latexonly $+0$ \endlatexonly
* \xmlonly
*
*
* +
* 0
*
* \endxmlonly
* is returned, even if there are NaNs.
*
* \note_accuracy_single
*/
extern __device__ __device_builtin__ float rnorm3df(float a, float b, float c) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the square root of the sum of squares of four coordinates of the argument.
*
* Calculates the length of four dimensional vector in Euclidean space without undue overflow or underflow.
*
* \return Returns the length of the 4D vector
* \latexonly $\sqrt{a^2+b^2+c^2+d^2}$ \endlatexonly
* \xmlonly
*
*
*
*
* a
* 2
*
* +
*
* b
* 2
*
* +
*
* c
* 2
*
* +
*
* d
* 2
*
*
*
* \endxmlonly.
* - In the presence of an exactly infinite coordinate
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly
* is returned, even if there are NaNs.
*
* \note_accuracy_single
*/
extern __device__ __device_builtin__ float norm4df(float a, float b, float c, float d) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate one over the square root of the sum of squares of four coordinates.
*
* Calculates one over the length of four dimension vector in Euclidean space without undue overflow or underflow.
*
* \return Returns one over the length of the 3D vector
* \latexonly $\frac{1}{\sqrt{a^2+b^2+c^2+d^2}}$ \endlatexonly
* \xmlonly
*
*
*
*
* 1
*
*
*
*
* a
* 2
*
* +
*
* b
* 2
*
* +
*
* c
* 2
*
* +
*
* d
* 2
*
*
*
*
*
* \endxmlonly.
* - In the presence of an exactly infinite coordinate
* \latexonly $+0$ \endlatexonly
* \xmlonly
*
*
* +
* 0
*
* \endxmlonly
* is returned, even if there are NaNs.
*
* \note_accuracy_single
*/
extern __device__ __device_builtin__ float rnorm4df(float a, float b, float c, float d) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the cube root of the input argument.
*
* Calculate the cube root of \p x,
* \latexonly $x^{1/3}$ \endlatexonly
* \xmlonly
*
*
*
* x
*
* 1
*
* /
*
* 3
*
*
*
* \endxmlonly.
*
* \return
* Returns
* \latexonly $x^{1/3}$ \endlatexonly
* \xmlonly
*
*
*
* x
*
* 1
*
* /
*
* 3
*
*
*
* \endxmlonly.
* - cbrt(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - cbrt(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double cbrt(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl cbrt(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the cube root of the input argument.
*
* Calculate the cube root of \p x,
* \latexonly $x^{1/3}$ \endlatexonly
* \xmlonly
*
*
*
* x
*
* 1
*
* /
*
* 3
*
*
*
* \endxmlonly.
*
* \return
* Returns
* \latexonly $x^{1/3}$ \endlatexonly
* \xmlonly
*
*
*
* x
*
* 1
*
* /
*
* 3
*
*
*
* \endxmlonly.
* - cbrtf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - cbrtf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float cbrtf(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl cbrtf(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* std */
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate reciprocal cube root function.
*
* Calculate reciprocal cube root function of \p x.
*
* \return
* - rcbrt(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
* - rcbrt(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double rcbrt(double x);
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate reciprocal cube root function.
*
* Calculate reciprocal cube root function of \p x.
*
* \return
* - rcbrt(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
* - rcbrt(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float rcbrtf(float x);
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the sine of the input argument
* \latexonly $\times \pi$ \endlatexonly
* \xmlonly
*
*
* ×
* π
*
* \endxmlonly.
*
* Calculate the sine of \p x
* \latexonly $\times \pi$ \endlatexonly
* \xmlonly
*
*
* ×
* π
*
*
* \endxmlonly
* (measured in radians),
* where \p x is the input argument.
*
* \return
* - sinpi(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - sinpi(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns NaN.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double sinpi(double x);
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the sine of the input argument
* \latexonly $\times \pi$ \endlatexonly
* \xmlonly
*
*
* ×
* π
*
* \endxmlonly.
*
* Calculate the sine of \p x
* \latexonly $\times \pi$ \endlatexonly
* \xmlonly
*
*
* ×
* π
*
*
* \endxmlonly
* (measured in radians),
* where \p x is the input argument.
*
* \return
* - sinpif(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - sinpif(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns NaN.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float sinpif(float x);
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the cosine of the input argument
* \latexonly $\times \pi$ \endlatexonly
* \xmlonly
*
*
* ×
* π
*
* \endxmlonly.
*
* Calculate the cosine of \p x
* \latexonly $\times \pi$ \endlatexonly
* \xmlonly
*
*
* ×
* π
*
*
* \endxmlonly
* (measured in radians),
* where \p x is the input argument.
*
* \return
* - cospi(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns 1.
* - cospi(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns NaN.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double cospi(double x);
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the cosine of the input argument
* \latexonly $\times \pi$ \endlatexonly
* \xmlonly
*
*
* ×
* π
*
* \endxmlonly.
*
* Calculate the cosine of \p x
* \latexonly $\times \pi$ \endlatexonly
* \xmlonly
*
*
* ×
* π
*
*
* \endxmlonly
* (measured in radians),
* where \p x is the input argument.
*
* \return
* - cospif(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns 1.
* - cospif(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns NaN.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float cospif(float x);
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the sine and cosine of the first input argument
* \latexonly $\times \pi$ \endlatexonly
* \xmlonly
*
*
* ×
* π
*
* \endxmlonly.
*
* Calculate the sine and cosine of the first input argument, \p x (measured in radians),
* \latexonly $\times \pi$ \endlatexonly
* \xmlonly
*
*
* ×
* π
*
* \endxmlonly. The results for sine and cosine are written into the
* second argument, \p sptr, and, respectively, third argument, \p cptr.
*
* \return
* - none
*
* \see ::sinpi() and ::cospi().
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ void sincospi(double x, double *sptr, double *cptr);
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the sine and cosine of the first input argument
* \latexonly $\times \pi$ \endlatexonly
* \xmlonly
*
*
* ×
* π
*
* \endxmlonly.
*
* Calculate the sine and cosine of the first input argument, \p x (measured in radians),
* \latexonly $\times \pi$ \endlatexonly
* \xmlonly
*
*
* ×
* π
*
* \endxmlonly. The results for sine and cosine are written into the
* second argument, \p sptr, and, respectively, third argument, \p cptr.
*
* \return
* - none
*
* \see ::sinpif() and ::cospif().
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ void sincospif(float x, float *sptr, float *cptr);
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the value of first argument to the power of second argument.
*
* Calculate the value of \p x to the power of \p y.
*
* \return
* - pow(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p y) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* for \p y an odd integer less than 0.
* - pow(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p y) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* for \p y less than 0 and not an odd integer.
* - pow(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p y) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* for \p y an odd integer greater than 0.
* - pow(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p y) returns +0 for \p y > 0 and not an odd integer.
* - pow(-1,
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns 1.
* - pow(+1, \p y) returns 1 for any \p y, even a NaN.
* - pow(\p x,
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns 1 for any \p x, even a NaN.
* - pow(\p x, \p y) returns a NaN for finite \p x < 0 and finite non-integer \p y.
* - pow(\p x,
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* for
* \latexonly $| x | < 1$ \endlatexonly
* \xmlonly
*
*
*
* |
*
* x
*
* |
*
* <
* 1
*
* \endxmlonly.
* - pow(\p x,
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* ) returns +0 for
* \latexonly $| x | > 1$ \endlatexonly
* \xmlonly
*
*
*
* |
*
* x
*
* |
*
* >
* 1
*
* \endxmlonly.
* - pow(\p x,
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns +0 for
* \latexonly $| x | < 1$ \endlatexonly
* \xmlonly
*
*
*
* |
*
* x
*
* |
*
* <
* 1
*
* \endxmlonly.
* - pow(\p x,
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* for
* \latexonly $| x | > 1$ \endlatexonly
* \xmlonly
*
*
*
* |
*
* x
*
* |
*
* >
* 1
*
* \endxmlonly.
* - pow(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* , \p y) returns -0 for \p y an odd integer less than 0.
* - pow(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* , \p y) returns +0 for \p y < 0 and not an odd integer.
* - pow(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* , \p y) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* for \p y an odd integer greater than 0.
* - pow(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* , \p y) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* for \p y > 0 and not an odd integer.
* - pow(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* , \p y) returns +0 for \p y < 0.
* - pow(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* , \p y) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* for \p y > 0.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __cdecl pow(double x, double y) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Break down the input argument into fractional and integral parts.
*
* Break down the argument \p x into fractional and integral parts. The
* integral part is stored in the argument \p iptr.
* Fractional and integral parts are given the same sign as the argument \p x.
*
* \return
* - modf(
* \latexonly $\pm x$ \endlatexonly
* \xmlonly
*
*
* ±
* x
*
*
* \endxmlonly
* , \p iptr) returns a result with the same sign as \p x.
* - modf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* , \p iptr) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* and stores
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* in the object pointed to by \p iptr.
* - modf(NaN, \p iptr) stores a NaN in the object pointed to by \p iptr and returns a NaN.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl modf(double x, double *iptr) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the double-precision floating-point remainder of \p x / \p y.
*
* Calculate the double-precision floating-point remainder of \p x / \p y.
* The floating-point remainder of the division operation \p x / \p y calculated
* by this function is exactly the value x - n*y, where \p n is \p x / \p y with its fractional part truncated.
* The computed value will have the same sign as \p x, and its magnitude will be less than the magnitude of \p y.
*
* \return
* - Returns the floating-point remainder of \p x / \p y.
* - fmod(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p y) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* if \p y is not zero.
* - fmod(\p x,
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns \p x if \p x is finite.
* - fmod(\p x, \p y) returns NaN if \p x is
* \latexonly $\pm\infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* or \p y is zero.
* - If either argument is NaN, NaN is returned.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double __cdecl fmod(double x, double y) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Compute double-precision floating-point remainder.
*
* Compute double-precision floating-point remainder \p r of dividing
* \p x by \p y for nonzero \p y. Thus
* \latexonly $ r = x - n y$ \endlatexonly
* \xmlonly
*
*
* r
* =
* x
* −
* n
* y
*
* \endxmlonly.
* The value \p n is the integer value nearest
* \latexonly $ \frac{x}{y} $ \endlatexonly
* \xmlonly
*
*
*
* x
* y
*
*
* \endxmlonly.
* In the case when
* \latexonly $ | n -\frac{x}{y} | = \frac{1}{2} $ \endlatexonly
* \xmlonly
*
*
*
* |
*
* n
* −
*
* x
* y
*
*
* |
*
* =
*
* 1
* 2
*
*
*
* \endxmlonly
* , the
* even \p n value is chosen.
*
* \return
* - remainder(\p x,
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns NaN.
* - remainder(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* , \p y) returns NaN.
* - remainder(\p x,
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns \p x for finite \p x.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double remainder(double x, double y) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl remainder(double x, double y);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Compute single-precision floating-point remainder.
*
* Compute single-precision floating-point remainder \p r of dividing
* \p x by \p y for nonzero \p y. Thus
* \latexonly $ r = x - n y$ \endlatexonly
* \xmlonly
*
*
* r
* =
* x
* −
* n
* y
*
* \endxmlonly.
* The value \p n is the integer value nearest
* \latexonly $ \frac{x}{y} $ \endlatexonly
* \xmlonly
*
*
*
* x
* y
*
*
* \endxmlonly.
* In the case when
* \latexonly $ | n -\frac{x}{y} | = \frac{1}{2} $ \endlatexonly
* \xmlonly
*
*
*
* |
*
* n
* −
*
* x
* y
*
*
* |
*
* =
*
* 1
* 2
*
*
*
* \endxmlonly
* , the
* even \p n value is chosen.
*
* \return
* - remainderf(\p x,
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns NaN.
* - remainderf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* , \p y) returns NaN.
* - remainderf(\p x,
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns \p x for finite \p x.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float remainderf(float x, float y) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl remainderf(float x, float y);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Compute double-precision floating-point remainder and part of quotient.
*
* Compute a double-precision floating-point remainder in the same way as the
* ::remainder() function. Argument \p quo returns part of quotient upon
* division of \p x by \p y. Value \p quo has the same sign as
* \latexonly $ \frac{x}{y} $ \endlatexonly
* \xmlonly
*
*
*
* x
* y
*
*
*
* \endxmlonly
* and may not be the exact quotient but agrees with the exact quotient
* in the low order 3 bits.
*
* \return
* Returns the remainder.
* - remquo(\p x,
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p quo) returns NaN
* and stores an unspecified value in the
* location to which \p quo points.
* - remquo(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* , \p y, \p quo) returns NaN
* and stores an unspecified value in the
* location to which \p quo points.
* - remquo(\p x, \p y, \p quo) returns NaN
* and stores an unspecified value in the
* location to which \p quo points if either of \p x or \p y is NaN.
* - remquo(\p x,
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* , \p quo) returns \p x and stores zero
* in the location to which \p quo points for finite \p x.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double remquo(double x, double y, int *quo) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl remquo(double x, double y, int *quo);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Compute single-precision floating-point remainder and part of quotient.
*
* Compute a single-precision floating-point remainder in the same way as the
* ::remainderf() function. Argument \p quo returns part of quotient upon
* division of \p x by \p y. Value \p quo has the same sign as
* \latexonly $ \frac{x}{y} $ \endlatexonly
* \xmlonly
*
*
*
* x
* y
*
*
*
* \endxmlonly
* and may not be the exact quotient but agrees with the exact quotient
* in the low order 3 bits.
*
* \return
* Returns the remainder.
* - remquof(\p x,
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p quo) returns NaN
* and stores an unspecified value in the
* location to which \p quo points.
* - remquof(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* , \p y, \p quo) returns NaN
* and stores an unspecified value in the
* location to which \p quo points.
* - remquof(\p x, \p y, \p quo) returns NaN
* and stores an unspecified value in the
* location to which \p quo points if either of \p x or \p y is NaN.
* - remquof(\p x,
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* , \p quo) returns \p x and stores zero
* in the location to which \p quo points for finite \p x.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float remquof(float x, float y, int *quo) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl remquof(float x, float y, int *quo);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the value of the Bessel function of the first kind of order 0 for the input argument.
*
* Calculate the value of the Bessel function of the first kind of order 0 for
* the input argument \p x,
* \latexonly $J_0(x)$ \endlatexonly
* \xmlonly
*
*
*
* J
* 0
*
* (
* x
* )
*
* \endxmlonly.
*
* \return
* Returns the value of the Bessel function of the first kind of order 0.
* - j0(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns +0.
* - j0(NaN) returns NaN.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl j0(double x) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* std */
#endif
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the value of the Bessel function of the first kind of order 0 for the input argument.
*
* Calculate the value of the Bessel function of the first kind of order 0 for
* the input argument \p x,
* \latexonly $J_0(x)$ \endlatexonly
* \xmlonly
*
*
*
* J
* 0
*
* (
* x
* )
*
* \endxmlonly.
*
* \return
* Returns the value of the Bessel function of the first kind of order 0.
* - j0f(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns +0.
* - j0f(NaN) returns NaN.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float j0f(float x) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the value of the Bessel function of the first kind of order 1 for the input argument.
*
* Calculate the value of the Bessel function of the first kind of order 1 for
* the input argument \p x,
* \latexonly $J_1(x)$ \endlatexonly
* \xmlonly
*
*
*
* J
* 1
*
* (
* x
* )
*
* \endxmlonly.
*
* \return
* Returns the value of the Bessel function of the first kind of order 1.
* - j1(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - j1(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - j1(NaN) returns NaN.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl j1(double x) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* std */
#endif
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the value of the Bessel function of the first kind of order 1 for the input argument.
*
* Calculate the value of the Bessel function of the first kind of order 1 for
* the input argument \p x,
* \latexonly $J_1(x)$ \endlatexonly
* \xmlonly
*
*
*
* J
* 1
*
* (
* x
* )
*
* \endxmlonly.
*
* \return
* Returns the value of the Bessel function of the first kind of order 1.
* - j1f(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - j1f(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - j1f(NaN) returns NaN.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float j1f(float x) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the value of the Bessel function of the first kind of order n for the input argument.
*
* Calculate the value of the Bessel function of the first kind of order \p n for
* the input argument \p x,
* \latexonly $J_n(x)$ \endlatexonly
* \xmlonly
*
*
*
* J
* n
*
* (
* x
* )
*
* \endxmlonly.
*
* \return
* Returns the value of the Bessel function of the first kind of order \p n.
* - jn(\p n, NaN) returns NaN.
* - jn(\p n, \p x) returns NaN for \p n < 0.
* - jn(\p n,
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns +0.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl jn(int n, double x) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* std */
#endif
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the value of the Bessel function of the first kind of order n for the input argument.
*
* Calculate the value of the Bessel function of the first kind of order \p n for
* the input argument \p x,
* \latexonly $J_n(x)$ \endlatexonly
* \xmlonly
*
*
*
* J
* n
*
* (
* x
* )
*
* \endxmlonly.
*
* \return
* Returns the value of the Bessel function of the first kind of order \p n.
* - jnf(\p n, NaN) returns NaN.
* - jnf(\p n, \p x) returns NaN for \p n < 0.
* - jnf(\p n,
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns +0.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float jnf(int n, float x) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the value of the Bessel function of the second kind of order 0 for the input argument.
*
* Calculate the value of the Bessel function of the second kind of order 0 for
* the input argument \p x,
* \latexonly $Y_0(x)$ \endlatexonly
* \xmlonly
*
*
*
* Y
* 0
*
* (
* x
* )
*
* \endxmlonly.
*
* \return
* Returns the value of the Bessel function of the second kind of order 0.
* - y0(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly
* ) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - y0(\p x) returns NaN for \p x < 0.
* - y0(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns +0.
* - y0(NaN) returns NaN.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl y0(double x) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* std */
#endif
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the value of the Bessel function of the second kind of order 0 for the input argument.
*
* Calculate the value of the Bessel function of the second kind of order 0 for
* the input argument \p x,
* \latexonly $Y_0(x)$ \endlatexonly
* \xmlonly
*
*
*
* Y
* 0
*
* (
* x
* )
*
* \endxmlonly.
*
* \return
* Returns the value of the Bessel function of the second kind of order 0.
* - y0f(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly
* ) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - y0f(\p x) returns NaN for \p x < 0.
* - y0f(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns +0.
* - y0f(NaN) returns NaN.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float y0f(float x) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the value of the Bessel function of the second kind of order 1 for the input argument.
*
* Calculate the value of the Bessel function of the second kind of order 1 for
* the input argument \p x,
* \latexonly $Y_1(x)$ \endlatexonly
* \xmlonly
*
*
*
* Y
* 1
*
* (
* x
* )
*
* \endxmlonly.
*
* \return
* Returns the value of the Bessel function of the second kind of order 1.
* - y1(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly
* ) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - y1(\p x) returns NaN for \p x < 0.
* - y1(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns +0.
* - y1(NaN) returns NaN.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl y1(double x) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* std */
#endif
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the value of the Bessel function of the second kind of order 1 for the input argument.
*
* Calculate the value of the Bessel function of the second kind of order 1 for
* the input argument \p x,
* \latexonly $Y_1(x)$ \endlatexonly
* \xmlonly
*
*
*
* Y
* 1
*
* (
* x
* )
*
* \endxmlonly.
*
* \return
* Returns the value of the Bessel function of the second kind of order 1.
* - y1f(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly
* ) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - y1f(\p x) returns NaN for \p x < 0.
* - y1f(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns +0.
* - y1f(NaN) returns NaN.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float y1f(float x) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the value of the Bessel function of the second kind of order n for the input argument.
*
* Calculate the value of the Bessel function of the second kind of order \p n for
* the input argument \p x,
* \latexonly $Y_n(x)$ \endlatexonly
* \xmlonly
*
*
*
* Y
* n
*
* (
* x
* )
*
* \endxmlonly.
*
* \return
* Returns the value of the Bessel function of the second kind of order \p n.
* - yn(\p n, \p x) returns NaN for \p n < 0.
* - yn(\p n,
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
*) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - yn(\p n, \p x) returns NaN for \p x < 0.
* - yn(\p n,
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns +0.
* - yn(\p n, NaN) returns NaN.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl yn(int n, double x) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* std */
#endif
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the value of the Bessel function of the second kind of order n for the input argument.
*
* Calculate the value of the Bessel function of the second kind of order \p n for
* the input argument \p x,
* \latexonly $Y_n(x)$ \endlatexonly
* \xmlonly
*
*
*
* Y
* n
*
* (
* x
* )
*
* \endxmlonly.
*
* \return
* Returns the value of the Bessel function of the second kind of order \p n.
* - ynf(\p n, \p x) returns NaN for \p n < 0.
* - ynf(\p n,
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - ynf(\p n, \p x) returns NaN for \p x < 0.
* - ynf(\p n,
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns +0.
* - ynf(\p n, NaN) returns NaN.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float ynf(int n, float x) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the value of the regular modified cylindrical Bessel function of order 0 for the input argument.
*
* Calculate the value of the regular modified cylindrical Bessel function of order 0 for
* the input argument \p x,
* \latexonly $I_0(x)$ \endlatexonly
* \xmlonly
*
*
*
* I
* 0
*
* (
* x
* )
*
* \endxmlonly.
*
* \return
* Returns the value of the regular modified cylindrical Bessel function of order 0.
*
* \note_accuracy_double
*/
extern __device__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl cyl_bessel_i0(double x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the value of the regular modified cylindrical Bessel function of order 0 for the input argument.
*
* Calculate the value of the regular modified cylindrical Bessel function of order 0 for
* the input argument \p x,
* \latexonly $I_0(x)$ \endlatexonly
* \xmlonly
*
*
*
* I
* 0
*
* (
* x
* )
*
* \endxmlonly.
*
* \return
* Returns the value of the regular modified cylindrical Bessel function of order 0.
*
* \note_accuracy_single
*/
extern __device__ __device_builtin__ float cyl_bessel_i0f(float x) __THROW;
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the value of the regular modified cylindrical Bessel function of order 1 for the input argument.
*
* Calculate the value of the regular modified cylindrical Bessel function of order 1 for
* the input argument \p x,
* \latexonly $I_1(x)$ \endlatexonly
* \xmlonly
*
*
*
* I
* 1
*
* (
* x
* )
*
* \endxmlonly.
*
* \return
* Returns the value of the regular modified cylindrical Bessel function of order 1.
*
* \note_accuracy_double
*/
extern __device__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl cyl_bessel_i1(double x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the value of the regular modified cylindrical Bessel function of order 1 for the input argument.
*
* Calculate the value of the regular modified cylindrical Bessel function of order 1 for
* the input argument \p x,
* \latexonly $I_1(x)$ \endlatexonly
* \xmlonly
*
*
*
* I
* 1
*
* (
* x
* )
*
* \endxmlonly.
*
* \return
* Returns the value of the regular modified cylindrical Bessel function of order 1.
*
* \note_accuracy_single
*/
extern __device__ __device_builtin__ float cyl_bessel_i1f(float x) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the error function of the input argument.
*
* Calculate the value of the error function for the input argument \p x,
* \latexonly $\frac{2}{\sqrt \pi} \int_0^x e^{-t^2} dt$ \endlatexonly
* \xmlonly
*
*
*
* 2
*
* π
*
*
*
* ∫
* 0
* x
*
*
* e
*
* −
*
* t
* 2
*
*
*
* d
* t
*
* \endxmlonly.
*
* \return
* - erf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - erf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 1$ \endlatexonly
* \xmlonly
*
*
* ±
* 1
*
* \endxmlonly.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double erf(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl erf(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the error function of the input argument.
*
* Calculate the value of the error function for the input argument \p x,
* \latexonly $\frac{2}{\sqrt \pi} \int_0^x e^{-t^2} dt$ \endlatexonly
* \xmlonly
*
*
*
* 2
*
* π
*
*
*
* ∫
* 0
* x
*
*
* e
*
* −
*
* t
* 2
*
*
*
* d
* t
*
* \endxmlonly.
*
* \return
* - erff(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - erff(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 1$ \endlatexonly
* \xmlonly
*
*
* ±
* 1
*
* \endxmlonly.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float erff(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl erff(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* std */
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the inverse error function of the input argument.
*
* Calculate the inverse error function
* \latexonly $\erf^{-1}$ \endlatexonly
* \xmlonly
*
*
*
* erf
*
* -
* 1
*
*
*
*
* \endxmlonly
* (\p x), of the input argument \p x in the interval [-1, 1].
*
* \return
* - erfinv(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly.
* - erfinv(1) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
* - erfinv(-1) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - erfinv(\p x) returns NaN for \p x outside [-1, +1].
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double erfinv(double x);
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the inverse error function of the input argument.
*
* Calculate the inverse error function
* \latexonly $\erf^{-1}$ \endlatexonly
* \xmlonly
*
*
*
* erf
*
* -
* 1
*
*
*
*
* \endxmlonly
* (\p x), of the input argument \p x in the interval [-1, 1].
*
* \return
* - erfinvf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly.
* - erfinvf(1) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
* - erfinvf(-1) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - erfinvf(\p x) returns NaN for \p x outside [-1, +1].
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float erfinvf(float x);
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the complementary error function of the input argument.
*
* Calculate the complementary error function of the input argument \p x,
* 1 - erf(\p x).
*
* \return
* - erfc(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* ) returns 2.
* - erfc(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns +0.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double erfc(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl erfc(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the complementary error function of the input argument.
*
* Calculate the complementary error function of the input argument \p x,
* 1 - erf(\p x).
*
* \return
* - erfcf(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* ) returns 2.
* - erfcf(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns +0.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float erfcf(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl erfcf(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the natural logarithm of the absolute value of the gamma function of the input argument.
*
* Calculate the natural logarithm of the absolute value of the gamma function of the input argument \p x, namely the value of
* \latexonly $\log_{e}\left|\int_{0}^{\infty} e^{-t}t^{x-1}dt\right|$ \endlatexonly
* \xmlonly
*
*
*
* log
*
* e
*
*
*
*
*
* ∫
*
* 0
*
*
* ∞
*
*
*
* e
*
* −
* t
*
*
*
* t
*
* x
* −
* 1
*
*
* d
* t
*
*
*
*
* \endxmlonly
*
* \return
* - lgamma(1) returns +0.
* - lgamma(2) returns +0.
* - lgamma(\p x) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* if \p x
* \latexonly $\leq$ \endlatexonly
* \xmlonly
*
*
* ≤
*
*
* \endxmlonly 0 and \p x is an integer.
* - lgamma(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
* - lgamma(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double lgamma(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl lgamma(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* std */
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the inverse complementary error function of the input argument.
*
* Calculate the inverse complementary error function
* \latexonly $\erfc^{-1}$ \endlatexonly
* \xmlonly
*
*
*
* erfc
*
* -
* 1
*
*
*
*
* \endxmlonly
* (\p x), of the input argument \p x in the interval [0, 2].
*
* \return
* - erfcinv(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
* - erfcinv(2) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - erfcinv(\p x) returns NaN for \p x outside [0, 2].
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double erfcinv(double x);
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the inverse complementary error function of the input argument.
*
* Calculate the inverse complementary error function
* \latexonly $\erfc^{-1}$ \endlatexonly
* \xmlonly
*
*
*
* erfc
*
* -
* 1
*
*
*
*
* \endxmlonly
* (\p x), of the input argument \p x in the interval [0, 2].
*
* \return
* - erfcinvf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
* - erfcinvf(2) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - erfcinvf(\p x) returns NaN for \p x outside [0, 2].
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float erfcinvf(float x);
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the inverse of the standard normal cumulative distribution function.
*
* Calculate the inverse of the standard normal cumulative distribution function for input argument \p x,
* \latexonly $\Phi^{-1}(x)$ \endlatexonly
* \xmlonly
*
*
*
* Φ
*
* −
* 1
*
*
* (
* x
* )
*
* \endxmlonly. The function is defined for input values in the interval
* \latexonly $(0, 1)$ \endlatexonly
* \xmlonly
*
*
* (
* 0
* ,
* 1
* )
*
* \endxmlonly.
*
* \return
* - normcdfinv(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - normcdfinv(1) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
* - normcdfinv(\p x) returns NaN
* if \p x is not in the interval [0,1].
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double normcdfinv(double x);
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the inverse of the standard normal cumulative distribution function.
*
* Calculate the inverse of the standard normal cumulative distribution function for input argument \p x,
* \latexonly $\Phi^{-1}(x)$ \endlatexonly
* \xmlonly
*
*
*
* Φ
*
* −
* 1
*
*
* (
* x
* )
*
* \endxmlonly. The function is defined for input values in the interval
* \latexonly $(0, 1)$ \endlatexonly
* \xmlonly
*
*
* (
* 0
* ,
* 1
* )
*
* \endxmlonly.
*
* \return
* - normcdfinvf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - normcdfinvf(1) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
* - normcdfinvf(\p x) returns NaN
* if \p x is not in the interval [0,1].
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float normcdfinvf(float x);
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the standard normal cumulative distribution function.
*
* Calculate the cumulative distribution function of the standard normal distribution for input argument \p x,
* \latexonly $\Phi(x)$ \endlatexonly
* \xmlonly
*
*
* Φ
* (
* x
* )
*
* \endxmlonly.
*
* \return
* - normcdf(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns 1.
* - normcdf(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* ) returns +0.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double normcdf(double x);
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the standard normal cumulative distribution function.
*
* Calculate the cumulative distribution function of the standard normal distribution for input argument \p x,
* \latexonly $\Phi(x)$ \endlatexonly
* \xmlonly
*
*
* Φ
* (
* x
* )
*
* \endxmlonly.
*
* \return
* - normcdff(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns 1.
* - normcdff(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* ) returns +0
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float normcdff(float x);
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the scaled complementary error function of the input argument.
*
* Calculate the scaled complementary error function of the input argument \p x,
* \latexonly $e^{x^2}\cdot \textrm{erfc}(x)$ \endlatexonly
* \xmlonly
*
*
*
* e
*
*
* x
* 2
*
*
*
* ⋅
*
* erfc
*
* (
* x
* )
*
* \endxmlonly.
*
* \return
* - erfcx(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* -
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly.
* - erfcx(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns +0.
*
* \note_accuracy_double
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double erfcx(double x);
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the scaled complementary error function of the input argument.
*
* Calculate the scaled complementary error function of the input argument \p x,
* \latexonly $e^{x^2}\cdot \textrm{erfc}(x)$ \endlatexonly
* \xmlonly
*
*
*
* e
*
*
* x
* 2
*
*
*
* ⋅
*
* erfc
*
* (
* x
* )
*
* \endxmlonly.
*
* \return
* - erfcxf(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* -
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly.
* - erfcxf(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns +0.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float erfcxf(float x);
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the natural logarithm of the absolute value of the gamma function of the input argument.
*
* Calculate the natural logarithm of the absolute value of the gamma function of the input argument \p x, namely the value of
* \latexonly $\log_{e}\left|\int_{0}^{\infty} e^{-t}t^{x-1}dt\right|$ \endlatexonly
* \xmlonly
*
*
*
* log
*
* e
*
*
*
*
*
* ∫
*
* 0
*
*
* ∞
*
*
*
* e
*
* −
* t
*
*
*
* t
*
* x
* −
* 1
*
*
* d
* t
*
*
*
*
* \endxmlonly
*
* \return
* - lgammaf(1) returns +0.
* - lgammaf(2) returns +0.
* - lgammaf(\p x) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* if \p x
* \latexonly $\leq$ \endlatexonly
* \xmlonly
*
*
* ≤
*
*
* \endxmlonly
* 0 and \p x is an integer.
* - lgammaf(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
* - lgammaf(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float lgammaf(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl lgammaf(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the gamma function of the input argument.
*
* Calculate the gamma function of the input argument \p x, namely the value of
* \latexonly $\int_{0}^{\infty} e^{-t}t^{x-1}dt$ \endlatexonly
* \xmlonly
*
*
*
* ∫
*
* 0
*
*
* ∞
*
*
*
* e
*
* −
* t
*
*
*
* t
*
* x
* −
* 1
*
*
* d
* t
*
* \endxmlonly.
*
* \return
* - tgamma(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
* - tgamma(2) returns +1.
* - tgamma(\p x) returns NaN if \p x < 0 and \p x is an integer.
* - tgamma(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* ) returns NaN.
* - tgamma(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double tgamma(double x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl tgamma(double x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the gamma function of the input argument.
*
* Calculate the gamma function of the input argument \p x, namely the value of
* \latexonly $\int_{0}^{\infty} e^{-t}t^{x-1}dt$ \endlatexonly
* \xmlonly
*
*
*
* ∫
*
* 0
*
*
* ∞
*
*
*
* e
*
* −
* t
*
*
*
* t
*
* x
* −
* 1
*
*
* d
* t
*
* \endxmlonly.
*
* \return
* - tgammaf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
* - tgammaf(2) returns +1.
* - tgammaf(\p x) returns NaN if \p x < 0 and \p x is an integer.
* - tgammaf(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* ) returns NaN.
* - tgammaf(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float tgammaf(float x) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl tgammaf(float x);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/** \ingroup CUDA_MATH_DOUBLE
* \brief Create value with given magnitude, copying sign of second value.
*
* Create a floating-point value with the magnitude \p x and the sign of \p y.
*
* \return
* Returns a value with the magnitude of \p x and the sign of \p y.
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double copysign(double x, double y) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl copysign(double x, double y);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/** \ingroup CUDA_MATH_SINGLE
* \brief Create value with given magnitude, copying sign of second value.
*
* Create a floating-point value with the magnitude \p x and the sign of \p y.
*
* \return
* Returns a value with the magnitude of \p x and the sign of \p y.
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float copysignf(float x, float y) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl copysignf(float x, float y);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Return next representable double-precision floating-point value after argument \p x in the direction of \p y.
*
* Calculate the next representable double-precision floating-point value
* following \p x in the direction of \p y. For example, if \p y is greater than \p x, ::nextafter()
* returns the smallest representable number greater than \p x
*
* \return
* - nextafter(\p x, \p y) = \p y if \p x equals \p y.
* - nextafter(\p x, \p y) = \p NaN if either \p x or \p y are \p NaN.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double nextafter(double x, double y) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl nextafter(double x, double y);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Return next representable single-precision floating-point value after argument \p x in the direction of \p y.
*
* Calculate the next representable single-precision floating-point value
* following \p x in the direction of \p y. For example, if \p y is greater than \p x, ::nextafterf()
* returns the smallest representable number greater than \p x
*
* \return
* - nextafterf(\p x, \p y) = \p y if \p x equals \p y.
* - nextafterf(\p x, \p y) = \p NaN if either \p x or \p y are \p NaN.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float nextafterf(float x, float y) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl nextafterf(float x, float y);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Returns "Not a Number" value.
*
* Return a representation of a quiet NaN. Argument \p tagp selects one of the possible representations.
*
* \return
* - nan(\p tagp) returns NaN.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double nan(const char *tagp) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl nan(const char *tagp);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Returns "Not a Number" value
*
* Return a representation of a quiet NaN. Argument \p tagp selects one of the possible representations.
*
* \return
* - nanf(\p tagp) returns NaN.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float nanf(const char *tagp) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl nanf(const char *tagp);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* namespace std */
#endif
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __isinff(float) __THROW;
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __isnanf(float) __THROW;
#if defined(__APPLE__)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __isfinited(double) __THROW;
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __isfinitef(float) __THROW;
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __signbitd(double) __THROW;
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __isnand(double) __THROW;
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __isinfd(double) __THROW;
#else /* __APPLE__ */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __finite(double) __THROW;
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __finitef(float) __THROW;
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __signbit(double) __THROW;
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __isnan(double) __THROW;
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __isinf(double) __THROW;
#endif /* __APPLE__ */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __signbitf(float) __THROW;
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Compute
* \latexonly $x \times y + z$ \endlatexonly
* \xmlonly
*
*
* x
* ×
* y
* +
* z
*
*
* \endxmlonly
* as a single operation.
*
* Compute the value of
* \latexonly $x \times y + z$ \endlatexonly
* \xmlonly
*
*
* x
* ×
* y
* +
* z
*
*
* \endxmlonly
* as a single ternary operation. After computing the value
* to infinite precision, the value is rounded once.
*
* \return
* Returns the rounded value of
* \latexonly $x \times y + z$ \endlatexonly
* \xmlonly
*
*
* x
* ×
* y
* +
* z
*
*
* \endxmlonly
* as a single operation.
* - fma(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ,
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p z) returns NaN.
* - fma(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ,
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* , \p z) returns NaN.
* - fma(\p x, \p y,
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* ) returns NaN if
* \latexonly $x \times y$ \endlatexonly
* \xmlonly
*
*
* x
* ×
* y
*
*
* \endxmlonly
* is an exact
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
* - fma(\p x, \p y,
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns NaN if
* \latexonly $x \times y$ \endlatexonly
* \xmlonly
*
*
* x
* ×
* y
*
*
* \endxmlonly
* is an exact
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
*
* \note_accuracy_double
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double fma(double x, double y, double z) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP double __cdecl fma(double x, double y, double z);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Compute
* \latexonly $x \times y + z$ \endlatexonly
* \xmlonly
*
*
* x
* ×
* y
* +
* z
*
*
* \endxmlonly
* as a single operation.
*
* Compute the value of
* \latexonly $x \times y + z$ \endlatexonly
* \xmlonly
*
*
* x
* ×
* y
* +
* z
*
*
* \endxmlonly
* as a single ternary operation. After computing the value
* to infinite precision, the value is rounded once.
*
* \return
* Returns the rounded value of
* \latexonly $x \times y + z$ \endlatexonly
* \xmlonly
*
*
* x
* ×
* y
* +
* z
*
*
* \endxmlonly
* as a single operation.
* - fmaf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ,
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p z) returns NaN.
* - fmaf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ,
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* , \p z) returns NaN.
* - fmaf(\p x, \p y,
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* ) returns NaN if
* \latexonly $x \times y$ \endlatexonly
* \xmlonly
*
*
* x
* ×
* y
*
*
* \endxmlonly
* is an exact
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
* - fmaf(\p x, \p y,
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns NaN if
* \latexonly $x \times y$ \endlatexonly
* \xmlonly
*
*
* x
* ×
* y
*
*
* \endxmlonly
* is an exact
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
*
* \note_accuracy_single
*/
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float fmaf(float x, float y, float z) __THROW;
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ __CUDA_MATH_CRTIMP float __cdecl fmaf(float x, float y, float z);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* std */
#endif
/* these are here to avoid warnings on the call graph.
long double is not supported on the device */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __signbitl(long double) __THROW;
#if defined(__APPLE__)
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __isfinite(long double) __THROW;
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __isinf(long double) __THROW;
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __isnan(long double) __THROW;
#else /* __APPLE__ */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __finitel(long double) __THROW;
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __isinfl(long double) __THROW;
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int __isnanl(long double) __THROW;
#endif /* __APPLE__ */
#if defined(_WIN32) && defined(_M_AMD64)
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl acosf(float) __THROW;
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl asinf(float) __THROW;
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl atanf(float) __THROW;
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl atan2f(float, float) __THROW;
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl cosf(float) __THROW;
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl sinf(float) __THROW;
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl tanf(float) __THROW;
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl coshf(float) __THROW;
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl sinhf(float) __THROW;
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl tanhf(float) __THROW;
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl expf(float) __THROW;
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl logf(float) __THROW;
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl log10f(float) __THROW;
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl modff(float, float*) __THROW;
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl powf(float, float) __THROW;
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl sqrtf(float) __THROW;
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl ceilf(float) __THROW;
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl floorf(float) __THROW;
extern __CUDA_MATH_CRTIMP __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float __cdecl fmodf(float, float) __THROW;
#else /* _WIN32 && _M_AMD64 */
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
namespace std {
#endif
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the arc cosine of the input argument.
*
* Calculate the principal value of the arc cosine of the input argument \p x.
*
* \return
* Result will be in radians, in the interval [0,
* \latexonly $\pi$ \endlatexonly
* \xmlonly
*
*
* π
*
*
* \endxmlonly
* ] for \p x inside [-1, +1].
* - acosf(1) returns +0.
* - acosf(\p x) returns NaN for \p x outside [-1, +1].
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float acosf(float x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the arc sine of the input argument.
*
* Calculate the principal value of the arc sine of the input argument \p x.
*
* \return
* Result will be in radians, in the interval [-
* \latexonly $\pi/2$ \endlatexonly
* \xmlonly
*
*
* π
*
* /
*
* 2
*
*
* \endxmlonly
* , +
* \latexonly $\pi/2$ \endlatexonly
* \xmlonly
*
*
* π
*
* /
*
* 2
*
*
* \endxmlonly
* ] for \p x inside [-1, +1].
* - asinf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly.
* - asinf(\p x) returns NaN for \p x outside [-1, +1].
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float asinf(float x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the arc tangent of the input argument.
*
* Calculate the principal value of the arc tangent of the input argument \p x.
*
* \return
* Result will be in radians, in the interval [-
* \latexonly $\pi/2$ \endlatexonly
* \xmlonly
*
*
* π
*
* /
*
* 2
*
*
* \endxmlonly
* , +
* \latexonly $\pi/2$ \endlatexonly
* \xmlonly
*
*
* π
*
* /
*
* 2
*
*
* \endxmlonly
* ].
* - atanf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly.
* - atanf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \pi$ \endlatexonly
* \xmlonly
*
*
* ±
* π
*
*
* \endxmlonly
* /2.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float atanf(float x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the arc tangent of the ratio of first and second input arguments.
*
* Calculate the principal value of the arc tangent of the ratio of first
* and second input arguments \p y / \p x. The quadrant of the result is
* determined by the signs of inputs \p y and \p x.
*
* \return
* Result will be in radians, in the interval [-
* \latexonly $\pi$ \endlatexonly
* \xmlonly
*
*
* π
*
*
* \endxmlonly
* , +
* \latexonly $\pi$ \endlatexonly
* \xmlonly
*
*
* π
*
*
* \endxmlonly
* ].
* - atan2f(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , -0) returns
* \latexonly $\pm \pi$ \endlatexonly
* \xmlonly
*
*
* ±
* π
*
*
* \endxmlonly.
* - atan2f(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , +0) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly.
* - atan2f(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p x) returns
* \latexonly $\pm \pi$ \endlatexonly
* \xmlonly
*
*
* ±
* π
*
*
* \endxmlonly
* for \p x < 0.
* - atan2f(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p x) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* for \p x > 0.
* - atan2f(\p y,
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $-\pi$ \endlatexonly
* \xmlonly
*
*
* -
* π
*
*
* \endxmlonly
* /2 for \p y < 0.
* - atan2f(\p y,
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pi$ \endlatexonly
* \xmlonly
*
*
* π
*
*
* \endxmlonly
* /2 for \p y > 0.
* - atan2f(
* \latexonly $\pm y$ \endlatexonly
* \xmlonly
*
*
* ±
* y
*
*
* \endxmlonly
* ,
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* -
* ∞
*
* \endxmlonly
* ) returns
* \latexonly $\pm \pi$ \endlatexonly
* \xmlonly
*
*
* ±
* π
*
*
* \endxmlonly
* for finite \p y > 0.
* - atan2f(
* \latexonly $\pm y$ \endlatexonly
* \xmlonly
*
*
* ±
* y
*
*
* \endxmlonly
* ,
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* for finite \p y > 0.
* - atan2f(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* , \p x) returns
* \latexonly $\pm \pi$ \endlatexonly
* \xmlonly
*
*
* ±
* π
*
*
* \endxmlonly
* /2 for finite \p x.
* - atan2f(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ,
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* -
* ∞
*
* \endxmlonly
* ) returns
* \latexonly $\pm 3\pi$ \endlatexonly
* \xmlonly
*
*
* ±
* 3
* π
*
*
* \endxmlonly
* /4.
* - atan2f(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ,
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly
* ) returns
* \latexonly $\pm \pi$ \endlatexonly
* \xmlonly
*
*
* ±
* π
*
*
* \endxmlonly
* /4.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float atan2f(float y, float x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the cosine of the input argument.
*
* Calculate the cosine of the input argument \p x (measured in radians).
*
* \return
* - cosf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns 1.
* - cosf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns NaN.
*
* \note_accuracy_single
* \note_fastmath
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float cosf(float x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the sine of the input argument.
*
* Calculate the sine of the input argument \p x (measured in radians).
*
* \return
* - sinf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - sinf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns NaN.
*
* \note_accuracy_single
* \note_fastmath
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float sinf(float x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the tangent of the input argument.
*
* Calculate the tangent of the input argument \p x (measured in radians).
*
* \return
* - tanf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - tanf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns NaN.
*
* \note_accuracy_single
* \note_fastmath
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float tanf(float x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the hyperbolic cosine of the input argument.
*
* Calculate the hyperbolic cosine of the input argument \p x.
*
* \return
* - coshf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns 1.
* - coshf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float coshf(float x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the hyperbolic sine of the input argument.
*
* Calculate the hyperbolic sine of the input argument \p x.
*
* \return
* - sinhf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - sinhf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float sinhf(float x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the hyperbolic tangent of the input argument.
*
* Calculate the hyperbolic tangent of the input argument \p x.
*
* \return
* - tanhf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - tanhf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 1$ \endlatexonly
* \xmlonly
*
*
* ±
* 1
*
*
* \endxmlonly.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float tanhf(float x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the natural logarithm of the input argument.
*
* Calculate the natural logarithm of the input argument \p x.
*
* \return
* - logf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - logf(1) returns +0.
* - logf(\p x) returns NaN for \p x < 0.
* - logf(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_single
* \note_fastmath
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float logf(float x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the base
* \latexonly $e$ \endlatexonly
* \xmlonly
*
*
* e
*
*
* \endxmlonly
* exponential of the input argument.
*
* Calculate
* \latexonly $e^x$ \endlatexonly
* \xmlonly
*
*
*
* e
* x
*
*
* \endxmlonly,
* the base
* \latexonly $e$ \endlatexonly
* \xmlonly
*
*
* e
*
*
* \endxmlonly
* exponential of the input argument \p x.
*
* \return
* - expf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns 1.
* - expf(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* -
* ∞
*
* \endxmlonly
* ) returns +0.
* - expf(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_single
* \note_fastmath
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float expf(float x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the base 10 logarithm of the input argument.
*
* Calculate the base 10 logarithm of the input argument \p x.
*
* \return
* - log10f(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
* \endxmlonly.
* - log10f(1) returns +0.
* - log10f(\p x) returns NaN for \p x < 0.
* - log10f(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
*
* \note_accuracy_single
* \note_fastmath
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float log10f(float x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Break down the input argument into fractional and integral parts.
*
* Break down the argument \p x into fractional and integral parts. The integral part is stored in the argument \p iptr.
* Fractional and integral parts are given the same sign as the argument \p x.
*
* \return
* - modff(
* \latexonly $\pm x$ \endlatexonly
* \xmlonly
*
*
* ±
* x
*
*
* \endxmlonly
* , \p iptr) returns a result with the same sign as \p x.
* - modff(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* , \p iptr) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* and stores
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* in the object pointed to by \p iptr.
* - modff(NaN, \p iptr) stores a NaN in the object pointed to by \p iptr and returns a NaN.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float modff(float x, float *iptr) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the value of first argument to the power of second argument.
*
* Calculate the value of \p x to the power of \p y.
*
* \return
* - powf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p y) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* for \p y an odd integer less than 0.
* - powf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p y) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* for \p y less than 0 and not an odd integer.
* - powf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p y) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* for \p y an odd integer greater than 0.
* - powf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p y) returns +0 for \p y > 0 and not an odd integer.
* - powf(-1,
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns 1.
* - powf(+1, \p y) returns 1 for any \p y, even a NaN.
* - powf(\p x,
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns 1 for any \p x, even a NaN.
* - powf(\p x, \p y) returns a NaN for finite \p x < 0 and finite non-integer \p y.
* - powf(\p x,
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* for
* \latexonly $| x | < 1$ \endlatexonly
* \xmlonly
*
*
*
* |
*
* x
*
* |
*
* <
* 1
*
* \endxmlonly.
* - powf(\p x,
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* ) returns +0 for
* \latexonly $| x | > 1$ \endlatexonly
* \xmlonly
*
*
*
* |
*
* x
*
* |
*
* >
* 1
*
* \endxmlonly.
* - powf(\p x,
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns +0 for
* \latexonly $| x | < 1$ \endlatexonly
* \xmlonly
*
*
*
* |
*
* x
*
* |
*
* <
* 1
*
* \endxmlonly.
* - powf(\p x,
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* for
* \latexonly $| x | > 1$ \endlatexonly
* \xmlonly
*
*
*
* |
*
* x
*
* |
*
* >
* 1
*
* \endxmlonly.
* - powf(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* , \p y) returns -0 for \p y an odd integer less than 0.
* - powf(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* , \p y) returns +0 for \p y < 0 and not an odd integer.
* - powf(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* , \p y) returns
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* for \p y an odd integer greater than 0.
* - powf(
* \latexonly $-\infty$ \endlatexonly
* \xmlonly
*
*
* −
* ∞
*
*
* \endxmlonly
* , \p y) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* for \p y > 0 and not an odd integer.
* - powf(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* , \p y) returns +0 for \p y < 0.
* - powf(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* , \p y) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* for \p y > 0.
*
* \note_accuracy_single
* \note_fastmath
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float powf(float x, float y) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the square root of the input argument.
*
* Calculate the nonnegative square root of \p x,
* \latexonly $\sqrt{x}$ \endlatexonly
* \xmlonly
*
*
*
* x
*
*
* \endxmlonly.
*
* \return
* Returns
* \latexonly $\sqrt{x}$ \endlatexonly
* \xmlonly
*
*
*
* x
*
*
* \endxmlonly.
* - sqrtf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - sqrtf(
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $+\infty$ \endlatexonly
* \xmlonly
*
*
* +
* ∞
*
* \endxmlonly.
* - sqrtf(\p x) returns NaN if \p x is less than 0.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float sqrtf(float x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate ceiling of the input argument.
*
* Compute the smallest integer value not less than \p x.
*
* \return
* Returns
* \latexonly $\lceil x \rceil$ \endlatexonly
* \xmlonly
*
*
* ⌈
* x
* ⌉
*
*
* \endxmlonly
* expressed as a floating-point number.
* - ceilf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
* - ceilf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float ceilf(float x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the largest integer less than or equal to \p x.
*
* Calculate the largest integer value which is less than or equal to \p x.
*
* \return
* Returns
* \latexonly $\lfloor x \rfloor$ \endlatexonly
* \xmlonly
*
*
* ⌊
* x
* ⌋
*
*
* \endxmlonly
* expressed as a floating-point number.
* - floorf(
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
* \endxmlonly.
* - floorf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* ) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
* \endxmlonly.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float floorf(float x) __THROW;
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the floating-point remainder of \p x / \p y.
*
* Calculate the floating-point remainder of \p x / \p y.
* The floating-point remainder of the division operation \p x / \p y calculated
* by this function is exactly the value x - n*y, where \p n is \p x / \p y with its fractional part truncated.
* The computed value will have the same sign as \p x, and its magnitude will be less than the magnitude of \p y.
* \return
* - Returns the floating-point remainder of \p x / \p y.
* - fmodf(
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* , \p y) returns
* \latexonly $\pm 0$ \endlatexonly
* \xmlonly
*
*
* ±
* 0
*
*
* \endxmlonly
* if \p y is not zero.
* - fmodf(\p x,
* \latexonly $\pm \infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* ) returns \p x if \p x is finite.
* - fmodf(\p x, \p y) returns NaN if \p x is
* \latexonly $\pm\infty$ \endlatexonly
* \xmlonly
*
*
* ±
* ∞
*
*
* \endxmlonly
* or \p y is zero.
* - If either argument is NaN, NaN is returned.
*
* \note_accuracy_single
*/
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float fmodf(float x, float y) __THROW;
#if defined(__QNX__)
/* redeclare some builtins that QNX uses */
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float _FLog(float, int);
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float _FCosh(float, float);
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float _FSinh(float, float);
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float _FSinx(float, unsigned int, int);
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int _FDsign(float);
extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ int _Dsign(double);
#endif
#if defined(__QNX__) && !defined(_LIBCPP_VERSION)
} /* std */
#endif
#endif /* _WIN32 && _M_AMD64 */
}
#if !defined(__CUDACC_RTC__)
#include
#include
#ifndef __CUDA_INTERNAL_SKIP_CPP_HEADERS__
#include
#include
#endif /* __CUDA_INTERNAL_SKIP_CPP_HEADERS__ */
#endif /* __CUDACC_RTC__ */
/*******************************************************************************
* *
* *
* *
*******************************************************************************/
#if defined(__CUDACC_RTC__)
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int signbit(float x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int signbit(double x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int signbit(long double x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isfinite(float x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isfinite(double x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isfinite(long double x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isnan(float x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isnan(double x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isnan(long double x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isinf(float x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isinf(double x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isinf(long double x);
#elif defined(__GNUC__)
#undef signbit
#undef isfinite
#undef isnan
#undef isinf
#if defined(__APPLE__)
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int signbit(float x);
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int signbit(double x);
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int signbit(long double x);
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isfinite(float x);
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isfinite(double x);
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isfinite(long double x);
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isnan(double x) throw();
#if !defined(_LIBCPP_VERSION) || _LIBCPP_VERSION < 7000
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isnan(float x);
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isnan(long double x);
#else /* !(!defined(_LIBCPP_VERSION) || _LIBCPP_VERSION < 7000) */
template
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ bool __libcpp_isnan(T) _NOEXCEPT;
inline _LIBCPP_INLINE_VISIBILITY __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ bool isnan(float x) _NOEXCEPT;
inline _LIBCPP_INLINE_VISIBILITY __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ bool isnan(long double x) _NOEXCEPT;
#endif /* !defined(_LIBCPP_VERSION) || _LIBCPP_VERSION < 7000 */
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isinf(double x) throw();
#if !defined(_LIBCPP_VERSION) || _LIBCPP_VERSION < 7000
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isinf(float x);
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isinf(long double x);
#else /* !(!defined(_LIBCPP_VERSION) || _LIBCPP_VERSION < 7000) */
template
__cudart_builtin__ __DEVICE_FUNCTIONS_DECL__ bool __libcpp_isinf(T) _NOEXCEPT;
inline _LIBCPP_INLINE_VISIBILITY __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ bool isinf(float x) _NOEXCEPT;
inline _LIBCPP_INLINE_VISIBILITY __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ bool isinf(long double x) _NOEXCEPT;
#endif /* !defined(_LIBCPP_VERSION) || _LIBCPP_VERSION < 7000 */
#else /* __APPLE__ */
#if ((defined _GLIBCXX_MATH_H) && _GLIBCXX_MATH_H) && (__cplusplus >= 201103L)
#if !defined(_NVHPC_CUDA)
namespace std {
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ constexpr bool signbit(float x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ constexpr bool signbit(double x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ constexpr bool signbit(long double x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ constexpr bool isfinite(float x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ constexpr bool isfinite(double x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ constexpr bool isfinite(long double x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ constexpr bool isnan(float x);
/* GCC 6.1 uses ::isnan(double x) for isnan(double x) if the condition is true */
#if _GLIBCXX_HAVE_OBSOLETE_ISNAN && !_GLIBCXX_NO_OBSOLETE_ISINF_ISNAN_DYNAMIC
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isnan(double x) throw();
#else /* !(_GLIBCXX_HAVE_OBSOLETE_ISNAN && !_GLIBCXX_NO_OBSOLETE_ISINF_ISNAN_DYNAMIC) */
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ constexpr bool isnan(double x);
#endif /* _GLIBCXX_HAVE_OBSOLETE_ISNAN && !_GLIBCXX_NO_OBSOLETE_ISINF_ISNAN_DYNAMIC */
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ constexpr bool isnan(long double x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ constexpr bool isinf(float x);
/* GCC 6.1 uses ::isinf(double x) for isinf(double x) if the condition is true. */
#if _GLIBCXX_HAVE_OBSOLETE_ISINF && !_GLIBCXX_NO_OBSOLETE_ISINF_ISNAN_DYNAMIC
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isinf(double x) throw();
#else /* !(_GLIBCXX_HAVE_OBSOLETE_ISINF && !_GLIBCXX_NO_OBSOLETE_ISINF_ISNAN_DYNAMIC) */
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ constexpr bool isinf(double x);
#endif /* _GLIBCXX_HAVE_OBSOLETE_ISINF && !_GLIBCXX_NO_OBSOLETE_ISINF_ISNAN_DYNAMIC */
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ constexpr bool isinf(long double x);
}
#endif
#else /* !(((defined _GLIBCXX_MATH_H) && _GLIBCXX_MATH_H) && (__cplusplus >= 201103L)) */
#if defined(__QNX__)
#if (__QNX__) && !defined(_LIBCPP_VERSION)
/* QNX defines functions in std, need to declare them here */
namespace std {
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ bool signbit(float x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ bool signbit(double x);
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ bool signbit(long double x);
}
#else
static __inline__ __DEVICE_FUNCTIONS_DECL__ bool signbit(const float x);
static __inline__ __DEVICE_FUNCTIONS_DECL__ bool signbit(const double x);
static __inline__ __DEVICE_FUNCTIONS_DECL__ bool signbit(const long double x);
#endif
static __inline__ __DEVICE_FUNCTIONS_DECL__ bool isfinite(const float a);
static __inline__ __DEVICE_FUNCTIONS_DECL__ bool isfinite(const double a);
static __inline__ __DEVICE_FUNCTIONS_DECL__ bool isfinite(const long double a);
static __inline__ __DEVICE_FUNCTIONS_DECL__ bool isnan(const float a);
static __inline__ __DEVICE_FUNCTIONS_DECL__ bool isnan(const double a);
static __inline__ __DEVICE_FUNCTIONS_DECL__ bool isnan(const long double a);
static __inline__ __DEVICE_FUNCTIONS_DECL__ bool isinf(const float a);
static __inline__ __DEVICE_FUNCTIONS_DECL__ bool isinf(const double a);
static __inline__ __DEVICE_FUNCTIONS_DECL__ bool isinf(const long double a);
#else /* ! __QNX__ */
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int signbit(const float x);
#if defined(__ICC)
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int signbit(const double x) throw();
#else /* !__ICC */
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int signbit(const double x);
#endif /* __ICC */
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int signbit(const long double x);
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isfinite(const float x);
#if defined(__ICC)
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isfinite(const double x) throw();
#else /* !__ICC */
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isfinite(const double x);
#endif /* __ICC */
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isfinite(const long double x);
#if (defined(__ANDROID__) || defined(__HORIZON__)) && _LIBCPP_VERSION >= 8000
template
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ bool __libcpp_isnan(T) _NOEXCEPT;
inline _LIBCPP_INLINE_VISIBILITY __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ bool isnan(float x) _NOEXCEPT;
#else /* !((defined(__ANDROID__) || defined(__HORIZON__)) && _LIBCPP_VERSION >= 8000) */
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isnan(float x);
#endif /* (defined(__ANDROID__) || defined(__HORIZON__)) && _LIBCPP_VERSION >= 8000 */
#if defined(__ANDROID__) || defined(__HORIZON__)
#if !defined(_LIBCPP_VERSION)
__forceinline__
#endif /* !defined(_LIBCPP_VERSION) */
#if _LIBCPP_VERSION >= 7000
#ifdef _LIBCPP_PREFERRED_OVERLOAD
_LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ bool isnan(double x) _NOEXCEPT;
#endif /* _LIBCPP_PREFERRED_OVERLOAD */
#else /* _LIBCPP_VERSION < 7000 */
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isnan(double x);
#endif /* _LIBCPP_VERSION >= 7000 */
#else /* !(__ANDROID__ || __HORIZON__) */
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isnan(double x) throw();
#endif /* __ANDROID__ */
#if (defined(__ANDROID__) || defined(__HORIZON__)) && _LIBCPP_VERSION >= 8000
inline _LIBCPP_INLINE_VISIBILITY __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ bool isnan(long double x) _NOEXCEPT;
#else /* !( (defined(__ANDROID__) || defined(__HORIZON__)) && _LIBCPP_VERSION >= 8000) */
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isnan(long double x);
#endif /* (defined(__ANDROID__) || defined(__HORIZON__)) && _LIBCPP_VERSION >= 8000 */
#if (defined(__ANDROID__) || defined(__HORIZON__)) && _LIBCPP_VERSION >= 8000
static __inline__ __cudart_builtin__ __DEVICE_FUNCTIONS_DECL__ unsigned __FLOAT_BITS(float __f);
static __inline__ __cudart_builtin__ __DEVICE_FUNCTIONS_DECL__ unsigned long long __DOUBLE_BITS(double __f);
template
__cudart_builtin__ __DEVICE_FUNCTIONS_DECL__ bool __libcpp_isinf(T) _NOEXCEPT;
inline _LIBCPP_INLINE_VISIBILITY __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ bool isinf(float x) _NOEXCEPT;
#else /* !( (defined(__ANDROID__) || defined(__HORIZON__)) && _LIBCPP_VERSION >= 8000) */
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isinf(float x);
#endif /* (defined(__ANDROID__) || defined(__HORIZON__)) && _LIBCPP_VERSION >= 8000 */
#if defined(__ANDROID__) || defined(__HORIZON__)
#if !defined(_LIBCPP_VERSION)
__forceinline__
#endif /* !defined(_LIBCPP_VERSION) */
#if _LIBCPP_VERSION >= 7000
#ifdef _LIBCPP_PREFERRED_OVERLOAD
_LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ bool isinf(double x) _NOEXCEPT;
#endif /* _LIBCPP_PREFERRED_OVERLOAD */
#else /* _LIBCPP_VERSION < 7000 */
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isinf(double x);
#endif /* _LIBCPP_VERSION >= 7000 */
#else /* ! (__ANDROID__ || __HORIZON__) */
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isinf(double x) throw();
#endif /* __ANDROID__ || __HORIZON__ */
#if (defined(__ANDROID__) || defined(__HORIZON__)) && _LIBCPP_VERSION >= 8000
inline _LIBCPP_INLINE_VISIBILITY __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ bool isinf(long double x) _NOEXCEPT;
#else /* !( (defined(__ANDROID__) || defined(__HORIZON__)) && _LIBCPP_VERSION >= 8000) */
__forceinline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ int isinf(long double x);
#endif /* (defined(__ANDROID__) || defined(__HORIZON__)) && _LIBCPP_VERSION >= 8000 */
#endif /* __QNX__ */
#endif /* ((defined _GLIBCXX_MATH_H) && _GLIBCXX_MATH_H) && (__cplusplus >= 201103L) */
#endif /* __APPLE__ */
#if !defined(_LIBCPP_VERSION)
#if defined(__clang__)
#if __has_include()
#define __NV_GLIBCXX_VERSION 40800
#endif /* __has_include() */
#endif /* __clang__ */
#if !defined(__NV_GLIBCXX_VERSION)
#define __NV_GLIBCXX_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
#endif /* !__NV_GLIBCXX_VERSION */
#endif /* !defined(_LIBCPP_VERSION) */
#if !defined(__HORIZON__) || !defined(_LIBCPP_VERSION) || _LIBCPP_VERSION < 3800
#if defined(__arm__) && !defined(_STLPORT_VERSION) && !_GLIBCXX_USE_C99
#if !defined(__ANDROID__) || (defined(__NV_GLIBCXX_VERSION) && __NV_GLIBCXX_VERSION < 40800)
#if defined(__QNX__)
/* QNX defines functions in std, need to declare them here */
namespace std {
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ long long int abs (long long int a);
}
#elif defined(__HORIZON__)
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
#endif
_LIBCPP_BEGIN_NAMESPACE_STD
__DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ long long int abs (long long int a) throw();
_LIBCPP_END_NAMESPACE_STD
#else
static __inline__ __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ long long int abs(long long int a);
#endif /* __QNX__ || __HORIZON__*/
#endif /* !__ANDROID__ || (defined(__NV_GLIBCXX_VERSION) && __NV_GLIBCXX_VERSION < 40800) */
#endif /* __arm__ && !_STLPORT_VERSION && !_GLIBCXX_USE_C99 */
#endif /* !defined(__HORIZON__) || !defined(_LIBCPP_VERSION) || _LIBCPP_VERSION < 3800 */
#if defined(__NV_GLIBCXX_VERSION) && __NV_GLIBCXX_VERSION < 40800 && !defined(__ibmxl__)
#if !defined(_STLPORT_VERSION)
namespace __gnu_cxx
{
#endif /* !_STLPORT_VERSION */
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ long long int abs(long long int a);
#if !defined(_STLPORT_VERSION)
}
#endif /* !_STLPORT_VERSION */
#endif /* defined(__NV_GLIBCXX_VERSION) && __NV_GLIBCXX_VERSION < 40800 && !__ibmxl__ */
namespace std
{
template extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ T __pow_helper(T, int);
template extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ T __cmath_power(T, unsigned int);
}
using std::abs;
using std::fabs;
using std::ceil;
using std::floor;
using std::sqrt;
#if !defined(_LIBCPP_VERSION) || _LIBCPP_VERSION < 3800
using std::pow;
#endif /* !defined(_LIBCPP_VERSION) || _LIBCPP_VERSION < 3800 */
using std::log;
using std::log10;
using std::fmod;
using std::modf;
using std::exp;
using std::frexp;
using std::ldexp;
using std::asin;
using std::sin;
using std::sinh;
using std::acos;
using std::cos;
using std::cosh;
using std::atan;
using std::atan2;
using std::tan;
using std::tanh;
#elif defined(_WIN32)
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ __CUDA_MATH_CRTIMP double __cdecl _hypot(double x, double y);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ __CUDA_MATH_CRTIMP float __cdecl _hypotf(float x, float y);
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
static __inline__ __DEVICE_FUNCTIONS_DECL__ int signbit(long double a);
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if _MSC_VER >= 1900
#define __SIGNBIT_THROW throw()
#else
#define __SIGNBIT_THROW
#endif
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ bool signbit(long double) __SIGNBIT_THROW;
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ __device_builtin__ __CUDA_MATH_CRTIMP int _ldsign(long double);
#undef __SIGNBIT_THROW
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
#define __RETURN_TYPE int
/**
* \ingroup CUDA_MATH_DOUBLE
*
* \brief Return the sign bit of the input.
*
* Determine whether the floating-point value \p a is negative.
*
* \return
* Reports the sign bit of all values including infinities, zeros, and NaNs.
* - With Visual Studio 2013 host compiler: __RETURN_TYPE is 'bool'. Returns
* true if and only if \p a is negative.
* - With other host compilers: __RETURN_TYPE is 'int'. Returns a
* nonzero value if and only if \p a is negative.
*/
static __inline__ __DEVICE_FUNCTIONS_DECL__ __RETURN_TYPE signbit(double a);
#undef __RETURN_TYPE
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#define __RETURN_TYPE bool
#if _MSC_VER >= 1900
#define __SIGNBIT_THROW throw()
#else
#define __SIGNBIT_THROW
#endif
/**
* \ingroup CUDA_MATH_DOUBLE
*
* \brief Return the sign bit of the input.
*
* Determine whether the floating-point value \p a is negative.
*
* \return
* Reports the sign bit of all values including infinities, zeros, and NaNs.
* - With Visual Studio 2013 host compiler: __RETURN_TYPE is 'bool'. Returns
* true if and only if \p a is negative.
* - With other host compilers: __RETURN_TYPE is 'int'. Returns a
* nonzero value if and only if \p a is negative.
*/
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ __RETURN_TYPE signbit(double) __SIGNBIT_THROW;
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ __device_builtin__ __CUDA_MATH_CRTIMP int _dsign(double);
#undef __RETURN_TYPE
#undef __SIGNBIT_THROW
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
#define __RETURN_TYPE int
/**
* \ingroup CUDA_MATH_SINGLE
*
* \brief Return the sign bit of the input.
*
* Determine whether the floating-point value \p a is negative.
*
* \return
* Reports the sign bit of all values including infinities, zeros, and NaNs.
* - With Visual Studio 2013 host compiler: __RETURN_TYPE is 'bool'. Returns
* true if and only if \p a is negative.
* - With other host compilers: __RETURN_TYPE is 'int'. Returns a nonzero value
* if and only if \p a is negative.
*/
static __inline__ __DEVICE_FUNCTIONS_DECL__ __RETURN_TYPE signbit(float a);
#undef __RETURN_TYPE
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#define __RETURN_TYPE bool
#if _MSC_VER >= 1900
#define __SIGNBIT_THROW throw()
#else
#define __SIGNBIT_THROW
#endif
/**
* \ingroup CUDA_MATH_SINGLE
*
* \brief Return the sign bit of the input.
*
* Determine whether the floating-point value \p a is negative.
*
* \return
* Reports the sign bit of all values including infinities, zeros, and NaNs.
* - With Visual Studio 2013 host compiler: __RETURN_TYPE is 'bool'. Returns
* true if and only if \p a is negative.
* - With other host compilers: __RETURN_TYPE is 'int'. Returns a nonzero value
* if and only if \p a is negative.
*/
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ __RETURN_TYPE signbit(float) __SIGNBIT_THROW;
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ __device_builtin__ __CUDA_MATH_CRTIMP int _fdsign(float);
#undef __RETURN_TYPE
#undef __SIGNBIT_THROW
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
static __inline__ __DEVICE_FUNCTIONS_DECL__ int isinf(long double a);
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
static __inline__ __DEVICE_FUNCTIONS_DECL__ bool isinf(long double a);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
#define __RETURN_TYPE int
/**
* \ingroup CUDA_MATH_DOUBLE
*
* \brief Determine whether argument is infinite.
*
* Determine whether the floating-point value \p a is an infinite value
* (positive or negative).
* \return
* - With Visual Studio 2013 host compiler: Returns true if and only
* if \p a is an infinite value.
* - With other host compilers: Returns a nonzero value if and only
* if \p a is an infinite value.
*/
static __inline__ __DEVICE_FUNCTIONS_DECL__ __RETURN_TYPE isinf(double a);
#undef __RETURN_TYPE
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#define __RETURN_TYPE bool
/**
* \ingroup CUDA_MATH_DOUBLE
*
* \brief Determine whether argument is infinite.
*
* Determine whether the floating-point value \p a is an infinite value
* (positive or negative).
* \return
* - With Visual Studio 2013 host compiler: Returns true if and only
* if \p a is an infinite value.
* - With other host compilers: Returns a nonzero value if and only
* if \p a is an infinite value.
*/
static __inline__ __DEVICE_FUNCTIONS_DECL__ __RETURN_TYPE isinf(double a);
#undef __RETURN_TYPE
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
#define __RETURN_TYPE int
/**
* \ingroup CUDA_MATH_SINGLE
*
* \brief Determine whether argument is infinite.
*
* Determine whether the floating-point value \p a is an infinite value
* (positive or negative).
*
* \return
* - With Visual Studio 2013 host compiler: __RETURN_TYPE is 'bool'. Returns
* true if and only if \p a is an infinite value.
* - With other host compilers: __RETURN_TYPE is 'int'. Returns a nonzero
* value if and only if \p a is an infinite value.
*/
static __inline__ __DEVICE_FUNCTIONS_DECL__ __RETURN_TYPE isinf(float a);
#undef __RETURN_TYPE
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#define __RETURN_TYPE bool
/**
* \ingroup CUDA_MATH_SINGLE
*
* \brief Determine whether argument is infinite.
*
* Determine whether the floating-point value \p a is an infinite value
* (positive or negative).
*
* \return
* - With Visual Studio 2013 host compiler: __RETURN_TYPE is 'bool'. Returns
* true if and only if \p a is an infinite value.
* - With other host compilers: __RETURN_TYPE is 'int'. Returns a nonzero
* value if and only if \p a is an infinite value.
*/
static __inline__ __DEVICE_FUNCTIONS_DECL__ __RETURN_TYPE isinf(float a);
#undef __RETURN_TYPE
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
static __inline__ __DEVICE_FUNCTIONS_DECL__ int isnan(long double a);
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
static __inline__ __DEVICE_FUNCTIONS_DECL__ bool isnan(long double a);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
#define __RETURN_TYPE int
/**
* \ingroup CUDA_MATH_DOUBLE
*
* \brief Determine whether argument is a NaN.
*
* Determine whether the floating-point value \p a is a NaN.
* \return
* - With Visual Studio 2013 host compiler: __RETURN_TYPE is 'bool'.
* Returns true if and only if \p a is a NaN value.
* - With other host compilers: __RETURN_TYPE is 'int'. Returns a
* nonzero value if and only if \p a is a NaN value.
*/
static __inline__ __DEVICE_FUNCTIONS_DECL__ __RETURN_TYPE isnan(double a);
#undef __RETURN_TYPE
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#define __RETURN_TYPE bool
/**
* \ingroup CUDA_MATH_DOUBLE
*
* \brief Determine whether argument is a NaN.
*
* Determine whether the floating-point value \p a is a NaN.
* \return
* - With Visual Studio 2013 host compiler: __RETURN_TYPE is 'bool'.
* Returns true if and only if \p a is a NaN value.
* - With other host compilers: __RETURN_TYPE is 'int'. Returns a
* nonzero value if and only if \p a is a NaN value.
*/
static __inline__ __DEVICE_FUNCTIONS_DECL__ __RETURN_TYPE isnan(double a);
#undef __RETURN_TYPE
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
#define __RETURN_TYPE int
/**
* \ingroup CUDA_MATH_SINGLE
*
*
* \brief Determine whether argument is a NaN.
*
* Determine whether the floating-point value \p a is a NaN.
* \return
* - With Visual Studio 2013 host compiler: __RETURN_TYPE is 'bool'.
* Returns true if and only if \p a is a NaN value.
* - With other host compilers: __RETURN_TYPE is 'int'. Returns a
* nonzero value if and only if \p a is a NaN value.
*/
static __inline__ __DEVICE_FUNCTIONS_DECL__ __RETURN_TYPE isnan(float a);
#undef __RETURN_TYPE
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#define __RETURN_TYPE bool
/**
* \ingroup CUDA_MATH_SINGLE
*
*
* \brief Determine whether argument is a NaN.
*
* Determine whether the floating-point value \p a is a NaN.
* \return
* - With Visual Studio 2013 host compiler: __RETURN_TYPE is 'bool'.
* Returns true if and only if \p a is a NaN value.
* - With other host compilers: __RETURN_TYPE is 'int'. Returns a
* nonzero value if and only if \p a is a NaN value.
*/
static __inline__ __DEVICE_FUNCTIONS_DECL__ __RETURN_TYPE isnan(float a);
#undef __RETURN_TYPE
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
static __inline__ __DEVICE_FUNCTIONS_DECL__ int isfinite(long double a);
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
static __inline__ __DEVICE_FUNCTIONS_DECL__ bool isfinite(long double a);
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
#define __RETURN_TYPE int
/**
* \ingroup CUDA_MATH_DOUBLE
*
* \brief Determine whether argument is finite.
*
* Determine whether the floating-point value \p a is a finite value
* (zero, subnormal, or normal and not infinity or NaN).
*
* \return
* - With Visual Studio 2013 host compiler: __RETURN_TYPE is 'bool'. Returns
* true if and only if \p a is a finite value.
* - With other host compilers: __RETURN_TYPE is 'int'. Returns
* a nonzero value if and only if \p a is a finite value.
*/
static __inline__ __DEVICE_FUNCTIONS_DECL__ __RETURN_TYPE isfinite(double a);
#undef __RETURN_TYPE
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#define __RETURN_TYPE bool
/**
* \ingroup CUDA_MATH_DOUBLE
*
* \brief Determine whether argument is finite.
*
* Determine whether the floating-point value \p a is a finite value
* (zero, subnormal, or normal and not infinity or NaN).
*
* \return
* - With Visual Studio 2013 host compiler: __RETURN_TYPE is 'bool'. Returns
* true if and only if \p a is a finite value.
* - With other host compilers: __RETURN_TYPE is 'int'. Returns
* a nonzero value if and only if \p a is a finite value.
*/
static __inline__ __DEVICE_FUNCTIONS_DECL__ __RETURN_TYPE isfinite(double a);
#undef __RETURN_TYPE
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
#define __RETURN_TYPE int
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Determine whether argument is finite.
*
* Determine whether the floating-point value \p a is a finite value
* (zero, subnormal, or normal and not infinity or NaN).
*
* \return
* - With Visual Studio 2013 host compiler: __RETURN_TYPE is 'bool'. Returns
* true if and only if \p a is a finite value.
* - With other host compilers: __RETURN_TYPE is 'int'. Returns
* a nonzero value if and only if \p a is a finite value.
*/
static __inline__ __DEVICE_FUNCTIONS_DECL__ __RETURN_TYPE isfinite(float a);
#undef __RETURN_TYPE
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#define __RETURN_TYPE bool
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Determine whether argument is finite.
*
* Determine whether the floating-point value \p a is a finite value
* (zero, subnormal, or normal and not infinity or NaN).
*
* \return
* - With Visual Studio 2013 host compiler: __RETURN_TYPE is 'bool'. Returns
* true if and only if \p a is a finite value.
* - With other host compilers: __RETURN_TYPE is 'int'. Returns
* a nonzero value if and only if \p a is a finite value.
*/
static __inline__ __DEVICE_FUNCTIONS_DECL__ __RETURN_TYPE isfinite(float a);
#undef __RETURN_TYPE
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
template extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ T _Pow_int(T, int);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ long long int abs(long long int);
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
template extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ T _Pow_int(T, int) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ long long int abs(long long int) throw();
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
#endif /* __CUDACC_RTC__ */
#if __cplusplus >= 201103L
#define __NV_NOEXCEPT noexcept
#else /* !__cplusplus >= 201103L */
#define __NV_NOEXCEPT throw()
#endif /* __cplusplus >= 201103L */
#if defined(_LIBCPP_VERSION) && defined(_LIBCPP_BEGIN_NAMESPACE_STD) && !defined(_STLPORT_VERSION)
#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wc++11-extensions"
#endif /* __clang__ */
#if _LIBCPP_VERSION < 3800
_LIBCPP_BEGIN_NAMESPACE_STD
#endif /* _LIBCPP_VERSION < 3800 */
#elif defined(__GNUC__) && !defined(_STLPORT_VERSION)
namespace std {
#endif /* defined(_LIBCPP_VERSION) && defined(_LIBCPP_BEGIN_NAMESPACE_STD) && !defined(_STLPORT_VERSION) ||
__GNUC__ && !_STLPORT_VERSION */
#if defined(__CUDACC_RTC__) || defined(__GNUC__)
#if defined(__CUDACC_RTC__) || \
(defined(__NV_GLIBCXX_VERSION) && __NV_GLIBCXX_VERSION >= 40800) || \
defined(__ibmxl__)
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ long long int abs(long long int);
#endif /* __CUDACC__RTC__ ||
(defined(__NV_GLIBCXX_VERSION) && __NV_GLIBCXX_VERSION >= 40800) ||
__ibmxl__ */
#endif /* __CUDACC_RTC__ || __GNUC__ */
#if defined(__CUDACC_RTC__) || \
(!defined(_MSC_VER) || _MSC_VER < 1800) && \
(!defined(_LIBCPP_VERSION) || (_LIBCPP_VERSION < 1101))
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ long int __cdecl abs(long int);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl abs(float);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ double __cdecl abs(double);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl fabs(float);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl ceil(float);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl floor(float);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl sqrt(float);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl pow(float, float);
#if !defined(__QNX__)
#if defined(__GNUC__) && __cplusplus >= 201103L && !defined(_LIBCPP_VERSION)
template
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__
typename __gnu_cxx::__promote_2<_Tp, _Up>::__type pow(_Tp, _Up);
#else /* !(defined(__GNUC__) && __cplusplus >= 201103L && !defined(_LIBCPP_VERSION)) */
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl pow(float, int);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ double __cdecl pow(double, int);
#endif /* defined(__GNUC__) && __cplusplus >= 201103L && !defined(_LIBCPP_VERSION) */
#endif /* !defined(__QNX__) */
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl log(float);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl log10(float);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl fmod(float, float);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl modf(float, float*);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl exp(float);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl frexp(float, int*);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl ldexp(float, int);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl asin(float);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl sin(float);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl sinh(float);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl acos(float);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl cos(float);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl cosh(float);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl atan(float);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl atan2(float, float);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl tan(float);
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl tanh(float);
#else /* __CUDACC_RTC__ ||
(!defined(_MSC_VER) || _MSC_VER < 1800) &&
(!defined(_LIBCPP_VERSION) || (_LIBCPP_VERSION < 1101)) */
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ long int __cdecl abs(long int) throw();
#if defined(_LIBCPP_VERSION)
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ long long int __cdecl abs(long long int) throw();
#endif /* defined(_LIBCPP_VERSION) */
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl abs(float) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ double __cdecl abs(double) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl fabs(float) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl ceil(float) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl floor(float) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl sqrt(float) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl pow(float, float) throw();
#if defined(_LIBCPP_VERSION)
#if (defined (__ANDROID__) || defined(__HORIZON__)) && (_LIBCPP_VERSION >= 9000)
template
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__
#if _LIBCPP_VERSION >= 14000
typename std::__enable_if_t
#else /* _LIBCPP_VERSION < 14000 */
typename std::_EnableIf
#endif /* _LIBCPP_VERSION >= 14000 */
<
std::is_arithmetic<_A1>::value &&
std::is_arithmetic<_A2>::value,
std::__promote<_A1, _A2>
>::type pow(_A1 __lcpp_x, _A2 __lcpp_y) __NV_NOEXCEPT;
#elif (defined(__APPLE__) && __clang_major__ >= 7) || _LIBCPP_VERSION >= 3800 || defined(__QNX__)
template
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__
#if _LIBCPP_VERSION >= 13000
typename std::enable_if <
#else /* _LIBCPP_VERSION < 13000 */
typename std::__lazy_enable_if <
#endif /* _LIBCPP_VERSION >= 13000 */
std::is_arithmetic<_Tp>::value && std::is_arithmetic<_Up>::value,
std::__promote<_Tp, _Up>
>::type pow(_Tp __x, _Up __y) __NV_NOEXCEPT;
#else /* !((__APPLE__ && __clang_major__ >= 7) || _LIBCPP_VERSION >= 3800) */
template
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__
typename enable_if <
std::is_arithmetic<_Tp>::value && std::is_arithmetic<_Up>::value,
typename std::__promote<_Tp, _Up>::type
>::type pow(_Tp __x, _Up __y) __NV_NOEXCEPT;
#endif /* (__APPLE__ && __clang_major__ >= 7) || _LIBCPP_VERSION >= 3800 */
#else /* !defined(_LIBCPP_VERSION) */
#if !(defined(__GNUC__) && __cplusplus >= 201103L)
#if (defined(_MSC_VER) && (_MSC_VER >= 1928)) && !(defined __CUDA_INTERNAL_SKIP_CPP_HEADERS__)
template && ::std:: is_arithmetic_v<_Ty2>, int> > [[nodiscard]] __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ ::std:: _Common_float_type_t<_Ty1, _Ty2> __cdecl pow(_Ty1 _Left, _Ty2 _Right) noexcept;
#else
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl pow(float, int) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ double __cdecl pow(double, int) throw();
#endif /* (defined(_MSC_VER) && (_MSC_VER >= 1928)) && !(defined __CUDA_INTERNAL_SKIP_CPP_HEADERS__) */
#endif /* !(defined(__GNUC__) && __cplusplus >= 201103L) */
#endif /* defined(_LIBCPP_VERSION) */
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl log(float) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl log10(float) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl fmod(float, float) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl modf(float, float*) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl exp(float) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl frexp(float, int*) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl ldexp(float, int) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl asin(float) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl sin(float) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl sinh(float) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl acos(float) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl cos(float) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl cosh(float) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl atan(float) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl atan2(float, float) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl tan(float) throw();
extern __DEVICE_FUNCTIONS_DECL__ __cudart_builtin__ float __cdecl tanh(float) throw();
#endif /* __CUDACC_RTC__ ||
(!defined(_MSC_VER) || _MSC_VER < 1800) &&
(!defined(_LIBCPP_VERSION) || (_LIBCPP_VERSION < 1101)) */
#if defined(_LIBCPP_VERSION) && defined(_LIBCPP_END_NAMESPACE_STD) && !defined(_STLPORT_VERSION)
#if _LIBCPP_VERSION < 3800
_LIBCPP_END_NAMESPACE_STD
#endif /* _LIBCPP_VERSION < 3800 */
#if defined(__clang__)
#pragma clang diagnostic pop
#endif /* __clang__ */
#elif defined(__GNUC__) && !defined(_STLPORT_VERSION)
}
#endif /* defined(_LIBCPP_VERSION) && defined(_LIBCPP_BEGIN_NAMESPACE_STD) && !defined(_STLPORT_VERSION) ||
__GNUC__ && !_STLPORT_VERSION */
#undef __DEVICE_FUNCTIONS_DECL__
#undef __NV_NOEXCEPT
#if defined(__CUDACC_RTC__)
#define __MATH_FUNCTIONS_DECL__ __host__ __device__
#define __MATH_FUNCTIONS_DEVICE_DECL__ __device__
#else /* __CUDACC_RTC__ */
#define __MATH_FUNCTIONS_DECL__ static inline __host__ __device__ __cudart_builtin__
#define __MATH_FUNCTIONS_DEVICE_DECL__ static inline __device__ __cudart_builtin__
#endif /* __CUDACC_RTC__ */
#if (!defined(_MSC_VER) || _MSC_VER < 1800)
#if defined(__QNX__) || (defined(_LIBCPP_VERSION) && _LIBCPP_VERSION >= 3800)
#if defined(__QNX__) && (!defined(_LIBCPP_VERSION) || _LIBCPP_VERSION < 8000)
#if defined(_LIBCPP_VERSION)
#define __NV_NOEXCEPT _NOEXCEPT
_LIBCPP_BEGIN_NAMESPACE_STD
#else
#define __NV_NOEXCEPT
namespace std {
__host__ __device__ __cudart_builtin__ int ilogbf(float a);
#endif
#else /* !(defined(__QNX__) && (!defined(_LIBCPP_VERSION) || _LIBCPP_VERSION < 8000)) */
#define __NV_NOEXCEPT _NOEXCEPT
#endif /* defined(__QNX__) && (!defined(_LIBCPP_VERSION) || _LIBCPP_VERSION < 8000) */
__host__ __device__ __cudart_builtin__ float logb(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ int ilogb(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float scalbn(float a, int b) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float scalbln(float a, long int b) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float exp2(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float expm1(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float log2(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float log1p(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float acosh(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float asinh(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float atanh(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float hypot(float a, float b) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float cbrt(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float erf(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float erfc(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float lgamma(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float tgamma(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float copysign(float a, float b) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float nextafter(float a, float b) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float remainder(float a, float b) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float remquo(float a, float b, int *quo) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float round(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ long int lround(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ long long int llround(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float trunc(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float rint(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ long int lrint(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ long long int llrint(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float nearbyint(float a) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float fdim(float a, float b) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float fma(float a, float b, float c) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float fmax(float a, float b) __NV_NOEXCEPT;
__host__ __device__ __cudart_builtin__ float fmin(float a, float b) __NV_NOEXCEPT;
#if defined(__QNX__) && (!defined(_LIBCPP_VERSION) || _LIBCPP_VERSION < 8000)
#if defined(_LIBCPP_VERSION)
_LIBCPP_END_NAMESPACE_STD
using _VSTD::logb;
using _VSTD::ilogb;
using _VSTD::scalbn;
using _VSTD::scalbln;
using _VSTD::exp2;
using _VSTD::expm1;
using _VSTD::log2;
using _VSTD::log1p;
using _VSTD::acosh;
using _VSTD::asinh;
using _VSTD::atanh;
using _VSTD::hypot;
using _VSTD::cbrt;
using _VSTD::erf;
using _VSTD::erfc;
using _VSTD::lgamma;
using _VSTD::tgamma;
using _VSTD::copysign;
using _VSTD::nextafter;
using _VSTD::remainder;
using _VSTD::remquo;
using _VSTD::round;
using _VSTD::lround;
using _VSTD::llround;
using _VSTD::trunc;
using _VSTD::rint;
using _VSTD::lrint;
using _VSTD::llrint;
using _VSTD::nearbyint;
using _VSTD::fdim;
using _VSTD::fma;
using _VSTD::fmax;
using _VSTD::fmin;
#else
}
#endif
#endif /* defined(__QNX__) && (!defined(_LIBCPP_VERSION) || _LIBCPP_VERSION < 8000) */
#undef __NV_NOEXCEPT
#else /* !(defined(__QNX__ ) || (defined(_LIBCPP_VERSION) && _LIBCPP_VERSION >= 3800)) */
#if ((defined _GLIBCXX_MATH_H) && _GLIBCXX_MATH_H) && (__cplusplus >= 201103L)
namespace std {
__host__ __device__ __cudart_builtin__ constexpr float logb(float a);
__host__ __device__ __cudart_builtin__ constexpr int ilogb(float a);
__host__ __device__ __cudart_builtin__ constexpr float scalbn(float a, int b);
__host__ __device__ __cudart_builtin__ constexpr float scalbln(float a, long int b);
__host__ __device__ __cudart_builtin__ constexpr float exp2(float a);
__host__ __device__ __cudart_builtin__ constexpr float expm1(float a);
__host__ __device__ __cudart_builtin__ constexpr float log2(float a);
__host__ __device__ __cudart_builtin__ constexpr float log1p(float a);
__host__ __device__ __cudart_builtin__ constexpr float acosh(float a);
__host__ __device__ __cudart_builtin__ constexpr float asinh(float a);
__host__ __device__ __cudart_builtin__ constexpr float atanh(float a);
__host__ __device__ __cudart_builtin__ constexpr float hypot(float a, float b);
__host__ __device__ __cudart_builtin__ constexpr float cbrt(float a);
__host__ __device__ __cudart_builtin__ constexpr float erf(float a);
__host__ __device__ __cudart_builtin__ constexpr float erfc(float a);
__host__ __device__ __cudart_builtin__ constexpr float lgamma(float a);
__host__ __device__ __cudart_builtin__ constexpr float tgamma(float a);
__host__ __device__ __cudart_builtin__ constexpr float copysign(float a, float b);
__host__ __device__ __cudart_builtin__ constexpr float nextafter(float a, float b);
__host__ __device__ __cudart_builtin__ constexpr float remainder(float a, float b);
__host__ __device__ __cudart_builtin__ float remquo(float a, float b, int *quo);
__host__ __device__ __cudart_builtin__ constexpr float round(float a);
__host__ __device__ __cudart_builtin__ constexpr long int lround(float a);
__host__ __device__ __cudart_builtin__ constexpr long long int llround(float a);
__host__ __device__ __cudart_builtin__ constexpr float trunc(float a);
__host__ __device__ __cudart_builtin__ constexpr float rint(float a);
__host__ __device__ __cudart_builtin__ constexpr long int lrint(float a);
__host__ __device__ __cudart_builtin__ constexpr long long int llrint(float a);
__host__ __device__ __cudart_builtin__ constexpr float nearbyint(float a);
__host__ __device__ __cudart_builtin__ constexpr float fdim(float a, float b);
__host__ __device__ __cudart_builtin__ constexpr float fma(float a, float b, float c);
__host__ __device__ __cudart_builtin__ constexpr float fmax(float a, float b);
__host__ __device__ __cudart_builtin__ constexpr float fmin(float a, float b);
}
#else /* !(((defined _GLIBCXX_MATH_H) && _GLIBCXX_MATH_H) && (__cplusplus >= 201103L)) */
__MATH_FUNCTIONS_DECL__ float logb(float a);
__MATH_FUNCTIONS_DECL__ int ilogb(float a);
__MATH_FUNCTIONS_DECL__ float scalbn(float a, int b);
__MATH_FUNCTIONS_DECL__ float scalbln(float a, long int b);
__MATH_FUNCTIONS_DECL__ float exp2(float a);
__MATH_FUNCTIONS_DECL__ float expm1(float a);
__MATH_FUNCTIONS_DECL__ float log2(float a);
__MATH_FUNCTIONS_DECL__ float log1p(float a);
__MATH_FUNCTIONS_DECL__ float acosh(float a);
__MATH_FUNCTIONS_DECL__ float asinh(float a);
__MATH_FUNCTIONS_DECL__ float atanh(float a);
__MATH_FUNCTIONS_DECL__ float hypot(float a, float b);
__MATH_FUNCTIONS_DECL__ float cbrt(float a);
__MATH_FUNCTIONS_DECL__ float erf(float a);
__MATH_FUNCTIONS_DECL__ float erfc(float a);
__MATH_FUNCTIONS_DECL__ float lgamma(float a);
__MATH_FUNCTIONS_DECL__ float tgamma(float a);
__MATH_FUNCTIONS_DECL__ float copysign(float a, float b);
__MATH_FUNCTIONS_DECL__ float nextafter(float a, float b);
__MATH_FUNCTIONS_DECL__ float remainder(float a, float b);
__MATH_FUNCTIONS_DECL__ float remquo(float a, float b, int *quo);
__MATH_FUNCTIONS_DECL__ float round(float a);
__MATH_FUNCTIONS_DECL__ long int lround(float a);
__MATH_FUNCTIONS_DECL__ long long int llround(float a);
__MATH_FUNCTIONS_DECL__ float trunc(float a);
__MATH_FUNCTIONS_DECL__ float rint(float a);
__MATH_FUNCTIONS_DECL__ long int lrint(float a);
__MATH_FUNCTIONS_DECL__ long long int llrint(float a);
__MATH_FUNCTIONS_DECL__ float nearbyint(float a);
__MATH_FUNCTIONS_DECL__ float fdim(float a, float b);
__MATH_FUNCTIONS_DECL__ float fma(float a, float b, float c);
__MATH_FUNCTIONS_DECL__ float fmax(float a, float b);
__MATH_FUNCTIONS_DECL__ float fmin(float a, float b);
#endif /* ((defined _GLIBCXX_MATH_H) && _GLIBCXX_MATH_H) && (__cplusplus >= 201103L) */
#endif /* defined(__QNX__) || (defined(_LIBCPP_VERSION) && _LIBCPP_VERSION >= 3800) */
#else /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
extern __host__ __device__ __cudart_builtin__ float __cdecl logb(float) throw();
extern __host__ __device__ __cudart_builtin__ int __cdecl ilogb(float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl scalbn(float, float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl scalbln(float, long int) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl exp2(float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl expm1(float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl log2(float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl log1p(float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl acosh(float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl asinh(float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl atanh(float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl hypot(float, float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl cbrt(float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl erf(float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl erfc(float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl lgamma(float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl tgamma(float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl copysign(float, float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl nextafter(float, float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl remainder(float, float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl remquo(float, float, int *) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl round(float) throw();
extern __host__ __device__ __cudart_builtin__ long int __cdecl lround(float) throw();
extern __host__ __device__ __cudart_builtin__ long long int __cdecl llround(float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl trunc(float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl rint(float) throw();
extern __host__ __device__ __cudart_builtin__ long int __cdecl lrint(float) throw();
extern __host__ __device__ __cudart_builtin__ long long int __cdecl llrint(float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl nearbyint(float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl fdim(float, float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl fma(float, float, float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl fmax(float, float) throw();
extern __host__ __device__ __cudart_builtin__ float __cdecl fmin(float, float) throw();
#endif /* (!defined(_MSC_VER) || _MSC_VER < 1800) */
__MATH_FUNCTIONS_DECL__ float exp10(const float a);
__MATH_FUNCTIONS_DECL__ float rsqrt(const float a);
__MATH_FUNCTIONS_DECL__ float rcbrt(const float a);
__MATH_FUNCTIONS_DECL__ float sinpi(const float a);
__MATH_FUNCTIONS_DECL__ float cospi(const float a);
__MATH_FUNCTIONS_DECL__ void sincospi(const float a, float *const sptr, float *const cptr);
__MATH_FUNCTIONS_DECL__ void sincos(const float a, float *const sptr, float *const cptr);
__MATH_FUNCTIONS_DECL__ float j0(const float a);
__MATH_FUNCTIONS_DECL__ float j1(const float a);
__MATH_FUNCTIONS_DECL__ float jn(const int n, const float a);
__MATH_FUNCTIONS_DECL__ float y0(const float a);
__MATH_FUNCTIONS_DECL__ float y1(const float a);
__MATH_FUNCTIONS_DECL__ float yn(const int n, const float a);
__MATH_FUNCTIONS_DEVICE_DECL__ float cyl_bessel_i0(const float a);
__MATH_FUNCTIONS_DEVICE_DECL__ float cyl_bessel_i1(const float a);
__MATH_FUNCTIONS_DECL__ float erfinv(const float a);
__MATH_FUNCTIONS_DECL__ float erfcinv(const float a);
__MATH_FUNCTIONS_DECL__ float normcdfinv(const float a);
__MATH_FUNCTIONS_DECL__ float normcdf(const float a);
__MATH_FUNCTIONS_DECL__ float erfcx(const float a);
__MATH_FUNCTIONS_DECL__ double copysign(const double a, const float b);
__MATH_FUNCTIONS_DECL__ double copysign(const float a, const double b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the minimum value of the input \p unsigned \p int arguments.
*
* Calculate the minimum value of the arguments \p a and \p b.
*/
__MATH_FUNCTIONS_DECL__ unsigned int min(const unsigned int a, const unsigned int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the minimum value of the input \p int and \p unsigned \p int arguments.
*
* Calculate the minimum value of the arguments \p a and \p b, perform integer promotion first.
*/
__MATH_FUNCTIONS_DECL__ unsigned int min(const int a, const unsigned int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the minimum value of the input \p unsigned \p int and \p int arguments.
*
* Calculate the minimum value of the arguments \p a and \p b, perform integer promotion first.
*/
__MATH_FUNCTIONS_DECL__ unsigned int min(const unsigned int a, const int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the minimum value of the input \p long \p int arguments.
*
* Calculate the minimum value of the arguments \p a and \p b.
*/
__MATH_FUNCTIONS_DECL__ long int min(const long int a, const long int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the minimum value of the input \p unsigned \p long \p int arguments.
*
* Calculate the minimum value of the arguments \p a and \p b.
*/
__MATH_FUNCTIONS_DECL__ unsigned long int min(const unsigned long int a, const unsigned long int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the minimum value of the input \p long \p int and \p unsigned \p long \p int arguments.
*
* Calculate the minimum value of the arguments \p a and \p b, perform integer promotion first.
*/
__MATH_FUNCTIONS_DECL__ unsigned long int min(const long int a, const unsigned long int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the minimum value of the input \p unsigned \p long \p int and \p long \p int arguments.
*
* Calculate the minimum value of the arguments \p a and \p b, perform integer promotion first.
*/
__MATH_FUNCTIONS_DECL__ unsigned long int min(const unsigned long int a, const long int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the minimum value of the input \p long \p long \p int arguments.
*
* Calculate the minimum value of the arguments \p a and \p b.
*/
__MATH_FUNCTIONS_DECL__ long long int min(const long long int a, const long long int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the minimum value of the input \p unsigned \p long \p long \p int arguments.
*
* Calculate the minimum value of the arguments \p a and \p b.
*/
__MATH_FUNCTIONS_DECL__ unsigned long long int min(const unsigned long long int a, const unsigned long long int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the minimum value of the input \p long \p long \p int and \p unsigned \p long \p long \p int arguments.
*
* Calculate the minimum value of the arguments \p a and \p b, perform integer promotion first.
*/
__MATH_FUNCTIONS_DECL__ unsigned long long int min(const long long int a, const unsigned long long int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the minimum value of the input \p unsigned \p long \p long \p int and \p long \p long \p int arguments.
*
* Calculate the minimum value of the arguments \p a and \p b, perform integer promotion first.
*/
__MATH_FUNCTIONS_DECL__ unsigned long long int min(const unsigned long long int a, const long long int b);
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the minimum value of the input \p float arguments.
*
* Calculate the minimum value of the arguments \p a and \p b.
* Behavior is equivalent to ::fminf() function.
*
* Note, this is different from \p std:: specification
*/
__MATH_FUNCTIONS_DECL__ float min(const float a, const float b);
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the minimum value of the input \p float arguments.
*
* Calculate the minimum value of the arguments \p a and \p b.
* Behavior is equivalent to ::fmin() function.
*
* Note, this is different from \p std:: specification
*/
__MATH_FUNCTIONS_DECL__ double min(const double a, const double b);
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the minimum value of the input \p float and \p double arguments.
*
* Convert \p float argument \p a to \p double, followed by ::fmin().
*
* Note, this is different from \p std:: specification
*/
__MATH_FUNCTIONS_DECL__ double min(const float a, const double b);
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the minimum value of the input \p double and \p float arguments.
*
* Convert \p float argument \p b to \p double, followed by ::fmin().
*
* Note, this is different from \p std:: specification
*/
__MATH_FUNCTIONS_DECL__ double min(const double a, const float b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the maximum value of the input \p unsigned \p int arguments.
*
* Calculate the maximum value of the arguments \p a and \p b.
*/
__MATH_FUNCTIONS_DECL__ unsigned int max(const unsigned int a, const unsigned int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the maximum value of the input \p int and \p unsigned \p int arguments.
*
* Calculate the maximum value of the arguments \p a and \p b, perform integer promotion first.
*/
__MATH_FUNCTIONS_DECL__ unsigned int max(const int a, const unsigned int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the maximum value of the input \p unsigned \p int and \p int arguments.
*
* Calculate the maximum value of the arguments \p a and \p b, perform integer promotion first.
*/
__MATH_FUNCTIONS_DECL__ unsigned int max(const unsigned int a, const int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the maximum value of the input \p long \p int arguments.
*
* Calculate the maximum value of the arguments \p a and \p b.
*/
__MATH_FUNCTIONS_DECL__ long int max(const long int a, const long int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the maximum value of the input \p unsigned \p long \p int arguments.
*
* Calculate the maximum value of the arguments \p a and \p b.
*/
__MATH_FUNCTIONS_DECL__ unsigned long int max(const unsigned long int a, const unsigned long int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the maximum value of the input \p long \p int and \p unsigned \p long \p int arguments.
*
* Calculate the maximum value of the arguments \p a and \p b, perform integer promotion first.
*/
__MATH_FUNCTIONS_DECL__ unsigned long int max(const long int a, const unsigned long int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the maximum value of the input \p unsigned \p long \p int and \p long \p int arguments.
*
* Calculate the maximum value of the arguments \p a and \p b, perform integer promotion first.
*/
__MATH_FUNCTIONS_DECL__ unsigned long int max(const unsigned long int a, const long int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the maximum value of the input \p long \p long \p int arguments.
*
* Calculate the maximum value of the arguments \p a and \p b.
*/
__MATH_FUNCTIONS_DECL__ long long int max(const long long int a, const long long int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the maximum value of the input \p unsigned \p long \p long \p int arguments.
*
* Calculate the maximum value of the arguments \p a and \p b.
*/
__MATH_FUNCTIONS_DECL__ unsigned long long int max(const unsigned long long int a, const unsigned long long int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the maximum value of the input \p long \p long \p int and \p unsigned \p long \p long \p int arguments.
*
* Calculate the maximum value of the arguments \p a and \p b, perform integer promotion first.
*/
__MATH_FUNCTIONS_DECL__ unsigned long long int max(const long long int a, const unsigned long long int b);
/**
* \ingroup CUDA_MATH_INT
* \brief Calculate the maximum value of the input \p unsigned \p long \p long \p int and \p long \p long \p int arguments.
*
* Calculate the maximum value of the arguments \p a and \p b, perform integer promotion first.
*/
__MATH_FUNCTIONS_DECL__ unsigned long long int max(const unsigned long long int a, const long long int b);
/**
* \ingroup CUDA_MATH_SINGLE
* \brief Calculate the maximum value of the input \p float arguments.
*
* Calculate the maximum value of the arguments \p a and \p b.
* Behavior is equivalent to ::fmaxf() function.
*
* Note, this is different from \p std:: specification
*/
__MATH_FUNCTIONS_DECL__ float max(const float a, const float b);
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the maximum value of the input \p float arguments.
*
* Calculate the maximum value of the arguments \p a and \p b.
* Behavior is equivalent to ::fmax() function.
*
* Note, this is different from \p std:: specification
*/
__MATH_FUNCTIONS_DECL__ double max(const double a, const double b);
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the maximum value of the input \p float and \p double arguments.
*
* Convert \p float argument \p a to \p double, followed by ::fmax().
*
* Note, this is different from \p std:: specification
*/
__MATH_FUNCTIONS_DECL__ double max(const float a, const double b);
/**
* \ingroup CUDA_MATH_DOUBLE
* \brief Calculate the maximum value of the input \p double and \p float arguments.
*
* Convert \p float argument \p b to \p double, followed by ::fmax().
*
* Note, this is different from \p std:: specification
*/
__MATH_FUNCTIONS_DECL__ double max(const double a, const float b);
#undef __MATH_FUNCTIONS_DECL__
#undef __MATH_FUNCTIONS_DEVICE_DECL__
/*******************************************************************************
* *
* *
* *
*******************************************************************************/
#undef EXCLUDE_FROM_RTC
extern "C"{
inline __device__ void *__nv_aligned_device_malloc(size_t size, size_t align)
{
__device__ void *__nv_aligned_device_malloc_impl(size_t, size_t);
return __nv_aligned_device_malloc_impl(size, align);
}
}
#endif /* __cplusplus && __CUDACC__ */
#define EXCLUDE_FROM_RTC
#if !defined(__CUDACC__)
/*******************************************************************************
* *
* ONLY FOR HOST CODE! NOT FOR DEVICE EXECUTION *
* *
*******************************************************************************/
#include
#if defined(_WIN32)
#pragma warning (push)
#pragma warning (disable : 4211)
#endif /* _WIN32 */
__func__(double rsqrt(double a));
__func__(double rcbrt(double a));
__func__(double sinpi(double a));
__func__(double cospi(double a));
__func__(void sincospi(double a, double *sptr, double *cptr));
__func__(double erfinv(double a));
__func__(double erfcinv(double a));
__func__(double normcdfinv(double a));
__func__(double normcdf(double a));
__func__(double erfcx(double a));
__func__(float rsqrtf(float a));
__func__(float rcbrtf(float a));
__func__(float sinpif(float a));
__func__(float cospif(float a));
__func__(void sincospif(float a, float *sptr, float *cptr));
__func__(float erfinvf(float a));
__func__(float erfcinvf(float a));
__func__(float normcdfinvf(float a));
__func__(float normcdff(float a));
__func__(float erfcxf(float a));
__func__(int min(int a, int b));
__func__(unsigned int umin(unsigned int a, unsigned int b));
__func__(long long int llmin(long long int a, long long int b));
__func__(unsigned long long int ullmin(unsigned long long int a, unsigned long long int b));
__func__(int max(int a, int b));
__func__(unsigned int umax(unsigned int a, unsigned int b));
__func__(long long int llmax(long long int a, long long int b));
__func__(unsigned long long int ullmax(unsigned long long int a, unsigned long long int b));
#if defined(_WIN32) || defined(__APPLE__) || defined (__ANDROID__)
__func__(int __isnan(double a));
#endif /* _WIN32 || __APPLE__ || __ANDROID__ */
#if defined(_WIN32) || defined(__APPLE__) || defined (__QNX__)
__func__(void sincos(double a, double *sptr, double *cptr));
#endif /* _WIN32 || __APPLE__ || __QNX__ */
#if defined(_WIN32) || defined(__APPLE__)
__func__(double exp10(double a));
__func__(float exp10f(float a));
__func__(void sincosf(float a, float *sptr, float *cptr));
__func__(int __isinf(double a));
#endif /* _WIN32 || __APPLE__ */
#if (defined(_WIN32) && (!defined(_MSC_VER) || _MSC_VER < 1800)) || defined (__ANDROID__)
__func__(double log2(double a));
#endif /* (_WIN32 && (!defined(_MSC_VER) || _MSC_VER < 1800)) || __ANDROID__ */
#if defined(_WIN32)
__func__(int __signbit(double a));
__func__(int __finite(double a));
__func__(int __signbitl(long double a));
__func__(int __signbitf(float a));
__func__(int __finitel(long double a));
__func__(int __finitef(float a));
__func__(int __isinfl(long double a));
__func__(int __isinff(float a));
__func__(int __isnanl(long double a));
__func__(int __isnanf(float a));
#endif /* _WIN32 */
#if defined(_WIN32) && (!defined(_MSC_VER) || _MSC_VER < 1800)
__func__(double copysign(double a, double b));
__func__(double fmax(double a, double b));
__func__(double fmin(double a, double b));
__func__(double trunc(double a));
__func__(double round(double a));
__func__(long int lround(double a));
__func__(long long int llround(double a));
__func__(double rint(double a));
__func__(double nearbyint(double a));
__func__(long int lrint(double a));
__func__(long long int llrint(double a));
__func__(double fdim(double a, double b));
__func__(double scalbn(double a, int b));
__func__(double scalbln(double a, long int b));
__func__(double exp2(double a));
__func__(double log1p(double a));
__func__(double expm1(double a));
__func__(double cbrt(double a));
__func__(double acosh(double a));
__func__(double asinh(double a));
__func__(double atanh(double a));
__func__(int ilogb(double a));
__func__(double logb(double a));
__func__(double remquo(double a, double b, int *quo));
__func__(double remainder(double a, double b));
__func__(double fma (double a, double b, double c));
__func__(double nextafter(double a, double b));
__func__(double erf(double a));
__func__(double erfc(double a));
__func__(double lgamma(double a));
__func__(unsigned long long int __internal_host_nan_kernel(const char *s));
__func__(double nan(const char *tagp));
__func__(double __host_tgamma_kernel(double a));
__func__(double __host_stirling_poly(double a));
__func__(double __host_tgamma_stirling(double a));
__func__(double tgamma(double a));
__func__(float fmaxf(float a, float b));
__func__(float fminf(float a, float b));
__func__(float roundf(float a));
__func__(long int lroundf(float a));
__func__(long long int llroundf(float a));
__func__(float truncf(float a));
__func__(float rintf(float a));
__func__(float nearbyintf(float a));
__func__(long int lrintf(float a));
__func__(long long int llrintf(float a));
__func__(float logbf(float a));
__func__(float scalblnf(float a, long int b));
__func__(float log2f(float a));
__func__(float exp2f(float a));
__func__(float acoshf(float a));
__func__(float asinhf(float a));
__func__(float atanhf(float a));
__func__(float cbrtf(float a));
__func__(float expm1f(float a));
__func__(float fdimf(float a, float b));
__func__(float log1pf(float a));
__func__(float scalbnf(float a, int b));
__func__(float fmaf(float a, float b, float c));
__func__(int ilogbf(float a));
__func__(float erff(float a));
__func__(float erfcf(float a));
__func__(float lgammaf(float a));
__func__(float tgammaf(float a));
__func__(float remquof(float a, float b, int *quo));
__func__(float remainderf(float a, float b));
__func__(float copysignf(float a, float b));
__func__(float nextafterf(float a, float b));
__func__(float nanf(const char *tagp));
#endif /* _WIN32 && (!defined(_MSC_VER) || _MSC_VER < 1800) */
#if defined(_WIN32)
#pragma warning (pop)
#endif /* _WIN32 */
#endif /* !__CUDACC__ */
#undef EXCLUDE_FROM_RTC
#if !defined(__CUDACC_RTC__)
#include "math_functions.hpp"
#endif /* !__CUDACC_RTC__ */
#endif /* !__MATH_FUNCTIONS_H__ */
#if defined(__UNDEF_CUDA_INCLUDE_COMPILER_INTERNAL_HEADERS_MATH_FUNCTIONS_H__)
#undef __CUDA_INCLUDE_COMPILER_INTERNAL_HEADERS__
#undef __UNDEF_CUDA_INCLUDE_COMPILER_INTERNAL_HEADERS_MATH_FUNCTIONS_H__
#endif