## 1.5. 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.

### Functions

__device__ ​ double acos ( double  x )
Calculate the arc cosine of the input argument.
__device__ ​ double acosh ( double  x )
Calculate the nonnegative arc hyperbolic cosine of the input argument.
__device__ ​ double asin ( double  x )
Calculate the arc sine of the input argument.
__device__ ​ double asinh ( double  x )
Calculate the arc hyperbolic sine of the input argument.
__device__ ​ double atan ( double  x )
Calculate the arc tangent of the input argument.
__device__ ​ double atan2 ( double  y, double  x )
Calculate the arc tangent of the ratio of first and second input arguments.
__device__ ​ double atanh ( double  x )
Calculate the arc hyperbolic tangent of the input argument.
__device__ ​ double cbrt ( double  x )
Calculate the cube root of the input argument.
__device__ ​ double ceil ( double  x )
Calculate ceiling of the input argument.
__device__ ​ double copysign ( double  x, double  y )
Create value with given magnitude, copying sign of second value.
__device__ ​ double cos ( double  x )
Calculate the cosine of the input argument.
__device__ ​ double cosh ( double  x )
Calculate the hyperbolic cosine of the input argument.
__device__ ​ double cospi ( double  x )
Calculate the cosine of the input argument $×\pi$ .
__device__ ​ double cyl_bessel_i0 ( double  x )
Calculate the value of the regular modified cylindrical Bessel function of order 0 for the input argument.
__device__ ​ double cyl_bessel_i1 ( double  x )
Calculate the value of the regular modified cylindrical Bessel function of order 1 for the input argument.
__device__ ​ double erf ( double  x )
Calculate the error function of the input argument.
__device__ ​ double erfc ( double  x )
Calculate the complementary error function of the input argument.
__device__ ​ double erfcinv ( double  y )
Calculate the inverse complementary error function of the input argument.
__device__ ​ double erfcx ( double  x )
Calculate the scaled complementary error function of the input argument.
__device__ ​ double erfinv ( double  y )
Calculate the inverse error function of the input argument.
__device__ ​ double exp ( double  x )
Calculate the base $e$ exponential of the input argument.
__device__ ​ double exp10 ( double  x )
Calculate the base 10 exponential of the input argument.
__device__ ​ double exp2 ( double  x )
Calculate the base 2 exponential of the input argument.
__device__ ​ double expm1 ( double  x )
Calculate the base $e$ exponential of the input argument, minus 1.
__device__ ​ double fabs ( double  x )
Calculate the absolute value of the input argument.
__device__ ​ double fdim ( double  x, double  y )
Compute the positive difference between x and y.
__device__ ​ double floor ( double  x )
Calculate the largest integer less than or equal to x.
__device__ ​ double fma ( double  x, double  y, double  z )
Compute $x×y+z$ as a single operation.
__device__ ​ double fmax ( double , double )
Determine the maximum numeric value of the arguments.
__device__ ​ double fmin ( double  x, double  y )
Determine the minimum numeric value of the arguments.
__device__ ​ double fmod ( double  x, double  y )
Calculate the double-precision floating-point remainder of x / y.
__device__ ​ double frexp ( double  x, int* nptr )
Extract mantissa and exponent of a floating-point value.
__device__ ​ double hypot ( double  x, double  y )
Calculate the square root of the sum of squares of two arguments.
__device__ ​ int ilogb ( double  x )
Compute the unbiased integer exponent of the argument.
__device__ ​ __RETURN_TYPE isfinite ( double  a )
Determine whether argument is finite.
__device__ ​ __RETURN_TYPE isinf ( double  a )
Determine whether argument is infinite.
__device__ ​ __RETURN_TYPE isnan ( double  a )
Determine whether argument is a NaN.
__device__ ​ double j0 ( double  x )
Calculate the value of the Bessel function of the first kind of order 0 for the input argument.
__device__ ​ double j1 ( double  x )
Calculate the value of the Bessel function of the first kind of order 1 for the input argument.
__device__ ​ double jn ( int  n, double  x )
Calculate the value of the Bessel function of the first kind of order n for the input argument.
__device__ ​ double ldexp ( double  x, int  exp )
Calculate the value of $x\cdot {2}^{exp}$ .
__device__ ​ double lgamma ( double  x )
Calculate the natural logarithm of the absolute value of the gamma function of the input argument.
__device__ ​ long long int llrint ( double  x )
Round input to nearest integer value.
__device__ ​ long long int llround ( double  x )
Round to nearest integer value.
__device__ ​ double log ( double  x )
Calculate the base $e$ logarithm of the input argument.
__device__ ​ double log10 ( double  x )
Calculate the base 10 logarithm of the input argument.
__device__ ​ double log1p ( double  x )
Calculate the value of $lo{g}_{e}\left(1+x\right)$ .
__device__ ​ double log2 ( double  x )
Calculate the base 2 logarithm of the input argument.
__device__ ​ double logb ( double  x )
Calculate the floating point representation of the exponent of the input argument.
__device__ ​ long int lrint ( double  x )
Round input to nearest integer value.
__device__ ​ long int lround ( double  x )
Round to nearest integer value.
__device__ ​ double max ( double  a, float  b )
Calculate the maximum value of the input double and float arguments.
__device__ ​ double max ( float  a, double  b )
Calculate the maximum value of the input float and double arguments.
__device__ ​ double max ( double  a, double  b )
Calculate the maximum value of the input float arguments.
__device__ ​ double min ( double  a, float  b )
Calculate the minimum value of the input double and float arguments.
__device__ ​ double min ( float  a, double  b )
Calculate the minimum value of the input float and double arguments.
__device__ ​ double min ( double  a, double  b )
Calculate the minimum value of the input float arguments.
__device__ ​ double modf ( double  x, double* iptr )
Break down the input argument into fractional and integral parts.
__device__ ​ double nan ( const char* tagp )
Returns "Not a Number" value.
__device__ ​ double nearbyint ( double  x )
Round the input argument to the nearest integer.
__device__ ​ double nextafter ( double  x, double  y )
Return next representable double-precision floating-point value after argument x in the direction of y.
__device__ ​ double norm ( int  dim, const double* t )
Calculate the square root of the sum of squares of any number of coordinates.
__device__ ​ double norm3d ( double  a, double  b, double  c )
Calculate the square root of the sum of squares of three coordinates of the argument.
__device__ ​ double norm4d ( double  a, double  b, double  c, double  d )
Calculate the square root of the sum of squares of four coordinates of the argument.
__device__ ​ double normcdf ( double  y )
Calculate the standard normal cumulative distribution function.
__device__ ​ double normcdfinv ( double  y )
Calculate the inverse of the standard normal cumulative distribution function.
__device__ ​ double pow ( double  x, double  y )
Calculate the value of first argument to the power of second argument.
__device__ ​ double rcbrt ( double  x )
Calculate reciprocal cube root function.
__device__ ​ double remainder ( double  x, double  y )
Compute double-precision floating-point remainder.
__device__ ​ double remquo ( double  x, double  y, int* quo )
Compute double-precision floating-point remainder and part of quotient.
__device__ ​ double rhypot ( double  x, double  y )
Calculate one over the square root of the sum of squares of two arguments.
__device__ ​ double rint ( double  x )
Round to nearest integer value in floating-point.
__device__ ​ double rnorm ( int  dim, const double* t )
Calculate the reciprocal of square root of the sum of squares of any number of coordinates.
__device__ ​ double rnorm3d ( double  a, double  b, double  c )
Calculate one over the square root of the sum of squares of three coordinates of the argument.
__device__ ​ double rnorm4d ( double  a, double  b, double  c, double  d )
Calculate one over the square root of the sum of squares of four coordinates of the argument.
__device__ ​ double round ( double  x )
Round to nearest integer value in floating-point.
__device__ ​ double rsqrt ( double  x )
Calculate the reciprocal of the square root of the input argument.
__device__ ​ double scalbln ( double  x, long int  n )
Scale floating-point input by integer power of two.
__device__ ​ double scalbn ( double  x, int  n )
Scale floating-point input by integer power of two.
__device__ ​ __RETURN_TYPE signbit ( double  a )
Return the sign bit of the input.
__device__ ​ double sin ( double  x )
Calculate the sine of the input argument.
__device__ ​ void sincos ( double  x, double* sptr, double* cptr )
Calculate the sine and cosine of the first input argument.
__device__ ​ void sincospi ( double  x, double* sptr, double* cptr )
Calculate the sine and cosine of the first input argument $×\pi$ .
__device__ ​ double sinh ( double  x )
Calculate the hyperbolic sine of the input argument.
__device__ ​ double sinpi ( double  x )
Calculate the sine of the input argument $×\pi$ .
__device__ ​ double sqrt ( double  x )
Calculate the square root of the input argument.
__device__ ​ double tan ( double  x )
Calculate the tangent of the input argument.
__device__ ​ double tanh ( double  x )
Calculate the hyperbolic tangent of the input argument.
__device__ ​ double tgamma ( double  x )
Calculate the gamma function of the input argument.
__device__ ​ double trunc ( double  x )
Truncate input argument to the integral part.
__device__ ​ double y0 ( double  x )
Calculate the value of the Bessel function of the second kind of order 0 for the input argument.
__device__ ​ double y1 ( double  x )
Calculate the value of the Bessel function of the second kind of order 1 for the input argument.
__device__ ​ double yn ( int  n, double  x )
Calculate the value of the Bessel function of the second kind of order n for the input argument.

