# csinf, csin, csinl

< c‎ | numeric‎ | complex

C
 Language Headers Type support Program utilities Variadic function support Error handling Dynamic memory management Date and time utilities Strings library Algorithms Numerics Input/output support Localization support Atomic operations (C11) Thread support (C11) Technical Specifications

Complex number arithmetic
Types and the imaginary constant
 complex(C99) _Complex_I(C99) CMPLX(C11)
 imaginary(C99) _Imaginary_I(C99) I(C99)
Manipulation
 cimag(C99) creal(C99) carg(C99)
 cabs(C99) conj(C99) cproj(C99)
Power and exponential functions
 cexp(C99) clog(C99)
 cpow(C99) csqrt(C99)
Trigonometric functions
 ccos(C99) csin(C99) ctan(C99)
 cacos(C99) casin(C99) catan(C99)
Hyperbolic functions
 ccosh(C99) csinh(C99) ctanh(C99)
 cacosh(C99) casinh(C99) catanh(C99)

 Defined in header  float complex       csinf( float complex z ); (1) (since C99) double complex      csin( double complex z ); (2) (since C99) long double complex csinl( long double complex z ); (3) (since C99) Defined in header  #define sin( z ) (4) (since C99)
1-3) Computes the complex sine of z.
4) Type-generic macro: If z has type long double complex, csinl is called. if z has type double complex, csin is called, if z has type float complex, csinf is called. If z is real or integer, then the macro invokes the corresponding real function (sinf, sin, sinl). If z is imaginary, then the macro invokes the corresponding real version of the function sinh, implementing the formula sin(iy) = i sinh(y), and the return type of the macro is imaginary.

## Contents

### Parameters

 z - complex argument

### Return value

If no errors occur, the complex sine of z.

Errors and special cases are handled as if the operation is implemented by -I * csinh(I*z)

### Notes

The sine is an entire function on the complex plane, and has no branch cuts.

Mathematical definition of the sine is sin z =
 eiz-e-iz 2i

### Example

#include <stdio.h>
#include <math.h>
#include <complex.h>

int main(void)
{
double complex z = csin(1);  // behaves like real sine along the real line
printf("sin(1+0i) = %f%+fi ( sin(1)=%f)\n", creal(z), cimag(z), sin(1));

double complex z2 = csin(I); // behaves like sinh along the imaginary line
printf("sin(0+1i) = %f%+fi (sinh(1)=%f)\n", creal(z2), cimag(z2), sinh(1));
}

Output:

sin(1+0i) = 0.841471+0.000000i ( sin(1)=0.841471)
sin(0+1i) = 0.000000+1.175201i (sinh(1)=1.175201)

### References

• C11 standard (ISO/IEC 9899:2011):
• 7.3.5.5 The csin functions (p: 191-192)
• 7.25 Type-generic math <tgmath.h> (p: 373-375)
• G.7 Type-generic math <tgmath.h> (p: 545)
• C99 standard (ISO/IEC 9899:1999):
• 7.3.5.5 The csin functions (p: 173)
• 7.22 Type-generic math <tgmath.h> (p: 335-337)
• G.7 Type-generic math <tgmath.h> (p: 480)