On 14:30 Fri 05 Mar , Achim Schneider wrote: > Nick Bowler <nbow...@elliptictech.com> wrote: > > I meant to say that "fromRational . toRational" is not appropriate for > > converting values from one floating point type to another floating > > point type. > > It gets even worse: My GPU doesn't know about doubles and its floats > aren't IEEE, at all (not that Haskell Doubles are guaranteed to be IEEE > iirc)
AFAIK, GLDouble is a newtype wrapper around CDouble, though, and doesn't correspond to a GPU-internal type. Even if it did, if we are converting to a type that doesn't support infinities, then is is reasonable for the conversion to not support them, either. I'd want to see a call to error in this case, but perhaps allowing "unsafe" optimisations (see below). > I think the situation calls for a split interface: One to satisfy the > numericists / scientific IEEE users, and one to satisfy performance. I think this is a job for the compiler rather than the interface. For example, GCC has -ffinite-math-only, -fno-signed-zeros, etc., which allow the compiler to make assumptions about the program that would not normally be valid. Nevertheless, for the issue at hand (Double<=>CDouble<=>GLDouble), there is a conversion interface that should satisfy everyone (both fast and correct): the one that compiles to nothing at all. -- Nick Bowler, Elliptic Technologies (http://www.elliptictech.com/) _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe