9. 双精度内置函数

本节介绍仅在设备代码中支持的双精度内置函数。

要使用这些函数,您无需在程序中包含任何额外的头文件。

Functions

__device__ double __dadd_rd(double x, double y)

以向下舍入模式添加两个浮点数值。

__device__ double __dadd_rn(double x, double y)

在四舍五入到最近偶数模式下将两个浮点数值相加。

__device__ double __dadd_ru(double x, double y)

在向上舍入模式下将两个浮点数值相加。

__device__ double __dadd_rz(double x, double y)

在向零舍入模式下将两个浮点值相加。

__device__ double __ddiv_rd(double x, double y)

以向下取整模式对两个浮点数值进行除法运算。

__device__ double __ddiv_rn(double x, double y)

以四舍五入到最接近偶数的模式对两个浮点值进行除法运算。

__device__ double __ddiv_ru(double x, double y)

以向上取整模式对两个浮点数值进行除法运算。

__device__ double __ddiv_rz(double x, double y)

以向零舍入模式对两个浮点值进行除法运算。

__device__ double __dmul_rd(double x, double y)

以向下舍入模式计算两个浮点数的乘积。

__device__ double __dmul_rn(double x, double y)

以四舍五入到最接近的偶数模式计算两个浮点数的乘积。

__device__ double __dmul_ru(double x, double y)

在向上舍入模式下将两个浮点数值相乘。

__device__ double __dmul_rz(double x, double y)

以向零舍入模式计算两个浮点数的乘积。

__device__ double __drcp_rd(double x)

以向下舍入模式计算 \(\frac{1}{x}\)

__device__ double __drcp_rn(double x)

以最近偶数舍入模式计算 \(\frac{1}{x}\)

__device__ double __drcp_ru(double x)

以向上舍入模式计算 \(\frac{1}{x}\)

__device__ double __drcp_rz(double x)

以向零舍入模式计算 \(\frac{1}{x}\)

__device__ double __dsqrt_rd(double x)

以向下取整模式计算 \(\sqrt{x}\)

__device__ double __dsqrt_rn(double x)

以四舍五入到最近偶数模式计算 \(\sqrt{x}\)

__device__ double __dsqrt_ru(double x)

以向上取整模式计算 \(\sqrt{x}\)

__device__ double __dsqrt_rz(double x)

以向零舍入模式计算 \(\sqrt{x}\)

__device__ double __dsub_rd(double x, double y)

在向下舍入模式下减去两个浮点数值。

__device__ double __dsub_rn(double x, double y)

在舍入到最近偶数模式下减去两个浮点数值。

__device__ double __dsub_ru(double x, double y)

在向上舍入模式下减去两个浮点数值。

__device__ double __dsub_rz(double x, double y)

在向零舍入模式下减去两个浮点数值。

__device__ double __fma_rd(double x, double y, double z)

在向下舍入模式下,将\(x \times y + z\)作为单一运算进行计算。

__device__ double __fma_rn(double x, double y, double z)

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

__device__ double __fma_ru(double x, double y, double z)

在向上取整模式下,将\(x \times y + z\)作为单一运算执行。

__device__ double __fma_rz(double x, double y, double z)

在向零取整模式下,将\(x \times y + z\)作为单次运算执行。

9.1. 函数

__device__ double __dadd_rd(double x, double y)

在向下舍入模式下将两个浮点数值相加。

以向下舍入(至负无穷大)模式将两个浮点值xy相加。

注意

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

注意

此操作永远不会被合并为单一的乘加指令。

Returns

返回 x + y

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

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

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

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

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

  • 对于有限的x(包括\( \pm 0 \)),__dadd_rd(x, -x)会返回\( -0 \)

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

__device__ double __dadd_rn(double x, double y)

在舍入到最近偶数模式下将两个浮点数值相加。

以四舍五入到最接近偶数模式将两个浮点值xy相加。

注意

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

注意

此操作永远不会被合并为单一的乘加指令。

Returns

返回 x + y

  • __dadd_rn(x, y) 等同于 __dadd_rn(y, x)。

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

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

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

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

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

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

__device__ double __dadd_ru(double x, double y)

在向上舍入模式下添加两个浮点值。

以向上舍入(向正无穷大)模式将两个浮点值xy相加。

注意

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

注意

此操作永远不会被合并为单一的乘加指令。

Returns

返回 x + y

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

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

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

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

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

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

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

__device__ double __dadd_rz(double x, double y)

在向零舍入模式下添加两个浮点数值。

以向零舍入模式将两个浮点值xy相加。

注意

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

注意

此操作永远不会被合并为单一的乘加指令。

Returns

返回 x + y

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

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

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

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

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

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

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

__device__ double __ddiv_rd(double x, double y)

