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) builtin optimizations, using flags such as:

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

This page is part of release 4.15 of the Linux `man-pages`

project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/.