﻿ Perl Tutorial

Freeware JavaScript Editor     Perl Tutorials ﻿

### 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;```