sin , sinf , sinl , sind32, sind64和 sind128 子例程
用途
计算正弦。
语法
#include <math.h> double sin ( x)
double x;
double x;
float sinf (x)
float x; long double sinl (x)
long double x; _Decimal32 sind32 (x)
_Decimal32 x;
_Decimal64 sind64 (x)
_Decimal64 x;
_Decimal128 sind128 (x)
_Decimal128 x; 描述
sin, sinf, sinl, sind32, sind64和 sind128 子例程计算 x 参数的正弦,以弧度度量。
希望检查错误情况的应用程序应将 errno 全局变量设置为零,并在调用这些子例程之前调用 feclearexcept(FE_ALL_EXCEPT)。 返回时,如果 errno 为非零或 fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW) 为非零,那么发生了错误。
参数
| 项 | 描述 |
|---|---|
| X | 浮点值 |
| y | 浮点值 |
返回值
成功完成后, sin, sinf, sinl, sind32, sind64和 sind128 子例程返回 x的正弦。
如果x为NaN,返回NaN。
如果 x 为 ± 0 ,那么将返回 x 。
如果 x 不正常,那么可能会发生范围错误,并且应该返回 x 。
如果 x 为 ± Inf ,那么将发生域错误,并返回 NaN 。
错误代码
当传递 x 参数的大值时, sin, sinf和 sinl 子例程会失去准确性。 例如,在 sin 子例程中,大于 pi 的 x 的值通过首先将它们除以 2 * 的机器值来进行自变量减小。 pi ,然后使用此部分的 IEEE 余数来代替 x。 自机器值 pi只能近似其无限精确值, x/( 2 * 的余数pi) 随着 x 变大而变得不太准确。 在大型自变量的自变量减少期间, sinl 子例程也会发生类似的准确性损失。
| 项 | 描述 |
|---|---|
| SIN | 当 x 参数非常大时,当显着性完全丧失时,这些函数将返回 0。 在这种情况下,将在标准错误输出上打印一条指示 TLOSS 错误的消息。 对于导致部分丧失显着性的不太极端的值,将生成 PLOSS 错误,但不会显示任何消息。 在这两种情况下, errno 全局变量都设置为 ERANGE 值。 |
当使用 libmsaa.a (-lmsaa) 库时,可以使用 matherr 子例程来更改这些错误处理过程。