### Functions

__device__ ​ double acos ( double  x )
Calculate the arc cosine of the input argument.
###### Returns

Result will be in radians, in the interval [0, $\pi$ ] for x inside [-1, +1].

• acos(1) returns +0.
• acos(x) returns NaN for x outside [-1, +1].

###### Description

Calculate the principal value of the arc cosine of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double acosh ( double  x )
Calculate the nonnegative arc hyperbolic cosine of the input argument.
###### Returns

Result will be in the interval [0, $+\mathrm{\infty }$ ].

• acosh(1) returns 0.
• acosh(x) returns NaN for x in the interval [ $-\mathrm{\infty }$ , 1).

###### Description

Calculate the nonnegative arc hyperbolic cosine of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double asin ( double  x )
Calculate the arc sine of the input argument.
###### Returns

Result will be in radians, in the interval [- $\pi$ /2, + $\pi$ /2] for x inside [-1, +1].

• asin(0) returns +0.
• asin(x) returns NaN for x outside [-1, +1].

###### Description

Calculate the principal value of the arc sine of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double asinh ( double  x )
Calculate the arc hyperbolic sine of the input argument.
###### Returns

• asinh(0) returns 1.

###### Description

Calculate the arc hyperbolic sine of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double atan ( double  x )
Calculate the arc tangent of the input argument.
###### Returns

Result will be in radians, in the interval [- $\pi$ /2, + $\pi$ /2].

• atan(0) returns +0.

###### Description

Calculate the principal value of the arc tangent of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double atan2 ( double  y, double  x )
Calculate the arc tangent of the ratio of first and second input arguments.
###### Returns

Result will be in radians, in the interval [- $\pi$ /, + $\pi$ ].

• atan2(0, 1) returns +0.

###### Description

Calculate the principal value of the arc tangent of the ratio of first and second input arguments y / x. The quadrant of the result is determined by the signs of inputs y and x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double atanh ( double  x )
Calculate the arc hyperbolic tangent of the input argument.
###### Returns

• atanh( $±0$ ) returns $±0$ .
• atanh( $±1$ ) returns $±\mathrm{\infty }$ .
• atanh(x) returns NaN for x outside interval [-1, 1].

