Is there SANE in GNO ? [SANE.h] #ifndef _H_math #define atan(x) _elems1(FATANX, x) #define cos(x) _elems1(FCOSX, x) #define exp(x) _elems1(FEXP, x) #define fabs(x) _fp1(FABSX, x) #define log(x) _elems1(FLNX, x) #define sin(x) _elems1(FSINX, x) #define sqrt(x) _fp1(FSQRT, x) #define tan(x) _elems1(FTANX, x) #endif #define exp1(x) _elems1(FEXP1X, x) #define exp2(x) _elems1(FEXP2X, x) #define log1(x) _elems1(FLN1X,x) #define log2(x) _elems1(FLOG2X ,x) #define logb(x) _fp1(FLOGBX, x) #define rint(x) _fp1(FRINTX, x) [SANE.c] union env void procentry(environment *e) void procexit(environment e) void getenvironment(environment *e) void setenvironment(environment e) long testhalt(exception e) void sethalt(exception e, long s) haltvector gethaltvector(void) void sethaltvector(haltvector v) roundpre getprecision(void) void setprecision(roundpre p) roundir getround(void) void setround(rounddir d) extended nextextended(extended x, extended y) extended nextdouble(extended x, extended y) extended nextfloat(extended x, extended y) numclass classextended(extended x) numclass classdouble(extended x) numclass classfloat(extended x) numclass classcomp(extended x) long signnum(extended x) relop relation(extended x, extended y) extended copysign(extended x, extended y) void x80tox96 void x96tox80 void num2dec(const decform *f, extended x, decimal *d) extended dec2num(const decimal *d) void str2dec(const void *s, short *n, decimal *d, Boolean *p) void cstr2dec(const void *s, short *n, decimal *d, Boolean *p) void dec2str(const decform *f, const decimal *d, void *s) extended str2num(void *s) void num2str(decform *f, extended x, void *s) extended annuity(extended r, extended n) extended compound(extended r, extended n) extended ipower(extended x, short c) extended power(extended x, extended y) extended randomx(extended *x) extended remainder(extended x, extended y, short *q) extended scalb(short n, extended x) extended nan(short code) extended _fp1(short op, extended x) extended _elems(short op, extended x) [SANE.p] function IEEEDefaultEnv : environment; procedure SetTrapVector(Traps: trapvector); procedure GetTrapVector(var Traps: trapvector); function X96toX80(x:extended):extended80; function X80toX96(x:extended80):Extended; function Sin(x:Extended):Extended; function Cos(x:Extended):Extended; function ArcTan(x:Extended):Extended; function Exp(x:Extended):Extended; function Ln(x:Extended):Extended; function Log2(x:Extended):Extended; function Ln1(x:Extended):Extended; function Exp2(x:Extended):Extended; function Exp1(x:Extended):Extended; function Tan(x:Extended):Extended; function GetHaltVector:LONGINT; procedure SetHaltVector:(v:LONGINT); function Num2Integer(x:Extended):INTEGER; function Num2Longint(x:Extended):LONGINT; function Num2Real(x:Extended):real; function Num2Double(x:Extended):DOUBLE; function Num2Extended(x:Extended):Comp; procedure Num2Dec(f:decform; x:Extended; var d:decimal); function Dec2Num(d:decimal):Extended; procedure Num2Str(f:decform; x:Extended; var s:DecStr); function Str2Num(s:DecStr):Extended; procedure Str2Dec(s:DecStr; var Index:INTEGER; var d:decimal; var ValidPrefix:BOOLEAN); procedure CStr2Dec(s:CStrPtr; var Inder:INTEGER; var d:decimal; var ValidPrefix:BOOLEAN); procedure Dec2Str(f:decform; d:decimal; var s:DecStr); function Remainder(x:Extended; y:Extended; var quo:INTEGER):Extended; function Rint(x:Extended):Extended; function Scalb(n:INTEGER; x:Extended):Extended; function Logb(x:Extended):Extended; function CopySign(x:Extended; y:Extended):Extended; function NextReal(x:real; y:real):real; function NextDouble(x:DOUBLE; y:DOUBLE):DOUBLE; function NextExtended(x:Extended; y:Extended):Extended; function Xpwrl(x:Extended; i:INTEGER):Extended; function XpwrY(x:Extended; y:Extended):Extended; function Compound(r:Extended; n:Extended):Extended; function Annuity(r:Extended; n:Extended):Extended; function RandomX(var x:Extended):Extended; function ClassReal(x:real):NumClass; function ClassDouble(x:DOUBLE):NumClass; function ClassComp(x:Comp):NumClass; function ClassExtended(x:Extended):INTEGER; function NAN(i:INTEGER):Extended; procedure SetException(e:Exception; b:BOOLEAN); function TestException(e:Exception):BOOLEAN; procedure SetHalt(e:Exception; b:BOOLEAN); function TestHalt(e:Exception):BOOLEAN; procedure SetRound(r:RoundDir); function GetRound:RoundDir; procedure SetPrecision(p:RoundPre); function GetPrecision:RoundPre; procedure SetEnvironment(e:environment); procedure GetEnvironment(var e:environment); procedure ProcExit(e:environment); function Relation(x:Extended; y:Extended):RelOp;