Spec-Zone.ru › C

sin, sinf, sinl

Определено в заголовочном файле <math.h>
float       sinf( float arg );
(1) (с C99)
double      sin( double arg );
(2)
long double sinl( long double arg );
(3) (с C99)
_Decimal32  sind32( _Decimal32 arg );
(4) (с C23)
_Decimal64  sind64( _Decimal64 arg );
(5) (с C23)
_Decimal128 sind128( _Decimal128 arg );
(6) (с C23)
Определено в заголовочном файле <tgmath.h>
#define sin( arg )
(7) (с C99)
1-3) Вычисляет синус угла arg (в радианах).
7) Универсальная макрокоманда для типов: Если аргумент имеет тип long double, вызывается (3) (sinl). В противном случае, если аргумент имеет целочисленный тип или тип double, вызывается (2) (sin). В противном случае вызывается (1) (sinf). Если аргумент является комплексным, макрокоманда вызывает соответствующую комплексную функцию (csinl, csin, csinf).

Функции (4-6) объявлены только в том случае, если реализация предопределяет __STDC_IEC_60559_DFP__ (т.е. реализация поддерживает десятичные числа с плавающей точкой).

(с C23)

Параметры

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 <errno.h>
#include <fenv.h>
#include <math.h>
#include <stdio.h>
 
#ifndef __GNUC__
#pragma STDC FENV_ACCESS ON
#endif
 
int main(void)
{
    const double pi = acos(-1);
 
    // typical usage
    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));
 
    // special values
    printf("sin(+0) = %f\n", sin(0.0));
    printf("sin(-0) = %f\n", sin(-0.0));
 
    // error handling
    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

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2023):
    • 7.12.4.6 Функции sin (п: TBD)
    • 7.27 Универсальные математические функции <tgmath.h> (п: TBD)
    • F.10.1.6 Функции sin (п: TBD)
  • Стандарт C17 (ISO/IEC 9899:2018):
    • 7.12.4.6 Функции sin (п: 175)
    • 7.25 Универсальные математические функции <tgmath.h> (п: 272-273)
    • F.10.1.6 Функции sin (п: 378)
  • Стандарт C11 (ISO/IEC 9899:2011):
    • 7.12.4.6 Функции sin (п: 239-240)
    • 7.25 Универсальные математические функции <tgmath.h> (п: 373-375)
    • F.10.1.6 Функции sin (п: 519)
  • Стандарт C99 (ISO/IEC 9899:1999):
    • 7.12.4.6 Функции sin (п: 220)
    • 7.22 Универсальные математические функции <tgmath.h> (п: 335-337)
    • F.9.1.6 Функции sin (п: 456)
  • Стандарт C89/C90 (ISO/IEC 9899:1990):
    • 4.5.2.6 Функция sin

См. также

coscosfcosl
(C99)(C99)
вычисляет косинус (\({\small\cos{x} }\)cos(x))
(функция)
tantanftanl
(C99)(C99)
вычисляет тангенс (\({\small\tan{x} }\)tan(x))
(функция)
asinasinfasinl
(C99)(C99)
вычисляет арксинус (\({\small\arcsin{x} }\)arcsin(x))
(функция)
csincsinfcsinl
(C99)(C99)(C99)
вычисляет комплексный синус
(функция)
Документация C++ для sin

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/math/sin

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API