Namensräume
Varianten
Aktionen

sin, sinf, sinl

Von cppreference.com
< c‎ | numerik‎ | math
 
 
 
Allgemeine mathematische Funktionen
Funktionen
Grundlegende Operationen
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
Maximum/Minimum-Operationen
(C99)
(C99)
Exponentialfunktionen
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
Potenzfunktionen
(C99)
(C23)
(C23)

(C99)
(C23)
(C23)
Trigonometrische und hyperbolische Funktionen
sin
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
Nächste ganze Gleitkommazahlen
(C99)(C99)(C99)
(C99)

(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
Gleitkomma-Manipulation
(C99)(C99)
(C99)(C23)
(C99)
Verengende Operationen
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quanten- und Quantenexponent-Funktionen
Dezimal-Neu-Kodierungsfunktionen
Gesamtordnung und Payload-Funktionen
Klassifizierung
(C99)
(C99)
(C99)
(C23)
Fehler- und Gammafunktionen
(C99)
(C99)
(C99)
(C99)
Typen
Makrokonstanten
Spezielle Gleitkommawerte
(C99)(C23)
Argumente und Rückgabewerte
Fehlerbehandlung
Schnelle Operationsanzeigen
 
Definiert in Header <math.h>
float       sinf( float arg );
(1) (seit C99)
double      sin( double arg );
(2)
long double sinl( long double arg );
(3) (seit C99)
_Decimal32  sind32( _Decimal32 arg );
(4) (seit C23)
_Decimal64  sind64( _Decimal64 arg );
(5) (seit C23)
_Decimal128 sind128( _Decimal128 arg );
(6) (seit C23)
Definiert in Header <tgmath.h>
#define sin( arg )
(7) (seit C99)
1-3) Berechnet den Sinus von arg (gemessen in Radiant).
7) Typgenerische Makro: Wenn das Argument vom Typ long double ist, wird (3) (sinl) aufgerufen. Andernfalls, wenn das Argument einen Ganzzahltyp oder den Typ double hat, wird (2) (sin) aufgerufen. Andernfalls wird (1) (sinf) aufgerufen. Wenn das Argument komplex ist, ruft das Makro die entsprechende komplexe Funktion auf (csinl, csin, csinf).

Die Funktionen (4-6) werden nur dann deklariert, wenn die Implementierung __STDC_IEC_60559_DFP__ vordefiniert (d. h. die Implementierung unterstützt Dezimal-Gleitkommazahlen).

(seit C23)

Inhalt

[bearbeiten] Parameter

arg - Gleitkommazahlwert, der einen Winkel in Radiant darstellt

[bearbeiten] Rückgabewert

Wenn keine Fehler auftreten, wird der Sinus von arg (sin(arg)) im Bereich [-1 ; +1] zurückgegeben.

Das Ergebnis kann wenig oder keine Bedeutung haben, wenn die Größenordnung von arg groß ist.

(bis C99)

Wenn ein Domänenfehler auftritt, wird ein implementierungsabhängiger Wert zurückgegeben (NaN, wo unterstützt).

Wenn ein Bereichsfehler aufgrund eines Unterlaufs auftritt, wird das korrekte Ergebnis (nach Rundung) zurückgegeben.

[bearbeiten] Fehlerbehandlung

Fehler werden wie in math_errhandling angegeben gemeldet.

Wenn die Implementierung IEEE-Gleitkomma-Arithmetik (IEC 60559) unterstützt

  • wenn das Argument ±0 ist, wird es unverändert zurückgegeben;
  • wenn das Argument ±∞ ist, wird NaN zurückgegeben und FE_INVALID ausgelöst;
  • Wenn das Argument NaN ist, wird NaN zurückgegeben.

[bearbeiten] Hinweise

Der Fall, dass das Argument unendlich ist, ist in C nicht als Domänenfehler spezifiziert, aber er ist als Domänenfehler in POSIX definiert.

POSIX gibt außerdem an, dass bei einem Unterlauf arg unverändert zurückgegeben wird, und wenn dies nicht unterstützt wird, wird ein implementierungsdefinierter Wert zurückgegeben, der nicht größer ist als DBL_MIN, FLT_MIN und LDBL_MIN.

[bearbeiten] Beispiel

#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");
}

Mögliche Ausgabe

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

[bearbeiten] Referenzen

  • C23-Standard (ISO/IEC 9899:2024)
  • 7.12.4.6 Die sin-Funktionen (S. TBD)
  • 7.27 Typgenerische Mathematik <tgmath.h> (S. TBD)
  • F.10.1.6 Die sin-Funktionen (S. TBD)
  • C17-Standard (ISO/IEC 9899:2018)
  • 7.12.4.6 Die sin-Funktionen (S. 175)
  • 7.25 Typ-generische Mathematik <tgmath.h> (S. 272-273)
  • F.10.1.6 Die sin-Funktionen (S. 378)
  • C11-Standard (ISO/IEC 9899:2011)
  • 7.12.4.6 Die sin-Funktionen (S. 239-240)
  • 7.25 Typ-generische Mathematik <tgmath.h> (S. 373-375)
  • F.10.1.6 Die sin-Funktionen (S. 519)
  • C99-Standard (ISO/IEC 9899:1999)
  • 7.12.4.6 Die sin-Funktionen (S. 220)
  • 7.22 Typ-generische Mathematik <tgmath.h> (S. 335-337)
  • F.9.1.6 Die sin-Funktionen (S. 456)
  • C89/C90-Standard (ISO/IEC 9899:1990)
  • 4.5.2.6 Die sin-Funktion

[bearbeiten] Siehe auch

(C99)(C99)
berechnet Kosinus (cos(x))
(Funktion) [bearbeiten]
(C99)(C99)
berechnet Tangens (tan(x))
(Funktion) [bearbeiten]
(C99)(C99)
berechnet Arkussinus (arcsin(x))
(Funktion) [bearbeiten]
(C99)(C99)(C99)
berechnet den komplexen Sinus
(Funktion) [bearbeiten]