home *** CD-ROM | disk | FTP | other *** search
-
-
-
- MMMMaaaatttthhhh::::::::TTTTrrrriiiigggg((((3333)))) MMMMaaaatttthhhh::::::::TTTTrrrriiiigggg((((3333))))
-
-
-
- NNNNAAAAMMMMEEEE
- Math::Trig - trigonometric functions
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- use Math::Trig;
-
- $x = tan(0.9);
- $y = acos(3.7);
- $z = asin(2.4);
-
- $halfpi = pi/2;
-
- $rad = deg2rad(120);
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- Math::Trig defines many trigonometric functions not defined by the core
- Perl which defines only the sin() and cos(). The constant ppppiiii is also
- defined as are a few convenience functions for angle conversions.
-
- TTTTRRRRIIIIGGGGOOOONNNNOOOOMMMMEEEETTTTRRRRIIIICCCC FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNNSSSS
- The tangent
-
- tan
-
- The cofunctions of the sine, cosine, and tangent (cosec/csc and cotan/cot
- are aliases)
-
- csc cosec sec cot cotan
-
- The arcus (also known as the inverse) functions of the sine, cosine, and
- tangent
-
- asin acos atan
-
- The principal value of the arc tangent of y/x
-
- atan2(y, x)
-
- The arcus cofunctions of the sine, cosine, and tangent (acosec/acsc and
- acotan/acot are aliases)
-
- acsc acosec asec acot acotan
-
- The hyperbolic sine, cosine, and tangent
-
- sinh cosh tanh
-
- The cofunctions of the hyperbolic sine, cosine, and tangent (cosech/csch
- and cotanh/coth are aliases)
-
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- MMMMaaaatttthhhh::::::::TTTTrrrriiiigggg((((3333)))) MMMMaaaatttthhhh::::::::TTTTrrrriiiigggg((((3333))))
-
-
-
- csch cosech sech coth cotanh
-
- The arcus (also known as the inverse) functions of the hyperbolic sine,
- cosine, and tangent
-
- asinh acosh atanh
-
- The arcus cofunctions of the hyperbolic sine, cosine, and tangent
- (acsch/acosech and acoth/acotanh are aliases)
-
- acsch acosech asech acoth acotanh
-
- The trigonometric constant ppppiiii is also defined.
-
- $pi2 = 2 * pi;
-
-
- EEEERRRRRRRROOOORRRRSSSS DDDDUUUUEEEE TTTTOOOO DDDDIIIIVVVVIIIISSSSIIIIOOOONNNN BBBBYYYY ZZZZEEEERRRROOOO
-
- The following functions
-
- tan
- sec
- csc
- cot
- asec
- acsc
- tanh
- sech
- csch
- coth
- atanh
- asech
- acsch
- acoth
-
- cannot be computed for all arguments because that would mean dividing by
- zero or taking logarithm of zero. These situations cause fatal runtime
- errors looking like this
-
- cot(0): Division by zero.
- (Because in the definition of cot(0), the divisor sin(0) is 0)
- Died at ...
-
- or
-
- atanh(-1): Logarithm of zero.
- Died at...
-
- For the csc, cot, asec, acsc, acot, csch, coth, asech, acsch, the
- argument cannot be 0 (zero). For the atanh, acoth, the argument cannot
- be 1 (one). For the atanh, acoth, the argument cannot be -1 (minus one).
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-
-
-
- MMMMaaaatttthhhh::::::::TTTTrrrriiiigggg((((3333)))) MMMMaaaatttthhhh::::::::TTTTrrrriiiigggg((((3333))))
-
-
-
- For the tan, sec, tanh, sech, the argument cannot be _p_i/_2 + _k * _p_i, where
- _k is any integer.
-
- SSSSIIIIMMMMPPPPLLLLEEEE ((((RRRREEEEAAAALLLL)))) AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS,,,, CCCCOOOOMMMMPPPPLLLLEEEEXXXX RRRREEEESSSSUUUULLLLTTTTSSSS
-
- Please note that some of the trigonometric functions can break out from
- the rrrreeeeaaaallll aaaaxxxxiiiissss into the ccccoooommmmpppplllleeeexxxx ppppllllaaaannnneeee. For example asin(2) has no
- definition for plain real numbers but it has definition for complex
- numbers.
-
- In Perl terms this means that supplying the usual Perl numbers (also
- known as scalars, please see the _p_e_r_l_d_a_t_a manpage) as input for the
- trigonometric functions might produce as output results that no more are
- simple real numbers: instead they are complex numbers.
-
- The Math::Trig handles this by using the Math::Complex package which
- knows how to handle complex numbers, please see the _M_a_t_h::_C_o_m_p_l_e_x manpage
- for more information. In practice you need not to worry about getting
- complex numbers as results because the Math::Complex takes care of
- details like for example how to display complex numbers. For example:
-
- print asin(2), "\n";
-
- should produce something like this (take or leave few last decimals):
-
- 1.5707963267949-1.31695789692482i
-
- That is, a complex number with the real part of approximately 1.571 and
- the imaginary part of approximately -1.317.
-
- AAAANNNNGGGGLLLLEEEE CCCCOOOONNNNVVVVEEEERRRRSSSSIIIIOOOONNNNSSSS
- (Plane, 2-dimensional) angles may be converted with the following
- functions.
-
- $radians = deg2rad($degrees);
- $radians = grad2rad($gradians);
-
- $degrees = rad2deg($radians);
- $degrees = grad2deg($gradians);
-
- $gradians = deg2grad($degrees);
- $gradians = rad2grad($radians);
-
- The full circle is 2 _p_i radians or _3_6_0 degrees or _4_0_0 gradians.
-
- BBBBUUUUGGGGSSSS
- Saying use Math::Trig; exports many mathematical routines in the caller
- environment and even overrides some (sin, cos). This is construed as a
- feature by the Authors, actually... ;-)
-
-
-
-
-
-
- PPPPaaaaggggeeee 3333
-
-
-
-
-
-
- MMMMaaaatttthhhh::::::::TTTTrrrriiiigggg((((3333)))) MMMMaaaatttthhhh::::::::TTTTrrrriiiigggg((((3333))))
-
-
-
- The code is not optimized for speed, especially because we use
- Math::Complex and thus go quite near complex numbers while doing the
- computations even when the arguments are not. This, however, cannot be
- completely avoided if we want things like asin(2) to give an answer
- instead of giving a fatal runtime error.
-
- AAAAUUUUTTTTHHHHOOOORRRRSSSS
- Jarkko Hietaniemi <_j_h_i@_i_k_i._f_i> and Raphael Manfredi
- <_R_a_p_h_a_e_l__M_a_n_f_r_e_d_i@_g_r_e_n_o_b_l_e._h_p._c_o_m>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 4444
-
-
-
-