extra checks for multiply

This commit is contained in:
Mirko Scholz 2020-09-05 10:35:45 +02:00
parent 6487fbde6e
commit 6ab4cfb714
2 changed files with 19 additions and 0 deletions

View File

@ -696,6 +696,12 @@ void mult_decn(void){
uint8_t carry = 0;
uint8_t is_neg;
exp_t new_exponent;
#ifdef EXTRA_CHECKS
if (decn_is_nan(&AccDecn) || decn_is_nan(&BDecn)) {
set_dec80_NaN(&AccDecn);
return;
}
#endif
//initialize values
set_dec80_zero(&TmpDecn);
//normalize

View File

@ -243,6 +243,19 @@ TEST_CASE("multiply"){
decn_to_str_complete(&AccDecn);
CHECK_THAT(Buf, Equals("Error")); //acc*b
//NaN
build_dec80("9.99", DEC80_MAX_EXP/2);
set_dec80_NaN(&BDecn);
mult_decn();
decn_to_str_complete(&AccDecn);
CHECK_THAT(Buf, Equals("Error")); //acc*b
//NaN
set_dec80_NaN(&AccDecn);
build_decn_at(&BDecn, "9.99", DEC80_MAX_EXP/2);
mult_decn();
decn_to_str_complete(&AccDecn);
CHECK_THAT(Buf, Equals("Error")); //acc*b
}
static void div_test(