mirror of
https://github.com/byteworksinc/ORCA-C.git
synced 2024-09-30 23:55:14 +00:00
1 line
6.6 KiB
C
1 line
6.6 KiB
C
|
/********************************************
; File: SANE.h
;
;
; Copyright Apple Computer, Inc.1986-90
; All Rights Reserved
;
********************************************/
#ifndef __TYPES__
#include <TYPES.h>
#endif
#ifndef __SANE__
#define __SANE__
/* Decimal Representation Constants */
#define SIGDIGLEN 0x001C
#define DECSTROUTLEN 0x0050
/* IEEE defualt environment constant */
#define IEEEDEFAULTENV 0x0000
/* Decimal formatting styles */
#define FLOATDECIMAL 0x0000
#define FIXEDDECIMAL 0x0001
/* Exceptions */
#define INVALID 0x0001
#define UNDERFLOW 0x0002
#define OVERFLOW 0x0004
#define DIVBYZERO 0x0008
#define INEXACT 0x0010
/* Ordering relations */
#define GREATERTHAN 0
#define LESSTHAN 1
#define EQUALTO 2
#define UNORDERED 3
typedef short relop ;
/* Inquiry classes */
#define SNAN 0
#define QNAN 1
#define INFINITE 2
#define ZERONUM 3
#define NORMALNUM 4
#define DENORMALNUM 5
typedef short numclass ;
/* Environmental control */
/* Rounding directions */
#define TONEAREST 0
#define UPWARD 1
#define DOWNWARD 2
#define TOWARDZERO 3
typedef short rounddir ;
/* Rounding precisions */
#define EXTPRECISION 0
#define DBLPRECISION 1
#define FLOATPRECISION 2
typedef short roundpre ;
typedef short exception;
typedef short environment;
typedef struct decimal {
short sgn; /* sign 0 for +, 1 for - */
short exp; /* decimal exponent */
struct {
unsigned char length, text[SIGDIGLEN], unused;
} sig; /* significant digits */
} decimal, Decimal;
struct decform {
short style; /* FLOATDECIMAL or FIXEDDECIMAL */
short digits;
} ;
typedef struct decform decform;
typedef struct decform DecForm;
typedef void (*haltvector)(void);
Extended fabs (Extended x) ;
/* Conversions between binary and decimal */
void num2dec (DecForm *f,extended x,Decimal *d) ;
/* d <-- x according to format f */
Extended dec2num (Decimal *d) ;
/* Dec2Num <-- d as Extended */
/* Conversions between decimal formats */
void str2dec (char *s,short *index,Decimal *d,short *validPrefix) ;
/* On input Index is starting index into s.
On output Index is one greater than index of last character of longest numeric substring.
d <-- Decimal rep of longest numeric substring;
validPrefix <-- s, beginning at Index, contains valid numeric string or valid prefix of some numeric string */
void dec2str (DecForm *f,Decimal *d,char *s) ;
/* s <-- d according to format f */
/* Arithmetic, auxiliary and elementary functions */
Extended remainder (Extended x,Extended y,short *quo) ;
/* Remainder <-- x rem y; */
/* quo <-- 7 low-order bits of integer quotient x/y */
/* where -127 < quo < 127 */
Extended sqrt (Extended x) ;
/* square root */
Extended rint (Extended x) ;
/* round to integral value */
Extended scalb (short n,Extended x) ;
/* scale binary; scalb <-- x * 2^n */
Extended logb (Extended x) ;
/* binary log: binary exponent of normalized x */
Extended copysign (Extended x,Extended y) ;
/* CopySign <-- y with sign of x */
Extended nextfloat (Extended x,Extended y) ;
/* next float rep after (float) x in direction of (float) y */
Extended nextdouble (Extended x,Extended y) ;
/* next Double rep after (Double) x in direction of (Double) y */
Extended nextextended (Extended x,Extended y) ;
/* next extended representation after x in direction of y */
Extended log2 (Extended x) ;
/* base-2 logarithm */
Extended log (Extended x) ;
/* base-e logarithm */
Extended log1 (Extended x) ;
/* log(1 + x) */
Extended exp2 (Extended x) ;
/* base-2 exponential */
Extended exp (Extended x) ;
/* base-e exponential */
Extended exp1 (Extended x) ;
/* exp(x) - 1 */
Extended power (Extended x,Extended y) ;
/* general exponential: x ^ y */
Extended ipower (Extended x,short i) ;
/* integer exponential: x ^ i */
Extended compound (Extended r,Extended n) ;
/* compound: (1 + r) ^ n */
Extended annuity (Extended r,Extended n) ;
/* Annuity <-- (1 - (1+r)^(-n)) / r */
Extended tan (Extended x) ;
/* tangent */
Extended sin (Extended x)
|