__SINPI(3) | Library Functions Manual | __SINPI(3) |
__sinpi
— sine-pi
function
#include
<math.h>
float
__sinpif
(float
x);
double
__sinpi
(double
x);
The
__sinpi
()
function returns the sine of pi times x (measured in
radians). This can be computed more accurately than
sin
(M_PI * x), because it can
implicitly use as many bits of pi as are necessary to deliver a well-rounded
result, instead of the 53-bits to which M_PI is limited. For large
x it may also be more efficient, as the argument
reduction involved is significantly simpler.
This function may be especially useful for working with
degrees; whereas
sin
(M_PI
* x / 180.0) cannot produce exact results for angles that naively
"should" be exact, like 180 degrees,
__sinpi
(x / 180.0) can be
computed exactly.
__sinpi
(-x) is the
same as - __sinpi
(x) for any
finite x.
__sinpi
(±0) returns
±0.
__sinpi
(n) returns +0 for any
positive integer n.
__sinpi
(n + 0.5) returns +1 for
any even integer n.
__sinpi
(n + 0.5) returns -1 for
any odd integer n.
__sinpi
(±infinity) raises
the invalid floating-point exception and returns
NaN.
If you need to apply the __sinpi
()
function to SIMD vectors or arrays, using the following functions provided
by the Accelerate.framework may be useful:
#include
<Accelerate/Accelerate.h>
vFloat
vsinpif
(vFloat
x);
void
vvsinpif
(float
*y, const float *x, const int
*n);
void
vvsinpi
(double
*y, const double *x, const int
*n);
December 15, 2012 | macOS 15.2 |