!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ @Class for totally ordered data types. Instances should satisfy  isOrdered a = True for all a. BClass for partially ordered data types where sorting makes sense. M This includes all totally ordered sets and floating point types. Instances $ should satisfy the following laws:  The set of elements for which " returns true is totally ordered. H The max (or min) of an insignificant element and a significant element  is the significant one. H The result of sorting a list should contain only significant elements.  max a b = max b a  min a b = min b a HThe idea comes from floating point types, where non-comparable elements I (NaNs) are the exception rather than the rule. For these types, we can  define ,  and , to ignore insignificant elements. Thus, a M sort of floating point values will discard all NaNs and order the remaining  elements. Minimal complete definition:  FClass for partially ordered data types. Instances should satisfy the + following laws for all values a, b and c:  a <= a.  a <= b and b <= a implies a == b.  a <= b and b <= c implies a <= c. .But note that the floating point instances don't satisfy the first rule. Minimal complete definition:  or  . Is comparable to. Is not comparable to. CInternal-use function to convert our Ordering to the ordinary one. @Internal-use function to convert the ordinary Ordering to ours.    3Sort a list using the default comparison function. -Apply a function to values before comparing.   7*Class for the basic floating point types. ,Class for real-valued floating point types. (Minimal complete definition: all except ., , and -. Fused multiply-add.  copysign x y( computes a value with the magnitude of x but the sign  of y.  nextafter x y- computes the next representable value after x in the  direction of y.  atan2 y x3 computes the principal value of the arctangent of y/x. > The signs of the input determine the quadrant of the result. fmod x y computes x - n*y, where n is the integral quotient of  x/y, rounded towards zero. frem x y computes x - n*y, where n is the integral quotient of  x/yA, rounded to the nearest integer, with halfway values rounded to  even. 4Euclidean distance function without undue overflow.  Cube root. Base-2 exponential function. ! Computes  exp x - 1 without undue cancellation. "Base-10 logarithm function. # Computes  log (x + 1) without undue cancellation. $Base-2 logarithm function. %BExtracts the exponent of a floating point value. If the value is ; subnormal, the result is as if the value were normalized. &Error function. 'Complementary error function. (Gamma function. )Log gamma function. *?Round to the nearest integer according to the current rounding C direction. The default rounding direction is towards the nearest F integer with halfway values rounded to even. If the resulting value  differs from the input, the Inexact exception is raised. +Same as *, except that the Inexact exception is not raised. ,-./9Class for floating point types (real or complex-valued). )Minimal complete definition: everything. 0123456789:;<=>?@JClass for types which can be rounded to integers. The rounding functions N in the Prelude are inadequate for floating point because they shoehorn their  results into an integral type. Minimal complete definition: A and E. A<Discards the fractional component from a value. Results in  I if the result cannot be represented as an integer, such as if the input  is infinite or NaN. BCDEF)Classification of floating point values. GHIJK7 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJK7FKJIHG@ABCDE/0123456789:;<=>? !"#$%&'()*+,-.7 !"#$%&'()*+,-. !"#$%&'()*+,-./0123456789:;<=>?0123456789:;<=>?@ABCDEABCDEFKJIHGGHIJKLJContainer for computations which will be run in a modified floating point N environment. The FEnv container records all operations for later evaluation  by a . Note that ( is strict in order to force evaluation 3 of floating point values stored in the container. Do not use the  or / instances, they are provided only because Num  requires them. MFOpaque type which stores the complete floating point environment. It  corresponds to the C type fenv_t. NOPQRSTUVWXYISaves the current floating point environment and, optionally, clears all K floating point exception flags and sets non-stop (continue on exceptions)  mode. ZGRestores a previously-saved floating point environment and returns the H list of floating point exceptions that occurred prior to restoring the  environment. [,Raises the given floating point exceptions. \]^KEvaluate an FEnv using a specific rounding mode. Rounding mode selections M nest: subcomputations might use another mode. The default rounding mode is  unspecified. _@Raise floating point exceptions as part of an FEnv computation. `GThis function is to help with debugging the floating point environment  handling. fenvTrace msg x% constructs an FEnv value containing x that  prints msg (using #) whenever the value is extracted. aHRuns all the computations which are recorded in an FEnv container. The L floating point environment is preserved across this call, and any floating I point exceptions which were raised during the computation are returned. 3     LMNOPQRSTUVWXYZ[\]^_`aTXWVUNSRQPOMLa^_`YZ[\]LMNSRQPOOPQRSTXWVUUVWXYZ[\]^_`a b"Coercion to floating point types. cFConvert to a floating point type. Conversions from integers and real J types are provided, as well as conversions between floating point types. H Conversions between floating point types preserve infinities, negative  zeros and NaNs. dThe Float type. efEThe Double type. This is expected to be an identical declaration to 6 the one found in GHC.Prim. We avoid simply using GHC's type because we need $ to define our own class instances. gbcdefgfgdebcbccdeefggvhijklmnopqrstuvwxyz{|}~vhijklmnopqrstuvwxyz{|}~v{zyxwvutsrqp~}|onmlkjihvhijklmnopqrstuvwxyz{|}~ GInternal function which discards the fractional component of a Double. 3 The results are meaningful only for finite input. ff FInternal function which discards the fractional component of a Float. 3 The results are meaningful only for finite input. dd fquotRem x y< computes the remainder and integral quotient upon division = of x by y. The result is (x-n*y, n), where n is the value x/ y rounded to  the nearest integer. A !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKcdf fdc  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKcdf  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~YZ      ! " # $ % & ' ( ) * &+,-./0123242567898:;<=>?>@ABCDCECFCGH>IJKLMCNCOAPAQRS>TUVAWAX/YZ/[\/[]^_`Aa/[bcde/Yf/Ygchcijk6l6m6n6o6p6q6r6s6t6u6v6wxyz{|}|~cUUUUzzAAAAAAAAAAAAAAAAAAA,>>>>>22222222222222222222222222222222222222CCCCCC88altfloat-0.3.1 Data.PosetData.Floating.ClassesData.Floating.EnvironmentData.Floating.TypesData.Floating.CMath Data.FloatingData.Poset.InternalData.Poset.InstancesData.Floating.InstancesData.Floating.Types.DoubleData.Floating.Types.FloatData.Floating.PreludeOrdSortablesortBy isOrderedmaxminPosetcompare<==><<=>=>OrderingNCGTEQLTsort comparing PrimFloatclassify RealFloatfmacopysign nextafteratan2fmodfremhypotcbrtexp2expm1log10log1plog2logberferfcgammalgammarint nearbyintinfinitynanpiFloating**sqrtacosasinatancossintanacoshasinhatanhcoshsinhtanhexplog Roundable toIntegralceilingfloortruncateroundFPClassificationFPZero FPSubNormalFPNormalFPNaN FPInfiniteFEnv FEnvStateFloatException UnderflowOverflowInvalidInexact DivByZero RoundingMode TowardZeroDownwardUpward ToNearestunsafeSaveEnvironmentunsafeRestoreEnvironmentunsafeRaiseExceptionsunsafeSetRoundingModegetRoundingModewithRoundingModeraiseExceptions fenvTracefenvEval FloatConvert toFloatingFloatF#DoubleD#c_fmafc_fmac_fminfc_fminc_fmaxfc_fmaxc_fdimfc_fdim c_nextafterf c_nextafterc_nanfc_nan c_copysignf c_copysign c_remquofc_remquo c_remainderf c_remainderc_fmodfc_fmodc_truncfc_trunc c_llroundf c_llround c_lroundfc_lroundc_roundfc_round c_llrintfc_llrintc_lrintfc_lrintc_rintfc_rint c_nearbyintf c_nearbyintc_floorfc_floorc_ceilfc_ceil c_tgammafc_tgamma c_lgammafc_lgammac_erfcfc_erfcc_erffc_erfc_sqrtfc_sqrtc_powfc_powc_hypotfc_hypotc_fabsfc_fabsc_cbrtfc_cbrt c_scalblnf c_scalbln c_scalbnfc_scalbnc_modffc_modfc_logbfc_logbc_log2fc_log2c_log1pfc_log1pc_log10fc_log10c_logfc_logc_ldexpfc_ldexpc_ilogbfc_ilogbc_frexpfc_frexpc_expm1fc_expm1c_exp2fc_exp2c_expfc_expc_tanhfc_tanhc_sinhfc_sinhc_coshfc_coshc_atanhfc_atanhc_asinhfc_asinhc_acoshfc_acoshc_tanfc_tanc_sinfc_sinc_cosfc_cosc_atan2fc_atan2c_atanfc_atanc_asinfc_asinc_acosfc_acos libmDouble libmFloat libmDouble2 libmFloat2 libmDouble3 libmFloat3 isInfiniteisNaNisNormal isSubNormalisFiniteisNegativeZerofquotRem totalOrder partialOrderbase Data.MaybeNothingfenv_raise_excepts fenv_restorec_feholdexcept c_fegetenv get_roundmode set_roundmodeControl.Applicativepure GHC.ClassesEqGHC.ShowShow Debug.Tracetrace ApplicativeoptionalliftA3liftA2liftA<**><**><*>manysome<|>empty AlternativegetConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipList Data.Functor<$>GHC.Base<$c_strtoddouble_comparedouble_classify double_signum double_formatdropFracc_strtof float_comparefloat_classify float_signum++GHC.Errerrorfoldrghc-primGHC.PrimseqGHC.Listconcatfilterzip System.IOprint Data.Tuplefstsnd otherwisemap$GHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo==negatefail>>=>>returnBoundedEnum FractionalIntegralMonadFunctorNumGHC.ReadReadRealRealFracGHC.BoolBool GHC.TypesCharInt integer-gmpGHC.Integer.TypeIntegerRationalIO Data.EitherEitherStringFalseTrueLeftRightPrelude$!readIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputCharSystem.IO.ErrorcatchGHC.IO.ExceptionioError Text.Readreadreadseither Data.Listunwordswordsunlineslinesproductsumfoldl1minimummaximumlex readParenreadList readsPrecText.ParserCombinators.ReadPReadSGHC.IOFilePathIOError userErrorlcmgcd^^^oddeven realToFrac fromIntegral toRational toIntegerdivModquotRemmoddivremquotrecip/properFraction undefined Control.MonadmapM_mapM sequence_sequence=<<subtractsignumabs*+ showParen showStringshowCharshowsShowSshowListshow showsPrecunzip3unzipzipWith3zipWithzip3!! concatMaplookupnotElemelemallanyorandreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrfoldr1scanl1scanlfoldllengthnullinitlasttailheadmaybeJustMaybemaxBoundminBoundfromEnumtoEnumpredsuccuncurrycurryasTypeOfuntilflip.constidfmapnot||&&/=