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)
-
计算
x和y之间的正差值。 - __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的符号是x和y符号的异或结果。__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)
-
计算
x和y之间的正差值。注意
有关精度信息,请参阅《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
-
参数
x和y中的最大数值。将NaN参数视为缺失数据。如果两个参数都是NaN,则返回NaN。
如果其中一个参数是NaN,则返回数值参数。
-
__device__ __float128 __nv_fp128_fmin(__float128 x, __float128 y)
-
确定参数的最小数值。
注意
有关精度信息,请参阅《CUDA C++编程指南》数学函数附录中的四精度浮点函数章节。
注意
FP128设备计算需要计算能力 >= 10.0。
- Returns
-
参数
x和y中的最小数值。将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的值,其中n是x/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和整数指数项n。m的绝对值将大于等于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_ILOGB0和FP_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的符号是x和y符号的异或。__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) 当x或y或两者都是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。