Recipe 2.11 Calculating More Trigonometric Functions

2.11.1 Problem

You want to calculate values for trigonometric functions like sine, tangent, or arc-cosine.

2.11.2 Solution

Perl provides only sin, cos, and atan2 as standard functions. From these, you can derive tan and all other trig functions (if you're intimately familiar with esoteric trig identities):

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 standard 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);

2.11.3 Discussion

The tan function will cause a division-by-zero exception when $theta is p/2, 3p/2, and so on, because the cosine is 0 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;

2.11.4 See Also

The sin, cos, and atan2 functions in perlfunc(1) and Chapter 29 of Programming Perl; the documentation for the standard Math::Trig module; we talk about trigonometry in the context of imaginary numbers in Recipe 2.14; we talk about the use of eval to catch exceptions in Recipe 10.12



Perl Cookbook
Perl Cookbook, Second Edition
ISBN: 0596003137
EAN: 2147483647
Year: 2003
Pages: 501

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net