| .\" 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) |