On Sat, Jan 11, 2014 at 2:06 AM, Carter Schonwald <carter.schonw...@gmail.com> wrote: > corey, those would be very very nice refinments and a healthy progressive > yet conservative stance that leaves the room for evolving healthy defaults > (I've a slow boil program to bring breaking changes to fix numerical warts > in haskell over the next 2-3 years, ) > > @corey, one example of a "Real" number type can be found in mpfr > http://www.mpfr.org/ (C library for multiple-precision floating-point > computations with correct rounding), though note its LGPL,
You choose a precision upon construction of a floating point value. You also have to choose the precision for the output values. The correct rounding is in comparison to the raw `mpf_t` offered by GMP that I think it uses under the hood. > on the rational number front, i believe theres 1-2 decent bsd/mit style such > libs, and i know in haskell, GHC devs are evaluating how to move away from > GMP (though this may not have any impact till whenver ghc 7.10 happens) None of which are comparable in performance for anything but small integers. LGPL isn't really that big a deal, because the implication for closed-source projects is that they have to ship linkable object files. > > @Bob, well said! Even ignoring floating point imprecision, numerical > computing still has to deal with rounding, well conditioned / wellposed-ness > of the problem being solved, and to some extent performance! Any "exact > real" type either is unbounded (and thus provides unbounded performance woes > if used carelessly) or bounded and will eventually suffer some precision > issues in some example along with being several orders of slower. No real number type has unbounded precision. Arbitrary precision means the user passes the precision they desire up-front. On the other hand, a rational number type implemented with big integers will never lose any precision. However, you don't get `sqrt`, `sin`, `cos`, etc. _______________________________________________ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev