speedup log calculation by optimizing subtracting 10, regenerate reference output
This commit is contained in:
parent
ce42e30513
commit
06ca0b2829
@ -18,6 +18,7 @@
|
|||||||
// #define DEBUG_MULT_ALL //even more verbose
|
// #define DEBUG_MULT_ALL //even more verbose
|
||||||
// #define DEBUG_DIV
|
// #define DEBUG_DIV
|
||||||
#define DEBUG_LOG
|
#define DEBUG_LOG
|
||||||
|
// #define DEBUG_LOG_ALL //even more verbose
|
||||||
|
|
||||||
#ifndef DESKTOP
|
#ifndef DESKTOP
|
||||||
//#undef EXTRA_CHECKS
|
//#undef EXTRA_CHECKS
|
||||||
@ -906,15 +907,24 @@ void ln_decn(void){
|
|||||||
copy_decn(&BDecn, &A_ARR_j);
|
copy_decn(&BDecn, &A_ARR_j);
|
||||||
mult_decn();
|
mult_decn();
|
||||||
//accum -= 10
|
//accum -= 10
|
||||||
copy_decn(&BDecn, &DECN_1);
|
if (AccDecn.lsu[0] >= 10 && get_exponent(&AccDecn) > 0){ //accum.exponent is 1 while needs subtracting
|
||||||
BDecn.exponent = 1; //BDecn = 10
|
AccDecn.lsu[0] -= 10;
|
||||||
negate_decn(&BDecn);
|
} else {
|
||||||
add_decn();
|
//set as negative to get out of while(), accum will get overwritten with b_j
|
||||||
#ifdef DEBUG_LOG
|
AccDecn.exponent = -1;
|
||||||
// decn_to_str_complete(&B_j);
|
}
|
||||||
// printf(" %u: %s\n", k_j, Buf);
|
#ifdef DEBUG_LOG_ALL
|
||||||
|
decn_to_str_complete(&AccDecn);
|
||||||
|
printf(" %u: %s\t", k_j, Buf);
|
||||||
|
for (int ii = 0; ii < DEC80_NUM_LSU; ii++){
|
||||||
|
printf("%2d ", AccDecn.lsu[ii]);
|
||||||
|
}
|
||||||
|
printf(" (%d)\n", get_exponent(&AccDecn));
|
||||||
#endif
|
#endif
|
||||||
k_j++;
|
k_j++;
|
||||||
|
#ifdef DEBUG_LOG
|
||||||
|
assert(k_j != 255);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
//track num times
|
//track num times
|
||||||
NUM_TIMES.lsu[j] = k_j - 1;
|
NUM_TIMES.lsu[j] = k_j - 1;
|
||||||
@ -930,7 +940,6 @@ void ln_decn(void){
|
|||||||
A_ARR_j.lsu[0] = 11;
|
A_ARR_j.lsu[0] = 11;
|
||||||
} else {
|
} else {
|
||||||
//get next 1.000...1 value
|
//get next 1.000...1 value
|
||||||
A_ARR_j.lsu[0] &= 1;
|
|
||||||
shift_right(&A_ARR_j);
|
shift_right(&A_ARR_j);
|
||||||
A_ARR_j.lsu[0] = 10;
|
A_ARR_j.lsu[0] = 10;
|
||||||
}
|
}
|
||||||
|
@ -64,3 +64,183 @@ acc/b: 0.666666666666666672
|
|||||||
: 0.666666666666666672
|
: 0.666666666666666672
|
||||||
: 0
|
: 0
|
||||||
|
|
||||||
|
a : 0.155
|
||||||
|
ln() accum scaled between 1,10: 1.55
|
||||||
|
ln() initial accum: 8.45 (0)
|
||||||
|
0: num_times: 2, 3.8
|
||||||
|
new a_j val: 1.1
|
||||||
|
1: num_times: 5, 0.14838
|
||||||
|
new a_j val: 1.01
|
||||||
|
2: num_times: 0, 1.4838
|
||||||
|
new a_j val: 1.001
|
||||||
|
3: num_times: 1, 4.852838
|
||||||
|
new a_j val: 1.0001
|
||||||
|
4: num_times: 4, 8.5417938638869182
|
||||||
|
new a_j val: 1.00001
|
||||||
|
5: num_times: 8, 5.4219722571346027
|
||||||
|
new a_j val: 1.000001
|
||||||
|
6: num_times: 5, 4.2198936704010812
|
||||||
|
new a_j val: 1.0000001
|
||||||
|
7: num_times: 4, 2.1989475835876253
|
||||||
|
new a_j val: 1.00000001
|
||||||
|
8: num_times: 2, 1.9894761756657718
|
||||||
|
new a_j val: 1.000000001
|
||||||
|
ln() remainder: 1.9894761756657718
|
||||||
|
8: ln() remainder: 2.1989476075668969
|
||||||
|
7: ln() remainder: 4.2198945607568002
|
||||||
|
6: ln() remainder: 5.4219869560773326
|
||||||
|
5: ln() remainder: 8.5421586958743971
|
||||||
|
4: ln() remainder: 4.854015882919773
|
||||||
|
3: ln() remainder: 1.4849019213755104
|
||||||
|
2: ln() remainder: 0.148490192137551
|
||||||
|
1: ln() remainder: 4.7803580094299981
|
||||||
|
0: ln() remainder: 1.8643301620628904
|
||||||
|
ln() accum after summing: 1.8643301620628904
|
||||||
|
ln() exponent from initial: 0
|
||||||
|
ln(a): -1.8643301620628904
|
||||||
|
: 3.E-17
|
||||||
|
|
||||||
|
a : 10.
|
||||||
|
ln() accum scaled between 1,10: 1.
|
||||||
|
ln() initial accum: 9. (2)
|
||||||
|
0: num_times: 3, 2.
|
||||||
|
new a_j val: 1.1
|
||||||
|
1: num_times: 2, 3.2
|
||||||
|
new a_j val: 1.01
|
||||||
|
2: num_times: 3, 2.668632
|
||||||
|
new a_j val: 1.001
|
||||||
|
3: num_times: 2, 6.72971932632
|
||||||
|
new a_j val: 1.0001
|
||||||
|
4: num_times: 6, 7.3225796749329481
|
||||||
|
new a_j val: 1.00001
|
||||||
|
5: num_times: 7, 3.2288226738783197
|
||||||
|
new a_j val: 1.000001
|
||||||
|
6: num_times: 3, 2.2882936035502779
|
||||||
|
new a_j val: 1.0000001
|
||||||
|
7: num_times: 2, 2.8829396120902148
|
||||||
|
new a_j val: 1.00000001
|
||||||
|
8: num_times: 2, 8.8293965974900732
|
||||||
|
new a_j val: 1.000000001
|
||||||
|
ln() remainder: 8.8293965974900732
|
||||||
|
8: ln() remainder: 2.882939649749327
|
||||||
|
7: ln() remainder: 2.2882938649749879
|
||||||
|
6: ln() remainder: 3.2288278864984903
|
||||||
|
5: ln() remainder: 7.3228477888831799
|
||||||
|
4: ln() remainder: 6.7319847988868179
|
||||||
|
3: ln() remainder: 2.6721991460557481
|
||||||
|
2: ln() remainder: 3.2523191705559996
|
||||||
|
1: ln() remainder: 2.2314355131420971
|
||||||
|
0: ln() remainder: 2.3025850929940456
|
||||||
|
ln() accum after summing: 2.3025850929940456
|
||||||
|
ln() exponent from initial: 2.
|
||||||
|
ln(a): 2.30258509299404576
|
||||||
|
: 8.E-17
|
||||||
|
|
||||||
|
a : 11000000000.
|
||||||
|
ln() accum scaled between 1,10: 1.1
|
||||||
|
ln() initial accum: 8.9 (11)
|
||||||
|
0: num_times: 3, 1.2
|
||||||
|
new a_j val: 1.1
|
||||||
|
1: num_times: 1, 3.2
|
||||||
|
new a_j val: 1.01
|
||||||
|
2: num_times: 3, 2.668632
|
||||||
|
new a_j val: 1.001
|
||||||
|
3: num_times: 2, 6.72971932632
|
||||||
|
new a_j val: 1.0001
|
||||||
|
4: num_times: 6, 7.3225796749329481
|
||||||
|
new a_j val: 1.00001
|
||||||
|
5: num_times: 7, 3.2288226738783197
|
||||||
|
new a_j val: 1.000001
|
||||||
|
6: num_times: 3, 2.2882936035502779
|
||||||
|
new a_j val: 1.0000001
|
||||||
|
7: num_times: 2, 2.8829396120902148
|
||||||
|
new a_j val: 1.00000001
|
||||||
|
8: num_times: 2, 8.8293965974900732
|
||||||
|
new a_j val: 1.000000001
|
||||||
|
ln() remainder: 8.8293965974900732
|
||||||
|
8: ln() remainder: 2.882939649749327
|
||||||
|
7: ln() remainder: 2.2882938649749879
|
||||||
|
6: ln() remainder: 3.2288278864984903
|
||||||
|
5: ln() remainder: 7.3228477888831799
|
||||||
|
4: ln() remainder: 6.7319847988868179
|
||||||
|
3: ln() remainder: 2.6721991460557481
|
||||||
|
2: ln() remainder: 3.2523191705559996
|
||||||
|
1: ln() remainder: 1.2783337150988485
|
||||||
|
0: ln() remainder: 2.2072749131897207
|
||||||
|
ln() accum after summing: 2.2072749131897207
|
||||||
|
ln() exponent from initial: 11.
|
||||||
|
ln(a): 23.1211611097447817
|
||||||
|
: 0
|
||||||
|
|
||||||
|
a : 2.02E-10
|
||||||
|
ln() accum scaled between 1,10: 2.02
|
||||||
|
ln() initial accum: 7.98 (-9)
|
||||||
|
0: num_times: 2, 1.92
|
||||||
|
new a_j val: 1.1
|
||||||
|
1: num_times: 2, 2.232
|
||||||
|
new a_j val: 1.01
|
||||||
|
2: num_times: 2, 2.668632
|
||||||
|
new a_j val: 1.001
|
||||||
|
3: num_times: 2, 6.72971932632
|
||||||
|
new a_j val: 1.0001
|
||||||
|
4: num_times: 6, 7.3225796749329481
|
||||||
|
new a_j val: 1.00001
|
||||||
|
5: num_times: 7, 3.2288226738783197
|
||||||
|
new a_j val: 1.000001
|
||||||
|
6: num_times: 3, 2.2882936035502779
|
||||||
|
new a_j val: 1.0000001
|
||||||
|
7: num_times: 2, 2.8829396120902148
|
||||||
|
new a_j val: 1.00000001
|
||||||
|
8: num_times: 2, 8.8293965974900732
|
||||||
|
new a_j val: 1.000000001
|
||||||
|
ln() remainder: 8.8293965974900732
|
||||||
|
8: ln() remainder: 2.882939649749327
|
||||||
|
7: ln() remainder: 2.2882938649749879
|
||||||
|
6: ln() remainder: 3.2288278864984903
|
||||||
|
5: ln() remainder: 7.3228477888831799
|
||||||
|
4: ln() remainder: 6.7319847988868179
|
||||||
|
3: ln() remainder: 2.6721991460557481
|
||||||
|
2: ln() remainder: 2.2572860852391913
|
||||||
|
1: ln() remainder: 2.1319322046104163
|
||||||
|
0: ln() remainder: 1.5994875815809322
|
||||||
|
ln() accum after summing: 1.5994875815809322
|
||||||
|
ln() exponent from initial: -9.
|
||||||
|
ln(a): -22.3227534185273433
|
||||||
|
: 1.E-16
|
||||||
|
|
||||||
|
a : 1.5
|
||||||
|
ln() accum scaled between 1,10: 1.5
|
||||||
|
ln() initial accum: 8.5 (1)
|
||||||
|
0: num_times: 2, 4.
|
||||||
|
new a_j val: 1.1
|
||||||
|
1: num_times: 5, 3.3694
|
||||||
|
new a_j val: 1.01
|
||||||
|
2: num_times: 3, 4.413961894
|
||||||
|
new a_j val: 1.001
|
||||||
|
3: num_times: 4, 4.2564024200762553
|
||||||
|
new a_j val: 1.0001
|
||||||
|
4: num_times: 4, 2.5750519644445702
|
||||||
|
new a_j val: 1.00001
|
||||||
|
5: num_times: 2, 5.7509346574136428
|
||||||
|
new a_j val: 1.000001
|
||||||
|
6: num_times: 5, 7.5095341213443924
|
||||||
|
new a_j val: 1.0000001
|
||||||
|
7: num_times: 7, 5.0953727801950431
|
||||||
|
new a_j val: 1.00000001
|
||||||
|
8: num_times: 5, 0.953729349636862
|
||||||
|
new a_j val: 1.000000001
|
||||||
|
ln() remainder: 0.953729349636862
|
||||||
|
8: ln() remainder: 5.0953729099644855
|
||||||
|
7: ln() remainder: 7.509536940996642
|
||||||
|
6: ln() remainder: 5.7509511941013168
|
||||||
|
5: ln() remainder: 2.5750851194767976
|
||||||
|
4: ln() remainder: 4.257308525280013
|
||||||
|
3: ln() remainder: 4.4237321848621339
|
||||||
|
2: ln() remainder: 3.4274724744366382
|
||||||
|
1: ln() remainder: 5.1082562376599068
|
||||||
|
0: ln() remainder: 1.8971199848858812
|
||||||
|
ln() accum after summing: 1.8971199848858812
|
||||||
|
ln() exponent from initial: 1.
|
||||||
|
ln(a): 0.176091259055681285
|
||||||
|
: 5.5681285E-11
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user