10. FP128 四精度数学函数

本节介绍四精度数学函数。

要使用这些函数,请在程序中包含头文件 device_fp128_functions.h

此处声明的函数带有__nv_fp128_前缀,用于与其他全局命名空间符号区分。

请注意,FP128 CUDA数学函数仅在主机编译器支持基本四精度数据类型__float128_Float128的平台上的设备程序中可用。

每个FP128 CUDA数学函数名称都被重载,以支持这些特定于主机编译器的类型(只要这些类型可用)。例如参见:

#ifdef __FLOAT128_CPP_SPELLING_ENABLED__
    __float128 __nv_fp128_sqrt(__float128 x);
#endif
#ifdef __FLOAT128_C_SPELLING_ENABLED__
    _Float128 __nv_fp128_sqrt(_Float128 x);
#endif

注意

FP128设备计算需要计算能力 >= 10.0。

Functions

__device__ __float128 __nv_fp128_acos(__float128 x)

计算 \(\cos^{-1}{x}\),即输入参数的反余弦值。

__device__ __float128 __nv_fp128_acosh(__float128 x)

计算 \(\cosh^{-1}{x}\),即输入参数的非负反双曲余弦值。

__device__ __float128 __nv_fp128_add(__float128 x, __float128 y)

计算\(x + y\),即两个浮点输入在使用最近偶数舍入模式下的和。

__device__ __float128 __nv_fp128_asin(__float128 x)

计算 \(\sin^{-1}{x}\),即输入参数的反正弦值。

__device__ __float128 __nv_fp128_asinh(__float128 x)

计算 \(\sinh^{-1}{x}\),即输入参数的反双曲正弦值。

__device__ __float128 __nv_fp128_atan(__float128 x)

计算 \(\tan^{-1}{x}\),即输入参数的反正切值。

__device__ __float128 __nv_fp128_atanh(__float128 x)

计算 \(\tanh^{-1}{x}\),即输入参数的反双曲正切值。

__device__ __float128 __nv_fp128_ceil(__float128 x)

计算 \(\lceil x \rceil\),即大于或等于 x 的最小整数。

__device__ __float128 __nv_fp128_copysign(__float128 x, __float128 y)

创建一个值,其大小为第一个参数x,符号为第二个参数y

__device__ __float128 __nv_fp128_cos(__float128 x)

计算 \(\cos{x}\),即输入参数(以弧度为单位)的余弦值。

__device__ __float128 __nv_fp128_cosh(__float128 x)

计算输入参数的双曲余弦值 \(\cosh{x}\)

__device__ __float128 __nv_fp128_div(__float128 x, __float128 y)

计算 \(\frac{x}{y}\),即两个浮点输入在最近偶数舍入模式下的商值。

__device__ __float128 __nv_fp128_exp(__float128 x)

计算输入参数的以\(e\)为底的指数函数\(e^x\)

__device__ __float128 __nv_fp128_exp10(__float128 x)

计算 \(10^x\),即输入参数的以10为底的指数函数。

__device__ __float128 __nv_fp128_exp2(__float128 x)

计算 \(2^x\),即输入参数的以2为底的指数函数。

__device__ __float128 __nv_fp128_expm1(__float128 x)

计算 \(e^x - 1\),即输入参数的以e为底的指数值减1。

__device__ __float128 __nv_fp128_fabs(__float128 x)

计算 \(|x|\),即输入参数的绝对值。

__device__ __float128 __nv_fp128_fdim(__float128 x, __float128 y)

计算 xy 之间的正差值。

__device__ __float128 __nv_fp128_floor(__float128 x)

计算 \(\lfloor x \rfloor\),即小于或等于 x 的最大整数。

__device__ __float128 __nv_fp128_fma(__float128 x, __float128 y, __float128 c)

使用四舍五入到最近偶数舍入模式,将\(x \times y + z\)作为单一运算进行计算。

__device__ __float128 __nv_fp128_fmax(__float128 x, __float128 y)

确定参数中的最大数值。