###### Description

Calculate the arc hyperbolic tangent of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double cbrt ( double  x )
Calculate the cube root of the input argument.
###### Returns

Returns ${x}^{1/3}$ .

• cbrt( $±0$ ) returns $±0$ .
• cbrt( $±\mathrm{\infty }$ ) returns $±\mathrm{\infty }$ .

###### Description

Calculate the cube root of x, ${x}^{1/3}$ .

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double ceil ( double  x )
Calculate ceiling of the input argument.
###### Returns

Returns $⌈x⌉$ expressed as a floating-point number.

• ceil( $±0$ ) returns $±0$ .
• ceil( $±\mathrm{\infty }$ ) returns $±\mathrm{\infty }$ .

###### Description

Compute the smallest integer value not less than x.

__device__ ​ double copysign ( double  x, double  y )
Create value with given magnitude, copying sign of second value.
###### Returns

Returns a value with the magnitude of x and the sign of y.

###### Description

Create a floating-point value with the magnitude x and the sign of y.

__device__ ​ double cos ( double  x )
Calculate the cosine of the input argument.
###### Returns

• cos( $±0$ ) returns 1.
• cos( $±\mathrm{\infty }$ ) returns NaN.

###### Description

Calculate the cosine of the input argument x (measured in radians).

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double cosh ( double  x )
Calculate the hyperbolic cosine of the input argument.
###### Returns

• cosh(0) returns 1.
• cosh( $±\mathrm{\infty }$ ) returns $+\mathrm{\infty }$ .

###### Description

Calculate the hyperbolic cosine of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double cospi ( double  x )
Calculate the cosine of the input argument $×\pi$ .
###### Returns

• cospi( $±0$ ) returns 1.
• cospi( $±\mathrm{\infty }$ ) returns NaN.

###### Description

Calculate the cosine of x$×\pi$ (measured in radians), where x is the input argument.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double cyl_bessel_i0 ( double  x )
Calculate the value of the regular modified cylindrical Bessel function of order 0 for the input argument.
###### Returns

Returns the value of the regular modified cylindrical Bessel function of order 0.

###### Description

Calculate the value of the regular modified cylindrical Bessel function of order 0 for the input argument x, ${I}_{0}\left(x\right)$ .

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double cyl_bessel_i1 ( double  x )
Calculate the value of the regular modified cylindrical Bessel function of order 1 for the input argument.
###### Returns

Returns the value of the regular modified cylindrical Bessel function of order 1.

###### Description

Calculate the value of the regular modified cylindrical Bessel function of order 1 for the input argument x, ${I}_{1}\left(x\right)$ .

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double erf ( double  x )
Calculate the error function of the input argument.
###### Returns

• erf( $±0$ ) returns $±0$ .
• erf( $±\mathrm{\infty }$ ) returns $±1$ .

###### Description

Calculate the value of the error function for the input argument x, $\frac{2}{\sqrt{\pi }}{\int }_{0}^{x}{e}^{-{t}^{2}}dt$ .

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double erfc ( double  x )
Calculate the complementary error function of the input argument.
###### Returns

• erfc( $-\mathrm{\infty }$ ) returns 2.
• erfc( $+\mathrm{\infty }$ ) returns +0.

###### Description

Calculate the complementary error function of the input argument x, 1 - erf(x).

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double erfcinv ( double  y )
Calculate the inverse complementary error function of the input argument.
###### Returns

• erfcinv(0) returns $+\mathrm{\infty }$ .
• erfcinv(2) returns $-\mathrm{\infty }$ .

###### Description

Calculate the inverse complementary error function of the input argument y, for y in the interval [0, 2]. The inverse complementary error function find the value x that satisfies the equation y = erfc(x), for $0\le y\le 2$ , and $-\mathrm{\infty }\le x\le \mathrm{\infty }$ .

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double erfcx ( double  x )
Calculate the scaled complementary error function of the input argument.
###### Returns

• erfcx( $-\mathrm{\infty }$ ) returns $+\mathrm{\infty }$
• erfcx( $+\mathrm{\infty }$ ) returns +0
• erfcx(x) returns $+\mathrm{\infty }$ if the correctly calculated value is outside the double floating point range.

###### Description

Calculate the scaled complementary error function of the input argument x, ${e}^{{x}^{2}}\cdot \text{erfc}\left(x\right)$ .

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double erfinv ( double  y )
Calculate the inverse error function of the input argument.
###### Returns

• erfinv(1) returns $+\mathrm{\infty }$ .
• erfinv(-1) returns $-\mathrm{\infty }$ .

###### Description

Calculate the inverse error function of the input argument y, for y in the interval [-1, 1]. The inverse error function finds the value x that satisfies the equation y = erf(x), for $-1\le y\le 1$ , and $-\mathrm{\infty }\le x\le \mathrm{\infty }$ .

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double exp ( double  x )
Calculate the base $e$ exponential of the input argument.
###### Returns

Returns ${e}^{x}$ .

###### Description

Calculate the base $e$ exponential of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double exp10 ( double  x )
Calculate the base 10 exponential of the input argument.
###### Returns

Returns ${10}^{x}$ .

###### Description

Calculate the base 10 exponential of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double exp2 ( double  x )
Calculate the base 2 exponential of the input argument.
###### Returns

Returns ${2}^{x}$ .

###### Description

Calculate the base 2 exponential of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double expm1 ( double  x )
Calculate the base $e$ exponential of the input argument, minus 1.
###### Returns

Returns ${e}^{x}-1$ .

###### Description

Calculate the base $e$ exponential of the input argument x, minus 1.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double fabs ( double  x )
Calculate the absolute value of the input argument.
###### Returns

Returns the absolute value of the input argument.

• fabs( $±\mathrm{\infty }$ ) returns $+\mathrm{\infty }$ .
• fabs( $±0$ ) returns 0.

