|
|
1.1 ! root 1: /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1984. */ ! 2: /* $Header: B1num.h,v 1.1 84/06/28 00:48:38 timo Exp $ */ ! 3: ! 4: /* Definitions for number internals */ ! 5: ! 6: typedef struct{double p, q;} number; ! 7: typedef double integer; ! 8: #define Zero ((integer) 0) ! 9: #define One ((integer) 1) ! 10: #define Two ((integer) 2) ! 11: ! 12: #define Checknum(v) if ((v)->type != Num) error("value not a number") ! 13: #define Numerator(v) ((integer) ((number *)Ats(v))->p) ! 14: #define Denominator(v) ((integer) ((number *)Ats(v))->q) ! 15: #define Exact(v) (((number *)Ats(v))->q != Zero) ! 16: #define Integral(v) (Exact(v) && (Denominator(v)==One)) ! 17: #define Approxval(v) (((number *)Ats(v))->p) ! 18: #define Numval(v) (Exact(v) ? Numerator(v)/Denominator(v) : Approxval(v)) ! 19: ! 20: value mk_int(); ! 21: value mk_approx(); ! 22: value mk_exact(); ! 23:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.