__device__ __float128 __nv_fp128_fmin(__float128 x, __float128 y)

确定参数中的最小数值。

__device__ __float128 __nv_fp128_fmod(__float128 x, __float128 y)

计算 x / y 的浮点余数。

__device__ __float128 __nv_fp128_frexp(__float128 x, int *nptr)

提取浮点输入参数的尾数和指数。

__device__ __float128 __nv_fp128_hypot(__float128 x, __float128 y)

计算 \(\sqrt{x^2+y^2}\),即两个参数平方和的平方根。

__device__ int __nv_fp128_ilogb(__float128 x)

计算输入参数的无偏整数指数。

__device__ int __nv_fp128_isnan(__float128 x)

判断输入参数是否为NaN。

__device__ int __nv_fp128_isunordered(__float128 x, __float128 y)

判断输入对是否是无序的。

__device__ __float128 __nv_fp128_ldexp(__float128 x, int exp)

计算 \(x\cdot 2^{exp}\) 的值。

__device__ __float128 __nv_fp128_log(__float128 x)

计算 \(\log_{e}{x}\),即输入参数以\(e\)为底的对数值。

__device__ __float128 __nv_fp128_log10(__float128 x)

计算 \(\log_{10}{x}\),即输入参数的以10为底的对数。

__device__ __float128 __nv_fp128_log1p(__float128 x)

计算 \(\log_{e}(1+x)\) 的值。

__device__ __float128 __nv_fp128_log2(__float128 x)

计算 \(\log_{2}{x}\),即输入参数的以2为底的对数。

__device__ __float128 __nv_fp128_modf(__float128 x, __float128 *iptr)

将输入参数分解为小数部分和整数部分。

__device__ __float128 __nv_fp128_mul(__float128 x, __float128 y)

计算\(x \cdot y\),即两个浮点输入在使用最近偶数舍入模式下的乘积。

__device__ __float128 __nv_fp128_pow(__float128 x, __float128 y)

计算 \(x^{y}\) 的值,即第一个参数的第二个参数次方。

__device__ __float128 __nv_fp128_remainder(__float128 x, __float128 y)

计算浮点数余数函数。

__device__ __float128 __nv_fp128_rint(__float128 x)

将浮点数四舍五入到最接近的整数值,中间值情况向最接近的偶数整数值舍入。

__device__ __float128 __nv_fp128_round(__float128 x)

将浮点数四舍五入到最接近的整数值,中间值(0.5)的情况远离零方向舍入。

__device__ __float128 __nv_fp128_sin(__float128 x)

计算 \(\sin{x}\),即输入参数的正弦值(以弧度为单位)。

__device__ __float128 __nv_fp128_sinh(__float128 x)

计算 \(\sinh{x}\),即输入参数的双曲正弦值。

__device__ __float128 __nv_fp128_sqrt(__float128 x)

计算 \(\sqrt{x}\),即输入参数的平方根。

__device__ __float128 __nv_fp128_sub(__float128 x, __float128 y)

计算\(x - y\),即两个浮点输入在使用最近偶数舍入模式下的差值。

__device__ __float128 __nv_fp128_tan(__float128 x)

计算 \(\tan{x}\),即输入参数的正切值(以弧度为单位)。

__device__ __float128 __nv_fp128_tanh(__float128 x)

计算 \(\tanh{x}\),即输入参数的双曲正切值。

__device__ __float128 __nv_fp128_trunc(__float128 x)

将输入参数截断为整数部分。

10.1. 函数

__device__ __float128 __nv_fp128_acos(__float128 x)

计算 \( \cos^{-1}{x} \),即输入参数的反余弦值。

注意

有关精度信息,请参阅《CUDA C++编程指南》的数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

