
#
# GENERATED WITH PDL::PP! Don't modify!
#
package PDL::Math;

@EXPORT_OK  = qw( PDL::PP acos PDL::PP asin PDL::PP atan PDL::PP cosh PDL::PP sinh PDL::PP tan PDL::PP tanh PDL::PP ceil PDL::PP floor PDL::PP rint PDL::PP pow PDL::PP acosh PDL::PP asinh PDL::PP atanh PDL::PP erf PDL::PP erfc PDL::PP bessj0 PDL::PP bessj1 PDL::PP bessy0 PDL::PP bessy1 PDL::PP bessjn PDL::PP bessyn PDL::PP lgamma PDL::PP badmask PDL::PP isfinite PDL::PP erfi PDL::PP ndtri PDL::PP polyroots );
%EXPORT_TAGS = (Func=>[@EXPORT_OK]);

use PDL::Core;
use PDL::Exporter;
use DynaLoader;



   
   @ISA    = ( 'PDL::Exporter','DynaLoader' );
   push @PDL::Core::PP, __PACKAGE__;
   bootstrap PDL::Math ;




=head1 NAME

PDL::Math - extended mathematical operations and special functions

=head1 SYNOPSIS

 use PDL::Math;

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

=head1 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.

=cut

### Kludge for backwards compatibility with older scripts
### This should be deleted at some point later than 21-Nov-2003.
BEGIN {use PDL::MatrixOps;}







=head1 FUNCTIONS



=cut






=head2 acos

=for sig

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

=for ref

The usual trigonometric function. Works inplace.



=cut






*acos = \&PDL::acos;




=head2 asin

=for sig

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

=for ref

The usual trigonometric function. Works inplace.



=cut






*asin = \&PDL::asin;




=head2 atan

=for sig

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

=for ref

The usual trigonometric function. Works inplace.



=cut






*atan = \&PDL::atan;




=head2 cosh

=for sig

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

=for ref

The standard hyperbolic function. Works inplace.



=cut






*cosh = \&PDL::cosh;




=head2 sinh

=for sig

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

=for ref

The standard hyperbolic function. Works inplace.



=cut






*sinh = \&PDL::sinh;




=head2 tan

=for sig

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

=for ref

The usual trigonometric function. Works inplace.



=cut






*tan = \&PDL::tan;




=head2 tanh

=for sig

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

=for ref

The standard hyperbolic function. Works inplace.



=cut






*tanh = \&PDL::tanh;




=head2 ceil

=for sig

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

=for ref

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



=cut






*ceil = \&PDL::ceil;




=head2 floor

=for sig

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

=for ref

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



=cut






*floor = \&PDL::floor;




=head2 rint

=for sig

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

=for ref

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



=cut






*rint = \&PDL::rint;




=head2 pow

=for sig

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

=for ref

Synonym for `**'. Works inplace.



=cut






*pow = \&PDL::pow;




=head2 acosh

=for sig

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

=for ref

The standard hyperbolic function. Works inplace.



=cut






*acosh = \&PDL::acosh;




=head2 asinh

=for sig

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

=for ref

The standard hyperbolic function. Works inplace.



=cut






*asinh = \&PDL::asinh;




=head2 atanh

=for sig

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

=for ref

The standard hyperbolic function. Works inplace.



=cut






*atanh = \&PDL::atanh;




=head2 erf

=for sig

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

=for ref

The error function. Works inplace.



=cut






*erf = \&PDL::erf;




=head2 erfc

=for sig

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

=for ref

The complement of the error function. Works inplace.



=cut






*erfc = \&PDL::erfc;




=head2 bessj0

=for sig

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

=for ref

The standard Bessel function. Works inplace.



=cut






*bessj0 = \&PDL::bessj0;




=head2 bessj1

=for sig

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

=for ref

The standard Bessel function. Works inplace.



=cut






*bessj1 = \&PDL::bessj1;




=head2 bessy0

=for sig

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

=for ref

The standard Bessel function. Works inplace.



=cut






*bessy0 = \&PDL::bessy0;




=head2 bessy1

=for sig

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

=for ref

The standard Bessel function. Works inplace.



=cut






*bessy1 = \&PDL::bessy1;




=head2 bessjn

=for sig

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

=for ref

The standard Bessel function.
This has a second integer
argument which gives the order of the function required.
 Works inplace.



=cut






*bessjn = \&PDL::bessjn;




=head2 bessyn

=for sig

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

=for ref

The standard Bessel function.
This has a second integer
argument which gives the order of the function required.
 Works inplace.



=cut






*bessyn = \&PDL::bessyn;




=head2 lgamma

=for sig

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

=for ref

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.





=cut






*lgamma = \&PDL::lgamma;




=head2 badmask

=for sig

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

=for ref

Clears all C<infs> and C<nans> in C<$a> to the corresponding value in C<$b>.

badmask can be run with C<$a> inplace:

  badmask($a->inplace,0);
  $a->inplace->badmask(0);





=cut






*badmask = \&PDL::badmask;




=head2 isfinite

=for sig

  Signature: (a(); int [o]mask())

=for ref

Sets C<$mask> true if C<$a> is not a C<NaN> or C<inf> (either positive or negative). Works inplace.



=cut






*isfinite = \&PDL::isfinite;




=head2 erfi

=for sig

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

=for ref

The inverse of the error function. Works inplace.



=cut






*erfi = \&PDL::erfi;




=head2 ndtri

=for sig

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

=for ref

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



=cut






*ndtri = \&PDL::ndtri;




=head2 polyroots

=for sig

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



=for ref

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

=for usage

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





=cut






*polyroots = \&PDL::polyroots;


;


=head1 BUGS

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

=head1 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).

All rights reserved. There is no warranty. You are allowed
to redistribute this software / documentation under certain
conditions. For details, see the file COPYING in the PDL
distribution. If this file is separated from the PDL distribution,
the PDL copyright notice should be included in the file.

=cut





# Exit with OK status

1;

		   