###### Description

Calculate the absolute value of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double fdim ( double  x, double  y )
Compute the positive difference between x and y.
###### Returns

Returns the positive difference between x and y.

• fdim(x, y) returns x - y if x > y.
• fdim(x, y) returns +0 if x$\le$y.

###### Description

Compute the positive difference between x and y. The positive difference is x - y when x > y and +0 otherwise.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 6.

__device__ ​ double floor ( double  x )
Calculate the largest integer less than or equal to x.
###### Returns

Returns $⌊x⌋$ expressed as a floating-point number.

• floor( $±\mathrm{\infty }$ ) returns $±\mathrm{\infty }$ .
• floor( $±0$ ) returns $±0$ .

###### Description

Calculates the largest integer value which is less than or equal to x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double fma ( double  x, double  y, double  z )
Compute $x×y+z$ as a single operation.
###### Returns

Returns the rounded value of $x×y+z$ as a single operation.

• fma( $±\mathrm{\infty }$ , $±0$ , z) returns NaN.
• fma( $±0$ , $±\mathrm{\infty }$ , z) returns NaN.
• fma(x, y, $-\mathrm{\infty }$ ) returns NaN if $x×y$ is an exact $+\mathrm{\infty }$ .
• fma(x, y, $+\mathrm{\infty }$ ) returns NaN if $x×y$ is an exact $-\mathrm{\infty }$ .

###### Description

Compute the value of $x×y+z$ as a single ternary operation. After computing the value to infinite precision, the value is rounded once.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double fmax ( double , double )
Determine the maximum numeric value of the arguments.
###### Returns

Returns the maximum numeric values of the arguments x and y.

• If both arguments are NaN, returns NaN.
• If one argument is NaN, returns the numeric argument.

###### Description

Determines the maximum numeric value of the arguments x and 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.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double fmin ( double  x, double  y )
Determine the minimum numeric value of the arguments.
###### Returns

Returns the minimum numeric value of the arguments x and y.

• If both arguments are NaN, returns NaN.
• If one argument is NaN, returns the numeric argument.

###### Description

Determines the minimum numeric value of the arguments x and 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.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double fmod ( double  x, double  y )
Calculate the double-precision floating-point remainder of x / y.
###### Returns

• Returns the floating point remainder of x / y.
• fmod( $±0$ , y) returns $±0$ if y is not zero.
• fmod(x, $±\mathrm{\infty }$ ) returns x if x is finite.
• fmod(x, y) returns NaN if x is $±\mathrm{\infty }$ or y is zero.
• If either argument is NaN, NaN is returned.

###### Description

Calculate the double-precision floating-point remainder of x / y. The floating-point remainder of the division operation x / y calculated by this function is exactly the value x - n*y, where n is x / y with its fractional part truncated. The computed value will have the same sign as x, and it's magnitude will be less than the magnitude of y.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double frexp ( double  x, int* nptr )
Extract mantissa and exponent of a floating-point value.
###### Returns

Returns the fractional component m.

• frexp(0, nptr) returns 0 for the fractional component and zero for the integer component.
• frexp( $±0$ , nptr) returns $±0$ and stores zero in the location pointed to by nptr.
• frexp( $±\mathrm{\infty }$ , nptr) returns $±\mathrm{\infty }$ and stores an unspecified value in the location to which nptr points.
• frexp(NaN, y) returns a NaN and stores an unspecified value in the location to which nptr points.

###### Description

Decompose the floating-point value x into a component m for the normalized fraction element and another term n for the exponent. The absolute value of m will be greater than or equal to 0.5 and less than 1.0 or it will be equal to 0; $x=m\cdot {2}^{n}$ . The integer exponent n will be stored in the location to which nptr points.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double hypot ( double  x, double  y )
Calculate the square root of the sum of squares of two arguments.
###### Returns

Returns the length of the hypotenuse $\sqrt{{x}^{2}+{y}^{2}}$ . If the correct value would overflow, returns $+\mathrm{\infty }$ . If the correct value would underflow, returns 0.

###### Description

Calculate the length of the hypotenuse of a right triangle whose two sides have lengths x and y without undue overflow or underflow.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ int ilogb ( double  x )
Compute the unbiased integer exponent of the argument.
###### Returns

• If successful, returns the unbiased exponent of the argument.
• ilogb(0) returns INT_MIN.
• ilogb(NaN) returns INT_MIN.
• ilogb(x) returns INT_MAX if x is $\mathrm{\infty }$ or the correct value is greater than INT_MAX.
• ilogb(x) returns INT_MIN if the correct value is less than INT_MIN.
• Note: above behavior does not take into account FP_ILOGB0 nor FP_ILOGBNAN.

###### Description

Calculates the unbiased integer exponent of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ __RETURN_TYPE isfinite ( double  a )
Determine whether argument is finite.
###### Returns

• With Visual Studio 2013 host compiler: __RETURN_TYPE is 'bool'. Returns true if and only if a is a finite value.
• With other host compilers: __RETURN_TYPE is 'int'. Returns a nonzero value if and only if a is a finite value.

###### Description

Determine whether the floating-point value a is a finite value (zero, subnormal, or normal and not infinity or NaN).

__device__ ​ __RETURN_TYPE isinf ( double  a )
Determine whether argument is infinite.
###### Returns

• With Visual Studio 2013 host compiler: Returns true if and only if a is a infinite value.
• With other host compilers: Returns a nonzero value if and only if a is a infinite value.

###### Description

Determine whether the floating-point value a is an infinite value (positive or negative).

__device__ ​ __RETURN_TYPE isnan ( double  a )
Determine whether argument is a NaN.
###### Returns

• With Visual Studio 2013 host compiler: __RETURN_TYPE is 'bool'. Returns true if and only if a is a NaN value.
• With other host compilers: __RETURN_TYPE is 'int'. Returns a nonzero value if and only if a is a NaN value.

