blob: 4834da815ac4f92f35d8920137e0529d6c6eac23 [file] [log] [blame]
.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de)
.\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk
.\" <mtk.manpages@gmail.com>
.\"
.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
.\" Distributed under GPL
.\" %%%LICENSE_END
.\"
.TH SINCOS 3 2021-03-22 "GNU" "Linux Programmer's Manual"
.SH NAME
sincos, sincosf, sincosl \- calculate sin and cos simultaneously
.SH SYNOPSIS
.nf
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
.B #include <math.h>
.PP
.BI "void sincos(double " x ", double *" sin ", double *" cos );
.BI "void sincosf(float " x ", float *" sin ", float *" cos );
.BI "void sincosl(long double " x ", long double *" sin ", long double *" cos );
.fi
.PP
Link with \fI\-lm\fP.
.SH DESCRIPTION
Several applications need sine and cosine of the same angle
.IR x .
These functions compute both at the same time, and store the results in
.I *sin
and
.IR *cos .
Using this function can be more efficient than two separate calls to
.BR sin (3)
and
.BR cos (3).
.PP
If
.I x
is a NaN,
a NaN is returned in
.I *sin
and
.IR *cos .
.PP
If
.I x
is positive infinity or negative infinity,
a domain error occurs, and
a NaN is returned in
.I *sin
and
.IR *cos .
.SH RETURN VALUE
These functions return
.IR void .
.SH ERRORS
See
.BR math_error (7)
for information on how to determine whether an error has occurred
when calling these functions.
.PP
The following errors can occur:
.TP
Domain error: \fIx\fP is an infinity
.I errno
is set to
.BR EDOM
(but see BUGS).
An invalid floating-point exception
.RB ( FE_INVALID )
is raised.
.SH VERSIONS
These functions first appeared in glibc in version 2.1.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interface Attribute Value
T{
.BR sincos (),
.BR sincosf (),
.BR sincosl ()
T} Thread safety MT-Safe
.TE
.hy
.ad
.sp 1
.SH CONFORMING TO
These functions are GNU extensions.
.SH NOTES
To see the performance advantage of
.BR sincos (),
it may be necessary to disable
.BR gcc (1)
built-in optimizations, using flags such as:
.PP
.in +4n
.EX
cc \-O \-lm \-fno\-builtin prog.c
.EE
.in
.SH BUGS
Before version 2.22, the glibc implementation did not set
.\" https://www.sourceware.org/bugzilla/show_bug.cgi?id=15467
.I errno
to
.B EDOM
when a domain error occurred.
.SH SEE ALSO
.BR cos (3),
.BR sin (3),
.BR tan (3)