From 56e3034f9dbba920ad28553dc5a135bbe39bf26e Mon Sep 17 00:00:00 2001 From: Jeff Wang Date: Tue, 22 Oct 2019 02:13:29 -0400 Subject: [PATCH] bugfix for exponents > 127 getting printed as negative --- src/decn/decn.c | 7 +++++-- src/decn/decn.h | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/decn/decn.c b/src/decn/decn.c index b26e3ca..08e2f72 100644 --- a/src/decn/decn.c +++ b/src/decn/decn.c @@ -700,7 +700,7 @@ void mult_decn(void){ //calculate new exponent new_exponent = get_exponent(&AccDecn) + get_exponent(&BDecn); #ifdef DEBUG_MULT - printf("\n new exponent: %d:", new_exponent); + printf("\n new exponent: %d, is_neg: %u", new_exponent, is_neg); #endif //do multiply for (i = DEC80_NUM_LSU - 1; i >= 0; i--){ @@ -755,6 +755,9 @@ void mult_decn(void){ TmpDecn.lsu[0] += carry*10; } //set new exponent, checking for over/underflow +#ifdef DEBUG_MULT + printf("\n new exponent: %d, is_neg: %u\n", new_exponent, is_neg); +#endif if (new_exponent < DEC80_MAX_EXP && new_exponent > DEC80_MIN_EXP){ set_exponent(&TmpDecn, new_exponent, is_neg); } else { @@ -1359,7 +1362,7 @@ int8_t decn_to_str(const dec80* x){ //print exponent if (use_sci){ //check for overflow - if (exponent > DEC80_MAX_EXP || exponent < DEC80_MIN_EXP){ + if (exponent > DECN_MAX_PRINT_EXP || exponent < DECN_MIN_PRINT_EXP){ set_str_error(); return 0; } diff --git a/src/decn/decn.h b/src/decn/decn.h index 19942ed..6975e9a 100644 --- a/src/decn/decn.h +++ b/src/decn/decn.h @@ -32,6 +32,9 @@ typedef int8_t exp_t; #define DEC80_NAN_EXP (-63 - 1) //-64 #endif +//for printing: exponent gets returned as int8_t +#define DECN_MIN_PRINT_EXP (-128) +#define DECN_MAX_PRINT_EXP 128 //decimal80 unpacked into 80 bits // for computation