www.pudn.com > 1.rar > Mathutil.h
///////////////////////////////////////////////////////////////////////////////
// //
// Dateiname: MATHUTIL.H //
// //
// Autor: Andreas Jäger, Friedrich-Schiller-Universität Jena //
// //
// System: WIN_RWPM.EXE und WINLRWPM.EXE //
// //
// Beschreibung: Mathematische Routinen //
// //
// Hinweise: //
// //
///////////////////////////////////////////////////////////////////////////////
#define PI 3.14159265358979323846L
#define PI_ 3.1415926535897932
//////////////////////////////////////////////////////////////////////////
// abs-Funktion für long double
//////////////////////////////////////////////////////////////////////////
//inline abs(long double x) {return fabsl(x);};
//////////////////////////////////////////////////////////////////////////
// Konvertieren von Zahlen in Strings
//////////////////////////////////////////////////////////////////////////
inline CString mcvt(long double x)
{
char buffer[255+1];
sprintf(buffer,"%Lg",x);
return CString(buffer);
}
inline CString mcvt(int x)
{
char buffer[255+1];
sprintf(buffer,"%d",x);
return CString(buffer);
}
inline CString mcvt(long x)
{
char buffer[255+1];
sprintf(buffer,"%ld",x);
return CString(buffer);
}
//////////////////////////////////////////////////////////////////////////
// besondere Mathematik-Routinen
//////////////////////////////////////////////////////////////////////////
// Konvertiert eine reelle Zahl in die rationale Form x/y
bool Rational(long double x, long maxtest, long double TOL, long& zaehler, long& nenner);
// Hilfsfunktionen ggT und kgV
long ggT(long x, long y);
long kgV(long x, long y);
// Potenzen
inline long double sqrl(long double x) { return x*x;}
inline long double kubl(long double x) { return x*x*x;}
inline long double quadl(long double x) { return x*x*x*x;}
inline long double pentl(long double x) { return x*x*x*x*x;}
inline long double sixtl(long double x) { return x*x*x*x*x*x;}
inline long double septl(long double x) { return x*x*x*x*x*x*x;}
inline long double octl(long double x) { return x*x*x*x*x*x*x*x;}
inline double sqr(double x) { return x*x;}
inline double kub(double x) { return x*x*x;}
inline double quad(double x) { return x*x*x*x;}
inline double pent(double x) { return x*x*x*x*x;}
inline double sixt(double x) { return x*x*x*x*x*x;}
inline double sept(double x) { return x*x*x*x*x*x*x;}
inline double oct(double x) { return x*x*x*x*x*x*x*x;}
// Vorzeichen als long double
inline long double signl(long double x)
{
if (x > 0.0L) return 1.0L;
if (x < 0.0L) return -1.0L;
return 0.0L;
}
inline double sign(double x)
{
if (x > 0.0) return 1.0;
if (x < 0.0) return -1.0;
return 0.0;
}
// Fakultät
long Fak(long x);
// Binomialkoeffizient (n über k)
long BinKoeff(long n, long k);
long double BinKoeffEx(long double ny, long k);
// Ganzzahldivision, Rest
inline int Div(int x, int y) { return div(x,y).quot;};
inline int Mod(int x, int y) { return div(x,y).rem;};
inline long lDiv(long x, long y) { return ldiv(x,y).quot;};
inline long lMod(long x, long y) { return ldiv(x,y).rem;};
// Fibonacci-Zahlen
long double Fibonacci(int n);
// Hilfsfunktionen, liefern "runde" Zahlen zwischen x1 und x2
long double NichtKrumm(long double x1, long double x2);
long double NichtKrumm1(long double x1, long double x2);
////////////////////////////////////////////////////////////
long double ArSinhl(long double x);
long double ArCoshl(long double x);
long double ArTanhl(long double x);
long double ArCothl(long double x);
double ArSinh(double x);
double ArCosh(double x);
double ArTanh(double x);
double ArCoth(double x);
//long double FBessel(long double n, long double x);
inline long double FEulerl() {return 2.71828182845905L;};
long double FGammal(long double x);
inline double FEuler() {return 2.71828182845905;};
double FGamma(double x);