World: r3wp
[!REBOL3-OLD1]
older newer | first last |
Pekr 7-Jul-2009 [16149] | I would discard non /all mode completly ... |
Ladislav 7-Jul-2009 [16150] | put it to R3 chat, Carl may honor your request |
Pekr 7-Jul-2009 [16151] | posted to R3/Parse thread on R3 Chat ... |
BrianH 7-Jul-2009 [16152] | I suppose the name change was inevitible given that noone could come up with a decent operator to associate with the function. Hopefully people will expand the name to "equivalent" in their heads and it will have the same psychological effect - the length of the word was the reason for its choice in the first place. |
Geomol 7-Jul-2009 [16153] | Is this decimal problem also found in latest release? (I'm currently using older OS X version.) >> (to-decimal #{3fef ffff ffff ffff}) < to-decimal #{3ff0 0000 0000 0000} == false It's also a problem in sort: >> sort [1.0 0.9999999999999998] == [1.0 0.9999999999999998] |
Henrik 7-Jul-2009 [16154] | The first one is the same in A68 The second one is: >> sort [1.0 0.9999999999999998] == [1.0 1.0] |
Geomol 7-Jul-2009 [16155] | What about sort reduce [1.0 to-decimal #{3fef ffff ffff ffff}] |
Henrik 7-Jul-2009 [16156] | [1.0 1.0] |
BrianH 7-Jul-2009 [16157] | Try upping system/options/decimal-digits to 17. |
Henrik 7-Jul-2009 [16158] | noting that default is 15. |
BrianH 7-Jul-2009 [16159] | And the number of digits in your example is 16. |
Geomol 7-Jul-2009 [16160] | Setting it to 17 gives same wrong result here. |
Henrik 7-Jul-2009 [16161] | With 17: >> sort [1.0 0.9999999999999998] == [0.99999999999999978 1.0] |
Geomol 7-Jul-2009 [16162] | And what if you do: sort reduce [1.0 to-decimal #{3fef ffff ffff ffff}] |
Henrik 7-Jul-2009 [16163] | >> sort reduce [1.0 to-decimal #{3fef ffff ffff ffff}] == [0.99999999999999989 1.0] |
BrianH 7-Jul-2009 [16164] | >> sort reduce [1.0 to-decimal #{3fef ffff ffff ffff}] == [0.99999999999999989 1.0] |
Geomol 7-Jul-2009 [16165] | And setting it to 17 and trying: (to-decimal #{3fef ffff ffff ffff}) < to-decimal #{3ff0 0000 0000 0000} |
Henrik 7-Jul-2009 [16166] | still false for that one |
Geomol 7-Jul-2009 [16167] | ok. Do you guys know, if there's a CureCode ticket about it? |
BrianH 7-Jul-2009 [16168] | If you use <= you get true. It could be within the margin of error. |
Geomol 7-Jul-2009 [16169] | I'm wondering, if it could have consequences in other functions/mezzanines. |
BrianH 7-Jul-2009 [16170] | The decimal-digits option is only used for display. All other comparisons use 15 digits. |
Geomol 7-Jul-2009 [16171] | I think, decimals should be treated as binary data and converted to integers, when doing comparison and the like. |
BrianH 7-Jul-2009 [16172] | Wait for the proposed equivalency function changes in the next version. |
Geomol 7-Jul-2009 [16173] | Like: >> (to-integer #{3fef ffff ffff ffff}) < to-integer #{3ff0 0000 0000 0000} == true |
BrianH 7-Jul-2009 [16174x2] | Having a margin of error is standard operating procedure for IEEE754 floating point numbers, because anything over 15 digits are subject to rounding errors inherent in the encoding. |
That is why the 15-digit default. | |
Geomol 7-Jul-2009 [16176] | Maybe for equal, but I'm not sure with greater-than and less-than. |
BrianH 7-Jul-2009 [16177] | If you can't count on differences in the greater-than-15-digit range to be accurate, why should you consider them for comparisons? |
Geomol 7-Jul-2009 [16178x2] | Well, I see no reason, why this return false, no matter of precision: (to-decimal #{3fef ffff ffff ffff}) < to-decimal #{3ff0 0000 0000 0000} But maybe I need to think about it some more. |
It's like the decimal-digits have internal consequences, it shouldn't have. | |
BrianH 7-Jul-2009 [16180x4] | For instance: >> 0.3 < (0.1 + 0.1 + 0.1) == false >> 0.3 <= (0.1 + 0.1 + 0.1) == true Those values differ in the greater-than-15-digits range due to encoding errors. |
Those encoding errors are inherent in the IEEE754 format. The standard way to work around this is to not consider differences in the past-15-digits range. This is the case for all sorts of systems. | |
If you want exact comparisons, use money! ot integer! - decimal! is not appropriate. | |
Or you can wait for the next version, and have EQUIV?, ==, !== and =? do 17-digit comparisons, and the rest do the 15-digit comparisons that make values like 0.1 work. | |
Geomol 7-Jul-2009 [16184x2] | Maybe strict-lesser? is a needed function? ;-) |
(I need to think about it some more.) | |
BrianH 7-Jul-2009 [16186] | If you need to do exact comparisons with floating point numbers you need to use subtraction and comparison to 0.0 - it's the only way to be sure. Exact comparisons with floating point numbers have to take into account that the numbers themselves are not exact the vast majority of the time. |
Sunanda 9-Jul-2009 [16187] | A little sameness oddity for Ladislav. Two identical tuples can have different last elements :-) >> (to-tuple "1") = 1.0.0 == true >> (last to-tuple "1") = last 1.0.0 == false |
BrianH 9-Jul-2009 [16188] | That's an error in TO tuple!. |
Pekr 9-Jul-2009 [16189] | hmm, also first second last give strange results. First works, but others don't .... |
BrianH 9-Jul-2009 [16190] | Having trouble parsing that sentence - code? |
Pekr 9-Jul-2009 [16191] | Don't understand ... |
BrianH 9-Jul-2009 [16192] | Nevermind, I got it. I'm writing the ticket now. |
Pekr 9-Jul-2009 [16193] | Carl asked me to ask, what is general opinion to my suggestion - to remove parse /all refinement altogether. Current proposal is to swith parse by default to /all mode for block rules, and to recent default behaviour for string rule. As for myself I don't mind compatibility, so I prefer removing /all refinement and switching pase internally to /all mode .... |
BrianH 9-Jul-2009 [16194] | I proposed an /ignore stuff option that would replace the old default behavior, and be more general. Then we could toss /all. |
Pekr 9-Jul-2009 [16195] | That tuple bug applies also to R2 ... will such bugs be fixed? |
BrianH 9-Jul-2009 [16196x2] | Not in R2, unless we can prove that code won't be broken. We have a lot of incompatible fixes of R2 problems in R3.. |
Submitted as bug#1069. | |
Pekr 9-Jul-2009 [16198] | What do you think about current progress? Progress is imo great, but when do you think we will get to more strategic parts like Plugins, etc? |
older newer | first last |