File:  [CSRG BSD Unix] / 43BSD / contrib / B / src / bsmall / B1num.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:12:54 2018 UTC (8 years, 1 month ago) by root
Branches: MAIN, BSD
CVS tags: HEAD, BSD43
BSD 4.3

/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1984. */
/* $Header: /var/lib/cvsd/repos/CSRG/43BSD/contrib/B/src/bsmall/B1num.h,v 1.1.1.1 2018/04/24 16:12:54 root Exp $ */

/* Definitions for number internals */

typedef struct{double p, q;} number;
typedef double integer;
#define Zero ((integer) 0)
#define One ((integer) 1)
#define Two ((integer) 2)

#define Checknum(v) if ((v)->type != Num) error("value not a number")
#define Numerator(v) ((integer) ((number *)Ats(v))->p)
#define Denominator(v) ((integer) ((number *)Ats(v))->q)
#define Exact(v) (((number *)Ats(v))->q != Zero)
#define Integral(v) (Exact(v) && (Denominator(v)==One))
#define Approxval(v) (((number *)Ats(v))->p)
#define Numval(v) (Exact(v) ? Numerator(v)/Denominator(v) : Approxval(v))

value mk_int();
value mk_approx();
value mk_exact();


unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.