###### Description

Determine whether the floating-point value a is a NaN.

__device__ ​ double j0 ( double  x )
Calculate the value of the Bessel function of the first kind of order 0 for the input argument.
###### Returns

Returns the value of the Bessel function of the first kind of order 0.

• j0( $±\mathrm{\infty }$ ) returns +0.
• j0(NaN) returns NaN.

###### Description

Calculate the value of the Bessel function of the first kind of order 0 for the input argument x, ${J}_{0}\left(x\right)$ .

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double j1 ( double  x )
Calculate the value of the Bessel function of the first kind of order 1 for the input argument.
###### Returns

Returns the value of the Bessel function of the first kind of order 1.

• j1( $±0$ ) returns $±0$ .
• j1( $±\mathrm{\infty }$ ) returns $±0$ .
• j1(NaN) returns NaN.

###### Description

Calculate the value of the Bessel function of the first kind of order 1 for the input argument x, ${J}_{1}\left(x\right)$ .

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double jn ( int  n, double  x )
Calculate the value of the Bessel function of the first kind of order n for the input argument.
###### Returns

Returns the value of the Bessel function of the first kind of order n.

• jn(n, NaN) returns NaN.
• jn(n, x) returns NaN for n < 0.
• jn(n, $+\mathrm{\infty }$ ) returns +0.

###### Description

Calculate the value of the Bessel function of the first kind of order n for the input argument x, ${J}_{n}\left(x\right)$ .

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double ldexp ( double  x, int  exp )
Calculate the value of $x\cdot {2}^{exp}$ .
###### Returns

• ldexp(x) returns $±\mathrm{\infty }$ if the correctly calculated value is outside the double floating point range.

###### Description

Calculate the value of $x\cdot {2}^{exp}$ of the input arguments x and exp.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double lgamma ( double  x )
Calculate the natural logarithm of the absolute value of the gamma function of the input argument.
###### Returns

• lgamma(1) returns +0.
• lgamma(2) returns +0.
• lgamma(x) returns $±\mathrm{\infty }$ if the correctly calculated value is outside the double floating point range.
• lgamma(x) returns $+\mathrm{\infty }$ if x$\le$ 0 and x is an integer.
• lgamma( $-\mathrm{\infty }$ ) returns $-\mathrm{\infty }$ .
• lgamma( $+\mathrm{\infty }$ ) returns $+\mathrm{\infty }$ .

###### Description

Calculate the natural logarithm of the absolute value of the gamma function of the input argument x, namely the value of ${\mathrm{log}}_{e}\left|{\int }_{0}^{\mathrm{\infty }}{e}^{-t}{t}^{x-1}dt\right|$

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ long long int llrint ( double  x )
Round input to nearest integer value.
###### Returns

Returns rounded integer value.

###### Description

Round 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 result is undefined.

__device__ ​ long long int llround ( double  x )
Round to nearest integer value.
###### Returns

Returns rounded integer value.

###### Description

Round 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 result is undefined.

Note:

This function may be slower than alternate rounding methods. See llrint().

__device__ ​ double log ( double  x )
Calculate the base $e$ logarithm of the input argument.
###### Returns

• log( $±0$ ) returns $-\mathrm{\infty }$ .
• log(1) returns +0.
• log(x) returns NaN for x < 0.
• log( $+\mathrm{\infty }$ ) returns $+\mathrm{\infty }$

###### Description

Calculate the base $e$ logarithm of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double log10 ( double  x )
Calculate the base 10 logarithm of the input argument.
###### Returns

• log10( $±0$ ) returns $-\mathrm{\infty }$ .
• log10(1) returns +0.
• log10(x) returns NaN for x < 0.
• log10( $+\mathrm{\infty }$ ) returns $+\mathrm{\infty }$ .

###### Description

Calculate the base 10 logarithm of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double log1p ( double  x )
Calculate the value of $lo{g}_{e}\left(1+x\right)$ .
###### Returns

• log1p( $±0$ ) returns $±0$ .
• log1p(-1) returns $-\mathrm{\infty }$ .
• log1p(x) returns NaN for x < -1.
• log1p( $+\mathrm{\infty }$ ) returns $+\mathrm{\infty }$ .

###### Description

Calculate the value of $lo{g}_{e}\left(1+x\right)$ of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double log2 ( double  x )
Calculate the base 2 logarithm of the input argument.
###### Returns

• log2( $±0$ ) returns $-\mathrm{\infty }$ .
• log2(1) returns +0.
• log2(x) returns NaN for x < 0.
• log2( $+\mathrm{\infty }$ ) returns $+\mathrm{\infty }$ .

###### Description

Calculate the base 2 logarithm of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double logb ( double  x )
Calculate the floating point representation of the exponent of the input argument.
###### Returns

• logb $±0$ returns $-\mathrm{\infty }$
• logb $±\mathrm{\infty }$ returns $+\mathrm{\infty }$

###### Description

Calculate the floating point representation of the exponent of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ long int lrint ( double  x )
Round input to nearest integer value.
###### Returns

Returns rounded integer value.

###### Description

Round 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 result is undefined.

__device__ ​ long int lround ( double  x )
Round to nearest integer value.
###### Returns

Returns rounded integer value.

###### Description

Round 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 result is undefined.

Note:

This function may be slower than alternate rounding methods. See lrint().

__device__ ​ double max ( double  a, float  b )
Calculate the maximum value of the input double and float arguments.
###### Description

Convert float argument b to double, followed by fmax().

Note, this is different from std:: specification

__device__ ​ double max ( float  a, double  b )
Calculate the maximum value of the input float and double arguments.
###### Description

Convert float argument a to double, followed by fmax().

Note, this is different from std:: specification

__device__ ​ double max ( double  a, double  b )
Calculate the maximum value of the input float arguments.
###### Description

