aboutsummaryrefslogtreecommitdiff
path: root/bigfloat.h
blob: bcfcfd1c4ebb5790cfb3f9677b0d7688d2aadacc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/* bignum implementation for Atari OS floating point ROM.
	Only FP constants and the bignum/bugnump data types need
	be defined here. See bignum.h for API. */

#define bignum(x) char x[6]
#define bignump char *

/****** constants ******/
/* zero */
#define BIG_0 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }

/* TODO: calculate bank interest differently: this bignum
	implementation is floating point, but I might swap it out
	for an int-based one! */
/* 1.005 (bank interest) */
#define BIG_1_005 { 0x40, 0x01, 0x00, 0x50, 0x00, 0x00 }

/* bignum 100, used for score calculations in final_stats() */
#define BIG_100 { 0x41, 0x01, 0x00, 0x00, 0x00, 0x00 }

/* one thousand, one million, one hundred million */
#define BIG_1K   { 0x41, 0x10, 0x00, 0x00, 0x00, 0x00 }
#define BIG_1M   { 0x43, 0x01, 0x00, 0x00, 0x00, 0x00 }
#define BIG_100M { 0x44, 0x01, 0x00, 0x00, 0x00, 0x00 }

/* 10 million, one billion, one trillion */
#define BIG_10M  { 0x43, 0x10, 0x00, 0x00, 0x00, 0x00 }
#define BIG_1B   { 0x44, 0x10, 0x00, 0x00, 0x00, 0x00 }
#define BIG_1T   { 0x46, 0x01, 0x00, 0x00, 0x00, 0x00 }

/* max value for a ulong, 2**32-1 */
#define BIG_MAX_ULONG { 0x44, 0x42, 0x94, 0x96, 0x72, 0x95 }