in reply to Comparison misses a true in *some* cases

I didn't read everything, but I see floating point numbers, and I see comparisons. Perhaps you're not aware of the "approximation" factor in floating point numbers, where apparently obvious things like (2 / 0.1) == 20 are not necessarily true. I'll keep reading the thread to see if it's something else, but I'd put a bet on this one.

-- Randal L. Schwartz, Perl hacker

  • Comment on Re: Comparison misses a true in *some* cases

Replies are listed 'Best First'.
(tye)Re: Comparison misses a true in *some* cases
by tye (Sage) on Apr 06, 2001 at 21:22 UTC

    Yes, that is the problem.

    DB<27> x $start 0 0.6 DB<28> x $store->[3] 0 0.6 DB<29> x 0.6 == $start 0 ''
    jeroenes, repeat the above and do "x $start-0.6" and you may be enlightened.

    Update: So we all can take part in the fun:

    DB<1> $x=0.6 DB<2> x ($l,$h)=unpack"L*",pack"d",$x 0 858993459 1 1071854387 DB<3> x $y=unpack"d",pack"L*",$l+1,$h 0 0.6 DB<4> x $z=unpack"d",pack"L*",$l-1,$h 0 0.6 DB<5> x $y-$x 0 '1.11022302462516e-016' DB<6> x $x-$z 0 '1.11022302462516e-016' DB<7> x $y-$z 0 '2.22044604925031e-016' DB<8> x unpack"d",pack"L*",$l-4,$h 0 0.6 DB<9> x unpack"d",pack"L*",$l-5,$h 0 0.599999999999999 DB<10> x unpack"d",pack"L*",$l+4,$h 0 0.6 DB<11> x unpack"d",pack"L*",$l+5,$h 0 0.600000000000001
    Welcome to floating point.

            - tye (but my friends call me "Tye")
      merlyn, tye and tilly (in CB): thanks a lot. tye especially thanks for the warm welcome ;-). Your debug-lines clear up a lot, I must say.

      This whole thread is a nice example of a testing procedure gone that evokes it's own problems. My real-world data will, by definition, never repeat. Accidently, some datapoints may have an exact interval of one second, but that chance will be neglectable. (1 out of 1000 or less, I estimate)

      I will be on guard for the floating point arrhythmic from now on.

      Jeroen
      "We are not alone"(FZ)