# sincos (3)

# NAME

sincos, sincosf, sincosl - calculate sin and cos simultaneously# SYNOPSIS

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

Link withvoid sincos(doublex, double *sin, double *cos);void sincosf(floatx, float *sin, float *cos);void sincosl(long doublex, long double *sin, long double *cos);

*-lm*.

# DESCRIPTION

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*.

# RETURN VALUE

These functions return*void*.

# ERRORS

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.

*errno*.

# VERSIONS

These functions first appeared in glibc in version 2.1.# ATTRIBUTES

For an explanation of the terms used in this section, see**attributes**(7).

Interface | Attribute | Value |

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

# CONFORMING TO

These functions are GNU extensions.# NOTES

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

# SEE ALSO

**cos**(3),

**sin**(3),

**tan**(3)