rsqrt 子例程

用途

计算一个数字的平方根的倒数。

IEEE 数学库 (libm.a)

System V 数学库 (libmsaa.a)

语法

#include <math.h>

double rsqrt(double  x)

描述

rsqrt 命令计算数字 x的平方根的倒数; 即, 1.0 除以 x 的平方根 (1.0/sqrt (x))。 在某些平台上,使用 rsqrt 子例程比计算 1.0 /sqrt (x) 更快。 rsqrt 子例程使用调用程序所使用的相同舍入方式。

使用 libm.a 库时, rsqrt 子例程通过以下方式响应 x 的特殊值:

  • 如果 x 是 NaN, ,则 rsqrt 子程序返回 NaN。 如果 x 是信令 Nan (NaNS) ,那么 rsqrt 子例程返回一个安静的 NaN ,并将 FPSCR (浮点状态和控制寄存器) 中的 VXVXSNAN (信令 NaN 无效操作异常) 标志设置为 1。
  • 如果 x 是 +/- 0.0,那么 rsqrt 子例程将返回 +/-INF 并将 FPSCR 中的 ZX (零除异常) 标志设置为 1。
  • 如果 x 为负数,则 rsqrt 子例程返回 NaN, ,将 errno 全局变量设置为 EDOM ,并将 FPSCR 中的 VXVXSQRT (负数平方根无效操作异常)标志设置为 1。

使用 libmsaa.a 库时, rsqrt 子例程以下列方式响应 x 的特殊值:

  • 如果 x 是 +/- 0.0,那么 rsqrt 子例程返回 +/-HUGE_VAL 并将 errno 全局变量设置为 EDOM。 子例程调用 马瑟尔 子例程,该子例程将一个指示奇异性错误的消息打印到标准错误输出。
  • 如果 x 为负数,那么 rsqrt 子例程将返回 0.0 并将 errno 全局变量设置为 EDOM。 子例程调用 马瑟尔 子例程,该子例程将指示域错误的消息打印到标准错误输出。

当使用 libmsaa.a编译时,程序可以使用 matherr 子例程来更改这些错误处理过程。

参数

描述
X 指定一种双精度浮点值。

返回值

成功完成后, rsqrt 子例程将返回 X的平方根的倒数。

描述
1.0 如果 x 为 1.0。
+0.0 如果 X 为 + INF。

错误代码

当使用 libm.a libmsaa.a 库时, rsqrt 子例程可能会返回以下错误代码:

描述
EDOM X 的值为负数。