SIN(3M)                                                                SIN(3M)


NAME
       sin,  cos,  tan,  asin, acos, atan, atan2 - trigonometric functions and
       their inverses

SYNOPSIS
       #include <math.h>

       double sin(x)
       double x;

       double cos(x)
       double x;

       double tan(x)
       double x;

       double asin(x)
       double x;

       double acos(x)
       double x;

       double atan(x)
       double x;

       double atan2(y,x)
       double y,x;

DESCRIPTION
       Sin, cos and tan return trigonometric functions of radian arguments  x.

       Asin returns the arc sine in the range -pi/2 to pi/2.

       Acos returns the arc cosine in the range 0 to

       Atan returns the arc tangent in the range -pi/2 to pi/2.

       On a VAX,
       atan2(y,x) :=   atan(y/x)                   if x > 0,
                       sign(y)∗(pi - atan(|y/x|))  if x < 0,
                       0                           if x = y = 0, or
                       sign(y)∗pi/2                if x = 0 != y.

DIAGNOSTICS
       On  a  VAX,  if  |x|  > 1 then asin(x) and acos(x) will return reserved
       operands and errno will be set to EDOM.

NOTES
       Atan2  defines  atan2(0,0)  =  0  on  a  VAX  despite  that  previously
       atan2(0,0)  may  have  generated  an  error  message.   The reasons for
       assigning a value to atan2(0,0) are these:

       (1) Programs that test arguments to avoid computing atan2(0,0) must  be
           indifferent  to  its value.  Programs that require it to be invalid
           are vulnerable to diverse reactions to that invalidity  on  diverse
           computer systems.

       (2) Atan2  is  used  mostly  to convert from rectangular (x,y) to polar
           (r,theta) coordinates that must satisfy x = r∗cos  theta  and  y  =
           r∗sin  theta.   These  equations  are  satisfied  when (x=0,y=0) is
           mapped to (r=0,theta=0) on a VAX.  In general, conversions to polar
           coordinates should be computed thus:
                    r := hypot(x,y);      ... := sqrt(x∗x+y∗y)
                theta := atan2(y,x).

       (3) The  foregoing formulas need not be altered to cope in a reasonable
           way with signed zeros and infinities on a machine that conforms  to
           IEEE  754;  the  versions  of  hypot  and atan2 provided for such a
           machine are designed to handle all cases.  That is why atan2(±0,-0)
           =  ±pi, for instance.  In general the formulas above are equivalent
           to these:
           r := sqrt(x∗x+y∗y); if r = 0 then x := copysign(1,x);
           if x > 0  then theta := 2∗atan(y/(r+x))
                     else theta := 2∗atan((r-x)/y);
       except if r is infinite then atan2 will yield an  appropriate  multiple
       of pi/4 that would otherwise have to be obtained by taking limits.

ERROR (due to Roundoff etc.)
       Let  P  stand  for  the  number stored in the computer in place of pi =
       3.14159 26535 89793 23846 26433 ... .  Let  "trig"  stand  for  one  of
       "sin",  "cos"  or  "tan".   Then  the expression "trig(x)" in a program
       actually produces an  approximation  to  trig(x∗pi/P),  and  "atrig(x)"
       approximates  (P/pi)∗atrig(x).   The  approximations are close,  within
       0.9 ulps for sin, cos and atan, within 2.2 ulps for tan, asin, acos and
       atan2 on a VAX.  Moreover, P = pi in the codes that run on a VAX.

       In  the  codes that run on other machines, P differs from pi by a frac‐
       tion of an ulp; the difference matters only if the argument x is  huge,
       and even then the difference is likely to be swamped by the uncertainty
       in x.  Besides, every trigonometric identity that does not  involve  pi
       explicitly is satisfied equally well regardless of whether P = pi.  For
       instance, sin(x)**2+cos(x)**2 = 1 and sin(2x) = 2sin(x)cos(x) to within
       a  few  ulps  no  matter  how  big  x may be.  Therefore the difference
       between P and pi is most unlikely to affect scientific and  engineering
       computations.

SEE ALSO
       math(3M), hypot(3M), sqrt(3M), infnan(3M)

AUTHOR
       Robert  P.  Corbett,  W. Kahan, Stuart I. McDonald, Peter Tang and, for
       the codes for IEEE 754, Dr. Kwok-Choi Ng.


4th Berkeley Distribution        May 12, 1986                          SIN(3M)
 
Generated: 2016-12-26
Generated by man2html V0.25
page hit count: 602
Valid CSS Valid XHTML 1.0 Strict