tan, tanf, tanl - tangent function
#include <math.h>
double tan(doublex);
float tanf(floatx);
long double tanl(long doublex);
[CX]The functionality described on this reference page is aligned with the ISO C standard. Any conflict between therequirements described here and the ISO C standard is unintentional. This volume of POSIX.1-2017 defers to the ISO Cstandard.
These functions shall compute the tangent of their argumentx, measured in radians.
An application wishing to check for error situations should seterrno to zero and callfeclearexcept(FE_ALL_EXCEPT) before calling these functions. On return, iferrno is non-zero orfetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW) is non-zero, an error has occurred.
Upon successful completion, these functions shall return the tangent ofx.
If the correct value would cause underflow,[MXX]
and is not representable,
a range error may occur, andtan(),tanf(), andtanl() shall return[MXX]
0.0, or
(if IEC 60559 Floating-Point is not supported) animplementation-defined value no greater in magnitude than DBL_MIN, FLT_MIN, and LDBL_MIN, respectively.
[MX]
Ifx is NaN, a NaN shall be returned.
Ifx is ±0,x shall be returned.
Ifx is subnormal, a range error may occur
[MXX]
andx should be returned.
[MX]
Ifx is not returned,tan(),tanf(), andtanl() shall return an implementation-defined value no greater inmagnitude than DBL_MIN, FLT_MIN, and LDBL_MIN, respectively.
Ifx is ±Inf, a domain error shall occur, and either a NaN (if supported), or an implementation-defined valueshall be returned.
[MXX]
If the correct value would cause underflow, and is representable, a range error may occur and the correct value shall be returned.
[XSI]
If the correct value would cause overflow, a range error shall occur andtan(),tanf(), andtanl() shallreturn ±HUGE_VAL, ±HUGE_VALF, and ±HUGE_VALL, respectively, with the same sign as the correct value of thefunction.
These functions shall fail if:
- Domain Error
- [MX]
The value ofx is ±Inf.
If the integer expression (math_errhandling & MATH_ERRNO) is non-zero, thenerrno shall be set to [EDOM]. Ifthe integer expression (math_errhandling & MATH_ERREXCEPT) is non-zero, then the invalid floating-point exception shallbe raised.
- Range Error
- [XSI]
The result overflows
If the integer expression (math_errhandling & MATH_ERRNO) is non-zero, thenerrno shall be set to [ERANGE]. Ifthe integer expression (math_errhandling & MATH_ERREXCEPT) is non-zero, then the overflow floating-point exception shallbe raised.
These functions may fail if:
- Range Error
- The result underflows,[MX]
or the value ofx is subnormal.
If the integer expression (math_errhandling & MATH_ERRNO) is non-zero, thenerrno shall be set to [ERANGE]. Ifthe integer expression (math_errhandling & MATH_ERREXCEPT) is non-zero, then the underflow floating-point exceptionshall be raised.
Taking the Tangent of a 45-Degree Angle
#include <math.h>...double radians = 45.0 * M_PI / 180;double result;...result = tan (radians);
There are no known floating-point representations such that for a normal argument,tan(x) is either overflow orunderflow.
These functions may lose accuracy when their argument is near a multiple of
/2 or is farfrom 0.0.
On error, the expressions (math_errhandling & MATH_ERRNO) and (math_errhandling & MATH_ERREXCEPT) areindependent of each other, but at least one of them must be non-zero.
None.
None.
atan,feclearexcept,fetestexcept,isnan
XBDTreatment of Error Conditions for Mathematical Functions,<math.h>
First released in Issue 1. Derived from Issue 1 of the SVID.
The last two paragraphs of the DESCRIPTION were included as APPLICATION USAGE notes in previous issues.
Thetanf() andtanl() functions are added for alignment with the ISO/IEC 9899:1999 standard.
The DESCRIPTION, RETURN VALUE, ERRORS, and APPLICATION USAGE sections are revised to align with the ISO/IEC 9899:1999standard.
IEC 60559:1989 standard floating-point extensions over the ISO/IEC 9899:1999 standard are marked.
IEEE Std 1003.1-2001/Cor 1-2002, item XSH/TC1/D6/64 is applied, correcting the last paragraph in the RETURN VALUEsection.
POSIX.1-2008, Technical Corrigendum 1, XSH/TC1-2008/0635 [68], XSH/TC1-2008/0636 [68], and XSH/TC1-2008/0637 [68] areapplied.
return to top of page