输入参数x的反余弦主值。结果将以弧度表示,当x在[-1, +1]区间内时,结果范围在[0, \( \pi \)]之间。

  • __nv_fp128_acos(1) 返回 +0。

  • x超出[-1, +1]范围时,__nv_fp128_acos(x)返回NaN。

  • __nv_fp128_acos(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_acosh(__float128 x)

计算 \( \cosh^{-1}{x} \),即输入参数的非负反双曲余弦值。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数部分。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

结果将在区间 [0, \( +\infty \) ] 内。

  • __nv_fp128_acosh(1) 返回 0。

  • __nv_fp128_acosh(x) 当 x 处于区间 [ \( -\infty \) , 1) 时返回 NaN。

  • __nv_fp128_acosh( \( +\infty \) ) 返回 \( +\infty \)

  • __nv_fp128_acosh(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_add(__float128 x, __float128 y)

计算\( x + y \),即使用最近偶数舍入模式求两个浮点输入的和。

注意

有关精度信息,请参阅《CUDA C++编程指南》的数学函数附录中的四精度浮点函数部分。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

返回 x + y

  • __nv_fp128_add(x, y) 等价于 __nv_fp128_add(y, x)。

  • __nv_fp128_add(x, \( \pm\infty \)) 对于有限值 x 返回 \( \pm\infty \)

  • __nv_fp128_add( \( \pm\infty \), \( \pm\infty \)) 返回 \( \pm\infty \)

  • __nv_fp128_add( \( \pm\infty \), \( \mp\infty \)) 返回 NaN。

  • __nv_fp128_add( \( \pm 0 \), \( \pm 0 \)) 返回 \( \pm 0 \)

  • __nv_fp128_add(x, -x) 对于有限值 x 返回 \( +0 \),包括 \( \pm 0 \)

  • 如果任一参数为NaN,则返回NaN。

__device__ __float128 __nv_fp128_asin(__float128 x)

计算 \( \sin^{-1}{x} \),即输入参数的反正弦值。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

输入参数x的反正弦主值。结果将以弧度表示,当x在[-1, +1]区间内时,结果位于[- \( \pi/2 \) , + \( \pi/2 \) ]区间。

  • __nv_fp128_asin( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • x超出[-1, +1]范围时,__nv_fp128_asin(x)返回NaN。

  • __nv_fp128_asin(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_asinh(__float128 x)

计算 \( \sinh^{-1}{x} \),即输入参数的反双曲正弦值。

注意

有关精度信息,请参阅《CUDA C++编程指南》的数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_asinh( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • __nv_fp128_asinh( \( \pm \infty \) ) 返回 \( \pm \infty \)

  • __nv_fp128_asinh(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_atan(__float128 x)

计算 \( \tan^{-1}{x} \),即输入参数的反正切值。

注意

有关精度信息,请参阅《CUDA C++编程指南》的数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

输入参数x的反正切主值。结果将以弧度表示,范围在[- \( \pi/2 \) , + \( \pi/2 \) ]区间内。

  • __nv_fp128_atan( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • __nv_fp128_atan( \( \pm \infty \) ) 返回 \( \pm \pi \) /2。

  • __nv_fp128_atan(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_atanh(__float128 x)

计算 \( \tanh^{-1}{x} \),即输入参数的反双曲正切值。

注意

有关精度信息,请参阅《CUDA C++编程指南》的数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_atanh( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • __nv_fp128_atanh( \( \pm 1 \) ) 返回 \( \pm \infty \)

  • __nv_fp128_atanh(x) 当 x 超出区间 [-1, 1] 时返回 NaN。

  • __nv_fp128_atanh(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_ceil(__float128 x)

计算 \( \lceil x \rceil \),即大于或等于 x 的最小整数。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数部分。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

\( \lceil x \rceil \) 表示为浮点数。

  • __nv_fp128_ceil( \( \pm \infty \) ) 返回 \( \pm \infty \)

  • __nv_fp128_ceil( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • __nv_fp128_ceil(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_copysign(__float128 x, __float128 y)

创建一个值,其大小为第一个参数x的绝对值,符号与第二个参数y相同。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数部分。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • copysign(NaN, y) 返回一个带有y符号的NaN

__device__ __float128 __nv_fp128_cos(__float128 x)

计算 \( \cos{x} \),即输入参数(以弧度为单位)的余弦值。

注意

有关精度信息,请参阅《CUDA C++编程指南》的数学函数附录中的四精度浮点函数部分。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

\( \cos{x} \).

  • __nv_fp128_cos( \( \pm 0 \) ) 返回 \( 1 \)

  • __nv_fp128_cos( \( \pm \infty \) ) 返回 NaN。

  • __nv_fp128_cos(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_cosh(__float128 x)

计算输入参数的双曲余弦值 \( \cosh{x} \)

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_cosh( \( \pm 0 \) ) 返回 1。

  • __nv_fp128_cosh( \( \pm \infty \) ) 返回 \( +\infty \)

  • __nv_fp128_cosh(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_div(__float128 x, __float128 y)

计算 \( \frac{x}{y} \),即两个浮点输入在使用舍入到最近偶数模式下的商。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • 当输入和结果都不是NaN时,商数x / y的符号是xy符号的异或结果。

  • __nv_fp128_div( \( \pm 0 \), \( \pm 0 \)) 返回 NaN。

  • __nv_fp128_div( \( \pm\infty \), \( \pm\infty \)) 返回 NaN。

  • __nv_fp128_div(x, \( \pm\infty \)) 对于有限值的 x 返回具有适当符号的 \( 0 \)

  • __nv_fp128_div( \( \pm\infty \), y) 对于有限值 y 返回具有相应符号的 \( \infty \)

  • __nv_fp128_div(x, \( \pm 0 \)) 对于非零的 x 返回适当符号的 \( \infty \)

  • __nv_fp128_div( \( \pm 0 \), y) 当 y \( \neq 0 \) 时返回适当符号的 \( 0 \)

  • 如果任一参数为NaN,则返回NaN。

__device__ __float128 __nv_fp128_exp(__float128 x)

计算输入参数的以\( e \)为底的指数函数\( e^x \)

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_exp( \( \pm 0 \) ) 返回1。

  • __nv_fp128_exp( \( -\infty \) ) 返回 +0。

  • __nv_fp128_exp( \( +\infty \) ) 返回 \( +\infty \)

  • __nv_fp128_exp(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_exp10(__float128 x)

计算输入参数的以10为底的指数 \( 10^x \)

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_exp10( \( \pm 0 \) ) 返回1。

  • __nv_fp128_exp10( \( -\infty \) ) 返回 +0。

  • __nv_fp128_exp10( \( +\infty \) ) 返回 \( +\infty \)

  • __nv_fp128_exp10(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_exp2(__float128 x)

计算 \( 2^x \),即输入参数的以2为底的指数函数。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_exp2( \( \pm 0 \) ) 返回 1。

  • ex__nv_fp128_exp2p2f( \( -\infty \) ) 返回 +0。

  • __nv_fp128_exp2( \( +\infty \) ) 返回 \( +\infty \)

  • __nv_fp128_exp2(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_expm1(__float128 x)

计算 \( e^x - 1 \),即输入参数以e为底的指数值减1。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_expm1( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • __nv_fp128_expm1( \( -\infty \) ) 返回 -1。

  • __nv_fp128_expm1( \( +\infty \) ) 返回 \( +\infty \)

  • __nv_fp128_expm1(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_fabs(__float128 x)

计算 \( |x| \),即输入参数的绝对值。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_fabs( \( \pm \infty \) ) 返回 \( +\infty \)

  • __nv_fp128_fabs( \( \pm 0 \) ) 返回 +0。

  • __nv_fp128_fabs(NaN) 返回一个未指定的NaN值。

__device__ __float128 __nv_fp128_fdim(__float128 x, __float128 y)

计算 xy 之间的正差值。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_fdim(x, y) 当 \( x > y \) 时返回 x - y

  • __nv_fp128_fdim(x, y) 当 \( x \leq y \) 时返回 +0。

  • 如果任一参数为NaN,则返回NaN。

__device__ __float128 __nv_fp128_floor(__float128 x)

计算 \( \lfloor x \rfloor \),即小于或等于 x 的最大整数。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

\( \lfloor x \rfloor \) 以浮点数形式表示。

  • __nv_fp128_floor( \( \pm \infty \) ) 返回 \( \pm \infty \)

  • __nv_fp128_floor( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • __nv_fp128_floor(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_fma(__float128 x, __float128 y, __float128 c)

使用四舍五入到最近偶数舍入模式,将\( x \times y + z \)作为单一运算进行计算。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

\( x \times y + z \) 的值作为一个三元运算,使用四舍五入到最近偶数(round-to-nearest, ties-to-even)舍入模式进行一次舍入。

  • __nv_fp128_fma( \( \pm \infty \) , \( \pm 0 \) , z) 返回 NaN。

  • __nv_fp128_fma( \( \pm 0 \) , \( \pm \infty \) , z) 返回NaN。

  • __nv_fp128_fma(x, y, \( -\infty \) ) 当 \( x \times y \) 是精确的 \( +\infty \) 时返回 NaN。

  • __nv_fp128_fma(x, y, \( +\infty \) ) 当 \( x \times y \) 是精确的 \( -\infty \) 时返回 NaN。

  • __nv_fp128_fma(x, y, \( \pm 0 \)) 如果 \( x \times y \) 是精确的 \( \pm 0 \),则返回 \( \pm 0 \)

  • __nv_fp128_fma(x, y, \( \mp 0 \)) 当 \( x \times y \) 精确等于 \( \pm 0 \) 时返回 \( +0 \)

  • __nv_fp128_fma(x, y, z) 当\( x \times y + z \)精确等于零且\( z \neq 0 \)时返回\( +0 \)

  • 如果任一参数为NaN,则返回NaN。

__device__ __float128 __nv_fp128_fmax(__float128 x, __float128 y)

确定参数的最大数值。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

参数xy中的最大数值。将NaN参数视为缺失数据。

  • 如果两个参数都是NaN,则返回NaN。

  • 如果其中一个参数是NaN,则返回数值参数。

__device__ __float128 __nv_fp128_fmin(__float128 x, __float128 y)

确定参数的最小数值。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

参数xy中的最小数值。将NaN参数视为缺失数据。

  • 如果两个参数都是NaN,则返回NaN。

  • 如果其中一个参数是NaN,则返回数值参数。

__device__ __float128 __nv_fp128_fmod(__float128 x, __float128 y)

计算 x / y 的浮点余数。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

该函数计算的除法运算x / y的浮点余数精确等于x - n*y的值,其中nx / y截断小数部分后的结果。

  • 计算结果将与x同号,且其绝对值将小于y的绝对值。

  • __nv_fp128_fmod( \( \pm 0 \) , y) 当 y 不为零时返回 \( \pm 0 \)

  • __nv_fp128_fmod(x, \( \pm \infty \) ) 如果x是有限值,则返回x

  • __nv_fp128_fmod(x, y) 当 x\( \pm\infty \)y 为零时返回 NaN。

  • 如果任一参数为NaN,则返回NaN。

__device__ __float128 __nv_fp128_frexp(__float128 x, int *nptr)

提取浮点输入参数的尾数和指数。

将浮点值x分解为归一化小数部分m和整数指数项nm的绝对值将大于等于0.5且小于1.0,或者等于0;\( x = m\cdot 2^n \)。整数指数n将被存储到nptr指针所指向的内存位置。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

小数部分 m

  • __nv_fp128_frexp( \( \pm 0 \) , nptr) 返回 \( \pm 0 \) 并在 nptr 指向的位置存储零值。

  • __nv_fp128_frexp( \( \pm \infty \) , nptr) 返回 \( \pm \infty \) 并在 nptr 指向的位置存储一个未指定的值。

  • __nv_fp128_frexp(NaN, y) 返回一个NaN,并在nptr指向的位置存储一个未指定的值。

__device__ __float128 __nv_fp128_hypot(__float128 x, __float128 y)

计算 \( \sqrt{x^2+y^2} \),即两个参数平方和的平方根。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

直角三角形斜边的长度,其两条边的长度分别为 \( |x| \)\( |y| \),且不会出现过度溢出或下溢。

  • __nv_fp128_hypot(x,y)、__nv_fp128_hypot(y,x) 和 __nv_fp128_hypot(x, -y) 是等价的。

  • __nv_fp128_hypot(x, \( \pm 0 \) ) 等价于 __nv_fp128_fabs(x)。

  • __nv_fp128_hypot( \( \pm \infty \) ,y) 返回 \( +\infty \),即使 y 是一个 NaN。

  • y不是\( \pm\infty \)时,__nv_fp128_hypot(NaN, y)返回NaN。

__device__ int __nv_fp128_ilogb(__float128 x)

计算输入参数的无偏整数指数。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • 如果成功,返回参数的无偏指数。

  • __nv_fp128_ilogb( \( \pm 0 \) ) 返回 INT_MIN

  • __nv_fp128_ilogb(NaN) 返回 INT_MIN

  • __nv_fp128_ilogb( \( \pm \infty \) ) 返回 INT_MAX

  • 注意:上述行为未考虑FP_ILOGB0FP_ILOGBNAN

__device__ int __nv_fp128_isnan(__float128 x)

判断输入参数是否为NaN。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

当且仅当x为NaN值时返回非零值。

__device__ int __nv_fp128_isunordered(__float128 x, __float128 y)

判断输入对是否是无序的。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • 如果至少有一个输入值是NaN,则返回非零值。

  • 否则为零

__device__ __float128 __nv_fp128_ldexp(__float128 x, int exp)

计算 \( x\cdot 2^{exp} \) 的值。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_ldexp( \( \pm 0 \) , exp) 返回 \( \pm 0 \)

  • __nv_fp128_ldexp(x, 0) 返回 x

  • __nv_fp128_ldexp( \( \pm \infty \) , exp) 返回 \( \pm \infty \)

  • __nv_fp128_ldexp(NaN, exp) 返回 NaN。

__device__ __float128 __nv_fp128_log(__float128 x)

计算输入参数的以\( e \)为底的对数\( \log_{e}{x} \)

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_log( \( \pm 0 \) ) 返回 \( -\infty \)

  • __nv_fp128_log(1) 返回 +0。

  • __nv_fp128_log(x) 当 x < 0 时返回 NaN。

  • __nv_fp128_log( \( +\infty \) ) 返回 \( +\infty \)

  • __nv_fp128_log(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_log10(__float128 x)

计算 \( \log_{10}{x} \),即输入参数的以10为底的对数。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_log10( \( \pm 0 \) ) 返回 \( -\infty \)

  • __nv_fp128_log10(1) 返回 +0。

  • __nv_fp128_log10(x) 当 x < 0 时返回 NaN。

  • __nv_fp128_log10( \( +\infty \) ) 返回 \( +\infty \)

  • __nv_fp128_log10(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_log1p(__float128 x)

计算 \( \log_{e}(1+x) \) 的值。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_log1p( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • __nv_fp128_log1p(-1) 返回 \( -\infty \)

  • x < -1时,__nv_fp128_log1p函数返回NaN值。

  • __nv_fp128_log1p( \( +\infty \) ) 返回 \( +\infty \)

  • __nv_fp128_log1p(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_log2(__float128 x)

计算 \( \log_{2}{x} \),即输入参数的以2为底的对数。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_log2( \( \pm 0 \) ) 返回 \( -\infty \)

  • __nv_fp128_log2(1) 返回 +0。

  • __nv_fp128_log2(x) 当 x < 0 时返回 NaN。

  • __nv_fp128_log2( \( +\infty \) ) 返回 \( +\infty \)

  • __nv_fp128_log2(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_modf(__float128 x, __float128 *iptr)

将输入参数分解为小数部分和整数部分。

将参数 x 分解为小数部分和整数部分。整数部分以浮点格式存储在 iptr 指针指向的位置。小数部分和整数部分的符号与参数 x 相同。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_modf( \( \pm x \) , iptr) 返回一个与 x 符号相同的结果。

  • __nv_fp128_modf( \( \pm \infty \) , iptr) 返回 \( \pm 0 \) 并将 \( \pm \infty \) 存储到 iptr 所指向的对象中。

  • __nv_fp128_modf(NaN, iptr) 在iptr指向的对象中存储一个NaN并返回一个NaN。

__device__ __float128 __nv_fp128_mul(__float128 x, __float128 y)

计算\( x \cdot y \),即两个浮点输入在使用最近偶数舍入模式下的乘积。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

返回 x * y

  • 当输入和结果都不是NaN时,乘积x * y的符号是xy符号的异或。

  • __nv_fp128_mul(x, y) 等价于 __nv_fp128_mul(y, x)。

  • __nv_fp128_mul(x, \( \pm\infty \)) 当x \( \neq 0 \)时返回具有相应符号的\( \infty \)

  • __nv_fp128_mul( \( \pm 0 \), \( \pm\infty \)) 返回NaN。

  • __nv_fp128_mul( \( \pm 0 \), y) 对于有限的 y 返回具有适当符号的 \( 0 \)

  • 如果任一参数为NaN,则返回NaN。

__device__ __float128 __nv_fp128_pow(__float128 x, __float128 y)

计算 \( x^{y} \) 的值,第一个参数的第二个参数次幂。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_pow( \( \pm 0 \) , y) 当 y 为小于0的奇数时返回 \( \pm \infty \)

  • __nv_fp128_pow( \( \pm 0 \) , y) 当 y 小于0且不是奇数时返回 \( +\infty \)

  • __nv_fp128_pow( \( \pm 0 \) , y) 当 y 为大于0的奇数时返回 \( \pm 0 \)

  • __nv_fp128_pow( \( \pm 0 \) , y) 当 y > 0 且不是奇数时返回 +0。

  • __nv_fp128_pow(-1, \( \pm \infty \) ) 返回1。

  • __nv_fp128_pow(+1, y) 对于任意 y 都返回1,即使是一个NaN值。

  • __nv_fp128_pow(x, \( \pm 0 \) ) 对于任何x都返回1,即使是NaN。

  • __nv_fp128_pow(x, y) 对于有限负数 x 和有限非整数 y 返回 NaN。

  • __nv_fp128_pow(x, \( -\infty \) ) 当 \( | x | < 1 \) 时返回 \( +\infty \)

  • __nv_fp128_pow(x, \( -\infty \) ) 当 \( | x | > 1 \) 时返回 +0。

  • __nv_fp128_pow(x, \( +\infty \) ) 当 \( | x | < 1 \) 时返回 +0。

  • __nv_fp128_pow(x, \( +\infty \) ) 当 \( | x | > 1 \) 时返回 \( +\infty \)

  • __nv_fp128_pow( \( -\infty \) , y) 当 y 为小于0的奇数时返回-0。

  • y 小于 0 且不是奇数时,__nv_fp128_pow( \( -\infty \) , y) 返回 +0。

  • __nv_fp128_pow( \( -\infty \) , y) 当 y 为大于0的奇数时返回 \( -\infty \)

  • __nv_fp128_pow( \( -\infty \) , y) 当 y > 0 且不是奇数时返回 \( +\infty \)

  • __nv_fp128_pow( \( +\infty \) , y) 当 y < 0 时返回 +0。

  • __nv_fp128_pow( \( +\infty \) , y) 当 y > 0 时返回 \( +\infty \)

  • __nv_fp128_pow(x, y) 当xy或两者都是NaN且x \( \neq \) +1 且 y \( \neq\pm 0 \)时返回NaN。

__device__ __float128 __nv_fp128_remainder(__float128 x, __float128 y)

计算浮点余数函数。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

对于非零的y,浮点数取余运算r定义为x除以y的余数,计算公式为\( r = x - n y \)。其中n是最接近\( \frac{x}{y} \)的整数值。当出现中间情况\( | n -\frac{x}{y} | = \frac{1}{2} \)时,将选择偶数的n值。

  • __nv_fp128_remainder(x, \( \pm 0 \) ) 返回NaN。

  • __nv_fp128_remainder( \( \pm \infty \) , y) 返回 NaN。

  • __nv_fp128_remainder(x, \( \pm \infty \) ) 对于有限值 x 返回 x

  • 如果任一参数为NaN,则返回NaN。

__device__ __float128 __nv_fp128_rint(__float128 x)

将浮点数舍入到最接近的整数值,中间值情况舍入到最接近的偶数整数值。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_rint( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • __nv_fp128_rint( \( \pm \infty \) ) 返回 \( \pm \infty \)

  • __nv_fp128_rint(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_round(__float128 x)

将浮点数四舍五入到最接近的整数值,中间值(0.5)的情况远离零方向舍入。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_round( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • __nv_fp128_round( \( \pm \infty \) ) 返回 \( \pm \infty \)

  • __nv_fp128_round(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_sin(__float128 x)

计算 \( \sin{x} \),即输入参数的正弦值(以弧度为单位)。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

\( \sin{x} \).

  • __nv_fp128_sin( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • __nv_fp128_sin( \( \pm \infty \) ) 返回 NaN。

  • __nv_fp128_sin(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_sinh(__float128 x)

计算 \( \sinh{x} \),即输入参数的双曲正弦值。

计算 \( \sinh{x} \),即输入参数 x 的双曲正弦值。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_sinhinh( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • __nv_fp128_sinh( \( \pm \infty \) ) 返回 \( \pm \infty \)

  • __nv_fp128_sinh(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_sqrt(__float128 x)

计算输入参数的平方根 \( \sqrt{x} \)

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

\( \sqrt{x} \).

  • __nv_fp128_sqrt( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • __nv_fp128_sqrt( \( +\infty \) ) 返回 \( +\infty \)

  • 如果 x 小于 0,__nv_fp128_sqrt(x) 将返回 NaN。

  • __nv_fp128_sqrt(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_sub(__float128 x, __float128 y)

计算\( x - y \),即两个浮点输入在使用最近偶数舍入模式下的差值。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

返回 x 减去 y

  • __nv_fp128_sub( \( \pm\infty \), y) 对于有限的 y 返回 \( \pm\infty \)

  • 对于有限值x,__nv_fp128_sub(x, \( \pm\infty \)) 返回 \( \mp\infty \)

  • __nv_fp128_sub( \( \pm\infty \), \( \pm\infty \)) 返回 NaN。

  • __nv_fp128_sub( \( \pm\infty \), \( \mp\infty \)) 返回 \( \pm\infty \)

  • __nv_fp128_sub( \( \pm 0 \), \( \mp 0 \)) 返回 \( \pm 0 \)

  • __nv_fp128_sub(x, x) 对于有限值 x(包括 \( \pm 0 \))返回 \( +0 \)

  • 如果任一参数为NaN,则返回NaN。

__device__ __float128 __nv_fp128_tan(__float128 x)

计算 \( \tan{x} \),即输入参数的正切值(以弧度为单位)。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

\( \tan{x} \).

  • __nv_fp128_tan( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • __nv_fp128_tan( \( \pm \infty \) ) 返回 NaN。

  • __nv_fp128_tan(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_tanh(__float128 x)

计算输入参数的双曲正切值 \( \tanh{x} \)

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

  • __nv_fp128_tanh( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • __nv_fp128_tanh( \( \pm \infty \) ) 返回 \( \pm 1 \)

  • __nv_fp128_tanh(NaN) 返回 NaN。

__device__ __float128 __nv_fp128_trunc(__float128 x)

将输入参数截断为整数部分。

注意

有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。

注意

FP128设备计算需要计算能力 >= 10.0。

Returns

x四舍五入到最接近的浮点格式整数值,其绝对值不超过x

  • __nv_fp128_trunc( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • __nv_fp128_trunc( \( \pm \infty \) ) 返回 \( \pm \infty \)

  • __nv_fp128_trunc(NaN) 返回 NaN。