initial commit
This commit is contained in:
403
devtools/ahcccf.bin/include/math.h
Normal file
403
devtools/ahcccf.bin/include/math.h
Normal file
@@ -0,0 +1,403 @@
|
||||
/*
|
||||
* MATH.H Math functionality for AHCC & PURE_C
|
||||
*/
|
||||
|
||||
#if ! defined MATH_H
|
||||
#define MATH_H
|
||||
|
||||
#ifdef __NO_FLOAT__
|
||||
#error floating point not implemented by this compiler
|
||||
#else
|
||||
|
||||
|
||||
#if __ABC__ || __AHCC__
|
||||
|
||||
#define FMATH_H
|
||||
#define operator __OP__
|
||||
#define cast __UC__
|
||||
|
||||
typedef double FpF(double);
|
||||
typedef double FpFF(double,double);
|
||||
|
||||
FpF ceil, floor;
|
||||
|
||||
#ifndef __68881__
|
||||
|
||||
FpF sin,cos,tan,asin,acos,atan,log,log10,log2,sqrt,
|
||||
exp,sinh,asinh,cosh,acosh,tanh,atanh,fabs,
|
||||
getexp,getman;
|
||||
|
||||
/* Of course the following is NON C
|
||||
* The ANSI standard tells us that standard headers are completely
|
||||
* implementor defined as long as their function complies the standard.
|
||||
* They need not even be files at all.
|
||||
* #include <name> however is the standerd way to invoke them.
|
||||
* Every implementor has its own way to deal with extracode software.
|
||||
* I too do it my way.
|
||||
* Basicly I borrowed this from Algol68, long before I ever heard of C,
|
||||
* or even C++.
|
||||
*/
|
||||
|
||||
/* ahcc puts every next declaration in front of the table!!
|
||||
So it is recommended to put these declarations
|
||||
in ascending order of frequency.
|
||||
Put the most frequent at the end.
|
||||
*/
|
||||
#define __IEEE__
|
||||
double operator * (double,double) XXmul,
|
||||
operator / (double,double) XXdiv,
|
||||
/* operator % (double,double) XXrem, */
|
||||
operator + (double,double) XXadd,
|
||||
operator - (double,double) XXsub,
|
||||
operator - (double) Xneg;
|
||||
|
||||
bool operator ! (double) Xnot,
|
||||
operator < (double,double) XXcmp,
|
||||
operator > (double,double) XXcmp,
|
||||
operator <= (double,double) XXcmp,
|
||||
operator >= (double,double) XXcmp,
|
||||
operator == (double,double) XXcmp,
|
||||
operator != (double,double) XXcmp;
|
||||
|
||||
unsigned
|
||||
long cast(double) Xlcnv;
|
||||
int cast(double) Xlcnv;
|
||||
unsigned
|
||||
int cast(double) Xlcnv;
|
||||
char cast(double) Xlcnv;
|
||||
unsigned
|
||||
char cast(double) Xlcnv;
|
||||
float cast(double) Xfcnv;
|
||||
long cast(double) Xlcnv;
|
||||
double cast(float) fXcnv,
|
||||
cast(unsigned long) ulXcnv,
|
||||
cast(unsigned int) uiXcnv,
|
||||
cast(unsigned char) uiXcnv,
|
||||
cast(char) iXcnv,
|
||||
cast(int) iXcnv,
|
||||
cast(long) lXcnv;
|
||||
|
||||
#ifdef __IEEE__ /* if allready determined */
|
||||
/* in fact this is determined by the called software itself,
|
||||
so here are the names */
|
||||
float operator * (float,float) FFmul,
|
||||
operator / (float,float) FFdiv,
|
||||
/* operator % (float,float) FFrem, */
|
||||
operator + (float,float) FFadd,
|
||||
operator - (float,float) FFsub,
|
||||
operator - (float) Fneg;
|
||||
|
||||
bool operator ! (float) Fnot,
|
||||
operator < (float,float) FFcmp,
|
||||
operator > (float,float) FFcmp,
|
||||
operator <= (float,float) FFcmp,
|
||||
operator >= (float,float) FFcmp,
|
||||
operator == (float,float) FFcmp,
|
||||
operator != (float,float) FFcmp;
|
||||
|
||||
unsigned
|
||||
long cast(float) _Flcnv;
|
||||
int cast(float) _Flcnv;
|
||||
unsigned
|
||||
int cast(float) _Flcnv;
|
||||
char cast(float) _Flcnv;
|
||||
unsigned
|
||||
char cast(float) _Flcnv;
|
||||
long cast(float) _Flcnv;
|
||||
float cast(unsigned long) _ulFcnv,
|
||||
cast(unsigned) _uiFcnv,
|
||||
cast(char) _iFcnv, /* char on stack becomes int */
|
||||
cast(int) _iFcnv,
|
||||
cast(long) _lFcnv;
|
||||
|
||||
#else
|
||||
/* here are the old SOZOBON names.
|
||||
I know some names dont really exist, but this how
|
||||
it should be done and the missing ones can
|
||||
be added anytime. */
|
||||
float operator * (float,float) fpmul,
|
||||
operator / (float,float) fpdiv,
|
||||
/* operator % (float,float) fprem, */
|
||||
operator + (float,float) fpadd,
|
||||
operator - (float,float) fpsub,
|
||||
operator - (float) fpneg;
|
||||
|
||||
bool operator ! (float) fpnot,
|
||||
operator < (float,float) fpcmp,
|
||||
operator > (float,float) fpcmp,
|
||||
operator <= (float,float) fpcmp,
|
||||
operator >= (float,float) fpcmp,
|
||||
operator == (float,float) fpcmp,
|
||||
operator != (float,float) fpcmp;
|
||||
|
||||
unsigned
|
||||
long cast(float) _fpftol;
|
||||
int cast(float) _fpftol;
|
||||
unsigned
|
||||
int cast(float) _fpftol;
|
||||
char cast(float) _fpftol;
|
||||
unsigned
|
||||
char cast(float) _fpftol;
|
||||
long cast(float) _fpftol;
|
||||
float cast(unsigned long) _fpultof,
|
||||
cast(unsigned) _fpuitof,
|
||||
cast(char) _fpitof, /* char on stack becomes int */
|
||||
cast(int) _fpitof,
|
||||
cast(long) _fpltof;
|
||||
#endif
|
||||
|
||||
#else /* if FPU, built in monadic operators (compiler opt -8) */
|
||||
|
||||
#define fabs(f) __FABS__(f)
|
||||
#define trunc(f) __FINTRZ__(f)
|
||||
#define fint(f) __FINT__(f)
|
||||
#define sqrt(f) __FSQRT__(f)
|
||||
#define fintrz(f) __FINTRZ__(f)
|
||||
|
||||
#if ! __COLDFIRE__
|
||||
#define sin(f) __FSIN__(f)
|
||||
#define cos(f) __FCOS__(f)
|
||||
#define tan(f) __FTAN__(f)
|
||||
#define asin(f) __FASIN__(f)
|
||||
#define acos(f) __FACOS__(f)
|
||||
#define atan(f) __FATAN__(f)
|
||||
#define fetoxm1(f) __FETOXM1__(f)
|
||||
#define log(f) __FLOGN__(f)
|
||||
#define flognp1(f) __FLOGNP1__(f)
|
||||
#define log2(f) __FLOG2__(f)
|
||||
#define log10(f) __FLOG10__(f)
|
||||
#define fneg(f) __FNEG__(f)
|
||||
#define exp(f) __FETOX__(f)
|
||||
#define sinh(f) __FSINH__(f)
|
||||
#define cosh(f) __FCOSH__(f)
|
||||
#define tanh(f) __FTANH__(f)
|
||||
#define atanh(f) __FATANH__(f)
|
||||
#define fgetexp(f) __FGETEXP__(f)
|
||||
#define fgetman(f) __FGETMAN__(f)
|
||||
#define pow10(f) __FTENTOX__(f)
|
||||
#define pow2(f) __FTWOTOX__(f)
|
||||
#else
|
||||
double atof(const char *);
|
||||
double ldexp(double b, int n);
|
||||
double frexp(double b, int *ip);
|
||||
double modf(double b, double *op);
|
||||
double fmod( double x, double y );
|
||||
double cos( double x );
|
||||
double sin( double x );
|
||||
double tan( double x );
|
||||
double acos( double x );
|
||||
double asin( double x );
|
||||
double atan( double x );
|
||||
double cosh( double x );
|
||||
double sinh( double x );
|
||||
double tanh( double x );
|
||||
double atanh( double x );
|
||||
double log10( double x );
|
||||
double log2( double x );
|
||||
double log ( double x );
|
||||
double exp ( double x );
|
||||
double pow10( int i );
|
||||
double pow2 ( double x );
|
||||
#endif
|
||||
#endif
|
||||
|
||||
FpFF atan2,pow,fmod;
|
||||
FpF asinh, acosh;
|
||||
double ldexp(double b, int n);
|
||||
double frexp(double b, int *ip);
|
||||
double modf(double b, double *op);
|
||||
|
||||
/* Some useful constants, generally to 21 digits */
|
||||
|
||||
#define M_E 2.71828182845904523536
|
||||
#define M_LOG2E 1.44269504088896340736
|
||||
#define M_LOG10E 0.434294481903251827651
|
||||
#define M_LN2 0.693147180559945309417
|
||||
#define M_LN10 2.30258509299404568402
|
||||
#define M_PI 3.14159265358979323846
|
||||
#define M_PI_2 1.57079632679489661923
|
||||
#define M_PI_4 0.785398163397448309116
|
||||
#define M_1_PI 0.318309886183790671538
|
||||
#define M_2_PI 0.636619772367581343076
|
||||
#define M_1_SQRTPI 0.564189583547756286948
|
||||
#define M_2_SQRTPI 1.12837916709551257390
|
||||
#define M_SQRT2 1.41421356237309504880
|
||||
#define M_SQRT_2 0.707106781186547524401
|
||||
|
||||
#if __COLDFIRE__
|
||||
#define MAXREAL (double)1.79769313486232E+308 /* 64 bits */
|
||||
#else
|
||||
#define MAXREAL (double)1.189731495357231765E+4932 /* 80 bits */
|
||||
#endif
|
||||
#define HUGE_VAL MAXREAL
|
||||
|
||||
#define _ABS(x) ((x) < 0 ? -(x) : (x))
|
||||
|
||||
#undef operator
|
||||
#undef cast
|
||||
|
||||
#else /* not AHCC */
|
||||
/* MATH.H
|
||||
|
||||
Mathematical Definition Includes
|
||||
|
||||
Copyright (c) Borland International 1990
|
||||
All Rights Reserved.
|
||||
*/
|
||||
|
||||
|
||||
#define __MATH
|
||||
|
||||
#if __COLDFIRE__
|
||||
#define HUGE_VAL 1.79769313486232E+308 /* 64 bits */
|
||||
#else
|
||||
#define HUGE_VAL 1.189731495357231765E+4932 /* 80 bits */
|
||||
#endif
|
||||
|
||||
#define M_E 2.71828182845904523536
|
||||
#define M_LOG2E 1.44269504088896340736
|
||||
#define M_LOG10E 0.434294481903251827651
|
||||
#define M_LN2 0.693147180559945309417
|
||||
#define M_LN10 2.30258509299404568402
|
||||
#define M_PI 3.14159265358979323846
|
||||
#define M_PI_2 1.57079632679489661923
|
||||
#define M_PI_4 0.785398163397448309116
|
||||
#define M_1_PI 0.318309886183790671538
|
||||
#define M_2_PI 0.636619772367581343076
|
||||
#define M_1_SQRTPI 0.564189583547756286948
|
||||
#define M_2_SQRTPI 1.12837916709551257390
|
||||
#define M_SQRT2 1.41421356237309504880
|
||||
#define M_SQRT_2 0.707106781186547524401
|
||||
|
||||
double fabs( double x );
|
||||
double ceil( double x );
|
||||
double floor( double x );
|
||||
/* double round( double x ); */
|
||||
double trunc( double x );
|
||||
|
||||
double fmod( double x, double y );
|
||||
double exp( double x );
|
||||
double log( double x );
|
||||
double log2( double x );
|
||||
double log10( double x );
|
||||
|
||||
double frexp( double x, int *nptr );
|
||||
double ldexp( double x, int n );
|
||||
double modf( double x, double *nptr );
|
||||
|
||||
double pow( double x, double y );
|
||||
double pow10( int i );
|
||||
double pow2( double i );
|
||||
double sqrt( double x );
|
||||
|
||||
double cos( double x );
|
||||
double sin( double x );
|
||||
double tan( double x );
|
||||
void sincos( double x, double *sin, double *cos );
|
||||
|
||||
double acos( double x );
|
||||
double asin( double x );
|
||||
double atan( double x );
|
||||
double atan2( double x, double y );
|
||||
double cosh( double x );
|
||||
double sinh( double x );
|
||||
double tanh( double x );
|
||||
|
||||
double acosh( double x );
|
||||
double asinh( double x );
|
||||
double atanh( double x );
|
||||
double pow( double x, double y );
|
||||
|
||||
short ftoa( double *x, char *resStr, short ndig, short format,
|
||||
short *decPnt, short *sign );
|
||||
|
||||
double atof( const char *digStr );
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DOMAIN = 1, /* argument domain error -- log (-1) */
|
||||
SING, /* argument singularity -- pow (0,-2)) */
|
||||
OVERFLOW, /* overflow range error -- exp (1000) */
|
||||
UNDERFLOW /* underflow range error -- exp (-1000) */
|
||||
} mexcep;
|
||||
|
||||
struct exception
|
||||
{
|
||||
mexcep type;
|
||||
char *name;
|
||||
double arg1;
|
||||
double arg2;
|
||||
double retval;
|
||||
};
|
||||
|
||||
|
||||
void setmatherr( short (*errorfunc)( struct exception *e ) );
|
||||
short fpumode( short dis );
|
||||
void xdcnv( double *val, void *rep8bytes );
|
||||
void dxcnv( void *rep8bytes, double *val );
|
||||
|
||||
#if defined( __68881__ )
|
||||
double fint( double x );
|
||||
double fintrz( double x );
|
||||
double fgetexp( double x );
|
||||
double fgetman( double x );
|
||||
double frem( double x, double y );
|
||||
double fsgldiv( double x, double y );
|
||||
double fsglmul( double x, double y );
|
||||
double fetoxm1( double x );
|
||||
double flognp1( double x );
|
||||
double pow2( double x );
|
||||
#endif
|
||||
|
||||
#if defined( __68881__ ) && !defined( __NFPUIN__ )
|
||||
/* MC68881 extensions */
|
||||
/* Arithmetische Befehle: */
|
||||
#define trunc( x ) __FINTRZ__( x )
|
||||
#define fabs( x ) __FABS__( x )
|
||||
#define fgetexp( x ) __FGETEXP__( x )
|
||||
#define fgetman( x ) __FGETMAN__( x )
|
||||
#define fint( x ) __FINT__( x )
|
||||
#define fintrz( x ) __FINTRZ__( x )
|
||||
|
||||
#define fmod( x, y ) __FMOD__( y, x )
|
||||
#define frem( x, y ) __FREM__( y, x )
|
||||
#define ldexp( x, y ) __FSCALE__( y, x )
|
||||
#define fsgldiv( x, y ) __FSGLDIV__( y, x )
|
||||
#define fsglmul( x, y ) __FSGLMUL__( y, x )
|
||||
|
||||
/* Potenzen und Logarithmen: */
|
||||
#define exp( x ) __FETOX__( x )
|
||||
#define fetoxm1( x ) __FETOXM1__( x )
|
||||
#define log( x ) __FLOGN__( x )
|
||||
#define flognp1( x ) __FLOGNP1__( x )
|
||||
#define log10( x ) __FLOG10__( x )
|
||||
#define log2( x ) __FLOG2__( x )
|
||||
#define sqrt( x ) __FSQRT__( x )
|
||||
#define pow10( x ) __FTENTOX__( x )
|
||||
#define pow2( x ) __FTWOTOX__( x )
|
||||
|
||||
/* Trigonometrie: */
|
||||
#define acos( x ) __FACOS__( x )
|
||||
#define asin( x ) __FASIN__( x )
|
||||
#define atan( x ) __FATAN__( x )
|
||||
#define cos( x ) __FCOS__( x )
|
||||
#define sin( x ) __FSIN__( x )
|
||||
#define tan( x ) __FTAN__( x )
|
||||
|
||||
/* Hyperbelfunktionen: */
|
||||
#define atanh( x ) __FATANH__( x )
|
||||
#define cosh( x ) __FCOSH__( x )
|
||||
#define sinh( x ) __FSINH__( x )
|
||||
#define tanh( x ) __FTANH__( x )
|
||||
|
||||
/* Conversionsfunktionen nur f<>r TC881LIB.LIB */
|
||||
double x80x96cnv( void *rep10bytes );
|
||||
void x96x80cnv( double rep12bytes, void *rep10bytes );
|
||||
|
||||
#endif
|
||||
#endif /* __ABC__ || __AHCC__ */
|
||||
|
||||
#endif /* __NO_FLOAT__ */
|
||||
|
||||
#endif /* MATH_H */
|
||||
Reference in New Issue
Block a user