So after further investigation.

I code loop in VBS double. Result is not the same than SUM, nor FOR.
So SUM or FOR are not exact, but they act not the same in rounding. I thing 
the arythmetic order to calculate is not the same in FOR and in SUM so 
rounding are different, so result are different.
But one or other, result is not accurate.
If I want to stay in AFL and I had to choose between SUM and FOR, wich one I 
will go ? As they are both innacurate, SUM seems better ?


I test max/min number for AFL after reading the link from Paul : 
http://en.wikipedia.org/wiki/IEEE_754

Code :

ieee = -1e10;
_TRACE("IEEE:"+ ieee); // to show exponent
_TRACE("IEEE:"+ NumToStr(ieee,1.9) ); // to show innacurate digit

And try after with :
ieee = 1e11;

exponant should go from -126 to +127, but in our case :
ieee = 1e-10; -> result are infinite
ieee = 1e11; -> ok for direct trace, but with numtostr there is rounding and 
do not use exponent notation
ieee = 1e39; -> result are infinite

So my question, wy exponent go from -10 to 39 !?
And NumToStr(x,1.9), seems to send back rounding result. Cannot it send back 
with exponent notation and no rounding like direct _trace ?

Second, accuracy seems 7 digit, but it should be 6 digit ? (max number from 
the mantisse is 2^23 - 1 = 8388607, that give 7 number so six digit sure).
Try: ieee = 99999981
7th digit is ok. 8th digit is wrong.

So AB use wich encoding (not IEEE_754 ?) and difference between direct 
_trace and _trace with NumToStr come from NumToStr wich make rounding for 
big exponent ?

Cheers,
Mich.

_________________________________________________________________
Windows Live Messenger sur i-modeĀ™ : dialoguez avec vos amis depuis votre 
mobile comme sur PC ! http://mobile.live.fr/messenger/bouygues/

Reply via email to