make sure number not negative before trying to take log

also remove some TODOs
This commit is contained in:
Jeff Wang 2019-10-02 22:51:02 -04:00
parent cb92a82f4b
commit 77d18b57c5

View File

@ -858,13 +858,18 @@ void ln_decn(void){
// {0, {99, 99, 99, 99, 95, 2, 19, 27, 11}}, // {0, {99, 99, 99, 99, 95, 2, 19, 27, 11}},
}; };
uint8_t j, k; uint8_t j, k;
exp_t initial_exp;
#define B_j Tmp2Decn #define B_j Tmp2Decn
#define NUM_TIMES Tmp3Decn #define NUM_TIMES Tmp3Decn
#define A_ARR_j Tmp4Decn #define A_ARR_j Tmp4Decn
//check not negative
if (AccDecn.exponent < 0){
set_dec80_NaN(AccDecn);
return;
}
//normalize //normalize
exp_t initial_exp;
remove_leading_zeros(&AccDecn); remove_leading_zeros(&AccDecn);
//TODO: error for negative numbers
//scale to between 1 and 10 //scale to between 1 and 10
initial_exp = get_exponent(&AccDecn) + 1; initial_exp = get_exponent(&AccDecn) + 1;
AccDecn.exponent = 0; AccDecn.exponent = 0;
@ -890,7 +895,7 @@ void ln_decn(void){
for (j = 0; j < NUM_A_ARR; j++){ for (j = 0; j < NUM_A_ARR; j++){
uint8_t k_j; uint8_t k_j;
if (j != 0){ if (j != 0){
//b_j *= 10.0 //TODO: necessary? //b_j *= 10.0
shift_left(&B_j); shift_left(&B_j);
} }
copy_decn(&AccDecn, &B_j); //accum = b_j copy_decn(&AccDecn, &B_j); //accum = b_j
@ -941,7 +946,6 @@ void ln_decn(void){
decn_to_str_complete(&AccDecn); decn_to_str_complete(&AccDecn);
printf("ln() remainder: %s\n", Buf); printf("ln() remainder: %s\n", Buf);
#endif #endif
//TODO: scale remainder?
for (j = NUM_A_ARR - 1; j < NUM_A_ARR; j--){ //sum in reverse order, note: (j < NUM_A_ARR) == signed(j >= 0) for (j = NUM_A_ARR - 1; j < NUM_A_ARR; j--){ //sum in reverse order, note: (j < NUM_A_ARR) == signed(j >= 0)
for (k = 0; k < NUM_TIMES.lsu[j]; k++){ for (k = 0; k < NUM_TIMES.lsu[j]; k++){
//accum += ln_a_arr[j]; //accum += ln_a_arr[j];
@ -1004,8 +1008,6 @@ void ln_decn(void){
copy_decn(&BDecn, &B_j); copy_decn(&BDecn, &B_j);
add_decn(); add_decn();
//TODO: AccDecn.exponent += ;
//try not to pollute namespace //try not to pollute namespace
#undef B_j #undef B_j
#undef NUM_TIMES #undef NUM_TIMES