qd-0.4: double-double and quad-double number type via libqd




unsafePreservingFPU :: IO a -> IO aSource

unsafePreservingFPU f executes the computation f, ensuring that the FPU control words are set to avoid problems from excess precision. See the libqd documentation for further details.

This function is unsafe in a threaded runtime as Haskell threads can migrate between OS threads, moreover there is no checking for nested calls which results in race conditions.

Some steps can be taken to mitigate some of this badness; perhaps using (for example) GHC.Conc.forkOnIO might help.