以向下取整模式对两个浮点数值进行除法运算。

将两个浮点数值 x 除以 y,采用向下取整(趋向负无穷)模式。

注意

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

注意

需要计算能力 >= 2.0。

Returns

返回 x / y

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

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

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

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

  • __ddiv_rd( \( \pm\infty \), y) 对于有限的y返回适当符号的\( \infty \)

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

  • __ddiv_rd( \( \pm 0 \), y) 对于 y \( \neq 0 \) 返回适当符号的 \( 0 \)

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

__device__ double __ddiv_rn(double x, double y)

以四舍五入到最接近的偶数模式对两个浮点值进行除法运算。

在四舍五入到最近偶数模式下,将两个浮点数值x除以y

注意

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

注意

需要计算能力 >= 2.0。

Returns

返回 x / y

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

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

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

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

  • __ddiv_rn( \( \pm\infty \), y) 对于有限的y返回适当符号的\( \infty \)

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

  • __ddiv_rn( \( \pm 0 \), y) 对于 y \( \neq 0 \) 的情况返回适当符号的 \( 0 \)

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

__device__ double __ddiv_ru(double x, double y)

以向上取整模式对两个浮点数值进行除法运算。

将两个浮点数值 x 除以 y,采用向上取整(向正无穷大)模式。

注意

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

注意

需要计算能力 >= 2.0。

Returns

返回 x / y

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

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

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

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

  • __ddiv_ru( \( \pm\infty \), y) 对于有限的y返回适当符号的\( \infty \)

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

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

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

__device__ double __ddiv_rz(double x, double y)

以向零舍入模式对两个浮点值进行除法运算。

在向零舍入模式下,将两个浮点数值 x 除以 y

注意

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

注意

需要计算能力 >= 2.0。

Returns

返回 x / y

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

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

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

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

  • __ddiv_rz( \( \pm\infty \), y) 对于有限的y返回适当符号的\( \infty \)

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

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

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

__device__ double __dmul_rd(double x, double y)

以向下舍入模式计算两个浮点数的乘积。

以向下舍入(至负无穷大)模式将两个浮点数值 xy 相乘。

注意

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

注意

此操作永远不会被合并为单一的乘加指令。

Returns

返回 x * y

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

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

  • __dmul_rd(x, \( \pm\infty \)) 对于x \( \neq 0 \)的情况返回适当符号的\( \infty \)

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

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

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

__device__ double __dmul_rn(double x, double y)

以四舍五入到最近偶数模式计算两个浮点数的乘积。

以四舍五入到最接近偶数的模式将两个浮点数值xy相乘。

注意

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

注意

此操作永远不会被合并为单一的乘加指令。

Returns

返回 x * y

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

  • __dmul_rn(x, y) 等同于 __dmul_rn(y, x)。

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

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

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

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

__device__ double __dmul_ru(double x, double y)

以向上舍入模式计算两个浮点数的乘积。

以向上舍入(向正无穷大)模式将两个浮点数值 xy 相乘。

注意

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

注意

此操作永远不会被合并为单一的乘加指令。

Returns

返回 x * y

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

  • __dmul_ru(x, y) 等同于 __dmul_ru(y, x)。

  • __dmul_ru(x, \( \pm\infty \)) 当x \( \neq 0 \)时返回适当符号的\( \infty \)

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

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

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

__device__ double __dmul_rz(double x, double y)

以向零舍入模式计算两个浮点数的乘积。

以向零舍入模式将两个浮点数值 xy 相乘。

注意

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

注意

此操作永远不会被合并为单一的乘加指令。

Returns

返回 x * y

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

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

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

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

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

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

__device__ double __drcp_rd(double x)

以向下舍入模式计算 \( \frac{1}{x} \)

计算 x 的倒数,采用向下取整(趋向负无穷)模式。

注意

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

注意

需要计算能力 >= 2.0。

Returns

返回 \( \frac{1}{x} \)

__device__ double __drcp_rn(double x)

以四舍五入到最近偶数模式计算 \( \frac{1}{x} \)

以四舍五入到最近偶数模式计算x的倒数。

注意

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

注意

需要计算能力 >= 2.0。

Returns

返回 \( \frac{1}{x} \)

__device__ double __drcp_ru(double x)

以向上舍入模式计算 \( \frac{1}{x} \)

计算x的倒数,采用向上取整(趋近正无穷)模式。

注意

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

注意

需要计算能力 >= 2.0。

Returns

返回 \( \frac{1}{x} \)

__device__ double __drcp_rz(double x)

以向零舍入模式计算 \( \frac{1}{x} \)

计算x的倒数,采用向零取整模式。

注意

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

注意

需要计算能力 >= 2.0。

Returns

返回 \( \frac{1}{x} \)

