sin, sinf, sinl

来自cppreference.com
< c‎ | numeric‎ | math
 
 
 
常用数学函数
函数
基本运算
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)(C99)(C99)
指数函数
(C99)
(C99)
(C99)
(C99)
幂函数
(C99)
(C99)
三角及双曲函数
(C99)
(C99)
(C99)
误差及伽马函数
(C99)
(C99)
(C99)
(C99)
临近整数的浮点运算
(C99)(C99)(C99)
(C99)
(C99)(C99)(C99)
浮点数操作函数
(C99)(C99)
(C99)
(C99)
分类
(C99)
(C99)
(C99)
类型
(C99)(C99)
宏常量
 
定义于头文件 <math.h>
float       sinf( float arg );
(1) (C99 起)
double      sin( double arg );
(2)
long double sinl( long double arg );
(3) (C99 起)
定义于头文件 <tgmath.h>
#define sin( arg )
(4) (C99 起)
1-3) 计算 arg (以弧度度量)的正弦。
4) 泛型宏:若参数拥有 long double 类型,则调用 sinl 。否则,若参数拥有整数类型或 double 类型,则调用 sin 。否则调用 sinf 。若参数是复数,则该宏调用对应的复函数( csinfcsincsinl )。

参数

arg - 以弧度表示角的浮点值

返回值

若不发生错误,则返回 arg 的正弦( sin(arg) ),于范围 [-1 ; +1] 中。

arg 的绝对值很大,结果可能拥有少量或无有效数字。

(C99 前)

若发生定义域错误,则返回实现定义的值(受支持的平台上为 NaN )。

若发生下溢所致的值域错误,则返回(舍入后的)正确结果。

错误处理

报告 math_errhandling 中指定的错误。

若实现支持 IEEE 浮点算术( IEC 60559 ),则

  • 若参数是 ±0 ,则返回不修改的参数
  • 若参数是 ±∞ ,则返回 NaN 并引发 FE_INVALID
  • 若参数是 NaN ,则返回 NaN

注意

参数为无穷大的情况不指定为 C 中的定义域错误,但它被指定为 POSIX 中的定义域错误

POSIX 亦指定在溢出的情况下,返回不修改的 arg ,而且若不支持如此,则返回实现定义的不大于 DBL_MIN 、 FLT_MIN 及 LDBL_MIN 的值。

示例

#include <stdio.h>
#include <math.h>
#include <errno.h>
#include <fenv.h>
 
#pragma STDC FENV_ACCESS ON
int main(void)
{
    double pi = acos(-1);
    // 典型使用
    printf("sin(pi/6) = %f\n", sin(pi/6));
    printf("sin(pi/2) = %f\n", sin(pi/2));
    printf("sin(-3*pi/4) = %f\n", sin(-3*pi/4));
    // 特殊值
    printf("sin(+0) = %f\n", sin(0.0));
    printf("sin(-0) = %f\n", sin(-0.0));
    // 错误处理 
    feclearexcept(FE_ALL_EXCEPT);
    printf("sin(INFINITY) = %f\n", sin(INFINITY));
    if(fetestexcept(FE_INVALID)) puts("    FE_INVALID raised");
}

可能的输出:

sin(pi/6) = 0.500000
sin(pi/2) = 1.000000
sin(-3*pi/4) = -0.707107
sin(+0) = 0.000000
sin(-0) = -0.000000
sin(INFINITY) = -nan
    FE_INVALID raised

引用

  • C11 standard (ISO/IEC 9899:2011):
  • 7.12.4.6 The sin functions (p: 239-240)
  • 7.25 Type-generic math <tgmath.h> (p: 373-375)
  • F.10.1.6 The sin functions (p: 519)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.12.4.6 The sin functions (p: 220)
  • 7.22 Type-generic math <tgmath.h> (p: 335-337)
  • F.9.1.6 The sin functions (p: 456)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 4.5.2.6 The sin function

参阅

(C99)(C99)
计算余弦 (cos(x)
(函数)
(C99)(C99)
计算正切 (tan(x)
(函数)
(C99)(C99)
计算反正弦 (arcsin(x)
(函数)
(C99)(C99)(C99)
计算复数正弦
(函数)