sincos, sincosf, sincosl - calculate sin and cos simultaneously

**#define _GNU_SOURCE** /* See feature_test_macros(7) */
**#include <math.h>**

**void sincos(double ***x***, double ****sin***, double ****cos***);**
**void sincosf(float ***x***, float ****sin***, float ****cos***);**
**void sincosl(long double ***x***, long double ****sin***, long double ****cos***);**

Link with

*-lm*.

Several applications need sine and cosine of the same angle

*x*. These
functions compute both at the same time, and store the results in

**sin*
and

**cos*. Using this function can be more efficient than two separate
calls to

**sin**(3) and

**cos**(3).

If

*x* is a NaN, a NaN is returned in

**sin* and

**cos*.

If

*x* is positive infinity or negative infinity, a domain error occurs,
and a NaN is returned in

**sin* and

**cos*.

These functions return

*void*.

See

**math_error**(7) for information on how to determine whether an error
has occurred when calling these functions.

The following errors can occur:

- Domain error:
*x* is an infinity
- An invalid floating-point exception (
**FE_INVALID**) is raised.

These functions do not set

*errno*.

These functions first appeared in glibc in version 2.1.

For an explanation of the terms used in this section, see

**attributes**(7).

Interface |
Attribute |
Value |

sincos (), sincosf (), sincosl () |
Thread safety |
MT-Safe |

These functions are GNU extensions.

To see the performance advantage of

**sincos**(), it may be necessary to
disable

**gcc**(1) built-in optimizations, using flags such as:

cc -O -lm -fno-builtin prog.c

**cos**(3),

**sin**(3),

**tan**(3)