sin , sinf , sinl , sind32, sind64和 sind128 子例程

用途

计算正弦。

语法

#include <math.h>
double sin ( 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;

描述

sinsinfsinlsind32sind64sind128 子例程计算 x 参数的正弦,以弧度度量。

希望检查错误情况的应用程序应将 errno 全局变量设置为零,并在调用这些子例程之前调用 feclearexcept(FE_ALL_EXCEPT)。 返回时,如果 errno 为非零或 fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW) 为非零,那么发生了错误。

参数

描述
X 浮点值
y 浮点值

返回值

成功完成后, sinsinfsinlsind32sind64sind128 子例程返回 x的正弦。

如果x为NaN,返回NaN。

如果 x 为 ± 0 ,那么将返回 x

如果 x 不正常,那么可能会发生范围错误,并且应该返回 x

如果 x 为 ± Inf ,那么将发生域错误,并返回 NaN 。

错误代码

当传递 x 参数的大值时, sinsinfsinl 子例程会失去准确性。 例如,在 sin 子例程中,大于 pi 的 x 的值通过首先将它们除以 2 * 的机器值来进行自变量减小。 pi ,然后使用此部分的 IEEE 余数来代替 x。 自机器值 pi只能近似其无限精确值, x/( 2 * 的余数pi) 随着 x 变大而变得不太准确。 在大型自变量的自变量减少期间, sinl 子例程也会发生类似的准确性损失。

描述
SIN x 参数非常大时,当显着性完全丧失时,这些函数将返回 0。 在这种情况下,将在标准错误输出上打印一条指示 TLOSS 错误的消息。 对于导致部分丧失显着性的不太极端的值,将生成 PLOSS 错误,但不会显示任何消息。 在这两种情况下, errno 全局变量都设置为 ERANGE 值。

当使用 libmsaa.a (-lmsaa) 库时,可以使用 matherr 子例程来更改这些错误处理过程。