# FreeBSD Manual Pages

```Math(3)		      User Contributed Perl Documentation	       Math(3)

NAME
PDL::Math - extended mathematical operations and	special	functions

SYNOPSIS
use PDL::Math;

use PDL::Graphics::TriD;
imag3d [SURF2D,bessj0(rvals(zeroes(50,50))/2)];

DESCRIPTION
This module extends PDL with more advanced mathematical functions than
provided	by standard Perl.

All the functions have one input	pdl, and one output, unless otherwise
stated.

Many of the functions are linked	from the system	maths library or the
Cephes maths library (determined	when PDL is compiled); a few are
implemented entirely in PDL.

FUNCTIONS
acos
Signature: (a(); [o]b())

The usual trigonometric function. Works inplace.

acos processes bad values.  It will set the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

asin
Signature: (a(); [o]b())

The usual trigonometric function. Works inplace.

asin processes bad values.  It will set the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

atan
Signature: (a(); [o]b())

The usual trigonometric function. Works inplace.

atan processes bad values.  It will set the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

cosh
Signature: (a(); [o]b())

The standard hyperbolic function. Works inplace.

cosh processes bad values.  It will set the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

sinh
Signature: (a(); [o]b())

The standard hyperbolic function. Works inplace.

sinh processes bad values.  It will set the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

tan
Signature: (a(); [o]b())

The usual trigonometric function. Works inplace.

tan processes bad values.  It will set the bad-value flag of all	output
piddles if the flag is set for any of the input piddles.

tanh
Signature: (a(); [o]b())

The standard hyperbolic function. Works inplace.

tanh processes bad values.  It will set the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

ceil
Signature: (a(); [o]b())

Round to	integer	values in floating-point format. Works inplace.

ceil processes bad values.  It will set the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

floor
Signature: (a(); [o]b())

Round to	integer	values in floating-point format. Works inplace.

floor processes bad values.  It will set	the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

rint
Signature: (a(); [o]b())

Round to	integer	values in floating-point format.

rint uses the 'round half to even' rounding method (also	known as
banker's	rounding).  Half-integers are rounded to the nearest even
number. This avoids a slight statistical	bias inherent in always
rounding	half-integers up or away from zero.

If you are looking to round half-integers up (regardless	of sign), try
"floor(\$x+0.5)".	 If you	want to	round half-integers away from zero,
try "floor(abs(\$x)+0.5)*(\$x<=>0)". Works	inplace.

rint processes bad values.  It will set the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

pow
Signature: (a(); b(); [o]c())

Synonym for `**'. Works inplace.

pow processes bad values.  It will set the bad-value flag of all	output
piddles if the flag is set for any of the input piddles.

acosh
Signature: (a(); [o]b())

The standard hyperbolic function. Works inplace.

acosh processes bad values.  It will set	the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

asinh
Signature: (a(); [o]b())

The standard hyperbolic function. Works inplace.

asinh processes bad values.  It will set	the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

atanh
Signature: (a(); [o]b())

The standard hyperbolic function. Works inplace.

atanh processes bad values.  It will set	the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

erf
Signature: (a(); [o]b())

The error function. Works inplace.

erf processes bad values.  It will set the bad-value flag of all	output
piddles if the flag is set for any of the input piddles.

erfc
Signature: (a(); [o]b())

The complement of the error function. Works inplace.

erfc processes bad values.  It will set the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

bessj0
Signature: (a(); [o]b())

The regular Bessel function of the first	kind, J_n Works	inplace.

bessj0 processes	bad values.  It	will set the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

bessj1
Signature: (a(); [o]b())

The regular Bessel function of the first	kind, J_n Works	inplace.

bessj1 processes	bad values.  It	will set the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

bessy0
Signature: (a(); [o]b())

The regular Bessel function of the second kind, Y_n. Works inplace.

bessy0 processes	bad values.  It	will set the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

bessy1
Signature: (a(); [o]b())

The regular Bessel function of the second kind, Y_n. Works inplace.

bessy1 processes	bad values.  It	will set the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

bessjn
Signature: (a(); int n(); [o]b())

The regular Bessel function of the first	kind, J_n .  This takes	a
second int argument which gives the order of the	function required.
Works inplace.

bessjn processes	bad values.  It	will set the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

bessyn
Signature: (a(); int n(); [o]b())

The regular Bessel function of the first	kind, Y_n .  This takes	a
second int argument which gives the order of the	function required.
Works inplace.

bessyn processes	bad values.  It	will set the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

lgamma
Signature: (a(); [o]b(); int[o]s())

log gamma function

This returns 2 piddles -- the first set gives the log(gamma) values,
while the second	set, of	integer	values,	gives the sign of the gamma
function.  This is useful for determining factorials, amongst other
things.

lgamma processes	bad values.  It	will set the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

Signature: (a(); b(); [o]c())

Clears all "infs" and "nans" in \$a to the corresponding value in	\$b.

If bad values are present, these	are also cleared.

isfinite

Sets \$mask true if \$a is	not a "NaN" or "inf" (either positive or
negative). Works	inplace.

Bad values are treated as "NaN" or "inf".

erfi
Signature: (a(); [o]b())

The inverse of the error	function. Works	inplace.

erfi processes bad values.  It will set the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

ndtri
Signature: (a(); [o]b())

The value for which the area under the Gaussian probability density
function	(integrated from minus infinity) is equal to the argument (cf
erfi). Works inplace.

ndtri processes bad values.  It will set	the bad-value flag of all
output piddles if the flag is set for any of the	input piddles.

polyroots
Signature: (cr(n); ci(n); [o]rr(m); [o]ri(m))

Complex roots of	a complex polynomial, given coefficients in order of
decreasing powers.

(\$rr, \$ri) = polyroots(\$cr, \$ci);

polyroots does not process bad values.  It will set the bad-value flag
of all output piddles if	the flag is set	for any	of the input piddles.

BUGS
Hasn't been tested on all platforms to ensure Cephes versions are
picked up automatically and used	correctly.

AUTHOR
Copyright (C) R.J.R. Williams 1997 (rjrw@ast.leeds.ac.uk), Karl
Glazebrook (kgb@aaoepp.aao.gov.au) and Tuomas J.	Lukka
(Tuomas.Lukka@helsinki.fi).  Portions (C) Craig DeForest	2002
(deforest@boulder.swri.edu).