"Fossies" - the Fresh Open Source Software Archive

Member "PDL-2.080/GENERATED/PDL/Math.pm" (28 May 2022, 14130 Bytes) of package /linux/misc/PDL-2.080.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Perl source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "Math.pm" see the Fossies "Dox" file reference documentation and the latest Fossies "Diffs" side-by-side code changes report: 2.079_vs_2.080.

    1 #
    2 # GENERATED WITH PDL::PP! Don't modify!
    3 #
    4 package PDL::Math;
    5 
    6 our @EXPORT_OK = qw(acos asin atan cosh sinh tan tanh ceil floor rint pow acosh asinh atanh erf erfc bessj0 bessj1 bessy0 bessy1 bessjn bessyn lgamma isfinite erfi ndtri polyroots );
    7 our %EXPORT_TAGS = (Func=>\@EXPORT_OK);
    8 
    9 use PDL::Core;
   10 use PDL::Exporter;
   11 use DynaLoader;
   12 
   13 
   14    
   15    our @ISA = ( 'PDL::Exporter','DynaLoader' );
   16    push @PDL::Core::PP, __PACKAGE__;
   17    bootstrap PDL::Math ;
   18 
   19 
   20 
   21 
   22 
   23 
   24 #line 13 "math.pd"
   25 
   26 use strict;
   27 use warnings;
   28 
   29 =head1 NAME
   30 
   31 PDL::Math - extended mathematical operations and special functions
   32 
   33 =head1 SYNOPSIS
   34 
   35  use PDL::Math;
   36 
   37  use PDL::Graphics::TriD;
   38  imag3d [SURF2D,bessj0(rvals(zeroes(50,50))/2)];
   39 
   40 =head1 DESCRIPTION
   41 
   42 This module extends PDL with more advanced mathematical functions than
   43 provided by standard Perl.
   44 
   45 All the functions have one input pdl, and one output, unless otherwise
   46 stated.
   47 
   48 Many of the functions are linked from the system maths library or the
   49 Cephes maths library (determined when PDL is compiled); a few are implemented
   50 entirely in PDL.
   51 
   52 =cut
   53 
   54 ### Kludge for backwards compatibility with older scripts
   55 ### This should be deleted at some point later than 21-Nov-2003.
   56 BEGIN {use PDL::MatrixOps;}
   57 #line 58 "Math.pm"
   58 
   59 
   60 
   61 
   62 
   63 
   64 =head1 FUNCTIONS
   65 
   66 =cut
   67 
   68 
   69 
   70 
   71 #line 1058 "../../blib/lib/PDL/PP.pm"
   72 
   73 
   74 
   75 =head2 acos
   76 
   77 =for sig
   78 
   79   Signature: (a(); [o]b())
   80 
   81 The usual trigonometric function.
   82  Works inplace.
   83 
   84 =for bad
   85 
   86 acos processes bad values.
   87 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
   88 
   89 
   90 =cut
   91 #line 92 "Math.pm"
   92 
   93 
   94 
   95 #line 1060 "../../blib/lib/PDL/PP.pm"
   96 
   97 *acos = \&PDL::acos;
   98 #line 99 "Math.pm"
   99 
  100 
  101 
  102 #line 1058 "../../blib/lib/PDL/PP.pm"
  103 
  104 
  105 
  106 =head2 asin
  107 
  108 =for sig
  109 
  110   Signature: (a(); [o]b())
  111 
  112 The usual trigonometric function.
  113  Works inplace.
  114 
  115 =for bad
  116 
  117 asin processes bad values.
  118 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  119 
  120 
  121 =cut
  122 #line 123 "Math.pm"
  123 
  124 
  125 
  126 #line 1060 "../../blib/lib/PDL/PP.pm"
  127 
  128 *asin = \&PDL::asin;
  129 #line 130 "Math.pm"
  130 
  131 
  132 
  133 #line 1058 "../../blib/lib/PDL/PP.pm"
  134 
  135 
  136 
  137 =head2 atan
  138 
  139 =for sig
  140 
  141   Signature: (a(); [o]b())
  142 
  143 The usual trigonometric function.
  144  Works inplace.
  145 
  146 =for bad
  147 
  148 atan processes bad values.
  149 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  150 
  151 
  152 =cut
  153 #line 154 "Math.pm"
  154 
  155 
  156 
  157 #line 1060 "../../blib/lib/PDL/PP.pm"
  158 
  159 *atan = \&PDL::atan;
  160 #line 161 "Math.pm"
  161 
  162 
  163 
  164 #line 1058 "../../blib/lib/PDL/PP.pm"
  165 
  166 
  167 
  168 =head2 cosh
  169 
  170 =for sig
  171 
  172   Signature: (a(); [o]b())
  173 
  174 The standard hyperbolic function.
  175  Works inplace.
  176 
  177 =for bad
  178 
  179 cosh processes bad values.
  180 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  181 
  182 
  183 =cut
  184 #line 185 "Math.pm"
  185 
  186 
  187 
  188 #line 1060 "../../blib/lib/PDL/PP.pm"
  189 
  190 *cosh = \&PDL::cosh;
  191 #line 192 "Math.pm"
  192 
  193 
  194 
  195 #line 1058 "../../blib/lib/PDL/PP.pm"
  196 
  197 
  198 
  199 =head2 sinh
  200 
  201 =for sig
  202 
  203   Signature: (a(); [o]b())
  204 
  205 The standard hyperbolic function.
  206  Works inplace.
  207 
  208 =for bad
  209 
  210 sinh processes bad values.
  211 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  212 
  213 
  214 =cut
  215 #line 216 "Math.pm"
  216 
  217 
  218 
  219 #line 1060 "../../blib/lib/PDL/PP.pm"
  220 
  221 *sinh = \&PDL::sinh;
  222 #line 223 "Math.pm"
  223 
  224 
  225 
  226 #line 1058 "../../blib/lib/PDL/PP.pm"
  227 
  228 
  229 
  230 =head2 tan
  231 
  232 =for sig
  233 
  234   Signature: (a(); [o]b())
  235 
  236 The usual trigonometric function.
  237  Works inplace.
  238 
  239 =for bad
  240 
  241 tan processes bad values.
  242 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  243 
  244 
  245 =cut
  246 #line 247 "Math.pm"
  247 
  248 
  249 
  250 #line 1060 "../../blib/lib/PDL/PP.pm"
  251 
  252 *tan = \&PDL::tan;
  253 #line 254 "Math.pm"
  254 
  255 
  256 
  257 #line 1058 "../../blib/lib/PDL/PP.pm"
  258 
  259 
  260 
  261 =head2 tanh
  262 
  263 =for sig
  264 
  265   Signature: (a(); [o]b())
  266 
  267 The standard hyperbolic function.
  268  Works inplace.
  269 
  270 =for bad
  271 
  272 tanh processes bad values.
  273 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  274 
  275 
  276 =cut
  277 #line 278 "Math.pm"
  278 
  279 
  280 
  281 #line 1060 "../../blib/lib/PDL/PP.pm"
  282 
  283 *tanh = \&PDL::tanh;
  284 #line 285 "Math.pm"
  285 
  286 
  287 
  288 #line 1058 "../../blib/lib/PDL/PP.pm"
  289 
  290 
  291 
  292 =head2 ceil
  293 
  294 =for sig
  295 
  296   Signature: (a(); [o]b())
  297 
  298 =for ref
  299 
  300 Round to integer values in floating-point format. Works inplace.
  301 
  302 =for bad
  303 
  304 ceil processes bad values.
  305 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  306 
  307 
  308 =cut
  309 #line 310 "Math.pm"
  310 
  311 
  312 
  313 #line 1060 "../../blib/lib/PDL/PP.pm"
  314 
  315 *ceil = \&PDL::ceil;
  316 #line 317 "Math.pm"
  317 
  318 
  319 
  320 #line 1058 "../../blib/lib/PDL/PP.pm"
  321 
  322 
  323 
  324 =head2 floor
  325 
  326 =for sig
  327 
  328   Signature: (a(); [o]b())
  329 
  330 =for ref
  331 
  332 Round to integer values in floating-point format. Works inplace.
  333 
  334 =for bad
  335 
  336 floor processes bad values.
  337 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  338 
  339 
  340 =cut
  341 #line 342 "Math.pm"
  342 
  343 
  344 
  345 #line 1060 "../../blib/lib/PDL/PP.pm"
  346 
  347 *floor = \&PDL::floor;
  348 #line 349 "Math.pm"
  349 
  350 
  351 
  352 #line 1058 "../../blib/lib/PDL/PP.pm"
  353 
  354 
  355 
  356 =head2 rint
  357 
  358 =for sig
  359 
  360   Signature: (a(); [o]b())
  361 
  362 =for ref
  363 
  364 Round to integer values in floating-point format.
  365 
  366 =for method
  367 
  368 rint uses the 'round half to even' rounding method (also known as
  369 banker's rounding).  Half-integers are rounded to the nearest even
  370 number. This avoids a slight statistical bias inherent in always
  371 rounding half-integers up or away from zero.
  372 
  373 If you are looking to round half-integers up (regardless of sign), try
  374 C<floor($x+0.5)>.  If you want to round half-integers away from zero,
  375 try C<< ceil(abs($x)+0.5)*($x<=>0) >>. Works inplace.
  376 
  377 =for bad
  378 
  379 rint processes bad values.
  380 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  381 
  382 
  383 =cut
  384 #line 385 "Math.pm"
  385 
  386 
  387 
  388 #line 1060 "../../blib/lib/PDL/PP.pm"
  389 
  390 *rint = \&PDL::rint;
  391 #line 392 "Math.pm"
  392 
  393 
  394 
  395 #line 1058 "../../blib/lib/PDL/PP.pm"
  396 
  397 
  398 
  399 =head2 pow
  400 
  401 =for sig
  402 
  403   Signature: (a(); b(); [o]c())
  404 
  405 =for ref
  406 
  407 Synonym for `**'. Works inplace.
  408 
  409 =for bad
  410 
  411 pow processes bad values.
  412 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  413 
  414 
  415 =cut
  416 #line 417 "Math.pm"
  417 
  418 
  419 
  420 #line 1060 "../../blib/lib/PDL/PP.pm"
  421 
  422 *pow = \&PDL::pow;
  423 #line 424 "Math.pm"
  424 
  425 
  426 
  427 #line 1058 "../../blib/lib/PDL/PP.pm"
  428 
  429 
  430 
  431 =head2 acosh
  432 
  433 =for sig
  434 
  435   Signature: (a(); [o]b())
  436 
  437 The standard hyperbolic function.
  438  Works inplace.
  439 
  440 =for bad
  441 
  442 acosh processes bad values.
  443 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  444 
  445 
  446 =cut
  447 #line 448 "Math.pm"
  448 
  449 
  450 
  451 #line 1060 "../../blib/lib/PDL/PP.pm"
  452 
  453 *acosh = \&PDL::acosh;
  454 #line 455 "Math.pm"
  455 
  456 
  457 
  458 #line 1058 "../../blib/lib/PDL/PP.pm"
  459 
  460 
  461 
  462 =head2 asinh
  463 
  464 =for sig
  465 
  466   Signature: (a(); [o]b())
  467 
  468 The standard hyperbolic function.
  469  Works inplace.
  470 
  471 =for bad
  472 
  473 asinh processes bad values.
  474 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  475 
  476 
  477 =cut
  478 #line 479 "Math.pm"
  479 
  480 
  481 
  482 #line 1060 "../../blib/lib/PDL/PP.pm"
  483 
  484 *asinh = \&PDL::asinh;
  485 #line 486 "Math.pm"
  486 
  487 
  488 
  489 #line 1058 "../../blib/lib/PDL/PP.pm"
  490 
  491 
  492 
  493 =head2 atanh
  494 
  495 =for sig
  496 
  497   Signature: (a(); [o]b())
  498 
  499 The standard hyperbolic function.
  500  Works inplace.
  501 
  502 =for bad
  503 
  504 atanh processes bad values.
  505 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  506 
  507 
  508 =cut
  509 #line 510 "Math.pm"
  510 
  511 
  512 
  513 #line 1060 "../../blib/lib/PDL/PP.pm"
  514 
  515 *atanh = \&PDL::atanh;
  516 #line 517 "Math.pm"
  517 
  518 
  519 
  520 #line 1058 "../../blib/lib/PDL/PP.pm"
  521 
  522 
  523 
  524 =head2 erf
  525 
  526 =for sig
  527 
  528   Signature: (a(); [o]b())
  529 
  530 =for ref
  531 
  532 The error function. Works inplace.
  533 
  534 =for bad
  535 
  536 erf processes bad values.
  537 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  538 
  539 
  540 =cut
  541 #line 542 "Math.pm"
  542 
  543 
  544 
  545 #line 1060 "../../blib/lib/PDL/PP.pm"
  546 
  547 *erf = \&PDL::erf;
  548 #line 549 "Math.pm"
  549 
  550 
  551 
  552 #line 1058 "../../blib/lib/PDL/PP.pm"
  553 
  554 
  555 
  556 =head2 erfc
  557 
  558 =for sig
  559 
  560   Signature: (a(); [o]b())
  561 
  562 =for ref
  563 
  564 The complement of the error function. Works inplace.
  565 
  566 =for bad
  567 
  568 erfc processes bad values.
  569 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  570 
  571 
  572 =cut
  573 #line 574 "Math.pm"
  574 
  575 
  576 
  577 #line 1060 "../../blib/lib/PDL/PP.pm"
  578 
  579 *erfc = \&PDL::erfc;
  580 #line 581 "Math.pm"
  581 
  582 
  583 
  584 #line 1058 "../../blib/lib/PDL/PP.pm"
  585 
  586 
  587 
  588 =head2 bessj0
  589 
  590 =for sig
  591 
  592   Signature: (a(); [o]b())
  593 
  594 =for ref
  595 
  596 The regular Bessel function of the first kind, J_n Works inplace.
  597 
  598 =for bad
  599 
  600 bessj0 processes bad values.
  601 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  602 
  603 
  604 =cut
  605 #line 606 "Math.pm"
  606 
  607 
  608 
  609 #line 1060 "../../blib/lib/PDL/PP.pm"
  610 
  611 *bessj0 = \&PDL::bessj0;
  612 #line 613 "Math.pm"
  613 
  614 
  615 
  616 #line 1058 "../../blib/lib/PDL/PP.pm"
  617 
  618 
  619 
  620 =head2 bessj1
  621 
  622 =for sig
  623 
  624   Signature: (a(); [o]b())
  625 
  626 =for ref
  627 
  628 The regular Bessel function of the first kind, J_n Works inplace.
  629 
  630 =for bad
  631 
  632 bessj1 processes bad values.
  633 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  634 
  635 
  636 =cut
  637 #line 638 "Math.pm"
  638 
  639 
  640 
  641 #line 1060 "../../blib/lib/PDL/PP.pm"
  642 
  643 *bessj1 = \&PDL::bessj1;
  644 #line 645 "Math.pm"
  645 
  646 
  647 
  648 #line 1058 "../../blib/lib/PDL/PP.pm"
  649 
  650 
  651 
  652 =head2 bessy0
  653 
  654 =for sig
  655 
  656   Signature: (a(); [o]b())
  657 
  658 =for ref
  659 
  660 The regular Bessel function of the second kind, Y_n. Works inplace.
  661 
  662 =for bad
  663 
  664 bessy0 processes bad values.
  665 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  666 
  667 
  668 =cut
  669 #line 670 "Math.pm"
  670 
  671 
  672 
  673 #line 1060 "../../blib/lib/PDL/PP.pm"
  674 
  675 *bessy0 = \&PDL::bessy0;
  676 #line 677 "Math.pm"
  677 
  678 
  679 
  680 #line 1058 "../../blib/lib/PDL/PP.pm"
  681 
  682 
  683 
  684 =head2 bessy1
  685 
  686 =for sig
  687 
  688   Signature: (a(); [o]b())
  689 
  690 =for ref
  691 
  692 The regular Bessel function of the second kind, Y_n. Works inplace.
  693 
  694 =for bad
  695 
  696 bessy1 processes bad values.
  697 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  698 
  699 
  700 =cut
  701 #line 702 "Math.pm"
  702 
  703 
  704 
  705 #line 1060 "../../blib/lib/PDL/PP.pm"
  706 
  707 *bessy1 = \&PDL::bessy1;
  708 #line 709 "Math.pm"
  709 
  710 
  711 
  712 #line 1058 "../../blib/lib/PDL/PP.pm"
  713 
  714 
  715 
  716 =head2 bessjn
  717 
  718 =for sig
  719 
  720   Signature: (a(); int n(); [o]b())
  721 
  722 =for ref
  723 
  724 The regular Bessel function of the first kind, J_n
  725 .
  726 This takes a second int argument which gives the order
  727 of the function required.
  728  Works inplace.
  729 
  730 =for bad
  731 
  732 bessjn processes bad values.
  733 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  734 
  735 
  736 =cut
  737 #line 738 "Math.pm"
  738 
  739 
  740 
  741 #line 1060 "../../blib/lib/PDL/PP.pm"
  742 
  743 *bessjn = \&PDL::bessjn;
  744 #line 745 "Math.pm"
  745 
  746 
  747 
  748 #line 1058 "../../blib/lib/PDL/PP.pm"
  749 
  750 
  751 
  752 =head2 bessyn
  753 
  754 =for sig
  755 
  756   Signature: (a(); int n(); [o]b())
  757 
  758 =for ref
  759 
  760 The regular Bessel function of the first kind, Y_n
  761 .
  762 This takes a second int argument which gives the order
  763 of the function required.
  764  Works inplace.
  765 
  766 =for bad
  767 
  768 bessyn processes bad values.
  769 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  770 
  771 
  772 =cut
  773 #line 774 "Math.pm"
  774 
  775 
  776 
  777 #line 1060 "../../blib/lib/PDL/PP.pm"
  778 
  779 *bessyn = \&PDL::bessyn;
  780 #line 781 "Math.pm"
  781 
  782 
  783 
  784 #line 1058 "../../blib/lib/PDL/PP.pm"
  785 
  786 
  787 
  788 =head2 lgamma
  789 
  790 =for sig
  791 
  792   Signature: (a(); [o]b(); int[o]s())
  793 
  794 =for ref
  795 
  796 log gamma function
  797 
  798 This returns 2 ndarrays -- the first set gives the log(gamma) values,
  799 while the second set, of integer values, gives the sign of the gamma
  800 function.  This is useful for determining factorials, amongst other
  801 things.
  802 
  803 
  804 
  805 =for bad
  806 
  807 lgamma processes bad values.
  808 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  809 
  810 
  811 =cut
  812 #line 813 "Math.pm"
  813 
  814 
  815 
  816 #line 1060 "../../blib/lib/PDL/PP.pm"
  817 
  818 *lgamma = \&PDL::lgamma;
  819 #line 820 "Math.pm"
  820 
  821 
  822 
  823 #line 1058 "../../blib/lib/PDL/PP.pm"
  824 
  825 
  826 
  827 =head2 isfinite
  828 
  829 =for sig
  830 
  831   Signature: (a(); int [o]mask())
  832 
  833 =for ref
  834 
  835 Sets C<$mask> true if C<$a> is not a C<NaN> or C<inf> (either positive or negative). Works inplace.
  836 
  837 =for bad
  838 
  839 Bad values are treated as C<NaN> or C<inf>.
  840 
  841 =cut
  842 #line 843 "Math.pm"
  843 
  844 
  845 
  846 #line 1060 "../../blib/lib/PDL/PP.pm"
  847 
  848 *isfinite = \&PDL::isfinite;
  849 #line 850 "Math.pm"
  850 
  851 
  852 
  853 #line 1058 "../../blib/lib/PDL/PP.pm"
  854 
  855 
  856 
  857 =head2 erfi
  858 
  859 =for sig
  860 
  861   Signature: (a(); [o]b())
  862 
  863 =for ref
  864 
  865 The inverse of the error function. Works inplace.
  866 
  867 =for bad
  868 
  869 erfi processes bad values.
  870 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  871 
  872 
  873 =cut
  874 #line 875 "Math.pm"
  875 
  876 
  877 
  878 #line 1060 "../../blib/lib/PDL/PP.pm"
  879 
  880 *erfi = \&PDL::erfi;
  881 #line 882 "Math.pm"
  882 
  883 
  884 
  885 #line 1058 "../../blib/lib/PDL/PP.pm"
  886 
  887 
  888 
  889 =head2 ndtri
  890 
  891 =for sig
  892 
  893   Signature: (a(); [o]b())
  894 
  895 =for ref
  896 
  897 The value for which the area under the
  898 Gaussian probability density function (integrated from
  899 minus infinity) is equal to the argument (cf L</erfi>). Works inplace.
  900 
  901 =for bad
  902 
  903 ndtri processes bad values.
  904 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  905 
  906 
  907 =cut
  908 #line 909 "Math.pm"
  909 
  910 
  911 
  912 #line 1060 "../../blib/lib/PDL/PP.pm"
  913 
  914 *ndtri = \&PDL::ndtri;
  915 #line 916 "Math.pm"
  916 
  917 
  918 
  919 #line 1058 "../../blib/lib/PDL/PP.pm"
  920 
  921 
  922 
  923 =head2 polyroots
  924 
  925 =for sig
  926 
  927   Signature: (cr(n); ci(n); [o]rr(m); [o]ri(m))
  928 
  929 
  930 
  931 =for ref
  932 
  933 Complex roots of a complex polynomial, given coefficients in order
  934 of decreasing powers.
  935 
  936 =for usage
  937 
  938  ($rr, $ri) = polyroots($cr, $ci);
  939 
  940 
  941 
  942 =for bad
  943 
  944 polyroots does not process bad values.
  945 It will set the bad-value flag of all output ndarrays if the flag is set for any of the input ndarrays.
  946 
  947 
  948 =cut
  949 #line 950 "Math.pm"
  950 
  951 
  952 
  953 #line 1060 "../../blib/lib/PDL/PP.pm"
  954 
  955 *polyroots = \&PDL::polyroots;
  956 #line 957 "Math.pm"
  957 
  958 
  959 
  960 
  961 
  962 #line 364 "math.pd"
  963 
  964 
  965 =head1 BUGS
  966 
  967 Hasn't been tested on all platforms to ensure Cephes
  968 versions are picked up automatically and used correctly.
  969 
  970 =head1 AUTHOR
  971 
  972 Copyright (C) R.J.R. Williams 1997 (rjrw@ast.leeds.ac.uk), Karl Glazebrook
  973 (kgb@aaoepp.aao.gov.au) and Tuomas J. Lukka (Tuomas.Lukka@helsinki.fi).
  974 Portions (C) Craig DeForest 2002 (deforest@boulder.swri.edu).
  975 
  976 All rights reserved. There is no warranty. You are allowed
  977 to redistribute this software / documentation under certain
  978 conditions. For details, see the file COPYING in the PDL
  979 distribution. If this file is separated from the PDL distribution,
  980 the PDL copyright notice should be included in the file.
  981 
  982 =cut
  983 #line 984 "Math.pm"
  984 
  985 
  986 
  987 
  988 # Exit with OK status
  989 
  990 1;