# sincos - Man Page

calculate sin and cos simultaneously

## Library

Math library (*libm*, *-lm*)

## Synopsis

#define _GNU_SOURCE/* See feature_test_macros(7) */#include <math.h> void sincos(doublex, double *sin, double *cos); void sincosf(floatx, float *sin, float *cos); void sincosl(long doublex, long double *sin, long double *cos);

## 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 *errno*is set to**EDOM**(but see Bugs). An invalid floating-point exception (**FE_INVALID**) is raised.

## Versions

These functions were added in glibc 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 |

## Standards

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

## Bugs

Before glibc 2.22, the glibc implementation did not set *errno* to **EDOM** when a domain error occurred.

## See Also

## Referenced By

The man pages sincosf(3) and sincosl(3) are aliases of sincos(3).