J=      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~portableunstableclaudiusmaximus@goto10.orgG  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  G  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFportableunstableclaudiusmaximus@goto10.orgGHGHHGGHportableunstableclaudiusmaximus@goto10.orgII f executes the computation f , ensuring B that the FPU control words are set to avoid problems from excess > precision. See the libqd documentation for further details. EThis function is unsafe in a threaded runtime as Haskell threads can F migrate between OS threads, moreover there is no checking for nested * calls - this results in race conditions. BSome steps can be taken to mitigate some of this badness; perhaps  using (for example) GHC.Conc.forkOnIO might help. IIIportableunstableclaudiusmaximus@goto10.org2JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{2JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{2{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJ2JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{ portableunstableclaudiusmaximus@goto10.org{  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{portableunstableclaudiusmaximus@goto10.orgG|}~G|}~G~}|G|}~ portableunstableclaudiusmaximus@goto10.orgG|}~portableunstableclaudiusmaximus@goto10.org2222 portableunstableclaudiusmaximus@goto10.orgy|}~ portableunstableclaudiusmaximus@goto10.orgy|}~ portableunstableclaudiusmaximus@goto10.org2portableunstableclaudiusmaximus@goto10.org a b represents the unevaluated sum a + b. +Extract the first component and convert to .  Convert from  by pairing with 0.  Square a  number. portableunstableclaudiusmaximus@goto10.org  a b c d represents the unevaluated sum  a + b + c + d.  Convert to .  Convert from .  Convert to .  Convert from .  Square a  number. portableunstableclaudiusmaximus@goto10.org !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~qd-1.0 Numeric.QD.QuadDouble.Raw.UnsafeNumeric.QD.FPU.Raw.UnsafeNumeric.QD.FPU.Unsafe"Numeric.QD.DoubleDouble.Raw.UnsafeNumeric.QD.QuadDouble.Raw.Safe Numeric.QD.DoubleDouble.Raw.SafeNumeric.QD.DoubleDoubleNumeric.QD.QuadDoubleNumeric.QD.Raw.UnsafeNumeric.QD.QuadDouble.RawNumeric.QD.Raw.SafeNumeric.QD.RawNumeric.QD.DoubleDouble.Raw Numeric.QD c_qd_rand c_qd_writec_qd_pic_qd_comp_d_qdc_qd_comp_qd_d c_qd_compc_qd_neg c_qd_swrite c_qd_read c_qd_sincosh c_qd_sincos c_qd_atanh c_qd_acosh c_qd_asinh c_qd_tanh c_qd_cosh c_qd_sinh c_qd_atan2 c_qd_atan c_qd_acos c_qd_asinc_qd_tanc_qd_cosc_qd_sin c_qd_log10c_qd_logc_qd_exp c_qd_ceil c_qd_floor c_qd_aint c_qd_nint c_qd_nroot c_qd_npwrc_qd_absc_qd_sqr c_qd_sqrt c_qd_copy_d c_qd_copy_dd c_qd_copyc_qd_selfdiv_dc_qd_selfdiv_dd c_qd_selfdiv c_qd_div_qd_d c_qd_div_d_qdc_qd_div_qd_ddc_qd_div_dd_qdc_qd_divc_qd_selfmul_dc_qd_selfmul_dd c_qd_selfmul c_qd_mul_qd_d c_qd_mul_d_qdc_qd_mul_qd_ddc_qd_mul_dd_qdc_qd_mulc_qd_selfsub_dc_qd_selfsub_dd c_qd_selfsub c_qd_sub_qd_d c_qd_sub_d_qdc_qd_sub_qd_ddc_qd_sub_dd_qdc_qd_subc_qd_selfadd_dc_qd_selfadd_dd c_qd_selfadd c_qd_add_qd_d c_qd_add_d_qdc_qd_add_qd_ddc_qd_add_dd_qdc_qd_add fpu_fix_end fpu_fix_startunsafePreservingFPU c_dd_rand c_dd_writec_dd_pic_dd_comp_d_ddc_dd_comp_dd_d c_dd_compc_dd_neg c_dd_swrite c_dd_read c_dd_sincosh c_dd_sincos c_dd_atanh c_dd_acosh c_dd_asinh c_dd_tanh c_dd_cosh c_dd_sinh c_dd_atan2 c_dd_atan c_dd_acos c_dd_asinc_dd_tanc_dd_cosc_dd_sin c_dd_log10c_dd_logc_dd_exp c_dd_ceil c_dd_floor c_dd_aint c_dd_nint c_dd_nroot c_dd_npwrc_dd_absc_dd_sqr c_dd_sqrt c_dd_copy_d c_dd_copy c_dd_div_dd_d c_dd_div_d_ddc_dd_div c_dd_mul_dd_d c_dd_mul_d_ddc_dd_mul c_dd_sub_dd_d c_dd_sub_d_ddc_dd_sub c_dd_add_dd_d c_dd_add_d_ddc_dd_add DoubleDoubletoDouble fromDoublesqr QuadDoubletoDoubleDoublefromDoubleDoubleghc-prim GHC.TypesDouble lift_dd_dd lift_dd_dd_dd lift_qd_qd lift_qd_qd_qd