Skip to content

Commit

Permalink
Regards #65.
Browse files Browse the repository at this point in the history
* Changed the `bcd_` arithmetic functions' return type from `int` to `DSS_HUGE`.
* `VRF_HUGE` now uses `DSS_HUGE` instead of `long` for type casts.
* Switched the `Modulus` and `Multiplier` constants in `speed_seed.c` to have smaller types which fit their values, rather than DSS_HUGE.
* Additional changes of type to `DSS_HUGE` where it seems that's needed.
  • Loading branch information
Eyal Rozenberg committed Mar 21, 2019
1 parent 08d8904 commit 0d223d8
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 31 deletions.
11 changes: 6 additions & 5 deletions src/bcd2.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ bcd2_bin(DSS_HUGE *dest, DSS_HUGE bcd)
return(0);
}

int
DSS_HUGE
bcd2_add(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE addend)
{
DSS_HUGE tmp_lo, tmp_hi, carry, res;
Expand All @@ -84,7 +84,7 @@ bcd2_add(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE addend)
return(carry);
}

int
DSS_HUGE
bcd2_sub(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE subend)
{
DSS_HUGE tmp_lo, tmp_hi, carry, res;
Expand All @@ -107,11 +107,12 @@ bcd2_sub(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE subend)
return(carry);
}

int
DSS_HUGE
bcd2_mul(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE multiplier)
{
DSS_HUGE tmp_lo, tmp_hi, carry, m_lo, m_hi, m1, m2;
int udigit, ldigit, res;
int udigit, ldigit;
DSS_HUGE res;

tmp_lo = *bcd_low;
tmp_hi = *bcd_high;
Expand Down Expand Up @@ -144,7 +145,7 @@ bcd2_mul(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE multiplier)
return(carry);
}

int
DSS_HUGE
bcd2_div(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE divisor)
{
DSS_HUGE tmp_lo, tmp_hi, carry, d1, res, digit;
Expand Down
8 changes: 4 additions & 4 deletions src/bcd2.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@

int bin_bcd2(DSS_HUGE binary, DSS_HUGE *low_res, DSS_HUGE *high_res);
int bcd2_bin(DSS_HUGE *dest, DSS_HUGE bcd);
int bcd2_add(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE addend);
int bcd2_sub(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE subend);
int bcd2_mul(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE multiplier);
int bcd2_div(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE divisor);
DSS_HUGE bcd2_add(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE addend);
DSS_HUGE bcd2_sub(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE subend);
DSS_HUGE bcd2_mul(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE multiplier);
DSS_HUGE bcd2_div(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE divisor);
DSS_HUGE bcd2_mod(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE modulo);
DSS_HUGE bcd2_cmp(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE compare);
23 changes: 7 additions & 16 deletions src/driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,15 +73,16 @@ int prep_direct (char *);
int close_direct (void);
void kill_load (void);
int pload (int tbl);
void gen_tbl (int tnum, long start, long count, long upd_num);
int pr_drange (int tbl, long min, long cnt, long num);
void gen_tbl (int tnum, DSS_HUGE start, DSS_HUGE count, long upd_num);
int pr_drange (int tbl, DSS_HUGE min, DSS_HUGE cnt, long num);
int set_files (int t, int pload);
int partial (int, int);


extern int optind, opterr;
extern char *optarg;
long rowcnt = 0, minrow = 0, upd_num = 0;
DSS_HUGE rowcnt = 0, minrow = 0;
long upd_num = 0;
double flt_scale;
#if ( defined(WIN32) && !defined(_POSIX_C_SOURCE) )
char *spawn_args[25];
Expand Down Expand Up @@ -392,7 +393,7 @@ load_dists (void)
* generate a particular table
*/
void
gen_tbl (int tnum, long start, long count, long upd_num)
gen_tbl (int tnum, DSS_HUGE start, DSS_HUGE count, long upd_num)
{
static order_t o;
supplier_t supp;
Expand All @@ -405,7 +406,7 @@ gen_tbl (int tnum, long start, long count, long upd_num)
#endif
static int completed = 0;
static int init = 0;
long i;
DSS_HUGE i;

int rows_per_segment=0;
int rows_this_segment=-1;
Expand Down Expand Up @@ -541,7 +542,7 @@ gen_tbl (int tnum, long start, long count, long upd_num)
row_stop(tnum);
if (set_seeds && (i % tdefs[tnum].base) < 2)
{
printf("\nSeeds for %s at rowcount %ld\n", tdefs[tnum].comment, i);
printf("\nSeeds for %s at rowcount " HUGE_FORMAT "\n", tdefs[tnum].comment, i);
dump_seeds(tnum);
}
}
Expand Down Expand Up @@ -1178,13 +1179,3 @@ main (int ac, char **av)
return (0);
}











2 changes: 1 addition & 1 deletion src/dss.h
Original file line number Diff line number Diff line change
Expand Up @@ -553,7 +553,7 @@ int dbg_print(int dt, FILE *tgt, void *data, int len, int eol);
#define VRF_STR(t, d) {char *xx = d; while (*xx) tdefs[t].vtotal += *xx++;}
#define VRF_INT(t,d) tdefs[t].vtotal += d
#ifdef SUPPORT_64BITS
#define VRF_HUGE(t,d) tdefs[t].vtotal = *((long *)&d) + *((long *)(&d + 1))
#define VRF_HUGE(t,d) tdefs[t].vtotal = *((DSS_HUGE *)&d) + *((DSS_HUGE *)(&d + 1))
#else
#define VRF_HUGE(t,d) tdefs[t].vtotal += d[0] + d[1]
#endif /* SUPPORT_64BITS */
Expand Down
6 changes: 3 additions & 3 deletions src/print.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
* Function Prototypes
*/
FILE *print_prep PROTO((int table, int update));
int pr_drange PROTO((int tbl, long min, long cnt, long num));
int pr_drange PROTO((int tbl, DSS_HUGE min, DSS_HUGE cnt, long num));

FILE *
print_prep(int table, int update)
Expand Down Expand Up @@ -546,9 +546,9 @@ static FILE *fp = NULL;
* oversight
*/
int
pr_drange(int tbl, long min, long cnt, long num)
pr_drange(int tbl, DSS_HUGE min, DSS_HUGE cnt, long num)
{
static int last_num = 0;
static long last_num = 0;
static FILE *dfp = NULL;
int child = -1;
long start, last, new;
Expand Down
4 changes: 2 additions & 2 deletions src/speed_seed.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ extern seed_t Seed[];
/* The book says that this will work if MAXINT for the type you choose */
/* is at least 2**46 - 1, so 64 bits is more than you *really* need */

static DSS_HUGE Multiplier = 16807; /* or whatever nonstandard */
static DSS_HUGE Modulus = 2147483647; /* trick you use to get 64 bit int */
static int Multiplier = 16807; /* or whatever nonstandard */
static long Modulus = 2147483647L; /* trick you use to get 64 bit int */

/* Advances value of Seed after N applications of the random number generator
with multiplier Mult and given Modulus.
Expand Down

0 comments on commit 0d223d8

Please sign in to comment.