Calculate the maximum value of the arguments a and b. Behavior is equivalent to fmax() function.

Note, this is different from std:: specification

__device__ ​ double min ( double  a, float  b )
Calculate the minimum value of the input double and float arguments.
###### Description

Convert float argument b to double, followed by fmin().

Note, this is different from std:: specification

__device__ ​ double min ( float  a, double  b )
Calculate the minimum value of the input float and double arguments.
###### Description

Convert float argument a to double, followed by fmin().

Note, this is different from std:: specification

__device__ ​ double min ( double  a, double  b )
Calculate the minimum value of the input float arguments.
###### Description

Calculate the minimum value of the arguments a and b. Behavior is equivalent to fmin() function.

Note, this is different from std:: specification

__device__ ​ double modf ( double  x, double* iptr )
Break down the input argument into fractional and integral parts.
###### Returns

• modf( $±x$ , iptr) returns a result with the same sign as x.
• modf( $±\mathrm{\infty }$ , iptr) returns $±0$ and stores $±\mathrm{\infty }$ in the object pointed to by iptr.
• modf(NaN, iptr) stores a NaN in the object pointed to by iptr and returns a NaN.

###### Description

Break down the argument x into fractional and integral parts. The integral part is stored in the argument iptr. Fractional and integral parts are given the same sign as the argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double nan ( const char* tagp )
Returns "Not a Number" value.
###### Returns

• nan(tagp) returns NaN.

###### Description

Return a representation of a quiet NaN. Argument tagp selects one of the possible representations.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double nearbyint ( double  x )
Round the input argument to the nearest integer.
###### Returns

• nearbyint( $±0$ ) returns $±0$ .
• nearbyint( $±\mathrm{\infty }$ ) returns $±\mathrm{\infty }$ .

###### Description

Round argument x to an integer value in double precision floating-point format.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double nextafter ( double  x, double  y )
Return next representable double-precision floating-point value after argument x in the direction of y.
###### Returns

• nextafter(x, y) = y if x equals y
• nextafter(x, y) = NaN if either x or y are NaN

###### Description

Calculate the next representable double-precision floating-point value following x in the direction of y. For example, if y is greater than x, nextafter() returns the smallest representable number greater than x

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double norm ( int  dim, const double* t )
Calculate the square root of the sum of squares of any number of coordinates.
###### Returns

Returns the length of the dim-D vector $\sqrt{{\mathrm{p.1}}^{2}+{\mathrm{p.2}}^{2}+ ... +{\mathrm{p.dim}}^{2}}$ . If the correct value would overflow, returns $+\mathrm{\infty }$ . If the correct value would underflow, returns 0. If two of the input arguments is 0, returns remaining argument

###### Description

Calculate the length of a vector p, dimension of which is passed as an argument without undue overflow or underflow.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double norm3d ( double  a, double  b, double  c )
Calculate the square root of the sum of squares of three coordinates of the argument.
###### Returns

Returns the length of 3D vector $\sqrt{{\mathrm{p.x}}^{2}+{\mathrm{p.y}}^{2}+{\mathrm{p.z}}^{2}}$ . If the correct value would overflow, returns $+\mathrm{\infty }$ . If the correct value would underflow, returns 0.

###### Description

Calculate the length of three dimensional vector p in euclidean space without undue overflow or underflow.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double norm4d ( double  a, double  b, double  c, double  d )
Calculate the square root of the sum of squares of four coordinates of the argument.
###### Returns

Returns the length of 4D vector $\sqrt{{\mathrm{p.x}}^{2}+{\mathrm{p.y}}^{2}+{\mathrm{p.z}}^{2}+{\mathrm{p.t}}^{2}}$ . If the correct value would overflow, returns $+\mathrm{\infty }$ . If the correct value would underflow, returns 0.

###### Description

Calculate the length of four dimensional vector p in euclidean space without undue overflow or underflow.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double normcdf ( double  y )
Calculate the standard normal cumulative distribution function.
###### Returns

• normcdf( $+\mathrm{\infty }$ ) returns 1
• normcdf( $-\mathrm{\infty }$ ) returns +0

###### Description

Calculate the cumulative distribution function of the standard normal distribution for input argument y, $\mathrm{\Phi }\left(y\right)$ .

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double normcdfinv ( double  y )
Calculate the inverse of the standard normal cumulative distribution function.
###### Returns

• normcdfinv(0) returns $-\mathrm{\infty }$ .
• normcdfinv(1) returns $+\mathrm{\infty }$ .
• normcdfinv(x) returns NaN if x is not in the interval [0,1].

###### Description

Calculate the inverse of the standard normal cumulative distribution function for input argument y, ${\mathrm{\Phi }}^{-1}\left(y\right)$ . The function is defined for input values in the interval $\left(0,1\right)$ .

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double pow ( double  x, double  y )
Calculate the value of first argument to the power of second argument.
###### Returns

• pow( $±0$ , y) returns $±\mathrm{\infty }$ for y an integer less than 0.
• pow( $±0$ , y) returns $±0$ for y an odd integer greater than 0.
• pow( $±0$ , y) returns +0 for y > 0 and not and odd integer.
• pow(-1, $±\mathrm{\infty }$ ) returns 1.
• pow(+1, y) returns 1 for any y, even a NaN.
• pow(x, $±0$ ) returns 1 for any x, even a NaN.
• pow(x, y) returns a NaN for finite x < 0 and finite non-integer y.
• pow(x, $-\mathrm{\infty }$ ) returns $+\mathrm{\infty }$ for $|x|<1$ .
• pow(x, $-\mathrm{\infty }$ ) returns +0 for $|x|>1$ .
• pow(x, $+\mathrm{\infty }$ ) returns +0 for $|x|<1$ .
• pow(x, $+\mathrm{\infty }$ ) returns $+\mathrm{\infty }$ for $|x|>1$ .
• pow( $-\mathrm{\infty }$ , y) returns -0 for y an odd integer less than 0.
• pow( $-\mathrm{\infty }$ , y) returns +0 for y < 0 and not an odd integer.
• pow( $-\mathrm{\infty }$ , y) returns $-\mathrm{\infty }$ for y an odd integer greater than 0.
• pow( $-\mathrm{\infty }$ , y) returns $+\mathrm{\infty }$ for y > 0 and not an odd integer.
• pow( $+\mathrm{\infty }$ , y) returns +0 for y < 0.
• pow( $+\mathrm{\infty }$ , y) returns $+\mathrm{\infty }$ for y > 0.

