[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: I think I have to change my opinion from bad precision to buggy c alculations



PureBytes Links

Trading Reference Links

Thanks a lot.
Could you explain this to Mats Bengtsson ?

PO

> -----Message d'origine-----
> De : Gary Yakhnes [mailto:gary@xxxxxxxxx]
> Envoye : mercredi 18 juillet 2001 17:12
> A : omega-list@xxxxxxxxxx
> Objet : RE: I think I have to change my opinion from bad
> precision to buggy c alculations
>
>
> Hello Pierre Orphelin,
>
> I must admit that you are absolutely correct here and I was wrong.
>
> Thanks for your post.
> Gary
>
>
> >   > > > Hello Pierre Orphelin,
> >   > > >
> >   > > > Let's imagine for a moment that no such terrible things as
> >   > > > "errors over bars",  "double precision" and "epsilon" are exist.
> >   > > > To do this let's look at the simple Indicator with Single
> >   > > > precision, Single bar (lastbaronchart) and hopefully no
> "epsilon"
> >   > > > (whatever it is):
> >   > > >
> >   > > > {########################################}
> >   > > > If LastBarOnChart Then Begin
> >   > > > Value1 = 10.3 - 10.2;
> >   > > > Value2 = 10.2 - 10.1;
> >   > > > If Value1 > Value2 Then Value3 = 1 Else Value3=0;
> >   > > > plot1 (Value3);
> >   > > > End;
> >   > > > {########################################}
> >   > > >
> >
> >   Here is an other misunderstanding of Float 7 digits precision
> >
> >   If LastBarOnChart Then Begin
> >   Value1 = 10.3 - 10.2;
> >   Value2 = 10.2 - 10.1;
> >    If Value1 > Value2 Then Value3 = 1 Else Value3=0;
> >    plot1 (Value3);
> >    messagelog(value1:15:15,value2:15:15);
> >    End;
> >
> >   Produces:
> >
> >          0.100000000000000                   //
> 0.099999400000000   //
> >   Precision is impossible to determine //         Precison is
> obviously 5
> >   digits
> >   ( 5 assumed, cannot be more)
> >
> >   Is it a bug? NO.
> >
> >   Value1 = 10.3 - 10.2 contains two numbers with  7 digits precision
> >   10.3 is  stored as  10.30000xxxx
> >   10.2 is  stored as  10.20000xxxx
> >   where xxx is unknown to Float precision and will produce
> garbage after 7th
> >   digit,
> >
> >   When difference is calculated it is performed on  7 digit - 7 digits
> >   BUT:
> >   10.y - 10.z will produce 00.[y-z]. -y=3,  z=2
> >   So the 2 digits are lost in the difference because 10 -10 =
> 00, and only
> >   beacuqse of that.
> >   What remains is  5 digit and is conform to the original initial Float
> >   precision.
> >
> >   There is no bug at all, only a special case where the
> difference of two very
> >   close numbers remove the 2 digits to the left.
> >
> >   The only solution is to have more than a float  to store
> numbers, but even
> >   a double will lose the  2 digits of the original double precision.
> >   So this kind of operation will always lose precision in terms
> of digits, but
> >   not in intriinsic precision ( the precision of the difference
> is ONE digit
> >   in this case = 0.1)
> >
> >   And again, the difference here is far beyond the  THREE
> digits precision of
> >   the original numbers.
> >
> >   'Cannot undestand why you focus on such stupid things that
> are only logic
> >   and does not involve any  form of bug.
> >   You will have the same problem using C or anything you want
> with 7 digits
> >   float precision.
> >
> >   Sincerely,
> >
> >   Pierre Orphelin
> >   www.sirtrade.com
> >   TradeStation Technologies representative in France
> >
> >
> >
> >
> >
> >
>