% % $Id$ % This file is part of the FPC documentation. % Copyright (C) 2000 by Florian Klaempfl % % The FPC documentation is free text; you can redistribute it and/or % modify it under the terms of the GNU Library General Public License as % published by the Free Software Foundation; either version 2 of the % License, or (at your option) any later version. % % The FPC Documentation is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU % Library General Public License for more details. % % You should have received a copy of the GNU Library General Public % License along with the FPC documentation; see the file COPYING.LIB. If not, % write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA. % \chapter{The MATH unit} \FPCexampledir{mathex} This chapter describes the \file{math} unit. The \var{math} unit was initially written by Florian Klaempfl. It provides mathematical functions which aren't covered by the system unit. This chapter starts out with a definition of all types and constants that are defined, followed by a complete explanation of each function. {\em Remark} This unit is compiled in Object Pascal mode so all \var{integers} are 32 bit. \section{Constants and types} The following types are defined in the \file{math} unit: \begin{verbatim} Type Float = Extended; \end{verbatim} \begin{verbatim} Type TPaymentTime = (PTEndOfPeriod,PTStartOfPeriod); \end{verbatim} \begin{verbatim} Type EInvalidArgument = Class(EMathError); \end{verbatim} \section{Functions and Procedures} \begin{function}{arccos} \Declaration Function arccos(x : float) : float; \Description \var{Arccos} returns the inverse cosine of its argument \var{x}. The argument \var{x} should lie between -1 and 1 (borders included). \Errors If the argument \var{x} is not in the allowed range, an \var{EMathError} exception is raised. \SeeAlso \seef{arcsin}, \seef{arcosh}, \seef{arsinh}, \seef{arctanh} \end{function} \FPCexample{ex1} \begin{function}{arcosh} \Declaration Function arcosh(x : float) : float; Function arccosh(x : float) : float; \Description \var{Arcosh} returns the inverse hyperbolic cosine of its argument \var{x}. The argument \var{x} should be larger than 1. The \var{arccosh} variant of this function is supplied for \delphi compatibility. \Errors If the argument \var{x} is not in the allowed range, an \var{EMathError} exception is raised. \SeeAlso \seef{cosh}, \seef{sinh}, \seef{arcsin}, \seef{arcsinh}, \seef{arctanh}, \seef{tanh} \end{function} \FPCexample{ex3} \begin{function}{arcsin} \Declaration Function arcsin(x : float) : float; \Description \var{Arcsin} returns the inverse sine of its argument \var{x}. The argument \var{x} should lie between -1 and 1. \Errors If the argument \var{x} is not in the allowed range, an \var{EMathError} exception is raised. \SeeAlso \seef{arccos}, \seef{arccosh}, \seef{arcsinh}, \seef{arctanh} \end{function} \FPCexample{ex2} \begin{function}{arctan2} \Declaration Function arctan2(x,y : float) : float; \Description \var{arctan2} calculates \var{arctan(y/x), and returns an angle in the correct quadrant. The returned angle will be in the range $-\pi$ to $\pi$ radians. The values of \var{x} and \var{y} must be between -2\^{}64 and 2\^{}64, moreover \var{x} should be different from zero. On Intel systems this function is implemented with the native intel \var{fpatan} instruction. \Errors If \var{x} is zero, an overflow error will occur. \SeeAlso \seef{arccos}, \seef{arccosh}, \seef{arcsinh}, \seef{arctanh} \end{function} \FPCexample{} \begin{function}{arctanh} \Declaration Function arctanh(x : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{arsinh} \Declaration Function arsinh(x : float) : float; Function arcsinh(x : float) : float; \Description \var{arsinh} returns the inverse hyperbolic sine of its argument \var{x}. The \var{arscsinh} variant of this function is supplied for \delphi compatibility. \Errors None. \SeeAlso \seef{arccosh}, \seef{arccos}, \seef{arsin}, \seef{artanh} \end{function} \FPCexample{ex4} \begin{function}{artanh} \Declaration Function artanh(x : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{ceil} \Declaration Function ceil(x : float) : longint; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{cosh} \Declaration Function cosh(x : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{cotan} \Declaration Function cotan(x : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{cycletorad} \Declaration Function cycletorad(cycle : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{degtograd} \Declaration Function degtograd(deg : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{degtorad} \Declaration Function degtorad(deg : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{floor} \Declaration Function floor(x : float) : longint; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{procedure}{frexp} \Declaration Procedure frexp(x : float;var mantissa,exponent : float); \Description \Errors \SeeAlso \end{procedure} \FPCexample{} \begin{function}{gradtodeg} \Declaration Function gradtodeg(grad : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{gradtorad} \Declaration Function gradtorad(grad : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{hypot} \Declaration Function hypot(x,y : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{intpower} \Declaration Function intpower(base : float;exponent : longint) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{ldexp} \Declaration Function ldexp(x : float;p : longint) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{lnxpi} \Declaration Function lnxpi(x : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{log10} \Declaration Function log10(x : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{log2} \Declaration Function log2(x : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{logn} \Declaration Function logn(n,x : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} var m1,m2,m3,m4,skew,kurtosis : float); \begin{function}{max} \Declaration Function max(Int1,Int2:Cardinal):Cardinal; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{max} \Declaration Function max(Int1,Int2:Integer):Integer; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{maxIntValue} \Declaration Function maxIntValue(const Data: array of Integer): Integer; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{maxvalue} \Declaration Function maxvalue(const data : array of float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{mean} \Declaration Function mean(const data : array of float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} var mean,stddev : float); \begin{procedure}{meanandstddev} \Declaration Procedure meanandstddev(const data : array of float; \Description \Errors \SeeAlso \end{procedure} \FPCexample{} \begin{function}{min} \Declaration Function min(Int1,Int2:Cardinal):Cardinal; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{min} \Declaration Function min(Int1,Int2:Integer):Integer; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{minIntValue} \Declaration Function minIntValue(const Data: array of Integer): Integer; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{minvalue} \Declaration Function minvalue(const data : array of float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{procedure}{momentskewkurtosis} \Declaration Procedure momentskewkurtosis(const data : array of float; \Description \Errors \SeeAlso \end{procedure} \FPCexample{} \begin{function}{norm} \Declaration Function norm(const data : array of float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{popnstddev} \Declaration Function popnstddev(const data : array of float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{popnvariance} \Declaration Function popnvariance(const data : array of float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{power} \Declaration Function power(base,exponent : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{radtocycle} \Declaration Function radtocycle(rad : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{radtodeg} \Declaration Function radtodeg(rad : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{radtograd} \Declaration Function radtograd(rad : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{randg} \Declaration Function randg(mean,stddev : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{procedure}{sincos} \Declaration Procedure sincos(theta : float;var sinus,cosinus : float); \Description \Errors \SeeAlso \end{procedure} \FPCexample{} \begin{function}{sinh} \Declaration Function sinh(x : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{stddev} \Declaration Function stddev(const data : array of float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{sum} \Declaration Function sum(const data : array of float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} var sum,sumofsquares : float); \begin{function}{sumofsquares} \Declaration Function sumofsquares(const data : array of float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{procedure}{sumsandsquares} \Declaration Procedure sumsandsquares(const data : array of float; \Description \Errors \SeeAlso \end{procedure} \FPCexample{} \begin{function}{tan} \Declaration Function tan(x : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{tanh} \Declaration Function tanh(x : float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{totalvariance} \Declaration Function totalvariance(const data : array of float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{} \begin{function}{variance} \Declaration Function variance(const data : array of float) : float; \Description \Errors \SeeAlso \end{function} \FPCexample{}