###### Description

Calculate the value of x to the power of y

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double rcbrt ( double  x )
Calculate reciprocal cube root function.
###### Returns

• rcbrt( $±0$ ) returns $±\mathrm{\infty }$ .
• rcbrt( $±\mathrm{\infty }$ ) returns $±0$ .

###### Description

Calculate reciprocal cube root function of x

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double remainder ( double  x, double  y )
Compute double-precision floating-point remainder.
###### Returns

• remainder(x, 0) returns NaN.
• remainder( $±\mathrm{\infty }$ , y) returns NaN.
• remainder(x, $±\mathrm{\infty }$ ) returns x for finite x.

###### Description

Compute double-precision floating-point remainder r of dividing x by y for nonzero y. Thus $r=x-ny$ . The value n is the integer value nearest $\frac{x}{y}$ . In the case when $|n-\frac{x}{y}|=\frac{1}{2}$ , the even n value is chosen.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double remquo ( double  x, double  y, int* quo )
Compute double-precision floating-point remainder and part of quotient.
###### Returns

Returns the remainder.

• remquo(x, 0, quo) returns NaN.
• remquo( $±\mathrm{\infty }$ , y, quo) returns NaN.
• remquo(x, $±\mathrm{\infty }$ , quo) returns x.

###### Description

Compute a double-precision floating-point remainder in the same way as the remainder() function. Argument quo returns part of quotient upon division of x by y. Value quo has the same sign as $\frac{x}{y}$ and may not be the exact quotient but agrees with the exact quotient in the low order 3 bits.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double rhypot ( double  x, double  y )
Calculate one over the square root of the sum of squares of two arguments.
###### Returns

Returns one over the length of the hypotenuse $\frac{1}{\sqrt{{x}^{2}+{y}^{2}}}$ . If the square root would overflow, returns 0. If the square root would underflow, returns $+\mathrm{\infty }$ .

###### Description

Calculate one over the length of the hypotenuse of a right triangle whose two sides have lengths x and y without undue overflow or underflow.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double rint ( double  x )
Round to nearest integer value in floating-point.
###### Returns

Returns rounded integer value.

###### Description

Round x to the nearest integer value in floating-point format, with halfway cases rounded to the nearest even integer value.

__device__ ​ double rnorm ( int  dim, const double* t )
Calculate the reciprocal of square root of the sum of squares of any number of coordinates.
###### Returns

Returns one over the length of the vector $\frac{1}{\sqrt{{\mathrm{p.1}}^{2}+{\mathrm{p.2}}^{2}+ ... +{\mathrm{p.dim}}^{2}}}$ . If the square root would overflow, returns 0. If the square root would underflow, returns $+\mathrm{\infty }$ .

###### Description

Calculates one over the length of vector p, dimension of which is passed as an argument, in euclidean space without undue overflow or underflow.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double rnorm3d ( double  a, double  b, double  c )
Calculate one over the square root of the sum of squares of three coordinates of the argument.
###### Returns

Returns one over the length of the 3D vetor $\frac{1}{\sqrt{{\mathrm{p.x}}^{2}+{\mathrm{p.y}}^{2}+{\mathrm{p.z}}^{2}}}$ . If the square root would overflow, returns 0. If the square root would underflow, returns $+\mathrm{\infty }$ .

###### Description

Calculate one over the length of three dimensional vector p in euclidean space undue overflow or underflow.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double rnorm4d ( double  a, double  b, double  c, double  d )
Calculate one over the square root of the sum of squares of four coordinates of the argument.
###### Returns

Returns one over the length of the 3D vetor $\frac{1}{\sqrt{{\mathrm{p.x}}^{2}+{\mathrm{p.y}}^{2}+{\mathrm{p.z}}^{2}+{\mathrm{p.t}}^{2}}}$ . If the square root would overflow, returns 0. If the square root would underflow, returns $+\mathrm{\infty }$ .

###### Description

Calculate one over the length of four dimensional vector p in euclidean space undue overflow or underflow.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double round ( double  x )
Round to nearest integer value in floating-point.
###### Returns

Returns rounded integer value.

###### Description

Round x to the nearest integer value in floating-point format, with halfway cases rounded away from zero.

Note:

This function may be slower than alternate rounding methods. See rint().

__device__ ​ double rsqrt ( double  x )
Calculate the reciprocal of the square root of the input argument.
###### Returns

Returns $1/\sqrt{x}$ .

• rsqrt( $+\mathrm{\infty }$ ) returns +0.
• rsqrt( $±0$ ) returns $±\mathrm{\infty }$ .
• rsqrt(x) returns NaN if x is less than 0.

###### Description

Calculate the reciprocal of the nonnegative square root of x, $1/\sqrt{x}$ .

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double scalbln ( double  x, long int  n )
Scale floating-point input by integer power of two.
###### Returns

Returns x * ${2}^{n}$ .

• scalbln( $±0$ , n) returns $±0$ .
• scalbln(x, 0) returns x.
• scalbln( $±\mathrm{\infty }$ , n) returns $±\mathrm{\infty }$ .

###### Description

Scale x by ${2}^{n}$ by efficient manipulation of the floating-point exponent.

