Îõ³h$.      !"#$%&'()*+,-(c) Edward Kmett 2013-2015BSD3Edward Kmett  experimental non-portable Trustworthy 23>ÀÁÂÉ×Ù ñ compensated¤This provides a numeric data type with effectively doubled precision by using Knuth's error free transform and a number of custom compensated arithmetic circuits.ÀThis construction can be iterated, doubling precision each time.Òround (Prelude.product [2..100] :: Compensated (Compensated (Compensated Double)))ž93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000Prelude.product [2..100]ž93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000 compensatedThis extracts both the  and  components of a  number. compensatedUsed internally to construct + values that satisfy our residual contract.When in doubt, use  a b  instead of  a b compensatedThis  number is used to  Ú the significand in half, so we can multiply them separately without losing precision in . compensated a b k computes k x y such that x + y = a + b x = fl(a + b)Which is to say that x is the floating point image of (a + b) and y stores the residual error term. compensated a b k computes k x y such that x + y = a + b x = fl(a + b)#but only under the assumption that . a / . b. If you aren't sure, use .Which is to say that x is the floating point image of (a + b) and y stores the residual error term. compensated a b k computes k x y such that x + y = a * b x = fl(a * b)Which is to say that x is the floating point image of (a * b) and y stores the residual error term.ÆThis could be nicer if we had access to a hardware fused multiply-add.  compensated  a k computes k x y such that x + y = a * a x = fl(a * a)Which is to say that x is the floating point image of (a * a) and y stores the residual error term.  compensated0Calculate a fast square of a compensated number.  compensated;error-free split of a floating point number into two parts.%Note: these parts do not satisfy the  contract  compensated:Calculate a scalar + compensated sum with Kahan summation. compensatedCompute a *  a compensatedùThis provides the isomorphism between the compact representation we store these in internally and the naive pair of the  and  components. compensatedThis 0 lets us edit the  directly, leaving the  untouched. compensatedThis 0 lets us edit the  directly, leaving the  untouched. compensated Extract the  component of a 8 value, when and if compensation is no longer required. compensated$Perform Kahan summation over a list. compensatedNB:( Experimental and partially implemented.”Other than sqrt, the accuracy of these is basically uncalculated! In fact many of these are known to be wrong! Patches and improvements are welcome.    1      !"#$%&'()*+,-./0123456789(compensated-0.8.2-AkxbIzV7j6c9nsNh8MTMJfNumeric.CompensatedOvercompensated Compensable Compensatedwith compensatedmagicaddfaddtimesdividesquaredsquaresplit+^*^ _Compensatedprimalresidual uncompensatedkahan$fFloatingCompensated$fVectorVectorCompensated$fMVectorMVectorCompensated$fStorableCompensated$fSafeCopyCompensated$fSerialCompensated$fSerializeCompensated$fBinaryCompensated$fRealFracCompensated$fRealCompensated$fFractionalCompensated$fEnumCompensated$fNumCompensated$fMonoidCompensated$fSemigroupCompensated$fOrdCompensated$fEqCompensated$fEachCompensatedCompensatedab$fReadCompensated$fShowCompensated$fNFDataCompensated$fDataCompensated$fHashableCompensated$fCompensableCompensated$fCompensableFloat$fCompensableDoublebaseGHC.Numabsghc-prim GHC.Classes>=lens-5-1fOQPiealB97UeNIGVZgUKControl.Lens.TypeLens