Calculating More Trigonometric Functions
Problem
You want to calculate values for trigonometric functions like sine, tangent, or arc-cosine.
Solution
Perl provides only
sin, cos, and
atan2 as standard functions. From these, you can
derive tan and the other trig functions:
sub tan {
my $theta = shift;
return sin($theta)/cos($theta);
}The POSIX module provides a wider range of trig functions:
use POSIX; $y = acos(3.7);
The Math::Trig module provides a complete set of functions and supports operations on or resulting in complex numbers:
use Math::Trig; $y = acos(3.7);
Discussion
The tan function will cause a
division-by-zero exception when $theta is
,
, and so on, because the
cosine is for these values. Similarly, tan and many
other functions from Math::Trig may generate the same error. To trap
these, use eval:
eval {
$y = tan($pi/2);
} or return undef;See Also
The sin, cos, and
atan2 functions in perlfunc
(1) and Chapter 3 of Programming Perl; we
talk about trigonometry in the context of imaginary numbers in Section 2.15; we talk about the use of
eval to catch exceptions in Section 10.12