__device__ double __dsqrt_rd(double x)

以向下取整模式计算 \( \sqrt{x} \)

以向下取整(趋向负无穷)模式计算x的平方根。

注意

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

注意

需要计算能力 >= 2.0。

Returns

返回 \( \sqrt{x} \)

__device__ double __dsqrt_rn(double x)

以四舍五入到最近偶数模式计算 \( \sqrt{x} \)

以四舍五入到最接近的偶数模式计算x的平方根。

注意

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

注意

需要计算能力 >= 2.0。

Returns

返回 \( \sqrt{x} \)

__device__ double __dsqrt_ru(double x)

以向上取整模式计算 \( \sqrt{x} \)

以向上取整(朝向正无穷)模式计算x的平方根。

注意

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

注意

需要计算能力 >= 2.0。

Returns

返回 \( \sqrt{x} \)

__device__ double __dsqrt_rz(double x)

以向零舍入模式计算 \( \sqrt{x} \)

以向零舍入模式计算x的平方根。

注意

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

注意

需要计算能力 >= 2.0。

Returns

返回 \( \sqrt{x} \)

__device__ double __dsub_rd(double x, double y)

在向下舍入模式下减去两个浮点数值。

在向下舍入(至负无穷大)模式下对两个浮点数值xy进行减法运算。

注意

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

注意

此操作永远不会被合并为单一的乘加指令。

Returns

返回 x 减去 y

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

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

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

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

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

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

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

__device__ double __dsub_rn(double x, double y)

以舍入到最近偶数模式减去两个浮点数值。

在四舍五入到最接近偶数的模式下,对两个浮点数值xy进行减法运算。

注意

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

注意

此操作永远不会被合并为单一的乘加指令。

Returns

返回 x 减去 y

  • __dsub_rn( \( \pm\infty \), y) 对于有限值 y 返回 \( \pm\infty \)

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

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

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

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

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

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

__device__ double __dsub_ru(double x, double y)

在向上舍入模式下减去两个浮点数值。

在向上舍入(朝向正无穷大)模式下减去两个浮点值 xy

注意

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

注意

此操作永远不会被合并为单一的乘加指令。

Returns

返回 x 减去 y

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

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

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

  • __dsub_ru( \( \pm\infty \), \( \mp\infty \)) 返回 \( \pm\infty \).

  • __dsub_ru( \( \pm 0 \), \( \mp 0 \)) 返回 \( \pm 0 \).

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

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

__device__ double __dsub_rz(double x, double y)

在向零舍入模式下减去两个浮点数值。

在向零舍入模式下减去两个浮点值 xy

注意

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

注意

此操作永远不会被合并为单一的乘加指令。

Returns

返回 x 减去 y

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

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

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

  • __dsub_rz( \( \pm\infty \), \( \mp\infty \)) 返回 \( \pm\infty \).

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

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

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

__device__ double __fma_rd(double x, double y, double z)

在向下取整模式下,将\( x \times y + z \)作为单一运算进行计算。

计算\( x \times y + z \)的值作为单个三元运算,并以向下舍入(至负无穷大)模式对结果进行一次舍入。

注意

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

Returns

返回\( x \times y + z \)作为单次运算的舍入值。

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

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

  • __fma_rd(x, y, \( -\infty \) ) 如果 \( x \times y \) 是精确的 \( +\infty \) 则返回 NaN。

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

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

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

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

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

__device__ double __fma_rn(double x, double y, double z)

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

\( x \times y + z \)作为单个三元运算计算其值,并以四舍五入到最接近偶数的模式对结果进行一次舍入。

注意

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

Returns

返回\( x \times y + z \)作为单次运算的舍入值。

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

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

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

  • __fma_rn(x, y, \( +\infty \) ) 如果 \( x \times y \) 是精确的 \( -\infty \) 则返回 NaN。

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

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

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

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

__device__ double __fma_ru(double x, double y, double z)

在向上取整模式下,将 \( x \times y + z \) 作为单一运算执行。

计算\( x \times y + z \)的值作为单个三元运算,以向上舍入(向正无穷大)模式对结果进行一次舍入。

注意

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

Returns

返回\( x \times y + z \)作为单次运算的舍入值。

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

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

  • __fma_ru(x, y, \( -\infty \) ) 如果 \( x \times y \) 是精确的 \( +\infty \),则返回 NaN。

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

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

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

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

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

__device__ double __fma_rz(double x, double y, double z)

在向零取整模式下,将\( x \times y + z \)作为单一运算进行计算。

计算\( x \times y + z \)的值作为单个三元运算,在向零舍入模式下对结果进行一次舍入。

注意

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

Returns

返回\( x \times y + z \)作为单次运算的舍入值。

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

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

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

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

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

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

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

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