[Haskell-cafe] attoparsec double precision, quickCheck and aeson
Johan Tibell
johan.tibell at gmail.com
Tue Jun 5 18:38:54 CEST 2012
On Tue, Jun 5, 2012 at 9:12 AM, Warren Harris <warrensomebody at gmail.com> wrote:
> which helps in many cases, but for some the parsing seems bi-stable, alternating between two imprecise double values and causing the test to fail.
You want to perform your test as
d1 - d2 < epsilon
where epsilon is derived from the relative error you're willing to
accept (e.g. 0.01% error.) You can't use an absolute epsilon because
if you pick e.g. epsilon = 0.00001 but your input are also very small,
you'll end up accepting a big relative error. Comparing floating
points values for equality is asking for trouble.
> I was wondering if anyone could suggest a better work-around for this problem, or explain why Attoparsec's double parser can't be isomorphic to haskell's. Thanks,
I think attoparsec uses a slightly less exact but much much faster
double parser. I believe it's described in the attoparsec haddock docs
somewhere.
-- Johan
More information about the Haskell-Cafe
mailing list