__device__ ​ double scalbn ( double  x, int  n )
Scale floating-point input by integer power of two.
###### Returns

Returns x * ${2}^{n}$ .

• scalbn( $±0$ , n) returns $±0$ .
• scalbn(x, 0) returns x.
• scalbn( $±\mathrm{\infty }$ , n) returns $±\mathrm{\infty }$ .

###### Description

Scale x by ${2}^{n}$ by efficient manipulation of the floating-point exponent.

__device__ ​ __RETURN_TYPE signbit ( double  a )
Return the sign bit of the input.
###### Returns

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 a is negative.
• With other host compilers: __RETURN_TYPE is 'int'. Returns a nonzero value if and only if a is negative.

###### Description

Determine whether the floating-point value a is negative.

__device__ ​ double sin ( double  x )
Calculate the sine of the input argument.
###### Returns

• sin( $±0$ ) returns $±0$ .
• sin( $±\mathrm{\infty }$ ) returns NaN.

###### Description

Calculate the sine of the input argument x (measured in radians).

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ void sincos ( double  x, double* sptr, double* cptr )
Calculate the sine and cosine of the first input argument.

• none

###### Description

Calculate the sine and cosine of the first input argument x (measured in radians). The results for sine and cosine are written into the second argument, sptr, and, respectively, third argument, cptr.

sin() and cos().

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ void sincospi ( double  x, double* sptr, double* cptr )
Calculate the sine and cosine of the first input argument $×\pi$ .

• none

###### Description

Calculate the sine and cosine of the first input argument, x (measured in radians), $×\pi$ . The results for sine and cosine are written into the second argument, sptr, and, respectively, third argument, cptr.

sinpi() and cospi().

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double sinh ( double  x )
Calculate the hyperbolic sine of the input argument.
###### Returns

• sinh( $±0$ ) returns $±0$ .
• sinh( $±\mathrm{\infty }$ ) returns $±\mathrm{\infty }$ .

###### Description

Calculate the hyperbolic sine of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double sinpi ( double  x )
Calculate the sine of the input argument $×\pi$ .
###### Returns

• sinpi( $±0$ ) returns $±0$ .
• sinpi( $±\mathrm{\infty }$ ) returns NaN.

###### Description

Calculate the sine of x$×\pi$ (measured in radians), where x is the input argument.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double sqrt ( double  x )
Calculate the square root of the input argument.
###### Returns

Returns $\sqrt{x}$ .

• sqrt( $±0$ ) returns $±0$ .
• sqrt( $+\mathrm{\infty }$ ) returns $+\mathrm{\infty }$ .
• sqrt(x) returns NaN if x is less than 0.

###### Description

Calculate the nonnegative square root of x, $\sqrt{x}$ .

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double tan ( double  x )
Calculate the tangent of the input argument.
###### Returns

• tan( $±0$ ) returns $±0$ .
• tan( $±\mathrm{\infty }$ ) returns NaN.

###### Description

Calculate the tangent of the input argument x (measured in radians).

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double tanh ( double  x )
Calculate the hyperbolic tangent of the input argument.
###### Returns

• tanh( $±0$ ) returns $±0$ .

###### Description

Calculate the hyperbolic tangent of the input argument x.

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double tgamma ( double  x )
Calculate the gamma function of the input argument.
###### Returns

• tgamma( $±0$ ) returns $±\mathrm{\infty }$ .
• tgamma(2) returns +1.
• tgamma(x) returns $±\mathrm{\infty }$ if the correctly calculated value is outside the double floating point range.
• tgamma(x) returns NaN if x < 0 and x is an integer.
• tgamma( $-\mathrm{\infty }$ ) returns NaN.
• tgamma( $+\mathrm{\infty }$ ) returns $+\mathrm{\infty }$ .

###### Description

Calculate the gamma function of the input argument x, namely the value of ${\int }_{0}^{\mathrm{\infty }}{e}^{-t}{t}^{x-1}dt$ .

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double trunc ( double  x )
Truncate input argument to the integral part.
###### Returns

Returns truncated integer value.

###### Description

Round x to the nearest integer value that does not exceed x in magnitude.

__device__ ​ double y0 ( double  x )
Calculate the value of the Bessel function of the second kind of order 0 for the input argument.
###### Returns

Returns the value of the Bessel function of the second kind of order 0.

• y0(0) returns $-\mathrm{\infty }$ .
• y0(x) returns NaN for x < 0.
• y0( $+\mathrm{\infty }$ ) returns +0.
• y0(NaN) returns NaN.

###### Description

Calculate the value of the Bessel function of the second kind of order 0 for the input argument x, ${Y}_{0}\left(x\right)$ .

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double y1 ( double  x )
Calculate the value of the Bessel function of the second kind of order 1 for the input argument.
###### Returns

Returns the value of the Bessel function of the second kind of order 1.

• y1(0) returns $-\mathrm{\infty }$ .
• y1(x) returns NaN for x < 0.
• y1( $+\mathrm{\infty }$ ) returns +0.
• y1(NaN) returns NaN.

###### Description

Calculate the value of the Bessel function of the second kind of order 1 for the input argument x, ${Y}_{1}\left(x\right)$ .

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.

__device__ ​ double yn ( int  n, double  x )
Calculate the value of the Bessel function of the second kind of order n for the input argument.
###### Returns

Returns the value of the Bessel function of the second kind of order n.

• yn(n, x) returns NaN for n < 0.
• yn(n, 0) returns $-\mathrm{\infty }$ .
• yn(n, x) returns NaN for x < 0.
• yn(n, $+\mathrm{\infty }$ ) returns +0.
• yn(n, NaN) returns NaN.

###### Description

Calculate the value of the Bessel function of the second kind of order n for the input argument x, ${Y}_{n}\left(x\right)$ .

Note:

For accuracy information for this function see the CUDA C++ Programming Guide, Appendix E.1, Table 7.