bugfix for exponents > 127 getting printed as negative

This commit is contained in:
Jeff Wang 2019-10-22 02:13:29 -04:00
parent f7da807dd4
commit 56e3034f9d
2 changed files with 8 additions and 2 deletions

View File

@ -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;
}

View File

@ -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