sincos, sincosf, sincosl — calculate sin and cos simultaneously

## 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);

`Link with `

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

These functions do not set *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

## Colophon

This page is part of release 5.04 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/.

## Referenced By

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