1. 0.02 s $ /nix/store/vzx1mi9c0xfadmsm9dhd83d005cb1qs9-coreutils-9.8/bin/timeout --kill-after=15s 7200s /nix/store/99b1z08awpxj8b6mzggn59gp1shljnff-nix-2.34.5/bin/nix --extra-experimental-features nix-command --extra-experimental-features flakes --log-format internal-json build --no-link git+https://github.com/NorfairKing/sydtest?ref=mutation-testing&rev=f4e3b1708494f4658b32dcbaa6a779a0860b2840#checks.x86_64-linux.mutation-really-safe-money --print-build-logs
  2. 0.07 s warning: ignoring untrusted flake configuration setting 'extra-substituters'.
  3. 0.07 s Pass '--accept-flake-config' to trust it
  4. 0.07 s warning: ignoring untrusted flake configuration setting 'extra-trusted-public-keys'.
  5. 0.07 s Pass '--accept-flake-config' to trust it
  6. 0.54 s error (ignored): SQLite database '/var/cache/private/nix-ci-worker/eval-cache-v6/e28c825a69929d98af04f8a4c65bfea23fce8d55bae8392437213de08e4f13a0.sqlite' is busy
  7. 1.33 s
  8. 2.84 s Building really-safe-money
  9. 3.04 s [really-safe-money] Phase: setupCompilerEnvironmentPhase
  10. 3.05 s [really-safe-money] Build with /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3.
  11. 3.29 s [really-safe-money] Phase: unpackPhase
  12. 3.29 s [really-safe-money] unpacking source archive /nix/store/pxkha6z3d3bjfgkdar4ma3wx2c1f8pmm-really-safe-money-source-0.0.0.0/really-safe-money-0.0.0.0.tar.gz
  13. 3.29 s [really-safe-money] source root is really-safe-money-0.0.0.0
  14. 3.30 s [really-safe-money] setting SOURCE_DATE_EPOCH to timestamp 1778687704 of file "really-safe-money-0.0.0.0/src/Numeric/DecimalLiteral.hs"
  15. 3.30 s [really-safe-money] Phase: patchPhase
  16. 3.31 s [really-safe-money] Phase: compileBuildDriverPhase
  17. 3.31 s [really-safe-money] setupCompileFlags: -package-db=/build/tmp.WjxVhChhdW/setup-package.conf.d -threaded
  18. 3.36 s [really-safe-money] [1 of 2] Compiling Main ( Setup.hs, /build/tmp.WjxVhChhdW/Main.o )
  19. 3.40 s [really-safe-money] [2 of 2] Linking Setup
  20. 4.57 s [really-safe-money] Phase: updateAutotoolsGnuConfigScriptsPhase
  21. 4.58 s [really-safe-money] Phase: configurePhase
  22. 4.58 s [really-safe-money] configureFlags: --verbose --prefix=/nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --with-gcc=gcc --package-db=/build/tmp.WjxVhChhdW/package.conf.d --ghc-option=-j16 --ghc-option=+RTS --ghc-option=-A64M --ghc-option=-RTS --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --disable-static --disable-executable-dynamic --disable-tests --enable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --ghc-options=-O2 --ghc-options=-Wall --ghc-options=-Wincomplete-uni-patterns --ghc-options=-Wincomplete-record-updates --ghc-options=-Wpartial-fields --ghc-options=-Widentities --ghc-options=-Wredundant-constraints --ghc-options=-Wcpp-undef --ghc-options=-Werror --ghc-options=-fplugin-opt=Test.Syd.Mutation.Plugin:--debug --disable-optimization --ghc-option=-j1 --ghc-option=+RTS --ghc-option=-A32M --ghc-option=-M16g --ghc-option=-RTS --extra-lib-dirs=/nix/store/ffyzkisqs4vc4mg28bwwlyqjf8i9ph6b-ncurses-6.5/lib --extra-lib-dirs=/nix/store/n28qgdj8c1q41kf7n4y1jxa6ckp85m3c-libffi-3.5.2/lib --extra-lib-dirs=/nix/store/1b6h99dw7bk4wbn77kbalih42zbc67m1-elfutils-0.194/lib --extra-lib-dirs=/nix/store/hi0ar880110k6jsmmili7dh1gq3cg2a9-gmp-with-cxx-6.3.0/lib --extra-lib-dirs=/nix/store/g09cflpnp4g80q56sj9dng1qzv4v4ybc-numactl-2.0.18/lib --extra-lib-dirs=/nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/lib
  23. 4.59 s [really-safe-money] Using Parsec parser
  24. 4.59 s [really-safe-money] Configuring really-safe-money-0.0.0.0...
  25. 5.14 s [really-safe-money] Dependency base >=4.7 && <5: using base-4.20.2.0
  26. 5.16 s [really-safe-money] Dependency containers: using containers-0.7
  27. 5.16 s [really-safe-money] Dependency deepseq: using deepseq-1.5.0.0
  28. 5.16 s [really-safe-money] Dependency validity: using validity-0.12.1.0
  29. 5.16 s [really-safe-money] Dependency validity-containers: using validity-containers-0.5.0.5
  30. 5.16 s [really-safe-money] Dependency validity-scientific: using validity-scientific-0.2.0.3
  31. 5.16 s [really-safe-money] Source component graph: component lib
  32. 5.16 s [really-safe-money] Configured component graph:
  33. 5.16 s [really-safe-money] component really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  34. 5.16 s [really-safe-money] include base-4.20.2.0-64da
  35. 5.16 s [really-safe-money] include containers-0.7-504a
  36. 5.16 s [really-safe-money] include deepseq-1.5.0.0-9a2c
  37. 5.16 s [really-safe-money] include validity-0.12.1.0-2vJMqyxn6Ae2B1jlP90HgP
  38. 5.16 s [really-safe-money] include validity-containers-0.5.0.5-JMisIHg6jT0HAhS7h7vTA4
  39. 5.16 s [really-safe-money] include validity-scientific-0.2.0.3-6oQtdkDOQFR80MBRT1UQ1R
  40. 5.16 s [really-safe-money] Linked component graph:
  41. 5.16 s [really-safe-money] unit really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  42. 5.16 s [really-safe-money] include base-4.20.2.0-64da
  43. 5.16 s [really-safe-money] include containers-0.7-504a
  44. 5.16 s [really-safe-money] include deepseq-1.5.0.0-9a2c
  45. 5.16 s [really-safe-money] include validity-0.12.1.0-2vJMqyxn6Ae2B1jlP90HgP
  46. 5.16 s [really-safe-money] include validity-containers-0.5.0.5-JMisIHg6jT0HAhS7h7vTA4
  47. 5.16 s [really-safe-money] include validity-scientific-0.2.0.3-6oQtdkDOQFR80MBRT1UQ1R
  48. 5.16 s [really-safe-money] Money.Account=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.Account,Money.AccountOf=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.AccountOf,Money.Amount=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.Amount,Money.AmountOf=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.AmountOf,Money.ConversionRate=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.ConversionRate,Money.ConversionRateOf=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.ConversionRateOf,Money.Currency=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.Currency,Money.MultiAccount=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.MultiAccount,Money.MultiAmount=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.MultiAmount,Money.QuantisationFactor=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.QuantisationFactor,Numeric.DecimalLiteral=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Numeric.DecimalLiteral
  49. 5.16 s [really-safe-money] Ready component graph:
  50. 5.16 s [really-safe-money] definite really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  51. 5.16 s [really-safe-money] depends base-4.20.2.0-64da
  52. 5.16 s [really-safe-money] depends containers-0.7-504a
  53. 5.16 s [really-safe-money] depends deepseq-1.5.0.0-9a2c
  54. 5.16 s [really-safe-money] depends validity-0.12.1.0-2vJMqyxn6Ae2B1jlP90HgP
  55. 5.16 s [really-safe-money] depends validity-containers-0.5.0.5-JMisIHg6jT0HAhS7h7vTA4
  56. 5.16 s [really-safe-money] depends validity-scientific-0.2.0.3-6oQtdkDOQFR80MBRT1UQ1R
  57. 5.16 s [really-safe-money] Using Cabal-3.12.1.0 compiled by ghc-9.10
  58. 5.16 s [really-safe-money] Using compiler: ghc-9.10.3
  59. 5.16 s [really-safe-money] Using install prefix:
  60. 5.16 s [really-safe-money] /nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0
  61. 5.16 s [really-safe-money] Executables installed in:
  62. 5.16 s [really-safe-money] /nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0/bin
  63. 5.16 s [really-safe-money] Libraries installed in:
  64. 5.16 s [really-safe-money] /nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  65. 5.16 s [really-safe-money] Dynamic Libraries installed in:
  66. 5.16 s [really-safe-money] /nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6
  67. 5.16 s [really-safe-money] Private executables installed in:
  68. 5.16 s [really-safe-money] /nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0/libexec/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-0.0.0.0
  69. 5.16 s [really-safe-money] Data files installed in:
  70. 5.16 s [really-safe-money] /nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0/share/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-0.0.0.0
  71. 5.16 s [really-safe-money] Documentation installed in:
  72. 5.16 s [really-safe-money] /nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0/share/doc/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-0.0.0.0
  73. 5.16 s [really-safe-money] Configuration files installed in:
  74. 5.16 s [really-safe-money] /nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0/etc
  75. 5.16 s [really-safe-money] No alex found
  76. 5.16 s [really-safe-money] Using ar found on system at:
  77. 5.16 s [really-safe-money] /nix/store/iz5lckcsg66r223si2gck7csk2hihj0m-binutils-wrapper-2.44/bin/ar
  78. 5.16 s [really-safe-money] No c2hs found
  79. 5.16 s [really-safe-money] No cpphs found
  80. 5.16 s [really-safe-money] No doctest found
  81. 5.16 s [really-safe-money] Using gcc version 14.3.0 given by user at:
  82. 5.16 s [really-safe-money] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/gcc
  83. 5.16 s [really-safe-money] Using ghc version 9.10.3 found on system at:
  84. 5.16 s [really-safe-money] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc
  85. 5.16 s [really-safe-money] Using ghc-pkg version 9.10.3 found on system at:
  86. 5.16 s [really-safe-money] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc-pkg-9.10.3
  87. 5.16 s [really-safe-money] No ghcjs found
  88. 5.16 s [really-safe-money] No ghcjs-pkg found
  89. 5.16 s [really-safe-money] No greencard found
  90. 5.16 s [really-safe-money] Using haddock version 2.31.1 found on system at:
  91. 5.16 s [really-safe-money] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/haddock-ghc-9.10.3
  92. 5.16 s [really-safe-money] No happy found
  93. 5.16 s [really-safe-money] Using haskell-suite found on system at: haskell-suite-dummy-location
  94. 5.16 s [really-safe-money] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location
  95. 5.16 s [really-safe-money] No hmake found
  96. 5.16 s [really-safe-money] Using hpc version 0.69 found on system at:
  97. 5.16 s [really-safe-money] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hpc-ghc-9.10.3
  98. 5.16 s [really-safe-money] Using hsc2hs version 0.68.10 found on system at:
  99. 5.17 s [really-safe-money] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hsc2hs-ghc-9.10.3
  100. 5.17 s [really-safe-money] Using hscolour version 1.25 found on system at:
  101. 5.17 s [really-safe-money] /nix/store/f755skyzf4jvfx3crwq9mmh3x4lsaz8i-hscolour-1.25/bin/HsColour
  102. 5.17 s [really-safe-money] No jhc found
  103. 5.17 s [really-safe-money] Using ld found on system at:
  104. 5.17 s [really-safe-money] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/ld
  105. 5.17 s [really-safe-money] No pkg-config found
  106. 5.17 s [really-safe-money] Using runghc version 9.10.3 found on system at:
  107. 5.17 s [really-safe-money] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/runghc-9.10.3
  108. 5.17 s [really-safe-money] Using strip version 2.44 found on system at:
  109. 5.17 s [really-safe-money] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/strip
  110. 5.17 s [really-safe-money] Using tar found on system at:
  111. 5.17 s [really-safe-money] /nix/store/xl6pd2spjajwcpq09fnmnjv5psqmlmma-gnutar-1.35/bin/tar
  112. 5.17 s [really-safe-money] No uhc found
  113. 5.30 s [really-safe-money] Phase: buildPhase
  114. 5.30 s [really-safe-money] mutation-nix: setting MUTATION_MANIFEST_DIR=/nix/store/2w29jk75vz9rl5bcl7zycjf2x642m4a6-really-safe-money-0.0.0.0-manifest
  115. 5.35 s [really-safe-money] Preprocessing library for really-safe-money-0.0.0.0...
  116. 5.35 s [really-safe-money] Building library for really-safe-money-0.0.0.0...
  117. 5.50 s [really-safe-money] [ 1 of 12] Compiling Numeric.DecimalLiteral ( src/Numeric/DecimalLiteral.hs, dist/build/Numeric/DecimalLiteral.o, dist/build/Numeric/DecimalLiteral.dyn_o )
  118. 5.81 s [really-safe-money] mutation: instrumenting Numeric.DecimalLiteral
  119. 5.81 s [really-safe-money] added mutation BoolLit at src/Numeric/DecimalLiteral.hs:396:23-27
  120. 5.81 s [really-safe-money] @@ -393,5 +393,5 @@
  121. 5.81 s [really-safe-money] DecimalLiteral mS m e -> DecimalLiteral (go mS) m e
  122. 5.81 s [really-safe-money] where
  123. 5.81 s [really-safe-money] go = \case
  124. 5.81 s [really-safe-money] - Nothing -> Just True
  125. 5.81 s [really-safe-money] + Nothing -> Just False
  126. 5.81 s [really-safe-money] s -> s
  127. 5.83 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:368:10-39
  128. 5.83 s [really-safe-money] @@ -365,7 +365,7 @@
  129. 5.83 s [really-safe-money] setMinimumDigits wantedDigits dl =
  130. 5.83 s [really-safe-money] let currentDigits :: Word8
  131. 5.83 s [really-safe-money] currentDigits = digits dl
  132. 5.83 s [really-safe-money] - in if wantedDigits <= currentDigits
  133. 5.83 s [really-safe-money] + in if True
  134. 5.83 s [really-safe-money] then dl
  135. 5.83 s [really-safe-money] else increaseDigits (wantedDigits - currentDigits) dl
  136. 5.83 s [really-safe-money] where
  137. 5.83 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:368:10-39
  138. 5.83 s [really-safe-money] @@ -365,7 +365,7 @@
  139. 5.83 s [really-safe-money] setMinimumDigits wantedDigits dl =
  140. 5.83 s [really-safe-money] let currentDigits :: Word8
  141. 5.83 s [really-safe-money] currentDigits = digits dl
  142. 5.83 s [really-safe-money] - in if wantedDigits <= currentDigits
  143. 5.83 s [really-safe-money] + in if False
  144. 5.83 s [really-safe-money] then dl
  145. 5.83 s [really-safe-money] else increaseDigits (wantedDigits - currentDigits) dl
  146. 5.83 s [really-safe-money] where
  147. 5.83 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:368:10-39
  148. 5.83 s [really-safe-money] @@ -365,7 +365,7 @@
  149. 5.83 s [really-safe-money] setMinimumDigits wantedDigits dl =
  150. 5.83 s [really-safe-money] let currentDigits :: Word8
  151. 5.83 s [really-safe-money] currentDigits = digits dl
  152. 5.83 s [really-safe-money] - in if wantedDigits <= currentDigits
  153. 5.83 s [really-safe-money] + in if not (wantedDigits <= currentDigits)
  154. 5.83 s [really-safe-money] then dl
  155. 5.83 s [really-safe-money] else increaseDigits (wantedDigits - currentDigits) dl
  156. 5.83 s [really-safe-money] where
  157. 5.83 s [really-safe-money] added mutation CondFlip at src/Numeric/DecimalLiteral.hs:368:7-62
  158. 5.83 s [really-safe-money] @@ -365,9 +365,9 @@
  159. 5.83 s [really-safe-money] setMinimumDigits wantedDigits dl =
  160. 5.83 s [really-safe-money] let currentDigits :: Word8
  161. 5.83 s [really-safe-money] currentDigits = digits dl
  162. 5.83 s [really-safe-money] - in if wantedDigits <= currentDigits
  163. 5.83 s [really-safe-money] - then dl
  164. 5.83 s [really-safe-money] - else increaseDigits (wantedDigits - currentDigits) dl
  165. 5.83 s [really-safe-money] + in if wantedDigits <= currentDigits
  166. 5.83 s [really-safe-money] + then dl
  167. 5.83 s [really-safe-money] + else increaseDigits (wantedDigits - currentDigits) dl
  168. 5.83 s [really-safe-money] where
  169. 5.83 s [really-safe-money] increaseDigits :: Word8 -> DecimalLiteral -> DecimalLiteral
  170. 5.83 s [really-safe-money] increaseDigits 0 = id
  171. 5.83 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:375:80-82
  172. 5.83 s [really-safe-money] @@ -372,7 +372,7 @@
  173. 5.83 s [really-safe-money] increaseDigits :: Word8 -> DecimalLiteral -> DecimalLiteral
  174. 5.83 s [really-safe-money] increaseDigits 0 = id
  175. 5.83 s [really-safe-money] increaseDigits w = \case
  176. 5.83 s [really-safe-money] - DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 10) (succ e))
  177. 5.83 s [really-safe-money] + DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 0) (succ e))
  178. 5.83 s [really-safe-money]
  179. 5.83 s [really-safe-money] -- | Ensures that a positive literal has no sign
  180. 5.83 s [really-safe-money] --
  181. 5.83 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:375:80-82
  182. 5.83 s [really-safe-money] @@ -372,7 +372,7 @@
  183. 5.83 s [really-safe-money] increaseDigits :: Word8 -> DecimalLiteral -> DecimalLiteral
  184. 5.83 s [really-safe-money] increaseDigits 0 = id
  185. 5.83 s [really-safe-money] increaseDigits w = \case
  186. 5.83 s [really-safe-money] - DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 10) (succ e))
  187. 5.84 s [really-safe-money] + DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 1) (succ e))
  188. 5.84 s [really-safe-money]
  189. 5.84 s [really-safe-money] -- | Ensures that a positive literal has no sign
  190. 5.84 s [really-safe-money] --
  191. 5.84 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:337:21-22
  192. 5.84 s [really-safe-money] @@ -334,7 +334,7 @@
  193. 5.84 s [really-safe-money] pure $ fromIntegral n
  194. 5.84 s [really-safe-money]
  195. 5.84 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  196. 5.84 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  197. 5.84 s [really-safe-money] +numSign a = if a >= 1 then Nothing else Just False
  198. 5.84 s [really-safe-money]
  199. 5.84 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  200. 5.84 s [really-safe-money] signSignum = \case
  201. 5.84 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:337:16-22
  202. 5.84 s [really-safe-money] @@ -334,7 +334,7 @@
  203. 5.84 s [really-safe-money] pure $ fromIntegral n
  204. 5.84 s [really-safe-money]
  205. 5.84 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  206. 5.84 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  207. 5.84 s [really-safe-money] +numSign a = if True then Nothing else Just False
  208. 5.84 s [really-safe-money]
  209. 5.84 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  210. 5.84 s [really-safe-money] signSignum = \case
  211. 5.84 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:337:16-22
  212. 5.84 s [really-safe-money] @@ -334,7 +334,7 @@
  213. 5.84 s [really-safe-money] pure $ fromIntegral n
  214. 5.84 s [really-safe-money]
  215. 5.84 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  216. 5.84 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  217. 5.84 s [really-safe-money] +numSign a = if False then Nothing else Just False
  218. 5.84 s [really-safe-money]
  219. 5.84 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  220. 5.84 s [really-safe-money] signSignum = \case
  221. 5.84 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:337:16-22
  222. 5.84 s [really-safe-money] @@ -334,7 +334,7 @@
  223. 5.84 s [really-safe-money] pure $ fromIntegral n
  224. 5.84 s [really-safe-money]
  225. 5.84 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  226. 5.84 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  227. 5.84 s [really-safe-money] +numSign a = if not (a >= 0) then Nothing else Just False
  228. 5.84 s [really-safe-money]
  229. 5.84 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  230. 5.84 s [really-safe-money] signSignum = \case
  231. 5.84 s [really-safe-money] added mutation BoolLit at src/Numeric/DecimalLiteral.hs:337:46-51
  232. 5.84 s [really-safe-money] @@ -334,7 +334,7 @@
  233. 5.84 s [really-safe-money] pure $ fromIntegral n
  234. 5.84 s [really-safe-money]
  235. 5.84 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  236. 5.84 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  237. 5.84 s [really-safe-money] +numSign a = if a >= 0 then Nothing else Just True
  238. 5.84 s [really-safe-money]
  239. 5.84 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  240. 5.84 s [really-safe-money] signSignum = \case
  241. 5.84 s [really-safe-money] added mutation CondFlip at src/Numeric/DecimalLiteral.hs:337:13-51
  242. 5.84 s [really-safe-money] @@ -334,7 +334,7 @@
  243. 5.84 s [really-safe-money] pure $ fromIntegral n
  244. 5.84 s [really-safe-money]
  245. 5.84 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  246. 5.84 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  247. 5.84 s [really-safe-money] +numSign a = if a >= 0 then Nothing else Just False
  248. 5.84 s [really-safe-money]
  249. 5.84 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  250. 5.84 s [really-safe-money] signSignum = \case
  251. 5.84 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46
  252. 5.84 s [really-safe-money] @@ -329,7 +329,7 @@
  253. 5.84 s [really-safe-money] toInt :: DecimalLiteral -> Maybe Int
  254. 5.84 s [really-safe-money] toInt dl = do
  255. 5.84 s [really-safe-money] n <- toInteger dl
  256. 5.84 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Int)
  257. 5.84 s [really-safe-money] + guard $ True
  258. 5.84 s [really-safe-money] guard $ n >= fromIntegral (minBound :: Int)
  259. 5.84 s [really-safe-money] pure $ fromIntegral n
  260. 5.84 s [really-safe-money]
  261. 5.84 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46
  262. 5.84 s [really-safe-money] @@ -329,7 +329,7 @@
  263. 5.84 s [really-safe-money] toInt :: DecimalLiteral -> Maybe Int
  264. 5.84 s [really-safe-money] toInt dl = do
  265. 5.84 s [really-safe-money] n <- toInteger dl
  266. 5.84 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Int)
  267. 5.84 s [really-safe-money] + guard $ False
  268. 5.84 s [really-safe-money] guard $ n >= fromIntegral (minBound :: Int)
  269. 5.84 s [really-safe-money] pure $ fromIntegral n
  270. 5.84 s [really-safe-money]
  271. 5.84 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:332:11-46
  272. 5.84 s [really-safe-money] @@ -329,7 +329,7 @@
  273. 5.84 s [really-safe-money] toInt :: DecimalLiteral -> Maybe Int
  274. 5.84 s [really-safe-money] toInt dl = do
  275. 5.84 s [really-safe-money] n <- toInteger dl
  276. 5.84 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Int)
  277. 5.84 s [really-safe-money] + guard $ not (n <= fromIntegral (maxBound :: Int))
  278. 5.84 s [really-safe-money] guard $ n >= fromIntegral (minBound :: Int)
  279. 5.84 s [really-safe-money] pure $ fromIntegral n
  280. 5.84 s [really-safe-money]
  281. 5.84 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46
  282. 5.84 s [really-safe-money] @@ -330,7 +330,7 @@
  283. 5.84 s [really-safe-money] toInt dl = do
  284. 5.84 s [really-safe-money] n <- toInteger dl
  285. 5.84 s [really-safe-money] guard $ n <= fromIntegral (maxBound :: Int)
  286. 5.84 s [really-safe-money] - guard $ n >= fromIntegral (minBound :: Int)
  287. 5.84 s [really-safe-money] + guard $ True
  288. 5.84 s [really-safe-money] pure $ fromIntegral n
  289. 5.84 s [really-safe-money]
  290. 5.84 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  291. 5.84 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46
  292. 5.84 s [really-safe-money] @@ -330,7 +330,7 @@
  293. 5.84 s [really-safe-money] toInt dl = do
  294. 5.84 s [really-safe-money] n <- toInteger dl
  295. 5.84 s [really-safe-money] guard $ n <= fromIntegral (maxBound :: Int)
  296. 5.84 s [really-safe-money] - guard $ n >= fromIntegral (minBound :: Int)
  297. 5.84 s [really-safe-money] + guard $ False
  298. 5.84 s [really-safe-money] pure $ fromIntegral n
  299. 5.84 s [really-safe-money]
  300. 5.84 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  301. 5.84 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:333:11-46
  302. 5.84 s [really-safe-money] @@ -330,7 +330,7 @@
  303. 5.84 s [really-safe-money] toInt dl = do
  304. 5.84 s [really-safe-money] n <- toInteger dl
  305. 5.84 s [really-safe-money] guard $ n <= fromIntegral (maxBound :: Int)
  306. 5.84 s [really-safe-money] - guard $ n >= fromIntegral (minBound :: Int)
  307. 5.84 s [really-safe-money] + guard $ not (n >= fromIntegral (minBound :: Int))
  308. 5.84 s [really-safe-money] pure $ fromIntegral n
  309. 5.84 s [really-safe-money]
  310. 5.84 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  311. 5.84 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:315:67-68
  312. 5.84 s [really-safe-money] @@ -312,7 +312,7 @@
  313. 5.84 s [really-safe-money]
  314. 5.84 s [really-safe-money] -- | Construct a 'DecimalLiteral' from an 'Integer'
  315. 5.84 s [really-safe-money] fromInteger :: Integer -> DecimalLiteral
  316. 5.84 s [really-safe-money] -fromInteger n = DecimalLiteral (numSign n) (fromIntegral (abs n)) 0
  317. 5.84 s [really-safe-money] +fromInteger n = DecimalLiteral (numSign n) (fromIntegral (abs n)) 1
  318. 5.84 s [really-safe-money]
  319. 5.84 s [really-safe-money] -- | Turn a 'DecimalLiteral' into an 'Integer'
  320. 5.84 s [really-safe-money] toInteger :: DecimalLiteral -> Maybe Integer
  321. 5.84 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:304:42-43
  322. 5.84 s [really-safe-money] @@ -301,7 +301,7 @@
  323. 5.84 s [really-safe-money]
  324. 5.84 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Natural'
  325. 5.84 s [really-safe-money] fromNatural :: Natural -> DecimalLiteral
  326. 5.84 s [really-safe-money] -fromNatural n = DecimalLiteral Nothing n 0
  327. 5.84 s [really-safe-money] +fromNatural n = DecimalLiteral Nothing n 1
  328. 5.84 s [really-safe-money]
  329. 5.84 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Natural'
  330. 5.84 s [really-safe-money] toNatural :: DecimalLiteral -> Maybe Natural
  331. 5.84 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47
  332. 5.84 s [really-safe-money] @@ -296,7 +296,7 @@
  333. 5.84 s [really-safe-money] toWord :: DecimalLiteral -> Maybe Word
  334. 5.84 s [really-safe-money] toWord dl = do
  335. 5.84 s [really-safe-money] n <- toNatural dl
  336. 5.84 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Word)
  337. 5.84 s [really-safe-money] + guard $ True
  338. 5.84 s [really-safe-money] pure $ fromIntegral n
  339. 5.84 s [really-safe-money]
  340. 5.84 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Natural'
  341. 5.84 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47
  342. 5.84 s [really-safe-money] @@ -296,7 +296,7 @@
  343. 5.84 s [really-safe-money] toWord :: DecimalLiteral -> Maybe Word
  344. 5.84 s [really-safe-money] toWord dl = do
  345. 5.84 s [really-safe-money] n <- toNatural dl
  346. 5.84 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Word)
  347. 5.84 s [really-safe-money] + guard $ False
  348. 5.84 s [really-safe-money] pure $ fromIntegral n
  349. 5.84 s [really-safe-money]
  350. 5.84 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Natural'
  351. 5.84 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:299:11-47
  352. 5.84 s [really-safe-money] @@ -296,7 +296,7 @@
  353. 5.84 s [really-safe-money] toWord :: DecimalLiteral -> Maybe Word
  354. 5.84 s [really-safe-money] toWord dl = do
  355. 5.84 s [really-safe-money] n <- toNatural dl
  356. 5.84 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Word)
  357. 5.84 s [really-safe-money] + guard $ not (n <= fromIntegral (maxBound :: Word))
  358. 5.84 s [really-safe-money] pure $ fromIntegral n
  359. 5.84 s [really-safe-money]
  360. 5.84 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Natural'
  361. 5.84 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  362. 5.84 s [really-safe-money] @@ -286,7 +286,7 @@
  363. 5.84 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  364. 5.84 s [really-safe-money] toRatio (DecimalLiteral mSign m e) = case mSign of
  365. 5.84 s [really-safe-money] Just False -> Nothing
  366. 5.84 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  367. 5.84 s [really-safe-money] + _ -> Just $ fromIntegral m / (0 ^ e)
  368. 5.84 s [really-safe-money]
  369. 5.84 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  370. 5.84 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  371. 5.84 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  372. 5.84 s [really-safe-money] @@ -286,7 +286,7 @@
  373. 5.84 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  374. 5.84 s [really-safe-money] toRatio (DecimalLiteral mSign m e) = case mSign of
  375. 5.84 s [really-safe-money] Just False -> Nothing
  376. 5.84 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  377. 5.84 s [really-safe-money] + _ -> Just $ fromIntegral m / (1 ^ e)
  378. 5.84 s [really-safe-money]
  379. 5.84 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  380. 5.84 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  381. 5.84 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  382. 5.84 s [really-safe-money] @@ -286,7 +286,7 @@
  383. 5.84 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  384. 5.84 s [really-safe-money] toRatio (DecimalLiteral mSign m e) = case mSign of
  385. 5.84 s [really-safe-money] Just False -> Nothing
  386. 5.84 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  387. 5.84 s [really-safe-money] + _ -> Just $ fromIntegral m / (-10 ^ e)
  388. 5.84 s [really-safe-money]
  389. 5.84 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  390. 5.84 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  391. 5.84 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:287:38-40
  392. 5.84 s [really-safe-money] @@ -284,9 +284,9 @@
  393. 5.84 s [really-safe-money] -- >>> toRatio (DecimalLiteral (Just False) 3 1)
  394. 5.84 s [really-safe-money] -- Nothing
  395. 5.84 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  396. 5.84 s [really-safe-money] -toRatio (DecimalLiteral mSign m e) = case mSign of
  397. 5.84 s [really-safe-money] - Just False -> Nothing
  398. 5.84 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  399. 5.84 s [really-safe-money] +toRatio (DecimalLiteral mSign m e) = case mSign of
  400. 5.84 s [really-safe-money] + Just False -> Nothing
  401. 5.84 s [really-safe-money] + _ -> Just $ fromIntegral m / (10 ^ e)
  402. 5.84 s [really-safe-money]
  403. 5.84 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  404. 5.84 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  405. 5.84 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:287:38-40
  406. 5.84 s [really-safe-money] @@ -284,9 +284,9 @@
  407. 5.84 s [really-safe-money] -- >>> toRatio (DecimalLiteral (Just False) 3 1)
  408. 5.84 s [really-safe-money] -- Nothing
  409. 5.84 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  410. 5.84 s [really-safe-money] -toRatio (DecimalLiteral mSign m e) = case mSign of
  411. 5.84 s [really-safe-money] - Just False -> Nothing
  412. 5.84 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  413. 5.84 s [really-safe-money] +toRatio (DecimalLiteral mSign m e) = case mSign of
  414. 5.84 s [really-safe-money] + Just False -> Nothing
  415. 5.84 s [really-safe-money] + _ -> Just $ fromIntegral m / (10 ^ e)
  416. 5.84 s [really-safe-money]
  417. 5.84 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  418. 5.84 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  419. 5.84 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44
  420. 5.84 s [really-safe-money] @@ -233,7 +233,7 @@
  421. 5.84 s [really-safe-money] -- >>> fromRatio (1 % 3)
  422. 5.84 s [really-safe-money] -- Nothing
  423. 5.84 s [really-safe-money] fromRatio :: Ratio Natural -> Maybe DecimalLiteral
  424. 5.84 s [really-safe-money] -fromRatio = fromRationalRepetendLimited 256
  425. 5.84 s [really-safe-money] +fromRatio = fromRationalRepetendLimited 0
  426. 5.84 s [really-safe-money] where
  427. 5.84 s [really-safe-money] fromRationalRepetendLimited ::
  428. 5.84 s [really-safe-money] -- limit
  429. 5.84 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44
  430. 5.84 s [really-safe-money] @@ -233,7 +233,7 @@
  431. 5.84 s [really-safe-money] -- >>> fromRatio (1 % 3)
  432. 5.84 s [really-safe-money] -- Nothing
  433. 5.84 s [really-safe-money] fromRatio :: Ratio Natural -> Maybe DecimalLiteral
  434. 5.84 s [really-safe-money] -fromRatio = fromRationalRepetendLimited 256
  435. 5.84 s [really-safe-money] +fromRatio = fromRationalRepetendLimited 1
  436. 5.84 s [really-safe-money] where
  437. 5.84 s [really-safe-money] fromRationalRepetendLimited ::
  438. 5.84 s [really-safe-money] -- limit
  439. 5.84 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44
  440. 5.84 s [really-safe-money] @@ -233,7 +233,7 @@
  441. 5.84 s [really-safe-money] -- >>> fromRatio (1 % 3)
  442. 5.84 s [really-safe-money] -- Nothing
  443. 5.84 s [really-safe-money] fromRatio :: Ratio Natural -> Maybe DecimalLiteral
  444. 5.85 s [really-safe-money] -fromRatio = fromRationalRepetendLimited 256
  445. 5.85 s [really-safe-money] +fromRatio = fromRationalRepetendLimited -256
  446. 5.85 s [really-safe-money] where
  447. 5.85 s [really-safe-money] fromRationalRepetendLimited ::
  448. 5.85 s [really-safe-money] -- limit
  449. 5.85 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:244:14-15
  450. 5.85 s [really-safe-money] @@ -241,7 +241,7 @@
  451. 5.85 s [really-safe-money] Ratio Natural ->
  452. 5.85 s [really-safe-money] Maybe DecimalLiteral
  453. 5.85 s [really-safe-money] fromRationalRepetendLimited l rational
  454. 5.85 s [really-safe-money] - | d == 0 = Nothing
  455. 5.85 s [really-safe-money] + | d == 1 = Nothing
  456. 5.85 s [really-safe-money] | otherwise = toLiteral Nothing <$> longDiv num
  457. 5.85 s [really-safe-money] where
  458. 5.85 s [really-safe-money] toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e)
  459. 5.85 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:244:9-15
  460. 5.85 s [really-safe-money] @@ -241,7 +241,7 @@
  461. 5.85 s [really-safe-money] Ratio Natural ->
  462. 5.85 s [really-safe-money] Maybe DecimalLiteral
  463. 5.85 s [really-safe-money] fromRationalRepetendLimited l rational
  464. 5.85 s [really-safe-money] - | d == 0 = Nothing
  465. 5.85 s [really-safe-money] + | True = Nothing
  466. 5.85 s [really-safe-money] | otherwise = toLiteral Nothing <$> longDiv num
  467. 5.85 s [really-safe-money] where
  468. 5.85 s [really-safe-money] toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e)
  469. 5.85 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:244:9-15
  470. 5.85 s [really-safe-money] @@ -241,7 +241,7 @@
  471. 5.85 s [really-safe-money] Ratio Natural ->
  472. 5.85 s [really-safe-money] Maybe DecimalLiteral
  473. 5.85 s [really-safe-money] fromRationalRepetendLimited l rational
  474. 5.85 s [really-safe-money] - | d == 0 = Nothing
  475. 5.85 s [really-safe-money] + | not (d == 0) = Nothing
  476. 5.85 s [really-safe-money] | otherwise = toLiteral Nothing <$> longDiv num
  477. 5.85 s [really-safe-money] where
  478. 5.85 s [really-safe-money] toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e)
  479. 5.85 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:264:13-26
  480. 5.85 s [really-safe-money] @@ -261,7 +261,7 @@
  481. 5.85 s [really-safe-money] Just (c, e)
  482. 5.85 s [really-safe-money] longDivWithLimit !c !e ns !n
  483. 5.85 s [really-safe-money] -- If there's a repetend, we can't turn it into a decimal literal
  484. 5.85 s [really-safe-money] - | S.member n ns = Nothing
  485. 5.85 s [really-safe-money] + | True = Nothing
  486. 5.85 s [really-safe-money] -- Over the limit, stop trying
  487. 5.85 s [really-safe-money] | e >= l = Nothing
  488. 5.85 s [really-safe-money] | n < d =
  489. 5.85 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:264:13-26
  490. 5.85 s [really-safe-money] @@ -261,7 +261,7 @@
  491. 5.85 s [really-safe-money] Just (c, e)
  492. 5.85 s [really-safe-money] longDivWithLimit !c !e ns !n
  493. 5.85 s [really-safe-money] -- If there's a repetend, we can't turn it into a decimal literal
  494. 5.85 s [really-safe-money] - | S.member n ns = Nothing
  495. 5.85 s [really-safe-money] + | not (S.member n ns) = Nothing
  496. 5.85 s [really-safe-money] -- Over the limit, stop trying
  497. 5.85 s [really-safe-money] | e >= l = Nothing
  498. 5.85 s [really-safe-money] | n < d =
  499. 5.85 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:266:13-19
  500. 5.85 s [really-safe-money] @@ -263,7 +263,7 @@
  501. 5.85 s [really-safe-money] -- If there's a repetend, we can't turn it into a decimal literal
  502. 5.85 s [really-safe-money] | S.member n ns = Nothing
  503. 5.85 s [really-safe-money] -- Over the limit, stop trying
  504. 5.85 s [really-safe-money] - | e >= l = Nothing
  505. 5.85 s [really-safe-money] + | True = Nothing
  506. 5.85 s [really-safe-money] | n < d =
  507. 5.85 s [really-safe-money] let !ns' = S.insert n ns
  508. 5.85 s [really-safe-money] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  509. 5.85 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:266:13-19
  510. 5.85 s [really-safe-money] @@ -263,7 +263,7 @@
  511. 5.85 s [really-safe-money] -- If there's a repetend, we can't turn it into a decimal literal
  512. 5.85 s [really-safe-money] | S.member n ns = Nothing
  513. 5.85 s [really-safe-money] -- Over the limit, stop trying
  514. 5.85 s [really-safe-money] - | e >= l = Nothing
  515. 5.85 s [really-safe-money] + | not (e >= l) = Nothing
  516. 5.85 s [really-safe-money] | n < d =
  517. 5.85 s [really-safe-money] let !ns' = S.insert n ns
  518. 5.85 s [really-safe-money] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  519. 5.85 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:267:13-18
  520. 5.85 s [really-safe-money] @@ -264,7 +264,7 @@
  521. 5.85 s [really-safe-money] | S.member n ns = Nothing
  522. 5.85 s [really-safe-money] -- Over the limit, stop trying
  523. 5.85 s [really-safe-money] | e >= l = Nothing
  524. 5.85 s [really-safe-money] - | n < d =
  525. 5.85 s [really-safe-money] + | True =
  526. 5.85 s [really-safe-money] let !ns' = S.insert n ns
  527. 5.85 s [really-safe-money] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  528. 5.85 s [really-safe-money] | otherwise =
  529. 5.85 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:267:13-18
  530. 5.85 s [really-safe-money] @@ -264,7 +264,7 @@
  531. 5.85 s [really-safe-money] | S.member n ns = Nothing
  532. 5.85 s [really-safe-money] -- Over the limit, stop trying
  533. 5.85 s [really-safe-money] | e >= l = Nothing
  534. 5.85 s [really-safe-money] - | n < d =
  535. 5.85 s [really-safe-money] + | not (n < d) =
  536. 5.85 s [really-safe-money] let !ns' = S.insert n ns
  537. 5.85 s [really-safe-money] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  538. 5.85 s [really-safe-money] | otherwise =
  539. 5.85 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:269:41-43
  540. 5.85 s [really-safe-money] @@ -266,7 +266,7 @@
  541. 5.85 s [really-safe-money] | e >= l = Nothing
  542. 5.85 s [really-safe-money] | n < d =
  543. 5.85 s [really-safe-money] let !ns' = S.insert n ns
  544. 5.85 s [really-safe-money] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  545. 5.85 s [really-safe-money] + in longDivWithLimit (c * 0) (succ e) ns' (n * 10)
  546. 5.85 s [really-safe-money] | otherwise =
  547. 5.85 s [really-safe-money] let (q, r') = n `quotRem` d
  548. 5.85 s [really-safe-money] in longDivWithLimit (c + q) e ns r'
  549. 5.85 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:269:41-43
  550. 5.85 s [really-safe-money] @@ -266,7 +266,7 @@
  551. 5.85 s [really-safe-money] | e >= l = Nothing
  552. 5.85 s [really-safe-money] | n < d =
  553. 5.85 s [really-safe-money] let !ns' = S.insert n ns
  554. 5.85 s [really-safe-money] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  555. 5.85 s [really-safe-money] + in longDivWithLimit (c * 1) (succ e) ns' (n * 10)
  556. 5.85 s [really-safe-money] | otherwise =
  557. 5.85 s [really-safe-money] let (q, r') = n `quotRem` d
  558. 5.85 s [really-safe-money] in longDivWithLimit (c + q) e ns r'
  559. 5.85 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:269:63-65
  560. 5.85 s [really-safe-money] @@ -266,7 +266,7 @@
  561. 5.85 s [really-safe-money] | e >= l = Nothing
  562. 5.85 s [really-safe-money] | n < d =
  563. 5.85 s [really-safe-money] let !ns' = S.insert n ns
  564. 5.85 s [really-safe-money] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  565. 5.85 s [really-safe-money] + in longDivWithLimit (c * 10) (succ e) ns' (n * 0)
  566. 5.85 s [really-safe-money] | otherwise =
  567. 5.85 s [really-safe-money] let (q, r') = n `quotRem` d
  568. 5.85 s [really-safe-money] in longDivWithLimit (c + q) e ns r'
  569. 5.85 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:269:63-65
  570. 5.85 s [really-safe-money] @@ -266,7 +266,7 @@
  571. 5.85 s [really-safe-money] | e >= l = Nothing
  572. 5.85 s [really-safe-money] | n < d =
  573. 5.85 s [really-safe-money] let !ns' = S.insert n ns
  574. 5.85 s [really-safe-money] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  575. 5.85 s [really-safe-money] + in longDivWithLimit (c * 10) (succ e) ns' (n * 1)
  576. 5.85 s [really-safe-money] | otherwise =
  577. 5.85 s [really-safe-money] let (q, r') = n `quotRem` d
  578. 5.85 s [really-safe-money] in longDivWithLimit (c + q) e ns r'
  579. 5.85 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:252:36-37
  580. 5.85 s [really-safe-money] @@ -249,7 +249,7 @@
  581. 5.85 s [really-safe-money] num = numerator rational
  582. 5.85 s [really-safe-money]
  583. 5.85 s [really-safe-money] longDiv :: Natural -> Maybe (Natural, Int)
  584. 5.85 s [really-safe-money] - longDiv = longDivWithLimit 0 0 S.empty
  585. 5.85 s [really-safe-money] + longDiv = longDivWithLimit 1 0 S.empty
  586. 5.85 s [really-safe-money]
  587. 5.85 s [really-safe-money] longDivWithLimit ::
  588. 5.85 s [really-safe-money] Natural ->
  589. 5.85 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:252:38-39
  590. 5.85 s [really-safe-money] @@ -249,7 +249,7 @@
  591. 5.85 s [really-safe-money] num = numerator rational
  592. 5.85 s [really-safe-money]
  593. 5.85 s [really-safe-money] longDiv :: Natural -> Maybe (Natural, Int)
  594. 5.85 s [really-safe-money] - longDiv = longDivWithLimit 0 0 S.empty
  595. 5.85 s [really-safe-money] + longDiv = longDivWithLimit 0 1 S.empty
  596. 5.85 s [really-safe-money]
  597. 5.85 s [really-safe-money] longDivWithLimit ::
  598. 5.85 s [really-safe-money] Natural ->
  599. 5.85 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:223:39-41
  600. 5.85 s [really-safe-money] @@ -220,7 +220,7 @@
  601. 5.85 s [really-safe-money] -- (-3) % 10
  602. 5.85 s [really-safe-money] toRational :: DecimalLiteral -> Rational
  603. 5.85 s [really-safe-money] toRational (DecimalLiteral mSign m e) =
  604. 5.85 s [really-safe-money] - signSignum mSign (fromIntegral m / (10 ^ e))
  605. 5.85 s [really-safe-money] + signSignum mSign (fromIntegral m / (0 ^ e))
  606. 5.85 s [really-safe-money]
  607. 5.85 s [really-safe-money] -- | Parse a 'DecimalLiteral' from a 'Ratio Natural'
  608. 5.85 s [really-safe-money] --
  609. 5.85 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:223:39-41
  610. 5.85 s [really-safe-money] @@ -220,7 +220,7 @@
  611. 5.85 s [really-safe-money] -- (-3) % 10
  612. 5.85 s [really-safe-money] toRational :: DecimalLiteral -> Rational
  613. 5.85 s [really-safe-money] toRational (DecimalLiteral mSign m e) =
  614. 5.85 s [really-safe-money] - signSignum mSign (fromIntegral m / (10 ^ e))
  615. 5.85 s [really-safe-money] + signSignum mSign (fromIntegral m / (1 ^ e))
  616. 5.85 s [really-safe-money]
  617. 5.85 s [really-safe-money] -- | Parse a 'DecimalLiteral' from a 'Ratio Natural'
  618. 5.85 s [really-safe-money] --
  619. 5.85 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:223:39-41
  620. 5.85 s [really-safe-money] @@ -220,7 +220,7 @@
  621. 5.85 s [really-safe-money] -- (-3) % 10
  622. 5.85 s [really-safe-money] toRational :: DecimalLiteral -> Rational
  623. 5.85 s [really-safe-money] toRational (DecimalLiteral mSign m e) =
  624. 5.85 s [really-safe-money] - signSignum mSign (fromIntegral m / (10 ^ e))
  625. 5.85 s [really-safe-money] + signSignum mSign (fromIntegral m / (-10 ^ e))
  626. 5.85 s [really-safe-money]
  627. 5.85 s [really-safe-money] -- | Parse a 'DecimalLiteral' from a 'Ratio Natural'
  628. 5.85 s [really-safe-money] --
  629. 5.85 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:208:9-10
  630. 5.85 s [really-safe-money] @@ -205,7 +205,7 @@
  631. 5.85 s [really-safe-money] -- Nothing
  632. 5.85 s [really-safe-money] fromRational :: Rational -> Maybe DecimalLiteral
  633. 5.85 s [really-safe-money] fromRational (n :% d)
  634. 5.85 s [really-safe-money] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  635. 5.85 s [really-safe-money] + | n < 1 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  636. 5.85 s [really-safe-money] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  637. 5.85 s [really-safe-money]
  638. 5.85 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Rational'
  639. 5.85 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:208:5-10
  640. 5.85 s [really-safe-money] @@ -205,7 +205,7 @@
  641. 5.85 s [really-safe-money] -- Nothing
  642. 5.85 s [really-safe-money] fromRational :: Rational -> Maybe DecimalLiteral
  643. 5.85 s [really-safe-money] fromRational (n :% d)
  644. 5.85 s [really-safe-money] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  645. 5.85 s [really-safe-money] + | True = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  646. 5.85 s [really-safe-money] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  647. 5.85 s [really-safe-money]
  648. 5.85 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Rational'
  649. 5.85 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:208:5-10
  650. 5.85 s [really-safe-money] @@ -205,7 +205,7 @@
  651. 5.85 s [really-safe-money] -- Nothing
  652. 5.85 s [really-safe-money] fromRational :: Rational -> Maybe DecimalLiteral
  653. 5.85 s [really-safe-money] fromRational (n :% d)
  654. 5.85 s [really-safe-money] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  655. 5.85 s [really-safe-money] + | not (n < 0) = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  656. 5.85 s [really-safe-money] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  657. 5.85 s [really-safe-money]
  658. 5.85 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Rational'
  659. 5.85 s [really-safe-money] added mutation BoolLit at src/Numeric/DecimalLiteral.hs:208:62-67
  660. 5.85 s [really-safe-money] @@ -205,7 +205,7 @@
  661. 5.85 s [really-safe-money] -- Nothing
  662. 5.85 s [really-safe-money] fromRational :: Rational -> Maybe DecimalLiteral
  663. 5.85 s [really-safe-money] fromRational (n :% d)
  664. 5.85 s [really-safe-money] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  665. 5.85 s [really-safe-money] + | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just True) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  666. 5.85 s [really-safe-money] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  667. 5.85 s [really-safe-money]
  668. 5.85 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Rational'
  669. 5.85 s [really-safe-money] added mutation ListLit at src/Numeric/DecimalLiteral.hs:186:15-25
  670. 5.85 s [really-safe-money] @@ -183,7 +183,7 @@
  671. 5.85 s [really-safe-money]
  672. 5.85 s [really-safe-money] goFrac m e = reverse (go e (reverse (show m)))
  673. 5.85 s [really-safe-money] go :: Word8 -> String -> String
  674. 5.85 s [really-safe-money] - go 0 [] = ['.', '0']
  675. 5.85 s [really-safe-money] + go 0 [] = []
  676. 5.85 s [really-safe-money] go 0 s = '.' : s
  677. 5.85 s [really-safe-money] go e [] = '0' : go (pred e) []
  678. 5.85 s [really-safe-money] go e (c : cs) = c : go (pred e) cs
  679. 5.85 s [really-safe-money] added mutation ListLit at src/Numeric/DecimalLiteral.hs:186:15-25
  680. 5.85 s [really-safe-money] @@ -183,7 +183,7 @@
  681. 5.85 s [really-safe-money]
  682. 5.85 s [really-safe-money] goFrac m e = reverse (go e (reverse (show m)))
  683. 5.85 s [really-safe-money] go :: Word8 -> String -> String
  684. 5.85 s [really-safe-money] - go 0 [] = ['.', '0']
  685. 5.85 s [really-safe-money] + go 0 [] = ['.', '0']
  686. 5.85 s [really-safe-money] go 0 s = '.' : s
  687. 5.85 s [really-safe-money] go e [] = '0' : go (pred e) []
  688. 5.85 s [really-safe-money] go e (c : cs) = c : go (pred e) cs
  689. 5.85 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30
  690. 5.85 s [really-safe-money] @@ -142,7 +142,7 @@
  691. 5.85 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  692. 5.85 s [really-safe-money] parseDigits f z = do
  693. 5.85 s [really-safe-money] c <- ReadP.satisfy Char.isDigit
  694. 5.85 s [really-safe-money] - let digit = Char.ord c - 48
  695. 5.85 s [really-safe-money] + let digit = Char.ord c - 0
  696. 5.85 s [really-safe-money] case f z digit of
  697. 5.85 s [really-safe-money] Nothing -> fail "Failed to step the first digit"
  698. 5.85 s [really-safe-money] Just a -> ReadP.look >>= go a
  699. 5.85 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30
  700. 5.85 s [really-safe-money] @@ -142,7 +142,7 @@
  701. 5.85 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  702. 5.85 s [really-safe-money] parseDigits f z = do
  703. 5.85 s [really-safe-money] c <- ReadP.satisfy Char.isDigit
  704. 5.85 s [really-safe-money] - let digit = Char.ord c - 48
  705. 5.85 s [really-safe-money] + let digit = Char.ord c - 1
  706. 5.85 s [really-safe-money] case f z digit of
  707. 5.85 s [really-safe-money] Nothing -> fail "Failed to step the first digit"
  708. 5.85 s [really-safe-money] Just a -> ReadP.look >>= go a
  709. 5.85 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30
  710. 5.85 s [really-safe-money] @@ -142,7 +142,7 @@
  711. 5.85 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  712. 5.85 s [really-safe-money] parseDigits f z = do
  713. 5.85 s [really-safe-money] c <- ReadP.satisfy Char.isDigit
  714. 5.85 s [really-safe-money] - let digit = Char.ord c - 48
  715. 5.85 s [really-safe-money] + let digit = Char.ord c - -48
  716. 5.85 s [really-safe-money] case f z digit of
  717. 5.85 s [really-safe-money] Nothing -> fail "Failed to step the first digit"
  718. 5.85 s [really-safe-money] Just a -> ReadP.look >>= go a
  719. 5.85 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:152:9-23
  720. 5.85 s [really-safe-money] @@ -149,7 +149,7 @@
  721. 5.85 s [really-safe-money] where
  722. 5.85 s [really-safe-money] go !a [] = return a
  723. 5.85 s [really-safe-money] go !a (c : cs)
  724. 5.85 s [really-safe-money] - | Char.isDigit c = do
  725. 5.85 s [really-safe-money] + | True = do
  726. 5.85 s [really-safe-money] _ <- ReadP.get
  727. 5.85 s [really-safe-money] let digit = Char.ord c - 48
  728. 5.85 s [really-safe-money] case f a digit of
  729. 5.85 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:152:9-23
  730. 5.85 s [really-safe-money] @@ -149,7 +149,7 @@
  731. 5.85 s [really-safe-money] where
  732. 5.85 s [really-safe-money] go !a [] = return a
  733. 5.85 s [really-safe-money] go !a (c : cs)
  734. 5.85 s [really-safe-money] - | Char.isDigit c = do
  735. 5.85 s [really-safe-money] + | not (Char.isDigit c) = do
  736. 5.85 s [really-safe-money] _ <- ReadP.get
  737. 5.85 s [really-safe-money] let digit = Char.ord c - 48
  738. 5.85 s [really-safe-money] case f a digit of
  739. 5.85 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:154:36-38
  740. 5.85 s [really-safe-money] @@ -151,7 +151,7 @@
  741. 5.85 s [really-safe-money] go !a (c : cs)
  742. 5.85 s [really-safe-money] | Char.isDigit c = do
  743. 5.85 s [really-safe-money] _ <- ReadP.get
  744. 5.86 s [really-safe-money] - let digit = Char.ord c - 48
  745. 5.86 s [really-safe-money] + let digit = Char.ord c - 0
  746. 5.86 s [really-safe-money] case f a digit of
  747. 5.86 s [really-safe-money] Nothing -> fail "Failed to step the digit"
  748. 5.86 s [really-safe-money] Just a' -> go a' cs
  749. 5.86 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:154:36-38
  750. 5.86 s [really-safe-money] @@ -151,7 +151,7 @@
  751. 5.86 s [really-safe-money] go !a (c : cs)
  752. 5.86 s [really-safe-money] | Char.isDigit c = do
  753. 5.86 s [really-safe-money] _ <- ReadP.get
  754. 5.86 s [really-safe-money] - let digit = Char.ord c - 48
  755. 5.86 s [really-safe-money] + let digit = Char.ord c - 1
  756. 5.86 s [really-safe-money] case f a digit of
  757. 5.86 s [really-safe-money] Nothing -> fail "Failed to step the digit"
  758. 5.86 s [really-safe-money] Just a' -> go a' cs
  759. 5.86 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:154:36-38
  760. 5.86 s [really-safe-money] @@ -151,7 +151,7 @@
  761. 5.86 s [really-safe-money] go !a (c : cs)
  762. 5.86 s [really-safe-money] | Char.isDigit c = do
  763. 5.86 s [really-safe-money] _ <- ReadP.get
  764. 5.86 s [really-safe-money] - let digit = Char.ord c - 48
  765. 5.86 s [really-safe-money] + let digit = Char.ord c - -48
  766. 5.86 s [really-safe-money] case f a digit of
  767. 5.86 s [really-safe-money] Nothing -> fail "Failed to step the digit"
  768. 5.86 s [really-safe-money] Just a' -> go a' cs
  769. 5.86 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:139:27-29
  770. 5.86 s [really-safe-money] @@ -136,7 +136,7 @@
  771. 5.86 s [really-safe-money] stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  772. 5.86 s [really-safe-money]
  773. 5.86 s [really-safe-money] step :: Natural -> Int -> Maybe Natural
  774. 5.86 s [really-safe-money] -step a digit = Just $ a * 10 + fromIntegral digit
  775. 5.86 s [really-safe-money] +step a digit = Just $ a * 0 + fromIntegral digit
  776. 5.86 s [really-safe-money] {-# INLINE step #-}
  777. 5.86 s [really-safe-money]
  778. 5.86 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  779. 5.86 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:139:27-29
  780. 5.86 s [really-safe-money] @@ -136,7 +136,7 @@
  781. 5.86 s [really-safe-money] stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  782. 5.86 s [really-safe-money]
  783. 5.86 s [really-safe-money] step :: Natural -> Int -> Maybe Natural
  784. 5.86 s [really-safe-money] -step a digit = Just $ a * 10 + fromIntegral digit
  785. 5.86 s [really-safe-money] +step a digit = Just $ a * 1 + fromIntegral digit
  786. 5.86 s [really-safe-money] {-# INLINE step #-}
  787. 5.86 s [really-safe-money]
  788. 5.86 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  789. 5.86 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:136:39-41
  790. 5.86 s [really-safe-money] @@ -133,7 +133,7 @@
  791. 5.86 s [really-safe-money]
  792. 5.86 s [really-safe-money] stepFraction :: (Natural, Word8) -> Int -> Maybe (Natural, Word8)
  793. 5.86 s [really-safe-money] stepFraction (_, 255) _ = Nothing
  794. 5.86 s [really-safe-money] -stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  795. 5.86 s [really-safe-money] +stepFraction (m, e) digit = Just (m * 0 + fromIntegral digit, succ e)
  796. 5.86 s [really-safe-money]
  797. 5.86 s [really-safe-money] step :: Natural -> Int -> Maybe Natural
  798. 5.86 s [really-safe-money] step a digit = Just $ a * 10 + fromIntegral digit
  799. 5.86 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:136:39-41
  800. 5.86 s [really-safe-money] @@ -133,7 +133,7 @@
  801. 5.86 s [really-safe-money]
  802. 5.86 s [really-safe-money] stepFraction :: (Natural, Word8) -> Int -> Maybe (Natural, Word8)
  803. 5.86 s [really-safe-money] stepFraction (_, 255) _ = Nothing
  804. 5.86 s [really-safe-money] -stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  805. 5.86 s [really-safe-money] +stepFraction (m, e) digit = Just (m * 1 + fromIntegral digit, succ e)
  806. 5.86 s [really-safe-money]
  807. 5.86 s [really-safe-money] step :: Natural -> Int -> Maybe Natural
  808. 5.86 s [really-safe-money] step a digit = Just $ a * 10 + fromIntegral digit
  809. 5.86 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-30
  810. 5.86 s [really-safe-money] @@ -116,7 +116,7 @@
  811. 5.86 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  812. 5.86 s [really-safe-money] decimalLiteralP = do
  813. 5.86 s [really-safe-money] let isSignChar :: Char -> Bool
  814. 5.86 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  815. 5.86 s [really-safe-money] + isSignChar c = True || c == '+'
  816. 5.86 s [really-safe-money]
  817. 5.86 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  818. 5.86 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  819. 5.86 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-30
  820. 5.86 s [really-safe-money] @@ -116,7 +116,7 @@
  821. 5.86 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  822. 5.86 s [really-safe-money] decimalLiteralP = do
  823. 5.86 s [really-safe-money] let isSignChar :: Char -> Bool
  824. 5.86 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  825. 5.86 s [really-safe-money] + isSignChar c = False || c == '+'
  826. 5.86 s [really-safe-money]
  827. 5.86 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  828. 5.86 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  829. 5.86 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:119:22-30
  830. 5.86 s [really-safe-money] @@ -116,7 +116,7 @@
  831. 5.86 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  832. 5.86 s [really-safe-money] decimalLiteralP = do
  833. 5.86 s [really-safe-money] let isSignChar :: Char -> Bool
  834. 5.86 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  835. 5.86 s [really-safe-money] + isSignChar c = not (c == '-') || c == '+'
  836. 5.86 s [really-safe-money]
  837. 5.86 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  838. 5.86 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  839. 5.86 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:34-42
  840. 5.86 s [really-safe-money] @@ -116,7 +116,7 @@
  841. 5.86 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  842. 5.86 s [really-safe-money] decimalLiteralP = do
  843. 5.86 s [really-safe-money] let isSignChar :: Char -> Bool
  844. 5.86 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  845. 5.86 s [really-safe-money] + isSignChar c = c == '-' || True
  846. 5.86 s [really-safe-money]
  847. 5.86 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  848. 5.86 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  849. 5.86 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:34-42
  850. 5.86 s [really-safe-money] @@ -116,7 +116,7 @@
  851. 5.86 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  852. 5.86 s [really-safe-money] decimalLiteralP = do
  853. 5.86 s [really-safe-money] let isSignChar :: Char -> Bool
  854. 5.86 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  855. 5.86 s [really-safe-money] + isSignChar c = c == '-' || False
  856. 5.86 s [really-safe-money]
  857. 5.86 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  858. 5.86 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  859. 5.86 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:119:34-42
  860. 5.86 s [really-safe-money] @@ -116,7 +116,7 @@
  861. 5.86 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  862. 5.86 s [really-safe-money] decimalLiteralP = do
  863. 5.86 s [really-safe-money] let isSignChar :: Char -> Bool
  864. 5.86 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  865. 5.86 s [really-safe-money] + isSignChar c = c == '-' || not (c == '+')
  866. 5.86 s [really-safe-money]
  867. 5.86 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  868. 5.86 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  869. 5.86 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-42
  870. 5.86 s [really-safe-money] @@ -116,7 +116,7 @@
  871. 5.86 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  872. 5.86 s [really-safe-money] decimalLiteralP = do
  873. 5.86 s [really-safe-money] let isSignChar :: Char -> Bool
  874. 5.86 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  875. 5.86 s [really-safe-money] + isSignChar c = True
  876. 5.86 s [really-safe-money]
  877. 5.86 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  878. 5.86 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  879. 5.86 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-42
  880. 5.86 s [really-safe-money] @@ -116,7 +116,7 @@
  881. 5.86 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  882. 5.86 s [really-safe-money] decimalLiteralP = do
  883. 5.86 s [really-safe-money] let isSignChar :: Char -> Bool
  884. 5.86 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  885. 5.86 s [really-safe-money] + isSignChar c = False
  886. 5.86 s [really-safe-money]
  887. 5.86 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  888. 5.86 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  889. 5.86 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:119:22-42
  890. 5.86 s [really-safe-money] @@ -116,7 +116,7 @@
  891. 5.86 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  892. 5.86 s [really-safe-money] decimalLiteralP = do
  893. 5.86 s [really-safe-money] let isSignChar :: Char -> Bool
  894. 5.86 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  895. 5.86 s [really-safe-money] + isSignChar c = not (c == '-' || c == '+')
  896. 5.86 s [really-safe-money]
  897. 5.86 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  898. 5.86 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  899. 5.86 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:123:19-34
  900. 5.86 s [really-safe-money] @@ -120,7 +120,7 @@
  901. 5.86 s [really-safe-money]
  902. 5.86 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  903. 5.86 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  904. 5.86 s [really-safe-money] - pure $ Just $ signChar == '+'
  905. 5.86 s [really-safe-money] + pure $ Just $ True
  906. 5.86 s [really-safe-money]
  907. 5.86 s [really-safe-money] units <- parseDigits step 0
  908. 5.86 s [really-safe-money]
  909. 5.86 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:123:19-34
  910. 5.86 s [really-safe-money] @@ -120,7 +120,7 @@
  911. 5.86 s [really-safe-money]
  912. 5.86 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  913. 5.86 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  914. 5.86 s [really-safe-money] - pure $ Just $ signChar == '+'
  915. 5.86 s [really-safe-money] + pure $ Just $ False
  916. 5.86 s [really-safe-money]
  917. 5.86 s [really-safe-money] units <- parseDigits step 0
  918. 5.86 s [really-safe-money]
  919. 5.86 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:123:19-34
  920. 5.86 s [really-safe-money] @@ -120,7 +120,7 @@
  921. 5.86 s [really-safe-money]
  922. 5.86 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  923. 5.86 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  924. 5.86 s [really-safe-money] - pure $ Just $ signChar == '+'
  925. 5.86 s [really-safe-money] + pure $ Just $ not (signChar == '+')
  926. 5.86 s [really-safe-money]
  927. 5.86 s [really-safe-money] units <- parseDigits step 0
  928. 5.86 s [really-safe-money]
  929. 5.86 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:125:29-30
  930. 5.86 s [really-safe-money] @@ -122,7 +122,7 @@
  931. 5.86 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  932. 5.86 s [really-safe-money] pure $ Just $ signChar == '+'
  933. 5.86 s [really-safe-money]
  934. 5.86 s [really-safe-money] - units <- parseDigits step 0
  935. 5.86 s [really-safe-money] + units <- parseDigits step 1
  936. 5.86 s [really-safe-money]
  937. 5.86 s [really-safe-money] ReadP.option (DecimalLiteral mSign units 0) $ do
  938. 5.86 s [really-safe-money] _ <- ReadP.satisfy (== '.')
  939. 5.86 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:127:44-45
  940. 5.86 s [really-safe-money] @@ -124,7 +124,7 @@
  941. 5.86 s [really-safe-money]
  942. 5.86 s [really-safe-money] units <- parseDigits step 0
  943. 5.86 s [really-safe-money]
  944. 5.86 s [really-safe-money] - ReadP.option (DecimalLiteral mSign units 0) $ do
  945. 5.86 s [really-safe-money] + ReadP.option (DecimalLiteral mSign units 1) $ do
  946. 5.86 s [really-safe-money] _ <- ReadP.satisfy (== '.')
  947. 5.86 s [really-safe-money]
  948. 5.86 s [really-safe-money] (m, e) <- parseDigits stepFraction (units, 0)
  949. 5.86 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:130:48-49
  950. 5.86 s [really-safe-money] @@ -127,7 +127,7 @@
  951. 5.86 s [really-safe-money] ReadP.option (DecimalLiteral mSign units 0) $ do
  952. 5.86 s [really-safe-money] _ <- ReadP.satisfy (== '.')
  953. 5.86 s [really-safe-money]
  954. 5.86 s [really-safe-money] - (m, e) <- parseDigits stepFraction (units, 0)
  955. 5.86 s [really-safe-money] + (m, e) <- parseDigits stepFraction (units, 1)
  956. 5.86 s [really-safe-money]
  957. 5.86 s [really-safe-money] pure $ DecimalLiteral mSign m e
  958. 5.86 s [really-safe-money]
  959. 5.86 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:112:17-21
  960. 5.86 s [really-safe-money] @@ -109,9 +109,9 @@
  961. 5.86 s [really-safe-money]
  962. 5.86 s [really-safe-money] -- | Like 'fromString' but in a 'MonadFail'
  963. 5.86 s [really-safe-money] fromStringM :: (MonadFail m) => String -> m DecimalLiteral
  964. 5.86 s [really-safe-money] -fromStringM s = case Numeric.DecimalLiteral.fromString s of
  965. 5.86 s [really-safe-money] - Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  966. 5.86 s [really-safe-money] - Just dl -> pure dl
  967. 5.86 s [really-safe-money] +fromStringM s = case Numeric.DecimalLiteral.fromString s of
  968. 5.86 s [really-safe-money] + Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  969. 5.86 s [really-safe-money] + Just dl -> pure dl
  970. 5.86 s [really-safe-money]
  971. 5.86 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  972. 5.86 s [really-safe-money] decimalLiteralP = do
  973. 5.86 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:112:17-21
  974. 5.86 s [really-safe-money] @@ -109,9 +109,9 @@
  975. 5.86 s [really-safe-money]
  976. 5.86 s [really-safe-money] -- | Like 'fromString' but in a 'MonadFail'
  977. 5.86 s [really-safe-money] fromStringM :: (MonadFail m) => String -> m DecimalLiteral
  978. 5.86 s [really-safe-money] -fromStringM s = case Numeric.DecimalLiteral.fromString s of
  979. 5.86 s [really-safe-money] - Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  980. 5.86 s [really-safe-money] - Just dl -> pure dl
  981. 5.86 s [really-safe-money] +fromStringM s = case Numeric.DecimalLiteral.fromString s of
  982. 5.86 s [really-safe-money] + Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  983. 5.86 s [really-safe-money] + Just dl -> pure dl
  984. 5.86 s [really-safe-money]
  985. 5.86 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  986. 5.86 s [really-safe-money] decimalLiteralP = do
  987. 5.86 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:86:18-18
  988. 5.86 s [really-safe-money] @@ -83,9 +83,9 @@
  989. 5.86 s [really-safe-money] instance NFData DecimalLiteral
  990. 5.86 s [really-safe-money]
  991. 5.87 s [really-safe-money] instance IsString DecimalLiteral where
  992. 5.87 s [really-safe-money] - fromString s = case Numeric.DecimalLiteral.fromString s of
  993. 5.87 s [really-safe-money] - Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  994. 5.87 s [really-safe-money] - Just dl -> dl
  995. 5.87 s [really-safe-money] + fromString s = case Numeric.DecimalLiteral.fromString s of
  996. 5.87 s [really-safe-money] + Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  997. 5.87 s [really-safe-money] + Just dl -> dl
  998. 5.87 s [really-safe-money]
  999. 5.87 s [really-safe-money] -- | Parse a decimal literal from a string
  1000. 5.87 s [really-safe-money] --
  1001. 5.87 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:86:18-18
  1002. 5.87 s [really-safe-money] @@ -83,9 +83,9 @@
  1003. 5.87 s [really-safe-money] instance NFData DecimalLiteral
  1004. 5.87 s [really-safe-money]
  1005. 5.87 s [really-safe-money] instance IsString DecimalLiteral where
  1006. 5.87 s [really-safe-money] - fromString s = case Numeric.DecimalLiteral.fromString s of
  1007. 5.87 s [really-safe-money] - Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  1008. 5.87 s [really-safe-money] - Just dl -> dl
  1009. 5.87 s [really-safe-money] + fromString s = case Numeric.DecimalLiteral.fromString s of
  1010. 5.87 s [really-safe-money] + Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  1011. 5.87 s [really-safe-money] + Just dl -> dl
  1012. 5.87 s [really-safe-money]
  1013. 5.87 s [really-safe-money] -- | Parse a decimal literal from a string
  1014. 5.87 s [really-safe-money] --
  1015. 5.87 s [really-safe-money] added 87 mutations
  1016. 7.10 s [really-safe-money] [ 2 of 12] Compiling Money.QuantisationFactor ( src/Money/QuantisationFactor.hs, dist/build/Money/QuantisationFactor.o, dist/build/Money/QuantisationFactor.dyn_o )
  1017. 7.11 s [really-safe-money] mutation: instrumenting Money.QuantisationFactor
  1018. 7.11 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:87:27-28
  1019. 7.11 s [really-safe-money] @@ -84,7 +84,7 @@
  1020. 7.11 s [really-safe-money] fromDecimalLiteral dl = do
  1021. 7.11 s [really-safe-money] irat <-
  1022. 7.11 s [really-safe-money] let r = DecimalLiteral.toRational dl
  1023. 7.11 s [really-safe-money] - in if numerator r == 0
  1024. 7.11 s [really-safe-money] + in if numerator r == 1
  1025. 7.11 s [really-safe-money] then Nothing
  1026. 7.11 s [really-safe-money] else pure r
  1027. 7.11 s [really-safe-money]
  1028. 7.11 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:87:12-28
  1029. 7.11 s [really-safe-money] @@ -84,7 +84,7 @@
  1030. 7.11 s [really-safe-money] fromDecimalLiteral dl = do
  1031. 7.11 s [really-safe-money] irat <-
  1032. 7.11 s [really-safe-money] let r = DecimalLiteral.toRational dl
  1033. 7.11 s [really-safe-money] - in if numerator r == 0
  1034. 7.11 s [really-safe-money] + in if True
  1035. 7.11 s [really-safe-money] then Nothing
  1036. 7.11 s [really-safe-money] else pure r
  1037. 7.11 s [really-safe-money]
  1038. 7.11 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:87:12-28
  1039. 7.11 s [really-safe-money] @@ -84,7 +84,7 @@
  1040. 7.11 s [really-safe-money] fromDecimalLiteral dl = do
  1041. 7.11 s [really-safe-money] irat <-
  1042. 7.11 s [really-safe-money] let r = DecimalLiteral.toRational dl
  1043. 7.11 s [really-safe-money] - in if numerator r == 0
  1044. 7.11 s [really-safe-money] + in if False
  1045. 7.11 s [really-safe-money] then Nothing
  1046. 7.11 s [really-safe-money] else pure r
  1047. 7.11 s [really-safe-money]
  1048. 7.11 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:87:12-28
  1049. 7.11 s [really-safe-money] @@ -84,7 +84,7 @@
  1050. 7.11 s [really-safe-money] fromDecimalLiteral dl = do
  1051. 7.11 s [really-safe-money] irat <-
  1052. 7.11 s [really-safe-money] let r = DecimalLiteral.toRational dl
  1053. 7.11 s [really-safe-money] - in if numerator r == 0
  1054. 7.11 s [really-safe-money] + in if not (numerator r == 0)
  1055. 7.11 s [really-safe-money] then Nothing
  1056. 7.11 s [really-safe-money] else pure r
  1057. 7.12 s [really-safe-money]
  1058. 7.12 s [really-safe-money] added mutation CondFlip at src/Money/QuantisationFactor.hs:87:9-22
  1059. 7.12 s [really-safe-money] @@ -84,9 +84,9 @@
  1060. 7.12 s [really-safe-money] fromDecimalLiteral dl = do
  1061. 7.12 s [really-safe-money] irat <-
  1062. 7.12 s [really-safe-money] let r = DecimalLiteral.toRational dl
  1063. 7.12 s [really-safe-money] - in if numerator r == 0
  1064. 7.12 s [really-safe-money] - then Nothing
  1065. 7.12 s [really-safe-money] - else pure r
  1066. 7.12 s [really-safe-money] + in if numerator r == 0
  1067. 7.12 s [really-safe-money] + then Nothing
  1068. 7.12 s [really-safe-money] + else pure r
  1069. 7.12 s [really-safe-money]
  1070. 7.12 s [really-safe-money] rat <-
  1071. 7.12 s [really-safe-money] let r = 1 / irat
  1072. 7.12 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:92:13-14
  1073. 7.12 s [really-safe-money] @@ -89,7 +89,7 @@
  1074. 7.12 s [really-safe-money] else pure r
  1075. 7.12 s [really-safe-money]
  1076. 7.12 s [really-safe-money] rat <-
  1077. 7.12 s [really-safe-money] - let r = 1 / irat
  1078. 7.12 s [really-safe-money] + let r = 0 / irat
  1079. 7.12 s [really-safe-money] in if r < 0
  1080. 7.12 s [really-safe-money] then Nothing
  1081. 7.12 s [really-safe-money] else Just r
  1082. 7.12 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:92:13-14
  1083. 7.12 s [really-safe-money] @@ -89,7 +89,7 @@
  1084. 7.12 s [really-safe-money] else pure r
  1085. 7.12 s [really-safe-money]
  1086. 7.12 s [really-safe-money] rat <-
  1087. 7.12 s [really-safe-money] - let r = 1 / irat
  1088. 7.12 s [really-safe-money] + let r = -1 / irat
  1089. 7.12 s [really-safe-money] in if r < 0
  1090. 7.12 s [really-safe-money] then Nothing
  1091. 7.12 s [really-safe-money] else Just r
  1092. 7.12 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:93:16-17
  1093. 7.12 s [really-safe-money] @@ -90,7 +90,7 @@
  1094. 7.12 s [really-safe-money]
  1095. 7.12 s [really-safe-money] rat <-
  1096. 7.12 s [really-safe-money] let r = 1 / irat
  1097. 7.12 s [really-safe-money] - in if r < 0
  1098. 7.12 s [really-safe-money] + in if r < 1
  1099. 7.12 s [really-safe-money] then Nothing
  1100. 7.12 s [really-safe-money] else Just r
  1101. 7.12 s [really-safe-money]
  1102. 7.12 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:93:12-17
  1103. 7.12 s [really-safe-money] @@ -90,7 +90,7 @@
  1104. 7.12 s [really-safe-money]
  1105. 7.12 s [really-safe-money] rat <-
  1106. 7.12 s [really-safe-money] let r = 1 / irat
  1107. 7.12 s [really-safe-money] - in if r < 0
  1108. 7.12 s [really-safe-money] + in if True
  1109. 7.12 s [really-safe-money] then Nothing
  1110. 7.12 s [really-safe-money] else Just r
  1111. 7.12 s [really-safe-money]
  1112. 7.12 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:93:12-17
  1113. 7.12 s [really-safe-money] @@ -90,7 +90,7 @@
  1114. 7.12 s [really-safe-money]
  1115. 7.12 s [really-safe-money] rat <-
  1116. 7.12 s [really-safe-money] let r = 1 / irat
  1117. 7.12 s [really-safe-money] - in if r < 0
  1118. 7.12 s [really-safe-money] + in if False
  1119. 7.12 s [really-safe-money] then Nothing
  1120. 7.12 s [really-safe-money] else Just r
  1121. 7.12 s [really-safe-money]
  1122. 7.12 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:93:12-17
  1123. 7.12 s [really-safe-money] @@ -90,7 +90,7 @@
  1124. 7.12 s [really-safe-money]
  1125. 7.12 s [really-safe-money] rat <-
  1126. 7.12 s [really-safe-money] let r = 1 / irat
  1127. 7.12 s [really-safe-money] - in if r < 0
  1128. 7.12 s [really-safe-money] + in if not (r < 0)
  1129. 7.12 s [really-safe-money] then Nothing
  1130. 7.12 s [really-safe-money] else Just r
  1131. 7.12 s [really-safe-money]
  1132. 7.12 s [really-safe-money] added mutation CondFlip at src/Money/QuantisationFactor.hs:93:9-22
  1133. 7.12 s [really-safe-money] @@ -90,9 +90,9 @@
  1134. 7.12 s [really-safe-money]
  1135. 7.12 s [really-safe-money] rat <-
  1136. 7.12 s [really-safe-money] let r = 1 / irat
  1137. 7.12 s [really-safe-money] - in if r < 0
  1138. 7.12 s [really-safe-money] - then Nothing
  1139. 7.12 s [really-safe-money] - else Just r
  1140. 7.12 s [really-safe-money] + in if r < 0
  1141. 7.12 s [really-safe-money] + then Nothing
  1142. 7.12 s [really-safe-money] + else Just r
  1143. 7.12 s [really-safe-money]
  1144. 7.12 s [really-safe-money] fac <-
  1145. 7.12 s [really-safe-money] if denominator rat == 1
  1146. 7.12 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:98:27-28
  1147. 7.12 s [really-safe-money] @@ -95,7 +95,7 @@
  1148. 7.12 s [really-safe-money] else Just r
  1149. 7.12 s [really-safe-money]
  1150. 7.12 s [really-safe-money] fac <-
  1151. 7.12 s [really-safe-money] - if denominator rat == 1
  1152. 7.12 s [really-safe-money] + if denominator rat == 0
  1153. 7.12 s [really-safe-money] then Just (numerator rat)
  1154. 7.12 s [really-safe-money] else Nothing
  1155. 7.12 s [really-safe-money]
  1156. 7.12 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:98:27-28
  1157. 7.12 s [really-safe-money] @@ -95,7 +95,7 @@
  1158. 7.12 s [really-safe-money] else Just r
  1159. 7.12 s [really-safe-money]
  1160. 7.12 s [really-safe-money] fac <-
  1161. 7.12 s [really-safe-money] - if denominator rat == 1
  1162. 7.12 s [really-safe-money] + if denominator rat == -1
  1163. 7.12 s [really-safe-money] then Just (numerator rat)
  1164. 7.12 s [really-safe-money] else Nothing
  1165. 7.12 s [really-safe-money]
  1166. 7.12 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:98:8-28
  1167. 7.12 s [really-safe-money] @@ -95,7 +95,7 @@
  1168. 7.12 s [really-safe-money] else Just r
  1169. 7.12 s [really-safe-money]
  1170. 7.12 s [really-safe-money] fac <-
  1171. 7.12 s [really-safe-money] - if denominator rat == 1
  1172. 7.12 s [really-safe-money] + if True
  1173. 7.12 s [really-safe-money] then Just (numerator rat)
  1174. 7.12 s [really-safe-money] else Nothing
  1175. 7.12 s [really-safe-money]
  1176. 7.12 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:98:8-28
  1177. 7.12 s [really-safe-money] @@ -95,7 +95,7 @@
  1178. 7.12 s [really-safe-money] else Just r
  1179. 7.12 s [really-safe-money]
  1180. 7.12 s [really-safe-money] fac <-
  1181. 7.12 s [really-safe-money] - if denominator rat == 1
  1182. 7.12 s [really-safe-money] + if False
  1183. 7.12 s [really-safe-money] then Just (numerator rat)
  1184. 7.12 s [really-safe-money] else Nothing
  1185. 7.12 s [really-safe-money]
  1186. 7.12 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:98:8-28
  1187. 7.12 s [really-safe-money] @@ -95,7 +95,7 @@
  1188. 7.12 s [really-safe-money] else Just r
  1189. 7.12 s [really-safe-money]
  1190. 7.12 s [really-safe-money] fac <-
  1191. 7.12 s [really-safe-money] - if denominator rat == 1
  1192. 7.12 s [really-safe-money] + if not (denominator rat == 1)
  1193. 7.12 s [really-safe-money] then Just (numerator rat)
  1194. 7.12 s [really-safe-money] else Nothing
  1195. 7.12 s [really-safe-money]
  1196. 7.12 s [really-safe-money] added mutation CondFlip at src/Money/QuantisationFactor.hs:98:5-19
  1197. 7.12 s [really-safe-money] @@ -95,9 +95,9 @@
  1198. 7.12 s [really-safe-money] else Just r
  1199. 7.12 s [really-safe-money]
  1200. 7.12 s [really-safe-money] fac <-
  1201. 7.12 s [really-safe-money] - if denominator rat == 1
  1202. 7.12 s [really-safe-money] - then Just (numerator rat)
  1203. 7.12 s [really-safe-money] - else Nothing
  1204. 7.12 s [really-safe-money] + if denominator rat == 1
  1205. 7.12 s [really-safe-money] + then Just (numerator rat)
  1206. 7.12 s [really-safe-money] + else Nothing
  1207. 7.12 s [really-safe-money]
  1208. 7.12 s [really-safe-money] if fac <= fromIntegral (maxBound :: Word32)
  1209. 7.12 s [really-safe-money] then Just (QuantisationFactor (fromIntegral fac))
  1210. 7.12 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:102:6-46
  1211. 7.12 s [really-safe-money] @@ -99,6 +99,6 @@
  1212. 7.12 s [really-safe-money] then Just (numerator rat)
  1213. 7.12 s [really-safe-money] else Nothing
  1214. 7.12 s [really-safe-money]
  1215. 7.12 s [really-safe-money] - if fac <= fromIntegral (maxBound :: Word32)
  1216. 7.12 s [really-safe-money] + if True
  1217. 7.12 s [really-safe-money] then Just (QuantisationFactor (fromIntegral fac))
  1218. 7.12 s [really-safe-money] else Nothing
  1219. 7.12 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:102:6-46
  1220. 7.12 s [really-safe-money] @@ -99,6 +99,6 @@
  1221. 7.12 s [really-safe-money] then Just (numerator rat)
  1222. 7.12 s [really-safe-money] else Nothing
  1223. 7.12 s [really-safe-money]
  1224. 7.12 s [really-safe-money] - if fac <= fromIntegral (maxBound :: Word32)
  1225. 7.12 s [really-safe-money] + if False
  1226. 7.12 s [really-safe-money] then Just (QuantisationFactor (fromIntegral fac))
  1227. 7.12 s [really-safe-money] else Nothing
  1228. 7.12 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:102:6-46
  1229. 7.12 s [really-safe-money] @@ -99,6 +99,6 @@
  1230. 7.12 s [really-safe-money] then Just (numerator rat)
  1231. 7.12 s [really-safe-money] else Nothing
  1232. 7.12 s [really-safe-money]
  1233. 7.12 s [really-safe-money] - if fac <= fromIntegral (maxBound :: Word32)
  1234. 7.12 s [really-safe-money] + if not (fac <= fromIntegral (maxBound :: Word32))
  1235. 7.12 s [really-safe-money] then Just (QuantisationFactor (fromIntegral fac))
  1236. 7.12 s [really-safe-money] else Nothing
  1237. 7.12 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:67:67-68
  1238. 7.12 s [really-safe-money] @@ -64,7 +64,7 @@
  1239. 7.12 s [really-safe-money] -- Just (DecimalLiteral Nothing 1 0)
  1240. 7.12 s [really-safe-money] toDecimalLiteral :: QuantisationFactor -> Maybe DecimalLiteral
  1241. 7.12 s [really-safe-money] toDecimalLiteral (QuantisationFactor qfw) =
  1242. 7.12 s [really-safe-money] - DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (1 % fromIntegral qfw)
  1243. 7.12 s [really-safe-money] + DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (0 % fromIntegral qfw)
  1244. 7.12 s [really-safe-money]
  1245. 7.12 s [really-safe-money] -- | Parse a 'QuantisationFactor' from a 'DecimalLiteral' that represents the smallest unit
  1246. 7.12 s [really-safe-money] -- TODO explain that it's the inverse.
  1247. 7.12 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:67:67-68
  1248. 7.12 s [really-safe-money] @@ -64,7 +64,7 @@
  1249. 7.12 s [really-safe-money] -- Just (DecimalLiteral Nothing 1 0)
  1250. 7.12 s [really-safe-money] toDecimalLiteral :: QuantisationFactor -> Maybe DecimalLiteral
  1251. 7.12 s [really-safe-money] toDecimalLiteral (QuantisationFactor qfw) =
  1252. 7.12 s [really-safe-money] - DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (1 % fromIntegral qfw)
  1253. 7.12 s [really-safe-money] + DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (-1 % fromIntegral qfw)
  1254. 7.12 s [really-safe-money]
  1255. 7.12 s [really-safe-money] -- | Parse a 'QuantisationFactor' from a 'DecimalLiteral' that represents the smallest unit
  1256. 7.12 s [really-safe-money] -- TODO explain that it's the inverse.
  1257. 7.12 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:40:62-63
  1258. 7.12 s [really-safe-money] @@ -37,7 +37,7 @@
  1259. 7.12 s [really-safe-money] validate qf@(QuantisationFactor w) =
  1260. 7.12 s [really-safe-money] mconcat
  1261. 7.12 s [really-safe-money] [ genericValidate qf,
  1262. 7.12 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  1263. 7.12 s [really-safe-money] + declare "The quantisation factor is not zero" $ w /= 1
  1264. 7.12 s [really-safe-money] ]
  1265. 7.12 s [really-safe-money]
  1266. 7.12 s [really-safe-money] instance NFData QuantisationFactor
  1267. 7.12 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63
  1268. 7.12 s [really-safe-money] @@ -37,7 +37,7 @@
  1269. 7.12 s [really-safe-money] validate qf@(QuantisationFactor w) =
  1270. 7.12 s [really-safe-money] mconcat
  1271. 7.12 s [really-safe-money] [ genericValidate qf,
  1272. 7.12 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  1273. 7.12 s [really-safe-money] + declare "The quantisation factor is not zero" $ True
  1274. 7.12 s [really-safe-money] ]
  1275. 7.12 s [really-safe-money]
  1276. 7.12 s [really-safe-money] instance NFData QuantisationFactor
  1277. 7.12 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63
  1278. 7.12 s [really-safe-money] @@ -37,7 +37,7 @@
  1279. 7.12 s [really-safe-money] validate qf@(QuantisationFactor w) =
  1280. 7.12 s [really-safe-money] mconcat
  1281. 7.12 s [really-safe-money] [ genericValidate qf,
  1282. 7.12 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  1283. 7.12 s [really-safe-money] + declare "The quantisation factor is not zero" $ False
  1284. 7.12 s [really-safe-money] ]
  1285. 7.12 s [really-safe-money]
  1286. 7.12 s [really-safe-money] instance NFData QuantisationFactor
  1287. 7.12 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:40:57-63
  1288. 7.12 s [really-safe-money] @@ -37,7 +37,7 @@
  1289. 7.12 s [really-safe-money] validate qf@(QuantisationFactor w) =
  1290. 7.12 s [really-safe-money] mconcat
  1291. 7.12 s [really-safe-money] [ genericValidate qf,
  1292. 7.12 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  1293. 7.12 s [really-safe-money] + declare "The quantisation factor is not zero" $ not (w /= 0)
  1294. 7.12 s [really-safe-money] ]
  1295. 7.12 s [really-safe-money]
  1296. 7.12 s [really-safe-money] instance NFData QuantisationFactor
  1297. 7.12 s [really-safe-money] added mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8
  1298. 7.12 s [really-safe-money] @@ -36,9 +36,7 @@
  1299. 7.12 s [really-safe-money] instance Validity QuantisationFactor where
  1300. 7.12 s [really-safe-money] validate qf@(QuantisationFactor w) =
  1301. 7.12 s [really-safe-money] mconcat
  1302. 7.12 s [really-safe-money] - [ genericValidate qf,
  1303. 7.12 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  1304. 7.12 s [really-safe-money] - ]
  1305. 7.12 s [really-safe-money] + []
  1306. 7.12 s [really-safe-money]
  1307. 7.12 s [really-safe-money] instance NFData QuantisationFactor
  1308. 7.12 s [really-safe-money]
  1309. 7.12 s [really-safe-money] added mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8
  1310. 7.12 s [really-safe-money] @@ -36,9 +36,9 @@
  1311. 7.12 s [really-safe-money] instance Validity QuantisationFactor where
  1312. 7.12 s [really-safe-money] validate qf@(QuantisationFactor w) =
  1313. 7.12 s [really-safe-money] mconcat
  1314. 7.12 s [really-safe-money] - [ genericValidate qf,
  1315. 7.12 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  1316. 7.12 s [really-safe-money] - ]
  1317. 7.12 s [really-safe-money] + [ genericValidate qf,
  1318. 7.12 s [really-safe-money] + declare "The quantisation factor is not zero" $ w /= 0
  1319. 7.12 s [really-safe-money] + ]
  1320. 7.12 s [really-safe-money]
  1321. 7.12 s [really-safe-money] instance NFData QuantisationFactor
  1322. 7.12 s [really-safe-money]
  1323. 7.12 s [really-safe-money] added 29 mutations
  1324. 7.38 s [really-safe-money] [ 3 of 12] Compiling Money.Currency ( src/Money/Currency.hs, dist/build/Money/Currency.o, dist/build/Money/Currency.dyn_o )
  1325. 7.39 s [really-safe-money] mutation: instrumenting Money.Currency
  1326. 7.39 s [really-safe-money] added 0 mutations
  1327. 7.66 s [really-safe-money] [ 4 of 12] Compiling Money.ConversionRate ( src/Money/ConversionRate.hs, dist/build/Money/ConversionRate.o, dist/build/Money/ConversionRate.dyn_o )
  1328. 7.67 s [really-safe-money] mutation: instrumenting Money.ConversionRate
  1329. 7.67 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:116:45-46
  1330. 7.67 s [really-safe-money] @@ -113,7 +113,7 @@
  1331. 7.67 s [really-safe-money] -- >>> invert (ConversionRate (1 % 2))
  1332. 7.67 s [really-safe-money] -- ConversionRate {unConversionRate = 2 % 1}
  1333. 7.67 s [really-safe-money] invert :: ConversionRate -> ConversionRate
  1334. 7.67 s [really-safe-money] -invert (ConversionRate r) = ConversionRate (1 / r)
  1335. 7.67 s [really-safe-money] +invert (ConversionRate r) = ConversionRate (0 / r)
  1336. 7.67 s [really-safe-money]
  1337. 7.67 s [really-safe-money] -- | Compose two conversion rates
  1338. 7.67 s [really-safe-money] --
  1339. 7.67 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:116:45-46
  1340. 7.67 s [really-safe-money] @@ -113,7 +113,7 @@
  1341. 7.67 s [really-safe-money] -- >>> invert (ConversionRate (1 % 2))
  1342. 7.67 s [really-safe-money] -- ConversionRate {unConversionRate = 2 % 1}
  1343. 7.67 s [really-safe-money] invert :: ConversionRate -> ConversionRate
  1344. 7.67 s [really-safe-money] -invert (ConversionRate r) = ConversionRate (1 / r)
  1345. 7.67 s [really-safe-money] +invert (ConversionRate r) = ConversionRate (-1 / r)
  1346. 7.67 s [really-safe-money]
  1347. 7.67 s [really-safe-money] -- | Compose two conversion rates
  1348. 7.67 s [really-safe-money] --
  1349. 7.67 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:109:27-28
  1350. 7.67 s [really-safe-money] @@ -106,7 +106,7 @@
  1351. 7.67 s [really-safe-money]
  1352. 7.67 s [really-safe-money] -- | One-to-one conversion rate
  1353. 7.67 s [really-safe-money] oneToOne :: ConversionRate
  1354. 7.67 s [really-safe-money] -oneToOne = ConversionRate 1
  1355. 7.67 s [really-safe-money] +oneToOne = ConversionRate 0
  1356. 7.67 s [really-safe-money]
  1357. 7.67 s [really-safe-money] -- | Invert a 'ConversionRate', to convert in the other direction.
  1358. 7.67 s [really-safe-money] --
  1359. 7.67 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:109:27-28
  1360. 7.67 s [really-safe-money] @@ -106,7 +106,7 @@
  1361. 7.67 s [really-safe-money]
  1362. 7.67 s [really-safe-money] -- | One-to-one conversion rate
  1363. 7.67 s [really-safe-money] oneToOne :: ConversionRate
  1364. 7.67 s [really-safe-money] -oneToOne = ConversionRate 1
  1365. 7.67 s [really-safe-money] +oneToOne = ConversionRate -1
  1366. 7.67 s [really-safe-money]
  1367. 7.67 s [really-safe-money] -- | Invert a 'ConversionRate', to convert in the other direction.
  1368. 7.67 s [really-safe-money] --
  1369. 7.67 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:72:25-26
  1370. 7.67 s [really-safe-money] @@ -69,7 +69,7 @@
  1371. 7.67 s [really-safe-money] -- >>> fromRational (0 % 1)
  1372. 7.67 s [really-safe-money] -- Nothing
  1373. 7.67 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  1374. 7.67 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  1375. 7.67 s [really-safe-money] +fromRational r = if r < 1 then Nothing else fromRatio (realToFrac r)
  1376. 7.67 s [really-safe-money]
  1377. 7.67 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  1378. 7.67 s [really-safe-money] --
  1379. 7.67 s [really-safe-money] added mutation ConstBool at src/Money/ConversionRate.hs:72:21-26
  1380. 7.67 s [really-safe-money] @@ -69,7 +69,7 @@
  1381. 7.67 s [really-safe-money] -- >>> fromRational (0 % 1)
  1382. 7.67 s [really-safe-money] -- Nothing
  1383. 7.67 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  1384. 7.67 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  1385. 7.67 s [really-safe-money] +fromRational r = if True then Nothing else fromRatio (realToFrac r)
  1386. 7.67 s [really-safe-money]
  1387. 7.67 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  1388. 7.67 s [really-safe-money] --
  1389. 7.67 s [really-safe-money] added mutation ConstBool at src/Money/ConversionRate.hs:72:21-26
  1390. 7.67 s [really-safe-money] @@ -69,7 +69,7 @@
  1391. 7.67 s [really-safe-money] -- >>> fromRational (0 % 1)
  1392. 7.67 s [really-safe-money] -- Nothing
  1393. 7.67 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  1394. 7.67 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  1395. 7.67 s [really-safe-money] +fromRational r = if False then Nothing else fromRatio (realToFrac r)
  1396. 7.67 s [really-safe-money]
  1397. 7.67 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  1398. 7.67 s [really-safe-money] --
  1399. 7.67 s [really-safe-money] added mutation Negate at src/Money/ConversionRate.hs:72:21-26
  1400. 7.67 s [really-safe-money] @@ -69,7 +69,7 @@
  1401. 7.67 s [really-safe-money] -- >>> fromRational (0 % 1)
  1402. 7.67 s [really-safe-money] -- Nothing
  1403. 7.67 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  1404. 7.67 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  1405. 7.67 s [really-safe-money] +fromRational r = if not (r < 0) then Nothing else fromRatio (realToFrac r)
  1406. 7.67 s [really-safe-money]
  1407. 7.67 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  1408. 7.67 s [really-safe-money] --
  1409. 7.67 s [really-safe-money] added mutation CondFlip at src/Money/ConversionRate.hs:72:18-69
  1410. 7.67 s [really-safe-money] @@ -69,7 +69,7 @@
  1411. 7.67 s [really-safe-money] -- >>> fromRational (0 % 1)
  1412. 7.67 s [really-safe-money] -- Nothing
  1413. 7.67 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  1414. 7.67 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  1415. 7.67 s [really-safe-money] +fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  1416. 7.67 s [really-safe-money]
  1417. 7.67 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  1418. 7.67 s [really-safe-money] --
  1419. 7.67 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:38:56-57
  1420. 7.67 s [really-safe-money] @@ -35,7 +35,7 @@
  1421. 7.67 s [really-safe-money] validate cr@(ConversionRate r) =
  1422. 7.67 s [really-safe-money] mconcat
  1423. 7.67 s [really-safe-money] [ genericValidate cr,
  1424. 7.67 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  1425. 7.67 s [really-safe-money] + declare "The rate is nonzero" $ numerator r /= 1
  1426. 7.67 s [really-safe-money] ]
  1427. 7.67 s [really-safe-money]
  1428. 7.67 s [really-safe-money] instance NFData ConversionRate
  1429. 7.67 s [really-safe-money] added mutation ConstBool at src/Money/ConversionRate.hs:38:41-57
  1430. 7.67 s [really-safe-money] @@ -35,7 +35,7 @@
  1431. 7.67 s [really-safe-money] validate cr@(ConversionRate r) =
  1432. 7.67 s [really-safe-money] mconcat
  1433. 7.67 s [really-safe-money] [ genericValidate cr,
  1434. 7.67 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  1435. 7.67 s [really-safe-money] + declare "The rate is nonzero" $ True
  1436. 7.67 s [really-safe-money] ]
  1437. 7.67 s [really-safe-money]
  1438. 7.67 s [really-safe-money] instance NFData ConversionRate
  1439. 7.67 s [really-safe-money] added mutation ConstBool at src/Money/ConversionRate.hs:38:41-57
  1440. 7.67 s [really-safe-money] @@ -35,7 +35,7 @@
  1441. 7.67 s [really-safe-money] validate cr@(ConversionRate r) =
  1442. 7.67 s [really-safe-money] mconcat
  1443. 7.67 s [really-safe-money] [ genericValidate cr,
  1444. 7.67 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  1445. 7.67 s [really-safe-money] + declare "The rate is nonzero" $ False
  1446. 7.67 s [really-safe-money] ]
  1447. 7.67 s [really-safe-money]
  1448. 7.67 s [really-safe-money] instance NFData ConversionRate
  1449. 7.67 s [really-safe-money] added mutation Negate at src/Money/ConversionRate.hs:38:41-57
  1450. 7.67 s [really-safe-money] @@ -35,7 +35,7 @@
  1451. 7.67 s [really-safe-money] validate cr@(ConversionRate r) =
  1452. 7.67 s [really-safe-money] mconcat
  1453. 7.67 s [really-safe-money] [ genericValidate cr,
  1454. 7.67 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  1455. 7.67 s [really-safe-money] + declare "The rate is nonzero" $ not (numerator r /= 0)
  1456. 7.67 s [really-safe-money] ]
  1457. 7.67 s [really-safe-money]
  1458. 7.67 s [really-safe-money] instance NFData ConversionRate
  1459. 7.67 s [really-safe-money] added mutation ListLit at src/Money/ConversionRate.hs:37:7-8
  1460. 7.67 s [really-safe-money] @@ -34,9 +34,7 @@
  1461. 7.67 s [really-safe-money] instance Validity ConversionRate where
  1462. 7.67 s [really-safe-money] validate cr@(ConversionRate r) =
  1463. 7.67 s [really-safe-money] mconcat
  1464. 7.67 s [really-safe-money] - [ genericValidate cr,
  1465. 7.67 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  1466. 7.67 s [really-safe-money] - ]
  1467. 7.67 s [really-safe-money] + []
  1468. 7.67 s [really-safe-money]
  1469. 7.67 s [really-safe-money] instance NFData ConversionRate
  1470. 7.67 s [really-safe-money]
  1471. 7.67 s [really-safe-money] added mutation ListLit at src/Money/ConversionRate.hs:37:7-8
  1472. 7.67 s [really-safe-money] @@ -34,9 +34,9 @@
  1473. 7.67 s [really-safe-money] instance Validity ConversionRate where
  1474. 7.67 s [really-safe-money] validate cr@(ConversionRate r) =
  1475. 7.67 s [really-safe-money] mconcat
  1476. 7.67 s [really-safe-money] - [ genericValidate cr,
  1477. 7.67 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  1478. 7.67 s [really-safe-money] - ]
  1479. 7.67 s [really-safe-money] + [ genericValidate cr,
  1480. 7.67 s [really-safe-money] + declare "The rate is nonzero" $ numerator r /= 0
  1481. 7.67 s [really-safe-money] + ]
  1482. 7.67 s [really-safe-money]
  1483. 7.67 s [really-safe-money] instance NFData ConversionRate
  1484. 7.67 s [really-safe-money]
  1485. 7.67 s [really-safe-money] added 15 mutations
  1486. 7.86 s [really-safe-money] [ 5 of 12] Compiling Money.ConversionRateOf ( src/Money/ConversionRateOf.hs, dist/build/Money/ConversionRateOf.o, dist/build/Money/ConversionRateOf.dyn_o )
  1487. 7.87 s [really-safe-money] mutation: instrumenting Money.ConversionRateOf
  1488. 7.87 s [really-safe-money] added 0 mutations
  1489. 7.94 s [really-safe-money] [ 6 of 12] Compiling Money.Amount ( src/Money/Amount.hs, dist/build/Money/Amount.o, dist/build/Money/Amount.dyn_o )
  1490. 7.99 s [really-safe-money] mutation: instrumenting Money.Amount
  1491. 7.99 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:801:36-38
  1492. 7.99 s [really-safe-money] @@ -798,7 +798,7 @@
  1493. 7.99 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  1494. 7.99 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor qf) =
  1495. 7.99 s [really-safe-money] let decimals :: Int
  1496. 7.99 s [really-safe-money] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  1497. 7.99 s [really-safe-money] + decimals = ceiling $ logBase 0 (fromIntegral qf :: Float)
  1498. 7.99 s [really-safe-money] in printf "%%0.%df" decimals
  1499. 7.99 s [really-safe-money]
  1500. 7.99 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  1501. 7.99 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:801:36-38
  1502. 7.99 s [really-safe-money] @@ -798,7 +798,7 @@
  1503. 7.99 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  1504. 7.99 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor qf) =
  1505. 7.99 s [really-safe-money] let decimals :: Int
  1506. 7.99 s [really-safe-money] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  1507. 7.99 s [really-safe-money] + decimals = ceiling $ logBase 1 (fromIntegral qf :: Float)
  1508. 7.99 s [really-safe-money] in printf "%%0.%df" decimals
  1509. 7.99 s [really-safe-money]
  1510. 7.99 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  1511. 7.99 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:801:36-38
  1512. 7.99 s [really-safe-money] @@ -798,7 +798,7 @@
  1513. 7.99 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  1514. 7.99 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor qf) =
  1515. 7.99 s [really-safe-money] let decimals :: Int
  1516. 7.99 s [really-safe-money] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  1517. 7.99 s [really-safe-money] + decimals = ceiling $ logBase -10 (fromIntegral qf :: Float)
  1518. 7.99 s [really-safe-money] in printf "%%0.%df" decimals
  1519. 7.99 s [really-safe-money]
  1520. 7.99 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  1521. 7.99 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:569:18-19
  1522. 7.99 s [really-safe-money] @@ -566,7 +566,7 @@
  1523. 7.99 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  1524. 7.99 s [really-safe-money] smallerChunk :: Amount
  1525. 7.99 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  1526. 7.99 s [really-safe-money] - in if rest == 0
  1527. 7.99 s [really-safe-money] + in if rest == 1
  1528. 7.99 s [really-safe-money] then DistributedIntoEqualChunks f smallerChunk
  1529. 7.99 s [really-safe-money] else
  1530. 7.99 s [really-safe-money] let -- This 'fromIntegral' is theoretically not safe, but it's
  1531. 7.99 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:569:10-19
  1532. 7.99 s [really-safe-money] @@ -566,7 +566,7 @@
  1533. 7.99 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  1534. 7.99 s [really-safe-money] smallerChunk :: Amount
  1535. 7.99 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  1536. 7.99 s [really-safe-money] - in if rest == 0
  1537. 7.99 s [really-safe-money] + in if True
  1538. 7.99 s [really-safe-money] then DistributedIntoEqualChunks f smallerChunk
  1539. 7.99 s [really-safe-money] else
  1540. 7.99 s [really-safe-money] let -- This 'fromIntegral' is theoretically not safe, but it's
  1541. 7.99 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:569:10-19
  1542. 7.99 s [really-safe-money] @@ -566,7 +566,7 @@
  1543. 7.99 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  1544. 7.99 s [really-safe-money] smallerChunk :: Amount
  1545. 7.99 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  1546. 7.99 s [really-safe-money] - in if rest == 0
  1547. 7.99 s [really-safe-money] + in if False
  1548. 7.99 s [really-safe-money] then DistributedIntoEqualChunks f smallerChunk
  1549. 7.99 s [really-safe-money] else
  1550. 7.99 s [really-safe-money] let -- This 'fromIntegral' is theoretically not safe, but it's
  1551. 7.99 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:569:10-19
  1552. 7.99 s [really-safe-money] @@ -566,7 +566,7 @@
  1553. 7.99 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  1554. 7.99 s [really-safe-money] smallerChunk :: Amount
  1555. 7.99 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  1556. 7.99 s [really-safe-money] - in if rest == 0
  1557. 7.99 s [really-safe-money] + in if not (rest == 0)
  1558. 7.99 s [really-safe-money] then DistributedIntoEqualChunks f smallerChunk
  1559. 7.99 s [really-safe-money] else
  1560. 7.99 s [really-safe-money] let -- This 'fromIntegral' is theoretically not safe, but it's
  1561. 7.99 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:569:7-29
  1562. 7.99 s [really-safe-money] @@ -566,22 +566,22 @@
  1563. 7.99 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  1564. 7.99 s [really-safe-money] smallerChunk :: Amount
  1565. 7.99 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  1566. 7.99 s [really-safe-money] - in if rest == 0
  1567. 7.99 s [really-safe-money] - then DistributedIntoEqualChunks f smallerChunk
  1568. 7.99 s [really-safe-money] - else
  1569. 7.99 s [really-safe-money] - let -- This 'fromIntegral' is theoretically not safe, but it's
  1570. 7.99 s [really-safe-money] - -- necessarily smaller than f so it will fit.
  1571. 7.99 s [really-safe-money] - numberOfLargerChunks :: Word32
  1572. 7.99 s [really-safe-money] - numberOfLargerChunks = (fromIntegral :: Word64 -> Word32) rest
  1573. 7.99 s [really-safe-money] - numberOfSmallerChunks :: Word32
  1574. 7.99 s [really-safe-money] - numberOfSmallerChunks = f - numberOfLargerChunks
  1575. 7.99 s [really-safe-money] - largerChunk :: Amount
  1576. 7.99 s [really-safe-money] - largerChunk = Amount $ succ smallerChunkSize
  1577. 7.99 s [really-safe-money] - in DistributedIntoUnequalChunks
  1578. 7.99 s [really-safe-money] - numberOfLargerChunks
  1579. 7.99 s [really-safe-money] - largerChunk
  1580. 7.99 s [really-safe-money] - numberOfSmallerChunks
  1581. 7.99 s [really-safe-money] - smallerChunk
  1582. 7.99 s [really-safe-money] + in if rest == 0
  1583. 7.99 s [really-safe-money] + then DistributedIntoEqualChunks f smallerChunk
  1584. 7.99 s [really-safe-money] + else
  1585. 7.99 s [really-safe-money] + let -- This 'fromIntegral' is theoretically not safe, but it's
  1586. 7.99 s [really-safe-money] + -- necessarily smaller than f so it will fit.
  1587. 7.99 s [really-safe-money] + numberOfLargerChunks :: Word32
  1588. 7.99 s [really-safe-money] + numberOfLargerChunks = (fromIntegral :: Word64 -> Word32) rest
  1589. 7.99 s [really-safe-money] + numberOfSmallerChunks :: Word32
  1590. 7.99 s [really-safe-money] + numberOfSmallerChunks = f - numberOfLargerChunks
  1591. 7.99 s [really-safe-money] + largerChunk :: Amount
  1592. 7.99 s [really-safe-money] + largerChunk = Amount $ succ smallerChunkSize
  1593. 7.99 s [really-safe-money] + in DistributedIntoUnequalChunks
  1594. 7.99 s [really-safe-money] + numberOfLargerChunks
  1595. 7.99 s [really-safe-money] + largerChunk
  1596. 7.99 s [really-safe-money] + numberOfSmallerChunks
  1597. 7.99 s [really-safe-money] + smallerChunk
  1598. 7.99 s [really-safe-money]
  1599. 7.99 s [really-safe-money] -- | The result of 'distribute'
  1600. 7.99 s [really-safe-money] type AmountDistribution = Distribution Amount
  1601. 7.99 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:544:10-23
  1602. 7.99 s [really-safe-money] @@ -541,7 +541,7 @@
  1603. 7.99 s [really-safe-money] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  1604. 7.99 s [really-safe-money] r :: Integer
  1605. 7.99 s [really-safe-money] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  1606. 7.99 s [really-safe-money] - in if r > maxBoundI
  1607. 7.99 s [really-safe-money] + in if True
  1608. 7.99 s [really-safe-money] then Nothing
  1609. 7.99 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1610. 8.00 s [really-safe-money]
  1611. 8.00 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:544:10-23
  1612. 8.00 s [really-safe-money] @@ -541,7 +541,7 @@
  1613. 8.00 s [really-safe-money] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  1614. 8.00 s [really-safe-money] r :: Integer
  1615. 8.00 s [really-safe-money] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  1616. 8.00 s [really-safe-money] - in if r > maxBoundI
  1617. 8.00 s [really-safe-money] + in if False
  1618. 8.00 s [really-safe-money] then Nothing
  1619. 8.00 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1620. 8.00 s [really-safe-money]
  1621. 8.00 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:544:10-23
  1622. 8.00 s [really-safe-money] @@ -541,7 +541,7 @@
  1623. 8.00 s [really-safe-money] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  1624. 8.00 s [really-safe-money] r :: Integer
  1625. 8.00 s [really-safe-money] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  1626. 8.00 s [really-safe-money] - in if r > maxBoundI
  1627. 8.00 s [really-safe-money] + in if not (r > maxBoundI)
  1628. 8.00 s [really-safe-money] then Nothing
  1629. 8.00 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1630. 8.00 s [really-safe-money]
  1631. 8.00 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:544:7-66
  1632. 8.00 s [really-safe-money] @@ -541,9 +541,9 @@
  1633. 8.00 s [really-safe-money] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  1634. 8.00 s [really-safe-money] r :: Integer
  1635. 8.00 s [really-safe-money] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  1636. 8.00 s [really-safe-money] - in if r > maxBoundI
  1637. 8.00 s [really-safe-money] - then Nothing
  1638. 8.00 s [really-safe-money] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1639. 8.00 s [really-safe-money] + in if r > maxBoundI
  1640. 8.00 s [really-safe-money] + then Nothing
  1641. 8.00 s [really-safe-money] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1642. 8.00 s [really-safe-money]
  1643. 8.00 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  1644. 8.00 s [really-safe-money] --
  1645. 8.00 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:518:14-15
  1646. 8.00 s [really-safe-money] @@ -515,7 +515,7 @@
  1647. 8.00 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  1648. 8.00 s [really-safe-money] r :: Integer
  1649. 8.00 s [really-safe-money] r = i1 - i2
  1650. 8.00 s [really-safe-money] - in if r < 0
  1651. 8.00 s [really-safe-money] + in if r < 1
  1652. 8.00 s [really-safe-money] then Nothing
  1653. 8.00 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1654. 8.00 s [really-safe-money]
  1655. 8.00 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:518:10-15
  1656. 8.00 s [really-safe-money] @@ -515,7 +515,7 @@
  1657. 8.00 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  1658. 8.00 s [really-safe-money] r :: Integer
  1659. 8.00 s [really-safe-money] r = i1 - i2
  1660. 8.00 s [really-safe-money] - in if r < 0
  1661. 8.00 s [really-safe-money] + in if True
  1662. 8.00 s [really-safe-money] then Nothing
  1663. 8.00 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1664. 8.00 s [really-safe-money]
  1665. 8.00 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:518:10-15
  1666. 8.00 s [really-safe-money] @@ -515,7 +515,7 @@
  1667. 8.00 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  1668. 8.00 s [really-safe-money] r :: Integer
  1669. 8.00 s [really-safe-money] r = i1 - i2
  1670. 8.00 s [really-safe-money] - in if r < 0
  1671. 8.00 s [really-safe-money] + in if False
  1672. 8.00 s [really-safe-money] then Nothing
  1673. 8.00 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1674. 8.00 s [really-safe-money]
  1675. 8.00 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:518:10-15
  1676. 8.00 s [really-safe-money] @@ -515,7 +515,7 @@
  1677. 8.00 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  1678. 8.00 s [really-safe-money] r :: Integer
  1679. 8.00 s [really-safe-money] r = i1 - i2
  1680. 8.00 s [really-safe-money] - in if r < 0
  1681. 8.00 s [really-safe-money] + in if not (r < 0)
  1682. 8.00 s [really-safe-money] then Nothing
  1683. 8.00 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1684. 8.00 s [really-safe-money]
  1685. 8.00 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:518:7-66
  1686. 8.00 s [really-safe-money] @@ -515,9 +515,9 @@
  1687. 8.00 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  1688. 8.00 s [really-safe-money] r :: Integer
  1689. 8.00 s [really-safe-money] r = i1 - i2
  1690. 8.00 s [really-safe-money] - in if r < 0
  1691. 8.00 s [really-safe-money] - then Nothing
  1692. 8.00 s [really-safe-money] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1693. 8.00 s [really-safe-money] + in if r < 0
  1694. 8.00 s [really-safe-money] + then Nothing
  1695. 8.00 s [really-safe-money] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1696. 8.00 s [really-safe-money]
  1697. 8.00 s [really-safe-money] -- | Multiply an amount of money by an integer scalar
  1698. 8.00 s [really-safe-money] --
  1699. 8.00 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:476:10-23
  1700. 8.00 s [really-safe-money] @@ -473,7 +473,7 @@
  1701. 8.00 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  1702. 8.00 s [really-safe-money] r :: Integer
  1703. 8.00 s [really-safe-money] r = i1 + i2
  1704. 8.00 s [really-safe-money] - in if r > maxBoundI
  1705. 8.00 s [really-safe-money] + in if True
  1706. 8.00 s [really-safe-money] then Nothing
  1707. 8.00 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1708. 8.00 s [really-safe-money]
  1709. 8.00 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:476:10-23
  1710. 8.00 s [really-safe-money] @@ -473,7 +473,7 @@
  1711. 8.00 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  1712. 8.00 s [really-safe-money] r :: Integer
  1713. 8.00 s [really-safe-money] r = i1 + i2
  1714. 8.00 s [really-safe-money] - in if r > maxBoundI
  1715. 8.00 s [really-safe-money] + in if False
  1716. 8.00 s [really-safe-money] then Nothing
  1717. 8.00 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1718. 8.00 s [really-safe-money]
  1719. 8.00 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:476:10-23
  1720. 8.00 s [really-safe-money] @@ -473,7 +473,7 @@
  1721. 8.00 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  1722. 8.00 s [really-safe-money] r :: Integer
  1723. 8.00 s [really-safe-money] r = i1 + i2
  1724. 8.00 s [really-safe-money] - in if r > maxBoundI
  1725. 8.00 s [really-safe-money] + in if not (r > maxBoundI)
  1726. 8.00 s [really-safe-money] then Nothing
  1727. 8.00 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1728. 8.00 s [really-safe-money]
  1729. 8.00 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:476:7-66
  1730. 8.00 s [really-safe-money] @@ -473,9 +473,9 @@
  1731. 8.00 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  1732. 8.00 s [really-safe-money] r :: Integer
  1733. 8.00 s [really-safe-money] r = i1 + i2
  1734. 8.00 s [really-safe-money] - in if r > maxBoundI
  1735. 8.00 s [really-safe-money] - then Nothing
  1736. 8.00 s [really-safe-money] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1737. 8.00 s [really-safe-money] + in if r > maxBoundI
  1738. 8.00 s [really-safe-money] + then Nothing
  1739. 8.00 s [really-safe-money] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1740. 8.00 s [really-safe-money]
  1741. 8.00 s [really-safe-money] -- | Add a number of amounts of money together.
  1742. 8.00 s [really-safe-money] --
  1743. 8.00 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:388:5-16
  1744. 8.00 s [really-safe-money] @@ -385,7 +385,7 @@
  1745. 8.00 s [really-safe-money] -- Nothing
  1746. 8.00 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  1747. 8.00 s [really-safe-money] fromRational (QuantisationFactor qf) r
  1748. 8.00 s [really-safe-money] - | isInvalid r = Nothing
  1749. 8.00 s [really-safe-money] + | True = Nothing
  1750. 8.00 s [really-safe-money] | r < 0 = Nothing
  1751. 8.00 s [really-safe-money] | otherwise =
  1752. 8.00 s [really-safe-money] let resultRational :: Rational
  1753. 8.00 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:388:5-16
  1754. 8.00 s [really-safe-money] @@ -385,7 +385,7 @@
  1755. 8.00 s [really-safe-money] -- Nothing
  1756. 8.00 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  1757. 8.00 s [really-safe-money] fromRational (QuantisationFactor qf) r
  1758. 8.00 s [really-safe-money] - | isInvalid r = Nothing
  1759. 8.00 s [really-safe-money] + | not (isInvalid r) = Nothing
  1760. 8.00 s [really-safe-money] | r < 0 = Nothing
  1761. 8.00 s [really-safe-money] | otherwise =
  1762. 8.00 s [really-safe-money] let resultRational :: Rational
  1763. 8.00 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:389:9-10
  1764. 8.00 s [really-safe-money] @@ -386,7 +386,7 @@
  1765. 8.00 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  1766. 8.00 s [really-safe-money] fromRational (QuantisationFactor qf) r
  1767. 8.00 s [really-safe-money] | isInvalid r = Nothing
  1768. 8.00 s [really-safe-money] - | r < 0 = Nothing
  1769. 8.00 s [really-safe-money] + | r < 1 = Nothing
  1770. 8.00 s [really-safe-money] | otherwise =
  1771. 8.00 s [really-safe-money] let resultRational :: Rational
  1772. 8.00 s [really-safe-money] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  1773. 8.00 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:389:5-10
  1774. 8.00 s [really-safe-money] @@ -386,7 +386,7 @@
  1775. 8.00 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  1776. 8.00 s [really-safe-money] fromRational (QuantisationFactor qf) r
  1777. 8.00 s [really-safe-money] | isInvalid r = Nothing
  1778. 8.00 s [really-safe-money] - | r < 0 = Nothing
  1779. 8.00 s [really-safe-money] + | True = Nothing
  1780. 8.00 s [really-safe-money] | otherwise =
  1781. 8.00 s [really-safe-money] let resultRational :: Rational
  1782. 8.00 s [really-safe-money] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  1783. 8.00 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:389:5-10
  1784. 8.00 s [really-safe-money] @@ -386,7 +386,7 @@
  1785. 8.00 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  1786. 8.00 s [really-safe-money] fromRational (QuantisationFactor qf) r
  1787. 8.00 s [really-safe-money] | isInvalid r = Nothing
  1788. 8.00 s [really-safe-money] - | r < 0 = Nothing
  1789. 8.00 s [really-safe-money] + | not (r < 0) = Nothing
  1790. 8.00 s [really-safe-money] | otherwise =
  1791. 8.00 s [really-safe-money] let resultRational :: Rational
  1792. 8.00 s [really-safe-money] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  1793. 8.00 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:397:14-31
  1794. 8.00 s [really-safe-money] @@ -394,7 +394,7 @@
  1795. 8.00 s [really-safe-money] ceiled = (ceiling :: Rational -> Natural) resultRational
  1796. 8.00 s [really-safe-money] floored :: Natural
  1797. 8.00 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  1798. 8.00 s [really-safe-money] - in if ceiled == floored
  1799. 8.00 s [really-safe-money] + in if True
  1800. 8.00 s [really-safe-money] then
  1801. 8.00 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1802. 8.00 s [really-safe-money] then Nothing
  1803. 8.00 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:397:14-31
  1804. 8.00 s [really-safe-money] @@ -394,7 +394,7 @@
  1805. 8.00 s [really-safe-money] ceiled = (ceiling :: Rational -> Natural) resultRational
  1806. 8.00 s [really-safe-money] floored :: Natural
  1807. 8.00 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  1808. 8.00 s [really-safe-money] - in if ceiled == floored
  1809. 8.00 s [really-safe-money] + in if False
  1810. 8.00 s [really-safe-money] then
  1811. 8.00 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1812. 8.00 s [really-safe-money] then Nothing
  1813. 8.01 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:397:14-31
  1814. 8.01 s [really-safe-money] @@ -394,7 +394,7 @@
  1815. 8.01 s [really-safe-money] ceiled = (ceiling :: Rational -> Natural) resultRational
  1816. 8.01 s [really-safe-money] floored :: Natural
  1817. 8.01 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  1818. 8.01 s [really-safe-money] - in if ceiled == floored
  1819. 8.01 s [really-safe-money] + in if not (ceiled == floored)
  1820. 8.01 s [really-safe-money] then
  1821. 8.01 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1822. 8.01 s [really-safe-money] then Nothing
  1823. 8.01 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:399:18-83
  1824. 8.01 s [really-safe-money] @@ -396,7 +396,7 @@
  1825. 8.01 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  1826. 8.01 s [really-safe-money] in if ceiled == floored
  1827. 8.01 s [really-safe-money] then
  1828. 8.01 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1829. 8.01 s [really-safe-money] + if True
  1830. 8.01 s [really-safe-money] then Nothing
  1831. 8.01 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  1832. 8.01 s [really-safe-money] else Nothing
  1833. 8.01 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:399:18-83
  1834. 8.01 s [really-safe-money] @@ -396,7 +396,7 @@
  1835. 8.01 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  1836. 8.01 s [really-safe-money] in if ceiled == floored
  1837. 8.01 s [really-safe-money] then
  1838. 8.01 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1839. 8.01 s [really-safe-money] + if False
  1840. 8.01 s [really-safe-money] then Nothing
  1841. 8.01 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  1842. 8.01 s [really-safe-money] else Nothing
  1843. 8.01 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:399:18-83
  1844. 8.01 s [really-safe-money] @@ -396,7 +396,7 @@
  1845. 8.01 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  1846. 8.01 s [really-safe-money] in if ceiled == floored
  1847. 8.01 s [really-safe-money] then
  1848. 8.01 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1849. 8.01 s [really-safe-money] + if not (ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64))
  1850. 8.01 s [really-safe-money] then Nothing
  1851. 8.01 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  1852. 8.01 s [really-safe-money] else Nothing
  1853. 8.01 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:399:15-57
  1854. 8.01 s [really-safe-money] @@ -396,9 +396,9 @@
  1855. 8.01 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  1856. 8.01 s [really-safe-money] in if ceiled == floored
  1857. 8.01 s [really-safe-money] then
  1858. 8.01 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1859. 8.01 s [really-safe-money] - then Nothing
  1860. 8.01 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  1861. 8.01 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1862. 8.01 s [really-safe-money] + then Nothing
  1863. 8.01 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  1864. 8.01 s [really-safe-money] else Nothing
  1865. 8.01 s [really-safe-money]
  1866. 8.01 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  1867. 8.01 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:397:11-25
  1868. 8.01 s [really-safe-money] @@ -394,12 +394,12 @@
  1869. 8.01 s [really-safe-money] ceiled = (ceiling :: Rational -> Natural) resultRational
  1870. 8.01 s [really-safe-money] floored :: Natural
  1871. 8.01 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  1872. 8.01 s [really-safe-money] - in if ceiled == floored
  1873. 8.01 s [really-safe-money] - then
  1874. 8.01 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1875. 8.01 s [really-safe-money] - then Nothing
  1876. 8.01 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  1877. 8.01 s [really-safe-money] - else Nothing
  1878. 8.01 s [really-safe-money] + in if ceiled == floored
  1879. 8.01 s [really-safe-money] + then
  1880. 8.01 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1881. 8.01 s [really-safe-money] + then Nothing
  1882. 8.01 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  1883. 8.01 s [really-safe-money] + else Nothing
  1884. 8.01 s [really-safe-money]
  1885. 8.01 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  1886. 8.01 s [really-safe-money] --
  1887. 8.01 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:320:9-10
  1888. 8.01 s [really-safe-money] @@ -317,7 +317,7 @@
  1889. 8.01 s [really-safe-money] Double ->
  1890. 8.01 s [really-safe-money] Maybe Amount
  1891. 8.01 s [really-safe-money] fromDouble (QuantisationFactor qf) d
  1892. 8.01 s [really-safe-money] - | d < 0 = Nothing
  1893. 8.01 s [really-safe-money] + | d < 1 = Nothing
  1894. 8.01 s [really-safe-money] | otherwise =
  1895. 8.01 s [really-safe-money] let resultDouble :: Double
  1896. 8.01 s [really-safe-money] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  1897. 8.01 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:320:5-10
  1898. 8.01 s [really-safe-money] @@ -317,7 +317,7 @@
  1899. 8.01 s [really-safe-money] Double ->
  1900. 8.01 s [really-safe-money] Maybe Amount
  1901. 8.01 s [really-safe-money] fromDouble (QuantisationFactor qf) d
  1902. 8.01 s [really-safe-money] - | d < 0 = Nothing
  1903. 8.01 s [really-safe-money] + | True = Nothing
  1904. 8.01 s [really-safe-money] | otherwise =
  1905. 8.01 s [really-safe-money] let resultDouble :: Double
  1906. 8.01 s [really-safe-money] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  1907. 8.01 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:320:5-10
  1908. 8.01 s [really-safe-money] @@ -317,7 +317,7 @@
  1909. 8.01 s [really-safe-money] Double ->
  1910. 8.01 s [really-safe-money] Maybe Amount
  1911. 8.01 s [really-safe-money] fromDouble (QuantisationFactor qf) d
  1912. 8.01 s [really-safe-money] - | d < 0 = Nothing
  1913. 8.01 s [really-safe-money] + | not (d < 0) = Nothing
  1914. 8.01 s [really-safe-money] | otherwise =
  1915. 8.01 s [really-safe-money] let resultDouble :: Double
  1916. 8.01 s [really-safe-money] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  1917. 8.01 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:327:9-16
  1918. 8.01 s [really-safe-money] @@ -324,7 +324,7 @@
  1919. 8.01 s [really-safe-money] in go resultDouble
  1920. 8.01 s [really-safe-money] where
  1921. 8.01 s [really-safe-money] go resultDouble
  1922. 8.02 s [really-safe-money] - | isNaN d = Nothing
  1923. 8.02 s [really-safe-money] + | True = Nothing
  1924. 8.02 s [really-safe-money] | isInfinite d = Nothing
  1925. 8.02 s [really-safe-money] | otherwise =
  1926. 8.02 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  1927. 8.02 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:327:9-16
  1928. 8.02 s [really-safe-money] @@ -324,7 +324,7 @@
  1929. 8.02 s [really-safe-money] in go resultDouble
  1930. 8.02 s [really-safe-money] where
  1931. 8.02 s [really-safe-money] go resultDouble
  1932. 8.02 s [really-safe-money] - | isNaN d = Nothing
  1933. 8.02 s [really-safe-money] + | not (isNaN d) = Nothing
  1934. 8.02 s [really-safe-money] | isInfinite d = Nothing
  1935. 8.02 s [really-safe-money] | otherwise =
  1936. 8.02 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  1937. 8.02 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:328:9-21
  1938. 8.02 s [really-safe-money] @@ -325,7 +325,7 @@
  1939. 8.02 s [really-safe-money] where
  1940. 8.02 s [really-safe-money] go resultDouble
  1941. 8.02 s [really-safe-money] | isNaN d = Nothing
  1942. 8.02 s [really-safe-money] - | isInfinite d = Nothing
  1943. 8.02 s [really-safe-money] + | True = Nothing
  1944. 8.02 s [really-safe-money] | otherwise =
  1945. 8.02 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  1946. 8.02 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  1947. 8.02 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:328:9-21
  1948. 8.02 s [really-safe-money] @@ -325,7 +325,7 @@
  1949. 8.02 s [really-safe-money] where
  1950. 8.02 s [really-safe-money] go resultDouble
  1951. 8.02 s [really-safe-money] | isNaN d = Nothing
  1952. 8.02 s [really-safe-money] - | isInfinite d = Nothing
  1953. 8.02 s [really-safe-money] + | not (isInfinite d) = Nothing
  1954. 8.02 s [really-safe-money] | otherwise =
  1955. 8.02 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  1956. 8.02 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  1957. 8.02 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:332:38-40
  1958. 8.02 s [really-safe-money] @@ -329,7 +329,7 @@
  1959. 8.02 s [really-safe-money] | otherwise =
  1960. 8.02 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  1961. 8.02 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  1962. 8.02 s [really-safe-money] - if exponent resultDouble > 65
  1963. 8.02 s [really-safe-money] + if exponent resultDouble > 0
  1964. 8.02 s [really-safe-money] then Nothing
  1965. 8.02 s [really-safe-money] else
  1966. 8.02 s [really-safe-money] let ceiled :: Natural
  1967. 8.02 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:332:38-40
  1968. 8.02 s [really-safe-money] @@ -329,7 +329,7 @@
  1969. 8.02 s [really-safe-money] | otherwise =
  1970. 8.02 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  1971. 8.02 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  1972. 8.02 s [really-safe-money] - if exponent resultDouble > 65
  1973. 8.02 s [really-safe-money] + if exponent resultDouble > 1
  1974. 8.02 s [really-safe-money] then Nothing
  1975. 8.02 s [really-safe-money] else
  1976. 8.02 s [really-safe-money] let ceiled :: Natural
  1977. 8.02 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:332:38-40
  1978. 8.02 s [really-safe-money] @@ -329,7 +329,7 @@
  1979. 8.02 s [really-safe-money] | otherwise =
  1980. 8.02 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  1981. 8.02 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  1982. 8.02 s [really-safe-money] - if exponent resultDouble > 65
  1983. 8.02 s [really-safe-money] + if exponent resultDouble > -65
  1984. 8.02 s [really-safe-money] then Nothing
  1985. 8.02 s [really-safe-money] else
  1986. 8.02 s [really-safe-money] let ceiled :: Natural
  1987. 8.02 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:332:14-40
  1988. 8.02 s [really-safe-money] @@ -329,7 +329,7 @@
  1989. 8.02 s [really-safe-money] | otherwise =
  1990. 8.02 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  1991. 8.02 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  1992. 8.02 s [really-safe-money] - if exponent resultDouble > 65
  1993. 8.02 s [really-safe-money] + if True
  1994. 8.02 s [really-safe-money] then Nothing
  1995. 8.02 s [really-safe-money] else
  1996. 8.02 s [really-safe-money] let ceiled :: Natural
  1997. 8.02 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:332:14-40
  1998. 8.02 s [really-safe-money] @@ -329,7 +329,7 @@
  1999. 8.02 s [really-safe-money] | otherwise =
  2000. 8.02 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  2001. 8.02 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  2002. 8.02 s [really-safe-money] - if exponent resultDouble > 65
  2003. 8.02 s [really-safe-money] + if False
  2004. 8.02 s [really-safe-money] then Nothing
  2005. 8.02 s [really-safe-money] else
  2006. 8.02 s [really-safe-money] let ceiled :: Natural
  2007. 8.02 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:332:14-40
  2008. 8.02 s [really-safe-money] @@ -329,7 +329,7 @@
  2009. 8.02 s [really-safe-money] | otherwise =
  2010. 8.02 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  2011. 8.02 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  2012. 8.02 s [really-safe-money] - if exponent resultDouble > 65
  2013. 8.02 s [really-safe-money] + if not (exponent resultDouble > 65)
  2014. 8.02 s [really-safe-money] then Nothing
  2015. 8.02 s [really-safe-money] else
  2016. 8.02 s [really-safe-money] let ceiled :: Natural
  2017. 8.02 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:339:22-39
  2018. 8.02 s [really-safe-money] @@ -336,7 +336,7 @@
  2019. 8.02 s [really-safe-money] ceiled = (ceiling :: Double -> Natural) resultDouble
  2020. 8.02 s [really-safe-money] floored :: Natural
  2021. 8.02 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  2022. 8.02 s [really-safe-money] - in if ceiled == floored
  2023. 8.02 s [really-safe-money] + in if True
  2024. 8.02 s [really-safe-money] then
  2025. 8.02 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2026. 8.02 s [really-safe-money] then Nothing
  2027. 8.02 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:339:22-39
  2028. 8.02 s [really-safe-money] @@ -336,7 +336,7 @@
  2029. 8.02 s [really-safe-money] ceiled = (ceiling :: Double -> Natural) resultDouble
  2030. 8.02 s [really-safe-money] floored :: Natural
  2031. 8.02 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  2032. 8.02 s [really-safe-money] - in if ceiled == floored
  2033. 8.02 s [really-safe-money] + in if False
  2034. 8.02 s [really-safe-money] then
  2035. 8.02 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2036. 8.02 s [really-safe-money] then Nothing
  2037. 8.02 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:339:22-39
  2038. 8.02 s [really-safe-money] @@ -336,7 +336,7 @@
  2039. 8.02 s [really-safe-money] ceiled = (ceiling :: Double -> Natural) resultDouble
  2040. 8.02 s [really-safe-money] floored :: Natural
  2041. 8.02 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  2042. 8.02 s [really-safe-money] - in if ceiled == floored
  2043. 8.02 s [really-safe-money] + in if not (ceiled == floored)
  2044. 8.02 s [really-safe-money] then
  2045. 8.02 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2046. 8.02 s [really-safe-money] then Nothing
  2047. 8.02 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:341:26-91
  2048. 8.02 s [really-safe-money] @@ -338,7 +338,7 @@
  2049. 8.02 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  2050. 8.02 s [really-safe-money] in if ceiled == floored
  2051. 8.02 s [really-safe-money] then
  2052. 8.02 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2053. 8.02 s [really-safe-money] + if True
  2054. 8.02 s [really-safe-money] then Nothing
  2055. 8.02 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  2056. 8.02 s [really-safe-money] else Nothing
  2057. 8.02 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:341:26-91
  2058. 8.02 s [really-safe-money] @@ -338,7 +338,7 @@
  2059. 8.02 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  2060. 8.02 s [really-safe-money] in if ceiled == floored
  2061. 8.02 s [really-safe-money] then
  2062. 8.02 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2063. 8.02 s [really-safe-money] + if False
  2064. 8.02 s [really-safe-money] then Nothing
  2065. 8.02 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  2066. 8.02 s [really-safe-money] else Nothing
  2067. 8.02 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:341:26-91
  2068. 8.02 s [really-safe-money] @@ -338,7 +338,7 @@
  2069. 8.02 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  2070. 8.02 s [really-safe-money] in if ceiled == floored
  2071. 8.02 s [really-safe-money] then
  2072. 8.02 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2073. 8.02 s [really-safe-money] + if not (ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64))
  2074. 8.02 s [really-safe-money] then Nothing
  2075. 8.02 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  2076. 8.02 s [really-safe-money] else Nothing
  2077. 8.02 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:341:23-65
  2078. 8.02 s [really-safe-money] @@ -338,9 +338,9 @@
  2079. 8.02 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  2080. 8.02 s [really-safe-money] in if ceiled == floored
  2081. 8.02 s [really-safe-money] then
  2082. 8.02 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2083. 8.02 s [really-safe-money] - then Nothing
  2084. 8.02 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  2085. 8.02 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2086. 8.02 s [really-safe-money] + then Nothing
  2087. 8.02 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  2088. 8.02 s [really-safe-money] else Nothing
  2089. 8.02 s [really-safe-money]
  2090. 8.02 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  2091. 8.02 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:339:19-33
  2092. 8.02 s [really-safe-money] @@ -336,12 +336,12 @@
  2093. 8.02 s [really-safe-money] ceiled = (ceiling :: Double -> Natural) resultDouble
  2094. 8.02 s [really-safe-money] floored :: Natural
  2095. 8.02 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  2096. 8.02 s [really-safe-money] - in if ceiled == floored
  2097. 8.02 s [really-safe-money] - then
  2098. 8.02 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2099. 8.02 s [really-safe-money] - then Nothing
  2100. 8.02 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  2101. 8.02 s [really-safe-money] - else Nothing
  2102. 8.02 s [really-safe-money] + in if ceiled == floored
  2103. 8.02 s [really-safe-money] + then
  2104. 8.02 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2105. 8.02 s [really-safe-money] + then Nothing
  2106. 8.02 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  2107. 8.02 s [really-safe-money] + else Nothing
  2108. 8.02 s [really-safe-money]
  2109. 8.02 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  2110. 8.02 s [really-safe-money] --
  2111. 8.02 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:332:11-33
  2112. 8.02 s [really-safe-money] @@ -329,19 +329,19 @@
  2113. 8.02 s [really-safe-money] | otherwise =
  2114. 8.02 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  2115. 8.02 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  2116. 8.02 s [really-safe-money] - if exponent resultDouble > 65
  2117. 8.02 s [really-safe-money] - then Nothing
  2118. 8.02 s [really-safe-money] - else
  2119. 8.02 s [really-safe-money] - let ceiled :: Natural
  2120. 8.02 s [really-safe-money] - ceiled = (ceiling :: Double -> Natural) resultDouble
  2121. 8.02 s [really-safe-money] - floored :: Natural
  2122. 8.02 s [really-safe-money] - floored = (floor :: Double -> Natural) resultDouble
  2123. 8.02 s [really-safe-money] - in if ceiled == floored
  2124. 8.02 s [really-safe-money] - then
  2125. 8.02 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2126. 8.02 s [really-safe-money] - then Nothing
  2127. 8.02 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  2128. 8.02 s [really-safe-money] - else Nothing
  2129. 8.02 s [really-safe-money] + if exponent resultDouble > 65
  2130. 8.02 s [really-safe-money] + then Nothing
  2131. 8.02 s [really-safe-money] + else
  2132. 8.02 s [really-safe-money] + let ceiled :: Natural
  2133. 8.02 s [really-safe-money] + ceiled = (ceiling :: Double -> Natural) resultDouble
  2134. 8.02 s [really-safe-money] + floored :: Natural
  2135. 8.02 s [really-safe-money] + floored = (floor :: Double -> Natural) resultDouble
  2136. 8.02 s [really-safe-money] + in if ceiled == floored
  2137. 8.02 s [really-safe-money] + then
  2138. 8.02 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2139. 8.02 s [really-safe-money] + then Nothing
  2140. 8.02 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  2141. 8.02 s [really-safe-money] + else Nothing
  2142. 8.02 s [really-safe-money]
  2143. 8.02 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  2144. 8.02 s [really-safe-money] --
  2145. 8.02 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:290:79-80
  2146. 8.02 s [really-safe-money] @@ -287,7 +287,7 @@
  2147. 8.02 s [really-safe-money] -- >>> toRatio (QuantisationFactor 100) (Amount 1)
  2148. 8.02 s [really-safe-money] -- 1 % 100
  2149. 8.02 s [really-safe-money] toRatio :: QuantisationFactor -> Amount -> Ratio Natural
  2150. 8.02 s [really-safe-money] -toRatio (QuantisationFactor 0) a = fromIntegral (toMinimalQuantisations a) :% 0
  2151. 8.02 s [really-safe-money] +toRatio (QuantisationFactor 0) a = fromIntegral (toMinimalQuantisations a) :% 1
  2152. 8.02 s [really-safe-money] toRatio (QuantisationFactor quantisationFactor) a =
  2153. 8.02 s [really-safe-money] (fromIntegral :: Word64 -> Natural) (toMinimalQuantisations a)
  2154. 8.02 s [really-safe-money] % (fromIntegral :: Word32 -> Natural) quantisationFactor
  2155. 8.02 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:494:96-97
  2156. 8.02 s [really-safe-money] @@ -491,7 +491,7 @@
  2157. 8.02 s [really-safe-money] let maxBoundI :: Integer
  2158. 8.02 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  2159. 8.02 s [really-safe-money] r :: Integer
  2160. 8.02 s [really-safe-money] - r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  2161. 8.02 s [really-safe-money] + r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 1 l
  2162. 8.02 s [really-safe-money] in if r > maxBoundI
  2163. 8.02 s [really-safe-money] then Nothing
  2164. 8.02 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  2165. 8.02 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:495:10-23
  2166. 8.02 s [really-safe-money] @@ -492,7 +492,7 @@
  2167. 8.02 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  2168. 8.02 s [really-safe-money] r :: Integer
  2169. 8.02 s [really-safe-money] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  2170. 8.02 s [really-safe-money] - in if r > maxBoundI
  2171. 8.02 s [really-safe-money] + in if True
  2172. 8.02 s [really-safe-money] then Nothing
  2173. 8.02 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  2174. 8.02 s [really-safe-money]
  2175. 8.02 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:495:10-23
  2176. 8.02 s [really-safe-money] @@ -492,7 +492,7 @@
  2177. 8.02 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  2178. 8.02 s [really-safe-money] r :: Integer
  2179. 8.02 s [really-safe-money] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  2180. 8.02 s [really-safe-money] - in if r > maxBoundI
  2181. 8.02 s [really-safe-money] + in if False
  2182. 8.02 s [really-safe-money] then Nothing
  2183. 8.02 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  2184. 8.03 s [really-safe-money]
  2185. 8.03 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:495:10-23
  2186. 8.03 s [really-safe-money] @@ -492,7 +492,7 @@
  2187. 8.03 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  2188. 8.03 s [really-safe-money] r :: Integer
  2189. 8.03 s [really-safe-money] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  2190. 8.03 s [really-safe-money] - in if r > maxBoundI
  2191. 8.03 s [really-safe-money] + in if not (r > maxBoundI)
  2192. 8.03 s [really-safe-money] then Nothing
  2193. 8.03 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  2194. 8.03 s [really-safe-money]
  2195. 8.03 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:495:7-66
  2196. 8.03 s [really-safe-money] @@ -492,9 +492,9 @@
  2197. 8.03 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  2198. 8.03 s [really-safe-money] r :: Integer
  2199. 8.03 s [really-safe-money] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  2200. 8.03 s [really-safe-money] - in if r > maxBoundI
  2201. 8.03 s [really-safe-money] - then Nothing
  2202. 8.03 s [really-safe-money] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  2203. 8.03 s [really-safe-money] + in if r > maxBoundI
  2204. 8.03 s [really-safe-money] + then Nothing
  2205. 8.03 s [really-safe-money] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  2206. 8.03 s [really-safe-money]
  2207. 8.03 s [really-safe-money] -- | Add two amounts of money.
  2208. 8.03 s [really-safe-money] --
  2209. 8.03 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:250:15-16
  2210. 8.03 s [really-safe-money] @@ -247,7 +247,7 @@
  2211. 8.03 s [really-safe-money] -- >>> zero
  2212. 8.03 s [really-safe-money] -- Amount 0
  2213. 8.03 s [really-safe-money] zero :: Amount
  2214. 8.03 s [really-safe-money] -zero = Amount 0
  2215. 8.03 s [really-safe-money] +zero = Amount 1
  2216. 8.03 s [really-safe-money]
  2217. 8.03 s [really-safe-money] -- | Turn an amount into a number of minimal quantisations.
  2218. 8.03 s [really-safe-money] --
  2219. 8.03 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:661:30-31
  2220. 8.03 s [really-safe-money] @@ -658,7 +658,7 @@
  2221. 8.03 s [really-safe-money] -- | The amount and the real rate that was used, considering the 'Rounding'
  2222. 8.03 s [really-safe-money] (Maybe Amount, Ratio Natural)
  2223. 8.03 s [really-safe-money] fraction _ (Amount 0) f = (Just zero, f)
  2224. 8.03 s [really-safe-money] -fraction _ _ 0 = (Just zero, 0)
  2225. 8.03 s [really-safe-money] +fraction _ _ 0 = (Just zero, 1)
  2226. 8.03 s [really-safe-money] fraction r (Amount a) f =
  2227. 8.03 s [really-safe-money] let amountAsRatio :: Ratio Natural
  2228. 8.03 s [really-safe-money] amountAsRatio = (fromIntegral :: Word64 -> Ratio Natural) a
  2229. 8.03 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:668:17-30
  2230. 8.03 s [really-safe-money] @@ -665,10 +665,10 @@
  2231. 8.03 s [really-safe-money] theoreticalResult :: Ratio Natural
  2232. 8.03 s [really-safe-money] theoreticalResult = amountAsRatio * f
  2233. 8.03 s [really-safe-money] rounder :: Ratio Natural -> Natural
  2234. 8.03 s [really-safe-money] - rounder = case r of
  2235. 8.03 s [really-safe-money] - RoundUp -> ceiling
  2236. 8.03 s [really-safe-money] - RoundDown -> floor
  2237. 8.03 s [really-safe-money] - RoundNearest -> round
  2238. 8.03 s [really-safe-money] + rounder = case r of
  2239. 8.03 s [really-safe-money] + RoundUp -> ceiling
  2240. 8.03 s [really-safe-money] + RoundDown -> floor
  2241. 8.03 s [really-safe-money] + RoundNearest -> round
  2242. 8.03 s [really-safe-money] roundedResult :: Natural
  2243. 8.03 s [really-safe-money] roundedResult = rounder theoreticalResult
  2244. 8.03 s [really-safe-money] actualRate :: Ratio Natural
  2245. 8.03 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:668:17-30
  2246. 8.03 s [really-safe-money] @@ -665,10 +665,10 @@
  2247. 8.03 s [really-safe-money] theoreticalResult :: Ratio Natural
  2248. 8.03 s [really-safe-money] theoreticalResult = amountAsRatio * f
  2249. 8.03 s [really-safe-money] rounder :: Ratio Natural -> Natural
  2250. 8.03 s [really-safe-money] - rounder = case r of
  2251. 8.03 s [really-safe-money] - RoundUp -> ceiling
  2252. 8.03 s [really-safe-money] - RoundDown -> floor
  2253. 8.03 s [really-safe-money] - RoundNearest -> round
  2254. 8.03 s [really-safe-money] + rounder = case r of
  2255. 8.03 s [really-safe-money] + RoundUp -> ceiling
  2256. 8.03 s [really-safe-money] + RoundDown -> floor
  2257. 8.03 s [really-safe-money] + RoundNearest -> round
  2258. 8.03 s [really-safe-money] roundedResult :: Natural
  2259. 8.03 s [really-safe-money] roundedResult = rounder theoreticalResult
  2260. 8.03 s [really-safe-money] actualRate :: Ratio Natural
  2261. 8.03 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:668:17-30
  2262. 8.03 s [really-safe-money] @@ -665,10 +665,10 @@
  2263. 8.03 s [really-safe-money] theoreticalResult :: Ratio Natural
  2264. 8.03 s [really-safe-money] theoreticalResult = amountAsRatio * f
  2265. 8.03 s [really-safe-money] rounder :: Ratio Natural -> Natural
  2266. 8.03 s [really-safe-money] - rounder = case r of
  2267. 8.03 s [really-safe-money] - RoundUp -> ceiling
  2268. 8.03 s [really-safe-money] - RoundDown -> floor
  2269. 8.03 s [really-safe-money] - RoundNearest -> round
  2270. 8.03 s [really-safe-money] + rounder = case r of
  2271. 8.03 s [really-safe-money] + RoundUp -> ceiling
  2272. 8.03 s [really-safe-money] + RoundDown -> floor
  2273. 8.03 s [really-safe-money] + RoundNearest -> round
  2274. 8.03 s [really-safe-money] roundedResult :: Natural
  2275. 8.03 s [really-safe-money] roundedResult = rounder theoreticalResult
  2276. 8.03 s [really-safe-money] actualRate :: Ratio Natural
  2277. 8.03 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:681:12-37
  2278. 8.03 s [really-safe-money] @@ -678,7 +678,7 @@
  2279. 8.03 s [really-safe-money] maxBoundN :: Natural
  2280. 8.03 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  2281. 8.03 s [really-safe-money] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  2282. 8.03 s [really-safe-money] - in ( if roundedResult > maxBoundN
  2283. 8.03 s [really-safe-money] + in ( if True
  2284. 8.03 s [really-safe-money] then Nothing
  2285. 8.03 s [really-safe-money] else Just result,
  2286. 8.03 s [really-safe-money] actualRate
  2287. 8.03 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:681:12-37
  2288. 8.03 s [really-safe-money] @@ -678,7 +678,7 @@
  2289. 8.03 s [really-safe-money] maxBoundN :: Natural
  2290. 8.03 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  2291. 8.03 s [really-safe-money] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  2292. 8.03 s [really-safe-money] - in ( if roundedResult > maxBoundN
  2293. 8.03 s [really-safe-money] + in ( if False
  2294. 8.03 s [really-safe-money] then Nothing
  2295. 8.03 s [really-safe-money] else Just result,
  2296. 8.03 s [really-safe-money] actualRate
  2297. 8.03 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:681:12-37
  2298. 8.03 s [really-safe-money] @@ -678,7 +678,7 @@
  2299. 8.03 s [really-safe-money] maxBoundN :: Natural
  2300. 8.03 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  2301. 8.03 s [really-safe-money] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  2302. 8.03 s [really-safe-money] - in ( if roundedResult > maxBoundN
  2303. 8.03 s [really-safe-money] + in ( if not (roundedResult > maxBoundN)
  2304. 8.03 s [really-safe-money] then Nothing
  2305. 8.03 s [really-safe-money] else Just result,
  2306. 8.03 s [really-safe-money] actualRate
  2307. 8.03 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:681:9-27
  2308. 8.03 s [really-safe-money] @@ -678,9 +678,9 @@
  2309. 8.03 s [really-safe-money] maxBoundN :: Natural
  2310. 8.03 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  2311. 8.03 s [really-safe-money] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  2312. 8.03 s [really-safe-money] - in ( if roundedResult > maxBoundN
  2313. 8.03 s [really-safe-money] - then Nothing
  2314. 8.03 s [really-safe-money] - else Just result,
  2315. 8.03 s [really-safe-money] + in ( if roundedResult > maxBoundN
  2316. 8.03 s [really-safe-money] + then Nothing
  2317. 8.03 s [really-safe-money] + else Just result,
  2318. 8.03 s [really-safe-money] actualRate
  2319. 8.03 s [really-safe-money] )
  2320. 8.03 s [really-safe-money]
  2321. 8.03 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:806:79-92
  2322. 8.03 s [really-safe-money] @@ -803,4 +803,4 @@
  2323. 8.03 s [really-safe-money]
  2324. 8.03 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  2325. 8.03 s [really-safe-money] validateStrictlyPositive :: Amount -> Validation
  2326. 8.03 s [really-safe-money] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  2327. 8.03 s [really-safe-money] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ True
  2328. 8.03 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:806:79-92
  2329. 8.03 s [really-safe-money] @@ -803,4 +803,4 @@
  2330. 8.03 s [really-safe-money]
  2331. 8.03 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  2332. 8.03 s [really-safe-money] validateStrictlyPositive :: Amount -> Validation
  2333. 8.03 s [really-safe-money] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  2334. 8.03 s [really-safe-money] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ False
  2335. 8.03 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:806:79-92
  2336. 8.03 s [really-safe-money] @@ -803,4 +803,4 @@
  2337. 8.03 s [really-safe-money]
  2338. 8.03 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  2339. 8.03 s [really-safe-money] validateStrictlyPositive :: Amount -> Validation
  2340. 8.03 s [really-safe-money] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  2341. 8.03 s [really-safe-money] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ not (amount > zero)
  2342. 8.03 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:607:15-22
  2343. 8.03 s [really-safe-money] @@ -604,7 +604,7 @@
  2344. 8.03 s [really-safe-money] case ad of
  2345. 8.03 s [really-safe-money] DistributedIntoUnequalChunks _ a1 _ a2 ->
  2346. 8.03 s [really-safe-money] declare "The larger chunks are larger" $
  2347. 8.03 s [really-safe-money] - a1 > a2
  2348. 8.03 s [really-safe-money] + True
  2349. 8.03 s [really-safe-money] _ -> valid
  2350. 8.03 s [really-safe-money] ]
  2351. 8.03 s [really-safe-money]
  2352. 8.03 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:607:15-22
  2353. 8.03 s [really-safe-money] @@ -604,7 +604,7 @@
  2354. 8.03 s [really-safe-money] case ad of
  2355. 8.03 s [really-safe-money] DistributedIntoUnequalChunks _ a1 _ a2 ->
  2356. 8.03 s [really-safe-money] declare "The larger chunks are larger" $
  2357. 8.03 s [really-safe-money] - a1 > a2
  2358. 8.03 s [really-safe-money] + False
  2359. 8.03 s [really-safe-money] _ -> valid
  2360. 8.03 s [really-safe-money] ]
  2361. 8.03 s [really-safe-money]
  2362. 8.03 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:607:15-22
  2363. 8.03 s [really-safe-money] @@ -604,7 +604,7 @@
  2364. 8.03 s [really-safe-money] case ad of
  2365. 8.03 s [really-safe-money] DistributedIntoUnequalChunks _ a1 _ a2 ->
  2366. 8.03 s [really-safe-money] declare "The larger chunks are larger" $
  2367. 8.03 s [really-safe-money] - a1 > a2
  2368. 8.03 s [really-safe-money] + not (a1 > a2)
  2369. 8.03 s [really-safe-money] _ -> valid
  2370. 8.03 s [really-safe-money] ]
  2371. 8.03 s [really-safe-money]
  2372. 8.03 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:604:9-21
  2373. 8.03 s [really-safe-money] @@ -601,11 +601,11 @@
  2374. 8.03 s [really-safe-money] validate ad =
  2375. 8.03 s [really-safe-money] mconcat
  2376. 8.03 s [really-safe-money] [ genericValidate ad,
  2377. 8.03 s [really-safe-money] - case ad of
  2378. 8.03 s [really-safe-money] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  2379. 8.03 s [really-safe-money] - declare "The larger chunks are larger" $
  2380. 8.03 s [really-safe-money] - a1 > a2
  2381. 8.03 s [really-safe-money] - _ -> valid
  2382. 8.03 s [really-safe-money] + case ad of
  2383. 8.03 s [really-safe-money] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  2384. 8.03 s [really-safe-money] + declare "The larger chunks are larger" $
  2385. 8.03 s [really-safe-money] + a1 > a2
  2386. 8.03 s [really-safe-money] + _ -> valid
  2387. 8.03 s [really-safe-money] ]
  2388. 8.03 s [really-safe-money]
  2389. 8.03 s [really-safe-money] instance (NFData amount) => NFData (Distribution amount)
  2390. 8.03 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:604:9-21
  2391. 8.03 s [really-safe-money] @@ -601,11 +601,11 @@
  2392. 8.03 s [really-safe-money] validate ad =
  2393. 8.03 s [really-safe-money] mconcat
  2394. 8.03 s [really-safe-money] [ genericValidate ad,
  2395. 8.03 s [really-safe-money] - case ad of
  2396. 8.03 s [really-safe-money] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  2397. 8.03 s [really-safe-money] - declare "The larger chunks are larger" $
  2398. 8.03 s [really-safe-money] - a1 > a2
  2399. 8.03 s [really-safe-money] - _ -> valid
  2400. 8.03 s [really-safe-money] + case ad of
  2401. 8.03 s [really-safe-money] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  2402. 8.03 s [really-safe-money] + declare "The larger chunks are larger" $
  2403. 8.03 s [really-safe-money] + a1 > a2
  2404. 8.03 s [really-safe-money] + _ -> valid
  2405. 8.03 s [really-safe-money] ]
  2406. 8.03 s [really-safe-money]
  2407. 8.03 s [really-safe-money] instance (NFData amount) => NFData (Distribution amount)
  2408. 8.03 s [really-safe-money] added mutation ListLit at src/Money/Amount.hs:603:7-8
  2409. 8.03 s [really-safe-money] @@ -600,13 +600,7 @@
  2410. 8.03 s [really-safe-money] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  2411. 8.03 s [really-safe-money] validate ad =
  2412. 8.03 s [really-safe-money] mconcat
  2413. 8.03 s [really-safe-money] - [ genericValidate ad,
  2414. 8.03 s [really-safe-money] - case ad of
  2415. 8.03 s [really-safe-money] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  2416. 8.03 s [really-safe-money] - declare "The larger chunks are larger" $
  2417. 8.03 s [really-safe-money] - a1 > a2
  2418. 8.03 s [really-safe-money] - _ -> valid
  2419. 8.03 s [really-safe-money] - ]
  2420. 8.03 s [really-safe-money] + []
  2421. 8.03 s [really-safe-money]
  2422. 8.03 s [really-safe-money] instance (NFData amount) => NFData (Distribution amount)
  2423. 8.03 s [really-safe-money]
  2424. 8.03 s [really-safe-money] added mutation ListLit at src/Money/Amount.hs:603:7-8
  2425. 8.03 s [really-safe-money] @@ -600,13 +600,13 @@
  2426. 8.03 s [really-safe-money] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  2427. 8.03 s [really-safe-money] validate ad =
  2428. 8.03 s [really-safe-money] mconcat
  2429. 8.03 s [really-safe-money] - [ genericValidate ad,
  2430. 8.03 s [really-safe-money] - case ad of
  2431. 8.03 s [really-safe-money] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  2432. 8.03 s [really-safe-money] - declare "The larger chunks are larger" $
  2433. 8.03 s [really-safe-money] - a1 > a2
  2434. 8.03 s [really-safe-money] - _ -> valid
  2435. 8.03 s [really-safe-money] - ]
  2436. 8.03 s [really-safe-money] + [ genericValidate ad,
  2437. 8.03 s [really-safe-money] + case ad of
  2438. 8.03 s [really-safe-money] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  2439. 8.03 s [really-safe-money] + declare "The larger chunks are larger" $
  2440. 8.03 s [really-safe-money] + a1 > a2
  2441. 8.03 s [really-safe-money] + _ -> valid
  2442. 8.03 s [really-safe-money] + ]
  2443. 8.03 s [really-safe-money]
  2444. 8.03 s [really-safe-money] instance (NFData amount) => NFData (Distribution amount)
  2445. 8.03 s [really-safe-money]
  2446. 8.03 s [really-safe-money] added 81 mutations
  2447. 9.63 s [really-safe-money] [ 7 of 12] Compiling Money.MultiAmount ( src/Money/MultiAmount.hs, dist/build/Money/MultiAmount.o, dist/build/Money/MultiAmount.dyn_o )
  2448. 9.65 s [really-safe-money] mutation: instrumenting Money.MultiAmount
  2449. 9.66 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
  2450. 9.66 s [really-safe-money] @@ -156,10 +156,10 @@
  2451. 9.66 s [really-safe-money] fmap
  2452. 9.66 s [really-safe-money] ( ( \theoreticalResult ->
  2453. 9.66 s [really-safe-money] let rounder :: Ratio Natural -> Natural
  2454. 9.66 s [really-safe-money] - rounder = case r of
  2455. 9.66 s [really-safe-money] - RoundUp -> ceiling
  2456. 9.66 s [really-safe-money] - RoundDown -> floor
  2457. 9.66 s [really-safe-money] - RoundNearest -> round
  2458. 9.66 s [really-safe-money] + rounder = case r of
  2459. 9.66 s [really-safe-money] + RoundUp -> ceiling
  2460. 9.66 s [really-safe-money] + RoundDown -> floor
  2461. 9.66 s [really-safe-money] + RoundNearest -> round
  2462. 9.66 s [really-safe-money] roundedResult :: Natural
  2463. 9.66 s [really-safe-money] roundedResult = rounder theoreticalResult
  2464. 9.66 s [really-safe-money] maxBoundN :: Natural
  2465. 9.66 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
  2466. 9.66 s [really-safe-money] @@ -156,10 +156,10 @@
  2467. 9.66 s [really-safe-money] fmap
  2468. 9.66 s [really-safe-money] ( ( \theoreticalResult ->
  2469. 9.66 s [really-safe-money] let rounder :: Ratio Natural -> Natural
  2470. 9.66 s [really-safe-money] - rounder = case r of
  2471. 9.66 s [really-safe-money] - RoundUp -> ceiling
  2472. 9.66 s [really-safe-money] - RoundDown -> floor
  2473. 9.66 s [really-safe-money] - RoundNearest -> round
  2474. 9.66 s [really-safe-money] + rounder = case r of
  2475. 9.66 s [really-safe-money] + RoundUp -> ceiling
  2476. 9.66 s [really-safe-money] + RoundDown -> floor
  2477. 9.66 s [really-safe-money] + RoundNearest -> round
  2478. 9.66 s [really-safe-money] roundedResult :: Natural
  2479. 9.66 s [really-safe-money] roundedResult = rounder theoreticalResult
  2480. 9.66 s [really-safe-money] maxBoundN :: Natural
  2481. 9.66 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
  2482. 9.66 s [really-safe-money] @@ -156,10 +156,10 @@
  2483. 9.66 s [really-safe-money] fmap
  2484. 9.66 s [really-safe-money] ( ( \theoreticalResult ->
  2485. 9.66 s [really-safe-money] let rounder :: Ratio Natural -> Natural
  2486. 9.66 s [really-safe-money] - rounder = case r of
  2487. 9.66 s [really-safe-money] - RoundUp -> ceiling
  2488. 9.66 s [really-safe-money] - RoundDown -> floor
  2489. 9.66 s [really-safe-money] - RoundNearest -> round
  2490. 9.66 s [really-safe-money] + rounder = case r of
  2491. 9.66 s [really-safe-money] + RoundUp -> ceiling
  2492. 9.66 s [really-safe-money] + RoundDown -> floor
  2493. 9.66 s [really-safe-money] + RoundNearest -> round
  2494. 9.66 s [really-safe-money] roundedResult :: Natural
  2495. 9.66 s [really-safe-money] roundedResult = rounder theoreticalResult
  2496. 9.66 s [really-safe-money] maxBoundN :: Natural
  2497. 9.66 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:168:20-45
  2498. 9.66 s [really-safe-money] @@ -165,7 +165,7 @@
  2499. 9.66 s [really-safe-money] maxBoundN :: Natural
  2500. 9.66 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  2501. 9.66 s [really-safe-money] actualResult =
  2502. 9.66 s [really-safe-money] - if roundedResult > maxBoundN
  2503. 9.66 s [really-safe-money] + if True
  2504. 9.66 s [really-safe-money] then Nothing
  2505. 9.66 s [really-safe-money] else Just (fromIntegral roundedResult)
  2506. 9.66 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2507. 9.66 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:168:20-45
  2508. 9.66 s [really-safe-money] @@ -165,7 +165,7 @@
  2509. 9.66 s [really-safe-money] maxBoundN :: Natural
  2510. 9.66 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  2511. 9.66 s [really-safe-money] actualResult =
  2512. 9.66 s [really-safe-money] - if roundedResult > maxBoundN
  2513. 9.66 s [really-safe-money] + if False
  2514. 9.66 s [really-safe-money] then Nothing
  2515. 9.66 s [really-safe-money] else Just (fromIntegral roundedResult)
  2516. 9.66 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2517. 9.66 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:168:20-45
  2518. 9.66 s [really-safe-money] @@ -165,7 +165,7 @@
  2519. 9.66 s [really-safe-money] maxBoundN :: Natural
  2520. 9.66 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  2521. 9.66 s [really-safe-money] actualResult =
  2522. 9.66 s [really-safe-money] - if roundedResult > maxBoundN
  2523. 9.66 s [really-safe-money] + if not (roundedResult > maxBoundN)
  2524. 9.66 s [really-safe-money] then Nothing
  2525. 9.66 s [really-safe-money] else Just (fromIntegral roundedResult)
  2526. 9.66 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2527. 9.66 s [really-safe-money] added mutation CondFlip at src/Money/MultiAmount.hs:168:17-57
  2528. 9.66 s [really-safe-money] @@ -165,9 +165,9 @@
  2529. 9.66 s [really-safe-money] maxBoundN :: Natural
  2530. 9.66 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  2531. 9.66 s [really-safe-money] actualResult =
  2532. 9.66 s [really-safe-money] - if roundedResult > maxBoundN
  2533. 9.66 s [really-safe-money] - then Nothing
  2534. 9.66 s [really-safe-money] - else Just (fromIntegral roundedResult)
  2535. 9.66 s [really-safe-money] + if roundedResult > maxBoundN
  2536. 9.66 s [really-safe-money] + then Nothing
  2537. 9.66 s [really-safe-money] + else Just (fromIntegral roundedResult)
  2538. 9.66 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2539. 9.66 s [really-safe-money] LT -> RoundedDown
  2540. 9.66 s [really-safe-money] EQ -> DidNotRound
  2541. 9.66 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
  2542. 9.66 s [really-safe-money] @@ -168,10 +168,10 @@
  2543. 9.66 s [really-safe-money] if roundedResult > maxBoundN
  2544. 9.66 s [really-safe-money] then Nothing
  2545. 9.66 s [really-safe-money] else Just (fromIntegral roundedResult)
  2546. 9.66 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2547. 9.66 s [really-safe-money] - LT -> RoundedDown
  2548. 9.66 s [really-safe-money] - EQ -> DidNotRound
  2549. 9.66 s [really-safe-money] - GT -> RoundedUp
  2550. 9.66 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2551. 9.66 s [really-safe-money] + LT -> RoundedDown
  2552. 9.66 s [really-safe-money] + EQ -> DidNotRound
  2553. 9.66 s [really-safe-money] + GT -> RoundedUp
  2554. 9.66 s [really-safe-money] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
  2555. 9.66 s [really-safe-money] )
  2556. 9.66 s [really-safe-money] . Prelude.sum
  2557. 9.66 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
  2558. 9.66 s [really-safe-money] @@ -168,10 +168,10 @@
  2559. 9.66 s [really-safe-money] if roundedResult > maxBoundN
  2560. 9.66 s [really-safe-money] then Nothing
  2561. 9.66 s [really-safe-money] else Just (fromIntegral roundedResult)
  2562. 9.66 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2563. 9.66 s [really-safe-money] - LT -> RoundedDown
  2564. 9.66 s [really-safe-money] - EQ -> DidNotRound
  2565. 9.66 s [really-safe-money] - GT -> RoundedUp
  2566. 9.66 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2567. 9.66 s [really-safe-money] + LT -> RoundedDown
  2568. 9.66 s [really-safe-money] + EQ -> DidNotRound
  2569. 9.66 s [really-safe-money] + GT -> RoundedUp
  2570. 9.66 s [really-safe-money] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
  2571. 9.66 s [really-safe-money] )
  2572. 9.66 s [really-safe-money] . Prelude.sum
  2573. 9.66 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
  2574. 9.66 s [really-safe-money] @@ -168,10 +168,10 @@
  2575. 9.66 s [really-safe-money] if roundedResult > maxBoundN
  2576. 9.66 s [really-safe-money] then Nothing
  2577. 9.66 s [really-safe-money] else Just (fromIntegral roundedResult)
  2578. 9.66 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2579. 9.66 s [really-safe-money] - LT -> RoundedDown
  2580. 9.66 s [really-safe-money] - EQ -> DidNotRound
  2581. 9.66 s [really-safe-money] - GT -> RoundedUp
  2582. 9.66 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2583. 9.66 s [really-safe-money] + LT -> RoundedDown
  2584. 9.66 s [really-safe-money] + EQ -> DidNotRound
  2585. 9.66 s [really-safe-money] + GT -> RoundedUp
  2586. 9.66 s [really-safe-money] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
  2587. 9.66 s [really-safe-money] )
  2588. 9.66 s [really-safe-money] . Prelude.sum
  2589. 9.66 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:119:12-28
  2590. 9.66 s [really-safe-money] @@ -116,7 +116,7 @@
  2591. 9.66 s [really-safe-money] Just a -> do
  2592. 9.66 s [really-safe-money] r <- Amount.subtract a amount
  2593. 9.66 s [really-safe-money] Just $
  2594. 9.66 s [really-safe-money] - if r == Amount.zero
  2595. 9.66 s [really-safe-money] + if True
  2596. 9.66 s [really-safe-money] then M.delete currency m
  2597. 9.66 s [really-safe-money] else M.insert currency r m
  2598. 9.66 s [really-safe-money]
  2599. 9.66 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:119:12-28
  2600. 9.66 s [really-safe-money] @@ -116,7 +116,7 @@
  2601. 9.66 s [really-safe-money] Just a -> do
  2602. 9.66 s [really-safe-money] r <- Amount.subtract a amount
  2603. 9.66 s [really-safe-money] Just $
  2604. 9.66 s [really-safe-money] - if r == Amount.zero
  2605. 9.66 s [really-safe-money] + if False
  2606. 9.66 s [really-safe-money] then M.delete currency m
  2607. 9.66 s [really-safe-money] else M.insert currency r m
  2608. 9.66 s [really-safe-money]
  2609. 9.66 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:119:12-28
  2610. 9.66 s [really-safe-money] @@ -116,7 +116,7 @@
  2611. 9.66 s [really-safe-money] Just a -> do
  2612. 9.66 s [really-safe-money] r <- Amount.subtract a amount
  2613. 9.66 s [really-safe-money] Just $
  2614. 9.66 s [really-safe-money] - if r == Amount.zero
  2615. 9.66 s [really-safe-money] + if not (r == Amount.zero)
  2616. 9.66 s [really-safe-money] then M.delete currency m
  2617. 9.66 s [really-safe-money] else M.insert currency r m
  2618. 9.66 s [really-safe-money]
  2619. 9.66 s [really-safe-money] added mutation CondFlip at src/Money/MultiAmount.hs:119:9-37
  2620. 9.66 s [really-safe-money] @@ -116,9 +116,9 @@
  2621. 9.66 s [really-safe-money] Just a -> do
  2622. 9.66 s [really-safe-money] r <- Amount.subtract a amount
  2623. 9.66 s [really-safe-money] Just $
  2624. 9.66 s [really-safe-money] - if r == Amount.zero
  2625. 9.66 s [really-safe-money] - then M.delete currency m
  2626. 9.66 s [really-safe-money] - else M.insert currency r m
  2627. 9.66 s [really-safe-money] + if r == Amount.zero
  2628. 9.66 s [really-safe-money] + then M.delete currency m
  2629. 9.66 s [really-safe-money] + else M.insert currency r m
  2630. 9.66 s [really-safe-money]
  2631. 9.66 s [really-safe-money] -- | Try to convert every amount to one currency.
  2632. 9.66 s [really-safe-money] --
  2633. 9.66 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:114:22-37
  2634. 9.66 s [really-safe-money] @@ -111,14 +111,14 @@
  2635. 9.66 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  2636. 9.66 s [really-safe-money] subtractAmount m _ (Amount 0) = Just m
  2637. 9.66 s [really-safe-money] subtractAmount (MultiAmount m) currency amount =
  2638. 9.66 s [really-safe-money] - fmap MultiAmount $ case M.lookup currency m of
  2639. 9.66 s [really-safe-money] - Nothing -> Nothing -- Can't go below zero
  2640. 9.66 s [really-safe-money] - Just a -> do
  2641. 9.66 s [really-safe-money] - r <- Amount.subtract a amount
  2642. 9.66 s [really-safe-money] - Just $
  2643. 9.66 s [really-safe-money] - if r == Amount.zero
  2644. 9.66 s [really-safe-money] - then M.delete currency m
  2645. 9.66 s [really-safe-money] - else M.insert currency r m
  2646. 9.66 s [really-safe-money] + fmap MultiAmount $ case M.lookup currency m of
  2647. 9.66 s [really-safe-money] + Nothing -> Nothing -- Can't go below zero
  2648. 9.66 s [really-safe-money] + Just a -> do
  2649. 9.66 s [really-safe-money] + r <- Amount.subtract a amount
  2650. 9.66 s [really-safe-money] + Just $
  2651. 9.66 s [really-safe-money] + if r == Amount.zero
  2652. 9.66 s [really-safe-money] + then M.delete currency m
  2653. 9.66 s [really-safe-money] + else M.insert currency r m
  2654. 9.66 s [really-safe-money]
  2655. 9.66 s [really-safe-money] -- | Try to convert every amount to one currency.
  2656. 9.66 s [really-safe-money] --
  2657. 9.66 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:114:22-37
  2658. 9.66 s [really-safe-money] @@ -111,14 +111,14 @@
  2659. 9.66 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  2660. 9.66 s [really-safe-money] subtractAmount m _ (Amount 0) = Just m
  2661. 9.66 s [really-safe-money] subtractAmount (MultiAmount m) currency amount =
  2662. 9.66 s [really-safe-money] - fmap MultiAmount $ case M.lookup currency m of
  2663. 9.66 s [really-safe-money] - Nothing -> Nothing -- Can't go below zero
  2664. 9.66 s [really-safe-money] - Just a -> do
  2665. 9.66 s [really-safe-money] - r <- Amount.subtract a amount
  2666. 9.66 s [really-safe-money] - Just $
  2667. 9.66 s [really-safe-money] - if r == Amount.zero
  2668. 9.66 s [really-safe-money] - then M.delete currency m
  2669. 9.66 s [really-safe-money] - else M.insert currency r m
  2670. 9.66 s [really-safe-money] + fmap MultiAmount $ case M.lookup currency m of
  2671. 9.66 s [really-safe-money] + Nothing -> Nothing -- Can't go below zero
  2672. 9.66 s [really-safe-money] + Just a -> do
  2673. 9.66 s [really-safe-money] + r <- Amount.subtract a amount
  2674. 9.66 s [really-safe-money] + Just $
  2675. 9.66 s [really-safe-money] + if r == Amount.zero
  2676. 9.66 s [really-safe-money] + then M.delete currency m
  2677. 9.66 s [really-safe-money] + else M.insert currency r m
  2678. 9.66 s [really-safe-money]
  2679. 9.66 s [really-safe-money] -- | Try to convert every amount to one currency.
  2680. 9.66 s [really-safe-money] --
  2681. 9.66 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:106:12-28
  2682. 9.66 s [really-safe-money] @@ -103,7 +103,7 @@
  2683. 9.66 s [really-safe-money] Just a -> do
  2684. 9.66 s [really-safe-money] r <- Amount.add a amount
  2685. 9.66 s [really-safe-money] Just $
  2686. 9.66 s [really-safe-money] - if r == Amount.zero
  2687. 9.66 s [really-safe-money] + if True
  2688. 9.66 s [really-safe-money] then M.delete currency m
  2689. 9.66 s [really-safe-money] else M.insert currency r m
  2690. 9.66 s [really-safe-money]
  2691. 9.66 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:106:12-28
  2692. 9.66 s [really-safe-money] @@ -103,7 +103,7 @@
  2693. 9.66 s [really-safe-money] Just a -> do
  2694. 9.66 s [really-safe-money] r <- Amount.add a amount
  2695. 9.66 s [really-safe-money] Just $
  2696. 9.66 s [really-safe-money] - if r == Amount.zero
  2697. 9.66 s [really-safe-money] + if False
  2698. 9.66 s [really-safe-money] then M.delete currency m
  2699. 9.66 s [really-safe-money] else M.insert currency r m
  2700. 9.66 s [really-safe-money]
  2701. 9.66 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:106:12-28
  2702. 9.66 s [really-safe-money] @@ -103,7 +103,7 @@
  2703. 9.66 s [really-safe-money] Just a -> do
  2704. 9.66 s [really-safe-money] r <- Amount.add a amount
  2705. 9.66 s [really-safe-money] Just $
  2706. 9.66 s [really-safe-money] - if r == Amount.zero
  2707. 9.66 s [really-safe-money] + if not (r == Amount.zero)
  2708. 9.66 s [really-safe-money] then M.delete currency m
  2709. 9.66 s [really-safe-money] else M.insert currency r m
  2710. 9.66 s [really-safe-money]
  2711. 9.66 s [really-safe-money] added mutation CondFlip at src/Money/MultiAmount.hs:106:9-37
  2712. 9.66 s [really-safe-money] @@ -103,9 +103,9 @@
  2713. 9.66 s [really-safe-money] Just a -> do
  2714. 9.66 s [really-safe-money] r <- Amount.add a amount
  2715. 9.66 s [really-safe-money] Just $
  2716. 9.66 s [really-safe-money] - if r == Amount.zero
  2717. 9.66 s [really-safe-money] - then M.delete currency m
  2718. 9.66 s [really-safe-money] - else M.insert currency r m
  2719. 9.66 s [really-safe-money] + if r == Amount.zero
  2720. 9.66 s [really-safe-money] + then M.delete currency m
  2721. 9.67 s [really-safe-money] + else M.insert currency r m
  2722. 9.67 s [really-safe-money]
  2723. 9.67 s [really-safe-money] -- | Subtract an 'Amount' from a 'MultiAmount'
  2724. 9.67 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  2725. 9.67 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:101:22-37
  2726. 9.67 s [really-safe-money] @@ -98,14 +98,14 @@
  2727. 9.67 s [really-safe-money] addAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  2728. 9.67 s [really-safe-money] addAmount m _ (Amount 0) = Just m
  2729. 9.67 s [really-safe-money] addAmount (MultiAmount m) currency amount =
  2730. 9.67 s [really-safe-money] - fmap MultiAmount $ case M.lookup currency m of
  2731. 9.67 s [really-safe-money] - Nothing -> Just $ M.insert currency amount m
  2732. 9.67 s [really-safe-money] - Just a -> do
  2733. 9.67 s [really-safe-money] - r <- Amount.add a amount
  2734. 9.67 s [really-safe-money] - Just $
  2735. 9.67 s [really-safe-money] - if r == Amount.zero
  2736. 9.67 s [really-safe-money] - then M.delete currency m
  2737. 9.67 s [really-safe-money] - else M.insert currency r m
  2738. 9.67 s [really-safe-money] + fmap MultiAmount $ case M.lookup currency m of
  2739. 9.67 s [really-safe-money] + Nothing -> Just $ M.insert currency amount m
  2740. 9.67 s [really-safe-money] + Just a -> do
  2741. 9.67 s [really-safe-money] + r <- Amount.add a amount
  2742. 9.67 s [really-safe-money] + Just $
  2743. 9.67 s [really-safe-money] + if r == Amount.zero
  2744. 9.67 s [really-safe-money] + then M.delete currency m
  2745. 9.67 s [really-safe-money] + else M.insert currency r m
  2746. 9.67 s [really-safe-money]
  2747. 9.67 s [really-safe-money] -- | Subtract an 'Amount' from a 'MultiAmount'
  2748. 9.67 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  2749. 9.67 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:101:22-37
  2750. 9.67 s [really-safe-money] @@ -98,14 +98,14 @@
  2751. 9.67 s [really-safe-money] addAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  2752. 9.67 s [really-safe-money] addAmount m _ (Amount 0) = Just m
  2753. 9.67 s [really-safe-money] addAmount (MultiAmount m) currency amount =
  2754. 9.67 s [really-safe-money] - fmap MultiAmount $ case M.lookup currency m of
  2755. 9.67 s [really-safe-money] - Nothing -> Just $ M.insert currency amount m
  2756. 9.67 s [really-safe-money] - Just a -> do
  2757. 9.67 s [really-safe-money] - r <- Amount.add a amount
  2758. 9.67 s [really-safe-money] - Just $
  2759. 9.67 s [really-safe-money] - if r == Amount.zero
  2760. 9.67 s [really-safe-money] - then M.delete currency m
  2761. 9.67 s [really-safe-money] - else M.insert currency r m
  2762. 9.67 s [really-safe-money] + fmap MultiAmount $ case M.lookup currency m of
  2763. 9.67 s [really-safe-money] + Nothing -> Just $ M.insert currency amount m
  2764. 9.67 s [really-safe-money] + Just a -> do
  2765. 9.67 s [really-safe-money] + r <- Amount.add a amount
  2766. 9.67 s [really-safe-money] + Just $
  2767. 9.67 s [really-safe-money] + if r == Amount.zero
  2768. 9.67 s [really-safe-money] + then M.delete currency m
  2769. 9.67 s [really-safe-money] + else M.insert currency r m
  2770. 9.67 s [really-safe-money]
  2771. 9.67 s [really-safe-money] -- | Subtract an 'Amount' from a 'MultiAmount'
  2772. 9.67 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  2773. 9.67 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:73:6-27
  2774. 9.67 s [really-safe-money] @@ -70,7 +70,7 @@
  2775. 9.67 s [really-safe-money]
  2776. 9.67 s [really-safe-money] fromAmount :: currency -> Amount -> MultiAmount currency
  2777. 9.67 s [really-safe-money] fromAmount currency amount =
  2778. 9.67 s [really-safe-money] - if amount == Amount.zero
  2779. 9.67 s [really-safe-money] + if True
  2780. 9.67 s [really-safe-money] then zero
  2781. 9.67 s [really-safe-money] else MultiAmount $ M.singleton currency amount
  2782. 9.67 s [really-safe-money]
  2783. 9.67 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:73:6-27
  2784. 9.67 s [really-safe-money] @@ -70,7 +70,7 @@
  2785. 9.67 s [really-safe-money]
  2786. 9.67 s [really-safe-money] fromAmount :: currency -> Amount -> MultiAmount currency
  2787. 9.67 s [really-safe-money] fromAmount currency amount =
  2788. 9.67 s [really-safe-money] - if amount == Amount.zero
  2789. 9.67 s [really-safe-money] + if False
  2790. 9.67 s [really-safe-money] then zero
  2791. 9.67 s [really-safe-money] else MultiAmount $ M.singleton currency amount
  2792. 9.67 s [really-safe-money]
  2793. 9.67 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:73:6-27
  2794. 9.67 s [really-safe-money] @@ -70,7 +70,7 @@
  2795. 9.67 s [really-safe-money]
  2796. 9.67 s [really-safe-money] fromAmount :: currency -> Amount -> MultiAmount currency
  2797. 9.67 s [really-safe-money] fromAmount currency amount =
  2798. 9.67 s [really-safe-money] - if amount == Amount.zero
  2799. 9.67 s [really-safe-money] + if not (amount == Amount.zero)
  2800. 9.67 s [really-safe-money] then zero
  2801. 9.67 s [really-safe-money] else MultiAmount $ M.singleton currency amount
  2802. 9.67 s [really-safe-money]
  2803. 9.67 s [really-safe-money] added mutation CondFlip at src/Money/MultiAmount.hs:73:3-51
  2804. 9.67 s [really-safe-money] @@ -70,9 +70,9 @@
  2805. 9.67 s [really-safe-money]
  2806. 9.67 s [really-safe-money] fromAmount :: currency -> Amount -> MultiAmount currency
  2807. 9.67 s [really-safe-money] fromAmount currency amount =
  2808. 9.67 s [really-safe-money] - if amount == Amount.zero
  2809. 9.67 s [really-safe-money] - then zero
  2810. 9.67 s [really-safe-money] - else MultiAmount $ M.singleton currency amount
  2811. 9.67 s [really-safe-money] + if amount == Amount.zero
  2812. 9.67 s [really-safe-money] + then zero
  2813. 9.67 s [really-safe-money] + else MultiAmount $ M.singleton currency amount
  2814. 9.67 s [really-safe-money]
  2815. 9.67 s [really-safe-money] -- | No money of any currency
  2816. 9.67 s [really-safe-money] zero :: MultiAmount currency
  2817. 9.67 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:66:13-29
  2818. 9.67 s [really-safe-money] @@ -63,7 +63,7 @@
  2819. 9.67 s [really-safe-money] [ genericValidate ma,
  2820. 9.67 s [really-safe-money] decorateMap m $ \_ a ->
  2821. 9.67 s [really-safe-money] declare "The amount is not zero" $
  2822. 9.67 s [really-safe-money] - a /= Amount.zero
  2823. 9.67 s [really-safe-money] + True
  2824. 9.67 s [really-safe-money] ]
  2825. 9.67 s [really-safe-money]
  2826. 9.67 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  2827. 9.67 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:66:13-29
  2828. 9.67 s [really-safe-money] @@ -63,7 +63,7 @@
  2829. 9.67 s [really-safe-money] [ genericValidate ma,
  2830. 9.67 s [really-safe-money] decorateMap m $ \_ a ->
  2831. 9.67 s [really-safe-money] declare "The amount is not zero" $
  2832. 9.67 s [really-safe-money] - a /= Amount.zero
  2833. 9.67 s [really-safe-money] + False
  2834. 9.67 s [really-safe-money] ]
  2835. 9.67 s [really-safe-money]
  2836. 9.67 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  2837. 9.67 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:66:13-29
  2838. 9.67 s [really-safe-money] @@ -63,7 +63,7 @@
  2839. 9.67 s [really-safe-money] [ genericValidate ma,
  2840. 9.67 s [really-safe-money] decorateMap m $ \_ a ->
  2841. 9.67 s [really-safe-money] declare "The amount is not zero" $
  2842. 9.67 s [really-safe-money] - a /= Amount.zero
  2843. 9.67 s [really-safe-money] + not (a /= Amount.zero)
  2844. 9.67 s [really-safe-money] ]
  2845. 9.67 s [really-safe-money]
  2846. 9.67 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  2847. 9.67 s [really-safe-money] added mutation ListLit at src/Money/MultiAmount.hs:63:7-8
  2848. 9.67 s [really-safe-money] @@ -60,11 +60,7 @@
  2849. 9.67 s [really-safe-money] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
  2850. 9.67 s [really-safe-money] validate ma@(MultiAmount m) =
  2851. 9.67 s [really-safe-money] mconcat
  2852. 9.67 s [really-safe-money] - [ genericValidate ma,
  2853. 9.67 s [really-safe-money] - decorateMap m $ \_ a ->
  2854. 9.67 s [really-safe-money] - declare "The amount is not zero" $
  2855. 9.67 s [really-safe-money] - a /= Amount.zero
  2856. 9.67 s [really-safe-money] - ]
  2857. 9.67 s [really-safe-money] + []
  2858. 9.67 s [really-safe-money]
  2859. 9.67 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  2860. 9.67 s [really-safe-money]
  2861. 9.67 s [really-safe-money] added mutation ListLit at src/Money/MultiAmount.hs:63:7-8
  2862. 9.67 s [really-safe-money] @@ -60,11 +60,11 @@
  2863. 9.67 s [really-safe-money] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
  2864. 9.67 s [really-safe-money] validate ma@(MultiAmount m) =
  2865. 9.67 s [really-safe-money] mconcat
  2866. 9.67 s [really-safe-money] - [ genericValidate ma,
  2867. 9.67 s [really-safe-money] - decorateMap m $ \_ a ->
  2868. 9.67 s [really-safe-money] - declare "The amount is not zero" $
  2869. 9.67 s [really-safe-money] - a /= Amount.zero
  2870. 9.67 s [really-safe-money] - ]
  2871. 9.67 s [really-safe-money] + [ genericValidate ma,
  2872. 9.67 s [really-safe-money] + decorateMap m $ \_ a ->
  2873. 9.67 s [really-safe-money] + declare "The amount is not zero" $
  2874. 9.67 s [really-safe-money] + a /= Amount.zero
  2875. 9.67 s [really-safe-money] + ]
  2876. 9.67 s [really-safe-money]
  2877. 9.67 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  2878. 9.67 s [really-safe-money]
  2879. 9.67 s [really-safe-money] added 31 mutations
  2880. 10.20 s [really-safe-money] [ 8 of 12] Compiling Money.AmountOf ( src/Money/AmountOf.hs, dist/build/Money/AmountOf.o, dist/build/Money/AmountOf.dyn_o )
  2881. 10.49 s [really-safe-money] mutation: instrumenting Money.AmountOf
  2882. 10.49 s [really-safe-money] added mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  2883. 10.49 s [really-safe-money] @@ -212,11 +212,11 @@
  2884. 10.49 s [really-safe-money]
  2885. 10.49 s [really-safe-money] -- | See 'Amount.distribute'
  2886. 10.49 s [really-safe-money] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  2887. 10.49 s [really-safe-money] -distribute (AmountOf a) f = case Amount.distribute a f of
  2888. 10.49 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  2889. 10.49 s [really-safe-money] - DistributedZero -> DistributedZero
  2890. 10.49 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  2891. 10.49 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  2892. 10.49 s [really-safe-money] +distribute (AmountOf a) f = case Amount.distribute a f of
  2893. 10.49 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  2894. 10.49 s [really-safe-money] + DistributedZero -> DistributedZero
  2895. 10.49 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  2896. 10.49 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  2897. 10.49 s [really-safe-money]
  2898. 10.49 s [really-safe-money] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  2899. 10.49 s [really-safe-money]
  2900. 10.49 s [really-safe-money] added mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  2901. 10.49 s [really-safe-money] @@ -212,11 +212,11 @@
  2902. 10.49 s [really-safe-money]
  2903. 10.49 s [really-safe-money] -- | See 'Amount.distribute'
  2904. 10.49 s [really-safe-money] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  2905. 10.49 s [really-safe-money] -distribute (AmountOf a) f = case Amount.distribute a f of
  2906. 10.49 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  2907. 10.49 s [really-safe-money] - DistributedZero -> DistributedZero
  2908. 10.49 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  2909. 10.49 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  2910. 10.49 s [really-safe-money] +distribute (AmountOf a) f = case Amount.distribute a f of
  2911. 10.49 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  2912. 10.49 s [really-safe-money] + DistributedZero -> DistributedZero
  2913. 10.49 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  2914. 10.49 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  2915. 10.49 s [really-safe-money]
  2916. 10.49 s [really-safe-money] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  2917. 10.49 s [really-safe-money]
  2918. 10.49 s [really-safe-money] added mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  2919. 10.49 s [really-safe-money] @@ -212,11 +212,11 @@
  2920. 10.49 s [really-safe-money]
  2921. 10.49 s [really-safe-money] -- | See 'Amount.distribute'
  2922. 10.49 s [really-safe-money] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  2923. 10.49 s [really-safe-money] -distribute (AmountOf a) f = case Amount.distribute a f of
  2924. 10.49 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  2925. 10.49 s [really-safe-money] - DistributedZero -> DistributedZero
  2926. 10.49 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  2927. 10.49 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  2928. 10.49 s [really-safe-money] +distribute (AmountOf a) f = case Amount.distribute a f of
  2929. 10.49 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  2930. 10.49 s [really-safe-money] + DistributedZero -> DistributedZero
  2931. 10.49 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  2932. 10.49 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  2933. 10.49 s [really-safe-money]
  2934. 10.49 s [really-safe-money] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  2935. 10.49 s [really-safe-money]
  2936. 10.49 s [really-safe-money] added mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  2937. 10.50 s [really-safe-money] @@ -212,11 +212,11 @@
  2938. 10.50 s [really-safe-money]
  2939. 10.50 s [really-safe-money] -- | See 'Amount.distribute'
  2940. 10.50 s [really-safe-money] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  2941. 10.50 s [really-safe-money] -distribute (AmountOf a) f = case Amount.distribute a f of
  2942. 10.50 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  2943. 10.50 s [really-safe-money] - DistributedZero -> DistributedZero
  2944. 10.50 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  2945. 10.50 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  2946. 10.50 s [really-safe-money] +distribute (AmountOf a) f = case Amount.distribute a f of
  2947. 10.50 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  2948. 10.50 s [really-safe-money] + DistributedZero -> DistributedZero
  2949. 10.50 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  2950. 10.50 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  2951. 10.50 s [really-safe-money]
  2952. 10.50 s [really-safe-money] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  2953. 10.50 s [really-safe-money]
  2954. 10.50 s [really-safe-money] added 4 mutations
  2955. 10.50 s [really-safe-money] [ 9 of 12] Compiling Money.Account ( src/Money/Account.hs, dist/build/Money/Account.o, dist/build/Money/Account.dyn_o )
  2956. 10.50 s [really-safe-money] mutation: instrumenting Money.Account
  2957. 10.50 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:553:7-39
  2958. 10.50 s [really-safe-money] @@ -550,11 +550,11 @@
  2959. 10.50 s [really-safe-money] let aa1 = abs a1
  2960. 10.50 s [really-safe-money] aa2 = abs a2
  2961. 10.50 s [really-safe-money] mr = Amount.rate qf1 aa1 qf2 aa2
  2962. 10.50 s [really-safe-money] - in case (a1, a2) of
  2963. 10.50 s [really-safe-money] - (Positive _, Positive _) -> mr
  2964. 10.50 s [really-safe-money] - (Positive _, Negative _) -> Nothing
  2965. 10.50 s [really-safe-money] - (Negative _, Positive _) -> Nothing
  2966. 10.50 s [really-safe-money] - (Negative _, Negative _) -> mr
  2967. 10.50 s [really-safe-money] + in case (a1, a2) of
  2968. 10.50 s [really-safe-money] + (Positive _, Positive _) -> mr
  2969. 10.50 s [really-safe-money] + (Positive _, Negative _) -> Nothing
  2970. 10.50 s [really-safe-money] + (Negative _, Positive _) -> Nothing
  2971. 10.50 s [really-safe-money] + (Negative _, Negative _) -> mr
  2972. 10.50 s [really-safe-money]
  2973. 10.50 s [really-safe-money] -- | Convert an amount of money of one currency into an amount of money of
  2974. 10.50 s [really-safe-money] -- another currency using a conversion rate.
  2975. 10.50 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:553:7-39
  2976. 10.50 s [really-safe-money] @@ -550,11 +550,11 @@
  2977. 10.50 s [really-safe-money] let aa1 = abs a1
  2978. 10.50 s [really-safe-money] aa2 = abs a2
  2979. 10.50 s [really-safe-money] mr = Amount.rate qf1 aa1 qf2 aa2
  2980. 10.50 s [really-safe-money] - in case (a1, a2) of
  2981. 10.50 s [really-safe-money] - (Positive _, Positive _) -> mr
  2982. 10.50 s [really-safe-money] - (Positive _, Negative _) -> Nothing
  2983. 10.50 s [really-safe-money] - (Negative _, Positive _) -> Nothing
  2984. 10.50 s [really-safe-money] - (Negative _, Negative _) -> mr
  2985. 10.50 s [really-safe-money] + in case (a1, a2) of
  2986. 10.50 s [really-safe-money] + (Positive _, Positive _) -> mr
  2987. 10.50 s [really-safe-money] + (Positive _, Negative _) -> Nothing
  2988. 10.50 s [really-safe-money] + (Negative _, Positive _) -> Nothing
  2989. 10.50 s [really-safe-money] + (Negative _, Negative _) -> mr
  2990. 10.50 s [really-safe-money]
  2991. 10.50 s [really-safe-money] -- | Convert an amount of money of one currency into an amount of money of
  2992. 10.50 s [really-safe-money] -- another currency using a conversion rate.
  2993. 10.50 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:553:7-39
  2994. 10.50 s [really-safe-money] @@ -550,11 +550,11 @@
  2995. 10.50 s [really-safe-money] let aa1 = abs a1
  2996. 10.50 s [really-safe-money] aa2 = abs a2
  2997. 10.50 s [really-safe-money] mr = Amount.rate qf1 aa1 qf2 aa2
  2998. 10.50 s [really-safe-money] - in case (a1, a2) of
  2999. 10.50 s [really-safe-money] - (Positive _, Positive _) -> mr
  3000. 10.50 s [really-safe-money] - (Positive _, Negative _) -> Nothing
  3001. 10.50 s [really-safe-money] - (Negative _, Positive _) -> Nothing
  3002. 10.50 s [really-safe-money] - (Negative _, Negative _) -> mr
  3003. 10.50 s [really-safe-money] + in case (a1, a2) of
  3004. 10.50 s [really-safe-money] + (Positive _, Positive _) -> mr
  3005. 10.50 s [really-safe-money] + (Positive _, Negative _) -> Nothing
  3006. 10.50 s [really-safe-money] + (Negative _, Positive _) -> Nothing
  3007. 10.50 s [really-safe-money] + (Negative _, Negative _) -> mr
  3008. 10.50 s [really-safe-money]
  3009. 10.50 s [really-safe-money] -- | Convert an amount of money of one currency into an amount of money of
  3010. 10.50 s [really-safe-money] -- another currency using a conversion rate.
  3011. 10.50 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:553:7-39
  3012. 10.50 s [really-safe-money] @@ -550,11 +550,11 @@
  3013. 10.50 s [really-safe-money] let aa1 = abs a1
  3014. 10.50 s [really-safe-money] aa2 = abs a2
  3015. 10.50 s [really-safe-money] mr = Amount.rate qf1 aa1 qf2 aa2
  3016. 10.50 s [really-safe-money] - in case (a1, a2) of
  3017. 10.50 s [really-safe-money] - (Positive _, Positive _) -> mr
  3018. 10.50 s [really-safe-money] - (Positive _, Negative _) -> Nothing
  3019. 10.50 s [really-safe-money] - (Negative _, Positive _) -> Nothing
  3020. 10.50 s [really-safe-money] - (Negative _, Negative _) -> mr
  3021. 10.50 s [really-safe-money] + in case (a1, a2) of
  3022. 10.50 s [really-safe-money] + (Positive _, Positive _) -> mr
  3023. 10.50 s [really-safe-money] + (Positive _, Negative _) -> Nothing
  3024. 10.50 s [really-safe-money] + (Negative _, Positive _) -> Nothing
  3025. 10.50 s [really-safe-money] + (Negative _, Negative _) -> mr
  3026. 10.50 s [really-safe-money]
  3027. 10.50 s [really-safe-money] -- | Convert an amount of money of one currency into an amount of money of
  3028. 10.50 s [really-safe-money] -- another currency using a conversion rate.
  3029. 10.50 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:591:7-44
  3030. 10.50 s [really-safe-money] @@ -588,9 +588,9 @@
  3031. 10.50 s [really-safe-money] (Maybe Account, Maybe ConversionRate)
  3032. 10.50 s [really-safe-money] convert r qf1 a cr qf2 =
  3033. 10.50 s [really-safe-money] let (ma, mr) = Amount.convert r qf1 (abs a) cr qf2
  3034. 10.50 s [really-safe-money] - in case a of
  3035. 10.50 s [really-safe-money] - Positive _ -> (Positive <$> ma, mr)
  3036. 10.50 s [really-safe-money] - Negative _ -> (Negative <$> ma, mr)
  3037. 10.50 s [really-safe-money] + in case a of
  3038. 10.50 s [really-safe-money] + Positive _ -> (Positive <$> ma, mr)
  3039. 10.50 s [really-safe-money] + Negative _ -> (Negative <$> ma, mr)
  3040. 10.50 s [really-safe-money]
  3041. 10.50 s [really-safe-money] -- | Format an account of money without a symbol.
  3042. 10.50 s [really-safe-money] --
  3043. 10.50 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:591:7-44
  3044. 10.50 s [really-safe-money] @@ -588,9 +588,9 @@
  3045. 10.50 s [really-safe-money] (Maybe Account, Maybe ConversionRate)
  3046. 10.50 s [really-safe-money] convert r qf1 a cr qf2 =
  3047. 10.50 s [really-safe-money] let (ma, mr) = Amount.convert r qf1 (abs a) cr qf2
  3048. 10.50 s [really-safe-money] - in case a of
  3049. 10.50 s [really-safe-money] - Positive _ -> (Positive <$> ma, mr)
  3050. 10.50 s [really-safe-money] - Negative _ -> (Negative <$> ma, mr)
  3051. 10.50 s [really-safe-money] + in case a of
  3052. 10.50 s [really-safe-money] + Positive _ -> (Positive <$> ma, mr)
  3053. 10.50 s [really-safe-money] + Negative _ -> (Negative <$> ma, mr)
  3054. 10.50 s [really-safe-money]
  3055. 10.50 s [really-safe-money] -- | Format an account of money without a symbol.
  3056. 10.50 s [really-safe-money] --
  3057. 10.50 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:421:32-33
  3058. 10.50 s [really-safe-money] @@ -418,7 +418,7 @@
  3059. 10.50 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  3060. 10.50 s [really-safe-money] multiply factor account =
  3061. 10.50 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  3062. 10.50 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  3063. 10.50 s [really-safe-money] + f = case (compare factor 1, compare account zero) of
  3064. 10.50 s [really-safe-money] (EQ, _) -> const zero
  3065. 10.50 s [really-safe-money] (_, EQ) -> const zero
  3066. 10.50 s [really-safe-money] (GT, GT) -> Positive
  3067. 10.50 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  3068. 10.50 s [really-safe-money] @@ -418,13 +418,13 @@
  3069. 10.50 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  3070. 10.50 s [really-safe-money] multiply factor account =
  3071. 10.50 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  3072. 10.50 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  3073. 10.50 s [really-safe-money] - (EQ, _) -> const zero
  3074. 10.50 s [really-safe-money] - (_, EQ) -> const zero
  3075. 10.50 s [really-safe-money] - (GT, GT) -> Positive
  3076. 10.50 s [really-safe-money] - (GT, LT) -> Negative
  3077. 10.50 s [really-safe-money] - (LT, GT) -> Negative
  3078. 10.50 s [really-safe-money] - (LT, LT) -> Positive
  3079. 10.50 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  3080. 10.50 s [really-safe-money] + (EQ, _) -> const zero
  3081. 10.50 s [really-safe-money] + (_, EQ) -> const zero
  3082. 10.50 s [really-safe-money] + (GT, GT) -> Positive
  3083. 10.50 s [really-safe-money] + (GT, LT) -> Negative
  3084. 10.50 s [really-safe-money] + (LT, GT) -> Negative
  3085. 10.50 s [really-safe-money] + (LT, LT) -> Positive
  3086. 10.50 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  3087. 10.50 s [really-safe-money]
  3088. 10.50 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  3089. 10.50 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  3090. 10.50 s [really-safe-money] @@ -418,13 +418,13 @@
  3091. 10.50 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  3092. 10.50 s [really-safe-money] multiply factor account =
  3093. 10.50 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  3094. 10.50 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  3095. 10.50 s [really-safe-money] - (EQ, _) -> const zero
  3096. 10.50 s [really-safe-money] - (_, EQ) -> const zero
  3097. 10.50 s [really-safe-money] - (GT, GT) -> Positive
  3098. 10.50 s [really-safe-money] - (GT, LT) -> Negative
  3099. 10.50 s [really-safe-money] - (LT, GT) -> Negative
  3100. 10.50 s [really-safe-money] - (LT, LT) -> Positive
  3101. 10.50 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  3102. 10.50 s [really-safe-money] + (EQ, _) -> const zero
  3103. 10.50 s [really-safe-money] + (_, EQ) -> const zero
  3104. 10.50 s [really-safe-money] + (GT, GT) -> Positive
  3105. 10.50 s [really-safe-money] + (GT, LT) -> Negative
  3106. 10.50 s [really-safe-money] + (LT, GT) -> Negative
  3107. 10.50 s [really-safe-money] + (LT, LT) -> Positive
  3108. 10.50 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  3109. 10.50 s [really-safe-money]
  3110. 10.50 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  3111. 10.50 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  3112. 10.50 s [really-safe-money] @@ -418,13 +418,13 @@
  3113. 10.50 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  3114. 10.50 s [really-safe-money] multiply factor account =
  3115. 10.50 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  3116. 10.50 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  3117. 10.50 s [really-safe-money] - (EQ, _) -> const zero
  3118. 10.50 s [really-safe-money] - (_, EQ) -> const zero
  3119. 10.50 s [really-safe-money] - (GT, GT) -> Positive
  3120. 10.50 s [really-safe-money] - (GT, LT) -> Negative
  3121. 10.50 s [really-safe-money] - (LT, GT) -> Negative
  3122. 10.50 s [really-safe-money] - (LT, LT) -> Positive
  3123. 10.50 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  3124. 10.50 s [really-safe-money] + (EQ, _) -> const zero
  3125. 10.50 s [really-safe-money] + (_, EQ) -> const zero
  3126. 10.50 s [really-safe-money] + (GT, GT) -> Positive
  3127. 10.50 s [really-safe-money] + (GT, LT) -> Negative
  3128. 10.50 s [really-safe-money] + (LT, GT) -> Negative
  3129. 10.50 s [really-safe-money] + (LT, LT) -> Positive
  3130. 10.50 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  3131. 10.50 s [really-safe-money]
  3132. 10.50 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  3133. 10.50 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  3134. 10.50 s [really-safe-money] @@ -418,13 +418,13 @@
  3135. 10.50 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  3136. 10.50 s [really-safe-money] multiply factor account =
  3137. 10.50 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  3138. 10.50 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  3139. 10.50 s [really-safe-money] - (EQ, _) -> const zero
  3140. 10.50 s [really-safe-money] - (_, EQ) -> const zero
  3141. 10.50 s [really-safe-money] - (GT, GT) -> Positive
  3142. 10.50 s [really-safe-money] - (GT, LT) -> Negative
  3143. 10.50 s [really-safe-money] - (LT, GT) -> Negative
  3144. 10.50 s [really-safe-money] - (LT, LT) -> Positive
  3145. 10.50 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  3146. 10.50 s [really-safe-money] + (EQ, _) -> const zero
  3147. 10.50 s [really-safe-money] + (_, EQ) -> const zero
  3148. 10.50 s [really-safe-money] + (GT, GT) -> Positive
  3149. 10.50 s [really-safe-money] + (GT, LT) -> Negative
  3150. 10.50 s [really-safe-money] + (LT, GT) -> Negative
  3151. 10.50 s [really-safe-money] + (LT, LT) -> Positive
  3152. 10.50 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  3153. 10.50 s [really-safe-money]
  3154. 10.50 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  3155. 10.50 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  3156. 10.50 s [really-safe-money] @@ -418,13 +418,13 @@
  3157. 10.50 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  3158. 10.50 s [really-safe-money] multiply factor account =
  3159. 10.50 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  3160. 10.50 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  3161. 10.50 s [really-safe-money] - (EQ, _) -> const zero
  3162. 10.50 s [really-safe-money] - (_, EQ) -> const zero
  3163. 10.50 s [really-safe-money] - (GT, GT) -> Positive
  3164. 10.50 s [really-safe-money] - (GT, LT) -> Negative
  3165. 10.50 s [really-safe-money] - (LT, GT) -> Negative
  3166. 10.50 s [really-safe-money] - (LT, LT) -> Positive
  3167. 10.50 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  3168. 10.50 s [really-safe-money] + (EQ, _) -> const zero
  3169. 10.50 s [really-safe-money] + (_, EQ) -> const zero
  3170. 10.50 s [really-safe-money] + (GT, GT) -> Positive
  3171. 10.50 s [really-safe-money] + (GT, LT) -> Negative
  3172. 10.50 s [really-safe-money] + (LT, GT) -> Negative
  3173. 10.50 s [really-safe-money] + (LT, LT) -> Positive
  3174. 10.50 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  3175. 10.50 s [really-safe-money]
  3176. 10.50 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  3177. 10.50 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  3178. 10.50 s [really-safe-money] @@ -418,13 +418,13 @@
  3179. 10.50 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  3180. 10.50 s [really-safe-money] multiply factor account =
  3181. 10.50 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  3182. 10.50 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  3183. 10.50 s [really-safe-money] - (EQ, _) -> const zero
  3184. 10.50 s [really-safe-money] - (_, EQ) -> const zero
  3185. 10.50 s [really-safe-money] - (GT, GT) -> Positive
  3186. 10.50 s [really-safe-money] - (GT, LT) -> Negative
  3187. 10.50 s [really-safe-money] - (LT, GT) -> Negative
  3188. 10.50 s [really-safe-money] - (LT, LT) -> Positive
  3189. 10.50 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  3190. 10.51 s [really-safe-money] + (EQ, _) -> const zero
  3191. 10.51 s [really-safe-money] + (_, EQ) -> const zero
  3192. 10.51 s [really-safe-money] + (GT, GT) -> Positive
  3193. 10.51 s [really-safe-money] + (GT, LT) -> Negative
  3194. 10.51 s [really-safe-money] + (LT, GT) -> Negative
  3195. 10.51 s [really-safe-money] + (LT, LT) -> Positive
  3196. 10.51 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  3197. 10.51 s [really-safe-money]
  3198. 10.51 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  3199. 10.51 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:451:14-23
  3200. 10.51 s [really-safe-money] @@ -448,7 +448,7 @@
  3201. 10.51 s [really-safe-money] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3202. 10.51 s [really-safe-money] DistributedZero -> DistributedZero
  3203. 10.51 s [really-safe-money] DistributedIntoEqualChunks numberOfChunks chunk ->
  3204. 10.51 s [really-safe-money] - if a >= zero
  3205. 10.51 s [really-safe-money] + if True
  3206. 10.51 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3207. 10.51 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3208. 10.51 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3209. 10.51 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:451:14-23
  3210. 10.51 s [really-safe-money] @@ -448,7 +448,7 @@
  3211. 10.51 s [really-safe-money] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3212. 10.51 s [really-safe-money] DistributedZero -> DistributedZero
  3213. 10.51 s [really-safe-money] DistributedIntoEqualChunks numberOfChunks chunk ->
  3214. 10.51 s [really-safe-money] - if a >= zero
  3215. 10.51 s [really-safe-money] + if False
  3216. 10.51 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3217. 10.51 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3218. 10.51 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3219. 10.51 s [really-safe-money] added mutation Negate at src/Money/Account.hs:451:14-23
  3220. 10.51 s [really-safe-money] @@ -448,7 +448,7 @@
  3221. 10.51 s [really-safe-money] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3222. 10.51 s [really-safe-money] DistributedZero -> DistributedZero
  3223. 10.51 s [really-safe-money] DistributedIntoEqualChunks numberOfChunks chunk ->
  3224. 10.51 s [really-safe-money] - if a >= zero
  3225. 10.51 s [really-safe-money] + if not (a >= zero)
  3226. 10.51 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3227. 10.51 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3228. 10.51 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3229. 10.51 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:451:11-76
  3230. 10.51 s [really-safe-money] @@ -448,9 +448,9 @@
  3231. 10.51 s [really-safe-money] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3232. 10.51 s [really-safe-money] DistributedZero -> DistributedZero
  3233. 10.51 s [really-safe-money] DistributedIntoEqualChunks numberOfChunks chunk ->
  3234. 10.51 s [really-safe-money] - if a >= zero
  3235. 10.51 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3236. 10.51 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3237. 10.51 s [really-safe-money] + if a >= zero
  3238. 10.51 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3239. 10.51 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3240. 10.51 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3241. 10.51 s [really-safe-money] if a >= zero
  3242. 10.51 s [really-safe-money] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3243. 10.51 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:455:14-23
  3244. 10.51 s [really-safe-money] @@ -452,7 +452,7 @@
  3245. 10.51 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3246. 10.51 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3247. 10.51 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3248. 10.51 s [really-safe-money] - if a >= zero
  3249. 10.51 s [really-safe-money] + if True
  3250. 10.51 s [really-safe-money] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3251. 10.51 s [really-safe-money] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3252. 10.51 s [really-safe-money]
  3253. 10.51 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:455:14-23
  3254. 10.51 s [really-safe-money] @@ -452,7 +452,7 @@
  3255. 10.51 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3256. 10.51 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3257. 10.51 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3258. 10.51 s [really-safe-money] - if a >= zero
  3259. 10.51 s [really-safe-money] + if False
  3260. 10.51 s [really-safe-money] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3261. 10.51 s [really-safe-money] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3262. 10.51 s [really-safe-money]
  3263. 10.51 s [really-safe-money] added mutation Negate at src/Money/Account.hs:455:14-23
  3264. 10.51 s [really-safe-money] @@ -452,7 +452,7 @@
  3265. 10.51 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3266. 10.51 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3267. 10.51 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3268. 10.51 s [really-safe-money] - if a >= zero
  3269. 10.51 s [really-safe-money] + if not (a >= zero)
  3270. 10.51 s [really-safe-money] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3271. 10.51 s [really-safe-money] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3272. 10.51 s [really-safe-money]
  3273. 10.51 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:455:11-136
  3274. 10.51 s [really-safe-money] @@ -452,9 +452,9 @@
  3275. 10.51 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3276. 10.51 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3277. 10.51 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3278. 10.51 s [really-safe-money] - if a >= zero
  3279. 10.51 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3280. 10.51 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3281. 10.51 s [really-safe-money] + if a >= zero
  3282. 10.51 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3283. 10.51 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3284. 10.51 s [really-safe-money]
  3285. 10.51 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  3286. 10.51 s [really-safe-money]
  3287. 10.51 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:447:7-136
  3288. 10.51 s [really-safe-money] @@ -444,17 +444,17 @@
  3289. 10.51 s [really-safe-money] distribute a f =
  3290. 10.51 s [really-safe-money] let aa = abs a
  3291. 10.51 s [really-safe-money] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  3292. 10.51 s [really-safe-money] - in case Amount.distribute aa af of
  3293. 10.51 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3294. 10.51 s [really-safe-money] - DistributedZero -> DistributedZero
  3295. 10.51 s [really-safe-money] - DistributedIntoEqualChunks numberOfChunks chunk ->
  3296. 10.51 s [really-safe-money] - if a >= zero
  3297. 10.51 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3298. 10.51 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3299. 10.51 s [really-safe-money] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3300. 10.51 s [really-safe-money] - if a >= zero
  3301. 10.51 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3302. 10.51 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3303. 10.51 s [really-safe-money] + in case Amount.distribute aa af of
  3304. 10.51 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3305. 10.51 s [really-safe-money] + DistributedZero -> DistributedZero
  3306. 10.51 s [really-safe-money] + DistributedIntoEqualChunks numberOfChunks chunk ->
  3307. 10.51 s [really-safe-money] + if a >= zero
  3308. 10.51 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3309. 10.51 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3310. 10.51 s [really-safe-money] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3311. 10.51 s [really-safe-money] + if a >= zero
  3312. 10.51 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3313. 10.51 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3314. 10.51 s [really-safe-money]
  3315. 10.51 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  3316. 10.51 s [really-safe-money]
  3317. 10.51 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:447:7-136
  3318. 10.51 s [really-safe-money] @@ -444,17 +444,17 @@
  3319. 10.51 s [really-safe-money] distribute a f =
  3320. 10.51 s [really-safe-money] let aa = abs a
  3321. 10.51 s [really-safe-money] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  3322. 10.51 s [really-safe-money] - in case Amount.distribute aa af of
  3323. 10.51 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3324. 10.51 s [really-safe-money] - DistributedZero -> DistributedZero
  3325. 10.51 s [really-safe-money] - DistributedIntoEqualChunks numberOfChunks chunk ->
  3326. 10.51 s [really-safe-money] - if a >= zero
  3327. 10.51 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3328. 10.51 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3329. 10.51 s [really-safe-money] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3330. 10.51 s [really-safe-money] - if a >= zero
  3331. 10.51 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3332. 10.51 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3333. 10.51 s [really-safe-money] + in case Amount.distribute aa af of
  3334. 10.51 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3335. 10.51 s [really-safe-money] + DistributedZero -> DistributedZero
  3336. 10.51 s [really-safe-money] + DistributedIntoEqualChunks numberOfChunks chunk ->
  3337. 10.51 s [really-safe-money] + if a >= zero
  3338. 10.51 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3339. 10.51 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3340. 10.51 s [really-safe-money] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3341. 10.51 s [really-safe-money] + if a >= zero
  3342. 10.51 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3343. 10.51 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3344. 10.51 s [really-safe-money]
  3345. 10.51 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  3346. 10.51 s [really-safe-money]
  3347. 10.51 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:447:7-136
  3348. 10.51 s [really-safe-money] @@ -444,17 +444,17 @@
  3349. 10.51 s [really-safe-money] distribute a f =
  3350. 10.51 s [really-safe-money] let aa = abs a
  3351. 10.51 s [really-safe-money] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  3352. 10.51 s [really-safe-money] - in case Amount.distribute aa af of
  3353. 10.51 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3354. 10.51 s [really-safe-money] - DistributedZero -> DistributedZero
  3355. 10.51 s [really-safe-money] - DistributedIntoEqualChunks numberOfChunks chunk ->
  3356. 10.51 s [really-safe-money] - if a >= zero
  3357. 10.51 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3358. 10.51 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3359. 10.51 s [really-safe-money] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3360. 10.51 s [really-safe-money] - if a >= zero
  3361. 10.51 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3362. 10.51 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3363. 10.51 s [really-safe-money] + in case Amount.distribute aa af of
  3364. 10.51 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3365. 10.51 s [really-safe-money] + DistributedZero -> DistributedZero
  3366. 10.51 s [really-safe-money] + DistributedIntoEqualChunks numberOfChunks chunk ->
  3367. 10.51 s [really-safe-money] + if a >= zero
  3368. 10.51 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3369. 10.51 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3370. 10.51 s [really-safe-money] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3371. 10.51 s [really-safe-money] + if a >= zero
  3372. 10.51 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3373. 10.51 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3374. 10.51 s [really-safe-money]
  3375. 10.51 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  3376. 10.51 s [really-safe-money]
  3377. 10.51 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:447:7-136
  3378. 10.51 s [really-safe-money] @@ -444,17 +444,17 @@
  3379. 10.51 s [really-safe-money] distribute a f =
  3380. 10.51 s [really-safe-money] let aa = abs a
  3381. 10.51 s [really-safe-money] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  3382. 10.51 s [really-safe-money] - in case Amount.distribute aa af of
  3383. 10.51 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3384. 10.51 s [really-safe-money] - DistributedZero -> DistributedZero
  3385. 10.51 s [really-safe-money] - DistributedIntoEqualChunks numberOfChunks chunk ->
  3386. 10.51 s [really-safe-money] - if a >= zero
  3387. 10.51 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3388. 10.51 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3389. 10.51 s [really-safe-money] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3390. 10.51 s [really-safe-money] - if a >= zero
  3391. 10.51 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3392. 10.51 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3393. 10.51 s [really-safe-money] + in case Amount.distribute aa af of
  3394. 10.51 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3395. 10.51 s [really-safe-money] + DistributedZero -> DistributedZero
  3396. 10.51 s [really-safe-money] + DistributedIntoEqualChunks numberOfChunks chunk ->
  3397. 10.51 s [really-safe-money] + if a >= zero
  3398. 10.51 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3399. 10.51 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3400. 10.51 s [really-safe-money] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3401. 10.51 s [really-safe-money] + if a >= zero
  3402. 10.51 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3403. 10.51 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3404. 10.51 s [really-safe-money]
  3405. 10.51 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  3406. 10.51 s [really-safe-money]
  3407. 10.51 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:522:19-35
  3408. 10.51 s [really-safe-money] @@ -519,10 +519,10 @@
  3409. 10.51 s [really-safe-money] let aa = abs account
  3410. 10.51 s [really-safe-money] (amount, actualFraction) = Amount.fraction ro aa af
  3411. 10.51 s [really-safe-money] func :: Maybe Amount -> Ratio Natural -> (Maybe Account, Ratio Natural)
  3412. 10.51 s [really-safe-money] - func ma r = case compare account zero of
  3413. 10.51 s [really-safe-money] - EQ -> (Just zero, r)
  3414. 10.51 s [really-safe-money] - GT -> (Positive <$> ma, r)
  3415. 10.51 s [really-safe-money] - LT -> (Negative <$> ma, r)
  3416. 10.51 s [really-safe-money] + func ma r = case compare account zero of
  3417. 10.51 s [really-safe-money] + EQ -> (Just zero, r)
  3418. 10.51 s [really-safe-money] + GT -> (Positive <$> ma, r)
  3419. 10.51 s [really-safe-money] + LT -> (Negative <$> ma, r)
  3420. 10.52 s [really-safe-money] in func amount actualFraction
  3421. 10.52 s [really-safe-money]
  3422. 10.52 s [really-safe-money] -- | Compute the currency conversion rate between two accounts of money of
  3423. 10.52 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:522:19-35
  3424. 10.52 s [really-safe-money] @@ -519,10 +519,10 @@
  3425. 10.52 s [really-safe-money] let aa = abs account
  3426. 10.52 s [really-safe-money] (amount, actualFraction) = Amount.fraction ro aa af
  3427. 10.52 s [really-safe-money] func :: Maybe Amount -> Ratio Natural -> (Maybe Account, Ratio Natural)
  3428. 10.52 s [really-safe-money] - func ma r = case compare account zero of
  3429. 10.52 s [really-safe-money] - EQ -> (Just zero, r)
  3430. 10.52 s [really-safe-money] - GT -> (Positive <$> ma, r)
  3431. 10.52 s [really-safe-money] - LT -> (Negative <$> ma, r)
  3432. 10.52 s [really-safe-money] + func ma r = case compare account zero of
  3433. 10.52 s [really-safe-money] + EQ -> (Just zero, r)
  3434. 10.52 s [really-safe-money] + GT -> (Positive <$> ma, r)
  3435. 10.52 s [really-safe-money] + LT -> (Negative <$> ma, r)
  3436. 10.52 s [really-safe-money] in func amount actualFraction
  3437. 10.52 s [really-safe-money]
  3438. 10.52 s [really-safe-money] -- | Compute the currency conversion rate between two accounts of money of
  3439. 10.52 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:522:19-35
  3440. 10.52 s [really-safe-money] @@ -519,10 +519,10 @@
  3441. 10.52 s [really-safe-money] let aa = abs account
  3442. 10.52 s [really-safe-money] (amount, actualFraction) = Amount.fraction ro aa af
  3443. 10.52 s [really-safe-money] func :: Maybe Amount -> Ratio Natural -> (Maybe Account, Ratio Natural)
  3444. 10.52 s [really-safe-money] - func ma r = case compare account zero of
  3445. 10.52 s [really-safe-money] - EQ -> (Just zero, r)
  3446. 10.52 s [really-safe-money] - GT -> (Positive <$> ma, r)
  3447. 10.52 s [really-safe-money] - LT -> (Negative <$> ma, r)
  3448. 10.52 s [really-safe-money] + func ma r = case compare account zero of
  3449. 10.52 s [really-safe-money] + EQ -> (Just zero, r)
  3450. 10.52 s [really-safe-money] + GT -> (Positive <$> ma, r)
  3451. 10.52 s [really-safe-money] + LT -> (Negative <$> ma, r)
  3452. 10.52 s [really-safe-money] in func amount actualFraction
  3453. 10.52 s [really-safe-money]
  3454. 10.52 s [really-safe-money] -- | Compute the currency conversion rate between two accounts of money of
  3455. 10.52 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:495:17-18
  3456. 10.52 s [really-safe-money] @@ -492,7 +492,7 @@
  3457. 10.52 s [really-safe-money] fraction rounding account f =
  3458. 10.52 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  3459. 10.52 s [really-safe-money] ro =
  3460. 10.52 s [really-safe-money] - if f >= 0
  3461. 10.52 s [really-safe-money] + if f >= 1
  3462. 10.52 s [really-safe-money] then rounding
  3463. 10.52 s [really-safe-money] else case rounding of
  3464. 10.52 s [really-safe-money] RoundUp -> RoundDown
  3465. 10.52 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:495:12-18
  3466. 10.52 s [really-safe-money] @@ -492,7 +492,7 @@
  3467. 10.52 s [really-safe-money] fraction rounding account f =
  3468. 10.52 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  3469. 10.52 s [really-safe-money] ro =
  3470. 10.52 s [really-safe-money] - if f >= 0
  3471. 10.52 s [really-safe-money] + if True
  3472. 10.52 s [really-safe-money] then rounding
  3473. 10.52 s [really-safe-money] else case rounding of
  3474. 10.52 s [really-safe-money] RoundUp -> RoundDown
  3475. 10.52 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:495:12-18
  3476. 10.52 s [really-safe-money] @@ -492,7 +492,7 @@
  3477. 10.52 s [really-safe-money] fraction rounding account f =
  3478. 10.52 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  3479. 10.52 s [really-safe-money] ro =
  3480. 10.52 s [really-safe-money] - if f >= 0
  3481. 10.52 s [really-safe-money] + if False
  3482. 10.52 s [really-safe-money] then rounding
  3483. 10.52 s [really-safe-money] else case rounding of
  3484. 10.52 s [really-safe-money] RoundUp -> RoundDown
  3485. 10.52 s [really-safe-money] added mutation Negate at src/Money/Account.hs:495:12-18
  3486. 10.52 s [really-safe-money] @@ -492,7 +492,7 @@
  3487. 10.52 s [really-safe-money] fraction rounding account f =
  3488. 10.52 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  3489. 10.52 s [really-safe-money] ro =
  3490. 10.52 s [really-safe-money] - if f >= 0
  3491. 10.52 s [really-safe-money] + if not (f >= 0)
  3492. 10.52 s [really-safe-money] then rounding
  3493. 10.52 s [really-safe-money] else case rounding of
  3494. 10.52 s [really-safe-money] RoundUp -> RoundDown
  3495. 10.52 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:497:16-41
  3496. 10.52 s [really-safe-money] @@ -494,10 +494,10 @@
  3497. 10.52 s [really-safe-money] ro =
  3498. 10.52 s [really-safe-money] if f >= 0
  3499. 10.52 s [really-safe-money] then rounding
  3500. 10.52 s [really-safe-money] - else case rounding of
  3501. 10.52 s [really-safe-money] - RoundUp -> RoundDown
  3502. 10.52 s [really-safe-money] - RoundDown -> RoundUp
  3503. 10.52 s [really-safe-money] - RoundNearest -> RoundNearest
  3504. 10.52 s [really-safe-money] + else case rounding of
  3505. 10.52 s [really-safe-money] + RoundUp -> RoundDown
  3506. 10.52 s [really-safe-money] + RoundDown -> RoundUp
  3507. 10.52 s [really-safe-money] + RoundNearest -> RoundNearest
  3508. 10.52 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  3509. 10.52 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  3510. 10.52 s [really-safe-money] in if f >= 0
  3511. 10.52 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:497:16-41
  3512. 10.52 s [really-safe-money] @@ -494,10 +494,10 @@
  3513. 10.52 s [really-safe-money] ro =
  3514. 10.52 s [really-safe-money] if f >= 0
  3515. 10.52 s [really-safe-money] then rounding
  3516. 10.52 s [really-safe-money] - else case rounding of
  3517. 10.52 s [really-safe-money] - RoundUp -> RoundDown
  3518. 10.52 s [really-safe-money] - RoundDown -> RoundUp
  3519. 10.52 s [really-safe-money] - RoundNearest -> RoundNearest
  3520. 10.52 s [really-safe-money] + else case rounding of
  3521. 10.52 s [really-safe-money] + RoundUp -> RoundDown
  3522. 10.52 s [really-safe-money] + RoundDown -> RoundUp
  3523. 10.52 s [really-safe-money] + RoundNearest -> RoundNearest
  3524. 10.52 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  3525. 10.52 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  3526. 10.52 s [really-safe-money] in if f >= 0
  3527. 10.52 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:497:16-41
  3528. 10.52 s [really-safe-money] @@ -494,10 +494,10 @@
  3529. 10.52 s [really-safe-money] ro =
  3530. 10.52 s [really-safe-money] if f >= 0
  3531. 10.52 s [really-safe-money] then rounding
  3532. 10.52 s [really-safe-money] - else case rounding of
  3533. 10.52 s [really-safe-money] - RoundUp -> RoundDown
  3534. 10.52 s [really-safe-money] - RoundDown -> RoundUp
  3535. 10.52 s [really-safe-money] - RoundNearest -> RoundNearest
  3536. 10.52 s [really-safe-money] + else case rounding of
  3537. 10.52 s [really-safe-money] + RoundUp -> RoundDown
  3538. 10.52 s [really-safe-money] + RoundDown -> RoundUp
  3539. 10.52 s [really-safe-money] + RoundNearest -> RoundNearest
  3540. 10.52 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  3541. 10.52 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  3542. 10.52 s [really-safe-money] in if f >= 0
  3543. 10.52 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:495:9-41
  3544. 10.52 s [really-safe-money] @@ -492,12 +492,12 @@
  3545. 10.52 s [really-safe-money] fraction rounding account f =
  3546. 10.52 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  3547. 10.52 s [really-safe-money] ro =
  3548. 10.52 s [really-safe-money] - if f >= 0
  3549. 10.52 s [really-safe-money] - then rounding
  3550. 10.52 s [really-safe-money] - else case rounding of
  3551. 10.52 s [really-safe-money] - RoundUp -> RoundDown
  3552. 10.52 s [really-safe-money] - RoundDown -> RoundUp
  3553. 10.52 s [really-safe-money] - RoundNearest -> RoundNearest
  3554. 10.52 s [really-safe-money] + if f >= 0
  3555. 10.52 s [really-safe-money] + then rounding
  3556. 10.52 s [really-safe-money] + else case rounding of
  3557. 10.52 s [really-safe-money] + RoundUp -> RoundDown
  3558. 10.52 s [really-safe-money] + RoundDown -> RoundUp
  3559. 10.52 s [really-safe-money] + RoundNearest -> RoundNearest
  3560. 10.52 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  3561. 10.52 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  3562. 10.52 s [really-safe-money] in if f >= 0
  3563. 10.52 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:503:15-16
  3564. 10.52 s [really-safe-money] @@ -500,7 +500,7 @@
  3565. 10.52 s [really-safe-money] RoundNearest -> RoundNearest
  3566. 10.52 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  3567. 10.52 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  3568. 10.52 s [really-safe-money] - in if f >= 0
  3569. 10.52 s [really-safe-money] + in if f >= 1
  3570. 10.52 s [really-safe-money] then (ma, r)
  3571. 10.52 s [really-safe-money] else (negate <$> ma, -r)
  3572. 10.52 s [really-safe-money]
  3573. 10.52 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:503:10-16
  3574. 10.52 s [really-safe-money] @@ -500,7 +500,7 @@
  3575. 10.52 s [really-safe-money] RoundNearest -> RoundNearest
  3576. 10.52 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  3577. 10.52 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  3578. 10.52 s [really-safe-money] - in if f >= 0
  3579. 10.52 s [really-safe-money] + in if True
  3580. 10.52 s [really-safe-money] then (ma, r)
  3581. 10.52 s [really-safe-money] else (negate <$> ma, -r)
  3582. 10.52 s [really-safe-money]
  3583. 10.52 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:503:10-16
  3584. 10.52 s [really-safe-money] @@ -500,7 +500,7 @@
  3585. 10.52 s [really-safe-money] RoundNearest -> RoundNearest
  3586. 10.52 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  3587. 10.52 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  3588. 10.52 s [really-safe-money] - in if f >= 0
  3589. 10.52 s [really-safe-money] + in if False
  3590. 10.52 s [really-safe-money] then (ma, r)
  3591. 10.52 s [really-safe-money] else (negate <$> ma, -r)
  3592. 10.52 s [really-safe-money]
  3593. 10.52 s [really-safe-money] added mutation Negate at src/Money/Account.hs:503:10-16
  3594. 10.52 s [really-safe-money] @@ -500,7 +500,7 @@
  3595. 10.52 s [really-safe-money] RoundNearest -> RoundNearest
  3596. 10.52 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  3597. 10.52 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  3598. 10.52 s [really-safe-money] - in if f >= 0
  3599. 10.52 s [really-safe-money] + in if not (f >= 0)
  3600. 10.52 s [really-safe-money] then (ma, r)
  3601. 10.52 s [really-safe-money] else (negate <$> ma, -r)
  3602. 10.52 s [really-safe-money]
  3603. 10.52 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:503:7-33
  3604. 10.52 s [really-safe-money] @@ -500,9 +500,9 @@
  3605. 10.52 s [really-safe-money] RoundNearest -> RoundNearest
  3606. 10.52 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  3607. 10.52 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  3608. 10.52 s [really-safe-money] - in if f >= 0
  3609. 10.52 s [really-safe-money] - then (ma, r)
  3610. 10.52 s [really-safe-money] - else (negate <$> ma, -r)
  3611. 10.52 s [really-safe-money] + in if f >= 0
  3612. 10.52 s [really-safe-money] + then (ma, r)
  3613. 10.52 s [really-safe-money] + else (negate <$> ma, -r)
  3614. 10.52 s [really-safe-money]
  3615. 10.52 s [really-safe-money] -- | Fractional multiplication with a positive fraction, see 'Amount.fraction' and 'Account.fraction'.
  3616. 10.52 s [really-safe-money] --
  3617. 10.52 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:233:19-20
  3618. 10.52 s [really-safe-money] @@ -230,7 +230,7 @@
  3619. 10.52 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  3620. 10.52 s [really-safe-money] fromRational quantisationFactor r =
  3621. 10.52 s [really-safe-money] let r' = Prelude.abs r
  3622. 10.52 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  3623. 10.52 s [really-safe-money] + f = if r >= 1 then Positive else Negative
  3624. 10.52 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  3625. 10.52 s [really-safe-money]
  3626. 10.52 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  3627. 10.52 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:233:14-20
  3628. 10.52 s [really-safe-money] @@ -230,7 +230,7 @@
  3629. 10.52 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  3630. 10.52 s [really-safe-money] fromRational quantisationFactor r =
  3631. 10.52 s [really-safe-money] let r' = Prelude.abs r
  3632. 10.52 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  3633. 10.52 s [really-safe-money] + f = if True then Positive else Negative
  3634. 10.52 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  3635. 10.52 s [really-safe-money]
  3636. 10.52 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  3637. 10.52 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:233:14-20
  3638. 10.52 s [really-safe-money] @@ -230,7 +230,7 @@
  3639. 10.52 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  3640. 10.52 s [really-safe-money] fromRational quantisationFactor r =
  3641. 10.52 s [really-safe-money] let r' = Prelude.abs r
  3642. 10.52 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  3643. 10.52 s [really-safe-money] + f = if False then Positive else Negative
  3644. 10.52 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  3645. 10.52 s [really-safe-money]
  3646. 10.52 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  3647. 10.52 s [really-safe-money] added mutation Negate at src/Money/Account.hs:233:14-20
  3648. 10.52 s [really-safe-money] @@ -230,7 +230,7 @@
  3649. 10.52 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  3650. 10.52 s [really-safe-money] fromRational quantisationFactor r =
  3651. 10.52 s [really-safe-money] let r' = Prelude.abs r
  3652. 10.52 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  3653. 10.52 s [really-safe-money] + f = if not (r >= 0) then Positive else Negative
  3654. 10.52 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  3655. 10.52 s [really-safe-money]
  3656. 10.52 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  3657. 10.52 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:233:11-48
  3658. 10.52 s [really-safe-money] @@ -230,7 +230,7 @@
  3659. 10.52 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  3660. 10.52 s [really-safe-money] fromRational quantisationFactor r =
  3661. 10.52 s [really-safe-money] let r' = Prelude.abs r
  3662. 10.52 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  3663. 10.52 s [really-safe-money] + f = if r >= 0 then Positive else Negative
  3664. 10.52 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  3665. 10.52 s [really-safe-money]
  3666. 10.52 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  3667. 10.52 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:211:11-37
  3668. 10.52 s [really-safe-money] @@ -208,9 +208,9 @@
  3669. 10.52 s [really-safe-money] -- (-3) % 20
  3670. 10.52 s [really-safe-money] toRational :: QuantisationFactor -> Account -> Rational
  3671. 10.52 s [really-safe-money] toRational quantisationFactor account =
  3672. 10.52 s [really-safe-money] - let f = case account of
  3673. 10.52 s [really-safe-money] - Positive _ -> id
  3674. 10.52 s [really-safe-money] - Negative _ -> Prelude.negate
  3675. 10.52 s [really-safe-money] + let f = case account of
  3676. 10.52 s [really-safe-money] + Positive _ -> id
  3677. 10.52 s [really-safe-money] + Negative _ -> Prelude.negate
  3678. 10.52 s [really-safe-money] in f $ Amount.toRational quantisationFactor (abs account)
  3679. 10.53 s [really-safe-money]
  3680. 10.53 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  3681. 10.53 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:211:11-37
  3682. 10.53 s [really-safe-money] @@ -208,9 +208,9 @@
  3683. 10.53 s [really-safe-money] -- (-3) % 20
  3684. 10.53 s [really-safe-money] toRational :: QuantisationFactor -> Account -> Rational
  3685. 10.53 s [really-safe-money] toRational quantisationFactor account =
  3686. 10.53 s [really-safe-money] - let f = case account of
  3687. 10.53 s [really-safe-money] - Positive _ -> id
  3688. 10.53 s [really-safe-money] - Negative _ -> Prelude.negate
  3689. 10.53 s [really-safe-money] + let f = case account of
  3690. 10.53 s [really-safe-money] + Positive _ -> id
  3691. 10.53 s [really-safe-money] + Negative _ -> Prelude.negate
  3692. 10.53 s [really-safe-money] in f $ Amount.toRational quantisationFactor (abs account)
  3693. 10.53 s [really-safe-money]
  3694. 10.53 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  3695. 10.53 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:197:19-20
  3696. 10.53 s [really-safe-money] @@ -194,7 +194,7 @@
  3697. 10.53 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  3698. 10.53 s [really-safe-money] fromDouble quantisationFactor d =
  3699. 10.53 s [really-safe-money] let d' = Prelude.abs d
  3700. 10.53 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  3701. 10.53 s [really-safe-money] + f = if d >= 1 then Positive else Negative
  3702. 10.53 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  3703. 10.53 s [really-safe-money]
  3704. 10.53 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  3705. 10.53 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:197:14-20
  3706. 10.53 s [really-safe-money] @@ -194,7 +194,7 @@
  3707. 10.53 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  3708. 10.53 s [really-safe-money] fromDouble quantisationFactor d =
  3709. 10.53 s [really-safe-money] let d' = Prelude.abs d
  3710. 10.53 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  3711. 10.53 s [really-safe-money] + f = if True then Positive else Negative
  3712. 10.53 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  3713. 10.53 s [really-safe-money]
  3714. 10.53 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  3715. 10.53 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:197:14-20
  3716. 10.53 s [really-safe-money] @@ -194,7 +194,7 @@
  3717. 10.53 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  3718. 10.53 s [really-safe-money] fromDouble quantisationFactor d =
  3719. 10.53 s [really-safe-money] let d' = Prelude.abs d
  3720. 10.53 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  3721. 10.53 s [really-safe-money] + f = if False then Positive else Negative
  3722. 10.53 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  3723. 10.53 s [really-safe-money]
  3724. 10.53 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  3725. 10.53 s [really-safe-money] added mutation Negate at src/Money/Account.hs:197:14-20
  3726. 10.53 s [really-safe-money] @@ -194,7 +194,7 @@
  3727. 10.53 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  3728. 10.53 s [really-safe-money] fromDouble quantisationFactor d =
  3729. 10.53 s [really-safe-money] let d' = Prelude.abs d
  3730. 10.53 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  3731. 10.53 s [really-safe-money] + f = if not (d >= 0) then Positive else Negative
  3732. 10.53 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  3733. 10.53 s [really-safe-money]
  3734. 10.53 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  3735. 10.53 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:197:11-48
  3736. 10.53 s [really-safe-money] @@ -194,7 +194,7 @@
  3737. 10.53 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  3738. 10.53 s [really-safe-money] fromDouble quantisationFactor d =
  3739. 10.53 s [really-safe-money] let d' = Prelude.abs d
  3740. 10.53 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  3741. 10.53 s [really-safe-money] + f = if d >= 0 then Positive else Negative
  3742. 10.53 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  3743. 10.53 s [really-safe-money]
  3744. 10.53 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  3745. 10.53 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:171:11-37
  3746. 10.53 s [really-safe-money] @@ -168,9 +168,9 @@
  3747. 10.53 s [really-safe-money] -- -0.25
  3748. 10.53 s [really-safe-money] toDouble :: QuantisationFactor -> Account -> Double
  3749. 10.53 s [really-safe-money] toDouble quantisationFactor account =
  3750. 10.53 s [really-safe-money] - let f = case account of
  3751. 10.53 s [really-safe-money] - Positive _ -> id
  3752. 10.53 s [really-safe-money] - Negative _ -> Prelude.negate
  3753. 10.53 s [really-safe-money] + let f = case account of
  3754. 10.53 s [really-safe-money] + Positive _ -> id
  3755. 10.53 s [really-safe-money] + Negative _ -> Prelude.negate
  3756. 10.53 s [really-safe-money] in f $ Amount.toDouble quantisationFactor (abs account)
  3757. 10.53 s [really-safe-money]
  3758. 10.53 s [really-safe-money] -- | Turn a 'Double' into an amount of money.
  3759. 10.53 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:171:11-37
  3760. 10.53 s [really-safe-money] @@ -168,9 +168,9 @@
  3761. 10.53 s [really-safe-money] -- -0.25
  3762. 10.53 s [really-safe-money] toDouble :: QuantisationFactor -> Account -> Double
  3763. 10.53 s [really-safe-money] toDouble quantisationFactor account =
  3764. 10.53 s [really-safe-money] - let f = case account of
  3765. 10.53 s [really-safe-money] - Positive _ -> id
  3766. 10.53 s [really-safe-money] - Negative _ -> Prelude.negate
  3767. 10.53 s [really-safe-money] + let f = case account of
  3768. 10.53 s [really-safe-money] + Positive _ -> id
  3769. 10.53 s [really-safe-money] + Negative _ -> Prelude.negate
  3770. 10.53 s [really-safe-money] in f $ Amount.toDouble quantisationFactor (abs account)
  3771. 10.53 s [really-safe-money]
  3772. 10.53 s [really-safe-money] -- | Turn a 'Double' into an amount of money.
  3773. 10.53 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:155:11-37
  3774. 10.53 s [really-safe-money] @@ -152,9 +152,9 @@
  3775. 10.53 s [really-safe-money] -- We return 'Integer' because the result does not fit into a 'Word64'
  3776. 10.53 s [really-safe-money] toMinimalQuantisations :: Account -> Integer
  3777. 10.53 s [really-safe-money] toMinimalQuantisations account =
  3778. 10.53 s [really-safe-money] - let f = case account of
  3779. 10.53 s [really-safe-money] - Positive _ -> id
  3780. 10.53 s [really-safe-money] - Negative _ -> Prelude.negate
  3781. 10.53 s [really-safe-money] + let f = case account of
  3782. 10.53 s [really-safe-money] + Positive _ -> id
  3783. 10.53 s [really-safe-money] + Negative _ -> Prelude.negate
  3784. 10.53 s [really-safe-money] in f $ (fromIntegral :: Word64 -> Integer) $ Amount.toMinimalQuantisations (abs account)
  3785. 10.53 s [really-safe-money]
  3786. 10.53 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  3787. 10.53 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:155:11-37
  3788. 10.53 s [really-safe-money] @@ -152,9 +152,9 @@
  3789. 10.53 s [really-safe-money] -- We return 'Integer' because the result does not fit into a 'Word64'
  3790. 10.53 s [really-safe-money] toMinimalQuantisations :: Account -> Integer
  3791. 10.53 s [really-safe-money] toMinimalQuantisations account =
  3792. 10.53 s [really-safe-money] - let f = case account of
  3793. 10.53 s [really-safe-money] - Positive _ -> id
  3794. 10.53 s [really-safe-money] - Negative _ -> Prelude.negate
  3795. 10.53 s [really-safe-money] + let f = case account of
  3796. 10.53 s [really-safe-money] + Positive _ -> id
  3797. 10.53 s [really-safe-money] + Negative _ -> Prelude.negate
  3798. 10.53 s [really-safe-money] in f $ (fromIntegral :: Word64 -> Integer) $ Amount.toMinimalQuantisations (abs account)
  3799. 10.53 s [really-safe-money]
  3800. 10.53 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  3801. 10.53 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:123:10-23
  3802. 10.53 s [really-safe-money] @@ -120,7 +120,7 @@
  3803. 10.53 s [really-safe-money] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  3804. 10.53 s [really-safe-money] a :: Integer
  3805. 10.53 s [really-safe-money] a = (Prelude.abs :: Integer -> Integer) i
  3806. 10.53 s [really-safe-money] - in if a > maxBoundI
  3807. 10.53 s [really-safe-money] + in if True
  3808. 10.53 s [really-safe-money] then Nothing
  3809. 10.53 s [really-safe-money] else
  3810. 10.53 s [really-safe-money] let w :: Word64
  3811. 10.53 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:123:10-23
  3812. 10.53 s [really-safe-money] @@ -120,7 +120,7 @@
  3813. 10.53 s [really-safe-money] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  3814. 10.53 s [really-safe-money] a :: Integer
  3815. 10.53 s [really-safe-money] a = (Prelude.abs :: Integer -> Integer) i
  3816. 10.53 s [really-safe-money] - in if a > maxBoundI
  3817. 10.53 s [really-safe-money] + in if False
  3818. 10.53 s [really-safe-money] then Nothing
  3819. 10.53 s [really-safe-money] else
  3820. 10.53 s [really-safe-money] let w :: Word64
  3821. 10.53 s [really-safe-money] added mutation Negate at src/Money/Account.hs:123:10-23
  3822. 10.53 s [really-safe-money] @@ -120,7 +120,7 @@
  3823. 10.53 s [really-safe-money] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  3824. 10.53 s [really-safe-money] a :: Integer
  3825. 10.53 s [really-safe-money] a = (Prelude.abs :: Integer -> Integer) i
  3826. 10.53 s [really-safe-money] - in if a > maxBoundI
  3827. 10.53 s [really-safe-money] + in if not (a > maxBoundI)
  3828. 10.53 s [really-safe-money] then Nothing
  3829. 10.53 s [really-safe-money] else
  3830. 10.53 s [really-safe-money] let w :: Word64
  3831. 10.53 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:131:25-26
  3832. 10.53 s [really-safe-money] @@ -128,7 +128,7 @@
  3833. 10.53 s [really-safe-money] amount :: Amount
  3834. 10.53 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  3835. 10.53 s [really-safe-money] in Just $
  3836. 10.53 s [really-safe-money] - if i >= 0
  3837. 10.53 s [really-safe-money] + if i >= 1
  3838. 10.53 s [really-safe-money] then Positive amount
  3839. 10.53 s [really-safe-money] else Negative amount
  3840. 10.53 s [really-safe-money]
  3841. 10.53 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:131:20-26
  3842. 10.53 s [really-safe-money] @@ -128,7 +128,7 @@
  3843. 10.53 s [really-safe-money] amount :: Amount
  3844. 10.53 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  3845. 10.53 s [really-safe-money] in Just $
  3846. 10.53 s [really-safe-money] - if i >= 0
  3847. 10.53 s [really-safe-money] + if True
  3848. 10.53 s [really-safe-money] then Positive amount
  3849. 10.53 s [really-safe-money] else Negative amount
  3850. 10.53 s [really-safe-money]
  3851. 10.53 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:131:20-26
  3852. 10.53 s [really-safe-money] @@ -128,7 +128,7 @@
  3853. 10.53 s [really-safe-money] amount :: Amount
  3854. 10.53 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  3855. 10.53 s [really-safe-money] in Just $
  3856. 10.53 s [really-safe-money] - if i >= 0
  3857. 10.53 s [really-safe-money] + if False
  3858. 10.53 s [really-safe-money] then Positive amount
  3859. 10.53 s [really-safe-money] else Negative amount
  3860. 10.53 s [really-safe-money]
  3861. 10.53 s [really-safe-money] added mutation Negate at src/Money/Account.hs:131:20-26
  3862. 10.53 s [really-safe-money] @@ -128,7 +128,7 @@
  3863. 10.53 s [really-safe-money] amount :: Amount
  3864. 10.53 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  3865. 10.53 s [really-safe-money] in Just $
  3866. 10.53 s [really-safe-money] - if i >= 0
  3867. 10.53 s [really-safe-money] + if not (i >= 0)
  3868. 10.53 s [really-safe-money] then Positive amount
  3869. 10.53 s [really-safe-money] else Negative amount
  3870. 10.53 s [really-safe-money]
  3871. 10.53 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:131:17-39
  3872. 10.53 s [really-safe-money] @@ -128,9 +128,9 @@
  3873. 10.53 s [really-safe-money] amount :: Amount
  3874. 10.53 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  3875. 10.53 s [really-safe-money] in Just $
  3876. 10.53 s [really-safe-money] - if i >= 0
  3877. 10.53 s [really-safe-money] - then Positive amount
  3878. 10.53 s [really-safe-money] - else Negative amount
  3879. 10.53 s [really-safe-money] + if i >= 0
  3880. 10.53 s [really-safe-money] + then Positive amount
  3881. 10.53 s [really-safe-money] + else Negative amount
  3882. 10.53 s [really-safe-money]
  3883. 10.53 s [really-safe-money] -- | Turn an amount into a positive account
  3884. 10.53 s [really-safe-money] --
  3885. 10.53 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:123:7-39
  3886. 10.53 s [really-safe-money] @@ -120,17 +120,17 @@
  3887. 10.53 s [really-safe-money] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  3888. 10.53 s [really-safe-money] a :: Integer
  3889. 10.53 s [really-safe-money] a = (Prelude.abs :: Integer -> Integer) i
  3890. 10.53 s [really-safe-money] - in if a > maxBoundI
  3891. 10.53 s [really-safe-money] - then Nothing
  3892. 10.53 s [really-safe-money] - else
  3893. 10.53 s [really-safe-money] - let w :: Word64
  3894. 10.53 s [really-safe-money] - w = (fromIntegral :: Integer -> Word64) a
  3895. 10.53 s [really-safe-money] - amount :: Amount
  3896. 10.53 s [really-safe-money] - amount = Amount.fromMinimalQuantisations w
  3897. 10.53 s [really-safe-money] - in Just $
  3898. 10.53 s [really-safe-money] - if i >= 0
  3899. 10.53 s [really-safe-money] - then Positive amount
  3900. 10.53 s [really-safe-money] - else Negative amount
  3901. 10.53 s [really-safe-money] + in if a > maxBoundI
  3902. 10.53 s [really-safe-money] + then Nothing
  3903. 10.53 s [really-safe-money] + else
  3904. 10.53 s [really-safe-money] + let w :: Word64
  3905. 10.53 s [really-safe-money] + w = (fromIntegral :: Integer -> Word64) a
  3906. 10.53 s [really-safe-money] + amount :: Amount
  3907. 10.53 s [really-safe-money] + amount = Amount.fromMinimalQuantisations w
  3908. 10.53 s [really-safe-money] + in Just $
  3909. 10.53 s [really-safe-money] + if i >= 0
  3910. 10.53 s [really-safe-money] + then Positive amount
  3911. 10.53 s [really-safe-money] + else Negative amount
  3912. 10.53 s [really-safe-money]
  3913. 10.53 s [really-safe-money] -- | Turn an amount into a positive account
  3914. 10.53 s [really-safe-money] --
  3915. 10.53 s [really-safe-money] added 66 mutations
  3916. 11.16 s [really-safe-money] [10 of 12] Compiling Money.MultiAccount ( src/Money/MultiAccount.hs, dist/build/Money/MultiAccount.o, dist/build/Money/MultiAccount.dyn_o )
  3917. 11.18 s [really-safe-money] mutation: instrumenting Money.MultiAccount
  3918. 11.18 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
  3919. 11.18 s [really-safe-money] @@ -171,10 +171,10 @@
  3920. 11.18 s [really-safe-money] fmap
  3921. 11.18 s [really-safe-money] ( ( \theoreticalResult ->
  3922. 11.18 s [really-safe-money] let rounder :: Rational -> Integer
  3923. 11.18 s [really-safe-money] - rounder = case r of
  3924. 11.18 s [really-safe-money] - RoundUp -> ceiling
  3925. 11.18 s [really-safe-money] - RoundDown -> floor
  3926. 11.18 s [really-safe-money] - RoundNearest -> round
  3927. 11.18 s [really-safe-money] + rounder = case r of
  3928. 11.18 s [really-safe-money] + RoundUp -> ceiling
  3929. 11.18 s [really-safe-money] + RoundDown -> floor
  3930. 11.18 s [really-safe-money] + RoundNearest -> round
  3931. 11.18 s [really-safe-money] roundedResult :: Integer
  3932. 11.18 s [really-safe-money] roundedResult = rounder theoreticalResult
  3933. 11.18 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  3934. 11.18 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
  3935. 11.18 s [really-safe-money] @@ -171,10 +171,10 @@
  3936. 11.18 s [really-safe-money] fmap
  3937. 11.18 s [really-safe-money] ( ( \theoreticalResult ->
  3938. 11.18 s [really-safe-money] let rounder :: Rational -> Integer
  3939. 11.18 s [really-safe-money] - rounder = case r of
  3940. 11.18 s [really-safe-money] - RoundUp -> ceiling
  3941. 11.18 s [really-safe-money] - RoundDown -> floor
  3942. 11.18 s [really-safe-money] - RoundNearest -> round
  3943. 11.18 s [really-safe-money] + rounder = case r of
  3944. 11.18 s [really-safe-money] + RoundUp -> ceiling
  3945. 11.18 s [really-safe-money] + RoundDown -> floor
  3946. 11.18 s [really-safe-money] + RoundNearest -> round
  3947. 11.18 s [really-safe-money] roundedResult :: Integer
  3948. 11.18 s [really-safe-money] roundedResult = rounder theoreticalResult
  3949. 11.18 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  3950. 11.18 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
  3951. 11.18 s [really-safe-money] @@ -171,10 +171,10 @@
  3952. 11.18 s [really-safe-money] fmap
  3953. 11.18 s [really-safe-money] ( ( \theoreticalResult ->
  3954. 11.18 s [really-safe-money] let rounder :: Rational -> Integer
  3955. 11.18 s [really-safe-money] - rounder = case r of
  3956. 11.18 s [really-safe-money] - RoundUp -> ceiling
  3957. 11.18 s [really-safe-money] - RoundDown -> floor
  3958. 11.18 s [really-safe-money] - RoundNearest -> round
  3959. 11.18 s [really-safe-money] + rounder = case r of
  3960. 11.18 s [really-safe-money] + RoundUp -> ceiling
  3961. 11.18 s [really-safe-money] + RoundDown -> floor
  3962. 11.18 s [really-safe-money] + RoundNearest -> round
  3963. 11.18 s [really-safe-money] roundedResult :: Integer
  3964. 11.18 s [really-safe-money] roundedResult = rounder theoreticalResult
  3965. 11.18 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  3966. 11.18 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
  3967. 11.18 s [really-safe-money] @@ -177,10 +177,10 @@
  3968. 11.18 s [really-safe-money] RoundNearest -> round
  3969. 11.18 s [really-safe-money] roundedResult :: Integer
  3970. 11.18 s [really-safe-money] roundedResult = rounder theoreticalResult
  3971. 11.18 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  3972. 11.18 s [really-safe-money] - LT -> RoundedDown
  3973. 11.18 s [really-safe-money] - EQ -> DidNotRound
  3974. 11.18 s [really-safe-money] - GT -> RoundedUp
  3975. 11.18 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  3976. 11.18 s [really-safe-money] + LT -> RoundedDown
  3977. 11.18 s [really-safe-money] + EQ -> DidNotRound
  3978. 11.18 s [really-safe-money] + GT -> RoundedUp
  3979. 11.18 s [really-safe-money] in (Account.fromMinimalQuantisations roundedResult, rounded)
  3980. 11.18 s [really-safe-money] )
  3981. 11.18 s [really-safe-money] . Prelude.sum
  3982. 11.18 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
  3983. 11.18 s [really-safe-money] @@ -177,10 +177,10 @@
  3984. 11.18 s [really-safe-money] RoundNearest -> round
  3985. 11.18 s [really-safe-money] roundedResult :: Integer
  3986. 11.18 s [really-safe-money] roundedResult = rounder theoreticalResult
  3987. 11.18 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  3988. 11.18 s [really-safe-money] - LT -> RoundedDown
  3989. 11.18 s [really-safe-money] - EQ -> DidNotRound
  3990. 11.18 s [really-safe-money] - GT -> RoundedUp
  3991. 11.18 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  3992. 11.18 s [really-safe-money] + LT -> RoundedDown
  3993. 11.18 s [really-safe-money] + EQ -> DidNotRound
  3994. 11.18 s [really-safe-money] + GT -> RoundedUp
  3995. 11.18 s [really-safe-money] in (Account.fromMinimalQuantisations roundedResult, rounded)
  3996. 11.18 s [really-safe-money] )
  3997. 11.18 s [really-safe-money] . Prelude.sum
  3998. 11.18 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
  3999. 11.18 s [really-safe-money] @@ -177,10 +177,10 @@
  4000. 11.18 s [really-safe-money] RoundNearest -> round
  4001. 11.18 s [really-safe-money] roundedResult :: Integer
  4002. 11.18 s [really-safe-money] roundedResult = rounder theoreticalResult
  4003. 11.18 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  4004. 11.18 s [really-safe-money] - LT -> RoundedDown
  4005. 11.18 s [really-safe-money] - EQ -> DidNotRound
  4006. 11.18 s [really-safe-money] - GT -> RoundedUp
  4007. 11.18 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  4008. 11.18 s [really-safe-money] + LT -> RoundedDown
  4009. 11.18 s [really-safe-money] + EQ -> DidNotRound
  4010. 11.18 s [really-safe-money] + GT -> RoundedUp
  4011. 11.18 s [really-safe-money] in (Account.fromMinimalQuantisations roundedResult, rounded)
  4012. 11.18 s [really-safe-money] )
  4013. 11.18 s [really-safe-money] . Prelude.sum
  4014. 11.18 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:134:12-29
  4015. 11.18 s [really-safe-money] @@ -131,7 +131,7 @@
  4016. 11.18 s [really-safe-money] Just a -> do
  4017. 11.18 s [really-safe-money] r <- Account.subtract a account
  4018. 11.18 s [really-safe-money] Just $
  4019. 11.18 s [really-safe-money] - if r == Account.zero
  4020. 11.18 s [really-safe-money] + if True
  4021. 11.18 s [really-safe-money] then M.delete currency m
  4022. 11.18 s [really-safe-money] else M.insert currency r m
  4023. 11.18 s [really-safe-money]
  4024. 11.18 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:134:12-29
  4025. 11.18 s [really-safe-money] @@ -131,7 +131,7 @@
  4026. 11.18 s [really-safe-money] Just a -> do
  4027. 11.18 s [really-safe-money] r <- Account.subtract a account
  4028. 11.18 s [really-safe-money] Just $
  4029. 11.18 s [really-safe-money] - if r == Account.zero
  4030. 11.18 s [really-safe-money] + if False
  4031. 11.18 s [really-safe-money] then M.delete currency m
  4032. 11.18 s [really-safe-money] else M.insert currency r m
  4033. 11.18 s [really-safe-money]
  4034. 11.18 s [really-safe-money] added mutation Negate at src/Money/MultiAccount.hs:134:12-29
  4035. 11.18 s [really-safe-money] @@ -131,7 +131,7 @@
  4036. 11.18 s [really-safe-money] Just a -> do
  4037. 11.18 s [really-safe-money] r <- Account.subtract a account
  4038. 11.18 s [really-safe-money] Just $
  4039. 11.18 s [really-safe-money] - if r == Account.zero
  4040. 11.18 s [really-safe-money] + if not (r == Account.zero)
  4041. 11.18 s [really-safe-money] then M.delete currency m
  4042. 11.18 s [really-safe-money] else M.insert currency r m
  4043. 11.18 s [really-safe-money]
  4044. 11.18 s [really-safe-money] added mutation CondFlip at src/Money/MultiAccount.hs:134:9-37
  4045. 11.18 s [really-safe-money] @@ -131,9 +131,9 @@
  4046. 11.18 s [really-safe-money] Just a -> do
  4047. 11.18 s [really-safe-money] r <- Account.subtract a account
  4048. 11.18 s [really-safe-money] Just $
  4049. 11.18 s [really-safe-money] - if r == Account.zero
  4050. 11.18 s [really-safe-money] - then M.delete currency m
  4051. 11.18 s [really-safe-money] - else M.insert currency r m
  4052. 11.18 s [really-safe-money] + if r == Account.zero
  4053. 11.18 s [really-safe-money] + then M.delete currency m
  4054. 11.18 s [really-safe-money] + else M.insert currency r m
  4055. 11.18 s [really-safe-money]
  4056. 11.18 s [really-safe-money] -- | Try to convert every account to one currency.
  4057. 11.18 s [really-safe-money] --
  4058. 11.18 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:129:23-37
  4059. 11.18 s [really-safe-money] @@ -126,14 +126,14 @@
  4060. 11.18 s [really-safe-money] subtractAccount m _ (Positive (Amount 0)) = Just m
  4061. 11.18 s [really-safe-money] subtractAccount m _ (Negative (Amount 0)) = Just m
  4062. 11.18 s [really-safe-money] subtractAccount (MultiAccount m) currency account =
  4063. 11.18 s [really-safe-money] - fmap MultiAccount $ case M.lookup currency m of
  4064. 11.18 s [really-safe-money] - Nothing -> Just $ M.insert currency (Account.negate account) m
  4065. 11.18 s [really-safe-money] - Just a -> do
  4066. 11.18 s [really-safe-money] - r <- Account.subtract a account
  4067. 11.18 s [really-safe-money] - Just $
  4068. 11.18 s [really-safe-money] - if r == Account.zero
  4069. 11.18 s [really-safe-money] - then M.delete currency m
  4070. 11.18 s [really-safe-money] - else M.insert currency r m
  4071. 11.18 s [really-safe-money] + fmap MultiAccount $ case M.lookup currency m of
  4072. 11.18 s [really-safe-money] + Nothing -> Just $ M.insert currency (Account.negate account) m
  4073. 11.18 s [really-safe-money] + Just a -> do
  4074. 11.18 s [really-safe-money] + r <- Account.subtract a account
  4075. 11.18 s [really-safe-money] + Just $
  4076. 11.18 s [really-safe-money] + if r == Account.zero
  4077. 11.18 s [really-safe-money] + then M.delete currency m
  4078. 11.18 s [really-safe-money] + else M.insert currency r m
  4079. 11.18 s [really-safe-money]
  4080. 11.18 s [really-safe-money] -- | Try to convert every account to one currency.
  4081. 11.18 s [really-safe-money] --
  4082. 11.18 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:129:23-37
  4083. 11.18 s [really-safe-money] @@ -126,14 +126,14 @@
  4084. 11.18 s [really-safe-money] subtractAccount m _ (Positive (Amount 0)) = Just m
  4085. 11.18 s [really-safe-money] subtractAccount m _ (Negative (Amount 0)) = Just m
  4086. 11.18 s [really-safe-money] subtractAccount (MultiAccount m) currency account =
  4087. 11.18 s [really-safe-money] - fmap MultiAccount $ case M.lookup currency m of
  4088. 11.18 s [really-safe-money] - Nothing -> Just $ M.insert currency (Account.negate account) m
  4089. 11.18 s [really-safe-money] - Just a -> do
  4090. 11.18 s [really-safe-money] - r <- Account.subtract a account
  4091. 11.18 s [really-safe-money] - Just $
  4092. 11.18 s [really-safe-money] - if r == Account.zero
  4093. 11.18 s [really-safe-money] - then M.delete currency m
  4094. 11.18 s [really-safe-money] - else M.insert currency r m
  4095. 11.18 s [really-safe-money] + fmap MultiAccount $ case M.lookup currency m of
  4096. 11.18 s [really-safe-money] + Nothing -> Just $ M.insert currency (Account.negate account) m
  4097. 11.18 s [really-safe-money] + Just a -> do
  4098. 11.18 s [really-safe-money] + r <- Account.subtract a account
  4099. 11.18 s [really-safe-money] + Just $
  4100. 11.18 s [really-safe-money] + if r == Account.zero
  4101. 11.18 s [really-safe-money] + then M.delete currency m
  4102. 11.18 s [really-safe-money] + else M.insert currency r m
  4103. 11.18 s [really-safe-money]
  4104. 11.18 s [really-safe-money] -- | Try to convert every account to one currency.
  4105. 11.18 s [really-safe-money] --
  4106. 11.18 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:120:12-29
  4107. 11.18 s [really-safe-money] @@ -117,7 +117,7 @@
  4108. 11.18 s [really-safe-money] Just a -> do
  4109. 11.18 s [really-safe-money] r <- Account.add a account
  4110. 11.18 s [really-safe-money] Just $
  4111. 11.18 s [really-safe-money] - if r == Account.zero
  4112. 11.18 s [really-safe-money] + if True
  4113. 11.18 s [really-safe-money] then M.delete currency m
  4114. 11.18 s [really-safe-money] else M.insert currency r m
  4115. 11.18 s [really-safe-money]
  4116. 11.18 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:120:12-29
  4117. 11.19 s [really-safe-money] @@ -117,7 +117,7 @@
  4118. 11.19 s [really-safe-money] Just a -> do
  4119. 11.19 s [really-safe-money] r <- Account.add a account
  4120. 11.19 s [really-safe-money] Just $
  4121. 11.19 s [really-safe-money] - if r == Account.zero
  4122. 11.19 s [really-safe-money] + if False
  4123. 11.19 s [really-safe-money] then M.delete currency m
  4124. 11.19 s [really-safe-money] else M.insert currency r m
  4125. 11.19 s [really-safe-money]
  4126. 11.19 s [really-safe-money] added mutation Negate at src/Money/MultiAccount.hs:120:12-29
  4127. 11.19 s [really-safe-money] @@ -117,7 +117,7 @@
  4128. 11.19 s [really-safe-money] Just a -> do
  4129. 11.19 s [really-safe-money] r <- Account.add a account
  4130. 11.19 s [really-safe-money] Just $
  4131. 11.19 s [really-safe-money] - if r == Account.zero
  4132. 11.19 s [really-safe-money] + if not (r == Account.zero)
  4133. 11.19 s [really-safe-money] then M.delete currency m
  4134. 11.19 s [really-safe-money] else M.insert currency r m
  4135. 11.19 s [really-safe-money]
  4136. 11.19 s [really-safe-money] added mutation CondFlip at src/Money/MultiAccount.hs:120:9-37
  4137. 11.19 s [really-safe-money] @@ -117,9 +117,9 @@
  4138. 11.19 s [really-safe-money] Just a -> do
  4139. 11.19 s [really-safe-money] r <- Account.add a account
  4140. 11.19 s [really-safe-money] Just $
  4141. 11.19 s [really-safe-money] - if r == Account.zero
  4142. 11.19 s [really-safe-money] - then M.delete currency m
  4143. 11.19 s [really-safe-money] - else M.insert currency r m
  4144. 11.19 s [really-safe-money] + if r == Account.zero
  4145. 11.19 s [really-safe-money] + then M.delete currency m
  4146. 11.19 s [really-safe-money] + else M.insert currency r m
  4147. 11.19 s [really-safe-money]
  4148. 11.19 s [really-safe-money] -- | Add an 'Account' to a 'MultiAccount'
  4149. 11.19 s [really-safe-money] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
  4150. 11.19 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:115:23-37
  4151. 11.19 s [really-safe-money] @@ -112,14 +112,14 @@
  4152. 11.19 s [really-safe-money] addAccount m _ (Positive (Amount 0)) = Just m
  4153. 11.19 s [really-safe-money] addAccount m _ (Negative (Amount 0)) = Just m
  4154. 11.19 s [really-safe-money] addAccount (MultiAccount m) currency account =
  4155. 11.19 s [really-safe-money] - fmap MultiAccount $ case M.lookup currency m of
  4156. 11.19 s [really-safe-money] - Nothing -> Just $ M.insert currency account m
  4157. 11.19 s [really-safe-money] - Just a -> do
  4158. 11.19 s [really-safe-money] - r <- Account.add a account
  4159. 11.19 s [really-safe-money] - Just $
  4160. 11.19 s [really-safe-money] - if r == Account.zero
  4161. 11.19 s [really-safe-money] - then M.delete currency m
  4162. 11.19 s [really-safe-money] - else M.insert currency r m
  4163. 11.19 s [really-safe-money] + fmap MultiAccount $ case M.lookup currency m of
  4164. 11.19 s [really-safe-money] + Nothing -> Just $ M.insert currency account m
  4165. 11.19 s [really-safe-money] + Just a -> do
  4166. 11.19 s [really-safe-money] + r <- Account.add a account
  4167. 11.19 s [really-safe-money] + Just $
  4168. 11.19 s [really-safe-money] + if r == Account.zero
  4169. 11.19 s [really-safe-money] + then M.delete currency m
  4170. 11.19 s [really-safe-money] + else M.insert currency r m
  4171. 11.19 s [really-safe-money]
  4172. 11.19 s [really-safe-money] -- | Add an 'Account' to a 'MultiAccount'
  4173. 11.19 s [really-safe-money] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
  4174. 11.19 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:115:23-37
  4175. 11.19 s [really-safe-money] @@ -112,14 +112,14 @@
  4176. 11.19 s [really-safe-money] addAccount m _ (Positive (Amount 0)) = Just m
  4177. 11.19 s [really-safe-money] addAccount m _ (Negative (Amount 0)) = Just m
  4178. 11.19 s [really-safe-money] addAccount (MultiAccount m) currency account =
  4179. 11.19 s [really-safe-money] - fmap MultiAccount $ case M.lookup currency m of
  4180. 11.19 s [really-safe-money] - Nothing -> Just $ M.insert currency account m
  4181. 11.19 s [really-safe-money] - Just a -> do
  4182. 11.19 s [really-safe-money] - r <- Account.add a account
  4183. 11.19 s [really-safe-money] - Just $
  4184. 11.19 s [really-safe-money] - if r == Account.zero
  4185. 11.19 s [really-safe-money] - then M.delete currency m
  4186. 11.19 s [really-safe-money] - else M.insert currency r m
  4187. 11.19 s [really-safe-money] + fmap MultiAccount $ case M.lookup currency m of
  4188. 11.19 s [really-safe-money] + Nothing -> Just $ M.insert currency account m
  4189. 11.19 s [really-safe-money] + Just a -> do
  4190. 11.19 s [really-safe-money] + r <- Account.add a account
  4191. 11.19 s [really-safe-money] + Just $
  4192. 11.19 s [really-safe-money] + if r == Account.zero
  4193. 11.19 s [really-safe-money] + then M.delete currency m
  4194. 11.19 s [really-safe-money] + else M.insert currency r m
  4195. 11.19 s [really-safe-money]
  4196. 11.19 s [really-safe-money] -- | Add an 'Account' to a 'MultiAccount'
  4197. 11.19 s [really-safe-money] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
  4198. 11.19 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:78:6-28
  4199. 11.19 s [really-safe-money] @@ -75,7 +75,7 @@
  4200. 11.19 s [really-safe-money]
  4201. 11.19 s [really-safe-money] fromAccount :: currency -> Account -> MultiAccount currency
  4202. 11.19 s [really-safe-money] fromAccount currency amount =
  4203. 11.19 s [really-safe-money] - if amount == Account.zero
  4204. 11.19 s [really-safe-money] + if True
  4205. 11.19 s [really-safe-money] then zero
  4206. 11.19 s [really-safe-money] else MultiAccount $ M.singleton currency amount
  4207. 11.19 s [really-safe-money]
  4208. 11.19 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:78:6-28
  4209. 11.19 s [really-safe-money] @@ -75,7 +75,7 @@
  4210. 11.19 s [really-safe-money]
  4211. 11.19 s [really-safe-money] fromAccount :: currency -> Account -> MultiAccount currency
  4212. 11.19 s [really-safe-money] fromAccount currency amount =
  4213. 11.19 s [really-safe-money] - if amount == Account.zero
  4214. 11.19 s [really-safe-money] + if False
  4215. 11.19 s [really-safe-money] then zero
  4216. 11.19 s [really-safe-money] else MultiAccount $ M.singleton currency amount
  4217. 11.19 s [really-safe-money]
  4218. 11.19 s [really-safe-money] added mutation Negate at src/Money/MultiAccount.hs:78:6-28
  4219. 11.19 s [really-safe-money] @@ -75,7 +75,7 @@
  4220. 11.19 s [really-safe-money]
  4221. 11.19 s [really-safe-money] fromAccount :: currency -> Account -> MultiAccount currency
  4222. 11.19 s [really-safe-money] fromAccount currency amount =
  4223. 11.19 s [really-safe-money] - if amount == Account.zero
  4224. 11.19 s [really-safe-money] + if not (amount == Account.zero)
  4225. 11.19 s [really-safe-money] then zero
  4226. 11.19 s [really-safe-money] else MultiAccount $ M.singleton currency amount
  4227. 11.19 s [really-safe-money]
  4228. 11.19 s [really-safe-money] added mutation CondFlip at src/Money/MultiAccount.hs:78:3-52
  4229. 11.19 s [really-safe-money] @@ -75,9 +75,9 @@
  4230. 11.19 s [really-safe-money]
  4231. 11.19 s [really-safe-money] fromAccount :: currency -> Account -> MultiAccount currency
  4232. 11.19 s [really-safe-money] fromAccount currency amount =
  4233. 11.19 s [really-safe-money] - if amount == Account.zero
  4234. 11.19 s [really-safe-money] - then zero
  4235. 11.19 s [really-safe-money] - else MultiAccount $ M.singleton currency amount
  4236. 11.19 s [really-safe-money] + if amount == Account.zero
  4237. 11.19 s [really-safe-money] + then zero
  4238. 11.19 s [really-safe-money] + else MultiAccount $ M.singleton currency amount
  4239. 11.19 s [really-safe-money]
  4240. 11.19 s [really-safe-money] -- | No money of any currency
  4241. 11.19 s [really-safe-money] zero :: MultiAccount currency
  4242. 11.19 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:69:13-30
  4243. 11.19 s [really-safe-money] @@ -66,7 +66,7 @@
  4244. 11.19 s [really-safe-money] [ genericValidate ma,
  4245. 11.19 s [really-safe-money] decorateMap m $ \_ a ->
  4246. 11.19 s [really-safe-money] declare "The account is not zero" $
  4247. 11.19 s [really-safe-money] - a /= Account.zero
  4248. 11.19 s [really-safe-money] + True
  4249. 11.19 s [really-safe-money] ]
  4250. 11.19 s [really-safe-money]
  4251. 11.19 s [really-safe-money] -- TODO no empty currencies
  4252. 11.19 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:69:13-30
  4253. 11.19 s [really-safe-money] @@ -66,7 +66,7 @@
  4254. 11.19 s [really-safe-money] [ genericValidate ma,
  4255. 11.19 s [really-safe-money] decorateMap m $ \_ a ->
  4256. 11.19 s [really-safe-money] declare "The account is not zero" $
  4257. 11.19 s [really-safe-money] - a /= Account.zero
  4258. 11.19 s [really-safe-money] + False
  4259. 11.19 s [really-safe-money] ]
  4260. 11.19 s [really-safe-money]
  4261. 11.19 s [really-safe-money] -- TODO no empty currencies
  4262. 11.19 s [really-safe-money] added mutation Negate at src/Money/MultiAccount.hs:69:13-30
  4263. 11.19 s [really-safe-money] @@ -66,7 +66,7 @@
  4264. 11.19 s [really-safe-money] [ genericValidate ma,
  4265. 11.19 s [really-safe-money] decorateMap m $ \_ a ->
  4266. 11.19 s [really-safe-money] declare "The account is not zero" $
  4267. 11.19 s [really-safe-money] - a /= Account.zero
  4268. 11.19 s [really-safe-money] + not (a /= Account.zero)
  4269. 11.19 s [really-safe-money] ]
  4270. 11.19 s [really-safe-money]
  4271. 11.19 s [really-safe-money] -- TODO no empty currencies
  4272. 11.19 s [really-safe-money] added mutation ListLit at src/Money/MultiAccount.hs:66:7-8
  4273. 11.19 s [really-safe-money] @@ -63,11 +63,7 @@
  4274. 11.19 s [really-safe-money] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
  4275. 11.19 s [really-safe-money] validate ma@(MultiAccount m) =
  4276. 11.19 s [really-safe-money] mconcat
  4277. 11.19 s [really-safe-money] - [ genericValidate ma,
  4278. 11.19 s [really-safe-money] - decorateMap m $ \_ a ->
  4279. 11.19 s [really-safe-money] - declare "The account is not zero" $
  4280. 11.19 s [really-safe-money] - a /= Account.zero
  4281. 11.19 s [really-safe-money] - ]
  4282. 11.19 s [really-safe-money] + []
  4283. 11.19 s [really-safe-money]
  4284. 11.19 s [really-safe-money] -- TODO no empty currencies
  4285. 11.19 s [really-safe-money]
  4286. 11.19 s [really-safe-money] added mutation ListLit at src/Money/MultiAccount.hs:66:7-8
  4287. 11.19 s [really-safe-money] @@ -63,11 +63,11 @@
  4288. 11.19 s [really-safe-money] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
  4289. 11.19 s [really-safe-money] validate ma@(MultiAccount m) =
  4290. 11.19 s [really-safe-money] mconcat
  4291. 11.19 s [really-safe-money] - [ genericValidate ma,
  4292. 11.19 s [really-safe-money] - decorateMap m $ \_ a ->
  4293. 11.19 s [really-safe-money] - declare "The account is not zero" $
  4294. 11.19 s [really-safe-money] - a /= Account.zero
  4295. 11.19 s [really-safe-money] - ]
  4296. 11.19 s [really-safe-money] + [ genericValidate ma,
  4297. 11.19 s [really-safe-money] + decorateMap m $ \_ a ->
  4298. 11.19 s [really-safe-money] + declare "The account is not zero" $
  4299. 11.19 s [really-safe-money] + a /= Account.zero
  4300. 11.19 s [really-safe-money] + ]
  4301. 11.19 s [really-safe-money]
  4302. 11.19 s [really-safe-money] -- TODO no empty currencies
  4303. 11.19 s [really-safe-money]
  4304. 11.19 s [really-safe-money] added 27 mutations
  4305. 11.59 s [really-safe-money] [11 of 12] Compiling Money.AccountOf ( src/Money/AccountOf.hs, dist/build/Money/AccountOf.o, dist/build/Money/AccountOf.dyn_o )
  4306. 11.60 s [really-safe-money] mutation: instrumenting Money.AccountOf
  4307. 11.60 s [really-safe-money] added mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  4308. 11.60 s [really-safe-money] @@ -177,11 +177,11 @@
  4309. 11.60 s [really-safe-money]
  4310. 11.60 s [really-safe-money] -- | See 'Account.distribute'
  4311. 11.60 s [really-safe-money] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  4312. 11.60 s [really-safe-money] -distribute (AccountOf a) w = case Account.distribute a w of
  4313. 11.60 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  4314. 11.61 s [really-safe-money] - DistributedZero -> DistributedZero
  4315. 11.61 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  4316. 11.61 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  4317. 11.61 s [really-safe-money] +distribute (AccountOf a) w = case Account.distribute a w of
  4318. 11.61 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  4319. 11.61 s [really-safe-money] + DistributedZero -> DistributedZero
  4320. 11.61 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  4321. 11.61 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  4322. 11.61 s [really-safe-money]
  4323. 11.61 s [really-safe-money] -- | The result of 'distribute'
  4324. 11.61 s [really-safe-money] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  4325. 11.61 s [really-safe-money] added mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  4326. 11.61 s [really-safe-money] @@ -177,11 +177,11 @@
  4327. 11.61 s [really-safe-money]
  4328. 11.61 s [really-safe-money] -- | See 'Account.distribute'
  4329. 11.61 s [really-safe-money] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  4330. 11.61 s [really-safe-money] -distribute (AccountOf a) w = case Account.distribute a w of
  4331. 11.61 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  4332. 11.61 s [really-safe-money] - DistributedZero -> DistributedZero
  4333. 11.61 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  4334. 11.61 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  4335. 11.61 s [really-safe-money] +distribute (AccountOf a) w = case Account.distribute a w of
  4336. 11.61 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  4337. 11.61 s [really-safe-money] + DistributedZero -> DistributedZero
  4338. 11.61 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  4339. 11.61 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  4340. 11.61 s [really-safe-money]
  4341. 11.61 s [really-safe-money] -- | The result of 'distribute'
  4342. 11.61 s [really-safe-money] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  4343. 11.61 s [really-safe-money] added mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  4344. 11.61 s [really-safe-money] @@ -177,11 +177,11 @@
  4345. 11.61 s [really-safe-money]
  4346. 11.61 s [really-safe-money] -- | See 'Account.distribute'
  4347. 11.61 s [really-safe-money] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  4348. 11.61 s [really-safe-money] -distribute (AccountOf a) w = case Account.distribute a w of
  4349. 11.61 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  4350. 11.61 s [really-safe-money] - DistributedZero -> DistributedZero
  4351. 11.61 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  4352. 11.61 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  4353. 11.61 s [really-safe-money] +distribute (AccountOf a) w = case Account.distribute a w of
  4354. 11.61 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  4355. 11.61 s [really-safe-money] + DistributedZero -> DistributedZero
  4356. 11.61 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  4357. 11.61 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  4358. 11.61 s [really-safe-money]
  4359. 11.61 s [really-safe-money] -- | The result of 'distribute'
  4360. 11.61 s [really-safe-money] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  4361. 11.61 s [really-safe-money] added mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  4362. 11.61 s [really-safe-money] @@ -177,11 +177,11 @@
  4363. 11.61 s [really-safe-money]
  4364. 11.61 s [really-safe-money] -- | See 'Account.distribute'
  4365. 11.61 s [really-safe-money] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  4366. 11.61 s [really-safe-money] -distribute (AccountOf a) w = case Account.distribute a w of
  4367. 11.61 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  4368. 11.61 s [really-safe-money] - DistributedZero -> DistributedZero
  4369. 11.61 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  4370. 11.61 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  4371. 11.61 s [really-safe-money] +distribute (AccountOf a) w = case Account.distribute a w of
  4372. 11.61 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  4373. 11.61 s [really-safe-money] + DistributedZero -> DistributedZero
  4374. 11.61 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  4375. 11.61 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  4376. 11.61 s [really-safe-money]
  4377. 11.61 s [really-safe-money] -- | The result of 'distribute'
  4378. 11.61 s [really-safe-money] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  4379. 11.61 s [really-safe-money] added 4 mutations
  4380. 11.75 s [really-safe-money] [12 of 12] Compiling Paths_really_safe_money ( dist/build/autogen/Paths_really_safe_money.hs, dist/build/Paths_really_safe_money.o, dist/build/Paths_really_safe_money.dyn_o )
  4381. 12.02 s [really-safe-money] [ 1 of 12] Compiling Numeric.DecimalLiteral ( src/Numeric/DecimalLiteral.hs, dist/build/Numeric/DecimalLiteral.p_o )
  4382. 12.28 s [really-safe-money] mutation: instrumenting Numeric.DecimalLiteral
  4383. 12.28 s [really-safe-money] added mutation BoolLit at src/Numeric/DecimalLiteral.hs:396:23-27
  4384. 12.28 s [really-safe-money] @@ -393,5 +393,5 @@
  4385. 12.29 s [really-safe-money] DecimalLiteral mS m e -> DecimalLiteral (go mS) m e
  4386. 12.29 s [really-safe-money] where
  4387. 12.29 s [really-safe-money] go = \case
  4388. 12.29 s [really-safe-money] - Nothing -> Just True
  4389. 12.29 s [really-safe-money] + Nothing -> Just False
  4390. 12.29 s [really-safe-money] s -> s
  4391. 12.29 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:368:10-39
  4392. 12.29 s [really-safe-money] @@ -365,7 +365,7 @@
  4393. 12.29 s [really-safe-money] setMinimumDigits wantedDigits dl =
  4394. 12.29 s [really-safe-money] let currentDigits :: Word8
  4395. 12.29 s [really-safe-money] currentDigits = digits dl
  4396. 12.29 s [really-safe-money] - in if wantedDigits <= currentDigits
  4397. 12.29 s [really-safe-money] + in if True
  4398. 12.29 s [really-safe-money] then dl
  4399. 12.29 s [really-safe-money] else increaseDigits (wantedDigits - currentDigits) dl
  4400. 12.29 s [really-safe-money] where
  4401. 12.29 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:368:10-39
  4402. 12.29 s [really-safe-money] @@ -365,7 +365,7 @@
  4403. 12.29 s [really-safe-money] setMinimumDigits wantedDigits dl =
  4404. 12.29 s [really-safe-money] let currentDigits :: Word8
  4405. 12.29 s [really-safe-money] currentDigits = digits dl
  4406. 12.29 s [really-safe-money] - in if wantedDigits <= currentDigits
  4407. 12.29 s [really-safe-money] + in if False
  4408. 12.29 s [really-safe-money] then dl
  4409. 12.29 s [really-safe-money] else increaseDigits (wantedDigits - currentDigits) dl
  4410. 12.29 s [really-safe-money] where
  4411. 12.29 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:368:10-39
  4412. 12.29 s [really-safe-money] @@ -365,7 +365,7 @@
  4413. 12.29 s [really-safe-money] setMinimumDigits wantedDigits dl =
  4414. 12.29 s [really-safe-money] let currentDigits :: Word8
  4415. 12.29 s [really-safe-money] currentDigits = digits dl
  4416. 12.29 s [really-safe-money] - in if wantedDigits <= currentDigits
  4417. 12.29 s [really-safe-money] + in if not (wantedDigits <= currentDigits)
  4418. 12.29 s [really-safe-money] then dl
  4419. 12.29 s [really-safe-money] else increaseDigits (wantedDigits - currentDigits) dl
  4420. 12.29 s [really-safe-money] where
  4421. 12.29 s [really-safe-money] added mutation CondFlip at src/Numeric/DecimalLiteral.hs:368:7-62
  4422. 12.29 s [really-safe-money] @@ -365,9 +365,9 @@
  4423. 12.29 s [really-safe-money] setMinimumDigits wantedDigits dl =
  4424. 12.29 s [really-safe-money] let currentDigits :: Word8
  4425. 12.29 s [really-safe-money] currentDigits = digits dl
  4426. 12.29 s [really-safe-money] - in if wantedDigits <= currentDigits
  4427. 12.29 s [really-safe-money] - then dl
  4428. 12.29 s [really-safe-money] - else increaseDigits (wantedDigits - currentDigits) dl
  4429. 12.29 s [really-safe-money] + in if wantedDigits <= currentDigits
  4430. 12.29 s [really-safe-money] + then dl
  4431. 12.29 s [really-safe-money] + else increaseDigits (wantedDigits - currentDigits) dl
  4432. 12.29 s [really-safe-money] where
  4433. 12.29 s [really-safe-money] increaseDigits :: Word8 -> DecimalLiteral -> DecimalLiteral
  4434. 12.29 s [really-safe-money] increaseDigits 0 = id
  4435. 12.29 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:375:80-82
  4436. 12.29 s [really-safe-money] @@ -372,7 +372,7 @@
  4437. 12.29 s [really-safe-money] increaseDigits :: Word8 -> DecimalLiteral -> DecimalLiteral
  4438. 12.29 s [really-safe-money] increaseDigits 0 = id
  4439. 12.29 s [really-safe-money] increaseDigits w = \case
  4440. 12.29 s [really-safe-money] - DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 10) (succ e))
  4441. 12.29 s [really-safe-money] + DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 0) (succ e))
  4442. 12.29 s [really-safe-money]
  4443. 12.29 s [really-safe-money] -- | Ensures that a positive literal has no sign
  4444. 12.29 s [really-safe-money] --
  4445. 12.29 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:375:80-82
  4446. 12.29 s [really-safe-money] @@ -372,7 +372,7 @@
  4447. 12.29 s [really-safe-money] increaseDigits :: Word8 -> DecimalLiteral -> DecimalLiteral
  4448. 12.29 s [really-safe-money] increaseDigits 0 = id
  4449. 12.29 s [really-safe-money] increaseDigits w = \case
  4450. 12.29 s [really-safe-money] - DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 10) (succ e))
  4451. 12.29 s [really-safe-money] + DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 1) (succ e))
  4452. 12.29 s [really-safe-money]
  4453. 12.29 s [really-safe-money] -- | Ensures that a positive literal has no sign
  4454. 12.29 s [really-safe-money] --
  4455. 12.29 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:337:21-22
  4456. 12.29 s [really-safe-money] @@ -334,7 +334,7 @@
  4457. 12.29 s [really-safe-money] pure $ fromIntegral n
  4458. 12.29 s [really-safe-money]
  4459. 12.29 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  4460. 12.29 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  4461. 12.29 s [really-safe-money] +numSign a = if a >= 1 then Nothing else Just False
  4462. 12.29 s [really-safe-money]
  4463. 12.29 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  4464. 12.29 s [really-safe-money] signSignum = \case
  4465. 12.29 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:337:16-22
  4466. 12.29 s [really-safe-money] @@ -334,7 +334,7 @@
  4467. 12.29 s [really-safe-money] pure $ fromIntegral n
  4468. 12.29 s [really-safe-money]
  4469. 12.29 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  4470. 12.29 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  4471. 12.29 s [really-safe-money] +numSign a = if True then Nothing else Just False
  4472. 12.29 s [really-safe-money]
  4473. 12.29 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  4474. 12.29 s [really-safe-money] signSignum = \case
  4475. 12.29 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:337:16-22
  4476. 12.29 s [really-safe-money] @@ -334,7 +334,7 @@
  4477. 12.29 s [really-safe-money] pure $ fromIntegral n
  4478. 12.29 s [really-safe-money]
  4479. 12.29 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  4480. 12.29 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  4481. 12.29 s [really-safe-money] +numSign a = if False then Nothing else Just False
  4482. 12.29 s [really-safe-money]
  4483. 12.29 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  4484. 12.29 s [really-safe-money] signSignum = \case
  4485. 12.29 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:337:16-22
  4486. 12.29 s [really-safe-money] @@ -334,7 +334,7 @@
  4487. 12.29 s [really-safe-money] pure $ fromIntegral n
  4488. 12.29 s [really-safe-money]
  4489. 12.29 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  4490. 12.29 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  4491. 12.29 s [really-safe-money] +numSign a = if not (a >= 0) then Nothing else Just False
  4492. 12.29 s [really-safe-money]
  4493. 12.29 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  4494. 12.29 s [really-safe-money] signSignum = \case
  4495. 12.29 s [really-safe-money] added mutation BoolLit at src/Numeric/DecimalLiteral.hs:337:46-51
  4496. 12.29 s [really-safe-money] @@ -334,7 +334,7 @@
  4497. 12.29 s [really-safe-money] pure $ fromIntegral n
  4498. 12.29 s [really-safe-money]
  4499. 12.29 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  4500. 12.29 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  4501. 12.29 s [really-safe-money] +numSign a = if a >= 0 then Nothing else Just True
  4502. 12.29 s [really-safe-money]
  4503. 12.29 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  4504. 12.29 s [really-safe-money] signSignum = \case
  4505. 12.29 s [really-safe-money] added mutation CondFlip at src/Numeric/DecimalLiteral.hs:337:13-51
  4506. 12.29 s [really-safe-money] @@ -334,7 +334,7 @@
  4507. 12.29 s [really-safe-money] pure $ fromIntegral n
  4508. 12.29 s [really-safe-money]
  4509. 12.29 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  4510. 12.29 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  4511. 12.29 s [really-safe-money] +numSign a = if a >= 0 then Nothing else Just False
  4512. 12.29 s [really-safe-money]
  4513. 12.29 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  4514. 12.29 s [really-safe-money] signSignum = \case
  4515. 12.29 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46
  4516. 12.29 s [really-safe-money] @@ -329,7 +329,7 @@
  4517. 12.29 s [really-safe-money] toInt :: DecimalLiteral -> Maybe Int
  4518. 12.29 s [really-safe-money] toInt dl = do
  4519. 12.29 s [really-safe-money] n <- toInteger dl
  4520. 12.29 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Int)
  4521. 12.29 s [really-safe-money] + guard $ True
  4522. 12.29 s [really-safe-money] guard $ n >= fromIntegral (minBound :: Int)
  4523. 12.29 s [really-safe-money] pure $ fromIntegral n
  4524. 12.29 s [really-safe-money]
  4525. 12.29 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46
  4526. 12.29 s [really-safe-money] @@ -329,7 +329,7 @@
  4527. 12.29 s [really-safe-money] toInt :: DecimalLiteral -> Maybe Int
  4528. 12.29 s [really-safe-money] toInt dl = do
  4529. 12.29 s [really-safe-money] n <- toInteger dl
  4530. 12.29 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Int)
  4531. 12.29 s [really-safe-money] + guard $ False
  4532. 12.29 s [really-safe-money] guard $ n >= fromIntegral (minBound :: Int)
  4533. 12.29 s [really-safe-money] pure $ fromIntegral n
  4534. 12.29 s [really-safe-money]
  4535. 12.29 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:332:11-46
  4536. 12.29 s [really-safe-money] @@ -329,7 +329,7 @@
  4537. 12.29 s [really-safe-money] toInt :: DecimalLiteral -> Maybe Int
  4538. 12.29 s [really-safe-money] toInt dl = do
  4539. 12.29 s [really-safe-money] n <- toInteger dl
  4540. 12.29 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Int)
  4541. 12.29 s [really-safe-money] + guard $ not (n <= fromIntegral (maxBound :: Int))
  4542. 12.29 s [really-safe-money] guard $ n >= fromIntegral (minBound :: Int)
  4543. 12.29 s [really-safe-money] pure $ fromIntegral n
  4544. 12.29 s [really-safe-money]
  4545. 12.29 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46
  4546. 12.29 s [really-safe-money] @@ -330,7 +330,7 @@
  4547. 12.29 s [really-safe-money] toInt dl = do
  4548. 12.29 s [really-safe-money] n <- toInteger dl
  4549. 12.29 s [really-safe-money] guard $ n <= fromIntegral (maxBound :: Int)
  4550. 12.29 s [really-safe-money] - guard $ n >= fromIntegral (minBound :: Int)
  4551. 12.29 s [really-safe-money] + guard $ True
  4552. 12.29 s [really-safe-money] pure $ fromIntegral n
  4553. 12.29 s [really-safe-money]
  4554. 12.29 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  4555. 12.29 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46
  4556. 12.29 s [really-safe-money] @@ -330,7 +330,7 @@
  4557. 12.29 s [really-safe-money] toInt dl = do
  4558. 12.29 s [really-safe-money] n <- toInteger dl
  4559. 12.29 s [really-safe-money] guard $ n <= fromIntegral (maxBound :: Int)
  4560. 12.29 s [really-safe-money] - guard $ n >= fromIntegral (minBound :: Int)
  4561. 12.29 s [really-safe-money] + guard $ False
  4562. 12.29 s [really-safe-money] pure $ fromIntegral n
  4563. 12.29 s [really-safe-money]
  4564. 12.29 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  4565. 12.29 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:333:11-46
  4566. 12.29 s [really-safe-money] @@ -330,7 +330,7 @@
  4567. 12.29 s [really-safe-money] toInt dl = do
  4568. 12.29 s [really-safe-money] n <- toInteger dl
  4569. 12.29 s [really-safe-money] guard $ n <= fromIntegral (maxBound :: Int)
  4570. 12.29 s [really-safe-money] - guard $ n >= fromIntegral (minBound :: Int)
  4571. 12.29 s [really-safe-money] + guard $ not (n >= fromIntegral (minBound :: Int))
  4572. 12.29 s [really-safe-money] pure $ fromIntegral n
  4573. 12.29 s [really-safe-money]
  4574. 12.29 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  4575. 12.29 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:315:67-68
  4576. 12.29 s [really-safe-money] @@ -312,7 +312,7 @@
  4577. 12.29 s [really-safe-money]
  4578. 12.29 s [really-safe-money] -- | Construct a 'DecimalLiteral' from an 'Integer'
  4579. 12.29 s [really-safe-money] fromInteger :: Integer -> DecimalLiteral
  4580. 12.29 s [really-safe-money] -fromInteger n = DecimalLiteral (numSign n) (fromIntegral (abs n)) 0
  4581. 12.29 s [really-safe-money] +fromInteger n = DecimalLiteral (numSign n) (fromIntegral (abs n)) 1
  4582. 12.29 s [really-safe-money]
  4583. 12.29 s [really-safe-money] -- | Turn a 'DecimalLiteral' into an 'Integer'
  4584. 12.29 s [really-safe-money] toInteger :: DecimalLiteral -> Maybe Integer
  4585. 12.29 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:304:42-43
  4586. 12.29 s [really-safe-money] @@ -301,7 +301,7 @@
  4587. 12.29 s [really-safe-money]
  4588. 12.29 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Natural'
  4589. 12.29 s [really-safe-money] fromNatural :: Natural -> DecimalLiteral
  4590. 12.29 s [really-safe-money] -fromNatural n = DecimalLiteral Nothing n 0
  4591. 12.29 s [really-safe-money] +fromNatural n = DecimalLiteral Nothing n 1
  4592. 12.29 s [really-safe-money]
  4593. 12.29 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Natural'
  4594. 12.29 s [really-safe-money] toNatural :: DecimalLiteral -> Maybe Natural
  4595. 12.29 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47
  4596. 12.29 s [really-safe-money] @@ -296,7 +296,7 @@
  4597. 12.29 s [really-safe-money] toWord :: DecimalLiteral -> Maybe Word
  4598. 12.29 s [really-safe-money] toWord dl = do
  4599. 12.29 s [really-safe-money] n <- toNatural dl
  4600. 12.29 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Word)
  4601. 12.29 s [really-safe-money] + guard $ True
  4602. 12.29 s [really-safe-money] pure $ fromIntegral n
  4603. 12.29 s [really-safe-money]
  4604. 12.29 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Natural'
  4605. 12.30 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47
  4606. 12.30 s [really-safe-money] @@ -296,7 +296,7 @@
  4607. 12.30 s [really-safe-money] toWord :: DecimalLiteral -> Maybe Word
  4608. 12.30 s [really-safe-money] toWord dl = do
  4609. 12.30 s [really-safe-money] n <- toNatural dl
  4610. 12.30 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Word)
  4611. 12.30 s [really-safe-money] + guard $ False
  4612. 12.30 s [really-safe-money] pure $ fromIntegral n
  4613. 12.30 s [really-safe-money]
  4614. 12.30 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Natural'
  4615. 12.30 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:299:11-47
  4616. 12.30 s [really-safe-money] @@ -296,7 +296,7 @@
  4617. 12.30 s [really-safe-money] toWord :: DecimalLiteral -> Maybe Word
  4618. 12.30 s [really-safe-money] toWord dl = do
  4619. 12.30 s [really-safe-money] n <- toNatural dl
  4620. 12.30 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Word)
  4621. 12.30 s [really-safe-money] + guard $ not (n <= fromIntegral (maxBound :: Word))
  4622. 12.30 s [really-safe-money] pure $ fromIntegral n
  4623. 12.30 s [really-safe-money]
  4624. 12.30 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Natural'
  4625. 12.30 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  4626. 12.30 s [really-safe-money] @@ -286,7 +286,7 @@
  4627. 12.30 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  4628. 12.30 s [really-safe-money] toRatio (DecimalLiteral mSign m e) = case mSign of
  4629. 12.30 s [really-safe-money] Just False -> Nothing
  4630. 12.30 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  4631. 12.30 s [really-safe-money] + _ -> Just $ fromIntegral m / (0 ^ e)
  4632. 12.30 s [really-safe-money]
  4633. 12.30 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  4634. 12.30 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  4635. 12.30 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  4636. 12.30 s [really-safe-money] @@ -286,7 +286,7 @@
  4637. 12.30 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  4638. 12.30 s [really-safe-money] toRatio (DecimalLiteral mSign m e) = case mSign of
  4639. 12.30 s [really-safe-money] Just False -> Nothing
  4640. 12.30 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  4641. 12.30 s [really-safe-money] + _ -> Just $ fromIntegral m / (1 ^ e)
  4642. 12.30 s [really-safe-money]
  4643. 12.30 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  4644. 12.30 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  4645. 12.30 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  4646. 12.30 s [really-safe-money] @@ -286,7 +286,7 @@
  4647. 12.30 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  4648. 12.30 s [really-safe-money] toRatio (DecimalLiteral mSign m e) = case mSign of
  4649. 12.30 s [really-safe-money] Just False -> Nothing
  4650. 12.30 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  4651. 12.30 s [really-safe-money] + _ -> Just $ fromIntegral m / (-10 ^ e)
  4652. 12.30 s [really-safe-money]
  4653. 12.30 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  4654. 12.30 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  4655. 12.30 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:287:38-40
  4656. 12.30 s [really-safe-money] @@ -284,9 +284,9 @@
  4657. 12.30 s [really-safe-money] -- >>> toRatio (DecimalLiteral (Just False) 3 1)
  4658. 12.30 s [really-safe-money] -- Nothing
  4659. 12.30 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  4660. 12.30 s [really-safe-money] -toRatio (DecimalLiteral mSign m e) = case mSign of
  4661. 12.30 s [really-safe-money] - Just False -> Nothing
  4662. 12.30 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  4663. 12.30 s [really-safe-money] +toRatio (DecimalLiteral mSign m e) = case mSign of
  4664. 12.30 s [really-safe-money] + Just False -> Nothing
  4665. 12.30 s [really-safe-money] + _ -> Just $ fromIntegral m / (10 ^ e)
  4666. 12.30 s [really-safe-money]
  4667. 12.30 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  4668. 12.30 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  4669. 12.30 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:287:38-40
  4670. 12.30 s [really-safe-money] @@ -284,9 +284,9 @@
  4671. 12.30 s [really-safe-money] -- >>> toRatio (DecimalLiteral (Just False) 3 1)
  4672. 12.30 s [really-safe-money] -- Nothing
  4673. 12.30 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  4674. 12.30 s [really-safe-money] -toRatio (DecimalLiteral mSign m e) = case mSign of
  4675. 12.30 s [really-safe-money] - Just False -> Nothing
  4676. 12.30 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  4677. 12.30 s [really-safe-money] +toRatio (DecimalLiteral mSign m e) = case mSign of
  4678. 12.30 s [really-safe-money] + Just False -> Nothing
  4679. 12.30 s [really-safe-money] + _ -> Just $ fromIntegral m / (10 ^ e)
  4680. 12.30 s [really-safe-money]
  4681. 12.30 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  4682. 12.30 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  4683. 12.30 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44
  4684. 12.30 s [really-safe-money] @@ -233,7 +233,7 @@
  4685. 12.30 s [really-safe-money] -- >>> fromRatio (1 % 3)
  4686. 12.30 s [really-safe-money] -- Nothing
  4687. 12.30 s [really-safe-money] fromRatio :: Ratio Natural -> Maybe DecimalLiteral
  4688. 12.30 s [really-safe-money] -fromRatio = fromRationalRepetendLimited 256
  4689. 12.30 s [really-safe-money] +fromRatio = fromRationalRepetendLimited 0
  4690. 12.30 s [really-safe-money] where
  4691. 12.30 s [really-safe-money] fromRationalRepetendLimited ::
  4692. 12.30 s [really-safe-money] -- limit
  4693. 12.30 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44
  4694. 12.30 s [really-safe-money] @@ -233,7 +233,7 @@
  4695. 12.30 s [really-safe-money] -- >>> fromRatio (1 % 3)
  4696. 12.30 s [really-safe-money] -- Nothing
  4697. 12.30 s [really-safe-money] fromRatio :: Ratio Natural -> Maybe DecimalLiteral
  4698. 12.30 s [really-safe-money] -fromRatio = fromRationalRepetendLimited 256
  4699. 12.30 s [really-safe-money] +fromRatio = fromRationalRepetendLimited 1
  4700. 12.30 s [really-safe-money] where
  4701. 12.30 s [really-safe-money] fromRationalRepetendLimited ::
  4702. 12.30 s [really-safe-money] -- limit
  4703. 12.30 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44
  4704. 12.30 s [really-safe-money] @@ -233,7 +233,7 @@
  4705. 12.30 s [really-safe-money] -- >>> fromRatio (1 % 3)
  4706. 12.30 s [really-safe-money] -- Nothing
  4707. 12.30 s [really-safe-money] fromRatio :: Ratio Natural -> Maybe DecimalLiteral
  4708. 12.30 s [really-safe-money] -fromRatio = fromRationalRepetendLimited 256
  4709. 12.30 s [really-safe-money] +fromRatio = fromRationalRepetendLimited -256
  4710. 12.30 s [really-safe-money] where
  4711. 12.30 s [really-safe-money] fromRationalRepetendLimited ::
  4712. 12.30 s [really-safe-money] -- limit
  4713. 12.30 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:244:14-15
  4714. 12.30 s [really-safe-money] @@ -241,7 +241,7 @@
  4715. 12.30 s [really-safe-money] Ratio Natural ->
  4716. 12.30 s [really-safe-money] Maybe DecimalLiteral
  4717. 12.30 s [really-safe-money] fromRationalRepetendLimited l rational
  4718. 12.30 s [really-safe-money] - | d == 0 = Nothing
  4719. 12.30 s [really-safe-money] + | d == 1 = Nothing
  4720. 12.30 s [really-safe-money] | otherwise = toLiteral Nothing <$> longDiv num
  4721. 12.30 s [really-safe-money] where
  4722. 12.30 s [really-safe-money] toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e)
  4723. 12.30 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:244:9-15
  4724. 12.30 s [really-safe-money] @@ -241,7 +241,7 @@
  4725. 12.30 s [really-safe-money] Ratio Natural ->
  4726. 12.30 s [really-safe-money] Maybe DecimalLiteral
  4727. 12.30 s [really-safe-money] fromRationalRepetendLimited l rational
  4728. 12.30 s [really-safe-money] - | d == 0 = Nothing
  4729. 12.30 s [really-safe-money] + | True = Nothing
  4730. 12.30 s [really-safe-money] | otherwise = toLiteral Nothing <$> longDiv num
  4731. 12.30 s [really-safe-money] where
  4732. 12.30 s [really-safe-money] toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e)
  4733. 12.30 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:244:9-15
  4734. 12.30 s [really-safe-money] @@ -241,7 +241,7 @@
  4735. 12.30 s [really-safe-money] Ratio Natural ->
  4736. 12.30 s [really-safe-money] Maybe DecimalLiteral
  4737. 12.30 s [really-safe-money] fromRationalRepetendLimited l rational
  4738. 12.30 s [really-safe-money] - | d == 0 = Nothing
  4739. 12.30 s [really-safe-money] + | not (d == 0) = Nothing
  4740. 12.30 s [really-safe-money] | otherwise = toLiteral Nothing <$> longDiv num
  4741. 12.30 s [really-safe-money] where
  4742. 12.30 s [really-safe-money] toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e)
  4743. 12.30 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:264:13-26
  4744. 12.30 s [really-safe-money] @@ -261,7 +261,7 @@
  4745. 12.30 s [really-safe-money] Just (c, e)
  4746. 12.30 s [really-safe-money] longDivWithLimit !c !e ns !n
  4747. 12.30 s [really-safe-money] -- If there's a repetend, we can't turn it into a decimal literal
  4748. 12.30 s [really-safe-money] - | S.member n ns = Nothing
  4749. 12.30 s [really-safe-money] + | True = Nothing
  4750. 12.30 s [really-safe-money] -- Over the limit, stop trying
  4751. 12.30 s [really-safe-money] | e >= l = Nothing
  4752. 12.30 s [really-safe-money] | n < d =
  4753. 12.30 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:264:13-26
  4754. 12.30 s [really-safe-money] @@ -261,7 +261,7 @@
  4755. 12.30 s [really-safe-money] Just (c, e)
  4756. 12.30 s [really-safe-money] longDivWithLimit !c !e ns !n
  4757. 12.30 s [really-safe-money] -- If there's a repetend, we can't turn it into a decimal literal
  4758. 12.30 s [really-safe-money] - | S.member n ns = Nothing
  4759. 12.30 s [really-safe-money] + | not (S.member n ns) = Nothing
  4760. 12.30 s [really-safe-money] -- Over the limit, stop trying
  4761. 12.30 s [really-safe-money] | e >= l = Nothing
  4762. 12.30 s [really-safe-money] | n < d =
  4763. 12.30 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:266:13-19
  4764. 12.30 s [really-safe-money] @@ -263,7 +263,7 @@
  4765. 12.30 s [really-safe-money] -- If there's a repetend, we can't turn it into a decimal literal
  4766. 12.30 s [really-safe-money] | S.member n ns = Nothing
  4767. 12.30 s [really-safe-money] -- Over the limit, stop trying
  4768. 12.30 s [really-safe-money] - | e >= l = Nothing
  4769. 12.30 s [really-safe-money] + | True = Nothing
  4770. 12.30 s [really-safe-money] | n < d =
  4771. 12.30 s [really-safe-money] let !ns' = S.insert n ns
  4772. 12.30 s [really-safe-money] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  4773. 12.30 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:266:13-19
  4774. 12.30 s [really-safe-money] @@ -263,7 +263,7 @@
  4775. 12.30 s [really-safe-money] -- If there's a repetend, we can't turn it into a decimal literal
  4776. 12.30 s [really-safe-money] | S.member n ns = Nothing
  4777. 12.30 s [really-safe-money] -- Over the limit, stop trying
  4778. 12.30 s [really-safe-money] - | e >= l = Nothing
  4779. 12.30 s [really-safe-money] + | not (e >= l) = Nothing
  4780. 12.30 s [really-safe-money] | n < d =
  4781. 12.30 s [really-safe-money] let !ns' = S.insert n ns
  4782. 12.30 s [really-safe-money] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  4783. 12.30 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:267:13-18
  4784. 12.30 s [really-safe-money] @@ -264,7 +264,7 @@
  4785. 12.30 s [really-safe-money] | S.member n ns = Nothing
  4786. 12.30 s [really-safe-money] -- Over the limit, stop trying
  4787. 12.30 s [really-safe-money] | e >= l = Nothing
  4788. 12.30 s [really-safe-money] - | n < d =
  4789. 12.30 s [really-safe-money] + | True =
  4790. 12.30 s [really-safe-money] let !ns' = S.insert n ns
  4791. 12.30 s [really-safe-money] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  4792. 12.30 s [really-safe-money] | otherwise =
  4793. 12.30 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:267:13-18
  4794. 12.30 s [really-safe-money] @@ -264,7 +264,7 @@
  4795. 12.30 s [really-safe-money] | S.member n ns = Nothing
  4796. 12.30 s [really-safe-money] -- Over the limit, stop trying
  4797. 12.30 s [really-safe-money] | e >= l = Nothing
  4798. 12.30 s [really-safe-money] - | n < d =
  4799. 12.30 s [really-safe-money] + | not (n < d) =
  4800. 12.30 s [really-safe-money] let !ns' = S.insert n ns
  4801. 12.30 s [really-safe-money] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  4802. 12.30 s [really-safe-money] | otherwise =
  4803. 12.30 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:269:41-43
  4804. 12.30 s [really-safe-money] @@ -266,7 +266,7 @@
  4805. 12.30 s [really-safe-money] | e >= l = Nothing
  4806. 12.30 s [really-safe-money] | n < d =
  4807. 12.30 s [really-safe-money] let !ns' = S.insert n ns
  4808. 12.30 s [really-safe-money] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  4809. 12.30 s [really-safe-money] + in longDivWithLimit (c * 0) (succ e) ns' (n * 10)
  4810. 12.30 s [really-safe-money] | otherwise =
  4811. 12.30 s [really-safe-money] let (q, r') = n `quotRem` d
  4812. 12.30 s [really-safe-money] in longDivWithLimit (c + q) e ns r'
  4813. 12.30 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:269:41-43
  4814. 12.30 s [really-safe-money] @@ -266,7 +266,7 @@
  4815. 12.30 s [really-safe-money] | e >= l = Nothing
  4816. 12.30 s [really-safe-money] | n < d =
  4817. 12.30 s [really-safe-money] let !ns' = S.insert n ns
  4818. 12.30 s [really-safe-money] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  4819. 12.30 s [really-safe-money] + in longDivWithLimit (c * 1) (succ e) ns' (n * 10)
  4820. 12.30 s [really-safe-money] | otherwise =
  4821. 12.30 s [really-safe-money] let (q, r') = n `quotRem` d
  4822. 12.30 s [really-safe-money] in longDivWithLimit (c + q) e ns r'
  4823. 12.30 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:269:63-65
  4824. 12.30 s [really-safe-money] @@ -266,7 +266,7 @@
  4825. 12.30 s [really-safe-money] | e >= l = Nothing
  4826. 12.30 s [really-safe-money] | n < d =
  4827. 12.30 s [really-safe-money] let !ns' = S.insert n ns
  4828. 12.30 s [really-safe-money] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  4829. 12.30 s [really-safe-money] + in longDivWithLimit (c * 10) (succ e) ns' (n * 0)
  4830. 12.30 s [really-safe-money] | otherwise =
  4831. 12.30 s [really-safe-money] let (q, r') = n `quotRem` d
  4832. 12.30 s [really-safe-money] in longDivWithLimit (c + q) e ns r'
  4833. 12.30 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:269:63-65
  4834. 12.30 s [really-safe-money] @@ -266,7 +266,7 @@
  4835. 12.30 s [really-safe-money] | e >= l = Nothing
  4836. 12.30 s [really-safe-money] | n < d =
  4837. 12.30 s [really-safe-money] let !ns' = S.insert n ns
  4838. 12.30 s [really-safe-money] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  4839. 12.30 s [really-safe-money] + in longDivWithLimit (c * 10) (succ e) ns' (n * 1)
  4840. 12.30 s [really-safe-money] | otherwise =
  4841. 12.30 s [really-safe-money] let (q, r') = n `quotRem` d
  4842. 12.30 s [really-safe-money] in longDivWithLimit (c + q) e ns r'
  4843. 12.30 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:252:36-37
  4844. 12.30 s [really-safe-money] @@ -249,7 +249,7 @@
  4845. 12.30 s [really-safe-money] num = numerator rational
  4846. 12.30 s [really-safe-money]
  4847. 12.30 s [really-safe-money] longDiv :: Natural -> Maybe (Natural, Int)
  4848. 12.30 s [really-safe-money] - longDiv = longDivWithLimit 0 0 S.empty
  4849. 12.30 s [really-safe-money] + longDiv = longDivWithLimit 1 0 S.empty
  4850. 12.30 s [really-safe-money]
  4851. 12.30 s [really-safe-money] longDivWithLimit ::
  4852. 12.30 s [really-safe-money] Natural ->
  4853. 12.30 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:252:38-39
  4854. 12.30 s [really-safe-money] @@ -249,7 +249,7 @@
  4855. 12.30 s [really-safe-money] num = numerator rational
  4856. 12.30 s [really-safe-money]
  4857. 12.30 s [really-safe-money] longDiv :: Natural -> Maybe (Natural, Int)
  4858. 12.30 s [really-safe-money] - longDiv = longDivWithLimit 0 0 S.empty
  4859. 12.30 s [really-safe-money] + longDiv = longDivWithLimit 0 1 S.empty
  4860. 12.30 s [really-safe-money]
  4861. 12.30 s [really-safe-money] longDivWithLimit ::
  4862. 12.30 s [really-safe-money] Natural ->
  4863. 12.30 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:223:39-41
  4864. 12.30 s [really-safe-money] @@ -220,7 +220,7 @@
  4865. 12.30 s [really-safe-money] -- (-3) % 10
  4866. 12.30 s [really-safe-money] toRational :: DecimalLiteral -> Rational
  4867. 12.30 s [really-safe-money] toRational (DecimalLiteral mSign m e) =
  4868. 12.30 s [really-safe-money] - signSignum mSign (fromIntegral m / (10 ^ e))
  4869. 12.30 s [really-safe-money] + signSignum mSign (fromIntegral m / (0 ^ e))
  4870. 12.30 s [really-safe-money]
  4871. 12.30 s [really-safe-money] -- | Parse a 'DecimalLiteral' from a 'Ratio Natural'
  4872. 12.30 s [really-safe-money] --
  4873. 12.30 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:223:39-41
  4874. 12.30 s [really-safe-money] @@ -220,7 +220,7 @@
  4875. 12.30 s [really-safe-money] -- (-3) % 10
  4876. 12.30 s [really-safe-money] toRational :: DecimalLiteral -> Rational
  4877. 12.30 s [really-safe-money] toRational (DecimalLiteral mSign m e) =
  4878. 12.30 s [really-safe-money] - signSignum mSign (fromIntegral m / (10 ^ e))
  4879. 12.30 s [really-safe-money] + signSignum mSign (fromIntegral m / (1 ^ e))
  4880. 12.30 s [really-safe-money]
  4881. 12.30 s [really-safe-money] -- | Parse a 'DecimalLiteral' from a 'Ratio Natural'
  4882. 12.30 s [really-safe-money] --
  4883. 12.30 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:223:39-41
  4884. 12.30 s [really-safe-money] @@ -220,7 +220,7 @@
  4885. 12.30 s [really-safe-money] -- (-3) % 10
  4886. 12.30 s [really-safe-money] toRational :: DecimalLiteral -> Rational
  4887. 12.30 s [really-safe-money] toRational (DecimalLiteral mSign m e) =
  4888. 12.30 s [really-safe-money] - signSignum mSign (fromIntegral m / (10 ^ e))
  4889. 12.30 s [really-safe-money] + signSignum mSign (fromIntegral m / (-10 ^ e))
  4890. 12.30 s [really-safe-money]
  4891. 12.30 s [really-safe-money] -- | Parse a 'DecimalLiteral' from a 'Ratio Natural'
  4892. 12.30 s [really-safe-money] --
  4893. 12.30 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:208:9-10
  4894. 12.30 s [really-safe-money] @@ -205,7 +205,7 @@
  4895. 12.30 s [really-safe-money] -- Nothing
  4896. 12.30 s [really-safe-money] fromRational :: Rational -> Maybe DecimalLiteral
  4897. 12.30 s [really-safe-money] fromRational (n :% d)
  4898. 12.30 s [really-safe-money] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  4899. 12.30 s [really-safe-money] + | n < 1 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  4900. 12.30 s [really-safe-money] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  4901. 12.30 s [really-safe-money]
  4902. 12.30 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Rational'
  4903. 12.30 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:208:5-10
  4904. 12.30 s [really-safe-money] @@ -205,7 +205,7 @@
  4905. 12.30 s [really-safe-money] -- Nothing
  4906. 12.30 s [really-safe-money] fromRational :: Rational -> Maybe DecimalLiteral
  4907. 12.30 s [really-safe-money] fromRational (n :% d)
  4908. 12.30 s [really-safe-money] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  4909. 12.30 s [really-safe-money] + | True = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  4910. 12.30 s [really-safe-money] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  4911. 12.30 s [really-safe-money]
  4912. 12.30 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Rational'
  4913. 12.30 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:208:5-10
  4914. 12.30 s [really-safe-money] @@ -205,7 +205,7 @@
  4915. 12.30 s [really-safe-money] -- Nothing
  4916. 12.30 s [really-safe-money] fromRational :: Rational -> Maybe DecimalLiteral
  4917. 12.30 s [really-safe-money] fromRational (n :% d)
  4918. 12.30 s [really-safe-money] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  4919. 12.30 s [really-safe-money] + | not (n < 0) = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  4920. 12.30 s [really-safe-money] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  4921. 12.30 s [really-safe-money]
  4922. 12.30 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Rational'
  4923. 12.30 s [really-safe-money] added mutation BoolLit at src/Numeric/DecimalLiteral.hs:208:62-67
  4924. 12.30 s [really-safe-money] @@ -205,7 +205,7 @@
  4925. 12.30 s [really-safe-money] -- Nothing
  4926. 12.30 s [really-safe-money] fromRational :: Rational -> Maybe DecimalLiteral
  4927. 12.30 s [really-safe-money] fromRational (n :% d)
  4928. 12.30 s [really-safe-money] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  4929. 12.30 s [really-safe-money] + | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just True) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  4930. 12.30 s [really-safe-money] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  4931. 12.30 s [really-safe-money]
  4932. 12.30 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Rational'
  4933. 12.30 s [really-safe-money] added mutation ListLit at src/Numeric/DecimalLiteral.hs:186:15-25
  4934. 12.31 s [really-safe-money] @@ -183,7 +183,7 @@
  4935. 12.31 s [really-safe-money]
  4936. 12.31 s [really-safe-money] goFrac m e = reverse (go e (reverse (show m)))
  4937. 12.31 s [really-safe-money] go :: Word8 -> String -> String
  4938. 12.31 s [really-safe-money] - go 0 [] = ['.', '0']
  4939. 12.31 s [really-safe-money] + go 0 [] = []
  4940. 12.31 s [really-safe-money] go 0 s = '.' : s
  4941. 12.31 s [really-safe-money] go e [] = '0' : go (pred e) []
  4942. 12.31 s [really-safe-money] go e (c : cs) = c : go (pred e) cs
  4943. 12.31 s [really-safe-money] added mutation ListLit at src/Numeric/DecimalLiteral.hs:186:15-25
  4944. 12.31 s [really-safe-money] @@ -183,7 +183,7 @@
  4945. 12.31 s [really-safe-money]
  4946. 12.31 s [really-safe-money] goFrac m e = reverse (go e (reverse (show m)))
  4947. 12.31 s [really-safe-money] go :: Word8 -> String -> String
  4948. 12.31 s [really-safe-money] - go 0 [] = ['.', '0']
  4949. 12.31 s [really-safe-money] + go 0 [] = ['.', '0']
  4950. 12.31 s [really-safe-money] go 0 s = '.' : s
  4951. 12.31 s [really-safe-money] go e [] = '0' : go (pred e) []
  4952. 12.31 s [really-safe-money] go e (c : cs) = c : go (pred e) cs
  4953. 12.31 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30
  4954. 12.31 s [really-safe-money] @@ -142,7 +142,7 @@
  4955. 12.31 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  4956. 12.31 s [really-safe-money] parseDigits f z = do
  4957. 12.31 s [really-safe-money] c <- ReadP.satisfy Char.isDigit
  4958. 12.31 s [really-safe-money] - let digit = Char.ord c - 48
  4959. 12.31 s [really-safe-money] + let digit = Char.ord c - 0
  4960. 12.31 s [really-safe-money] case f z digit of
  4961. 12.31 s [really-safe-money] Nothing -> fail "Failed to step the first digit"
  4962. 12.31 s [really-safe-money] Just a -> ReadP.look >>= go a
  4963. 12.31 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30
  4964. 12.31 s [really-safe-money] @@ -142,7 +142,7 @@
  4965. 12.31 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  4966. 12.31 s [really-safe-money] parseDigits f z = do
  4967. 12.31 s [really-safe-money] c <- ReadP.satisfy Char.isDigit
  4968. 12.31 s [really-safe-money] - let digit = Char.ord c - 48
  4969. 12.31 s [really-safe-money] + let digit = Char.ord c - 1
  4970. 12.31 s [really-safe-money] case f z digit of
  4971. 12.31 s [really-safe-money] Nothing -> fail "Failed to step the first digit"
  4972. 12.31 s [really-safe-money] Just a -> ReadP.look >>= go a
  4973. 12.31 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30
  4974. 12.31 s [really-safe-money] @@ -142,7 +142,7 @@
  4975. 12.31 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  4976. 12.31 s [really-safe-money] parseDigits f z = do
  4977. 12.31 s [really-safe-money] c <- ReadP.satisfy Char.isDigit
  4978. 12.31 s [really-safe-money] - let digit = Char.ord c - 48
  4979. 12.31 s [really-safe-money] + let digit = Char.ord c - -48
  4980. 12.31 s [really-safe-money] case f z digit of
  4981. 12.31 s [really-safe-money] Nothing -> fail "Failed to step the first digit"
  4982. 12.31 s [really-safe-money] Just a -> ReadP.look >>= go a
  4983. 12.31 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:152:9-23
  4984. 12.31 s [really-safe-money] @@ -149,7 +149,7 @@
  4985. 12.31 s [really-safe-money] where
  4986. 12.31 s [really-safe-money] go !a [] = return a
  4987. 12.31 s [really-safe-money] go !a (c : cs)
  4988. 12.31 s [really-safe-money] - | Char.isDigit c = do
  4989. 12.31 s [really-safe-money] + | True = do
  4990. 12.31 s [really-safe-money] _ <- ReadP.get
  4991. 12.31 s [really-safe-money] let digit = Char.ord c - 48
  4992. 12.31 s [really-safe-money] case f a digit of
  4993. 12.31 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:152:9-23
  4994. 12.31 s [really-safe-money] @@ -149,7 +149,7 @@
  4995. 12.31 s [really-safe-money] where
  4996. 12.31 s [really-safe-money] go !a [] = return a
  4997. 12.31 s [really-safe-money] go !a (c : cs)
  4998. 12.31 s [really-safe-money] - | Char.isDigit c = do
  4999. 12.31 s [really-safe-money] + | not (Char.isDigit c) = do
  5000. 12.31 s [really-safe-money] _ <- ReadP.get
  5001. 12.31 s [really-safe-money] let digit = Char.ord c - 48
  5002. 12.31 s [really-safe-money] case f a digit of
  5003. 12.31 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:154:36-38
  5004. 12.31 s [really-safe-money] @@ -151,7 +151,7 @@
  5005. 12.31 s [really-safe-money] go !a (c : cs)
  5006. 12.31 s [really-safe-money] | Char.isDigit c = do
  5007. 12.31 s [really-safe-money] _ <- ReadP.get
  5008. 12.31 s [really-safe-money] - let digit = Char.ord c - 48
  5009. 12.31 s [really-safe-money] + let digit = Char.ord c - 0
  5010. 12.31 s [really-safe-money] case f a digit of
  5011. 12.31 s [really-safe-money] Nothing -> fail "Failed to step the digit"
  5012. 12.31 s [really-safe-money] Just a' -> go a' cs
  5013. 12.31 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:154:36-38
  5014. 12.31 s [really-safe-money] @@ -151,7 +151,7 @@
  5015. 12.31 s [really-safe-money] go !a (c : cs)
  5016. 12.31 s [really-safe-money] | Char.isDigit c = do
  5017. 12.31 s [really-safe-money] _ <- ReadP.get
  5018. 12.31 s [really-safe-money] - let digit = Char.ord c - 48
  5019. 12.31 s [really-safe-money] + let digit = Char.ord c - 1
  5020. 12.31 s [really-safe-money] case f a digit of
  5021. 12.31 s [really-safe-money] Nothing -> fail "Failed to step the digit"
  5022. 12.31 s [really-safe-money] Just a' -> go a' cs
  5023. 12.31 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:154:36-38
  5024. 12.31 s [really-safe-money] @@ -151,7 +151,7 @@
  5025. 12.31 s [really-safe-money] go !a (c : cs)
  5026. 12.31 s [really-safe-money] | Char.isDigit c = do
  5027. 12.31 s [really-safe-money] _ <- ReadP.get
  5028. 12.31 s [really-safe-money] - let digit = Char.ord c - 48
  5029. 12.31 s [really-safe-money] + let digit = Char.ord c - -48
  5030. 12.31 s [really-safe-money] case f a digit of
  5031. 12.31 s [really-safe-money] Nothing -> fail "Failed to step the digit"
  5032. 12.31 s [really-safe-money] Just a' -> go a' cs
  5033. 12.31 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:139:27-29
  5034. 12.31 s [really-safe-money] @@ -136,7 +136,7 @@
  5035. 12.31 s [really-safe-money] stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  5036. 12.31 s [really-safe-money]
  5037. 12.31 s [really-safe-money] step :: Natural -> Int -> Maybe Natural
  5038. 12.31 s [really-safe-money] -step a digit = Just $ a * 10 + fromIntegral digit
  5039. 12.31 s [really-safe-money] +step a digit = Just $ a * 0 + fromIntegral digit
  5040. 12.31 s [really-safe-money] {-# INLINE step #-}
  5041. 12.31 s [really-safe-money]
  5042. 12.31 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  5043. 12.31 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:139:27-29
  5044. 12.31 s [really-safe-money] @@ -136,7 +136,7 @@
  5045. 12.31 s [really-safe-money] stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  5046. 12.31 s [really-safe-money]
  5047. 12.31 s [really-safe-money] step :: Natural -> Int -> Maybe Natural
  5048. 12.31 s [really-safe-money] -step a digit = Just $ a * 10 + fromIntegral digit
  5049. 12.31 s [really-safe-money] +step a digit = Just $ a * 1 + fromIntegral digit
  5050. 12.31 s [really-safe-money] {-# INLINE step #-}
  5051. 12.31 s [really-safe-money]
  5052. 12.31 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  5053. 12.31 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:136:39-41
  5054. 12.31 s [really-safe-money] @@ -133,7 +133,7 @@
  5055. 12.31 s [really-safe-money]
  5056. 12.31 s [really-safe-money] stepFraction :: (Natural, Word8) -> Int -> Maybe (Natural, Word8)
  5057. 12.31 s [really-safe-money] stepFraction (_, 255) _ = Nothing
  5058. 12.31 s [really-safe-money] -stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  5059. 12.31 s [really-safe-money] +stepFraction (m, e) digit = Just (m * 0 + fromIntegral digit, succ e)
  5060. 12.31 s [really-safe-money]
  5061. 12.31 s [really-safe-money] step :: Natural -> Int -> Maybe Natural
  5062. 12.31 s [really-safe-money] step a digit = Just $ a * 10 + fromIntegral digit
  5063. 12.31 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:136:39-41
  5064. 12.31 s [really-safe-money] @@ -133,7 +133,7 @@
  5065. 12.31 s [really-safe-money]
  5066. 12.31 s [really-safe-money] stepFraction :: (Natural, Word8) -> Int -> Maybe (Natural, Word8)
  5067. 12.31 s [really-safe-money] stepFraction (_, 255) _ = Nothing
  5068. 12.31 s [really-safe-money] -stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  5069. 12.31 s [really-safe-money] +stepFraction (m, e) digit = Just (m * 1 + fromIntegral digit, succ e)
  5070. 12.31 s [really-safe-money]
  5071. 12.31 s [really-safe-money] step :: Natural -> Int -> Maybe Natural
  5072. 12.31 s [really-safe-money] step a digit = Just $ a * 10 + fromIntegral digit
  5073. 12.31 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-30
  5074. 12.31 s [really-safe-money] @@ -116,7 +116,7 @@
  5075. 12.31 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5076. 12.31 s [really-safe-money] decimalLiteralP = do
  5077. 12.31 s [really-safe-money] let isSignChar :: Char -> Bool
  5078. 12.31 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  5079. 12.31 s [really-safe-money] + isSignChar c = True || c == '+'
  5080. 12.31 s [really-safe-money]
  5081. 12.31 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5082. 12.31 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5083. 12.32 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-30
  5084. 12.32 s [really-safe-money] @@ -116,7 +116,7 @@
  5085. 12.32 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5086. 12.32 s [really-safe-money] decimalLiteralP = do
  5087. 12.32 s [really-safe-money] let isSignChar :: Char -> Bool
  5088. 12.32 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  5089. 12.32 s [really-safe-money] + isSignChar c = False || c == '+'
  5090. 12.32 s [really-safe-money]
  5091. 12.32 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5092. 12.32 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5093. 12.32 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:119:22-30
  5094. 12.32 s [really-safe-money] @@ -116,7 +116,7 @@
  5095. 12.32 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5096. 12.32 s [really-safe-money] decimalLiteralP = do
  5097. 12.32 s [really-safe-money] let isSignChar :: Char -> Bool
  5098. 12.32 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  5099. 12.32 s [really-safe-money] + isSignChar c = not (c == '-') || c == '+'
  5100. 12.32 s [really-safe-money]
  5101. 12.32 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5102. 12.32 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5103. 12.32 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:34-42
  5104. 12.32 s [really-safe-money] @@ -116,7 +116,7 @@
  5105. 12.32 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5106. 12.32 s [really-safe-money] decimalLiteralP = do
  5107. 12.32 s [really-safe-money] let isSignChar :: Char -> Bool
  5108. 12.32 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  5109. 12.32 s [really-safe-money] + isSignChar c = c == '-' || True
  5110. 12.32 s [really-safe-money]
  5111. 12.32 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5112. 12.32 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5113. 12.32 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:34-42
  5114. 12.32 s [really-safe-money] @@ -116,7 +116,7 @@
  5115. 12.32 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5116. 12.32 s [really-safe-money] decimalLiteralP = do
  5117. 12.32 s [really-safe-money] let isSignChar :: Char -> Bool
  5118. 12.32 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  5119. 12.32 s [really-safe-money] + isSignChar c = c == '-' || False
  5120. 12.32 s [really-safe-money]
  5121. 12.32 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5122. 12.32 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5123. 12.32 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:119:34-42
  5124. 12.32 s [really-safe-money] @@ -116,7 +116,7 @@
  5125. 12.32 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5126. 12.32 s [really-safe-money] decimalLiteralP = do
  5127. 12.32 s [really-safe-money] let isSignChar :: Char -> Bool
  5128. 12.32 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  5129. 12.32 s [really-safe-money] + isSignChar c = c == '-' || not (c == '+')
  5130. 12.32 s [really-safe-money]
  5131. 12.32 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5132. 12.32 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5133. 12.32 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-42
  5134. 12.32 s [really-safe-money] @@ -116,7 +116,7 @@
  5135. 12.32 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5136. 12.32 s [really-safe-money] decimalLiteralP = do
  5137. 12.32 s [really-safe-money] let isSignChar :: Char -> Bool
  5138. 12.32 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  5139. 12.32 s [really-safe-money] + isSignChar c = True
  5140. 12.32 s [really-safe-money]
  5141. 12.32 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5142. 12.32 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5143. 12.32 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-42
  5144. 12.32 s [really-safe-money] @@ -116,7 +116,7 @@
  5145. 12.32 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5146. 12.32 s [really-safe-money] decimalLiteralP = do
  5147. 12.32 s [really-safe-money] let isSignChar :: Char -> Bool
  5148. 12.32 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  5149. 12.32 s [really-safe-money] + isSignChar c = False
  5150. 12.32 s [really-safe-money]
  5151. 12.32 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5152. 12.32 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5153. 12.32 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:119:22-42
  5154. 12.32 s [really-safe-money] @@ -116,7 +116,7 @@
  5155. 12.32 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5156. 12.32 s [really-safe-money] decimalLiteralP = do
  5157. 12.32 s [really-safe-money] let isSignChar :: Char -> Bool
  5158. 12.32 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  5159. 12.32 s [really-safe-money] + isSignChar c = not (c == '-' || c == '+')
  5160. 12.32 s [really-safe-money]
  5161. 12.32 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5162. 12.32 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5163. 12.32 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:123:19-34
  5164. 12.32 s [really-safe-money] @@ -120,7 +120,7 @@
  5165. 12.32 s [really-safe-money]
  5166. 12.32 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5167. 12.32 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5168. 12.32 s [really-safe-money] - pure $ Just $ signChar == '+'
  5169. 12.32 s [really-safe-money] + pure $ Just $ True
  5170. 12.32 s [really-safe-money]
  5171. 12.32 s [really-safe-money] units <- parseDigits step 0
  5172. 12.32 s [really-safe-money]
  5173. 12.32 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:123:19-34
  5174. 12.32 s [really-safe-money] @@ -120,7 +120,7 @@
  5175. 12.32 s [really-safe-money]
  5176. 12.32 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5177. 12.32 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5178. 12.32 s [really-safe-money] - pure $ Just $ signChar == '+'
  5179. 12.32 s [really-safe-money] + pure $ Just $ False
  5180. 12.32 s [really-safe-money]
  5181. 12.32 s [really-safe-money] units <- parseDigits step 0
  5182. 12.32 s [really-safe-money]
  5183. 12.32 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:123:19-34
  5184. 12.32 s [really-safe-money] @@ -120,7 +120,7 @@
  5185. 12.32 s [really-safe-money]
  5186. 12.32 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5187. 12.32 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5188. 12.32 s [really-safe-money] - pure $ Just $ signChar == '+'
  5189. 12.32 s [really-safe-money] + pure $ Just $ not (signChar == '+')
  5190. 12.32 s [really-safe-money]
  5191. 12.32 s [really-safe-money] units <- parseDigits step 0
  5192. 12.32 s [really-safe-money]
  5193. 12.32 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:125:29-30
  5194. 12.32 s [really-safe-money] @@ -122,7 +122,7 @@
  5195. 12.32 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5196. 12.32 s [really-safe-money] pure $ Just $ signChar == '+'
  5197. 12.32 s [really-safe-money]
  5198. 12.32 s [really-safe-money] - units <- parseDigits step 0
  5199. 12.32 s [really-safe-money] + units <- parseDigits step 1
  5200. 12.32 s [really-safe-money]
  5201. 12.32 s [really-safe-money] ReadP.option (DecimalLiteral mSign units 0) $ do
  5202. 12.32 s [really-safe-money] _ <- ReadP.satisfy (== '.')
  5203. 12.32 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:127:44-45
  5204. 12.32 s [really-safe-money] @@ -124,7 +124,7 @@
  5205. 12.32 s [really-safe-money]
  5206. 12.32 s [really-safe-money] units <- parseDigits step 0
  5207. 12.32 s [really-safe-money]
  5208. 12.32 s [really-safe-money] - ReadP.option (DecimalLiteral mSign units 0) $ do
  5209. 12.32 s [really-safe-money] + ReadP.option (DecimalLiteral mSign units 1) $ do
  5210. 12.32 s [really-safe-money] _ <- ReadP.satisfy (== '.')
  5211. 12.32 s [really-safe-money]
  5212. 12.32 s [really-safe-money] (m, e) <- parseDigits stepFraction (units, 0)
  5213. 12.32 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:130:48-49
  5214. 12.32 s [really-safe-money] @@ -127,7 +127,7 @@
  5215. 12.32 s [really-safe-money] ReadP.option (DecimalLiteral mSign units 0) $ do
  5216. 12.32 s [really-safe-money] _ <- ReadP.satisfy (== '.')
  5217. 12.32 s [really-safe-money]
  5218. 12.32 s [really-safe-money] - (m, e) <- parseDigits stepFraction (units, 0)
  5219. 12.32 s [really-safe-money] + (m, e) <- parseDigits stepFraction (units, 1)
  5220. 12.32 s [really-safe-money]
  5221. 12.32 s [really-safe-money] pure $ DecimalLiteral mSign m e
  5222. 12.32 s [really-safe-money]
  5223. 12.32 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:112:17-21
  5224. 12.32 s [really-safe-money] @@ -109,9 +109,9 @@
  5225. 12.32 s [really-safe-money]
  5226. 12.32 s [really-safe-money] -- | Like 'fromString' but in a 'MonadFail'
  5227. 12.32 s [really-safe-money] fromStringM :: (MonadFail m) => String -> m DecimalLiteral
  5228. 12.32 s [really-safe-money] -fromStringM s = case Numeric.DecimalLiteral.fromString s of
  5229. 12.32 s [really-safe-money] - Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  5230. 12.32 s [really-safe-money] - Just dl -> pure dl
  5231. 12.32 s [really-safe-money] +fromStringM s = case Numeric.DecimalLiteral.fromString s of
  5232. 12.32 s [really-safe-money] + Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  5233. 12.32 s [really-safe-money] + Just dl -> pure dl
  5234. 12.32 s [really-safe-money]
  5235. 12.32 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5236. 12.32 s [really-safe-money] decimalLiteralP = do
  5237. 12.32 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:112:17-21
  5238. 12.32 s [really-safe-money] @@ -109,9 +109,9 @@
  5239. 12.32 s [really-safe-money]
  5240. 12.32 s [really-safe-money] -- | Like 'fromString' but in a 'MonadFail'
  5241. 12.32 s [really-safe-money] fromStringM :: (MonadFail m) => String -> m DecimalLiteral
  5242. 12.32 s [really-safe-money] -fromStringM s = case Numeric.DecimalLiteral.fromString s of
  5243. 12.32 s [really-safe-money] - Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  5244. 12.32 s [really-safe-money] - Just dl -> pure dl
  5245. 12.32 s [really-safe-money] +fromStringM s = case Numeric.DecimalLiteral.fromString s of
  5246. 12.32 s [really-safe-money] + Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  5247. 12.32 s [really-safe-money] + Just dl -> pure dl
  5248. 12.32 s [really-safe-money]
  5249. 12.32 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5250. 12.32 s [really-safe-money] decimalLiteralP = do
  5251. 12.32 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:86:18-18
  5252. 12.32 s [really-safe-money] @@ -83,9 +83,9 @@
  5253. 12.32 s [really-safe-money] instance NFData DecimalLiteral
  5254. 12.32 s [really-safe-money]
  5255. 12.32 s [really-safe-money] instance IsString DecimalLiteral where
  5256. 12.32 s [really-safe-money] - fromString s = case Numeric.DecimalLiteral.fromString s of
  5257. 12.32 s [really-safe-money] - Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  5258. 12.32 s [really-safe-money] - Just dl -> dl
  5259. 12.32 s [really-safe-money] + fromString s = case Numeric.DecimalLiteral.fromString s of
  5260. 12.32 s [really-safe-money] + Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  5261. 12.32 s [really-safe-money] + Just dl -> dl
  5262. 12.32 s [really-safe-money]
  5263. 12.32 s [really-safe-money] -- | Parse a decimal literal from a string
  5264. 12.32 s [really-safe-money] --
  5265. 12.32 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:86:18-18
  5266. 12.32 s [really-safe-money] @@ -83,9 +83,9 @@
  5267. 12.32 s [really-safe-money] instance NFData DecimalLiteral
  5268. 12.32 s [really-safe-money]
  5269. 12.32 s [really-safe-money] instance IsString DecimalLiteral where
  5270. 12.32 s [really-safe-money] - fromString s = case Numeric.DecimalLiteral.fromString s of
  5271. 12.32 s [really-safe-money] - Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  5272. 12.32 s [really-safe-money] - Just dl -> dl
  5273. 12.32 s [really-safe-money] + fromString s = case Numeric.DecimalLiteral.fromString s of
  5274. 12.32 s [really-safe-money] + Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  5275. 12.32 s [really-safe-money] + Just dl -> dl
  5276. 12.32 s [really-safe-money]
  5277. 12.32 s [really-safe-money] -- | Parse a decimal literal from a string
  5278. 12.32 s [really-safe-money] --
  5279. 12.32 s [really-safe-money] added 87 mutations
  5280. 13.60 s [really-safe-money] [ 2 of 12] Compiling Money.QuantisationFactor ( src/Money/QuantisationFactor.hs, dist/build/Money/QuantisationFactor.p_o )
  5281. 13.61 s [really-safe-money] mutation: instrumenting Money.QuantisationFactor
  5282. 13.61 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:87:27-28
  5283. 13.61 s [really-safe-money] @@ -84,7 +84,7 @@
  5284. 13.61 s [really-safe-money] fromDecimalLiteral dl = do
  5285. 13.61 s [really-safe-money] irat <-
  5286. 13.61 s [really-safe-money] let r = DecimalLiteral.toRational dl
  5287. 13.61 s [really-safe-money] - in if numerator r == 0
  5288. 13.61 s [really-safe-money] + in if numerator r == 1
  5289. 13.61 s [really-safe-money] then Nothing
  5290. 13.61 s [really-safe-money] else pure r
  5291. 13.61 s [really-safe-money]
  5292. 13.61 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:87:12-28
  5293. 13.61 s [really-safe-money] @@ -84,7 +84,7 @@
  5294. 13.61 s [really-safe-money] fromDecimalLiteral dl = do
  5295. 13.61 s [really-safe-money] irat <-
  5296. 13.61 s [really-safe-money] let r = DecimalLiteral.toRational dl
  5297. 13.61 s [really-safe-money] - in if numerator r == 0
  5298. 13.61 s [really-safe-money] + in if True
  5299. 13.61 s [really-safe-money] then Nothing
  5300. 13.61 s [really-safe-money] else pure r
  5301. 13.61 s [really-safe-money]
  5302. 13.61 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:87:12-28
  5303. 13.61 s [really-safe-money] @@ -84,7 +84,7 @@
  5304. 13.61 s [really-safe-money] fromDecimalLiteral dl = do
  5305. 13.61 s [really-safe-money] irat <-
  5306. 13.61 s [really-safe-money] let r = DecimalLiteral.toRational dl
  5307. 13.62 s [really-safe-money] - in if numerator r == 0
  5308. 13.62 s [really-safe-money] + in if False
  5309. 13.62 s [really-safe-money] then Nothing
  5310. 13.62 s [really-safe-money] else pure r
  5311. 13.62 s [really-safe-money]
  5312. 13.62 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:87:12-28
  5313. 13.62 s [really-safe-money] @@ -84,7 +84,7 @@
  5314. 13.62 s [really-safe-money] fromDecimalLiteral dl = do
  5315. 13.62 s [really-safe-money] irat <-
  5316. 13.62 s [really-safe-money] let r = DecimalLiteral.toRational dl
  5317. 13.62 s [really-safe-money] - in if numerator r == 0
  5318. 13.62 s [really-safe-money] + in if not (numerator r == 0)
  5319. 13.62 s [really-safe-money] then Nothing
  5320. 13.62 s [really-safe-money] else pure r
  5321. 13.62 s [really-safe-money]
  5322. 13.62 s [really-safe-money] added mutation CondFlip at src/Money/QuantisationFactor.hs:87:9-22
  5323. 13.62 s [really-safe-money] @@ -84,9 +84,9 @@
  5324. 13.62 s [really-safe-money] fromDecimalLiteral dl = do
  5325. 13.62 s [really-safe-money] irat <-
  5326. 13.62 s [really-safe-money] let r = DecimalLiteral.toRational dl
  5327. 13.62 s [really-safe-money] - in if numerator r == 0
  5328. 13.62 s [really-safe-money] - then Nothing
  5329. 13.62 s [really-safe-money] - else pure r
  5330. 13.62 s [really-safe-money] + in if numerator r == 0
  5331. 13.62 s [really-safe-money] + then Nothing
  5332. 13.62 s [really-safe-money] + else pure r
  5333. 13.62 s [really-safe-money]
  5334. 13.62 s [really-safe-money] rat <-
  5335. 13.62 s [really-safe-money] let r = 1 / irat
  5336. 13.62 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:92:13-14
  5337. 13.62 s [really-safe-money] @@ -89,7 +89,7 @@
  5338. 13.62 s [really-safe-money] else pure r
  5339. 13.62 s [really-safe-money]
  5340. 13.62 s [really-safe-money] rat <-
  5341. 13.62 s [really-safe-money] - let r = 1 / irat
  5342. 13.62 s [really-safe-money] + let r = 0 / irat
  5343. 13.62 s [really-safe-money] in if r < 0
  5344. 13.62 s [really-safe-money] then Nothing
  5345. 13.62 s [really-safe-money] else Just r
  5346. 13.62 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:92:13-14
  5347. 13.62 s [really-safe-money] @@ -89,7 +89,7 @@
  5348. 13.62 s [really-safe-money] else pure r
  5349. 13.62 s [really-safe-money]
  5350. 13.62 s [really-safe-money] rat <-
  5351. 13.62 s [really-safe-money] - let r = 1 / irat
  5352. 13.62 s [really-safe-money] + let r = -1 / irat
  5353. 13.62 s [really-safe-money] in if r < 0
  5354. 13.62 s [really-safe-money] then Nothing
  5355. 13.62 s [really-safe-money] else Just r
  5356. 13.62 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:93:16-17
  5357. 13.62 s [really-safe-money] @@ -90,7 +90,7 @@
  5358. 13.62 s [really-safe-money]
  5359. 13.62 s [really-safe-money] rat <-
  5360. 13.62 s [really-safe-money] let r = 1 / irat
  5361. 13.62 s [really-safe-money] - in if r < 0
  5362. 13.62 s [really-safe-money] + in if r < 1
  5363. 13.62 s [really-safe-money] then Nothing
  5364. 13.62 s [really-safe-money] else Just r
  5365. 13.62 s [really-safe-money]
  5366. 13.62 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:93:12-17
  5367. 13.62 s [really-safe-money] @@ -90,7 +90,7 @@
  5368. 13.62 s [really-safe-money]
  5369. 13.62 s [really-safe-money] rat <-
  5370. 13.62 s [really-safe-money] let r = 1 / irat
  5371. 13.62 s [really-safe-money] - in if r < 0
  5372. 13.62 s [really-safe-money] + in if True
  5373. 13.62 s [really-safe-money] then Nothing
  5374. 13.62 s [really-safe-money] else Just r
  5375. 13.62 s [really-safe-money]
  5376. 13.62 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:93:12-17
  5377. 13.62 s [really-safe-money] @@ -90,7 +90,7 @@
  5378. 13.62 s [really-safe-money]
  5379. 13.62 s [really-safe-money] rat <-
  5380. 13.62 s [really-safe-money] let r = 1 / irat
  5381. 13.62 s [really-safe-money] - in if r < 0
  5382. 13.62 s [really-safe-money] + in if False
  5383. 13.62 s [really-safe-money] then Nothing
  5384. 13.62 s [really-safe-money] else Just r
  5385. 13.62 s [really-safe-money]
  5386. 13.62 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:93:12-17
  5387. 13.62 s [really-safe-money] @@ -90,7 +90,7 @@
  5388. 13.62 s [really-safe-money]
  5389. 13.62 s [really-safe-money] rat <-
  5390. 13.62 s [really-safe-money] let r = 1 / irat
  5391. 13.62 s [really-safe-money] - in if r < 0
  5392. 13.62 s [really-safe-money] + in if not (r < 0)
  5393. 13.62 s [really-safe-money] then Nothing
  5394. 13.62 s [really-safe-money] else Just r
  5395. 13.62 s [really-safe-money]
  5396. 13.62 s [really-safe-money] added mutation CondFlip at src/Money/QuantisationFactor.hs:93:9-22
  5397. 13.62 s [really-safe-money] @@ -90,9 +90,9 @@
  5398. 13.62 s [really-safe-money]
  5399. 13.62 s [really-safe-money] rat <-
  5400. 13.62 s [really-safe-money] let r = 1 / irat
  5401. 13.62 s [really-safe-money] - in if r < 0
  5402. 13.62 s [really-safe-money] - then Nothing
  5403. 13.62 s [really-safe-money] - else Just r
  5404. 13.62 s [really-safe-money] + in if r < 0
  5405. 13.62 s [really-safe-money] + then Nothing
  5406. 13.62 s [really-safe-money] + else Just r
  5407. 13.62 s [really-safe-money]
  5408. 13.62 s [really-safe-money] fac <-
  5409. 13.62 s [really-safe-money] if denominator rat == 1
  5410. 13.62 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:98:27-28
  5411. 13.62 s [really-safe-money] @@ -95,7 +95,7 @@
  5412. 13.62 s [really-safe-money] else Just r
  5413. 13.62 s [really-safe-money]
  5414. 13.62 s [really-safe-money] fac <-
  5415. 13.62 s [really-safe-money] - if denominator rat == 1
  5416. 13.62 s [really-safe-money] + if denominator rat == 0
  5417. 13.62 s [really-safe-money] then Just (numerator rat)
  5418. 13.62 s [really-safe-money] else Nothing
  5419. 13.62 s [really-safe-money]
  5420. 13.62 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:98:27-28
  5421. 13.62 s [really-safe-money] @@ -95,7 +95,7 @@
  5422. 13.62 s [really-safe-money] else Just r
  5423. 13.62 s [really-safe-money]
  5424. 13.62 s [really-safe-money] fac <-
  5425. 13.62 s [really-safe-money] - if denominator rat == 1
  5426. 13.62 s [really-safe-money] + if denominator rat == -1
  5427. 13.62 s [really-safe-money] then Just (numerator rat)
  5428. 13.62 s [really-safe-money] else Nothing
  5429. 13.62 s [really-safe-money]
  5430. 13.62 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:98:8-28
  5431. 13.62 s [really-safe-money] @@ -95,7 +95,7 @@
  5432. 13.62 s [really-safe-money] else Just r
  5433. 13.62 s [really-safe-money]
  5434. 13.62 s [really-safe-money] fac <-
  5435. 13.62 s [really-safe-money] - if denominator rat == 1
  5436. 13.62 s [really-safe-money] + if True
  5437. 13.62 s [really-safe-money] then Just (numerator rat)
  5438. 13.62 s [really-safe-money] else Nothing
  5439. 13.62 s [really-safe-money]
  5440. 13.62 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:98:8-28
  5441. 13.62 s [really-safe-money] @@ -95,7 +95,7 @@
  5442. 13.62 s [really-safe-money] else Just r
  5443. 13.62 s [really-safe-money]
  5444. 13.62 s [really-safe-money] fac <-
  5445. 13.62 s [really-safe-money] - if denominator rat == 1
  5446. 13.62 s [really-safe-money] + if False
  5447. 13.62 s [really-safe-money] then Just (numerator rat)
  5448. 13.62 s [really-safe-money] else Nothing
  5449. 13.62 s [really-safe-money]
  5450. 13.62 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:98:8-28
  5451. 13.62 s [really-safe-money] @@ -95,7 +95,7 @@
  5452. 13.62 s [really-safe-money] else Just r
  5453. 13.62 s [really-safe-money]
  5454. 13.62 s [really-safe-money] fac <-
  5455. 13.62 s [really-safe-money] - if denominator rat == 1
  5456. 13.62 s [really-safe-money] + if not (denominator rat == 1)
  5457. 13.62 s [really-safe-money] then Just (numerator rat)
  5458. 13.62 s [really-safe-money] else Nothing
  5459. 13.62 s [really-safe-money]
  5460. 13.62 s [really-safe-money] added mutation CondFlip at src/Money/QuantisationFactor.hs:98:5-19
  5461. 13.62 s [really-safe-money] @@ -95,9 +95,9 @@
  5462. 13.62 s [really-safe-money] else Just r
  5463. 13.62 s [really-safe-money]
  5464. 13.62 s [really-safe-money] fac <-
  5465. 13.62 s [really-safe-money] - if denominator rat == 1
  5466. 13.62 s [really-safe-money] - then Just (numerator rat)
  5467. 13.62 s [really-safe-money] - else Nothing
  5468. 13.62 s [really-safe-money] + if denominator rat == 1
  5469. 13.62 s [really-safe-money] + then Just (numerator rat)
  5470. 13.62 s [really-safe-money] + else Nothing
  5471. 13.62 s [really-safe-money]
  5472. 13.62 s [really-safe-money] if fac <= fromIntegral (maxBound :: Word32)
  5473. 13.62 s [really-safe-money] then Just (QuantisationFactor (fromIntegral fac))
  5474. 13.62 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:102:6-46
  5475. 13.62 s [really-safe-money] @@ -99,6 +99,6 @@
  5476. 13.62 s [really-safe-money] then Just (numerator rat)
  5477. 13.62 s [really-safe-money] else Nothing
  5478. 13.62 s [really-safe-money]
  5479. 13.62 s [really-safe-money] - if fac <= fromIntegral (maxBound :: Word32)
  5480. 13.62 s [really-safe-money] + if True
  5481. 13.62 s [really-safe-money] then Just (QuantisationFactor (fromIntegral fac))
  5482. 13.62 s [really-safe-money] else Nothing
  5483. 13.62 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:102:6-46
  5484. 13.62 s [really-safe-money] @@ -99,6 +99,6 @@
  5485. 13.62 s [really-safe-money] then Just (numerator rat)
  5486. 13.62 s [really-safe-money] else Nothing
  5487. 13.62 s [really-safe-money]
  5488. 13.62 s [really-safe-money] - if fac <= fromIntegral (maxBound :: Word32)
  5489. 13.62 s [really-safe-money] + if False
  5490. 13.62 s [really-safe-money] then Just (QuantisationFactor (fromIntegral fac))
  5491. 13.62 s [really-safe-money] else Nothing
  5492. 13.62 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:102:6-46
  5493. 13.62 s [really-safe-money] @@ -99,6 +99,6 @@
  5494. 13.62 s [really-safe-money] then Just (numerator rat)
  5495. 13.62 s [really-safe-money] else Nothing
  5496. 13.62 s [really-safe-money]
  5497. 13.62 s [really-safe-money] - if fac <= fromIntegral (maxBound :: Word32)
  5498. 13.62 s [really-safe-money] + if not (fac <= fromIntegral (maxBound :: Word32))
  5499. 13.62 s [really-safe-money] then Just (QuantisationFactor (fromIntegral fac))
  5500. 13.62 s [really-safe-money] else Nothing
  5501. 13.62 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:67:67-68
  5502. 13.62 s [really-safe-money] @@ -64,7 +64,7 @@
  5503. 13.62 s [really-safe-money] -- Just (DecimalLiteral Nothing 1 0)
  5504. 13.62 s [really-safe-money] toDecimalLiteral :: QuantisationFactor -> Maybe DecimalLiteral
  5505. 13.62 s [really-safe-money] toDecimalLiteral (QuantisationFactor qfw) =
  5506. 13.62 s [really-safe-money] - DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (1 % fromIntegral qfw)
  5507. 13.62 s [really-safe-money] + DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (0 % fromIntegral qfw)
  5508. 13.62 s [really-safe-money]
  5509. 13.62 s [really-safe-money] -- | Parse a 'QuantisationFactor' from a 'DecimalLiteral' that represents the smallest unit
  5510. 13.62 s [really-safe-money] -- TODO explain that it's the inverse.
  5511. 13.62 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:67:67-68
  5512. 13.62 s [really-safe-money] @@ -64,7 +64,7 @@
  5513. 13.62 s [really-safe-money] -- Just (DecimalLiteral Nothing 1 0)
  5514. 13.62 s [really-safe-money] toDecimalLiteral :: QuantisationFactor -> Maybe DecimalLiteral
  5515. 13.62 s [really-safe-money] toDecimalLiteral (QuantisationFactor qfw) =
  5516. 13.62 s [really-safe-money] - DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (1 % fromIntegral qfw)
  5517. 13.62 s [really-safe-money] + DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (-1 % fromIntegral qfw)
  5518. 13.62 s [really-safe-money]
  5519. 13.62 s [really-safe-money] -- | Parse a 'QuantisationFactor' from a 'DecimalLiteral' that represents the smallest unit
  5520. 13.62 s [really-safe-money] -- TODO explain that it's the inverse.
  5521. 13.62 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:40:62-63
  5522. 13.62 s [really-safe-money] @@ -37,7 +37,7 @@
  5523. 13.62 s [really-safe-money] validate qf@(QuantisationFactor w) =
  5524. 13.62 s [really-safe-money] mconcat
  5525. 13.62 s [really-safe-money] [ genericValidate qf,
  5526. 13.62 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  5527. 13.62 s [really-safe-money] + declare "The quantisation factor is not zero" $ w /= 1
  5528. 13.62 s [really-safe-money] ]
  5529. 13.62 s [really-safe-money]
  5530. 13.62 s [really-safe-money] instance NFData QuantisationFactor
  5531. 13.62 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63
  5532. 13.62 s [really-safe-money] @@ -37,7 +37,7 @@
  5533. 13.62 s [really-safe-money] validate qf@(QuantisationFactor w) =
  5534. 13.62 s [really-safe-money] mconcat
  5535. 13.62 s [really-safe-money] [ genericValidate qf,
  5536. 13.62 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  5537. 13.62 s [really-safe-money] + declare "The quantisation factor is not zero" $ True
  5538. 13.62 s [really-safe-money] ]
  5539. 13.62 s [really-safe-money]
  5540. 13.62 s [really-safe-money] instance NFData QuantisationFactor
  5541. 13.62 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63
  5542. 13.62 s [really-safe-money] @@ -37,7 +37,7 @@
  5543. 13.62 s [really-safe-money] validate qf@(QuantisationFactor w) =
  5544. 13.62 s [really-safe-money] mconcat
  5545. 13.62 s [really-safe-money] [ genericValidate qf,
  5546. 13.62 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  5547. 13.62 s [really-safe-money] + declare "The quantisation factor is not zero" $ False
  5548. 13.62 s [really-safe-money] ]
  5549. 13.62 s [really-safe-money]
  5550. 13.62 s [really-safe-money] instance NFData QuantisationFactor
  5551. 13.62 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:40:57-63
  5552. 13.62 s [really-safe-money] @@ -37,7 +37,7 @@
  5553. 13.62 s [really-safe-money] validate qf@(QuantisationFactor w) =
  5554. 13.62 s [really-safe-money] mconcat
  5555. 13.62 s [really-safe-money] [ genericValidate qf,
  5556. 13.62 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  5557. 13.62 s [really-safe-money] + declare "The quantisation factor is not zero" $ not (w /= 0)
  5558. 13.62 s [really-safe-money] ]
  5559. 13.62 s [really-safe-money]
  5560. 13.62 s [really-safe-money] instance NFData QuantisationFactor
  5561. 13.62 s [really-safe-money] added mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8
  5562. 13.62 s [really-safe-money] @@ -36,9 +36,7 @@
  5563. 13.62 s [really-safe-money] instance Validity QuantisationFactor where
  5564. 13.62 s [really-safe-money] validate qf@(QuantisationFactor w) =
  5565. 13.62 s [really-safe-money] mconcat
  5566. 13.62 s [really-safe-money] - [ genericValidate qf,
  5567. 13.62 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  5568. 13.62 s [really-safe-money] - ]
  5569. 13.62 s [really-safe-money] + []
  5570. 13.62 s [really-safe-money]
  5571. 13.62 s [really-safe-money] instance NFData QuantisationFactor
  5572. 13.62 s [really-safe-money]
  5573. 13.62 s [really-safe-money] added mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8
  5574. 13.62 s [really-safe-money] @@ -36,9 +36,9 @@
  5575. 13.62 s [really-safe-money] instance Validity QuantisationFactor where
  5576. 13.62 s [really-safe-money] validate qf@(QuantisationFactor w) =
  5577. 13.62 s [really-safe-money] mconcat
  5578. 13.62 s [really-safe-money] - [ genericValidate qf,
  5579. 13.62 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  5580. 13.62 s [really-safe-money] - ]
  5581. 13.62 s [really-safe-money] + [ genericValidate qf,
  5582. 13.62 s [really-safe-money] + declare "The quantisation factor is not zero" $ w /= 0
  5583. 13.62 s [really-safe-money] + ]
  5584. 13.62 s [really-safe-money]
  5585. 13.62 s [really-safe-money] instance NFData QuantisationFactor
  5586. 13.62 s [really-safe-money]
  5587. 13.62 s [really-safe-money] added 29 mutations
  5588. 13.95 s [really-safe-money] [ 3 of 12] Compiling Money.Currency ( src/Money/Currency.hs, dist/build/Money/Currency.p_o )
  5589. 13.96 s [really-safe-money] mutation: instrumenting Money.Currency
  5590. 13.96 s [really-safe-money] added 0 mutations
  5591. 14.28 s [really-safe-money] [ 4 of 12] Compiling Money.ConversionRate ( src/Money/ConversionRate.hs, dist/build/Money/ConversionRate.p_o )
  5592. 14.29 s [really-safe-money] mutation: instrumenting Money.ConversionRate
  5593. 14.29 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:116:45-46
  5594. 14.29 s [really-safe-money] @@ -113,7 +113,7 @@
  5595. 14.29 s [really-safe-money] -- >>> invert (ConversionRate (1 % 2))
  5596. 14.29 s [really-safe-money] -- ConversionRate {unConversionRate = 2 % 1}
  5597. 14.29 s [really-safe-money] invert :: ConversionRate -> ConversionRate
  5598. 14.29 s [really-safe-money] -invert (ConversionRate r) = ConversionRate (1 / r)
  5599. 14.29 s [really-safe-money] +invert (ConversionRate r) = ConversionRate (0 / r)
  5600. 14.29 s [really-safe-money]
  5601. 14.29 s [really-safe-money] -- | Compose two conversion rates
  5602. 14.29 s [really-safe-money] --
  5603. 14.29 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:116:45-46
  5604. 14.29 s [really-safe-money] @@ -113,7 +113,7 @@
  5605. 14.29 s [really-safe-money] -- >>> invert (ConversionRate (1 % 2))
  5606. 14.29 s [really-safe-money] -- ConversionRate {unConversionRate = 2 % 1}
  5607. 14.29 s [really-safe-money] invert :: ConversionRate -> ConversionRate
  5608. 14.29 s [really-safe-money] -invert (ConversionRate r) = ConversionRate (1 / r)
  5609. 14.29 s [really-safe-money] +invert (ConversionRate r) = ConversionRate (-1 / r)
  5610. 14.29 s [really-safe-money]
  5611. 14.29 s [really-safe-money] -- | Compose two conversion rates
  5612. 14.29 s [really-safe-money] --
  5613. 14.29 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:109:27-28
  5614. 14.29 s [really-safe-money] @@ -106,7 +106,7 @@
  5615. 14.29 s [really-safe-money]
  5616. 14.29 s [really-safe-money] -- | One-to-one conversion rate
  5617. 14.29 s [really-safe-money] oneToOne :: ConversionRate
  5618. 14.29 s [really-safe-money] -oneToOne = ConversionRate 1
  5619. 14.29 s [really-safe-money] +oneToOne = ConversionRate 0
  5620. 14.29 s [really-safe-money]
  5621. 14.29 s [really-safe-money] -- | Invert a 'ConversionRate', to convert in the other direction.
  5622. 14.29 s [really-safe-money] --
  5623. 14.29 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:109:27-28
  5624. 14.29 s [really-safe-money] @@ -106,7 +106,7 @@
  5625. 14.29 s [really-safe-money]
  5626. 14.29 s [really-safe-money] -- | One-to-one conversion rate
  5627. 14.29 s [really-safe-money] oneToOne :: ConversionRate
  5628. 14.29 s [really-safe-money] -oneToOne = ConversionRate 1
  5629. 14.29 s [really-safe-money] +oneToOne = ConversionRate -1
  5630. 14.29 s [really-safe-money]
  5631. 14.29 s [really-safe-money] -- | Invert a 'ConversionRate', to convert in the other direction.
  5632. 14.29 s [really-safe-money] --
  5633. 14.29 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:72:25-26
  5634. 14.29 s [really-safe-money] @@ -69,7 +69,7 @@
  5635. 14.29 s [really-safe-money] -- >>> fromRational (0 % 1)
  5636. 14.29 s [really-safe-money] -- Nothing
  5637. 14.29 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  5638. 14.29 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  5639. 14.29 s [really-safe-money] +fromRational r = if r < 1 then Nothing else fromRatio (realToFrac r)
  5640. 14.29 s [really-safe-money]
  5641. 14.29 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  5642. 14.29 s [really-safe-money] --
  5643. 14.29 s [really-safe-money] added mutation ConstBool at src/Money/ConversionRate.hs:72:21-26
  5644. 14.29 s [really-safe-money] @@ -69,7 +69,7 @@
  5645. 14.29 s [really-safe-money] -- >>> fromRational (0 % 1)
  5646. 14.29 s [really-safe-money] -- Nothing
  5647. 14.29 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  5648. 14.29 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  5649. 14.29 s [really-safe-money] +fromRational r = if True then Nothing else fromRatio (realToFrac r)
  5650. 14.29 s [really-safe-money]
  5651. 14.29 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  5652. 14.29 s [really-safe-money] --
  5653. 14.29 s [really-safe-money] added mutation ConstBool at src/Money/ConversionRate.hs:72:21-26
  5654. 14.29 s [really-safe-money] @@ -69,7 +69,7 @@
  5655. 14.29 s [really-safe-money] -- >>> fromRational (0 % 1)
  5656. 14.29 s [really-safe-money] -- Nothing
  5657. 14.29 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  5658. 14.29 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  5659. 14.29 s [really-safe-money] +fromRational r = if False then Nothing else fromRatio (realToFrac r)
  5660. 14.29 s [really-safe-money]
  5661. 14.29 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  5662. 14.29 s [really-safe-money] --
  5663. 14.29 s [really-safe-money] added mutation Negate at src/Money/ConversionRate.hs:72:21-26
  5664. 14.30 s [really-safe-money] @@ -69,7 +69,7 @@
  5665. 14.30 s [really-safe-money] -- >>> fromRational (0 % 1)
  5666. 14.30 s [really-safe-money] -- Nothing
  5667. 14.30 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  5668. 14.30 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  5669. 14.30 s [really-safe-money] +fromRational r = if not (r < 0) then Nothing else fromRatio (realToFrac r)
  5670. 14.30 s [really-safe-money]
  5671. 14.30 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  5672. 14.30 s [really-safe-money] --
  5673. 14.30 s [really-safe-money] added mutation CondFlip at src/Money/ConversionRate.hs:72:18-69
  5674. 14.30 s [really-safe-money] @@ -69,7 +69,7 @@
  5675. 14.30 s [really-safe-money] -- >>> fromRational (0 % 1)
  5676. 14.30 s [really-safe-money] -- Nothing
  5677. 14.30 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  5678. 14.30 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  5679. 14.30 s [really-safe-money] +fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  5680. 14.30 s [really-safe-money]
  5681. 14.30 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  5682. 14.30 s [really-safe-money] --
  5683. 14.30 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:38:56-57
  5684. 14.30 s [really-safe-money] @@ -35,7 +35,7 @@
  5685. 14.30 s [really-safe-money] validate cr@(ConversionRate r) =
  5686. 14.30 s [really-safe-money] mconcat
  5687. 14.30 s [really-safe-money] [ genericValidate cr,
  5688. 14.30 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  5689. 14.30 s [really-safe-money] + declare "The rate is nonzero" $ numerator r /= 1
  5690. 14.30 s [really-safe-money] ]
  5691. 14.30 s [really-safe-money]
  5692. 14.30 s [really-safe-money] instance NFData ConversionRate
  5693. 14.30 s [really-safe-money] added mutation ConstBool at src/Money/ConversionRate.hs:38:41-57
  5694. 14.30 s [really-safe-money] @@ -35,7 +35,7 @@
  5695. 14.30 s [really-safe-money] validate cr@(ConversionRate r) =
  5696. 14.30 s [really-safe-money] mconcat
  5697. 14.30 s [really-safe-money] [ genericValidate cr,
  5698. 14.30 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  5699. 14.30 s [really-safe-money] + declare "The rate is nonzero" $ True
  5700. 14.30 s [really-safe-money] ]
  5701. 14.30 s [really-safe-money]
  5702. 14.30 s [really-safe-money] instance NFData ConversionRate
  5703. 14.30 s [really-safe-money] added mutation ConstBool at src/Money/ConversionRate.hs:38:41-57
  5704. 14.30 s [really-safe-money] @@ -35,7 +35,7 @@
  5705. 14.30 s [really-safe-money] validate cr@(ConversionRate r) =
  5706. 14.30 s [really-safe-money] mconcat
  5707. 14.30 s [really-safe-money] [ genericValidate cr,
  5708. 14.30 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  5709. 14.30 s [really-safe-money] + declare "The rate is nonzero" $ False
  5710. 14.30 s [really-safe-money] ]
  5711. 14.30 s [really-safe-money]
  5712. 14.30 s [really-safe-money] instance NFData ConversionRate
  5713. 14.30 s [really-safe-money] added mutation Negate at src/Money/ConversionRate.hs:38:41-57
  5714. 14.30 s [really-safe-money] @@ -35,7 +35,7 @@
  5715. 14.30 s [really-safe-money] validate cr@(ConversionRate r) =
  5716. 14.30 s [really-safe-money] mconcat
  5717. 14.30 s [really-safe-money] [ genericValidate cr,
  5718. 14.30 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  5719. 14.30 s [really-safe-money] + declare "The rate is nonzero" $ not (numerator r /= 0)
  5720. 14.30 s [really-safe-money] ]
  5721. 14.30 s [really-safe-money]
  5722. 14.30 s [really-safe-money] instance NFData ConversionRate
  5723. 14.30 s [really-safe-money] added mutation ListLit at src/Money/ConversionRate.hs:37:7-8
  5724. 14.30 s [really-safe-money] @@ -34,9 +34,7 @@
  5725. 14.30 s [really-safe-money] instance Validity ConversionRate where
  5726. 14.30 s [really-safe-money] validate cr@(ConversionRate r) =
  5727. 14.30 s [really-safe-money] mconcat
  5728. 14.30 s [really-safe-money] - [ genericValidate cr,
  5729. 14.30 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  5730. 14.30 s [really-safe-money] - ]
  5731. 14.30 s [really-safe-money] + []
  5732. 14.30 s [really-safe-money]
  5733. 14.30 s [really-safe-money] instance NFData ConversionRate
  5734. 14.30 s [really-safe-money]
  5735. 14.30 s [really-safe-money] added mutation ListLit at src/Money/ConversionRate.hs:37:7-8
  5736. 14.30 s [really-safe-money] @@ -34,9 +34,9 @@
  5737. 14.30 s [really-safe-money] instance Validity ConversionRate where
  5738. 14.30 s [really-safe-money] validate cr@(ConversionRate r) =
  5739. 14.30 s [really-safe-money] mconcat
  5740. 14.30 s [really-safe-money] - [ genericValidate cr,
  5741. 14.30 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  5742. 14.30 s [really-safe-money] - ]
  5743. 14.30 s [really-safe-money] + [ genericValidate cr,
  5744. 14.30 s [really-safe-money] + declare "The rate is nonzero" $ numerator r /= 0
  5745. 14.30 s [really-safe-money] + ]
  5746. 14.30 s [really-safe-money]
  5747. 14.30 s [really-safe-money] instance NFData ConversionRate
  5748. 14.30 s [really-safe-money]
  5749. 14.30 s [really-safe-money] added 15 mutations
  5750. 14.57 s [really-safe-money] [ 5 of 12] Compiling Money.ConversionRateOf ( src/Money/ConversionRateOf.hs, dist/build/Money/ConversionRateOf.p_o )
  5751. 14.58 s [really-safe-money] mutation: instrumenting Money.ConversionRateOf
  5752. 14.58 s [really-safe-money] added 0 mutations
  5753. 14.74 s [really-safe-money] [ 6 of 12] Compiling Money.Amount ( src/Money/Amount.hs, dist/build/Money/Amount.p_o )
  5754. 14.81 s [really-safe-money] mutation: instrumenting Money.Amount
  5755. 14.81 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:801:36-38
  5756. 14.81 s [really-safe-money] @@ -798,7 +798,7 @@
  5757. 14.81 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  5758. 14.81 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor qf) =
  5759. 14.81 s [really-safe-money] let decimals :: Int
  5760. 14.81 s [really-safe-money] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  5761. 14.81 s [really-safe-money] + decimals = ceiling $ logBase 0 (fromIntegral qf :: Float)
  5762. 14.81 s [really-safe-money] in printf "%%0.%df" decimals
  5763. 14.81 s [really-safe-money]
  5764. 14.81 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  5765. 14.81 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:801:36-38
  5766. 14.81 s [really-safe-money] @@ -798,7 +798,7 @@
  5767. 14.81 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  5768. 14.81 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor qf) =
  5769. 14.81 s [really-safe-money] let decimals :: Int
  5770. 14.81 s [really-safe-money] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  5771. 14.81 s [really-safe-money] + decimals = ceiling $ logBase 1 (fromIntegral qf :: Float)
  5772. 14.81 s [really-safe-money] in printf "%%0.%df" decimals
  5773. 14.81 s [really-safe-money]
  5774. 14.81 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  5775. 14.81 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:801:36-38
  5776. 14.81 s [really-safe-money] @@ -798,7 +798,7 @@
  5777. 14.81 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  5778. 14.81 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor qf) =
  5779. 14.81 s [really-safe-money] let decimals :: Int
  5780. 14.81 s [really-safe-money] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  5781. 14.81 s [really-safe-money] + decimals = ceiling $ logBase -10 (fromIntegral qf :: Float)
  5782. 14.81 s [really-safe-money] in printf "%%0.%df" decimals
  5783. 14.81 s [really-safe-money]
  5784. 14.81 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  5785. 14.81 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:569:18-19
  5786. 14.81 s [really-safe-money] @@ -566,7 +566,7 @@
  5787. 14.81 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  5788. 14.81 s [really-safe-money] smallerChunk :: Amount
  5789. 14.81 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  5790. 14.81 s [really-safe-money] - in if rest == 0
  5791. 14.81 s [really-safe-money] + in if rest == 1
  5792. 14.81 s [really-safe-money] then DistributedIntoEqualChunks f smallerChunk
  5793. 14.81 s [really-safe-money] else
  5794. 14.81 s [really-safe-money] let -- This 'fromIntegral' is theoretically not safe, but it's
  5795. 14.81 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:569:10-19
  5796. 14.81 s [really-safe-money] @@ -566,7 +566,7 @@
  5797. 14.81 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  5798. 14.81 s [really-safe-money] smallerChunk :: Amount
  5799. 14.81 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  5800. 14.81 s [really-safe-money] - in if rest == 0
  5801. 14.81 s [really-safe-money] + in if True
  5802. 14.81 s [really-safe-money] then DistributedIntoEqualChunks f smallerChunk
  5803. 14.81 s [really-safe-money] else
  5804. 14.81 s [really-safe-money] let -- This 'fromIntegral' is theoretically not safe, but it's
  5805. 14.81 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:569:10-19
  5806. 14.81 s [really-safe-money] @@ -566,7 +566,7 @@
  5807. 14.81 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  5808. 14.81 s [really-safe-money] smallerChunk :: Amount
  5809. 14.81 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  5810. 14.81 s [really-safe-money] - in if rest == 0
  5811. 14.81 s [really-safe-money] + in if False
  5812. 14.81 s [really-safe-money] then DistributedIntoEqualChunks f smallerChunk
  5813. 14.81 s [really-safe-money] else
  5814. 14.81 s [really-safe-money] let -- This 'fromIntegral' is theoretically not safe, but it's
  5815. 14.81 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:569:10-19
  5816. 14.81 s [really-safe-money] @@ -566,7 +566,7 @@
  5817. 14.81 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  5818. 14.81 s [really-safe-money] smallerChunk :: Amount
  5819. 14.81 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  5820. 14.81 s [really-safe-money] - in if rest == 0
  5821. 14.81 s [really-safe-money] + in if not (rest == 0)
  5822. 14.81 s [really-safe-money] then DistributedIntoEqualChunks f smallerChunk
  5823. 14.81 s [really-safe-money] else
  5824. 14.81 s [really-safe-money] let -- This 'fromIntegral' is theoretically not safe, but it's
  5825. 14.81 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:569:7-29
  5826. 14.81 s [really-safe-money] @@ -566,22 +566,22 @@
  5827. 14.81 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  5828. 14.81 s [really-safe-money] smallerChunk :: Amount
  5829. 14.81 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  5830. 14.81 s [really-safe-money] - in if rest == 0
  5831. 14.81 s [really-safe-money] - then DistributedIntoEqualChunks f smallerChunk
  5832. 14.81 s [really-safe-money] - else
  5833. 14.81 s [really-safe-money] - let -- This 'fromIntegral' is theoretically not safe, but it's
  5834. 14.82 s [really-safe-money] - -- necessarily smaller than f so it will fit.
  5835. 14.82 s [really-safe-money] - numberOfLargerChunks :: Word32
  5836. 14.82 s [really-safe-money] - numberOfLargerChunks = (fromIntegral :: Word64 -> Word32) rest
  5837. 14.82 s [really-safe-money] - numberOfSmallerChunks :: Word32
  5838. 14.82 s [really-safe-money] - numberOfSmallerChunks = f - numberOfLargerChunks
  5839. 14.82 s [really-safe-money] - largerChunk :: Amount
  5840. 14.82 s [really-safe-money] - largerChunk = Amount $ succ smallerChunkSize
  5841. 14.82 s [really-safe-money] - in DistributedIntoUnequalChunks
  5842. 14.82 s [really-safe-money] - numberOfLargerChunks
  5843. 14.82 s [really-safe-money] - largerChunk
  5844. 14.82 s [really-safe-money] - numberOfSmallerChunks
  5845. 14.82 s [really-safe-money] - smallerChunk
  5846. 14.82 s [really-safe-money] + in if rest == 0
  5847. 14.82 s [really-safe-money] + then DistributedIntoEqualChunks f smallerChunk
  5848. 14.82 s [really-safe-money] + else
  5849. 14.82 s [really-safe-money] + let -- This 'fromIntegral' is theoretically not safe, but it's
  5850. 14.82 s [really-safe-money] + -- necessarily smaller than f so it will fit.
  5851. 14.82 s [really-safe-money] + numberOfLargerChunks :: Word32
  5852. 14.82 s [really-safe-money] + numberOfLargerChunks = (fromIntegral :: Word64 -> Word32) rest
  5853. 14.82 s [really-safe-money] + numberOfSmallerChunks :: Word32
  5854. 14.82 s [really-safe-money] + numberOfSmallerChunks = f - numberOfLargerChunks
  5855. 14.82 s [really-safe-money] + largerChunk :: Amount
  5856. 14.82 s [really-safe-money] + largerChunk = Amount $ succ smallerChunkSize
  5857. 14.82 s [really-safe-money] + in DistributedIntoUnequalChunks
  5858. 14.82 s [really-safe-money] + numberOfLargerChunks
  5859. 14.82 s [really-safe-money] + largerChunk
  5860. 14.82 s [really-safe-money] + numberOfSmallerChunks
  5861. 14.82 s [really-safe-money] + smallerChunk
  5862. 14.82 s [really-safe-money]
  5863. 14.82 s [really-safe-money] -- | The result of 'distribute'
  5864. 14.82 s [really-safe-money] type AmountDistribution = Distribution Amount
  5865. 14.82 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:544:10-23
  5866. 14.82 s [really-safe-money] @@ -541,7 +541,7 @@
  5867. 14.82 s [really-safe-money] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  5868. 14.82 s [really-safe-money] r :: Integer
  5869. 14.82 s [really-safe-money] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  5870. 14.82 s [really-safe-money] - in if r > maxBoundI
  5871. 14.82 s [really-safe-money] + in if True
  5872. 14.82 s [really-safe-money] then Nothing
  5873. 14.82 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5874. 14.82 s [really-safe-money]
  5875. 14.82 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:544:10-23
  5876. 14.82 s [really-safe-money] @@ -541,7 +541,7 @@
  5877. 14.82 s [really-safe-money] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  5878. 14.82 s [really-safe-money] r :: Integer
  5879. 14.82 s [really-safe-money] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  5880. 14.82 s [really-safe-money] - in if r > maxBoundI
  5881. 14.82 s [really-safe-money] + in if False
  5882. 14.82 s [really-safe-money] then Nothing
  5883. 14.82 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5884. 14.82 s [really-safe-money]
  5885. 14.82 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:544:10-23
  5886. 14.82 s [really-safe-money] @@ -541,7 +541,7 @@
  5887. 14.82 s [really-safe-money] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  5888. 14.82 s [really-safe-money] r :: Integer
  5889. 14.82 s [really-safe-money] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  5890. 14.82 s [really-safe-money] - in if r > maxBoundI
  5891. 14.82 s [really-safe-money] + in if not (r > maxBoundI)
  5892. 14.82 s [really-safe-money] then Nothing
  5893. 14.82 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5894. 14.82 s [really-safe-money]
  5895. 14.82 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:544:7-66
  5896. 14.82 s [really-safe-money] @@ -541,9 +541,9 @@
  5897. 14.82 s [really-safe-money] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  5898. 14.82 s [really-safe-money] r :: Integer
  5899. 14.82 s [really-safe-money] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  5900. 14.82 s [really-safe-money] - in if r > maxBoundI
  5901. 14.82 s [really-safe-money] - then Nothing
  5902. 14.82 s [really-safe-money] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5903. 14.82 s [really-safe-money] + in if r > maxBoundI
  5904. 14.82 s [really-safe-money] + then Nothing
  5905. 14.82 s [really-safe-money] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5906. 14.82 s [really-safe-money]
  5907. 14.82 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  5908. 14.82 s [really-safe-money] --
  5909. 14.82 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:518:14-15
  5910. 14.82 s [really-safe-money] @@ -515,7 +515,7 @@
  5911. 14.82 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  5912. 14.82 s [really-safe-money] r :: Integer
  5913. 14.82 s [really-safe-money] r = i1 - i2
  5914. 14.82 s [really-safe-money] - in if r < 0
  5915. 14.82 s [really-safe-money] + in if r < 1
  5916. 14.82 s [really-safe-money] then Nothing
  5917. 14.82 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5918. 14.82 s [really-safe-money]
  5919. 14.82 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:518:10-15
  5920. 14.82 s [really-safe-money] @@ -515,7 +515,7 @@
  5921. 14.82 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  5922. 14.82 s [really-safe-money] r :: Integer
  5923. 14.82 s [really-safe-money] r = i1 - i2
  5924. 14.82 s [really-safe-money] - in if r < 0
  5925. 14.82 s [really-safe-money] + in if True
  5926. 14.82 s [really-safe-money] then Nothing
  5927. 14.82 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5928. 14.82 s [really-safe-money]
  5929. 14.82 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:518:10-15
  5930. 14.82 s [really-safe-money] @@ -515,7 +515,7 @@
  5931. 14.82 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  5932. 14.82 s [really-safe-money] r :: Integer
  5933. 14.82 s [really-safe-money] r = i1 - i2
  5934. 14.82 s [really-safe-money] - in if r < 0
  5935. 14.82 s [really-safe-money] + in if False
  5936. 14.82 s [really-safe-money] then Nothing
  5937. 14.82 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5938. 14.82 s [really-safe-money]
  5939. 14.82 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:518:10-15
  5940. 14.82 s [really-safe-money] @@ -515,7 +515,7 @@
  5941. 14.82 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  5942. 14.82 s [really-safe-money] r :: Integer
  5943. 14.82 s [really-safe-money] r = i1 - i2
  5944. 14.82 s [really-safe-money] - in if r < 0
  5945. 14.82 s [really-safe-money] + in if not (r < 0)
  5946. 14.82 s [really-safe-money] then Nothing
  5947. 14.82 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5948. 14.82 s [really-safe-money]
  5949. 14.82 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:518:7-66
  5950. 14.82 s [really-safe-money] @@ -515,9 +515,9 @@
  5951. 14.82 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  5952. 14.82 s [really-safe-money] r :: Integer
  5953. 14.82 s [really-safe-money] r = i1 - i2
  5954. 14.82 s [really-safe-money] - in if r < 0
  5955. 14.82 s [really-safe-money] - then Nothing
  5956. 14.82 s [really-safe-money] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5957. 14.82 s [really-safe-money] + in if r < 0
  5958. 14.82 s [really-safe-money] + then Nothing
  5959. 14.82 s [really-safe-money] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5960. 14.82 s [really-safe-money]
  5961. 14.82 s [really-safe-money] -- | Multiply an amount of money by an integer scalar
  5962. 14.82 s [really-safe-money] --
  5963. 14.82 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:476:10-23
  5964. 14.82 s [really-safe-money] @@ -473,7 +473,7 @@
  5965. 14.82 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  5966. 14.82 s [really-safe-money] r :: Integer
  5967. 14.82 s [really-safe-money] r = i1 + i2
  5968. 14.82 s [really-safe-money] - in if r > maxBoundI
  5969. 14.82 s [really-safe-money] + in if True
  5970. 14.82 s [really-safe-money] then Nothing
  5971. 14.82 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5972. 14.82 s [really-safe-money]
  5973. 14.82 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:476:10-23
  5974. 14.82 s [really-safe-money] @@ -473,7 +473,7 @@
  5975. 14.82 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  5976. 14.82 s [really-safe-money] r :: Integer
  5977. 14.82 s [really-safe-money] r = i1 + i2
  5978. 14.82 s [really-safe-money] - in if r > maxBoundI
  5979. 14.82 s [really-safe-money] + in if False
  5980. 14.82 s [really-safe-money] then Nothing
  5981. 14.82 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5982. 14.82 s [really-safe-money]
  5983. 14.82 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:476:10-23
  5984. 14.82 s [really-safe-money] @@ -473,7 +473,7 @@
  5985. 14.82 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  5986. 14.82 s [really-safe-money] r :: Integer
  5987. 14.82 s [really-safe-money] r = i1 + i2
  5988. 14.82 s [really-safe-money] - in if r > maxBoundI
  5989. 14.83 s [really-safe-money] + in if not (r > maxBoundI)
  5990. 14.83 s [really-safe-money] then Nothing
  5991. 14.83 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5992. 14.83 s [really-safe-money]
  5993. 14.83 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:476:7-66
  5994. 14.83 s [really-safe-money] @@ -473,9 +473,9 @@
  5995. 14.83 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  5996. 14.83 s [really-safe-money] r :: Integer
  5997. 14.83 s [really-safe-money] r = i1 + i2
  5998. 14.83 s [really-safe-money] - in if r > maxBoundI
  5999. 14.83 s [really-safe-money] - then Nothing
  6000. 14.83 s [really-safe-money] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  6001. 14.83 s [really-safe-money] + in if r > maxBoundI
  6002. 14.83 s [really-safe-money] + then Nothing
  6003. 14.83 s [really-safe-money] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  6004. 14.83 s [really-safe-money]
  6005. 14.83 s [really-safe-money] -- | Add a number of amounts of money together.
  6006. 14.83 s [really-safe-money] --
  6007. 14.83 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:388:5-16
  6008. 14.83 s [really-safe-money] @@ -385,7 +385,7 @@
  6009. 14.83 s [really-safe-money] -- Nothing
  6010. 14.83 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  6011. 14.83 s [really-safe-money] fromRational (QuantisationFactor qf) r
  6012. 14.83 s [really-safe-money] - | isInvalid r = Nothing
  6013. 14.83 s [really-safe-money] + | True = Nothing
  6014. 14.83 s [really-safe-money] | r < 0 = Nothing
  6015. 14.83 s [really-safe-money] | otherwise =
  6016. 14.83 s [really-safe-money] let resultRational :: Rational
  6017. 14.83 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:388:5-16
  6018. 14.83 s [really-safe-money] @@ -385,7 +385,7 @@
  6019. 14.83 s [really-safe-money] -- Nothing
  6020. 14.83 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  6021. 14.83 s [really-safe-money] fromRational (QuantisationFactor qf) r
  6022. 14.83 s [really-safe-money] - | isInvalid r = Nothing
  6023. 14.83 s [really-safe-money] + | not (isInvalid r) = Nothing
  6024. 14.83 s [really-safe-money] | r < 0 = Nothing
  6025. 14.83 s [really-safe-money] | otherwise =
  6026. 14.83 s [really-safe-money] let resultRational :: Rational
  6027. 14.83 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:389:9-10
  6028. 14.83 s [really-safe-money] @@ -386,7 +386,7 @@
  6029. 14.83 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  6030. 14.83 s [really-safe-money] fromRational (QuantisationFactor qf) r
  6031. 14.83 s [really-safe-money] | isInvalid r = Nothing
  6032. 14.83 s [really-safe-money] - | r < 0 = Nothing
  6033. 14.83 s [really-safe-money] + | r < 1 = Nothing
  6034. 14.83 s [really-safe-money] | otherwise =
  6035. 14.83 s [really-safe-money] let resultRational :: Rational
  6036. 14.83 s [really-safe-money] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  6037. 14.83 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:389:5-10
  6038. 14.83 s [really-safe-money] @@ -386,7 +386,7 @@
  6039. 14.83 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  6040. 14.83 s [really-safe-money] fromRational (QuantisationFactor qf) r
  6041. 14.83 s [really-safe-money] | isInvalid r = Nothing
  6042. 14.83 s [really-safe-money] - | r < 0 = Nothing
  6043. 14.83 s [really-safe-money] + | True = Nothing
  6044. 14.83 s [really-safe-money] | otherwise =
  6045. 14.83 s [really-safe-money] let resultRational :: Rational
  6046. 14.83 s [really-safe-money] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  6047. 14.83 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:389:5-10
  6048. 14.83 s [really-safe-money] @@ -386,7 +386,7 @@
  6049. 14.83 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  6050. 14.83 s [really-safe-money] fromRational (QuantisationFactor qf) r
  6051. 14.83 s [really-safe-money] | isInvalid r = Nothing
  6052. 14.83 s [really-safe-money] - | r < 0 = Nothing
  6053. 14.83 s [really-safe-money] + | not (r < 0) = Nothing
  6054. 14.83 s [really-safe-money] | otherwise =
  6055. 14.83 s [really-safe-money] let resultRational :: Rational
  6056. 14.83 s [really-safe-money] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  6057. 14.83 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:397:14-31
  6058. 14.83 s [really-safe-money] @@ -394,7 +394,7 @@
  6059. 14.83 s [really-safe-money] ceiled = (ceiling :: Rational -> Natural) resultRational
  6060. 14.83 s [really-safe-money] floored :: Natural
  6061. 14.83 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  6062. 14.83 s [really-safe-money] - in if ceiled == floored
  6063. 14.83 s [really-safe-money] + in if True
  6064. 14.83 s [really-safe-money] then
  6065. 14.83 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6066. 14.83 s [really-safe-money] then Nothing
  6067. 14.83 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:397:14-31
  6068. 14.83 s [really-safe-money] @@ -394,7 +394,7 @@
  6069. 14.83 s [really-safe-money] ceiled = (ceiling :: Rational -> Natural) resultRational
  6070. 14.83 s [really-safe-money] floored :: Natural
  6071. 14.83 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  6072. 14.83 s [really-safe-money] - in if ceiled == floored
  6073. 14.83 s [really-safe-money] + in if False
  6074. 14.83 s [really-safe-money] then
  6075. 14.83 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6076. 14.83 s [really-safe-money] then Nothing
  6077. 14.83 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:397:14-31
  6078. 14.83 s [really-safe-money] @@ -394,7 +394,7 @@
  6079. 14.83 s [really-safe-money] ceiled = (ceiling :: Rational -> Natural) resultRational
  6080. 14.83 s [really-safe-money] floored :: Natural
  6081. 14.83 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  6082. 14.83 s [really-safe-money] - in if ceiled == floored
  6083. 14.83 s [really-safe-money] + in if not (ceiled == floored)
  6084. 14.83 s [really-safe-money] then
  6085. 14.83 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6086. 14.83 s [really-safe-money] then Nothing
  6087. 14.83 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:399:18-83
  6088. 14.83 s [really-safe-money] @@ -396,7 +396,7 @@
  6089. 14.83 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  6090. 14.83 s [really-safe-money] in if ceiled == floored
  6091. 14.83 s [really-safe-money] then
  6092. 14.83 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6093. 14.83 s [really-safe-money] + if True
  6094. 14.83 s [really-safe-money] then Nothing
  6095. 14.83 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  6096. 14.83 s [really-safe-money] else Nothing
  6097. 14.83 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:399:18-83
  6098. 14.83 s [really-safe-money] @@ -396,7 +396,7 @@
  6099. 14.83 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  6100. 14.83 s [really-safe-money] in if ceiled == floored
  6101. 14.83 s [really-safe-money] then
  6102. 14.83 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6103. 14.83 s [really-safe-money] + if False
  6104. 14.83 s [really-safe-money] then Nothing
  6105. 14.83 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  6106. 14.83 s [really-safe-money] else Nothing
  6107. 14.83 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:399:18-83
  6108. 14.83 s [really-safe-money] @@ -396,7 +396,7 @@
  6109. 14.83 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  6110. 14.83 s [really-safe-money] in if ceiled == floored
  6111. 14.83 s [really-safe-money] then
  6112. 14.83 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6113. 14.83 s [really-safe-money] + if not (ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64))
  6114. 14.83 s [really-safe-money] then Nothing
  6115. 14.83 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  6116. 14.83 s [really-safe-money] else Nothing
  6117. 14.83 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:399:15-57
  6118. 14.83 s [really-safe-money] @@ -396,9 +396,9 @@
  6119. 14.83 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  6120. 14.83 s [really-safe-money] in if ceiled == floored
  6121. 14.83 s [really-safe-money] then
  6122. 14.83 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6123. 14.83 s [really-safe-money] - then Nothing
  6124. 14.83 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  6125. 14.83 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6126. 14.83 s [really-safe-money] + then Nothing
  6127. 14.83 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  6128. 14.83 s [really-safe-money] else Nothing
  6129. 14.83 s [really-safe-money]
  6130. 14.83 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  6131. 14.83 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:397:11-25
  6132. 14.83 s [really-safe-money] @@ -394,12 +394,12 @@
  6133. 14.83 s [really-safe-money] ceiled = (ceiling :: Rational -> Natural) resultRational
  6134. 14.83 s [really-safe-money] floored :: Natural
  6135. 14.83 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  6136. 14.83 s [really-safe-money] - in if ceiled == floored
  6137. 14.83 s [really-safe-money] - then
  6138. 14.83 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6139. 14.83 s [really-safe-money] - then Nothing
  6140. 14.83 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  6141. 14.83 s [really-safe-money] - else Nothing
  6142. 14.83 s [really-safe-money] + in if ceiled == floored
  6143. 14.83 s [really-safe-money] + then
  6144. 14.83 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6145. 14.83 s [really-safe-money] + then Nothing
  6146. 14.83 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  6147. 14.83 s [really-safe-money] + else Nothing
  6148. 14.83 s [really-safe-money]
  6149. 14.83 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  6150. 14.83 s [really-safe-money] --
  6151. 14.83 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:320:9-10
  6152. 14.83 s [really-safe-money] @@ -317,7 +317,7 @@
  6153. 14.83 s [really-safe-money] Double ->
  6154. 14.83 s [really-safe-money] Maybe Amount
  6155. 14.83 s [really-safe-money] fromDouble (QuantisationFactor qf) d
  6156. 14.83 s [really-safe-money] - | d < 0 = Nothing
  6157. 14.83 s [really-safe-money] + | d < 1 = Nothing
  6158. 14.83 s [really-safe-money] | otherwise =
  6159. 14.83 s [really-safe-money] let resultDouble :: Double
  6160. 14.83 s [really-safe-money] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  6161. 14.83 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:320:5-10
  6162. 14.83 s [really-safe-money] @@ -317,7 +317,7 @@
  6163. 14.83 s [really-safe-money] Double ->
  6164. 14.83 s [really-safe-money] Maybe Amount
  6165. 14.83 s [really-safe-money] fromDouble (QuantisationFactor qf) d
  6166. 14.83 s [really-safe-money] - | d < 0 = Nothing
  6167. 14.83 s [really-safe-money] + | True = Nothing
  6168. 14.83 s [really-safe-money] | otherwise =
  6169. 14.83 s [really-safe-money] let resultDouble :: Double
  6170. 14.83 s [really-safe-money] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  6171. 14.83 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:320:5-10
  6172. 14.83 s [really-safe-money] @@ -317,7 +317,7 @@
  6173. 14.83 s [really-safe-money] Double ->
  6174. 14.83 s [really-safe-money] Maybe Amount
  6175. 14.83 s [really-safe-money] fromDouble (QuantisationFactor qf) d
  6176. 14.83 s [really-safe-money] - | d < 0 = Nothing
  6177. 14.83 s [really-safe-money] + | not (d < 0) = Nothing
  6178. 14.83 s [really-safe-money] | otherwise =
  6179. 14.83 s [really-safe-money] let resultDouble :: Double
  6180. 14.83 s [really-safe-money] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  6181. 14.83 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:327:9-16
  6182. 14.83 s [really-safe-money] @@ -324,7 +324,7 @@
  6183. 14.83 s [really-safe-money] in go resultDouble
  6184. 14.83 s [really-safe-money] where
  6185. 14.83 s [really-safe-money] go resultDouble
  6186. 14.83 s [really-safe-money] - | isNaN d = Nothing
  6187. 14.83 s [really-safe-money] + | True = Nothing
  6188. 14.83 s [really-safe-money] | isInfinite d = Nothing
  6189. 14.83 s [really-safe-money] | otherwise =
  6190. 14.83 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6191. 14.83 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:327:9-16
  6192. 14.83 s [really-safe-money] @@ -324,7 +324,7 @@
  6193. 14.83 s [really-safe-money] in go resultDouble
  6194. 14.83 s [really-safe-money] where
  6195. 14.83 s [really-safe-money] go resultDouble
  6196. 14.83 s [really-safe-money] - | isNaN d = Nothing
  6197. 14.83 s [really-safe-money] + | not (isNaN d) = Nothing
  6198. 14.83 s [really-safe-money] | isInfinite d = Nothing
  6199. 14.83 s [really-safe-money] | otherwise =
  6200. 14.83 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6201. 14.83 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:328:9-21
  6202. 14.83 s [really-safe-money] @@ -325,7 +325,7 @@
  6203. 14.83 s [really-safe-money] where
  6204. 14.83 s [really-safe-money] go resultDouble
  6205. 14.83 s [really-safe-money] | isNaN d = Nothing
  6206. 14.83 s [really-safe-money] - | isInfinite d = Nothing
  6207. 14.83 s [really-safe-money] + | True = Nothing
  6208. 14.83 s [really-safe-money] | otherwise =
  6209. 14.83 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6210. 14.83 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  6211. 14.83 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:328:9-21
  6212. 14.83 s [really-safe-money] @@ -325,7 +325,7 @@
  6213. 14.83 s [really-safe-money] where
  6214. 14.83 s [really-safe-money] go resultDouble
  6215. 14.83 s [really-safe-money] | isNaN d = Nothing
  6216. 14.83 s [really-safe-money] - | isInfinite d = Nothing
  6217. 14.83 s [really-safe-money] + | not (isInfinite d) = Nothing
  6218. 14.83 s [really-safe-money] | otherwise =
  6219. 14.83 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6220. 14.83 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  6221. 14.83 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:332:38-40
  6222. 14.83 s [really-safe-money] @@ -329,7 +329,7 @@
  6223. 14.83 s [really-safe-money] | otherwise =
  6224. 14.83 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6225. 14.83 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  6226. 14.83 s [really-safe-money] - if exponent resultDouble > 65
  6227. 14.83 s [really-safe-money] + if exponent resultDouble > 0
  6228. 14.83 s [really-safe-money] then Nothing
  6229. 14.83 s [really-safe-money] else
  6230. 14.83 s [really-safe-money] let ceiled :: Natural
  6231. 14.83 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:332:38-40
  6232. 14.83 s [really-safe-money] @@ -329,7 +329,7 @@
  6233. 14.83 s [really-safe-money] | otherwise =
  6234. 14.83 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6235. 14.83 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  6236. 14.83 s [really-safe-money] - if exponent resultDouble > 65
  6237. 14.83 s [really-safe-money] + if exponent resultDouble > 1
  6238. 14.83 s [really-safe-money] then Nothing
  6239. 14.83 s [really-safe-money] else
  6240. 14.83 s [really-safe-money] let ceiled :: Natural
  6241. 14.83 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:332:38-40
  6242. 14.83 s [really-safe-money] @@ -329,7 +329,7 @@
  6243. 14.83 s [really-safe-money] | otherwise =
  6244. 14.83 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6245. 14.83 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  6246. 14.83 s [really-safe-money] - if exponent resultDouble > 65
  6247. 14.83 s [really-safe-money] + if exponent resultDouble > -65
  6248. 14.83 s [really-safe-money] then Nothing
  6249. 14.83 s [really-safe-money] else
  6250. 14.83 s [really-safe-money] let ceiled :: Natural
  6251. 14.83 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:332:14-40
  6252. 14.83 s [really-safe-money] @@ -329,7 +329,7 @@
  6253. 14.83 s [really-safe-money] | otherwise =
  6254. 14.84 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6255. 14.84 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  6256. 14.84 s [really-safe-money] - if exponent resultDouble > 65
  6257. 14.84 s [really-safe-money] + if True
  6258. 14.84 s [really-safe-money] then Nothing
  6259. 14.84 s [really-safe-money] else
  6260. 14.84 s [really-safe-money] let ceiled :: Natural
  6261. 14.84 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:332:14-40
  6262. 14.84 s [really-safe-money] @@ -329,7 +329,7 @@
  6263. 14.84 s [really-safe-money] | otherwise =
  6264. 14.84 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6265. 14.84 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  6266. 14.84 s [really-safe-money] - if exponent resultDouble > 65
  6267. 14.84 s [really-safe-money] + if False
  6268. 14.84 s [really-safe-money] then Nothing
  6269. 14.84 s [really-safe-money] else
  6270. 14.84 s [really-safe-money] let ceiled :: Natural
  6271. 14.84 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:332:14-40
  6272. 14.84 s [really-safe-money] @@ -329,7 +329,7 @@
  6273. 14.84 s [really-safe-money] | otherwise =
  6274. 14.84 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6275. 14.84 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  6276. 14.84 s [really-safe-money] - if exponent resultDouble > 65
  6277. 14.84 s [really-safe-money] + if not (exponent resultDouble > 65)
  6278. 14.84 s [really-safe-money] then Nothing
  6279. 14.84 s [really-safe-money] else
  6280. 14.84 s [really-safe-money] let ceiled :: Natural
  6281. 14.84 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:339:22-39
  6282. 14.84 s [really-safe-money] @@ -336,7 +336,7 @@
  6283. 14.84 s [really-safe-money] ceiled = (ceiling :: Double -> Natural) resultDouble
  6284. 14.84 s [really-safe-money] floored :: Natural
  6285. 14.84 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  6286. 14.84 s [really-safe-money] - in if ceiled == floored
  6287. 14.84 s [really-safe-money] + in if True
  6288. 14.84 s [really-safe-money] then
  6289. 14.84 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6290. 14.84 s [really-safe-money] then Nothing
  6291. 14.84 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:339:22-39
  6292. 14.84 s [really-safe-money] @@ -336,7 +336,7 @@
  6293. 14.84 s [really-safe-money] ceiled = (ceiling :: Double -> Natural) resultDouble
  6294. 14.84 s [really-safe-money] floored :: Natural
  6295. 14.84 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  6296. 14.84 s [really-safe-money] - in if ceiled == floored
  6297. 14.84 s [really-safe-money] + in if False
  6298. 14.84 s [really-safe-money] then
  6299. 14.84 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6300. 14.84 s [really-safe-money] then Nothing
  6301. 14.84 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:339:22-39
  6302. 14.84 s [really-safe-money] @@ -336,7 +336,7 @@
  6303. 14.84 s [really-safe-money] ceiled = (ceiling :: Double -> Natural) resultDouble
  6304. 14.84 s [really-safe-money] floored :: Natural
  6305. 14.84 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  6306. 14.84 s [really-safe-money] - in if ceiled == floored
  6307. 14.84 s [really-safe-money] + in if not (ceiled == floored)
  6308. 14.84 s [really-safe-money] then
  6309. 14.84 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6310. 14.84 s [really-safe-money] then Nothing
  6311. 14.84 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:341:26-91
  6312. 14.84 s [really-safe-money] @@ -338,7 +338,7 @@
  6313. 14.84 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  6314. 14.84 s [really-safe-money] in if ceiled == floored
  6315. 14.84 s [really-safe-money] then
  6316. 14.84 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6317. 14.84 s [really-safe-money] + if True
  6318. 14.84 s [really-safe-money] then Nothing
  6319. 14.84 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  6320. 14.84 s [really-safe-money] else Nothing
  6321. 14.84 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:341:26-91
  6322. 14.84 s [really-safe-money] @@ -338,7 +338,7 @@
  6323. 14.84 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  6324. 14.84 s [really-safe-money] in if ceiled == floored
  6325. 14.84 s [really-safe-money] then
  6326. 14.84 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6327. 14.84 s [really-safe-money] + if False
  6328. 14.84 s [really-safe-money] then Nothing
  6329. 14.84 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  6330. 14.84 s [really-safe-money] else Nothing
  6331. 14.84 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:341:26-91
  6332. 14.84 s [really-safe-money] @@ -338,7 +338,7 @@
  6333. 14.84 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  6334. 14.84 s [really-safe-money] in if ceiled == floored
  6335. 14.84 s [really-safe-money] then
  6336. 14.84 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6337. 14.84 s [really-safe-money] + if not (ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64))
  6338. 14.84 s [really-safe-money] then Nothing
  6339. 14.84 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  6340. 14.84 s [really-safe-money] else Nothing
  6341. 14.84 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:341:23-65
  6342. 14.84 s [really-safe-money] @@ -338,9 +338,9 @@
  6343. 14.84 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  6344. 14.84 s [really-safe-money] in if ceiled == floored
  6345. 14.84 s [really-safe-money] then
  6346. 14.84 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6347. 14.84 s [really-safe-money] - then Nothing
  6348. 14.84 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  6349. 14.84 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6350. 14.84 s [really-safe-money] + then Nothing
  6351. 14.84 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  6352. 14.84 s [really-safe-money] else Nothing
  6353. 14.84 s [really-safe-money]
  6354. 14.84 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  6355. 14.84 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:339:19-33
  6356. 14.84 s [really-safe-money] @@ -336,12 +336,12 @@
  6357. 14.84 s [really-safe-money] ceiled = (ceiling :: Double -> Natural) resultDouble
  6358. 14.84 s [really-safe-money] floored :: Natural
  6359. 14.84 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  6360. 14.84 s [really-safe-money] - in if ceiled == floored
  6361. 14.84 s [really-safe-money] - then
  6362. 14.84 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6363. 14.84 s [really-safe-money] - then Nothing
  6364. 14.84 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  6365. 14.84 s [really-safe-money] - else Nothing
  6366. 14.84 s [really-safe-money] + in if ceiled == floored
  6367. 14.84 s [really-safe-money] + then
  6368. 14.84 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6369. 14.84 s [really-safe-money] + then Nothing
  6370. 14.84 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  6371. 14.84 s [really-safe-money] + else Nothing
  6372. 14.84 s [really-safe-money]
  6373. 14.84 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  6374. 14.84 s [really-safe-money] --
  6375. 14.84 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:332:11-33
  6376. 14.84 s [really-safe-money] @@ -329,19 +329,19 @@
  6377. 14.84 s [really-safe-money] | otherwise =
  6378. 14.84 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6379. 14.84 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  6380. 14.84 s [really-safe-money] - if exponent resultDouble > 65
  6381. 14.84 s [really-safe-money] - then Nothing
  6382. 14.84 s [really-safe-money] - else
  6383. 14.84 s [really-safe-money] - let ceiled :: Natural
  6384. 14.84 s [really-safe-money] - ceiled = (ceiling :: Double -> Natural) resultDouble
  6385. 14.84 s [really-safe-money] - floored :: Natural
  6386. 14.84 s [really-safe-money] - floored = (floor :: Double -> Natural) resultDouble
  6387. 14.84 s [really-safe-money] - in if ceiled == floored
  6388. 14.84 s [really-safe-money] - then
  6389. 14.84 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6390. 14.84 s [really-safe-money] - then Nothing
  6391. 14.84 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  6392. 14.84 s [really-safe-money] - else Nothing
  6393. 14.84 s [really-safe-money] + if exponent resultDouble > 65
  6394. 14.84 s [really-safe-money] + then Nothing
  6395. 14.84 s [really-safe-money] + else
  6396. 14.84 s [really-safe-money] + let ceiled :: Natural
  6397. 14.84 s [really-safe-money] + ceiled = (ceiling :: Double -> Natural) resultDouble
  6398. 14.84 s [really-safe-money] + floored :: Natural
  6399. 14.84 s [really-safe-money] + floored = (floor :: Double -> Natural) resultDouble
  6400. 14.84 s [really-safe-money] + in if ceiled == floored
  6401. 14.84 s [really-safe-money] + then
  6402. 14.84 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6403. 14.84 s [really-safe-money] + then Nothing
  6404. 14.84 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  6405. 14.84 s [really-safe-money] + else Nothing
  6406. 14.84 s [really-safe-money]
  6407. 14.84 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  6408. 14.84 s [really-safe-money] --
  6409. 14.84 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:290:79-80
  6410. 14.84 s [really-safe-money] @@ -287,7 +287,7 @@
  6411. 14.84 s [really-safe-money] -- >>> toRatio (QuantisationFactor 100) (Amount 1)
  6412. 14.84 s [really-safe-money] -- 1 % 100
  6413. 14.84 s [really-safe-money] toRatio :: QuantisationFactor -> Amount -> Ratio Natural
  6414. 14.84 s [really-safe-money] -toRatio (QuantisationFactor 0) a = fromIntegral (toMinimalQuantisations a) :% 0
  6415. 14.84 s [really-safe-money] +toRatio (QuantisationFactor 0) a = fromIntegral (toMinimalQuantisations a) :% 1
  6416. 14.84 s [really-safe-money] toRatio (QuantisationFactor quantisationFactor) a =
  6417. 14.84 s [really-safe-money] (fromIntegral :: Word64 -> Natural) (toMinimalQuantisations a)
  6418. 14.84 s [really-safe-money] % (fromIntegral :: Word32 -> Natural) quantisationFactor
  6419. 14.84 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:494:96-97
  6420. 14.84 s [really-safe-money] @@ -491,7 +491,7 @@
  6421. 14.84 s [really-safe-money] let maxBoundI :: Integer
  6422. 14.84 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  6423. 14.84 s [really-safe-money] r :: Integer
  6424. 14.84 s [really-safe-money] - r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  6425. 14.84 s [really-safe-money] + r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 1 l
  6426. 14.84 s [really-safe-money] in if r > maxBoundI
  6427. 14.84 s [really-safe-money] then Nothing
  6428. 14.84 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  6429. 14.84 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:495:10-23
  6430. 14.84 s [really-safe-money] @@ -492,7 +492,7 @@
  6431. 14.84 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  6432. 14.84 s [really-safe-money] r :: Integer
  6433. 14.84 s [really-safe-money] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  6434. 14.84 s [really-safe-money] - in if r > maxBoundI
  6435. 14.84 s [really-safe-money] + in if True
  6436. 14.84 s [really-safe-money] then Nothing
  6437. 14.84 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  6438. 14.84 s [really-safe-money]
  6439. 14.84 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:495:10-23
  6440. 14.84 s [really-safe-money] @@ -492,7 +492,7 @@
  6441. 14.84 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  6442. 14.84 s [really-safe-money] r :: Integer
  6443. 14.84 s [really-safe-money] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  6444. 14.84 s [really-safe-money] - in if r > maxBoundI
  6445. 14.84 s [really-safe-money] + in if False
  6446. 14.84 s [really-safe-money] then Nothing
  6447. 14.84 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  6448. 14.84 s [really-safe-money]
  6449. 14.84 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:495:10-23
  6450. 14.84 s [really-safe-money] @@ -492,7 +492,7 @@
  6451. 14.84 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  6452. 14.84 s [really-safe-money] r :: Integer
  6453. 14.84 s [really-safe-money] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  6454. 14.84 s [really-safe-money] - in if r > maxBoundI
  6455. 14.84 s [really-safe-money] + in if not (r > maxBoundI)
  6456. 14.84 s [really-safe-money] then Nothing
  6457. 14.84 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  6458. 14.84 s [really-safe-money]
  6459. 14.84 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:495:7-66
  6460. 14.84 s [really-safe-money] @@ -492,9 +492,9 @@
  6461. 14.84 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  6462. 14.84 s [really-safe-money] r :: Integer
  6463. 14.84 s [really-safe-money] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  6464. 14.84 s [really-safe-money] - in if r > maxBoundI
  6465. 14.84 s [really-safe-money] - then Nothing
  6466. 14.84 s [really-safe-money] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  6467. 14.84 s [really-safe-money] + in if r > maxBoundI
  6468. 14.84 s [really-safe-money] + then Nothing
  6469. 14.84 s [really-safe-money] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  6470. 14.84 s [really-safe-money]
  6471. 14.84 s [really-safe-money] -- | Add two amounts of money.
  6472. 14.84 s [really-safe-money] --
  6473. 14.84 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:250:15-16
  6474. 14.84 s [really-safe-money] @@ -247,7 +247,7 @@
  6475. 14.84 s [really-safe-money] -- >>> zero
  6476. 14.84 s [really-safe-money] -- Amount 0
  6477. 14.84 s [really-safe-money] zero :: Amount
  6478. 14.84 s [really-safe-money] -zero = Amount 0
  6479. 14.84 s [really-safe-money] +zero = Amount 1
  6480. 14.84 s [really-safe-money]
  6481. 14.84 s [really-safe-money] -- | Turn an amount into a number of minimal quantisations.
  6482. 14.84 s [really-safe-money] --
  6483. 14.84 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:661:30-31
  6484. 14.84 s [really-safe-money] @@ -658,7 +658,7 @@
  6485. 14.84 s [really-safe-money] -- | The amount and the real rate that was used, considering the 'Rounding'
  6486. 14.84 s [really-safe-money] (Maybe Amount, Ratio Natural)
  6487. 14.84 s [really-safe-money] fraction _ (Amount 0) f = (Just zero, f)
  6488. 14.84 s [really-safe-money] -fraction _ _ 0 = (Just zero, 0)
  6489. 14.84 s [really-safe-money] +fraction _ _ 0 = (Just zero, 1)
  6490. 14.84 s [really-safe-money] fraction r (Amount a) f =
  6491. 14.84 s [really-safe-money] let amountAsRatio :: Ratio Natural
  6492. 14.84 s [really-safe-money] amountAsRatio = (fromIntegral :: Word64 -> Ratio Natural) a
  6493. 14.84 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:668:17-30
  6494. 14.84 s [really-safe-money] @@ -665,10 +665,10 @@
  6495. 14.84 s [really-safe-money] theoreticalResult :: Ratio Natural
  6496. 14.84 s [really-safe-money] theoreticalResult = amountAsRatio * f
  6497. 14.84 s [really-safe-money] rounder :: Ratio Natural -> Natural
  6498. 14.84 s [really-safe-money] - rounder = case r of
  6499. 14.84 s [really-safe-money] - RoundUp -> ceiling
  6500. 14.84 s [really-safe-money] - RoundDown -> floor
  6501. 14.84 s [really-safe-money] - RoundNearest -> round
  6502. 14.84 s [really-safe-money] + rounder = case r of
  6503. 14.84 s [really-safe-money] + RoundUp -> ceiling
  6504. 14.84 s [really-safe-money] + RoundDown -> floor
  6505. 14.84 s [really-safe-money] + RoundNearest -> round
  6506. 14.84 s [really-safe-money] roundedResult :: Natural
  6507. 14.84 s [really-safe-money] roundedResult = rounder theoreticalResult
  6508. 14.84 s [really-safe-money] actualRate :: Ratio Natural
  6509. 14.84 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:668:17-30
  6510. 14.84 s [really-safe-money] @@ -665,10 +665,10 @@
  6511. 14.84 s [really-safe-money] theoreticalResult :: Ratio Natural
  6512. 14.84 s [really-safe-money] theoreticalResult = amountAsRatio * f
  6513. 14.84 s [really-safe-money] rounder :: Ratio Natural -> Natural
  6514. 14.84 s [really-safe-money] - rounder = case r of
  6515. 14.84 s [really-safe-money] - RoundUp -> ceiling
  6516. 14.84 s [really-safe-money] - RoundDown -> floor
  6517. 14.84 s [really-safe-money] - RoundNearest -> round
  6518. 14.84 s [really-safe-money] + rounder = case r of
  6519. 14.84 s [really-safe-money] + RoundUp -> ceiling
  6520. 14.84 s [really-safe-money] + RoundDown -> floor
  6521. 14.84 s [really-safe-money] + RoundNearest -> round
  6522. 14.84 s [really-safe-money] roundedResult :: Natural
  6523. 14.84 s [really-safe-money] roundedResult = rounder theoreticalResult
  6524. 14.84 s [really-safe-money] actualRate :: Ratio Natural
  6525. 14.84 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:668:17-30
  6526. 14.84 s [really-safe-money] @@ -665,10 +665,10 @@
  6527. 14.84 s [really-safe-money] theoreticalResult :: Ratio Natural
  6528. 14.84 s [really-safe-money] theoreticalResult = amountAsRatio * f
  6529. 14.84 s [really-safe-money] rounder :: Ratio Natural -> Natural
  6530. 14.84 s [really-safe-money] - rounder = case r of
  6531. 14.84 s [really-safe-money] - RoundUp -> ceiling
  6532. 14.84 s [really-safe-money] - RoundDown -> floor
  6533. 14.84 s [really-safe-money] - RoundNearest -> round
  6534. 14.84 s [really-safe-money] + rounder = case r of
  6535. 14.84 s [really-safe-money] + RoundUp -> ceiling
  6536. 14.84 s [really-safe-money] + RoundDown -> floor
  6537. 14.84 s [really-safe-money] + RoundNearest -> round
  6538. 14.84 s [really-safe-money] roundedResult :: Natural
  6539. 14.84 s [really-safe-money] roundedResult = rounder theoreticalResult
  6540. 14.84 s [really-safe-money] actualRate :: Ratio Natural
  6541. 14.84 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:681:12-37
  6542. 14.84 s [really-safe-money] @@ -678,7 +678,7 @@
  6543. 14.84 s [really-safe-money] maxBoundN :: Natural
  6544. 14.84 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  6545. 14.84 s [really-safe-money] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  6546. 14.84 s [really-safe-money] - in ( if roundedResult > maxBoundN
  6547. 14.84 s [really-safe-money] + in ( if True
  6548. 14.84 s [really-safe-money] then Nothing
  6549. 14.84 s [really-safe-money] else Just result,
  6550. 14.84 s [really-safe-money] actualRate
  6551. 14.84 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:681:12-37
  6552. 14.84 s [really-safe-money] @@ -678,7 +678,7 @@
  6553. 14.84 s [really-safe-money] maxBoundN :: Natural
  6554. 14.84 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  6555. 14.84 s [really-safe-money] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  6556. 14.85 s [really-safe-money] - in ( if roundedResult > maxBoundN
  6557. 14.85 s [really-safe-money] + in ( if False
  6558. 14.85 s [really-safe-money] then Nothing
  6559. 14.85 s [really-safe-money] else Just result,
  6560. 14.85 s [really-safe-money] actualRate
  6561. 14.85 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:681:12-37
  6562. 14.85 s [really-safe-money] @@ -678,7 +678,7 @@
  6563. 14.85 s [really-safe-money] maxBoundN :: Natural
  6564. 14.85 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  6565. 14.85 s [really-safe-money] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  6566. 14.85 s [really-safe-money] - in ( if roundedResult > maxBoundN
  6567. 14.85 s [really-safe-money] + in ( if not (roundedResult > maxBoundN)
  6568. 14.85 s [really-safe-money] then Nothing
  6569. 14.85 s [really-safe-money] else Just result,
  6570. 14.85 s [really-safe-money] actualRate
  6571. 14.85 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:681:9-27
  6572. 14.85 s [really-safe-money] @@ -678,9 +678,9 @@
  6573. 14.85 s [really-safe-money] maxBoundN :: Natural
  6574. 14.85 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  6575. 14.85 s [really-safe-money] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  6576. 14.85 s [really-safe-money] - in ( if roundedResult > maxBoundN
  6577. 14.85 s [really-safe-money] - then Nothing
  6578. 14.85 s [really-safe-money] - else Just result,
  6579. 14.85 s [really-safe-money] + in ( if roundedResult > maxBoundN
  6580. 14.85 s [really-safe-money] + then Nothing
  6581. 14.85 s [really-safe-money] + else Just result,
  6582. 14.85 s [really-safe-money] actualRate
  6583. 14.85 s [really-safe-money] )
  6584. 14.85 s [really-safe-money]
  6585. 14.85 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:806:79-92
  6586. 14.85 s [really-safe-money] @@ -803,4 +803,4 @@
  6587. 14.85 s [really-safe-money]
  6588. 14.85 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  6589. 14.85 s [really-safe-money] validateStrictlyPositive :: Amount -> Validation
  6590. 14.85 s [really-safe-money] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  6591. 14.85 s [really-safe-money] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ True
  6592. 14.85 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:806:79-92
  6593. 14.85 s [really-safe-money] @@ -803,4 +803,4 @@
  6594. 14.85 s [really-safe-money]
  6595. 14.85 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  6596. 14.85 s [really-safe-money] validateStrictlyPositive :: Amount -> Validation
  6597. 14.85 s [really-safe-money] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  6598. 14.85 s [really-safe-money] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ False
  6599. 14.85 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:806:79-92
  6600. 14.85 s [really-safe-money] @@ -803,4 +803,4 @@
  6601. 14.85 s [really-safe-money]
  6602. 14.85 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  6603. 14.85 s [really-safe-money] validateStrictlyPositive :: Amount -> Validation
  6604. 14.85 s [really-safe-money] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  6605. 14.85 s [really-safe-money] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ not (amount > zero)
  6606. 14.85 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:607:15-22
  6607. 14.85 s [really-safe-money] @@ -604,7 +604,7 @@
  6608. 14.85 s [really-safe-money] case ad of
  6609. 14.85 s [really-safe-money] DistributedIntoUnequalChunks _ a1 _ a2 ->
  6610. 14.85 s [really-safe-money] declare "The larger chunks are larger" $
  6611. 14.85 s [really-safe-money] - a1 > a2
  6612. 14.85 s [really-safe-money] + True
  6613. 14.85 s [really-safe-money] _ -> valid
  6614. 14.85 s [really-safe-money] ]
  6615. 14.85 s [really-safe-money]
  6616. 14.85 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:607:15-22
  6617. 14.85 s [really-safe-money] @@ -604,7 +604,7 @@
  6618. 14.85 s [really-safe-money] case ad of
  6619. 14.85 s [really-safe-money] DistributedIntoUnequalChunks _ a1 _ a2 ->
  6620. 14.85 s [really-safe-money] declare "The larger chunks are larger" $
  6621. 14.85 s [really-safe-money] - a1 > a2
  6622. 14.85 s [really-safe-money] + False
  6623. 14.85 s [really-safe-money] _ -> valid
  6624. 14.85 s [really-safe-money] ]
  6625. 14.85 s [really-safe-money]
  6626. 14.85 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:607:15-22
  6627. 14.85 s [really-safe-money] @@ -604,7 +604,7 @@
  6628. 14.85 s [really-safe-money] case ad of
  6629. 14.85 s [really-safe-money] DistributedIntoUnequalChunks _ a1 _ a2 ->
  6630. 14.85 s [really-safe-money] declare "The larger chunks are larger" $
  6631. 14.85 s [really-safe-money] - a1 > a2
  6632. 14.85 s [really-safe-money] + not (a1 > a2)
  6633. 14.85 s [really-safe-money] _ -> valid
  6634. 14.85 s [really-safe-money] ]
  6635. 14.85 s [really-safe-money]
  6636. 14.85 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:604:9-21
  6637. 14.85 s [really-safe-money] @@ -601,11 +601,11 @@
  6638. 14.85 s [really-safe-money] validate ad =
  6639. 14.85 s [really-safe-money] mconcat
  6640. 14.85 s [really-safe-money] [ genericValidate ad,
  6641. 14.85 s [really-safe-money] - case ad of
  6642. 14.85 s [really-safe-money] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  6643. 14.85 s [really-safe-money] - declare "The larger chunks are larger" $
  6644. 14.85 s [really-safe-money] - a1 > a2
  6645. 14.85 s [really-safe-money] - _ -> valid
  6646. 14.85 s [really-safe-money] + case ad of
  6647. 14.85 s [really-safe-money] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  6648. 14.85 s [really-safe-money] + declare "The larger chunks are larger" $
  6649. 14.85 s [really-safe-money] + a1 > a2
  6650. 14.85 s [really-safe-money] + _ -> valid
  6651. 14.85 s [really-safe-money] ]
  6652. 14.85 s [really-safe-money]
  6653. 14.85 s [really-safe-money] instance (NFData amount) => NFData (Distribution amount)
  6654. 14.85 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:604:9-21
  6655. 14.85 s [really-safe-money] @@ -601,11 +601,11 @@
  6656. 14.85 s [really-safe-money] validate ad =
  6657. 14.85 s [really-safe-money] mconcat
  6658. 14.85 s [really-safe-money] [ genericValidate ad,
  6659. 14.85 s [really-safe-money] - case ad of
  6660. 14.85 s [really-safe-money] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  6661. 14.85 s [really-safe-money] - declare "The larger chunks are larger" $
  6662. 14.85 s [really-safe-money] - a1 > a2
  6663. 14.85 s [really-safe-money] - _ -> valid
  6664. 14.85 s [really-safe-money] + case ad of
  6665. 14.85 s [really-safe-money] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  6666. 14.85 s [really-safe-money] + declare "The larger chunks are larger" $
  6667. 14.85 s [really-safe-money] + a1 > a2
  6668. 14.85 s [really-safe-money] + _ -> valid
  6669. 14.85 s [really-safe-money] ]
  6670. 14.85 s [really-safe-money]
  6671. 14.85 s [really-safe-money] instance (NFData amount) => NFData (Distribution amount)
  6672. 14.85 s [really-safe-money] added mutation ListLit at src/Money/Amount.hs:603:7-8
  6673. 14.85 s [really-safe-money] @@ -600,13 +600,7 @@
  6674. 14.85 s [really-safe-money] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  6675. 14.85 s [really-safe-money] validate ad =
  6676. 14.85 s [really-safe-money] mconcat
  6677. 14.85 s [really-safe-money] - [ genericValidate ad,
  6678. 14.85 s [really-safe-money] - case ad of
  6679. 14.85 s [really-safe-money] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  6680. 14.85 s [really-safe-money] - declare "The larger chunks are larger" $
  6681. 14.85 s [really-safe-money] - a1 > a2
  6682. 14.85 s [really-safe-money] - _ -> valid
  6683. 14.85 s [really-safe-money] - ]
  6684. 14.85 s [really-safe-money] + []
  6685. 14.85 s [really-safe-money]
  6686. 14.85 s [really-safe-money] instance (NFData amount) => NFData (Distribution amount)
  6687. 14.85 s [really-safe-money]
  6688. 14.85 s [really-safe-money] added mutation ListLit at src/Money/Amount.hs:603:7-8
  6689. 14.85 s [really-safe-money] @@ -600,13 +600,13 @@
  6690. 14.85 s [really-safe-money] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  6691. 14.85 s [really-safe-money] validate ad =
  6692. 14.85 s [really-safe-money] mconcat
  6693. 14.85 s [really-safe-money] - [ genericValidate ad,
  6694. 14.85 s [really-safe-money] - case ad of
  6695. 14.85 s [really-safe-money] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  6696. 14.85 s [really-safe-money] - declare "The larger chunks are larger" $
  6697. 14.85 s [really-safe-money] - a1 > a2
  6698. 14.85 s [really-safe-money] - _ -> valid
  6699. 14.85 s [really-safe-money] - ]
  6700. 14.85 s [really-safe-money] + [ genericValidate ad,
  6701. 14.85 s [really-safe-money] + case ad of
  6702. 14.85 s [really-safe-money] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  6703. 14.85 s [really-safe-money] + declare "The larger chunks are larger" $
  6704. 14.85 s [really-safe-money] + a1 > a2
  6705. 14.85 s [really-safe-money] + _ -> valid
  6706. 14.85 s [really-safe-money] + ]
  6707. 14.85 s [really-safe-money]
  6708. 14.85 s [really-safe-money] instance (NFData amount) => NFData (Distribution amount)
  6709. 14.85 s [really-safe-money]
  6710. 14.85 s [really-safe-money] added 81 mutations
  6711. 16.35 s [really-safe-money] [ 7 of 12] Compiling Money.MultiAmount ( src/Money/MultiAmount.hs, dist/build/Money/MultiAmount.p_o )
  6712. 16.37 s [really-safe-money] mutation: instrumenting Money.MultiAmount
  6713. 16.72 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
  6714. 16.72 s [really-safe-money] @@ -156,10 +156,10 @@
  6715. 16.72 s [really-safe-money] fmap
  6716. 16.72 s [really-safe-money] ( ( \theoreticalResult ->
  6717. 16.72 s [really-safe-money] let rounder :: Ratio Natural -> Natural
  6718. 16.72 s [really-safe-money] - rounder = case r of
  6719. 16.72 s [really-safe-money] - RoundUp -> ceiling
  6720. 16.72 s [really-safe-money] - RoundDown -> floor
  6721. 16.72 s [really-safe-money] - RoundNearest -> round
  6722. 16.72 s [really-safe-money] + rounder = case r of
  6723. 16.72 s [really-safe-money] + RoundUp -> ceiling
  6724. 16.72 s [really-safe-money] + RoundDown -> floor
  6725. 16.72 s [really-safe-money] + RoundNearest -> round
  6726. 16.72 s [really-safe-money] roundedResult :: Natural
  6727. 16.72 s [really-safe-money] roundedResult = rounder theoreticalResult
  6728. 16.72 s [really-safe-money] maxBoundN :: Natural
  6729. 16.72 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
  6730. 16.72 s [really-safe-money] @@ -156,10 +156,10 @@
  6731. 16.72 s [really-safe-money] fmap
  6732. 16.72 s [really-safe-money] ( ( \theoreticalResult ->
  6733. 16.72 s [really-safe-money] let rounder :: Ratio Natural -> Natural
  6734. 16.72 s [really-safe-money] - rounder = case r of
  6735. 16.72 s [really-safe-money] - RoundUp -> ceiling
  6736. 16.72 s [really-safe-money] - RoundDown -> floor
  6737. 16.72 s [really-safe-money] - RoundNearest -> round
  6738. 16.72 s [really-safe-money] + rounder = case r of
  6739. 16.72 s [really-safe-money] + RoundUp -> ceiling
  6740. 16.72 s [really-safe-money] + RoundDown -> floor
  6741. 16.72 s [really-safe-money] + RoundNearest -> round
  6742. 16.72 s [really-safe-money] roundedResult :: Natural
  6743. 16.72 s [really-safe-money] roundedResult = rounder theoreticalResult
  6744. 16.72 s [really-safe-money] maxBoundN :: Natural
  6745. 16.72 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
  6746. 16.72 s [really-safe-money] @@ -156,10 +156,10 @@
  6747. 16.72 s [really-safe-money] fmap
  6748. 16.72 s [really-safe-money] ( ( \theoreticalResult ->
  6749. 16.72 s [really-safe-money] let rounder :: Ratio Natural -> Natural
  6750. 16.72 s [really-safe-money] - rounder = case r of
  6751. 16.72 s [really-safe-money] - RoundUp -> ceiling
  6752. 16.72 s [really-safe-money] - RoundDown -> floor
  6753. 16.72 s [really-safe-money] - RoundNearest -> round
  6754. 16.72 s [really-safe-money] + rounder = case r of
  6755. 16.72 s [really-safe-money] + RoundUp -> ceiling
  6756. 16.72 s [really-safe-money] + RoundDown -> floor
  6757. 16.72 s [really-safe-money] + RoundNearest -> round
  6758. 16.72 s [really-safe-money] roundedResult :: Natural
  6759. 16.72 s [really-safe-money] roundedResult = rounder theoreticalResult
  6760. 16.72 s [really-safe-money] maxBoundN :: Natural
  6761. 16.72 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:168:20-45
  6762. 16.72 s [really-safe-money] @@ -165,7 +165,7 @@
  6763. 16.72 s [really-safe-money] maxBoundN :: Natural
  6764. 16.72 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  6765. 16.72 s [really-safe-money] actualResult =
  6766. 16.72 s [really-safe-money] - if roundedResult > maxBoundN
  6767. 16.72 s [really-safe-money] + if True
  6768. 16.72 s [really-safe-money] then Nothing
  6769. 16.72 s [really-safe-money] else Just (fromIntegral roundedResult)
  6770. 16.72 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6771. 16.72 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:168:20-45
  6772. 16.72 s [really-safe-money] @@ -165,7 +165,7 @@
  6773. 16.72 s [really-safe-money] maxBoundN :: Natural
  6774. 16.72 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  6775. 16.72 s [really-safe-money] actualResult =
  6776. 16.72 s [really-safe-money] - if roundedResult > maxBoundN
  6777. 16.72 s [really-safe-money] + if False
  6778. 16.72 s [really-safe-money] then Nothing
  6779. 16.72 s [really-safe-money] else Just (fromIntegral roundedResult)
  6780. 16.72 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6781. 16.72 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:168:20-45
  6782. 16.72 s [really-safe-money] @@ -165,7 +165,7 @@
  6783. 16.72 s [really-safe-money] maxBoundN :: Natural
  6784. 16.72 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  6785. 16.72 s [really-safe-money] actualResult =
  6786. 16.72 s [really-safe-money] - if roundedResult > maxBoundN
  6787. 16.72 s [really-safe-money] + if not (roundedResult > maxBoundN)
  6788. 16.72 s [really-safe-money] then Nothing
  6789. 16.72 s [really-safe-money] else Just (fromIntegral roundedResult)
  6790. 16.72 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6791. 16.72 s [really-safe-money] added mutation CondFlip at src/Money/MultiAmount.hs:168:17-57
  6792. 16.72 s [really-safe-money] @@ -165,9 +165,9 @@
  6793. 16.72 s [really-safe-money] maxBoundN :: Natural
  6794. 16.72 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  6795. 16.72 s [really-safe-money] actualResult =
  6796. 16.72 s [really-safe-money] - if roundedResult > maxBoundN
  6797. 16.72 s [really-safe-money] - then Nothing
  6798. 16.72 s [really-safe-money] - else Just (fromIntegral roundedResult)
  6799. 16.72 s [really-safe-money] + if roundedResult > maxBoundN
  6800. 16.72 s [really-safe-money] + then Nothing
  6801. 16.72 s [really-safe-money] + else Just (fromIntegral roundedResult)
  6802. 16.72 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6803. 16.72 s [really-safe-money] LT -> RoundedDown
  6804. 16.72 s [really-safe-money] EQ -> DidNotRound
  6805. 16.72 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
  6806. 16.72 s [really-safe-money] @@ -168,10 +168,10 @@
  6807. 16.72 s [really-safe-money] if roundedResult > maxBoundN
  6808. 16.72 s [really-safe-money] then Nothing
  6809. 16.72 s [really-safe-money] else Just (fromIntegral roundedResult)
  6810. 16.72 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6811. 16.72 s [really-safe-money] - LT -> RoundedDown
  6812. 16.72 s [really-safe-money] - EQ -> DidNotRound
  6813. 16.72 s [really-safe-money] - GT -> RoundedUp
  6814. 16.72 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6815. 16.72 s [really-safe-money] + LT -> RoundedDown
  6816. 16.72 s [really-safe-money] + EQ -> DidNotRound
  6817. 16.72 s [really-safe-money] + GT -> RoundedUp
  6818. 16.72 s [really-safe-money] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
  6819. 16.72 s [really-safe-money] )
  6820. 16.72 s [really-safe-money] . Prelude.sum
  6821. 16.72 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
  6822. 16.72 s [really-safe-money] @@ -168,10 +168,10 @@
  6823. 16.72 s [really-safe-money] if roundedResult > maxBoundN
  6824. 16.72 s [really-safe-money] then Nothing
  6825. 16.72 s [really-safe-money] else Just (fromIntegral roundedResult)
  6826. 16.72 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6827. 16.72 s [really-safe-money] - LT -> RoundedDown
  6828. 16.72 s [really-safe-money] - EQ -> DidNotRound
  6829. 16.72 s [really-safe-money] - GT -> RoundedUp
  6830. 16.72 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6831. 16.72 s [really-safe-money] + LT -> RoundedDown
  6832. 16.72 s [really-safe-money] + EQ -> DidNotRound
  6833. 16.72 s [really-safe-money] + GT -> RoundedUp
  6834. 16.72 s [really-safe-money] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
  6835. 16.72 s [really-safe-money] )
  6836. 16.72 s [really-safe-money] . Prelude.sum
  6837. 16.72 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
  6838. 16.72 s [really-safe-money] @@ -168,10 +168,10 @@
  6839. 16.73 s [really-safe-money] if roundedResult > maxBoundN
  6840. 16.73 s [really-safe-money] then Nothing
  6841. 16.73 s [really-safe-money] else Just (fromIntegral roundedResult)
  6842. 16.73 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6843. 16.73 s [really-safe-money] - LT -> RoundedDown
  6844. 16.73 s [really-safe-money] - EQ -> DidNotRound
  6845. 16.73 s [really-safe-money] - GT -> RoundedUp
  6846. 16.73 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6847. 16.73 s [really-safe-money] + LT -> RoundedDown
  6848. 16.73 s [really-safe-money] + EQ -> DidNotRound
  6849. 16.73 s [really-safe-money] + GT -> RoundedUp
  6850. 16.73 s [really-safe-money] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
  6851. 16.73 s [really-safe-money] )
  6852. 16.73 s [really-safe-money] . Prelude.sum
  6853. 16.73 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:119:12-28
  6854. 16.73 s [really-safe-money] @@ -116,7 +116,7 @@
  6855. 16.73 s [really-safe-money] Just a -> do
  6856. 16.73 s [really-safe-money] r <- Amount.subtract a amount
  6857. 16.73 s [really-safe-money] Just $
  6858. 16.73 s [really-safe-money] - if r == Amount.zero
  6859. 16.73 s [really-safe-money] + if True
  6860. 16.73 s [really-safe-money] then M.delete currency m
  6861. 16.73 s [really-safe-money] else M.insert currency r m
  6862. 16.73 s [really-safe-money]
  6863. 16.73 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:119:12-28
  6864. 16.73 s [really-safe-money] @@ -116,7 +116,7 @@
  6865. 16.73 s [really-safe-money] Just a -> do
  6866. 16.73 s [really-safe-money] r <- Amount.subtract a amount
  6867. 16.73 s [really-safe-money] Just $
  6868. 16.73 s [really-safe-money] - if r == Amount.zero
  6869. 16.73 s [really-safe-money] + if False
  6870. 16.73 s [really-safe-money] then M.delete currency m
  6871. 16.73 s [really-safe-money] else M.insert currency r m
  6872. 16.73 s [really-safe-money]
  6873. 16.73 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:119:12-28
  6874. 16.73 s [really-safe-money] @@ -116,7 +116,7 @@
  6875. 16.73 s [really-safe-money] Just a -> do
  6876. 16.73 s [really-safe-money] r <- Amount.subtract a amount
  6877. 16.73 s [really-safe-money] Just $
  6878. 16.73 s [really-safe-money] - if r == Amount.zero
  6879. 16.73 s [really-safe-money] + if not (r == Amount.zero)
  6880. 16.73 s [really-safe-money] then M.delete currency m
  6881. 16.73 s [really-safe-money] else M.insert currency r m
  6882. 16.73 s [really-safe-money]
  6883. 16.73 s [really-safe-money] added mutation CondFlip at src/Money/MultiAmount.hs:119:9-37
  6884. 16.73 s [really-safe-money] @@ -116,9 +116,9 @@
  6885. 16.73 s [really-safe-money] Just a -> do
  6886. 16.73 s [really-safe-money] r <- Amount.subtract a amount
  6887. 16.73 s [really-safe-money] Just $
  6888. 16.73 s [really-safe-money] - if r == Amount.zero
  6889. 16.73 s [really-safe-money] - then M.delete currency m
  6890. 16.73 s [really-safe-money] - else M.insert currency r m
  6891. 16.73 s [really-safe-money] + if r == Amount.zero
  6892. 16.73 s [really-safe-money] + then M.delete currency m
  6893. 16.73 s [really-safe-money] + else M.insert currency r m
  6894. 16.73 s [really-safe-money]
  6895. 16.73 s [really-safe-money] -- | Try to convert every amount to one currency.
  6896. 16.73 s [really-safe-money] --
  6897. 16.73 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:114:22-37
  6898. 16.73 s [really-safe-money] @@ -111,14 +111,14 @@
  6899. 16.73 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  6900. 16.73 s [really-safe-money] subtractAmount m _ (Amount 0) = Just m
  6901. 16.73 s [really-safe-money] subtractAmount (MultiAmount m) currency amount =
  6902. 16.73 s [really-safe-money] - fmap MultiAmount $ case M.lookup currency m of
  6903. 16.73 s [really-safe-money] - Nothing -> Nothing -- Can't go below zero
  6904. 16.73 s [really-safe-money] - Just a -> do
  6905. 16.73 s [really-safe-money] - r <- Amount.subtract a amount
  6906. 16.73 s [really-safe-money] - Just $
  6907. 16.73 s [really-safe-money] - if r == Amount.zero
  6908. 16.73 s [really-safe-money] - then M.delete currency m
  6909. 16.73 s [really-safe-money] - else M.insert currency r m
  6910. 16.73 s [really-safe-money] + fmap MultiAmount $ case M.lookup currency m of
  6911. 16.73 s [really-safe-money] + Nothing -> Nothing -- Can't go below zero
  6912. 16.73 s [really-safe-money] + Just a -> do
  6913. 16.73 s [really-safe-money] + r <- Amount.subtract a amount
  6914. 16.73 s [really-safe-money] + Just $
  6915. 16.73 s [really-safe-money] + if r == Amount.zero
  6916. 16.73 s [really-safe-money] + then M.delete currency m
  6917. 16.73 s [really-safe-money] + else M.insert currency r m
  6918. 16.73 s [really-safe-money]
  6919. 16.73 s [really-safe-money] -- | Try to convert every amount to one currency.
  6920. 16.73 s [really-safe-money] --
  6921. 16.73 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:114:22-37
  6922. 16.73 s [really-safe-money] @@ -111,14 +111,14 @@
  6923. 16.73 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  6924. 16.73 s [really-safe-money] subtractAmount m _ (Amount 0) = Just m
  6925. 16.73 s [really-safe-money] subtractAmount (MultiAmount m) currency amount =
  6926. 16.73 s [really-safe-money] - fmap MultiAmount $ case M.lookup currency m of
  6927. 16.73 s [really-safe-money] - Nothing -> Nothing -- Can't go below zero
  6928. 16.73 s [really-safe-money] - Just a -> do
  6929. 16.73 s [really-safe-money] - r <- Amount.subtract a amount
  6930. 16.73 s [really-safe-money] - Just $
  6931. 16.73 s [really-safe-money] - if r == Amount.zero
  6932. 16.73 s [really-safe-money] - then M.delete currency m
  6933. 16.73 s [really-safe-money] - else M.insert currency r m
  6934. 16.73 s [really-safe-money] + fmap MultiAmount $ case M.lookup currency m of
  6935. 16.73 s [really-safe-money] + Nothing -> Nothing -- Can't go below zero
  6936. 16.73 s [really-safe-money] + Just a -> do
  6937. 16.73 s [really-safe-money] + r <- Amount.subtract a amount
  6938. 16.73 s [really-safe-money] + Just $
  6939. 16.73 s [really-safe-money] + if r == Amount.zero
  6940. 16.73 s [really-safe-money] + then M.delete currency m
  6941. 16.73 s [really-safe-money] + else M.insert currency r m
  6942. 16.73 s [really-safe-money]
  6943. 16.73 s [really-safe-money] -- | Try to convert every amount to one currency.
  6944. 16.73 s [really-safe-money] --
  6945. 16.73 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:106:12-28
  6946. 16.73 s [really-safe-money] @@ -103,7 +103,7 @@
  6947. 16.73 s [really-safe-money] Just a -> do
  6948. 16.73 s [really-safe-money] r <- Amount.add a amount
  6949. 16.73 s [really-safe-money] Just $
  6950. 16.73 s [really-safe-money] - if r == Amount.zero
  6951. 16.73 s [really-safe-money] + if True
  6952. 16.73 s [really-safe-money] then M.delete currency m
  6953. 16.73 s [really-safe-money] else M.insert currency r m
  6954. 16.73 s [really-safe-money]
  6955. 16.73 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:106:12-28
  6956. 16.73 s [really-safe-money] @@ -103,7 +103,7 @@
  6957. 16.73 s [really-safe-money] Just a -> do
  6958. 16.73 s [really-safe-money] r <- Amount.add a amount
  6959. 16.73 s [really-safe-money] Just $
  6960. 16.73 s [really-safe-money] - if r == Amount.zero
  6961. 16.73 s [really-safe-money] + if False
  6962. 16.73 s [really-safe-money] then M.delete currency m
  6963. 16.73 s [really-safe-money] else M.insert currency r m
  6964. 16.73 s [really-safe-money]
  6965. 16.73 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:106:12-28
  6966. 16.73 s [really-safe-money] @@ -103,7 +103,7 @@
  6967. 16.73 s [really-safe-money] Just a -> do
  6968. 16.73 s [really-safe-money] r <- Amount.add a amount
  6969. 16.73 s [really-safe-money] Just $
  6970. 16.73 s [really-safe-money] - if r == Amount.zero
  6971. 16.73 s [really-safe-money] + if not (r == Amount.zero)
  6972. 16.73 s [really-safe-money] then M.delete currency m
  6973. 16.73 s [really-safe-money] else M.insert currency r m
  6974. 16.73 s [really-safe-money]
  6975. 16.73 s [really-safe-money] added mutation CondFlip at src/Money/MultiAmount.hs:106:9-37
  6976. 16.73 s [really-safe-money] @@ -103,9 +103,9 @@
  6977. 16.73 s [really-safe-money] Just a -> do
  6978. 16.73 s [really-safe-money] r <- Amount.add a amount
  6979. 16.73 s [really-safe-money] Just $
  6980. 16.73 s [really-safe-money] - if r == Amount.zero
  6981. 16.73 s [really-safe-money] - then M.delete currency m
  6982. 16.73 s [really-safe-money] - else M.insert currency r m
  6983. 16.73 s [really-safe-money] + if r == Amount.zero
  6984. 16.73 s [really-safe-money] + then M.delete currency m
  6985. 16.73 s [really-safe-money] + else M.insert currency r m
  6986. 16.73 s [really-safe-money]
  6987. 16.73 s [really-safe-money] -- | Subtract an 'Amount' from a 'MultiAmount'
  6988. 16.73 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  6989. 16.73 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:101:22-37
  6990. 16.73 s [really-safe-money] @@ -98,14 +98,14 @@
  6991. 16.73 s [really-safe-money] addAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  6992. 16.73 s [really-safe-money] addAmount m _ (Amount 0) = Just m
  6993. 16.73 s [really-safe-money] addAmount (MultiAmount m) currency amount =
  6994. 16.73 s [really-safe-money] - fmap MultiAmount $ case M.lookup currency m of
  6995. 16.73 s [really-safe-money] - Nothing -> Just $ M.insert currency amount m
  6996. 16.73 s [really-safe-money] - Just a -> do
  6997. 16.73 s [really-safe-money] - r <- Amount.add a amount
  6998. 16.73 s [really-safe-money] - Just $
  6999. 16.73 s [really-safe-money] - if r == Amount.zero
  7000. 16.73 s [really-safe-money] - then M.delete currency m
  7001. 16.73 s [really-safe-money] - else M.insert currency r m
  7002. 16.73 s [really-safe-money] + fmap MultiAmount $ case M.lookup currency m of
  7003. 16.73 s [really-safe-money] + Nothing -> Just $ M.insert currency amount m
  7004. 16.73 s [really-safe-money] + Just a -> do
  7005. 16.73 s [really-safe-money] + r <- Amount.add a amount
  7006. 16.73 s [really-safe-money] + Just $
  7007. 16.73 s [really-safe-money] + if r == Amount.zero
  7008. 16.73 s [really-safe-money] + then M.delete currency m
  7009. 16.73 s [really-safe-money] + else M.insert currency r m
  7010. 16.73 s [really-safe-money]
  7011. 16.73 s [really-safe-money] -- | Subtract an 'Amount' from a 'MultiAmount'
  7012. 16.73 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  7013. 16.73 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:101:22-37
  7014. 16.73 s [really-safe-money] @@ -98,14 +98,14 @@
  7015. 16.73 s [really-safe-money] addAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  7016. 16.73 s [really-safe-money] addAmount m _ (Amount 0) = Just m
  7017. 16.73 s [really-safe-money] addAmount (MultiAmount m) currency amount =
  7018. 16.73 s [really-safe-money] - fmap MultiAmount $ case M.lookup currency m of
  7019. 16.73 s [really-safe-money] - Nothing -> Just $ M.insert currency amount m
  7020. 16.73 s [really-safe-money] - Just a -> do
  7021. 16.73 s [really-safe-money] - r <- Amount.add a amount
  7022. 16.73 s [really-safe-money] - Just $
  7023. 16.73 s [really-safe-money] - if r == Amount.zero
  7024. 16.73 s [really-safe-money] - then M.delete currency m
  7025. 16.73 s [really-safe-money] - else M.insert currency r m
  7026. 16.73 s [really-safe-money] + fmap MultiAmount $ case M.lookup currency m of
  7027. 16.73 s [really-safe-money] + Nothing -> Just $ M.insert currency amount m
  7028. 16.73 s [really-safe-money] + Just a -> do
  7029. 16.73 s [really-safe-money] + r <- Amount.add a amount
  7030. 16.73 s [really-safe-money] + Just $
  7031. 16.73 s [really-safe-money] + if r == Amount.zero
  7032. 16.73 s [really-safe-money] + then M.delete currency m
  7033. 16.73 s [really-safe-money] + else M.insert currency r m
  7034. 16.73 s [really-safe-money]
  7035. 16.73 s [really-safe-money] -- | Subtract an 'Amount' from a 'MultiAmount'
  7036. 16.73 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  7037. 16.73 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:73:6-27
  7038. 16.73 s [really-safe-money] @@ -70,7 +70,7 @@
  7039. 16.73 s [really-safe-money]
  7040. 16.73 s [really-safe-money] fromAmount :: currency -> Amount -> MultiAmount currency
  7041. 16.73 s [really-safe-money] fromAmount currency amount =
  7042. 16.73 s [really-safe-money] - if amount == Amount.zero
  7043. 16.73 s [really-safe-money] + if True
  7044. 16.73 s [really-safe-money] then zero
  7045. 16.73 s [really-safe-money] else MultiAmount $ M.singleton currency amount
  7046. 16.73 s [really-safe-money]
  7047. 16.73 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:73:6-27
  7048. 16.73 s [really-safe-money] @@ -70,7 +70,7 @@
  7049. 16.73 s [really-safe-money]
  7050. 16.73 s [really-safe-money] fromAmount :: currency -> Amount -> MultiAmount currency
  7051. 16.73 s [really-safe-money] fromAmount currency amount =
  7052. 16.73 s [really-safe-money] - if amount == Amount.zero
  7053. 16.73 s [really-safe-money] + if False
  7054. 16.73 s [really-safe-money] then zero
  7055. 16.73 s [really-safe-money] else MultiAmount $ M.singleton currency amount
  7056. 16.73 s [really-safe-money]
  7057. 16.73 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:73:6-27
  7058. 16.73 s [really-safe-money] @@ -70,7 +70,7 @@
  7059. 16.73 s [really-safe-money]
  7060. 16.73 s [really-safe-money] fromAmount :: currency -> Amount -> MultiAmount currency
  7061. 16.73 s [really-safe-money] fromAmount currency amount =
  7062. 16.73 s [really-safe-money] - if amount == Amount.zero
  7063. 16.73 s [really-safe-money] + if not (amount == Amount.zero)
  7064. 16.73 s [really-safe-money] then zero
  7065. 16.73 s [really-safe-money] else MultiAmount $ M.singleton currency amount
  7066. 16.73 s [really-safe-money]
  7067. 16.73 s [really-safe-money] added mutation CondFlip at src/Money/MultiAmount.hs:73:3-51
  7068. 16.73 s [really-safe-money] @@ -70,9 +70,9 @@
  7069. 16.73 s [really-safe-money]
  7070. 16.73 s [really-safe-money] fromAmount :: currency -> Amount -> MultiAmount currency
  7071. 16.73 s [really-safe-money] fromAmount currency amount =
  7072. 16.73 s [really-safe-money] - if amount == Amount.zero
  7073. 16.73 s [really-safe-money] - then zero
  7074. 16.73 s [really-safe-money] - else MultiAmount $ M.singleton currency amount
  7075. 16.73 s [really-safe-money] + if amount == Amount.zero
  7076. 16.73 s [really-safe-money] + then zero
  7077. 16.73 s [really-safe-money] + else MultiAmount $ M.singleton currency amount
  7078. 16.73 s [really-safe-money]
  7079. 16.73 s [really-safe-money] -- | No money of any currency
  7080. 16.73 s [really-safe-money] zero :: MultiAmount currency
  7081. 16.73 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:66:13-29
  7082. 16.73 s [really-safe-money] @@ -63,7 +63,7 @@
  7083. 16.73 s [really-safe-money] [ genericValidate ma,
  7084. 16.73 s [really-safe-money] decorateMap m $ \_ a ->
  7085. 16.73 s [really-safe-money] declare "The amount is not zero" $
  7086. 16.73 s [really-safe-money] - a /= Amount.zero
  7087. 16.73 s [really-safe-money] + True
  7088. 16.73 s [really-safe-money] ]
  7089. 16.73 s [really-safe-money]
  7090. 16.73 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  7091. 16.73 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:66:13-29
  7092. 16.73 s [really-safe-money] @@ -63,7 +63,7 @@
  7093. 16.73 s [really-safe-money] [ genericValidate ma,
  7094. 16.73 s [really-safe-money] decorateMap m $ \_ a ->
  7095. 16.73 s [really-safe-money] declare "The amount is not zero" $
  7096. 16.73 s [really-safe-money] - a /= Amount.zero
  7097. 16.73 s [really-safe-money] + False
  7098. 16.73 s [really-safe-money] ]
  7099. 16.73 s [really-safe-money]
  7100. 16.73 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  7101. 16.73 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:66:13-29
  7102. 16.74 s [really-safe-money] @@ -63,7 +63,7 @@
  7103. 16.74 s [really-safe-money] [ genericValidate ma,
  7104. 16.74 s [really-safe-money] decorateMap m $ \_ a ->
  7105. 16.74 s [really-safe-money] declare "The amount is not zero" $
  7106. 16.74 s [really-safe-money] - a /= Amount.zero
  7107. 16.74 s [really-safe-money] + not (a /= Amount.zero)
  7108. 16.74 s [really-safe-money] ]
  7109. 16.74 s [really-safe-money]
  7110. 16.74 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  7111. 16.74 s [really-safe-money] added mutation ListLit at src/Money/MultiAmount.hs:63:7-8
  7112. 16.74 s [really-safe-money] @@ -60,11 +60,7 @@
  7113. 16.74 s [really-safe-money] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
  7114. 16.74 s [really-safe-money] validate ma@(MultiAmount m) =
  7115. 16.74 s [really-safe-money] mconcat
  7116. 16.74 s [really-safe-money] - [ genericValidate ma,
  7117. 16.74 s [really-safe-money] - decorateMap m $ \_ a ->
  7118. 16.74 s [really-safe-money] - declare "The amount is not zero" $
  7119. 16.74 s [really-safe-money] - a /= Amount.zero
  7120. 16.74 s [really-safe-money] - ]
  7121. 16.74 s [really-safe-money] + []
  7122. 16.74 s [really-safe-money]
  7123. 16.74 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  7124. 16.74 s [really-safe-money]
  7125. 16.74 s [really-safe-money] added mutation ListLit at src/Money/MultiAmount.hs:63:7-8
  7126. 16.74 s [really-safe-money] @@ -60,11 +60,11 @@
  7127. 16.74 s [really-safe-money] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
  7128. 16.74 s [really-safe-money] validate ma@(MultiAmount m) =
  7129. 16.74 s [really-safe-money] mconcat
  7130. 16.74 s [really-safe-money] - [ genericValidate ma,
  7131. 16.74 s [really-safe-money] - decorateMap m $ \_ a ->
  7132. 16.74 s [really-safe-money] - declare "The amount is not zero" $
  7133. 16.74 s [really-safe-money] - a /= Amount.zero
  7134. 16.74 s [really-safe-money] - ]
  7135. 16.74 s [really-safe-money] + [ genericValidate ma,
  7136. 16.74 s [really-safe-money] + decorateMap m $ \_ a ->
  7137. 16.74 s [really-safe-money] + declare "The amount is not zero" $
  7138. 16.74 s [really-safe-money] + a /= Amount.zero
  7139. 16.74 s [really-safe-money] + ]
  7140. 16.74 s [really-safe-money]
  7141. 16.74 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  7142. 16.74 s [really-safe-money]
  7143. 16.74 s [really-safe-money] added 31 mutations
  7144. 17.13 s [really-safe-money] [ 8 of 12] Compiling Money.AmountOf ( src/Money/AmountOf.hs, dist/build/Money/AmountOf.p_o )
  7145. 17.15 s [really-safe-money] mutation: instrumenting Money.AmountOf
  7146. 17.15 s [really-safe-money] added mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  7147. 17.15 s [really-safe-money] @@ -212,11 +212,11 @@
  7148. 17.15 s [really-safe-money]
  7149. 17.15 s [really-safe-money] -- | See 'Amount.distribute'
  7150. 17.15 s [really-safe-money] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  7151. 17.15 s [really-safe-money] -distribute (AmountOf a) f = case Amount.distribute a f of
  7152. 17.15 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7153. 17.15 s [really-safe-money] - DistributedZero -> DistributedZero
  7154. 17.15 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  7155. 17.15 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  7156. 17.15 s [really-safe-money] +distribute (AmountOf a) f = case Amount.distribute a f of
  7157. 17.15 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7158. 17.15 s [really-safe-money] + DistributedZero -> DistributedZero
  7159. 17.15 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  7160. 17.15 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  7161. 17.15 s [really-safe-money]
  7162. 17.15 s [really-safe-money] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  7163. 17.15 s [really-safe-money]
  7164. 17.15 s [really-safe-money] added mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  7165. 17.15 s [really-safe-money] @@ -212,11 +212,11 @@
  7166. 17.15 s [really-safe-money]
  7167. 17.15 s [really-safe-money] -- | See 'Amount.distribute'
  7168. 17.15 s [really-safe-money] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  7169. 17.15 s [really-safe-money] -distribute (AmountOf a) f = case Amount.distribute a f of
  7170. 17.15 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7171. 17.15 s [really-safe-money] - DistributedZero -> DistributedZero
  7172. 17.15 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  7173. 17.15 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  7174. 17.15 s [really-safe-money] +distribute (AmountOf a) f = case Amount.distribute a f of
  7175. 17.15 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7176. 17.15 s [really-safe-money] + DistributedZero -> DistributedZero
  7177. 17.15 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  7178. 17.15 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  7179. 17.15 s [really-safe-money]
  7180. 17.15 s [really-safe-money] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  7181. 17.15 s [really-safe-money]
  7182. 17.15 s [really-safe-money] added mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  7183. 17.15 s [really-safe-money] @@ -212,11 +212,11 @@
  7184. 17.15 s [really-safe-money]
  7185. 17.15 s [really-safe-money] -- | See 'Amount.distribute'
  7186. 17.15 s [really-safe-money] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  7187. 17.15 s [really-safe-money] -distribute (AmountOf a) f = case Amount.distribute a f of
  7188. 17.15 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7189. 17.15 s [really-safe-money] - DistributedZero -> DistributedZero
  7190. 17.15 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  7191. 17.15 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  7192. 17.15 s [really-safe-money] +distribute (AmountOf a) f = case Amount.distribute a f of
  7193. 17.15 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7194. 17.15 s [really-safe-money] + DistributedZero -> DistributedZero
  7195. 17.15 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  7196. 17.15 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  7197. 17.15 s [really-safe-money]
  7198. 17.15 s [really-safe-money] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  7199. 17.15 s [really-safe-money]
  7200. 17.15 s [really-safe-money] added mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  7201. 17.15 s [really-safe-money] @@ -212,11 +212,11 @@
  7202. 17.15 s [really-safe-money]
  7203. 17.15 s [really-safe-money] -- | See 'Amount.distribute'
  7204. 17.15 s [really-safe-money] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  7205. 17.15 s [really-safe-money] -distribute (AmountOf a) f = case Amount.distribute a f of
  7206. 17.15 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7207. 17.15 s [really-safe-money] - DistributedZero -> DistributedZero
  7208. 17.15 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  7209. 17.15 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  7210. 17.15 s [really-safe-money] +distribute (AmountOf a) f = case Amount.distribute a f of
  7211. 17.15 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7212. 17.15 s [really-safe-money] + DistributedZero -> DistributedZero
  7213. 17.15 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  7214. 17.15 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  7215. 17.15 s [really-safe-money]
  7216. 17.15 s [really-safe-money] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  7217. 17.15 s [really-safe-money]
  7218. 17.15 s [really-safe-money] added 4 mutations
  7219. 17.42 s [really-safe-money] [ 9 of 12] Compiling Money.Account ( src/Money/Account.hs, dist/build/Money/Account.p_o )
  7220. 17.44 s [really-safe-money] mutation: instrumenting Money.Account
  7221. 17.44 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:553:7-39
  7222. 17.44 s [really-safe-money] @@ -550,11 +550,11 @@
  7223. 17.44 s [really-safe-money] let aa1 = abs a1
  7224. 17.44 s [really-safe-money] aa2 = abs a2
  7225. 17.44 s [really-safe-money] mr = Amount.rate qf1 aa1 qf2 aa2
  7226. 17.44 s [really-safe-money] - in case (a1, a2) of
  7227. 17.44 s [really-safe-money] - (Positive _, Positive _) -> mr
  7228. 17.44 s [really-safe-money] - (Positive _, Negative _) -> Nothing
  7229. 17.44 s [really-safe-money] - (Negative _, Positive _) -> Nothing
  7230. 17.44 s [really-safe-money] - (Negative _, Negative _) -> mr
  7231. 17.44 s [really-safe-money] + in case (a1, a2) of
  7232. 17.44 s [really-safe-money] + (Positive _, Positive _) -> mr
  7233. 17.44 s [really-safe-money] + (Positive _, Negative _) -> Nothing
  7234. 17.44 s [really-safe-money] + (Negative _, Positive _) -> Nothing
  7235. 17.44 s [really-safe-money] + (Negative _, Negative _) -> mr
  7236. 17.44 s [really-safe-money]
  7237. 17.44 s [really-safe-money] -- | Convert an amount of money of one currency into an amount of money of
  7238. 17.44 s [really-safe-money] -- another currency using a conversion rate.
  7239. 17.44 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:553:7-39
  7240. 17.44 s [really-safe-money] @@ -550,11 +550,11 @@
  7241. 17.44 s [really-safe-money] let aa1 = abs a1
  7242. 17.44 s [really-safe-money] aa2 = abs a2
  7243. 17.44 s [really-safe-money] mr = Amount.rate qf1 aa1 qf2 aa2
  7244. 17.44 s [really-safe-money] - in case (a1, a2) of
  7245. 17.44 s [really-safe-money] - (Positive _, Positive _) -> mr
  7246. 17.44 s [really-safe-money] - (Positive _, Negative _) -> Nothing
  7247. 17.44 s [really-safe-money] - (Negative _, Positive _) -> Nothing
  7248. 17.44 s [really-safe-money] - (Negative _, Negative _) -> mr
  7249. 17.44 s [really-safe-money] + in case (a1, a2) of
  7250. 17.44 s [really-safe-money] + (Positive _, Positive _) -> mr
  7251. 17.44 s [really-safe-money] + (Positive _, Negative _) -> Nothing
  7252. 17.44 s [really-safe-money] + (Negative _, Positive _) -> Nothing
  7253. 17.44 s [really-safe-money] + (Negative _, Negative _) -> mr
  7254. 17.44 s [really-safe-money]
  7255. 17.44 s [really-safe-money] -- | Convert an amount of money of one currency into an amount of money of
  7256. 17.44 s [really-safe-money] -- another currency using a conversion rate.
  7257. 17.44 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:553:7-39
  7258. 17.44 s [really-safe-money] @@ -550,11 +550,11 @@
  7259. 17.44 s [really-safe-money] let aa1 = abs a1
  7260. 17.44 s [really-safe-money] aa2 = abs a2
  7261. 17.44 s [really-safe-money] mr = Amount.rate qf1 aa1 qf2 aa2
  7262. 17.44 s [really-safe-money] - in case (a1, a2) of
  7263. 17.44 s [really-safe-money] - (Positive _, Positive _) -> mr
  7264. 17.44 s [really-safe-money] - (Positive _, Negative _) -> Nothing
  7265. 17.44 s [really-safe-money] - (Negative _, Positive _) -> Nothing
  7266. 17.44 s [really-safe-money] - (Negative _, Negative _) -> mr
  7267. 17.44 s [really-safe-money] + in case (a1, a2) of
  7268. 17.44 s [really-safe-money] + (Positive _, Positive _) -> mr
  7269. 17.44 s [really-safe-money] + (Positive _, Negative _) -> Nothing
  7270. 17.44 s [really-safe-money] + (Negative _, Positive _) -> Nothing
  7271. 17.44 s [really-safe-money] + (Negative _, Negative _) -> mr
  7272. 17.44 s [really-safe-money]
  7273. 17.44 s [really-safe-money] -- | Convert an amount of money of one currency into an amount of money of
  7274. 17.44 s [really-safe-money] -- another currency using a conversion rate.
  7275. 17.44 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:553:7-39
  7276. 17.44 s [really-safe-money] @@ -550,11 +550,11 @@
  7277. 17.44 s [really-safe-money] let aa1 = abs a1
  7278. 17.44 s [really-safe-money] aa2 = abs a2
  7279. 17.44 s [really-safe-money] mr = Amount.rate qf1 aa1 qf2 aa2
  7280. 17.44 s [really-safe-money] - in case (a1, a2) of
  7281. 17.44 s [really-safe-money] - (Positive _, Positive _) -> mr
  7282. 17.44 s [really-safe-money] - (Positive _, Negative _) -> Nothing
  7283. 17.44 s [really-safe-money] - (Negative _, Positive _) -> Nothing
  7284. 17.44 s [really-safe-money] - (Negative _, Negative _) -> mr
  7285. 17.44 s [really-safe-money] + in case (a1, a2) of
  7286. 17.44 s [really-safe-money] + (Positive _, Positive _) -> mr
  7287. 17.44 s [really-safe-money] + (Positive _, Negative _) -> Nothing
  7288. 17.44 s [really-safe-money] + (Negative _, Positive _) -> Nothing
  7289. 17.44 s [really-safe-money] + (Negative _, Negative _) -> mr
  7290. 17.44 s [really-safe-money]
  7291. 17.44 s [really-safe-money] -- | Convert an amount of money of one currency into an amount of money of
  7292. 17.44 s [really-safe-money] -- another currency using a conversion rate.
  7293. 17.44 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:591:7-44
  7294. 17.44 s [really-safe-money] @@ -588,9 +588,9 @@
  7295. 17.44 s [really-safe-money] (Maybe Account, Maybe ConversionRate)
  7296. 17.44 s [really-safe-money] convert r qf1 a cr qf2 =
  7297. 17.44 s [really-safe-money] let (ma, mr) = Amount.convert r qf1 (abs a) cr qf2
  7298. 17.44 s [really-safe-money] - in case a of
  7299. 17.44 s [really-safe-money] - Positive _ -> (Positive <$> ma, mr)
  7300. 17.44 s [really-safe-money] - Negative _ -> (Negative <$> ma, mr)
  7301. 17.44 s [really-safe-money] + in case a of
  7302. 17.44 s [really-safe-money] + Positive _ -> (Positive <$> ma, mr)
  7303. 17.44 s [really-safe-money] + Negative _ -> (Negative <$> ma, mr)
  7304. 17.44 s [really-safe-money]
  7305. 17.44 s [really-safe-money] -- | Format an account of money without a symbol.
  7306. 17.44 s [really-safe-money] --
  7307. 17.44 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:591:7-44
  7308. 17.44 s [really-safe-money] @@ -588,9 +588,9 @@
  7309. 17.44 s [really-safe-money] (Maybe Account, Maybe ConversionRate)
  7310. 17.44 s [really-safe-money] convert r qf1 a cr qf2 =
  7311. 17.44 s [really-safe-money] let (ma, mr) = Amount.convert r qf1 (abs a) cr qf2
  7312. 17.44 s [really-safe-money] - in case a of
  7313. 17.44 s [really-safe-money] - Positive _ -> (Positive <$> ma, mr)
  7314. 17.44 s [really-safe-money] - Negative _ -> (Negative <$> ma, mr)
  7315. 17.44 s [really-safe-money] + in case a of
  7316. 17.44 s [really-safe-money] + Positive _ -> (Positive <$> ma, mr)
  7317. 17.44 s [really-safe-money] + Negative _ -> (Negative <$> ma, mr)
  7318. 17.44 s [really-safe-money]
  7319. 17.44 s [really-safe-money] -- | Format an account of money without a symbol.
  7320. 17.44 s [really-safe-money] --
  7321. 17.44 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:421:32-33
  7322. 17.44 s [really-safe-money] @@ -418,7 +418,7 @@
  7323. 17.44 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  7324. 17.44 s [really-safe-money] multiply factor account =
  7325. 17.44 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  7326. 17.44 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  7327. 17.44 s [really-safe-money] + f = case (compare factor 1, compare account zero) of
  7328. 17.44 s [really-safe-money] (EQ, _) -> const zero
  7329. 17.44 s [really-safe-money] (_, EQ) -> const zero
  7330. 17.44 s [really-safe-money] (GT, GT) -> Positive
  7331. 17.44 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  7332. 17.44 s [really-safe-money] @@ -418,13 +418,13 @@
  7333. 17.44 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  7334. 17.44 s [really-safe-money] multiply factor account =
  7335. 17.44 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  7336. 17.44 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  7337. 17.44 s [really-safe-money] - (EQ, _) -> const zero
  7338. 17.44 s [really-safe-money] - (_, EQ) -> const zero
  7339. 17.44 s [really-safe-money] - (GT, GT) -> Positive
  7340. 17.44 s [really-safe-money] - (GT, LT) -> Negative
  7341. 17.44 s [really-safe-money] - (LT, GT) -> Negative
  7342. 17.44 s [really-safe-money] - (LT, LT) -> Positive
  7343. 17.44 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  7344. 17.44 s [really-safe-money] + (EQ, _) -> const zero
  7345. 17.44 s [really-safe-money] + (_, EQ) -> const zero
  7346. 17.44 s [really-safe-money] + (GT, GT) -> Positive
  7347. 17.44 s [really-safe-money] + (GT, LT) -> Negative
  7348. 17.44 s [really-safe-money] + (LT, GT) -> Negative
  7349. 17.44 s [really-safe-money] + (LT, LT) -> Positive
  7350. 17.44 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  7351. 17.44 s [really-safe-money]
  7352. 17.44 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  7353. 17.44 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  7354. 17.44 s [really-safe-money] @@ -418,13 +418,13 @@
  7355. 17.44 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  7356. 17.44 s [really-safe-money] multiply factor account =
  7357. 17.44 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  7358. 17.44 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  7359. 17.44 s [really-safe-money] - (EQ, _) -> const zero
  7360. 17.44 s [really-safe-money] - (_, EQ) -> const zero
  7361. 17.44 s [really-safe-money] - (GT, GT) -> Positive
  7362. 17.44 s [really-safe-money] - (GT, LT) -> Negative
  7363. 17.44 s [really-safe-money] - (LT, GT) -> Negative
  7364. 17.44 s [really-safe-money] - (LT, LT) -> Positive
  7365. 17.44 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  7366. 17.44 s [really-safe-money] + (EQ, _) -> const zero
  7367. 17.44 s [really-safe-money] + (_, EQ) -> const zero
  7368. 17.44 s [really-safe-money] + (GT, GT) -> Positive
  7369. 17.44 s [really-safe-money] + (GT, LT) -> Negative
  7370. 17.44 s [really-safe-money] + (LT, GT) -> Negative
  7371. 17.44 s [really-safe-money] + (LT, LT) -> Positive
  7372. 17.44 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  7373. 17.44 s [really-safe-money]
  7374. 17.44 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  7375. 17.44 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  7376. 17.44 s [really-safe-money] @@ -418,13 +418,13 @@
  7377. 17.44 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  7378. 17.44 s [really-safe-money] multiply factor account =
  7379. 17.44 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  7380. 17.44 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  7381. 17.44 s [really-safe-money] - (EQ, _) -> const zero
  7382. 17.44 s [really-safe-money] - (_, EQ) -> const zero
  7383. 17.44 s [really-safe-money] - (GT, GT) -> Positive
  7384. 17.44 s [really-safe-money] - (GT, LT) -> Negative
  7385. 17.44 s [really-safe-money] - (LT, GT) -> Negative
  7386. 17.44 s [really-safe-money] - (LT, LT) -> Positive
  7387. 17.44 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  7388. 17.44 s [really-safe-money] + (EQ, _) -> const zero
  7389. 17.44 s [really-safe-money] + (_, EQ) -> const zero
  7390. 17.44 s [really-safe-money] + (GT, GT) -> Positive
  7391. 17.44 s [really-safe-money] + (GT, LT) -> Negative
  7392. 17.44 s [really-safe-money] + (LT, GT) -> Negative
  7393. 17.44 s [really-safe-money] + (LT, LT) -> Positive
  7394. 17.44 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  7395. 17.45 s [really-safe-money]
  7396. 17.45 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  7397. 17.45 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  7398. 17.45 s [really-safe-money] @@ -418,13 +418,13 @@
  7399. 17.45 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  7400. 17.45 s [really-safe-money] multiply factor account =
  7401. 17.45 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  7402. 17.45 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  7403. 17.45 s [really-safe-money] - (EQ, _) -> const zero
  7404. 17.45 s [really-safe-money] - (_, EQ) -> const zero
  7405. 17.45 s [really-safe-money] - (GT, GT) -> Positive
  7406. 17.45 s [really-safe-money] - (GT, LT) -> Negative
  7407. 17.45 s [really-safe-money] - (LT, GT) -> Negative
  7408. 17.45 s [really-safe-money] - (LT, LT) -> Positive
  7409. 17.45 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  7410. 17.45 s [really-safe-money] + (EQ, _) -> const zero
  7411. 17.45 s [really-safe-money] + (_, EQ) -> const zero
  7412. 17.45 s [really-safe-money] + (GT, GT) -> Positive
  7413. 17.45 s [really-safe-money] + (GT, LT) -> Negative
  7414. 17.45 s [really-safe-money] + (LT, GT) -> Negative
  7415. 17.45 s [really-safe-money] + (LT, LT) -> Positive
  7416. 17.45 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  7417. 17.45 s [really-safe-money]
  7418. 17.45 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  7419. 17.45 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  7420. 17.45 s [really-safe-money] @@ -418,13 +418,13 @@
  7421. 17.45 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  7422. 17.45 s [really-safe-money] multiply factor account =
  7423. 17.45 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  7424. 17.45 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  7425. 17.45 s [really-safe-money] - (EQ, _) -> const zero
  7426. 17.45 s [really-safe-money] - (_, EQ) -> const zero
  7427. 17.45 s [really-safe-money] - (GT, GT) -> Positive
  7428. 17.45 s [really-safe-money] - (GT, LT) -> Negative
  7429. 17.45 s [really-safe-money] - (LT, GT) -> Negative
  7430. 17.45 s [really-safe-money] - (LT, LT) -> Positive
  7431. 17.45 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  7432. 17.45 s [really-safe-money] + (EQ, _) -> const zero
  7433. 17.45 s [really-safe-money] + (_, EQ) -> const zero
  7434. 17.45 s [really-safe-money] + (GT, GT) -> Positive
  7435. 17.45 s [really-safe-money] + (GT, LT) -> Negative
  7436. 17.45 s [really-safe-money] + (LT, GT) -> Negative
  7437. 17.45 s [really-safe-money] + (LT, LT) -> Positive
  7438. 17.45 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  7439. 17.45 s [really-safe-money]
  7440. 17.45 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  7441. 17.45 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  7442. 17.45 s [really-safe-money] @@ -418,13 +418,13 @@
  7443. 17.45 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  7444. 17.45 s [really-safe-money] multiply factor account =
  7445. 17.45 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  7446. 17.45 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  7447. 17.45 s [really-safe-money] - (EQ, _) -> const zero
  7448. 17.45 s [really-safe-money] - (_, EQ) -> const zero
  7449. 17.45 s [really-safe-money] - (GT, GT) -> Positive
  7450. 17.45 s [really-safe-money] - (GT, LT) -> Negative
  7451. 17.45 s [really-safe-money] - (LT, GT) -> Negative
  7452. 17.45 s [really-safe-money] - (LT, LT) -> Positive
  7453. 17.45 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  7454. 17.45 s [really-safe-money] + (EQ, _) -> const zero
  7455. 17.45 s [really-safe-money] + (_, EQ) -> const zero
  7456. 17.45 s [really-safe-money] + (GT, GT) -> Positive
  7457. 17.45 s [really-safe-money] + (GT, LT) -> Negative
  7458. 17.45 s [really-safe-money] + (LT, GT) -> Negative
  7459. 17.45 s [really-safe-money] + (LT, LT) -> Positive
  7460. 17.45 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  7461. 17.45 s [really-safe-money]
  7462. 17.45 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  7463. 17.45 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:451:14-23
  7464. 17.45 s [really-safe-money] @@ -448,7 +448,7 @@
  7465. 17.45 s [really-safe-money] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7466. 17.45 s [really-safe-money] DistributedZero -> DistributedZero
  7467. 17.45 s [really-safe-money] DistributedIntoEqualChunks numberOfChunks chunk ->
  7468. 17.45 s [really-safe-money] - if a >= zero
  7469. 17.45 s [really-safe-money] + if True
  7470. 17.45 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7471. 17.45 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7472. 17.45 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7473. 17.45 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:451:14-23
  7474. 17.45 s [really-safe-money] @@ -448,7 +448,7 @@
  7475. 17.45 s [really-safe-money] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7476. 17.45 s [really-safe-money] DistributedZero -> DistributedZero
  7477. 17.45 s [really-safe-money] DistributedIntoEqualChunks numberOfChunks chunk ->
  7478. 17.45 s [really-safe-money] - if a >= zero
  7479. 17.45 s [really-safe-money] + if False
  7480. 17.45 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7481. 17.45 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7482. 17.45 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7483. 17.45 s [really-safe-money] added mutation Negate at src/Money/Account.hs:451:14-23
  7484. 17.45 s [really-safe-money] @@ -448,7 +448,7 @@
  7485. 17.45 s [really-safe-money] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7486. 17.45 s [really-safe-money] DistributedZero -> DistributedZero
  7487. 17.45 s [really-safe-money] DistributedIntoEqualChunks numberOfChunks chunk ->
  7488. 17.45 s [really-safe-money] - if a >= zero
  7489. 17.45 s [really-safe-money] + if not (a >= zero)
  7490. 17.45 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7491. 17.45 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7492. 17.45 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7493. 17.45 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:451:11-76
  7494. 17.45 s [really-safe-money] @@ -448,9 +448,9 @@
  7495. 17.45 s [really-safe-money] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7496. 17.45 s [really-safe-money] DistributedZero -> DistributedZero
  7497. 17.45 s [really-safe-money] DistributedIntoEqualChunks numberOfChunks chunk ->
  7498. 17.45 s [really-safe-money] - if a >= zero
  7499. 17.45 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7500. 17.45 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7501. 17.45 s [really-safe-money] + if a >= zero
  7502. 17.45 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7503. 17.45 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7504. 17.45 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7505. 17.45 s [really-safe-money] if a >= zero
  7506. 17.45 s [really-safe-money] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7507. 17.45 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:455:14-23
  7508. 17.45 s [really-safe-money] @@ -452,7 +452,7 @@
  7509. 17.45 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7510. 17.45 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7511. 17.45 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7512. 17.45 s [really-safe-money] - if a >= zero
  7513. 17.45 s [really-safe-money] + if True
  7514. 17.45 s [really-safe-money] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7515. 17.45 s [really-safe-money] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7516. 17.45 s [really-safe-money]
  7517. 17.45 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:455:14-23
  7518. 17.45 s [really-safe-money] @@ -452,7 +452,7 @@
  7519. 17.45 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7520. 17.45 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7521. 17.45 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7522. 17.45 s [really-safe-money] - if a >= zero
  7523. 17.45 s [really-safe-money] + if False
  7524. 17.45 s [really-safe-money] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7525. 17.45 s [really-safe-money] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7526. 17.45 s [really-safe-money]
  7527. 17.45 s [really-safe-money] added mutation Negate at src/Money/Account.hs:455:14-23
  7528. 17.45 s [really-safe-money] @@ -452,7 +452,7 @@
  7529. 17.45 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7530. 17.45 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7531. 17.45 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7532. 17.45 s [really-safe-money] - if a >= zero
  7533. 17.45 s [really-safe-money] + if not (a >= zero)
  7534. 17.45 s [really-safe-money] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7535. 17.45 s [really-safe-money] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7536. 17.45 s [really-safe-money]
  7537. 17.45 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:455:11-136
  7538. 17.45 s [really-safe-money] @@ -452,9 +452,9 @@
  7539. 17.45 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7540. 17.45 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7541. 17.45 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7542. 17.45 s [really-safe-money] - if a >= zero
  7543. 17.45 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7544. 17.45 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7545. 17.45 s [really-safe-money] + if a >= zero
  7546. 17.45 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7547. 17.45 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7548. 17.45 s [really-safe-money]
  7549. 17.45 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  7550. 17.45 s [really-safe-money]
  7551. 17.45 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:447:7-136
  7552. 17.45 s [really-safe-money] @@ -444,17 +444,17 @@
  7553. 17.45 s [really-safe-money] distribute a f =
  7554. 17.45 s [really-safe-money] let aa = abs a
  7555. 17.45 s [really-safe-money] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  7556. 17.45 s [really-safe-money] - in case Amount.distribute aa af of
  7557. 17.45 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7558. 17.45 s [really-safe-money] - DistributedZero -> DistributedZero
  7559. 17.45 s [really-safe-money] - DistributedIntoEqualChunks numberOfChunks chunk ->
  7560. 17.45 s [really-safe-money] - if a >= zero
  7561. 17.45 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7562. 17.45 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7563. 17.45 s [really-safe-money] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7564. 17.45 s [really-safe-money] - if a >= zero
  7565. 17.45 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7566. 17.45 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7567. 17.45 s [really-safe-money] + in case Amount.distribute aa af of
  7568. 17.45 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7569. 17.45 s [really-safe-money] + DistributedZero -> DistributedZero
  7570. 17.45 s [really-safe-money] + DistributedIntoEqualChunks numberOfChunks chunk ->
  7571. 17.45 s [really-safe-money] + if a >= zero
  7572. 17.45 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7573. 17.45 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7574. 17.45 s [really-safe-money] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7575. 17.45 s [really-safe-money] + if a >= zero
  7576. 17.45 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7577. 17.45 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7578. 17.45 s [really-safe-money]
  7579. 17.45 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  7580. 17.45 s [really-safe-money]
  7581. 17.45 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:447:7-136
  7582. 17.45 s [really-safe-money] @@ -444,17 +444,17 @@
  7583. 17.45 s [really-safe-money] distribute a f =
  7584. 17.45 s [really-safe-money] let aa = abs a
  7585. 17.45 s [really-safe-money] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  7586. 17.45 s [really-safe-money] - in case Amount.distribute aa af of
  7587. 17.45 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7588. 17.45 s [really-safe-money] - DistributedZero -> DistributedZero
  7589. 17.45 s [really-safe-money] - DistributedIntoEqualChunks numberOfChunks chunk ->
  7590. 17.45 s [really-safe-money] - if a >= zero
  7591. 17.45 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7592. 17.45 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7593. 17.45 s [really-safe-money] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7594. 17.45 s [really-safe-money] - if a >= zero
  7595. 17.45 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7596. 17.45 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7597. 17.45 s [really-safe-money] + in case Amount.distribute aa af of
  7598. 17.45 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7599. 17.45 s [really-safe-money] + DistributedZero -> DistributedZero
  7600. 17.45 s [really-safe-money] + DistributedIntoEqualChunks numberOfChunks chunk ->
  7601. 17.45 s [really-safe-money] + if a >= zero
  7602. 17.45 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7603. 17.45 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7604. 17.45 s [really-safe-money] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7605. 17.45 s [really-safe-money] + if a >= zero
  7606. 17.45 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7607. 17.45 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7608. 17.45 s [really-safe-money]
  7609. 17.45 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  7610. 17.45 s [really-safe-money]
  7611. 17.45 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:447:7-136
  7612. 17.45 s [really-safe-money] @@ -444,17 +444,17 @@
  7613. 17.45 s [really-safe-money] distribute a f =
  7614. 17.45 s [really-safe-money] let aa = abs a
  7615. 17.45 s [really-safe-money] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  7616. 17.45 s [really-safe-money] - in case Amount.distribute aa af of
  7617. 17.45 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7618. 17.45 s [really-safe-money] - DistributedZero -> DistributedZero
  7619. 17.45 s [really-safe-money] - DistributedIntoEqualChunks numberOfChunks chunk ->
  7620. 17.45 s [really-safe-money] - if a >= zero
  7621. 17.45 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7622. 17.45 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7623. 17.45 s [really-safe-money] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7624. 17.45 s [really-safe-money] - if a >= zero
  7625. 17.45 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7626. 17.45 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7627. 17.45 s [really-safe-money] + in case Amount.distribute aa af of
  7628. 17.45 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7629. 17.45 s [really-safe-money] + DistributedZero -> DistributedZero
  7630. 17.45 s [really-safe-money] + DistributedIntoEqualChunks numberOfChunks chunk ->
  7631. 17.45 s [really-safe-money] + if a >= zero
  7632. 17.45 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7633. 17.45 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7634. 17.45 s [really-safe-money] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7635. 17.45 s [really-safe-money] + if a >= zero
  7636. 17.45 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7637. 17.45 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7638. 17.45 s [really-safe-money]
  7639. 17.45 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  7640. 17.45 s [really-safe-money]
  7641. 17.45 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:447:7-136
  7642. 17.45 s [really-safe-money] @@ -444,17 +444,17 @@
  7643. 17.45 s [really-safe-money] distribute a f =
  7644. 17.45 s [really-safe-money] let aa = abs a
  7645. 17.45 s [really-safe-money] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  7646. 17.45 s [really-safe-money] - in case Amount.distribute aa af of
  7647. 17.45 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7648. 17.45 s [really-safe-money] - DistributedZero -> DistributedZero
  7649. 17.45 s [really-safe-money] - DistributedIntoEqualChunks numberOfChunks chunk ->
  7650. 17.45 s [really-safe-money] - if a >= zero
  7651. 17.45 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7652. 17.45 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7653. 17.45 s [really-safe-money] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7654. 17.45 s [really-safe-money] - if a >= zero
  7655. 17.45 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7656. 17.45 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7657. 17.45 s [really-safe-money] + in case Amount.distribute aa af of
  7658. 17.45 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7659. 17.46 s [really-safe-money] + DistributedZero -> DistributedZero
  7660. 17.46 s [really-safe-money] + DistributedIntoEqualChunks numberOfChunks chunk ->
  7661. 17.46 s [really-safe-money] + if a >= zero
  7662. 17.46 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7663. 17.46 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7664. 17.46 s [really-safe-money] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7665. 17.46 s [really-safe-money] + if a >= zero
  7666. 17.46 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7667. 17.46 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7668. 17.46 s [really-safe-money]
  7669. 17.46 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  7670. 17.46 s [really-safe-money]
  7671. 17.46 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:522:19-35
  7672. 17.46 s [really-safe-money] @@ -519,10 +519,10 @@
  7673. 17.46 s [really-safe-money] let aa = abs account
  7674. 17.46 s [really-safe-money] (amount, actualFraction) = Amount.fraction ro aa af
  7675. 17.46 s [really-safe-money] func :: Maybe Amount -> Ratio Natural -> (Maybe Account, Ratio Natural)
  7676. 17.46 s [really-safe-money] - func ma r = case compare account zero of
  7677. 17.46 s [really-safe-money] - EQ -> (Just zero, r)
  7678. 17.46 s [really-safe-money] - GT -> (Positive <$> ma, r)
  7679. 17.46 s [really-safe-money] - LT -> (Negative <$> ma, r)
  7680. 17.46 s [really-safe-money] + func ma r = case compare account zero of
  7681. 17.46 s [really-safe-money] + EQ -> (Just zero, r)
  7682. 17.46 s [really-safe-money] + GT -> (Positive <$> ma, r)
  7683. 17.46 s [really-safe-money] + LT -> (Negative <$> ma, r)
  7684. 17.46 s [really-safe-money] in func amount actualFraction
  7685. 17.46 s [really-safe-money]
  7686. 17.46 s [really-safe-money] -- | Compute the currency conversion rate between two accounts of money of
  7687. 17.46 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:522:19-35
  7688. 17.46 s [really-safe-money] @@ -519,10 +519,10 @@
  7689. 17.46 s [really-safe-money] let aa = abs account
  7690. 17.46 s [really-safe-money] (amount, actualFraction) = Amount.fraction ro aa af
  7691. 17.46 s [really-safe-money] func :: Maybe Amount -> Ratio Natural -> (Maybe Account, Ratio Natural)
  7692. 17.46 s [really-safe-money] - func ma r = case compare account zero of
  7693. 17.46 s [really-safe-money] - EQ -> (Just zero, r)
  7694. 17.46 s [really-safe-money] - GT -> (Positive <$> ma, r)
  7695. 17.46 s [really-safe-money] - LT -> (Negative <$> ma, r)
  7696. 17.46 s [really-safe-money] + func ma r = case compare account zero of
  7697. 17.46 s [really-safe-money] + EQ -> (Just zero, r)
  7698. 17.46 s [really-safe-money] + GT -> (Positive <$> ma, r)
  7699. 17.46 s [really-safe-money] + LT -> (Negative <$> ma, r)
  7700. 17.46 s [really-safe-money] in func amount actualFraction
  7701. 17.46 s [really-safe-money]
  7702. 17.46 s [really-safe-money] -- | Compute the currency conversion rate between two accounts of money of
  7703. 17.46 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:522:19-35
  7704. 17.46 s [really-safe-money] @@ -519,10 +519,10 @@
  7705. 17.46 s [really-safe-money] let aa = abs account
  7706. 17.46 s [really-safe-money] (amount, actualFraction) = Amount.fraction ro aa af
  7707. 17.46 s [really-safe-money] func :: Maybe Amount -> Ratio Natural -> (Maybe Account, Ratio Natural)
  7708. 17.46 s [really-safe-money] - func ma r = case compare account zero of
  7709. 17.46 s [really-safe-money] - EQ -> (Just zero, r)
  7710. 17.46 s [really-safe-money] - GT -> (Positive <$> ma, r)
  7711. 17.46 s [really-safe-money] - LT -> (Negative <$> ma, r)
  7712. 17.46 s [really-safe-money] + func ma r = case compare account zero of
  7713. 17.46 s [really-safe-money] + EQ -> (Just zero, r)
  7714. 17.46 s [really-safe-money] + GT -> (Positive <$> ma, r)
  7715. 17.46 s [really-safe-money] + LT -> (Negative <$> ma, r)
  7716. 17.46 s [really-safe-money] in func amount actualFraction
  7717. 17.46 s [really-safe-money]
  7718. 17.46 s [really-safe-money] -- | Compute the currency conversion rate between two accounts of money of
  7719. 17.46 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:495:17-18
  7720. 17.46 s [really-safe-money] @@ -492,7 +492,7 @@
  7721. 17.46 s [really-safe-money] fraction rounding account f =
  7722. 17.46 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  7723. 17.46 s [really-safe-money] ro =
  7724. 17.46 s [really-safe-money] - if f >= 0
  7725. 17.46 s [really-safe-money] + if f >= 1
  7726. 17.46 s [really-safe-money] then rounding
  7727. 17.46 s [really-safe-money] else case rounding of
  7728. 17.46 s [really-safe-money] RoundUp -> RoundDown
  7729. 17.46 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:495:12-18
  7730. 17.46 s [really-safe-money] @@ -492,7 +492,7 @@
  7731. 17.46 s [really-safe-money] fraction rounding account f =
  7732. 17.46 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  7733. 17.46 s [really-safe-money] ro =
  7734. 17.46 s [really-safe-money] - if f >= 0
  7735. 17.46 s [really-safe-money] + if True
  7736. 17.46 s [really-safe-money] then rounding
  7737. 17.46 s [really-safe-money] else case rounding of
  7738. 17.46 s [really-safe-money] RoundUp -> RoundDown
  7739. 17.46 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:495:12-18
  7740. 17.46 s [really-safe-money] @@ -492,7 +492,7 @@
  7741. 17.46 s [really-safe-money] fraction rounding account f =
  7742. 17.46 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  7743. 17.46 s [really-safe-money] ro =
  7744. 17.46 s [really-safe-money] - if f >= 0
  7745. 17.46 s [really-safe-money] + if False
  7746. 17.46 s [really-safe-money] then rounding
  7747. 17.46 s [really-safe-money] else case rounding of
  7748. 17.46 s [really-safe-money] RoundUp -> RoundDown
  7749. 17.46 s [really-safe-money] added mutation Negate at src/Money/Account.hs:495:12-18
  7750. 17.46 s [really-safe-money] @@ -492,7 +492,7 @@
  7751. 17.46 s [really-safe-money] fraction rounding account f =
  7752. 17.46 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  7753. 17.46 s [really-safe-money] ro =
  7754. 17.46 s [really-safe-money] - if f >= 0
  7755. 17.46 s [really-safe-money] + if not (f >= 0)
  7756. 17.46 s [really-safe-money] then rounding
  7757. 17.46 s [really-safe-money] else case rounding of
  7758. 17.46 s [really-safe-money] RoundUp -> RoundDown
  7759. 17.46 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:497:16-41
  7760. 17.46 s [really-safe-money] @@ -494,10 +494,10 @@
  7761. 17.46 s [really-safe-money] ro =
  7762. 17.46 s [really-safe-money] if f >= 0
  7763. 17.46 s [really-safe-money] then rounding
  7764. 17.46 s [really-safe-money] - else case rounding of
  7765. 17.46 s [really-safe-money] - RoundUp -> RoundDown
  7766. 17.46 s [really-safe-money] - RoundDown -> RoundUp
  7767. 17.46 s [really-safe-money] - RoundNearest -> RoundNearest
  7768. 17.46 s [really-safe-money] + else case rounding of
  7769. 17.46 s [really-safe-money] + RoundUp -> RoundDown
  7770. 17.46 s [really-safe-money] + RoundDown -> RoundUp
  7771. 17.46 s [really-safe-money] + RoundNearest -> RoundNearest
  7772. 17.46 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  7773. 17.46 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  7774. 17.46 s [really-safe-money] in if f >= 0
  7775. 17.46 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:497:16-41
  7776. 17.46 s [really-safe-money] @@ -494,10 +494,10 @@
  7777. 17.46 s [really-safe-money] ro =
  7778. 17.46 s [really-safe-money] if f >= 0
  7779. 17.46 s [really-safe-money] then rounding
  7780. 17.46 s [really-safe-money] - else case rounding of
  7781. 17.46 s [really-safe-money] - RoundUp -> RoundDown
  7782. 17.46 s [really-safe-money] - RoundDown -> RoundUp
  7783. 17.46 s [really-safe-money] - RoundNearest -> RoundNearest
  7784. 17.46 s [really-safe-money] + else case rounding of
  7785. 17.46 s [really-safe-money] + RoundUp -> RoundDown
  7786. 17.46 s [really-safe-money] + RoundDown -> RoundUp
  7787. 17.46 s [really-safe-money] + RoundNearest -> RoundNearest
  7788. 17.46 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  7789. 17.46 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  7790. 17.46 s [really-safe-money] in if f >= 0
  7791. 17.46 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:497:16-41
  7792. 17.46 s [really-safe-money] @@ -494,10 +494,10 @@
  7793. 17.46 s [really-safe-money] ro =
  7794. 17.46 s [really-safe-money] if f >= 0
  7795. 17.46 s [really-safe-money] then rounding
  7796. 17.46 s [really-safe-money] - else case rounding of
  7797. 17.46 s [really-safe-money] - RoundUp -> RoundDown
  7798. 17.46 s [really-safe-money] - RoundDown -> RoundUp
  7799. 17.46 s [really-safe-money] - RoundNearest -> RoundNearest
  7800. 17.46 s [really-safe-money] + else case rounding of
  7801. 17.46 s [really-safe-money] + RoundUp -> RoundDown
  7802. 17.46 s [really-safe-money] + RoundDown -> RoundUp
  7803. 17.46 s [really-safe-money] + RoundNearest -> RoundNearest
  7804. 17.46 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  7805. 17.46 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  7806. 17.46 s [really-safe-money] in if f >= 0
  7807. 17.46 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:495:9-41
  7808. 17.46 s [really-safe-money] @@ -492,12 +492,12 @@
  7809. 17.46 s [really-safe-money] fraction rounding account f =
  7810. 17.46 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  7811. 17.46 s [really-safe-money] ro =
  7812. 17.46 s [really-safe-money] - if f >= 0
  7813. 17.46 s [really-safe-money] - then rounding
  7814. 17.46 s [really-safe-money] - else case rounding of
  7815. 17.46 s [really-safe-money] - RoundUp -> RoundDown
  7816. 17.46 s [really-safe-money] - RoundDown -> RoundUp
  7817. 17.46 s [really-safe-money] - RoundNearest -> RoundNearest
  7818. 17.46 s [really-safe-money] + if f >= 0
  7819. 17.46 s [really-safe-money] + then rounding
  7820. 17.46 s [really-safe-money] + else case rounding of
  7821. 17.46 s [really-safe-money] + RoundUp -> RoundDown
  7822. 17.46 s [really-safe-money] + RoundDown -> RoundUp
  7823. 17.46 s [really-safe-money] + RoundNearest -> RoundNearest
  7824. 17.46 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  7825. 17.46 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  7826. 17.46 s [really-safe-money] in if f >= 0
  7827. 17.46 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:503:15-16
  7828. 17.46 s [really-safe-money] @@ -500,7 +500,7 @@
  7829. 17.46 s [really-safe-money] RoundNearest -> RoundNearest
  7830. 17.46 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  7831. 17.46 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  7832. 17.46 s [really-safe-money] - in if f >= 0
  7833. 17.46 s [really-safe-money] + in if f >= 1
  7834. 17.46 s [really-safe-money] then (ma, r)
  7835. 17.46 s [really-safe-money] else (negate <$> ma, -r)
  7836. 17.46 s [really-safe-money]
  7837. 17.46 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:503:10-16
  7838. 17.46 s [really-safe-money] @@ -500,7 +500,7 @@
  7839. 17.46 s [really-safe-money] RoundNearest -> RoundNearest
  7840. 17.46 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  7841. 17.46 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  7842. 17.46 s [really-safe-money] - in if f >= 0
  7843. 17.46 s [really-safe-money] + in if True
  7844. 17.46 s [really-safe-money] then (ma, r)
  7845. 17.46 s [really-safe-money] else (negate <$> ma, -r)
  7846. 17.46 s [really-safe-money]
  7847. 17.46 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:503:10-16
  7848. 17.46 s [really-safe-money] @@ -500,7 +500,7 @@
  7849. 17.46 s [really-safe-money] RoundNearest -> RoundNearest
  7850. 17.46 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  7851. 17.46 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  7852. 17.46 s [really-safe-money] - in if f >= 0
  7853. 17.46 s [really-safe-money] + in if False
  7854. 17.46 s [really-safe-money] then (ma, r)
  7855. 17.46 s [really-safe-money] else (negate <$> ma, -r)
  7856. 17.46 s [really-safe-money]
  7857. 17.46 s [really-safe-money] added mutation Negate at src/Money/Account.hs:503:10-16
  7858. 17.46 s [really-safe-money] @@ -500,7 +500,7 @@
  7859. 17.46 s [really-safe-money] RoundNearest -> RoundNearest
  7860. 17.46 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  7861. 17.46 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  7862. 17.46 s [really-safe-money] - in if f >= 0
  7863. 17.46 s [really-safe-money] + in if not (f >= 0)
  7864. 17.46 s [really-safe-money] then (ma, r)
  7865. 17.46 s [really-safe-money] else (negate <$> ma, -r)
  7866. 17.46 s [really-safe-money]
  7867. 17.46 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:503:7-33
  7868. 17.46 s [really-safe-money] @@ -500,9 +500,9 @@
  7869. 17.46 s [really-safe-money] RoundNearest -> RoundNearest
  7870. 17.46 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  7871. 17.46 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  7872. 17.46 s [really-safe-money] - in if f >= 0
  7873. 17.46 s [really-safe-money] - then (ma, r)
  7874. 17.46 s [really-safe-money] - else (negate <$> ma, -r)
  7875. 17.46 s [really-safe-money] + in if f >= 0
  7876. 17.46 s [really-safe-money] + then (ma, r)
  7877. 17.46 s [really-safe-money] + else (negate <$> ma, -r)
  7878. 17.46 s [really-safe-money]
  7879. 17.46 s [really-safe-money] -- | Fractional multiplication with a positive fraction, see 'Amount.fraction' and 'Account.fraction'.
  7880. 17.46 s [really-safe-money] --
  7881. 17.46 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:233:19-20
  7882. 17.46 s [really-safe-money] @@ -230,7 +230,7 @@
  7883. 17.46 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  7884. 17.46 s [really-safe-money] fromRational quantisationFactor r =
  7885. 17.46 s [really-safe-money] let r' = Prelude.abs r
  7886. 17.46 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  7887. 17.46 s [really-safe-money] + f = if r >= 1 then Positive else Negative
  7888. 17.46 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  7889. 17.46 s [really-safe-money]
  7890. 17.46 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  7891. 17.46 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:233:14-20
  7892. 17.46 s [really-safe-money] @@ -230,7 +230,7 @@
  7893. 17.46 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  7894. 17.46 s [really-safe-money] fromRational quantisationFactor r =
  7895. 17.46 s [really-safe-money] let r' = Prelude.abs r
  7896. 17.46 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  7897. 17.46 s [really-safe-money] + f = if True then Positive else Negative
  7898. 17.46 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  7899. 17.46 s [really-safe-money]
  7900. 17.46 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  7901. 17.46 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:233:14-20
  7902. 17.46 s [really-safe-money] @@ -230,7 +230,7 @@
  7903. 17.46 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  7904. 17.46 s [really-safe-money] fromRational quantisationFactor r =
  7905. 17.46 s [really-safe-money] let r' = Prelude.abs r
  7906. 17.46 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  7907. 17.46 s [really-safe-money] + f = if False then Positive else Negative
  7908. 17.46 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  7909. 17.46 s [really-safe-money]
  7910. 17.46 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  7911. 17.46 s [really-safe-money] added mutation Negate at src/Money/Account.hs:233:14-20
  7912. 17.46 s [really-safe-money] @@ -230,7 +230,7 @@
  7913. 17.46 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  7914. 17.46 s [really-safe-money] fromRational quantisationFactor r =
  7915. 17.46 s [really-safe-money] let r' = Prelude.abs r
  7916. 17.46 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  7917. 17.46 s [really-safe-money] + f = if not (r >= 0) then Positive else Negative
  7918. 17.46 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  7919. 17.46 s [really-safe-money]
  7920. 17.46 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  7921. 17.46 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:233:11-48
  7922. 17.46 s [really-safe-money] @@ -230,7 +230,7 @@
  7923. 17.46 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  7924. 17.46 s [really-safe-money] fromRational quantisationFactor r =
  7925. 17.46 s [really-safe-money] let r' = Prelude.abs r
  7926. 17.46 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  7927. 17.46 s [really-safe-money] + f = if r >= 0 then Positive else Negative
  7928. 17.46 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  7929. 17.46 s [really-safe-money]
  7930. 17.46 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  7931. 17.46 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:211:11-37
  7932. 17.46 s [really-safe-money] @@ -208,9 +208,9 @@
  7933. 17.46 s [really-safe-money] -- (-3) % 20
  7934. 17.46 s [really-safe-money] toRational :: QuantisationFactor -> Account -> Rational
  7935. 17.46 s [really-safe-money] toRational quantisationFactor account =
  7936. 17.46 s [really-safe-money] - let f = case account of
  7937. 17.46 s [really-safe-money] - Positive _ -> id
  7938. 17.46 s [really-safe-money] - Negative _ -> Prelude.negate
  7939. 17.46 s [really-safe-money] + let f = case account of
  7940. 17.46 s [really-safe-money] + Positive _ -> id
  7941. 17.46 s [really-safe-money] + Negative _ -> Prelude.negate
  7942. 17.46 s [really-safe-money] in f $ Amount.toRational quantisationFactor (abs account)
  7943. 17.46 s [really-safe-money]
  7944. 17.46 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  7945. 17.46 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:211:11-37
  7946. 17.46 s [really-safe-money] @@ -208,9 +208,9 @@
  7947. 17.46 s [really-safe-money] -- (-3) % 20
  7948. 17.46 s [really-safe-money] toRational :: QuantisationFactor -> Account -> Rational
  7949. 17.46 s [really-safe-money] toRational quantisationFactor account =
  7950. 17.46 s [really-safe-money] - let f = case account of
  7951. 17.46 s [really-safe-money] - Positive _ -> id
  7952. 17.46 s [really-safe-money] - Negative _ -> Prelude.negate
  7953. 17.46 s [really-safe-money] + let f = case account of
  7954. 17.46 s [really-safe-money] + Positive _ -> id
  7955. 17.46 s [really-safe-money] + Negative _ -> Prelude.negate
  7956. 17.46 s [really-safe-money] in f $ Amount.toRational quantisationFactor (abs account)
  7957. 17.46 s [really-safe-money]
  7958. 17.46 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  7959. 17.46 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:197:19-20
  7960. 17.46 s [really-safe-money] @@ -194,7 +194,7 @@
  7961. 17.46 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  7962. 17.46 s [really-safe-money] fromDouble quantisationFactor d =
  7963. 17.46 s [really-safe-money] let d' = Prelude.abs d
  7964. 17.46 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  7965. 17.46 s [really-safe-money] + f = if d >= 1 then Positive else Negative
  7966. 17.46 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  7967. 17.46 s [really-safe-money]
  7968. 17.47 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  7969. 17.47 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:197:14-20
  7970. 17.47 s [really-safe-money] @@ -194,7 +194,7 @@
  7971. 17.47 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  7972. 17.47 s [really-safe-money] fromDouble quantisationFactor d =
  7973. 17.47 s [really-safe-money] let d' = Prelude.abs d
  7974. 17.47 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  7975. 17.47 s [really-safe-money] + f = if True then Positive else Negative
  7976. 17.47 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  7977. 17.47 s [really-safe-money]
  7978. 17.47 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  7979. 17.47 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:197:14-20
  7980. 17.47 s [really-safe-money] @@ -194,7 +194,7 @@
  7981. 17.47 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  7982. 17.47 s [really-safe-money] fromDouble quantisationFactor d =
  7983. 17.47 s [really-safe-money] let d' = Prelude.abs d
  7984. 17.47 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  7985. 17.47 s [really-safe-money] + f = if False then Positive else Negative
  7986. 17.47 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  7987. 17.47 s [really-safe-money]
  7988. 17.47 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  7989. 17.47 s [really-safe-money] added mutation Negate at src/Money/Account.hs:197:14-20
  7990. 17.47 s [really-safe-money] @@ -194,7 +194,7 @@
  7991. 17.47 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  7992. 17.47 s [really-safe-money] fromDouble quantisationFactor d =
  7993. 17.47 s [really-safe-money] let d' = Prelude.abs d
  7994. 17.47 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  7995. 17.47 s [really-safe-money] + f = if not (d >= 0) then Positive else Negative
  7996. 17.47 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  7997. 17.47 s [really-safe-money]
  7998. 17.47 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  7999. 17.47 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:197:11-48
  8000. 17.47 s [really-safe-money] @@ -194,7 +194,7 @@
  8001. 17.47 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  8002. 17.47 s [really-safe-money] fromDouble quantisationFactor d =
  8003. 17.47 s [really-safe-money] let d' = Prelude.abs d
  8004. 17.47 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  8005. 17.47 s [really-safe-money] + f = if d >= 0 then Positive else Negative
  8006. 17.47 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  8007. 17.47 s [really-safe-money]
  8008. 17.47 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  8009. 17.47 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:171:11-37
  8010. 17.47 s [really-safe-money] @@ -168,9 +168,9 @@
  8011. 17.47 s [really-safe-money] -- -0.25
  8012. 17.47 s [really-safe-money] toDouble :: QuantisationFactor -> Account -> Double
  8013. 17.47 s [really-safe-money] toDouble quantisationFactor account =
  8014. 17.47 s [really-safe-money] - let f = case account of
  8015. 17.47 s [really-safe-money] - Positive _ -> id
  8016. 17.47 s [really-safe-money] - Negative _ -> Prelude.negate
  8017. 17.47 s [really-safe-money] + let f = case account of
  8018. 17.47 s [really-safe-money] + Positive _ -> id
  8019. 17.47 s [really-safe-money] + Negative _ -> Prelude.negate
  8020. 17.47 s [really-safe-money] in f $ Amount.toDouble quantisationFactor (abs account)
  8021. 17.47 s [really-safe-money]
  8022. 17.47 s [really-safe-money] -- | Turn a 'Double' into an amount of money.
  8023. 17.47 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:171:11-37
  8024. 17.47 s [really-safe-money] @@ -168,9 +168,9 @@
  8025. 17.47 s [really-safe-money] -- -0.25
  8026. 17.47 s [really-safe-money] toDouble :: QuantisationFactor -> Account -> Double
  8027. 17.47 s [really-safe-money] toDouble quantisationFactor account =
  8028. 17.47 s [really-safe-money] - let f = case account of
  8029. 17.47 s [really-safe-money] - Positive _ -> id
  8030. 17.47 s [really-safe-money] - Negative _ -> Prelude.negate
  8031. 17.47 s [really-safe-money] + let f = case account of
  8032. 17.47 s [really-safe-money] + Positive _ -> id
  8033. 17.47 s [really-safe-money] + Negative _ -> Prelude.negate
  8034. 17.47 s [really-safe-money] in f $ Amount.toDouble quantisationFactor (abs account)
  8035. 17.47 s [really-safe-money]
  8036. 17.47 s [really-safe-money] -- | Turn a 'Double' into an amount of money.
  8037. 17.47 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:155:11-37
  8038. 17.47 s [really-safe-money] @@ -152,9 +152,9 @@
  8039. 17.47 s [really-safe-money] -- We return 'Integer' because the result does not fit into a 'Word64'
  8040. 17.47 s [really-safe-money] toMinimalQuantisations :: Account -> Integer
  8041. 17.47 s [really-safe-money] toMinimalQuantisations account =
  8042. 17.47 s [really-safe-money] - let f = case account of
  8043. 17.47 s [really-safe-money] - Positive _ -> id
  8044. 17.47 s [really-safe-money] - Negative _ -> Prelude.negate
  8045. 17.47 s [really-safe-money] + let f = case account of
  8046. 17.47 s [really-safe-money] + Positive _ -> id
  8047. 17.47 s [really-safe-money] + Negative _ -> Prelude.negate
  8048. 17.47 s [really-safe-money] in f $ (fromIntegral :: Word64 -> Integer) $ Amount.toMinimalQuantisations (abs account)
  8049. 17.47 s [really-safe-money]
  8050. 17.47 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  8051. 17.47 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:155:11-37
  8052. 17.47 s [really-safe-money] @@ -152,9 +152,9 @@
  8053. 17.47 s [really-safe-money] -- We return 'Integer' because the result does not fit into a 'Word64'
  8054. 17.47 s [really-safe-money] toMinimalQuantisations :: Account -> Integer
  8055. 17.47 s [really-safe-money] toMinimalQuantisations account =
  8056. 17.47 s [really-safe-money] - let f = case account of
  8057. 17.47 s [really-safe-money] - Positive _ -> id
  8058. 17.47 s [really-safe-money] - Negative _ -> Prelude.negate
  8059. 17.47 s [really-safe-money] + let f = case account of
  8060. 17.47 s [really-safe-money] + Positive _ -> id
  8061. 17.47 s [really-safe-money] + Negative _ -> Prelude.negate
  8062. 17.47 s [really-safe-money] in f $ (fromIntegral :: Word64 -> Integer) $ Amount.toMinimalQuantisations (abs account)
  8063. 17.47 s [really-safe-money]
  8064. 17.47 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  8065. 17.47 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:123:10-23
  8066. 17.47 s [really-safe-money] @@ -120,7 +120,7 @@
  8067. 17.47 s [really-safe-money] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  8068. 17.47 s [really-safe-money] a :: Integer
  8069. 17.47 s [really-safe-money] a = (Prelude.abs :: Integer -> Integer) i
  8070. 17.47 s [really-safe-money] - in if a > maxBoundI
  8071. 17.47 s [really-safe-money] + in if True
  8072. 17.47 s [really-safe-money] then Nothing
  8073. 17.47 s [really-safe-money] else
  8074. 17.47 s [really-safe-money] let w :: Word64
  8075. 17.47 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:123:10-23
  8076. 17.47 s [really-safe-money] @@ -120,7 +120,7 @@
  8077. 17.47 s [really-safe-money] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  8078. 17.47 s [really-safe-money] a :: Integer
  8079. 17.47 s [really-safe-money] a = (Prelude.abs :: Integer -> Integer) i
  8080. 17.47 s [really-safe-money] - in if a > maxBoundI
  8081. 17.47 s [really-safe-money] + in if False
  8082. 17.47 s [really-safe-money] then Nothing
  8083. 17.47 s [really-safe-money] else
  8084. 17.47 s [really-safe-money] let w :: Word64
  8085. 17.47 s [really-safe-money] added mutation Negate at src/Money/Account.hs:123:10-23
  8086. 17.47 s [really-safe-money] @@ -120,7 +120,7 @@
  8087. 17.47 s [really-safe-money] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  8088. 17.47 s [really-safe-money] a :: Integer
  8089. 17.47 s [really-safe-money] a = (Prelude.abs :: Integer -> Integer) i
  8090. 17.47 s [really-safe-money] - in if a > maxBoundI
  8091. 17.47 s [really-safe-money] + in if not (a > maxBoundI)
  8092. 17.47 s [really-safe-money] then Nothing
  8093. 17.47 s [really-safe-money] else
  8094. 17.47 s [really-safe-money] let w :: Word64
  8095. 17.47 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:131:25-26
  8096. 17.47 s [really-safe-money] @@ -128,7 +128,7 @@
  8097. 17.47 s [really-safe-money] amount :: Amount
  8098. 17.47 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  8099. 17.47 s [really-safe-money] in Just $
  8100. 17.47 s [really-safe-money] - if i >= 0
  8101. 17.47 s [really-safe-money] + if i >= 1
  8102. 17.47 s [really-safe-money] then Positive amount
  8103. 17.47 s [really-safe-money] else Negative amount
  8104. 17.47 s [really-safe-money]
  8105. 17.47 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:131:20-26
  8106. 17.47 s [really-safe-money] @@ -128,7 +128,7 @@
  8107. 17.47 s [really-safe-money] amount :: Amount
  8108. 17.47 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  8109. 17.47 s [really-safe-money] in Just $
  8110. 17.47 s [really-safe-money] - if i >= 0
  8111. 17.47 s [really-safe-money] + if True
  8112. 17.47 s [really-safe-money] then Positive amount
  8113. 17.47 s [really-safe-money] else Negative amount
  8114. 17.47 s [really-safe-money]
  8115. 17.47 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:131:20-26
  8116. 17.47 s [really-safe-money] @@ -128,7 +128,7 @@
  8117. 17.47 s [really-safe-money] amount :: Amount
  8118. 17.47 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  8119. 17.47 s [really-safe-money] in Just $
  8120. 17.47 s [really-safe-money] - if i >= 0
  8121. 17.47 s [really-safe-money] + if False
  8122. 17.47 s [really-safe-money] then Positive amount
  8123. 17.47 s [really-safe-money] else Negative amount
  8124. 17.47 s [really-safe-money]
  8125. 17.47 s [really-safe-money] added mutation Negate at src/Money/Account.hs:131:20-26
  8126. 17.47 s [really-safe-money] @@ -128,7 +128,7 @@
  8127. 17.47 s [really-safe-money] amount :: Amount
  8128. 17.47 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  8129. 17.47 s [really-safe-money] in Just $
  8130. 17.47 s [really-safe-money] - if i >= 0
  8131. 17.47 s [really-safe-money] + if not (i >= 0)
  8132. 17.47 s [really-safe-money] then Positive amount
  8133. 17.47 s [really-safe-money] else Negative amount
  8134. 17.47 s [really-safe-money]
  8135. 17.47 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:131:17-39
  8136. 17.47 s [really-safe-money] @@ -128,9 +128,9 @@
  8137. 17.47 s [really-safe-money] amount :: Amount
  8138. 17.47 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  8139. 17.47 s [really-safe-money] in Just $
  8140. 17.47 s [really-safe-money] - if i >= 0
  8141. 17.47 s [really-safe-money] - then Positive amount
  8142. 17.47 s [really-safe-money] - else Negative amount
  8143. 17.47 s [really-safe-money] + if i >= 0
  8144. 17.47 s [really-safe-money] + then Positive amount
  8145. 17.47 s [really-safe-money] + else Negative amount
  8146. 17.47 s [really-safe-money]
  8147. 17.47 s [really-safe-money] -- | Turn an amount into a positive account
  8148. 17.47 s [really-safe-money] --
  8149. 17.47 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:123:7-39
  8150. 17.47 s [really-safe-money] @@ -120,17 +120,17 @@
  8151. 17.47 s [really-safe-money] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  8152. 17.47 s [really-safe-money] a :: Integer
  8153. 17.47 s [really-safe-money] a = (Prelude.abs :: Integer -> Integer) i
  8154. 17.47 s [really-safe-money] - in if a > maxBoundI
  8155. 17.47 s [really-safe-money] - then Nothing
  8156. 17.47 s [really-safe-money] - else
  8157. 17.47 s [really-safe-money] - let w :: Word64
  8158. 17.47 s [really-safe-money] - w = (fromIntegral :: Integer -> Word64) a
  8159. 17.47 s [really-safe-money] - amount :: Amount
  8160. 17.47 s [really-safe-money] - amount = Amount.fromMinimalQuantisations w
  8161. 17.47 s [really-safe-money] - in Just $
  8162. 17.47 s [really-safe-money] - if i >= 0
  8163. 17.47 s [really-safe-money] - then Positive amount
  8164. 17.47 s [really-safe-money] - else Negative amount
  8165. 17.47 s [really-safe-money] + in if a > maxBoundI
  8166. 17.47 s [really-safe-money] + then Nothing
  8167. 17.47 s [really-safe-money] + else
  8168. 17.47 s [really-safe-money] + let w :: Word64
  8169. 17.47 s [really-safe-money] + w = (fromIntegral :: Integer -> Word64) a
  8170. 17.47 s [really-safe-money] + amount :: Amount
  8171. 17.47 s [really-safe-money] + amount = Amount.fromMinimalQuantisations w
  8172. 17.47 s [really-safe-money] + in Just $
  8173. 17.47 s [really-safe-money] + if i >= 0
  8174. 17.47 s [really-safe-money] + then Positive amount
  8175. 17.47 s [really-safe-money] + else Negative amount
  8176. 17.47 s [really-safe-money]
  8177. 17.47 s [really-safe-money] -- | Turn an amount into a positive account
  8178. 17.47 s [really-safe-money] --
  8179. 17.47 s [really-safe-money] added 66 mutations
  8180. 18.18 s [really-safe-money] [10 of 12] Compiling Money.MultiAccount ( src/Money/MultiAccount.hs, dist/build/Money/MultiAccount.p_o )
  8181. 18.19 s [really-safe-money] mutation: instrumenting Money.MultiAccount
  8182. 18.19 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
  8183. 18.19 s [really-safe-money] @@ -171,10 +171,10 @@
  8184. 18.19 s [really-safe-money] fmap
  8185. 18.19 s [really-safe-money] ( ( \theoreticalResult ->
  8186. 18.19 s [really-safe-money] let rounder :: Rational -> Integer
  8187. 18.19 s [really-safe-money] - rounder = case r of
  8188. 18.19 s [really-safe-money] - RoundUp -> ceiling
  8189. 18.19 s [really-safe-money] - RoundDown -> floor
  8190. 18.19 s [really-safe-money] - RoundNearest -> round
  8191. 18.19 s [really-safe-money] + rounder = case r of
  8192. 18.19 s [really-safe-money] + RoundUp -> ceiling
  8193. 18.19 s [really-safe-money] + RoundDown -> floor
  8194. 18.19 s [really-safe-money] + RoundNearest -> round
  8195. 18.19 s [really-safe-money] roundedResult :: Integer
  8196. 18.19 s [really-safe-money] roundedResult = rounder theoreticalResult
  8197. 18.19 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  8198. 18.19 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
  8199. 18.19 s [really-safe-money] @@ -171,10 +171,10 @@
  8200. 18.19 s [really-safe-money] fmap
  8201. 18.19 s [really-safe-money] ( ( \theoreticalResult ->
  8202. 18.19 s [really-safe-money] let rounder :: Rational -> Integer
  8203. 18.19 s [really-safe-money] - rounder = case r of
  8204. 18.19 s [really-safe-money] - RoundUp -> ceiling
  8205. 18.19 s [really-safe-money] - RoundDown -> floor
  8206. 18.19 s [really-safe-money] - RoundNearest -> round
  8207. 18.19 s [really-safe-money] + rounder = case r of
  8208. 18.19 s [really-safe-money] + RoundUp -> ceiling
  8209. 18.19 s [really-safe-money] + RoundDown -> floor
  8210. 18.19 s [really-safe-money] + RoundNearest -> round
  8211. 18.19 s [really-safe-money] roundedResult :: Integer
  8212. 18.19 s [really-safe-money] roundedResult = rounder theoreticalResult
  8213. 18.19 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  8214. 18.19 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
  8215. 18.19 s [really-safe-money] @@ -171,10 +171,10 @@
  8216. 18.19 s [really-safe-money] fmap
  8217. 18.19 s [really-safe-money] ( ( \theoreticalResult ->
  8218. 18.19 s [really-safe-money] let rounder :: Rational -> Integer
  8219. 18.19 s [really-safe-money] - rounder = case r of
  8220. 18.19 s [really-safe-money] - RoundUp -> ceiling
  8221. 18.19 s [really-safe-money] - RoundDown -> floor
  8222. 18.19 s [really-safe-money] - RoundNearest -> round
  8223. 18.19 s [really-safe-money] + rounder = case r of
  8224. 18.19 s [really-safe-money] + RoundUp -> ceiling
  8225. 18.19 s [really-safe-money] + RoundDown -> floor
  8226. 18.19 s [really-safe-money] + RoundNearest -> round
  8227. 18.19 s [really-safe-money] roundedResult :: Integer
  8228. 18.19 s [really-safe-money] roundedResult = rounder theoreticalResult
  8229. 18.19 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  8230. 18.19 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
  8231. 18.19 s [really-safe-money] @@ -177,10 +177,10 @@
  8232. 18.19 s [really-safe-money] RoundNearest -> round
  8233. 18.19 s [really-safe-money] roundedResult :: Integer
  8234. 18.19 s [really-safe-money] roundedResult = rounder theoreticalResult
  8235. 18.19 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  8236. 18.19 s [really-safe-money] - LT -> RoundedDown
  8237. 18.19 s [really-safe-money] - EQ -> DidNotRound
  8238. 18.19 s [really-safe-money] - GT -> RoundedUp
  8239. 18.19 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  8240. 18.19 s [really-safe-money] + LT -> RoundedDown
  8241. 18.19 s [really-safe-money] + EQ -> DidNotRound
  8242. 18.19 s [really-safe-money] + GT -> RoundedUp
  8243. 18.19 s [really-safe-money] in (Account.fromMinimalQuantisations roundedResult, rounded)
  8244. 18.19 s [really-safe-money] )
  8245. 18.19 s [really-safe-money] . Prelude.sum
  8246. 18.19 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
  8247. 18.19 s [really-safe-money] @@ -177,10 +177,10 @@
  8248. 18.19 s [really-safe-money] RoundNearest -> round
  8249. 18.19 s [really-safe-money] roundedResult :: Integer
  8250. 18.19 s [really-safe-money] roundedResult = rounder theoreticalResult
  8251. 18.19 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  8252. 18.19 s [really-safe-money] - LT -> RoundedDown
  8253. 18.19 s [really-safe-money] - EQ -> DidNotRound
  8254. 18.19 s [really-safe-money] - GT -> RoundedUp
  8255. 18.19 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  8256. 18.19 s [really-safe-money] + LT -> RoundedDown
  8257. 18.19 s [really-safe-money] + EQ -> DidNotRound
  8258. 18.19 s [really-safe-money] + GT -> RoundedUp
  8259. 18.19 s [really-safe-money] in (Account.fromMinimalQuantisations roundedResult, rounded)
  8260. 18.19 s [really-safe-money] )
  8261. 18.19 s [really-safe-money] . Prelude.sum
  8262. 18.19 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
  8263. 18.19 s [really-safe-money] @@ -177,10 +177,10 @@
  8264. 18.19 s [really-safe-money] RoundNearest -> round
  8265. 18.19 s [really-safe-money] roundedResult :: Integer
  8266. 18.19 s [really-safe-money] roundedResult = rounder theoreticalResult
  8267. 18.19 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  8268. 18.19 s [really-safe-money] - LT -> RoundedDown
  8269. 18.19 s [really-safe-money] - EQ -> DidNotRound
  8270. 18.19 s [really-safe-money] - GT -> RoundedUp
  8271. 18.19 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  8272. 18.19 s [really-safe-money] + LT -> RoundedDown
  8273. 18.19 s [really-safe-money] + EQ -> DidNotRound
  8274. 18.19 s [really-safe-money] + GT -> RoundedUp
  8275. 18.19 s [really-safe-money] in (Account.fromMinimalQuantisations roundedResult, rounded)
  8276. 18.19 s [really-safe-money] )
  8277. 18.19 s [really-safe-money] . Prelude.sum
  8278. 18.19 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:134:12-29
  8279. 18.19 s [really-safe-money] @@ -131,7 +131,7 @@
  8280. 18.19 s [really-safe-money] Just a -> do
  8281. 18.19 s [really-safe-money] r <- Account.subtract a account
  8282. 18.19 s [really-safe-money] Just $
  8283. 18.19 s [really-safe-money] - if r == Account.zero
  8284. 18.19 s [really-safe-money] + if True
  8285. 18.19 s [really-safe-money] then M.delete currency m
  8286. 18.19 s [really-safe-money] else M.insert currency r m
  8287. 18.19 s [really-safe-money]
  8288. 18.19 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:134:12-29
  8289. 18.19 s [really-safe-money] @@ -131,7 +131,7 @@
  8290. 18.19 s [really-safe-money] Just a -> do
  8291. 18.19 s [really-safe-money] r <- Account.subtract a account
  8292. 18.19 s [really-safe-money] Just $
  8293. 18.19 s [really-safe-money] - if r == Account.zero
  8294. 18.19 s [really-safe-money] + if False
  8295. 18.19 s [really-safe-money] then M.delete currency m
  8296. 18.19 s [really-safe-money] else M.insert currency r m
  8297. 18.19 s [really-safe-money]
  8298. 18.19 s [really-safe-money] added mutation Negate at src/Money/MultiAccount.hs:134:12-29
  8299. 18.19 s [really-safe-money] @@ -131,7 +131,7 @@
  8300. 18.19 s [really-safe-money] Just a -> do
  8301. 18.19 s [really-safe-money] r <- Account.subtract a account
  8302. 18.19 s [really-safe-money] Just $
  8303. 18.19 s [really-safe-money] - if r == Account.zero
  8304. 18.19 s [really-safe-money] + if not (r == Account.zero)
  8305. 18.19 s [really-safe-money] then M.delete currency m
  8306. 18.19 s [really-safe-money] else M.insert currency r m
  8307. 18.19 s [really-safe-money]
  8308. 18.19 s [really-safe-money] added mutation CondFlip at src/Money/MultiAccount.hs:134:9-37
  8309. 18.19 s [really-safe-money] @@ -131,9 +131,9 @@
  8310. 18.19 s [really-safe-money] Just a -> do
  8311. 18.19 s [really-safe-money] r <- Account.subtract a account
  8312. 18.19 s [really-safe-money] Just $
  8313. 18.19 s [really-safe-money] - if r == Account.zero
  8314. 18.19 s [really-safe-money] - then M.delete currency m
  8315. 18.19 s [really-safe-money] - else M.insert currency r m
  8316. 18.19 s [really-safe-money] + if r == Account.zero
  8317. 18.19 s [really-safe-money] + then M.delete currency m
  8318. 18.19 s [really-safe-money] + else M.insert currency r m
  8319. 18.19 s [really-safe-money]
  8320. 18.19 s [really-safe-money] -- | Try to convert every account to one currency.
  8321. 18.19 s [really-safe-money] --
  8322. 18.19 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:129:23-37
  8323. 18.19 s [really-safe-money] @@ -126,14 +126,14 @@
  8324. 18.19 s [really-safe-money] subtractAccount m _ (Positive (Amount 0)) = Just m
  8325. 18.19 s [really-safe-money] subtractAccount m _ (Negative (Amount 0)) = Just m
  8326. 18.19 s [really-safe-money] subtractAccount (MultiAccount m) currency account =
  8327. 18.19 s [really-safe-money] - fmap MultiAccount $ case M.lookup currency m of
  8328. 18.19 s [really-safe-money] - Nothing -> Just $ M.insert currency (Account.negate account) m
  8329. 18.19 s [really-safe-money] - Just a -> do
  8330. 18.19 s [really-safe-money] - r <- Account.subtract a account
  8331. 18.19 s [really-safe-money] - Just $
  8332. 18.19 s [really-safe-money] - if r == Account.zero
  8333. 18.19 s [really-safe-money] - then M.delete currency m
  8334. 18.19 s [really-safe-money] - else M.insert currency r m
  8335. 18.19 s [really-safe-money] + fmap MultiAccount $ case M.lookup currency m of
  8336. 18.19 s [really-safe-money] + Nothing -> Just $ M.insert currency (Account.negate account) m
  8337. 18.19 s [really-safe-money] + Just a -> do
  8338. 18.19 s [really-safe-money] + r <- Account.subtract a account
  8339. 18.19 s [really-safe-money] + Just $
  8340. 18.19 s [really-safe-money] + if r == Account.zero
  8341. 18.19 s [really-safe-money] + then M.delete currency m
  8342. 18.19 s [really-safe-money] + else M.insert currency r m
  8343. 18.19 s [really-safe-money]
  8344. 18.19 s [really-safe-money] -- | Try to convert every account to one currency.
  8345. 18.19 s [really-safe-money] --
  8346. 18.19 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:129:23-37
  8347. 18.19 s [really-safe-money] @@ -126,14 +126,14 @@
  8348. 18.19 s [really-safe-money] subtractAccount m _ (Positive (Amount 0)) = Just m
  8349. 18.19 s [really-safe-money] subtractAccount m _ (Negative (Amount 0)) = Just m
  8350. 18.19 s [really-safe-money] subtractAccount (MultiAccount m) currency account =
  8351. 18.19 s [really-safe-money] - fmap MultiAccount $ case M.lookup currency m of
  8352. 18.19 s [really-safe-money] - Nothing -> Just $ M.insert currency (Account.negate account) m
  8353. 18.19 s [really-safe-money] - Just a -> do
  8354. 18.19 s [really-safe-money] - r <- Account.subtract a account
  8355. 18.19 s [really-safe-money] - Just $
  8356. 18.19 s [really-safe-money] - if r == Account.zero
  8357. 18.19 s [really-safe-money] - then M.delete currency m
  8358. 18.19 s [really-safe-money] - else M.insert currency r m
  8359. 18.19 s [really-safe-money] + fmap MultiAccount $ case M.lookup currency m of
  8360. 18.19 s [really-safe-money] + Nothing -> Just $ M.insert currency (Account.negate account) m
  8361. 18.19 s [really-safe-money] + Just a -> do
  8362. 18.19 s [really-safe-money] + r <- Account.subtract a account
  8363. 18.19 s [really-safe-money] + Just $
  8364. 18.19 s [really-safe-money] + if r == Account.zero
  8365. 18.19 s [really-safe-money] + then M.delete currency m
  8366. 18.19 s [really-safe-money] + else M.insert currency r m
  8367. 18.19 s [really-safe-money]
  8368. 18.19 s [really-safe-money] -- | Try to convert every account to one currency.
  8369. 18.19 s [really-safe-money] --
  8370. 18.19 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:120:12-29
  8371. 18.19 s [really-safe-money] @@ -117,7 +117,7 @@
  8372. 18.19 s [really-safe-money] Just a -> do
  8373. 18.19 s [really-safe-money] r <- Account.add a account
  8374. 18.19 s [really-safe-money] Just $
  8375. 18.19 s [really-safe-money] - if r == Account.zero
  8376. 18.19 s [really-safe-money] + if True
  8377. 18.19 s [really-safe-money] then M.delete currency m
  8378. 18.19 s [really-safe-money] else M.insert currency r m
  8379. 18.19 s [really-safe-money]
  8380. 18.19 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:120:12-29
  8381. 18.19 s [really-safe-money] @@ -117,7 +117,7 @@
  8382. 18.19 s [really-safe-money] Just a -> do
  8383. 18.19 s [really-safe-money] r <- Account.add a account
  8384. 18.19 s [really-safe-money] Just $
  8385. 18.19 s [really-safe-money] - if r == Account.zero
  8386. 18.19 s [really-safe-money] + if False
  8387. 18.20 s [really-safe-money] then M.delete currency m
  8388. 18.20 s [really-safe-money] else M.insert currency r m
  8389. 18.20 s [really-safe-money]
  8390. 18.20 s [really-safe-money] added mutation Negate at src/Money/MultiAccount.hs:120:12-29
  8391. 18.20 s [really-safe-money] @@ -117,7 +117,7 @@
  8392. 18.20 s [really-safe-money] Just a -> do
  8393. 18.20 s [really-safe-money] r <- Account.add a account
  8394. 18.20 s [really-safe-money] Just $
  8395. 18.20 s [really-safe-money] - if r == Account.zero
  8396. 18.20 s [really-safe-money] + if not (r == Account.zero)
  8397. 18.20 s [really-safe-money] then M.delete currency m
  8398. 18.20 s [really-safe-money] else M.insert currency r m
  8399. 18.20 s [really-safe-money]
  8400. 18.20 s [really-safe-money] added mutation CondFlip at src/Money/MultiAccount.hs:120:9-37
  8401. 18.20 s [really-safe-money] @@ -117,9 +117,9 @@
  8402. 18.20 s [really-safe-money] Just a -> do
  8403. 18.20 s [really-safe-money] r <- Account.add a account
  8404. 18.20 s [really-safe-money] Just $
  8405. 18.20 s [really-safe-money] - if r == Account.zero
  8406. 18.20 s [really-safe-money] - then M.delete currency m
  8407. 18.20 s [really-safe-money] - else M.insert currency r m
  8408. 18.20 s [really-safe-money] + if r == Account.zero
  8409. 18.20 s [really-safe-money] + then M.delete currency m
  8410. 18.20 s [really-safe-money] + else M.insert currency r m
  8411. 18.20 s [really-safe-money]
  8412. 18.20 s [really-safe-money] -- | Add an 'Account' to a 'MultiAccount'
  8413. 18.20 s [really-safe-money] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
  8414. 18.20 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:115:23-37
  8415. 18.20 s [really-safe-money] @@ -112,14 +112,14 @@
  8416. 18.20 s [really-safe-money] addAccount m _ (Positive (Amount 0)) = Just m
  8417. 18.20 s [really-safe-money] addAccount m _ (Negative (Amount 0)) = Just m
  8418. 18.20 s [really-safe-money] addAccount (MultiAccount m) currency account =
  8419. 18.20 s [really-safe-money] - fmap MultiAccount $ case M.lookup currency m of
  8420. 18.20 s [really-safe-money] - Nothing -> Just $ M.insert currency account m
  8421. 18.20 s [really-safe-money] - Just a -> do
  8422. 18.20 s [really-safe-money] - r <- Account.add a account
  8423. 18.20 s [really-safe-money] - Just $
  8424. 18.20 s [really-safe-money] - if r == Account.zero
  8425. 18.20 s [really-safe-money] - then M.delete currency m
  8426. 18.20 s [really-safe-money] - else M.insert currency r m
  8427. 18.20 s [really-safe-money] + fmap MultiAccount $ case M.lookup currency m of
  8428. 18.20 s [really-safe-money] + Nothing -> Just $ M.insert currency account m
  8429. 18.20 s [really-safe-money] + Just a -> do
  8430. 18.20 s [really-safe-money] + r <- Account.add a account
  8431. 18.20 s [really-safe-money] + Just $
  8432. 18.20 s [really-safe-money] + if r == Account.zero
  8433. 18.20 s [really-safe-money] + then M.delete currency m
  8434. 18.20 s [really-safe-money] + else M.insert currency r m
  8435. 18.20 s [really-safe-money]
  8436. 18.20 s [really-safe-money] -- | Add an 'Account' to a 'MultiAccount'
  8437. 18.20 s [really-safe-money] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
  8438. 18.20 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:115:23-37
  8439. 18.20 s [really-safe-money] @@ -112,14 +112,14 @@
  8440. 18.20 s [really-safe-money] addAccount m _ (Positive (Amount 0)) = Just m
  8441. 18.20 s [really-safe-money] addAccount m _ (Negative (Amount 0)) = Just m
  8442. 18.20 s [really-safe-money] addAccount (MultiAccount m) currency account =
  8443. 18.20 s [really-safe-money] - fmap MultiAccount $ case M.lookup currency m of
  8444. 18.20 s [really-safe-money] - Nothing -> Just $ M.insert currency account m
  8445. 18.20 s [really-safe-money] - Just a -> do
  8446. 18.20 s [really-safe-money] - r <- Account.add a account
  8447. 18.20 s [really-safe-money] - Just $
  8448. 18.20 s [really-safe-money] - if r == Account.zero
  8449. 18.20 s [really-safe-money] - then M.delete currency m
  8450. 18.20 s [really-safe-money] - else M.insert currency r m
  8451. 18.20 s [really-safe-money] + fmap MultiAccount $ case M.lookup currency m of
  8452. 18.20 s [really-safe-money] + Nothing -> Just $ M.insert currency account m
  8453. 18.20 s [really-safe-money] + Just a -> do
  8454. 18.20 s [really-safe-money] + r <- Account.add a account
  8455. 18.20 s [really-safe-money] + Just $
  8456. 18.20 s [really-safe-money] + if r == Account.zero
  8457. 18.20 s [really-safe-money] + then M.delete currency m
  8458. 18.20 s [really-safe-money] + else M.insert currency r m
  8459. 18.20 s [really-safe-money]
  8460. 18.20 s [really-safe-money] -- | Add an 'Account' to a 'MultiAccount'
  8461. 18.20 s [really-safe-money] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
  8462. 18.20 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:78:6-28
  8463. 18.20 s [really-safe-money] @@ -75,7 +75,7 @@
  8464. 18.20 s [really-safe-money]
  8465. 18.20 s [really-safe-money] fromAccount :: currency -> Account -> MultiAccount currency
  8466. 18.20 s [really-safe-money] fromAccount currency amount =
  8467. 18.20 s [really-safe-money] - if amount == Account.zero
  8468. 18.20 s [really-safe-money] + if True
  8469. 18.20 s [really-safe-money] then zero
  8470. 18.20 s [really-safe-money] else MultiAccount $ M.singleton currency amount
  8471. 18.20 s [really-safe-money]
  8472. 18.20 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:78:6-28
  8473. 18.20 s [really-safe-money] @@ -75,7 +75,7 @@
  8474. 18.20 s [really-safe-money]
  8475. 18.20 s [really-safe-money] fromAccount :: currency -> Account -> MultiAccount currency
  8476. 18.20 s [really-safe-money] fromAccount currency amount =
  8477. 18.20 s [really-safe-money] - if amount == Account.zero
  8478. 18.20 s [really-safe-money] + if False
  8479. 18.20 s [really-safe-money] then zero
  8480. 18.20 s [really-safe-money] else MultiAccount $ M.singleton currency amount
  8481. 18.20 s [really-safe-money]
  8482. 18.20 s [really-safe-money] added mutation Negate at src/Money/MultiAccount.hs:78:6-28
  8483. 18.20 s [really-safe-money] @@ -75,7 +75,7 @@
  8484. 18.20 s [really-safe-money]
  8485. 18.20 s [really-safe-money] fromAccount :: currency -> Account -> MultiAccount currency
  8486. 18.20 s [really-safe-money] fromAccount currency amount =
  8487. 18.20 s [really-safe-money] - if amount == Account.zero
  8488. 18.20 s [really-safe-money] + if not (amount == Account.zero)
  8489. 18.20 s [really-safe-money] then zero
  8490. 18.20 s [really-safe-money] else MultiAccount $ M.singleton currency amount
  8491. 18.20 s [really-safe-money]
  8492. 18.20 s [really-safe-money] added mutation CondFlip at src/Money/MultiAccount.hs:78:3-52
  8493. 18.20 s [really-safe-money] @@ -75,9 +75,9 @@
  8494. 18.20 s [really-safe-money]
  8495. 18.20 s [really-safe-money] fromAccount :: currency -> Account -> MultiAccount currency
  8496. 18.20 s [really-safe-money] fromAccount currency amount =
  8497. 18.20 s [really-safe-money] - if amount == Account.zero
  8498. 18.20 s [really-safe-money] - then zero
  8499. 18.20 s [really-safe-money] - else MultiAccount $ M.singleton currency amount
  8500. 18.20 s [really-safe-money] + if amount == Account.zero
  8501. 18.20 s [really-safe-money] + then zero
  8502. 18.20 s [really-safe-money] + else MultiAccount $ M.singleton currency amount
  8503. 18.20 s [really-safe-money]
  8504. 18.20 s [really-safe-money] -- | No money of any currency
  8505. 18.20 s [really-safe-money] zero :: MultiAccount currency
  8506. 18.20 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:69:13-30
  8507. 18.20 s [really-safe-money] @@ -66,7 +66,7 @@
  8508. 18.20 s [really-safe-money] [ genericValidate ma,
  8509. 18.20 s [really-safe-money] decorateMap m $ \_ a ->
  8510. 18.20 s [really-safe-money] declare "The account is not zero" $
  8511. 18.20 s [really-safe-money] - a /= Account.zero
  8512. 18.20 s [really-safe-money] + True
  8513. 18.20 s [really-safe-money] ]
  8514. 18.20 s [really-safe-money]
  8515. 18.20 s [really-safe-money] -- TODO no empty currencies
  8516. 18.20 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:69:13-30
  8517. 18.20 s [really-safe-money] @@ -66,7 +66,7 @@
  8518. 18.20 s [really-safe-money] [ genericValidate ma,
  8519. 18.20 s [really-safe-money] decorateMap m $ \_ a ->
  8520. 18.20 s [really-safe-money] declare "The account is not zero" $
  8521. 18.20 s [really-safe-money] - a /= Account.zero
  8522. 18.20 s [really-safe-money] + False
  8523. 18.20 s [really-safe-money] ]
  8524. 18.20 s [really-safe-money]
  8525. 18.20 s [really-safe-money] -- TODO no empty currencies
  8526. 18.20 s [really-safe-money] added mutation Negate at src/Money/MultiAccount.hs:69:13-30
  8527. 18.20 s [really-safe-money] @@ -66,7 +66,7 @@
  8528. 18.20 s [really-safe-money] [ genericValidate ma,
  8529. 18.20 s [really-safe-money] decorateMap m $ \_ a ->
  8530. 18.20 s [really-safe-money] declare "The account is not zero" $
  8531. 18.20 s [really-safe-money] - a /= Account.zero
  8532. 18.20 s [really-safe-money] + not (a /= Account.zero)
  8533. 18.20 s [really-safe-money] ]
  8534. 18.20 s [really-safe-money]
  8535. 18.20 s [really-safe-money] -- TODO no empty currencies
  8536. 18.20 s [really-safe-money] added mutation ListLit at src/Money/MultiAccount.hs:66:7-8
  8537. 18.20 s [really-safe-money] @@ -63,11 +63,7 @@
  8538. 18.20 s [really-safe-money] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
  8539. 18.20 s [really-safe-money] validate ma@(MultiAccount m) =
  8540. 18.20 s [really-safe-money] mconcat
  8541. 18.20 s [really-safe-money] - [ genericValidate ma,
  8542. 18.20 s [really-safe-money] - decorateMap m $ \_ a ->
  8543. 18.20 s [really-safe-money] - declare "The account is not zero" $
  8544. 18.20 s [really-safe-money] - a /= Account.zero
  8545. 18.20 s [really-safe-money] - ]
  8546. 18.20 s [really-safe-money] + []
  8547. 18.20 s [really-safe-money]
  8548. 18.20 s [really-safe-money] -- TODO no empty currencies
  8549. 18.20 s [really-safe-money]
  8550. 18.20 s [really-safe-money] added mutation ListLit at src/Money/MultiAccount.hs:66:7-8
  8551. 18.20 s [really-safe-money] @@ -63,11 +63,11 @@
  8552. 18.20 s [really-safe-money] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
  8553. 18.20 s [really-safe-money] validate ma@(MultiAccount m) =
  8554. 18.20 s [really-safe-money] mconcat
  8555. 18.20 s [really-safe-money] - [ genericValidate ma,
  8556. 18.20 s [really-safe-money] - decorateMap m $ \_ a ->
  8557. 18.20 s [really-safe-money] - declare "The account is not zero" $
  8558. 18.20 s [really-safe-money] - a /= Account.zero
  8559. 18.20 s [really-safe-money] - ]
  8560. 18.20 s [really-safe-money] + [ genericValidate ma,
  8561. 18.20 s [really-safe-money] + decorateMap m $ \_ a ->
  8562. 18.20 s [really-safe-money] + declare "The account is not zero" $
  8563. 18.20 s [really-safe-money] + a /= Account.zero
  8564. 18.20 s [really-safe-money] + ]
  8565. 18.20 s [really-safe-money]
  8566. 18.20 s [really-safe-money] -- TODO no empty currencies
  8567. 18.20 s [really-safe-money]
  8568. 18.20 s [really-safe-money] added 27 mutations
  8569. 18.66 s [really-safe-money] [11 of 12] Compiling Money.AccountOf ( src/Money/AccountOf.hs, dist/build/Money/AccountOf.p_o )
  8570. 18.67 s [really-safe-money] mutation: instrumenting Money.AccountOf
  8571. 18.67 s [really-safe-money] added mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  8572. 18.67 s [really-safe-money] @@ -177,11 +177,11 @@
  8573. 18.67 s [really-safe-money]
  8574. 18.67 s [really-safe-money] -- | See 'Account.distribute'
  8575. 18.67 s [really-safe-money] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  8576. 18.67 s [really-safe-money] -distribute (AccountOf a) w = case Account.distribute a w of
  8577. 18.67 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  8578. 18.67 s [really-safe-money] - DistributedZero -> DistributedZero
  8579. 18.67 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  8580. 18.67 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  8581. 18.67 s [really-safe-money] +distribute (AccountOf a) w = case Account.distribute a w of
  8582. 18.67 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  8583. 18.67 s [really-safe-money] + DistributedZero -> DistributedZero
  8584. 18.67 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  8585. 18.67 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  8586. 18.67 s [really-safe-money]
  8587. 18.67 s [really-safe-money] -- | The result of 'distribute'
  8588. 18.67 s [really-safe-money] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  8589. 18.67 s [really-safe-money] added mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  8590. 18.67 s [really-safe-money] @@ -177,11 +177,11 @@
  8591. 18.67 s [really-safe-money]
  8592. 18.67 s [really-safe-money] -- | See 'Account.distribute'
  8593. 18.67 s [really-safe-money] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  8594. 18.67 s [really-safe-money] -distribute (AccountOf a) w = case Account.distribute a w of
  8595. 18.67 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  8596. 18.67 s [really-safe-money] - DistributedZero -> DistributedZero
  8597. 18.67 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  8598. 18.67 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  8599. 18.67 s [really-safe-money] +distribute (AccountOf a) w = case Account.distribute a w of
  8600. 18.67 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  8601. 18.67 s [really-safe-money] + DistributedZero -> DistributedZero
  8602. 18.67 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  8603. 18.67 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  8604. 18.67 s [really-safe-money]
  8605. 18.67 s [really-safe-money] -- | The result of 'distribute'
  8606. 18.67 s [really-safe-money] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  8607. 18.67 s [really-safe-money] added mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  8608. 18.67 s [really-safe-money] @@ -177,11 +177,11 @@
  8609. 18.67 s [really-safe-money]
  8610. 18.67 s [really-safe-money] -- | See 'Account.distribute'
  8611. 18.67 s [really-safe-money] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  8612. 18.67 s [really-safe-money] -distribute (AccountOf a) w = case Account.distribute a w of
  8613. 18.67 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  8614. 18.67 s [really-safe-money] - DistributedZero -> DistributedZero
  8615. 18.67 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  8616. 18.67 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  8617. 18.67 s [really-safe-money] +distribute (AccountOf a) w = case Account.distribute a w of
  8618. 18.67 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  8619. 18.67 s [really-safe-money] + DistributedZero -> DistributedZero
  8620. 18.67 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  8621. 18.67 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  8622. 18.67 s [really-safe-money]
  8623. 18.67 s [really-safe-money] -- | The result of 'distribute'
  8624. 18.67 s [really-safe-money] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  8625. 18.67 s [really-safe-money] added mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  8626. 18.67 s [really-safe-money] @@ -177,11 +177,11 @@
  8627. 18.67 s [really-safe-money]
  8628. 18.67 s [really-safe-money] -- | See 'Account.distribute'
  8629. 18.67 s [really-safe-money] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  8630. 18.67 s [really-safe-money] -distribute (AccountOf a) w = case Account.distribute a w of
  8631. 18.67 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  8632. 18.67 s [really-safe-money] - DistributedZero -> DistributedZero
  8633. 18.67 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  8634. 18.67 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  8635. 18.67 s [really-safe-money] +distribute (AccountOf a) w = case Account.distribute a w of
  8636. 18.67 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  8637. 18.67 s [really-safe-money] + DistributedZero -> DistributedZero
  8638. 18.67 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  8639. 18.67 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  8640. 18.67 s [really-safe-money]
  8641. 18.67 s [really-safe-money] -- | The result of 'distribute'
  8642. 18.67 s [really-safe-money] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  8643. 18.67 s [really-safe-money] added 4 mutations
  8644. 18.92 s [really-safe-money] [12 of 12] Compiling Paths_really_safe_money ( dist/build/autogen/Paths_really_safe_money.hs, dist/build/Paths_really_safe_money.p_o )
  8645. 19.28 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/Account.dyn_o'
  8646. 19.28 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/AccountOf.dyn_o'
  8647. 19.28 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/Amount.dyn_o'
  8648. 19.28 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/AmountOf.dyn_o'
  8649. 19.28 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/ConversionRate.dyn_o'
  8650. 19.28 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/ConversionRateOf.dyn_o'
  8651. 19.28 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/Currency.dyn_o'
  8652. 19.28 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/MultiAccount.dyn_o'
  8653. 19.28 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/MultiAmount.dyn_o'
  8654. 19.28 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/QuantisationFactor.dyn_o'
  8655. 19.28 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Numeric/DecimalLiteral.dyn_o'
  8656. 19.28 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Paths_really_safe_money.dyn_o'
  8657. 19.99 s [really-safe-money] mutation-nix: manifest output at /nix/store/2w29jk75vz9rl5bcl7zycjf2x642m4a6-really-safe-money-0.0.0.0-manifest:
  8658. 19.99 s [really-safe-money] total 296
  8659. 19.99 s [really-safe-money] drwxr-xr-x 2 nixbld nixbld 4096 May 13 19:58 .
  8660. 19.99 s [really-safe-money] drwxrwxr-t 238 nobody nixbld 28672 May 13 19:58 ..
  8661. 19.99 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 56505 May 13 19:58 Money.Account.json
  8662. 19.99 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 5229 May 13 19:58 Money.AccountOf.json
  8663. 19.99 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 54786 May 13 19:58 Money.Amount.json
  8664. 19.99 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 5033 May 13 19:58 Money.AmountOf.json
  8665. 19.99 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 8599 May 13 19:58 Money.ConversionRate.json
  8666. 19.99 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 2 May 13 19:58 Money.ConversionRateOf.json
  8667. 19.99 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 2 May 13 19:58 Money.Currency.json
  8668. 19.99 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 20330 May 13 19:58 Money.MultiAccount.json
  8669. 19.99 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 23239 May 13 19:58 Money.MultiAmount.json
  8670. 19.99 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 15615 May 13 19:58 Money.QuantisationFactor.json
  8671. 19.99 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 53101 May 13 19:58 Numeric.DecimalLiteral.json
  8672. 19.99 s [really-safe-money] Phase: haddockPhase
  8673. 20.00 s [really-safe-money] Phase: installPhase
  8674. 20.04 s [really-safe-money] Installing library in /nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8675. 20.30 s [really-safe-money] Phase: fixupPhase
  8676. 20.31 s [really-safe-money] shrinking RPATHs of ELF executables and libraries in /nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0
  8677. 20.32 s [really-safe-money] shrinking /nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/libHSreally-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9-ghc9.10.3.so
  8678. 20.34 s [really-safe-money] checking for references to /build/ in /nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0...
  8679. 20.36 s [really-safe-money] patching script interpreter paths in /nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0
  8680. 20.37 s [really-safe-money] stripping (with command strip and flags -S -p) in /nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0/lib
  8681. 20.51 s [really-safe-money] shrinking RPATHs of ELF executables and libraries in /nix/store/2w29jk75vz9rl5bcl7zycjf2x642m4a6-really-safe-money-0.0.0.0-manifest
  8682. 20.51 s [really-safe-money] checking for references to /build/ in /nix/store/2w29jk75vz9rl5bcl7zycjf2x642m4a6-really-safe-money-0.0.0.0-manifest...
  8683. 20.52 s [really-safe-money] patching script interpreter paths in /nix/store/2w29jk75vz9rl5bcl7zycjf2x642m4a6-really-safe-money-0.0.0.0-manifest
  8684. 20.62 s [post-build-hook] Uploading to cachix cache "sydtest": /nix/store/2w29jk75vz9rl5bcl7zycjf2x642m4a6-really-safe-money-0.0.0.0-manifest /nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0
  8685. 21.27 s [post-build-hook] Pushing 4 paths (193 are already present) using zstd to cache sydtest ⏳
  8686. 21.27 s [post-build-hook]
  8687. 21.64 s [post-build-hook] Pushing /nix/store/2w29jk75vz9rl5bcl7zycjf2x642m4a6-really-safe-money-0.0.0.0-manifest (239.08 KiB)
  8688. 21.82 s [post-build-hook] Pushing /nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0 (13.33 MiB)
  8689. 21.82 s [post-build-hook] Pushing /nix/store/ir474x88drsbl0cm7kxqw06i0dp8ngvh-sydtest-mutation-plugin-0.0.0.0-doc (1.17 MiB)
  8690. 21.82 s [post-build-hook] Pushing /nix/store/r14zpbn388za9xv66rzrcdllchmnfrpa-sydtest-mutation-plugin-0.0.0.0 (3.70 MiB)
  8691. 22.89 s [post-build-hook]
  8692. 22.89 s [post-build-hook] All done.
  8693. 22.91 s [post-build-hook] Uploading to the NixCI staging cache: /nix/store/2w29jk75vz9rl5bcl7zycjf2x642m4a6-really-safe-money-0.0.0.0-manifest /nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0
  8694. 22.95 s [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  8695. 22.97 s [post-build-hook] copying 2 paths...
  8696. 22.97 s [post-build-hook] copying path '/nix/store/2w29jk75vz9rl5bcl7zycjf2x642m4a6-really-safe-money-0.0.0.0-manifest' to 'https://cache.staging.nix-ci.com'...
  8697. 22.97 s [post-build-hook] copying path '/nix/store/wx40xl434mb5gla7wxs7fqcsvwdk9jiz-really-safe-money-0.0.0.0' to 'https://cache.staging.nix-ci.com'...
  8698. 25.85 s [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  8699. 26.05 s [post-build-hook] copying 1 paths...
  8700. 26.05 s [post-build-hook] copying path '/nix/store/v2vs7jik4m2zh5d19kj93rbaacw5rl03-really-safe-money-0.0.0.0.drv' to 'https://cache.staging.nix-ci.com'...
  8701. 26.23 s Progress: 1 of 7 built
  8702. 26.27 s Building really-safe-money-autodocodec-source
  8703. 26.31 s Building really-safe-money-gen-source
  8704. 26.48 s [really-safe-money-autodocodec-source] Phase: setupCompilerEnvironmentPhase
  8705. 26.48 s [really-safe-money-autodocodec-source] Build with /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3.
  8706. 26.58 s [really-safe-money-gen-source] Phase: setupCompilerEnvironmentPhase
  8707. 26.58 s [really-safe-money-gen-source] Build with /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3.
  8708. 26.73 s [really-safe-money-autodocodec-source] Phase: unpackPhase
  8709. 26.90 s [really-safe-money-autodocodec-source] unpacking source archive /nix/store/8krpxqimxqvympfqdqxg1jzjg2jrcglb-really-safe-money-autodocodec
  8710. 26.90 s [really-safe-money-autodocodec-source] source root is really-safe-money-autodocodec
  8711. 26.90 s [really-safe-money-autodocodec-source] Phase: patchPhase
  8712. 26.90 s [really-safe-money-autodocodec-source] Phase: compileBuildDriverPhase
  8713. 26.90 s [really-safe-money-autodocodec-source] setupCompileFlags: -package-db=/build/tmp.GdGs4zIrDe/setup-package.conf.d -threaded
  8714. 26.90 s [really-safe-money-autodocodec-source] [1 of 2] Compiling Main ( /nix/store/4mdp8nhyfddh7bllbi7xszz7k9955n79-Setup.hs, /build/tmp.GdGs4zIrDe/Main.o )
  8715. 26.90 s [really-safe-money-autodocodec-source] [2 of 2] Linking Setup
  8716. 26.90 s [really-safe-money-gen-source] Phase: unpackPhase
  8717. 26.90 s [really-safe-money-gen-source] unpacking source archive /nix/store/igm3hbdpcwgfbdx9yjyf6d68w1ifih08-really-safe-money-gen
  8718. 26.90 s [really-safe-money-gen-source] source root is really-safe-money-gen
  8719. 26.91 s [really-safe-money-gen-source] Phase: patchPhase
  8720. 26.92 s [really-safe-money-gen-source] Phase: compileBuildDriverPhase
  8721. 26.92 s [really-safe-money-gen-source] setupCompileFlags: -package-db=/build/tmp.ShqLvSq3gG/setup-package.conf.d -threaded
  8722. 26.97 s [really-safe-money-gen-source] [1 of 2] Compiling Main ( /nix/store/4mdp8nhyfddh7bllbi7xszz7k9955n79-Setup.hs, /build/tmp.ShqLvSq3gG/Main.o )
  8723. 27.01 s [really-safe-money-gen-source] [2 of 2] Linking Setup
  8724. 28.00 s [really-safe-money-autodocodec-source] Phase: updateAutotoolsGnuConfigScriptsPhase
  8725. 28.01 s [really-safe-money-autodocodec-source] Phase: configurePhase
  8726. 28.01 s [really-safe-money-autodocodec-source] configureFlags: --verbose --prefix=/nix/store/jnhvh9y2py7xc809y55pa5h9s0g5rmyb-really-safe-money-autodocodec-source-0.0.0.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --docdir=/share/doc/really-safe-money-autodocodec-0.0.0.0 --with-gcc=gcc --package-db=/build/tmp.GdGs4zIrDe/package.conf.d --ghc-option=-j16 --ghc-option=+RTS --ghc-option=-A64M --ghc-option=-RTS --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --disable-tests --enable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --ghc-option=-haddock --ghc-options=-O2 --ghc-options=-Wall --ghc-options=-Wincomplete-uni-patterns --ghc-options=-Wincomplete-record-updates --ghc-options=-Wpartial-fields --ghc-options=-Widentities --ghc-options=-Wredundant-constraints --ghc-options=-Wcpp-undef --ghc-options=-Werror --extra-lib-dirs=/nix/store/ffyzkisqs4vc4mg28bwwlyqjf8i9ph6b-ncurses-6.5/lib --extra-lib-dirs=/nix/store/n28qgdj8c1q41kf7n4y1jxa6ckp85m3c-libffi-3.5.2/lib --extra-lib-dirs=/nix/store/1b6h99dw7bk4wbn77kbalih42zbc67m1-elfutils-0.194/lib --extra-lib-dirs=/nix/store/hi0ar880110k6jsmmili7dh1gq3cg2a9-gmp-with-cxx-6.3.0/lib --extra-lib-dirs=/nix/store/g09cflpnp4g80q56sj9dng1qzv4v4ybc-numactl-2.0.18/lib --extra-lib-dirs=/nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/lib
  8727. 28.02 s [really-safe-money-autodocodec-source] Using Parsec parser
  8728. 28.02 s [really-safe-money-autodocodec-source] Configuring really-safe-money-autodocodec-0.0.0.0...
  8729. 28.15 s [really-safe-money-gen-source] Phase: updateAutotoolsGnuConfigScriptsPhase
  8730. 28.16 s [really-safe-money-gen-source] Phase: configurePhase
  8731. 28.17 s [really-safe-money-gen-source] configureFlags: --verbose --prefix=/nix/store/ia8w50w9xynkdxz4912jk7k7skl0hrcd-really-safe-money-gen-source-0.0.0.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --docdir=/share/doc/really-safe-money-gen-0.0.0.0 --with-gcc=gcc --package-db=/build/tmp.ShqLvSq3gG/package.conf.d --ghc-option=-j16 --ghc-option=+RTS --ghc-option=-A64M --ghc-option=-RTS --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --disable-tests --enable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --ghc-option=-haddock --ghc-options=-O2 --ghc-options=-Wall --ghc-options=-Wincomplete-uni-patterns --ghc-options=-Wincomplete-record-updates --ghc-options=-Wpartial-fields --ghc-options=-Widentities --ghc-options=-Wredundant-constraints --ghc-options=-Wcpp-undef --ghc-options=-Werror --extra-lib-dirs=/nix/store/ffyzkisqs4vc4mg28bwwlyqjf8i9ph6b-ncurses-6.5/lib --extra-lib-dirs=/nix/store/n28qgdj8c1q41kf7n4y1jxa6ckp85m3c-libffi-3.5.2/lib --extra-lib-dirs=/nix/store/1b6h99dw7bk4wbn77kbalih42zbc67m1-elfutils-0.194/lib --extra-lib-dirs=/nix/store/hi0ar880110k6jsmmili7dh1gq3cg2a9-gmp-with-cxx-6.3.0/lib --extra-lib-dirs=/nix/store/g09cflpnp4g80q56sj9dng1qzv4v4ybc-numactl-2.0.18/lib --extra-lib-dirs=/nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/lib
  8732. 28.17 s [really-safe-money-gen-source] Using Parsec parser
  8733. 28.17 s [really-safe-money-gen-source] Configuring really-safe-money-gen-0.0.0.0...
  8734. 28.57 s [really-safe-money-autodocodec-source] Dependency autodocodec: using autodocodec-0.5.0.0
  8735. 28.57 s [really-safe-money-autodocodec-source] Dependency base >=4.7 && <5: using base-4.20.2.0
  8736. 28.57 s [really-safe-money-autodocodec-source] Dependency really-safe-money: using really-safe-money-0.0.0.0
  8737. 28.57 s [really-safe-money-autodocodec-source] Source component graph: component lib
  8738. 28.57 s [really-safe-money-autodocodec-source] Configured component graph:
  8739. 28.57 s [really-safe-money-autodocodec-source] component really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk
  8740. 28.57 s [really-safe-money-autodocodec-source] include autodocodec-0.5.0.0-1mMvp4WI6JDKv9IH8Klk8Y
  8741. 28.57 s [really-safe-money-autodocodec-source] include base-4.20.2.0-64da
  8742. 28.57 s [really-safe-money-autodocodec-source] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8743. 28.57 s [really-safe-money-autodocodec-source] Linked component graph:
  8744. 28.57 s [really-safe-money-autodocodec-source] unit really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk
  8745. 28.57 s [really-safe-money-autodocodec-source] include autodocodec-0.5.0.0-1mMvp4WI6JDKv9IH8Klk8Y
  8746. 28.57 s [really-safe-money-autodocodec-source] include base-4.20.2.0-64da
  8747. 28.57 s [really-safe-money-autodocodec-source] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8748. 28.57 s [really-safe-money-autodocodec-source] Money.Account.Codec=really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk:Money.Account.Codec,Money.AccountOf.Codec=really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk:Money.AccountOf.Codec,Money.Amount.Codec=really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk:Money.Amount.Codec,Money.AmountOf.Codec=really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk:Money.AmountOf.Codec,Money.QuantisationFactor.Codec=really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk:Money.QuantisationFactor.Codec,Numeric.DecimalLiteral.Codec=really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk:Numeric.DecimalLiteral.Codec
  8749. 28.58 s [really-safe-money-autodocodec-source] Ready component graph:
  8750. 28.58 s [really-safe-money-autodocodec-source] definite really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk
  8751. 28.58 s [really-safe-money-autodocodec-source] depends autodocodec-0.5.0.0-1mMvp4WI6JDKv9IH8Klk8Y
  8752. 28.58 s [really-safe-money-autodocodec-source] depends base-4.20.2.0-64da
  8753. 28.58 s [really-safe-money-autodocodec-source] depends really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8754. 28.58 s [really-safe-money-autodocodec-source] Using Cabal-3.12.1.0 compiled by ghc-9.10
  8755. 28.58 s [really-safe-money-autodocodec-source] Using compiler: ghc-9.10.3
  8756. 28.58 s [really-safe-money-autodocodec-source] Using install prefix:
  8757. 28.58 s [really-safe-money-autodocodec-source] /nix/store/jnhvh9y2py7xc809y55pa5h9s0g5rmyb-really-safe-money-autodocodec-source-0.0.0.0
  8758. 28.58 s [really-safe-money-autodocodec-source] Executables installed in:
  8759. 28.58 s [really-safe-money-autodocodec-source] /nix/store/jnhvh9y2py7xc809y55pa5h9s0g5rmyb-really-safe-money-autodocodec-source-0.0.0.0/bin
  8760. 28.58 s [really-safe-money-autodocodec-source] Libraries installed in:
  8761. 28.58 s [really-safe-money-autodocodec-source] /nix/store/jnhvh9y2py7xc809y55pa5h9s0g5rmyb-really-safe-money-autodocodec-source-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk
  8762. 28.58 s [really-safe-money-autodocodec-source] Dynamic Libraries installed in:
  8763. 28.58 s [really-safe-money-autodocodec-source] /nix/store/jnhvh9y2py7xc809y55pa5h9s0g5rmyb-really-safe-money-autodocodec-source-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6
  8764. 28.58 s [really-safe-money-autodocodec-source] Private executables installed in:
  8765. 28.58 s [really-safe-money-autodocodec-source] /nix/store/jnhvh9y2py7xc809y55pa5h9s0g5rmyb-really-safe-money-autodocodec-source-0.0.0.0/libexec/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-autodocodec-0.0.0.0
  8766. 28.58 s [really-safe-money-autodocodec-source] Data files installed in:
  8767. 28.58 s [really-safe-money-autodocodec-source] /nix/store/jnhvh9y2py7xc809y55pa5h9s0g5rmyb-really-safe-money-autodocodec-source-0.0.0.0/share/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-autodocodec-0.0.0.0
  8768. 28.58 s [really-safe-money-autodocodec-source] Documentation installed in: /share/doc/really-safe-money-autodocodec-0.0.0.0
  8769. 28.58 s [really-safe-money-autodocodec-source] Configuration files installed in:
  8770. 28.58 s [really-safe-money-autodocodec-source] /nix/store/jnhvh9y2py7xc809y55pa5h9s0g5rmyb-really-safe-money-autodocodec-source-0.0.0.0/etc
  8771. 28.58 s [really-safe-money-autodocodec-source] No alex found
  8772. 28.58 s [really-safe-money-autodocodec-source] Using ar found on system at:
  8773. 28.58 s [really-safe-money-autodocodec-source] /nix/store/iz5lckcsg66r223si2gck7csk2hihj0m-binutils-wrapper-2.44/bin/ar
  8774. 28.58 s [really-safe-money-autodocodec-source] No c2hs found
  8775. 28.58 s [really-safe-money-autodocodec-source] No cpphs found
  8776. 28.58 s [really-safe-money-autodocodec-source] No doctest found
  8777. 28.58 s [really-safe-money-autodocodec-source] Using gcc version 14.3.0 given by user at:
  8778. 28.58 s [really-safe-money-autodocodec-source] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/gcc
  8779. 28.58 s [really-safe-money-autodocodec-source] Using ghc version 9.10.3 found on system at:
  8780. 28.58 s [really-safe-money-autodocodec-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc
  8781. 28.58 s [really-safe-money-autodocodec-source] Using ghc-pkg version 9.10.3 found on system at:
  8782. 28.58 s [really-safe-money-autodocodec-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc-pkg-9.10.3
  8783. 28.58 s [really-safe-money-autodocodec-source] No ghcjs found
  8784. 28.58 s [really-safe-money-autodocodec-source] No ghcjs-pkg found
  8785. 28.58 s [really-safe-money-autodocodec-source] No greencard found
  8786. 28.58 s [really-safe-money-autodocodec-source] Using haddock version 2.31.1 found on system at:
  8787. 28.58 s [really-safe-money-autodocodec-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/haddock-ghc-9.10.3
  8788. 28.58 s [really-safe-money-autodocodec-source] No happy found
  8789. 28.58 s [really-safe-money-autodocodec-source] Using haskell-suite found on system at: haskell-suite-dummy-location
  8790. 28.58 s [really-safe-money-autodocodec-source] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location
  8791. 28.58 s [really-safe-money-autodocodec-source] No hmake found
  8792. 28.58 s [really-safe-money-autodocodec-source] Using hpc version 0.69 found on system at:
  8793. 28.58 s [really-safe-money-autodocodec-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hpc-ghc-9.10.3
  8794. 28.58 s [really-safe-money-autodocodec-source] Using hsc2hs version 0.68.10 found on system at:
  8795. 28.58 s [really-safe-money-autodocodec-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hsc2hs-ghc-9.10.3
  8796. 28.58 s [really-safe-money-autodocodec-source] Using hscolour version 1.25 found on system at:
  8797. 28.58 s [really-safe-money-autodocodec-source] /nix/store/f755skyzf4jvfx3crwq9mmh3x4lsaz8i-hscolour-1.25/bin/HsColour
  8798. 28.58 s [really-safe-money-autodocodec-source] No jhc found
  8799. 28.58 s [really-safe-money-autodocodec-source] Using ld found on system at:
  8800. 28.58 s [really-safe-money-autodocodec-source] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/ld
  8801. 28.58 s [really-safe-money-autodocodec-source] No pkg-config found
  8802. 28.58 s [really-safe-money-autodocodec-source] Using runghc version 9.10.3 found on system at:
  8803. 28.58 s [really-safe-money-autodocodec-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/runghc-9.10.3
  8804. 28.58 s [really-safe-money-autodocodec-source] Using strip version 2.44 found on system at:
  8805. 28.58 s [really-safe-money-autodocodec-source] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/strip
  8806. 28.58 s [really-safe-money-autodocodec-source] Using tar found on system at:
  8807. 28.58 s [really-safe-money-autodocodec-source] /nix/store/xl6pd2spjajwcpq09fnmnjv5psqmlmma-gnutar-1.35/bin/tar
  8808. 28.58 s [really-safe-money-autodocodec-source] No uhc found
  8809. 28.78 s [really-safe-money-gen-source] Dependency QuickCheck: using QuickCheck-2.15.0.1
  8810. 28.78 s [really-safe-money-gen-source] Dependency base >=4.7 && <5: using base-4.20.2.0
  8811. 28.78 s [really-safe-money-gen-source] Dependency genvalidity: using genvalidity-1.1.1.0
  8812. 28.78 s [really-safe-money-gen-source] Dependency genvalidity-containers: using genvalidity-containers-1.0.0.2
  8813. 28.78 s [really-safe-money-gen-source] Dependency really-safe-money: using really-safe-money-0.0.0.0
  8814. 28.78 s [really-safe-money-gen-source] Dependency QuickCheck: using QuickCheck-2.15.0.1
  8815. 28.78 s [really-safe-money-gen-source] Dependency base >=4.7 && <5: using base-4.20.2.0
  8816. 28.78 s [really-safe-money-gen-source] Dependency criterion: using criterion-1.6.4.0
  8817. 28.78 s [really-safe-money-gen-source] Dependency deepseq: using deepseq-1.5.0.0
  8818. 28.78 s [really-safe-money-gen-source] Dependency genvalidity: using genvalidity-1.1.1.0
  8819. 28.78 s [really-safe-money-gen-source] Dependency genvalidity-criterion: using genvalidity-criterion-1.1.0.0
  8820. 28.78 s [really-safe-money-gen-source] Dependency genvalidity-vector: using genvalidity-vector-1.0.0.0
  8821. 28.78 s [really-safe-money-gen-source] Dependency really-safe-money: using really-safe-money-0.0.0.0
  8822. 28.78 s [really-safe-money-gen-source] Dependency really-safe-money-gen: using really-safe-money-gen-0.0.0.0
  8823. 28.78 s [really-safe-money-gen-source] Dependency vector: using vector-0.13.2.0
  8824. 28.78 s [really-safe-money-gen-source] Source component graph:
  8825. 28.78 s [really-safe-money-gen-source] component lib
  8826. 28.78 s [really-safe-money-gen-source] component bench:really-safe-money-bench dependency lib
  8827. 28.78 s [really-safe-money-gen-source] Configured component graph:
  8828. 28.78 s [really-safe-money-gen-source] component really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53
  8829. 28.78 s [really-safe-money-gen-source] include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU
  8830. 28.78 s [really-safe-money-gen-source] include base-4.20.2.0-64da
  8831. 28.78 s [really-safe-money-gen-source] include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L
  8832. 28.78 s [really-safe-money-gen-source] include genvalidity-containers-1.0.0.2-DXaOCEBh8iJ1c8u2LwVlK1
  8833. 28.78 s [really-safe-money-gen-source] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8834. 28.78 s [really-safe-money-gen-source] component really-safe-money-gen-0.0.0.0-LP0fSqTOwvk9RMpsKSu0nN-really-safe-money-bench
  8835. 28.78 s [really-safe-money-gen-source] include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU
  8836. 28.78 s [really-safe-money-gen-source] include base-4.20.2.0-64da
  8837. 28.78 s [really-safe-money-gen-source] include criterion-1.6.4.0-ExZW8LB8ON09pSIfu9sGRN
  8838. 28.78 s [really-safe-money-gen-source] include deepseq-1.5.0.0-9a2c
  8839. 28.78 s [really-safe-money-gen-source] include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L
  8840. 28.78 s [really-safe-money-gen-source] include genvalidity-criterion-1.1.0.0-9pHw4wnFNz9EtFzK0UU3g3
  8841. 28.78 s [really-safe-money-gen-source] include genvalidity-vector-1.0.0.0-6KKiduowklk7hSxSW05Gxi
  8842. 28.78 s [really-safe-money-gen-source] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8843. 28.78 s [really-safe-money-gen-source] include really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53
  8844. 28.78 s [really-safe-money-gen-source] include vector-0.13.2.0-GDUCoiHhVuq2SKPTzzTr3a
  8845. 28.78 s [really-safe-money-gen-source] Linked component graph:
  8846. 28.78 s [really-safe-money-gen-source] unit really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53
  8847. 28.78 s [really-safe-money-gen-source] include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU
  8848. 28.78 s [really-safe-money-gen-source] include base-4.20.2.0-64da
  8849. 28.78 s [really-safe-money-gen-source] include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L
  8850. 28.78 s [really-safe-money-gen-source] include genvalidity-containers-1.0.0.2-DXaOCEBh8iJ1c8u2LwVlK1
  8851. 28.78 s [really-safe-money-gen-source] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8852. 28.78 s [really-safe-money-gen-source] Money.Account.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.Account.Gen,Money.AccountOf.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.AccountOf.Gen,Money.Amount.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.Amount.Gen,Money.AmountOf.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.AmountOf.Gen,Money.ConversionRate.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.ConversionRate.Gen,Money.ConversionRateOf.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.ConversionRateOf.Gen,Money.Currency.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.Currency.Gen,Money.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.Gen,Money.MultiAccount.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.MultiAccount.Gen,Money.MultiAmount.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.MultiAmount.Gen,Money.QuantisationFactor.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.QuantisationFactor.Gen,Numeric.DecimalLiteral.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Numeric.DecimalLiteral.Gen
  8853. 28.78 s [really-safe-money-gen-source] unit really-safe-money-gen-0.0.0.0-LP0fSqTOwvk9RMpsKSu0nN-really-safe-money-bench
  8854. 28.78 s [really-safe-money-gen-source] include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU
  8855. 28.78 s [really-safe-money-gen-source] include base-4.20.2.0-64da
  8856. 28.78 s [really-safe-money-gen-source] include criterion-1.6.4.0-ExZW8LB8ON09pSIfu9sGRN
  8857. 28.78 s [really-safe-money-gen-source] include deepseq-1.5.0.0-9a2c
  8858. 28.78 s [really-safe-money-gen-source] include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L
  8859. 28.78 s [really-safe-money-gen-source] include genvalidity-criterion-1.1.0.0-9pHw4wnFNz9EtFzK0UU3g3
  8860. 28.78 s [really-safe-money-gen-source] include genvalidity-vector-1.0.0.0-6KKiduowklk7hSxSW05Gxi
  8861. 28.78 s [really-safe-money-gen-source] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8862. 28.78 s [really-safe-money-gen-source] include really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53
  8863. 28.79 s [really-safe-money-gen-source] include vector-0.13.2.0-GDUCoiHhVuq2SKPTzzTr3a
  8864. 28.79 s [really-safe-money-gen-source] Ready component graph:
  8865. 28.79 s [really-safe-money-gen-source] definite really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53
  8866. 28.79 s [really-safe-money-gen-source] depends QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU
  8867. 28.79 s [really-safe-money-gen-source] depends base-4.20.2.0-64da
  8868. 28.79 s [really-safe-money-gen-source] depends genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L
  8869. 28.79 s [really-safe-money-gen-source] depends genvalidity-containers-1.0.0.2-DXaOCEBh8iJ1c8u2LwVlK1
  8870. 28.79 s [really-safe-money-gen-source] depends really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8871. 28.79 s [really-safe-money-gen-source] definite really-safe-money-gen-0.0.0.0-LP0fSqTOwvk9RMpsKSu0nN-really-safe-money-bench
  8872. 28.79 s [really-safe-money-gen-source] depends QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU
  8873. 28.79 s [really-safe-money-gen-source] depends base-4.20.2.0-64da
  8874. 28.79 s [really-safe-money-gen-source] depends criterion-1.6.4.0-ExZW8LB8ON09pSIfu9sGRN
  8875. 28.79 s [really-safe-money-gen-source] depends deepseq-1.5.0.0-9a2c
  8876. 28.79 s [really-safe-money-gen-source] depends genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L
  8877. 28.79 s [really-safe-money-gen-source] depends genvalidity-criterion-1.1.0.0-9pHw4wnFNz9EtFzK0UU3g3
  8878. 28.79 s [really-safe-money-gen-source] depends genvalidity-vector-1.0.0.0-6KKiduowklk7hSxSW05Gxi
  8879. 28.79 s [really-safe-money-gen-source] depends really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8880. 28.79 s [really-safe-money-gen-source] depends really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53
  8881. 28.79 s [really-safe-money-gen-source] depends vector-0.13.2.0-GDUCoiHhVuq2SKPTzzTr3a
  8882. 28.79 s [really-safe-money-gen-source] Using Cabal-3.12.1.0 compiled by ghc-9.10
  8883. 28.79 s [really-safe-money-gen-source] Using compiler: ghc-9.10.3
  8884. 28.79 s [really-safe-money-gen-source] Using install prefix:
  8885. 28.79 s [really-safe-money-gen-source] /nix/store/ia8w50w9xynkdxz4912jk7k7skl0hrcd-really-safe-money-gen-source-0.0.0.0
  8886. 28.79 s [really-safe-money-gen-source] Executables installed in:
  8887. 28.79 s [really-safe-money-gen-source] /nix/store/ia8w50w9xynkdxz4912jk7k7skl0hrcd-really-safe-money-gen-source-0.0.0.0/bin
  8888. 28.79 s [really-safe-money-gen-source] Libraries installed in:
  8889. 28.79 s [really-safe-money-gen-source] /nix/store/ia8w50w9xynkdxz4912jk7k7skl0hrcd-really-safe-money-gen-source-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53
  8890. 28.79 s [really-safe-money-gen-source] Dynamic Libraries installed in:
  8891. 28.79 s [really-safe-money-gen-source] /nix/store/ia8w50w9xynkdxz4912jk7k7skl0hrcd-really-safe-money-gen-source-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6
  8892. 28.79 s [really-safe-money-gen-source] Private executables installed in:
  8893. 28.79 s [really-safe-money-gen-source] /nix/store/ia8w50w9xynkdxz4912jk7k7skl0hrcd-really-safe-money-gen-source-0.0.0.0/libexec/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-gen-0.0.0.0
  8894. 28.79 s [really-safe-money-gen-source] Data files installed in:
  8895. 28.79 s [really-safe-money-gen-source] /nix/store/ia8w50w9xynkdxz4912jk7k7skl0hrcd-really-safe-money-gen-source-0.0.0.0/share/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-gen-0.0.0.0
  8896. 28.79 s [really-safe-money-gen-source] Documentation installed in: /share/doc/really-safe-money-gen-0.0.0.0
  8897. 28.79 s [really-safe-money-gen-source] Configuration files installed in:
  8898. 28.79 s [really-safe-money-gen-source] /nix/store/ia8w50w9xynkdxz4912jk7k7skl0hrcd-really-safe-money-gen-source-0.0.0.0/etc
  8899. 28.79 s [really-safe-money-gen-source] No alex found
  8900. 28.79 s [really-safe-money-gen-source] Using ar found on system at:
  8901. 28.79 s [really-safe-money-gen-source] /nix/store/iz5lckcsg66r223si2gck7csk2hihj0m-binutils-wrapper-2.44/bin/ar
  8902. 28.79 s [really-safe-money-gen-source] No c2hs found
  8903. 28.79 s [really-safe-money-gen-source] No cpphs found
  8904. 28.79 s [really-safe-money-gen-source] No doctest found
  8905. 28.79 s [really-safe-money-gen-source] Using gcc version 14.3.0 given by user at:
  8906. 28.79 s [really-safe-money-gen-source] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/gcc
  8907. 28.79 s [really-safe-money-gen-source] Using ghc version 9.10.3 found on system at:
  8908. 28.79 s [really-safe-money-gen-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc
  8909. 28.79 s [really-safe-money-gen-source] Using ghc-pkg version 9.10.3 found on system at:
  8910. 28.79 s [really-safe-money-gen-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc-pkg-9.10.3
  8911. 28.79 s [really-safe-money-gen-source] No ghcjs found
  8912. 28.79 s [really-safe-money-gen-source] No ghcjs-pkg found
  8913. 28.79 s [really-safe-money-gen-source] No greencard found
  8914. 28.79 s [really-safe-money-gen-source] Using haddock version 2.31.1 found on system at:
  8915. 28.79 s [really-safe-money-gen-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/haddock-ghc-9.10.3
  8916. 28.79 s [really-safe-money-gen-source] No happy found
  8917. 28.79 s [really-safe-money-gen-source] Using haskell-suite found on system at: haskell-suite-dummy-location
  8918. 28.79 s [really-safe-money-gen-source] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location
  8919. 28.79 s [really-safe-money-gen-source] No hmake found
  8920. 28.79 s [really-safe-money-gen-source] Using hpc version 0.69 found on system at:
  8921. 28.79 s [really-safe-money-gen-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hpc-ghc-9.10.3
  8922. 28.79 s [really-safe-money-gen-source] Using hsc2hs version 0.68.10 found on system at:
  8923. 28.79 s [really-safe-money-gen-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hsc2hs-ghc-9.10.3
  8924. 28.79 s [really-safe-money-gen-source] Using hscolour version 1.25 found on system at:
  8925. 28.79 s [really-safe-money-gen-source] /nix/store/f755skyzf4jvfx3crwq9mmh3x4lsaz8i-hscolour-1.25/bin/HsColour
  8926. 28.79 s [really-safe-money-gen-source] No jhc found
  8927. 28.79 s [really-safe-money-gen-source] Using ld found on system at:
  8928. 28.79 s [really-safe-money-gen-source] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/ld
  8929. 28.79 s [really-safe-money-gen-source] No pkg-config found
  8930. 28.79 s [really-safe-money-gen-source] Using runghc version 9.10.3 found on system at:
  8931. 28.79 s [really-safe-money-gen-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/runghc-9.10.3
  8932. 28.79 s [really-safe-money-gen-source] Using strip version 2.44 found on system at:
  8933. 28.79 s [really-safe-money-gen-source] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/strip
  8934. 28.79 s [really-safe-money-gen-source] Using tar found on system at:
  8935. 28.79 s [really-safe-money-gen-source] /nix/store/xl6pd2spjajwcpq09fnmnjv5psqmlmma-gnutar-1.35/bin/tar
  8936. 28.79 s [really-safe-money-gen-source] No uhc found
  8937. 28.82 s [really-safe-money-autodocodec-source] Phase: buildPhase
  8938. 28.83 s [really-safe-money-autodocodec-source] Distribution quality errors:
  8939. 28.83 s [really-safe-money-autodocodec-source] [no-syn-desc] No 'synopsis' or 'description' field.
  8940. 28.83 s [really-safe-money-autodocodec-source] Distribution quality warnings:
  8941. 28.83 s [really-safe-money-autodocodec-source] [no-category] No 'category' field.
  8942. 28.83 s [really-safe-money-autodocodec-source] [no-maintainer] No 'maintainer' field.
  8943. 28.83 s [really-safe-money-autodocodec-source] [all-rights-reserved] The 'license' is AllRightsReserved. Is that really what
  8944. 28.83 s [really-safe-money-autodocodec-source] you want?
  8945. 28.83 s [really-safe-money-autodocodec-source] [missing-upper-bounds] On library, these packages miss upper bounds:
  8946. 28.83 s [really-safe-money-autodocodec-source] - autodocodec
  8947. 28.83 s [really-safe-money-autodocodec-source] - really-safe-money
  8948. 28.83 s [really-safe-money-autodocodec-source] Please add them. There is more information at https://pvp.haskell.org/
  8949. 28.83 s [really-safe-money-autodocodec-source] Note: the public hackage server would reject this package.
  8950. 28.83 s [really-safe-money-autodocodec-source] Building source dist for really-safe-money-autodocodec-0.0.0.0...
  8951. 28.85 s [really-safe-money-autodocodec-source] Source tarball created: dist/really-safe-money-autodocodec-0.0.0.0.tar.gz
  8952. 28.85 s [really-safe-money-autodocodec-source] Phase: haddockPhase
  8953. 28.85 s [really-safe-money-autodocodec-source] Phase: installPhase
  8954. 28.86 s [really-safe-money-autodocodec-source] Phase: fixupPhase
  8955. 28.89 s [post-build-hook] Uploading to cachix cache "sydtest": /nix/store/jnhvh9y2py7xc809y55pa5h9s0g5rmyb-really-safe-money-autodocodec-source-0.0.0.0
  8956. 29.27 s [post-build-hook] Pushing 1 paths (0 are already present) using zstd to cache sydtest ⏳
  8957. 29.27 s [post-build-hook]
  8958. 29.72 s [post-build-hook] Pushing /nix/store/jnhvh9y2py7xc809y55pa5h9s0g5rmyb-really-safe-money-autodocodec-source-0.0.0.0 (5.45 KiB)
  8959. 30.79 s [post-build-hook]
  8960. 30.79 s [post-build-hook] All done.
  8961. 30.80 s [post-build-hook] Uploading to the NixCI staging cache: /nix/store/jnhvh9y2py7xc809y55pa5h9s0g5rmyb-really-safe-money-autodocodec-source-0.0.0.0
  8962. 30.84 s [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  8963. 30.84 s [post-build-hook] copying 1 paths...
  8964. 30.84 s [post-build-hook] copying path '/nix/store/jnhvh9y2py7xc809y55pa5h9s0g5rmyb-really-safe-money-autodocodec-source-0.0.0.0' to 'https://cache.staging.nix-ci.com'...
  8965. 31.08 s [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  8966. 31.29 s [post-build-hook] copying 1 paths...
  8967. 31.29 s [post-build-hook] copying path '/nix/store/ncr3qz7rqkbznf9s5y6213kjhl9lhnx1-really-safe-money-autodocodec-source-0.0.0.0.drv' to 'https://cache.staging.nix-ci.com'...
  8968. 31.46 s Progress: 2 of 6 built (1 building)
  8969. 31.49 s Building really-safe-money-autodocodec
  8970. 31.49 s [really-safe-money-gen-source] Phase: buildPhase
  8971. 31.49 s [really-safe-money-gen-source] Distribution quality errors:
  8972. 31.49 s [really-safe-money-gen-source] [no-syn-desc] No 'synopsis' or 'description' field.
  8973. 31.49 s [really-safe-money-gen-source] Distribution quality warnings:
  8974. 31.49 s [really-safe-money-gen-source] [no-category] No 'category' field.
  8975. 31.49 s [really-safe-money-gen-source] [no-maintainer] No 'maintainer' field.
  8976. 31.49 s [really-safe-money-gen-source] [all-rights-reserved] The 'license' is AllRightsReserved. Is that really what
  8977. 31.49 s [really-safe-money-gen-source] you want?
  8978. 31.49 s [really-safe-money-gen-source] [missing-upper-bounds] On library, these packages miss upper bounds:
  8979. 31.49 s [really-safe-money-gen-source] - QuickCheck
  8980. 31.49 s [really-safe-money-gen-source] - genvalidity
  8981. 31.49 s [really-safe-money-gen-source] - genvalidity-containers
  8982. 31.49 s [really-safe-money-gen-source] - really-safe-money
  8983. 31.49 s [really-safe-money-gen-source] Please add them. There is more information at https://pvp.haskell.org/
  8984. 31.49 s [really-safe-money-gen-source] Note: the public hackage server would reject this package.
  8985. 31.49 s [really-safe-money-gen-source] Building source dist for really-safe-money-gen-0.0.0.0...
  8986. 31.49 s [really-safe-money-gen-source] Source tarball created: dist/really-safe-money-gen-0.0.0.0.tar.gz
  8987. 31.49 s [really-safe-money-gen-source] Phase: haddockPhase
  8988. 31.49 s [really-safe-money-gen-source] Phase: installPhase
  8989. 31.49 s [really-safe-money-gen-source] Phase: fixupPhase
  8990. 31.52 s [post-build-hook] Uploading to cachix cache "sydtest": /nix/store/ia8w50w9xynkdxz4912jk7k7skl0hrcd-really-safe-money-gen-source-0.0.0.0
  8991. 31.90 s [post-build-hook] Pushing 1 paths (0 are already present) using zstd to cache sydtest ⏳
  8992. 31.90 s [post-build-hook]
  8993. 32.26 s [post-build-hook] Pushing /nix/store/ia8w50w9xynkdxz4912jk7k7skl0hrcd-really-safe-money-gen-source-0.0.0.0 (15.92 KiB)
  8994. 33.14 s [post-build-hook]
  8995. 33.14 s [post-build-hook] All done.
  8996. 33.16 s [post-build-hook] Uploading to the NixCI staging cache: /nix/store/ia8w50w9xynkdxz4912jk7k7skl0hrcd-really-safe-money-gen-source-0.0.0.0
  8997. 33.20 s [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  8998. 33.21 s [post-build-hook] copying 1 paths...
  8999. 33.21 s [post-build-hook] copying path '/nix/store/ia8w50w9xynkdxz4912jk7k7skl0hrcd-really-safe-money-gen-source-0.0.0.0' to 'https://cache.staging.nix-ci.com'...
  9000. 33.46 s [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  9001. 33.66 s [post-build-hook] copying 1 paths...
  9002. 33.66 s [post-build-hook] copying path '/nix/store/4ir9x4jf6krdwcracq2cyycxrbwwjb9i-really-safe-money-gen-source-0.0.0.0.drv' to 'https://cache.staging.nix-ci.com'...
  9003. 33.86 s Progress: 3 of 6 built (1 building)
  9004. 33.86 s [really-safe-money-autodocodec] Phase: setupCompilerEnvironmentPhase
  9005. 33.86 s [really-safe-money-autodocodec] Build with /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3.
  9006. 33.86 s [really-safe-money-autodocodec] Phase: unpackPhase
  9007. 33.86 s [really-safe-money-autodocodec] unpacking source archive /nix/store/jnhvh9y2py7xc809y55pa5h9s0g5rmyb-really-safe-money-autodocodec-source-0.0.0.0/really-safe-money-autodocodec-0.0.0.0.tar.gz
  9008. 33.86 s [really-safe-money-autodocodec] source root is really-safe-money-autodocodec-0.0.0.0
  9009. 33.86 s [really-safe-money-autodocodec] setting SOURCE_DATE_EPOCH to timestamp 1778702309 of file "really-safe-money-autodocodec-0.0.0.0/test/Spec.hs"
  9010. 33.86 s [really-safe-money-autodocodec] warning: file "really-safe-money-autodocodec-0.0.0.0/test/Spec.hs" may be generated; SOURCE_DATE_EPOCH may be non-deterministic
  9011. 33.86 s [really-safe-money-autodocodec] Phase: patchPhase
  9012. 33.86 s [really-safe-money-autodocodec] Phase: compileBuildDriverPhase
  9013. 33.86 s [really-safe-money-autodocodec] setupCompileFlags: -package-db=/build/tmp.BhOqAcxRHG/setup-package.conf.d -threaded
  9014. 33.86 s [really-safe-money-autodocodec] [1 of 2] Compiling Main ( Setup.hs, /build/tmp.BhOqAcxRHG/Main.o )
  9015. 33.86 s [really-safe-money-autodocodec] [2 of 2] Linking Setup
  9016. 33.86 s [really-safe-money-autodocodec] Phase: updateAutotoolsGnuConfigScriptsPhase
  9017. 33.86 s [really-safe-money-autodocodec] Phase: configurePhase
  9018. 33.86 s [really-safe-money-autodocodec] configureFlags: --verbose --prefix=/nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --with-gcc=gcc --package-db=/build/tmp.BhOqAcxRHG/package.conf.d --ghc-option=-j16 --ghc-option=+RTS --ghc-option=-A64M --ghc-option=-RTS --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --disable-static --disable-executable-dynamic --disable-tests --enable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --ghc-options=-O2 --ghc-options=-Wall --ghc-options=-Wincomplete-uni-patterns --ghc-options=-Wincomplete-record-updates --ghc-options=-Wpartial-fields --ghc-options=-Widentities --ghc-options=-Wredundant-constraints --ghc-options=-Wcpp-undef --ghc-options=-Werror --ghc-options=-fplugin-opt=Test.Syd.Mutation.Plugin:--debug --disable-optimization --ghc-option=-j1 --ghc-option=+RTS --ghc-option=-A32M --ghc-option=-M16g --ghc-option=-RTS --extra-lib-dirs=/nix/store/ffyzkisqs4vc4mg28bwwlyqjf8i9ph6b-ncurses-6.5/lib --extra-lib-dirs=/nix/store/n28qgdj8c1q41kf7n4y1jxa6ckp85m3c-libffi-3.5.2/lib --extra-lib-dirs=/nix/store/1b6h99dw7bk4wbn77kbalih42zbc67m1-elfutils-0.194/lib --extra-lib-dirs=/nix/store/hi0ar880110k6jsmmili7dh1gq3cg2a9-gmp-with-cxx-6.3.0/lib --extra-lib-dirs=/nix/store/g09cflpnp4g80q56sj9dng1qzv4v4ybc-numactl-2.0.18/lib --extra-lib-dirs=/nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/lib
  9019. 33.86 s [really-safe-money-autodocodec] Using Parsec parser
  9020. 33.86 s [really-safe-money-autodocodec] Configuring really-safe-money-autodocodec-0.0.0.0...
  9021. 33.86 s [really-safe-money-autodocodec] Dependency autodocodec: using autodocodec-0.5.0.0
  9022. 33.86 s [really-safe-money-autodocodec] Dependency base >=4.7 && <5: using base-4.20.2.0
  9023. 33.86 s [really-safe-money-autodocodec] Dependency really-safe-money: using really-safe-money-0.0.0.0
  9024. 33.86 s [really-safe-money-autodocodec] Source component graph: component lib
  9025. 33.86 s [really-safe-money-autodocodec] Configured component graph:
  9026. 33.86 s [really-safe-money-autodocodec] component really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk
  9027. 33.86 s [really-safe-money-autodocodec] include autodocodec-0.5.0.0-1mMvp4WI6JDKv9IH8Klk8Y
  9028. 33.86 s [really-safe-money-autodocodec] include base-4.20.2.0-64da
  9029. 33.86 s [really-safe-money-autodocodec] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  9030. 33.86 s [really-safe-money-autodocodec] Linked component graph:
  9031. 33.86 s [really-safe-money-autodocodec] unit really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk
  9032. 33.86 s [really-safe-money-autodocodec] include autodocodec-0.5.0.0-1mMvp4WI6JDKv9IH8Klk8Y
  9033. 33.86 s [really-safe-money-autodocodec] include base-4.20.2.0-64da
  9034. 33.86 s [really-safe-money-autodocodec] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  9035. 33.86 s [really-safe-money-autodocodec] Money.Account.Codec=really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk:Money.Account.Codec,Money.AccountOf.Codec=really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk:Money.AccountOf.Codec,Money.Amount.Codec=really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk:Money.Amount.Codec,Money.AmountOf.Codec=really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk:Money.AmountOf.Codec,Money.QuantisationFactor.Codec=really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk:Money.QuantisationFactor.Codec,Numeric.DecimalLiteral.Codec=really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk:Numeric.DecimalLiteral.Codec
  9036. 33.86 s [really-safe-money-autodocodec] Ready component graph:
  9037. 33.86 s [really-safe-money-autodocodec] definite really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk
  9038. 33.86 s [really-safe-money-autodocodec] depends autodocodec-0.5.0.0-1mMvp4WI6JDKv9IH8Klk8Y
  9039. 33.86 s [really-safe-money-autodocodec] depends base-4.20.2.0-64da
  9040. 33.86 s [really-safe-money-autodocodec] depends really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  9041. 33.86 s [really-safe-money-autodocodec] Using Cabal-3.12.1.0 compiled by ghc-9.10
  9042. 33.86 s [really-safe-money-autodocodec] Using compiler: ghc-9.10.3
  9043. 33.86 s [really-safe-money-autodocodec] Using install prefix:
  9044. 33.86 s [really-safe-money-autodocodec] /nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0
  9045. 33.86 s [really-safe-money-autodocodec] Executables installed in:
  9046. 33.86 s [really-safe-money-autodocodec] /nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0/bin
  9047. 33.86 s [really-safe-money-autodocodec] Libraries installed in:
  9048. 33.86 s [really-safe-money-autodocodec] /nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk
  9049. 33.86 s [really-safe-money-autodocodec] Dynamic Libraries installed in:
  9050. 33.86 s [really-safe-money-autodocodec] /nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6
  9051. 33.86 s [really-safe-money-autodocodec] Private executables installed in:
  9052. 33.86 s [really-safe-money-autodocodec] /nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0/libexec/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-autodocodec-0.0.0.0
  9053. 33.86 s [really-safe-money-autodocodec] Data files installed in:
  9054. 33.86 s [really-safe-money-autodocodec] /nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0/share/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-autodocodec-0.0.0.0
  9055. 33.86 s [really-safe-money-autodocodec] Documentation installed in:
  9056. 33.86 s [really-safe-money-autodocodec] /nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0/share/doc/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-autodocodec-0.0.0.0
  9057. 33.86 s [really-safe-money-autodocodec] Configuration files installed in:
  9058. 33.86 s [really-safe-money-autodocodec] /nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0/etc
  9059. 33.86 s [really-safe-money-autodocodec] No alex found
  9060. 33.86 s [really-safe-money-autodocodec] Using ar found on system at:
  9061. 33.86 s [really-safe-money-autodocodec] /nix/store/iz5lckcsg66r223si2gck7csk2hihj0m-binutils-wrapper-2.44/bin/ar
  9062. 33.86 s [really-safe-money-autodocodec] No c2hs found
  9063. 33.86 s [really-safe-money-autodocodec] No cpphs found
  9064. 33.86 s [really-safe-money-autodocodec] No doctest found
  9065. 33.86 s [really-safe-money-autodocodec] Using gcc version 14.3.0 given by user at:
  9066. 33.86 s [really-safe-money-autodocodec] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/gcc
  9067. 33.86 s [really-safe-money-autodocodec] Using ghc version 9.10.3 found on system at:
  9068. 33.86 s [really-safe-money-autodocodec] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc
  9069. 33.86 s [really-safe-money-autodocodec] Using ghc-pkg version 9.10.3 found on system at:
  9070. 33.86 s [really-safe-money-autodocodec] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc-pkg-9.10.3
  9071. 33.86 s [really-safe-money-autodocodec] No ghcjs found
  9072. 33.86 s [really-safe-money-autodocodec] No ghcjs-pkg found
  9073. 33.86 s [really-safe-money-autodocodec] No greencard found
  9074. 33.86 s [really-safe-money-autodocodec] Using haddock version 2.31.1 found on system at:
  9075. 33.86 s [really-safe-money-autodocodec] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/haddock-ghc-9.10.3
  9076. 33.86 s [really-safe-money-autodocodec] No happy found
  9077. 33.86 s [really-safe-money-autodocodec] Using haskell-suite found on system at: haskell-suite-dummy-location
  9078. 33.86 s [really-safe-money-autodocodec] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location
  9079. 33.86 s [really-safe-money-autodocodec] No hmake found
  9080. 33.86 s [really-safe-money-autodocodec] Using hpc version 0.69 found on system at:
  9081. 33.86 s [really-safe-money-autodocodec] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hpc-ghc-9.10.3
  9082. 33.86 s [really-safe-money-autodocodec] Using hsc2hs version 0.68.10 found on system at:
  9083. 33.86 s [really-safe-money-autodocodec] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hsc2hs-ghc-9.10.3
  9084. 33.86 s [really-safe-money-autodocodec] Using hscolour version 1.25 found on system at:
  9085. 33.86 s [really-safe-money-autodocodec] /nix/store/f755skyzf4jvfx3crwq9mmh3x4lsaz8i-hscolour-1.25/bin/HsColour
  9086. 33.86 s [really-safe-money-autodocodec] No jhc found
  9087. 33.86 s [really-safe-money-autodocodec] Using ld found on system at:
  9088. 33.86 s [really-safe-money-autodocodec] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/ld
  9089. 33.86 s [really-safe-money-autodocodec] No pkg-config found
  9090. 33.86 s [really-safe-money-autodocodec] Using runghc version 9.10.3 found on system at:
  9091. 33.86 s [really-safe-money-autodocodec] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/runghc-9.10.3
  9092. 33.86 s [really-safe-money-autodocodec] Using strip version 2.44 found on system at:
  9093. 33.86 s [really-safe-money-autodocodec] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/strip
  9094. 33.86 s [really-safe-money-autodocodec] Using tar found on system at:
  9095. 33.86 s [really-safe-money-autodocodec] /nix/store/xl6pd2spjajwcpq09fnmnjv5psqmlmma-gnutar-1.35/bin/tar
  9096. 33.86 s [really-safe-money-autodocodec] No uhc found
  9097. 33.98 s [really-safe-money-autodocodec] Phase: buildPhase
  9098. 33.99 s [really-safe-money-autodocodec] mutation-nix: setting MUTATION_MANIFEST_DIR=/nix/store/xvvwhghc770bcvz090cfmycpx9xp6imm-really-safe-money-autodocodec-0.0.0.0-manifest
  9099. 34.04 s [really-safe-money-autodocodec] Preprocessing library for really-safe-money-autodocodec-0.0.0.0...
  9100. 34.04 s [really-safe-money-autodocodec] Building library for really-safe-money-autodocodec-0.0.0.0...
  9101. 34.19 s [really-safe-money-autodocodec] [1 of 7] Compiling Money.Account.Codec ( src/Money/Account/Codec.hs, dist/build/Money/Account/Codec.o, dist/build/Money/Account/Codec.dyn_o )
  9102. 34.27 s [really-safe-money-autodocodec] mutation: instrumenting Money.Account.Codec
  9103. 34.29 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Account/Codec.hs:79:11-24
  9104. 34.29 s [really-safe-money-autodocodec] @@ -76,6 +76,6 @@
  9105. 34.29 s [really-safe-money-autodocodec] <?> "Account"
  9106. 34.29 s [really-safe-money-autodocodec] where
  9107. 34.29 s [really-safe-money-autodocodec] f :: Integer -> Either String Account
  9108. 34.29 s [really-safe-money-autodocodec] - f i = case Account.fromMinimalQuantisations i of
  9109. 34.30 s [really-safe-money-autodocodec] - Nothing -> Left $ "Number did not fit into an account value: " <> show i
  9110. 34.30 s [really-safe-money-autodocodec] - Just a -> Right a
  9111. 34.30 s [really-safe-money-autodocodec] + f i = case Account.fromMinimalQuantisations i of
  9112. 34.30 s [really-safe-money-autodocodec] + Nothing -> Left $ "Number did not fit into an account value: " <> show i
  9113. 34.30 s [really-safe-money-autodocodec] + Just a -> Right a
  9114. 34.30 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Account/Codec.hs:79:11-24
  9115. 34.30 s [really-safe-money-autodocodec] @@ -76,6 +76,6 @@
  9116. 34.30 s [really-safe-money-autodocodec] <?> "Account"
  9117. 34.30 s [really-safe-money-autodocodec] where
  9118. 34.30 s [really-safe-money-autodocodec] f :: Integer -> Either String Account
  9119. 34.30 s [really-safe-money-autodocodec] - f i = case Account.fromMinimalQuantisations i of
  9120. 34.30 s [really-safe-money-autodocodec] - Nothing -> Left $ "Number did not fit into an account value: " <> show i
  9121. 34.30 s [really-safe-money-autodocodec] - Just a -> Right a
  9122. 34.30 s [really-safe-money-autodocodec] + f i = case Account.fromMinimalQuantisations i of
  9123. 34.30 s [really-safe-money-autodocodec] + Nothing -> Left $ "Number did not fit into an account value: " <> show i
  9124. 34.30 s [really-safe-money-autodocodec] + Just a -> Right a
  9125. 34.30 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Account/Codec.hs:51:33-76
  9126. 34.30 s [really-safe-money-autodocodec] @@ -48,7 +48,7 @@
  9127. 34.30 s [really-safe-money-autodocodec] where
  9128. 34.30 s [really-safe-money-autodocodec] f :: String -> Either String Account
  9129. 34.30 s [really-safe-money-autodocodec] f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9130. 34.30 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9131. 34.30 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords []
  9132. 34.30 s [really-safe-money-autodocodec] Just a -> Right a
  9133. 34.30 s [really-safe-money-autodocodec] g :: Account -> String
  9134. 34.30 s [really-safe-money-autodocodec] g = show . Account.toMinimalQuantisations
  9135. 34.30 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Account/Codec.hs:51:33-76
  9136. 34.30 s [really-safe-money-autodocodec] @@ -48,7 +48,7 @@
  9137. 34.30 s [really-safe-money-autodocodec] where
  9138. 34.30 s [really-safe-money-autodocodec] f :: String -> Either String Account
  9139. 34.30 s [really-safe-money-autodocodec] f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9140. 34.30 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9141. 34.30 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9142. 34.30 s [really-safe-money-autodocodec] Just a -> Right a
  9143. 34.30 s [really-safe-money-autodocodec] g :: Account -> String
  9144. 34.30 s [really-safe-money-autodocodec] g = show . Account.toMinimalQuantisations
  9145. 34.30 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Account/Codec.hs:50:11-24
  9146. 34.30 s [really-safe-money-autodocodec] @@ -47,9 +47,9 @@
  9147. 34.30 s [really-safe-money-autodocodec] codecViaString = bimapCodec f g stringCodec <?> "Account"
  9148. 34.30 s [really-safe-money-autodocodec] where
  9149. 34.30 s [really-safe-money-autodocodec] f :: String -> Either String Account
  9150. 34.30 s [really-safe-money-autodocodec] - f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9151. 34.30 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9152. 34.30 s [really-safe-money-autodocodec] - Just a -> Right a
  9153. 34.30 s [really-safe-money-autodocodec] + f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9154. 34.30 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9155. 34.30 s [really-safe-money-autodocodec] + Just a -> Right a
  9156. 34.30 s [really-safe-money-autodocodec] g :: Account -> String
  9157. 34.30 s [really-safe-money-autodocodec] g = show . Account.toMinimalQuantisations
  9158. 34.30 s [really-safe-money-autodocodec]
  9159. 34.30 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Account/Codec.hs:50:11-24
  9160. 34.30 s [really-safe-money-autodocodec] @@ -47,9 +47,9 @@
  9161. 34.30 s [really-safe-money-autodocodec] codecViaString = bimapCodec f g stringCodec <?> "Account"
  9162. 34.30 s [really-safe-money-autodocodec] where
  9163. 34.30 s [really-safe-money-autodocodec] f :: String -> Either String Account
  9164. 34.30 s [really-safe-money-autodocodec] - f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9165. 34.30 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9166. 34.30 s [really-safe-money-autodocodec] - Just a -> Right a
  9167. 34.30 s [really-safe-money-autodocodec] + f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9168. 34.30 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9169. 34.30 s [really-safe-money-autodocodec] + Just a -> Right a
  9170. 34.30 s [really-safe-money-autodocodec] g :: Account -> String
  9171. 34.30 s [really-safe-money-autodocodec] g = show . Account.toMinimalQuantisations
  9172. 34.30 s [really-safe-money-autodocodec]
  9173. 34.30 s [really-safe-money-autodocodec] added 6 mutations
  9174. 34.75 s [really-safe-money-autodocodec] [2 of 7] Compiling Money.AccountOf.Codec ( src/Money/AccountOf/Codec.hs, dist/build/Money/AccountOf/Codec.o, dist/build/Money/AccountOf/Codec.dyn_o )
  9175. 34.75 s [really-safe-money-autodocodec] mutation: instrumenting Money.AccountOf.Codec
  9176. 34.75 s [really-safe-money-autodocodec] added 0 mutations
  9177. 34.78 s [really-safe-money-autodocodec] [3 of 7] Compiling Money.Amount.Codec ( src/Money/Amount/Codec.hs, dist/build/Money/Amount/Codec.o, dist/build/Money/Amount/Codec.dyn_o )
  9178. 34.78 s [really-safe-money-autodocodec] mutation: instrumenting Money.Amount.Codec
  9179. 34.78 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:47:33-75
  9180. 34.78 s [really-safe-money-autodocodec] @@ -44,7 +44,7 @@
  9181. 34.78 s [really-safe-money-autodocodec] where
  9182. 34.78 s [really-safe-money-autodocodec] f :: String -> Either String Amount
  9183. 34.78 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9184. 34.78 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9185. 34.78 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords []
  9186. 34.78 s [really-safe-money-autodocodec] Just i ->
  9187. 34.78 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9188. 34.78 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9189. 34.78 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:47:33-75
  9190. 34.78 s [really-safe-money-autodocodec] @@ -44,7 +44,7 @@
  9191. 34.78 s [really-safe-money-autodocodec] where
  9192. 34.78 s [really-safe-money-autodocodec] f :: String -> Either String Amount
  9193. 34.78 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9194. 34.78 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9195. 34.78 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9196. 34.78 s [really-safe-money-autodocodec] Just i ->
  9197. 34.78 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9198. 34.78 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9199. 34.78 s [really-safe-money-autodocodec] added mutation ConstBool at src/Money/Amount/Codec.hs:49:12-59
  9200. 34.78 s [really-safe-money-autodocodec] @@ -46,7 +46,7 @@
  9201. 34.78 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9202. 34.78 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9203. 34.78 s [really-safe-money-autodocodec] Just i ->
  9204. 34.78 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9205. 34.78 s [really-safe-money-autodocodec] + if True
  9206. 34.78 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9207. 34.78 s [really-safe-money-autodocodec] else
  9208. 34.78 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9209. 34.78 s [really-safe-money-autodocodec] added mutation ConstBool at src/Money/Amount/Codec.hs:49:12-59
  9210. 34.78 s [really-safe-money-autodocodec] @@ -46,7 +46,7 @@
  9211. 34.78 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9212. 34.78 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9213. 34.78 s [really-safe-money-autodocodec] Just i ->
  9214. 34.78 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9215. 34.78 s [really-safe-money-autodocodec] + if False
  9216. 34.78 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9217. 34.78 s [really-safe-money-autodocodec] else
  9218. 34.78 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9219. 34.78 s [really-safe-money-autodocodec] added mutation Negate at src/Money/Amount/Codec.hs:49:12-59
  9220. 34.78 s [really-safe-money-autodocodec] @@ -46,7 +46,7 @@
  9221. 34.78 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9222. 34.78 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9223. 34.78 s [really-safe-money-autodocodec] Just i ->
  9224. 34.78 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9225. 34.78 s [really-safe-money-autodocodec] + if not ((i :: Integer) < toInteger (minBound :: Word64))
  9226. 34.78 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9227. 34.79 s [really-safe-money-autodocodec] else
  9228. 34.79 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9229. 34.79 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:50:31-84
  9230. 34.79 s [really-safe-money-autodocodec] @@ -47,7 +47,7 @@
  9231. 34.79 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9232. 34.79 s [really-safe-money-autodocodec] Just i ->
  9233. 34.79 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9234. 34.79 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9235. 34.79 s [really-safe-money-autodocodec] + then Left $ unwords []
  9236. 34.79 s [really-safe-money-autodocodec] else
  9237. 34.79 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9238. 34.79 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9239. 34.79 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:50:31-84
  9240. 34.79 s [really-safe-money-autodocodec] @@ -47,7 +47,7 @@
  9241. 34.79 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9242. 34.79 s [really-safe-money-autodocodec] Just i ->
  9243. 34.79 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9244. 34.79 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9245. 34.79 s [really-safe-money-autodocodec] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9246. 34.79 s [really-safe-money-autodocodec] else
  9247. 34.79 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9248. 34.79 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9249. 34.79 s [really-safe-money-autodocodec] added mutation ConstBool at src/Money/Amount/Codec.hs:52:16-63
  9250. 34.79 s [really-safe-money-autodocodec] @@ -49,7 +49,7 @@
  9251. 34.79 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9252. 34.79 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9253. 34.79 s [really-safe-money-autodocodec] else
  9254. 34.79 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9255. 34.79 s [really-safe-money-autodocodec] + if True
  9256. 34.79 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9257. 34.79 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9258. 34.79 s [really-safe-money-autodocodec] g :: Amount -> String
  9259. 34.79 s [really-safe-money-autodocodec] added mutation ConstBool at src/Money/Amount/Codec.hs:52:16-63
  9260. 34.79 s [really-safe-money-autodocodec] @@ -49,7 +49,7 @@
  9261. 34.79 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9262. 34.79 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9263. 34.79 s [really-safe-money-autodocodec] else
  9264. 34.79 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9265. 34.79 s [really-safe-money-autodocodec] + if False
  9266. 34.79 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9267. 34.79 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9268. 34.79 s [really-safe-money-autodocodec] g :: Amount -> String
  9269. 34.79 s [really-safe-money-autodocodec] added mutation Negate at src/Money/Amount/Codec.hs:52:16-63
  9270. 34.79 s [really-safe-money-autodocodec] @@ -49,7 +49,7 @@
  9271. 34.79 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9272. 34.79 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9273. 34.79 s [really-safe-money-autodocodec] else
  9274. 34.79 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9275. 34.79 s [really-safe-money-autodocodec] + if not ((i :: Integer) > toInteger (maxBound :: Word64))
  9276. 34.79 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9277. 34.79 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9278. 34.79 s [really-safe-money-autodocodec] g :: Amount -> String
  9279. 34.79 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:53:35-90
  9280. 34.79 s [really-safe-money-autodocodec] @@ -50,7 +50,7 @@
  9281. 34.79 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9282. 34.79 s [really-safe-money-autodocodec] else
  9283. 34.79 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9284. 34.79 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9285. 34.79 s [really-safe-money-autodocodec] + then Left $ unwords []
  9286. 34.79 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9287. 34.79 s [really-safe-money-autodocodec] g :: Amount -> String
  9288. 34.79 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9289. 34.79 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:53:35-90
  9290. 34.79 s [really-safe-money-autodocodec] @@ -50,7 +50,7 @@
  9291. 34.79 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9292. 34.79 s [really-safe-money-autodocodec] else
  9293. 34.79 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9294. 34.79 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9295. 34.79 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9296. 34.79 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9297. 34.79 s [really-safe-money-autodocodec] g :: Amount -> String
  9298. 34.79 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9299. 34.79 s [really-safe-money-autodocodec] added mutation CondFlip at src/Money/Amount/Codec.hs:52:13-86
  9300. 34.79 s [really-safe-money-autodocodec] @@ -49,9 +49,9 @@
  9301. 34.79 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9302. 34.79 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9303. 34.79 s [really-safe-money-autodocodec] else
  9304. 34.79 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9305. 34.79 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9306. 34.79 s [really-safe-money-autodocodec] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9307. 34.79 s [really-safe-money-autodocodec] + if (i :: Integer) > toInteger (maxBound :: Word64)
  9308. 34.79 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9309. 34.79 s [really-safe-money-autodocodec] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9310. 34.79 s [really-safe-money-autodocodec] g :: Amount -> String
  9311. 34.79 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9312. 34.79 s [really-safe-money-autodocodec]
  9313. 34.79 s [really-safe-money-autodocodec] added mutation CondFlip at src/Money/Amount/Codec.hs:49:9-86
  9314. 34.79 s [really-safe-money-autodocodec] @@ -46,12 +46,12 @@
  9315. 34.79 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9316. 34.79 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9317. 34.79 s [really-safe-money-autodocodec] Just i ->
  9318. 34.79 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9319. 34.79 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9320. 34.79 s [really-safe-money-autodocodec] - else
  9321. 34.79 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9322. 34.79 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9323. 34.79 s [really-safe-money-autodocodec] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9324. 34.79 s [really-safe-money-autodocodec] + if (i :: Integer) < toInteger (minBound :: Word64)
  9325. 34.79 s [really-safe-money-autodocodec] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9326. 34.79 s [really-safe-money-autodocodec] + else
  9327. 34.79 s [really-safe-money-autodocodec] + if (i :: Integer) > toInteger (maxBound :: Word64)
  9328. 34.79 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9329. 34.79 s [really-safe-money-autodocodec] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9330. 34.79 s [really-safe-money-autodocodec] g :: Amount -> String
  9331. 34.79 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9332. 34.79 s [really-safe-money-autodocodec]
  9333. 34.79 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Amount/Codec.hs:46:11-86
  9334. 34.79 s [really-safe-money-autodocodec] @@ -43,15 +43,15 @@
  9335. 34.79 s [really-safe-money-autodocodec] codecViaString = bimapCodec f g stringCodec <?> "Amount"
  9336. 34.79 s [really-safe-money-autodocodec] where
  9337. 34.79 s [really-safe-money-autodocodec] f :: String -> Either String Amount
  9338. 34.79 s [really-safe-money-autodocodec] - f s = case readMaybe s of
  9339. 34.79 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9340. 34.79 s [really-safe-money-autodocodec] - Just i ->
  9341. 34.79 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9342. 34.79 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9343. 34.79 s [really-safe-money-autodocodec] - else
  9344. 34.79 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9345. 34.79 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9346. 34.79 s [really-safe-money-autodocodec] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9347. 34.79 s [really-safe-money-autodocodec] + f s = case readMaybe s of
  9348. 34.79 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9349. 34.79 s [really-safe-money-autodocodec] + Just i ->
  9350. 34.79 s [really-safe-money-autodocodec] + if (i :: Integer) < toInteger (minBound :: Word64)
  9351. 34.79 s [really-safe-money-autodocodec] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9352. 34.79 s [really-safe-money-autodocodec] + else
  9353. 34.79 s [really-safe-money-autodocodec] + if (i :: Integer) > toInteger (maxBound :: Word64)
  9354. 34.79 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9355. 34.79 s [really-safe-money-autodocodec] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9356. 34.79 s [really-safe-money-autodocodec] g :: Amount -> String
  9357. 34.79 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9358. 34.79 s [really-safe-money-autodocodec]
  9359. 34.79 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Amount/Codec.hs:46:11-86
  9360. 34.79 s [really-safe-money-autodocodec] @@ -43,15 +43,15 @@
  9361. 34.79 s [really-safe-money-autodocodec] codecViaString = bimapCodec f g stringCodec <?> "Amount"
  9362. 34.79 s [really-safe-money-autodocodec] where
  9363. 34.79 s [really-safe-money-autodocodec] f :: String -> Either String Amount
  9364. 34.79 s [really-safe-money-autodocodec] - f s = case readMaybe s of
  9365. 34.79 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9366. 34.79 s [really-safe-money-autodocodec] - Just i ->
  9367. 34.79 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9368. 34.79 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9369. 34.79 s [really-safe-money-autodocodec] - else
  9370. 34.79 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9371. 34.79 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9372. 34.79 s [really-safe-money-autodocodec] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9373. 34.79 s [really-safe-money-autodocodec] + f s = case readMaybe s of
  9374. 34.79 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9375. 34.79 s [really-safe-money-autodocodec] + Just i ->
  9376. 34.79 s [really-safe-money-autodocodec] + if (i :: Integer) < toInteger (minBound :: Word64)
  9377. 34.79 s [really-safe-money-autodocodec] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9378. 34.79 s [really-safe-money-autodocodec] + else
  9379. 34.79 s [really-safe-money-autodocodec] + if (i :: Integer) > toInteger (maxBound :: Word64)
  9380. 34.79 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9381. 34.79 s [really-safe-money-autodocodec] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9382. 34.79 s [really-safe-money-autodocodec] g :: Amount -> String
  9383. 34.79 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9384. 34.79 s [really-safe-money-autodocodec]
  9385. 34.79 s [really-safe-money-autodocodec] added 16 mutations
  9386. 34.91 s [really-safe-money-autodocodec] [4 of 7] Compiling Money.AmountOf.Codec ( src/Money/AmountOf/Codec.hs, dist/build/Money/AmountOf/Codec.o, dist/build/Money/AmountOf/Codec.dyn_o )
  9387. 34.91 s [really-safe-money-autodocodec] mutation: instrumenting Money.AmountOf.Codec
  9388. 34.91 s [really-safe-money-autodocodec] added 0 mutations
  9389. 34.93 s [really-safe-money-autodocodec] [5 of 7] Compiling Money.QuantisationFactor.Codec ( src/Money/QuantisationFactor/Codec.hs, dist/build/Money/QuantisationFactor/Codec.o, dist/build/Money/QuantisationFactor/Codec.dyn_o )
  9390. 34.94 s [really-safe-money-autodocodec] mutation: instrumenting Money.QuantisationFactor.Codec
  9391. 34.94 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/QuantisationFactor/Codec.hs:41:11-26
  9392. 34.94 s [really-safe-money-autodocodec] @@ -38,6 +38,6 @@
  9393. 34.94 s [really-safe-money-autodocodec] codec
  9394. 34.94 s [really-safe-money-autodocodec] <?> "QuantisationFactor"
  9395. 34.94 s [really-safe-money-autodocodec] where
  9396. 34.94 s [really-safe-money-autodocodec] - f w = case QuantisationFactor.fromWord32 w of
  9397. 34.94 s [really-safe-money-autodocodec] - Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  9398. 34.94 s [really-safe-money-autodocodec] - Just qf -> Right qf
  9399. 34.94 s [really-safe-money-autodocodec] + f w = case QuantisationFactor.fromWord32 w of
  9400. 34.94 s [really-safe-money-autodocodec] + Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  9401. 34.94 s [really-safe-money-autodocodec] + Just qf -> Right qf
  9402. 34.94 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/QuantisationFactor/Codec.hs:41:11-26
  9403. 34.94 s [really-safe-money-autodocodec] @@ -38,6 +38,6 @@
  9404. 34.94 s [really-safe-money-autodocodec] codec
  9405. 34.94 s [really-safe-money-autodocodec] <?> "QuantisationFactor"
  9406. 34.94 s [really-safe-money-autodocodec] where
  9407. 34.94 s [really-safe-money-autodocodec] - f w = case QuantisationFactor.fromWord32 w of
  9408. 34.94 s [really-safe-money-autodocodec] - Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  9409. 34.94 s [really-safe-money-autodocodec] - Just qf -> Right qf
  9410. 34.94 s [really-safe-money-autodocodec] + f w = case QuantisationFactor.fromWord32 w of
  9411. 34.94 s [really-safe-money-autodocodec] + Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  9412. 34.94 s [really-safe-money-autodocodec] + Just qf -> Right qf
  9413. 34.94 s [really-safe-money-autodocodec] added 2 mutations
  9414. 34.98 s [really-safe-money-autodocodec] [6 of 7] Compiling Numeric.DecimalLiteral.Codec ( src/Numeric/DecimalLiteral/Codec.hs, dist/build/Numeric/DecimalLiteral/Codec.o, dist/build/Numeric/DecimalLiteral/Codec.dyn_o )
  9415. 34.98 s [really-safe-money-autodocodec] mutation: instrumenting Numeric.DecimalLiteral.Codec
  9416. 34.98 s [really-safe-money-autodocodec] added mutation ListLit at src/Numeric/DecimalLiteral/Codec.hs:40:33-82
  9417. 34.98 s [really-safe-money-autodocodec] @@ -37,5 +37,5 @@
  9418. 34.98 s [really-safe-money-autodocodec] where
  9419. 34.98 s [really-safe-money-autodocodec] f :: String -> Either String DecimalLiteral
  9420. 34.98 s [really-safe-money-autodocodec] f s = case DecimalLiteral.fromString s of
  9421. 34.98 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9422. 34.98 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords []
  9423. 34.98 s [really-safe-money-autodocodec] Just a -> Right a
  9424. 34.98 s [really-safe-money-autodocodec] added mutation ListLit at src/Numeric/DecimalLiteral/Codec.hs:40:33-82
  9425. 34.98 s [really-safe-money-autodocodec] @@ -37,5 +37,5 @@
  9426. 34.98 s [really-safe-money-autodocodec] where
  9427. 34.98 s [really-safe-money-autodocodec] f :: String -> Either String DecimalLiteral
  9428. 34.98 s [really-safe-money-autodocodec] f s = case DecimalLiteral.fromString s of
  9429. 34.99 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9430. 34.99 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9431. 34.99 s [really-safe-money-autodocodec] Just a -> Right a
  9432. 34.99 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Numeric/DecimalLiteral/Codec.hs:39:11-24
  9433. 34.99 s [really-safe-money-autodocodec] @@ -36,6 +36,6 @@
  9434. 34.99 s [really-safe-money-autodocodec] codecViaString = bimapCodec f DecimalLiteral.toString stringCodec <?> "DecimalLiteral"
  9435. 34.99 s [really-safe-money-autodocodec] where
  9436. 34.99 s [really-safe-money-autodocodec] f :: String -> Either String DecimalLiteral
  9437. 34.99 s [really-safe-money-autodocodec] - f s = case DecimalLiteral.fromString s of
  9438. 34.99 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9439. 34.99 s [really-safe-money-autodocodec] - Just a -> Right a
  9440. 34.99 s [really-safe-money-autodocodec] + f s = case DecimalLiteral.fromString s of
  9441. 34.99 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9442. 34.99 s [really-safe-money-autodocodec] + Just a -> Right a
  9443. 34.99 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Numeric/DecimalLiteral/Codec.hs:39:11-24
  9444. 34.99 s [really-safe-money-autodocodec] @@ -36,6 +36,6 @@
  9445. 34.99 s [really-safe-money-autodocodec] codecViaString = bimapCodec f DecimalLiteral.toString stringCodec <?> "DecimalLiteral"
  9446. 34.99 s [really-safe-money-autodocodec] where
  9447. 34.99 s [really-safe-money-autodocodec] f :: String -> Either String DecimalLiteral
  9448. 34.99 s [really-safe-money-autodocodec] - f s = case DecimalLiteral.fromString s of
  9449. 34.99 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9450. 34.99 s [really-safe-money-autodocodec] - Just a -> Right a
  9451. 34.99 s [really-safe-money-autodocodec] + f s = case DecimalLiteral.fromString s of
  9452. 34.99 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9453. 34.99 s [really-safe-money-autodocodec] + Just a -> Right a
  9454. 34.99 s [really-safe-money-autodocodec] added 4 mutations
  9455. 35.03 s [really-safe-money-autodocodec] [7 of 7] Compiling Paths_really_safe_money_autodocodec ( dist/build/autogen/Paths_really_safe_money_autodocodec.hs, dist/build/Paths_really_safe_money_autodocodec.o, dist/build/Paths_really_safe_money_autodocodec.dyn_o )
  9456. 35.29 s [really-safe-money-autodocodec] [1 of 7] Compiling Money.Account.Codec ( src/Money/Account/Codec.hs, dist/build/Money/Account/Codec.p_o )
  9457. 35.31 s [really-safe-money-autodocodec] mutation: instrumenting Money.Account.Codec
  9458. 35.35 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Account/Codec.hs:79:11-24
  9459. 35.35 s [really-safe-money-autodocodec] @@ -76,6 +76,6 @@
  9460. 35.35 s [really-safe-money-autodocodec] <?> "Account"
  9461. 35.36 s [really-safe-money-autodocodec] where
  9462. 35.36 s [really-safe-money-autodocodec] f :: Integer -> Either String Account
  9463. 35.36 s [really-safe-money-autodocodec] - f i = case Account.fromMinimalQuantisations i of
  9464. 35.36 s [really-safe-money-autodocodec] - Nothing -> Left $ "Number did not fit into an account value: " <> show i
  9465. 35.36 s [really-safe-money-autodocodec] - Just a -> Right a
  9466. 35.36 s [really-safe-money-autodocodec] + f i = case Account.fromMinimalQuantisations i of
  9467. 35.36 s [really-safe-money-autodocodec] + Nothing -> Left $ "Number did not fit into an account value: " <> show i
  9468. 35.36 s [really-safe-money-autodocodec] + Just a -> Right a
  9469. 35.36 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Account/Codec.hs:79:11-24
  9470. 35.36 s [really-safe-money-autodocodec] @@ -76,6 +76,6 @@
  9471. 35.36 s [really-safe-money-autodocodec] <?> "Account"
  9472. 35.36 s [really-safe-money-autodocodec] where
  9473. 35.36 s [really-safe-money-autodocodec] f :: Integer -> Either String Account
  9474. 35.36 s [really-safe-money-autodocodec] - f i = case Account.fromMinimalQuantisations i of
  9475. 35.36 s [really-safe-money-autodocodec] - Nothing -> Left $ "Number did not fit into an account value: " <> show i
  9476. 35.36 s [really-safe-money-autodocodec] - Just a -> Right a
  9477. 35.36 s [really-safe-money-autodocodec] + f i = case Account.fromMinimalQuantisations i of
  9478. 35.36 s [really-safe-money-autodocodec] + Nothing -> Left $ "Number did not fit into an account value: " <> show i
  9479. 35.36 s [really-safe-money-autodocodec] + Just a -> Right a
  9480. 35.36 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Account/Codec.hs:51:33-76
  9481. 35.36 s [really-safe-money-autodocodec] @@ -48,7 +48,7 @@
  9482. 35.36 s [really-safe-money-autodocodec] where
  9483. 35.36 s [really-safe-money-autodocodec] f :: String -> Either String Account
  9484. 35.36 s [really-safe-money-autodocodec] f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9485. 35.36 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9486. 35.36 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords []
  9487. 35.36 s [really-safe-money-autodocodec] Just a -> Right a
  9488. 35.36 s [really-safe-money-autodocodec] g :: Account -> String
  9489. 35.36 s [really-safe-money-autodocodec] g = show . Account.toMinimalQuantisations
  9490. 35.36 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Account/Codec.hs:51:33-76
  9491. 35.36 s [really-safe-money-autodocodec] @@ -48,7 +48,7 @@
  9492. 35.36 s [really-safe-money-autodocodec] where
  9493. 35.36 s [really-safe-money-autodocodec] f :: String -> Either String Account
  9494. 35.36 s [really-safe-money-autodocodec] f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9495. 35.36 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9496. 35.36 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9497. 35.36 s [really-safe-money-autodocodec] Just a -> Right a
  9498. 35.36 s [really-safe-money-autodocodec] g :: Account -> String
  9499. 35.36 s [really-safe-money-autodocodec] g = show . Account.toMinimalQuantisations
  9500. 35.36 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Account/Codec.hs:50:11-24
  9501. 35.36 s [really-safe-money-autodocodec] @@ -47,9 +47,9 @@
  9502. 35.36 s [really-safe-money-autodocodec] codecViaString = bimapCodec f g stringCodec <?> "Account"
  9503. 35.36 s [really-safe-money-autodocodec] where
  9504. 35.36 s [really-safe-money-autodocodec] f :: String -> Either String Account
  9505. 35.36 s [really-safe-money-autodocodec] - f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9506. 35.36 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9507. 35.36 s [really-safe-money-autodocodec] - Just a -> Right a
  9508. 35.36 s [really-safe-money-autodocodec] + f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9509. 35.36 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9510. 35.36 s [really-safe-money-autodocodec] + Just a -> Right a
  9511. 35.36 s [really-safe-money-autodocodec] g :: Account -> String
  9512. 35.36 s [really-safe-money-autodocodec] g = show . Account.toMinimalQuantisations
  9513. 35.36 s [really-safe-money-autodocodec]
  9514. 35.36 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Account/Codec.hs:50:11-24
  9515. 35.36 s [really-safe-money-autodocodec] @@ -47,9 +47,9 @@
  9516. 35.36 s [really-safe-money-autodocodec] codecViaString = bimapCodec f g stringCodec <?> "Account"
  9517. 35.36 s [really-safe-money-autodocodec] where
  9518. 35.36 s [really-safe-money-autodocodec] f :: String -> Either String Account
  9519. 35.36 s [really-safe-money-autodocodec] - f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9520. 35.36 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9521. 35.36 s [really-safe-money-autodocodec] - Just a -> Right a
  9522. 35.36 s [really-safe-money-autodocodec] + f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9523. 35.36 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9524. 35.36 s [really-safe-money-autodocodec] + Just a -> Right a
  9525. 35.36 s [really-safe-money-autodocodec] g :: Account -> String
  9526. 35.36 s [really-safe-money-autodocodec] g = show . Account.toMinimalQuantisations
  9527. 35.36 s [really-safe-money-autodocodec]
  9528. 35.36 s [really-safe-money-autodocodec] added 6 mutations
  9529. 35.94 s [really-safe-money-autodocodec] [2 of 7] Compiling Money.AccountOf.Codec ( src/Money/AccountOf/Codec.hs, dist/build/Money/AccountOf/Codec.p_o )
  9530. 35.94 s [really-safe-money-autodocodec] mutation: instrumenting Money.AccountOf.Codec
  9531. 35.94 s [really-safe-money-autodocodec] added 0 mutations
  9532. 36.06 s [really-safe-money-autodocodec] [3 of 7] Compiling Money.Amount.Codec ( src/Money/Amount/Codec.hs, dist/build/Money/Amount/Codec.p_o )
  9533. 36.06 s [really-safe-money-autodocodec] mutation: instrumenting Money.Amount.Codec
  9534. 36.06 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:47:33-75
  9535. 36.06 s [really-safe-money-autodocodec] @@ -44,7 +44,7 @@
  9536. 36.06 s [really-safe-money-autodocodec] where
  9537. 36.06 s [really-safe-money-autodocodec] f :: String -> Either String Amount
  9538. 36.06 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9539. 36.06 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9540. 36.06 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords []
  9541. 36.06 s [really-safe-money-autodocodec] Just i ->
  9542. 36.06 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9543. 36.06 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9544. 36.06 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:47:33-75
  9545. 36.06 s [really-safe-money-autodocodec] @@ -44,7 +44,7 @@
  9546. 36.06 s [really-safe-money-autodocodec] where
  9547. 36.06 s [really-safe-money-autodocodec] f :: String -> Either String Amount
  9548. 36.06 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9549. 36.06 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9550. 36.06 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9551. 36.06 s [really-safe-money-autodocodec] Just i ->
  9552. 36.06 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9553. 36.06 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9554. 36.06 s [really-safe-money-autodocodec] added mutation ConstBool at src/Money/Amount/Codec.hs:49:12-59
  9555. 36.06 s [really-safe-money-autodocodec] @@ -46,7 +46,7 @@
  9556. 36.06 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9557. 36.06 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9558. 36.07 s [really-safe-money-autodocodec] Just i ->
  9559. 36.07 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9560. 36.07 s [really-safe-money-autodocodec] + if True
  9561. 36.07 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9562. 36.07 s [really-safe-money-autodocodec] else
  9563. 36.07 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9564. 36.07 s [really-safe-money-autodocodec] added mutation ConstBool at src/Money/Amount/Codec.hs:49:12-59
  9565. 36.07 s [really-safe-money-autodocodec] @@ -46,7 +46,7 @@
  9566. 36.07 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9567. 36.07 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9568. 36.07 s [really-safe-money-autodocodec] Just i ->
  9569. 36.07 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9570. 36.07 s [really-safe-money-autodocodec] + if False
  9571. 36.07 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9572. 36.07 s [really-safe-money-autodocodec] else
  9573. 36.07 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9574. 36.07 s [really-safe-money-autodocodec] added mutation Negate at src/Money/Amount/Codec.hs:49:12-59
  9575. 36.07 s [really-safe-money-autodocodec] @@ -46,7 +46,7 @@
  9576. 36.07 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9577. 36.07 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9578. 36.07 s [really-safe-money-autodocodec] Just i ->
  9579. 36.07 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9580. 36.07 s [really-safe-money-autodocodec] + if not ((i :: Integer) < toInteger (minBound :: Word64))
  9581. 36.07 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9582. 36.07 s [really-safe-money-autodocodec] else
  9583. 36.07 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9584. 36.07 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:50:31-84
  9585. 36.07 s [really-safe-money-autodocodec] @@ -47,7 +47,7 @@
  9586. 36.07 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9587. 36.07 s [really-safe-money-autodocodec] Just i ->
  9588. 36.07 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9589. 36.07 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9590. 36.07 s [really-safe-money-autodocodec] + then Left $ unwords []
  9591. 36.07 s [really-safe-money-autodocodec] else
  9592. 36.07 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9593. 36.07 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9594. 36.07 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:50:31-84
  9595. 36.07 s [really-safe-money-autodocodec] @@ -47,7 +47,7 @@
  9596. 36.07 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9597. 36.07 s [really-safe-money-autodocodec] Just i ->
  9598. 36.07 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9599. 36.07 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9600. 36.07 s [really-safe-money-autodocodec] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9601. 36.07 s [really-safe-money-autodocodec] else
  9602. 36.07 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9603. 36.07 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9604. 36.07 s [really-safe-money-autodocodec] added mutation ConstBool at src/Money/Amount/Codec.hs:52:16-63
  9605. 36.07 s [really-safe-money-autodocodec] @@ -49,7 +49,7 @@
  9606. 36.07 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9607. 36.07 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9608. 36.07 s [really-safe-money-autodocodec] else
  9609. 36.07 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9610. 36.07 s [really-safe-money-autodocodec] + if True
  9611. 36.07 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9612. 36.07 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9613. 36.07 s [really-safe-money-autodocodec] g :: Amount -> String
  9614. 36.07 s [really-safe-money-autodocodec] added mutation ConstBool at src/Money/Amount/Codec.hs:52:16-63
  9615. 36.07 s [really-safe-money-autodocodec] @@ -49,7 +49,7 @@
  9616. 36.07 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9617. 36.07 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9618. 36.07 s [really-safe-money-autodocodec] else
  9619. 36.07 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9620. 36.07 s [really-safe-money-autodocodec] + if False
  9621. 36.07 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9622. 36.07 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9623. 36.07 s [really-safe-money-autodocodec] g :: Amount -> String
  9624. 36.07 s [really-safe-money-autodocodec] added mutation Negate at src/Money/Amount/Codec.hs:52:16-63
  9625. 36.07 s [really-safe-money-autodocodec] @@ -49,7 +49,7 @@
  9626. 36.07 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9627. 36.07 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9628. 36.07 s [really-safe-money-autodocodec] else
  9629. 36.07 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9630. 36.07 s [really-safe-money-autodocodec] + if not ((i :: Integer) > toInteger (maxBound :: Word64))
  9631. 36.07 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9632. 36.07 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9633. 36.07 s [really-safe-money-autodocodec] g :: Amount -> String
  9634. 36.07 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:53:35-90
  9635. 36.07 s [really-safe-money-autodocodec] @@ -50,7 +50,7 @@
  9636. 36.07 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9637. 36.07 s [really-safe-money-autodocodec] else
  9638. 36.07 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9639. 36.07 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9640. 36.07 s [really-safe-money-autodocodec] + then Left $ unwords []
  9641. 36.07 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9642. 36.07 s [really-safe-money-autodocodec] g :: Amount -> String
  9643. 36.07 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9644. 36.07 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:53:35-90
  9645. 36.07 s [really-safe-money-autodocodec] @@ -50,7 +50,7 @@
  9646. 36.07 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9647. 36.07 s [really-safe-money-autodocodec] else
  9648. 36.07 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9649. 36.07 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9650. 36.07 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9651. 36.07 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9652. 36.07 s [really-safe-money-autodocodec] g :: Amount -> String
  9653. 36.07 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9654. 36.07 s [really-safe-money-autodocodec] added mutation CondFlip at src/Money/Amount/Codec.hs:52:13-86
  9655. 36.07 s [really-safe-money-autodocodec] @@ -49,9 +49,9 @@
  9656. 36.07 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9657. 36.07 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9658. 36.07 s [really-safe-money-autodocodec] else
  9659. 36.07 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9660. 36.07 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9661. 36.07 s [really-safe-money-autodocodec] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9662. 36.07 s [really-safe-money-autodocodec] + if (i :: Integer) > toInteger (maxBound :: Word64)
  9663. 36.07 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9664. 36.07 s [really-safe-money-autodocodec] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9665. 36.07 s [really-safe-money-autodocodec] g :: Amount -> String
  9666. 36.07 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9667. 36.07 s [really-safe-money-autodocodec]
  9668. 36.07 s [really-safe-money-autodocodec] added mutation CondFlip at src/Money/Amount/Codec.hs:49:9-86
  9669. 36.07 s [really-safe-money-autodocodec] @@ -46,12 +46,12 @@
  9670. 36.07 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9671. 36.07 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9672. 36.07 s [really-safe-money-autodocodec] Just i ->
  9673. 36.07 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9674. 36.07 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9675. 36.07 s [really-safe-money-autodocodec] - else
  9676. 36.07 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9677. 36.07 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9678. 36.07 s [really-safe-money-autodocodec] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9679. 36.07 s [really-safe-money-autodocodec] + if (i :: Integer) < toInteger (minBound :: Word64)
  9680. 36.07 s [really-safe-money-autodocodec] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9681. 36.07 s [really-safe-money-autodocodec] + else
  9682. 36.07 s [really-safe-money-autodocodec] + if (i :: Integer) > toInteger (maxBound :: Word64)
  9683. 36.07 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9684. 36.07 s [really-safe-money-autodocodec] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9685. 36.07 s [really-safe-money-autodocodec] g :: Amount -> String
  9686. 36.07 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9687. 36.07 s [really-safe-money-autodocodec]
  9688. 36.07 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Amount/Codec.hs:46:11-86
  9689. 36.07 s [really-safe-money-autodocodec] @@ -43,15 +43,15 @@
  9690. 36.07 s [really-safe-money-autodocodec] codecViaString = bimapCodec f g stringCodec <?> "Amount"
  9691. 36.07 s [really-safe-money-autodocodec] where
  9692. 36.07 s [really-safe-money-autodocodec] f :: String -> Either String Amount
  9693. 36.07 s [really-safe-money-autodocodec] - f s = case readMaybe s of
  9694. 36.07 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9695. 36.07 s [really-safe-money-autodocodec] - Just i ->
  9696. 36.07 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9697. 36.07 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9698. 36.07 s [really-safe-money-autodocodec] - else
  9699. 36.07 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9700. 36.07 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9701. 36.07 s [really-safe-money-autodocodec] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9702. 36.07 s [really-safe-money-autodocodec] + f s = case readMaybe s of
  9703. 36.07 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9704. 36.07 s [really-safe-money-autodocodec] + Just i ->
  9705. 36.07 s [really-safe-money-autodocodec] + if (i :: Integer) < toInteger (minBound :: Word64)
  9706. 36.07 s [really-safe-money-autodocodec] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9707. 36.07 s [really-safe-money-autodocodec] + else
  9708. 36.07 s [really-safe-money-autodocodec] + if (i :: Integer) > toInteger (maxBound :: Word64)
  9709. 36.07 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9710. 36.07 s [really-safe-money-autodocodec] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9711. 36.07 s [really-safe-money-autodocodec] g :: Amount -> String
  9712. 36.07 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9713. 36.07 s [really-safe-money-autodocodec]
  9714. 36.07 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Amount/Codec.hs:46:11-86
  9715. 36.07 s [really-safe-money-autodocodec] @@ -43,15 +43,15 @@
  9716. 36.07 s [really-safe-money-autodocodec] codecViaString = bimapCodec f g stringCodec <?> "Amount"
  9717. 36.07 s [really-safe-money-autodocodec] where
  9718. 36.07 s [really-safe-money-autodocodec] f :: String -> Either String Amount
  9719. 36.07 s [really-safe-money-autodocodec] - f s = case readMaybe s of
  9720. 36.07 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9721. 36.07 s [really-safe-money-autodocodec] - Just i ->
  9722. 36.07 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9723. 36.07 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9724. 36.07 s [really-safe-money-autodocodec] - else
  9725. 36.07 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9726. 36.07 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9727. 36.07 s [really-safe-money-autodocodec] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9728. 36.07 s [really-safe-money-autodocodec] + f s = case readMaybe s of
  9729. 36.07 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9730. 36.07 s [really-safe-money-autodocodec] + Just i ->
  9731. 36.07 s [really-safe-money-autodocodec] + if (i :: Integer) < toInteger (minBound :: Word64)
  9732. 36.07 s [really-safe-money-autodocodec] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9733. 36.07 s [really-safe-money-autodocodec] + else
  9734. 36.07 s [really-safe-money-autodocodec] + if (i :: Integer) > toInteger (maxBound :: Word64)
  9735. 36.07 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9736. 36.07 s [really-safe-money-autodocodec] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9737. 36.07 s [really-safe-money-autodocodec] g :: Amount -> String
  9738. 36.07 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9739. 36.07 s [really-safe-money-autodocodec]
  9740. 36.07 s [really-safe-money-autodocodec] added 16 mutations
  9741. 36.29 s [really-safe-money-autodocodec] [4 of 7] Compiling Money.AmountOf.Codec ( src/Money/AmountOf/Codec.hs, dist/build/Money/AmountOf/Codec.p_o )
  9742. 36.29 s [really-safe-money-autodocodec] mutation: instrumenting Money.AmountOf.Codec
  9743. 36.29 s [really-safe-money-autodocodec] added 0 mutations
  9744. 36.41 s [really-safe-money-autodocodec] [5 of 7] Compiling Money.QuantisationFactor.Codec ( src/Money/QuantisationFactor/Codec.hs, dist/build/Money/QuantisationFactor/Codec.p_o )
  9745. 36.42 s [really-safe-money-autodocodec] mutation: instrumenting Money.QuantisationFactor.Codec
  9746. 36.42 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/QuantisationFactor/Codec.hs:41:11-26
  9747. 36.42 s [really-safe-money-autodocodec] @@ -38,6 +38,6 @@
  9748. 36.42 s [really-safe-money-autodocodec] codec
  9749. 36.42 s [really-safe-money-autodocodec] <?> "QuantisationFactor"
  9750. 36.42 s [really-safe-money-autodocodec] where
  9751. 36.42 s [really-safe-money-autodocodec] - f w = case QuantisationFactor.fromWord32 w of
  9752. 36.42 s [really-safe-money-autodocodec] - Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  9753. 36.42 s [really-safe-money-autodocodec] - Just qf -> Right qf
  9754. 36.42 s [really-safe-money-autodocodec] + f w = case QuantisationFactor.fromWord32 w of
  9755. 36.42 s [really-safe-money-autodocodec] + Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  9756. 36.42 s [really-safe-money-autodocodec] + Just qf -> Right qf
  9757. 36.42 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/QuantisationFactor/Codec.hs:41:11-26
  9758. 36.42 s [really-safe-money-autodocodec] @@ -38,6 +38,6 @@
  9759. 36.42 s [really-safe-money-autodocodec] codec
  9760. 36.42 s [really-safe-money-autodocodec] <?> "QuantisationFactor"
  9761. 36.42 s [really-safe-money-autodocodec] where
  9762. 36.42 s [really-safe-money-autodocodec] - f w = case QuantisationFactor.fromWord32 w of
  9763. 36.42 s [really-safe-money-autodocodec] - Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  9764. 36.42 s [really-safe-money-autodocodec] - Just qf -> Right qf
  9765. 36.42 s [really-safe-money-autodocodec] + f w = case QuantisationFactor.fromWord32 w of
  9766. 36.42 s [really-safe-money-autodocodec] + Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  9767. 36.42 s [really-safe-money-autodocodec] + Just qf -> Right qf
  9768. 36.42 s [really-safe-money-autodocodec] added 2 mutations
  9769. 36.55 s [really-safe-money-autodocodec] [6 of 7] Compiling Numeric.DecimalLiteral.Codec ( src/Numeric/DecimalLiteral/Codec.hs, dist/build/Numeric/DecimalLiteral/Codec.p_o )
  9770. 36.55 s [really-safe-money-autodocodec] mutation: instrumenting Numeric.DecimalLiteral.Codec
  9771. 36.55 s [really-safe-money-autodocodec] added mutation ListLit at src/Numeric/DecimalLiteral/Codec.hs:40:33-82
  9772. 36.55 s [really-safe-money-autodocodec] @@ -37,5 +37,5 @@
  9773. 36.55 s [really-safe-money-autodocodec] where
  9774. 36.55 s [really-safe-money-autodocodec] f :: String -> Either String DecimalLiteral
  9775. 36.55 s [really-safe-money-autodocodec] f s = case DecimalLiteral.fromString s of
  9776. 36.55 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9777. 36.55 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords []
  9778. 36.55 s [really-safe-money-autodocodec] Just a -> Right a
  9779. 36.55 s [really-safe-money-autodocodec] added mutation ListLit at src/Numeric/DecimalLiteral/Codec.hs:40:33-82
  9780. 36.55 s [really-safe-money-autodocodec] @@ -37,5 +37,5 @@
  9781. 36.55 s [really-safe-money-autodocodec] where
  9782. 36.55 s [really-safe-money-autodocodec] f :: String -> Either String DecimalLiteral
  9783. 36.55 s [really-safe-money-autodocodec] f s = case DecimalLiteral.fromString s of
  9784. 36.55 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9785. 36.55 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9786. 36.55 s [really-safe-money-autodocodec] Just a -> Right a
  9787. 36.55 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Numeric/DecimalLiteral/Codec.hs:39:11-24
  9788. 36.55 s [really-safe-money-autodocodec] @@ -36,6 +36,6 @@
  9789. 36.55 s [really-safe-money-autodocodec] codecViaString = bimapCodec f DecimalLiteral.toString stringCodec <?> "DecimalLiteral"
  9790. 36.55 s [really-safe-money-autodocodec] where
  9791. 36.55 s [really-safe-money-autodocodec] f :: String -> Either String DecimalLiteral
  9792. 36.55 s [really-safe-money-autodocodec] - f s = case DecimalLiteral.fromString s of
  9793. 36.56 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9794. 36.56 s [really-safe-money-autodocodec] - Just a -> Right a
  9795. 36.56 s [really-safe-money-autodocodec] + f s = case DecimalLiteral.fromString s of
  9796. 36.56 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9797. 36.56 s [really-safe-money-autodocodec] + Just a -> Right a
  9798. 36.56 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Numeric/DecimalLiteral/Codec.hs:39:11-24
  9799. 36.56 s [really-safe-money-autodocodec] @@ -36,6 +36,6 @@
  9800. 36.56 s [really-safe-money-autodocodec] codecViaString = bimapCodec f DecimalLiteral.toString stringCodec <?> "DecimalLiteral"
  9801. 36.56 s [really-safe-money-autodocodec] where
  9802. 36.56 s [really-safe-money-autodocodec] f :: String -> Either String DecimalLiteral
  9803. 36.56 s [really-safe-money-autodocodec] - f s = case DecimalLiteral.fromString s of
  9804. 36.56 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9805. 36.56 s [really-safe-money-autodocodec] - Just a -> Right a
  9806. 36.56 s [really-safe-money-autodocodec] + f s = case DecimalLiteral.fromString s of
  9807. 36.56 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9808. 36.56 s [really-safe-money-autodocodec] + Just a -> Right a
  9809. 36.56 s [really-safe-money-autodocodec] added 4 mutations
  9810. 36.70 s [really-safe-money-autodocodec] [7 of 7] Compiling Paths_really_safe_money_autodocodec ( dist/build/autogen/Paths_really_safe_money_autodocodec.hs, dist/build/Paths_really_safe_money_autodocodec.p_o )
  9811. 37.04 s [really-safe-money-autodocodec] Warning: ignoring unrecognised input `dist/build/Money/Account/Codec.dyn_o'
  9812. 37.04 s [really-safe-money-autodocodec] Warning: ignoring unrecognised input `dist/build/Money/AccountOf/Codec.dyn_o'
  9813. 37.04 s [really-safe-money-autodocodec] Warning: ignoring unrecognised input `dist/build/Money/Amount/Codec.dyn_o'
  9814. 37.04 s [really-safe-money-autodocodec] Warning: ignoring unrecognised input `dist/build/Money/AmountOf/Codec.dyn_o'
  9815. 37.04 s [really-safe-money-autodocodec] Warning: ignoring unrecognised input `dist/build/Money/QuantisationFactor/Codec.dyn_o'
  9816. 37.04 s [really-safe-money-autodocodec] Warning: ignoring unrecognised input `dist/build/Numeric/DecimalLiteral/Codec.dyn_o'
  9817. 37.04 s [really-safe-money-autodocodec] Warning: ignoring unrecognised input `dist/build/Paths_really_safe_money_autodocodec.dyn_o'
  9818. 37.75 s [really-safe-money-autodocodec] mutation-nix: manifest output at /nix/store/xvvwhghc770bcvz090cfmycpx9xp6imm-really-safe-money-autodocodec-0.0.0.0-manifest:
  9819. 38.05 s [really-safe-money-autodocodec] total 76
  9820. 38.05 s [really-safe-money-autodocodec] drwxr-xr-x 2 nixbld nixbld 4096 May 13 19:58 .
  9821. 38.05 s [really-safe-money-autodocodec] drwxrwxr-t 239 nobody nixbld 28672 May 13 19:58 ..
  9822. 38.05 s [really-safe-money-autodocodec] -rw-r--r-- 1 nixbld nixbld 4702 May 13 19:58 Money.Account.Codec.json
  9823. 38.05 s [really-safe-money-autodocodec] -rw-r--r-- 1 nixbld nixbld 2 May 13 19:58 Money.AccountOf.Codec.json
  9824. 38.05 s [really-safe-money-autodocodec] -rw-r--r-- 1 nixbld nixbld 14717 May 13 19:58 Money.Amount.Codec.json
  9825. 38.05 s [really-safe-money-autodocodec] -rw-r--r-- 1 nixbld nixbld 2 May 13 19:58 Money.AmountOf.Codec.json
  9826. 38.05 s [really-safe-money-autodocodec] -rw-r--r-- 1 nixbld nixbld 1549 May 13 19:58 Money.QuantisationFactor.Codec.json
  9827. 38.05 s [really-safe-money-autodocodec] -rw-r--r-- 1 nixbld nixbld 2972 May 13 19:58 Numeric.DecimalLiteral.Codec.json
  9828. 38.06 s [really-safe-money-autodocodec] Phase: haddockPhase
  9829. 38.06 s [really-safe-money-autodocodec] Phase: installPhase
  9830. 38.06 s [really-safe-money-autodocodec] Installing library in /nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk
  9831. 38.06 s [really-safe-money-autodocodec] Phase: fixupPhase
  9832. 38.06 s [really-safe-money-autodocodec] shrinking RPATHs of ELF executables and libraries in /nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0
  9833. 38.06 s [really-safe-money-autodocodec] shrinking /nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/libHSreally-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk-ghc9.10.3.so
  9834. 38.06 s [really-safe-money-autodocodec] checking for references to /build/ in /nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0...
  9835. 38.06 s [really-safe-money-autodocodec] patching script interpreter paths in /nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0
  9836. 38.06 s [really-safe-money-autodocodec] stripping (with command strip and flags -S -p) in /nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0/lib
  9837. 38.08 s [really-safe-money-autodocodec] shrinking RPATHs of ELF executables and libraries in /nix/store/xvvwhghc770bcvz090cfmycpx9xp6imm-really-safe-money-autodocodec-0.0.0.0-manifest
  9838. 38.09 s [really-safe-money-autodocodec] checking for references to /build/ in /nix/store/xvvwhghc770bcvz090cfmycpx9xp6imm-really-safe-money-autodocodec-0.0.0.0-manifest...
  9839. 38.10 s [really-safe-money-autodocodec] patching script interpreter paths in /nix/store/xvvwhghc770bcvz090cfmycpx9xp6imm-really-safe-money-autodocodec-0.0.0.0-manifest
  9840. 38.16 s [post-build-hook] Uploading to cachix cache "sydtest": /nix/store/xvvwhghc770bcvz090cfmycpx9xp6imm-really-safe-money-autodocodec-0.0.0.0-manifest /nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0
  9841. 38.67 s [post-build-hook] Pushing 2 paths (196 are already present) using zstd to cache sydtest ⏳
  9842. 38.67 s [post-build-hook]
  9843. 39.06 s [post-build-hook] Pushing /nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0 (1.59 MiB)
  9844. 39.26 s [post-build-hook] Pushing /nix/store/xvvwhghc770bcvz090cfmycpx9xp6imm-really-safe-money-autodocodec-0.0.0.0-manifest (24.72 KiB)
  9845. 40.68 s [post-build-hook]
  9846. 40.68 s [post-build-hook] All done.
  9847. 40.70 s [post-build-hook] Uploading to the NixCI staging cache: /nix/store/xvvwhghc770bcvz090cfmycpx9xp6imm-really-safe-money-autodocodec-0.0.0.0-manifest /nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0
  9848. 40.74 s [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  9849. 41.02 s [post-build-hook] copying 2 paths...
  9850. 41.02 s [post-build-hook] copying path '/nix/store/xvvwhghc770bcvz090cfmycpx9xp6imm-really-safe-money-autodocodec-0.0.0.0-manifest' to 'https://cache.staging.nix-ci.com'...
  9851. 41.02 s [post-build-hook] copying path '/nix/store/ydvznira3pm6dmmm1rqphldzyskfiw4k-really-safe-money-autodocodec-0.0.0.0' to 'https://cache.staging.nix-ci.com'...
  9852. 42.98 s [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  9853. 43.32 s [post-build-hook] copying 1 paths...
  9854. 43.35 s [post-build-hook] copying path '/nix/store/ac9bqj0z4qkqm9vddbkzqmb844y4wbhm-really-safe-money-autodocodec-0.0.0.0.drv' to 'https://cache.staging.nix-ci.com'...
  9855. 43.61 s Progress: 4 of 6 built
  9856. 43.72 s Building really-safe-money-gen
  9857. 44.16 s [really-safe-money-gen] Phase: setupCompilerEnvironmentPhase
  9858. 44.17 s [really-safe-money-gen] Build with /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3.
  9859. 44.97 s [really-safe-money-gen] Phase: unpackPhase
  9860. 44.97 s [really-safe-money-gen] unpacking source archive /nix/store/ia8w50w9xynkdxz4912jk7k7skl0hrcd-really-safe-money-gen-source-0.0.0.0/really-safe-money-gen-0.0.0.0.tar.gz
  9861. 44.98 s [really-safe-money-gen] source root is really-safe-money-gen-0.0.0.0
  9862. 44.99 s [really-safe-money-gen] setting SOURCE_DATE_EPOCH to timestamp 1778702310 of file "really-safe-money-gen-0.0.0.0/test/Numeric/DecimalLiteralSpec.hs"
  9863. 44.99 s [really-safe-money-gen] warning: file "really-safe-money-gen-0.0.0.0/test/Numeric/DecimalLiteralSpec.hs" may be generated; SOURCE_DATE_EPOCH may be non-deterministic
  9864. 44.99 s [really-safe-money-gen] Phase: patchPhase
  9865. 45.00 s [really-safe-money-gen] Phase: compileBuildDriverPhase
  9866. 45.01 s [really-safe-money-gen] setupCompileFlags: -package-db=/build/tmp.sKAZeQPUfv/setup-package.conf.d -threaded
  9867. 45.06 s [really-safe-money-gen] [1 of 2] Compiling Main ( Setup.hs, /build/tmp.sKAZeQPUfv/Main.o )
  9868. 45.10 s [really-safe-money-gen] [2 of 2] Linking Setup
  9869. 46.86 s [really-safe-money-gen] Phase: updateAutotoolsGnuConfigScriptsPhase
  9870. 46.87 s [really-safe-money-gen] Phase: configurePhase
  9871. 46.88 s [really-safe-money-gen] configureFlags: --verbose --prefix=/nix/store/mszdd971wbn8fa5jbcli2vfjbjxs17w3-really-safe-money-gen-0.0.0.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --docdir=/nix/store/83q7ddqxny8pph072bbyn0rcsyvmywr1-really-safe-money-gen-0.0.0.0-doc/share/doc/really-safe-money-gen-0.0.0.0 --with-gcc=gcc --package-db=/build/tmp.sKAZeQPUfv/package.conf.d --ghc-option=-j16 --ghc-option=+RTS --ghc-option=-A64M --ghc-option=-RTS --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --enable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --ghc-option=-haddock --ghc-options=-O2 --ghc-options=-Wall --ghc-options=-Wincomplete-uni-patterns --ghc-options=-Wincomplete-record-updates --ghc-options=-Wpartial-fields --ghc-options=-Widentities --ghc-options=-Wredundant-constraints --ghc-options=-Wcpp-undef --ghc-options=-Werror --extra-lib-dirs=/nix/store/ffyzkisqs4vc4mg28bwwlyqjf8i9ph6b-ncurses-6.5/lib --extra-lib-dirs=/nix/store/n28qgdj8c1q41kf7n4y1jxa6ckp85m3c-libffi-3.5.2/lib --extra-lib-dirs=/nix/store/1b6h99dw7bk4wbn77kbalih42zbc67m1-elfutils-0.194/lib --extra-lib-dirs=/nix/store/hi0ar880110k6jsmmili7dh1gq3cg2a9-gmp-with-cxx-6.3.0/lib --extra-lib-dirs=/nix/store/g09cflpnp4g80q56sj9dng1qzv4v4ybc-numactl-2.0.18/lib --extra-lib-dirs=/nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/lib
  9872. 46.89 s [really-safe-money-gen] Using Parsec parser
  9873. 46.89 s [really-safe-money-gen] Configuring really-safe-money-gen-0.0.0.0...
  9874. 47.49 s [really-safe-money-gen] Dependency QuickCheck: using QuickCheck-2.15.0.1
  9875. 47.49 s [really-safe-money-gen] Dependency base >=4.7 && <5: using base-4.20.2.0
  9876. 47.49 s [really-safe-money-gen] Dependency genvalidity: using genvalidity-1.1.1.0
  9877. 47.50 s [really-safe-money-gen] Dependency genvalidity-containers: using genvalidity-containers-1.0.0.2
  9878. 47.50 s [really-safe-money-gen] Dependency really-safe-money: using really-safe-money-0.0.0.0
  9879. 47.50 s [really-safe-money-gen] Dependency base >=4.7 && <5: using base-4.20.2.0
  9880. 47.50 s [really-safe-money-gen] Dependency containers: using containers-0.7
  9881. 47.50 s [really-safe-money-gen] Dependency genvalidity-sydtest: using genvalidity-sydtest-1.0.1.0
  9882. 47.50 s [really-safe-money-gen] Dependency genvalidity-vector: using genvalidity-vector-1.0.0.0
  9883. 47.50 s [really-safe-money-gen] Dependency really-safe-money: using really-safe-money-0.0.0.0
  9884. 47.50 s [really-safe-money-gen] Dependency really-safe-money-gen: using really-safe-money-gen-0.0.0.0
  9885. 47.50 s [really-safe-money-gen] Dependency sydtest: using sydtest-0.23.0.2
  9886. 47.50 s [really-safe-money-gen] Dependency vector: using vector-0.13.2.0
  9887. 47.50 s [really-safe-money-gen] Source component graph:
  9888. 47.50 s [really-safe-money-gen] component lib
  9889. 47.50 s [really-safe-money-gen] component test:really-safe-money-test dependency lib
  9890. 47.50 s [really-safe-money-gen] Configured component graph:
  9891. 47.50 s [really-safe-money-gen] component really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h
  9892. 47.50 s [really-safe-money-gen] include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU
  9893. 47.50 s [really-safe-money-gen] include base-4.20.2.0-64da
  9894. 47.50 s [really-safe-money-gen] include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L
  9895. 47.50 s [really-safe-money-gen] include genvalidity-containers-1.0.0.2-DXaOCEBh8iJ1c8u2LwVlK1
  9896. 47.50 s [really-safe-money-gen] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  9897. 47.50 s [really-safe-money-gen] component really-safe-money-gen-0.0.0.0-8cvRTlTZbe8HClZztIkEoX-really-safe-money-test
  9898. 47.50 s [really-safe-money-gen] include base-4.20.2.0-64da
  9899. 47.50 s [really-safe-money-gen] include containers-0.7-504a
  9900. 47.50 s [really-safe-money-gen] include genvalidity-sydtest-1.0.1.0-Cj9ZxpByhih2ReY6BClfG1
  9901. 47.50 s [really-safe-money-gen] include genvalidity-vector-1.0.0.0-6KKiduowklk7hSxSW05Gxi
  9902. 47.50 s [really-safe-money-gen] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  9903. 47.50 s [really-safe-money-gen] include really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h
  9904. 47.50 s [really-safe-money-gen] include sydtest-0.23.0.2-RzVaEpJISaERaSrCHYFLw
  9905. 47.50 s [really-safe-money-gen] include vector-0.13.2.0-GDUCoiHhVuq2SKPTzzTr3a
  9906. 47.50 s [really-safe-money-gen] Linked component graph:
  9907. 47.50 s [really-safe-money-gen] unit really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h
  9908. 47.50 s [really-safe-money-gen] include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU
  9909. 47.50 s [really-safe-money-gen] include base-4.20.2.0-64da
  9910. 47.50 s [really-safe-money-gen] include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L
  9911. 47.50 s [really-safe-money-gen] include genvalidity-containers-1.0.0.2-DXaOCEBh8iJ1c8u2LwVlK1
  9912. 47.50 s [really-safe-money-gen] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  9913. 47.50 s [really-safe-money-gen] Money.Account.Gen=really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h:Money.Account.Gen,Money.AccountOf.Gen=really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h:Money.AccountOf.Gen,Money.Amount.Gen=really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h:Money.Amount.Gen,Money.AmountOf.Gen=really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h:Money.AmountOf.Gen,Money.ConversionRate.Gen=really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h:Money.ConversionRate.Gen,Money.ConversionRateOf.Gen=really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h:Money.ConversionRateOf.Gen,Money.Currency.Gen=really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h:Money.Currency.Gen,Money.Gen=really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h:Money.Gen,Money.MultiAccount.Gen=really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h:Money.MultiAccount.Gen,Money.MultiAmount.Gen=really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h:Money.MultiAmount.Gen,Money.QuantisationFactor.Gen=really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h:Money.QuantisationFactor.Gen,Numeric.DecimalLiteral.Gen=really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h:Numeric.DecimalLiteral.Gen
  9914. 47.50 s [really-safe-money-gen] unit really-safe-money-gen-0.0.0.0-8cvRTlTZbe8HClZztIkEoX-really-safe-money-test
  9915. 47.50 s [really-safe-money-gen] include base-4.20.2.0-64da
  9916. 47.50 s [really-safe-money-gen] include containers-0.7-504a
  9917. 47.50 s [really-safe-money-gen] include genvalidity-sydtest-1.0.1.0-Cj9ZxpByhih2ReY6BClfG1
  9918. 47.50 s [really-safe-money-gen] include genvalidity-vector-1.0.0.0-6KKiduowklk7hSxSW05Gxi
  9919. 47.50 s [really-safe-money-gen] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  9920. 47.50 s [really-safe-money-gen] include really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h
  9921. 47.50 s [really-safe-money-gen] include sydtest-0.23.0.2-RzVaEpJISaERaSrCHYFLw
  9922. 47.50 s [really-safe-money-gen] include vector-0.13.2.0-GDUCoiHhVuq2SKPTzzTr3a
  9923. 47.50 s [really-safe-money-gen] Ready component graph:
  9924. 47.50 s [really-safe-money-gen] definite really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h
  9925. 47.50 s [really-safe-money-gen] depends QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU
  9926. 47.50 s [really-safe-money-gen] depends base-4.20.2.0-64da
  9927. 47.50 s [really-safe-money-gen] depends genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L
  9928. 47.50 s [really-safe-money-gen] depends genvalidity-containers-1.0.0.2-DXaOCEBh8iJ1c8u2LwVlK1
  9929. 47.50 s [really-safe-money-gen] depends really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  9930. 47.50 s [really-safe-money-gen] definite really-safe-money-gen-0.0.0.0-8cvRTlTZbe8HClZztIkEoX-really-safe-money-test
  9931. 47.50 s [really-safe-money-gen] depends base-4.20.2.0-64da
  9932. 47.50 s [really-safe-money-gen] depends containers-0.7-504a
  9933. 47.50 s [really-safe-money-gen] depends genvalidity-sydtest-1.0.1.0-Cj9ZxpByhih2ReY6BClfG1
  9934. 47.50 s [really-safe-money-gen] depends genvalidity-vector-1.0.0.0-6KKiduowklk7hSxSW05Gxi
  9935. 47.50 s [really-safe-money-gen] depends really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  9936. 47.50 s [really-safe-money-gen] depends really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h
  9937. 47.50 s [really-safe-money-gen] depends sydtest-0.23.0.2-RzVaEpJISaERaSrCHYFLw
  9938. 47.50 s [really-safe-money-gen] depends vector-0.13.2.0-GDUCoiHhVuq2SKPTzzTr3a
  9939. 47.50 s [really-safe-money-gen] Using Cabal-3.12.1.0 compiled by ghc-9.10
  9940. 47.50 s [really-safe-money-gen] Using compiler: ghc-9.10.3
  9941. 47.50 s [really-safe-money-gen] Using install prefix:
  9942. 47.50 s [really-safe-money-gen] /nix/store/mszdd971wbn8fa5jbcli2vfjbjxs17w3-really-safe-money-gen-0.0.0.0
  9943. 47.50 s [really-safe-money-gen] Executables installed in:
  9944. 47.50 s [really-safe-money-gen] /nix/store/mszdd971wbn8fa5jbcli2vfjbjxs17w3-really-safe-money-gen-0.0.0.0/bin
  9945. 47.50 s [really-safe-money-gen] Libraries installed in:
  9946. 47.50 s [really-safe-money-gen] /nix/store/mszdd971wbn8fa5jbcli2vfjbjxs17w3-really-safe-money-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h
  9947. 47.50 s [really-safe-money-gen] Dynamic Libraries installed in:
  9948. 47.50 s [really-safe-money-gen] /nix/store/mszdd971wbn8fa5jbcli2vfjbjxs17w3-really-safe-money-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6
  9949. 47.50 s [really-safe-money-gen] Private executables installed in:
  9950. 47.50 s [really-safe-money-gen] /nix/store/mszdd971wbn8fa5jbcli2vfjbjxs17w3-really-safe-money-gen-0.0.0.0/libexec/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-gen-0.0.0.0
  9951. 47.50 s [really-safe-money-gen] Data files installed in:
  9952. 47.50 s [really-safe-money-gen] /nix/store/mszdd971wbn8fa5jbcli2vfjbjxs17w3-really-safe-money-gen-0.0.0.0/share/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-gen-0.0.0.0
  9953. 47.50 s [really-safe-money-gen] Documentation installed in:
  9954. 47.50 s [really-safe-money-gen] /nix/store/83q7ddqxny8pph072bbyn0rcsyvmywr1-really-safe-money-gen-0.0.0.0-doc/share/doc/really-safe-money-gen-0.0.0.0
  9955. 47.50 s [really-safe-money-gen] Configuration files installed in:
  9956. 47.50 s [really-safe-money-gen] /nix/store/mszdd971wbn8fa5jbcli2vfjbjxs17w3-really-safe-money-gen-0.0.0.0/etc
  9957. 47.50 s [really-safe-money-gen] No alex found
  9958. 47.50 s [really-safe-money-gen] Using ar found on system at:
  9959. 47.50 s [really-safe-money-gen] /nix/store/iz5lckcsg66r223si2gck7csk2hihj0m-binutils-wrapper-2.44/bin/ar
  9960. 47.50 s [really-safe-money-gen] No c2hs found
  9961. 47.50 s [really-safe-money-gen] No cpphs found
  9962. 47.50 s [really-safe-money-gen] No doctest found
  9963. 47.50 s [really-safe-money-gen] Using gcc version 14.3.0 given by user at:
  9964. 47.50 s [really-safe-money-gen] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/gcc
  9965. 47.50 s [really-safe-money-gen] Using ghc version 9.10.3 found on system at:
  9966. 47.50 s [really-safe-money-gen] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc
  9967. 47.50 s [really-safe-money-gen] Using ghc-pkg version 9.10.3 found on system at:
  9968. 47.50 s [really-safe-money-gen] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc-pkg-9.10.3
  9969. 47.50 s [really-safe-money-gen] No ghcjs found
  9970. 47.50 s [really-safe-money-gen] No ghcjs-pkg found
  9971. 47.50 s [really-safe-money-gen] No greencard found
  9972. 47.50 s [really-safe-money-gen] Using haddock version 2.31.1 found on system at:
  9973. 47.50 s [really-safe-money-gen] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/haddock-ghc-9.10.3
  9974. 47.51 s [really-safe-money-gen] No happy found
  9975. 47.51 s [really-safe-money-gen] Using haskell-suite found on system at: haskell-suite-dummy-location
  9976. 47.51 s [really-safe-money-gen] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location
  9977. 47.51 s [really-safe-money-gen] No hmake found
  9978. 47.51 s [really-safe-money-gen] Using hpc version 0.69 found on system at:
  9979. 47.51 s [really-safe-money-gen] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hpc-ghc-9.10.3
  9980. 47.51 s [really-safe-money-gen] Using hsc2hs version 0.68.10 found on system at:
  9981. 47.51 s [really-safe-money-gen] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hsc2hs-ghc-9.10.3
  9982. 47.51 s [really-safe-money-gen] Using hscolour version 1.25 found on system at:
  9983. 47.51 s [really-safe-money-gen] /nix/store/f755skyzf4jvfx3crwq9mmh3x4lsaz8i-hscolour-1.25/bin/HsColour
  9984. 47.51 s [really-safe-money-gen] No jhc found
  9985. 47.51 s [really-safe-money-gen] Using ld found on system at:
  9986. 47.51 s [really-safe-money-gen] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/ld
  9987. 47.51 s [really-safe-money-gen] No pkg-config found
  9988. 47.51 s [really-safe-money-gen] Using runghc version 9.10.3 found on system at:
  9989. 47.51 s [really-safe-money-gen] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/runghc-9.10.3
  9990. 47.51 s [really-safe-money-gen] Using strip version 2.44 found on system at:
  9991. 47.51 s [really-safe-money-gen] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/strip
  9992. 47.51 s [really-safe-money-gen] Using tar found on system at:
  9993. 47.51 s [really-safe-money-gen] /nix/store/xl6pd2spjajwcpq09fnmnjv5psqmlmma-gnutar-1.35/bin/tar
  9994. 47.51 s [really-safe-money-gen] No uhc found
  9995. 47.86 s [really-safe-money-gen] Phase: buildPhase
  9996. 47.93 s [really-safe-money-gen] Preprocessing library for really-safe-money-gen-0.0.0.0...
  9997. 47.93 s [really-safe-money-gen] Building library for really-safe-money-gen-0.0.0.0...
  9998. 48.02 s [really-safe-money-gen] [ 1 of 13] Compiling Money.Amount.Gen ( src/Money/Amount/Gen.hs, dist/build/Money/Amount/Gen.o, dist/build/Money/Amount/Gen.dyn_o )
  9999. 48.35 s [really-safe-money-gen] [ 2 of 13] Compiling Money.Account.Gen ( src/Money/Account/Gen.hs, dist/build/Money/Account/Gen.o, dist/build/Money/Account/Gen.dyn_o )
  10000. 48.44 s [really-safe-money-gen] [ 3 of 13] Compiling Money.AccountOf.Gen ( src/Money/AccountOf/Gen.hs, dist/build/Money/AccountOf/Gen.o, dist/build/Money/AccountOf/Gen.dyn_o )
  10001. 48.48 s [really-safe-money-gen] [ 4 of 13] Compiling Money.AmountOf.Gen ( src/Money/AmountOf/Gen.hs, dist/build/Money/AmountOf/Gen.o, dist/build/Money/AmountOf/Gen.dyn_o )
  10002. 48.48 s [really-safe-money-gen] [ 5 of 13] Compiling Money.ConversionRate.Gen ( src/Money/ConversionRate/Gen.hs, dist/build/Money/ConversionRate/Gen.o, dist/build/Money/ConversionRate/Gen.dyn_o )
  10003. 48.48 s [really-safe-money-gen] [ 6 of 13] Compiling Money.ConversionRateOf.Gen ( src/Money/ConversionRateOf/Gen.hs, dist/build/Money/ConversionRateOf/Gen.o, dist/build/Money/ConversionRateOf/Gen.dyn_o )
  10004. 48.48 s [really-safe-money-gen] [ 7 of 13] Compiling Money.QuantisationFactor.Gen ( src/Money/QuantisationFactor/Gen.hs, dist/build/Money/QuantisationFactor/Gen.o, dist/build/Money/QuantisationFactor/Gen.dyn_o )
  10005. 48.48 s [really-safe-money-gen] [ 8 of 13] Compiling Money.Currency.Gen ( src/Money/Currency/Gen.hs, dist/build/Money/Currency/Gen.o, dist/build/Money/Currency/Gen.dyn_o )
  10006. 48.48 s [really-safe-money-gen] [ 9 of 13] Compiling Money.MultiAmount.Gen ( src/Money/MultiAmount/Gen.hs, dist/build/Money/MultiAmount/Gen.o, dist/build/Money/MultiAmount/Gen.dyn_o )
  10007. 48.48 s [really-safe-money-gen] [10 of 13] Compiling Money.MultiAccount.Gen ( src/Money/MultiAccount/Gen.hs, dist/build/Money/MultiAccount/Gen.o, dist/build/Money/MultiAccount/Gen.dyn_o )
  10008. 48.53 s [really-safe-money-gen] [11 of 13] Compiling Money.Gen ( src/Money/Gen.hs, dist/build/Money/Gen.o, dist/build/Money/Gen.dyn_o )
  10009. 48.55 s [really-safe-money-gen] [12 of 13] Compiling Numeric.DecimalLiteral.Gen ( src/Numeric/DecimalLiteral/Gen.hs, dist/build/Numeric/DecimalLiteral/Gen.o, dist/build/Numeric/DecimalLiteral/Gen.dyn_o )
  10010. 48.55 s [really-safe-money-gen] [13 of 13] Compiling Paths_really_safe_money_gen ( dist/build/autogen/Paths_really_safe_money_gen.hs, dist/build/Paths_really_safe_money_gen.o, dist/build/Paths_really_safe_money_gen.dyn_o )
  10011. 48.76 s [really-safe-money-gen] [ 1 of 13] Compiling Money.Amount.Gen ( src/Money/Amount/Gen.hs, dist/build/Money/Amount/Gen.p_o )
  10012. 49.14 s [really-safe-money-gen] [ 2 of 13] Compiling Money.Account.Gen ( src/Money/Account/Gen.hs, dist/build/Money/Account/Gen.p_o )
  10013. 49.32 s [really-safe-money-gen] [ 3 of 13] Compiling Money.AccountOf.Gen ( src/Money/AccountOf/Gen.hs, dist/build/Money/AccountOf/Gen.p_o )
  10014. 49.46 s [really-safe-money-gen] [ 4 of 13] Compiling Money.AmountOf.Gen ( src/Money/AmountOf/Gen.hs, dist/build/Money/AmountOf/Gen.p_o )
  10015. 49.46 s [really-safe-money-gen] [ 5 of 13] Compiling Money.ConversionRate.Gen ( src/Money/ConversionRate/Gen.hs, dist/build/Money/ConversionRate/Gen.p_o )
  10016. 49.46 s [really-safe-money-gen] [ 6 of 13] Compiling Money.ConversionRateOf.Gen ( src/Money/ConversionRateOf/Gen.hs, dist/build/Money/ConversionRateOf/Gen.p_o )
  10017. 49.46 s [really-safe-money-gen] [ 7 of 13] Compiling Money.QuantisationFactor.Gen ( src/Money/QuantisationFactor/Gen.hs, dist/build/Money/QuantisationFactor/Gen.p_o )
  10018. 49.46 s [really-safe-money-gen] [ 8 of 13] Compiling Money.Currency.Gen ( src/Money/Currency/Gen.hs, dist/build/Money/Currency/Gen.p_o )
  10019. 49.46 s [really-safe-money-gen] [ 9 of 13] Compiling Money.MultiAmount.Gen ( src/Money/MultiAmount/Gen.hs, dist/build/Money/MultiAmount/Gen.p_o )
  10020. 49.46 s [really-safe-money-gen] [10 of 13] Compiling Money.MultiAccount.Gen ( src/Money/MultiAccount/Gen.hs, dist/build/Money/MultiAccount/Gen.p_o )
  10021. 49.47 s [really-safe-money-gen] [11 of 13] Compiling Money.Gen ( src/Money/Gen.hs, dist/build/Money/Gen.p_o )
  10022. 49.58 s [really-safe-money-gen] [12 of 13] Compiling Numeric.DecimalLiteral.Gen ( src/Numeric/DecimalLiteral/Gen.hs, dist/build/Numeric/DecimalLiteral/Gen.p_o )
  10023. 49.58 s [really-safe-money-gen] [13 of 13] Compiling Paths_really_safe_money_gen ( dist/build/autogen/Paths_really_safe_money_gen.hs, dist/build/Paths_really_safe_money_gen.p_o )
  10024. 50.91 s [really-safe-money-gen] Preprocessing test suite 'really-safe-money-test' for really-safe-money-gen-0.0.0.0...
  10025. 50.91 s [really-safe-money-gen] Building test suite 'really-safe-money-test' for really-safe-money-gen-0.0.0.0...
  10026. 51.05 s [really-safe-money-gen] [ 1 of 14] Compiling Money.AccountSpec ( test/Money/AccountSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/AccountSpec.o )
  10027. 53.24 s [really-safe-money-gen] [ 2 of 14] Compiling Money.AmountSpec ( test/Money/AmountSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/AmountSpec.o )
  10028. 53.46 s [really-safe-money-gen] [ 3 of 14] Compiling Money.ConversionRateSpec ( test/Money/ConversionRateSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/ConversionRateSpec.o )
  10029. 53.48 s [really-safe-money-gen] [ 4 of 14] Compiling Money.Currency.TestUtils ( test/Money/Currency/TestUtils.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/Currency/TestUtils.o )
  10030. 53.48 s [really-safe-money-gen] [ 5 of 14] Compiling Money.ConversionRateOfSpec ( test/Money/ConversionRateOfSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/ConversionRateOfSpec.o )
  10031. 53.48 s [really-safe-money-gen] [ 6 of 14] Compiling Money.AmountOfSpec ( test/Money/AmountOfSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/AmountOfSpec.o )
  10032. 53.48 s [really-safe-money-gen] [ 7 of 14] Compiling Money.AccountOfSpec ( test/Money/AccountOfSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/AccountOfSpec.o )
  10033. 53.48 s [really-safe-money-gen] [ 8 of 14] Compiling Money.CurrencySpec ( test/Money/CurrencySpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/CurrencySpec.o )
  10034. 53.48 s [really-safe-money-gen] [ 9 of 14] Compiling Money.MultiAccountSpec ( test/Money/MultiAccountSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/MultiAccountSpec.o )
  10035. 53.48 s [really-safe-money-gen] [10 of 14] Compiling Money.MultiAmountSpec ( test/Money/MultiAmountSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/MultiAmountSpec.o )
  10036. 53.48 s [really-safe-money-gen] [11 of 14] Compiling Money.QuantisationFactorSpec ( test/Money/QuantisationFactorSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/QuantisationFactorSpec.o )
  10037. 53.48 s [really-safe-money-gen] [12 of 14] Compiling Numeric.DecimalLiteralSpec ( test/Numeric/DecimalLiteralSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Numeric/DecimalLiteralSpec.o )
  10038. 53.48 s [really-safe-money-gen] [13 of 14] Compiling Main ( test/Spec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Main.o )
  10039. 53.52 s [really-safe-money-gen] [14 of 14] Compiling Paths_really_safe_money_gen ( dist/build/really-safe-money-test/autogen/Paths_really_safe_money_gen.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Paths_really_safe_money_gen.o )
  10040. 53.83 s [really-safe-money-gen] [15 of 15] Linking dist/build/really-safe-money-test/really-safe-money-test
  10041. 55.32 s [really-safe-money-gen] Phase: checkPhase
  10042. 55.33 s [really-safe-money-gen] mutation-nix: collecting coverage for suite really-safe-money-gen
  10043. 57.04 s [really-safe-money-gen] coverage (3/1610): Numeric\.DecimalLiteralSpec.Natural.toNatural.renders to valid naturals (0 mutations)
  10044. 57.44 s [really-safe-money-gen] coverage (22/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational 9 % 100 into DecimalLiteral Nothing 9 2 (20 mutations)
  10045. 57.79 s [really-safe-money-gen] coverage (12/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational 5 % 1 into DecimalLiteral Nothing 5 0 (18 mutations)
  10046. 57.97 s [really-safe-money-gen] coverage (4/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral Nothing 9 2 into rational 9 % 100 (4 mutations)
  10047. 58.22 s [really-safe-money-gen] coverage (11/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational (-4) % 5 into DecimalLiteral (Just False) 8 1 (21 mutations)
  10048. 58.29 s [really-safe-money-gen] coverage (23/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral (Just False) 3 0 into rational (-3) % 1 (4 mutations)
  10049. 58.34 s [really-safe-money-gen] coverage (25/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational 7 % 1 into DecimalLiteral Nothing 7 0 (18 mutations)
  10050. 58.38 s [really-safe-money-gen] coverage (8/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral Nothing 10 0 into rational 10 % 1 (4 mutations)
  10051. 58.43 s [really-safe-money-gen] coverage (27/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational 240009 % 20000 into DecimalLiteral Nothing 1200045 5 (22 mutations)
  10052. 58.46 s [really-safe-money-gen] coverage (19/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational (-3) % 1 into DecimalLiteral (Just False) 3 0 (19 mutations)
  10053. 58.50 s [really-safe-money-gen] coverage (9/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral Nothing 50 1 into rational 5 % 1 (4 mutations)
  10054. 58.52 s [really-safe-money-gen] coverage (17/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral Nothing 20 4 into rational 1 % 500 (4 mutations)
  10055. 58.56 s [really-safe-money-gen] coverage (7/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational (-6) % 1 into DecimalLiteral (Just False) 6 0 (19 mutations)
  10056. 58.57 s [really-safe-money-gen] coverage (14/1610): Numeric\.DecimalLiteralSpec.Rational.fromRational.renders to valid decimal literals (23 mutations)
  10057. 58.59 s [really-safe-money-gen] coverage (15/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral (Just False) 600 2 into rational (-6) % 1 (4 mutations)
  10058. 58.63 s [really-safe-money-gen] coverage (28/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral (Just False) 1 3 into rational (-1) % 1000 (4 mutations)
  10059. 58.67 s [really-safe-money-gen] coverage (26/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral Nothing 1 0 into rational 1 % 1 (4 mutations)
  10060. 58.73 s [really-safe-money-gen] coverage (6/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational 1 % 500 into DecimalLiteral Nothing 2 3 (20 mutations)
  10061. 58.76 s [really-safe-money-gen] coverage (24/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational 1 % 1 into DecimalLiteral Nothing 1 0 (18 mutations)
  10062. 58.78 s [really-safe-money-gen] coverage (5/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational 400 % 1 into DecimalLiteral Nothing 400 0 (18 mutations)
  10063. 58.84 s [really-safe-money-gen] coverage (18/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational 10 % 1 into DecimalLiteral Nothing 10 0 (18 mutations)
  10064. 58.86 s [really-safe-money-gen] coverage (21/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral Nothing 2 0 into rational 2 % 1 (4 mutations)
  10065. 58.87 s [really-safe-money-gen] coverage (10/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational (-1) % 1000 into DecimalLiteral (Just False) 1 3 (21 mutations)
  10066. 58.94 s [really-safe-money-gen] coverage (2/1610): Numeric\.DecimalLiteralSpec.Natural.fromNatural.can parse any rendered literal (4 mutations)
  10067. 58.95 s [really-safe-money-gen] coverage (16/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral Nothing 400 0 into rational 400 % 1 (4 mutations)
  10068. 59.02 s [really-safe-money-gen] coverage (20/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral Nothing 7000 3 into rational 7 % 1 (4 mutations)
  10069. 59.02 s [really-safe-money-gen] coverage (1/1610): Numeric\.DecimalLiteralSpec.Natural.fromNatural.renders to valid decimal literals (1 mutations)
  10070. 59.09 s [really-safe-money-gen] coverage (13/1610): Numeric\.DecimalLiteralSpec.Rational.fromRational.can parse any rendered rational (26 mutations)
  10071. 60.11 s [really-safe-money-gen] coverage (29/1610): Numeric\.DecimalLiteralSpec.Rational.toRational.renders to valid rationals (4 mutations)
  10072. 60.40 s [really-safe-money-gen] coverage (31/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational 2 % 1 into DecimalLiteral Nothing 2 0 (18 mutations)
  10073. 60.68 s [really-safe-money-gen] coverage (32/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral Nothing 1200045 5 into rational 240009 % 20000 (4 mutations)
  10074. 60.93 s [really-safe-money-gen] coverage (34/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral (Just False) 300 5 into rational (-3) % 1000 (4 mutations)
  10075. 60.94 s [really-safe-money-gen] coverage (33/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral (Just False) 8 1 into rational (-4) % 5 (4 mutations)
  10076. 61.11 s [really-safe-money-gen] coverage (40/1610): Numeric\.DecimalLiteralSpec.setMinimumDigits.produces values with more than the given number of digits (6 mutations)
  10077. 61.14 s [really-safe-money-gen] coverage (38/1610): Numeric\.DecimalLiteralSpec.setMinimumDigits.does not change the value of the literal (9 mutations)
  10078. 61.18 s [really-safe-money-gen] coverage (37/1610): Numeric\.DecimalLiteralSpec.Ratio.toRatio.renders to valid rationals (5 mutations)
  10079. 61.19 s [really-safe-money-gen] coverage (42/1610): Numeric\.DecimalLiteralSpec.DecimalLiteral\.fromString.fails to parse scientific notation (15 mutations)
  10080. 61.19 s [really-safe-money-gen] coverage (41/1610): Numeric\.DecimalLiteralSpec.GenValid DecimalLiteral.genValid \:\: Gen DecimalLiteral.only generates valid 'DecimalLiteral's (0 mutations)
  10081. 61.19 s [really-safe-money-gen] coverage (36/1610): Numeric\.DecimalLiteralSpec.Ratio.fromRatio.renders to valid decimal literals (18 mutations)
  10082. 61.19 s [really-safe-money-gen] coverage (43/1610): Numeric\.DecimalLiteralSpec.DecimalLiteral\.fromString.can parse any rendered decimal literal (30 mutations)
  10083. 61.20 s [really-safe-money-gen] coverage (35/1610): Numeric\.DecimalLiteralSpec.Ratio.fromRatio.can parse any rendered rational (23 mutations)
  10084. 61.20 s [really-safe-money-gen] coverage (39/1610): Numeric\.DecimalLiteralSpec.setMinimumDigits.produces valid literals (6 mutations)
  10085. 61.20 s [really-safe-money-gen] coverage (30/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational (-3) % 1000 into DecimalLiteral (Just False) 3 3 (21 mutations)
  10086. 61.31 s [really-safe-money-gen] coverage (45/1610): Numeric\.DecimalLiteralSpec.Int.toInt.renders to valid words (6 mutations)
  10087. 61.45 s [really-safe-money-gen] coverage (44/1610): Numeric\.DecimalLiteralSpec.setSignOptional.produces valid values (0 mutations)
  10088. 61.45 s [really-safe-money-gen] coverage (47/1610): Numeric\.DecimalLiteralSpec.Int.fromInt.renders to valid decimal literals (7 mutations)
  10089. 61.48 s [really-safe-money-gen] coverage (46/1610): Numeric\.DecimalLiteralSpec.Int.fromInt.can parse any rendered literal (13 mutations)
  10090. 61.54 s [really-safe-money-gen] coverage (49/1610): Numeric\.DecimalLiteralSpec.Word.fromWord.renders to valid decimal literals (1 mutations)
  10091. 61.57 s [really-safe-money-gen] coverage (48/1610): Numeric\.DecimalLiteralSpec.DecimalLiteral\.fromStringM.does the same as DecimalLiteral\.fromString (11 mutations)
  10092. 61.58 s [really-safe-money-gen] coverage (51/1610): Numeric\.DecimalLiteralSpec.Word.toWord.renders to valid words (0 mutations)
  10093. 61.64 s [really-safe-money-gen] coverage (50/1610): Numeric\.DecimalLiteralSpec.Word.fromWord.can parse any rendered literal (4 mutations)
  10094. 61.75 s [really-safe-money-gen] coverage (55/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 300 5 (3 mutations)
  10095. 61.75 s [really-safe-money-gen] coverage (52/1610): Numeric\.DecimalLiteralSpec.toString.can render any decimal literal (2 mutations)
  10096. 61.84 s [really-safe-money-gen] coverage (53/1610): Numeric\.DecimalLiteralSpec.examples.can parse "+2" (18 mutations)
  10097. 61.84 s [really-safe-money-gen] coverage (54/1610): Numeric\.DecimalLiteralSpec.examples.can parse "1" (15 mutations)
  10098. 61.89 s [really-safe-money-gen] coverage (56/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 50 1 (1 mutations)
  10099. 63.00 s [really-safe-money-gen] coverage (57/1610): Numeric\.DecimalLiteralSpec.examples.can parse "400" (22 mutations)
  10100. 63.34 s [really-safe-money-gen] coverage (58/1610): Numeric\.DecimalLiteralSpec.examples.can parse "5\.0" (19 mutations)
  10101. 63.50 s [really-safe-money-gen] coverage (59/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 8 1 (3 mutations)
  10102. 63.83 s [really-safe-money-gen] coverage (60/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 1 3 (3 mutations)
  10103. 63.93 s [really-safe-money-gen] coverage (61/1610): Numeric\.DecimalLiteralSpec.examples.can parse "0\.00300" (22 mutations)
  10104. 63.95 s [really-safe-money-gen] coverage (62/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 7000 3 (1 mutations)
  10105. 64.01 s [really-safe-money-gen] coverage (63/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 20 4 (3 mutations)
  10106. 64.09 s [really-safe-money-gen] coverage (67/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 1200045 5 (1 mutations)
  10107. 64.10 s [really-safe-money-gen] coverage (64/1610): Numeric\.DecimalLiteralSpec.examples.can parse "12\.00045" (24 mutations)
  10108. 64.13 s [really-safe-money-gen] coverage (65/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 1 0 (1 mutations)
  10109. 64.14 s [really-safe-money-gen] coverage (69/1610): Numeric\.DecimalLiteralSpec.examples.can parse "6\.00" (22 mutations)
  10110. 64.15 s [really-safe-money-gen] coverage (70/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 600 2 (1 mutations)
  10111. 64.15 s [really-safe-money-gen] coverage (66/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral (Just True) 2 0 (1 mutations)
  10112. 64.16 s [really-safe-money-gen] coverage (68/1610): Numeric\.DecimalLiteralSpec.examples.can parse "0\.001" (20 mutations)
  10113. 64.20 s [really-safe-money-gen] coverage (71/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 9 2 (3 mutations)
  10114. 64.31 s [really-safe-money-gen] coverage (72/1610): Numeric\.DecimalLiteralSpec.examples.can parse "0\.8" (17 mutations)
  10115. 64.40 s [really-safe-money-gen] coverage (73/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 400 0 (1 mutations)
  10116. 64.51 s [really-safe-money-gen] coverage (79/1610): Numeric\.DecimalLiteralSpec.Integer.toInteger.renders to valid words (0 mutations)
  10117. 64.54 s [really-safe-money-gen] coverage (77/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral (Just False) 3 0 (1 mutations)
  10118. 64.54 s [really-safe-money-gen] coverage (76/1610): Numeric\.DecimalLiteralSpec.examples.can parse "-3" (15 mutations)
  10119. 64.55 s [really-safe-money-gen] coverage (75/1610): Numeric\.DecimalLiteralSpec.examples.can parse "7\.000" (22 mutations)
  10120. 64.55 s [really-safe-money-gen] coverage (74/1610): Numeric\.DecimalLiteralSpec.examples.can parse "0\.09" (20 mutations)
  10121. 64.65 s [really-safe-money-gen] coverage (78/1610): Numeric\.DecimalLiteralSpec.examples.can parse "0\.0020" (22 mutations)
  10122. 64.69 s [really-safe-money-gen] coverage (80/1610): Numeric\.DecimalLiteralSpec.Integer.fromInteger.renders to valid decimal literals (7 mutations)
  10123. 64.73 s [really-safe-money-gen] coverage (81/1610): Numeric\.DecimalLiteralSpec.Integer.fromInteger.can parse any rendered literal (7 mutations)
  10124. 64.83 s [really-safe-money-gen] coverage (83/1610): Numeric\.DecimalLiteralSpec.setSignRequired.produces valid values (1 mutations)
  10125. 64.84 s [really-safe-money-gen] coverage (82/1610): Numeric\.DecimalLiteralSpec.digits.produces valid numbers of digits (0 mutations)
  10126. 65.06 s [really-safe-money-gen] coverage (84/1610): Money\.ConversionRateSpec.Rational.toRational.produces valid rationals (0 mutations)
  10127. 66.45 s [really-safe-money-gen] coverage (85/1610): Money\.ConversionRateSpec.Rational.fromRational.roundtrips with toRational (11 mutations)
  10128. 66.82 s [really-safe-money-gen] coverage (87/1610): Money\.ConversionRateSpec.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10129. 66.88 s [really-safe-money-gen] coverage (86/1610): Money\.ConversionRateSpec.Rational.fromRational.produces valid conversion rates (11 mutations)
  10130. 66.89 s [really-safe-money-gen] coverage (89/1610): Money\.ConversionRateSpec.Ratio.toRatio.produces valid ratios (0 mutations)
  10131. 67.18 s [really-safe-money-gen] coverage (88/1610): Money\.ConversionRateSpec.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10132. 67.20 s [really-safe-money-gen] coverage (90/1610): Money\.ConversionRateSpec.invert.produces valid rates (8 mutations)
  10133. 67.27 s [really-safe-money-gen] coverage (98/1610): Money\.AccountSpec.Eq.Eq Account.(/=) \:\: Account -> Account -> Bool.is antireflexive for "valid Account"s (3 mutations)
  10134. 67.37 s [really-safe-money-gen] coverage (97/1610): Money\.AccountSpec.Eq.Eq Account.(/=) \:\: Account -> Account -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid Account"s (3 mutations)
  10135. 67.39 s [really-safe-money-gen] coverage (99/1610): Money\.AccountSpec.Eq.Eq Account.(==) \:\: Account -> Account -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid Account"s (3 mutations)
  10136. 67.42 s [really-safe-money-gen] coverage (95/1610): Money\.ConversionRateSpec.GenValid ConversionRate.genValid \:\: Gen ConversionRate.only generates valid 'ConversionRate's (6 mutations)
  10137. 67.47 s [really-safe-money-gen] coverage (103/1610): Money\.AccountSpec.Eq.says negative 0 equals positive 0 (3 mutations)
  10138. 67.50 s [really-safe-money-gen] coverage (100/1610): Money\.AccountSpec.Eq.Eq Account.(==) \:\: Account -> Account -> Bool.is transitive for "valid Account"s (3 mutations)
  10139. 67.56 s [really-safe-money-gen] coverage (101/1610): Money\.AccountSpec.Eq.Eq Account.(==) \:\: Account -> Account -> Bool.is symmetric for "valid Account"s (3 mutations)
  10140. 67.57 s [really-safe-money-gen] coverage (104/1610): Money\.AccountSpec.negate.produces valid amounts (1 mutations)
  10141. 67.58 s [really-safe-money-gen] coverage (94/1610): Money\.ConversionRateSpec.compose.produces valid rates (6 mutations)
  10142. 67.59 s [really-safe-money-gen] coverage (92/1610): Money\.ConversionRateSpec.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10143. 67.61 s [really-safe-money-gen] coverage (109/1610): Money\.AccountSpec.distribute.correctly distributes 5 into 3 (17 mutations)
  10144. 67.62 s [really-safe-money-gen] coverage (102/1610): Money\.AccountSpec.Eq.Eq Account.(==) \:\: Account -> Account -> Bool.is reflexive for "valid Account"s (3 mutations)
  10145. 67.71 s [really-safe-money-gen] coverage (110/1610): Money\.AccountSpec.distribute.correctly distributes 3 into 3 (17 mutations)
  10146. 67.71 s [really-safe-money-gen] coverage (108/1610): Money\.AccountSpec.convert.converts this USD to CHF correctly (17 mutations)
  10147. 67.72 s [really-safe-money-gen] coverage (96/1610): Money\.AccountSpec.Show Account and Read Account.are implemented such that read \. show == id for valid values (3 mutations)
  10148. 67.97 s [really-safe-money-gen] coverage (111/1610): Money\.AccountSpec.distribute.Eq (Distribution Account).(==) \:\: (Distribution Account) -> (Distribution Account) -> Bool.is symmetric for "valid (Distribution Account)"s (3 mutations)
  10149. 68.14 s [really-safe-money-gen] coverage (105/1610): Money\.AccountSpec.format.produces valid strings (6 mutations)
  10150. 68.20 s [really-safe-money-gen] coverage (112/1610): Money\.AccountSpec.distribute.Eq (Distribution Account).(==) \:\: (Distribution Account) -> (Distribution Account) -> Bool.is transitive for "valid (Distribution Account)"s (3 mutations)
  10151. 68.28 s [really-safe-money-gen] coverage (106/1610): Money\.AccountSpec.convert.succeeds in converting 1\:1 without rounding if the quantisation factor is the same (19 mutations)
  10152. 68.88 s [really-safe-money-gen] coverage (107/1610): Money\.AccountSpec.convert.produces valid amounts (17 mutations)
  10153. 69.45 s [really-safe-money-gen] coverage (113/1610): Money\.AccountSpec.distribute.Eq (Distribution Account).(==) \:\: (Distribution Account) -> (Distribution Account) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (Distribution Account)"s (3 mutations)
  10154. 69.82 s [really-safe-money-gen] coverage (115/1610): Money\.AccountSpec.distribute.Eq (Distribution Account).(/=) \:\: (Distribution Account) -> (Distribution Account) -> Bool.is antireflexive for "valid (Distribution Account)"s (3 mutations)
  10155. 69.87 s [really-safe-money-gen] coverage (116/1610): Money\.AccountSpec.distribute.Eq (Distribution Account).(/=) \:\: (Distribution Account) -> (Distribution Account) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (Distribution Account)"s (3 mutations)
  10156. 69.87 s [really-safe-money-gen] coverage (114/1610): Money\.AccountSpec.distribute.Eq (Distribution Account).(==) \:\: (Distribution Account) -> (Distribution Account) -> Bool.is reflexive for "valid (Distribution Account)"s (3 mutations)
  10157. 69.93 s [really-safe-money-gen] coverage (118/1610): Money\.AccountSpec.distribute.correctly distributes 10 into 4 (17 mutations)
  10158. 70.26 s [really-safe-money-gen] coverage (121/1610): Money\.AccountSpec.abs.produces valid amounts (1 mutations)
  10159. 70.27 s [really-safe-money-gen] coverage (131/1610): Money\.AccountSpec.rate.computes this USD to CHF rate correctly (10 mutations)
  10160. 70.27 s [really-safe-money-gen] coverage (122/1610): Money\.AccountSpec.fromAmount.produces valid accounts (1 mutations)
  10161. 70.32 s [really-safe-money-gen] coverage (134/1610): Money\.AccountSpec.Ord.says -6 is greater than -7 (2 mutations)
  10162. 70.46 s [really-safe-money-gen] coverage (117/1610): Money\.AccountSpec.distribute.produces results that sum up to the greater whole (45 mutations)
  10163. 70.47 s [really-safe-money-gen] coverage (127/1610): Money\.AccountSpec.fromMinimalQuantisations.roundtrips with toMinimalQuantisations (12 mutations)
  10164. 70.47 s [really-safe-money-gen] coverage (133/1610): Money\.AccountSpec.toDouble.produces an infinite or NaN Double with quantisation factor 0 (3 mutations)
  10165. 70.47 s [really-safe-money-gen] coverage (132/1610): Money\.AccountSpec.toDouble.produces valid Doubles when the quantisation factor is nonzero (3 mutations)
  10166. 70.52 s [really-safe-money-gen] coverage (120/1610): Money\.AccountSpec.distribute.produces valid amounts (28 mutations)
  10167. 70.55 s [really-safe-money-gen] coverage (128/1610): Money\.AccountSpec.fromMinimalQuantisations.produces valid accounts (10 mutations)
  10168. 70.55 s [really-safe-money-gen] coverage (124/1610): Money\.AccountSpec.fromRational.produces valid rational (19 mutations)
  10169. 70.61 s [really-safe-money-gen] coverage (126/1610): Money\.AccountSpec.fromRatio.roundtrips with toRatio (16 mutations)
  10170. 70.62 s [really-safe-money-gen] coverage (125/1610): Money\.AccountSpec.fromRatio.produces valid rational (14 mutations)
  10171. 70.63 s [really-safe-money-gen] coverage (123/1610): Money\.AccountSpec.fromRational.roundtrips with toRational (23 mutations)
  10172. 70.92 s [really-safe-money-gen] coverage (138/1610): Money\.AccountSpec.Ord.Ord Account."min \:\: (Account -> Account -> Account)".is equivalent to (\\a b -> if a <= b then a else b) for "valid Account"'s (3 mutations)
  10173. 70.96 s [really-safe-money-gen] coverage (130/1610): Money\.AccountSpec.rate.produces valid conversion rates (11 mutations)
  10174. 71.16 s [really-safe-money-gen] coverage (140/1610): Money\.AccountSpec.Ord.Ord Account.(<=) \:\: Account -> Account -> Bool.is equivalent to (\\a b -> compare a b /= GT) for "valid Account"'s (3 mutations)
  10175. 71.19 s [really-safe-money-gen] coverage (139/1610): Money\.AccountSpec.Ord.Ord Account.(<=) \:\: Account -> Account -> Bool.is transitive for "valid Account"'s (3 mutations)
  10176. 71.47 s [really-safe-money-gen] coverage (119/1610): Money\.AccountSpec.distribute.Show (Distribution Account) and Read (Distribution Account).are implemented such that read \. show == id for valid values (3 mutations)
  10177. 71.98 s [really-safe-money-gen] coverage (141/1610): Money\.AccountSpec.Ord.Ord Account.(<=) \:\: Account -> Account -> Bool.is antisymmetric for "valid Account"'s (3 mutations)
  10178. 72.09 s [really-safe-money-gen] coverage (129/1610): Money\.AccountSpec.rate.computes a rate that can be used to do a conversion without rounding (22 mutations)
  10179. 72.53 s [really-safe-money-gen] coverage (142/1610): Money\.AccountSpec.Ord.Ord Account.(<=) \:\: Account -> Account -> Bool.is reflexive for "valid Account"'s (3 mutations)
  10180. 72.55 s [really-safe-money-gen] coverage (136/1610): Money\.AccountSpec.Ord.says -3 is smaller than 2 (2 mutations)
  10181. 72.89 s [really-safe-money-gen] coverage (145/1610): Money\.AccountSpec.Ord.Ord Account.(>) \:\: Account -> Account -> Bool.is antireflexive for "valid Account"'s (3 mutations)
  10182. 72.89 s [really-safe-money-gen] coverage (143/1610): Money\.AccountSpec.Ord.Ord Account.(>) \:\: Account -> Account -> Bool.is transitive for "valid Account"'s (3 mutations)
  10183. 73.09 s [really-safe-money-gen] coverage (144/1610): Money\.AccountSpec.Ord.Ord Account.(>) \:\: Account -> Account -> Bool.is equivalent to (\\a b -> compare a b == GT) for "valid Account"'s (3 mutations)
  10184. 73.34 s [really-safe-money-gen] coverage (148/1610): Money\.AccountSpec.Ord.Ord Account.(<) \:\: Account -> Account -> Bool.is antireflexive for "valid Account"'s (3 mutations)
  10185. 73.46 s [really-safe-money-gen] coverage (150/1610): Money\.AccountSpec.Ord.Ord Account.(>=) \:\: Account -> Account -> Bool.is antisymmetric for "valid Account"'s (3 mutations)
  10186. 73.55 s [really-safe-money-gen] coverage (146/1610): Money\.AccountSpec.Ord.Ord Account.(<) \:\: Account -> Account -> Bool.is transitive for "valid Account"'s (3 mutations)
  10187. 73.58 s [really-safe-money-gen] coverage (151/1610): Money\.AccountSpec.Ord.Ord Account.(>=) \:\: Account -> Account -> Bool.is equivalent to (\\a b -> compare a b /= LT) for "valid Account"'s (3 mutations)
  10188. 73.61 s [really-safe-money-gen] coverage (135/1610): Money\.AccountSpec.Ord.says 4 is smaller than 5 (2 mutations)
  10189. 73.65 s [really-safe-money-gen] coverage (156/1610): Money\.AccountSpec.sum.fails to sum above maxBound even if the result is back below maxBound (5 mutations)
  10190. 73.69 s [really-safe-money-gen] coverage (157/1610): Money\.AccountSpec.sum.fails to sum above maxBound (5 mutations)
  10191. 73.70 s [really-safe-money-gen] coverage (158/1610): Money\.AccountSpec.sum.correctly sums [1,2,3] to 6 (7 mutations)
  10192. 73.73 s [really-safe-money-gen] coverage (147/1610): Money\.AccountSpec.Ord.Ord Account.(<) \:\: Account -> Account -> Bool.is equivalent to (\\a b -> compare a b == LT) for "valid Account"'s (3 mutations)
  10193. 73.79 s [really-safe-money-gen] coverage (152/1610): Money\.AccountSpec.Ord.Ord Account.(>=) \:\: Account -> Account -> Bool.is transitive for "valid Account"'s (3 mutations)
  10194. 73.80 s [really-safe-money-gen] coverage (149/1610): Money\.AccountSpec.Ord.Ord Account.(>=) \:\: Account -> Account -> Bool.is reflexive for "valid Account"'s (3 mutations)
  10195. 73.90 s [really-safe-money-gen] coverage (153/1610): Money\.AccountSpec.toRatio.produces valid Ratios when the quantisation factor is nonzero (1 mutations)
  10196. 74.24 s [really-safe-money-gen] coverage (154/1610): Money\.AccountSpec.fractionRatio.produces valid amounts (15 mutations)
  10197. 74.31 s [really-safe-money-gen] coverage (160/1610): Money\.AccountSpec.toMinimalQuantisations.produces valid accounts (3 mutations)
  10198. 74.33 s [really-safe-money-gen] coverage (162/1610): Money\.AccountSpec.add.fails for minBound + (-1) (4 mutations)
  10199. 74.72 s [really-safe-money-gen] coverage (163/1610): Money\.AccountSpec.add.fails for minBound + minBound (4 mutations)
  10200. 74.78 s [really-safe-money-gen] coverage (161/1610): Money\.AccountSpec.add.is commutative (16 mutations)
  10201. 74.98 s [really-safe-money-gen] coverage (155/1610): Money\.AccountSpec.sum.produces valid amounts (17 mutations)
  10202. 75.48 s [really-safe-money-gen] coverage (164/1610): Money\.AccountSpec.add.produces valid amounts (16 mutations)
  10203. 75.48 s [really-safe-money-gen] coverage (159/1610): Money\.AccountSpec.sum.matches what you would get with Integer, if nothing fails (17 mutations)
  10204. 75.62 s [really-safe-money-gen] coverage (165/1610): Money\.AccountSpec.add.has a right-identity\: zero (17 mutations)
  10205. 75.72 s [really-safe-money-gen] coverage (166/1610): Money\.AccountSpec.add.fails for maxBound + 1 (4 mutations)
  10206. 75.79 s [really-safe-money-gen] coverage (167/1610): Money\.AccountSpec.add.fails for maxBound + maxBound (4 mutations)
  10207. 76.42 s [really-safe-money-gen] coverage (169/1610): Money\.AccountSpec.add.has a left-identity\: zero (17 mutations)
  10208. 76.57 s [really-safe-money-gen] coverage (172/1610): Money\.AccountSpec.DecimalLiteral.can turn DecimalLiteral (Just True) 1 0 into decimalLiteral QuantisationFactor {unQuantisationFactor = 1} (24 mutations)
  10209. 76.74 s [really-safe-money-gen] coverage (174/1610): Money\.AccountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100} into DecimalLiteral (Just False) 4 2 (27 mutations)
  10210. 76.74 s [really-safe-money-gen] coverage (173/1610): Money\.AccountSpec.DecimalLiteral.can turn DecimalLiteral (Just True) 500 8 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100000000} (24 mutations)
  10211. 76.77 s [really-safe-money-gen] coverage (171/1610): Money\.AccountSpec.DecimalLiteral.can turn DecimalLiteral (Just True) 3 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100} (24 mutations)
  10212. 76.80 s [really-safe-money-gen] coverage (175/1610): Money\.AccountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100} into DecimalLiteral (Just False) 200 2 (27 mutations)
  10213. 76.82 s [really-safe-money-gen] coverage (170/1610): Money\.AccountSpec.add.matches what you would get with Integer, if nothing fails (16 mutations)
  10214. 76.83 s [really-safe-money-gen] coverage (137/1610): Money\.AccountSpec.Ord.Ord Account."max \:\: (Account -> Account -> Account)".is equivalent to (\\a b -> if a >= b then a else b) for "valid Account"'s (3 mutations)
  10215. 76.85 s [really-safe-money-gen] coverage (168/1610): Money\.AccountSpec.add.is associative when both succeed (16 mutations)
  10216. 76.88 s [really-safe-money-gen] coverage (176/1610): Money\.AccountSpec.DecimalLiteral.can turn DecimalLiteral (Just True) 100 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100} (24 mutations)
  10217. 76.89 s [really-safe-money-gen] coverage (179/1610): Money\.AccountSpec.DecimalLiteral.can turn DecimalLiteral (Just True) 500 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 20} (24 mutations)
  10218. 76.98 s [really-safe-money-gen] coverage (180/1610): Money\.AccountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100} into DecimalLiteral (Just True) 3 2 (27 mutations)
  10219. 77.00 s [really-safe-money-gen] coverage (178/1610): Money\.AccountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 20} into DecimalLiteral (Just False) 600 2 (27 mutations)
  10220. 77.02 s [really-safe-money-gen] coverage (177/1610): Money\.AccountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 20} into DecimalLiteral (Just True) 500 2 (27 mutations)
  10221. 77.27 s [really-safe-money-gen] coverage (181/1610): Money\.AccountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 20} into DecimalLiteral (Just True) 10 2 (29 mutations)
  10222. 77.48 s [really-safe-money-gen] coverage (182/1610): Money\.AccountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100} into DecimalLiteral (Just True) 100 2 (27 mutations)
  10223. 77.88 s [really-safe-money-gen] coverage (187/1610): Money\.AccountSpec.DecimalLiteral.can turn DecimalLiteral (Just False) 600 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 20} (24 mutations)
  10224. 77.97 s [really-safe-money-gen] coverage (186/1610): Money\.AccountSpec.DecimalLiteral.can turn DecimalLiteral (Just False) 4 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100} (24 mutations)
  10225. 78.10 s [really-safe-money-gen] coverage (185/1610): Money\.AccountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 1} into DecimalLiteral (Just True) 1 0 (25 mutations)
  10226. 78.62 s [really-safe-money-gen] coverage (189/1610): Money\.AccountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 1} into DecimalLiteral (Just False) 2 0 (25 mutations)
  10227. 78.65 s [really-safe-money-gen] coverage (193/1610): Money\.AccountSpec.DecimalLiteral.Account\.fromDecimalLiteral.fails on this amount that is too precise:1 (13 mutations)
  10228. 78.67 s [really-safe-money-gen] coverage (195/1610): Money\.AccountSpec.DecimalLiteral.can turn DecimalLiteral (Just False) 2 0 into decimalLiteral QuantisationFactor {unQuantisationFactor = 1} (24 mutations)
  10229. 78.77 s [really-safe-money-gen] coverage (188/1610): Money\.AccountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 20} into DecimalLiteral (Just False) 20 2 (29 mutations)
  10230. 78.77 s [really-safe-money-gen] coverage (190/1610): Money\.AccountSpec.DecimalLiteral.can turn DecimalLiteral (Just False) 20 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 20} (24 mutations)
  10231. 79.49 s [really-safe-money-gen] coverage (194/1610): Money\.AccountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100000000} into DecimalLiteral (Just True) 500 8 (29 mutations)
  10232. 79.61 s [really-safe-money-gen] coverage (197/1610): Money\.AccountSpec.DecimalLiteral.can turn DecimalLiteral (Just False) 200 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100} (24 mutations)
  10233. 79.70 s [really-safe-money-gen] coverage (191/1610): Money\.AccountSpec.DecimalLiteral.Account\.fromDecimalLiteral.fails on this amount that is too precise (13 mutations)
  10234. 79.77 s [really-safe-money-gen] coverage (201/1610): Money\.AccountSpec.subtract.fails for minBound - 1 (4 mutations)
  10235. 79.85 s [really-safe-money-gen] coverage (203/1610): Money\.AccountSpec.subtract.fails for maxBound - minBound (4 mutations)
  10236. 79.88 s [really-safe-money-gen] coverage (204/1610): Money\.AccountSpec.multiply.fails for 3 * minBound (4 mutations)
  10237. 79.89 s [really-safe-money-gen] coverage (202/1610): Money\.AccountSpec.subtract.fails for minBound - maxBound (4 mutations)
  10238. 79.90 s [really-safe-money-gen] coverage (196/1610): Money\.AccountSpec.DecimalLiteral.can turn DecimalLiteral (Just True) 10 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 20} (24 mutations)
  10239. 79.92 s [really-safe-money-gen] coverage (192/1610): Money\.AccountSpec.DecimalLiteral.Account\.fromDecimalLiteral.produces valid factors (22 mutations)
  10240. 80.16 s [really-safe-money-gen] coverage (198/1610): Money\.AccountSpec.fromDouble.produces valid rational (28 mutations)
  10241. 80.20 s [really-safe-money-gen] coverage (200/1610): Money\.AccountSpec.subtract.matches what you would get with Integer, if nothing fails (16 mutations)
  10242. 80.22 s [really-safe-money-gen] coverage (205/1610): Money\.AccountSpec.multiply.is absorbed by 0 (15 mutations)
  10243. 80.23 s [really-safe-money-gen] coverage (206/1610): Money\.AccountSpec.multiply.produces valid amounts (15 mutations)
  10244. 80.26 s [really-safe-money-gen] coverage (199/1610): Money\.AccountSpec.fromDouble.roundtrips with toDouble back to double (30 mutations)
  10245. 80.28 s [really-safe-money-gen] coverage (207/1610): Money\.AccountSpec.multiply.succeeds for 3 * 6 (14 mutations)
  10246. 80.69 s [really-safe-money-gen] coverage (212/1610): Money\.AccountSpec.GenValid Account.genValid \:\: Gen Account.only generates valid 'Account's (1 mutations)
  10247. 81.04 s [really-safe-money-gen] coverage (211/1610): Money\.AccountSpec.multiply.fails for 2 * maxbound (4 mutations)
  10248. 81.07 s [really-safe-money-gen] coverage (210/1610): Money\.AccountSpec.multiply.matches what you would get with Integer, if nothing fails (15 mutations)
  10249. 81.24 s [really-safe-money-gen] coverage (208/1610): Money\.AccountSpec.multiply.has an identity\: 1 (15 mutations)
  10250. 81.44 s [really-safe-money-gen] coverage (213/1610): Money\.AccountSpec.fraction.Correctly fractions 101 with 1 % 100 (23 mutations)
  10251. 81.50 s [really-safe-money-gen] coverage (223/1610): Money\.MultiAmountSpec.zero.is valid (2 mutations)
  10252. 81.87 s [really-safe-money-gen] coverage (224/1610): Money\.MultiAmountSpec.Eq (MultiAmount Currency).(/=) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is antireflexive for "valid (MultiAmount Currency)"s (2 mutations)
  10253. 81.89 s [really-safe-money-gen] coverage (219/1610): Money\.AccountSpec.toRational.produces valid Rationals when the quantisation factor is nonzero (3 mutations)
  10254. 82.06 s [really-safe-money-gen] coverage (209/1610): Money\.AccountSpec.multiply.is distributive with add when both succeed (28 mutations)
  10255. 82.47 s [really-safe-money-gen] coverage (226/1610): Money\.MultiAmountSpec.Eq (MultiAmount Currency).(==) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is transitive for "valid (MultiAmount Currency)"s (1 mutations)
  10256. 82.78 s [really-safe-money-gen] coverage (231/1610): Money\.MultiAmountSpec.Ord (MultiAmount Currency).(<) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is antireflexive for "valid (MultiAmount Currency)"'s (2 mutations)
  10257. 82.78 s [really-safe-money-gen] coverage (227/1610): Money\.MultiAmountSpec.Eq (MultiAmount Currency).(==) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is symmetric for "valid (MultiAmount Currency)"s (1 mutations)
  10258. 82.89 s [really-safe-money-gen] coverage (229/1610): Money\.MultiAmountSpec.Eq (MultiAmount Currency).(==) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is reflexive for "valid (MultiAmount Currency)"s (2 mutations)
  10259. 82.98 s [really-safe-money-gen] coverage (234/1610): Money\.MultiAmountSpec.Ord (MultiAmount Currency).(<=) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is reflexive for "valid (MultiAmount Currency)"'s (2 mutations)
  10260. 82.99 s [really-safe-money-gen] coverage (228/1610): Money\.MultiAmountSpec.Eq (MultiAmount Currency).(==) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (MultiAmount Currency)"s (1 mutations)
  10261. 83.03 s [really-safe-money-gen] coverage (232/1610): Money\.MultiAmountSpec.Ord (MultiAmount Currency).(<) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is transitive for "valid (MultiAmount Currency)"'s (2 mutations)
  10262. 83.13 s [really-safe-money-gen] coverage (233/1610): Money\.MultiAmountSpec.Ord (MultiAmount Currency).(<) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is equivalent to (\\a b -> compare a b == LT) for "valid (MultiAmount Currency)"'s (2 mutations)
  10263. 83.29 s [really-safe-money-gen] coverage (221/1610): Money\.MultiAmountSpec.fromAmount.produces valid amounts (16 mutations)
  10264. 83.57 s [really-safe-money-gen] coverage (230/1610): Money\.MultiAmountSpec.sum.produces valid amounts (23 mutations)
  10265. 83.60 s [really-safe-money-gen] coverage (222/1610): Money\.MultiAmountSpec.Show (MultiAmount Currency) and Read (MultiAmount Currency).are implemented such that read \. show == id for valid values (2 mutations)
  10266. 83.88 s [really-safe-money-gen] coverage (220/1610): Money\.AccountSpec.toRational.produces an invalid Rational with quantisation factor 0 (4 mutations)
  10267. 83.88 s [really-safe-money-gen] coverage (214/1610): Money\.AccountSpec.fraction.produces valid amounts (28 mutations)
  10268. 84.03 s [really-safe-money-gen] coverage (215/1610): Money\.AccountSpec.fraction.Produces a result that can be multiplied back (28 mutations)
  10269. 84.04 s [really-safe-money-gen] coverage (217/1610): Money\.AccountSpec.fraction.Produces a result that has been rounded in the right direction when using RoundDown (24 mutations)
  10270. 84.04 s [really-safe-money-gen] coverage (218/1610): Money\.AccountSpec.fraction.Produces a result that has been rounded in the right direction when using RoundUp (24 mutations)
  10271. 84.22 s [really-safe-money-gen] coverage (225/1610): Money\.MultiAmountSpec.Eq (MultiAmount Currency).(/=) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (MultiAmount Currency)"s (1 mutations)
  10272. 84.31 s [really-safe-money-gen] coverage (239/1610): Money\.MultiAmountSpec.Ord (MultiAmount Currency).(>=) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is antisymmetric for "valid (MultiAmount Currency)"'s (2 mutations)
  10273. 84.31 s [really-safe-money-gen] coverage (240/1610): Money\.MultiAmountSpec.Ord (MultiAmount Currency).(>=) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is reflexive for "valid (MultiAmount Currency)"'s (2 mutations)
  10274. 84.67 s [really-safe-money-gen] coverage (242/1610): Money\.MultiAmountSpec.Ord (MultiAmount Currency).(>=) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is equivalent to (\\a b -> compare a b /= LT) for "valid (MultiAmount Currency)"'s (2 mutations)
  10275. 84.86 s [really-safe-money-gen] coverage (241/1610): Money\.MultiAmountSpec.Ord (MultiAmount Currency).(>=) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is transitive for "valid (MultiAmount Currency)"'s (2 mutations)
  10276. 85.12 s [really-safe-money-gen] coverage (243/1610): Money\.MultiAmountSpec.Ord (MultiAmount Currency)."max \:\: (MultiAmount Currency -> MultiAmount Currency -> MultiAmount Currency)".is equivalent to (\\a b -> if a >= b then a else b) for "valid (MultiAmount Currency)"'s (2 mutations)
  10277. 85.27 s [really-safe-money-gen] coverage (252/1610): Money\.MultiAmountSpec.add.has a left-identity\: zero (4 mutations)
  10278. 85.33 s [really-safe-money-gen] coverage (244/1610): Money\.MultiAmountSpec.Ord (MultiAmount Currency).(>) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is antireflexive for "valid (MultiAmount Currency)"'s (2 mutations)
  10279. 85.86 s [really-safe-money-gen] coverage (256/1610): Money\.MultiAmountSpec.subtractAmount.produces valid amounts (24 mutations)
  10280. 85.90 s [really-safe-money-gen] coverage (255/1610): Money\.MultiAmountSpec.addAmount.produces valid amounts (19 mutations)
  10281. 86.07 s [really-safe-money-gen] coverage (258/1610): Money\.MultiAmountSpec.subtract.produces valid amounts (24 mutations)
  10282. 86.08 s [really-safe-money-gen] coverage (248/1610): Money\.MultiAmountSpec.convertAll.produces valid results when converting two currencies to one (13 mutations)
  10283. 86.28 s [really-safe-money-gen] coverage (257/1610): Money\.MultiAmountSpec.GenValid (MultiAmount Currency).genValid \:\: Gen (MultiAmount Currency).only generates valid '(MultiAmount Currency)'s (13 mutations)
  10284. 86.32 s [really-safe-money-gen] coverage (245/1610): Money\.MultiAmountSpec.Ord (MultiAmount Currency).(>) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is transitive for "valid (MultiAmount Currency)"'s (2 mutations)
  10285. 86.52 s [really-safe-money-gen] coverage (238/1610): Money\.MultiAmountSpec.Ord (MultiAmount Currency)."min \:\: (MultiAmount Currency -> MultiAmount Currency -> MultiAmount Currency)".is equivalent to (\\a b -> if a <= b then a else b) for "valid (MultiAmount Currency)"'s (2 mutations)
  10286. 86.53 s [really-safe-money-gen] coverage (254/1610): Money\.MultiAmountSpec.add.is commutative (12 mutations)
  10287. 86.54 s [really-safe-money-gen] coverage (247/1610): Money\.MultiAmountSpec.convertAll.produces the right result in this example (8 mutations)
  10288. 86.69 s [really-safe-money-gen] coverage (246/1610): Money\.MultiAmountSpec.Ord (MultiAmount Currency).(>) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is equivalent to (\\a b -> compare a b == GT) for "valid (MultiAmount Currency)"'s (2 mutations)
  10289. 86.90 s [really-safe-money-gen] coverage (264/1610): Money\.AccountOfSpec.USD.Eq (AccountOf * USD).(/=) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (AccountOf * USD)"s (3 mutations)
  10290. 86.94 s [really-safe-money-gen] coverage (261/1610): Money\.MultiAmountSpec.lookupAmount.can find an added amount (4 mutations)
  10291. 86.98 s [really-safe-money-gen] coverage (237/1610): Money\.MultiAmountSpec.Ord (MultiAmount Currency).(<=) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is antisymmetric for "valid (MultiAmount Currency)"'s (2 mutations)
  10292. 87.11 s [really-safe-money-gen] coverage (253/1610): Money\.MultiAmountSpec.add.is associative when both succeed (12 mutations)
  10293. 87.13 s [really-safe-money-gen] coverage (236/1610): Money\.MultiAmountSpec.Ord (MultiAmount Currency).(<=) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is transitive for "valid (MultiAmount Currency)"'s (2 mutations)
  10294. 87.19 s [really-safe-money-gen] coverage (235/1610): Money\.MultiAmountSpec.Ord (MultiAmount Currency).(<=) \:\: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool.is equivalent to (\\a b -> compare a b /= GT) for "valid (MultiAmount Currency)"'s (2 mutations)
  10295. 87.21 s [really-safe-money-gen] coverage (260/1610): Money\.MultiAmountSpec.lookupAmount.produces valid amounts (2 mutations)
  10296. 87.22 s [really-safe-money-gen] coverage (266/1610): Money\.AccountOfSpec.USD.Eq (AccountOf * USD).(==) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is reflexive for "valid (AccountOf * USD)"s (3 mutations)
  10297. 87.40 s [really-safe-money-gen] coverage (251/1610): Money\.MultiAmountSpec.add.has a right-identity\: zero (2 mutations)
  10298. 87.74 s [really-safe-money-gen] coverage (263/1610): Money\.AccountOfSpec.USD.sum.matches what you would get with Integer, if nothing fails (17 mutations)
  10299. 87.74 s [really-safe-money-gen] coverage (268/1610): Money\.AccountOfSpec.USD.Eq (AccountOf * USD).(==) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is transitive for "valid (AccountOf * USD)"s (3 mutations)
  10300. 87.89 s [really-safe-money-gen] coverage (265/1610): Money\.AccountOfSpec.USD.Eq (AccountOf * USD).(/=) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is antireflexive for "valid (AccountOf * USD)"s (3 mutations)
  10301. 88.12 s [really-safe-money-gen] coverage (216/1610): Money\.AccountSpec.fraction.Correctly fractions 100 with 1 % 100 (23 mutations)
  10302. 88.19 s [really-safe-money-gen] coverage (269/1610): Money\.AccountOfSpec.USD.Eq (AccountOf * USD).(==) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (AccountOf * USD)"s (3 mutations)
  10303. 88.64 s [really-safe-money-gen] coverage (270/1610): Money\.AccountOfSpec.USD.add.has a right-identity\: zero (17 mutations)
  10304. 88.64 s [really-safe-money-gen] coverage (267/1610): Money\.AccountOfSpec.USD.Eq (AccountOf * USD).(==) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is symmetric for "valid (AccountOf * USD)"s (3 mutations)
  10305. 88.95 s [really-safe-money-gen] coverage (262/1610): Money\.AccountOfSpec.USD.sum.produces valid amounts (17 mutations)
  10306. 89.12 s [really-safe-money-gen] coverage (271/1610): Money\.AccountOfSpec.USD.add.is associative when both succeed (16 mutations)
  10307. 89.33 s [really-safe-money-gen] coverage (273/1610): Money\.AccountOfSpec.USD.add.produces valid amounts (16 mutations)
  10308. 89.36 s [really-safe-money-gen] coverage (272/1610): Money\.AccountOfSpec.USD.add.matches what you would get with Integer, if nothing fails (16 mutations)
  10309. 89.38 s [really-safe-money-gen] coverage (283/1610): Money\.AccountOfSpec.USD.Show (AccountOf * USD) and Read (AccountOf * USD).are implemented such that read \. show == id for valid values (3 mutations)
  10310. 89.39 s [really-safe-money-gen] coverage (259/1610): Money\.MultiAmountSpec.subtract.has a right-identity\: zero (2 mutations)
  10311. 89.41 s [really-safe-money-gen] coverage (249/1610): Money\.MultiAmountSpec.convertAll.does the same as 'convert' when there is only one amount (20 mutations)
  10312. 89.49 s [really-safe-money-gen] coverage (250/1610): Money\.MultiAmountSpec.add.produces valid amounts (23 mutations)
  10313. 89.70 s [really-safe-money-gen] coverage (287/1610): Money\.AccountOfSpec.USD.INR.convert.produces valid amounts (17 mutations)
  10314. 89.76 s [really-safe-money-gen] coverage (279/1610): Money\.AccountOfSpec.USD.fromAmount.produces valid AccountOfs (1 mutations)
  10315. 89.79 s [really-safe-money-gen] coverage (294/1610): Money\.AccountOfSpec.USD.fraction.Produces a result that can be multiplied back (28 mutations)
  10316. 89.94 s [really-safe-money-gen] coverage (296/1610): Money\.AccountOfSpec.USD.fromMinimalQuantisations.produces valid accounts (10 mutations)
  10317. 89.97 s [really-safe-money-gen] coverage (288/1610): Money\.AccountOfSpec.USD.ADA.rate.produces valid amounts (11 mutations)
  10318. 90.03 s [really-safe-money-gen] coverage (293/1610): Money\.AccountOfSpec.USD.fraction.produces valid amounts (28 mutations)
  10319. 90.05 s [really-safe-money-gen] coverage (297/1610): Money\.AccountOfSpec.USD.GenValid (AccountOf * USD).genValid \:\: Gen (AccountOf * USD).only generates valid '(AccountOf * USD)'s (1 mutations)
  10320. 90.12 s [really-safe-money-gen] coverage (292/1610): Money\.AccountOfSpec.USD.abs.produces valid amounts (1 mutations)
  10321. 90.23 s [really-safe-money-gen] coverage (298/1610): Money\.AccountOfSpec.USD.fromDouble.produces valid rational (28 mutations)
  10322. 90.57 s [really-safe-money-gen] coverage (286/1610): Money\.AccountOfSpec.USD.INR.rate.produces valid amounts (11 mutations)
  10323. 90.65 s [really-safe-money-gen] coverage (275/1610): Money\.AccountOfSpec.USD.add.has a left-identity\: zero (17 mutations)
  10324. 90.79 s [really-safe-money-gen] coverage (295/1610): Money\.AccountOfSpec.USD.fromMinimalQuantisations.roundtrips with toMinimalQuantisations (12 mutations)
  10325. 90.88 s [really-safe-money-gen] coverage (276/1610): Money\.AccountOfSpec.USD.fromAmountOf.produces valid AccountOfs (1 mutations)
  10326. 90.96 s [really-safe-money-gen] coverage (277/1610): Money\.AccountOfSpec.USD.toMinimalQuantisations.produces valid accounts (3 mutations)
  10327. 91.35 s [really-safe-money-gen] coverage (280/1610): Money\.AccountOfSpec.USD.negate.produces valid amounts (1 mutations)
  10328. 91.41 s [really-safe-money-gen] coverage (278/1610): Money\.AccountOfSpec.USD.toDouble.produces valid Doubles when the quantisation factor is nonzero (3 mutations)
  10329. 91.73 s [really-safe-money-gen] coverage (281/1610): Money\.AccountOfSpec.USD.USD.convert.produces valid amounts (17 mutations)
  10330. 91.88 s [really-safe-money-gen] coverage (282/1610): Money\.AccountOfSpec.USD.USD.rate.produces valid amounts (11 mutations)
  10331. 92.05 s [really-safe-money-gen] coverage (274/1610): Money\.AccountOfSpec.USD.add.is commutative (16 mutations)
  10332. 92.11 s [really-safe-money-gen] coverage (299/1610): Money\.AccountOfSpec.USD.fromDouble.roundtrips with toDouble (30 mutations)
  10333. 92.21 s [really-safe-money-gen] coverage (311/1610): Money\.AccountOfSpec.USD.Ord (AccountOf * USD).(<=) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is equivalent to (\\a b -> compare a b /= GT) for "valid (AccountOf * USD)"'s (3 mutations)
  10334. 92.21 s [really-safe-money-gen] coverage (313/1610): Money\.AccountOfSpec.USD.Ord (AccountOf * USD).(<=) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is antisymmetric for "valid (AccountOf * USD)"'s (3 mutations)
  10335. 92.21 s [really-safe-money-gen] coverage (325/1610): Money\.AccountOfSpec.USD.format.produces valid strings (6 mutations)
  10336. 92.22 s [really-safe-money-gen] coverage (314/1610): Money\.AccountOfSpec.USD.Ord (AccountOf * USD).(<=) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is transitive for "valid (AccountOf * USD)"'s (3 mutations)
  10337. 92.47 s [really-safe-money-gen] coverage (326/1610): Money\.AccountOfSpec.USD.subtract.matches what you would get with Integer, if nothing fails (16 mutations)
  10338. 92.55 s [really-safe-money-gen] coverage (328/1610): Money\.AccountOfSpec.USD.fromRational.roundtrips with toRational (23 mutations)
  10339. 92.58 s [really-safe-money-gen] coverage (327/1610): Money\.AccountOfSpec.USD.fromRational.produces valid rational (19 mutations)
  10340. 92.65 s [really-safe-money-gen] coverage (323/1610): Money\.AccountOfSpec.USD.distribute.Eq (Distribution (AccountOf * USD)).(==) \:\: (Distribution (AccountOf * USD)) -> (Distribution (AccountOf * USD)) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (Distribution (AccountOf * USD))"s (3 mutations)
  10341. 92.70 s [really-safe-money-gen] coverage (91/1610): Money\.ConversionRateSpec.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10342. 92.72 s [really-safe-money-gen] coverage (330/1610): Money\.AccountOfSpec.USD.multiply.has an identity\: 1 (15 mutations)
  10343. 92.74 s [really-safe-money-gen] coverage (329/1610): Money\.AccountOfSpec.USD.multiply.is absorbed by 0 (15 mutations)
  10344. 92.82 s [really-safe-money-gen] coverage (324/1610): Money\.AccountOfSpec.USD.distribute.produces valid amounts (28 mutations)
  10345. 92.87 s [really-safe-money-gen] coverage (331/1610): Money\.AccountOfSpec.USD.multiply.produces valid amounts (15 mutations)
  10346. 93.12 s [really-safe-money-gen] coverage (333/1610): Money\.AccountOfSpec.USD.multiply.is distributive with add when both succeed (28 mutations)
  10347. 93.33 s [really-safe-money-gen] coverage (335/1610): Money\.AccountOfSpec.INR.fromAmount.produces valid AccountOfs (1 mutations)
  10348. 93.40 s [really-safe-money-gen] coverage (332/1610): Money\.AccountOfSpec.USD.multiply.matches what you would get with Integer, if nothing fails (15 mutations)
  10349. 93.40 s [really-safe-money-gen] coverage (334/1610): Money\.AccountOfSpec.USD.toRational.produces valid Rationals when the quantisation factor is nonzero (3 mutations)
  10350. 93.53 s [really-safe-money-gen] coverage (336/1610): Money\.AccountOfSpec.INR.USD.convert.produces valid amounts (17 mutations)
  10351. 93.79 s [really-safe-money-gen] coverage (339/1610): Money\.AccountOfSpec.INR.abs.produces valid amounts (1 mutations)
  10352. 94.06 s [really-safe-money-gen] coverage (93/1610): Money\.ConversionRateSpec.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10353. 94.06 s [really-safe-money-gen] coverage (316/1610): Money\.AccountOfSpec.USD.distribute.produces results that sum up to the greater whole (45 mutations)
  10354. 94.16 s [really-safe-money-gen] coverage (309/1610): Money\.AccountOfSpec.USD.Ord (AccountOf * USD).(>=) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is transitive for "valid (AccountOf * USD)"'s (3 mutations)
  10355. 94.46 s [really-safe-money-gen] coverage (340/1610): Money\.AccountOfSpec.INR.add.produces valid amounts (16 mutations)
  10356. 94.67 s [really-safe-money-gen] coverage (300/1610): Money\.AccountOfSpec.USD.Ord (AccountOf * USD).(>) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is equivalent to (\\a b -> compare a b == GT) for "valid (AccountOf * USD)"'s (3 mutations)
  10357. 94.84 s [really-safe-money-gen] coverage (310/1610): Money\.AccountOfSpec.USD.Ord (AccountOf * USD)."max \:\: (AccountOf * USD -> AccountOf * USD -> AccountOf * USD)".is equivalent to (\\a b -> if a >= b then a else b) for "valid (AccountOf * USD)"'s (3 mutations)
  10358. 94.84 s [really-safe-money-gen] coverage (322/1610): Money\.AccountOfSpec.USD.distribute.Eq (Distribution (AccountOf * USD)).(==) \:\: (Distribution (AccountOf * USD)) -> (Distribution (AccountOf * USD)) -> Bool.is symmetric for "valid (Distribution (AccountOf * USD))"s (3 mutations)
  10359. 94.96 s [really-safe-money-gen] coverage (308/1610): Money\.AccountOfSpec.USD.Ord (AccountOf * USD).(>=) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is reflexive for "valid (AccountOf * USD)"'s (3 mutations)
  10360. 94.97 s [really-safe-money-gen] coverage (315/1610): Money\.AccountOfSpec.USD.Ord (AccountOf * USD)."min \:\: (AccountOf * USD -> AccountOf * USD -> AccountOf * USD)".is equivalent to (\\a b -> if a <= b then a else b) for "valid (AccountOf * USD)"'s (3 mutations)
  10361. 95.02 s [really-safe-money-gen] coverage (317/1610): Money\.AccountOfSpec.USD.distribute.Show (Distribution (AccountOf * USD)) and Read (Distribution (AccountOf * USD)).are implemented such that read \. show == id for valid values (3 mutations)
  10362. 95.06 s [really-safe-money-gen] coverage (321/1610): Money\.AccountOfSpec.USD.distribute.Eq (Distribution (AccountOf * USD)).(==) \:\: (Distribution (AccountOf * USD)) -> (Distribution (AccountOf * USD)) -> Bool.is transitive for "valid (Distribution (AccountOf * USD))"s (3 mutations)
  10363. 95.35 s [really-safe-money-gen] coverage (307/1610): Money\.AccountOfSpec.USD.Ord (AccountOf * USD).(>=) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is antisymmetric for "valid (AccountOf * USD)"'s (3 mutations)
  10364. 95.38 s [really-safe-money-gen] coverage (306/1610): Money\.AccountOfSpec.USD.Ord (AccountOf * USD).(>=) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is equivalent to (\\a b -> compare a b /= LT) for "valid (AccountOf * USD)"'s (3 mutations)
  10365. 95.42 s [really-safe-money-gen] coverage (305/1610): Money\.AccountOfSpec.USD.Ord (AccountOf * USD).(<) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is equivalent to (\\a b -> compare a b == LT) for "valid (AccountOf * USD)"'s (3 mutations)
  10366. 95.45 s [really-safe-money-gen] coverage (312/1610): Money\.AccountOfSpec.USD.Ord (AccountOf * USD).(<=) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is reflexive for "valid (AccountOf * USD)"'s (3 mutations)
  10367. 95.53 s [really-safe-money-gen] coverage (285/1610): Money\.AccountOfSpec.USD.BTC.convert.produces valid amounts (17 mutations)
  10368. 95.59 s [really-safe-money-gen] coverage (320/1610): Money\.AccountOfSpec.USD.distribute.Eq (Distribution (AccountOf * USD)).(==) \:\: (Distribution (AccountOf * USD)) -> (Distribution (AccountOf * USD)) -> Bool.is reflexive for "valid (Distribution (AccountOf * USD))"s (3 mutations)
  10369. 95.60 s [really-safe-money-gen] coverage (343/1610): Money\.AccountOfSpec.INR.add.is commutative (16 mutations)
  10370. 95.69 s [really-safe-money-gen] coverage (301/1610): Money\.AccountOfSpec.USD.Ord (AccountOf * USD).(>) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is antireflexive for "valid (AccountOf * USD)"'s (3 mutations)
  10371. 95.80 s [really-safe-money-gen] coverage (303/1610): Money\.AccountOfSpec.USD.Ord (AccountOf * USD).(<) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is transitive for "valid (AccountOf * USD)"'s (3 mutations)
  10372. 96.04 s [really-safe-money-gen] coverage (304/1610): Money\.AccountOfSpec.USD.Ord (AccountOf * USD).(<) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is antireflexive for "valid (AccountOf * USD)"'s (3 mutations)
  10373. 96.18 s [really-safe-money-gen] coverage (318/1610): Money\.AccountOfSpec.USD.distribute.Eq (Distribution (AccountOf * USD)).(/=) \:\: (Distribution (AccountOf * USD)) -> (Distribution (AccountOf * USD)) -> Bool.is antireflexive for "valid (Distribution (AccountOf * USD))"s (3 mutations)
  10374. 96.32 s [really-safe-money-gen] coverage (291/1610): Money\.AccountOfSpec.USD.CHF.rate.produces valid amounts (11 mutations)
  10375. 96.36 s [really-safe-money-gen] coverage (357/1610): Money\.AccountOfSpec.INR.distribute.produces valid amounts (28 mutations)
  10376. 96.50 s [really-safe-money-gen] coverage (319/1610): Money\.AccountOfSpec.USD.distribute.Eq (Distribution (AccountOf * USD)).(/=) \:\: (Distribution (AccountOf * USD)) -> (Distribution (AccountOf * USD)) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (Distribution (AccountOf * USD))"s (3 mutations)
  10377. 96.77 s [really-safe-money-gen] coverage (358/1610): Money\.AccountOfSpec.INR.fromAmountOf.produces valid AccountOfs (1 mutations)
  10378. 96.93 s [really-safe-money-gen] coverage (362/1610): Money\.AccountOfSpec.INR.Ord (AccountOf * INR).(>=) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is antisymmetric for "valid (AccountOf * INR)"'s (3 mutations)
  10379. 96.96 s [really-safe-money-gen] coverage (359/1610): Money\.AccountOfSpec.INR.sum.matches what you would get with Integer, if nothing fails (17 mutations)
  10380. 97.10 s [really-safe-money-gen] coverage (360/1610): Money\.AccountOfSpec.INR.sum.produces valid amounts (17 mutations)
  10381. 97.45 s [really-safe-money-gen] coverage (363/1610): Money\.AccountOfSpec.INR.Ord (AccountOf * INR).(>=) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is equivalent to (\\a b -> compare a b /= LT) for "valid (AccountOf * INR)"'s (3 mutations)
  10382. 97.64 s [really-safe-money-gen] coverage (364/1610): Money\.AccountOfSpec.INR.Ord (AccountOf * INR).(>=) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is reflexive for "valid (AccountOf * INR)"'s (3 mutations)
  10383. 97.72 s [really-safe-money-gen] coverage (289/1610): Money\.AccountOfSpec.USD.ADA.convert.produces valid amounts (17 mutations)
  10384. 97.77 s [really-safe-money-gen] coverage (365/1610): Money\.AccountOfSpec.INR.Ord (AccountOf * INR).(>=) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is transitive for "valid (AccountOf * INR)"'s (3 mutations)
  10385. 97.85 s [really-safe-money-gen] coverage (368/1610): Money\.AccountOfSpec.INR.Ord (AccountOf * INR).(<) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is equivalent to (\\a b -> compare a b == LT) for "valid (AccountOf * INR)"'s (3 mutations)
  10386. 97.89 s [really-safe-money-gen] coverage (366/1610): Money\.AccountOfSpec.INR.Ord (AccountOf * INR).(<) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is transitive for "valid (AccountOf * INR)"'s (3 mutations)
  10387. 97.95 s [really-safe-money-gen] coverage (367/1610): Money\.AccountOfSpec.INR.Ord (AccountOf * INR).(<) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is antireflexive for "valid (AccountOf * INR)"'s (3 mutations)
  10388. 98.02 s [really-safe-money-gen] coverage (290/1610): Money\.AccountOfSpec.USD.CHF.convert.produces valid amounts (17 mutations)
  10389. 98.23 s [really-safe-money-gen] coverage (370/1610): Money\.AccountOfSpec.INR.Ord (AccountOf * INR).(>) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is transitive for "valid (AccountOf * INR)"'s (3 mutations)
  10390. 98.34 s [really-safe-money-gen] coverage (369/1610): Money\.AccountOfSpec.INR.Ord (AccountOf * INR)."max \:\: (AccountOf * INR -> AccountOf * INR -> AccountOf * INR)".is equivalent to (\\a b -> if a >= b then a else b) for "valid (AccountOf * INR)"'s (3 mutations)
  10391. 98.36 s [really-safe-money-gen] coverage (302/1610): Money\.AccountOfSpec.USD.Ord (AccountOf * USD).(>) \:\: (AccountOf * USD) -> (AccountOf * USD) -> Bool.is transitive for "valid (AccountOf * USD)"'s (3 mutations)
  10392. 98.47 s [really-safe-money-gen] coverage (373/1610): Money\.AccountOfSpec.INR.Ord (AccountOf * INR).(<=) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is reflexive for "valid (AccountOf * INR)"'s (3 mutations)
  10393. 98.51 s [really-safe-money-gen] coverage (351/1610): Money\.AccountOfSpec.INR.distribute.Eq (Distribution (AccountOf * INR)).(/=) \:\: (Distribution (AccountOf * INR)) -> (Distribution (AccountOf * INR)) -> Bool.is antireflexive for "valid (Distribution (AccountOf * INR))"s (3 mutations)
  10394. 98.59 s [really-safe-money-gen] coverage (349/1610): Money\.AccountOfSpec.INR.distribute.produces results that sum up to the greater whole (45 mutations)
  10395. 98.61 s [really-safe-money-gen] coverage (347/1610): Money\.AccountOfSpec.INR.fraction.produces valid amounts (28 mutations)
  10396. 98.62 s [really-safe-money-gen] coverage (342/1610): Money\.AccountOfSpec.INR.add.has a left-identity\: zero (17 mutations)
  10397. 98.72 s [really-safe-money-gen] coverage (356/1610): Money\.AccountOfSpec.INR.distribute.Show (Distribution (AccountOf * INR)) and Read (Distribution (AccountOf * INR)).are implemented such that read \. show == id for valid values (3 mutations)
  10398. 98.91 s [really-safe-money-gen] coverage (346/1610): Money\.AccountOfSpec.INR.subtract.matches what you would get with Integer, if nothing fails (16 mutations)
  10399. 99.12 s [really-safe-money-gen] coverage (348/1610): Money\.AccountOfSpec.INR.fraction.Produces a result that can be multiplied back (28 mutations)
  10400. 99.16 s [really-safe-money-gen] coverage (371/1610): Money\.AccountOfSpec.INR.Ord (AccountOf * INR).(>) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is equivalent to (\\a b -> compare a b == GT) for "valid (AccountOf * INR)"'s (3 mutations)
  10401. 99.28 s [really-safe-money-gen] coverage (345/1610): Money\.AccountOfSpec.INR.add.matches what you would get with Integer, if nothing fails (16 mutations)
  10402. 99.41 s [really-safe-money-gen] coverage (350/1610): Money\.AccountOfSpec.INR.distribute.Eq (Distribution (AccountOf * INR)).(/=) \:\: (Distribution (AccountOf * INR)) -> (Distribution (AccountOf * INR)) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (Distribution (AccountOf * INR))"s (3 mutations)
  10403. 99.70 s [really-safe-money-gen] coverage (355/1610): Money\.AccountOfSpec.INR.distribute.Eq (Distribution (AccountOf * INR)).(==) \:\: (Distribution (AccountOf * INR)) -> (Distribution (AccountOf * INR)) -> Bool.is symmetric for "valid (Distribution (AccountOf * INR))"s (3 mutations)
  10404. 99.88 s [really-safe-money-gen] coverage (354/1610): Money\.AccountOfSpec.INR.distribute.Eq (Distribution (AccountOf * INR)).(==) \:\: (Distribution (AccountOf * INR)) -> (Distribution (AccountOf * INR)) -> Bool.is reflexive for "valid (Distribution (AccountOf * INR))"s (3 mutations)
  10405. 99.90 s [really-safe-money-gen] coverage (352/1610): Money\.AccountOfSpec.INR.distribute.Eq (Distribution (AccountOf * INR)).(==) \:\: (Distribution (AccountOf * INR)) -> (Distribution (AccountOf * INR)) -> Bool.is transitive for "valid (Distribution (AccountOf * INR))"s (3 mutations)
  10406. 100.07 s [really-safe-money-gen] coverage (353/1610): Money\.AccountOfSpec.INR.distribute.Eq (Distribution (AccountOf * INR)).(==) \:\: (Distribution (AccountOf * INR)) -> (Distribution (AccountOf * INR)) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (Distribution (AccountOf * INR))"s (3 mutations)
  10407. 100.27 s [really-safe-money-gen] coverage (374/1610): Money\.AccountOfSpec.INR.Ord (AccountOf * INR).(<=) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is transitive for "valid (AccountOf * INR)"'s (3 mutations)
  10408. 100.44 s [really-safe-money-gen] coverage (361/1610): Money\.AccountOfSpec.INR.Ord (AccountOf * INR)."min \:\: (AccountOf * INR -> AccountOf * INR -> AccountOf * INR)".is equivalent to (\\a b -> if a <= b then a else b) for "valid (AccountOf * INR)"'s (3 mutations)
  10409. 100.51 s [really-safe-money-gen] coverage (344/1610): Money\.AccountOfSpec.INR.add.has a right-identity\: zero (17 mutations)
  10410. 100.63 s [really-safe-money-gen] coverage (341/1610): Money\.AccountOfSpec.INR.add.is associative when both succeed (16 mutations)
  10411. 100.68 s [really-safe-money-gen] coverage (372/1610): Money\.AccountOfSpec.INR.Ord (AccountOf * INR).(>) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is antireflexive for "valid (AccountOf * INR)"'s (3 mutations)
  10412. 100.72 s [really-safe-money-gen] coverage (379/1610): Money\.AccountOfSpec.INR.multiply.is distributive with add when both succeed (28 mutations)
  10413. 100.73 s [really-safe-money-gen] coverage (377/1610): Money\.AccountOfSpec.INR.CHF.rate.produces valid amounts (11 mutations)
  10414. 100.89 s [really-safe-money-gen] coverage (284/1610): Money\.AccountOfSpec.USD.BTC.rate.produces valid amounts (11 mutations)
  10415. 100.96 s [really-safe-money-gen] coverage (385/1610): Money\.AccountOfSpec.INR.Show (AccountOf * INR) and Read (AccountOf * INR).are implemented such that read \. show == id for valid values (3 mutations)
  10416. 101.21 s [really-safe-money-gen] coverage (380/1610): Money\.AccountOfSpec.INR.multiply.matches what you would get with Integer, if nothing fails (15 mutations)
  10417. 101.21 s [really-safe-money-gen] coverage (381/1610): Money\.AccountOfSpec.INR.multiply.is absorbed by 0 (15 mutations)
  10418. 101.38 s [really-safe-money-gen] coverage (376/1610): Money\.AccountOfSpec.INR.Ord (AccountOf * INR).(<=) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is equivalent to (\\a b -> compare a b /= GT) for "valid (AccountOf * INR)"'s (3 mutations)
  10419. 101.39 s [really-safe-money-gen] coverage (378/1610): Money\.AccountOfSpec.INR.CHF.convert.produces valid amounts (17 mutations)
  10420. 101.41 s [really-safe-money-gen] coverage (387/1610): Money\.AccountOfSpec.INR.fromMinimalQuantisations.produces valid accounts (10 mutations)
  10421. 101.44 s [really-safe-money-gen] coverage (375/1610): Money\.AccountOfSpec.INR.Ord (AccountOf * INR).(<=) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is antisymmetric for "valid (AccountOf * INR)"'s (3 mutations)
  10422. 101.53 s [really-safe-money-gen] coverage (384/1610): Money\.AccountOfSpec.INR.negate.produces valid amounts (1 mutations)
  10423. 101.58 s [really-safe-money-gen] coverage (386/1610): Money\.AccountOfSpec.INR.fromMinimalQuantisations.roundtrips with toMinimalQuantisations (12 mutations)
  10424. 101.78 s [really-safe-money-gen] coverage (383/1610): Money\.AccountOfSpec.INR.multiply.has an identity\: 1 (15 mutations)
  10425. 101.92 s [really-safe-money-gen] coverage (388/1610): Money\.AccountOfSpec.INR.fromRational.produces valid rational (19 mutations)
  10426. 102.05 s [really-safe-money-gen] coverage (382/1610): Money\.AccountOfSpec.INR.multiply.produces valid amounts (15 mutations)
  10427. 102.18 s [really-safe-money-gen] coverage (391/1610): Money\.AccountOfSpec.INR.BTC.rate.produces valid amounts (11 mutations)
  10428. 102.34 s [really-safe-money-gen] coverage (392/1610): Money\.AccountOfSpec.INR.BTC.convert.produces valid amounts (17 mutations)
  10429. 102.56 s [really-safe-money-gen] coverage (389/1610): Money\.AccountOfSpec.INR.fromRational.roundtrips with toRational (23 mutations)
  10430. 102.74 s [really-safe-money-gen] coverage (395/1610): Money\.AccountOfSpec.INR.fromDouble.produces valid rational (28 mutations)
  10431. 102.74 s [really-safe-money-gen] coverage (393/1610): Money\.AccountOfSpec.INR.toRational.produces valid Rationals when the quantisation factor is nonzero (3 mutations)
  10432. 102.93 s [really-safe-money-gen] coverage (396/1610): Money\.AccountOfSpec.INR.ADA.convert.produces valid amounts (17 mutations)
  10433. 103.08 s [really-safe-money-gen] coverage (399/1610): Money\.AccountOfSpec.INR.toMinimalQuantisations.produces valid accounts (3 mutations)
  10434. 103.28 s [really-safe-money-gen] coverage (398/1610): Money\.AccountOfSpec.INR.format.produces valid strings (6 mutations)
  10435. 103.33 s [really-safe-money-gen] coverage (400/1610): Money\.AccountOfSpec.INR.Eq (AccountOf * INR).(/=) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (AccountOf * INR)"s (3 mutations)
  10436. 103.40 s [really-safe-money-gen] coverage (402/1610): Money\.AccountOfSpec.INR.Eq (AccountOf * INR).(==) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is reflexive for "valid (AccountOf * INR)"s (3 mutations)
  10437. 103.43 s [really-safe-money-gen] coverage (401/1610): Money\.AccountOfSpec.INR.Eq (AccountOf * INR).(/=) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is antireflexive for "valid (AccountOf * INR)"s (3 mutations)
  10438. 103.50 s [really-safe-money-gen] coverage (403/1610): Money\.AccountOfSpec.INR.Eq (AccountOf * INR).(==) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is symmetric for "valid (AccountOf * INR)"s (3 mutations)
  10439. 103.50 s [really-safe-money-gen] coverage (404/1610): Money\.AccountOfSpec.INR.Eq (AccountOf * INR).(==) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is transitive for "valid (AccountOf * INR)"s (3 mutations)
  10440. 103.65 s [really-safe-money-gen] coverage (405/1610): Money\.AccountOfSpec.INR.Eq (AccountOf * INR).(==) \:\: (AccountOf * INR) -> (AccountOf * INR) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (AccountOf * INR)"s (3 mutations)
  10441. 103.72 s [really-safe-money-gen] coverage (406/1610): Money\.AccountOfSpec.INR.INR.convert.produces valid amounts (17 mutations)
  10442. 103.90 s [really-safe-money-gen] coverage (338/1610): Money\.AccountOfSpec.INR.GenValid (AccountOf * INR).genValid \:\: Gen (AccountOf * INR).only generates valid '(AccountOf * INR)'s (1 mutations)
  10443. 104.02 s [really-safe-money-gen] coverage (407/1610): Money\.AccountOfSpec.INR.INR.rate.produces valid amounts (11 mutations)
  10444. 104.04 s [really-safe-money-gen] coverage (410/1610): Money\.AccountOfSpec.CHF.fromMinimalQuantisations.produces valid accounts (10 mutations)
  10445. 104.09 s [really-safe-money-gen] coverage (337/1610): Money\.AccountOfSpec.INR.USD.rate.produces valid amounts (11 mutations)
  10446. 104.13 s [really-safe-money-gen] coverage (412/1610): Money\.AccountOfSpec.CHF.multiply.is absorbed by 0 (15 mutations)
  10447. 104.13 s [really-safe-money-gen] coverage (409/1610): Money\.AccountOfSpec.CHF.fromMinimalQuantisations.roundtrips with toMinimalQuantisations (12 mutations)
  10448. 104.20 s [really-safe-money-gen] coverage (413/1610): Money\.AccountOfSpec.CHF.multiply.is distributive with add when both succeed (28 mutations)
  10449. 104.33 s [really-safe-money-gen] coverage (414/1610): Money\.AccountOfSpec.CHF.multiply.matches what you would get with Integer, if nothing fails (15 mutations)
  10450. 104.55 s [really-safe-money-gen] coverage (411/1610): Money\.AccountOfSpec.CHF.multiply.produces valid amounts (15 mutations)
  10451. 104.62 s [really-safe-money-gen] coverage (416/1610): Money\.AccountOfSpec.CHF.distribute.produces valid amounts (28 mutations)
  10452. 104.73 s [really-safe-money-gen] coverage (417/1610): Money\.AccountOfSpec.CHF.distribute.produces results that sum up to the greater whole (45 mutations)
  10453. 104.89 s [really-safe-money-gen] coverage (418/1610): Money\.AccountOfSpec.CHF.distribute.Eq (Distribution (AccountOf * CHF)).(/=) \:\: (Distribution (AccountOf * CHF)) -> (Distribution (AccountOf * CHF)) -> Bool.is antireflexive for "valid (Distribution (AccountOf * CHF))"s (3 mutations)
  10454. 105.03 s [really-safe-money-gen] coverage (419/1610): Money\.AccountOfSpec.CHF.distribute.Eq (Distribution (AccountOf * CHF)).(/=) \:\: (Distribution (AccountOf * CHF)) -> (Distribution (AccountOf * CHF)) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (Distribution (AccountOf * CHF))"s (3 mutations)
  10455. 105.21 s [really-safe-money-gen] coverage (415/1610): Money\.AccountOfSpec.CHF.multiply.has an identity\: 1 (15 mutations)
  10456. 105.39 s [really-safe-money-gen] coverage (426/1610): Money\.AccountOfSpec.CHF.sum.produces valid amounts (17 mutations)
  10457. 105.51 s [really-safe-money-gen] coverage (420/1610): Money\.AccountOfSpec.CHF.distribute.Eq (Distribution (AccountOf * CHF)).(==) \:\: (Distribution (AccountOf * CHF)) -> (Distribution (AccountOf * CHF)) -> Bool.is reflexive for "valid (Distribution (AccountOf * CHF))"s (3 mutations)
  10458. 105.70 s [really-safe-money-gen] coverage (394/1610): Money\.AccountOfSpec.INR.fromDouble.roundtrips with toDouble (30 mutations)
  10459. 105.78 s [really-safe-money-gen] coverage (431/1610): Money\.AccountOfSpec.CHF.BTC.convert.produces valid amounts (17 mutations)
  10460. 105.97 s [really-safe-money-gen] coverage (433/1610): Money\.AccountOfSpec.CHF.toMinimalQuantisations.produces valid accounts (3 mutations)
  10461. 106.00 s [really-safe-money-gen] coverage (432/1610): Money\.AccountOfSpec.CHF.BTC.rate.produces valid amounts (11 mutations)
  10462. 106.01 s [really-safe-money-gen] coverage (435/1610): Money\.AccountOfSpec.CHF.fraction.produces valid amounts (28 mutations)
  10463. 106.04 s [really-safe-money-gen] coverage (397/1610): Money\.AccountOfSpec.INR.ADA.rate.produces valid amounts (11 mutations)
  10464. 106.25 s [really-safe-money-gen] coverage (436/1610): Money\.AccountOfSpec.CHF.Eq (AccountOf * CHF).(==) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (AccountOf * CHF)"s (3 mutations)
  10465. 106.28 s [really-safe-money-gen] coverage (424/1610): Money\.AccountOfSpec.CHF.distribute.Show (Distribution (AccountOf * CHF)) and Read (Distribution (AccountOf * CHF)).are implemented such that read \. show == id for valid values (3 mutations)
  10466. 106.37 s [really-safe-money-gen] coverage (437/1610): Money\.AccountOfSpec.CHF.Eq (AccountOf * CHF).(==) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is transitive for "valid (AccountOf * CHF)"s (3 mutations)
  10467. 106.39 s [really-safe-money-gen] coverage (390/1610): Money\.AccountOfSpec.INR.toDouble.produces valid Doubles when the quantisation factor is nonzero (3 mutations)
  10468. 106.60 s [really-safe-money-gen] coverage (440/1610): Money\.AccountOfSpec.CHF.Eq (AccountOf * CHF).(/=) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (AccountOf * CHF)"s (3 mutations)
  10469. 106.72 s [really-safe-money-gen] coverage (442/1610): Money\.AccountOfSpec.CHF.toDouble.produces valid Doubles when the quantisation factor is nonzero (3 mutations)
  10470. 106.72 s [really-safe-money-gen] coverage (441/1610): Money\.AccountOfSpec.CHF.Eq (AccountOf * CHF).(/=) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is antireflexive for "valid (AccountOf * CHF)"s (3 mutations)
  10471. 106.76 s [really-safe-money-gen] coverage (444/1610): Money\.AccountOfSpec.CHF.negate.produces valid amounts (1 mutations)
  10472. 106.76 s [really-safe-money-gen] coverage (443/1610): Money\.AccountOfSpec.CHF.fromAmountOf.produces valid AccountOfs (1 mutations)
  10473. 106.80 s [really-safe-money-gen] coverage (445/1610): Money\.AccountOfSpec.CHF.toRational.produces valid Rationals when the quantisation factor is nonzero (3 mutations)
  10474. 106.90 s [really-safe-money-gen] coverage (439/1610): Money\.AccountOfSpec.CHF.Eq (AccountOf * CHF).(==) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is symmetric for "valid (AccountOf * CHF)"s (3 mutations)
  10475. 107.19 s [really-safe-money-gen] coverage (446/1610): Money\.AccountOfSpec.CHF.format.produces valid strings (6 mutations)
  10476. 107.30 s [really-safe-money-gen] coverage (428/1610): Money\.AccountOfSpec.CHF.abs.produces valid amounts (1 mutations)
  10477. 107.36 s [really-safe-money-gen] coverage (438/1610): Money\.AccountOfSpec.CHF.Eq (AccountOf * CHF).(==) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is reflexive for "valid (AccountOf * CHF)"s (3 mutations)
  10478. 107.38 s [really-safe-money-gen] coverage (422/1610): Money\.AccountOfSpec.CHF.distribute.Eq (Distribution (AccountOf * CHF)).(==) \:\: (Distribution (AccountOf * CHF)) -> (Distribution (AccountOf * CHF)) -> Bool.is symmetric for "valid (Distribution (AccountOf * CHF))"s (3 mutations)
  10479. 107.61 s [really-safe-money-gen] coverage (408/1610): Money\.AccountOfSpec.CHF.fromAmount.produces valid AccountOfs (1 mutations)
  10480. 107.70 s [really-safe-money-gen] coverage (449/1610): Money\.AccountOfSpec.CHF.fromDouble.produces valid rational (28 mutations)
  10481. 107.98 s [really-safe-money-gen] coverage (447/1610): Money\.AccountOfSpec.CHF.fromRational.produces valid rational (19 mutations)
  10482. 108.02 s [really-safe-money-gen] coverage (448/1610): Money\.AccountOfSpec.CHF.fromRational.roundtrips with toRational (23 mutations)
  10483. 108.21 s [really-safe-money-gen] coverage (450/1610): Money\.AccountOfSpec.CHF.fromDouble.roundtrips with toDouble (30 mutations)
  10484. 108.42 s [really-safe-money-gen] coverage (451/1610): Money\.AccountOfSpec.CHF.ADA.convert.produces valid amounts (17 mutations)
  10485. 108.49 s [really-safe-money-gen] coverage (452/1610): Money\.AccountOfSpec.CHF.ADA.rate.produces valid amounts (11 mutations)
  10486. 108.66 s [really-safe-money-gen] coverage (455/1610): Money\.AccountOfSpec.CHF.Ord (AccountOf * CHF).(<) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is transitive for "valid (AccountOf * CHF)"'s (3 mutations)
  10487. 108.67 s [really-safe-money-gen] coverage (453/1610): Money\.AccountOfSpec.CHF.Ord (AccountOf * CHF)."min \:\: (AccountOf * CHF -> AccountOf * CHF -> AccountOf * CHF)".is equivalent to (\\a b -> if a <= b then a else b) for "valid (AccountOf * CHF)"'s (3 mutations)
  10488. 108.68 s [really-safe-money-gen] coverage (454/1610): Money\.AccountOfSpec.CHF.Ord (AccountOf * CHF).(<) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is equivalent to (\\a b -> compare a b == LT) for "valid (AccountOf * CHF)"'s (3 mutations)
  10489. 108.73 s [really-safe-money-gen] coverage (456/1610): Money\.AccountOfSpec.CHF.Ord (AccountOf * CHF).(<) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is antireflexive for "valid (AccountOf * CHF)"'s (3 mutations)
  10490. 108.95 s [really-safe-money-gen] coverage (425/1610): Money\.AccountOfSpec.CHF.sum.matches what you would get with Integer, if nothing fails (17 mutations)
  10491. 109.02 s [really-safe-money-gen] coverage (423/1610): Money\.AccountOfSpec.CHF.distribute.Eq (Distribution (AccountOf * CHF)).(==) \:\: (Distribution (AccountOf * CHF)) -> (Distribution (AccountOf * CHF)) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (Distribution (AccountOf * CHF))"s (3 mutations)
  10492. 109.03 s [really-safe-money-gen] coverage (427/1610): Money\.AccountOfSpec.CHF.Show (AccountOf * CHF) and Read (AccountOf * CHF).are implemented such that read \. show == id for valid values (3 mutations)
  10493. 109.15 s [really-safe-money-gen] coverage (463/1610): Money\.AccountOfSpec.CHF.Ord (AccountOf * CHF).(>) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is antireflexive for "valid (AccountOf * CHF)"'s (3 mutations)
  10494. 109.21 s [really-safe-money-gen] coverage (461/1610): Money\.AccountOfSpec.CHF.Ord (AccountOf * CHF)."max \:\: (AccountOf * CHF -> AccountOf * CHF -> AccountOf * CHF)".is equivalent to (\\a b -> if a >= b then a else b) for "valid (AccountOf * CHF)"'s (3 mutations)
  10495. 109.35 s [really-safe-money-gen] coverage (467/1610): Money\.AccountOfSpec.CHF.Ord (AccountOf * CHF).(>=) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is antisymmetric for "valid (AccountOf * CHF)"'s (3 mutations)
  10496. 109.40 s [really-safe-money-gen] coverage (471/1610): Money\.AccountOfSpec.CHF.CHF.rate.produces valid amounts (11 mutations)
  10497. 109.45 s [really-safe-money-gen] coverage (465/1610): Money\.AccountOfSpec.CHF.Ord (AccountOf * CHF).(>=) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is equivalent to (\\a b -> compare a b /= LT) for "valid (AccountOf * CHF)"'s (3 mutations)
  10498. 109.47 s [really-safe-money-gen] coverage (469/1610): Money\.AccountOfSpec.CHF.GenValid (AccountOf * CHF).genValid \:\: Gen (AccountOf * CHF).only generates valid '(AccountOf * CHF)'s (1 mutations)
  10499. 109.51 s [really-safe-money-gen] coverage (470/1610): Money\.AccountOfSpec.CHF.subtract.matches what you would get with Integer, if nothing fails (16 mutations)
  10500. 109.66 s [really-safe-money-gen] coverage (184/1610): Money\.AccountSpec.DecimalLiteral.Account\.toDecimalLiteral.produces valid decimal literals (32 mutations)
  10501. 109.68 s [really-safe-money-gen] coverage (464/1610): Money\.AccountOfSpec.CHF.Ord (AccountOf * CHF).(>) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is transitive for "valid (AccountOf * CHF)"'s (3 mutations)
  10502. 109.92 s [really-safe-money-gen] coverage (468/1610): Money\.AccountOfSpec.CHF.Ord (AccountOf * CHF).(>=) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is transitive for "valid (AccountOf * CHF)"'s (3 mutations)
  10503. 110.00 s [really-safe-money-gen] coverage (462/1610): Money\.AccountOfSpec.CHF.Ord (AccountOf * CHF).(>) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is equivalent to (\\a b -> compare a b == GT) for "valid (AccountOf * CHF)"'s (3 mutations)
  10504. 110.12 s [really-safe-money-gen] coverage (472/1610): Money\.AccountOfSpec.CHF.CHF.convert.produces valid amounts (17 mutations)
  10505. 110.12 s [really-safe-money-gen] coverage (482/1610): Money\.AccountOfSpec.ADA.fromMinimalQuantisations.roundtrips with toMinimalQuantisations (12 mutations)
  10506. 110.38 s [really-safe-money-gen] coverage (473/1610): Money\.AccountOfSpec.CHF.add.is associative when both succeed (16 mutations)
  10507. 110.54 s [really-safe-money-gen] coverage (481/1610): Money\.AccountOfSpec.ADA.fromMinimalQuantisations.produces valid accounts (10 mutations)
  10508. 110.84 s [really-safe-money-gen] coverage (466/1610): Money\.AccountOfSpec.CHF.Ord (AccountOf * CHF).(>=) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is reflexive for "valid (AccountOf * CHF)"'s (3 mutations)
  10509. 110.84 s [really-safe-money-gen] coverage (479/1610): Money\.AccountOfSpec.CHF.INR.convert.produces valid amounts (17 mutations)
  10510. 111.07 s [really-safe-money-gen] coverage (478/1610): Money\.AccountOfSpec.CHF.add.produces valid amounts (16 mutations)
  10511. 111.32 s [really-safe-money-gen] coverage (460/1610): Money\.AccountOfSpec.CHF.Ord (AccountOf * CHF).(<=) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is reflexive for "valid (AccountOf * CHF)"'s (3 mutations)
  10512. 111.36 s [really-safe-money-gen] coverage (477/1610): Money\.AccountOfSpec.CHF.add.is commutative (16 mutations)
  10513. 111.44 s [really-safe-money-gen] coverage (480/1610): Money\.AccountOfSpec.CHF.INR.rate.produces valid amounts (11 mutations)
  10514. 111.50 s [really-safe-money-gen] coverage (486/1610): Money\.AccountOfSpec.ADA.fromRational.roundtrips with toRational (23 mutations)
  10515. 111.55 s [really-safe-money-gen] coverage (485/1610): Money\.AccountOfSpec.ADA.fromRational.produces valid rational (19 mutations)
  10516. 111.61 s [really-safe-money-gen] coverage (459/1610): Money\.AccountOfSpec.CHF.Ord (AccountOf * CHF).(<=) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is transitive for "valid (AccountOf * CHF)"'s (3 mutations)
  10517. 111.83 s [really-safe-money-gen] coverage (483/1610): Money\.AccountOfSpec.ADA.fromDouble.produces valid rational (28 mutations)
  10518. 111.86 s [really-safe-money-gen] coverage (430/1610): Money\.AccountOfSpec.CHF.USD.convert.produces valid amounts (17 mutations)
  10519. 111.87 s [really-safe-money-gen] coverage (484/1610): Money\.AccountOfSpec.ADA.fromDouble.roundtrips with toDouble (30 mutations)
  10520. 112.12 s [really-safe-money-gen] coverage (474/1610): Money\.AccountOfSpec.CHF.add.has a left-identity\: zero (17 mutations)
  10521. 112.13 s [really-safe-money-gen] coverage (429/1610): Money\.AccountOfSpec.CHF.USD.rate.produces valid amounts (11 mutations)
  10522. 112.21 s [really-safe-money-gen] coverage (475/1610): Money\.AccountOfSpec.CHF.add.matches what you would get with Integer, if nothing fails (16 mutations)
  10523. 112.33 s [really-safe-money-gen] coverage (434/1610): Money\.AccountOfSpec.CHF.fraction.Produces a result that can be multiplied back (28 mutations)
  10524. 112.34 s [really-safe-money-gen] coverage (487/1610): Money\.AccountOfSpec.ADA.Show (AccountOf * ADA) and Read (AccountOf * ADA).are implemented such that read \. show == id for valid values (3 mutations)
  10525. 112.41 s [really-safe-money-gen] coverage (476/1610): Money\.AccountOfSpec.CHF.add.has a right-identity\: zero (17 mutations)
  10526. 112.43 s [really-safe-money-gen] coverage (458/1610): Money\.AccountOfSpec.CHF.Ord (AccountOf * CHF).(<=) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is antisymmetric for "valid (AccountOf * CHF)"'s (3 mutations)
  10527. 112.50 s [really-safe-money-gen] coverage (488/1610): Money\.AccountOfSpec.ADA.fraction.Produces a result that can be multiplied back (28 mutations)
  10528. 112.61 s [really-safe-money-gen] coverage (489/1610): Money\.AccountOfSpec.ADA.fraction.produces valid amounts (28 mutations)
  10529. 112.83 s [really-safe-money-gen] coverage (490/1610): Money\.AccountOfSpec.ADA.Ord (AccountOf * ADA).(<=) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is antisymmetric for "valid (AccountOf * ADA)"'s (3 mutations)
  10530. 112.85 s [really-safe-money-gen] coverage (495/1610): Money\.AccountOfSpec.ADA.Ord (AccountOf * ADA).(>=) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is equivalent to (\\a b -> compare a b /= LT) for "valid (AccountOf * ADA)"'s (3 mutations)
  10531. 113.00 s [really-safe-money-gen] coverage (498/1610): Money\.AccountOfSpec.ADA.Ord (AccountOf * ADA)."min \:\: (AccountOf * ADA -> AccountOf * ADA -> AccountOf * ADA)".is equivalent to (\\a b -> if a <= b then a else b) for "valid (AccountOf * ADA)"'s (3 mutations)
  10532. 113.01 s [really-safe-money-gen] coverage (497/1610): Money\.AccountOfSpec.ADA.Ord (AccountOf * ADA).(>=) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is reflexive for "valid (AccountOf * ADA)"'s (3 mutations)
  10533. 113.30 s [really-safe-money-gen] coverage (499/1610): Money\.AccountOfSpec.ADA.Ord (AccountOf * ADA).(>) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is antireflexive for "valid (AccountOf * ADA)"'s (3 mutations)
  10534. 113.43 s [really-safe-money-gen] coverage (496/1610): Money\.AccountOfSpec.ADA.Ord (AccountOf * ADA).(>=) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is transitive for "valid (AccountOf * ADA)"'s (3 mutations)
  10535. 113.70 s [really-safe-money-gen] coverage (500/1610): Money\.AccountOfSpec.ADA.Ord (AccountOf * ADA).(>) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is transitive for "valid (AccountOf * ADA)"'s (3 mutations)
  10536. 113.70 s [really-safe-money-gen] coverage (501/1610): Money\.AccountOfSpec.ADA.Ord (AccountOf * ADA).(>) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is equivalent to (\\a b -> compare a b == GT) for "valid (AccountOf * ADA)"'s (3 mutations)
  10537. 113.99 s [really-safe-money-gen] coverage (502/1610): Money\.AccountOfSpec.ADA.Ord (AccountOf * ADA)."max \:\: (AccountOf * ADA -> AccountOf * ADA -> AccountOf * ADA)".is equivalent to (\\a b -> if a >= b then a else b) for "valid (AccountOf * ADA)"'s (3 mutations)
  10538. 114.22 s [really-safe-money-gen] coverage (503/1610): Money\.AccountOfSpec.ADA.Ord (AccountOf * ADA).(<) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is equivalent to (\\a b -> compare a b == LT) for "valid (AccountOf * ADA)"'s (3 mutations)
  10539. 114.22 s [really-safe-money-gen] coverage (457/1610): Money\.AccountOfSpec.CHF.Ord (AccountOf * CHF).(<=) \:\: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool.is equivalent to (\\a b -> compare a b /= GT) for "valid (AccountOf * CHF)"'s (3 mutations)
  10540. 114.39 s [really-safe-money-gen] coverage (505/1610): Money\.AccountOfSpec.ADA.Ord (AccountOf * ADA).(<) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is antireflexive for "valid (AccountOf * ADA)"'s (3 mutations)
  10541. 114.41 s [really-safe-money-gen] coverage (504/1610): Money\.AccountOfSpec.ADA.Ord (AccountOf * ADA).(<) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is transitive for "valid (AccountOf * ADA)"'s (3 mutations)
  10542. 114.49 s [really-safe-money-gen] coverage (506/1610): Money\.AccountOfSpec.ADA.fromAmountOf.produces valid AccountOfs (1 mutations)
  10543. 114.57 s [really-safe-money-gen] coverage (507/1610): Money\.AccountOfSpec.ADA.toRational.produces valid Rationals when the quantisation factor is nonzero (3 mutations)
  10544. 114.58 s [really-safe-money-gen] coverage (508/1610): Money\.AccountOfSpec.ADA.distribute.Eq (Distribution (AccountOf * ADA)).(==) \:\: (Distribution (AccountOf * ADA)) -> (Distribution (AccountOf * ADA)) -> Bool.is reflexive for "valid (Distribution (AccountOf * ADA))"s (3 mutations)
  10545. 114.73 s [really-safe-money-gen] coverage (509/1610): Money\.AccountOfSpec.ADA.distribute.Eq (Distribution (AccountOf * ADA)).(==) \:\: (Distribution (AccountOf * ADA)) -> (Distribution (AccountOf * ADA)) -> Bool.is transitive for "valid (Distribution (AccountOf * ADA))"s (3 mutations)
  10546. 114.75 s [really-safe-money-gen] coverage (491/1610): Money\.AccountOfSpec.ADA.Ord (AccountOf * ADA).(<=) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is reflexive for "valid (AccountOf * ADA)"'s (3 mutations)
  10547. 114.99 s [really-safe-money-gen] coverage (510/1610): Money\.AccountOfSpec.ADA.distribute.Eq (Distribution (AccountOf * ADA)).(==) \:\: (Distribution (AccountOf * ADA)) -> (Distribution (AccountOf * ADA)) -> Bool.is symmetric for "valid (Distribution (AccountOf * ADA))"s (3 mutations)
  10548. 115.03 s [really-safe-money-gen] coverage (513/1610): Money\.AccountOfSpec.ADA.distribute.Eq (Distribution (AccountOf * ADA)).(/=) \:\: (Distribution (AccountOf * ADA)) -> (Distribution (AccountOf * ADA)) -> Bool.is antireflexive for "valid (Distribution (AccountOf * ADA))"s (3 mutations)
  10549. 115.18 s [really-safe-money-gen] coverage (492/1610): Money\.AccountOfSpec.ADA.Ord (AccountOf * ADA).(<=) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is transitive for "valid (AccountOf * ADA)"'s (3 mutations)
  10550. 115.24 s [really-safe-money-gen] coverage (493/1610): Money\.AccountOfSpec.ADA.Ord (AccountOf * ADA).(<=) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is equivalent to (\\a b -> compare a b /= GT) for "valid (AccountOf * ADA)"'s (3 mutations)
  10551. 115.32 s [really-safe-money-gen] coverage (421/1610): Money\.AccountOfSpec.CHF.distribute.Eq (Distribution (AccountOf * CHF)).(==) \:\: (Distribution (AccountOf * CHF)) -> (Distribution (AccountOf * CHF)) -> Bool.is transitive for "valid (Distribution (AccountOf * CHF))"s (3 mutations)
  10552. 115.35 s [really-safe-money-gen] coverage (515/1610): Money\.AccountOfSpec.ADA.distribute.produces valid amounts (28 mutations)
  10553. 115.37 s [really-safe-money-gen] coverage (494/1610): Money\.AccountOfSpec.ADA.Ord (AccountOf * ADA).(>=) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is antisymmetric for "valid (AccountOf * ADA)"'s (3 mutations)
  10554. 115.39 s [really-safe-money-gen] coverage (516/1610): Money\.AccountOfSpec.ADA.distribute.produces results that sum up to the greater whole (45 mutations)
  10555. 115.54 s [really-safe-money-gen] coverage (517/1610): Money\.AccountOfSpec.ADA.toDouble.produces valid Doubles when the quantisation factor is nonzero (3 mutations)
  10556. 115.70 s [really-safe-money-gen] coverage (518/1610): Money\.AccountOfSpec.ADA.Eq (AccountOf * ADA).(/=) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is antireflexive for "valid (AccountOf * ADA)"s (3 mutations)
  10557. 115.77 s [really-safe-money-gen] coverage (519/1610): Money\.AccountOfSpec.ADA.Eq (AccountOf * ADA).(/=) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (AccountOf * ADA)"s (3 mutations)
  10558. 115.89 s [really-safe-money-gen] coverage (521/1610): Money\.AccountOfSpec.ADA.Eq (AccountOf * ADA).(==) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is transitive for "valid (AccountOf * ADA)"s (3 mutations)
  10559. 115.98 s [really-safe-money-gen] coverage (520/1610): Money\.AccountOfSpec.ADA.Eq (AccountOf * ADA).(==) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is reflexive for "valid (AccountOf * ADA)"s (3 mutations)
  10560. 116.21 s [really-safe-money-gen] coverage (522/1610): Money\.AccountOfSpec.ADA.Eq (AccountOf * ADA).(==) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is symmetric for "valid (AccountOf * ADA)"s (3 mutations)
  10561. 116.31 s [really-safe-money-gen] coverage (512/1610): Money\.AccountOfSpec.ADA.distribute.Eq (Distribution (AccountOf * ADA)).(/=) \:\: (Distribution (AccountOf * ADA)) -> (Distribution (AccountOf * ADA)) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (Distribution (AccountOf * ADA))"s (3 mutations)
  10562. 116.57 s [really-safe-money-gen] coverage (524/1610): Money\.AccountOfSpec.ADA.abs.produces valid amounts (1 mutations)
  10563. 116.59 s [really-safe-money-gen] coverage (514/1610): Money\.AccountOfSpec.ADA.distribute.Show (Distribution (AccountOf * ADA)) and Read (Distribution (AccountOf * ADA)).are implemented such that read \. show == id for valid values (3 mutations)
  10564. 116.84 s [really-safe-money-gen] coverage (525/1610): Money\.AccountOfSpec.ADA.format.produces valid strings (6 mutations)
  10565. 117.05 s [really-safe-money-gen] coverage (523/1610): Money\.AccountOfSpec.ADA.Eq (AccountOf * ADA).(==) \:\: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (AccountOf * ADA)"s (3 mutations)
  10566. 117.07 s [really-safe-money-gen] coverage (183/1610): Money\.AccountSpec.DecimalLiteral.Account\.toDecimalLiteral.roundtrips with Account\.fromDecimalLiteral (55 mutations)
  10567. 117.11 s [really-safe-money-gen] coverage (527/1610): Money\.AccountOfSpec.ADA.negate.produces valid amounts (1 mutations)
  10568. 117.25 s [really-safe-money-gen] coverage (528/1610): Money\.AccountOfSpec.ADA.CHF.rate.produces valid amounts (11 mutations)
  10569. 117.25 s [really-safe-money-gen] coverage (537/1610): Money\.AccountOfSpec.ADA.ADA.rate.produces valid amounts (11 mutations)
  10570. 117.26 s [really-safe-money-gen] coverage (535/1610): Money\.AccountOfSpec.ADA.toMinimalQuantisations.produces valid accounts (3 mutations)
  10571. 117.46 s [really-safe-money-gen] coverage (533/1610): Money\.AccountOfSpec.ADA.sum.matches what you would get with Integer, if nothing fails (17 mutations)
  10572. 117.54 s [really-safe-money-gen] coverage (530/1610): Money\.AccountOfSpec.ADA.INR.rate.produces valid amounts (11 mutations)
  10573. 117.57 s [really-safe-money-gen] coverage (526/1610): Money\.AccountOfSpec.ADA.subtract.matches what you would get with Integer, if nothing fails (16 mutations)
  10574. 117.67 s [really-safe-money-gen] coverage (534/1610): Money\.AccountOfSpec.ADA.sum.produces valid amounts (17 mutations)
  10575. 117.81 s [really-safe-money-gen] coverage (536/1610): Money\.AccountOfSpec.ADA.ADA.convert.produces valid amounts (17 mutations)
  10576. 117.84 s [really-safe-money-gen] coverage (529/1610): Money\.AccountOfSpec.ADA.CHF.convert.produces valid amounts (17 mutations)
  10577. 117.99 s [really-safe-money-gen] coverage (531/1610): Money\.AccountOfSpec.ADA.INR.convert.produces valid amounts (17 mutations)
  10578. 118.13 s [really-safe-money-gen] coverage (548/1610): Money\.AccountOfSpec.ADA.multiply.is distributive with add when both succeed (28 mutations)
  10579. 118.16 s [really-safe-money-gen] coverage (541/1610): Money\.AccountOfSpec.ADA.add.is associative when both succeed (16 mutations)
  10580. 118.18 s [really-safe-money-gen] coverage (550/1610): Money\.AccountOfSpec.ADA.multiply.matches what you would get with Integer, if nothing fails (15 mutations)
  10581. 118.21 s [really-safe-money-gen] coverage (532/1610): Money\.AccountOfSpec.ADA.fromAmount.produces valid AccountOfs (1 mutations)
  10582. 118.21 s [really-safe-money-gen] coverage (511/1610): Money\.AccountOfSpec.ADA.distribute.Eq (Distribution (AccountOf * ADA)).(==) \:\: (Distribution (AccountOf * ADA)) -> (Distribution (AccountOf * ADA)) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (Distribution (AccountOf * ADA))"s (3 mutations)
  10583. 118.41 s [really-safe-money-gen] coverage (549/1610): Money\.AccountOfSpec.ADA.multiply.has an identity\: 1 (15 mutations)
  10584. 118.60 s [really-safe-money-gen] coverage (551/1610): Money\.AccountOfSpec.ADA.multiply.is absorbed by 0 (15 mutations)
  10585. 118.62 s [really-safe-money-gen] coverage (547/1610): Money\.AccountOfSpec.ADA.multiply.produces valid amounts (15 mutations)
  10586. 118.83 s [really-safe-money-gen] coverage (546/1610): Money\.AccountOfSpec.ADA.BTC.rate.produces valid amounts (11 mutations)
  10587. 118.98 s [really-safe-money-gen] coverage (545/1610): Money\.AccountOfSpec.ADA.BTC.convert.produces valid amounts (17 mutations)
  10588. 119.04 s [really-safe-money-gen] coverage (543/1610): Money\.AccountOfSpec.ADA.add.has a right-identity\: zero (17 mutations)
  10589. 119.05 s [really-safe-money-gen] coverage (542/1610): Money\.AccountOfSpec.ADA.add.has a left-identity\: zero (17 mutations)
  10590. 119.39 s [really-safe-money-gen] coverage (555/1610): Money\.AccountOfSpec.BTC.add.produces valid amounts (16 mutations)
  10591. 119.49 s [really-safe-money-gen] coverage (556/1610): Money\.AccountOfSpec.BTC.add.has a left-identity\: zero (17 mutations)
  10592. 119.82 s [really-safe-money-gen] coverage (557/1610): Money\.AccountOfSpec.BTC.add.has a right-identity\: zero (17 mutations)
  10593. 119.96 s [really-safe-money-gen] coverage (559/1610): Money\.AccountOfSpec.BTC.add.matches what you would get with Integer, if nothing fails (16 mutations)
  10594. 119.99 s [really-safe-money-gen] coverage (552/1610): Money\.AccountOfSpec.ADA.USD.convert.produces valid amounts (17 mutations)
  10595. 120.05 s [really-safe-money-gen] coverage (558/1610): Money\.AccountOfSpec.BTC.add.is associative when both succeed (16 mutations)
  10596. 120.16 s [really-safe-money-gen] coverage (560/1610): Money\.AccountOfSpec.BTC.Ord (AccountOf * BTC).(>) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is equivalent to (\\a b -> compare a b == GT) for "valid (AccountOf * BTC)"'s (3 mutations)
  10597. 120.21 s [really-safe-money-gen] coverage (553/1610): Money\.AccountOfSpec.ADA.USD.rate.produces valid amounts (11 mutations)
  10598. 120.25 s [really-safe-money-gen] coverage (554/1610): Money\.AccountOfSpec.BTC.add.is commutative (16 mutations)
  10599. 120.41 s [really-safe-money-gen] coverage (540/1610): Money\.AccountOfSpec.ADA.add.is commutative (16 mutations)
  10600. 120.48 s [really-safe-money-gen] coverage (539/1610): Money\.AccountOfSpec.ADA.add.produces valid amounts (16 mutations)
  10601. 120.52 s [really-safe-money-gen] coverage (538/1610): Money\.AccountOfSpec.ADA.add.matches what you would get with Integer, if nothing fails (16 mutations)
  10602. 120.63 s [really-safe-money-gen] coverage (544/1610): Money\.AccountOfSpec.ADA.GenValid (AccountOf * ADA).genValid \:\: Gen (AccountOf * ADA).only generates valid '(AccountOf * ADA)'s (1 mutations)
  10603. 120.72 s [really-safe-money-gen] coverage (565/1610): Money\.AccountOfSpec.BTC.Ord (AccountOf * BTC).(<=) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is reflexive for "valid (AccountOf * BTC)"'s (3 mutations)
  10604. 120.76 s [really-safe-money-gen] coverage (564/1610): Money\.AccountOfSpec.BTC.Ord (AccountOf * BTC).(<=) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is antisymmetric for "valid (AccountOf * BTC)"'s (3 mutations)
  10605. 120.95 s [really-safe-money-gen] coverage (566/1610): Money\.AccountOfSpec.BTC.Ord (AccountOf * BTC).(<=) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is transitive for "valid (AccountOf * BTC)"'s (3 mutations)
  10606. 121.01 s [really-safe-money-gen] coverage (567/1610): Money\.AccountOfSpec.BTC.Ord (AccountOf * BTC).(<) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is transitive for "valid (AccountOf * BTC)"'s (3 mutations)
  10607. 121.07 s [really-safe-money-gen] coverage (561/1610): Money\.AccountOfSpec.BTC.Ord (AccountOf * BTC).(>) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is transitive for "valid (AccountOf * BTC)"'s (3 mutations)
  10608. 121.08 s [really-safe-money-gen] coverage (563/1610): Money\.AccountOfSpec.BTC.Ord (AccountOf * BTC).(<=) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is equivalent to (\\a b -> compare a b /= GT) for "valid (AccountOf * BTC)"'s (3 mutations)
  10609. 121.13 s [really-safe-money-gen] coverage (568/1610): Money\.AccountOfSpec.BTC.Ord (AccountOf * BTC).(<) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is equivalent to (\\a b -> compare a b == LT) for "valid (AccountOf * BTC)"'s (3 mutations)
  10610. 121.17 s [really-safe-money-gen] coverage (569/1610): Money\.AccountOfSpec.BTC.Ord (AccountOf * BTC).(<) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is antireflexive for "valid (AccountOf * BTC)"'s (3 mutations)
  10611. 121.40 s [really-safe-money-gen] coverage (570/1610): Money\.AccountOfSpec.BTC.Ord (AccountOf * BTC)."min \:\: (AccountOf * BTC -> AccountOf * BTC -> AccountOf * BTC)".is equivalent to (\\a b -> if a <= b then a else b) for "valid (AccountOf * BTC)"'s (3 mutations)
  10612. 121.49 s [really-safe-money-gen] coverage (571/1610): Money\.AccountOfSpec.BTC.Ord (AccountOf * BTC)."max \:\: (AccountOf * BTC -> AccountOf * BTC -> AccountOf * BTC)".is equivalent to (\\a b -> if a >= b then a else b) for "valid (AccountOf * BTC)"'s (3 mutations)
  10613. 121.57 s [really-safe-money-gen] coverage (572/1610): Money\.AccountOfSpec.BTC.Ord (AccountOf * BTC).(>=) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is antisymmetric for "valid (AccountOf * BTC)"'s (3 mutations)
  10614. 121.66 s [really-safe-money-gen] coverage (588/1610): Money\.AccountOfSpec.BTC.negate.produces valid amounts (1 mutations)
  10615. 121.80 s [really-safe-money-gen] coverage (589/1610): Money\.AccountOfSpec.BTC.fromAmountOf.produces valid AccountOfs (1 mutations)
  10616. 121.87 s [really-safe-money-gen] coverage (590/1610): Money\.AccountOfSpec.BTC.multiply.produces valid amounts (15 mutations)
  10617. 121.90 s [really-safe-money-gen] coverage (591/1610): Money\.AccountOfSpec.BTC.multiply.is distributive with add when both succeed (28 mutations)
  10618. 122.24 s [really-safe-money-gen] coverage (592/1610): Money\.AccountOfSpec.BTC.multiply.is absorbed by 0 (15 mutations)
  10619. 122.28 s [really-safe-money-gen] coverage (593/1610): Money\.AccountOfSpec.BTC.multiply.has an identity\: 1 (15 mutations)
  10620. 122.70 s [really-safe-money-gen] coverage (594/1610): Money\.AccountOfSpec.BTC.multiply.matches what you would get with Integer, if nothing fails (15 mutations)
  10621. 122.78 s [really-safe-money-gen] coverage (595/1610): Money\.AccountOfSpec.BTC.sum.produces valid amounts (17 mutations)
  10622. 122.89 s [really-safe-money-gen] coverage (596/1610): Money\.AccountOfSpec.BTC.sum.matches what you would get with Integer, if nothing fails (17 mutations)
  10623. 122.91 s [really-safe-money-gen] coverage (597/1610): Money\.AccountOfSpec.BTC.Eq (AccountOf * BTC).(==) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is reflexive for "valid (AccountOf * BTC)"s (3 mutations)
  10624. 122.97 s [really-safe-money-gen] coverage (598/1610): Money\.AccountOfSpec.BTC.Eq (AccountOf * BTC).(==) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is transitive for "valid (AccountOf * BTC)"s (3 mutations)
  10625. 123.07 s [really-safe-money-gen] coverage (599/1610): Money\.AccountOfSpec.BTC.Eq (AccountOf * BTC).(==) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (AccountOf * BTC)"s (3 mutations)
  10626. 123.17 s [really-safe-money-gen] coverage (600/1610): Money\.AccountOfSpec.BTC.Eq (AccountOf * BTC).(==) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is symmetric for "valid (AccountOf * BTC)"s (3 mutations)
  10627. 123.28 s [really-safe-money-gen] coverage (602/1610): Money\.AccountOfSpec.BTC.Eq (AccountOf * BTC).(/=) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (AccountOf * BTC)"s (3 mutations)
  10628. 123.33 s [really-safe-money-gen] coverage (601/1610): Money\.AccountOfSpec.BTC.Eq (AccountOf * BTC).(/=) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is antireflexive for "valid (AccountOf * BTC)"s (3 mutations)
  10629. 123.38 s [really-safe-money-gen] coverage (603/1610): Money\.AccountOfSpec.BTC.format.produces valid strings (6 mutations)
  10630. 123.56 s [really-safe-money-gen] coverage (604/1610): Money\.AccountOfSpec.BTC.USD.convert.produces valid amounts (17 mutations)
  10631. 123.62 s [really-safe-money-gen] coverage (605/1610): Money\.AccountOfSpec.BTC.USD.rate.produces valid amounts (11 mutations)
  10632. 123.68 s [really-safe-money-gen] coverage (606/1610): Money\.AccountOfSpec.BTC.subtract.matches what you would get with Integer, if nothing fails (16 mutations)
  10633. 123.81 s [really-safe-money-gen] coverage (607/1610): Money\.AccountOfSpec.BTC.ADA.convert.produces valid amounts (17 mutations)
  10634. 123.89 s [really-safe-money-gen] coverage (609/1610): Money\.AccountOfSpec.BTC.fromRational.produces valid rational (19 mutations)
  10635. 123.90 s [really-safe-money-gen] coverage (608/1610): Money\.AccountOfSpec.BTC.ADA.rate.produces valid amounts (11 mutations)
  10636. 124.07 s [really-safe-money-gen] coverage (610/1610): Money\.AccountOfSpec.BTC.fromRational.roundtrips with toRational (23 mutations)
  10637. 124.08 s [really-safe-money-gen] coverage (611/1610): Money\.AccountOfSpec.BTC.Show (AccountOf * BTC) and Read (AccountOf * BTC).are implemented such that read \. show == id for valid values (3 mutations)
  10638. 124.10 s [really-safe-money-gen] coverage (612/1610): Money\.AccountOfSpec.BTC.toMinimalQuantisations.produces valid accounts (3 mutations)
  10639. 124.34 s [really-safe-money-gen] coverage (613/1610): Money\.AccountOfSpec.BTC.GenValid (AccountOf * BTC).genValid \:\: Gen (AccountOf * BTC).only generates valid '(AccountOf * BTC)'s (1 mutations)
  10640. 124.43 s [really-safe-money-gen] coverage (614/1610): Money\.AccountOfSpec.BTC.toRational.produces valid Rationals when the quantisation factor is nonzero (3 mutations)
  10641. 124.53 s [really-safe-money-gen] coverage (615/1610): Money\.AccountOfSpec.BTC.INR.rate.produces valid amounts (11 mutations)
  10642. 124.57 s [really-safe-money-gen] coverage (616/1610): Money\.AccountOfSpec.BTC.INR.convert.produces valid amounts (17 mutations)
  10643. 124.78 s [really-safe-money-gen] coverage (618/1610): Money\.AccountOfSpec.BTC.fromDouble.produces valid rational (28 mutations)
  10644. 124.78 s [really-safe-money-gen] coverage (619/1610): Money\.AccountOfSpec.BTC.fraction.produces valid amounts (28 mutations)
  10645. 124.83 s [really-safe-money-gen] coverage (617/1610): Money\.AccountOfSpec.BTC.fromDouble.roundtrips with toDouble (30 mutations)
  10646. 125.28 s [really-safe-money-gen] coverage (620/1610): Money\.AccountOfSpec.BTC.fraction.Produces a result that can be multiplied back (28 mutations)
  10647. 125.33 s [really-safe-money-gen] coverage (621/1610): Money\.AccountOfSpec.BTC.CHF.rate.produces valid amounts (11 mutations)
  10648. 125.66 s [really-safe-money-gen] coverage (623/1610): Money\.AccountOfSpec.BTC.fromMinimalQuantisations.roundtrips with toMinimalQuantisations (12 mutations)
  10649. 125.71 s [really-safe-money-gen] coverage (622/1610): Money\.AccountOfSpec.BTC.CHF.convert.produces valid amounts (17 mutations)
  10650. 125.77 s [really-safe-money-gen] coverage (625/1610): Money\.AccountOfSpec.BTC.fromAmount.produces valid AccountOfs (1 mutations)
  10651. 125.82 s [really-safe-money-gen] coverage (624/1610): Money\.AccountOfSpec.BTC.fromMinimalQuantisations.produces valid accounts (10 mutations)
  10652. 125.91 s [really-safe-money-gen] coverage (626/1610): Money\.AccountOfSpec.BTC.abs.produces valid amounts (1 mutations)
  10653. 126.05 s [really-safe-money-gen] coverage (627/1610): Money\.ConversionRateOfSpec.INR.ADA.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10654. 126.07 s [really-safe-money-gen] coverage (628/1610): Money\.ConversionRateOfSpec.INR.ADA.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10655. 126.23 s [really-safe-money-gen] coverage (630/1610): Money\.ConversionRateOfSpec.INR.ADA.GenValid (ConversionRateOf INR ADA).genValid \:\: Gen (ConversionRateOf INR ADA).only generates valid '(ConversionRateOf INR ADA)'s (6 mutations)
  10656. 126.27 s [really-safe-money-gen] coverage (629/1610): Money\.ConversionRateOfSpec.INR.ADA.Ratio.toRatio.produces valid ratios (0 mutations)
  10657. 126.37 s [really-safe-money-gen] coverage (586/1610): Money\.AccountOfSpec.BTC.distribute.Eq (Distribution (AccountOf * BTC)).(/=) \:\: (Distribution (AccountOf * BTC)) -> (Distribution (AccountOf * BTC)) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (Distribution (AccountOf * BTC))"s (3 mutations)
  10658. 126.56 s [really-safe-money-gen] coverage (631/1610): Money\.ConversionRateOfSpec.INR.ADA.Rational.toRational.produces valid rationals (0 mutations)
  10659. 126.67 s [really-safe-money-gen] coverage (633/1610): Money\.ConversionRateOfSpec.INR.ADA.Rational.fromRational.roundtrips with toRational (11 mutations)
  10660. 126.68 s [really-safe-money-gen] coverage (632/1610): Money\.ConversionRateOfSpec.INR.ADA.Rational.fromRational.produces valid conversion rates (11 mutations)
  10661. 126.82 s [really-safe-money-gen] coverage (634/1610): Money\.ConversionRateOfSpec.INR.ADA.compose.produces valid rates (6 mutations)
  10662. 126.94 s [really-safe-money-gen] coverage (637/1610): Money\.ConversionRateOfSpec.INR.ADA.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10663. 126.94 s [really-safe-money-gen] coverage (635/1610): Money\.ConversionRateOfSpec.INR.ADA.invert.produces valid rates (8 mutations)
  10664. 127.07 s [really-safe-money-gen] coverage (639/1610): Money\.ConversionRateOfSpec.INR.BTC.Ratio.toRatio.produces valid ratios (0 mutations)
  10665. 127.29 s [really-safe-money-gen] coverage (638/1610): Money\.ConversionRateOfSpec.INR.ADA.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10666. 127.33 s [really-safe-money-gen] coverage (640/1610): Money\.ConversionRateOfSpec.INR.BTC.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10667. 127.46 s [really-safe-money-gen] coverage (636/1610): Money\.ConversionRateOfSpec.INR.ADA.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10668. 127.51 s [really-safe-money-gen] coverage (641/1610): Money\.ConversionRateOfSpec.INR.BTC.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10669. 127.54 s [really-safe-money-gen] coverage (642/1610): Money\.ConversionRateOfSpec.INR.BTC.invert.produces valid rates (8 mutations)
  10670. 127.59 s [really-safe-money-gen] coverage (643/1610): Money\.ConversionRateOfSpec.INR.BTC.compose.produces valid rates (6 mutations)
  10671. 127.78 s [really-safe-money-gen] coverage (644/1610): Money\.ConversionRateOfSpec.INR.BTC.Rational.toRational.produces valid rationals (0 mutations)
  10672. 128.11 s [really-safe-money-gen] coverage (648/1610): Money\.ConversionRateOfSpec.INR.BTC.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10673. 128.14 s [really-safe-money-gen] coverage (647/1610): Money\.ConversionRateOfSpec.INR.BTC.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10674. 128.22 s [really-safe-money-gen] coverage (649/1610): Money\.ConversionRateOfSpec.INR.BTC.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10675. 128.37 s [really-safe-money-gen] coverage (646/1610): Money\.ConversionRateOfSpec.INR.BTC.Rational.fromRational.produces valid conversion rates (11 mutations)
  10676. 128.52 s [really-safe-money-gen] coverage (650/1610): Money\.ConversionRateOfSpec.INR.BTC.GenValid (ConversionRateOf INR BTC).genValid \:\: Gen (ConversionRateOf INR BTC).only generates valid '(ConversionRateOf INR BTC)'s (6 mutations)
  10677. 128.56 s [really-safe-money-gen] coverage (645/1610): Money\.ConversionRateOfSpec.INR.BTC.Rational.fromRational.roundtrips with toRational (11 mutations)
  10678. 128.66 s [really-safe-money-gen] coverage (651/1610): Money\.ConversionRateOfSpec.INR.CHF.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10679. 128.84 s [really-safe-money-gen] coverage (654/1610): Money\.ConversionRateOfSpec.INR.CHF.Ratio.toRatio.produces valid ratios (0 mutations)
  10680. 129.02 s [really-safe-money-gen] coverage (655/1610): Money\.ConversionRateOfSpec.INR.CHF.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10681. 129.18 s [really-safe-money-gen] coverage (658/1610): Money\.ConversionRateOfSpec.INR.CHF.Rational.fromRational.produces valid conversion rates (11 mutations)
  10682. 129.24 s [really-safe-money-gen] coverage (656/1610): Money\.ConversionRateOfSpec.INR.CHF.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10683. 129.40 s [really-safe-money-gen] coverage (653/1610): Money\.ConversionRateOfSpec.INR.CHF.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10684. 129.41 s [really-safe-money-gen] coverage (562/1610): Money\.AccountOfSpec.BTC.Ord (AccountOf * BTC).(>) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is antireflexive for "valid (AccountOf * BTC)"'s (3 mutations)
  10685. 129.50 s [really-safe-money-gen] coverage (652/1610): Money\.ConversionRateOfSpec.INR.CHF.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10686. 129.80 s [really-safe-money-gen] coverage (659/1610): Money\.ConversionRateOfSpec.INR.CHF.Rational.toRational.produces valid rationals (0 mutations)
  10687. 129.91 s [really-safe-money-gen] coverage (584/1610): Money\.AccountOfSpec.BTC.distribute.Eq (Distribution (AccountOf * BTC)).(==) \:\: (Distribution (AccountOf * BTC)) -> (Distribution (AccountOf * BTC)) -> Bool.is transitive for "valid (Distribution (AccountOf * BTC))"s (3 mutations)
  10688. 129.92 s [really-safe-money-gen] coverage (573/1610): Money\.AccountOfSpec.BTC.Ord (AccountOf * BTC).(>=) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is equivalent to (\\a b -> compare a b /= LT) for "valid (AccountOf * BTC)"'s (3 mutations)
  10689. 129.99 s [really-safe-money-gen] coverage (657/1610): Money\.ConversionRateOfSpec.INR.CHF.Rational.fromRational.roundtrips with toRational (11 mutations)
  10690. 130.09 s [really-safe-money-gen] coverage (579/1610): Money\.AccountOfSpec.BTC.distribute.produces results that sum up to the greater whole (45 mutations)
  10691. 130.10 s [really-safe-money-gen] coverage (583/1610): Money\.AccountOfSpec.BTC.distribute.Eq (Distribution (AccountOf * BTC)).(==) \:\: (Distribution (AccountOf * BTC)) -> (Distribution (AccountOf * BTC)) -> Bool.is symmetric for "valid (Distribution (AccountOf * BTC))"s (3 mutations)
  10692. 130.15 s [really-safe-money-gen] coverage (581/1610): Money\.AccountOfSpec.BTC.distribute.Eq (Distribution (AccountOf * BTC)).(==) \:\: (Distribution (AccountOf * BTC)) -> (Distribution (AccountOf * BTC)) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (Distribution (AccountOf * BTC))"s (3 mutations)
  10693. 130.55 s [really-safe-money-gen] coverage (585/1610): Money\.AccountOfSpec.BTC.distribute.Eq (Distribution (AccountOf * BTC)).(/=) \:\: (Distribution (AccountOf * BTC)) -> (Distribution (AccountOf * BTC)) -> Bool.is antireflexive for "valid (Distribution (AccountOf * BTC))"s (3 mutations)
  10694. 130.56 s [really-safe-money-gen] coverage (660/1610): Money\.ConversionRateOfSpec.INR.CHF.invert.produces valid rates (8 mutations)
  10695. 130.64 s [really-safe-money-gen] coverage (661/1610): Money\.ConversionRateOfSpec.INR.CHF.compose.produces valid rates (6 mutations)
  10696. 130.73 s [really-safe-money-gen] coverage (665/1610): Money\.ConversionRateOfSpec.INR.USD.Rational.fromRational.produces valid conversion rates (11 mutations)
  10697. 130.75 s [really-safe-money-gen] coverage (663/1610): Money\.ConversionRateOfSpec.INR.USD.GenValid (ConversionRateOf INR USD).genValid \:\: Gen (ConversionRateOf INR USD).only generates valid '(ConversionRateOf INR USD)'s (6 mutations)
  10698. 130.81 s [really-safe-money-gen] coverage (664/1610): Money\.ConversionRateOfSpec.INR.USD.Rational.toRational.produces valid rationals (0 mutations)
  10699. 130.93 s [really-safe-money-gen] coverage (667/1610): Money\.ConversionRateOfSpec.INR.USD.invert.produces valid rates (8 mutations)
  10700. 131.33 s [really-safe-money-gen] coverage (668/1610): Money\.ConversionRateOfSpec.INR.USD.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10701. 131.36 s [really-safe-money-gen] coverage (670/1610): Money\.ConversionRateOfSpec.INR.USD.Ratio.toRatio.produces valid ratios (0 mutations)
  10702. 131.39 s [really-safe-money-gen] coverage (671/1610): Money\.ConversionRateOfSpec.INR.USD.compose.produces valid rates (6 mutations)
  10703. 131.73 s [really-safe-money-gen] coverage (673/1610): Money\.ConversionRateOfSpec.INR.USD.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10704. 131.75 s [really-safe-money-gen] coverage (675/1610): Money\.ConversionRateOfSpec.INR.INR.Rational.toRational.produces valid rationals (0 mutations)
  10705. 131.78 s [really-safe-money-gen] coverage (676/1610): Money\.ConversionRateOfSpec.INR.INR.Rational.fromRational.roundtrips with toRational (11 mutations)
  10706. 131.94 s [really-safe-money-gen] coverage (672/1610): Money\.ConversionRateOfSpec.INR.USD.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10707. 131.99 s [really-safe-money-gen] coverage (678/1610): Money\.ConversionRateOfSpec.INR.INR.GenValid (ConversionRateOf INR INR).genValid \:\: Gen (ConversionRateOf INR INR).only generates valid '(ConversionRateOf INR INR)'s (6 mutations)
  10708. 132.33 s [really-safe-money-gen] coverage (682/1610): Money\.ConversionRateOfSpec.INR.INR.compose.produces valid rates (6 mutations)
  10709. 132.37 s [really-safe-money-gen] coverage (680/1610): Money\.ConversionRateOfSpec.INR.INR.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10710. 132.39 s [really-safe-money-gen] coverage (685/1610): Money\.ConversionRateOfSpec.INR.INR.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10711. 132.40 s [really-safe-money-gen] coverage (684/1610): Money\.ConversionRateOfSpec.INR.INR.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10712. 132.49 s [really-safe-money-gen] coverage (679/1610): Money\.ConversionRateOfSpec.INR.INR.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10713. 132.51 s [really-safe-money-gen] coverage (686/1610): Money\.ConversionRateOfSpec.INR.INR.Ratio.toRatio.produces valid ratios (0 mutations)
  10714. 132.78 s [really-safe-money-gen] coverage (677/1610): Money\.ConversionRateOfSpec.INR.INR.Rational.fromRational.produces valid conversion rates (11 mutations)
  10715. 132.85 s [really-safe-money-gen] coverage (574/1610): Money\.AccountOfSpec.BTC.Ord (AccountOf * BTC).(>=) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is transitive for "valid (AccountOf * BTC)"'s (3 mutations)
  10716. 132.88 s [really-safe-money-gen] coverage (688/1610): Money\.ConversionRateOfSpec.ADA.USD.Ratio.toRatio.produces valid ratios (0 mutations)
  10717. 132.98 s [really-safe-money-gen] coverage (575/1610): Money\.AccountOfSpec.BTC.Ord (AccountOf * BTC).(>=) \:\: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool.is reflexive for "valid (AccountOf * BTC)"'s (3 mutations)
  10718. 133.02 s [really-safe-money-gen] coverage (578/1610): Money\.AccountOfSpec.BTC.distribute.produces valid amounts (28 mutations)
  10719. 133.08 s [really-safe-money-gen] coverage (576/1610): Money\.AccountOfSpec.BTC.BTC.convert.produces valid amounts (17 mutations)
  10720. 133.15 s [really-safe-money-gen] coverage (580/1610): Money\.AccountOfSpec.BTC.distribute.Show (Distribution (AccountOf * BTC)) and Read (Distribution (AccountOf * BTC)).are implemented such that read \. show == id for valid values (3 mutations)
  10721. 133.42 s [really-safe-money-gen] coverage (577/1610): Money\.AccountOfSpec.BTC.BTC.rate.produces valid amounts (11 mutations)
  10722. 133.42 s [really-safe-money-gen] coverage (582/1610): Money\.AccountOfSpec.BTC.distribute.Eq (Distribution (AccountOf * BTC)).(==) \:\: (Distribution (AccountOf * BTC)) -> (Distribution (AccountOf * BTC)) -> Bool.is reflexive for "valid (Distribution (AccountOf * BTC))"s (3 mutations)
  10723. 133.51 s [really-safe-money-gen] coverage (694/1610): Money\.ConversionRateOfSpec.ADA.USD.Rational.toRational.produces valid rationals (0 mutations)
  10724. 133.71 s [really-safe-money-gen] coverage (666/1610): Money\.ConversionRateOfSpec.INR.USD.Rational.fromRational.roundtrips with toRational (11 mutations)
  10725. 133.77 s [really-safe-money-gen] coverage (662/1610): Money\.ConversionRateOfSpec.INR.CHF.GenValid (ConversionRateOf INR CHF).genValid \:\: Gen (ConversionRateOf INR CHF).only generates valid '(ConversionRateOf INR CHF)'s (6 mutations)
  10726. 133.89 s [really-safe-money-gen] coverage (674/1610): Money\.ConversionRateOfSpec.INR.USD.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10727. 133.95 s [really-safe-money-gen] coverage (696/1610): Money\.ConversionRateOfSpec.ADA.USD.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10728. 134.16 s [really-safe-money-gen] coverage (587/1610): Money\.AccountOfSpec.BTC.toDouble.produces valid Doubles when the quantisation factor is nonzero (3 mutations)
  10729. 134.21 s [really-safe-money-gen] coverage (695/1610): Money\.ConversionRateOfSpec.ADA.USD.GenValid (ConversionRateOf ADA USD).genValid \:\: Gen (ConversionRateOf ADA USD).only generates valid '(ConversionRateOf ADA USD)'s (6 mutations)
  10730. 134.55 s [really-safe-money-gen] coverage (689/1610): Money\.ConversionRateOfSpec.ADA.USD.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10731. 134.62 s [really-safe-money-gen] coverage (687/1610): Money\.ConversionRateOfSpec.ADA.USD.compose.produces valid rates (6 mutations)
  10732. 134.63 s [really-safe-money-gen] coverage (690/1610): Money\.ConversionRateOfSpec.ADA.USD.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10733. 134.64 s [really-safe-money-gen] coverage (697/1610): Money\.ConversionRateOfSpec.ADA.USD.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10734. 134.81 s [really-safe-money-gen] coverage (691/1610): Money\.ConversionRateOfSpec.ADA.USD.invert.produces valid rates (8 mutations)
  10735. 134.85 s [really-safe-money-gen] coverage (692/1610): Money\.ConversionRateOfSpec.ADA.USD.Rational.fromRational.produces valid conversion rates (11 mutations)
  10736. 135.01 s [really-safe-money-gen] coverage (683/1610): Money\.ConversionRateOfSpec.INR.INR.invert.produces valid rates (8 mutations)
  10737. 135.02 s [really-safe-money-gen] coverage (693/1610): Money\.ConversionRateOfSpec.ADA.USD.Rational.fromRational.roundtrips with toRational (11 mutations)
  10738. 135.30 s [really-safe-money-gen] coverage (669/1610): Money\.ConversionRateOfSpec.INR.USD.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10739. 135.43 s [really-safe-money-gen] coverage (706/1610): Money\.ConversionRateOfSpec.ADA.CHF.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10740. 135.47 s [really-safe-money-gen] coverage (704/1610): Money\.ConversionRateOfSpec.ADA.CHF.Rational.fromRational.roundtrips with toRational (11 mutations)
  10741. 135.58 s [really-safe-money-gen] coverage (681/1610): Money\.ConversionRateOfSpec.INR.INR.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10742. 135.69 s [really-safe-money-gen] coverage (707/1610): Money\.ConversionRateOfSpec.ADA.CHF.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10743. 135.77 s [really-safe-money-gen] coverage (711/1610): Money\.ConversionRateOfSpec.ADA.ADA.GenValid (ConversionRateOf ADA ADA).genValid \:\: Gen (ConversionRateOf ADA ADA).only generates valid '(ConversionRateOf ADA ADA)'s (6 mutations)
  10744. 135.91 s [really-safe-money-gen] coverage (710/1610): Money\.ConversionRateOfSpec.ADA.CHF.invert.produces valid rates (8 mutations)
  10745. 135.92 s [really-safe-money-gen] coverage (708/1610): Money\.ConversionRateOfSpec.ADA.CHF.Ratio.toRatio.produces valid ratios (0 mutations)
  10746. 136.03 s [really-safe-money-gen] coverage (709/1610): Money\.ConversionRateOfSpec.ADA.CHF.GenValid (ConversionRateOf ADA CHF).genValid \:\: Gen (ConversionRateOf ADA CHF).only generates valid '(ConversionRateOf ADA CHF)'s (6 mutations)
  10747. 136.03 s [really-safe-money-gen] coverage (705/1610): Money\.ConversionRateOfSpec.ADA.CHF.Rational.fromRational.produces valid conversion rates (11 mutations)
  10748. 136.22 s [really-safe-money-gen] coverage (714/1610): Money\.ConversionRateOfSpec.ADA.ADA.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10749. 136.39 s [really-safe-money-gen] coverage (702/1610): Money\.ConversionRateOfSpec.ADA.CHF.compose.produces valid rates (6 mutations)
  10750. 136.50 s [really-safe-money-gen] coverage (712/1610): Money\.ConversionRateOfSpec.ADA.ADA.invert.produces valid rates (8 mutations)
  10751. 136.53 s [really-safe-money-gen] coverage (698/1610): Money\.ConversionRateOfSpec.ADA.USD.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10752. 136.77 s [really-safe-money-gen] coverage (700/1610): Money\.ConversionRateOfSpec.ADA.CHF.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10753. 136.86 s [really-safe-money-gen] coverage (703/1610): Money\.ConversionRateOfSpec.ADA.CHF.Rational.toRational.produces valid rationals (0 mutations)
  10754. 137.17 s [really-safe-money-gen] coverage (717/1610): Money\.ConversionRateOfSpec.ADA.ADA.Rational.toRational.produces valid rationals (0 mutations)
  10755. 137.34 s [really-safe-money-gen] coverage (701/1610): Money\.ConversionRateOfSpec.ADA.CHF.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10756. 137.37 s [really-safe-money-gen] coverage (699/1610): Money\.ConversionRateOfSpec.ADA.CHF.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10757. 137.57 s [really-safe-money-gen] coverage (723/1610): Money\.ConversionRateOfSpec.ADA.BTC.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10758. 137.74 s [really-safe-money-gen] coverage (719/1610): Money\.ConversionRateOfSpec.ADA.ADA.Rational.fromRational.produces valid conversion rates (11 mutations)
  10759. 137.79 s [really-safe-money-gen] coverage (721/1610): Money\.ConversionRateOfSpec.ADA.ADA.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10760. 137.83 s [really-safe-money-gen] coverage (716/1610): Money\.ConversionRateOfSpec.ADA.ADA.compose.produces valid rates (6 mutations)
  10761. 137.86 s [really-safe-money-gen] coverage (728/1610): Money\.ConversionRateOfSpec.ADA.BTC.Rational.toRational.produces valid rationals (0 mutations)
  10762. 137.91 s [really-safe-money-gen] coverage (722/1610): Money\.ConversionRateOfSpec.ADA.ADA.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10763. 137.97 s [really-safe-money-gen] coverage (726/1610): Money\.ConversionRateOfSpec.ADA.BTC.GenValid (ConversionRateOf ADA BTC).genValid \:\: Gen (ConversionRateOf ADA BTC).only generates valid '(ConversionRateOf ADA BTC)'s (6 mutations)
  10764. 138.18 s [really-safe-money-gen] coverage (713/1610): Money\.ConversionRateOfSpec.ADA.ADA.Ratio.toRatio.produces valid ratios (0 mutations)
  10765. 138.40 s [really-safe-money-gen] coverage (720/1610): Money\.ConversionRateOfSpec.ADA.ADA.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10766. 138.43 s [really-safe-money-gen] coverage (718/1610): Money\.ConversionRateOfSpec.ADA.ADA.Rational.fromRational.roundtrips with toRational (11 mutations)
  10767. 138.67 s [really-safe-money-gen] coverage (715/1610): Money\.ConversionRateOfSpec.ADA.ADA.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10768. 138.71 s [really-safe-money-gen] coverage (725/1610): Money\.ConversionRateOfSpec.ADA.BTC.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10769. 138.81 s [really-safe-money-gen] coverage (724/1610): Money\.ConversionRateOfSpec.ADA.BTC.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10770. 138.91 s [really-safe-money-gen] coverage (729/1610): Money\.ConversionRateOfSpec.ADA.BTC.Rational.fromRational.roundtrips with toRational (11 mutations)
  10771. 138.92 s [really-safe-money-gen] coverage (739/1610): Money\.ConversionRateOfSpec.ADA.INR.Ratio.toRatio.produces valid ratios (0 mutations)
  10772. 138.95 s [really-safe-money-gen] coverage (733/1610): Money\.ConversionRateOfSpec.ADA.BTC.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10773. 139.07 s [really-safe-money-gen] coverage (732/1610): Money\.ConversionRateOfSpec.ADA.BTC.Ratio.toRatio.produces valid ratios (0 mutations)
  10774. 139.07 s [really-safe-money-gen] coverage (730/1610): Money\.ConversionRateOfSpec.ADA.BTC.Rational.fromRational.produces valid conversion rates (11 mutations)
  10775. 139.16 s [really-safe-money-gen] coverage (740/1610): Money\.ConversionRateOfSpec.ADA.INR.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10776. 139.24 s [really-safe-money-gen] coverage (741/1610): Money\.ConversionRateOfSpec.ADA.INR.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10777. 139.53 s [really-safe-money-gen] coverage (737/1610): Money\.ConversionRateOfSpec.ADA.INR.Rational.fromRational.roundtrips with toRational (11 mutations)
  10778. 139.55 s [really-safe-money-gen] coverage (736/1610): Money\.ConversionRateOfSpec.ADA.INR.Rational.fromRational.produces valid conversion rates (11 mutations)
  10779. 139.78 s [really-safe-money-gen] coverage (727/1610): Money\.ConversionRateOfSpec.ADA.BTC.invert.produces valid rates (8 mutations)
  10780. 139.78 s [really-safe-money-gen] coverage (742/1610): Money\.ConversionRateOfSpec.ADA.INR.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10781. 139.82 s [really-safe-money-gen] coverage (734/1610): Money\.ConversionRateOfSpec.ADA.BTC.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10782. 140.31 s [really-safe-money-gen] coverage (731/1610): Money\.ConversionRateOfSpec.ADA.BTC.compose.produces valid rates (6 mutations)
  10783. 140.35 s [really-safe-money-gen] coverage (743/1610): Money\.ConversionRateOfSpec.ADA.INR.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10784. 140.39 s [really-safe-money-gen] coverage (744/1610): Money\.ConversionRateOfSpec.ADA.INR.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10785. 140.49 s [really-safe-money-gen] coverage (745/1610): Money\.ConversionRateOfSpec.ADA.INR.compose.produces valid rates (6 mutations)
  10786. 140.60 s [really-safe-money-gen] coverage (735/1610): Money\.ConversionRateOfSpec.ADA.INR.GenValid (ConversionRateOf ADA INR).genValid \:\: Gen (ConversionRateOf ADA INR).only generates valid '(ConversionRateOf ADA INR)'s (6 mutations)
  10787. 140.66 s [really-safe-money-gen] coverage (746/1610): Money\.ConversionRateOfSpec.ADA.INR.invert.produces valid rates (8 mutations)
  10788. 140.66 s [really-safe-money-gen] coverage (738/1610): Money\.ConversionRateOfSpec.ADA.INR.Rational.toRational.produces valid rationals (0 mutations)
  10789. 140.78 s [really-safe-money-gen] coverage (748/1610): Money\.ConversionRateOfSpec.CHF.BTC.Rational.fromRational.roundtrips with toRational (11 mutations)
  10790. 140.79 s [really-safe-money-gen] coverage (747/1610): Money\.ConversionRateOfSpec.CHF.BTC.Rational.toRational.produces valid rationals (0 mutations)
  10791. 140.87 s [really-safe-money-gen] coverage (749/1610): Money\.ConversionRateOfSpec.CHF.BTC.Rational.fromRational.produces valid conversion rates (11 mutations)
  10792. 141.23 s [really-safe-money-gen] coverage (751/1610): Money\.ConversionRateOfSpec.CHF.BTC.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10793. 141.37 s [really-safe-money-gen] coverage (750/1610): Money\.ConversionRateOfSpec.CHF.BTC.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10794. 141.58 s [really-safe-money-gen] coverage (754/1610): Money\.ConversionRateOfSpec.CHF.BTC.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10795. 141.64 s [really-safe-money-gen] coverage (753/1610): Money\.ConversionRateOfSpec.CHF.BTC.compose.produces valid rates (6 mutations)
  10796. 141.66 s [really-safe-money-gen] coverage (752/1610): Money\.ConversionRateOfSpec.CHF.BTC.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10797. 141.70 s [really-safe-money-gen] coverage (755/1610): Money\.ConversionRateOfSpec.CHF.BTC.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10798. 141.80 s [really-safe-money-gen] coverage (756/1610): Money\.ConversionRateOfSpec.CHF.BTC.Ratio.toRatio.produces valid ratios (0 mutations)
  10799. 141.88 s [really-safe-money-gen] coverage (757/1610): Money\.ConversionRateOfSpec.CHF.BTC.invert.produces valid rates (8 mutations)
  10800. 141.98 s [really-safe-money-gen] coverage (759/1610): Money\.ConversionRateOfSpec.CHF.ADA.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10801. 141.99 s [really-safe-money-gen] coverage (758/1610): Money\.ConversionRateOfSpec.CHF.BTC.GenValid (ConversionRateOf CHF BTC).genValid \:\: Gen (ConversionRateOf CHF BTC).only generates valid '(ConversionRateOf CHF BTC)'s (6 mutations)
  10802. 142.11 s [really-safe-money-gen] coverage (768/1610): Money\.ConversionRateOfSpec.CHF.ADA.Rational.toRational.produces valid rationals (0 mutations)
  10803. 142.29 s [really-safe-money-gen] coverage (760/1610): Money\.ConversionRateOfSpec.CHF.ADA.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10804. 142.33 s [really-safe-money-gen] coverage (761/1610): Money\.ConversionRateOfSpec.CHF.ADA.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10805. 142.41 s [really-safe-money-gen] coverage (763/1610): Money\.ConversionRateOfSpec.CHF.ADA.Ratio.toRatio.produces valid ratios (0 mutations)
  10806. 142.41 s [really-safe-money-gen] coverage (764/1610): Money\.ConversionRateOfSpec.CHF.ADA.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10807. 142.65 s [really-safe-money-gen] coverage (769/1610): Money\.ConversionRateOfSpec.CHF.ADA.Rational.fromRational.roundtrips with toRational (11 mutations)
  10808. 142.66 s [really-safe-money-gen] coverage (772/1610): Money\.ConversionRateOfSpec.CHF.USD.GenValid (ConversionRateOf CHF USD).genValid \:\: Gen (ConversionRateOf CHF USD).only generates valid '(ConversionRateOf CHF USD)'s (6 mutations)
  10809. 142.71 s [really-safe-money-gen] coverage (766/1610): Money\.ConversionRateOfSpec.CHF.ADA.compose.produces valid rates (6 mutations)
  10810. 143.12 s [really-safe-money-gen] coverage (771/1610): Money\.ConversionRateOfSpec.CHF.USD.invert.produces valid rates (8 mutations)
  10811. 143.15 s [really-safe-money-gen] coverage (776/1610): Money\.ConversionRateOfSpec.CHF.USD.compose.produces valid rates (6 mutations)
  10812. 143.28 s [really-safe-money-gen] coverage (775/1610): Money\.ConversionRateOfSpec.CHF.USD.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10813. 143.48 s [really-safe-money-gen] coverage (778/1610): Money\.ConversionRateOfSpec.CHF.USD.Rational.fromRational.roundtrips with toRational (11 mutations)
  10814. 143.50 s [really-safe-money-gen] coverage (779/1610): Money\.ConversionRateOfSpec.CHF.USD.Rational.toRational.produces valid rationals (0 mutations)
  10815. 143.51 s [really-safe-money-gen] coverage (774/1610): Money\.ConversionRateOfSpec.CHF.USD.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10816. 143.71 s [really-safe-money-gen] coverage (777/1610): Money\.ConversionRateOfSpec.CHF.USD.Rational.fromRational.produces valid conversion rates (11 mutations)
  10817. 143.71 s [really-safe-money-gen] coverage (781/1610): Money\.ConversionRateOfSpec.CHF.USD.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10818. 143.77 s [really-safe-money-gen] coverage (773/1610): Money\.ConversionRateOfSpec.CHF.USD.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10819. 143.81 s [really-safe-money-gen] coverage (795/1610): Money\.ConversionRateOfSpec.CHF.INR.Ratio.toRatio.produces valid ratios (0 mutations)
  10820. 144.15 s [really-safe-money-gen] coverage (797/1610): Money\.ConversionRateOfSpec.CHF.INR.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10821. 144.18 s [really-safe-money-gen] coverage (787/1610): Money\.ConversionRateOfSpec.CHF.CHF.Rational.toRational.produces valid rationals (0 mutations)
  10822. 144.43 s [really-safe-money-gen] coverage (786/1610): Money\.ConversionRateOfSpec.CHF.CHF.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10823. 144.46 s [really-safe-money-gen] coverage (780/1610): Money\.ConversionRateOfSpec.CHF.USD.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10824. 144.54 s [really-safe-money-gen] coverage (803/1610): Money\.ConversionRateOfSpec.CHF.INR.GenValid (ConversionRateOf CHF INR).genValid \:\: Gen (ConversionRateOf CHF INR).only generates valid '(ConversionRateOf CHF INR)'s (6 mutations)
  10825. 144.62 s [really-safe-money-gen] coverage (804/1610): Money\.ConversionRateOfSpec.CHF.INR.Rational.fromRational.roundtrips with toRational (11 mutations)
  10826. 144.73 s [really-safe-money-gen] coverage (805/1610): Money\.ConversionRateOfSpec.CHF.INR.Rational.fromRational.produces valid conversion rates (11 mutations)
  10827. 144.80 s [really-safe-money-gen] coverage (793/1610): Money\.ConversionRateOfSpec.CHF.CHF.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10828. 144.84 s [really-safe-money-gen] coverage (784/1610): Money\.ConversionRateOfSpec.CHF.CHF.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10829. 144.98 s [really-safe-money-gen] coverage (801/1610): Money\.ConversionRateOfSpec.CHF.INR.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10830. 145.18 s [really-safe-money-gen] coverage (800/1610): Money\.ConversionRateOfSpec.CHF.INR.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10831. 145.22 s [really-safe-money-gen] coverage (792/1610): Money\.ConversionRateOfSpec.CHF.CHF.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10832. 145.24 s [really-safe-money-gen] coverage (788/1610): Money\.ConversionRateOfSpec.CHF.CHF.Rational.fromRational.produces valid conversion rates (11 mutations)
  10833. 145.30 s [really-safe-money-gen] coverage (791/1610): Money\.ConversionRateOfSpec.CHF.CHF.Ratio.toRatio.produces valid ratios (0 mutations)
  10834. 145.36 s [really-safe-money-gen] coverage (796/1610): Money\.ConversionRateOfSpec.CHF.INR.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10835. 145.43 s [really-safe-money-gen] coverage (802/1610): Money\.ConversionRateOfSpec.CHF.INR.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10836. 145.59 s [really-safe-money-gen] coverage (790/1610): Money\.ConversionRateOfSpec.CHF.CHF.invert.produces valid rates (8 mutations)
  10837. 145.66 s [really-safe-money-gen] coverage (798/1610): Money\.ConversionRateOfSpec.CHF.INR.compose.produces valid rates (6 mutations)
  10838. 145.91 s [really-safe-money-gen] coverage (767/1610): Money\.ConversionRateOfSpec.CHF.ADA.GenValid (ConversionRateOf CHF ADA).genValid \:\: Gen (ConversionRateOf CHF ADA).only generates valid '(ConversionRateOf CHF ADA)'s (6 mutations)
  10839. 146.01 s [really-safe-money-gen] coverage (765/1610): Money\.ConversionRateOfSpec.CHF.ADA.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10840. 146.05 s [really-safe-money-gen] coverage (794/1610): Money\.ConversionRateOfSpec.CHF.CHF.compose.produces valid rates (6 mutations)
  10841. 146.39 s [really-safe-money-gen] coverage (770/1610): Money\.ConversionRateOfSpec.CHF.ADA.Rational.fromRational.produces valid conversion rates (11 mutations)
  10842. 146.44 s [really-safe-money-gen] coverage (789/1610): Money\.ConversionRateOfSpec.CHF.CHF.Rational.fromRational.roundtrips with toRational (11 mutations)
  10843. 146.44 s [really-safe-money-gen] coverage (782/1610): Money\.ConversionRateOfSpec.CHF.USD.Ratio.toRatio.produces valid ratios (0 mutations)
  10844. 146.61 s [really-safe-money-gen] coverage (783/1610): Money\.ConversionRateOfSpec.CHF.CHF.GenValid (ConversionRateOf CHF CHF).genValid \:\: Gen (ConversionRateOf CHF CHF).only generates valid '(ConversionRateOf CHF CHF)'s (6 mutations)
  10845. 146.66 s [really-safe-money-gen] coverage (762/1610): Money\.ConversionRateOfSpec.CHF.ADA.invert.produces valid rates (8 mutations)
  10846. 146.95 s [really-safe-money-gen] coverage (810/1610): Money\.ConversionRateOfSpec.USD.CHF.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10847. 146.95 s [really-safe-money-gen] coverage (785/1610): Money\.ConversionRateOfSpec.CHF.CHF.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10848. 146.98 s [really-safe-money-gen] coverage (809/1610): Money\.ConversionRateOfSpec.USD.CHF.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10849. 147.22 s [really-safe-money-gen] coverage (806/1610): Money\.ConversionRateOfSpec.CHF.INR.Rational.toRational.produces valid rationals (0 mutations)
  10850. 147.36 s [really-safe-money-gen] coverage (811/1610): Money\.ConversionRateOfSpec.USD.CHF.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10851. 147.37 s [really-safe-money-gen] coverage (812/1610): Money\.ConversionRateOfSpec.USD.CHF.Rational.toRational.produces valid rationals (0 mutations)
  10852. 147.40 s [really-safe-money-gen] coverage (808/1610): Money\.ConversionRateOfSpec.USD.CHF.invert.produces valid rates (8 mutations)
  10853. 147.62 s [really-safe-money-gen] coverage (807/1610): Money\.ConversionRateOfSpec.USD.CHF.GenValid (ConversionRateOf USD CHF).genValid \:\: Gen (ConversionRateOf USD CHF).only generates valid '(ConversionRateOf USD CHF)'s (6 mutations)
  10854. 147.68 s [really-safe-money-gen] coverage (835/1610): Money\.ConversionRateOfSpec.USD.INR.Rational.fromRational.roundtrips with toRational (11 mutations)
  10855. 147.69 s [really-safe-money-gen] coverage (834/1610): Money\.ConversionRateOfSpec.USD.INR.compose.produces valid rates (6 mutations)
  10856. 147.78 s [really-safe-money-gen] coverage (836/1610): Money\.ConversionRateOfSpec.USD.INR.Rational.fromRational.produces valid conversion rates (11 mutations)
  10857. 148.13 s [really-safe-money-gen] coverage (837/1610): Money\.ConversionRateOfSpec.USD.INR.Rational.toRational.produces valid rationals (0 mutations)
  10858. 148.31 s [really-safe-money-gen] coverage (829/1610): Money\.ConversionRateOfSpec.USD.USD.compose.produces valid rates (6 mutations)
  10859. 148.36 s [really-safe-money-gen] coverage (819/1610): Money\.ConversionRateOfSpec.USD.USD.Ratio.toRatio.produces valid ratios (0 mutations)
  10860. 148.51 s [really-safe-money-gen] coverage (825/1610): Money\.ConversionRateOfSpec.USD.USD.invert.produces valid rates (8 mutations)
  10861. 148.53 s [really-safe-money-gen] coverage (826/1610): Money\.ConversionRateOfSpec.USD.USD.Rational.toRational.produces valid rationals (0 mutations)
  10862. 148.59 s [really-safe-money-gen] coverage (838/1610): Money\.ConversionRateOfSpec.USD.INR.Ratio.toRatio.produces valid ratios (0 mutations)
  10863. 148.61 s [really-safe-money-gen] coverage (824/1610): Money\.ConversionRateOfSpec.USD.USD.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10864. 148.85 s [really-safe-money-gen] coverage (815/1610): Money\.ConversionRateOfSpec.USD.CHF.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10865. 149.07 s [really-safe-money-gen] coverage (833/1610): Money\.ConversionRateOfSpec.USD.INR.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10866. 149.13 s [really-safe-money-gen] coverage (830/1610): Money\.ConversionRateOfSpec.USD.USD.GenValid (ConversionRateOf USD USD).genValid \:\: Gen (ConversionRateOf USD USD).only generates valid '(ConversionRateOf USD USD)'s (6 mutations)
  10867. 149.18 s [really-safe-money-gen] coverage (832/1610): Money\.ConversionRateOfSpec.USD.INR.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10868. 149.24 s [really-safe-money-gen] coverage (823/1610): Money\.ConversionRateOfSpec.USD.USD.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10869. 149.48 s [really-safe-money-gen] coverage (828/1610): Money\.ConversionRateOfSpec.USD.USD.Rational.fromRational.produces valid conversion rates (11 mutations)
  10870. 149.58 s [really-safe-money-gen] coverage (827/1610): Money\.ConversionRateOfSpec.USD.USD.Rational.fromRational.roundtrips with toRational (11 mutations)
  10871. 149.58 s [really-safe-money-gen] coverage (822/1610): Money\.ConversionRateOfSpec.USD.USD.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10872. 149.75 s [really-safe-money-gen] coverage (844/1610): Money\.ConversionRateOfSpec.USD.BTC.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10873. 149.87 s [really-safe-money-gen] coverage (843/1610): Money\.ConversionRateOfSpec.USD.BTC.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10874. 150.15 s [really-safe-money-gen] coverage (817/1610): Money\.ConversionRateOfSpec.USD.CHF.Ratio.toRatio.produces valid ratios (0 mutations)
  10875. 150.27 s [really-safe-money-gen] coverage (818/1610): Money\.ConversionRateOfSpec.USD.CHF.compose.produces valid rates (6 mutations)
  10876. 150.41 s [really-safe-money-gen] coverage (845/1610): Money\.ConversionRateOfSpec.USD.BTC.Ratio.toRatio.produces valid ratios (0 mutations)
  10877. 150.42 s [really-safe-money-gen] coverage (831/1610): Money\.ConversionRateOfSpec.USD.INR.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10878. 150.59 s [really-safe-money-gen] coverage (842/1610): Money\.ConversionRateOfSpec.USD.INR.GenValid (ConversionRateOf USD INR).genValid \:\: Gen (ConversionRateOf USD INR).only generates valid '(ConversionRateOf USD INR)'s (6 mutations)
  10879. 150.62 s [really-safe-money-gen] coverage (840/1610): Money\.ConversionRateOfSpec.USD.INR.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10880. 150.71 s [really-safe-money-gen] coverage (839/1610): Money\.ConversionRateOfSpec.USD.INR.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10881. 150.79 s [really-safe-money-gen] coverage (847/1610): Money\.ConversionRateOfSpec.USD.BTC.Rational.toRational.produces valid rationals (0 mutations)
  10882. 150.83 s [really-safe-money-gen] coverage (854/1610): Money\.ConversionRateOfSpec.USD.BTC.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10883. 151.14 s [really-safe-money-gen] coverage (857/1610): Money\.ConversionRateOfSpec.USD.ADA.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10884. 151.16 s [really-safe-money-gen] coverage (856/1610): Money\.ConversionRateOfSpec.USD.ADA.compose.produces valid rates (6 mutations)
  10885. 151.18 s [really-safe-money-gen] coverage (852/1610): Money\.ConversionRateOfSpec.USD.BTC.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10886. 151.25 s [really-safe-money-gen] coverage (851/1610): Money\.ConversionRateOfSpec.USD.BTC.invert.produces valid rates (8 mutations)
  10887. 151.44 s [really-safe-money-gen] coverage (849/1610): Money\.ConversionRateOfSpec.USD.BTC.Rational.fromRational.roundtrips with toRational (11 mutations)
  10888. 151.48 s [really-safe-money-gen] coverage (850/1610): Money\.ConversionRateOfSpec.USD.BTC.GenValid (ConversionRateOf USD BTC).genValid \:\: Gen (ConversionRateOf USD BTC).only generates valid '(ConversionRateOf USD BTC)'s (6 mutations)
  10889. 151.59 s [really-safe-money-gen] coverage (846/1610): Money\.ConversionRateOfSpec.USD.BTC.compose.produces valid rates (6 mutations)
  10890. 151.60 s [really-safe-money-gen] coverage (853/1610): Money\.ConversionRateOfSpec.USD.BTC.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10891. 151.65 s [really-safe-money-gen] coverage (848/1610): Money\.ConversionRateOfSpec.USD.BTC.Rational.fromRational.produces valid conversion rates (11 mutations)
  10892. 151.81 s [really-safe-money-gen] coverage (821/1610): Money\.ConversionRateOfSpec.USD.USD.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10893. 152.01 s [really-safe-money-gen] coverage (861/1610): Money\.ConversionRateOfSpec.USD.ADA.Ratio.toRatio.produces valid ratios (0 mutations)
  10894. 152.09 s [really-safe-money-gen] coverage (813/1610): Money\.ConversionRateOfSpec.USD.CHF.Rational.fromRational.roundtrips with toRational (11 mutations)
  10895. 152.18 s [really-safe-money-gen] coverage (859/1610): Money\.ConversionRateOfSpec.USD.ADA.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10896. 152.21 s [really-safe-money-gen] coverage (863/1610): Money\.ConversionRateOfSpec.USD.ADA.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10897. 152.45 s [really-safe-money-gen] coverage (864/1610): Money\.ConversionRateOfSpec.USD.ADA.Rational.fromRational.produces valid conversion rates (11 mutations)
  10898. 152.53 s [really-safe-money-gen] coverage (866/1610): Money\.ConversionRateOfSpec.USD.ADA.Rational.toRational.produces valid rationals (0 mutations)
  10899. 152.53 s [really-safe-money-gen] coverage (865/1610): Money\.ConversionRateOfSpec.USD.ADA.Rational.fromRational.roundtrips with toRational (11 mutations)
  10900. 152.72 s [really-safe-money-gen] coverage (816/1610): Money\.ConversionRateOfSpec.USD.CHF.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10901. 152.78 s [really-safe-money-gen] coverage (814/1610): Money\.ConversionRateOfSpec.USD.CHF.Rational.fromRational.produces valid conversion rates (11 mutations)
  10902. 153.06 s [really-safe-money-gen] coverage (820/1610): Money\.ConversionRateOfSpec.USD.USD.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10903. 153.22 s [really-safe-money-gen] coverage (855/1610): Money\.ConversionRateOfSpec.USD.ADA.GenValid (ConversionRateOf USD ADA).genValid \:\: Gen (ConversionRateOf USD ADA).only generates valid '(ConversionRateOf USD ADA)'s (6 mutations)
  10904. 153.33 s [really-safe-money-gen] coverage (867/1610): Money\.ConversionRateOfSpec.BTC.ADA.Ratio.toRatio.produces valid ratios (0 mutations)
  10905. 153.35 s [really-safe-money-gen] coverage (860/1610): Money\.ConversionRateOfSpec.USD.ADA.invert.produces valid rates (8 mutations)
  10906. 153.51 s [really-safe-money-gen] coverage (868/1610): Money\.ConversionRateOfSpec.BTC.ADA.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10907. 153.57 s [really-safe-money-gen] coverage (841/1610): Money\.ConversionRateOfSpec.USD.INR.invert.produces valid rates (8 mutations)
  10908. 153.64 s [really-safe-money-gen] coverage (862/1610): Money\.ConversionRateOfSpec.USD.ADA.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10909. 153.77 s [really-safe-money-gen] coverage (869/1610): Money\.ConversionRateOfSpec.BTC.ADA.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10910. 154.07 s [really-safe-money-gen] coverage (872/1610): Money\.ConversionRateOfSpec.BTC.ADA.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10911. 154.20 s [really-safe-money-gen] coverage (875/1610): Money\.ConversionRateOfSpec.BTC.ADA.GenValid (ConversionRateOf BTC ADA).genValid \:\: Gen (ConversionRateOf BTC ADA).only generates valid '(ConversionRateOf BTC ADA)'s (6 mutations)
  10912. 154.28 s [really-safe-money-gen] coverage (876/1610): Money\.ConversionRateOfSpec.BTC.ADA.Rational.fromRational.produces valid conversion rates (11 mutations)
  10913. 154.29 s [really-safe-money-gen] coverage (873/1610): Money\.ConversionRateOfSpec.BTC.ADA.compose.produces valid rates (6 mutations)
  10914. 154.36 s [really-safe-money-gen] coverage (878/1610): Money\.ConversionRateOfSpec.BTC.ADA.Rational.toRational.produces valid rationals (0 mutations)
  10915. 154.51 s [really-safe-money-gen] coverage (879/1610): Money\.ConversionRateOfSpec.BTC.USD.Rational.toRational.produces valid rationals (0 mutations)
  10916. 154.52 s [really-safe-money-gen] coverage (880/1610): Money\.ConversionRateOfSpec.BTC.USD.Rational.fromRational.roundtrips with toRational (11 mutations)
  10917. 154.74 s [really-safe-money-gen] coverage (881/1610): Money\.ConversionRateOfSpec.BTC.USD.Rational.fromRational.produces valid conversion rates (11 mutations)
  10918. 154.74 s [really-safe-money-gen] coverage (886/1610): Money\.ConversionRateOfSpec.BTC.USD.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10919. 154.84 s [really-safe-money-gen] coverage (885/1610): Money\.ConversionRateOfSpec.BTC.USD.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10920. 155.11 s [really-safe-money-gen] coverage (882/1610): Money\.ConversionRateOfSpec.BTC.USD.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10921. 155.25 s [really-safe-money-gen] coverage (889/1610): Money\.ConversionRateOfSpec.BTC.USD.invert.produces valid rates (8 mutations)
  10922. 155.28 s [really-safe-money-gen] coverage (892/1610): Money\.ConversionRateOfSpec.BTC.INR.GenValid (ConversionRateOf BTC INR).genValid \:\: Gen (ConversionRateOf BTC INR).only generates valid '(ConversionRateOf BTC INR)'s (6 mutations)
  10923. 155.41 s [really-safe-money-gen] coverage (888/1610): Money\.ConversionRateOfSpec.BTC.USD.compose.produces valid rates (6 mutations)
  10924. 155.49 s [really-safe-money-gen] coverage (884/1610): Money\.ConversionRateOfSpec.BTC.USD.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10925. 155.65 s [really-safe-money-gen] coverage (908/1610): Money\.ConversionRateOfSpec.BTC.CHF.invert.produces valid rates (8 mutations)
  10926. 155.72 s [really-safe-money-gen] coverage (906/1610): Money\.ConversionRateOfSpec.BTC.CHF.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10927. 155.95 s [really-safe-money-gen] coverage (911/1610): Money\.ConversionRateOfSpec.BTC.CHF.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10928. 155.95 s [really-safe-money-gen] coverage (909/1610): Money\.ConversionRateOfSpec.BTC.CHF.Ratio.toRatio.produces valid ratios (0 mutations)
  10929. 155.95 s [really-safe-money-gen] coverage (893/1610): Money\.ConversionRateOfSpec.BTC.INR.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10930. 156.34 s [really-safe-money-gen] coverage (913/1610): Money\.ConversionRateOfSpec.BTC.CHF.Rational.fromRational.produces valid conversion rates (11 mutations)
  10931. 156.36 s [really-safe-money-gen] coverage (914/1610): Money\.ConversionRateOfSpec.BTC.CHF.Rational.toRational.produces valid rationals (0 mutations)
  10932. 156.51 s [really-safe-money-gen] coverage (915/1610): Money\.ConversionRateOfSpec.BTC.BTC.invert.produces valid rates (8 mutations)
  10933. 156.57 s [really-safe-money-gen] coverage (916/1610): Money\.ConversionRateOfSpec.BTC.BTC.Rational.toRational.produces valid rationals (0 mutations)
  10934. 156.62 s [really-safe-money-gen] coverage (918/1610): Money\.ConversionRateOfSpec.BTC.BTC.Rational.fromRational.roundtrips with toRational (11 mutations)
  10935. 156.73 s [really-safe-money-gen] coverage (917/1610): Money\.ConversionRateOfSpec.BTC.BTC.Rational.fromRational.produces valid conversion rates (11 mutations)
  10936. 156.81 s [really-safe-money-gen] coverage (919/1610): Money\.ConversionRateOfSpec.BTC.BTC.compose.produces valid rates (6 mutations)
  10937. 157.23 s [really-safe-money-gen] coverage (922/1610): Money\.ConversionRateOfSpec.BTC.BTC.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10938. 157.26 s [really-safe-money-gen] coverage (921/1610): Money\.ConversionRateOfSpec.BTC.BTC.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10939. 157.47 s [really-safe-money-gen] coverage (924/1610): Money\.ConversionRateOfSpec.BTC.BTC.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10940. 157.47 s [really-safe-money-gen] coverage (925/1610): Money\.ConversionRateOfSpec.BTC.BTC.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10941. 157.56 s [really-safe-money-gen] coverage (858/1610): Money\.ConversionRateOfSpec.USD.ADA.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10942. 157.68 s [really-safe-money-gen] coverage (923/1610): Money\.ConversionRateOfSpec.BTC.BTC.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10943. 157.75 s [really-safe-money-gen] coverage (926/1610): Money\.ConversionRateOfSpec.BTC.BTC.Ratio.toRatio.produces valid ratios (0 mutations)
  10944. 157.82 s [really-safe-money-gen] coverage (920/1610): Money\.ConversionRateOfSpec.BTC.BTC.GenValid (ConversionRateOf BTC BTC).genValid \:\: Gen (ConversionRateOf BTC BTC).only generates valid '(ConversionRateOf BTC BTC)'s (6 mutations)
  10945. 157.82 s [really-safe-money-gen] coverage (928/1610): Money\.QuantisationFactorSpec.digits.works on 10 (0 mutations)
  10946. 157.92 s [really-safe-money-gen] coverage (927/1610): Money\.QuantisationFactorSpec.fromWord32.produces valid quantisation factors (6 mutations)
  10947. 158.00 s [really-safe-money-gen] coverage (930/1610): Money\.QuantisationFactorSpec.digits.works on 100 (0 mutations)
  10948. 158.38 s [really-safe-money-gen] coverage (931/1610): Money\.QuantisationFactorSpec.digits.produces valid numbers of digits (0 mutations)
  10949. 158.39 s [really-safe-money-gen] coverage (871/1610): Money\.ConversionRateOfSpec.BTC.ADA.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10950. 158.54 s [really-safe-money-gen] coverage (905/1610): Money\.ConversionRateOfSpec.BTC.CHF.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10951. 158.56 s [really-safe-money-gen] coverage (912/1610): Money\.ConversionRateOfSpec.BTC.CHF.Rational.fromRational.roundtrips with toRational (11 mutations)
  10952. 158.67 s [really-safe-money-gen] coverage (902/1610): Money\.ConversionRateOfSpec.BTC.INR.Ratio.toRatio.produces valid ratios (0 mutations)
  10953. 158.76 s [really-safe-money-gen] coverage (903/1610): Money\.ConversionRateOfSpec.BTC.CHF.compose.produces valid rates (6 mutations)
  10954. 158.87 s [really-safe-money-gen] coverage (870/1610): Money\.ConversionRateOfSpec.BTC.ADA.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10955. 158.94 s [really-safe-money-gen] coverage (897/1610): Money\.ConversionRateOfSpec.BTC.INR.Rational.fromRational.roundtrips with toRational (11 mutations)
  10956. 158.95 s [really-safe-money-gen] coverage (901/1610): Money\.ConversionRateOfSpec.BTC.INR.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10957. 159.04 s [really-safe-money-gen] coverage (900/1610): Money\.ConversionRateOfSpec.BTC.INR.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10958. 159.30 s [really-safe-money-gen] coverage (896/1610): Money\.ConversionRateOfSpec.BTC.INR.invert.produces valid rates (8 mutations)
  10959. 159.37 s [really-safe-money-gen] coverage (910/1610): Money\.ConversionRateOfSpec.BTC.CHF.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10960. 159.47 s [really-safe-money-gen] coverage (895/1610): Money\.ConversionRateOfSpec.BTC.INR.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10961. 159.50 s [really-safe-money-gen] coverage (894/1610): Money\.ConversionRateOfSpec.BTC.INR.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10962. 159.57 s [really-safe-money-gen] coverage (890/1610): Money\.ConversionRateOfSpec.BTC.USD.GenValid (ConversionRateOf BTC USD).genValid \:\: Gen (ConversionRateOf BTC USD).only generates valid '(ConversionRateOf BTC USD)'s (6 mutations)
  10963. 159.70 s [really-safe-money-gen] coverage (887/1610): Money\.ConversionRateOfSpec.BTC.USD.Ratio.toRatio.produces valid ratios (0 mutations)
  10964. 159.73 s [really-safe-money-gen] coverage (898/1610): Money\.ConversionRateOfSpec.BTC.INR.Rational.fromRational.produces valid conversion rates (11 mutations)
  10965. 160.20 s [really-safe-money-gen] coverage (891/1610): Money\.ConversionRateOfSpec.BTC.INR.compose.produces valid rates (6 mutations)
  10966. 160.21 s [really-safe-money-gen] coverage (899/1610): Money\.ConversionRateOfSpec.BTC.INR.Rational.toRational.produces valid rationals (0 mutations)
  10967. 160.25 s [really-safe-money-gen] coverage (929/1610): Money\.QuantisationFactorSpec.digits.works on 20 (0 mutations)
  10968. 160.39 s [really-safe-money-gen] coverage (874/1610): Money\.ConversionRateOfSpec.BTC.ADA.invert.produces valid rates (8 mutations)
  10969. 160.46 s [really-safe-money-gen] coverage (907/1610): Money\.ConversionRateOfSpec.BTC.CHF.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10970. 160.51 s [really-safe-money-gen] coverage (877/1610): Money\.ConversionRateOfSpec.BTC.ADA.Rational.fromRational.roundtrips with toRational (11 mutations)
  10971. 160.69 s [really-safe-money-gen] coverage (932/1610): Money\.QuantisationFactorSpec.digits.works on 1 (0 mutations)
  10972. 160.72 s [really-safe-money-gen] coverage (904/1610): Money\.ConversionRateOfSpec.BTC.CHF.GenValid (ConversionRateOf BTC CHF).genValid \:\: Gen (ConversionRateOf BTC CHF).only generates valid '(ConversionRateOf BTC CHF)'s (6 mutations)
  10973. 160.73 s [really-safe-money-gen] coverage (883/1610): Money\.ConversionRateOfSpec.BTC.USD.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10974. 160.83 s [really-safe-money-gen] coverage (799/1610): Money\.ConversionRateOfSpec.CHF.INR.invert.produces valid rates (8 mutations)
  10975. 161.13 s [really-safe-money-gen] coverage (940/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn quantisation factor 100 into DecimalLiteral Nothing 1 2 (22 mutations)
  10976. 161.27 s [really-safe-money-gen] coverage (939/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn DecimalLiteral Nothing 1 1 into quantisation factor 10 (25 mutations)
  10977. 161.37 s [really-safe-money-gen] coverage (941/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn quantisation factor 50 into DecimalLiteral Nothing 2 2 (22 mutations)
  10978. 161.45 s [really-safe-money-gen] coverage (942/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn DecimalLiteral Nothing 1 3 into quantisation factor 1000 (25 mutations)
  10979. 161.58 s [really-safe-money-gen] coverage (943/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn quantisation factor 10 into DecimalLiteral Nothing 1 1 (22 mutations)
  10980. 161.68 s [really-safe-money-gen] coverage (944/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn DecimalLiteral Nothing 2 2 into quantisation factor 50 (25 mutations)
  10981. 161.84 s [really-safe-money-gen] coverage (948/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn quantisation factor 1 into DecimalLiteral Nothing 1 0 (20 mutations)
  10982. 161.94 s [really-safe-money-gen] coverage (936/1610): Money\.QuantisationFactorSpec.DecimalLiteral.fromDecimalLiteral.fails to render a 0 (9 mutations)
  10983. 162.25 s [really-safe-money-gen] coverage (935/1610): Money\.QuantisationFactorSpec.DecimalLiteral.fromDecimalLiteral.produces valid factors (31 mutations)
  10984. 162.60 s [really-safe-money-gen] coverage (933/1610): Money\.QuantisationFactorSpec.DecimalLiteral.fromDecimalLiteral.fails to render a non-1 integer (22 mutations)
  10985. 162.64 s [really-safe-money-gen] coverage (963/1610): Money\.MultiAccountSpec.Eq (MultiAccount Currency).(==) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is symmetric for "valid (MultiAccount Currency)"s (1 mutations)
  10986. 162.69 s [really-safe-money-gen] coverage (934/1610): Money\.QuantisationFactorSpec.DecimalLiteral.fromDecimalLiteral.fails to render negative fractionals (16 mutations)
  10987. 162.81 s [really-safe-money-gen] coverage (965/1610): Money\.MultiAccountSpec.Eq (MultiAccount Currency).(==) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (MultiAccount Currency)"s (1 mutations)
  10988. 162.82 s [really-safe-money-gen] coverage (961/1610): Money\.MultiAccountSpec.GenValid (MultiAccount Currency).genValid \:\: Gen (MultiAccount Currency).only generates valid '(MultiAccount Currency)'s (15 mutations)
  10989. 162.83 s [really-safe-money-gen] coverage (962/1610): Money\.MultiAccountSpec.Eq (MultiAccount Currency).(==) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is reflexive for "valid (MultiAccount Currency)"s (4 mutations)
  10990. 162.90 s [really-safe-money-gen] coverage (967/1610): Money\.MultiAccountSpec.Eq (MultiAccount Currency).(/=) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is antireflexive for "valid (MultiAccount Currency)"s (4 mutations)
  10991. 163.32 s [really-safe-money-gen] coverage (952/1610): Money\.MultiAccountSpec.subtractAmount.produces valid amounts (34 mutations)
  10992. 163.40 s [really-safe-money-gen] coverage (950/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn quantisation factor 1000 into DecimalLiteral Nothing 1 3 (22 mutations)
  10993. 163.44 s [really-safe-money-gen] coverage (949/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn DecimalLiteral Nothing 1 2 into quantisation factor 100 (25 mutations)
  10994. 163.49 s [really-safe-money-gen] coverage (951/1610): Money\.QuantisationFactorSpec.GenValid QuantisationFactor.genValid \:\: Gen QuantisationFactor.only generates valid 'QuantisationFactor's (6 mutations)
  10995. 163.54 s [really-safe-money-gen] coverage (947/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn DecimalLiteral Nothing 5 2 into quantisation factor 20 (25 mutations)
  10996. 163.64 s [really-safe-money-gen] coverage (964/1610): Money\.MultiAccountSpec.Eq (MultiAccount Currency).(==) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is transitive for "valid (MultiAccount Currency)"s (1 mutations)
  10997. 163.81 s [really-safe-money-gen] coverage (958/1610): Money\.MultiAccountSpec.add.produces valid amounts (34 mutations)
  10998. 163.97 s [really-safe-money-gen] coverage (970/1610): Money\.MultiAccountSpec.zero.is valid (2 mutations)
  10999. 164.14 s [really-safe-money-gen] coverage (966/1610): Money\.MultiAccountSpec.Eq (MultiAccount Currency).(/=) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (MultiAccount Currency)"s (1 mutations)
  11000. 164.23 s [really-safe-money-gen] coverage (968/1610): Money\.MultiAccountSpec.sum.produces valid amounts (34 mutations)
  11001. 164.34 s [really-safe-money-gen] coverage (957/1610): Money\.MultiAccountSpec.add.is commutative (23 mutations)
  11002. 164.40 s [really-safe-money-gen] coverage (972/1610): Money\.MultiAccountSpec.addAccount.produces valid amounts (34 mutations)
  11003. 164.56 s [really-safe-money-gen] coverage (982/1610): Money\.MultiAccountSpec.Ord (MultiAccount Currency).(<=) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is reflexive for "valid (MultiAccount Currency)"'s (4 mutations)
  11004. 164.65 s [really-safe-money-gen] coverage (985/1610): Money\.MultiAccountSpec.Ord (MultiAccount Currency).(<) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is transitive for "valid (MultiAccount Currency)"'s (4 mutations)
  11005. 164.88 s [really-safe-money-gen] coverage (984/1610): Money\.MultiAccountSpec.Ord (MultiAccount Currency).(<=) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is transitive for "valid (MultiAccount Currency)"'s (4 mutations)
  11006. 164.91 s [really-safe-money-gen] coverage (981/1610): Money\.MultiAccountSpec.Ord (MultiAccount Currency).(<=) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is equivalent to (\\a b -> compare a b /= GT) for "valid (MultiAccount Currency)"'s (4 mutations)
  11007. 164.95 s [really-safe-money-gen] coverage (969/1610): Money\.MultiAccountSpec.Show (MultiAccount Currency) and Read (MultiAccount Currency).are implemented such that read \. show == id for valid values (4 mutations)
  11008. 165.19 s [really-safe-money-gen] coverage (983/1610): Money\.MultiAccountSpec.Ord (MultiAccount Currency).(<=) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is antisymmetric for "valid (MultiAccount Currency)"'s (4 mutations)
  11009. 165.19 s [really-safe-money-gen] coverage (959/1610): Money\.MultiAccountSpec.add.is associative when both succeed (23 mutations)
  11010. 165.45 s [really-safe-money-gen] coverage (971/1610): Money\.MultiAccountSpec.fromAccount.produces valid amounts (19 mutations)
  11011. 165.57 s [really-safe-money-gen] coverage (979/1610): Money\.MultiAccountSpec.Ord (MultiAccount Currency).(>) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is antireflexive for "valid (MultiAccount Currency)"'s (4 mutations)
  11012. 165.63 s [really-safe-money-gen] coverage (978/1610): Money\.MultiAccountSpec.Ord (MultiAccount Currency).(>) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is equivalent to (\\a b -> compare a b == GT) for "valid (MultiAccount Currency)"'s (4 mutations)
  11013. 165.66 s [really-safe-money-gen] coverage (980/1610): Money\.MultiAccountSpec.Ord (MultiAccount Currency).(>) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is transitive for "valid (MultiAccount Currency)"'s (4 mutations)
  11014. 165.75 s [really-safe-money-gen] coverage (975/1610): Money\.MultiAccountSpec.Ord (MultiAccount Currency).(>=) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is antisymmetric for "valid (MultiAccount Currency)"'s (4 mutations)
  11015. 165.92 s [really-safe-money-gen] coverage (974/1610): Money\.MultiAccountSpec.Ord (MultiAccount Currency).(>=) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is transitive for "valid (MultiAccount Currency)"'s (4 mutations)
  11016. 165.93 s [really-safe-money-gen] coverage (946/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn quantisation factor 20 into DecimalLiteral Nothing 5 2 (22 mutations)
  11017. 166.07 s [really-safe-money-gen] coverage (977/1610): Money\.MultiAccountSpec.Ord (MultiAccount Currency)."min \:\: (MultiAccount Currency -> MultiAccount Currency -> MultiAccount Currency)".is equivalent to (\\a b -> if a <= b then a else b) for "valid (MultiAccount Currency)"'s (4 mutations)
  11018. 166.10 s [really-safe-money-gen] coverage (954/1610): Money\.MultiAccountSpec.subtractAmount.adds a non zero amount (5 mutations)
  11019. 166.12 s [really-safe-money-gen] coverage (953/1610): Money\.MultiAccountSpec.subtractAmount.computes this example correctly (19 mutations)
  11020. 166.19 s [really-safe-money-gen] coverage (955/1610): Money\.MultiAccountSpec.subtractAmount.removes a zero amount (19 mutations)
  11021. 166.54 s [really-safe-money-gen] coverage (945/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn DecimalLiteral Nothing 1 0 into quantisation factor 1 (25 mutations)
  11022. 166.63 s [really-safe-money-gen] coverage (956/1610): Money\.MultiAccountSpec.add.has a right-identity\: zero (4 mutations)
  11023. 166.72 s [really-safe-money-gen] coverage (976/1610): Money\.MultiAccountSpec.Ord (MultiAccount Currency).(>=) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is equivalent to (\\a b -> compare a b /= LT) for "valid (MultiAccount Currency)"'s (4 mutations)
  11024. 166.97 s [really-safe-money-gen] coverage (973/1610): Money\.MultiAccountSpec.Ord (MultiAccount Currency).(>=) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is reflexive for "valid (MultiAccount Currency)"'s (4 mutations)
  11025. 167.17 s [really-safe-money-gen] coverage (992/1610): Money\.MultiAccountSpec.addAmount.computes this example correctly (14 mutations)
  11026. 167.20 s [really-safe-money-gen] coverage (990/1610): Money\.MultiAccountSpec.subtract.has a right-identity\: zero (4 mutations)
  11027. 167.22 s [really-safe-money-gen] coverage (993/1610): Money\.MultiAccountSpec.addAmount.adds a non zero amount (5 mutations)
  11028. 167.35 s [really-safe-money-gen] coverage (991/1610): Money\.MultiAccountSpec.addAmount.produces valid amounts (34 mutations)
  11029. 167.43 s [really-safe-money-gen] coverage (994/1610): Money\.MultiAccountSpec.addAmount.removes a zero amount (19 mutations)
  11030. 167.66 s [really-safe-money-gen] coverage (996/1610): Money\.MultiAccountSpec.lookupAccount.can find an added amount (6 mutations)
  11031. 167.81 s [really-safe-money-gen] coverage (997/1610): Money\.MultiAccountSpec.lookupAccount.produces valid amounts (4 mutations)
  11032. 167.86 s [really-safe-money-gen] coverage (995/1610): Money\.MultiAccountSpec.subtractAccount.produces valid amounts (34 mutations)
  11033. 167.88 s [really-safe-money-gen] coverage (999/1610): Money\.MultiAccountSpec.convertAll.produces the right result in this example (15 mutations)
  11034. 168.04 s [really-safe-money-gen] coverage (1001/1610): Money\.AmountOfSpec.USD.toMinimalQuantisations.roundtrips with fromMinimalQuantisations (0 mutations)
  11035. 168.06 s [really-safe-money-gen] coverage (1000/1610): Money\.AmountOfSpec.USD.toMinimalQuantisations.produces valid Int64s (0 mutations)
  11036. 168.33 s [really-safe-money-gen] coverage (1002/1610): Money\.AmountOfSpec.USD.CHF.rate.produces valid amounts (6 mutations)
  11037. 168.51 s [really-safe-money-gen] coverage (1005/1610): Money\.AmountOfSpec.USD.fromRatio.roundtrips with toRatio (13 mutations)
  11038. 168.51 s [really-safe-money-gen] coverage (1003/1610): Money\.AmountOfSpec.USD.CHF.convert.produces valid amounts (15 mutations)
  11039. 168.52 s [really-safe-money-gen] coverage (1004/1610): Money\.AmountOfSpec.USD.fromRatio.succeeds on 1 (13 mutations)
  11040. 168.55 s [really-safe-money-gen] coverage (1006/1610): Money\.AmountOfSpec.USD.fromRatio.produces valid AmountOfs (13 mutations)
  11041. 168.72 s [really-safe-money-gen] coverage (1007/1610): Money\.AmountOfSpec.USD.fromRatio.succeeds on 77 (13 mutations)
  11042. 168.76 s [really-safe-money-gen] coverage (1010/1610): Money\.AmountOfSpec.USD.fromRatio.fails on 7\.123 (9 mutations)
  11043. 168.79 s [really-safe-money-gen] coverage (1008/1610): Money\.AmountOfSpec.USD.fromRatio.fails on NaN (2 mutations)
  11044. 168.98 s [really-safe-money-gen] coverage (1009/1610): Money\.AmountOfSpec.USD.fromRatio.succeeds on 0 (14 mutations)
  11045. 169.28 s [really-safe-money-gen] coverage (998/1610): Money\.MultiAccountSpec.convertAll.produces valid results when converting two currencies to one (20 mutations)
  11046. 169.34 s [really-safe-money-gen] coverage (987/1610): Money\.MultiAccountSpec.Ord (MultiAccount Currency).(<) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is equivalent to (\\a b -> compare a b == LT) for "valid (MultiAccount Currency)"'s (4 mutations)
  11047. 169.73 s [really-safe-money-gen] coverage (986/1610): Money\.MultiAccountSpec.Ord (MultiAccount Currency).(<) \:\: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool.is antireflexive for "valid (MultiAccount Currency)"'s (4 mutations)
  11048. 169.75 s [really-safe-money-gen] coverage (988/1610): Money\.MultiAccountSpec.Ord (MultiAccount Currency)."max \:\: (MultiAccount Currency -> MultiAccount Currency -> MultiAccount Currency)".is equivalent to (\\a b -> if a >= b then a else b) for "valid (MultiAccount Currency)"'s (4 mutations)
  11049. 169.95 s [really-safe-money-gen] coverage (1024/1610): Money\.AmountOfSpec.USD.fromRational.fails on -Infinity (2 mutations)
  11050. 169.95 s [really-safe-money-gen] coverage (1026/1610): Money\.AmountOfSpec.USD.fromRational.succeeds on 0 (13 mutations)
  11051. 170.01 s [really-safe-money-gen] coverage (1025/1610): Money\.AmountOfSpec.USD.fromRational.succeeds on 1 (13 mutations)
  11052. 170.22 s [really-safe-money-gen] coverage (989/1610): Money\.MultiAccountSpec.subtract.produces valid amounts (34 mutations)
  11053. 170.23 s [really-safe-money-gen] coverage (1022/1610): Money\.AmountOfSpec.USD.fromRational.produces valid Amounts (13 mutations)
  11054. 170.23 s [really-safe-money-gen] coverage (1023/1610): Money\.AmountOfSpec.USD.fromRational.fails on NaN (2 mutations)
  11055. 170.30 s [really-safe-money-gen] coverage (960/1610): Money\.MultiAccountSpec.add.has a left-identity\: zero (6 mutations)
  11056. 170.53 s [really-safe-money-gen] coverage (1019/1610): Money\.AmountOfSpec.USD.fromRational.roundtrips with toRational (13 mutations)
  11057. 170.63 s [really-safe-money-gen] coverage (1016/1610): Money\.AmountOfSpec.USD.add.is commutative (4 mutations)
  11058. 170.64 s [really-safe-money-gen] coverage (1018/1610): Money\.AmountOfSpec.USD.fromMinimalQuantisations.produces valid amounts (0 mutations)
  11059. 170.75 s [really-safe-money-gen] coverage (1017/1610): Money\.AmountOfSpec.USD.add.is associative when both succeed (4 mutations)
  11060. 170.81 s [really-safe-money-gen] coverage (1020/1610): Money\.AmountOfSpec.USD.fromRational.fails on -1 (5 mutations)
  11061. 170.88 s [really-safe-money-gen] coverage (1021/1610): Money\.AmountOfSpec.USD.fromRational.fails on +Infinity (2 mutations)
  11062. 171.15 s [really-safe-money-gen] coverage (1014/1610): Money\.AmountOfSpec.USD.add.produces valid amounts (4 mutations)
  11063. 171.34 s [really-safe-money-gen] coverage (1031/1610): Money\.AmountOfSpec.USD.BTC.convert.produces valid amounts (15 mutations)
  11064. 171.38 s [really-safe-money-gen] coverage (1030/1610): Money\.AmountOfSpec.USD.Show (AmountOf * USD) and Read (AmountOf * USD).are implemented such that read \. show == id for valid values (1 mutations)
  11065. 171.39 s [really-safe-money-gen] coverage (1027/1610): Money\.AmountOfSpec.USD.toRational.produces valid Rationals (0 mutations)
  11066. 171.41 s [really-safe-money-gen] coverage (1032/1610): Money\.AmountOfSpec.USD.BTC.rate.produces valid amounts (6 mutations)
  11067. 171.60 s [really-safe-money-gen] coverage (1035/1610): Money\.AmountOfSpec.USD.fromDouble.succeeds on 1 (22 mutations)
  11068. 171.63 s [really-safe-money-gen] coverage (1033/1610): Money\.AmountOfSpec.USD.fromDouble.produces valid amounts (22 mutations)
  11069. 171.69 s [really-safe-money-gen] coverage (1034/1610): Money\.AmountOfSpec.USD.fromDouble.succeeds on 0 (22 mutations)
  11070. 171.80 s [really-safe-money-gen] coverage (1036/1610): Money\.AmountOfSpec.USD.fromDouble.fails on +Infinity (7 mutations)
  11071. 172.11 s [really-safe-money-gen] coverage (1037/1610): Money\.AmountOfSpec.USD.fromDouble.fails on -Infinity (3 mutations)
  11072. 172.23 s [really-safe-money-gen] coverage (1038/1610): Money\.AmountOfSpec.USD.fromDouble.fails on NaN (5 mutations)
  11073. 172.53 s [really-safe-money-gen] coverage (1039/1610): Money\.AmountOfSpec.USD.fromDouble.fails on -1 (3 mutations)
  11074. 172.55 s [really-safe-money-gen] coverage (1040/1610): Money\.AmountOfSpec.USD.fraction.produces valid amounts (10 mutations)
  11075. 172.83 s [really-safe-money-gen] coverage (1041/1610): Money\.AmountOfSpec.USD.INR.convert.produces valid amounts (15 mutations)
  11076. 172.86 s [really-safe-money-gen] coverage (1043/1610): Money\.AmountOfSpec.USD.USD.rate.produces valid amounts (6 mutations)
  11077. 172.98 s [really-safe-money-gen] coverage (1042/1610): Money\.AmountOfSpec.USD.INR.rate.produces valid amounts (6 mutations)
  11078. 173.07 s [really-safe-money-gen] coverage (1044/1610): Money\.AmountOfSpec.USD.USD.convert.produces valid amounts (15 mutations)
  11079. 173.08 s [really-safe-money-gen] coverage (1045/1610): Money\.AmountOfSpec.USD.sum.produces valid amounts (5 mutations)
  11080. 173.20 s [really-safe-money-gen] coverage (1046/1610): Money\.AmountOfSpec.USD.sum.matches what you would get with Integer, if nothing fails (5 mutations)
  11081. 173.22 s [really-safe-money-gen] coverage (1047/1610): Money\.AmountOfSpec.USD.subtract.matches what you would get with Integer, if nothing fails (5 mutations)
  11082. 173.41 s [really-safe-money-gen] coverage (1048/1610): Money\.AmountOfSpec.USD.Ord (AmountOf * USD).(<) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is antireflexive for "valid (AmountOf * USD)"'s (0 mutations)
  11083. 173.42 s [really-safe-money-gen] coverage (1049/1610): Money\.AmountOfSpec.USD.Ord (AmountOf * USD).(<) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is transitive for "valid (AmountOf * USD)"'s (0 mutations)
  11084. 173.60 s [really-safe-money-gen] coverage (1050/1610): Money\.AmountOfSpec.USD.Ord (AmountOf * USD).(<) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is equivalent to (\\a b -> compare a b == LT) for "valid (AmountOf * USD)"'s (0 mutations)
  11085. 173.61 s [really-safe-money-gen] coverage (1029/1610): Money\.AmountOfSpec.USD.zero.is valid (1 mutations)
  11086. 173.71 s [really-safe-money-gen] coverage (1052/1610): Money\.AmountOfSpec.USD.Ord (AmountOf * USD).(>) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is transitive for "valid (AmountOf * USD)"'s (0 mutations)
  11087. 173.75 s [really-safe-money-gen] coverage (1053/1610): Money\.AmountOfSpec.USD.Ord (AmountOf * USD).(>) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is equivalent to (\\a b -> compare a b == GT) for "valid (AmountOf * USD)"'s (0 mutations)
  11088. 174.04 s [really-safe-money-gen] coverage (1054/1610): Money\.AmountOfSpec.USD.Ord (AmountOf * USD).(<=) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is transitive for "valid (AmountOf * USD)"'s (0 mutations)
  11089. 174.22 s [really-safe-money-gen] coverage (1057/1610): Money\.AmountOfSpec.USD.Ord (AmountOf * USD).(<=) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is equivalent to (\\a b -> compare a b /= GT) for "valid (AmountOf * USD)"'s (0 mutations)
  11090. 174.25 s [really-safe-money-gen] coverage (1055/1610): Money\.AmountOfSpec.USD.Ord (AmountOf * USD).(<=) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is reflexive for "valid (AmountOf * USD)"'s (0 mutations)
  11091. 174.33 s [really-safe-money-gen] coverage (1056/1610): Money\.AmountOfSpec.USD.Ord (AmountOf * USD).(<=) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is antisymmetric for "valid (AmountOf * USD)"'s (0 mutations)
  11092. 174.36 s [really-safe-money-gen] coverage (1058/1610): Money\.AmountOfSpec.USD.Ord (AmountOf * USD)."min \:\: (AmountOf * USD -> AmountOf * USD -> AmountOf * USD)".is equivalent to (\\a b -> if a <= b then a else b) for "valid (AmountOf * USD)"'s (0 mutations)
  11093. 174.48 s [really-safe-money-gen] coverage (1060/1610): Money\.AmountOfSpec.USD.Ord (AmountOf * USD).(>=) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is equivalent to (\\a b -> compare a b /= LT) for "valid (AmountOf * USD)"'s (0 mutations)
  11094. 174.50 s [really-safe-money-gen] coverage (1059/1610): Money\.AmountOfSpec.USD.Ord (AmountOf * USD)."max \:\: (AmountOf * USD -> AmountOf * USD -> AmountOf * USD)".is equivalent to (\\a b -> if a >= b then a else b) for "valid (AmountOf * USD)"'s (0 mutations)
  11095. 174.54 s [really-safe-money-gen] coverage (1062/1610): Money\.AmountOfSpec.USD.Ord (AmountOf * USD).(>=) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is reflexive for "valid (AmountOf * USD)"'s (0 mutations)
  11096. 174.55 s [really-safe-money-gen] coverage (1061/1610): Money\.AmountOfSpec.USD.Ord (AmountOf * USD).(>=) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is antisymmetric for "valid (AmountOf * USD)"'s (0 mutations)
  11097. 174.95 s [really-safe-money-gen] coverage (1063/1610): Money\.AmountOfSpec.USD.Ord (AmountOf * USD).(>=) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is transitive for "valid (AmountOf * USD)"'s (0 mutations)
  11098. 175.07 s [really-safe-money-gen] coverage (1064/1610): Money\.AmountOfSpec.USD.toRatio.produces valid Rationals when the quantisation factor is nonzero (0 mutations)
  11099. 175.29 s [really-safe-money-gen] coverage (1066/1610): Money\.AmountOfSpec.USD.multiply.matches what you would get with Integer, if nothing fails (4 mutations)
  11100. 175.41 s [really-safe-money-gen] coverage (1065/1610): Money\.AmountOfSpec.USD.format.produces valid strings (3 mutations)
  11101. 175.67 s [really-safe-money-gen] coverage (1067/1610): Money\.AmountOfSpec.USD.multiply.is absorbed by 0 (5 mutations)
  11102. 175.70 s [really-safe-money-gen] coverage (1068/1610): Money\.AmountOfSpec.USD.multiply.is distributive with add when both succeed (8 mutations)
  11103. 175.83 s [really-safe-money-gen] coverage (1069/1610): Money\.AmountOfSpec.USD.multiply.has an identity\: 1 (4 mutations)
  11104. 175.88 s [really-safe-money-gen] coverage (1071/1610): Money\.AmountOfSpec.USD.toDouble.produces valid Doubles (0 mutations)
  11105. 175.89 s [really-safe-money-gen] coverage (1070/1610): Money\.AmountOfSpec.USD.multiply.produces valid amounts (4 mutations)
  11106. 176.00 s [really-safe-money-gen] coverage (1072/1610): Money\.AmountOfSpec.USD.distribute.Show (Distribution (AmountOf * USD)) and Read (Distribution (AmountOf * USD)).are implemented such that read \. show == id for valid values (1 mutations)
  11107. 176.08 s [really-safe-money-gen] coverage (1073/1610): Money\.AmountOfSpec.USD.distribute.produces valid amounts (17 mutations)
  11108. 176.26 s [really-safe-money-gen] coverage (1075/1610): Money\.AmountOfSpec.USD.distribute.Eq (Distribution (AmountOf * USD)).(/=) \:\: (Distribution (AmountOf * USD)) -> (Distribution (AmountOf * USD)) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (Distribution (AmountOf * USD))"s (1 mutations)
  11109. 176.28 s [really-safe-money-gen] coverage (1074/1610): Money\.AmountOfSpec.USD.distribute.produces results that sum up to the greater whole (18 mutations)
  11110. 176.41 s [really-safe-money-gen] coverage (1077/1610): Money\.AmountOfSpec.USD.distribute.Eq (Distribution (AmountOf * USD)).(==) \:\: (Distribution (AmountOf * USD)) -> (Distribution (AmountOf * USD)) -> Bool.is transitive for "valid (Distribution (AmountOf * USD))"s (1 mutations)
  11111. 176.46 s [really-safe-money-gen] coverage (1076/1610): Money\.AmountOfSpec.USD.distribute.Eq (Distribution (AmountOf * USD)).(/=) \:\: (Distribution (AmountOf * USD)) -> (Distribution (AmountOf * USD)) -> Bool.is antireflexive for "valid (Distribution (AmountOf * USD))"s (1 mutations)
  11112. 176.55 s [really-safe-money-gen] coverage (1078/1610): Money\.AmountOfSpec.USD.distribute.Eq (Distribution (AmountOf * USD)).(==) \:\: (Distribution (AmountOf * USD)) -> (Distribution (AmountOf * USD)) -> Bool.is reflexive for "valid (Distribution (AmountOf * USD))"s (1 mutations)
  11113. 176.59 s [really-safe-money-gen] coverage (1079/1610): Money\.AmountOfSpec.USD.distribute.Eq (Distribution (AmountOf * USD)).(==) \:\: (Distribution (AmountOf * USD)) -> (Distribution (AmountOf * USD)) -> Bool.is symmetric for "valid (Distribution (AmountOf * USD))"s (1 mutations)
  11114. 176.85 s [really-safe-money-gen] coverage (1080/1610): Money\.AmountOfSpec.USD.distribute.Eq (Distribution (AmountOf * USD)).(==) \:\: (Distribution (AmountOf * USD)) -> (Distribution (AmountOf * USD)) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (Distribution (AmountOf * USD))"s (1 mutations)
  11115. 177.05 s [really-safe-money-gen] coverage (1082/1610): Money\.AmountOfSpec.USD.ADA.rate.produces valid amounts (6 mutations)
  11116. 177.13 s [really-safe-money-gen] coverage (1081/1610): Money\.AmountOfSpec.USD.ADA.convert.produces valid amounts (15 mutations)
  11117. 177.14 s [really-safe-money-gen] coverage (1084/1610): Money\.AmountOfSpec.USD.Eq (AmountOf * USD).(==) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is symmetric for "valid (AmountOf * USD)"s (0 mutations)
  11118. 177.27 s [really-safe-money-gen] coverage (1083/1610): Money\.AmountOfSpec.USD.Eq (AmountOf * USD).(==) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (AmountOf * USD)"s (0 mutations)
  11119. 177.36 s [really-safe-money-gen] coverage (1085/1610): Money\.AmountOfSpec.USD.Eq (AmountOf * USD).(==) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is reflexive for "valid (AmountOf * USD)"s (0 mutations)
  11120. 177.38 s [really-safe-money-gen] coverage (1087/1610): Money\.AmountOfSpec.USD.Eq (AmountOf * USD).(/=) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (AmountOf * USD)"s (0 mutations)
  11121. 177.39 s [really-safe-money-gen] coverage (1086/1610): Money\.AmountOfSpec.USD.Eq (AmountOf * USD).(==) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is transitive for "valid (AmountOf * USD)"s (0 mutations)
  11122. 177.43 s [really-safe-money-gen] coverage (1088/1610): Money\.AmountOfSpec.USD.Eq (AmountOf * USD).(/=) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is antireflexive for "valid (AmountOf * USD)"s (0 mutations)
  11123. 177.68 s [really-safe-money-gen] coverage (1013/1610): Money\.AmountOfSpec.USD.add.has a right-identity\: zero (5 mutations)
  11124. 177.84 s [really-safe-money-gen] coverage (1012/1610): Money\.AmountOfSpec.USD.add.matches what you would get with Integer, if nothing fails (4 mutations)
  11125. 178.12 s [really-safe-money-gen] coverage (1015/1610): Money\.AmountOfSpec.USD.add.has a left-identity\: zero (5 mutations)
  11126. 178.30 s [really-safe-money-gen] coverage (1091/1610): Money\.AmountOfSpec.ADA.Eq (AmountOf * ADA).(==) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is transitive for "valid (AmountOf * ADA)"s (0 mutations)
  11127. 178.47 s [really-safe-money-gen] coverage (1093/1610): Money\.AmountOfSpec.ADA.Eq (AmountOf * ADA).(==) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (AmountOf * ADA)"s (0 mutations)
  11128. 178.52 s [really-safe-money-gen] coverage (1092/1610): Money\.AmountOfSpec.ADA.Eq (AmountOf * ADA).(==) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is symmetric for "valid (AmountOf * ADA)"s (0 mutations)
  11129. 178.62 s [really-safe-money-gen] coverage (1094/1610): Money\.AmountOfSpec.ADA.Eq (AmountOf * ADA).(==) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is reflexive for "valid (AmountOf * ADA)"s (0 mutations)
  11130. 178.76 s [really-safe-money-gen] coverage (1105/1610): Money\.AmountOfSpec.ADA.fromRatio.succeeds on 1 (13 mutations)
  11131. 178.81 s [really-safe-money-gen] coverage (1106/1610): Money\.AmountOfSpec.ADA.fromRatio.fails on NaN (2 mutations)
  11132. 178.86 s [really-safe-money-gen] coverage (1107/1610): Money\.AmountOfSpec.ADA.fromRatio.succeeds on 77 (13 mutations)
  11133. 178.97 s [really-safe-money-gen] coverage (1108/1610): Money\.AmountOfSpec.ADA.fromRatio.fails on 7\.123 (9 mutations)
  11134. 179.13 s [really-safe-money-gen] coverage (1110/1610): Money\.AmountOfSpec.ADA.fromRational.succeeds on 1 (13 mutations)
  11135. 179.19 s [really-safe-money-gen] coverage (1109/1610): Money\.AmountOfSpec.ADA.fromRational.fails on NaN (2 mutations)
  11136. 179.29 s [really-safe-money-gen] coverage (1112/1610): Money\.AmountOfSpec.ADA.fromRational.fails on -1 (5 mutations)
  11137. 179.30 s [really-safe-money-gen] coverage (1111/1610): Money\.AmountOfSpec.ADA.fromRational.roundtrips with toRational (13 mutations)
  11138. 179.43 s [really-safe-money-gen] coverage (1113/1610): Money\.AmountOfSpec.ADA.fromRational.fails on -Infinity (2 mutations)
  11139. 179.44 s [really-safe-money-gen] coverage (1114/1610): Money\.AmountOfSpec.ADA.fromRational.fails on +Infinity (2 mutations)
  11140. 179.70 s [really-safe-money-gen] coverage (1115/1610): Money\.AmountOfSpec.ADA.fromRational.produces valid Amounts (13 mutations)
  11141. 179.96 s [really-safe-money-gen] coverage (1117/1610): Money\.AmountOfSpec.ADA.sum.matches what you would get with Integer, if nothing fails (5 mutations)
  11142. 179.96 s [really-safe-money-gen] coverage (1116/1610): Money\.AmountOfSpec.ADA.fromRational.succeeds on 0 (13 mutations)
  11143. 180.00 s [really-safe-money-gen] coverage (1118/1610): Money\.AmountOfSpec.ADA.sum.produces valid amounts (5 mutations)
  11144. 180.12 s [really-safe-money-gen] coverage (1119/1610): Money\.AmountOfSpec.ADA.toDouble.produces valid Doubles (0 mutations)
  11145. 180.19 s [really-safe-money-gen] coverage (1120/1610): Money\.AmountOfSpec.ADA.add.matches what you would get with Integer, if nothing fails (4 mutations)
  11146. 180.19 s [really-safe-money-gen] coverage (1122/1610): Money\.AmountOfSpec.ADA.add.has a right-identity\: zero (5 mutations)
  11147. 180.26 s [really-safe-money-gen] coverage (1121/1610): Money\.AmountOfSpec.ADA.add.has a left-identity\: zero (5 mutations)
  11148. 180.26 s [really-safe-money-gen] coverage (1123/1610): Money\.AmountOfSpec.ADA.add.is associative when both succeed (4 mutations)
  11149. 180.64 s [really-safe-money-gen] coverage (1124/1610): Money\.AmountOfSpec.ADA.add.produces valid amounts (4 mutations)
  11150. 180.77 s [really-safe-money-gen] coverage (1125/1610): Money\.AmountOfSpec.ADA.add.is commutative (4 mutations)
  11151. 181.26 s [really-safe-money-gen] coverage (1126/1610): Money\.AmountOfSpec.ADA.USD.rate.produces valid amounts (6 mutations)
  11152. 181.52 s [really-safe-money-gen] coverage (1127/1610): Money\.AmountOfSpec.ADA.USD.convert.produces valid amounts (15 mutations)
  11153. 181.62 s [really-safe-money-gen] coverage (1128/1610): Money\.AmountOfSpec.ADA.fromMinimalQuantisations.produces valid amounts (0 mutations)
  11154. 181.73 s [really-safe-money-gen] coverage (1129/1610): Money\.AmountOfSpec.ADA.distribute.Show (Distribution (AmountOf * ADA)) and Read (Distribution (AmountOf * ADA)).are implemented such that read \. show == id for valid values (1 mutations)
  11155. 181.77 s [really-safe-money-gen] coverage (1130/1610): Money\.AmountOfSpec.ADA.distribute.produces results that sum up to the greater whole (18 mutations)
  11156. 181.92 s [really-safe-money-gen] coverage (1131/1610): Money\.AmountOfSpec.ADA.distribute.Eq (Distribution (AmountOf * ADA)).(/=) \:\: (Distribution (AmountOf * ADA)) -> (Distribution (AmountOf * ADA)) -> Bool.is antireflexive for "valid (Distribution (AmountOf * ADA))"s (1 mutations)
  11157. 182.00 s [really-safe-money-gen] coverage (1132/1610): Money\.AmountOfSpec.ADA.distribute.Eq (Distribution (AmountOf * ADA)).(/=) \:\: (Distribution (AmountOf * ADA)) -> (Distribution (AmountOf * ADA)) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (Distribution (AmountOf * ADA))"s (1 mutations)
  11158. 182.12 s [really-safe-money-gen] coverage (1133/1610): Money\.AmountOfSpec.ADA.distribute.Eq (Distribution (AmountOf * ADA)).(==) \:\: (Distribution (AmountOf * ADA)) -> (Distribution (AmountOf * ADA)) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (Distribution (AmountOf * ADA))"s (1 mutations)
  11159. 182.26 s [really-safe-money-gen] coverage (1134/1610): Money\.AmountOfSpec.ADA.distribute.Eq (Distribution (AmountOf * ADA)).(==) \:\: (Distribution (AmountOf * ADA)) -> (Distribution (AmountOf * ADA)) -> Bool.is reflexive for "valid (Distribution (AmountOf * ADA))"s (1 mutations)
  11160. 182.39 s [really-safe-money-gen] coverage (1135/1610): Money\.AmountOfSpec.ADA.distribute.Eq (Distribution (AmountOf * ADA)).(==) \:\: (Distribution (AmountOf * ADA)) -> (Distribution (AmountOf * ADA)) -> Bool.is transitive for "valid (Distribution (AmountOf * ADA))"s (1 mutations)
  11161. 182.51 s [really-safe-money-gen] coverage (1137/1610): Money\.AmountOfSpec.ADA.distribute.produces valid amounts (17 mutations)
  11162. 182.51 s [really-safe-money-gen] coverage (1136/1610): Money\.AmountOfSpec.ADA.distribute.Eq (Distribution (AmountOf * ADA)).(==) \:\: (Distribution (AmountOf * ADA)) -> (Distribution (AmountOf * ADA)) -> Bool.is symmetric for "valid (Distribution (AmountOf * ADA))"s (1 mutations)
  11163. 182.65 s [really-safe-money-gen] coverage (1138/1610): Money\.AmountOfSpec.ADA.toMinimalQuantisations.roundtrips with fromMinimalQuantisations (0 mutations)
  11164. 182.67 s [really-safe-money-gen] coverage (1140/1610): Money\.AmountOfSpec.ADA.CHF.convert.produces valid amounts (15 mutations)
  11165. 182.70 s [really-safe-money-gen] coverage (1139/1610): Money\.AmountOfSpec.ADA.toMinimalQuantisations.produces valid Int64s (0 mutations)
  11166. 182.90 s [really-safe-money-gen] coverage (1141/1610): Money\.AmountOfSpec.ADA.CHF.rate.produces valid amounts (6 mutations)
  11167. 183.27 s [really-safe-money-gen] coverage (1143/1610): Money\.AmountOfSpec.ADA.GenValid (AmountOf * ADA).genValid \:\: Gen (AmountOf * ADA).only generates valid '(AmountOf * ADA)'s (0 mutations)
  11168. 183.29 s [really-safe-money-gen] coverage (1142/1610): Money\.AmountOfSpec.ADA.format.produces valid strings (3 mutations)
  11169. 183.35 s [really-safe-money-gen] coverage (1144/1610): Money\.AmountOfSpec.ADA.ADA.rate.produces valid amounts (6 mutations)
  11170. 183.45 s [really-safe-money-gen] coverage (1145/1610): Money\.AmountOfSpec.ADA.ADA.convert.produces valid amounts (15 mutations)
  11171. 183.55 s [really-safe-money-gen] coverage (1146/1610): Money\.AmountOfSpec.ADA.fraction.produces valid amounts (10 mutations)
  11172. 183.62 s [really-safe-money-gen] coverage (1147/1610): Money\.AmountOfSpec.ADA.INR.rate.produces valid amounts (6 mutations)
  11173. 183.63 s [really-safe-money-gen] coverage (1149/1610): Money\.AmountOfSpec.ADA.multiply.produces valid amounts (4 mutations)
  11174. 183.64 s [really-safe-money-gen] coverage (1148/1610): Money\.AmountOfSpec.ADA.INR.convert.produces valid amounts (15 mutations)
  11175. 183.87 s [really-safe-money-gen] coverage (1150/1610): Money\.AmountOfSpec.ADA.multiply.is absorbed by 0 (5 mutations)
  11176. 184.10 s [really-safe-money-gen] coverage (1151/1610): Money\.AmountOfSpec.ADA.multiply.matches what you would get with Integer, if nothing fails (4 mutations)
  11177. 184.33 s [really-safe-money-gen] coverage (1152/1610): Money\.AmountOfSpec.ADA.multiply.is distributive with add when both succeed (8 mutations)
  11178. 184.55 s [really-safe-money-gen] coverage (1153/1610): Money\.AmountOfSpec.ADA.multiply.has an identity\: 1 (4 mutations)
  11179. 184.70 s [really-safe-money-gen] coverage (1154/1610): Money\.AmountOfSpec.ADA.fromDouble.succeeds on 0 (22 mutations)
  11180. 184.86 s [really-safe-money-gen] coverage (1155/1610): Money\.AmountOfSpec.ADA.fromDouble.fails on +Infinity (7 mutations)
  11181. 184.88 s [really-safe-money-gen] coverage (1156/1610): Money\.AmountOfSpec.ADA.fromDouble.succeeds on 1 (22 mutations)
  11182. 185.01 s [really-safe-money-gen] coverage (1157/1610): Money\.AmountOfSpec.ADA.fromDouble.fails on NaN (5 mutations)
  11183. 185.07 s [really-safe-money-gen] coverage (1158/1610): Money\.AmountOfSpec.ADA.fromDouble.fails on -Infinity (3 mutations)
  11184. 185.17 s [really-safe-money-gen] coverage (1159/1610): Money\.AmountOfSpec.ADA.fromDouble.produces valid amounts (22 mutations)
  11185. 185.22 s [really-safe-money-gen] coverage (1160/1610): Money\.AmountOfSpec.ADA.fromDouble.fails on -1 (3 mutations)
  11186. 185.38 s [really-safe-money-gen] coverage (1161/1610): Money\.AmountOfSpec.ADA.subtract.matches what you would get with Integer, if nothing fails (5 mutations)
  11187. 185.46 s [really-safe-money-gen] coverage (1162/1610): Money\.AmountOfSpec.ADA.Ord (AmountOf * ADA).(>) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is antireflexive for "valid (AmountOf * ADA)"'s (0 mutations)
  11188. 185.54 s [really-safe-money-gen] coverage (1163/1610): Money\.AmountOfSpec.ADA.Ord (AmountOf * ADA).(>) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is transitive for "valid (AmountOf * ADA)"'s (0 mutations)
  11189. 185.59 s [really-safe-money-gen] coverage (1164/1610): Money\.AmountOfSpec.ADA.Ord (AmountOf * ADA).(>) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is equivalent to (\\a b -> compare a b == GT) for "valid (AmountOf * ADA)"'s (0 mutations)
  11190. 185.66 s [really-safe-money-gen] coverage (1166/1610): Money\.AmountOfSpec.ADA.Ord (AmountOf * ADA)."min \:\: (AmountOf * ADA -> AmountOf * ADA -> AmountOf * ADA)".is equivalent to (\\a b -> if a <= b then a else b) for "valid (AmountOf * ADA)"'s (0 mutations)
  11191. 185.67 s [really-safe-money-gen] coverage (1165/1610): Money\.AmountOfSpec.ADA.Ord (AmountOf * ADA)."max \:\: (AmountOf * ADA -> AmountOf * ADA -> AmountOf * ADA)".is equivalent to (\\a b -> if a >= b then a else b) for "valid (AmountOf * ADA)"'s (0 mutations)
  11192. 185.96 s [really-safe-money-gen] coverage (1167/1610): Money\.AmountOfSpec.ADA.Ord (AmountOf * ADA).(<=) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is equivalent to (\\a b -> compare a b /= GT) for "valid (AmountOf * ADA)"'s (0 mutations)
  11193. 186.25 s [really-safe-money-gen] coverage (1168/1610): Money\.AmountOfSpec.ADA.Ord (AmountOf * ADA).(<=) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is transitive for "valid (AmountOf * ADA)"'s (0 mutations)
  11194. 186.29 s [really-safe-money-gen] coverage (1170/1610): Money\.AmountOfSpec.ADA.Ord (AmountOf * ADA).(<=) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is antisymmetric for "valid (AmountOf * ADA)"'s (0 mutations)
  11195. 186.29 s [really-safe-money-gen] coverage (1169/1610): Money\.AmountOfSpec.ADA.Ord (AmountOf * ADA).(<=) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is reflexive for "valid (AmountOf * ADA)"'s (0 mutations)
  11196. 186.38 s [really-safe-money-gen] coverage (1172/1610): Money\.AmountOfSpec.ADA.Ord (AmountOf * ADA).(>=) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is reflexive for "valid (AmountOf * ADA)"'s (0 mutations)
  11197. 186.43 s [really-safe-money-gen] coverage (1171/1610): Money\.AmountOfSpec.ADA.Ord (AmountOf * ADA).(>=) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is equivalent to (\\a b -> compare a b /= LT) for "valid (AmountOf * ADA)"'s (0 mutations)
  11198. 186.58 s [really-safe-money-gen] coverage (1173/1610): Money\.AmountOfSpec.ADA.Ord (AmountOf * ADA).(>=) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is transitive for "valid (AmountOf * ADA)"'s (0 mutations)
  11199. 186.60 s [really-safe-money-gen] coverage (1174/1610): Money\.AmountOfSpec.ADA.Ord (AmountOf * ADA).(>=) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is antisymmetric for "valid (AmountOf * ADA)"'s (0 mutations)
  11200. 186.61 s [really-safe-money-gen] coverage (1175/1610): Money\.AmountOfSpec.ADA.Ord (AmountOf * ADA).(<) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is equivalent to (\\a b -> compare a b == LT) for "valid (AmountOf * ADA)"'s (0 mutations)
  11201. 186.86 s [really-safe-money-gen] coverage (1176/1610): Money\.AmountOfSpec.ADA.Ord (AmountOf * ADA).(<) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is transitive for "valid (AmountOf * ADA)"'s (0 mutations)
  11202. 187.06 s [really-safe-money-gen] coverage (1177/1610): Money\.AmountOfSpec.ADA.Ord (AmountOf * ADA).(<) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is antireflexive for "valid (AmountOf * ADA)"'s (0 mutations)
  11203. 187.28 s [really-safe-money-gen] coverage (1182/1610): Money\.AmountOfSpec.INR.distribute.Show (Distribution (AmountOf * INR)) and Read (Distribution (AmountOf * INR)).are implemented such that read \. show == id for valid values (1 mutations)
  11204. 187.52 s [really-safe-money-gen] coverage (1183/1610): Money\.AmountOfSpec.INR.distribute.Eq (Distribution (AmountOf * INR)).(==) \:\: (Distribution (AmountOf * INR)) -> (Distribution (AmountOf * INR)) -> Bool.is reflexive for "valid (Distribution (AmountOf * INR))"s (1 mutations)
  11205. 187.63 s [really-safe-money-gen] coverage (1184/1610): Money\.AmountOfSpec.INR.distribute.Eq (Distribution (AmountOf * INR)).(==) \:\: (Distribution (AmountOf * INR)) -> (Distribution (AmountOf * INR)) -> Bool.is symmetric for "valid (Distribution (AmountOf * INR))"s (1 mutations)
  11206. 187.82 s [really-safe-money-gen] coverage (1185/1610): Money\.AmountOfSpec.INR.distribute.Eq (Distribution (AmountOf * INR)).(==) \:\: (Distribution (AmountOf * INR)) -> (Distribution (AmountOf * INR)) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (Distribution (AmountOf * INR))"s (1 mutations)
  11207. 187.82 s [really-safe-money-gen] coverage (1186/1610): Money\.AmountOfSpec.INR.distribute.Eq (Distribution (AmountOf * INR)).(==) \:\: (Distribution (AmountOf * INR)) -> (Distribution (AmountOf * INR)) -> Bool.is transitive for "valid (Distribution (AmountOf * INR))"s (1 mutations)
  11208. 187.91 s [really-safe-money-gen] coverage (1187/1610): Money\.AmountOfSpec.INR.distribute.Eq (Distribution (AmountOf * INR)).(/=) \:\: (Distribution (AmountOf * INR)) -> (Distribution (AmountOf * INR)) -> Bool.is antireflexive for "valid (Distribution (AmountOf * INR))"s (1 mutations)
  11209. 188.05 s [really-safe-money-gen] coverage (1188/1610): Money\.AmountOfSpec.INR.distribute.Eq (Distribution (AmountOf * INR)).(/=) \:\: (Distribution (AmountOf * INR)) -> (Distribution (AmountOf * INR)) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (Distribution (AmountOf * INR))"s (1 mutations)
  11210. 188.13 s [really-safe-money-gen] coverage (1189/1610): Money\.AmountOfSpec.INR.zero.is valid (1 mutations)
  11211. 188.22 s [really-safe-money-gen] coverage (1190/1610): Money\.AmountOfSpec.INR.fromMinimalQuantisations.produces valid amounts (0 mutations)
  11212. 188.38 s [really-safe-money-gen] coverage (1191/1610): Money\.AmountOfSpec.INR.fraction.produces valid amounts (10 mutations)
  11213. 188.39 s [really-safe-money-gen] coverage (1192/1610): Money\.AmountOfSpec.INR.ADA.rate.produces valid amounts (6 mutations)
  11214. 188.50 s [really-safe-money-gen] coverage (1193/1610): Money\.AmountOfSpec.INR.ADA.convert.produces valid amounts (15 mutations)
  11215. 188.51 s [really-safe-money-gen] coverage (1194/1610): Money\.AmountOfSpec.INR.fromDouble.fails on -Infinity (3 mutations)
  11216. 188.58 s [really-safe-money-gen] coverage (1196/1610): Money\.AmountOfSpec.INR.fromDouble.fails on NaN (5 mutations)
  11217. 188.62 s [really-safe-money-gen] coverage (1195/1610): Money\.AmountOfSpec.INR.fromDouble.succeeds on 1 (22 mutations)
  11218. 188.96 s [really-safe-money-gen] coverage (1197/1610): Money\.AmountOfSpec.INR.fromDouble.fails on +Infinity (7 mutations)
  11219. 189.13 s [really-safe-money-gen] coverage (1200/1610): Money\.AmountOfSpec.INR.fromDouble.produces valid amounts (22 mutations)
  11220. 189.14 s [really-safe-money-gen] coverage (1199/1610): Money\.AmountOfSpec.INR.fromDouble.succeeds on 0 (22 mutations)
  11221. 189.17 s [really-safe-money-gen] coverage (1198/1610): Money\.AmountOfSpec.INR.fromDouble.fails on -1 (3 mutations)
  11222. 189.22 s [really-safe-money-gen] coverage (1201/1610): Money\.AmountOfSpec.INR.Ord (AmountOf * INR)."max \:\: (AmountOf * INR -> AmountOf * INR -> AmountOf * INR)".is equivalent to (\\a b -> if a >= b then a else b) for "valid (AmountOf * INR)"'s (0 mutations)
  11223. 189.31 s [really-safe-money-gen] coverage (1202/1610): Money\.AmountOfSpec.INR.Ord (AmountOf * INR).(>) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is transitive for "valid (AmountOf * INR)"'s (0 mutations)
  11224. 189.50 s [really-safe-money-gen] coverage (1204/1610): Money\.AmountOfSpec.INR.Ord (AmountOf * INR).(>) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is antireflexive for "valid (AmountOf * INR)"'s (0 mutations)
  11225. 189.53 s [really-safe-money-gen] coverage (1203/1610): Money\.AmountOfSpec.INR.Ord (AmountOf * INR).(>) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is equivalent to (\\a b -> compare a b == GT) for "valid (AmountOf * INR)"'s (0 mutations)
  11226. 189.56 s [really-safe-money-gen] coverage (1205/1610): Money\.AmountOfSpec.INR.Ord (AmountOf * INR).(<=) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is transitive for "valid (AmountOf * INR)"'s (0 mutations)
  11227. 189.84 s [really-safe-money-gen] coverage (1206/1610): Money\.AmountOfSpec.INR.Ord (AmountOf * INR).(<=) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is equivalent to (\\a b -> compare a b /= GT) for "valid (AmountOf * INR)"'s (0 mutations)
  11228. 189.96 s [really-safe-money-gen] coverage (1207/1610): Money\.AmountOfSpec.INR.Ord (AmountOf * INR).(<=) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is reflexive for "valid (AmountOf * INR)"'s (0 mutations)
  11229. 190.31 s [really-safe-money-gen] coverage (1208/1610): Money\.AmountOfSpec.INR.Ord (AmountOf * INR).(<=) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is antisymmetric for "valid (AmountOf * INR)"'s (0 mutations)
  11230. 190.41 s [really-safe-money-gen] coverage (1209/1610): Money\.AmountOfSpec.INR.Ord (AmountOf * INR).(>=) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is equivalent to (\\a b -> compare a b /= LT) for "valid (AmountOf * INR)"'s (0 mutations)
  11231. 190.55 s [really-safe-money-gen] coverage (1210/1610): Money\.AmountOfSpec.INR.Ord (AmountOf * INR).(>=) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is reflexive for "valid (AmountOf * INR)"'s (0 mutations)
  11232. 190.78 s [really-safe-money-gen] coverage (1212/1610): Money\.AmountOfSpec.INR.Ord (AmountOf * INR).(>=) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is antisymmetric for "valid (AmountOf * INR)"'s (0 mutations)
  11233. 190.91 s [really-safe-money-gen] coverage (1211/1610): Money\.AmountOfSpec.INR.Ord (AmountOf * INR).(>=) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is transitive for "valid (AmountOf * INR)"'s (0 mutations)
  11234. 190.97 s [really-safe-money-gen] coverage (1213/1610): Money\.AmountOfSpec.INR.Ord (AmountOf * INR).(<) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is transitive for "valid (AmountOf * INR)"'s (0 mutations)
  11235. 191.07 s [really-safe-money-gen] coverage (1214/1610): Money\.AmountOfSpec.INR.Ord (AmountOf * INR).(<) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is equivalent to (\\a b -> compare a b == LT) for "valid (AmountOf * INR)"'s (0 mutations)
  11236. 191.10 s [really-safe-money-gen] coverage (1215/1610): Money\.AmountOfSpec.INR.Ord (AmountOf * INR).(<) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is antireflexive for "valid (AmountOf * INR)"'s (0 mutations)
  11237. 191.33 s [really-safe-money-gen] coverage (1100/1610): Money\.AmountOfSpec.ADA.toRational.produces valid Rationals (0 mutations)
  11238. 191.35 s [really-safe-money-gen] coverage (1102/1610): Money\.AmountOfSpec.ADA.fromRatio.roundtrips with toRatio (13 mutations)
  11239. 191.37 s [really-safe-money-gen] coverage (1098/1610): Money\.AmountOfSpec.ADA.Show (AmountOf * ADA) and Read (AmountOf * ADA).are implemented such that read \. show == id for valid values (1 mutations)
  11240. 191.41 s [really-safe-money-gen] coverage (1095/1610): Money\.AmountOfSpec.ADA.Eq (AmountOf * ADA).(/=) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is antireflexive for "valid (AmountOf * ADA)"s (0 mutations)
  11241. 191.50 s [really-safe-money-gen] coverage (1099/1610): Money\.AmountOfSpec.ADA.toRatio.produces valid Rationals when the quantisation factor is nonzero (0 mutations)
  11242. 191.57 s [really-safe-money-gen] coverage (1103/1610): Money\.AmountOfSpec.ADA.fromRatio.succeeds on 0 (14 mutations)
  11243. 191.61 s [really-safe-money-gen] coverage (1096/1610): Money\.AmountOfSpec.ADA.Eq (AmountOf * ADA).(/=) \:\: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (AmountOf * ADA)"s (0 mutations)
  11244. 191.82 s [really-safe-money-gen] coverage (1089/1610): Money\.AmountOfSpec.ADA.BTC.convert.produces valid amounts (15 mutations)
  11245. 191.98 s [really-safe-money-gen] coverage (1028/1610): Money\.AmountOfSpec.USD.GenValid (AmountOf * USD).genValid \:\: Gen (AmountOf * USD).only generates valid '(AmountOf * USD)'s (0 mutations)
  11246. 192.01 s [really-safe-money-gen] coverage (1101/1610): Money\.AmountOfSpec.ADA.fromRatio.produces valid AmountOfs (13 mutations)
  11247. 192.03 s [really-safe-money-gen] coverage (1090/1610): Money\.AmountOfSpec.ADA.BTC.rate.produces valid amounts (6 mutations)
  11248. 192.10 s [really-safe-money-gen] coverage (1011/1610): Money\.AmountOfSpec.USD.fromRatio.fails on +Infinity (2 mutations)
  11249. 192.15 s [really-safe-money-gen] coverage (1097/1610): Money\.AmountOfSpec.ADA.zero.is valid (1 mutations)
  11250. 192.33 s [really-safe-money-gen] coverage (1104/1610): Money\.AmountOfSpec.ADA.fromRatio.fails on +Infinity (2 mutations)
  11251. 192.39 s [really-safe-money-gen] coverage (1181/1610): Money\.AmountOfSpec.INR.distribute.produces valid amounts (17 mutations)
  11252. 192.54 s [really-safe-money-gen] coverage (1051/1610): Money\.AmountOfSpec.USD.Ord (AmountOf * USD).(>) \:\: (AmountOf * USD) -> (AmountOf * USD) -> Bool.is antireflexive for "valid (AmountOf * USD)"'s (0 mutations)
  11253. 192.72 s [really-safe-money-gen] coverage (1180/1610): Money\.AmountOfSpec.INR.distribute.produces results that sum up to the greater whole (18 mutations)
  11254. 192.90 s [really-safe-money-gen] coverage (1179/1610): Money\.AmountOfSpec.INR.toDouble.produces valid Doubles (0 mutations)
  11255. 193.07 s [really-safe-money-gen] coverage (1178/1610): Money\.AmountOfSpec.INR.subtract.matches what you would get with Integer, if nothing fails (5 mutations)
  11256. 193.21 s [really-safe-money-gen] coverage (1216/1610): Money\.AmountOfSpec.INR.Ord (AmountOf * INR)."min \:\: (AmountOf * INR -> AmountOf * INR -> AmountOf * INR)".is equivalent to (\\a b -> if a <= b then a else b) for "valid (AmountOf * INR)"'s (0 mutations)
  11257. 193.42 s [really-safe-money-gen] coverage (1229/1610): Money\.AmountOfSpec.INR.fromRational.fails on +Infinity (2 mutations)
  11258. 193.58 s [really-safe-money-gen] coverage (1220/1610): Money\.AmountOfSpec.INR.multiply.produces valid amounts (4 mutations)
  11259. 193.66 s [really-safe-money-gen] coverage (1224/1610): Money\.AmountOfSpec.INR.toMinimalQuantisations.roundtrips with fromMinimalQuantisations (0 mutations)
  11260. 193.74 s [really-safe-money-gen] coverage (1231/1610): Money\.AmountOfSpec.INR.fromRational.produces valid Amounts (13 mutations)
  11261. 193.89 s [really-safe-money-gen] coverage (1230/1610): Money\.AmountOfSpec.INR.fromRational.fails on NaN (2 mutations)
  11262. 193.99 s [really-safe-money-gen] coverage (1232/1610): Money\.AmountOfSpec.INR.fromRational.succeeds on 1 (13 mutations)
  11263. 194.22 s [really-safe-money-gen] coverage (1233/1610): Money\.AmountOfSpec.INR.fromRational.fails on -1 (5 mutations)
  11264. 194.22 s [really-safe-money-gen] coverage (1235/1610): Money\.AmountOfSpec.INR.add.is associative when both succeed (4 mutations)
  11265. 194.26 s [really-safe-money-gen] coverage (1236/1610): Money\.AmountOfSpec.INR.add.matches what you would get with Integer, if nothing fails (4 mutations)
  11266. 194.32 s [really-safe-money-gen] coverage (1234/1610): Money\.AmountOfSpec.INR.add.is commutative (4 mutations)
  11267. 194.39 s [really-safe-money-gen] coverage (1238/1610): Money\.AmountOfSpec.INR.add.has a right-identity\: zero (5 mutations)
  11268. 194.51 s [really-safe-money-gen] coverage (1237/1610): Money\.AmountOfSpec.INR.add.has a left-identity\: zero (5 mutations)
  11269. 194.54 s [really-safe-money-gen] coverage (1248/1610): Money\.AmountOfSpec.INR.BTC.rate.produces valid amounts (6 mutations)
  11270. 194.68 s [really-safe-money-gen] coverage (1249/1610): Money\.AmountOfSpec.INR.BTC.convert.produces valid amounts (15 mutations)
  11271. 194.77 s [really-safe-money-gen] coverage (1252/1610): Money\.AmountOfSpec.INR.fromRatio.succeeds on 1 (13 mutations)
  11272. 194.82 s [really-safe-money-gen] coverage (1250/1610): Money\.AmountOfSpec.INR.fromRatio.fails on NaN (2 mutations)
  11273. 194.86 s [really-safe-money-gen] coverage (1251/1610): Money\.AmountOfSpec.INR.fromRatio.fails on +Infinity (2 mutations)
  11274. 194.93 s [really-safe-money-gen] coverage (1253/1610): Money\.AmountOfSpec.INR.fromRatio.succeeds on 0 (14 mutations)
  11275. 195.00 s [really-safe-money-gen] coverage (1254/1610): Money\.AmountOfSpec.INR.fromRatio.roundtrips with toRatio (13 mutations)
  11276. 195.20 s [really-safe-money-gen] coverage (1256/1610): Money\.AmountOfSpec.INR.fromRatio.fails on 7\.123 (9 mutations)
  11277. 195.24 s [really-safe-money-gen] coverage (1255/1610): Money\.AmountOfSpec.INR.fromRatio.produces valid AmountOfs (13 mutations)
  11278. 195.36 s [really-safe-money-gen] coverage (1257/1610): Money\.AmountOfSpec.INR.fromRatio.succeeds on 77 (13 mutations)
  11279. 195.61 s [really-safe-money-gen] coverage (1258/1610): Money\.AmountOfSpec.INR.GenValid (AmountOf * INR).genValid \:\: Gen (AmountOf * INR).only generates valid '(AmountOf * INR)'s (0 mutations)
  11280. 195.77 s [really-safe-money-gen] coverage (1259/1610): Money\.AmountOfSpec.INR.Eq (AmountOf * INR).(==) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is symmetric for "valid (AmountOf * INR)"s (0 mutations)
  11281. 195.93 s [really-safe-money-gen] coverage (1260/1610): Money\.AmountOfSpec.INR.Eq (AmountOf * INR).(==) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is transitive for "valid (AmountOf * INR)"s (0 mutations)
  11282. 196.05 s [really-safe-money-gen] coverage (1261/1610): Money\.AmountOfSpec.INR.Eq (AmountOf * INR).(==) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is reflexive for "valid (AmountOf * INR)"s (0 mutations)
  11283. 196.14 s [really-safe-money-gen] coverage (1262/1610): Money\.AmountOfSpec.INR.Eq (AmountOf * INR).(==) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (AmountOf * INR)"s (0 mutations)
  11284. 196.45 s [really-safe-money-gen] coverage (1263/1610): Money\.AmountOfSpec.INR.Eq (AmountOf * INR).(/=) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (AmountOf * INR)"s (0 mutations)
  11285. 196.48 s [really-safe-money-gen] coverage (1264/1610): Money\.AmountOfSpec.INR.Eq (AmountOf * INR).(/=) \:\: (AmountOf * INR) -> (AmountOf * INR) -> Bool.is antireflexive for "valid (AmountOf * INR)"s (0 mutations)
  11286. 196.55 s [really-safe-money-gen] coverage (1265/1610): Money\.AmountOfSpec.INR.USD.convert.produces valid amounts (15 mutations)
  11287. 196.68 s [really-safe-money-gen] coverage (1266/1610): Money\.AmountOfSpec.INR.USD.rate.produces valid amounts (6 mutations)
  11288. 196.77 s [really-safe-money-gen] coverage (1227/1610): Money\.AmountOfSpec.INR.fromRational.fails on -Infinity (2 mutations)
  11289. 196.90 s [really-safe-money-gen] coverage (938/1610): Money\.QuantisationFactorSpec.DecimalLiteral.toDecimalLiteral.produces valid literals (24 mutations)
  11290. 196.97 s [really-safe-money-gen] coverage (1269/1610): Money\.AmountOfSpec.BTC.toMinimalQuantisations.produces valid Int64s (0 mutations)
  11291. 197.03 s [really-safe-money-gen] coverage (1270/1610): Money\.AmountOfSpec.BTC.INR.rate.produces valid amounts (6 mutations)
  11292. 197.04 s [really-safe-money-gen] coverage (1267/1610): Money\.AmountOfSpec.BTC.format.produces valid strings (3 mutations)
  11293. 197.09 s [really-safe-money-gen] coverage (1271/1610): Money\.AmountOfSpec.BTC.INR.convert.produces valid amounts (15 mutations)
  11294. 197.17 s [really-safe-money-gen] coverage (1272/1610): Money\.AmountOfSpec.BTC.Ord (AmountOf * BTC).(<=) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is equivalent to (\\a b -> compare a b /= GT) for "valid (AmountOf * BTC)"'s (0 mutations)
  11295. 197.24 s [really-safe-money-gen] coverage (1274/1610): Money\.AmountOfSpec.BTC.Ord (AmountOf * BTC).(<=) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is reflexive for "valid (AmountOf * BTC)"'s (0 mutations)
  11296. 197.34 s [really-safe-money-gen] coverage (1273/1610): Money\.AmountOfSpec.BTC.Ord (AmountOf * BTC).(<=) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is transitive for "valid (AmountOf * BTC)"'s (0 mutations)
  11297. 197.39 s [really-safe-money-gen] coverage (1268/1610): Money\.AmountOfSpec.BTC.toMinimalQuantisations.roundtrips with fromMinimalQuantisations (0 mutations)
  11298. 197.43 s [really-safe-money-gen] coverage (1276/1610): Money\.AmountOfSpec.BTC.Ord (AmountOf * BTC)."min \:\: (AmountOf * BTC -> AmountOf * BTC -> AmountOf * BTC)".is equivalent to (\\a b -> if a <= b then a else b) for "valid (AmountOf * BTC)"'s (0 mutations)
  11299. 197.52 s [really-safe-money-gen] coverage (1275/1610): Money\.AmountOfSpec.BTC.Ord (AmountOf * BTC).(<=) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is antisymmetric for "valid (AmountOf * BTC)"'s (0 mutations)
  11300. 197.74 s [really-safe-money-gen] coverage (1279/1610): Money\.AmountOfSpec.BTC.Ord (AmountOf * BTC).(>=) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is equivalent to (\\a b -> compare a b /= LT) for "valid (AmountOf * BTC)"'s (0 mutations)
  11301. 197.76 s [really-safe-money-gen] coverage (1277/1610): Money\.AmountOfSpec.BTC.Ord (AmountOf * BTC).(>=) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is antisymmetric for "valid (AmountOf * BTC)"'s (0 mutations)
  11302. 197.92 s [really-safe-money-gen] coverage (1280/1610): Money\.AmountOfSpec.BTC.Ord (AmountOf * BTC).(>=) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is transitive for "valid (AmountOf * BTC)"'s (0 mutations)
  11303. 198.22 s [really-safe-money-gen] coverage (1282/1610): Money\.AmountOfSpec.BTC.Ord (AmountOf * BTC).(<) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is equivalent to (\\a b -> compare a b == LT) for "valid (AmountOf * BTC)"'s (0 mutations)
  11304. 198.30 s [really-safe-money-gen] coverage (1278/1610): Money\.AmountOfSpec.BTC.Ord (AmountOf * BTC).(>=) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is reflexive for "valid (AmountOf * BTC)"'s (0 mutations)
  11305. 198.39 s [really-safe-money-gen] coverage (1283/1610): Money\.AmountOfSpec.BTC.Ord (AmountOf * BTC).(<) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is antireflexive for "valid (AmountOf * BTC)"'s (0 mutations)
  11306. 198.59 s [really-safe-money-gen] coverage (1284/1610): Money\.AmountOfSpec.BTC.Ord (AmountOf * BTC).(<) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is transitive for "valid (AmountOf * BTC)"'s (0 mutations)
  11307. 198.84 s [really-safe-money-gen] coverage (1281/1610): Money\.AmountOfSpec.BTC.Ord (AmountOf * BTC)."max \:\: (AmountOf * BTC -> AmountOf * BTC -> AmountOf * BTC)".is equivalent to (\\a b -> if a >= b then a else b) for "valid (AmountOf * BTC)"'s (0 mutations)
  11308. 199.02 s [really-safe-money-gen] coverage (1286/1610): Money\.AmountOfSpec.BTC.Ord (AmountOf * BTC).(>) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is transitive for "valid (AmountOf * BTC)"'s (0 mutations)
  11309. 199.10 s [really-safe-money-gen] coverage (937/1610): Money\.QuantisationFactorSpec.DecimalLiteral.toDecimalLiteral.roundtrips with fromDecimalLiteral (48 mutations)
  11310. 199.26 s [really-safe-money-gen] coverage (1285/1610): Money\.AmountOfSpec.BTC.Ord (AmountOf * BTC).(>) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is antireflexive for "valid (AmountOf * BTC)"'s (0 mutations)
  11311. 199.39 s [really-safe-money-gen] coverage (1287/1610): Money\.AmountOfSpec.BTC.Ord (AmountOf * BTC).(>) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is equivalent to (\\a b -> compare a b == GT) for "valid (AmountOf * BTC)"'s (0 mutations)
  11312. 199.59 s [really-safe-money-gen] coverage (1289/1610): Money\.AmountOfSpec.BTC.fromRatio.fails on NaN (2 mutations)
  11313. 199.85 s [really-safe-money-gen] coverage (1246/1610): Money\.AmountOfSpec.INR.INR.rate.produces valid amounts (6 mutations)
  11314. 199.85 s [really-safe-money-gen] coverage (1247/1610): Money\.AmountOfSpec.INR.INR.convert.produces valid amounts (15 mutations)
  11315. 200.00 s [really-safe-money-gen] coverage (1243/1610): Money\.AmountOfSpec.INR.sum.produces valid amounts (5 mutations)
  11316. 200.08 s [really-safe-money-gen] coverage (1292/1610): Money\.AmountOfSpec.BTC.fromRatio.succeeds on 1 (13 mutations)
  11317. 200.28 s [really-safe-money-gen] coverage (1244/1610): Money\.AmountOfSpec.INR.sum.matches what you would get with Integer, if nothing fails (5 mutations)
  11318. 200.32 s [really-safe-money-gen] coverage (1295/1610): Money\.AmountOfSpec.BTC.fromRatio.fails on 7\.123 (9 mutations)
  11319. 200.37 s [really-safe-money-gen] coverage (1241/1610): Money\.AmountOfSpec.INR.Show (AmountOf * INR) and Read (AmountOf * INR).are implemented such that read \. show == id for valid values (1 mutations)
  11320. 200.38 s [really-safe-money-gen] coverage (1294/1610): Money\.AmountOfSpec.BTC.fromRatio.fails on +Infinity (2 mutations)
  11321. 200.45 s [really-safe-money-gen] coverage (1297/1610): Money\.AmountOfSpec.BTC.CHF.rate.produces valid amounts (6 mutations)
  11322. 200.46 s [really-safe-money-gen] coverage (1296/1610): Money\.AmountOfSpec.BTC.CHF.convert.produces valid amounts (15 mutations)
  11323. 200.58 s [really-safe-money-gen] coverage (1239/1610): Money\.AmountOfSpec.INR.add.produces valid amounts (4 mutations)
  11324. 200.68 s [really-safe-money-gen] coverage (1298/1610): Money\.AmountOfSpec.BTC.fromRational.fails on NaN (2 mutations)
  11325. 200.72 s [really-safe-money-gen] coverage (1242/1610): Money\.AmountOfSpec.INR.toRational.produces valid Rationals (0 mutations)
  11326. 200.83 s [really-safe-money-gen] coverage (1299/1610): Money\.AmountOfSpec.BTC.fromRational.produces valid Amounts (13 mutations)
  11327. 200.91 s [really-safe-money-gen] coverage (1240/1610): Money\.AmountOfSpec.INR.toRatio.produces valid Rationals when the quantisation factor is nonzero (0 mutations)
  11328. 200.99 s [really-safe-money-gen] coverage (1228/1610): Money\.AmountOfSpec.INR.fromRational.roundtrips with toRational (13 mutations)
  11329. 201.04 s [really-safe-money-gen] coverage (1288/1610): Money\.AmountOfSpec.BTC.fromRatio.roundtrips with toRatio (13 mutations)
  11330. 201.11 s [really-safe-money-gen] coverage (1221/1610): Money\.AmountOfSpec.INR.multiply.is absorbed by 0 (5 mutations)
  11331. 201.34 s [really-safe-money-gen] coverage (1301/1610): Money\.AmountOfSpec.BTC.fromRational.succeeds on 1 (13 mutations)
  11332. 201.45 s [really-safe-money-gen] coverage (1226/1610): Money\.AmountOfSpec.INR.fromRational.succeeds on 0 (13 mutations)
  11333. 201.52 s [really-safe-money-gen] coverage (1302/1610): Money\.AmountOfSpec.BTC.fromRational.fails on +Infinity (2 mutations)
  11334. 201.81 s [really-safe-money-gen] coverage (1293/1610): Money\.AmountOfSpec.BTC.fromRatio.produces valid AmountOfs (13 mutations)
  11335. 201.92 s [really-safe-money-gen] coverage (1291/1610): Money\.AmountOfSpec.BTC.fromRatio.succeeds on 0 (14 mutations)
  11336. 202.16 s [really-safe-money-gen] coverage (1290/1610): Money\.AmountOfSpec.BTC.fromRatio.succeeds on 77 (13 mutations)
  11337. 202.19 s [really-safe-money-gen] coverage (1315/1610): Money\.AmountOfSpec.BTC.USD.convert.produces valid amounts (15 mutations)
  11338. 202.35 s [really-safe-money-gen] coverage (1316/1610): Money\.AmountOfSpec.BTC.Eq (AmountOf * BTC).(==) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is reflexive for "valid (AmountOf * BTC)"s (0 mutations)
  11339. 202.43 s [really-safe-money-gen] coverage (1317/1610): Money\.AmountOfSpec.BTC.Eq (AmountOf * BTC).(==) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is transitive for "valid (AmountOf * BTC)"s (0 mutations)
  11340. 202.63 s [really-safe-money-gen] coverage (1318/1610): Money\.AmountOfSpec.BTC.Eq (AmountOf * BTC).(==) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (AmountOf * BTC)"s (0 mutations)
  11341. 202.87 s [really-safe-money-gen] coverage (1320/1610): Money\.AmountOfSpec.BTC.Eq (AmountOf * BTC).(/=) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (AmountOf * BTC)"s (0 mutations)
  11342. 202.92 s [really-safe-money-gen] coverage (1319/1610): Money\.AmountOfSpec.BTC.Eq (AmountOf * BTC).(==) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is symmetric for "valid (AmountOf * BTC)"s (0 mutations)
  11343. 203.06 s [really-safe-money-gen] coverage (1321/1610): Money\.AmountOfSpec.BTC.Eq (AmountOf * BTC).(/=) \:\: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool.is antireflexive for "valid (AmountOf * BTC)"s (0 mutations)
  11344. 203.12 s [really-safe-money-gen] coverage (1322/1610): Money\.AmountOfSpec.BTC.add.has a right-identity\: zero (5 mutations)
  11345. 203.29 s [really-safe-money-gen] coverage (1323/1610): Money\.AmountOfSpec.BTC.add.has a left-identity\: zero (5 mutations)
  11346. 203.32 s [really-safe-money-gen] coverage (1324/1610): Money\.AmountOfSpec.BTC.add.matches what you would get with Integer, if nothing fails (4 mutations)
  11347. 203.36 s [really-safe-money-gen] coverage (1326/1610): Money\.AmountOfSpec.BTC.add.produces valid amounts (4 mutations)
  11348. 203.36 s [really-safe-money-gen] coverage (1325/1610): Money\.AmountOfSpec.BTC.add.is commutative (4 mutations)
  11349. 203.48 s [really-safe-money-gen] coverage (1327/1610): Money\.AmountOfSpec.BTC.add.is associative when both succeed (4 mutations)
  11350. 203.53 s [really-safe-money-gen] coverage (1328/1610): Money\.AmountOfSpec.BTC.ADA.convert.produces valid amounts (15 mutations)
  11351. 203.60 s [really-safe-money-gen] coverage (1329/1610): Money\.AmountOfSpec.BTC.ADA.rate.produces valid amounts (6 mutations)
  11352. 203.63 s [really-safe-money-gen] coverage (1330/1610): Money\.AmountOfSpec.BTC.zero.is valid (1 mutations)
  11353. 203.71 s [really-safe-money-gen] coverage (1331/1610): Money\.AmountOfSpec.BTC.BTC.convert.produces valid amounts (15 mutations)
  11354. 203.83 s [really-safe-money-gen] coverage (1332/1610): Money\.AmountOfSpec.BTC.BTC.rate.produces valid amounts (6 mutations)
  11355. 203.92 s [really-safe-money-gen] coverage (1333/1610): Money\.AmountOfSpec.BTC.toDouble.produces valid Doubles (0 mutations)
  11356. 203.96 s [really-safe-money-gen] coverage (1334/1610): Money\.AmountOfSpec.BTC.Show (AmountOf * BTC) and Read (AmountOf * BTC).are implemented such that read \. show == id for valid values (1 mutations)
  11357. 203.99 s [really-safe-money-gen] coverage (1335/1610): Money\.AmountOfSpec.BTC.subtract.matches what you would get with Integer, if nothing fails (5 mutations)
  11358. 204.09 s [really-safe-money-gen] coverage (1336/1610): Money\.AmountOfSpec.BTC.fromMinimalQuantisations.produces valid amounts (0 mutations)
  11359. 204.28 s [really-safe-money-gen] coverage (1337/1610): Money\.AmountOfSpec.BTC.toRatio.produces valid Rationals when the quantisation factor is nonzero (0 mutations)
  11360. 204.40 s [really-safe-money-gen] coverage (1338/1610): Money\.AmountOfSpec.BTC.sum.matches what you would get with Integer, if nothing fails (5 mutations)
  11361. 204.49 s [really-safe-money-gen] coverage (1339/1610): Money\.AmountOfSpec.BTC.sum.produces valid amounts (5 mutations)
  11362. 204.69 s [really-safe-money-gen] coverage (1340/1610): Money\.AmountOfSpec.BTC.distribute.Eq (Distribution (AmountOf * BTC)).(/=) \:\: (Distribution (AmountOf * BTC)) -> (Distribution (AmountOf * BTC)) -> Bool.is antireflexive for "valid (Distribution (AmountOf * BTC))"s (1 mutations)
  11363. 204.81 s [really-safe-money-gen] coverage (1341/1610): Money\.AmountOfSpec.BTC.distribute.Eq (Distribution (AmountOf * BTC)).(/=) \:\: (Distribution (AmountOf * BTC)) -> (Distribution (AmountOf * BTC)) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (Distribution (AmountOf * BTC))"s (1 mutations)
  11364. 205.11 s [really-safe-money-gen] coverage (1342/1610): Money\.AmountOfSpec.BTC.distribute.Eq (Distribution (AmountOf * BTC)).(==) \:\: (Distribution (AmountOf * BTC)) -> (Distribution (AmountOf * BTC)) -> Bool.is reflexive for "valid (Distribution (AmountOf * BTC))"s (1 mutations)
  11365. 205.12 s [really-safe-money-gen] coverage (1343/1610): Money\.AmountOfSpec.BTC.distribute.Eq (Distribution (AmountOf * BTC)).(==) \:\: (Distribution (AmountOf * BTC)) -> (Distribution (AmountOf * BTC)) -> Bool.is symmetric for "valid (Distribution (AmountOf * BTC))"s (1 mutations)
  11366. 205.12 s [really-safe-money-gen] coverage (1344/1610): Money\.AmountOfSpec.BTC.distribute.Eq (Distribution (AmountOf * BTC)).(==) \:\: (Distribution (AmountOf * BTC)) -> (Distribution (AmountOf * BTC)) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (Distribution (AmountOf * BTC))"s (1 mutations)
  11367. 205.48 s [really-safe-money-gen] coverage (1345/1610): Money\.AmountOfSpec.BTC.distribute.Eq (Distribution (AmountOf * BTC)).(==) \:\: (Distribution (AmountOf * BTC)) -> (Distribution (AmountOf * BTC)) -> Bool.is transitive for "valid (Distribution (AmountOf * BTC))"s (1 mutations)
  11368. 205.56 s [really-safe-money-gen] coverage (1346/1610): Money\.AmountOfSpec.BTC.distribute.produces valid amounts (17 mutations)
  11369. 205.76 s [really-safe-money-gen] coverage (1347/1610): Money\.AmountOfSpec.BTC.distribute.produces results that sum up to the greater whole (18 mutations)
  11370. 205.86 s [really-safe-money-gen] coverage (1348/1610): Money\.AmountOfSpec.BTC.distribute.Show (Distribution (AmountOf * BTC)) and Read (Distribution (AmountOf * BTC)).are implemented such that read \. show == id for valid values (1 mutations)
  11371. 205.99 s [really-safe-money-gen] coverage (1349/1610): Money\.AmountOfSpec.BTC.toRational.produces valid Rationals (0 mutations)
  11372. 206.01 s [really-safe-money-gen] coverage (1350/1610): Money\.AmountOfSpec.BTC.fraction.produces valid amounts (10 mutations)
  11373. 206.09 s [really-safe-money-gen] coverage (1351/1610): Money\.AmountOfSpec.BTC.multiply.is absorbed by 0 (5 mutations)
  11374. 206.22 s [really-safe-money-gen] coverage (1353/1610): Money\.AmountOfSpec.BTC.multiply.produces valid amounts (4 mutations)
  11375. 206.24 s [really-safe-money-gen] coverage (1354/1610): Money\.AmountOfSpec.BTC.multiply.matches what you would get with Integer, if nothing fails (4 mutations)
  11376. 206.26 s [really-safe-money-gen] coverage (1352/1610): Money\.AmountOfSpec.BTC.multiply.has an identity\: 1 (4 mutations)
  11377. 206.40 s [really-safe-money-gen] coverage (1355/1610): Money\.AmountOfSpec.BTC.multiply.is distributive with add when both succeed (8 mutations)
  11378. 206.43 s [really-safe-money-gen] coverage (1356/1610): Money\.AmountOfSpec.CHF.INR.convert.produces valid amounts (15 mutations)
  11379. 206.54 s [really-safe-money-gen] coverage (1357/1610): Money\.AmountOfSpec.CHF.INR.rate.produces valid amounts (6 mutations)
  11380. 206.54 s [really-safe-money-gen] coverage (1358/1610): Money\.AmountOfSpec.CHF.USD.convert.produces valid amounts (15 mutations)
  11381. 206.62 s [really-safe-money-gen] coverage (1360/1610): Money\.AmountOfSpec.CHF.fromMinimalQuantisations.produces valid amounts (0 mutations)
  11382. 206.78 s [really-safe-money-gen] coverage (1359/1610): Money\.AmountOfSpec.CHF.USD.rate.produces valid amounts (6 mutations)
  11383. 206.84 s [really-safe-money-gen] coverage (1364/1610): Money\.AmountOfSpec.CHF.fromRatio.roundtrips with toRatio (13 mutations)
  11384. 206.91 s [really-safe-money-gen] coverage (1365/1610): Money\.AmountOfSpec.CHF.fromRatio.succeeds on 1 (13 mutations)
  11385. 207.00 s [really-safe-money-gen] coverage (1366/1610): Money\.AmountOfSpec.CHF.fromRatio.fails on 7\.123 (9 mutations)
  11386. 207.03 s [really-safe-money-gen] coverage (1367/1610): Money\.AmountOfSpec.CHF.fromRatio.succeeds on 77 (13 mutations)
  11387. 207.16 s [really-safe-money-gen] coverage (1368/1610): Money\.AmountOfSpec.CHF.fromRatio.produces valid AmountOfs (13 mutations)
  11388. 207.53 s [really-safe-money-gen] coverage (1370/1610): Money\.AmountOfSpec.CHF.multiply.has an identity\: 1 (4 mutations)
  11389. 207.54 s [really-safe-money-gen] coverage (1369/1610): Money\.AmountOfSpec.CHF.fraction.produces valid amounts (10 mutations)
  11390. 207.63 s [really-safe-money-gen] coverage (1371/1610): Money\.AmountOfSpec.CHF.multiply.is absorbed by 0 (5 mutations)
  11391. 207.73 s [really-safe-money-gen] coverage (1372/1610): Money\.AmountOfSpec.CHF.multiply.is distributive with add when both succeed (8 mutations)
  11392. 207.88 s [really-safe-money-gen] coverage (1374/1610): Money\.AmountOfSpec.CHF.multiply.produces valid amounts (4 mutations)
  11393. 208.06 s [really-safe-money-gen] coverage (1363/1610): Money\.AmountOfSpec.CHF.fromRatio.fails on NaN (2 mutations)
  11394. 208.15 s [really-safe-money-gen] coverage (1373/1610): Money\.AmountOfSpec.CHF.multiply.matches what you would get with Integer, if nothing fails (4 mutations)
  11395. 208.19 s [really-safe-money-gen] coverage (1362/1610): Money\.AmountOfSpec.CHF.fromRatio.fails on +Infinity (2 mutations)
  11396. 208.43 s [really-safe-money-gen] coverage (1375/1610): Money\.AmountOfSpec.CHF.toRatio.produces valid Rationals when the quantisation factor is nonzero (0 mutations)
  11397. 208.60 s [really-safe-money-gen] coverage (1379/1610): Money\.AmountOfSpec.CHF.fromRational.fails on -Infinity (2 mutations)
  11398. 208.63 s [really-safe-money-gen] coverage (1361/1610): Money\.AmountOfSpec.CHF.fromRatio.succeeds on 0 (14 mutations)
  11399. 208.87 s [really-safe-money-gen] coverage (1380/1610): Money\.AmountOfSpec.CHF.fromRational.fails on -1 (5 mutations)
  11400. 209.05 s [really-safe-money-gen] coverage (1381/1610): Money\.AmountOfSpec.CHF.fromRational.fails on NaN (2 mutations)
  11401. 209.08 s [really-safe-money-gen] coverage (1382/1610): Money\.AmountOfSpec.CHF.fromRational.roundtrips with toRational (13 mutations)
  11402. 209.10 s [really-safe-money-gen] coverage (1377/1610): Money\.AmountOfSpec.CHF.fromRational.produces valid Amounts (13 mutations)
  11403. 209.17 s [really-safe-money-gen] coverage (1378/1610): Money\.AmountOfSpec.CHF.fromRational.succeeds on 0 (13 mutations)
  11404. 209.19 s [really-safe-money-gen] coverage (1383/1610): Money\.AmountOfSpec.CHF.fromRational.succeeds on 1 (13 mutations)
  11405. 209.22 s [really-safe-money-gen] coverage (1385/1610): Money\.AmountOfSpec.CHF.Eq (AmountOf * CHF).(==) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is symmetric for "valid (AmountOf * CHF)"s (0 mutations)
  11406. 209.30 s [really-safe-money-gen] coverage (1384/1610): Money\.AmountOfSpec.CHF.Eq (AmountOf * CHF).(==) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (AmountOf * CHF)"s (0 mutations)
  11407. 209.45 s [really-safe-money-gen] coverage (1388/1610): Money\.AmountOfSpec.CHF.Eq (AmountOf * CHF).(/=) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is antireflexive for "valid (AmountOf * CHF)"s (0 mutations)
  11408. 209.52 s [really-safe-money-gen] coverage (1389/1610): Money\.AmountOfSpec.CHF.Eq (AmountOf * CHF).(/=) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (AmountOf * CHF)"s (0 mutations)
  11409. 209.57 s [really-safe-money-gen] coverage (1390/1610): Money\.AmountOfSpec.CHF.sum.matches what you would get with Integer, if nothing fails (5 mutations)
  11410. 209.81 s [really-safe-money-gen] coverage (1391/1610): Money\.AmountOfSpec.CHF.sum.produces valid amounts (5 mutations)
  11411. 209.85 s [really-safe-money-gen] coverage (1392/1610): Money\.AmountOfSpec.CHF.BTC.convert.produces valid amounts (15 mutations)
  11412. 209.89 s [really-safe-money-gen] coverage (1393/1610): Money\.AmountOfSpec.CHF.BTC.rate.produces valid amounts (6 mutations)
  11413. 209.99 s [really-safe-money-gen] coverage (1395/1610): Money\.AmountOfSpec.CHF.subtract.matches what you would get with Integer, if nothing fails (5 mutations)
  11414. 210.00 s [really-safe-money-gen] coverage (1394/1610): Money\.AmountOfSpec.CHF.zero.is valid (1 mutations)
  11415. 210.06 s [really-safe-money-gen] coverage (1396/1610): Money\.AmountOfSpec.CHF.toDouble.produces valid Doubles (0 mutations)
  11416. 210.45 s [really-safe-money-gen] coverage (1397/1610): Money\.AmountOfSpec.CHF.toRational.produces valid Rationals (0 mutations)
  11417. 210.46 s [really-safe-money-gen] coverage (1398/1610): Money\.AmountOfSpec.CHF.CHF.convert.produces valid amounts (15 mutations)
  11418. 210.64 s [really-safe-money-gen] coverage (1399/1610): Money\.AmountOfSpec.CHF.CHF.rate.produces valid amounts (6 mutations)
  11419. 210.66 s [really-safe-money-gen] coverage (1400/1610): Money\.AmountOfSpec.CHF.Show (AmountOf * CHF) and Read (AmountOf * CHF).are implemented such that read \. show == id for valid values (1 mutations)
  11420. 210.85 s [really-safe-money-gen] coverage (1401/1610): Money\.AmountOfSpec.CHF.format.produces valid strings (3 mutations)
  11421. 210.92 s [really-safe-money-gen] coverage (1402/1610): Money\.AmountOfSpec.CHF.fromDouble.succeeds on 1 (22 mutations)
  11422. 211.11 s [really-safe-money-gen] coverage (1403/1610): Money\.AmountOfSpec.CHF.fromDouble.produces valid amounts (22 mutations)
  11423. 211.22 s [really-safe-money-gen] coverage (1404/1610): Money\.AmountOfSpec.CHF.fromDouble.fails on +Infinity (7 mutations)
  11424. 211.34 s [really-safe-money-gen] coverage (1405/1610): Money\.AmountOfSpec.CHF.fromDouble.succeeds on 0 (22 mutations)
  11425. 211.54 s [really-safe-money-gen] coverage (1407/1610): Money\.AmountOfSpec.CHF.fromDouble.fails on NaN (5 mutations)
  11426. 211.58 s [really-safe-money-gen] coverage (1406/1610): Money\.AmountOfSpec.CHF.fromDouble.fails on -1 (3 mutations)
  11427. 211.77 s [really-safe-money-gen] coverage (1408/1610): Money\.AmountOfSpec.CHF.fromDouble.fails on -Infinity (3 mutations)
  11428. 212.08 s [really-safe-money-gen] coverage (1410/1610): Money\.AmountOfSpec.CHF.ADA.convert.produces valid amounts (15 mutations)
  11429. 212.09 s [really-safe-money-gen] coverage (1409/1610): Money\.AmountOfSpec.CHF.ADA.rate.produces valid amounts (6 mutations)
  11430. 212.15 s [really-safe-money-gen] coverage (1411/1610): Money\.AmountOfSpec.CHF.toMinimalQuantisations.produces valid Int64s (0 mutations)
  11431. 212.19 s [really-safe-money-gen] coverage (1412/1610): Money\.AmountOfSpec.CHF.toMinimalQuantisations.roundtrips with fromMinimalQuantisations (0 mutations)
  11432. 212.21 s [really-safe-money-gen] coverage (1413/1610): Money\.AmountOfSpec.CHF.Ord (AmountOf * CHF)."max \:\: (AmountOf * CHF -> AmountOf * CHF -> AmountOf * CHF)".is equivalent to (\\a b -> if a >= b then a else b) for "valid (AmountOf * CHF)"'s (0 mutations)
  11433. 212.37 s [really-safe-money-gen] coverage (1414/1610): Money\.AmountOfSpec.CHF.Ord (AmountOf * CHF)."min \:\: (AmountOf * CHF -> AmountOf * CHF -> AmountOf * CHF)".is equivalent to (\\a b -> if a <= b then a else b) for "valid (AmountOf * CHF)"'s (0 mutations)
  11434. 212.42 s [really-safe-money-gen] coverage (1415/1610): Money\.AmountOfSpec.CHF.Ord (AmountOf * CHF).(>) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is equivalent to (\\a b -> compare a b == GT) for "valid (AmountOf * CHF)"'s (0 mutations)
  11435. 212.43 s [really-safe-money-gen] coverage (1416/1610): Money\.AmountOfSpec.CHF.Ord (AmountOf * CHF).(>) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is antireflexive for "valid (AmountOf * CHF)"'s (0 mutations)
  11436. 212.52 s [really-safe-money-gen] coverage (1417/1610): Money\.AmountOfSpec.CHF.Ord (AmountOf * CHF).(>) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is transitive for "valid (AmountOf * CHF)"'s (0 mutations)
  11437. 212.61 s [really-safe-money-gen] coverage (1418/1610): Money\.AmountOfSpec.CHF.Ord (AmountOf * CHF).(>=) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is transitive for "valid (AmountOf * CHF)"'s (0 mutations)
  11438. 212.73 s [really-safe-money-gen] coverage (1419/1610): Money\.AmountOfSpec.CHF.Ord (AmountOf * CHF).(>=) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is equivalent to (\\a b -> compare a b /= LT) for "valid (AmountOf * CHF)"'s (0 mutations)
  11439. 212.86 s [really-safe-money-gen] coverage (1421/1610): Money\.AmountOfSpec.CHF.Ord (AmountOf * CHF).(>=) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is reflexive for "valid (AmountOf * CHF)"'s (0 mutations)
  11440. 212.90 s [really-safe-money-gen] coverage (1420/1610): Money\.AmountOfSpec.CHF.Ord (AmountOf * CHF).(>=) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is antisymmetric for "valid (AmountOf * CHF)"'s (0 mutations)
  11441. 212.97 s [really-safe-money-gen] coverage (1423/1610): Money\.AmountOfSpec.CHF.Ord (AmountOf * CHF).(<) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is equivalent to (\\a b -> compare a b == LT) for "valid (AmountOf * CHF)"'s (0 mutations)
  11442. 213.05 s [really-safe-money-gen] coverage (1422/1610): Money\.AmountOfSpec.CHF.Ord (AmountOf * CHF).(<) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is antireflexive for "valid (AmountOf * CHF)"'s (0 mutations)
  11443. 213.07 s [really-safe-money-gen] coverage (1424/1610): Money\.AmountOfSpec.CHF.Ord (AmountOf * CHF).(<) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is transitive for "valid (AmountOf * CHF)"'s (0 mutations)
  11444. 213.42 s [really-safe-money-gen] coverage (1426/1610): Money\.AmountOfSpec.CHF.Ord (AmountOf * CHF).(<=) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is equivalent to (\\a b -> compare a b /= GT) for "valid (AmountOf * CHF)"'s (0 mutations)
  11445. 213.42 s [really-safe-money-gen] coverage (1425/1610): Money\.AmountOfSpec.CHF.Ord (AmountOf * CHF).(<=) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is transitive for "valid (AmountOf * CHF)"'s (0 mutations)
  11446. 213.61 s [really-safe-money-gen] coverage (1427/1610): Money\.AmountOfSpec.CHF.Ord (AmountOf * CHF).(<=) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is reflexive for "valid (AmountOf * CHF)"'s (0 mutations)
  11447. 213.68 s [really-safe-money-gen] coverage (1428/1610): Money\.AmountOfSpec.CHF.Ord (AmountOf * CHF).(<=) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is antisymmetric for "valid (AmountOf * CHF)"'s (0 mutations)
  11448. 213.82 s [really-safe-money-gen] coverage (1429/1610): Money\.AmountOfSpec.CHF.GenValid (AmountOf * CHF).genValid \:\: Gen (AmountOf * CHF).only generates valid '(AmountOf * CHF)'s (0 mutations)
  11449. 213.94 s [really-safe-money-gen] coverage (1430/1610): Money\.AmountOfSpec.CHF.distribute.Show (Distribution (AmountOf * CHF)) and Read (Distribution (AmountOf * CHF)).are implemented such that read \. show == id for valid values (1 mutations)
  11450. 214.01 s [really-safe-money-gen] coverage (1431/1610): Money\.AmountOfSpec.CHF.distribute.produces valid amounts (17 mutations)
  11451. 214.18 s [really-safe-money-gen] coverage (1432/1610): Money\.AmountOfSpec.CHF.distribute.produces results that sum up to the greater whole (18 mutations)
  11452. 214.25 s [really-safe-money-gen] coverage (1433/1610): Money\.AmountOfSpec.CHF.distribute.Eq (Distribution (AmountOf * CHF)).(/=) \:\: (Distribution (AmountOf * CHF)) -> (Distribution (AmountOf * CHF)) -> Bool.is antireflexive for "valid (Distribution (AmountOf * CHF))"s (1 mutations)
  11453. 214.60 s [really-safe-money-gen] coverage (1434/1610): Money\.AmountOfSpec.CHF.distribute.Eq (Distribution (AmountOf * CHF)).(/=) \:\: (Distribution (AmountOf * CHF)) -> (Distribution (AmountOf * CHF)) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (Distribution (AmountOf * CHF))"s (1 mutations)
  11454. 214.61 s [really-safe-money-gen] coverage (1435/1610): Money\.AmountOfSpec.CHF.distribute.Eq (Distribution (AmountOf * CHF)).(==) \:\: (Distribution (AmountOf * CHF)) -> (Distribution (AmountOf * CHF)) -> Bool.is symmetric for "valid (Distribution (AmountOf * CHF))"s (1 mutations)
  11455. 214.91 s [really-safe-money-gen] coverage (1436/1610): Money\.AmountOfSpec.CHF.distribute.Eq (Distribution (AmountOf * CHF)).(==) \:\: (Distribution (AmountOf * CHF)) -> (Distribution (AmountOf * CHF)) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (Distribution (AmountOf * CHF))"s (1 mutations)
  11456. 215.07 s [really-safe-money-gen] coverage (1438/1610): Money\.AmountOfSpec.CHF.distribute.Eq (Distribution (AmountOf * CHF)).(==) \:\: (Distribution (AmountOf * CHF)) -> (Distribution (AmountOf * CHF)) -> Bool.is transitive for "valid (Distribution (AmountOf * CHF))"s (1 mutations)
  11457. 215.09 s [really-safe-money-gen] coverage (1439/1610): Money\.AmountOfSpec.CHF.add.is commutative (4 mutations)
  11458. 215.09 s [really-safe-money-gen] coverage (1437/1610): Money\.AmountOfSpec.CHF.distribute.Eq (Distribution (AmountOf * CHF)).(==) \:\: (Distribution (AmountOf * CHF)) -> (Distribution (AmountOf * CHF)) -> Bool.is reflexive for "valid (Distribution (AmountOf * CHF))"s (1 mutations)
  11459. 215.12 s [really-safe-money-gen] coverage (1440/1610): Money\.AmountOfSpec.CHF.add.has a left-identity\: zero (5 mutations)
  11460. 215.21 s [really-safe-money-gen] coverage (1441/1610): Money\.AmountOfSpec.CHF.add.is associative when both succeed (4 mutations)
  11461. 215.33 s [really-safe-money-gen] coverage (1443/1610): Money\.AmountOfSpec.CHF.add.matches what you would get with Integer, if nothing fails (4 mutations)
  11462. 215.35 s [really-safe-money-gen] coverage (1442/1610): Money\.AmountOfSpec.CHF.add.produces valid amounts (4 mutations)
  11463. 215.40 s [really-safe-money-gen] coverage (1444/1610): Money\.AmountOfSpec.CHF.add.has a right-identity\: zero (5 mutations)
  11464. 215.47 s [really-safe-money-gen] coverage (1387/1610): Money\.AmountOfSpec.CHF.Eq (AmountOf * CHF).(==) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is transitive for "valid (AmountOf * CHF)"s (0 mutations)
  11465. 215.52 s [really-safe-money-gen] coverage (1386/1610): Money\.AmountOfSpec.CHF.Eq (AmountOf * CHF).(==) \:\: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool.is reflexive for "valid (AmountOf * CHF)"s (0 mutations)
  11466. 215.69 s [really-safe-money-gen] coverage (1311/1610): Money\.AmountOfSpec.BTC.fromDouble.fails on -Infinity (3 mutations)
  11467. 215.73 s [really-safe-money-gen] coverage (1309/1610): Money\.AmountOfSpec.BTC.fromDouble.fails on -1 (3 mutations)
  11468. 215.77 s [really-safe-money-gen] coverage (1308/1610): Money\.AmountOfSpec.BTC.fromDouble.produces valid amounts (22 mutations)
  11469. 215.89 s [really-safe-money-gen] coverage (1312/1610): Money\.AmountOfSpec.BTC.fromDouble.fails on NaN (5 mutations)
  11470. 215.89 s [really-safe-money-gen] coverage (1314/1610): Money\.AmountOfSpec.BTC.USD.rate.produces valid amounts (6 mutations)
  11471. 215.90 s [really-safe-money-gen] coverage (1306/1610): Money\.AmountOfSpec.BTC.fromDouble.fails on +Infinity (7 mutations)
  11472. 216.19 s [really-safe-money-gen] coverage (1310/1610): Money\.AmountOfSpec.BTC.fromDouble.succeeds on 0 (22 mutations)
  11473. 216.24 s [really-safe-money-gen] coverage (1305/1610): Money\.AmountOfSpec.BTC.fromRational.roundtrips with toRational (13 mutations)
  11474. 216.40 s [really-safe-money-gen] coverage (1313/1610): Money\.AmountOfSpec.BTC.GenValid (AmountOf * BTC).genValid \:\: Gen (AmountOf * BTC).only generates valid '(AmountOf * BTC)'s (0 mutations)
  11475. 216.49 s [really-safe-money-gen] coverage (1304/1610): Money\.AmountOfSpec.BTC.fromRational.succeeds on 0 (13 mutations)
  11476. 216.50 s [really-safe-money-gen] coverage (1303/1610): Money\.AmountOfSpec.BTC.fromRational.fails on -Infinity (2 mutations)
  11477. 216.77 s [really-safe-money-gen] coverage (1452/1610): Money\.AmountSpec.format.formats 1 correctly with quantisation factor 10 (3 mutations)
  11478. 216.82 s [really-safe-money-gen] coverage (1307/1610): Money\.AmountOfSpec.BTC.fromDouble.succeeds on 1 (22 mutations)
  11479. 216.96 s [really-safe-money-gen] coverage (1219/1610): Money\.AmountOfSpec.INR.multiply.matches what you would get with Integer, if nothing fails (4 mutations)
  11480. 217.02 s [really-safe-money-gen] coverage (1218/1610): Money\.AmountOfSpec.INR.CHF.rate.produces valid amounts (6 mutations)
  11481. 217.47 s [really-safe-money-gen] coverage (1223/1610): Money\.AmountOfSpec.INR.multiply.is distributive with add when both succeed (8 mutations)
  11482. 217.48 s [really-safe-money-gen] coverage (1222/1610): Money\.AmountOfSpec.INR.multiply.has an identity\: 1 (4 mutations)
  11483. 217.71 s [really-safe-money-gen] coverage (1217/1610): Money\.AmountOfSpec.INR.CHF.convert.produces valid amounts (15 mutations)
  11484. 217.80 s [really-safe-money-gen] coverage (1225/1610): Money\.AmountOfSpec.INR.toMinimalQuantisations.produces valid Int64s (0 mutations)
  11485. 218.30 s [really-safe-money-gen] coverage (1458/1610): Money\.AmountSpec.fromRatio.fails on +Infinity (2 mutations)
  11486. 218.30 s [really-safe-money-gen] coverage (1457/1610): Money\.AmountSpec.fromRatio.fails on NaN (2 mutations)
  11487. 218.32 s [really-safe-money-gen] coverage (1456/1610): Money\.AmountSpec.fromRatio.succeeds on 1 (13 mutations)
  11488. 218.32 s [really-safe-money-gen] coverage (1459/1610): Money\.AmountSpec.fromRatio.succeeds on 77\.02 with quantisation factor 100 (13 mutations)
  11489. 218.36 s [really-safe-money-gen] coverage (1454/1610): Money\.AmountSpec.fromRatio.produces valid Amounts (13 mutations)
  11490. 218.42 s [really-safe-money-gen] coverage (1455/1610): Money\.AmountSpec.fromRatio.roundtrips with toRatio (13 mutations)
  11491. 218.42 s [really-safe-money-gen] coverage (1461/1610): Money\.AmountSpec.fromRatio.fails on 7\.123 with quantisation factor 10 (9 mutations)
  11492. 218.49 s [really-safe-money-gen] coverage (1453/1610): Money\.AmountSpec.format.produces valid strings (3 mutations)
  11493. 218.55 s [really-safe-money-gen] coverage (1462/1610): Money\.AmountSpec.distribute.correctly distributes 3 into 3 (6 mutations)
  11494. 218.63 s [really-safe-money-gen] coverage (1460/1610): Money\.AmountSpec.fromRatio.succeeds on 0 (13 mutations)
  11495. 218.68 s [really-safe-money-gen] coverage (1465/1610): Money\.AmountSpec.distribute.correctly distributes 10 into 4 (6 mutations)
  11496. 218.82 s [really-safe-money-gen] coverage (1467/1610): Money\.AmountSpec.distribute.correctly distributes 5 into 3 (6 mutations)
  11497. 218.85 s [really-safe-money-gen] coverage (1463/1610): Money\.AmountSpec.distribute.produces results that sum up to the greater whole (14 mutations)
  11498. 218.89 s [really-safe-money-gen] coverage (1466/1610): Money\.AmountSpec.distribute.GenValid (Distribution Amount).genValid \:\: Gen (Distribution Amount).only generates valid '(Distribution Amount)'s (8 mutations)
  11499. 219.25 s [really-safe-money-gen] coverage (1468/1610): Money\.AmountSpec.distribute.Eq (Distribution Amount).(==) \:\: (Distribution Amount) -> (Distribution Amount) -> Bool.is symmetric for "valid (Distribution Amount)"s (1 mutations)
  11500. 219.25 s [really-safe-money-gen] coverage (1469/1610): Money\.AmountSpec.distribute.Eq (Distribution Amount).(==) \:\: (Distribution Amount) -> (Distribution Amount) -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid (Distribution Amount)"s (1 mutations)
  11501. 219.50 s [really-safe-money-gen] coverage (1470/1610): Money\.AmountSpec.distribute.Eq (Distribution Amount).(==) \:\: (Distribution Amount) -> (Distribution Amount) -> Bool.is reflexive for "valid (Distribution Amount)"s (1 mutations)
  11502. 219.53 s [really-safe-money-gen] coverage (1472/1610): Money\.AmountSpec.distribute.Eq (Distribution Amount).(/=) \:\: (Distribution Amount) -> (Distribution Amount) -> Bool.is antireflexive for "valid (Distribution Amount)"s (1 mutations)
  11503. 219.61 s [really-safe-money-gen] coverage (1471/1610): Money\.AmountSpec.distribute.Eq (Distribution Amount).(==) \:\: (Distribution Amount) -> (Distribution Amount) -> Bool.is transitive for "valid (Distribution Amount)"s (1 mutations)
  11504. 219.81 s [really-safe-money-gen] coverage (1473/1610): Money\.AmountSpec.distribute.Eq (Distribution Amount).(/=) \:\: (Distribution Amount) -> (Distribution Amount) -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid (Distribution Amount)"s (1 mutations)
  11505. 219.94 s [really-safe-money-gen] coverage (1464/1610): Money\.AmountSpec.distribute.Show (Distribution Amount) and Read (Distribution Amount).are implemented such that read \. show == id for valid values (1 mutations)
  11506. 219.96 s [really-safe-money-gen] coverage (1474/1610): Money\.AmountSpec.distribute.produces valid amounts (13 mutations)
  11507. 220.31 s [really-safe-money-gen] coverage (1477/1610): Money\.AmountSpec.sum.fails to sum above maxBound (5 mutations)
  11508. 220.47 s [really-safe-money-gen] coverage (1478/1610): Money\.AmountSpec.sum.correctly sums [1,2,3] to 6 (5 mutations)
  11509. 220.64 s [really-safe-money-gen] coverage (1480/1610): Money\.AmountSpec.multiply.fails for 2 * maxbound (4 mutations)
  11510. 220.88 s [really-safe-money-gen] coverage (1479/1610): Money\.AmountSpec.multiply.matches what you would get with Integer, if nothing fails (4 mutations)
  11511. 221.15 s [really-safe-money-gen] coverage (1475/1610): Money\.AmountSpec.sum.produces valid amounts (5 mutations)
  11512. 221.30 s [really-safe-money-gen] coverage (1485/1610): Money\.AmountSpec.multiply.succeeds for 3 * 6 (4 mutations)
  11513. 221.31 s [really-safe-money-gen] coverage (1476/1610): Money\.AmountSpec.sum.matches what you would get with Integer, if nothing fails (5 mutations)
  11514. 221.31 s [really-safe-money-gen] coverage (1481/1610): Money\.AmountSpec.multiply.produces valid amounts (4 mutations)
  11515. 221.34 s [really-safe-money-gen] coverage (1482/1610): Money\.AmountSpec.multiply.is absorbed by 0 (5 mutations)
  11516. 221.43 s [really-safe-money-gen] coverage (1484/1610): Money\.AmountSpec.multiply.has an identity\: 1 (4 mutations)
  11517. 221.44 s [really-safe-money-gen] coverage (1487/1610): Money\.AmountSpec.fromDouble.fails on really large numbers (14 mutations)
  11518. 221.57 s [really-safe-money-gen] coverage (1489/1610): Money\.AmountSpec.fromDouble.succeeds on 77\.02 with quantisation factor 100 (22 mutations)
  11519. 221.66 s [really-safe-money-gen] coverage (1491/1610): Money\.AmountSpec.fromDouble.fails on really large numbers:1 (7 mutations)
  11520. 221.67 s [really-safe-money-gen] coverage (1483/1610): Money\.AmountSpec.multiply.is distributive with add when both succeed (8 mutations)
  11521. 221.74 s [really-safe-money-gen] coverage (1490/1610): Money\.AmountSpec.fromDouble.produces valid amounts (22 mutations)
  11522. 221.81 s [really-safe-money-gen] coverage (1486/1610): Money\.AmountSpec.Show Amount and Read Amount.are implemented such that read \. show == id for valid values (1 mutations)
  11523. 221.84 s [really-safe-money-gen] coverage (1492/1610): Money\.AmountSpec.fromDouble.fails on NaN (5 mutations)
  11524. 221.86 s [really-safe-money-gen] coverage (1488/1610): Money\.AmountSpec.fromDouble.roundtrips with toDouble, back to double (22 mutations)
  11525. 221.90 s [really-safe-money-gen] coverage (1494/1610): Money\.AmountSpec.fromDouble.fails on 7\.123 with quantisation factor 10 (18 mutations)
  11526. 221.92 s [really-safe-money-gen] coverage (1493/1610): Money\.AmountSpec.fromDouble.fails on -1 (3 mutations)
  11527. 222.17 s [really-safe-money-gen] coverage (1496/1610): Money\.AmountSpec.fromDouble.fails on +Infinity (7 mutations)
  11528. 222.26 s [really-safe-money-gen] coverage (1495/1610): Money\.AmountSpec.fromDouble.fails on -Infinity (3 mutations)
  11529. 222.62 s [really-safe-money-gen] coverage (1499/1610): Money\.AmountSpec.Ord Amount.(<=) \:\: Amount -> Amount -> Bool.is reflexive for "valid Amount"'s (0 mutations)
  11530. 222.68 s [really-safe-money-gen] coverage (1497/1610): Money\.AmountSpec.fromDouble.succeeds on 1 (22 mutations)
  11531. 222.76 s [really-safe-money-gen] coverage (1498/1610): Money\.AmountSpec.fromDouble.succeeds on 0 (22 mutations)
  11532. 222.87 s [really-safe-money-gen] coverage (1446/1610): Money\.AmountSpec.fraction.Correctly fractions 101 with 1 % 100 (7 mutations)
  11533. 222.88 s [really-safe-money-gen] coverage (1500/1610): Money\.AmountSpec.Ord Amount.(<=) \:\: Amount -> Amount -> Bool.is equivalent to (\\a b -> compare a b /= GT) for "valid Amount"'s (0 mutations)
  11534. 223.33 s [really-safe-money-gen] coverage (1376/1610): Money\.AmountOfSpec.CHF.fromRational.fails on +Infinity (2 mutations)
  11535. 223.35 s [really-safe-money-gen] coverage (1450/1610): Money\.AmountSpec.fraction.Produces a result that has been rounded in the right direction when using RoundUp (4 mutations)
  11536. 223.39 s [really-safe-money-gen] coverage (1451/1610): Money\.AmountSpec.format.formats 1 correctly with quantisation factor 1 (3 mutations)
  11537. 223.75 s [really-safe-money-gen] coverage (1245/1610): Money\.AmountOfSpec.INR.format.produces valid strings (3 mutations)
  11538. 223.83 s [really-safe-money-gen] coverage (1447/1610): Money\.AmountSpec.fraction.Produces a result that can be multiplied back (10 mutations)
  11539. 223.99 s [really-safe-money-gen] coverage (1449/1610): Money\.AmountSpec.fraction.Correctly fractions 100 with 1 % 100 (7 mutations)
  11540. 224.20 s [really-safe-money-gen] coverage (1300/1610): Money\.AmountOfSpec.BTC.fromRational.fails on -1 (5 mutations)
  11541. 224.30 s [really-safe-money-gen] coverage (1501/1610): Money\.AmountSpec.Ord Amount.(<=) \:\: Amount -> Amount -> Bool.is antisymmetric for "valid Amount"'s (0 mutations)
  11542. 224.32 s [really-safe-money-gen] coverage (1505/1610): Money\.AmountSpec.Ord Amount.(>=) \:\: Amount -> Amount -> Bool.is antisymmetric for "valid Amount"'s (0 mutations)
  11543. 224.49 s [really-safe-money-gen] coverage (1504/1610): Money\.AmountSpec.Ord Amount.(>=) \:\: Amount -> Amount -> Bool.is equivalent to (\\a b -> compare a b /= LT) for "valid Amount"'s (0 mutations)
  11544. 224.52 s [really-safe-money-gen] coverage (1445/1610): Money\.AmountSpec.fraction.Produces a result that has been rounded in the right direction when using RoundDown (4 mutations)
  11545. 224.56 s [really-safe-money-gen] coverage (1503/1610): Money\.AmountSpec.Ord Amount.(>=) \:\: Amount -> Amount -> Bool.is transitive for "valid Amount"'s (0 mutations)
  11546. 224.67 s [really-safe-money-gen] coverage (1510/1610): Money\.AmountSpec.Ord Amount.(<) \:\: Amount -> Amount -> Bool.is equivalent to (\\a b -> compare a b == LT) for "valid Amount"'s (0 mutations)
  11547. 224.75 s [really-safe-money-gen] coverage (1502/1610): Money\.AmountSpec.Ord Amount.(<=) \:\: Amount -> Amount -> Bool.is transitive for "valid Amount"'s (0 mutations)
  11548. 224.80 s [really-safe-money-gen] coverage (1448/1610): Money\.AmountSpec.fraction.produces valid amounts (10 mutations)
  11549. 224.90 s [really-safe-money-gen] coverage (1511/1610): Money\.AmountSpec.Ord Amount."min \:\: (Amount -> Amount -> Amount)".is equivalent to (\\a b -> if a <= b then a else b) for "valid Amount"'s (0 mutations)
  11550. 224.92 s [really-safe-money-gen] coverage (1513/1610): Money\.AmountSpec.Ord Amount.(>) \:\: Amount -> Amount -> Bool.is antireflexive for "valid Amount"'s (0 mutations)
  11551. 224.96 s [really-safe-money-gen] coverage (1514/1610): Money\.AmountSpec.Ord Amount.(>) \:\: Amount -> Amount -> Bool.is transitive for "valid Amount"'s (0 mutations)
  11552. 225.02 s [really-safe-money-gen] coverage (1512/1610): Money\.AmountSpec.Ord Amount.(>) \:\: Amount -> Amount -> Bool.is equivalent to (\\a b -> compare a b == GT) for "valid Amount"'s (0 mutations)
  11553. 225.04 s [really-safe-money-gen] coverage (1516/1610): Money\.AmountSpec.toRational.produces an invalid Rational with quantisation factor 0 (1 mutations)
  11554. 225.17 s [really-safe-money-gen] coverage (1515/1610): Money\.AmountSpec.toRational.produces valid Rationals when the quantisation factor is nonzero (0 mutations)
  11555. 225.55 s [really-safe-money-gen] coverage (1518/1610): Money\.AmountSpec.fromRational.succeeds on 0 (13 mutations)
  11556. 225.64 s [really-safe-money-gen] coverage (1519/1610): Money\.AmountSpec.fromRational.fails on really large numbers (13 mutations)
  11557. 225.67 s [really-safe-money-gen] coverage (1517/1610): Money\.AmountSpec.fromRational.roundtrips with toRational (13 mutations)
  11558. 225.82 s [really-safe-money-gen] coverage (1522/1610): Money\.AmountSpec.fromRational.succeeds on 77\.02 with quantisation factor 100 (13 mutations)
  11559. 225.88 s [really-safe-money-gen] coverage (1520/1610): Money\.AmountSpec.fromRational.fails on -Infinity (2 mutations)
  11560. 225.95 s [really-safe-money-gen] coverage (1523/1610): Money\.AmountSpec.fromRational.fails on 7\.123 with quantisation factor 10 (9 mutations)
  11561. 226.05 s [really-safe-money-gen] coverage (1521/1610): Money\.AmountSpec.fromRational.succeeds on 1 (13 mutations)
  11562. 226.47 s [really-safe-money-gen] coverage (1526/1610): Money\.AmountSpec.fromRational.fails on NaN (2 mutations)
  11563. 226.53 s [really-safe-money-gen] coverage (1525/1610): Money\.AmountSpec.fromRational.fails on -1 (5 mutations)
  11564. 226.80 s [really-safe-money-gen] coverage (1527/1610): Money\.AmountSpec.fromRational.produces valid Amounts (13 mutations)
  11565. 226.95 s [really-safe-money-gen] coverage (1524/1610): Money\.AmountSpec.fromRational.fails on +Infinity (2 mutations)
  11566. 226.95 s [really-safe-money-gen] coverage (1528/1610): Money\.AmountSpec.add.is associative when both succeed (4 mutations)
  11567. 227.12 s [really-safe-money-gen] coverage (1529/1610): Money\.AmountSpec.add.is commutative (4 mutations)
  11568. 227.22 s [really-safe-money-gen] coverage (1530/1610): Money\.AmountSpec.add.fails for maxBound + 1 (4 mutations)
  11569. 227.44 s [really-safe-money-gen] coverage (1532/1610): Money\.AmountSpec.add.has a right-identity\: zero (5 mutations)
  11570. 227.45 s [really-safe-money-gen] coverage (1531/1610): Money\.AmountSpec.add.matches what you would get with Integer, if nothing fails (4 mutations)
  11571. 227.49 s [really-safe-money-gen] coverage (1534/1610): Money\.AmountSpec.add.fails for maxBound + maxBound (4 mutations)
  11572. 227.60 s [really-safe-money-gen] coverage (1533/1610): Money\.AmountSpec.add.produces valid amounts (4 mutations)
  11573. 227.69 s [really-safe-money-gen] coverage (1535/1610): Money\.AmountSpec.add.has a left-identity\: zero (5 mutations)
  11574. 227.88 s [really-safe-money-gen] coverage (1536/1610): Money\.AmountSpec.toMinimalQuantisations.roundtrips with fromMinimalQuantisations (0 mutations)
  11575. 227.91 s [really-safe-money-gen] coverage (1537/1610): Money\.AmountSpec.toMinimalQuantisations.produces valid Int64s (0 mutations)
  11576. 228.02 s [really-safe-money-gen] coverage (1538/1610): Money\.AmountSpec.Eq Amount.(/=) \:\: Amount -> Amount -> Bool.is antireflexive for "valid Amount"s (0 mutations)
  11577. 228.08 s [really-safe-money-gen] coverage (1509/1610): Money\.AmountSpec.Ord Amount.(<) \:\: Amount -> Amount -> Bool.is transitive for "valid Amount"'s (0 mutations)
  11578. 228.10 s [really-safe-money-gen] coverage (1539/1610): Money\.AmountSpec.Eq Amount.(/=) \:\: Amount -> Amount -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid Amount"s (0 mutations)
  11579. 228.10 s [really-safe-money-gen] coverage (1507/1610): Money\.AmountSpec.Ord Amount."max \:\: (Amount -> Amount -> Amount)".is equivalent to (\\a b -> if a >= b then a else b) for "valid Amount"'s (0 mutations)
  11580. 228.14 s [really-safe-money-gen] coverage (1508/1610): Money\.AmountSpec.Ord Amount.(<) \:\: Amount -> Amount -> Bool.is antireflexive for "valid Amount"'s (0 mutations)
  11581. 228.14 s [really-safe-money-gen] coverage (1540/1610): Money\.AmountSpec.Eq Amount.(==) \:\: Amount -> Amount -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid Amount"s (0 mutations)
  11582. 228.35 s [really-safe-money-gen] coverage (1506/1610): Money\.AmountSpec.Ord Amount.(>=) \:\: Amount -> Amount -> Bool.is reflexive for "valid Amount"'s (0 mutations)
  11583. 228.43 s [really-safe-money-gen] coverage (1546/1610): Money\.AmountSpec.toDouble.succeeds on 7702 with quantisation factor 100 (0 mutations)
  11584. 228.59 s [really-safe-money-gen] coverage (1547/1610): Money\.AmountSpec.toDouble.produces an infinite Double with quantisation factor 0 (0 mutations)
  11585. 228.61 s [really-safe-money-gen] coverage (1561/1610): Money\.AmountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100000000} into DecimalLiteral (Just True) 500 8 (27 mutations)
  11586. 228.62 s [really-safe-money-gen] coverage (1545/1610): Money\.AmountSpec.toDouble.produces valid Doubles (0 mutations)
  11587. 228.78 s [really-safe-money-gen] coverage (1560/1610): Money\.AmountSpec.DecimalLiteral.can turn DecimalLiteral (Just True) 600 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 20} (17 mutations)
  11588. 228.86 s [really-safe-money-gen] coverage (1550/1610): Money\.AmountSpec.rate.computes this USD to CHF rate correctly (6 mutations)
  11589. 229.21 s [really-safe-money-gen] coverage (1557/1610): Money\.AmountSpec.subtract.fails for 0 - maxBound (5 mutations)
  11590. 229.50 s [really-safe-money-gen] coverage (1551/1610): Money\.AmountSpec.zero.is valid (1 mutations)
  11591. 229.62 s [really-safe-money-gen] coverage (1559/1610): Money\.AmountSpec.subtract.matches what you would get with Integer, if nothing fails (5 mutations)
  11592. 229.65 s [really-safe-money-gen] coverage (1558/1610): Money\.AmountSpec.subtract.fails for 0 - 1 (5 mutations)
  11593. 230.11 s [really-safe-money-gen] coverage (1556/1610): Money\.AmountSpec.toRatio.produces valid Rationals when the quantisation factor is nonzero (0 mutations)
  11594. 230.15 s [really-safe-money-gen] coverage (1553/1610): Money\.AmountSpec.convert.converts this USD to CHF correctly (13 mutations)
  11595. 230.37 s [really-safe-money-gen] coverage (1563/1610): Money\.AmountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 20} into DecimalLiteral (Just True) 600 2 (25 mutations)
  11596. 230.50 s [really-safe-money-gen] coverage (1552/1610): Money\.AmountSpec.convert.succeeds in converting 1\:1 without rounding if the quantisation factor is the same (15 mutations)
  11597. 230.65 s [really-safe-money-gen] coverage (1585/1610): Money\.AmountSpec.DecimalLiteral.can turn DecimalLiteral (Just True) 1 0 into decimalLiteral QuantisationFactor {unQuantisationFactor = 1} (17 mutations)
  11598. 230.67 s [really-safe-money-gen] coverage (1584/1610): Money\.AmountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 20} into DecimalLiteral (Just True) 20 2 (27 mutations)
  11599. 230.84 s [really-safe-money-gen] coverage (1586/1610): Money\.AmountSpec.DecimalLiteral.can turn DecimalLiteral (Just True) 10 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 20} (17 mutations)
  11600. 231.06 s [really-safe-money-gen] coverage (1587/1610): Money\.AmountSpec.fromMinimalQuantisations.produces valid amounts (0 mutations)
  11601. 231.37 s [really-safe-money-gen] coverage (1588/1610): Money\.CurrencySpec.Eq Currency.(/=) \:\: Currency -> Currency -> Bool.is antireflexive for "valid Currency"s (1 mutations)
  11602. 231.44 s [really-safe-money-gen] coverage (1594/1610): Money\.CurrencySpec.Show Currency and Read Currency.are implemented such that read \. show == id for valid values (1 mutations)
  11603. 231.49 s [really-safe-money-gen] coverage (1589/1610): Money\.CurrencySpec.Eq Currency.(/=) \:\: Currency -> Currency -> Bool.is equivalent to (\\a b -> not $ a == b) for "valid Currency"s (1 mutations)
  11604. 231.51 s [really-safe-money-gen] coverage (1593/1610): Money\.CurrencySpec.Eq Currency.(==) \:\: Currency -> Currency -> Bool.is reflexive for "valid Currency"s (1 mutations)
  11605. 231.54 s [really-safe-money-gen] coverage (1591/1610): Money\.CurrencySpec.Eq Currency.(==) \:\: Currency -> Currency -> Bool.is symmetric for "valid Currency"s (1 mutations)
  11606. 231.55 s [really-safe-money-gen] coverage (1592/1610): Money\.CurrencySpec.Eq Currency.(==) \:\: Currency -> Currency -> Bool.is transitive for "valid Currency"s (1 mutations)
  11607. 231.57 s [really-safe-money-gen] coverage (1590/1610): Money\.CurrencySpec.Eq Currency.(==) \:\: Currency -> Currency -> Bool.is equivalent to (\\a b -> not $ a /= b) for "valid Currency"s (1 mutations)
  11608. 231.60 s [really-safe-money-gen] coverage (1554/1610): Money\.AmountSpec.convert.produces valid amounts (15 mutations)
  11609. 231.96 s [really-safe-money-gen] coverage (1595/1610): Money\.CurrencySpec.Ord Currency."max \:\: (Currency -> Currency -> Currency)".is equivalent to (\\a b -> if a >= b then a else b) for "valid Currency"'s (1 mutations)
  11610. 232.03 s [really-safe-money-gen] coverage (1598/1610): Money\.CurrencySpec.Ord Currency.(<=) \:\: Currency -> Currency -> Bool.is antisymmetric for "valid Currency"'s (1 mutations)
  11611. 232.08 s [really-safe-money-gen] coverage (1597/1610): Money\.CurrencySpec.Ord Currency.(<=) \:\: Currency -> Currency -> Bool.is transitive for "valid Currency"'s (1 mutations)
  11612. 232.14 s [really-safe-money-gen] coverage (1599/1610): Money\.CurrencySpec.Ord Currency.(<=) \:\: Currency -> Currency -> Bool.is equivalent to (\\a b -> compare a b /= GT) for "valid Currency"'s (1 mutations)
  11613. 232.22 s [really-safe-money-gen] coverage (1596/1610): Money\.CurrencySpec.Ord Currency."min \:\: (Currency -> Currency -> Currency)".is equivalent to (\\a b -> if a <= b then a else b) for "valid Currency"'s (1 mutations)
  11614. 232.28 s [really-safe-money-gen] coverage (1600/1610): Money\.CurrencySpec.Ord Currency.(<=) \:\: Currency -> Currency -> Bool.is reflexive for "valid Currency"'s (1 mutations)
  11615. 232.55 s [really-safe-money-gen] coverage (1601/1610): Money\.CurrencySpec.Ord Currency.(>) \:\: Currency -> Currency -> Bool.is transitive for "valid Currency"'s (1 mutations)
  11616. 232.84 s [really-safe-money-gen] coverage (1602/1610): Money\.CurrencySpec.Ord Currency.(>) \:\: Currency -> Currency -> Bool.is equivalent to (\\a b -> compare a b == GT) for "valid Currency"'s (1 mutations)
  11617. 232.88 s [really-safe-money-gen] coverage (1603/1610): Money\.CurrencySpec.Ord Currency.(>) \:\: Currency -> Currency -> Bool.is antireflexive for "valid Currency"'s (1 mutations)
  11618. 232.92 s [really-safe-money-gen] coverage (1604/1610): Money\.CurrencySpec.Ord Currency.(>=) \:\: Currency -> Currency -> Bool.is transitive for "valid Currency"'s (1 mutations)
  11619. 233.28 s [really-safe-money-gen] coverage (1605/1610): Money\.CurrencySpec.Ord Currency.(>=) \:\: Currency -> Currency -> Bool.is antisymmetric for "valid Currency"'s (1 mutations)
  11620. 233.28 s [really-safe-money-gen] coverage (1606/1610): Money\.CurrencySpec.Ord Currency.(>=) \:\: Currency -> Currency -> Bool.is reflexive for "valid Currency"'s (1 mutations)
  11621. 233.55 s [really-safe-money-gen] coverage (1581/1610): Money\.AmountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100} into DecimalLiteral (Just True) 4 2 (25 mutations)
  11622. 233.60 s [really-safe-money-gen] coverage (1607/1610): Money\.CurrencySpec.Ord Currency.(>=) \:\: Currency -> Currency -> Bool.is equivalent to (\\a b -> compare a b /= LT) for "valid Currency"'s (1 mutations)
  11623. 233.64 s [really-safe-money-gen] coverage (1608/1610): Money\.CurrencySpec.Ord Currency.(<) \:\: Currency -> Currency -> Bool.is equivalent to (\\a b -> compare a b == LT) for "valid Currency"'s (1 mutations)
  11624. 233.87 s [really-safe-money-gen] coverage (1609/1610): Money\.CurrencySpec.Ord Currency.(<) \:\: Currency -> Currency -> Bool.is transitive for "valid Currency"'s (1 mutations)
  11625. 233.91 s [really-safe-money-gen] coverage (1610/1610): Money\.CurrencySpec.Ord Currency.(<) \:\: Currency -> Currency -> Bool.is antireflexive for "valid Currency"'s (1 mutations)
  11626. 233.92 s [really-safe-money-gen] coverage (1567/1610): Money\.AmountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 20} into DecimalLiteral (Just True) 10 2 (27 mutations)
  11627. 234.19 s [really-safe-money-gen] coverage (1568/1610): Money\.AmountSpec.DecimalLiteral.can turn DecimalLiteral (Just True) 500 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 20} (17 mutations)
  11628. 234.21 s [really-safe-money-gen] coverage (1566/1610): Money\.AmountSpec.DecimalLiteral.can turn DecimalLiteral (Just True) 200 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100} (17 mutations)
  11629. 234.22 s [really-safe-money-gen] coverage (1570/1610): Money\.AmountSpec.DecimalLiteral.Amount\.fromDecimalLiteral.fails on this amount that is too precise (13 mutations)
  11630. 234.29 s [really-safe-money-gen] coverage (1562/1610): Money\.AmountSpec.DecimalLiteral.can turn DecimalLiteral (Just True) 2 0 into decimalLiteral QuantisationFactor {unQuantisationFactor = 1} (17 mutations)
  11631. 234.30 s [really-safe-money-gen] coverage (1573/1610): Money\.AmountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 1} into DecimalLiteral (Just True) 1 0 (23 mutations)
  11632. 234.30 s [really-safe-money-gen] coverage (1571/1610): Money\.AmountSpec.DecimalLiteral.Amount\.fromDecimalLiteral.fails on this amount that is too precise:1 (13 mutations)
  11633. 234.35 s [really-safe-money-gen] coverage (1572/1610): Money\.AmountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 1} into DecimalLiteral (Just True) 2 0 (23 mutations)
  11634. 234.55 s [really-safe-money-gen] coverage (1564/1610): Money\.AmountSpec.DecimalLiteral.can turn DecimalLiteral (Just True) 20 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 20} (17 mutations)
  11635. 234.59 s [really-safe-money-gen] coverage (1580/1610): Money\.AmountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100} into DecimalLiteral (Just True) 100 2 (25 mutations)
  11636. 234.59 s [really-safe-money-gen] coverage (1579/1610): Money\.AmountSpec.DecimalLiteral.can turn DecimalLiteral (Just True) 4 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100} (17 mutations)
  11637. 234.60 s [really-safe-money-gen] coverage (1569/1610): Money\.AmountSpec.DecimalLiteral.Amount\.fromDecimalLiteral.produces valid factors (17 mutations)
  11638. 234.65 s [really-safe-money-gen] coverage (1576/1610): Money\.AmountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 20} into DecimalLiteral (Just True) 500 2 (25 mutations)
  11639. 234.66 s [really-safe-money-gen] coverage (1577/1610): Money\.AmountSpec.DecimalLiteral.can turn DecimalLiteral (Just True) 3 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100} (17 mutations)
  11640. 234.74 s [really-safe-money-gen] coverage (1575/1610): Money\.AmountSpec.DecimalLiteral.can turn DecimalLiteral (Just True) 100 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100} (17 mutations)
  11641. 234.77 s [really-safe-money-gen] coverage (1578/1610): Money\.AmountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100} into DecimalLiteral (Just True) 200 2 (25 mutations)
  11642. 234.93 s [really-safe-money-gen] coverage (1574/1610): Money\.AmountSpec.DecimalLiteral.can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100} into DecimalLiteral (Just True) 3 2 (25 mutations)
  11643. 234.98 s [really-safe-money-gen] coverage (1555/1610): Money\.AmountSpec.toRatio.produces an invalid Rational with quantisation factor 0 (1 mutations)
  11644. 235.04 s [really-safe-money-gen] coverage (1543/1610): Money\.AmountSpec.Eq Amount.(==) \:\: Amount -> Amount -> Bool.is symmetric for "valid Amount"s (0 mutations)
  11645. 235.11 s [really-safe-money-gen] coverage (1544/1610): Money\.AmountSpec.GenValid Amount.genValid \:\: Gen Amount.only generates valid 'Amount's (0 mutations)
  11646. 235.12 s [really-safe-money-gen] coverage (1565/1610): Money\.AmountSpec.DecimalLiteral.can turn DecimalLiteral (Just True) 500 8 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100000000} (17 mutations)
  11647. 235.13 s [really-safe-money-gen] coverage (1542/1610): Money\.AmountSpec.Eq Amount.(==) \:\: Amount -> Amount -> Bool.is reflexive for "valid Amount"s (0 mutations)
  11648. 235.14 s [really-safe-money-gen] coverage (1548/1610): Money\.AmountSpec.rate.produces valid conversion rates (6 mutations)
  11649. 235.17 s [really-safe-money-gen] coverage (1541/1610): Money\.AmountSpec.Eq Amount.(==) \:\: Amount -> Amount -> Bool.is transitive for "valid Amount"s (0 mutations)
  11650. 235.37 s [really-safe-money-gen] coverage (1549/1610): Money\.AmountSpec.rate.computes a rate that can be used to do a conversion without rounding (14 mutations)
  11651. 244.83 s [really-safe-money-gen] coverage (1582/1610): Money\.AmountSpec.DecimalLiteral.Amount\.toDecimalLiteral.produces valid decimal literals (29 mutations)
  11652. 248.79 s [really-safe-money-gen] coverage (1583/1610): Money\.AmountSpec.DecimalLiteral.Amount\.toDecimalLiteral.roundtrips with Amount\.fromDecimalLiteral (45 mutations)
  11653. 248.93 s [really-safe-money-gen] mutation-nix: running mutations
  11654. 250.71 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
  11655. 250.73 s [really-safe-money-gen] @@ -171,10 +171,10 @@
  11656. 250.73 s [really-safe-money-gen] fmap
  11657. 250.73 s [really-safe-money-gen] ( ( \theoreticalResult ->
  11658. 250.73 s [really-safe-money-gen] let rounder :: Rational -> Integer
  11659. 250.73 s [really-safe-money-gen] - rounder = case r of
  11660. 250.73 s [really-safe-money-gen] - RoundUp -> ceiling
  11661. 250.73 s [really-safe-money-gen] - RoundDown -> floor
  11662. 250.73 s [really-safe-money-gen] - RoundNearest -> round
  11663. 250.73 s [really-safe-money-gen] + rounder = case r of
  11664. 250.73 s [really-safe-money-gen] + RoundUp -> ceiling
  11665. 250.73 s [really-safe-money-gen] + RoundDown -> floor
  11666. 250.73 s [really-safe-money-gen] + RoundNearest -> round
  11667. 250.73 s [really-safe-money-gen] roundedResult :: Integer
  11668. 250.73 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  11669. 250.73 s [really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  11670. 250.73 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
  11671. 250.73 s [really-safe-money-gen] @@ -171,10 +171,10 @@
  11672. 250.73 s [really-safe-money-gen] fmap
  11673. 250.73 s [really-safe-money-gen] ( ( \theoreticalResult ->
  11674. 250.73 s [really-safe-money-gen] let rounder :: Rational -> Integer
  11675. 250.73 s [really-safe-money-gen] - rounder = case r of
  11676. 250.73 s [really-safe-money-gen] - RoundUp -> ceiling
  11677. 250.73 s [really-safe-money-gen] - RoundDown -> floor
  11678. 250.73 s [really-safe-money-gen] - RoundNearest -> round
  11679. 250.73 s [really-safe-money-gen] + rounder = case r of
  11680. 250.73 s [really-safe-money-gen] + RoundUp -> ceiling
  11681. 250.73 s [really-safe-money-gen] + RoundDown -> floor
  11682. 250.73 s [really-safe-money-gen] + RoundNearest -> round
  11683. 250.73 s [really-safe-money-gen] roundedResult :: Integer
  11684. 250.73 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  11685. 250.73 s [really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  11686. 250.73 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:134:12-29
  11687. 250.73 s [really-safe-money-gen] @@ -131,7 +131,7 @@
  11688. 250.73 s [really-safe-money-gen] Just a -> do
  11689. 250.74 s [really-safe-money-gen] r <- Account.subtract a account
  11690. 250.74 s [really-safe-money-gen] Just $
  11691. 250.74 s [really-safe-money-gen] - if r == Account.zero
  11692. 250.74 s [really-safe-money-gen] + if False
  11693. 250.74 s [really-safe-money-gen] then M.delete currency m
  11694. 250.74 s [really-safe-money-gen] else M.insert currency r m
  11695. 250.74 s [really-safe-money-gen]
  11696. 250.74 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
  11697. 250.74 s [really-safe-money-gen] @@ -171,10 +171,10 @@
  11698. 250.74 s [really-safe-money-gen] fmap
  11699. 250.74 s [really-safe-money-gen] ( ( \theoreticalResult ->
  11700. 250.74 s [really-safe-money-gen] let rounder :: Rational -> Integer
  11701. 250.74 s [really-safe-money-gen] - rounder = case r of
  11702. 250.74 s [really-safe-money-gen] - RoundUp -> ceiling
  11703. 250.74 s [really-safe-money-gen] - RoundDown -> floor
  11704. 250.74 s [really-safe-money-gen] - RoundNearest -> round
  11705. 250.74 s [really-safe-money-gen] + rounder = case r of
  11706. 250.74 s [really-safe-money-gen] + RoundUp -> ceiling
  11707. 250.74 s [really-safe-money-gen] + RoundDown -> floor
  11708. 250.74 s [really-safe-money-gen] + RoundNearest -> round
  11709. 250.74 s [really-safe-money-gen] roundedResult :: Integer
  11710. 250.74 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  11711. 250.74 s [really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  11712. 250.74 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
  11713. 250.74 s [really-safe-money-gen] @@ -177,10 +177,10 @@
  11714. 250.74 s [really-safe-money-gen] RoundNearest -> round
  11715. 250.74 s [really-safe-money-gen] roundedResult :: Integer
  11716. 250.74 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  11717. 250.74 s [really-safe-money-gen] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  11718. 250.74 s [really-safe-money-gen] - LT -> RoundedDown
  11719. 250.74 s [really-safe-money-gen] - EQ -> DidNotRound
  11720. 250.74 s [really-safe-money-gen] - GT -> RoundedUp
  11721. 250.74 s [really-safe-money-gen] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  11722. 250.74 s [really-safe-money-gen] + LT -> RoundedDown
  11723. 250.74 s [really-safe-money-gen] + EQ -> DidNotRound
  11724. 250.74 s [really-safe-money-gen] + GT -> RoundedUp
  11725. 250.74 s [really-safe-money-gen] in (Account.fromMinimalQuantisations roundedResult, rounded)
  11726. 250.74 s [really-safe-money-gen] )
  11727. 250.74 s [really-safe-money-gen] . Prelude.sum
  11728. 250.74 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
  11729. 250.74 s [really-safe-money-gen] @@ -177,10 +177,10 @@
  11730. 250.74 s [really-safe-money-gen] RoundNearest -> round
  11731. 250.74 s [really-safe-money-gen] roundedResult :: Integer
  11732. 250.74 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  11733. 250.74 s [really-safe-money-gen] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  11734. 250.74 s [really-safe-money-gen] - LT -> RoundedDown
  11735. 250.74 s [really-safe-money-gen] - EQ -> DidNotRound
  11736. 250.74 s [really-safe-money-gen] - GT -> RoundedUp
  11737. 250.74 s [really-safe-money-gen] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  11738. 250.74 s [really-safe-money-gen] + LT -> RoundedDown
  11739. 250.74 s [really-safe-money-gen] + EQ -> DidNotRound
  11740. 250.74 s [really-safe-money-gen] + GT -> RoundedUp
  11741. 250.74 s [really-safe-money-gen] in (Account.fromMinimalQuantisations roundedResult, rounded)
  11742. 250.74 s [really-safe-money-gen] )
  11743. 250.74 s [really-safe-money-gen] . Prelude.sum
  11744. 250.74 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:129:23-37
  11745. 250.74 s [really-safe-money-gen] @@ -126,14 +126,14 @@
  11746. 250.74 s [really-safe-money-gen] subtractAccount m _ (Positive (Amount 0)) = Just m
  11747. 250.74 s [really-safe-money-gen] subtractAccount m _ (Negative (Amount 0)) = Just m
  11748. 250.74 s [really-safe-money-gen] subtractAccount (MultiAccount m) currency account =
  11749. 250.74 s [really-safe-money-gen] - fmap MultiAccount $ case M.lookup currency m of
  11750. 250.74 s [really-safe-money-gen] - Nothing -> Just $ M.insert currency (Account.negate account) m
  11751. 250.74 s [really-safe-money-gen] - Just a -> do
  11752. 250.74 s [really-safe-money-gen] - r <- Account.subtract a account
  11753. 250.74 s [really-safe-money-gen] - Just $
  11754. 250.74 s [really-safe-money-gen] - if r == Account.zero
  11755. 250.74 s [really-safe-money-gen] - then M.delete currency m
  11756. 250.74 s [really-safe-money-gen] - else M.insert currency r m
  11757. 250.74 s [really-safe-money-gen] + fmap MultiAccount $ case M.lookup currency m of
  11758. 250.74 s [really-safe-money-gen] + Nothing -> Just $ M.insert currency (Account.negate account) m
  11759. 250.74 s [really-safe-money-gen] + Just a -> do
  11760. 250.74 s [really-safe-money-gen] + r <- Account.subtract a account
  11761. 250.74 s [really-safe-money-gen] + Just $
  11762. 250.74 s [really-safe-money-gen] + if r == Account.zero
  11763. 250.74 s [really-safe-money-gen] + then M.delete currency m
  11764. 250.74 s [really-safe-money-gen] + else M.insert currency r m
  11765. 250.74 s [really-safe-money-gen]
  11766. 250.74 s [really-safe-money-gen] -- | Try to convert every account to one currency.
  11767. 250.74 s [really-safe-money-gen] --
  11768. 250.74 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
  11769. 250.75 s [really-safe-money-gen] @@ -177,10 +177,10 @@
  11770. 250.75 s [really-safe-money-gen] RoundNearest -> round
  11771. 250.75 s [really-safe-money-gen] roundedResult :: Integer
  11772. 250.75 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  11773. 250.75 s [really-safe-money-gen] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  11774. 250.75 s [really-safe-money-gen] - LT -> RoundedDown
  11775. 250.75 s [really-safe-money-gen] - EQ -> DidNotRound
  11776. 250.75 s [really-safe-money-gen] - GT -> RoundedUp
  11777. 250.75 s [really-safe-money-gen] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  11778. 250.75 s [really-safe-money-gen] + LT -> RoundedDown
  11779. 250.75 s [really-safe-money-gen] + EQ -> DidNotRound
  11780. 250.75 s [really-safe-money-gen] + GT -> RoundedUp
  11781. 250.75 s [really-safe-money-gen] in (Account.fromMinimalQuantisations roundedResult, rounded)
  11782. 250.75 s [really-safe-money-gen] )
  11783. 250.75 s [really-safe-money-gen] . Prelude.sum
  11784. 250.75 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:134:12-29
  11785. 250.75 s [really-safe-money-gen] @@ -131,7 +131,7 @@
  11786. 250.75 s [really-safe-money-gen] Just a -> do
  11787. 250.75 s [really-safe-money-gen] r <- Account.subtract a account
  11788. 250.75 s [really-safe-money-gen] Just $
  11789. 250.75 s [really-safe-money-gen] - if r == Account.zero
  11790. 250.75 s [really-safe-money-gen] + if True
  11791. 250.75 s [really-safe-money-gen] then M.delete currency m
  11792. 250.75 s [really-safe-money-gen] else M.insert currency r m
  11793. 250.75 s [really-safe-money-gen]
  11794. 250.75 s [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAccount.hs:134:12-29
  11795. 250.75 s [really-safe-money-gen] @@ -131,7 +131,7 @@
  11796. 250.75 s [really-safe-money-gen] Just a -> do
  11797. 250.75 s [really-safe-money-gen] r <- Account.subtract a account
  11798. 250.75 s [really-safe-money-gen] Just $
  11799. 250.75 s [really-safe-money-gen] - if r == Account.zero
  11800. 250.75 s [really-safe-money-gen] + if not (r == Account.zero)
  11801. 250.75 s [really-safe-money-gen] then M.delete currency m
  11802. 250.75 s [really-safe-money-gen] else M.insert currency r m
  11803. 250.75 s [really-safe-money-gen]
  11804. 250.75 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/MultiAccount.hs:134:9-37
  11805. 250.75 s [really-safe-money-gen] @@ -131,9 +131,9 @@
  11806. 250.75 s [really-safe-money-gen] Just a -> do
  11807. 250.75 s [really-safe-money-gen] r <- Account.subtract a account
  11808. 250.75 s [really-safe-money-gen] Just $
  11809. 250.75 s [really-safe-money-gen] - if r == Account.zero
  11810. 250.75 s [really-safe-money-gen] - then M.delete currency m
  11811. 250.75 s [really-safe-money-gen] - else M.insert currency r m
  11812. 250.75 s [really-safe-money-gen] + if r == Account.zero
  11813. 250.75 s [really-safe-money-gen] + then M.delete currency m
  11814. 250.75 s [really-safe-money-gen] + else M.insert currency r m
  11815. 250.75 s [really-safe-money-gen]
  11816. 250.75 s [really-safe-money-gen] -- | Try to convert every account to one currency.
  11817. 250.75 s [really-safe-money-gen] --
  11818. 250.75 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:120:12-29
  11819. 250.75 s [really-safe-money-gen] @@ -117,7 +117,7 @@
  11820. 250.75 s [really-safe-money-gen] Just a -> do
  11821. 250.75 s [really-safe-money-gen] r <- Account.add a account
  11822. 250.75 s [really-safe-money-gen] Just $
  11823. 250.75 s [really-safe-money-gen] - if r == Account.zero
  11824. 250.75 s [really-safe-money-gen] + if False
  11825. 250.75 s [really-safe-money-gen] then M.delete currency m
  11826. 250.75 s [really-safe-money-gen] else M.insert currency r m
  11827. 250.75 s [really-safe-money-gen]
  11828. 250.75 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:120:12-29
  11829. 250.75 s [really-safe-money-gen] @@ -117,7 +117,7 @@
  11830. 250.75 s [really-safe-money-gen] Just a -> do
  11831. 250.75 s [really-safe-money-gen] r <- Account.add a account
  11832. 250.75 s [really-safe-money-gen] Just $
  11833. 250.75 s [really-safe-money-gen] - if r == Account.zero
  11834. 250.75 s [really-safe-money-gen] + if True
  11835. 250.75 s [really-safe-money-gen] then M.delete currency m
  11836. 250.75 s [really-safe-money-gen] else M.insert currency r m
  11837. 250.75 s [really-safe-money-gen]
  11838. 250.76 s [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAccount.hs:120:12-29
  11839. 250.76 s [really-safe-money-gen] @@ -117,7 +117,7 @@
  11840. 250.76 s [really-safe-money-gen] Just a -> do
  11841. 250.76 s [really-safe-money-gen] r <- Account.add a account
  11842. 250.76 s [really-safe-money-gen] Just $
  11843. 250.76 s [really-safe-money-gen] - if r == Account.zero
  11844. 250.76 s [really-safe-money-gen] + if not (r == Account.zero)
  11845. 250.76 s [really-safe-money-gen] then M.delete currency m
  11846. 250.76 s [really-safe-money-gen] else M.insert currency r m
  11847. 250.76 s [really-safe-money-gen]
  11848. 250.76 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:129:23-37
  11849. 250.76 s [really-safe-money-gen] @@ -126,14 +126,14 @@
  11850. 250.76 s [really-safe-money-gen] subtractAccount m _ (Positive (Amount 0)) = Just m
  11851. 250.76 s [really-safe-money-gen] subtractAccount m _ (Negative (Amount 0)) = Just m
  11852. 250.76 s [really-safe-money-gen] subtractAccount (MultiAccount m) currency account =
  11853. 250.76 s [really-safe-money-gen] - fmap MultiAccount $ case M.lookup currency m of
  11854. 250.76 s [really-safe-money-gen] - Nothing -> Just $ M.insert currency (Account.negate account) m
  11855. 250.76 s [really-safe-money-gen] - Just a -> do
  11856. 250.76 s [really-safe-money-gen] - r <- Account.subtract a account
  11857. 250.76 s [really-safe-money-gen] - Just $
  11858. 250.76 s [really-safe-money-gen] - if r == Account.zero
  11859. 250.76 s [really-safe-money-gen] - then M.delete currency m
  11860. 250.76 s [really-safe-money-gen] - else M.insert currency r m
  11861. 250.76 s [really-safe-money-gen] + fmap MultiAccount $ case M.lookup currency m of
  11862. 250.76 s [really-safe-money-gen] + Nothing -> Just $ M.insert currency (Account.negate account) m
  11863. 250.76 s [really-safe-money-gen] + Just a -> do
  11864. 250.76 s [really-safe-money-gen] + r <- Account.subtract a account
  11865. 250.76 s [really-safe-money-gen] + Just $
  11866. 250.76 s [really-safe-money-gen] + if r == Account.zero
  11867. 250.76 s [really-safe-money-gen] + then M.delete currency m
  11868. 250.76 s [really-safe-money-gen] + else M.insert currency r m
  11869. 250.76 s [really-safe-money-gen]
  11870. 250.76 s [really-safe-money-gen] -- | Try to convert every account to one currency.
  11871. 250.76 s [really-safe-money-gen] --
  11872. 250.76 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/MultiAccount.hs:120:9-37
  11873. 250.76 s [really-safe-money-gen] @@ -117,9 +117,9 @@
  11874. 250.76 s [really-safe-money-gen] Just a -> do
  11875. 250.76 s [really-safe-money-gen] r <- Account.add a account
  11876. 250.76 s [really-safe-money-gen] Just $
  11877. 250.76 s [really-safe-money-gen] - if r == Account.zero
  11878. 252.23 s [really-safe-money-gen] - then M.delete currency m
  11879. 252.23 s [really-safe-money-gen] - else M.insert currency r m
  11880. 252.23 s [really-safe-money-gen] + if r == Account.zero
  11881. 252.23 s [really-safe-money-gen] + then M.delete currency m
  11882. 252.23 s [really-safe-money-gen] + else M.insert currency r m
  11883. 252.23 s [really-safe-money-gen]
  11884. 252.23 s [really-safe-money-gen] -- | Add an 'Account' to a 'MultiAccount'
  11885. 252.23 s [really-safe-money-gen] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
  11886. 252.23 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:78:6-28
  11887. 252.23 s [really-safe-money-gen] @@ -75,7 +75,7 @@
  11888. 252.23 s [really-safe-money-gen]
  11889. 252.23 s [really-safe-money-gen] fromAccount :: currency -> Account -> MultiAccount currency
  11890. 252.23 s [really-safe-money-gen] fromAccount currency amount =
  11891. 252.23 s [really-safe-money-gen] - if amount == Account.zero
  11892. 252.23 s [really-safe-money-gen] + if True
  11893. 252.23 s [really-safe-money-gen] then zero
  11894. 252.23 s [really-safe-money-gen] else MultiAccount $ M.singleton currency amount
  11895. 252.23 s [really-safe-money-gen]
  11896. 252.23 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:115:23-37
  11897. 252.23 s [really-safe-money-gen] @@ -112,14 +112,14 @@
  11898. 252.23 s [really-safe-money-gen] addAccount m _ (Positive (Amount 0)) = Just m
  11899. 252.23 s [really-safe-money-gen] addAccount m _ (Negative (Amount 0)) = Just m
  11900. 252.23 s [really-safe-money-gen] addAccount (MultiAccount m) currency account =
  11901. 252.23 s [really-safe-money-gen] - fmap MultiAccount $ case M.lookup currency m of
  11902. 252.23 s [really-safe-money-gen] - Nothing -> Just $ M.insert currency account m
  11903. 252.23 s [really-safe-money-gen] - Just a -> do
  11904. 252.23 s [really-safe-money-gen] - r <- Account.add a account
  11905. 252.23 s [really-safe-money-gen] - Just $
  11906. 252.24 s [really-safe-money-gen] - if r == Account.zero
  11907. 252.24 s [really-safe-money-gen] - then M.delete currency m
  11908. 252.24 s [really-safe-money-gen] - else M.insert currency r m
  11909. 252.24 s [really-safe-money-gen] + fmap MultiAccount $ case M.lookup currency m of
  11910. 252.24 s [really-safe-money-gen] + Nothing -> Just $ M.insert currency account m
  11911. 252.24 s [really-safe-money-gen] + Just a -> do
  11912. 252.24 s [really-safe-money-gen] + r <- Account.add a account
  11913. 252.24 s [really-safe-money-gen] + Just $
  11914. 252.24 s [really-safe-money-gen] + if r == Account.zero
  11915. 252.24 s [really-safe-money-gen] + then M.delete currency m
  11916. 252.24 s [really-safe-money-gen] + else M.insert currency r m
  11917. 252.24 s [really-safe-money-gen]
  11918. 252.24 s [really-safe-money-gen] -- | Add an 'Account' to a 'MultiAccount'
  11919. 252.24 s [really-safe-money-gen] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
  11920. 252.24 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:78:6-28
  11921. 252.24 s [really-safe-money-gen] @@ -75,7 +75,7 @@
  11922. 252.24 s [really-safe-money-gen]
  11923. 252.24 s [really-safe-money-gen] fromAccount :: currency -> Account -> MultiAccount currency
  11924. 252.24 s [really-safe-money-gen] fromAccount currency amount =
  11925. 252.24 s [really-safe-money-gen] - if amount == Account.zero
  11926. 252.24 s [really-safe-money-gen] + if False
  11927. 252.24 s [really-safe-money-gen] then zero
  11928. 252.24 s [really-safe-money-gen] else MultiAccount $ M.singleton currency amount
  11929. 252.24 s [really-safe-money-gen]
  11930. 252.24 s [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAccount.hs:78:6-28
  11931. 252.24 s [really-safe-money-gen] @@ -75,7 +75,7 @@
  11932. 252.24 s [really-safe-money-gen]
  11933. 252.24 s [really-safe-money-gen] fromAccount :: currency -> Account -> MultiAccount currency
  11934. 252.24 s [really-safe-money-gen] fromAccount currency amount =
  11935. 252.24 s [really-safe-money-gen] - if amount == Account.zero
  11936. 252.24 s [really-safe-money-gen] + if not (amount == Account.zero)
  11937. 252.24 s [really-safe-money-gen] then zero
  11938. 252.24 s [really-safe-money-gen] else MultiAccount $ M.singleton currency amount
  11939. 252.24 s [really-safe-money-gen]
  11940. 252.24 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/MultiAccount.hs:78:3-52
  11941. 252.24 s [really-safe-money-gen] @@ -75,9 +75,9 @@
  11942. 252.24 s [really-safe-money-gen]
  11943. 252.24 s [really-safe-money-gen] fromAccount :: currency -> Account -> MultiAccount currency
  11944. 252.24 s [really-safe-money-gen] fromAccount currency amount =
  11945. 252.24 s [really-safe-money-gen] - if amount == Account.zero
  11946. 252.24 s [really-safe-money-gen] - then zero
  11947. 252.24 s [really-safe-money-gen] - else MultiAccount $ M.singleton currency amount
  11948. 252.24 s [really-safe-money-gen] + if amount == Account.zero
  11949. 252.24 s [really-safe-money-gen] + then zero
  11950. 252.24 s [really-safe-money-gen] + else MultiAccount $ M.singleton currency amount
  11951. 252.24 s [really-safe-money-gen]
  11952. 252.24 s [really-safe-money-gen] -- | No money of any currency
  11953. 252.25 s [really-safe-money-gen] zero :: MultiAccount currency
  11954. 252.25 s [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAccount.hs:69:13-30
  11955. 252.25 s [really-safe-money-gen] @@ -66,7 +66,7 @@
  11956. 252.25 s [really-safe-money-gen] [ genericValidate ma,
  11957. 252.25 s [really-safe-money-gen] decorateMap m $ \_ a ->
  11958. 252.25 s [really-safe-money-gen] declare "The account is not zero" $
  11959. 252.25 s [really-safe-money-gen] - a /= Account.zero
  11960. 252.25 s [really-safe-money-gen] + not (a /= Account.zero)
  11961. 252.25 s [really-safe-money-gen] ]
  11962. 252.25 s [really-safe-money-gen]
  11963. 252.25 s [really-safe-money-gen] -- TODO no empty currencies
  11964. 252.25 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:115:23-37
  11965. 252.25 s [really-safe-money-gen] @@ -112,14 +112,14 @@
  11966. 252.25 s [really-safe-money-gen] addAccount m _ (Positive (Amount 0)) = Just m
  11967. 252.25 s [really-safe-money-gen] addAccount m _ (Negative (Amount 0)) = Just m
  11968. 252.25 s [really-safe-money-gen] addAccount (MultiAccount m) currency account =
  11969. 252.25 s [really-safe-money-gen] - fmap MultiAccount $ case M.lookup currency m of
  11970. 252.25 s [really-safe-money-gen] - Nothing -> Just $ M.insert currency account m
  11971. 252.25 s [really-safe-money-gen] - Just a -> do
  11972. 252.25 s [really-safe-money-gen] - r <- Account.add a account
  11973. 252.25 s [really-safe-money-gen] - Just $
  11974. 252.25 s [really-safe-money-gen] - if r == Account.zero
  11975. 252.25 s [really-safe-money-gen] - then M.delete currency m
  11976. 252.25 s [really-safe-money-gen] - else M.insert currency r m
  11977. 252.25 s [really-safe-money-gen] + fmap MultiAccount $ case M.lookup currency m of
  11978. 252.25 s [really-safe-money-gen] + Nothing -> Just $ M.insert currency account m
  11979. 252.25 s [really-safe-money-gen] + Just a -> do
  11980. 252.25 s [really-safe-money-gen] + r <- Account.add a account
  11981. 252.25 s [really-safe-money-gen] + Just $
  11982. 252.25 s [really-safe-money-gen] + if r == Account.zero
  11983. 252.25 s [really-safe-money-gen] + then M.delete currency m
  11984. 252.25 s [really-safe-money-gen] + else M.insert currency r m
  11985. 252.25 s [really-safe-money-gen]
  11986. 252.25 s [really-safe-money-gen] -- | Add an 'Account' to a 'MultiAccount'
  11987. 252.25 s [really-safe-money-gen] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
  11988. 252.25 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:69:13-30
  11989. 252.25 s [really-safe-money-gen] @@ -66,7 +66,7 @@
  11990. 252.25 s [really-safe-money-gen] [ genericValidate ma,
  11991. 252.25 s [really-safe-money-gen] decorateMap m $ \_ a ->
  11992. 252.25 s [really-safe-money-gen] declare "The account is not zero" $
  11993. 252.25 s [really-safe-money-gen] - a /= Account.zero
  11994. 252.25 s [really-safe-money-gen] + True
  11995. 252.25 s [really-safe-money-gen] ]
  11996. 252.25 s [really-safe-money-gen]
  11997. 252.25 s [really-safe-money-gen] -- TODO no empty currencies
  11998. 252.25 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:69:13-30
  11999. 252.25 s [really-safe-money-gen] @@ -66,7 +66,7 @@
  12000. 252.25 s [really-safe-money-gen] [ genericValidate ma,
  12001. 252.25 s [really-safe-money-gen] decorateMap m $ \_ a ->
  12002. 252.25 s [really-safe-money-gen] declare "The account is not zero" $
  12003. 252.25 s [really-safe-money-gen] - a /= Account.zero
  12004. 252.25 s [really-safe-money-gen] + False
  12005. 252.25 s [really-safe-money-gen] ]
  12006. 252.25 s [really-safe-money-gen]
  12007. 252.25 s [really-safe-money-gen] -- TODO no empty currencies
  12008. 252.25 s [really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAccount.hs:66:7-8
  12009. 252.25 s [really-safe-money-gen] @@ -63,11 +63,7 @@
  12010. 252.25 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
  12011. 252.26 s [really-safe-money-gen] validate ma@(MultiAccount m) =
  12012. 252.26 s [really-safe-money-gen] mconcat
  12013. 252.26 s [really-safe-money-gen] - [ genericValidate ma,
  12014. 252.26 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  12015. 252.26 s [really-safe-money-gen] - declare "The account is not zero" $
  12016. 252.26 s [really-safe-money-gen] - a /= Account.zero
  12017. 252.26 s [really-safe-money-gen] - ]
  12018. 252.26 s [really-safe-money-gen] + []
  12019. 252.26 s [really-safe-money-gen]
  12020. 252.26 s [really-safe-money-gen] -- TODO no empty currencies
  12021. 252.26 s [really-safe-money-gen]
  12022. 252.26 s [really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAccount.hs:66:7-8
  12023. 252.26 s [really-safe-money-gen] @@ -63,11 +63,11 @@
  12024. 252.26 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
  12025. 252.26 s [really-safe-money-gen] validate ma@(MultiAccount m) =
  12026. 252.26 s [really-safe-money-gen] mconcat
  12027. 252.26 s [really-safe-money-gen] - [ genericValidate ma,
  12028. 252.26 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  12029. 252.26 s [really-safe-money-gen] - declare "The account is not zero" $
  12030. 252.26 s [really-safe-money-gen] - a /= Account.zero
  12031. 252.26 s [really-safe-money-gen] - ]
  12032. 252.26 s [really-safe-money-gen] + [ genericValidate ma,
  12033. 252.26 s [really-safe-money-gen] + decorateMap m $ \_ a ->
  12034. 252.26 s [really-safe-money-gen] + declare "The account is not zero" $
  12035. 252.26 s [really-safe-money-gen] + a /= Account.zero
  12036. 252.26 s [really-safe-money-gen] + ]
  12037. 252.26 s [really-safe-money-gen]
  12038. 252.26 s [really-safe-money-gen] -- TODO no empty currencies
  12039. 252.26 s [really-safe-money-gen]
  12040. 252.26 s [really-safe-money-gen] Testing mutation IntLit at src/Money/ConversionRate.hs:109:27-28
  12041. 252.26 s [really-safe-money-gen] @@ -106,7 +106,7 @@
  12042. 252.26 s [really-safe-money-gen]
  12043. 252.26 s [really-safe-money-gen] -- | One-to-one conversion rate
  12044. 252.26 s [really-safe-money-gen] oneToOne :: ConversionRate
  12045. 252.26 s [really-safe-money-gen] -oneToOne = ConversionRate 1
  12046. 252.26 s [really-safe-money-gen] +oneToOne = ConversionRate -1
  12047. 252.26 s [really-safe-money-gen]
  12048. 252.26 s [really-safe-money-gen] -- | Invert a 'ConversionRate', to convert in the other direction.
  12049. 252.26 s [really-safe-money-gen] --
  12050. 252.26 s [really-safe-money-gen] Testing mutation IntLit at src/Money/ConversionRate.hs:116:45-46
  12051. 252.26 s [really-safe-money-gen] @@ -113,7 +113,7 @@
  12052. 252.26 s [really-safe-money-gen] -- >>> invert (ConversionRate (1 % 2))
  12053. 252.26 s [really-safe-money-gen] -- ConversionRate {unConversionRate = 2 % 1}
  12054. 252.26 s [really-safe-money-gen] invert :: ConversionRate -> ConversionRate
  12055. 252.26 s [really-safe-money-gen] -invert (ConversionRate r) = ConversionRate (1 / r)
  12056. 252.26 s [really-safe-money-gen] +invert (ConversionRate r) = ConversionRate (0 / r)
  12057. 252.26 s [really-safe-money-gen]
  12058. 252.26 s [really-safe-money-gen] -- | Compose two conversion rates
  12059. 252.26 s [really-safe-money-gen] --
  12060. 252.26 s [really-safe-money-gen] Testing mutation IntLit at src/Money/ConversionRate.hs:116:45-46
  12061. 252.26 s [really-safe-money-gen] @@ -113,7 +113,7 @@
  12062. 252.26 s [really-safe-money-gen] -- >>> invert (ConversionRate (1 % 2))
  12063. 252.27 s [really-safe-money-gen] -- ConversionRate {unConversionRate = 2 % 1}
  12064. 252.27 s [really-safe-money-gen] invert :: ConversionRate -> ConversionRate
  12065. 252.27 s [really-safe-money-gen] -invert (ConversionRate r) = ConversionRate (1 / r)
  12066. 252.27 s [really-safe-money-gen] +invert (ConversionRate r) = ConversionRate (-1 / r)
  12067. 252.27 s [really-safe-money-gen]
  12068. 252.27 s [really-safe-money-gen] -- | Compose two conversion rates
  12069. 252.27 s [really-safe-money-gen] --
  12070. 252.27 s [really-safe-money-gen] Testing mutation IntLit at src/Money/ConversionRate.hs:109:27-28
  12071. 252.27 s [really-safe-money-gen] @@ -106,7 +106,7 @@
  12072. 252.27 s [really-safe-money-gen]
  12073. 252.27 s [really-safe-money-gen] -- | One-to-one conversion rate
  12074. 252.27 s [really-safe-money-gen] oneToOne :: ConversionRate
  12075. 252.27 s [really-safe-money-gen] -oneToOne = ConversionRate 1
  12076. 252.27 s [really-safe-money-gen] +oneToOne = ConversionRate 0
  12077. 252.27 s [really-safe-money-gen]
  12078. 252.27 s [really-safe-money-gen] -- | Invert a 'ConversionRate', to convert in the other direction.
  12079. 252.27 s [really-safe-money-gen] --
  12080. 252.27 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/ConversionRate.hs:72:21-26
  12081. 252.27 s [really-safe-money-gen] @@ -69,7 +69,7 @@
  12082. 252.27 s [really-safe-money-gen] -- >>> fromRational (0 % 1)
  12083. 252.27 s [really-safe-money-gen] -- Nothing
  12084. 252.27 s [really-safe-money-gen] fromRational :: Rational -> Maybe ConversionRate
  12085. 252.27 s [really-safe-money-gen] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  12086. 252.27 s [really-safe-money-gen] +fromRational r = if True then Nothing else fromRatio (realToFrac r)
  12087. 252.27 s [really-safe-money-gen]
  12088. 252.27 s [really-safe-money-gen] -- | Turn a 'ConversionRate' back into a 'Rational'
  12089. 252.27 s [really-safe-money-gen] --
  12090. 252.27 s [really-safe-money-gen] Testing mutation IntLit at src/Money/ConversionRate.hs:72:25-26
  12091. 252.27 s [really-safe-money-gen] @@ -69,7 +69,7 @@
  12092. 252.27 s [really-safe-money-gen] -- >>> fromRational (0 % 1)
  12093. 252.27 s [really-safe-money-gen] -- Nothing
  12094. 252.27 s [really-safe-money-gen] fromRational :: Rational -> Maybe ConversionRate
  12095. 252.27 s [really-safe-money-gen] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  12096. 252.27 s [really-safe-money-gen] +fromRational r = if r < 1 then Nothing else fromRatio (realToFrac r)
  12097. 252.27 s [really-safe-money-gen]
  12098. 252.27 s [really-safe-money-gen] -- | Turn a 'ConversionRate' back into a 'Rational'
  12099. 252.27 s [really-safe-money-gen] --
  12100. 252.27 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/ConversionRate.hs:72:21-26
  12101. 252.27 s [really-safe-money-gen] @@ -69,7 +69,7 @@
  12102. 252.27 s [really-safe-money-gen] -- >>> fromRational (0 % 1)
  12103. 252.27 s [really-safe-money-gen] -- Nothing
  12104. 252.27 s [really-safe-money-gen] fromRational :: Rational -> Maybe ConversionRate
  12105. 252.27 s [really-safe-money-gen] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  12106. 252.27 s [really-safe-money-gen] +fromRational r = if False then Nothing else fromRatio (realToFrac r)
  12107. 252.27 s [really-safe-money-gen]
  12108. 252.27 s [really-safe-money-gen] -- | Turn a 'ConversionRate' back into a 'Rational'
  12109. 252.27 s [really-safe-money-gen] --
  12110. 252.27 s [really-safe-money-gen] Testing mutation Negate at src/Money/ConversionRate.hs:72:21-26
  12111. 252.27 s [really-safe-money-gen] @@ -69,7 +69,7 @@
  12112. 252.27 s [really-safe-money-gen] -- >>> fromRational (0 % 1)
  12113. 252.28 s [really-safe-money-gen] -- Nothing
  12114. 252.28 s [really-safe-money-gen] fromRational :: Rational -> Maybe ConversionRate
  12115. 252.28 s [really-safe-money-gen] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  12116. 252.28 s [really-safe-money-gen] +fromRational r = if not (r < 0) then Nothing else fromRatio (realToFrac r)
  12117. 252.28 s [really-safe-money-gen]
  12118. 252.28 s [really-safe-money-gen] -- | Turn a 'ConversionRate' back into a 'Rational'
  12119. 252.28 s [really-safe-money-gen] --
  12120. 252.28 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/ConversionRate.hs:72:18-69
  12121. 253.68 s [really-safe-money-gen] @@ -69,7 +69,7 @@
  12122. 253.68 s [really-safe-money-gen] -- >>> fromRational (0 % 1)
  12123. 253.68 s [really-safe-money-gen] -- Nothing
  12124. 253.69 s [really-safe-money-gen] fromRational :: Rational -> Maybe ConversionRate
  12125. 253.69 s [really-safe-money-gen] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  12126. 253.69 s [really-safe-money-gen] +fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  12127. 253.69 s [really-safe-money-gen]
  12128. 253.69 s [really-safe-money-gen] -- | Turn a 'ConversionRate' back into a 'Rational'
  12129. 253.69 s [really-safe-money-gen] --
  12130. 253.69 s [really-safe-money-gen] Testing mutation IntLit at src/Money/ConversionRate.hs:38:56-57
  12131. 253.69 s [really-safe-money-gen] @@ -35,7 +35,7 @@
  12132. 253.69 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  12133. 253.69 s [really-safe-money-gen] mconcat
  12134. 253.69 s [really-safe-money-gen] [ genericValidate cr,
  12135. 253.69 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  12136. 253.69 s [really-safe-money-gen] + declare "The rate is nonzero" $ numerator r /= 1
  12137. 253.69 s [really-safe-money-gen] ]
  12138. 253.69 s [really-safe-money-gen]
  12139. 253.69 s [really-safe-money-gen] instance NFData ConversionRate
  12140. 253.69 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/ConversionRate.hs:38:41-57
  12141. 253.69 s [really-safe-money-gen] @@ -35,7 +35,7 @@
  12142. 253.69 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  12143. 253.69 s [really-safe-money-gen] mconcat
  12144. 253.69 s [really-safe-money-gen] [ genericValidate cr,
  12145. 253.69 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  12146. 253.69 s [really-safe-money-gen] + declare "The rate is nonzero" $ True
  12147. 253.69 s [really-safe-money-gen] ]
  12148. 253.69 s [really-safe-money-gen]
  12149. 253.69 s [really-safe-money-gen] instance NFData ConversionRate
  12150. 253.69 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/ConversionRate.hs:38:41-57
  12151. 253.69 s [really-safe-money-gen] @@ -35,7 +35,7 @@
  12152. 253.69 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  12153. 253.69 s [really-safe-money-gen] mconcat
  12154. 253.69 s [really-safe-money-gen] [ genericValidate cr,
  12155. 253.69 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  12156. 253.69 s [really-safe-money-gen] + declare "The rate is nonzero" $ False
  12157. 253.69 s [really-safe-money-gen] ]
  12158. 253.69 s [really-safe-money-gen]
  12159. 253.69 s [really-safe-money-gen] instance NFData ConversionRate
  12160. 253.69 s [really-safe-money-gen] Testing mutation Negate at src/Money/ConversionRate.hs:38:41-57
  12161. 253.69 s [really-safe-money-gen] @@ -35,7 +35,7 @@
  12162. 253.69 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  12163. 253.69 s [really-safe-money-gen] mconcat
  12164. 253.69 s [really-safe-money-gen] [ genericValidate cr,
  12165. 253.69 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  12166. 253.69 s [really-safe-money-gen] + declare "The rate is nonzero" $ not (numerator r /= 0)
  12167. 253.69 s [really-safe-money-gen] ]
  12168. 253.69 s [really-safe-money-gen]
  12169. 253.69 s [really-safe-money-gen] instance NFData ConversionRate
  12170. 253.69 s [really-safe-money-gen] Testing mutation ListLit at src/Money/ConversionRate.hs:37:7-8
  12171. 253.69 s [really-safe-money-gen] @@ -34,9 +34,7 @@
  12172. 253.69 s [really-safe-money-gen] instance Validity ConversionRate where
  12173. 253.69 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  12174. 253.70 s [really-safe-money-gen] mconcat
  12175. 253.70 s [really-safe-money-gen] - [ genericValidate cr,
  12176. 253.70 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  12177. 253.70 s [really-safe-money-gen] - ]
  12178. 253.70 s [really-safe-money-gen] + []
  12179. 253.70 s [really-safe-money-gen]
  12180. 253.70 s [really-safe-money-gen] instance NFData ConversionRate
  12181. 253.70 s [really-safe-money-gen]
  12182. 253.70 s [really-safe-money-gen] Testing mutation ListLit at src/Money/ConversionRate.hs:37:7-8
  12183. 253.70 s [really-safe-money-gen] @@ -34,9 +34,9 @@
  12184. 253.70 s [really-safe-money-gen] instance Validity ConversionRate where
  12185. 253.70 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  12186. 253.70 s [really-safe-money-gen] mconcat
  12187. 253.70 s [really-safe-money-gen] - [ genericValidate cr,
  12188. 253.70 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  12189. 253.70 s [really-safe-money-gen] - ]
  12190. 253.70 s [really-safe-money-gen] + [ genericValidate cr,
  12191. 253.70 s [really-safe-money-gen] + declare "The rate is nonzero" $ numerator r /= 0
  12192. 253.70 s [really-safe-money-gen] + ]
  12193. 253.70 s [really-safe-money-gen]
  12194. 253.70 s [really-safe-money-gen] instance NFData ConversionRate
  12195. 253.70 s [really-safe-money-gen]
  12196. 253.70 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
  12197. 253.70 s [really-safe-money-gen] @@ -156,10 +156,10 @@
  12198. 253.70 s [really-safe-money-gen] fmap
  12199. 253.70 s [really-safe-money-gen] ( ( \theoreticalResult ->
  12200. 253.70 s [really-safe-money-gen] let rounder :: Ratio Natural -> Natural
  12201. 253.70 s [really-safe-money-gen] - rounder = case r of
  12202. 253.70 s [really-safe-money-gen] - RoundUp -> ceiling
  12203. 253.70 s [really-safe-money-gen] - RoundDown -> floor
  12204. 253.70 s [really-safe-money-gen] - RoundNearest -> round
  12205. 253.70 s [really-safe-money-gen] + rounder = case r of
  12206. 253.70 s [really-safe-money-gen] + RoundUp -> ceiling
  12207. 253.70 s [really-safe-money-gen] + RoundDown -> floor
  12208. 253.70 s [really-safe-money-gen] + RoundNearest -> round
  12209. 253.70 s [really-safe-money-gen] roundedResult :: Natural
  12210. 253.70 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  12211. 253.70 s [really-safe-money-gen] maxBoundN :: Natural
  12212. 253.70 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
  12213. 253.70 s [really-safe-money-gen] @@ -156,10 +156,10 @@
  12214. 253.70 s [really-safe-money-gen] fmap
  12215. 253.70 s [really-safe-money-gen] ( ( \theoreticalResult ->
  12216. 253.70 s [really-safe-money-gen] let rounder :: Ratio Natural -> Natural
  12217. 253.70 s [really-safe-money-gen] - rounder = case r of
  12218. 253.70 s [really-safe-money-gen] - RoundUp -> ceiling
  12219. 253.70 s [really-safe-money-gen] - RoundDown -> floor
  12220. 253.70 s [really-safe-money-gen] - RoundNearest -> round
  12221. 253.70 s [really-safe-money-gen] + rounder = case r of
  12222. 253.70 s [really-safe-money-gen] + RoundUp -> ceiling
  12223. 253.70 s [really-safe-money-gen] + RoundDown -> floor
  12224. 253.70 s [really-safe-money-gen] + RoundNearest -> round
  12225. 253.70 s [really-safe-money-gen] roundedResult :: Natural
  12226. 253.70 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  12227. 253.70 s [really-safe-money-gen] maxBoundN :: Natural
  12228. 253.70 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
  12229. 253.70 s [really-safe-money-gen] @@ -156,10 +156,10 @@
  12230. 253.70 s [really-safe-money-gen] fmap
  12231. 253.70 s [really-safe-money-gen] ( ( \theoreticalResult ->
  12232. 253.70 s [really-safe-money-gen] let rounder :: Ratio Natural -> Natural
  12233. 253.70 s [really-safe-money-gen] - rounder = case r of
  12234. 253.70 s [really-safe-money-gen] - RoundUp -> ceiling
  12235. 253.70 s [really-safe-money-gen] - RoundDown -> floor
  12236. 253.70 s [really-safe-money-gen] - RoundNearest -> round
  12237. 253.70 s [really-safe-money-gen] + rounder = case r of
  12238. 253.70 s [really-safe-money-gen] + RoundUp -> ceiling
  12239. 253.70 s [really-safe-money-gen] + RoundDown -> floor
  12240. 253.70 s [really-safe-money-gen] + RoundNearest -> round
  12241. 253.70 s [really-safe-money-gen] roundedResult :: Natural
  12242. 253.70 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  12243. 253.70 s [really-safe-money-gen] maxBoundN :: Natural
  12244. 253.70 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:168:20-45
  12245. 253.70 s [really-safe-money-gen] @@ -165,7 +165,7 @@
  12246. 253.70 s [really-safe-money-gen] maxBoundN :: Natural
  12247. 253.70 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  12248. 253.70 s [really-safe-money-gen] actualResult =
  12249. 253.70 s [really-safe-money-gen] - if roundedResult > maxBoundN
  12250. 253.70 s [really-safe-money-gen] + if True
  12251. 253.70 s [really-safe-money-gen] then Nothing
  12252. 253.70 s [really-safe-money-gen] else Just (fromIntegral roundedResult)
  12253. 253.70 s [really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12254. 253.70 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:168:20-45
  12255. 253.70 s [really-safe-money-gen] @@ -165,7 +165,7 @@
  12256. 253.70 s [really-safe-money-gen] maxBoundN :: Natural
  12257. 253.70 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  12258. 253.70 s [really-safe-money-gen] actualResult =
  12259. 253.70 s [really-safe-money-gen] - if roundedResult > maxBoundN
  12260. 253.70 s [really-safe-money-gen] + if False
  12261. 253.70 s [really-safe-money-gen] then Nothing
  12262. 253.70 s [really-safe-money-gen] else Just (fromIntegral roundedResult)
  12263. 253.70 s [really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12264. 253.70 s [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAmount.hs:168:20-45
  12265. 253.70 s [really-safe-money-gen] @@ -165,7 +165,7 @@
  12266. 253.70 s [really-safe-money-gen] maxBoundN :: Natural
  12267. 253.70 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  12268. 253.70 s [really-safe-money-gen] actualResult =
  12269. 253.70 s [really-safe-money-gen] - if roundedResult > maxBoundN
  12270. 253.70 s [really-safe-money-gen] + if not (roundedResult > maxBoundN)
  12271. 253.70 s [really-safe-money-gen] then Nothing
  12272. 253.70 s [really-safe-money-gen] else Just (fromIntegral roundedResult)
  12273. 253.70 s [really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12274. 253.70 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/MultiAmount.hs:168:17-57
  12275. 253.70 s [really-safe-money-gen] @@ -165,9 +165,9 @@
  12276. 253.70 s [really-safe-money-gen] maxBoundN :: Natural
  12277. 253.70 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  12278. 253.70 s [really-safe-money-gen] actualResult =
  12279. 253.70 s [really-safe-money-gen] - if roundedResult > maxBoundN
  12280. 253.70 s [really-safe-money-gen] - then Nothing
  12281. 253.70 s [really-safe-money-gen] - else Just (fromIntegral roundedResult)
  12282. 253.70 s [really-safe-money-gen] + if roundedResult > maxBoundN
  12283. 253.70 s [really-safe-money-gen] + then Nothing
  12284. 253.70 s [really-safe-money-gen] + else Just (fromIntegral roundedResult)
  12285. 253.70 s [really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12286. 253.70 s [really-safe-money-gen] LT -> RoundedDown
  12287. 253.70 s [really-safe-money-gen] EQ -> DidNotRound
  12288. 253.70 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
  12289. 253.70 s [really-safe-money-gen] @@ -168,10 +168,10 @@
  12290. 253.70 s [really-safe-money-gen] if roundedResult > maxBoundN
  12291. 253.70 s [really-safe-money-gen] then Nothing
  12292. 253.70 s [really-safe-money-gen] else Just (fromIntegral roundedResult)
  12293. 253.70 s [really-safe-money-gen] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12294. 253.70 s [really-safe-money-gen] - LT -> RoundedDown
  12295. 253.70 s [really-safe-money-gen] - EQ -> DidNotRound
  12296. 253.70 s [really-safe-money-gen] - GT -> RoundedUp
  12297. 253.70 s [really-safe-money-gen] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12298. 253.70 s [really-safe-money-gen] + LT -> RoundedDown
  12299. 253.70 s [really-safe-money-gen] + EQ -> DidNotRound
  12300. 253.70 s [really-safe-money-gen] + GT -> RoundedUp
  12301. 253.70 s [really-safe-money-gen] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
  12302. 253.70 s [really-safe-money-gen] )
  12303. 253.70 s [really-safe-money-gen] . Prelude.sum
  12304. 253.70 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
  12305. 253.70 s [really-safe-money-gen] @@ -168,10 +168,10 @@
  12306. 253.70 s [really-safe-money-gen] if roundedResult > maxBoundN
  12307. 253.70 s [really-safe-money-gen] then Nothing
  12308. 253.70 s [really-safe-money-gen] else Just (fromIntegral roundedResult)
  12309. 253.70 s [really-safe-money-gen] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12310. 253.70 s [really-safe-money-gen] - LT -> RoundedDown
  12311. 253.70 s [really-safe-money-gen] - EQ -> DidNotRound
  12312. 253.70 s [really-safe-money-gen] - GT -> RoundedUp
  12313. 253.70 s [really-safe-money-gen] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12314. 253.70 s [really-safe-money-gen] + LT -> RoundedDown
  12315. 253.70 s [really-safe-money-gen] + EQ -> DidNotRound
  12316. 253.70 s [really-safe-money-gen] + GT -> RoundedUp
  12317. 253.70 s [really-safe-money-gen] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
  12318. 253.70 s [really-safe-money-gen] )
  12319. 253.70 s [really-safe-money-gen] . Prelude.sum
  12320. 253.70 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:119:12-28
  12321. 253.70 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  12322. 253.70 s [really-safe-money-gen] Just a -> do
  12323. 253.70 s [really-safe-money-gen] r <- Amount.subtract a amount
  12324. 253.70 s [really-safe-money-gen] Just $
  12325. 253.70 s [really-safe-money-gen] - if r == Amount.zero
  12326. 253.70 s [really-safe-money-gen] + if True
  12327. 253.70 s [really-safe-money-gen] then M.delete currency m
  12328. 253.70 s [really-safe-money-gen] else M.insert currency r m
  12329. 253.70 s [really-safe-money-gen]
  12330. 253.70 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:119:12-28
  12331. 253.70 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  12332. 253.70 s [really-safe-money-gen] Just a -> do
  12333. 253.70 s [really-safe-money-gen] r <- Amount.subtract a amount
  12334. 253.70 s [really-safe-money-gen] Just $
  12335. 253.70 s [really-safe-money-gen] - if r == Amount.zero
  12336. 253.70 s [really-safe-money-gen] + if False
  12337. 253.70 s [really-safe-money-gen] then M.delete currency m
  12338. 253.70 s [really-safe-money-gen] else M.insert currency r m
  12339. 253.70 s [really-safe-money-gen]
  12340. 253.70 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
  12341. 254.53 s [really-safe-money-gen] @@ -168,10 +168,10 @@
  12342. 254.53 s [really-safe-money-gen] if roundedResult > maxBoundN
  12343. 254.53 s [really-safe-money-gen] then Nothing
  12344. 254.53 s [really-safe-money-gen] else Just (fromIntegral roundedResult)
  12345. 254.53 s [really-safe-money-gen] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12346. 254.53 s [really-safe-money-gen] - LT -> RoundedDown
  12347. 254.53 s [really-safe-money-gen] - EQ -> DidNotRound
  12348. 254.53 s [really-safe-money-gen] - GT -> RoundedUp
  12349. 254.53 s [really-safe-money-gen] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12350. 254.53 s [really-safe-money-gen] + LT -> RoundedDown
  12351. 254.53 s [really-safe-money-gen] + EQ -> DidNotRound
  12352. 254.53 s [really-safe-money-gen] + GT -> RoundedUp
  12353. 254.53 s [really-safe-money-gen] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
  12354. 254.53 s [really-safe-money-gen] )
  12355. 254.53 s [really-safe-money-gen] . Prelude.sum
  12356. 254.53 s [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAmount.hs:119:12-28
  12357. 254.53 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  12358. 254.53 s [really-safe-money-gen] Just a -> do
  12359. 254.53 s [really-safe-money-gen] r <- Amount.subtract a amount
  12360. 254.53 s [really-safe-money-gen] Just $
  12361. 254.53 s [really-safe-money-gen] - if r == Amount.zero
  12362. 254.53 s [really-safe-money-gen] + if not (r == Amount.zero)
  12363. 254.53 s [really-safe-money-gen] then M.delete currency m
  12364. 254.53 s [really-safe-money-gen] else M.insert currency r m
  12365. 254.53 s [really-safe-money-gen]
  12366. 254.53 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/MultiAmount.hs:119:9-37
  12367. 254.53 s [really-safe-money-gen] @@ -116,9 +116,9 @@
  12368. 254.53 s [really-safe-money-gen] Just a -> do
  12369. 254.53 s [really-safe-money-gen] r <- Amount.subtract a amount
  12370. 254.53 s [really-safe-money-gen] Just $
  12371. 254.53 s [really-safe-money-gen] - if r == Amount.zero
  12372. 254.53 s [really-safe-money-gen] - then M.delete currency m
  12373. 254.53 s [really-safe-money-gen] - else M.insert currency r m
  12374. 254.53 s [really-safe-money-gen] + if r == Amount.zero
  12375. 254.53 s [really-safe-money-gen] + then M.delete currency m
  12376. 254.53 s [really-safe-money-gen] + else M.insert currency r m
  12377. 254.54 s [really-safe-money-gen]
  12378. 254.54 s [really-safe-money-gen] -- | Try to convert every amount to one currency.
  12379. 254.54 s [really-safe-money-gen] --
  12380. 254.54 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:114:22-37
  12381. 254.54 s [really-safe-money-gen] @@ -111,14 +111,14 @@
  12382. 254.54 s [really-safe-money-gen] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  12383. 254.54 s [really-safe-money-gen] subtractAmount m _ (Amount 0) = Just m
  12384. 254.54 s [really-safe-money-gen] subtractAmount (MultiAmount m) currency amount =
  12385. 254.54 s [really-safe-money-gen] - fmap MultiAmount $ case M.lookup currency m of
  12386. 254.54 s [really-safe-money-gen] - Nothing -> Nothing -- Can't go below zero
  12387. 254.54 s [really-safe-money-gen] - Just a -> do
  12388. 254.54 s [really-safe-money-gen] - r <- Amount.subtract a amount
  12389. 254.54 s [really-safe-money-gen] - Just $
  12390. 254.54 s [really-safe-money-gen] - if r == Amount.zero
  12391. 254.54 s [really-safe-money-gen] - then M.delete currency m
  12392. 254.54 s [really-safe-money-gen] - else M.insert currency r m
  12393. 254.54 s [really-safe-money-gen] + fmap MultiAmount $ case M.lookup currency m of
  12394. 254.54 s [really-safe-money-gen] + Nothing -> Nothing -- Can't go below zero
  12395. 254.54 s [really-safe-money-gen] + Just a -> do
  12396. 254.54 s [really-safe-money-gen] + r <- Amount.subtract a amount
  12397. 254.54 s [really-safe-money-gen] + Just $
  12398. 254.54 s [really-safe-money-gen] + if r == Amount.zero
  12399. 254.54 s [really-safe-money-gen] + then M.delete currency m
  12400. 254.54 s [really-safe-money-gen] + else M.insert currency r m
  12401. 254.54 s [really-safe-money-gen]
  12402. 254.54 s [really-safe-money-gen] -- | Try to convert every amount to one currency.
  12403. 254.54 s [really-safe-money-gen] --
  12404. 254.54 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:114:22-37
  12405. 254.54 s [really-safe-money-gen] @@ -111,14 +111,14 @@
  12406. 254.54 s [really-safe-money-gen] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  12407. 254.54 s [really-safe-money-gen] subtractAmount m _ (Amount 0) = Just m
  12408. 254.54 s [really-safe-money-gen] subtractAmount (MultiAmount m) currency amount =
  12409. 254.54 s [really-safe-money-gen] - fmap MultiAmount $ case M.lookup currency m of
  12410. 254.54 s [really-safe-money-gen] - Nothing -> Nothing -- Can't go below zero
  12411. 254.54 s [really-safe-money-gen] - Just a -> do
  12412. 254.54 s [really-safe-money-gen] - r <- Amount.subtract a amount
  12413. 254.54 s [really-safe-money-gen] - Just $
  12414. 254.54 s [really-safe-money-gen] - if r == Amount.zero
  12415. 254.54 s [really-safe-money-gen] - then M.delete currency m
  12416. 254.54 s [really-safe-money-gen] - else M.insert currency r m
  12417. 254.54 s [really-safe-money-gen] + fmap MultiAmount $ case M.lookup currency m of
  12418. 254.54 s [really-safe-money-gen] + Nothing -> Nothing -- Can't go below zero
  12419. 254.54 s [really-safe-money-gen] + Just a -> do
  12420. 254.54 s [really-safe-money-gen] + r <- Amount.subtract a amount
  12421. 254.54 s [really-safe-money-gen] + Just $
  12422. 254.54 s [really-safe-money-gen] + if r == Amount.zero
  12423. 254.54 s [really-safe-money-gen] + then M.delete currency m
  12424. 254.54 s [really-safe-money-gen] + else M.insert currency r m
  12425. 254.54 s [really-safe-money-gen]
  12426. 254.54 s [really-safe-money-gen] -- | Try to convert every amount to one currency.
  12427. 254.54 s [really-safe-money-gen] --
  12428. 254.54 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:106:12-28
  12429. 254.54 s [really-safe-money-gen] @@ -103,7 +103,7 @@
  12430. 254.54 s [really-safe-money-gen] Just a -> do
  12431. 254.54 s [really-safe-money-gen] r <- Amount.add a amount
  12432. 254.54 s [really-safe-money-gen] Just $
  12433. 254.55 s [really-safe-money-gen] - if r == Amount.zero
  12434. 254.55 s [really-safe-money-gen] + if True
  12435. 254.55 s [really-safe-money-gen] then M.delete currency m
  12436. 254.55 s [really-safe-money-gen] else M.insert currency r m
  12437. 254.55 s [really-safe-money-gen]
  12438. 254.55 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:106:12-28
  12439. 254.55 s [really-safe-money-gen] @@ -103,7 +103,7 @@
  12440. 254.55 s [really-safe-money-gen] Just a -> do
  12441. 254.55 s [really-safe-money-gen] r <- Amount.add a amount
  12442. 254.55 s [really-safe-money-gen] Just $
  12443. 254.55 s [really-safe-money-gen] - if r == Amount.zero
  12444. 254.55 s [really-safe-money-gen] + if False
  12445. 254.55 s [really-safe-money-gen] then M.delete currency m
  12446. 254.55 s [really-safe-money-gen] else M.insert currency r m
  12447. 254.55 s [really-safe-money-gen]
  12448. 254.55 s [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAmount.hs:106:12-28
  12449. 254.55 s [really-safe-money-gen] @@ -103,7 +103,7 @@
  12450. 254.55 s [really-safe-money-gen] Just a -> do
  12451. 254.55 s [really-safe-money-gen] r <- Amount.add a amount
  12452. 254.55 s [really-safe-money-gen] Just $
  12453. 254.55 s [really-safe-money-gen] - if r == Amount.zero
  12454. 254.55 s [really-safe-money-gen] + if not (r == Amount.zero)
  12455. 254.55 s [really-safe-money-gen] then M.delete currency m
  12456. 254.55 s [really-safe-money-gen] else M.insert currency r m
  12457. 254.55 s [really-safe-money-gen]
  12458. 254.55 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:101:22-37
  12459. 254.55 s [really-safe-money-gen] @@ -98,14 +98,14 @@
  12460. 254.55 s [really-safe-money-gen] addAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  12461. 254.55 s [really-safe-money-gen] addAmount m _ (Amount 0) = Just m
  12462. 254.55 s [really-safe-money-gen] addAmount (MultiAmount m) currency amount =
  12463. 254.55 s [really-safe-money-gen] - fmap MultiAmount $ case M.lookup currency m of
  12464. 254.55 s [really-safe-money-gen] - Nothing -> Just $ M.insert currency amount m
  12465. 254.55 s [really-safe-money-gen] - Just a -> do
  12466. 254.55 s [really-safe-money-gen] - r <- Amount.add a amount
  12467. 254.55 s [really-safe-money-gen] - Just $
  12468. 254.55 s [really-safe-money-gen] - if r == Amount.zero
  12469. 254.55 s [really-safe-money-gen] - then M.delete currency m
  12470. 254.55 s [really-safe-money-gen] - else M.insert currency r m
  12471. 254.55 s [really-safe-money-gen] + fmap MultiAmount $ case M.lookup currency m of
  12472. 254.55 s [really-safe-money-gen] + Nothing -> Just $ M.insert currency amount m
  12473. 254.55 s [really-safe-money-gen] + Just a -> do
  12474. 254.55 s [really-safe-money-gen] + r <- Amount.add a amount
  12475. 254.55 s [really-safe-money-gen] + Just $
  12476. 254.55 s [really-safe-money-gen] + if r == Amount.zero
  12477. 254.55 s [really-safe-money-gen] + then M.delete currency m
  12478. 254.55 s [really-safe-money-gen] + else M.insert currency r m
  12479. 254.55 s [really-safe-money-gen]
  12480. 254.55 s [really-safe-money-gen] -- | Subtract an 'Amount' from a 'MultiAmount'
  12481. 254.55 s [really-safe-money-gen] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  12482. 254.55 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:101:22-37
  12483. 254.55 s [really-safe-money-gen] @@ -98,14 +98,14 @@
  12484. 254.55 s [really-safe-money-gen] addAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  12485. 254.55 s [really-safe-money-gen] addAmount m _ (Amount 0) = Just m
  12486. 254.55 s [really-safe-money-gen] addAmount (MultiAmount m) currency amount =
  12487. 254.55 s [really-safe-money-gen] - fmap MultiAmount $ case M.lookup currency m of
  12488. 254.55 s [really-safe-money-gen] - Nothing -> Just $ M.insert currency amount m
  12489. 254.55 s [really-safe-money-gen] - Just a -> do
  12490. 254.55 s [really-safe-money-gen] - r <- Amount.add a amount
  12491. 254.55 s [really-safe-money-gen] - Just $
  12492. 254.55 s [really-safe-money-gen] - if r == Amount.zero
  12493. 254.55 s [really-safe-money-gen] - then M.delete currency m
  12494. 254.55 s [really-safe-money-gen] - else M.insert currency r m
  12495. 254.55 s [really-safe-money-gen] + fmap MultiAmount $ case M.lookup currency m of
  12496. 254.55 s [really-safe-money-gen] + Nothing -> Just $ M.insert currency amount m
  12497. 254.55 s [really-safe-money-gen] + Just a -> do
  12498. 254.55 s [really-safe-money-gen] + r <- Amount.add a amount
  12499. 254.55 s [really-safe-money-gen] + Just $
  12500. 254.55 s [really-safe-money-gen] + if r == Amount.zero
  12501. 254.56 s [really-safe-money-gen] + then M.delete currency m
  12502. 254.56 s [really-safe-money-gen] + else M.insert currency r m
  12503. 254.56 s [really-safe-money-gen]
  12504. 254.56 s [really-safe-money-gen] -- | Subtract an 'Amount' from a 'MultiAmount'
  12505. 254.56 s [really-safe-money-gen] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  12506. 254.56 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:73:6-27
  12507. 254.56 s [really-safe-money-gen] @@ -70,7 +70,7 @@
  12508. 254.56 s [really-safe-money-gen]
  12509. 254.56 s [really-safe-money-gen] fromAmount :: currency -> Amount -> MultiAmount currency
  12510. 254.56 s [really-safe-money-gen] fromAmount currency amount =
  12511. 254.56 s [really-safe-money-gen] - if amount == Amount.zero
  12512. 254.56 s [really-safe-money-gen] + if True
  12513. 254.56 s [really-safe-money-gen] then zero
  12514. 254.56 s [really-safe-money-gen] else MultiAmount $ M.singleton currency amount
  12515. 254.56 s [really-safe-money-gen]
  12516. 254.56 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/MultiAmount.hs:106:9-37
  12517. 254.56 s [really-safe-money-gen] @@ -103,9 +103,9 @@
  12518. 254.56 s [really-safe-money-gen] Just a -> do
  12519. 254.56 s [really-safe-money-gen] r <- Amount.add a amount
  12520. 254.56 s [really-safe-money-gen] Just $
  12521. 254.56 s [really-safe-money-gen] - if r == Amount.zero
  12522. 254.56 s [really-safe-money-gen] - then M.delete currency m
  12523. 254.56 s [really-safe-money-gen] - else M.insert currency r m
  12524. 254.56 s [really-safe-money-gen] + if r == Amount.zero
  12525. 254.56 s [really-safe-money-gen] + then M.delete currency m
  12526. 254.56 s [really-safe-money-gen] + else M.insert currency r m
  12527. 254.56 s [really-safe-money-gen]
  12528. 254.56 s [really-safe-money-gen] -- | Subtract an 'Amount' from a 'MultiAmount'
  12529. 254.56 s [really-safe-money-gen] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  12530. 254.56 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:73:6-27
  12531. 254.56 s [really-safe-money-gen] @@ -70,7 +70,7 @@
  12532. 254.56 s [really-safe-money-gen]
  12533. 254.56 s [really-safe-money-gen] fromAmount :: currency -> Amount -> MultiAmount currency
  12534. 254.56 s [really-safe-money-gen] fromAmount currency amount =
  12535. 254.56 s [really-safe-money-gen] - if amount == Amount.zero
  12536. 254.56 s [really-safe-money-gen] + if False
  12537. 254.56 s [really-safe-money-gen] then zero
  12538. 254.56 s [really-safe-money-gen] else MultiAmount $ M.singleton currency amount
  12539. 254.56 s [really-safe-money-gen]
  12540. 254.56 s [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAmount.hs:73:6-27
  12541. 254.56 s [really-safe-money-gen] @@ -70,7 +70,7 @@
  12542. 254.56 s [really-safe-money-gen]
  12543. 254.56 s [really-safe-money-gen] fromAmount :: currency -> Amount -> MultiAmount currency
  12544. 254.56 s [really-safe-money-gen] fromAmount currency amount =
  12545. 254.56 s [really-safe-money-gen] - if amount == Amount.zero
  12546. 254.56 s [really-safe-money-gen] + if not (amount == Amount.zero)
  12547. 254.56 s [really-safe-money-gen] then zero
  12548. 254.56 s [really-safe-money-gen] else MultiAmount $ M.singleton currency amount
  12549. 254.56 s [really-safe-money-gen]
  12550. 254.56 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/MultiAmount.hs:73:3-51
  12551. 254.56 s [really-safe-money-gen] @@ -70,9 +70,9 @@
  12552. 254.56 s [really-safe-money-gen]
  12553. 254.56 s [really-safe-money-gen] fromAmount :: currency -> Amount -> MultiAmount currency
  12554. 254.56 s [really-safe-money-gen] fromAmount currency amount =
  12555. 254.56 s [really-safe-money-gen] - if amount == Amount.zero
  12556. 254.56 s [really-safe-money-gen] - then zero
  12557. 254.56 s [really-safe-money-gen] - else MultiAmount $ M.singleton currency amount
  12558. 254.56 s [really-safe-money-gen] + if amount == Amount.zero
  12559. 254.56 s [really-safe-money-gen] + then zero
  12560. 254.56 s [really-safe-money-gen] + else MultiAmount $ M.singleton currency amount
  12561. 254.56 s [really-safe-money-gen]
  12562. 254.56 s [really-safe-money-gen] -- | No money of any currency
  12563. 254.56 s [really-safe-money-gen] zero :: MultiAmount currency
  12564. 254.56 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:66:13-29
  12565. 254.56 s [really-safe-money-gen] @@ -63,7 +63,7 @@
  12566. 254.56 s [really-safe-money-gen] [ genericValidate ma,
  12567. 254.56 s [really-safe-money-gen] decorateMap m $ \_ a ->
  12568. 254.56 s [really-safe-money-gen] declare "The amount is not zero" $
  12569. 254.56 s [really-safe-money-gen] - a /= Amount.zero
  12570. 254.56 s [really-safe-money-gen] + True
  12571. 254.56 s [really-safe-money-gen] ]
  12572. 254.56 s [really-safe-money-gen]
  12573. 254.56 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  12574. 254.56 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:66:13-29
  12575. 254.56 s [really-safe-money-gen] @@ -63,7 +63,7 @@
  12576. 254.56 s [really-safe-money-gen] [ genericValidate ma,
  12577. 254.56 s [really-safe-money-gen] decorateMap m $ \_ a ->
  12578. 254.57 s [really-safe-money-gen] declare "The amount is not zero" $
  12579. 256.91 s [really-safe-money-gen] - a /= Amount.zero
  12580. 257.01 s [really-safe-money-gen] + False
  12581. 257.01 s [really-safe-money-gen] ]
  12582. 257.01 s [really-safe-money-gen]
  12583. 257.01 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  12584. 257.01 s [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAmount.hs:66:13-29
  12585. 257.01 s [really-safe-money-gen] @@ -63,7 +63,7 @@
  12586. 257.01 s [really-safe-money-gen] [ genericValidate ma,
  12587. 257.01 s [really-safe-money-gen] decorateMap m $ \_ a ->
  12588. 257.01 s [really-safe-money-gen] declare "The amount is not zero" $
  12589. 257.01 s [really-safe-money-gen] - a /= Amount.zero
  12590. 257.01 s [really-safe-money-gen] + not (a /= Amount.zero)
  12591. 257.01 s [really-safe-money-gen] ]
  12592. 257.01 s [really-safe-money-gen]
  12593. 257.01 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  12594. 257.01 s [really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAmount.hs:63:7-8
  12595. 257.01 s [really-safe-money-gen] @@ -60,11 +60,7 @@
  12596. 257.01 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
  12597. 257.01 s [really-safe-money-gen] validate ma@(MultiAmount m) =
  12598. 257.01 s [really-safe-money-gen] mconcat
  12599. 257.01 s [really-safe-money-gen] - [ genericValidate ma,
  12600. 257.01 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  12601. 257.01 s [really-safe-money-gen] - declare "The amount is not zero" $
  12602. 257.01 s [really-safe-money-gen] - a /= Amount.zero
  12603. 257.02 s [really-safe-money-gen] - ]
  12604. 257.02 s [really-safe-money-gen] + []
  12605. 257.02 s [really-safe-money-gen]
  12606. 257.02 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  12607. 257.02 s [really-safe-money-gen]
  12608. 257.02 s [really-safe-money-gen] Testing mutation BoolLit at src/Numeric/DecimalLiteral.hs:396:23-27
  12609. 257.02 s [really-safe-money-gen] @@ -393,5 +393,5 @@
  12610. 257.02 s [really-safe-money-gen] DecimalLiteral mS m e -> DecimalLiteral (go mS) m e
  12611. 257.02 s [really-safe-money-gen] where
  12612. 257.02 s [really-safe-money-gen] go = \case
  12613. 257.02 s [really-safe-money-gen] - Nothing -> Just True
  12614. 257.02 s [really-safe-money-gen] + Nothing -> Just False
  12615. 257.02 s [really-safe-money-gen] s -> s
  12616. 257.02 s [really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAmount.hs:63:7-8
  12617. 257.02 s [really-safe-money-gen] @@ -60,11 +60,11 @@
  12618. 257.02 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
  12619. 257.02 s [really-safe-money-gen] validate ma@(MultiAmount m) =
  12620. 257.02 s [really-safe-money-gen] mconcat
  12621. 257.02 s [really-safe-money-gen] - [ genericValidate ma,
  12622. 257.02 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  12623. 257.02 s [really-safe-money-gen] - declare "The amount is not zero" $
  12624. 257.02 s [really-safe-money-gen] - a /= Amount.zero
  12625. 257.02 s [really-safe-money-gen] - ]
  12626. 257.02 s [really-safe-money-gen] + [ genericValidate ma,
  12627. 257.02 s [really-safe-money-gen] + decorateMap m $ \_ a ->
  12628. 257.02 s [really-safe-money-gen] + declare "The amount is not zero" $
  12629. 257.02 s [really-safe-money-gen] + a /= Amount.zero
  12630. 257.02 s [really-safe-money-gen] + ]
  12631. 257.02 s [really-safe-money-gen]
  12632. 257.02 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  12633. 257.02 s [really-safe-money-gen]
  12634. 257.02 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:368:10-39
  12635. 257.02 s [really-safe-money-gen] @@ -365,7 +365,7 @@
  12636. 257.02 s [really-safe-money-gen] setMinimumDigits wantedDigits dl =
  12637. 257.02 s [really-safe-money-gen] let currentDigits :: Word8
  12638. 257.02 s [really-safe-money-gen] currentDigits = digits dl
  12639. 257.02 s [really-safe-money-gen] - in if wantedDigits <= currentDigits
  12640. 257.02 s [really-safe-money-gen] + in if False
  12641. 257.02 s [really-safe-money-gen] then dl
  12642. 257.02 s [really-safe-money-gen] else increaseDigits (wantedDigits - currentDigits) dl
  12643. 257.02 s [really-safe-money-gen] where
  12644. 257.02 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:368:10-39
  12645. 257.02 s [really-safe-money-gen] @@ -365,7 +365,7 @@
  12646. 257.02 s [really-safe-money-gen] setMinimumDigits wantedDigits dl =
  12647. 257.02 s [really-safe-money-gen] let currentDigits :: Word8
  12648. 257.02 s [really-safe-money-gen] currentDigits = digits dl
  12649. 257.02 s [really-safe-money-gen] - in if wantedDigits <= currentDigits
  12650. 257.02 s [really-safe-money-gen] + in if True
  12651. 257.02 s [really-safe-money-gen] then dl
  12652. 257.02 s [really-safe-money-gen] else increaseDigits (wantedDigits - currentDigits) dl
  12653. 257.02 s [really-safe-money-gen] where
  12654. 257.02 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:368:10-39
  12655. 257.02 s [really-safe-money-gen] @@ -365,7 +365,7 @@
  12656. 257.02 s [really-safe-money-gen] setMinimumDigits wantedDigits dl =
  12657. 257.02 s [really-safe-money-gen] let currentDigits :: Word8
  12658. 257.02 s [really-safe-money-gen] currentDigits = digits dl
  12659. 257.02 s [really-safe-money-gen] - in if wantedDigits <= currentDigits
  12660. 257.02 s [really-safe-money-gen] + in if not (wantedDigits <= currentDigits)
  12661. 257.02 s [really-safe-money-gen] then dl
  12662. 257.02 s [really-safe-money-gen] else increaseDigits (wantedDigits - currentDigits) dl
  12663. 257.02 s [really-safe-money-gen] where
  12664. 257.02 s [really-safe-money-gen] Testing mutation CondFlip at src/Numeric/DecimalLiteral.hs:368:7-62
  12665. 257.02 s [really-safe-money-gen] @@ -365,9 +365,9 @@
  12666. 257.02 s [really-safe-money-gen] setMinimumDigits wantedDigits dl =
  12667. 257.02 s [really-safe-money-gen] let currentDigits :: Word8
  12668. 257.02 s [really-safe-money-gen] currentDigits = digits dl
  12669. 257.02 s [really-safe-money-gen] - in if wantedDigits <= currentDigits
  12670. 257.02 s [really-safe-money-gen] - then dl
  12671. 257.02 s [really-safe-money-gen] - else increaseDigits (wantedDigits - currentDigits) dl
  12672. 257.02 s [really-safe-money-gen] + in if wantedDigits <= currentDigits
  12673. 257.02 s [really-safe-money-gen] + then dl
  12674. 257.02 s [really-safe-money-gen] + else increaseDigits (wantedDigits - currentDigits) dl
  12675. 257.02 s [really-safe-money-gen] where
  12676. 257.02 s [really-safe-money-gen] increaseDigits :: Word8 -> DecimalLiteral -> DecimalLiteral
  12677. 257.02 s [really-safe-money-gen] increaseDigits 0 = id
  12678. 257.02 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:375:80-82
  12679. 257.02 s [really-safe-money-gen] @@ -372,7 +372,7 @@
  12680. 257.02 s [really-safe-money-gen] increaseDigits :: Word8 -> DecimalLiteral -> DecimalLiteral
  12681. 257.02 s [really-safe-money-gen] increaseDigits 0 = id
  12682. 257.02 s [really-safe-money-gen] increaseDigits w = \case
  12683. 257.02 s [really-safe-money-gen] - DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 10) (succ e))
  12684. 257.02 s [really-safe-money-gen] + DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 1) (succ e))
  12685. 257.02 s [really-safe-money-gen]
  12686. 257.02 s [really-safe-money-gen] -- | Ensures that a positive literal has no sign
  12687. 257.02 s [really-safe-money-gen] --
  12688. 257.02 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:375:80-82
  12689. 257.02 s [really-safe-money-gen] @@ -372,7 +372,7 @@
  12690. 257.02 s [really-safe-money-gen] increaseDigits :: Word8 -> DecimalLiteral -> DecimalLiteral
  12691. 257.03 s [really-safe-money-gen] increaseDigits 0 = id
  12692. 257.03 s [really-safe-money-gen] increaseDigits w = \case
  12693. 257.03 s [really-safe-money-gen] - DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 10) (succ e))
  12694. 257.03 s [really-safe-money-gen] + DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 0) (succ e))
  12695. 257.03 s [really-safe-money-gen]
  12696. 257.03 s [really-safe-money-gen] -- | Ensures that a positive literal has no sign
  12697. 257.03 s [really-safe-money-gen] --
  12698. 257.03 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:337:21-22
  12699. 257.03 s [really-safe-money-gen] @@ -334,7 +334,7 @@
  12700. 257.03 s [really-safe-money-gen] pure $ fromIntegral n
  12701. 257.03 s [really-safe-money-gen]
  12702. 257.03 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  12703. 257.03 s [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False
  12704. 257.03 s [really-safe-money-gen] +numSign a = if a >= 1 then Nothing else Just False
  12705. 257.03 s [really-safe-money-gen]
  12706. 257.03 s [really-safe-money-gen] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  12707. 257.03 s [really-safe-money-gen] signSignum = \case
  12708. 257.03 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:337:16-22
  12709. 257.03 s [really-safe-money-gen] @@ -334,7 +334,7 @@
  12710. 257.03 s [really-safe-money-gen] pure $ fromIntegral n
  12711. 257.03 s [really-safe-money-gen]
  12712. 257.03 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  12713. 257.03 s [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False
  12714. 257.03 s [really-safe-money-gen] +numSign a = if True then Nothing else Just False
  12715. 257.03 s [really-safe-money-gen]
  12716. 257.03 s [really-safe-money-gen] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  12717. 257.03 s [really-safe-money-gen] signSignum = \case
  12718. 257.03 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:337:16-22
  12719. 257.03 s [really-safe-money-gen] @@ -334,7 +334,7 @@
  12720. 257.03 s [really-safe-money-gen] pure $ fromIntegral n
  12721. 257.03 s [really-safe-money-gen]
  12722. 257.03 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  12723. 257.03 s [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False
  12724. 257.03 s [really-safe-money-gen] +numSign a = if not (a >= 0) then Nothing else Just False
  12725. 257.03 s [really-safe-money-gen]
  12726. 257.03 s [really-safe-money-gen] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  12727. 257.03 s [really-safe-money-gen] signSignum = \case
  12728. 257.03 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:337:16-22
  12729. 257.03 s [really-safe-money-gen] @@ -334,7 +334,7 @@
  12730. 257.03 s [really-safe-money-gen] pure $ fromIntegral n
  12731. 257.03 s [really-safe-money-gen]
  12732. 257.03 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  12733. 257.03 s [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False
  12734. 257.03 s [really-safe-money-gen] +numSign a = if False then Nothing else Just False
  12735. 257.03 s [really-safe-money-gen]
  12736. 257.03 s [really-safe-money-gen] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  12737. 257.03 s [really-safe-money-gen] signSignum = \case
  12738. 257.03 s [really-safe-money-gen] Testing mutation BoolLit at src/Numeric/DecimalLiteral.hs:337:46-51
  12739. 257.03 s [really-safe-money-gen] @@ -334,7 +334,7 @@
  12740. 257.03 s [really-safe-money-gen] pure $ fromIntegral n
  12741. 257.03 s [really-safe-money-gen]
  12742. 257.03 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  12743. 257.03 s [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False
  12744. 257.03 s [really-safe-money-gen] +numSign a = if a >= 0 then Nothing else Just True
  12745. 257.03 s [really-safe-money-gen]
  12746. 257.03 s [really-safe-money-gen] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  12747. 257.03 s [really-safe-money-gen] signSignum = \case
  12748. 257.03 s [really-safe-money-gen] Testing mutation CondFlip at src/Numeric/DecimalLiteral.hs:337:13-51
  12749. 257.03 s [really-safe-money-gen] @@ -334,7 +334,7 @@
  12750. 257.03 s [really-safe-money-gen] pure $ fromIntegral n
  12751. 257.03 s [really-safe-money-gen]
  12752. 257.03 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  12753. 257.03 s [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False
  12754. 257.03 s [really-safe-money-gen] +numSign a = if a >= 0 then Nothing else Just False
  12755. 257.03 s [really-safe-money-gen]
  12756. 257.03 s [really-safe-money-gen] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  12757. 257.03 s [really-safe-money-gen] signSignum = \case
  12758. 257.03 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46
  12759. 257.03 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  12760. 257.03 s [really-safe-money-gen] toInt :: DecimalLiteral -> Maybe Int
  12761. 257.03 s [really-safe-money-gen] toInt dl = do
  12762. 257.03 s [really-safe-money-gen] n <- toInteger dl
  12763. 257.03 s [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Int)
  12764. 257.03 s [really-safe-money-gen] + guard $ True
  12765. 257.03 s [really-safe-money-gen] guard $ n >= fromIntegral (minBound :: Int)
  12766. 257.03 s [really-safe-money-gen] pure $ fromIntegral n
  12767. 257.03 s [really-safe-money-gen]
  12768. 257.03 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:332:11-46
  12769. 257.03 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  12770. 257.03 s [really-safe-money-gen] toInt :: DecimalLiteral -> Maybe Int
  12771. 257.03 s [really-safe-money-gen] toInt dl = do
  12772. 257.03 s [really-safe-money-gen] n <- toInteger dl
  12773. 257.03 s [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Int)
  12774. 257.03 s [really-safe-money-gen] + guard $ not (n <= fromIntegral (maxBound :: Int))
  12775. 257.03 s [really-safe-money-gen] guard $ n >= fromIntegral (minBound :: Int)
  12776. 257.03 s [really-safe-money-gen] pure $ fromIntegral n
  12777. 257.03 s [really-safe-money-gen]
  12778. 257.03 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46
  12779. 257.03 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  12780. 257.03 s [really-safe-money-gen] toInt :: DecimalLiteral -> Maybe Int
  12781. 257.03 s [really-safe-money-gen] toInt dl = do
  12782. 257.03 s [really-safe-money-gen] n <- toInteger dl
  12783. 257.03 s [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Int)
  12784. 257.03 s [really-safe-money-gen] + guard $ False
  12785. 257.03 s [really-safe-money-gen] guard $ n >= fromIntegral (minBound :: Int)
  12786. 257.03 s [really-safe-money-gen] pure $ fromIntegral n
  12787. 257.03 s [really-safe-money-gen]
  12788. 257.03 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46
  12789. 257.03 s [really-safe-money-gen] @@ -330,7 +330,7 @@
  12790. 257.03 s [really-safe-money-gen] toInt dl = do
  12791. 257.03 s [really-safe-money-gen] n <- toInteger dl
  12792. 257.03 s [really-safe-money-gen] guard $ n <= fromIntegral (maxBound :: Int)
  12793. 257.03 s [really-safe-money-gen] - guard $ n >= fromIntegral (minBound :: Int)
  12794. 257.03 s [really-safe-money-gen] + guard $ True
  12795. 257.03 s [really-safe-money-gen] pure $ fromIntegral n
  12796. 257.03 s [really-safe-money-gen]
  12797. 257.03 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  12798. 257.04 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46
  12799. 257.04 s [really-safe-money-gen] @@ -330,7 +330,7 @@
  12800. 257.04 s [really-safe-money-gen] toInt dl = do
  12801. 257.04 s [really-safe-money-gen] n <- toInteger dl
  12802. 257.04 s [really-safe-money-gen] guard $ n <= fromIntegral (maxBound :: Int)
  12803. 257.04 s [really-safe-money-gen] - guard $ n >= fromIntegral (minBound :: Int)
  12804. 257.04 s [really-safe-money-gen] + guard $ False
  12805. 257.04 s [really-safe-money-gen] pure $ fromIntegral n
  12806. 257.04 s [really-safe-money-gen]
  12807. 257.04 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  12808. 257.04 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:315:67-68
  12809. 257.04 s [really-safe-money-gen] @@ -312,7 +312,7 @@
  12810. 257.04 s [really-safe-money-gen]
  12811. 257.04 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from an 'Integer'
  12812. 257.04 s [really-safe-money-gen] fromInteger :: Integer -> DecimalLiteral
  12813. 257.04 s [really-safe-money-gen] -fromInteger n = DecimalLiteral (numSign n) (fromIntegral (abs n)) 0
  12814. 257.04 s [really-safe-money-gen] +fromInteger n = DecimalLiteral (numSign n) (fromIntegral (abs n)) 1
  12815. 257.04 s [really-safe-money-gen]
  12816. 257.04 s [really-safe-money-gen] -- | Turn a 'DecimalLiteral' into an 'Integer'
  12817. 257.04 s [really-safe-money-gen] toInteger :: DecimalLiteral -> Maybe Integer
  12818. 258.11 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:333:11-46
  12819. 258.11 s [really-safe-money-gen] @@ -330,7 +330,7 @@
  12820. 258.11 s [really-safe-money-gen] toInt dl = do
  12821. 258.11 s [really-safe-money-gen] n <- toInteger dl
  12822. 258.11 s [really-safe-money-gen] guard $ n <= fromIntegral (maxBound :: Int)
  12823. 258.11 s [really-safe-money-gen] - guard $ n >= fromIntegral (minBound :: Int)
  12824. 258.11 s [really-safe-money-gen] + guard $ not (n >= fromIntegral (minBound :: Int))
  12825. 258.11 s [really-safe-money-gen] pure $ fromIntegral n
  12826. 258.11 s [really-safe-money-gen]
  12827. 258.11 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  12828. 258.11 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:304:42-43
  12829. 258.11 s [really-safe-money-gen] @@ -301,7 +301,7 @@
  12830. 258.11 s [really-safe-money-gen]
  12831. 258.11 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Natural'
  12832. 258.11 s [really-safe-money-gen] fromNatural :: Natural -> DecimalLiteral
  12833. 258.11 s [really-safe-money-gen] -fromNatural n = DecimalLiteral Nothing n 0
  12834. 258.11 s [really-safe-money-gen] +fromNatural n = DecimalLiteral Nothing n 1
  12835. 258.11 s [really-safe-money-gen]
  12836. 258.11 s [really-safe-money-gen] -- | Turn a 'DecimalLiteral' into a 'Natural'
  12837. 258.11 s [really-safe-money-gen] toNatural :: DecimalLiteral -> Maybe Natural
  12838. 258.11 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47
  12839. 258.11 s [really-safe-money-gen] @@ -296,7 +296,7 @@
  12840. 258.11 s [really-safe-money-gen] toWord :: DecimalLiteral -> Maybe Word
  12841. 258.11 s [really-safe-money-gen] toWord dl = do
  12842. 258.11 s [really-safe-money-gen] n <- toNatural dl
  12843. 258.11 s [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Word)
  12844. 258.11 s [really-safe-money-gen] + guard $ True
  12845. 258.12 s [really-safe-money-gen] pure $ fromIntegral n
  12846. 258.12 s [really-safe-money-gen]
  12847. 258.12 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Natural'
  12848. 258.12 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47
  12849. 258.12 s [really-safe-money-gen] @@ -296,7 +296,7 @@
  12850. 258.12 s [really-safe-money-gen] toWord :: DecimalLiteral -> Maybe Word
  12851. 258.12 s [really-safe-money-gen] toWord dl = do
  12852. 258.12 s [really-safe-money-gen] n <- toNatural dl
  12853. 258.12 s [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Word)
  12854. 258.12 s [really-safe-money-gen] + guard $ False
  12855. 258.12 s [really-safe-money-gen] pure $ fromIntegral n
  12856. 258.12 s [really-safe-money-gen]
  12857. 258.12 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Natural'
  12858. 258.12 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:299:11-47
  12859. 258.12 s [really-safe-money-gen] @@ -296,7 +296,7 @@
  12860. 258.12 s [really-safe-money-gen] toWord :: DecimalLiteral -> Maybe Word
  12861. 258.12 s [really-safe-money-gen] toWord dl = do
  12862. 258.12 s [really-safe-money-gen] n <- toNatural dl
  12863. 258.12 s [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Word)
  12864. 258.12 s [really-safe-money-gen] + guard $ not (n <= fromIntegral (maxBound :: Word))
  12865. 258.12 s [really-safe-money-gen] pure $ fromIntegral n
  12866. 258.12 s [really-safe-money-gen]
  12867. 258.12 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Natural'
  12868. 258.12 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  12869. 258.12 s [really-safe-money-gen] @@ -286,7 +286,7 @@
  12870. 258.12 s [really-safe-money-gen] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  12871. 258.12 s [really-safe-money-gen] toRatio (DecimalLiteral mSign m e) = case mSign of
  12872. 258.12 s [really-safe-money-gen] Just False -> Nothing
  12873. 258.12 s [really-safe-money-gen] - _ -> Just $ fromIntegral m / (10 ^ e)
  12874. 258.12 s [really-safe-money-gen] + _ -> Just $ fromIntegral m / (0 ^ e)
  12875. 258.12 s [really-safe-money-gen]
  12876. 258.12 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Word'
  12877. 258.12 s [really-safe-money-gen] fromWord :: Word -> DecimalLiteral
  12878. 258.12 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  12879. 258.12 s [really-safe-money-gen] @@ -286,7 +286,7 @@
  12880. 258.12 s [really-safe-money-gen] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  12881. 258.12 s [really-safe-money-gen] toRatio (DecimalLiteral mSign m e) = case mSign of
  12882. 258.12 s [really-safe-money-gen] Just False -> Nothing
  12883. 258.12 s [really-safe-money-gen] - _ -> Just $ fromIntegral m / (10 ^ e)
  12884. 258.12 s [really-safe-money-gen] + _ -> Just $ fromIntegral m / (1 ^ e)
  12885. 258.12 s [really-safe-money-gen]
  12886. 258.12 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Word'
  12887. 258.12 s [really-safe-money-gen] fromWord :: Word -> DecimalLiteral
  12888. 258.12 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  12889. 258.12 s [really-safe-money-gen] @@ -286,7 +286,7 @@
  12890. 258.12 s [really-safe-money-gen] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  12891. 258.12 s [really-safe-money-gen] toRatio (DecimalLiteral mSign m e) = case mSign of
  12892. 258.12 s [really-safe-money-gen] Just False -> Nothing
  12893. 258.12 s [really-safe-money-gen] - _ -> Just $ fromIntegral m / (10 ^ e)
  12894. 258.12 s [really-safe-money-gen] + _ -> Just $ fromIntegral m / (-10 ^ e)
  12895. 258.12 s [really-safe-money-gen]
  12896. 258.12 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Word'
  12897. 258.12 s [really-safe-money-gen] fromWord :: Word -> DecimalLiteral
  12898. 258.12 s [really-safe-money-gen] Testing mutation RemoveCase at src/Numeric/DecimalLiteral.hs:287:38-40
  12899. 258.12 s [really-safe-money-gen] @@ -284,9 +284,9 @@
  12900. 258.12 s [really-safe-money-gen] -- >>> toRatio (DecimalLiteral (Just False) 3 1)
  12901. 258.12 s [really-safe-money-gen] -- Nothing
  12902. 258.12 s [really-safe-money-gen] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  12903. 258.12 s [really-safe-money-gen] -toRatio (DecimalLiteral mSign m e) = case mSign of
  12904. 258.12 s [really-safe-money-gen] - Just False -> Nothing
  12905. 258.12 s [really-safe-money-gen] - _ -> Just $ fromIntegral m / (10 ^ e)
  12906. 258.12 s [really-safe-money-gen] +toRatio (DecimalLiteral mSign m e) = case mSign of
  12907. 258.12 s [really-safe-money-gen] + Just False -> Nothing
  12908. 258.12 s [really-safe-money-gen] + _ -> Just $ fromIntegral m / (10 ^ e)
  12909. 258.12 s [really-safe-money-gen]
  12910. 258.12 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Word'
  12911. 258.12 s [really-safe-money-gen] fromWord :: Word -> DecimalLiteral
  12912. 258.12 s [really-safe-money-gen] Testing mutation RemoveCase at src/Numeric/DecimalLiteral.hs:287:38-40
  12913. 258.12 s [really-safe-money-gen] @@ -284,9 +284,9 @@
  12914. 258.12 s [really-safe-money-gen] -- >>> toRatio (DecimalLiteral (Just False) 3 1)
  12915. 258.12 s [really-safe-money-gen] -- Nothing
  12916. 258.12 s [really-safe-money-gen] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  12917. 258.12 s [really-safe-money-gen] -toRatio (DecimalLiteral mSign m e) = case mSign of
  12918. 258.12 s [really-safe-money-gen] - Just False -> Nothing
  12919. 258.12 s [really-safe-money-gen] - _ -> Just $ fromIntegral m / (10 ^ e)
  12920. 258.12 s [really-safe-money-gen] +toRatio (DecimalLiteral mSign m e) = case mSign of
  12921. 258.12 s [really-safe-money-gen] + Just False -> Nothing
  12922. 258.12 s [really-safe-money-gen] + _ -> Just $ fromIntegral m / (10 ^ e)
  12923. 258.12 s [really-safe-money-gen]
  12924. 258.12 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Word'
  12925. 258.12 s [really-safe-money-gen] fromWord :: Word -> DecimalLiteral
  12926. 258.12 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44
  12927. 258.12 s [really-safe-money-gen] @@ -233,7 +233,7 @@
  12928. 258.13 s [really-safe-money-gen] -- >>> fromRatio (1 % 3)
  12929. 258.13 s [really-safe-money-gen] -- Nothing
  12930. 258.13 s [really-safe-money-gen] fromRatio :: Ratio Natural -> Maybe DecimalLiteral
  12931. 258.13 s [really-safe-money-gen] -fromRatio = fromRationalRepetendLimited 256
  12932. 258.13 s [really-safe-money-gen] +fromRatio = fromRationalRepetendLimited 0
  12933. 258.13 s [really-safe-money-gen] where
  12934. 258.13 s [really-safe-money-gen] fromRationalRepetendLimited ::
  12935. 258.13 s [really-safe-money-gen] -- limit
  12936. 258.13 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44
  12937. 258.13 s [really-safe-money-gen] @@ -233,7 +233,7 @@
  12938. 258.13 s [really-safe-money-gen] -- >>> fromRatio (1 % 3)
  12939. 258.13 s [really-safe-money-gen] -- Nothing
  12940. 258.13 s [really-safe-money-gen] fromRatio :: Ratio Natural -> Maybe DecimalLiteral
  12941. 258.13 s [really-safe-money-gen] -fromRatio = fromRationalRepetendLimited 256
  12942. 258.13 s [really-safe-money-gen] +fromRatio = fromRationalRepetendLimited 1
  12943. 258.13 s [really-safe-money-gen] where
  12944. 258.13 s [really-safe-money-gen] fromRationalRepetendLimited ::
  12945. 258.13 s [really-safe-money-gen] -- limit
  12946. 258.13 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44
  12947. 258.13 s [really-safe-money-gen] @@ -233,7 +233,7 @@
  12948. 258.13 s [really-safe-money-gen] -- >>> fromRatio (1 % 3)
  12949. 258.13 s [really-safe-money-gen] -- Nothing
  12950. 258.13 s [really-safe-money-gen] fromRatio :: Ratio Natural -> Maybe DecimalLiteral
  12951. 258.13 s [really-safe-money-gen] -fromRatio = fromRationalRepetendLimited 256
  12952. 258.13 s [really-safe-money-gen] +fromRatio = fromRationalRepetendLimited -256
  12953. 258.13 s [really-safe-money-gen] where
  12954. 258.13 s [really-safe-money-gen] fromRationalRepetendLimited ::
  12955. 258.13 s [really-safe-money-gen] -- limit
  12956. 258.13 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:244:14-15
  12957. 258.13 s [really-safe-money-gen] @@ -241,7 +241,7 @@
  12958. 258.13 s [really-safe-money-gen] Ratio Natural ->
  12959. 258.13 s [really-safe-money-gen] Maybe DecimalLiteral
  12960. 258.13 s [really-safe-money-gen] fromRationalRepetendLimited l rational
  12961. 258.13 s [really-safe-money-gen] - | d == 0 = Nothing
  12962. 258.13 s [really-safe-money-gen] + | d == 1 = Nothing
  12963. 258.13 s [really-safe-money-gen] | otherwise = toLiteral Nothing <$> longDiv num
  12964. 258.13 s [really-safe-money-gen] where
  12965. 258.13 s [really-safe-money-gen] toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e)
  12966. 258.13 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:244:9-15
  12967. 258.13 s [really-safe-money-gen] @@ -241,7 +241,7 @@
  12968. 258.13 s [really-safe-money-gen] Ratio Natural ->
  12969. 258.13 s [really-safe-money-gen] Maybe DecimalLiteral
  12970. 258.13 s [really-safe-money-gen] fromRationalRepetendLimited l rational
  12971. 258.13 s [really-safe-money-gen] - | d == 0 = Nothing
  12972. 258.13 s [really-safe-money-gen] + | True = Nothing
  12973. 258.13 s [really-safe-money-gen] | otherwise = toLiteral Nothing <$> longDiv num
  12974. 258.13 s [really-safe-money-gen] where
  12975. 258.13 s [really-safe-money-gen] toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e)
  12976. 258.13 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:264:13-26
  12977. 258.13 s [really-safe-money-gen] @@ -261,7 +261,7 @@
  12978. 258.13 s [really-safe-money-gen] Just (c, e)
  12979. 258.13 s [really-safe-money-gen] longDivWithLimit !c !e ns !n
  12980. 258.13 s [really-safe-money-gen] -- If there's a repetend, we can't turn it into a decimal literal
  12981. 258.13 s [really-safe-money-gen] - | S.member n ns = Nothing
  12982. 258.13 s [really-safe-money-gen] + | True = Nothing
  12983. 258.13 s [really-safe-money-gen] -- Over the limit, stop trying
  12984. 258.13 s [really-safe-money-gen] | e >= l = Nothing
  12985. 258.13 s [really-safe-money-gen] | n < d =
  12986. 258.13 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:264:13-26
  12987. 258.13 s [really-safe-money-gen] @@ -261,7 +261,7 @@
  12988. 258.13 s [really-safe-money-gen] Just (c, e)
  12989. 258.13 s [really-safe-money-gen] longDivWithLimit !c !e ns !n
  12990. 258.13 s [really-safe-money-gen] -- If there's a repetend, we can't turn it into a decimal literal
  12991. 258.13 s [really-safe-money-gen] - | S.member n ns = Nothing
  12992. 258.13 s [really-safe-money-gen] + | not (S.member n ns) = Nothing
  12993. 258.13 s [really-safe-money-gen] -- Over the limit, stop trying
  12994. 258.13 s [really-safe-money-gen] | e >= l = Nothing
  12995. 258.13 s [really-safe-money-gen] | n < d =
  12996. 258.13 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:244:9-15
  12997. 258.13 s [really-safe-money-gen] @@ -241,7 +241,7 @@
  12998. 258.13 s [really-safe-money-gen] Ratio Natural ->
  12999. 258.13 s [really-safe-money-gen] Maybe DecimalLiteral
  13000. 258.13 s [really-safe-money-gen] fromRationalRepetendLimited l rational
  13001. 258.13 s [really-safe-money-gen] - | d == 0 = Nothing
  13002. 258.13 s [really-safe-money-gen] + | not (d == 0) = Nothing
  13003. 258.13 s [really-safe-money-gen] | otherwise = toLiteral Nothing <$> longDiv num
  13004. 258.13 s [really-safe-money-gen] where
  13005. 258.13 s [really-safe-money-gen] toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e)
  13006. 258.13 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:266:13-19
  13007. 258.13 s [really-safe-money-gen] @@ -263,7 +263,7 @@
  13008. 258.13 s [really-safe-money-gen] -- If there's a repetend, we can't turn it into a decimal literal
  13009. 258.13 s [really-safe-money-gen] | S.member n ns = Nothing
  13010. 258.13 s [really-safe-money-gen] -- Over the limit, stop trying
  13011. 258.13 s [really-safe-money-gen] - | e >= l = Nothing
  13012. 258.13 s [really-safe-money-gen] + | not (e >= l) = Nothing
  13013. 258.13 s [really-safe-money-gen] | n < d =
  13014. 258.13 s [really-safe-money-gen] let !ns' = S.insert n ns
  13015. 258.13 s [really-safe-money-gen] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  13016. 258.13 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:266:13-19
  13017. 258.13 s [really-safe-money-gen] @@ -263,7 +263,7 @@
  13018. 258.13 s [really-safe-money-gen] -- If there's a repetend, we can't turn it into a decimal literal
  13019. 258.13 s [really-safe-money-gen] | S.member n ns = Nothing
  13020. 258.13 s [really-safe-money-gen] -- Over the limit, stop trying
  13021. 258.13 s [really-safe-money-gen] - | e >= l = Nothing
  13022. 258.13 s [really-safe-money-gen] + | True = Nothing
  13023. 258.13 s [really-safe-money-gen] | n < d =
  13024. 258.13 s [really-safe-money-gen] let !ns' = S.insert n ns
  13025. 258.13 s [really-safe-money-gen] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  13026. 258.13 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:267:13-18
  13027. 258.13 s [really-safe-money-gen] @@ -264,7 +264,7 @@
  13028. 258.13 s [really-safe-money-gen] | S.member n ns = Nothing
  13029. 258.13 s [really-safe-money-gen] -- Over the limit, stop trying
  13030. 258.13 s [really-safe-money-gen] | e >= l = Nothing
  13031. 258.13 s [really-safe-money-gen] - | n < d =
  13032. 258.13 s [really-safe-money-gen] + | not (n < d) =
  13033. 258.13 s [really-safe-money-gen] let !ns' = S.insert n ns
  13034. 258.13 s [really-safe-money-gen] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  13035. 258.14 s [really-safe-money-gen] | otherwise =
  13036. 258.14 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:267:13-18
  13037. 258.14 s [really-safe-money-gen] @@ -264,7 +264,7 @@
  13038. 258.14 s [really-safe-money-gen] | S.member n ns = Nothing
  13039. 258.14 s [really-safe-money-gen] -- Over the limit, stop trying
  13040. 259.69 s [really-safe-money-gen] | e >= l = Nothing
  13041. 259.69 s [really-safe-money-gen] - | n < d =
  13042. 259.69 s [really-safe-money-gen] + | True =
  13043. 259.69 s [really-safe-money-gen] let !ns' = S.insert n ns
  13044. 259.69 s [really-safe-money-gen] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  13045. 259.69 s [really-safe-money-gen] | otherwise =
  13046. 259.70 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:269:41-43
  13047. 259.70 s [really-safe-money-gen] @@ -266,7 +266,7 @@
  13048. 259.70 s [really-safe-money-gen] | e >= l = Nothing
  13049. 259.70 s [really-safe-money-gen] | n < d =
  13050. 259.70 s [really-safe-money-gen] let !ns' = S.insert n ns
  13051. 259.70 s [really-safe-money-gen] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  13052. 259.70 s [really-safe-money-gen] + in longDivWithLimit (c * 0) (succ e) ns' (n * 10)
  13053. 259.70 s [really-safe-money-gen] | otherwise =
  13054. 259.70 s [really-safe-money-gen] let (q, r') = n `quotRem` d
  13055. 259.70 s [really-safe-money-gen] in longDivWithLimit (c + q) e ns r'
  13056. 259.70 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:269:41-43
  13057. 259.70 s [really-safe-money-gen] @@ -266,7 +266,7 @@
  13058. 259.70 s [really-safe-money-gen] | e >= l = Nothing
  13059. 259.70 s [really-safe-money-gen] | n < d =
  13060. 259.70 s [really-safe-money-gen] let !ns' = S.insert n ns
  13061. 259.70 s [really-safe-money-gen] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  13062. 259.70 s [really-safe-money-gen] + in longDivWithLimit (c * 1) (succ e) ns' (n * 10)
  13063. 259.70 s [really-safe-money-gen] | otherwise =
  13064. 259.70 s [really-safe-money-gen] let (q, r') = n `quotRem` d
  13065. 259.70 s [really-safe-money-gen] in longDivWithLimit (c + q) e ns r'
  13066. 259.70 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:269:63-65
  13067. 259.70 s [really-safe-money-gen] @@ -266,7 +266,7 @@
  13068. 259.70 s [really-safe-money-gen] | e >= l = Nothing
  13069. 259.70 s [really-safe-money-gen] | n < d =
  13070. 259.70 s [really-safe-money-gen] let !ns' = S.insert n ns
  13071. 259.70 s [really-safe-money-gen] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  13072. 259.70 s [really-safe-money-gen] + in longDivWithLimit (c * 10) (succ e) ns' (n * 1)
  13073. 259.70 s [really-safe-money-gen] | otherwise =
  13074. 259.70 s [really-safe-money-gen] let (q, r') = n `quotRem` d
  13075. 259.70 s [really-safe-money-gen] in longDivWithLimit (c + q) e ns r'
  13076. 259.70 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:269:63-65
  13077. 259.70 s [really-safe-money-gen] @@ -266,7 +266,7 @@
  13078. 259.70 s [really-safe-money-gen] | e >= l = Nothing
  13079. 259.70 s [really-safe-money-gen] | n < d =
  13080. 259.70 s [really-safe-money-gen] let !ns' = S.insert n ns
  13081. 259.70 s [really-safe-money-gen] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  13082. 259.70 s [really-safe-money-gen] + in longDivWithLimit (c * 10) (succ e) ns' (n * 0)
  13083. 259.70 s [really-safe-money-gen] | otherwise =
  13084. 259.70 s [really-safe-money-gen] let (q, r') = n `quotRem` d
  13085. 259.70 s [really-safe-money-gen] in longDivWithLimit (c + q) e ns r'
  13086. 259.70 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:252:38-39
  13087. 259.70 s [really-safe-money-gen] @@ -249,7 +249,7 @@
  13088. 259.70 s [really-safe-money-gen] num = numerator rational
  13089. 259.70 s [really-safe-money-gen]
  13090. 259.70 s [really-safe-money-gen] longDiv :: Natural -> Maybe (Natural, Int)
  13091. 259.70 s [really-safe-money-gen] - longDiv = longDivWithLimit 0 0 S.empty
  13092. 259.70 s [really-safe-money-gen] + longDiv = longDivWithLimit 0 1 S.empty
  13093. 259.70 s [really-safe-money-gen]
  13094. 259.70 s [really-safe-money-gen] longDivWithLimit ::
  13095. 259.70 s [really-safe-money-gen] Natural ->
  13096. 259.70 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:223:39-41
  13097. 259.70 s [really-safe-money-gen] @@ -220,7 +220,7 @@
  13098. 259.70 s [really-safe-money-gen] -- (-3) % 10
  13099. 259.70 s [really-safe-money-gen] toRational :: DecimalLiteral -> Rational
  13100. 259.70 s [really-safe-money-gen] toRational (DecimalLiteral mSign m e) =
  13101. 259.70 s [really-safe-money-gen] - signSignum mSign (fromIntegral m / (10 ^ e))
  13102. 259.70 s [really-safe-money-gen] + signSignum mSign (fromIntegral m / (0 ^ e))
  13103. 259.70 s [really-safe-money-gen]
  13104. 259.70 s [really-safe-money-gen] -- | Parse a 'DecimalLiteral' from a 'Ratio Natural'
  13105. 259.70 s [really-safe-money-gen] --
  13106. 259.70 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:252:36-37
  13107. 259.70 s [really-safe-money-gen] @@ -249,7 +249,7 @@
  13108. 259.70 s [really-safe-money-gen] num = numerator rational
  13109. 259.70 s [really-safe-money-gen]
  13110. 259.70 s [really-safe-money-gen] longDiv :: Natural -> Maybe (Natural, Int)
  13111. 259.70 s [really-safe-money-gen] - longDiv = longDivWithLimit 0 0 S.empty
  13112. 259.70 s [really-safe-money-gen] + longDiv = longDivWithLimit 1 0 S.empty
  13113. 259.70 s [really-safe-money-gen]
  13114. 259.70 s [really-safe-money-gen] longDivWithLimit ::
  13115. 259.70 s [really-safe-money-gen] Natural ->
  13116. 259.70 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:223:39-41
  13117. 259.70 s [really-safe-money-gen] @@ -220,7 +220,7 @@
  13118. 259.70 s [really-safe-money-gen] -- (-3) % 10
  13119. 259.70 s [really-safe-money-gen] toRational :: DecimalLiteral -> Rational
  13120. 259.70 s [really-safe-money-gen] toRational (DecimalLiteral mSign m e) =
  13121. 259.71 s [really-safe-money-gen] - signSignum mSign (fromIntegral m / (10 ^ e))
  13122. 259.71 s [really-safe-money-gen] + signSignum mSign (fromIntegral m / (1 ^ e))
  13123. 259.71 s [really-safe-money-gen]
  13124. 259.71 s [really-safe-money-gen] -- | Parse a 'DecimalLiteral' from a 'Ratio Natural'
  13125. 259.71 s [really-safe-money-gen] --
  13126. 259.71 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:223:39-41
  13127. 259.71 s [really-safe-money-gen] @@ -220,7 +220,7 @@
  13128. 259.71 s [really-safe-money-gen] -- (-3) % 10
  13129. 259.71 s [really-safe-money-gen] toRational :: DecimalLiteral -> Rational
  13130. 259.71 s [really-safe-money-gen] toRational (DecimalLiteral mSign m e) =
  13131. 259.71 s [really-safe-money-gen] - signSignum mSign (fromIntegral m / (10 ^ e))
  13132. 259.71 s [really-safe-money-gen] + signSignum mSign (fromIntegral m / (-10 ^ e))
  13133. 259.71 s [really-safe-money-gen]
  13134. 259.71 s [really-safe-money-gen] -- | Parse a 'DecimalLiteral' from a 'Ratio Natural'
  13135. 259.71 s [really-safe-money-gen] --
  13136. 259.71 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:208:5-10
  13137. 259.71 s [really-safe-money-gen] @@ -205,7 +205,7 @@
  13138. 259.71 s [really-safe-money-gen] -- Nothing
  13139. 259.71 s [really-safe-money-gen] fromRational :: Rational -> Maybe DecimalLiteral
  13140. 259.71 s [really-safe-money-gen] fromRational (n :% d)
  13141. 259.71 s [really-safe-money-gen] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  13142. 259.71 s [really-safe-money-gen] + | True = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  13143. 259.71 s [really-safe-money-gen] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  13144. 259.71 s [really-safe-money-gen]
  13145. 259.71 s [really-safe-money-gen] -- | Turn a 'DecimalLiteral' into a 'Rational'
  13146. 259.71 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:208:9-10
  13147. 259.71 s [really-safe-money-gen] @@ -205,7 +205,7 @@
  13148. 259.71 s [really-safe-money-gen] -- Nothing
  13149. 259.71 s [really-safe-money-gen] fromRational :: Rational -> Maybe DecimalLiteral
  13150. 259.71 s [really-safe-money-gen] fromRational (n :% d)
  13151. 259.71 s [really-safe-money-gen] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  13152. 259.71 s [really-safe-money-gen] + | n < 1 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  13153. 259.71 s [really-safe-money-gen] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  13154. 259.71 s [really-safe-money-gen]
  13155. 259.71 s [really-safe-money-gen] -- | Turn a 'DecimalLiteral' into a 'Rational'
  13156. 259.71 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:208:5-10
  13157. 259.71 s [really-safe-money-gen] @@ -205,7 +205,7 @@
  13158. 259.71 s [really-safe-money-gen] -- Nothing
  13159. 259.71 s [really-safe-money-gen] fromRational :: Rational -> Maybe DecimalLiteral
  13160. 259.71 s [really-safe-money-gen] fromRational (n :% d)
  13161. 259.71 s [really-safe-money-gen] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  13162. 259.71 s [really-safe-money-gen] + | not (n < 0) = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  13163. 259.71 s [really-safe-money-gen] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  13164. 259.71 s [really-safe-money-gen]
  13165. 259.71 s [really-safe-money-gen] -- | Turn a 'DecimalLiteral' into a 'Rational'
  13166. 259.71 s [really-safe-money-gen] Testing mutation BoolLit at src/Numeric/DecimalLiteral.hs:208:62-67
  13167. 259.71 s [really-safe-money-gen] @@ -205,7 +205,7 @@
  13168. 259.71 s [really-safe-money-gen] -- Nothing
  13169. 259.71 s [really-safe-money-gen] fromRational :: Rational -> Maybe DecimalLiteral
  13170. 259.71 s [really-safe-money-gen] fromRational (n :% d)
  13171. 259.71 s [really-safe-money-gen] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  13172. 259.71 s [really-safe-money-gen] + | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just True) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  13173. 259.71 s [really-safe-money-gen] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  13174. 259.71 s [really-safe-money-gen]
  13175. 259.71 s [really-safe-money-gen] -- | Turn a 'DecimalLiteral' into a 'Rational'
  13176. 259.71 s [really-safe-money-gen] Testing mutation ListLit at src/Numeric/DecimalLiteral.hs:186:15-25
  13177. 259.71 s [really-safe-money-gen] @@ -183,7 +183,7 @@
  13178. 259.71 s [really-safe-money-gen]
  13179. 259.71 s [really-safe-money-gen] goFrac m e = reverse (go e (reverse (show m)))
  13180. 259.71 s [really-safe-money-gen] go :: Word8 -> String -> String
  13181. 259.71 s [really-safe-money-gen] - go 0 [] = ['.', '0']
  13182. 259.71 s [really-safe-money-gen] + go 0 [] = []
  13183. 259.71 s [really-safe-money-gen] go 0 s = '.' : s
  13184. 259.71 s [really-safe-money-gen] go e [] = '0' : go (pred e) []
  13185. 259.71 s [really-safe-money-gen] go e (c : cs) = c : go (pred e) cs
  13186. 259.71 s [really-safe-money-gen] Testing mutation ListLit at src/Numeric/DecimalLiteral.hs:186:15-25
  13187. 259.71 s [really-safe-money-gen] @@ -183,7 +183,7 @@
  13188. 259.71 s [really-safe-money-gen]
  13189. 259.71 s [really-safe-money-gen] goFrac m e = reverse (go e (reverse (show m)))
  13190. 259.71 s [really-safe-money-gen] go :: Word8 -> String -> String
  13191. 259.71 s [really-safe-money-gen] - go 0 [] = ['.', '0']
  13192. 259.71 s [really-safe-money-gen] + go 0 [] = ['.', '0']
  13193. 259.71 s [really-safe-money-gen] go 0 s = '.' : s
  13194. 259.71 s [really-safe-money-gen] go e [] = '0' : go (pred e) []
  13195. 259.71 s [really-safe-money-gen] go e (c : cs) = c : go (pred e) cs
  13196. 259.71 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30
  13197. 259.71 s [really-safe-money-gen] @@ -142,7 +142,7 @@
  13198. 259.71 s [really-safe-money-gen] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  13199. 259.71 s [really-safe-money-gen] parseDigits f z = do
  13200. 259.71 s [really-safe-money-gen] c <- ReadP.satisfy Char.isDigit
  13201. 259.71 s [really-safe-money-gen] - let digit = Char.ord c - 48
  13202. 259.71 s [really-safe-money-gen] + let digit = Char.ord c - 0
  13203. 259.71 s [really-safe-money-gen] case f z digit of
  13204. 259.71 s [really-safe-money-gen] Nothing -> fail "Failed to step the first digit"
  13205. 259.71 s [really-safe-money-gen] Just a -> ReadP.look >>= go a
  13206. 259.71 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30
  13207. 259.71 s [really-safe-money-gen] @@ -142,7 +142,7 @@
  13208. 259.71 s [really-safe-money-gen] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  13209. 259.71 s [really-safe-money-gen] parseDigits f z = do
  13210. 259.71 s [really-safe-money-gen] c <- ReadP.satisfy Char.isDigit
  13211. 259.71 s [really-safe-money-gen] - let digit = Char.ord c - 48
  13212. 259.71 s [really-safe-money-gen] + let digit = Char.ord c - 1
  13213. 259.71 s [really-safe-money-gen] case f z digit of
  13214. 259.71 s [really-safe-money-gen] Nothing -> fail "Failed to step the first digit"
  13215. 259.71 s [really-safe-money-gen] Just a -> ReadP.look >>= go a
  13216. 259.71 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30
  13217. 259.71 s [really-safe-money-gen] @@ -142,7 +142,7 @@
  13218. 259.71 s [really-safe-money-gen] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  13219. 259.71 s [really-safe-money-gen] parseDigits f z = do
  13220. 259.71 s [really-safe-money-gen] c <- ReadP.satisfy Char.isDigit
  13221. 259.71 s [really-safe-money-gen] - let digit = Char.ord c - 48
  13222. 259.71 s [really-safe-money-gen] + let digit = Char.ord c - -48
  13223. 259.71 s [really-safe-money-gen] case f z digit of
  13224. 259.71 s [really-safe-money-gen] Nothing -> fail "Failed to step the first digit"
  13225. 259.71 s [really-safe-money-gen] Just a -> ReadP.look >>= go a
  13226. 259.71 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:152:9-23
  13227. 259.71 s [really-safe-money-gen] @@ -149,7 +149,7 @@
  13228. 259.71 s [really-safe-money-gen] where
  13229. 259.71 s [really-safe-money-gen] go !a [] = return a
  13230. 259.71 s [really-safe-money-gen] go !a (c : cs)
  13231. 259.71 s [really-safe-money-gen] - | Char.isDigit c = do
  13232. 259.71 s [really-safe-money-gen] + | True = do
  13233. 259.71 s [really-safe-money-gen] _ <- ReadP.get
  13234. 259.71 s [really-safe-money-gen] let digit = Char.ord c - 48
  13235. 259.71 s [really-safe-money-gen] case f a digit of
  13236. 259.71 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:152:9-23
  13237. 259.71 s [really-safe-money-gen] @@ -149,7 +149,7 @@
  13238. 259.71 s [really-safe-money-gen] where
  13239. 259.71 s [really-safe-money-gen] go !a [] = return a
  13240. 259.71 s [really-safe-money-gen] go !a (c : cs)
  13241. 259.71 s [really-safe-money-gen] - | Char.isDigit c = do
  13242. 259.71 s [really-safe-money-gen] + | not (Char.isDigit c) = do
  13243. 259.71 s [really-safe-money-gen] _ <- ReadP.get
  13244. 259.71 s [really-safe-money-gen] let digit = Char.ord c - 48
  13245. 259.71 s [really-safe-money-gen] case f a digit of
  13246. 259.71 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:154:36-38
  13247. 259.71 s [really-safe-money-gen] @@ -151,7 +151,7 @@
  13248. 259.71 s [really-safe-money-gen] go !a (c : cs)
  13249. 261.41 s [really-safe-money-gen] | Char.isDigit c = do
  13250. 261.41 s [really-safe-money-gen] _ <- ReadP.get
  13251. 261.41 s [really-safe-money-gen] - let digit = Char.ord c - 48
  13252. 261.41 s [really-safe-money-gen] + let digit = Char.ord c - 0
  13253. 261.41 s [really-safe-money-gen] case f a digit of
  13254. 261.41 s [really-safe-money-gen] Nothing -> fail "Failed to step the digit"
  13255. 261.41 s [really-safe-money-gen] Just a' -> go a' cs
  13256. 261.41 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:154:36-38
  13257. 261.41 s [really-safe-money-gen] @@ -151,7 +151,7 @@
  13258. 261.41 s [really-safe-money-gen] go !a (c : cs)
  13259. 261.41 s [really-safe-money-gen] | Char.isDigit c = do
  13260. 261.41 s [really-safe-money-gen] _ <- ReadP.get
  13261. 261.41 s [really-safe-money-gen] - let digit = Char.ord c - 48
  13262. 261.41 s [really-safe-money-gen] + let digit = Char.ord c - 1
  13263. 261.41 s [really-safe-money-gen] case f a digit of
  13264. 261.41 s [really-safe-money-gen] Nothing -> fail "Failed to step the digit"
  13265. 261.41 s [really-safe-money-gen] Just a' -> go a' cs
  13266. 261.41 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:154:36-38
  13267. 261.41 s [really-safe-money-gen] @@ -151,7 +151,7 @@
  13268. 261.41 s [really-safe-money-gen] go !a (c : cs)
  13269. 261.41 s [really-safe-money-gen] | Char.isDigit c = do
  13270. 261.41 s [really-safe-money-gen] _ <- ReadP.get
  13271. 261.41 s [really-safe-money-gen] - let digit = Char.ord c - 48
  13272. 261.41 s [really-safe-money-gen] + let digit = Char.ord c - -48
  13273. 261.41 s [really-safe-money-gen] case f a digit of
  13274. 261.41 s [really-safe-money-gen] Nothing -> fail "Failed to step the digit"
  13275. 261.41 s [really-safe-money-gen] Just a' -> go a' cs
  13276. 261.41 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:139:27-29
  13277. 261.41 s [really-safe-money-gen] @@ -136,7 +136,7 @@
  13278. 261.41 s [really-safe-money-gen] stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  13279. 261.41 s [really-safe-money-gen]
  13280. 261.41 s [really-safe-money-gen] step :: Natural -> Int -> Maybe Natural
  13281. 261.41 s [really-safe-money-gen] -step a digit = Just $ a * 10 + fromIntegral digit
  13282. 261.41 s [really-safe-money-gen] +step a digit = Just $ a * 0 + fromIntegral digit
  13283. 261.42 s [really-safe-money-gen] {-# INLINE step #-}
  13284. 261.42 s [really-safe-money-gen]
  13285. 261.42 s [really-safe-money-gen] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  13286. 261.42 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:136:39-41
  13287. 261.42 s [really-safe-money-gen] @@ -133,7 +133,7 @@
  13288. 261.42 s [really-safe-money-gen]
  13289. 261.42 s [really-safe-money-gen] stepFraction :: (Natural, Word8) -> Int -> Maybe (Natural, Word8)
  13290. 261.42 s [really-safe-money-gen] stepFraction (_, 255) _ = Nothing
  13291. 261.42 s [really-safe-money-gen] -stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  13292. 261.42 s [really-safe-money-gen] +stepFraction (m, e) digit = Just (m * 0 + fromIntegral digit, succ e)
  13293. 261.42 s [really-safe-money-gen]
  13294. 261.42 s [really-safe-money-gen] step :: Natural -> Int -> Maybe Natural
  13295. 261.42 s [really-safe-money-gen] step a digit = Just $ a * 10 + fromIntegral digit
  13296. 261.42 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:139:27-29
  13297. 261.42 s [really-safe-money-gen] @@ -136,7 +136,7 @@
  13298. 261.42 s [really-safe-money-gen] stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  13299. 261.42 s [really-safe-money-gen]
  13300. 261.42 s [really-safe-money-gen] step :: Natural -> Int -> Maybe Natural
  13301. 261.42 s [really-safe-money-gen] -step a digit = Just $ a * 10 + fromIntegral digit
  13302. 261.42 s [really-safe-money-gen] +step a digit = Just $ a * 1 + fromIntegral digit
  13303. 261.42 s [really-safe-money-gen] {-# INLINE step #-}
  13304. 261.42 s [really-safe-money-gen]
  13305. 261.42 s [really-safe-money-gen] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  13306. 261.42 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-30
  13307. 261.42 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  13308. 261.42 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13309. 261.42 s [really-safe-money-gen] decimalLiteralP = do
  13310. 261.42 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  13311. 261.42 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  13312. 261.42 s [really-safe-money-gen] + isSignChar c = True || c == '+'
  13313. 261.42 s [really-safe-money-gen]
  13314. 261.42 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13315. 261.42 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13316. 261.42 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:136:39-41
  13317. 261.42 s [really-safe-money-gen] @@ -133,7 +133,7 @@
  13318. 261.42 s [really-safe-money-gen]
  13319. 261.42 s [really-safe-money-gen] stepFraction :: (Natural, Word8) -> Int -> Maybe (Natural, Word8)
  13320. 261.42 s [really-safe-money-gen] stepFraction (_, 255) _ = Nothing
  13321. 261.42 s [really-safe-money-gen] -stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  13322. 261.42 s [really-safe-money-gen] +stepFraction (m, e) digit = Just (m * 1 + fromIntegral digit, succ e)
  13323. 261.42 s [really-safe-money-gen]
  13324. 261.42 s [really-safe-money-gen] step :: Natural -> Int -> Maybe Natural
  13325. 261.42 s [really-safe-money-gen] step a digit = Just $ a * 10 + fromIntegral digit
  13326. 261.42 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:119:22-30
  13327. 261.42 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  13328. 261.42 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13329. 261.42 s [really-safe-money-gen] decimalLiteralP = do
  13330. 261.42 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  13331. 261.42 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  13332. 261.42 s [really-safe-money-gen] + isSignChar c = not (c == '-') || c == '+'
  13333. 261.42 s [really-safe-money-gen]
  13334. 261.42 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13335. 261.42 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13336. 261.42 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-30
  13337. 261.42 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  13338. 261.42 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13339. 261.42 s [really-safe-money-gen] decimalLiteralP = do
  13340. 261.42 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  13341. 261.42 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  13342. 261.42 s [really-safe-money-gen] + isSignChar c = False || c == '+'
  13343. 261.42 s [really-safe-money-gen]
  13344. 261.42 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13345. 261.42 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13346. 261.42 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:34-42
  13347. 261.42 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  13348. 261.42 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13349. 261.42 s [really-safe-money-gen] decimalLiteralP = do
  13350. 261.42 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  13351. 261.42 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  13352. 261.42 s [really-safe-money-gen] + isSignChar c = c == '-' || True
  13353. 261.42 s [really-safe-money-gen]
  13354. 261.42 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13355. 261.42 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13356. 261.42 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:34-42
  13357. 261.42 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  13358. 261.42 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13359. 261.42 s [really-safe-money-gen] decimalLiteralP = do
  13360. 261.42 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  13361. 261.42 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  13362. 261.42 s [really-safe-money-gen] + isSignChar c = c == '-' || False
  13363. 261.42 s [really-safe-money-gen]
  13364. 261.42 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13365. 261.42 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13366. 261.42 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-42
  13367. 261.42 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  13368. 261.42 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13369. 261.42 s [really-safe-money-gen] decimalLiteralP = do
  13370. 261.42 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  13371. 261.42 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  13372. 261.42 s [really-safe-money-gen] + isSignChar c = True
  13373. 261.42 s [really-safe-money-gen]
  13374. 261.42 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13375. 261.42 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13376. 261.42 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:119:34-42
  13377. 261.42 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  13378. 261.42 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13379. 261.42 s [really-safe-money-gen] decimalLiteralP = do
  13380. 261.42 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  13381. 261.42 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  13382. 261.42 s [really-safe-money-gen] + isSignChar c = c == '-' || not (c == '+')
  13383. 261.42 s [really-safe-money-gen]
  13384. 261.42 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13385. 261.42 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13386. 261.42 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-42
  13387. 261.42 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  13388. 261.42 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13389. 261.42 s [really-safe-money-gen] decimalLiteralP = do
  13390. 261.42 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  13391. 261.42 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  13392. 261.42 s [really-safe-money-gen] + isSignChar c = False
  13393. 261.42 s [really-safe-money-gen]
  13394. 261.42 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13395. 261.42 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13396. 261.42 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:119:22-42
  13397. 261.43 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  13398. 261.43 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13399. 261.43 s [really-safe-money-gen] decimalLiteralP = do
  13400. 261.43 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  13401. 261.43 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  13402. 261.43 s [really-safe-money-gen] + isSignChar c = not (c == '-' || c == '+')
  13403. 261.43 s [really-safe-money-gen]
  13404. 261.43 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13405. 261.43 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13406. 261.43 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:123:19-34
  13407. 261.43 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  13408. 261.43 s [really-safe-money-gen]
  13409. 261.43 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13410. 261.43 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13411. 261.43 s [really-safe-money-gen] - pure $ Just $ signChar == '+'
  13412. 261.43 s [really-safe-money-gen] + pure $ Just $ True
  13413. 261.43 s [really-safe-money-gen]
  13414. 261.43 s [really-safe-money-gen] units <- parseDigits step 0
  13415. 261.43 s [really-safe-money-gen]
  13416. 261.43 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:123:19-34
  13417. 261.43 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  13418. 261.43 s [really-safe-money-gen]
  13419. 261.43 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13420. 261.43 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13421. 261.43 s [really-safe-money-gen] - pure $ Just $ signChar == '+'
  13422. 261.43 s [really-safe-money-gen] + pure $ Just $ not (signChar == '+')
  13423. 261.43 s [really-safe-money-gen]
  13424. 261.43 s [really-safe-money-gen] units <- parseDigits step 0
  13425. 261.43 s [really-safe-money-gen]
  13426. 261.43 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:123:19-34
  13427. 261.43 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  13428. 261.43 s [really-safe-money-gen]
  13429. 261.43 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13430. 261.43 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13431. 261.43 s [really-safe-money-gen] - pure $ Just $ signChar == '+'
  13432. 261.43 s [really-safe-money-gen] + pure $ Just $ False
  13433. 261.43 s [really-safe-money-gen]
  13434. 261.43 s [really-safe-money-gen] units <- parseDigits step 0
  13435. 261.43 s [really-safe-money-gen]
  13436. 261.43 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:125:29-30
  13437. 261.43 s [really-safe-money-gen] @@ -122,7 +122,7 @@
  13438. 261.43 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13439. 261.43 s [really-safe-money-gen] pure $ Just $ signChar == '+'
  13440. 261.43 s [really-safe-money-gen]
  13441. 261.43 s [really-safe-money-gen] - units <- parseDigits step 0
  13442. 261.43 s [really-safe-money-gen] + units <- parseDigits step 1
  13443. 261.43 s [really-safe-money-gen]
  13444. 261.43 s [really-safe-money-gen] ReadP.option (DecimalLiteral mSign units 0) $ do
  13445. 261.43 s [really-safe-money-gen] _ <- ReadP.satisfy (== '.')
  13446. 261.43 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:127:44-45
  13447. 261.43 s [really-safe-money-gen] @@ -124,7 +124,7 @@
  13448. 261.43 s [really-safe-money-gen]
  13449. 261.43 s [really-safe-money-gen] units <- parseDigits step 0
  13450. 261.43 s [really-safe-money-gen]
  13451. 261.43 s [really-safe-money-gen] - ReadP.option (DecimalLiteral mSign units 0) $ do
  13452. 261.43 s [really-safe-money-gen] + ReadP.option (DecimalLiteral mSign units 1) $ do
  13453. 261.43 s [really-safe-money-gen] _ <- ReadP.satisfy (== '.')
  13454. 261.43 s [really-safe-money-gen]
  13455. 261.43 s [really-safe-money-gen] (m, e) <- parseDigits stepFraction (units, 0)
  13456. 261.43 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:130:48-49
  13457. 261.43 s [really-safe-money-gen] @@ -127,7 +127,7 @@
  13458. 261.43 s [really-safe-money-gen] ReadP.option (DecimalLiteral mSign units 0) $ do
  13459. 261.43 s [really-safe-money-gen] _ <- ReadP.satisfy (== '.')
  13460. 261.43 s [really-safe-money-gen]
  13461. 261.43 s [really-safe-money-gen] - (m, e) <- parseDigits stepFraction (units, 0)
  13462. 261.43 s [really-safe-money-gen] + (m, e) <- parseDigits stepFraction (units, 1)
  13463. 261.43 s [really-safe-money-gen]
  13464. 261.43 s [really-safe-money-gen] pure $ DecimalLiteral mSign m e
  13465. 261.43 s [really-safe-money-gen]
  13466. 261.43 s [really-safe-money-gen] Testing mutation RemoveCase at src/Numeric/DecimalLiteral.hs:112:17-21
  13467. 261.43 s [really-safe-money-gen] @@ -109,9 +109,9 @@
  13468. 261.43 s [really-safe-money-gen]
  13469. 261.43 s [really-safe-money-gen] -- | Like 'fromString' but in a 'MonadFail'
  13470. 261.43 s [really-safe-money-gen] fromStringM :: (MonadFail m) => String -> m DecimalLiteral
  13471. 261.43 s [really-safe-money-gen] -fromStringM s = case Numeric.DecimalLiteral.fromString s of
  13472. 261.43 s [really-safe-money-gen] - Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  13473. 261.43 s [really-safe-money-gen] - Just dl -> pure dl
  13474. 261.43 s [really-safe-money-gen] +fromStringM s = case Numeric.DecimalLiteral.fromString s of
  13475. 261.43 s [really-safe-money-gen] + Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  13476. 261.43 s [really-safe-money-gen] + Just dl -> pure dl
  13477. 261.43 s [really-safe-money-gen]
  13478. 261.43 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13479. 261.43 s [really-safe-money-gen] decimalLiteralP = do
  13480. 261.43 s [really-safe-money-gen] Testing mutation RemoveCase at src/Numeric/DecimalLiteral.hs:86:18-18
  13481. 261.43 s [really-safe-money-gen] @@ -83,9 +83,9 @@
  13482. 261.43 s [really-safe-money-gen] instance NFData DecimalLiteral
  13483. 261.43 s [really-safe-money-gen]
  13484. 262.89 s [really-safe-money-gen] instance IsString DecimalLiteral where
  13485. 262.89 s [really-safe-money-gen] - fromString s = case Numeric.DecimalLiteral.fromString s of
  13486. 263.02 s [really-safe-money-gen] - Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  13487. 263.02 s [really-safe-money-gen] - Just dl -> dl
  13488. 263.02 s [really-safe-money-gen] + fromString s = case Numeric.DecimalLiteral.fromString s of
  13489. 263.02 s [really-safe-money-gen] + Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  13490. 263.02 s [really-safe-money-gen] + Just dl -> dl
  13491. 263.02 s [really-safe-money-gen]
  13492. 263.02 s [really-safe-money-gen] -- | Parse a decimal literal from a string
  13493. 263.02 s [really-safe-money-gen] --
  13494. 263.02 s [really-safe-money-gen] Testing mutation RemoveCase at src/Numeric/DecimalLiteral.hs:86:18-18
  13495. 263.02 s [really-safe-money-gen] @@ -83,9 +83,9 @@
  13496. 263.02 s [really-safe-money-gen] instance NFData DecimalLiteral
  13497. 263.02 s [really-safe-money-gen]
  13498. 263.02 s [really-safe-money-gen] instance IsString DecimalLiteral where
  13499. 263.02 s [really-safe-money-gen] - fromString s = case Numeric.DecimalLiteral.fromString s of
  13500. 263.02 s [really-safe-money-gen] - Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  13501. 263.02 s [really-safe-money-gen] - Just dl -> dl
  13502. 263.02 s [really-safe-money-gen] + fromString s = case Numeric.DecimalLiteral.fromString s of
  13503. 263.02 s [really-safe-money-gen] + Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  13504. 263.02 s [really-safe-money-gen] + Just dl -> dl
  13505. 263.02 s [really-safe-money-gen]
  13506. 263.02 s [really-safe-money-gen] -- | Parse a decimal literal from a string
  13507. 263.02 s [really-safe-money-gen] --
  13508. 263.02 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:801:36-38
  13509. 263.02 s [really-safe-money-gen] @@ -798,7 +798,7 @@
  13510. 263.02 s [really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  13511. 263.02 s [really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor qf) =
  13512. 263.02 s [really-safe-money-gen] let decimals :: Int
  13513. 263.02 s [really-safe-money-gen] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  13514. 263.02 s [really-safe-money-gen] + decimals = ceiling $ logBase 0 (fromIntegral qf :: Float)
  13515. 263.02 s [really-safe-money-gen] in printf "%%0.%df" decimals
  13516. 263.02 s [really-safe-money-gen]
  13517. 263.02 s [really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  13518. 263.03 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:801:36-38
  13519. 263.03 s [really-safe-money-gen] @@ -798,7 +798,7 @@
  13520. 263.03 s [really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  13521. 263.03 s [really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor qf) =
  13522. 263.03 s [really-safe-money-gen] let decimals :: Int
  13523. 263.03 s [really-safe-money-gen] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  13524. 263.03 s [really-safe-money-gen] + decimals = ceiling $ logBase 1 (fromIntegral qf :: Float)
  13525. 263.03 s [really-safe-money-gen] in printf "%%0.%df" decimals
  13526. 263.03 s [really-safe-money-gen]
  13527. 263.03 s [really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  13528. 263.03 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:801:36-38
  13529. 263.03 s [really-safe-money-gen] @@ -798,7 +798,7 @@
  13530. 263.03 s [really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  13531. 263.03 s [really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor qf) =
  13532. 263.03 s [really-safe-money-gen] let decimals :: Int
  13533. 263.03 s [really-safe-money-gen] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  13534. 263.03 s [really-safe-money-gen] + decimals = ceiling $ logBase -10 (fromIntegral qf :: Float)
  13535. 263.03 s [really-safe-money-gen] in printf "%%0.%df" decimals
  13536. 263.03 s [really-safe-money-gen]
  13537. 263.03 s [really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  13538. 263.03 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:569:18-19
  13539. 263.03 s [really-safe-money-gen] @@ -566,7 +566,7 @@
  13540. 263.03 s [really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  13541. 263.03 s [really-safe-money-gen] smallerChunk :: Amount
  13542. 263.03 s [really-safe-money-gen] smallerChunk = Amount smallerChunkSize
  13543. 263.03 s [really-safe-money-gen] - in if rest == 0
  13544. 263.03 s [really-safe-money-gen] + in if rest == 1
  13545. 263.03 s [really-safe-money-gen] then DistributedIntoEqualChunks f smallerChunk
  13546. 263.03 s [really-safe-money-gen] else
  13547. 263.03 s [really-safe-money-gen] let -- This 'fromIntegral' is theoretically not safe, but it's
  13548. 263.03 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:569:10-19
  13549. 263.03 s [really-safe-money-gen] @@ -566,7 +566,7 @@
  13550. 263.03 s [really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  13551. 263.03 s [really-safe-money-gen] smallerChunk :: Amount
  13552. 263.03 s [really-safe-money-gen] smallerChunk = Amount smallerChunkSize
  13553. 263.03 s [really-safe-money-gen] - in if rest == 0
  13554. 263.03 s [really-safe-money-gen] + in if True
  13555. 263.03 s [really-safe-money-gen] then DistributedIntoEqualChunks f smallerChunk
  13556. 263.03 s [really-safe-money-gen] else
  13557. 263.03 s [really-safe-money-gen] let -- This 'fromIntegral' is theoretically not safe, but it's
  13558. 263.03 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:569:10-19
  13559. 263.03 s [really-safe-money-gen] @@ -566,7 +566,7 @@
  13560. 263.03 s [really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  13561. 263.03 s [really-safe-money-gen] smallerChunk :: Amount
  13562. 263.03 s [really-safe-money-gen] smallerChunk = Amount smallerChunkSize
  13563. 263.03 s [really-safe-money-gen] - in if rest == 0
  13564. 263.03 s [really-safe-money-gen] + in if False
  13565. 263.03 s [really-safe-money-gen] then DistributedIntoEqualChunks f smallerChunk
  13566. 263.03 s [really-safe-money-gen] else
  13567. 263.03 s [really-safe-money-gen] let -- This 'fromIntegral' is theoretically not safe, but it's
  13568. 263.03 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:569:7-29
  13569. 263.03 s [really-safe-money-gen] @@ -566,22 +566,22 @@
  13570. 263.03 s [really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  13571. 263.03 s [really-safe-money-gen] smallerChunk :: Amount
  13572. 263.03 s [really-safe-money-gen] smallerChunk = Amount smallerChunkSize
  13573. 263.03 s [really-safe-money-gen] - in if rest == 0
  13574. 263.03 s [really-safe-money-gen] - then DistributedIntoEqualChunks f smallerChunk
  13575. 263.03 s [really-safe-money-gen] - else
  13576. 263.03 s [really-safe-money-gen] - let -- This 'fromIntegral' is theoretically not safe, but it's
  13577. 263.03 s [really-safe-money-gen] - -- necessarily smaller than f so it will fit.
  13578. 263.03 s [really-safe-money-gen] - numberOfLargerChunks :: Word32
  13579. 263.03 s [really-safe-money-gen] - numberOfLargerChunks = (fromIntegral :: Word64 -> Word32) rest
  13580. 263.03 s [really-safe-money-gen] - numberOfSmallerChunks :: Word32
  13581. 263.03 s [really-safe-money-gen] - numberOfSmallerChunks = f - numberOfLargerChunks
  13582. 263.03 s [really-safe-money-gen] - largerChunk :: Amount
  13583. 263.04 s [really-safe-money-gen] - largerChunk = Amount $ succ smallerChunkSize
  13584. 263.04 s [really-safe-money-gen] - in DistributedIntoUnequalChunks
  13585. 263.04 s [really-safe-money-gen] - numberOfLargerChunks
  13586. 263.04 s [really-safe-money-gen] - largerChunk
  13587. 263.04 s [really-safe-money-gen] - numberOfSmallerChunks
  13588. 263.04 s [really-safe-money-gen] - smallerChunk
  13589. 263.04 s [really-safe-money-gen] + in if rest == 0
  13590. 263.04 s [really-safe-money-gen] + then DistributedIntoEqualChunks f smallerChunk
  13591. 263.04 s [really-safe-money-gen] + else
  13592. 263.04 s [really-safe-money-gen] + let -- This 'fromIntegral' is theoretically not safe, but it's
  13593. 263.04 s [really-safe-money-gen] + -- necessarily smaller than f so it will fit.
  13594. 263.04 s [really-safe-money-gen] + numberOfLargerChunks :: Word32
  13595. 263.04 s [really-safe-money-gen] + numberOfLargerChunks = (fromIntegral :: Word64 -> Word32) rest
  13596. 263.04 s [really-safe-money-gen] + numberOfSmallerChunks :: Word32
  13597. 263.04 s [really-safe-money-gen] + numberOfSmallerChunks = f - numberOfLargerChunks
  13598. 263.04 s [really-safe-money-gen] + largerChunk :: Amount
  13599. 263.04 s [really-safe-money-gen] + largerChunk = Amount $ succ smallerChunkSize
  13600. 263.04 s [really-safe-money-gen] + in DistributedIntoUnequalChunks
  13601. 263.04 s [really-safe-money-gen] + numberOfLargerChunks
  13602. 263.04 s [really-safe-money-gen] + largerChunk
  13603. 263.04 s [really-safe-money-gen] + numberOfSmallerChunks
  13604. 263.04 s [really-safe-money-gen] + smallerChunk
  13605. 263.04 s [really-safe-money-gen]
  13606. 263.04 s [really-safe-money-gen] -- | The result of 'distribute'
  13607. 263.04 s [really-safe-money-gen] type AmountDistribution = Distribution Amount
  13608. 263.04 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:569:10-19
  13609. 263.04 s [really-safe-money-gen] @@ -566,7 +566,7 @@
  13610. 263.04 s [really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  13611. 263.04 s [really-safe-money-gen] smallerChunk :: Amount
  13612. 263.04 s [really-safe-money-gen] smallerChunk = Amount smallerChunkSize
  13613. 263.04 s [really-safe-money-gen] - in if rest == 0
  13614. 263.04 s [really-safe-money-gen] + in if not (rest == 0)
  13615. 263.04 s [really-safe-money-gen] then DistributedIntoEqualChunks f smallerChunk
  13616. 263.04 s [really-safe-money-gen] else
  13617. 263.04 s [really-safe-money-gen] let -- This 'fromIntegral' is theoretically not safe, but it's
  13618. 263.04 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:544:10-23
  13619. 263.04 s [really-safe-money-gen] @@ -541,7 +541,7 @@
  13620. 263.04 s [really-safe-money-gen] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  13621. 263.04 s [really-safe-money-gen] r :: Integer
  13622. 263.04 s [really-safe-money-gen] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  13623. 263.04 s [really-safe-money-gen] - in if r > maxBoundI
  13624. 263.04 s [really-safe-money-gen] + in if True
  13625. 263.04 s [really-safe-money-gen] then Nothing
  13626. 263.04 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13627. 263.04 s [really-safe-money-gen]
  13628. 263.04 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:544:10-23
  13629. 263.04 s [really-safe-money-gen] @@ -541,7 +541,7 @@
  13630. 263.04 s [really-safe-money-gen] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  13631. 263.04 s [really-safe-money-gen] r :: Integer
  13632. 263.04 s [really-safe-money-gen] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  13633. 263.04 s [really-safe-money-gen] - in if r > maxBoundI
  13634. 263.04 s [really-safe-money-gen] + in if False
  13635. 263.04 s [really-safe-money-gen] then Nothing
  13636. 263.04 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13637. 263.04 s [really-safe-money-gen]
  13638. 263.04 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:544:10-23
  13639. 263.04 s [really-safe-money-gen] @@ -541,7 +541,7 @@
  13640. 263.04 s [really-safe-money-gen] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  13641. 263.04 s [really-safe-money-gen] r :: Integer
  13642. 263.04 s [really-safe-money-gen] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  13643. 263.04 s [really-safe-money-gen] - in if r > maxBoundI
  13644. 263.04 s [really-safe-money-gen] + in if not (r > maxBoundI)
  13645. 263.04 s [really-safe-money-gen] then Nothing
  13646. 263.04 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13647. 263.04 s [really-safe-money-gen]
  13648. 263.04 s [really-safe-money-gen] Testing mutation RemoveCase at src/Numeric/DecimalLiteral.hs:112:17-21
  13649. 263.04 s [really-safe-money-gen] @@ -109,9 +109,9 @@
  13650. 263.04 s [really-safe-money-gen]
  13651. 263.04 s [really-safe-money-gen] -- | Like 'fromString' but in a 'MonadFail'
  13652. 263.04 s [really-safe-money-gen] fromStringM :: (MonadFail m) => String -> m DecimalLiteral
  13653. 263.04 s [really-safe-money-gen] -fromStringM s = case Numeric.DecimalLiteral.fromString s of
  13654. 263.04 s [really-safe-money-gen] - Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  13655. 263.04 s [really-safe-money-gen] - Just dl -> pure dl
  13656. 263.04 s [really-safe-money-gen] +fromStringM s = case Numeric.DecimalLiteral.fromString s of
  13657. 263.04 s [really-safe-money-gen] + Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  13658. 263.04 s [really-safe-money-gen] + Just dl -> pure dl
  13659. 263.04 s [really-safe-money-gen]
  13660. 263.04 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13661. 263.04 s [really-safe-money-gen] decimalLiteralP = do
  13662. 263.04 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:544:7-66
  13663. 263.04 s [really-safe-money-gen] @@ -541,9 +541,9 @@
  13664. 263.04 s [really-safe-money-gen] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  13665. 263.04 s [really-safe-money-gen] r :: Integer
  13666. 263.05 s [really-safe-money-gen] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  13667. 263.05 s [really-safe-money-gen] - in if r > maxBoundI
  13668. 263.05 s [really-safe-money-gen] - then Nothing
  13669. 263.05 s [really-safe-money-gen] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13670. 263.05 s [really-safe-money-gen] + in if r > maxBoundI
  13671. 263.05 s [really-safe-money-gen] + then Nothing
  13672. 263.05 s [really-safe-money-gen] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13673. 263.05 s [really-safe-money-gen]
  13674. 263.05 s [really-safe-money-gen] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  13675. 263.05 s [really-safe-money-gen] --
  13676. 263.05 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:518:14-15
  13677. 263.05 s [really-safe-money-gen] @@ -515,7 +515,7 @@
  13678. 263.05 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  13679. 264.98 s [really-safe-money-gen] r :: Integer
  13680. 264.98 s [really-safe-money-gen] r = i1 - i2
  13681. 264.98 s [really-safe-money-gen] - in if r < 0
  13682. 264.98 s [really-safe-money-gen] + in if r < 1
  13683. 264.98 s [really-safe-money-gen] then Nothing
  13684. 264.98 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13685. 264.98 s [really-safe-money-gen]
  13686. 264.98 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:518:10-15
  13687. 264.98 s [really-safe-money-gen] @@ -515,7 +515,7 @@
  13688. 264.98 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  13689. 264.98 s [really-safe-money-gen] r :: Integer
  13690. 264.98 s [really-safe-money-gen] r = i1 - i2
  13691. 264.98 s [really-safe-money-gen] - in if r < 0
  13692. 264.98 s [really-safe-money-gen] + in if True
  13693. 264.98 s [really-safe-money-gen] then Nothing
  13694. 264.98 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13695. 264.98 s [really-safe-money-gen]
  13696. 264.98 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:518:10-15
  13697. 264.98 s [really-safe-money-gen] @@ -515,7 +515,7 @@
  13698. 264.98 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  13699. 264.98 s [really-safe-money-gen] r :: Integer
  13700. 264.98 s [really-safe-money-gen] r = i1 - i2
  13701. 264.98 s [really-safe-money-gen] - in if r < 0
  13702. 264.98 s [really-safe-money-gen] + in if False
  13703. 264.98 s [really-safe-money-gen] then Nothing
  13704. 264.98 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13705. 264.98 s [really-safe-money-gen]
  13706. 264.98 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:518:10-15
  13707. 264.98 s [really-safe-money-gen] @@ -515,7 +515,7 @@
  13708. 264.98 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  13709. 264.98 s [really-safe-money-gen] r :: Integer
  13710. 264.98 s [really-safe-money-gen] r = i1 - i2
  13711. 264.98 s [really-safe-money-gen] - in if r < 0
  13712. 264.98 s [really-safe-money-gen] + in if not (r < 0)
  13713. 264.98 s [really-safe-money-gen] then Nothing
  13714. 264.98 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13715. 264.99 s [really-safe-money-gen]
  13716. 264.99 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:518:7-66
  13717. 264.99 s [really-safe-money-gen] @@ -515,9 +515,9 @@
  13718. 264.99 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  13719. 264.99 s [really-safe-money-gen] r :: Integer
  13720. 264.99 s [really-safe-money-gen] r = i1 - i2
  13721. 264.99 s [really-safe-money-gen] - in if r < 0
  13722. 264.99 s [really-safe-money-gen] - then Nothing
  13723. 264.99 s [really-safe-money-gen] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13724. 264.99 s [really-safe-money-gen] + in if r < 0
  13725. 264.99 s [really-safe-money-gen] + then Nothing
  13726. 264.99 s [really-safe-money-gen] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13727. 264.99 s [really-safe-money-gen]
  13728. 264.99 s [really-safe-money-gen] -- | Multiply an amount of money by an integer scalar
  13729. 264.99 s [really-safe-money-gen] --
  13730. 264.99 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:476:10-23
  13731. 264.99 s [really-safe-money-gen] @@ -473,7 +473,7 @@
  13732. 264.99 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  13733. 264.99 s [really-safe-money-gen] r :: Integer
  13734. 264.99 s [really-safe-money-gen] r = i1 + i2
  13735. 264.99 s [really-safe-money-gen] - in if r > maxBoundI
  13736. 264.99 s [really-safe-money-gen] + in if True
  13737. 264.99 s [really-safe-money-gen] then Nothing
  13738. 264.99 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13739. 264.99 s [really-safe-money-gen]
  13740. 264.99 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:476:10-23
  13741. 264.99 s [really-safe-money-gen] @@ -473,7 +473,7 @@
  13742. 264.99 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  13743. 264.99 s [really-safe-money-gen] r :: Integer
  13744. 264.99 s [really-safe-money-gen] r = i1 + i2
  13745. 264.99 s [really-safe-money-gen] - in if r > maxBoundI
  13746. 264.99 s [really-safe-money-gen] + in if False
  13747. 264.99 s [really-safe-money-gen] then Nothing
  13748. 264.99 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13749. 264.99 s [really-safe-money-gen]
  13750. 264.99 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:476:10-23
  13751. 264.99 s [really-safe-money-gen] @@ -473,7 +473,7 @@
  13752. 264.99 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  13753. 264.99 s [really-safe-money-gen] r :: Integer
  13754. 264.99 s [really-safe-money-gen] r = i1 + i2
  13755. 264.99 s [really-safe-money-gen] - in if r > maxBoundI
  13756. 264.99 s [really-safe-money-gen] + in if not (r > maxBoundI)
  13757. 264.99 s [really-safe-money-gen] then Nothing
  13758. 264.99 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13759. 264.99 s [really-safe-money-gen]
  13760. 264.99 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:476:7-66
  13761. 264.99 s [really-safe-money-gen] @@ -473,9 +473,9 @@
  13762. 264.99 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  13763. 264.99 s [really-safe-money-gen] r :: Integer
  13764. 264.99 s [really-safe-money-gen] r = i1 + i2
  13765. 264.99 s [really-safe-money-gen] - in if r > maxBoundI
  13766. 264.99 s [really-safe-money-gen] - then Nothing
  13767. 264.99 s [really-safe-money-gen] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13768. 264.99 s [really-safe-money-gen] + in if r > maxBoundI
  13769. 264.99 s [really-safe-money-gen] + then Nothing
  13770. 264.99 s [really-safe-money-gen] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13771. 264.99 s [really-safe-money-gen]
  13772. 264.99 s [really-safe-money-gen] -- | Add a number of amounts of money together.
  13773. 264.99 s [really-safe-money-gen] --
  13774. 264.99 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:388:5-16
  13775. 264.99 s [really-safe-money-gen] @@ -385,7 +385,7 @@
  13776. 264.99 s [really-safe-money-gen] -- Nothing
  13777. 264.99 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  13778. 264.99 s [really-safe-money-gen] fromRational (QuantisationFactor qf) r
  13779. 264.99 s [really-safe-money-gen] - | isInvalid r = Nothing
  13780. 264.99 s [really-safe-money-gen] + | True = Nothing
  13781. 264.99 s [really-safe-money-gen] | r < 0 = Nothing
  13782. 264.99 s [really-safe-money-gen] | otherwise =
  13783. 264.99 s [really-safe-money-gen] let resultRational :: Rational
  13784. 264.99 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:388:5-16
  13785. 264.99 s [really-safe-money-gen] @@ -385,7 +385,7 @@
  13786. 264.99 s [really-safe-money-gen] -- Nothing
  13787. 264.99 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  13788. 264.99 s [really-safe-money-gen] fromRational (QuantisationFactor qf) r
  13789. 264.99 s [really-safe-money-gen] - | isInvalid r = Nothing
  13790. 264.99 s [really-safe-money-gen] + | not (isInvalid r) = Nothing
  13791. 264.99 s [really-safe-money-gen] | r < 0 = Nothing
  13792. 264.99 s [really-safe-money-gen] | otherwise =
  13793. 264.99 s [really-safe-money-gen] let resultRational :: Rational
  13794. 264.99 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:389:9-10
  13795. 264.99 s [really-safe-money-gen] @@ -386,7 +386,7 @@
  13796. 264.99 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  13797. 264.99 s [really-safe-money-gen] fromRational (QuantisationFactor qf) r
  13798. 264.99 s [really-safe-money-gen] | isInvalid r = Nothing
  13799. 264.99 s [really-safe-money-gen] - | r < 0 = Nothing
  13800. 264.99 s [really-safe-money-gen] + | r < 1 = Nothing
  13801. 264.99 s [really-safe-money-gen] | otherwise =
  13802. 264.99 s [really-safe-money-gen] let resultRational :: Rational
  13803. 265.00 s [really-safe-money-gen] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  13804. 265.00 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:389:5-10
  13805. 265.00 s [really-safe-money-gen] @@ -386,7 +386,7 @@
  13806. 265.00 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  13807. 265.00 s [really-safe-money-gen] fromRational (QuantisationFactor qf) r
  13808. 265.00 s [really-safe-money-gen] | isInvalid r = Nothing
  13809. 265.00 s [really-safe-money-gen] - | r < 0 = Nothing
  13810. 265.00 s [really-safe-money-gen] + | True = Nothing
  13811. 265.00 s [really-safe-money-gen] | otherwise =
  13812. 265.00 s [really-safe-money-gen] let resultRational :: Rational
  13813. 265.00 s [really-safe-money-gen] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  13814. 265.00 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:389:5-10
  13815. 265.00 s [really-safe-money-gen] @@ -386,7 +386,7 @@
  13816. 265.00 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  13817. 265.00 s [really-safe-money-gen] fromRational (QuantisationFactor qf) r
  13818. 265.00 s [really-safe-money-gen] | isInvalid r = Nothing
  13819. 265.00 s [really-safe-money-gen] - | r < 0 = Nothing
  13820. 265.00 s [really-safe-money-gen] + | not (r < 0) = Nothing
  13821. 265.00 s [really-safe-money-gen] | otherwise =
  13822. 265.00 s [really-safe-money-gen] let resultRational :: Rational
  13823. 265.00 s [really-safe-money-gen] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  13824. 265.00 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:397:14-31
  13825. 265.00 s [really-safe-money-gen] @@ -394,7 +394,7 @@
  13826. 265.00 s [really-safe-money-gen] ceiled = (ceiling :: Rational -> Natural) resultRational
  13827. 265.00 s [really-safe-money-gen] floored :: Natural
  13828. 265.00 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  13829. 265.00 s [really-safe-money-gen] - in if ceiled == floored
  13830. 265.00 s [really-safe-money-gen] + in if True
  13831. 265.00 s [really-safe-money-gen] then
  13832. 265.00 s [really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13833. 265.00 s [really-safe-money-gen] then Nothing
  13834. 265.00 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:397:14-31
  13835. 265.00 s [really-safe-money-gen] @@ -394,7 +394,7 @@
  13836. 265.00 s [really-safe-money-gen] ceiled = (ceiling :: Rational -> Natural) resultRational
  13837. 265.00 s [really-safe-money-gen] floored :: Natural
  13838. 265.00 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  13839. 265.00 s [really-safe-money-gen] - in if ceiled == floored
  13840. 265.00 s [really-safe-money-gen] + in if False
  13841. 265.00 s [really-safe-money-gen] then
  13842. 265.00 s [really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13843. 265.00 s [really-safe-money-gen] then Nothing
  13844. 265.00 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:397:14-31
  13845. 265.00 s [really-safe-money-gen] @@ -394,7 +394,7 @@
  13846. 265.00 s [really-safe-money-gen] ceiled = (ceiling :: Rational -> Natural) resultRational
  13847. 265.00 s [really-safe-money-gen] floored :: Natural
  13848. 265.00 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  13849. 265.00 s [really-safe-money-gen] - in if ceiled == floored
  13850. 265.00 s [really-safe-money-gen] + in if not (ceiled == floored)
  13851. 265.00 s [really-safe-money-gen] then
  13852. 265.00 s [really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13853. 265.00 s [really-safe-money-gen] then Nothing
  13854. 265.00 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:399:18-83
  13855. 265.00 s [really-safe-money-gen] @@ -396,7 +396,7 @@
  13856. 265.00 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  13857. 265.00 s [really-safe-money-gen] in if ceiled == floored
  13858. 265.00 s [really-safe-money-gen] then
  13859. 265.00 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13860. 265.00 s [really-safe-money-gen] + if True
  13861. 265.00 s [really-safe-money-gen] then Nothing
  13862. 265.00 s [really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
  13863. 265.00 s [really-safe-money-gen] else Nothing
  13864. 265.00 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:399:18-83
  13865. 265.00 s [really-safe-money-gen] @@ -396,7 +396,7 @@
  13866. 265.00 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  13867. 265.00 s [really-safe-money-gen] in if ceiled == floored
  13868. 265.00 s [really-safe-money-gen] then
  13869. 265.00 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13870. 265.00 s [really-safe-money-gen] + if False
  13871. 265.00 s [really-safe-money-gen] then Nothing
  13872. 265.00 s [really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
  13873. 265.00 s [really-safe-money-gen] else Nothing
  13874. 265.00 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:399:18-83
  13875. 265.00 s [really-safe-money-gen] @@ -396,7 +396,7 @@
  13876. 265.00 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  13877. 265.00 s [really-safe-money-gen] in if ceiled == floored
  13878. 265.00 s [really-safe-money-gen] then
  13879. 265.00 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13880. 265.00 s [really-safe-money-gen] + if not (ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64))
  13881. 265.00 s [really-safe-money-gen] then Nothing
  13882. 265.00 s [really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
  13883. 265.00 s [really-safe-money-gen] else Nothing
  13884. 265.00 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:399:15-57
  13885. 265.00 s [really-safe-money-gen] @@ -396,9 +396,9 @@
  13886. 265.00 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  13887. 265.00 s [really-safe-money-gen] in if ceiled == floored
  13888. 265.00 s [really-safe-money-gen] then
  13889. 265.00 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13890. 265.00 s [really-safe-money-gen] - then Nothing
  13891. 265.00 s [really-safe-money-gen] - else Just $ Amount (fromIntegral ceiled)
  13892. 265.00 s [really-safe-money-gen] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13893. 265.00 s [really-safe-money-gen] + then Nothing
  13894. 265.00 s [really-safe-money-gen] + else Just $ Amount (fromIntegral ceiled)
  13895. 265.00 s [really-safe-money-gen] else Nothing
  13896. 265.01 s [really-safe-money-gen]
  13897. 265.01 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  13898. 265.01 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:320:9-10
  13899. 265.01 s [really-safe-money-gen] @@ -317,7 +317,7 @@
  13900. 265.01 s [really-safe-money-gen] Double ->
  13901. 265.01 s [really-safe-money-gen] Maybe Amount
  13902. 265.01 s [really-safe-money-gen] fromDouble (QuantisationFactor qf) d
  13903. 265.01 s [really-safe-money-gen] - | d < 0 = Nothing
  13904. 265.01 s [really-safe-money-gen] + | d < 1 = Nothing
  13905. 265.01 s [really-safe-money-gen] | otherwise =
  13906. 265.01 s [really-safe-money-gen] let resultDouble :: Double
  13907. 265.01 s [really-safe-money-gen] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  13908. 267.42 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:397:11-25
  13909. 267.42 s [really-safe-money-gen] @@ -394,12 +394,12 @@
  13910. 267.42 s [really-safe-money-gen] ceiled = (ceiling :: Rational -> Natural) resultRational
  13911. 267.42 s [really-safe-money-gen] floored :: Natural
  13912. 267.42 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  13913. 267.42 s [really-safe-money-gen] - in if ceiled == floored
  13914. 267.42 s [really-safe-money-gen] - then
  13915. 267.42 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13916. 267.42 s [really-safe-money-gen] - then Nothing
  13917. 267.42 s [really-safe-money-gen] - else Just $ Amount (fromIntegral ceiled)
  13918. 267.42 s [really-safe-money-gen] - else Nothing
  13919. 267.42 s [really-safe-money-gen] + in if ceiled == floored
  13920. 267.42 s [really-safe-money-gen] + then
  13921. 267.42 s [really-safe-money-gen] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13922. 267.42 s [really-safe-money-gen] + then Nothing
  13923. 267.42 s [really-safe-money-gen] + else Just $ Amount (fromIntegral ceiled)
  13924. 267.42 s [really-safe-money-gen] + else Nothing
  13925. 267.42 s [really-safe-money-gen]
  13926. 267.42 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  13927. 267.42 s [really-safe-money-gen] --
  13928. 267.42 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:320:5-10
  13929. 267.42 s [really-safe-money-gen] @@ -317,7 +317,7 @@
  13930. 267.42 s [really-safe-money-gen] Double ->
  13931. 267.42 s [really-safe-money-gen] Maybe Amount
  13932. 267.42 s [really-safe-money-gen] fromDouble (QuantisationFactor qf) d
  13933. 267.42 s [really-safe-money-gen] - | d < 0 = Nothing
  13934. 267.42 s [really-safe-money-gen] + | True = Nothing
  13935. 267.42 s [really-safe-money-gen] | otherwise =
  13936. 267.42 s [really-safe-money-gen] let resultDouble :: Double
  13937. 267.42 s [really-safe-money-gen] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  13938. 267.42 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:320:5-10
  13939. 267.42 s [really-safe-money-gen] @@ -317,7 +317,7 @@
  13940. 267.42 s [really-safe-money-gen] Double ->
  13941. 267.42 s [really-safe-money-gen] Maybe Amount
  13942. 267.43 s [really-safe-money-gen] fromDouble (QuantisationFactor qf) d
  13943. 267.43 s [really-safe-money-gen] - | d < 0 = Nothing
  13944. 267.43 s [really-safe-money-gen] + | not (d < 0) = Nothing
  13945. 267.43 s [really-safe-money-gen] | otherwise =
  13946. 267.43 s [really-safe-money-gen] let resultDouble :: Double
  13947. 267.43 s [really-safe-money-gen] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  13948. 267.43 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:327:9-16
  13949. 267.43 s [really-safe-money-gen] @@ -324,7 +324,7 @@
  13950. 267.43 s [really-safe-money-gen] in go resultDouble
  13951. 267.43 s [really-safe-money-gen] where
  13952. 267.43 s [really-safe-money-gen] go resultDouble
  13953. 267.43 s [really-safe-money-gen] - | isNaN d = Nothing
  13954. 267.43 s [really-safe-money-gen] + | True = Nothing
  13955. 267.43 s [really-safe-money-gen] | isInfinite d = Nothing
  13956. 267.43 s [really-safe-money-gen] | otherwise =
  13957. 267.43 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  13958. 267.43 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:328:9-21
  13959. 267.43 s [really-safe-money-gen] @@ -325,7 +325,7 @@
  13960. 267.43 s [really-safe-money-gen] where
  13961. 267.43 s [really-safe-money-gen] go resultDouble
  13962. 267.43 s [really-safe-money-gen] | isNaN d = Nothing
  13963. 267.43 s [really-safe-money-gen] - | isInfinite d = Nothing
  13964. 267.43 s [really-safe-money-gen] + | True = Nothing
  13965. 267.43 s [really-safe-money-gen] | otherwise =
  13966. 267.43 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  13967. 267.43 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  13968. 267.43 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:327:9-16
  13969. 267.43 s [really-safe-money-gen] @@ -324,7 +324,7 @@
  13970. 267.43 s [really-safe-money-gen] in go resultDouble
  13971. 267.43 s [really-safe-money-gen] where
  13972. 267.43 s [really-safe-money-gen] go resultDouble
  13973. 267.43 s [really-safe-money-gen] - | isNaN d = Nothing
  13974. 267.43 s [really-safe-money-gen] + | not (isNaN d) = Nothing
  13975. 267.43 s [really-safe-money-gen] | isInfinite d = Nothing
  13976. 267.43 s [really-safe-money-gen] | otherwise =
  13977. 267.43 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  13978. 267.43 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:332:38-40
  13979. 267.43 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  13980. 267.43 s [really-safe-money-gen] | otherwise =
  13981. 267.43 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  13982. 267.43 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  13983. 267.43 s [really-safe-money-gen] - if exponent resultDouble > 65
  13984. 267.43 s [really-safe-money-gen] + if exponent resultDouble > 1
  13985. 267.43 s [really-safe-money-gen] then Nothing
  13986. 267.43 s [really-safe-money-gen] else
  13987. 267.43 s [really-safe-money-gen] let ceiled :: Natural
  13988. 267.43 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:332:38-40
  13989. 267.43 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  13990. 267.43 s [really-safe-money-gen] | otherwise =
  13991. 267.43 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  13992. 267.43 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  13993. 267.43 s [really-safe-money-gen] - if exponent resultDouble > 65
  13994. 267.43 s [really-safe-money-gen] + if exponent resultDouble > -65
  13995. 267.43 s [really-safe-money-gen] then Nothing
  13996. 267.43 s [really-safe-money-gen] else
  13997. 267.43 s [really-safe-money-gen] let ceiled :: Natural
  13998. 267.43 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:332:14-40
  13999. 267.43 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  14000. 267.43 s [really-safe-money-gen] | otherwise =
  14001. 267.43 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  14002. 267.43 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  14003. 267.43 s [really-safe-money-gen] - if exponent resultDouble > 65
  14004. 267.43 s [really-safe-money-gen] + if True
  14005. 267.43 s [really-safe-money-gen] then Nothing
  14006. 267.43 s [really-safe-money-gen] else
  14007. 267.43 s [really-safe-money-gen] let ceiled :: Natural
  14008. 267.43 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:332:14-40
  14009. 267.43 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  14010. 267.43 s [really-safe-money-gen] | otherwise =
  14011. 267.43 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  14012. 267.43 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  14013. 267.43 s [really-safe-money-gen] - if exponent resultDouble > 65
  14014. 267.43 s [really-safe-money-gen] + if False
  14015. 267.43 s [really-safe-money-gen] then Nothing
  14016. 267.43 s [really-safe-money-gen] else
  14017. 267.44 s [really-safe-money-gen] let ceiled :: Natural
  14018. 267.44 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:332:38-40
  14019. 267.44 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  14020. 267.44 s [really-safe-money-gen] | otherwise =
  14021. 267.44 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  14022. 267.44 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  14023. 267.44 s [really-safe-money-gen] - if exponent resultDouble > 65
  14024. 267.44 s [really-safe-money-gen] + if exponent resultDouble > 0
  14025. 267.44 s [really-safe-money-gen] then Nothing
  14026. 267.44 s [really-safe-money-gen] else
  14027. 267.44 s [really-safe-money-gen] let ceiled :: Natural
  14028. 267.44 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:332:14-40
  14029. 267.44 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  14030. 267.44 s [really-safe-money-gen] | otherwise =
  14031. 267.44 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  14032. 267.44 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  14033. 267.44 s [really-safe-money-gen] - if exponent resultDouble > 65
  14034. 267.44 s [really-safe-money-gen] + if not (exponent resultDouble > 65)
  14035. 267.44 s [really-safe-money-gen] then Nothing
  14036. 267.44 s [really-safe-money-gen] else
  14037. 267.44 s [really-safe-money-gen] let ceiled :: Natural
  14038. 267.44 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:339:22-39
  14039. 267.44 s [really-safe-money-gen] @@ -336,7 +336,7 @@
  14040. 267.44 s [really-safe-money-gen] ceiled = (ceiling :: Double -> Natural) resultDouble
  14041. 267.44 s [really-safe-money-gen] floored :: Natural
  14042. 267.44 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  14043. 267.44 s [really-safe-money-gen] - in if ceiled == floored
  14044. 267.44 s [really-safe-money-gen] + in if True
  14045. 267.44 s [really-safe-money-gen] then
  14046. 267.44 s [really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14047. 267.44 s [really-safe-money-gen] then Nothing
  14048. 267.44 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:339:22-39
  14049. 267.44 s [really-safe-money-gen] @@ -336,7 +336,7 @@
  14050. 267.44 s [really-safe-money-gen] ceiled = (ceiling :: Double -> Natural) resultDouble
  14051. 267.44 s [really-safe-money-gen] floored :: Natural
  14052. 267.44 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  14053. 267.44 s [really-safe-money-gen] - in if ceiled == floored
  14054. 267.44 s [really-safe-money-gen] + in if False
  14055. 267.44 s [really-safe-money-gen] then
  14056. 267.44 s [really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14057. 267.44 s [really-safe-money-gen] then Nothing
  14058. 267.44 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:339:22-39
  14059. 267.44 s [really-safe-money-gen] @@ -336,7 +336,7 @@
  14060. 267.44 s [really-safe-money-gen] ceiled = (ceiling :: Double -> Natural) resultDouble
  14061. 267.44 s [really-safe-money-gen] floored :: Natural
  14062. 267.44 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  14063. 267.44 s [really-safe-money-gen] - in if ceiled == floored
  14064. 267.44 s [really-safe-money-gen] + in if not (ceiled == floored)
  14065. 267.44 s [really-safe-money-gen] then
  14066. 267.44 s [really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14067. 267.44 s [really-safe-money-gen] then Nothing
  14068. 267.44 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:341:26-91
  14069. 267.44 s [really-safe-money-gen] @@ -338,7 +338,7 @@
  14070. 267.45 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  14071. 267.45 s [really-safe-money-gen] in if ceiled == floored
  14072. 267.45 s [really-safe-money-gen] then
  14073. 267.45 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14074. 267.45 s [really-safe-money-gen] + if True
  14075. 267.45 s [really-safe-money-gen] then Nothing
  14076. 267.45 s [really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
  14077. 267.45 s [really-safe-money-gen] else Nothing
  14078. 267.45 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:341:26-91
  14079. 267.45 s [really-safe-money-gen] @@ -338,7 +338,7 @@
  14080. 267.45 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  14081. 267.45 s [really-safe-money-gen] in if ceiled == floored
  14082. 267.45 s [really-safe-money-gen] then
  14083. 267.45 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14084. 267.45 s [really-safe-money-gen] + if False
  14085. 267.45 s [really-safe-money-gen] then Nothing
  14086. 267.45 s [really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
  14087. 267.45 s [really-safe-money-gen] else Nothing
  14088. 267.45 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:341:26-91
  14089. 267.45 s [really-safe-money-gen] @@ -338,7 +338,7 @@
  14090. 267.45 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  14091. 267.45 s [really-safe-money-gen] in if ceiled == floored
  14092. 267.45 s [really-safe-money-gen] then
  14093. 267.45 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14094. 267.45 s [really-safe-money-gen] + if not (ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64))
  14095. 267.45 s [really-safe-money-gen] then Nothing
  14096. 267.45 s [really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
  14097. 267.45 s [really-safe-money-gen] else Nothing
  14098. 267.45 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:341:23-65
  14099. 267.45 s [really-safe-money-gen] @@ -338,9 +338,9 @@
  14100. 267.45 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  14101. 267.45 s [really-safe-money-gen] in if ceiled == floored
  14102. 267.45 s [really-safe-money-gen] then
  14103. 267.45 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14104. 267.45 s [really-safe-money-gen] - then Nothing
  14105. 267.45 s [really-safe-money-gen] - else Just $ Amount (fromIntegral ceiled)
  14106. 269.07 s [really-safe-money-gen] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14107. 269.07 s [really-safe-money-gen] + then Nothing
  14108. 269.17 s [really-safe-money-gen] + else Just $ Amount (fromIntegral ceiled)
  14109. 269.17 s [really-safe-money-gen] else Nothing
  14110. 269.17 s [really-safe-money-gen]
  14111. 269.17 s [really-safe-money-gen] -- | Turn an amount of money into a 'Double'.
  14112. 269.17 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:339:19-33
  14113. 269.17 s [really-safe-money-gen] @@ -336,12 +336,12 @@
  14114. 269.17 s [really-safe-money-gen] ceiled = (ceiling :: Double -> Natural) resultDouble
  14115. 269.17 s [really-safe-money-gen] floored :: Natural
  14116. 269.17 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  14117. 269.17 s [really-safe-money-gen] - in if ceiled == floored
  14118. 269.17 s [really-safe-money-gen] - then
  14119. 269.17 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14120. 269.17 s [really-safe-money-gen] - then Nothing
  14121. 269.17 s [really-safe-money-gen] - else Just $ Amount (fromIntegral ceiled)
  14122. 269.17 s [really-safe-money-gen] - else Nothing
  14123. 269.17 s [really-safe-money-gen] + in if ceiled == floored
  14124. 269.17 s [really-safe-money-gen] + then
  14125. 269.17 s [really-safe-money-gen] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14126. 269.17 s [really-safe-money-gen] + then Nothing
  14127. 269.17 s [really-safe-money-gen] + else Just $ Amount (fromIntegral ceiled)
  14128. 269.17 s [really-safe-money-gen] + else Nothing
  14129. 269.17 s [really-safe-money-gen]
  14130. 269.17 s [really-safe-money-gen] -- | Turn an amount of money into a 'Double'.
  14131. 269.17 s [really-safe-money-gen] --
  14132. 269.17 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:332:11-33
  14133. 269.17 s [really-safe-money-gen] @@ -329,19 +329,19 @@
  14134. 269.17 s [really-safe-money-gen] | otherwise =
  14135. 269.17 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  14136. 269.17 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  14137. 269.17 s [really-safe-money-gen] - if exponent resultDouble > 65
  14138. 269.17 s [really-safe-money-gen] - then Nothing
  14139. 269.17 s [really-safe-money-gen] - else
  14140. 269.17 s [really-safe-money-gen] - let ceiled :: Natural
  14141. 269.17 s [really-safe-money-gen] - ceiled = (ceiling :: Double -> Natural) resultDouble
  14142. 269.17 s [really-safe-money-gen] - floored :: Natural
  14143. 269.17 s [really-safe-money-gen] - floored = (floor :: Double -> Natural) resultDouble
  14144. 269.17 s [really-safe-money-gen] - in if ceiled == floored
  14145. 269.17 s [really-safe-money-gen] - then
  14146. 269.17 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14147. 269.17 s [really-safe-money-gen] - then Nothing
  14148. 269.17 s [really-safe-money-gen] - else Just $ Amount (fromIntegral ceiled)
  14149. 269.17 s [really-safe-money-gen] - else Nothing
  14150. 269.17 s [really-safe-money-gen] + if exponent resultDouble > 65
  14151. 269.17 s [really-safe-money-gen] + then Nothing
  14152. 269.17 s [really-safe-money-gen] + else
  14153. 269.17 s [really-safe-money-gen] + let ceiled :: Natural
  14154. 269.17 s [really-safe-money-gen] + ceiled = (ceiling :: Double -> Natural) resultDouble
  14155. 269.17 s [really-safe-money-gen] + floored :: Natural
  14156. 269.17 s [really-safe-money-gen] + floored = (floor :: Double -> Natural) resultDouble
  14157. 269.17 s [really-safe-money-gen] + in if ceiled == floored
  14158. 269.17 s [really-safe-money-gen] + then
  14159. 269.17 s [really-safe-money-gen] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14160. 269.17 s [really-safe-money-gen] + then Nothing
  14161. 269.17 s [really-safe-money-gen] + else Just $ Amount (fromIntegral ceiled)
  14162. 269.17 s [really-safe-money-gen] + else Nothing
  14163. 269.17 s [really-safe-money-gen]
  14164. 269.18 s [really-safe-money-gen] -- | Turn an amount of money into a 'Double'.
  14165. 269.18 s [really-safe-money-gen] --
  14166. 269.18 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:290:79-80
  14167. 269.18 s [really-safe-money-gen] @@ -287,7 +287,7 @@
  14168. 269.18 s [really-safe-money-gen] -- >>> toRatio (QuantisationFactor 100) (Amount 1)
  14169. 269.18 s [really-safe-money-gen] -- 1 % 100
  14170. 269.18 s [really-safe-money-gen] toRatio :: QuantisationFactor -> Amount -> Ratio Natural
  14171. 269.18 s [really-safe-money-gen] -toRatio (QuantisationFactor 0) a = fromIntegral (toMinimalQuantisations a) :% 0
  14172. 269.18 s [really-safe-money-gen] +toRatio (QuantisationFactor 0) a = fromIntegral (toMinimalQuantisations a) :% 1
  14173. 269.18 s [really-safe-money-gen] toRatio (QuantisationFactor quantisationFactor) a =
  14174. 269.18 s [really-safe-money-gen] (fromIntegral :: Word64 -> Natural) (toMinimalQuantisations a)
  14175. 269.18 s [really-safe-money-gen] % (fromIntegral :: Word32 -> Natural) quantisationFactor
  14176. 269.18 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:494:96-97
  14177. 269.18 s [really-safe-money-gen] @@ -491,7 +491,7 @@
  14178. 269.18 s [really-safe-money-gen] let maxBoundI :: Integer
  14179. 269.18 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  14180. 269.18 s [really-safe-money-gen] r :: Integer
  14181. 269.18 s [really-safe-money-gen] - r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  14182. 269.18 s [really-safe-money-gen] + r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 1 l
  14183. 269.18 s [really-safe-money-gen] in if r > maxBoundI
  14184. 269.18 s [really-safe-money-gen] then Nothing
  14185. 269.18 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  14186. 269.18 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:495:10-23
  14187. 269.18 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  14188. 269.18 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  14189. 269.18 s [really-safe-money-gen] r :: Integer
  14190. 269.18 s [really-safe-money-gen] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  14191. 269.18 s [really-safe-money-gen] - in if r > maxBoundI
  14192. 269.18 s [really-safe-money-gen] + in if True
  14193. 269.18 s [really-safe-money-gen] then Nothing
  14194. 269.18 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  14195. 269.18 s [really-safe-money-gen]
  14196. 269.18 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:495:10-23
  14197. 269.18 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  14198. 269.18 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  14199. 269.18 s [really-safe-money-gen] r :: Integer
  14200. 269.18 s [really-safe-money-gen] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  14201. 269.18 s [really-safe-money-gen] - in if r > maxBoundI
  14202. 269.18 s [really-safe-money-gen] + in if not (r > maxBoundI)
  14203. 269.18 s [really-safe-money-gen] then Nothing
  14204. 269.18 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  14205. 269.18 s [really-safe-money-gen]
  14206. 269.18 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:495:7-66
  14207. 269.18 s [really-safe-money-gen] @@ -492,9 +492,9 @@
  14208. 269.18 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  14209. 269.18 s [really-safe-money-gen] r :: Integer
  14210. 269.18 s [really-safe-money-gen] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  14211. 269.18 s [really-safe-money-gen] - in if r > maxBoundI
  14212. 269.18 s [really-safe-money-gen] - then Nothing
  14213. 269.18 s [really-safe-money-gen] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  14214. 269.18 s [really-safe-money-gen] + in if r > maxBoundI
  14215. 269.18 s [really-safe-money-gen] + then Nothing
  14216. 269.18 s [really-safe-money-gen] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  14217. 269.18 s [really-safe-money-gen]
  14218. 269.18 s [really-safe-money-gen] -- | Add two amounts of money.
  14219. 269.18 s [really-safe-money-gen] --
  14220. 269.18 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:661:30-31
  14221. 269.18 s [really-safe-money-gen] @@ -658,7 +658,7 @@
  14222. 269.18 s [really-safe-money-gen] -- | The amount and the real rate that was used, considering the 'Rounding'
  14223. 269.18 s [really-safe-money-gen] (Maybe Amount, Ratio Natural)
  14224. 269.18 s [really-safe-money-gen] fraction _ (Amount 0) f = (Just zero, f)
  14225. 269.18 s [really-safe-money-gen] -fraction _ _ 0 = (Just zero, 0)
  14226. 269.18 s [really-safe-money-gen] +fraction _ _ 0 = (Just zero, 1)
  14227. 269.18 s [really-safe-money-gen] fraction r (Amount a) f =
  14228. 269.18 s [really-safe-money-gen] let amountAsRatio :: Ratio Natural
  14229. 269.18 s [really-safe-money-gen] amountAsRatio = (fromIntegral :: Word64 -> Ratio Natural) a
  14230. 269.18 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount.hs:668:17-30
  14231. 269.18 s [really-safe-money-gen] @@ -665,10 +665,10 @@
  14232. 269.18 s [really-safe-money-gen] theoreticalResult :: Ratio Natural
  14233. 269.18 s [really-safe-money-gen] theoreticalResult = amountAsRatio * f
  14234. 269.18 s [really-safe-money-gen] rounder :: Ratio Natural -> Natural
  14235. 269.18 s [really-safe-money-gen] - rounder = case r of
  14236. 269.18 s [really-safe-money-gen] - RoundUp -> ceiling
  14237. 269.18 s [really-safe-money-gen] - RoundDown -> floor
  14238. 269.18 s [really-safe-money-gen] - RoundNearest -> round
  14239. 269.18 s [really-safe-money-gen] + rounder = case r of
  14240. 269.18 s [really-safe-money-gen] + RoundUp -> ceiling
  14241. 269.18 s [really-safe-money-gen] + RoundDown -> floor
  14242. 269.18 s [really-safe-money-gen] + RoundNearest -> round
  14243. 269.18 s [really-safe-money-gen] roundedResult :: Natural
  14244. 269.18 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  14245. 269.18 s [really-safe-money-gen] actualRate :: Ratio Natural
  14246. 269.18 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount.hs:668:17-30
  14247. 269.18 s [really-safe-money-gen] @@ -665,10 +665,10 @@
  14248. 269.19 s [really-safe-money-gen] theoreticalResult :: Ratio Natural
  14249. 269.19 s [really-safe-money-gen] theoreticalResult = amountAsRatio * f
  14250. 269.19 s [really-safe-money-gen] rounder :: Ratio Natural -> Natural
  14251. 269.19 s [really-safe-money-gen] - rounder = case r of
  14252. 269.19 s [really-safe-money-gen] - RoundUp -> ceiling
  14253. 269.19 s [really-safe-money-gen] - RoundDown -> floor
  14254. 269.19 s [really-safe-money-gen] - RoundNearest -> round
  14255. 269.19 s [really-safe-money-gen] + rounder = case r of
  14256. 269.19 s [really-safe-money-gen] + RoundUp -> ceiling
  14257. 269.19 s [really-safe-money-gen] + RoundDown -> floor
  14258. 269.19 s [really-safe-money-gen] + RoundNearest -> round
  14259. 269.19 s [really-safe-money-gen] roundedResult :: Natural
  14260. 269.19 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  14261. 269.19 s [really-safe-money-gen] actualRate :: Ratio Natural
  14262. 269.19 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount.hs:668:17-30
  14263. 269.19 s [really-safe-money-gen] @@ -665,10 +665,10 @@
  14264. 269.19 s [really-safe-money-gen] theoreticalResult :: Ratio Natural
  14265. 269.19 s [really-safe-money-gen] theoreticalResult = amountAsRatio * f
  14266. 269.19 s [really-safe-money-gen] rounder :: Ratio Natural -> Natural
  14267. 269.19 s [really-safe-money-gen] - rounder = case r of
  14268. 269.19 s [really-safe-money-gen] - RoundUp -> ceiling
  14269. 269.19 s [really-safe-money-gen] - RoundDown -> floor
  14270. 269.19 s [really-safe-money-gen] - RoundNearest -> round
  14271. 269.19 s [really-safe-money-gen] + rounder = case r of
  14272. 269.19 s [really-safe-money-gen] + RoundUp -> ceiling
  14273. 269.19 s [really-safe-money-gen] + RoundDown -> floor
  14274. 269.19 s [really-safe-money-gen] + RoundNearest -> round
  14275. 269.19 s [really-safe-money-gen] roundedResult :: Natural
  14276. 269.19 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  14277. 269.19 s [really-safe-money-gen] actualRate :: Ratio Natural
  14278. 269.19 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:681:12-37
  14279. 269.19 s [really-safe-money-gen] @@ -678,7 +678,7 @@
  14280. 269.19 s [really-safe-money-gen] maxBoundN :: Natural
  14281. 269.19 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  14282. 269.19 s [really-safe-money-gen] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  14283. 269.19 s [really-safe-money-gen] - in ( if roundedResult > maxBoundN
  14284. 269.19 s [really-safe-money-gen] + in ( if True
  14285. 269.19 s [really-safe-money-gen] then Nothing
  14286. 269.19 s [really-safe-money-gen] else Just result,
  14287. 269.19 s [really-safe-money-gen] actualRate
  14288. 269.19 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:681:12-37
  14289. 269.19 s [really-safe-money-gen] @@ -678,7 +678,7 @@
  14290. 269.19 s [really-safe-money-gen] maxBoundN :: Natural
  14291. 269.19 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  14292. 269.19 s [really-safe-money-gen] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  14293. 269.19 s [really-safe-money-gen] - in ( if roundedResult > maxBoundN
  14294. 269.19 s [really-safe-money-gen] + in ( if False
  14295. 269.19 s [really-safe-money-gen] then Nothing
  14296. 269.19 s [really-safe-money-gen] else Just result,
  14297. 269.19 s [really-safe-money-gen] actualRate
  14298. 269.19 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:681:12-37
  14299. 269.19 s [really-safe-money-gen] @@ -678,7 +678,7 @@
  14300. 269.19 s [really-safe-money-gen] maxBoundN :: Natural
  14301. 269.19 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  14302. 269.19 s [really-safe-money-gen] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  14303. 269.19 s [really-safe-money-gen] - in ( if roundedResult > maxBoundN
  14304. 269.19 s [really-safe-money-gen] + in ( if not (roundedResult > maxBoundN)
  14305. 269.19 s [really-safe-money-gen] then Nothing
  14306. 269.19 s [really-safe-money-gen] else Just result,
  14307. 269.19 s [really-safe-money-gen] actualRate
  14308. 271.11 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:681:9-27
  14309. 271.11 s [really-safe-money-gen] @@ -678,9 +678,9 @@
  14310. 271.11 s [really-safe-money-gen] maxBoundN :: Natural
  14311. 271.11 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  14312. 271.11 s [really-safe-money-gen] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  14313. 271.11 s [really-safe-money-gen] - in ( if roundedResult > maxBoundN
  14314. 271.11 s [really-safe-money-gen] - then Nothing
  14315. 271.12 s [really-safe-money-gen] - else Just result,
  14316. 271.12 s [really-safe-money-gen] + in ( if roundedResult > maxBoundN
  14317. 271.12 s [really-safe-money-gen] + then Nothing
  14318. 271.12 s [really-safe-money-gen] + else Just result,
  14319. 271.12 s [really-safe-money-gen] actualRate
  14320. 271.12 s [really-safe-money-gen] )
  14321. 271.12 s [really-safe-money-gen]
  14322. 271.12 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:806:79-92
  14323. 271.12 s [really-safe-money-gen] @@ -803,4 +803,4 @@
  14324. 271.12 s [really-safe-money-gen]
  14325. 271.12 s [really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  14326. 271.12 s [really-safe-money-gen] validateStrictlyPositive :: Amount -> Validation
  14327. 271.12 s [really-safe-money-gen] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  14328. 271.12 s [really-safe-money-gen] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ True
  14329. 271.12 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:806:79-92
  14330. 271.12 s [really-safe-money-gen] @@ -803,4 +803,4 @@
  14331. 271.12 s [really-safe-money-gen]
  14332. 271.12 s [really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  14333. 271.12 s [really-safe-money-gen] validateStrictlyPositive :: Amount -> Validation
  14334. 271.12 s [really-safe-money-gen] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  14335. 271.12 s [really-safe-money-gen] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ False
  14336. 271.12 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:806:79-92
  14337. 271.12 s [really-safe-money-gen] @@ -803,4 +803,4 @@
  14338. 271.12 s [really-safe-money-gen]
  14339. 271.12 s [really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  14340. 271.12 s [really-safe-money-gen] validateStrictlyPositive :: Amount -> Validation
  14341. 271.12 s [really-safe-money-gen] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  14342. 271.12 s [really-safe-money-gen] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ not (amount > zero)
  14343. 271.12 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:607:15-22
  14344. 271.12 s [really-safe-money-gen] @@ -604,7 +604,7 @@
  14345. 271.12 s [really-safe-money-gen] case ad of
  14346. 271.12 s [really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
  14347. 271.12 s [really-safe-money-gen] declare "The larger chunks are larger" $
  14348. 271.12 s [really-safe-money-gen] - a1 > a2
  14349. 271.12 s [really-safe-money-gen] + True
  14350. 271.12 s [really-safe-money-gen] _ -> valid
  14351. 271.12 s [really-safe-money-gen] ]
  14352. 271.12 s [really-safe-money-gen]
  14353. 271.12 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:250:15-16
  14354. 271.12 s [really-safe-money-gen] @@ -247,7 +247,7 @@
  14355. 271.12 s [really-safe-money-gen] -- >>> zero
  14356. 271.12 s [really-safe-money-gen] -- Amount 0
  14357. 271.12 s [really-safe-money-gen] zero :: Amount
  14358. 271.12 s [really-safe-money-gen] -zero = Amount 0
  14359. 271.12 s [really-safe-money-gen] +zero = Amount 1
  14360. 271.12 s [really-safe-money-gen]
  14361. 271.12 s [really-safe-money-gen] -- | Turn an amount into a number of minimal quantisations.
  14362. 271.12 s [really-safe-money-gen] --
  14363. 271.12 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:607:15-22
  14364. 271.12 s [really-safe-money-gen] @@ -604,7 +604,7 @@
  14365. 271.12 s [really-safe-money-gen] case ad of
  14366. 271.12 s [really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
  14367. 271.12 s [really-safe-money-gen] declare "The larger chunks are larger" $
  14368. 271.12 s [really-safe-money-gen] - a1 > a2
  14369. 271.12 s [really-safe-money-gen] + not (a1 > a2)
  14370. 271.12 s [really-safe-money-gen] _ -> valid
  14371. 271.12 s [really-safe-money-gen] ]
  14372. 271.12 s [really-safe-money-gen]
  14373. 271.12 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount.hs:604:9-21
  14374. 271.12 s [really-safe-money-gen] @@ -601,11 +601,11 @@
  14375. 271.12 s [really-safe-money-gen] validate ad =
  14376. 271.12 s [really-safe-money-gen] mconcat
  14377. 271.12 s [really-safe-money-gen] [ genericValidate ad,
  14378. 271.12 s [really-safe-money-gen] - case ad of
  14379. 271.12 s [really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  14380. 271.12 s [really-safe-money-gen] - declare "The larger chunks are larger" $
  14381. 271.12 s [really-safe-money-gen] - a1 > a2
  14382. 271.12 s [really-safe-money-gen] - _ -> valid
  14383. 271.12 s [really-safe-money-gen] + case ad of
  14384. 271.12 s [really-safe-money-gen] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  14385. 271.12 s [really-safe-money-gen] + declare "The larger chunks are larger" $
  14386. 271.12 s [really-safe-money-gen] + a1 > a2
  14387. 271.13 s [really-safe-money-gen] + _ -> valid
  14388. 271.13 s [really-safe-money-gen] ]
  14389. 271.13 s [really-safe-money-gen]
  14390. 271.13 s [really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
  14391. 271.13 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount.hs:603:7-8
  14392. 271.13 s [really-safe-money-gen] @@ -600,13 +600,7 @@
  14393. 271.13 s [really-safe-money-gen] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  14394. 271.13 s [really-safe-money-gen] validate ad =
  14395. 271.13 s [really-safe-money-gen] mconcat
  14396. 271.13 s [really-safe-money-gen] - [ genericValidate ad,
  14397. 271.13 s [really-safe-money-gen] - case ad of
  14398. 271.13 s [really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  14399. 271.13 s [really-safe-money-gen] - declare "The larger chunks are larger" $
  14400. 271.13 s [really-safe-money-gen] - a1 > a2
  14401. 271.13 s [really-safe-money-gen] - _ -> valid
  14402. 271.13 s [really-safe-money-gen] - ]
  14403. 271.13 s [really-safe-money-gen] + []
  14404. 271.13 s [really-safe-money-gen]
  14405. 271.13 s [really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
  14406. 271.13 s [really-safe-money-gen]
  14407. 271.13 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount.hs:603:7-8
  14408. 271.13 s [really-safe-money-gen] @@ -600,13 +600,13 @@
  14409. 271.13 s [really-safe-money-gen] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  14410. 271.13 s [really-safe-money-gen] validate ad =
  14411. 271.13 s [really-safe-money-gen] mconcat
  14412. 271.13 s [really-safe-money-gen] - [ genericValidate ad,
  14413. 271.13 s [really-safe-money-gen] - case ad of
  14414. 271.13 s [really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  14415. 271.13 s [really-safe-money-gen] - declare "The larger chunks are larger" $
  14416. 271.13 s [really-safe-money-gen] - a1 > a2
  14417. 271.13 s [really-safe-money-gen] - _ -> valid
  14418. 271.13 s [really-safe-money-gen] - ]
  14419. 271.13 s [really-safe-money-gen] + [ genericValidate ad,
  14420. 271.13 s [really-safe-money-gen] + case ad of
  14421. 271.13 s [really-safe-money-gen] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  14422. 271.13 s [really-safe-money-gen] + declare "The larger chunks are larger" $
  14423. 271.13 s [really-safe-money-gen] + a1 > a2
  14424. 271.13 s [really-safe-money-gen] + _ -> valid
  14425. 271.13 s [really-safe-money-gen] + ]
  14426. 271.13 s [really-safe-money-gen]
  14427. 271.13 s [really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
  14428. 271.13 s [really-safe-money-gen]
  14429. 271.13 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount.hs:604:9-21
  14430. 271.13 s [really-safe-money-gen] @@ -601,11 +601,11 @@
  14431. 271.13 s [really-safe-money-gen] validate ad =
  14432. 271.13 s [really-safe-money-gen] mconcat
  14433. 271.13 s [really-safe-money-gen] [ genericValidate ad,
  14434. 271.13 s [really-safe-money-gen] - case ad of
  14435. 271.13 s [really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  14436. 271.13 s [really-safe-money-gen] - declare "The larger chunks are larger" $
  14437. 271.13 s [really-safe-money-gen] - a1 > a2
  14438. 271.13 s [really-safe-money-gen] - _ -> valid
  14439. 271.13 s [really-safe-money-gen] + case ad of
  14440. 271.13 s [really-safe-money-gen] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  14441. 271.13 s [really-safe-money-gen] + declare "The larger chunks are larger" $
  14442. 271.13 s [really-safe-money-gen] + a1 > a2
  14443. 271.13 s [really-safe-money-gen] + _ -> valid
  14444. 271.13 s [really-safe-money-gen] ]
  14445. 271.13 s [really-safe-money-gen]
  14446. 271.13 s [really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
  14447. 271.13 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:87:27-28
  14448. 271.13 s [really-safe-money-gen] @@ -84,7 +84,7 @@
  14449. 271.13 s [really-safe-money-gen] fromDecimalLiteral dl = do
  14450. 271.13 s [really-safe-money-gen] irat <-
  14451. 271.13 s [really-safe-money-gen] let r = DecimalLiteral.toRational dl
  14452. 271.13 s [really-safe-money-gen] - in if numerator r == 0
  14453. 271.13 s [really-safe-money-gen] + in if numerator r == 1
  14454. 271.13 s [really-safe-money-gen] then Nothing
  14455. 271.13 s [really-safe-money-gen] else pure r
  14456. 271.13 s [really-safe-money-gen]
  14457. 271.13 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:607:15-22
  14458. 271.13 s [really-safe-money-gen] @@ -604,7 +604,7 @@
  14459. 271.13 s [really-safe-money-gen] case ad of
  14460. 271.13 s [really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
  14461. 271.13 s [really-safe-money-gen] declare "The larger chunks are larger" $
  14462. 271.13 s [really-safe-money-gen] - a1 > a2
  14463. 271.13 s [really-safe-money-gen] + False
  14464. 271.13 s [really-safe-money-gen] _ -> valid
  14465. 271.13 s [really-safe-money-gen] ]
  14466. 271.13 s [really-safe-money-gen]
  14467. 271.13 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:87:12-28
  14468. 271.13 s [really-safe-money-gen] @@ -84,7 +84,7 @@
  14469. 271.13 s [really-safe-money-gen] fromDecimalLiteral dl = do
  14470. 271.13 s [really-safe-money-gen] irat <-
  14471. 271.13 s [really-safe-money-gen] let r = DecimalLiteral.toRational dl
  14472. 271.13 s [really-safe-money-gen] - in if numerator r == 0
  14473. 271.13 s [really-safe-money-gen] + in if True
  14474. 271.13 s [really-safe-money-gen] then Nothing
  14475. 271.13 s [really-safe-money-gen] else pure r
  14476. 271.13 s [really-safe-money-gen]
  14477. 271.13 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:87:12-28
  14478. 271.13 s [really-safe-money-gen] @@ -84,7 +84,7 @@
  14479. 271.13 s [really-safe-money-gen] fromDecimalLiteral dl = do
  14480. 271.13 s [really-safe-money-gen] irat <-
  14481. 271.13 s [really-safe-money-gen] let r = DecimalLiteral.toRational dl
  14482. 271.13 s [really-safe-money-gen] - in if numerator r == 0
  14483. 271.13 s [really-safe-money-gen] + in if False
  14484. 271.13 s [really-safe-money-gen] then Nothing
  14485. 271.13 s [really-safe-money-gen] else pure r
  14486. 271.13 s [really-safe-money-gen]
  14487. 271.13 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/QuantisationFactor.hs:87:9-22
  14488. 271.13 s [really-safe-money-gen] @@ -84,9 +84,9 @@
  14489. 271.13 s [really-safe-money-gen] fromDecimalLiteral dl = do
  14490. 271.13 s [really-safe-money-gen] irat <-
  14491. 271.13 s [really-safe-money-gen] let r = DecimalLiteral.toRational dl
  14492. 271.13 s [really-safe-money-gen] - in if numerator r == 0
  14493. 271.13 s [really-safe-money-gen] - then Nothing
  14494. 271.13 s [really-safe-money-gen] - else pure r
  14495. 271.13 s [really-safe-money-gen] + in if numerator r == 0
  14496. 271.13 s [really-safe-money-gen] + then Nothing
  14497. 271.13 s [really-safe-money-gen] + else pure r
  14498. 271.13 s [really-safe-money-gen]
  14499. 271.13 s [really-safe-money-gen] rat <-
  14500. 271.13 s [really-safe-money-gen] let r = 1 / irat
  14501. 271.13 s [really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:87:12-28
  14502. 271.13 s [really-safe-money-gen] @@ -84,7 +84,7 @@
  14503. 271.14 s [really-safe-money-gen] fromDecimalLiteral dl = do
  14504. 271.14 s [really-safe-money-gen] irat <-
  14505. 271.14 s [really-safe-money-gen] let r = DecimalLiteral.toRational dl
  14506. 271.14 s [really-safe-money-gen] - in if numerator r == 0
  14507. 271.14 s [really-safe-money-gen] + in if not (numerator r == 0)
  14508. 271.14 s [really-safe-money-gen] then Nothing
  14509. 271.14 s [really-safe-money-gen] else pure r
  14510. 271.14 s [really-safe-money-gen]
  14511. 271.14 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:92:13-14
  14512. 271.14 s [really-safe-money-gen] @@ -89,7 +89,7 @@
  14513. 271.14 s [really-safe-money-gen] else pure r
  14514. 271.14 s [really-safe-money-gen]
  14515. 271.14 s [really-safe-money-gen] rat <-
  14516. 271.14 s [really-safe-money-gen] - let r = 1 / irat
  14517. 271.14 s [really-safe-money-gen] + let r = 0 / irat
  14518. 271.14 s [really-safe-money-gen] in if r < 0
  14519. 271.14 s [really-safe-money-gen] then Nothing
  14520. 271.14 s [really-safe-money-gen] else Just r
  14521. 271.14 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:92:13-14
  14522. 271.14 s [really-safe-money-gen] @@ -89,7 +89,7 @@
  14523. 271.14 s [really-safe-money-gen] else pure r
  14524. 271.14 s [really-safe-money-gen]
  14525. 271.14 s [really-safe-money-gen] rat <-
  14526. 271.14 s [really-safe-money-gen] - let r = 1 / irat
  14527. 271.14 s [really-safe-money-gen] + let r = -1 / irat
  14528. 271.14 s [really-safe-money-gen] in if r < 0
  14529. 271.14 s [really-safe-money-gen] then Nothing
  14530. 271.14 s [really-safe-money-gen] else Just r
  14531. 271.14 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:93:16-17
  14532. 271.14 s [really-safe-money-gen] @@ -90,7 +90,7 @@
  14533. 271.14 s [really-safe-money-gen]
  14534. 271.14 s [really-safe-money-gen] rat <-
  14535. 271.14 s [really-safe-money-gen] let r = 1 / irat
  14536. 271.14 s [really-safe-money-gen] - in if r < 0
  14537. 271.14 s [really-safe-money-gen] + in if r < 1
  14538. 271.14 s [really-safe-money-gen] then Nothing
  14539. 271.14 s [really-safe-money-gen] else Just r
  14540. 271.14 s [really-safe-money-gen]
  14541. 271.14 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:93:12-17
  14542. 271.14 s [really-safe-money-gen] @@ -90,7 +90,7 @@
  14543. 271.14 s [really-safe-money-gen]
  14544. 271.14 s [really-safe-money-gen] rat <-
  14545. 271.14 s [really-safe-money-gen] let r = 1 / irat
  14546. 271.14 s [really-safe-money-gen] - in if r < 0
  14547. 271.14 s [really-safe-money-gen] + in if True
  14548. 271.14 s [really-safe-money-gen] then Nothing
  14549. 271.14 s [really-safe-money-gen] else Just r
  14550. 271.14 s [really-safe-money-gen]
  14551. 271.14 s [really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:93:12-17
  14552. 271.14 s [really-safe-money-gen] @@ -90,7 +90,7 @@
  14553. 271.14 s [really-safe-money-gen]
  14554. 271.14 s [really-safe-money-gen] rat <-
  14555. 271.14 s [really-safe-money-gen] let r = 1 / irat
  14556. 271.14 s [really-safe-money-gen] - in if r < 0
  14557. 271.14 s [really-safe-money-gen] + in if not (r < 0)
  14558. 271.14 s [really-safe-money-gen] then Nothing
  14559. 271.14 s [really-safe-money-gen] else Just r
  14560. 271.14 s [really-safe-money-gen]
  14561. 271.14 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:98:27-28
  14562. 271.14 s [really-safe-money-gen] @@ -95,7 +95,7 @@
  14563. 271.14 s [really-safe-money-gen] else Just r
  14564. 271.14 s [really-safe-money-gen]
  14565. 271.14 s [really-safe-money-gen] fac <-
  14566. 271.14 s [really-safe-money-gen] - if denominator rat == 1
  14567. 271.14 s [really-safe-money-gen] + if denominator rat == 0
  14568. 271.14 s [really-safe-money-gen] then Just (numerator rat)
  14569. 271.14 s [really-safe-money-gen] else Nothing
  14570. 271.14 s [really-safe-money-gen]
  14571. 271.14 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/QuantisationFactor.hs:93:9-22
  14572. 271.14 s [really-safe-money-gen] @@ -90,9 +90,9 @@
  14573. 271.14 s [really-safe-money-gen]
  14574. 271.14 s [really-safe-money-gen] rat <-
  14575. 271.14 s [really-safe-money-gen] let r = 1 / irat
  14576. 271.14 s [really-safe-money-gen] - in if r < 0
  14577. 271.14 s [really-safe-money-gen] - then Nothing
  14578. 271.14 s [really-safe-money-gen] - else Just r
  14579. 271.14 s [really-safe-money-gen] + in if r < 0
  14580. 271.14 s [really-safe-money-gen] + then Nothing
  14581. 271.14 s [really-safe-money-gen] + else Just r
  14582. 271.14 s [really-safe-money-gen]
  14583. 271.14 s [really-safe-money-gen] fac <-
  14584. 271.14 s [really-safe-money-gen] if denominator rat == 1
  14585. 271.14 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:98:27-28
  14586. 271.14 s [really-safe-money-gen] @@ -95,7 +95,7 @@
  14587. 271.14 s [really-safe-money-gen] else Just r
  14588. 271.14 s [really-safe-money-gen]
  14589. 271.14 s [really-safe-money-gen] fac <-
  14590. 271.14 s [really-safe-money-gen] - if denominator rat == 1
  14591. 271.14 s [really-safe-money-gen] + if denominator rat == -1
  14592. 271.14 s [really-safe-money-gen] then Just (numerator rat)
  14593. 271.14 s [really-safe-money-gen] else Nothing
  14594. 271.14 s [really-safe-money-gen]
  14595. 273.35 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:98:8-28
  14596. 273.35 s [really-safe-money-gen] @@ -95,7 +95,7 @@
  14597. 273.35 s [really-safe-money-gen] else Just r
  14598. 273.35 s [really-safe-money-gen]
  14599. 273.35 s [really-safe-money-gen] fac <-
  14600. 273.35 s [really-safe-money-gen] - if denominator rat == 1
  14601. 273.35 s [really-safe-money-gen] + if True
  14602. 273.35 s [really-safe-money-gen] then Just (numerator rat)
  14603. 273.35 s [really-safe-money-gen] else Nothing
  14604. 273.35 s [really-safe-money-gen]
  14605. 273.35 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:98:8-28
  14606. 273.35 s [really-safe-money-gen] @@ -95,7 +95,7 @@
  14607. 273.35 s [really-safe-money-gen] else Just r
  14608. 273.35 s [really-safe-money-gen]
  14609. 273.35 s [really-safe-money-gen] fac <-
  14610. 273.35 s [really-safe-money-gen] - if denominator rat == 1
  14611. 273.35 s [really-safe-money-gen] + if False
  14612. 273.35 s [really-safe-money-gen] then Just (numerator rat)
  14613. 273.35 s [really-safe-money-gen] else Nothing
  14614. 273.35 s [really-safe-money-gen]
  14615. 273.35 s [really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:98:8-28
  14616. 273.35 s [really-safe-money-gen] @@ -95,7 +95,7 @@
  14617. 273.35 s [really-safe-money-gen] else Just r
  14618. 273.35 s [really-safe-money-gen]
  14619. 273.35 s [really-safe-money-gen] fac <-
  14620. 273.35 s [really-safe-money-gen] - if denominator rat == 1
  14621. 273.35 s [really-safe-money-gen] + if not (denominator rat == 1)
  14622. 273.35 s [really-safe-money-gen] then Just (numerator rat)
  14623. 273.35 s [really-safe-money-gen] else Nothing
  14624. 273.35 s [really-safe-money-gen]
  14625. 273.35 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:93:12-17
  14626. 273.35 s [really-safe-money-gen] @@ -90,7 +90,7 @@
  14627. 273.35 s [really-safe-money-gen]
  14628. 273.35 s [really-safe-money-gen] rat <-
  14629. 273.35 s [really-safe-money-gen] let r = 1 / irat
  14630. 273.36 s [really-safe-money-gen] - in if r < 0
  14631. 273.36 s [really-safe-money-gen] + in if False
  14632. 273.36 s [really-safe-money-gen] then Nothing
  14633. 273.36 s [really-safe-money-gen] else Just r
  14634. 273.36 s [really-safe-money-gen]
  14635. 273.36 s [really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:102:6-46
  14636. 273.36 s [really-safe-money-gen] @@ -99,6 +99,6 @@
  14637. 273.36 s [really-safe-money-gen] then Just (numerator rat)
  14638. 273.36 s [really-safe-money-gen] else Nothing
  14639. 273.36 s [really-safe-money-gen]
  14640. 273.36 s [really-safe-money-gen] - if fac <= fromIntegral (maxBound :: Word32)
  14641. 273.36 s [really-safe-money-gen] + if not (fac <= fromIntegral (maxBound :: Word32))
  14642. 273.36 s [really-safe-money-gen] then Just (QuantisationFactor (fromIntegral fac))
  14643. 273.36 s [really-safe-money-gen] else Nothing
  14644. 273.36 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:102:6-46
  14645. 273.36 s [really-safe-money-gen] @@ -99,6 +99,6 @@
  14646. 273.36 s [really-safe-money-gen] then Just (numerator rat)
  14647. 273.36 s [really-safe-money-gen] else Nothing
  14648. 273.36 s [really-safe-money-gen]
  14649. 273.36 s [really-safe-money-gen] - if fac <= fromIntegral (maxBound :: Word32)
  14650. 273.36 s [really-safe-money-gen] + if False
  14651. 273.36 s [really-safe-money-gen] then Just (QuantisationFactor (fromIntegral fac))
  14652. 273.36 s [really-safe-money-gen] else Nothing
  14653. 273.36 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:67:67-68
  14654. 273.36 s [really-safe-money-gen] @@ -64,7 +64,7 @@
  14655. 273.36 s [really-safe-money-gen] -- Just (DecimalLiteral Nothing 1 0)
  14656. 273.36 s [really-safe-money-gen] toDecimalLiteral :: QuantisationFactor -> Maybe DecimalLiteral
  14657. 273.36 s [really-safe-money-gen] toDecimalLiteral (QuantisationFactor qfw) =
  14658. 273.36 s [really-safe-money-gen] - DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (1 % fromIntegral qfw)
  14659. 273.36 s [really-safe-money-gen] + DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (-1 % fromIntegral qfw)
  14660. 273.36 s [really-safe-money-gen]
  14661. 273.36 s [really-safe-money-gen] -- | Parse a 'QuantisationFactor' from a 'DecimalLiteral' that represents the smallest unit
  14662. 273.36 s [really-safe-money-gen] -- TODO explain that it's the inverse.
  14663. 273.36 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:40:62-63
  14664. 273.36 s [really-safe-money-gen] @@ -37,7 +37,7 @@
  14665. 273.36 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  14666. 273.36 s [really-safe-money-gen] mconcat
  14667. 273.36 s [really-safe-money-gen] [ genericValidate qf,
  14668. 273.36 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  14669. 273.36 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ w /= 1
  14670. 273.36 s [really-safe-money-gen] ]
  14671. 273.36 s [really-safe-money-gen]
  14672. 273.36 s [really-safe-money-gen] instance NFData QuantisationFactor
  14673. 273.36 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63
  14674. 273.36 s [really-safe-money-gen] @@ -37,7 +37,7 @@
  14675. 273.36 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  14676. 273.36 s [really-safe-money-gen] mconcat
  14677. 273.36 s [really-safe-money-gen] [ genericValidate qf,
  14678. 273.36 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  14679. 273.36 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ False
  14680. 273.36 s [really-safe-money-gen] ]
  14681. 273.36 s [really-safe-money-gen]
  14682. 273.36 s [really-safe-money-gen] instance NFData QuantisationFactor
  14683. 273.36 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:67:67-68
  14684. 273.36 s [really-safe-money-gen] @@ -64,7 +64,7 @@
  14685. 273.36 s [really-safe-money-gen] -- Just (DecimalLiteral Nothing 1 0)
  14686. 273.36 s [really-safe-money-gen] toDecimalLiteral :: QuantisationFactor -> Maybe DecimalLiteral
  14687. 273.36 s [really-safe-money-gen] toDecimalLiteral (QuantisationFactor qfw) =
  14688. 273.36 s [really-safe-money-gen] - DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (1 % fromIntegral qfw)
  14689. 273.36 s [really-safe-money-gen] + DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (0 % fromIntegral qfw)
  14690. 273.36 s [really-safe-money-gen]
  14691. 273.36 s [really-safe-money-gen] -- | Parse a 'QuantisationFactor' from a 'DecimalLiteral' that represents the smallest unit
  14692. 273.36 s [really-safe-money-gen] -- TODO explain that it's the inverse.
  14693. 273.36 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:102:6-46
  14694. 273.36 s [really-safe-money-gen] @@ -99,6 +99,6 @@
  14695. 273.36 s [really-safe-money-gen] then Just (numerator rat)
  14696. 273.36 s [really-safe-money-gen] else Nothing
  14697. 273.36 s [really-safe-money-gen]
  14698. 273.36 s [really-safe-money-gen] - if fac <= fromIntegral (maxBound :: Word32)
  14699. 273.36 s [really-safe-money-gen] + if True
  14700. 273.36 s [really-safe-money-gen] then Just (QuantisationFactor (fromIntegral fac))
  14701. 273.36 s [really-safe-money-gen] else Nothing
  14702. 273.36 s [really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:40:57-63
  14703. 273.36 s [really-safe-money-gen] @@ -37,7 +37,7 @@
  14704. 273.36 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  14705. 273.36 s [really-safe-money-gen] mconcat
  14706. 273.36 s [really-safe-money-gen] [ genericValidate qf,
  14707. 273.36 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  14708. 273.36 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ not (w /= 0)
  14709. 273.36 s [really-safe-money-gen] ]
  14710. 273.36 s [really-safe-money-gen]
  14711. 273.36 s [really-safe-money-gen] instance NFData QuantisationFactor
  14712. 273.36 s [really-safe-money-gen] Testing mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8
  14713. 273.36 s [really-safe-money-gen] @@ -36,9 +36,7 @@
  14714. 273.36 s [really-safe-money-gen] instance Validity QuantisationFactor where
  14715. 273.36 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  14716. 273.36 s [really-safe-money-gen] mconcat
  14717. 273.36 s [really-safe-money-gen] - [ genericValidate qf,
  14718. 273.36 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  14719. 273.37 s [really-safe-money-gen] - ]
  14720. 273.37 s [really-safe-money-gen] + []
  14721. 273.37 s [really-safe-money-gen]
  14722. 273.37 s [really-safe-money-gen] instance NFData QuantisationFactor
  14723. 273.37 s [really-safe-money-gen]
  14724. 273.37 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:553:7-39
  14725. 273.37 s [really-safe-money-gen] @@ -550,11 +550,11 @@
  14726. 273.37 s [really-safe-money-gen] let aa1 = abs a1
  14727. 273.37 s [really-safe-money-gen] aa2 = abs a2
  14728. 273.37 s [really-safe-money-gen] mr = Amount.rate qf1 aa1 qf2 aa2
  14729. 273.37 s [really-safe-money-gen] - in case (a1, a2) of
  14730. 273.37 s [really-safe-money-gen] - (Positive _, Positive _) -> mr
  14731. 273.37 s [really-safe-money-gen] - (Positive _, Negative _) -> Nothing
  14732. 273.37 s [really-safe-money-gen] - (Negative _, Positive _) -> Nothing
  14733. 273.37 s [really-safe-money-gen] - (Negative _, Negative _) -> mr
  14734. 273.37 s [really-safe-money-gen] + in case (a1, a2) of
  14735. 273.37 s [really-safe-money-gen] + (Positive _, Positive _) -> mr
  14736. 273.37 s [really-safe-money-gen] + (Positive _, Negative _) -> Nothing
  14737. 273.37 s [really-safe-money-gen] + (Negative _, Positive _) -> Nothing
  14738. 273.37 s [really-safe-money-gen] + (Negative _, Negative _) -> mr
  14739. 273.37 s [really-safe-money-gen]
  14740. 273.37 s [really-safe-money-gen] -- | Convert an amount of money of one currency into an amount of money of
  14741. 273.37 s [really-safe-money-gen] -- another currency using a conversion rate.
  14742. 273.37 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:553:7-39
  14743. 273.37 s [really-safe-money-gen] @@ -550,11 +550,11 @@
  14744. 273.37 s [really-safe-money-gen] let aa1 = abs a1
  14745. 273.37 s [really-safe-money-gen] aa2 = abs a2
  14746. 273.37 s [really-safe-money-gen] mr = Amount.rate qf1 aa1 qf2 aa2
  14747. 273.37 s [really-safe-money-gen] - in case (a1, a2) of
  14748. 273.37 s [really-safe-money-gen] - (Positive _, Positive _) -> mr
  14749. 273.37 s [really-safe-money-gen] - (Positive _, Negative _) -> Nothing
  14750. 273.37 s [really-safe-money-gen] - (Negative _, Positive _) -> Nothing
  14751. 273.37 s [really-safe-money-gen] - (Negative _, Negative _) -> mr
  14752. 273.37 s [really-safe-money-gen] + in case (a1, a2) of
  14753. 273.37 s [really-safe-money-gen] + (Positive _, Positive _) -> mr
  14754. 273.37 s [really-safe-money-gen] + (Positive _, Negative _) -> Nothing
  14755. 273.37 s [really-safe-money-gen] + (Negative _, Positive _) -> Nothing
  14756. 273.37 s [really-safe-money-gen] + (Negative _, Negative _) -> mr
  14757. 273.37 s [really-safe-money-gen]
  14758. 273.37 s [really-safe-money-gen] -- | Convert an amount of money of one currency into an amount of money of
  14759. 273.37 s [really-safe-money-gen] -- another currency using a conversion rate.
  14760. 273.37 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:591:7-44
  14761. 273.37 s [really-safe-money-gen] @@ -588,9 +588,9 @@
  14762. 273.37 s [really-safe-money-gen] (Maybe Account, Maybe ConversionRate)
  14763. 273.37 s [really-safe-money-gen] convert r qf1 a cr qf2 =
  14764. 273.37 s [really-safe-money-gen] let (ma, mr) = Amount.convert r qf1 (abs a) cr qf2
  14765. 273.37 s [really-safe-money-gen] - in case a of
  14766. 273.37 s [really-safe-money-gen] - Positive _ -> (Positive <$> ma, mr)
  14767. 273.37 s [really-safe-money-gen] - Negative _ -> (Negative <$> ma, mr)
  14768. 273.37 s [really-safe-money-gen] + in case a of
  14769. 273.37 s [really-safe-money-gen] + Positive _ -> (Positive <$> ma, mr)
  14770. 273.37 s [really-safe-money-gen] + Negative _ -> (Negative <$> ma, mr)
  14771. 273.37 s [really-safe-money-gen]
  14772. 273.37 s [really-safe-money-gen] -- | Format an account of money without a symbol.
  14773. 273.37 s [really-safe-money-gen] --
  14774. 273.37 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:591:7-44
  14775. 273.37 s [really-safe-money-gen] @@ -588,9 +588,9 @@
  14776. 273.37 s [really-safe-money-gen] (Maybe Account, Maybe ConversionRate)
  14777. 273.37 s [really-safe-money-gen] convert r qf1 a cr qf2 =
  14778. 273.37 s [really-safe-money-gen] let (ma, mr) = Amount.convert r qf1 (abs a) cr qf2
  14779. 273.37 s [really-safe-money-gen] - in case a of
  14780. 273.37 s [really-safe-money-gen] - Positive _ -> (Positive <$> ma, mr)
  14781. 273.37 s [really-safe-money-gen] - Negative _ -> (Negative <$> ma, mr)
  14782. 273.37 s [really-safe-money-gen] + in case a of
  14783. 273.37 s [really-safe-money-gen] + Positive _ -> (Positive <$> ma, mr)
  14784. 273.37 s [really-safe-money-gen] + Negative _ -> (Negative <$> ma, mr)
  14785. 273.37 s [really-safe-money-gen]
  14786. 273.37 s [really-safe-money-gen] -- | Format an account of money without a symbol.
  14787. 273.37 s [really-safe-money-gen] --
  14788. 273.37 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:328:9-21
  14789. 273.37 s [really-safe-money-gen] @@ -325,7 +325,7 @@
  14790. 273.37 s [really-safe-money-gen] where
  14791. 273.37 s [really-safe-money-gen] go resultDouble
  14792. 273.37 s [really-safe-money-gen] | isNaN d = Nothing
  14793. 273.37 s [really-safe-money-gen] - | isInfinite d = Nothing
  14794. 273.37 s [really-safe-money-gen] + | not (isInfinite d) = Nothing
  14795. 273.37 s [really-safe-money-gen] | otherwise =
  14796. 273.37 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  14797. 273.37 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  14798. 273.37 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:421:32-33
  14799. 273.37 s [really-safe-money-gen] @@ -418,7 +418,7 @@
  14800. 273.37 s [really-safe-money-gen] multiply :: Int32 -> Account -> Maybe Account
  14801. 273.37 s [really-safe-money-gen] multiply factor account =
  14802. 273.37 s [really-safe-money-gen] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  14803. 273.37 s [really-safe-money-gen] - f = case (compare factor 0, compare account zero) of
  14804. 273.37 s [really-safe-money-gen] + f = case (compare factor 1, compare account zero) of
  14805. 273.37 s [really-safe-money-gen] (EQ, _) -> const zero
  14806. 273.37 s [really-safe-money-gen] (_, EQ) -> const zero
  14807. 273.37 s [really-safe-money-gen] (GT, GT) -> Positive
  14808. 273.37 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:553:7-39
  14809. 273.37 s [really-safe-money-gen] @@ -550,11 +550,11 @@
  14810. 273.37 s [really-safe-money-gen] let aa1 = abs a1
  14811. 273.37 s [really-safe-money-gen] aa2 = abs a2
  14812. 273.37 s [really-safe-money-gen] mr = Amount.rate qf1 aa1 qf2 aa2
  14813. 273.37 s [really-safe-money-gen] - in case (a1, a2) of
  14814. 273.37 s [really-safe-money-gen] - (Positive _, Positive _) -> mr
  14815. 273.37 s [really-safe-money-gen] - (Positive _, Negative _) -> Nothing
  14816. 273.37 s [really-safe-money-gen] - (Negative _, Positive _) -> Nothing
  14817. 273.37 s [really-safe-money-gen] - (Negative _, Negative _) -> mr
  14818. 273.37 s [really-safe-money-gen] + in case (a1, a2) of
  14819. 273.37 s [really-safe-money-gen] + (Positive _, Positive _) -> mr
  14820. 273.37 s [really-safe-money-gen] + (Positive _, Negative _) -> Nothing
  14821. 273.37 s [really-safe-money-gen] + (Negative _, Positive _) -> Nothing
  14822. 273.37 s [really-safe-money-gen] + (Negative _, Negative _) -> mr
  14823. 273.37 s [really-safe-money-gen]
  14824. 273.37 s [really-safe-money-gen] -- | Convert an amount of money of one currency into an amount of money of
  14825. 273.37 s [really-safe-money-gen] -- another currency using a conversion rate.
  14826. 273.37 s [really-safe-money-gen] Testing mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8
  14827. 273.37 s [really-safe-money-gen] @@ -36,9 +36,9 @@
  14828. 273.37 s [really-safe-money-gen] instance Validity QuantisationFactor where
  14829. 273.37 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  14830. 273.37 s [really-safe-money-gen] mconcat
  14831. 273.91 s [really-safe-money-gen] - [ genericValidate qf,
  14832. 273.91 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  14833. 273.91 s [really-safe-money-gen] - ]
  14834. 273.91 s [really-safe-money-gen] + [ genericValidate qf,
  14835. 273.91 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ w /= 0
  14836. 273.91 s [really-safe-money-gen] + ]
  14837. 273.91 s [really-safe-money-gen]
  14838. 273.91 s [really-safe-money-gen] instance NFData QuantisationFactor
  14839. 273.91 s [really-safe-money-gen]
  14840. 273.91 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:553:7-39
  14841. 273.91 s [really-safe-money-gen] @@ -550,11 +550,11 @@
  14842. 273.91 s [really-safe-money-gen] let aa1 = abs a1
  14843. 273.91 s [really-safe-money-gen] aa2 = abs a2
  14844. 273.91 s [really-safe-money-gen] mr = Amount.rate qf1 aa1 qf2 aa2
  14845. 273.91 s [really-safe-money-gen] - in case (a1, a2) of
  14846. 273.91 s [really-safe-money-gen] - (Positive _, Positive _) -> mr
  14847. 273.91 s [really-safe-money-gen] - (Positive _, Negative _) -> Nothing
  14848. 273.91 s [really-safe-money-gen] - (Negative _, Positive _) -> Nothing
  14849. 273.91 s [really-safe-money-gen] - (Negative _, Negative _) -> mr
  14850. 273.91 s [really-safe-money-gen] + in case (a1, a2) of
  14851. 273.91 s [really-safe-money-gen] + (Positive _, Positive _) -> mr
  14852. 273.91 s [really-safe-money-gen] + (Positive _, Negative _) -> Nothing
  14853. 273.91 s [really-safe-money-gen] + (Negative _, Positive _) -> Nothing
  14854. 273.91 s [really-safe-money-gen] + (Negative _, Negative _) -> mr
  14855. 273.91 s [really-safe-money-gen]
  14856. 273.91 s [really-safe-money-gen] -- | Convert an amount of money of one currency into an amount of money of
  14857. 273.91 s [really-safe-money-gen] -- another currency using a conversion rate.
  14858. 273.91 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:421:11-29
  14859. 273.91 s [really-safe-money-gen] @@ -418,13 +418,13 @@
  14860. 273.91 s [really-safe-money-gen] multiply :: Int32 -> Account -> Maybe Account
  14861. 273.91 s [really-safe-money-gen] multiply factor account =
  14862. 273.91 s [really-safe-money-gen] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  14863. 273.91 s [really-safe-money-gen] - f = case (compare factor 0, compare account zero) of
  14864. 273.91 s [really-safe-money-gen] - (EQ, _) -> const zero
  14865. 273.91 s [really-safe-money-gen] - (_, EQ) -> const zero
  14866. 273.91 s [really-safe-money-gen] - (GT, GT) -> Positive
  14867. 273.91 s [really-safe-money-gen] - (GT, LT) -> Negative
  14868. 273.91 s [really-safe-money-gen] - (LT, GT) -> Negative
  14869. 273.91 s [really-safe-money-gen] - (LT, LT) -> Positive
  14870. 273.91 s [really-safe-money-gen] + f = case (compare factor 0, compare account zero) of
  14871. 273.91 s [really-safe-money-gen] + (EQ, _) -> const zero
  14872. 273.91 s [really-safe-money-gen] + (_, EQ) -> const zero
  14873. 273.91 s [really-safe-money-gen] + (GT, GT) -> Positive
  14874. 273.92 s [really-safe-money-gen] + (GT, LT) -> Negative
  14875. 273.92 s [really-safe-money-gen] + (LT, GT) -> Negative
  14876. 273.92 s [really-safe-money-gen] + (LT, LT) -> Positive
  14877. 273.92 s [really-safe-money-gen] in f <$> Amount.multiply af (abs account)
  14878. 273.92 s [really-safe-money-gen]
  14879. 273.92 s [really-safe-money-gen] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  14880. 273.92 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:421:11-29
  14881. 273.92 s [really-safe-money-gen] @@ -418,13 +418,13 @@
  14882. 273.92 s [really-safe-money-gen] multiply :: Int32 -> Account -> Maybe Account
  14883. 273.92 s [really-safe-money-gen] multiply factor account =
  14884. 273.92 s [really-safe-money-gen] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  14885. 273.92 s [really-safe-money-gen] - f = case (compare factor 0, compare account zero) of
  14886. 273.92 s [really-safe-money-gen] - (EQ, _) -> const zero
  14887. 273.92 s [really-safe-money-gen] - (_, EQ) -> const zero
  14888. 273.92 s [really-safe-money-gen] - (GT, GT) -> Positive
  14889. 273.92 s [really-safe-money-gen] - (GT, LT) -> Negative
  14890. 273.92 s [really-safe-money-gen] - (LT, GT) -> Negative
  14891. 273.92 s [really-safe-money-gen] - (LT, LT) -> Positive
  14892. 273.92 s [really-safe-money-gen] + f = case (compare factor 0, compare account zero) of
  14893. 273.92 s [really-safe-money-gen] + (EQ, _) -> const zero
  14894. 273.92 s [really-safe-money-gen] + (_, EQ) -> const zero
  14895. 273.92 s [really-safe-money-gen] + (GT, GT) -> Positive
  14896. 273.92 s [really-safe-money-gen] + (GT, LT) -> Negative
  14897. 273.92 s [really-safe-money-gen] + (LT, GT) -> Negative
  14898. 273.92 s [really-safe-money-gen] + (LT, LT) -> Positive
  14899. 273.92 s [really-safe-money-gen] in f <$> Amount.multiply af (abs account)
  14900. 273.92 s [really-safe-money-gen]
  14901. 273.92 s [really-safe-money-gen] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  14902. 273.92 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:421:11-29
  14903. 273.92 s [really-safe-money-gen] @@ -418,13 +418,13 @@
  14904. 273.92 s [really-safe-money-gen] multiply :: Int32 -> Account -> Maybe Account
  14905. 273.92 s [really-safe-money-gen] multiply factor account =
  14906. 273.92 s [really-safe-money-gen] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  14907. 273.92 s [really-safe-money-gen] - f = case (compare factor 0, compare account zero) of
  14908. 273.92 s [really-safe-money-gen] - (EQ, _) -> const zero
  14909. 273.92 s [really-safe-money-gen] - (_, EQ) -> const zero
  14910. 273.92 s [really-safe-money-gen] - (GT, GT) -> Positive
  14911. 273.92 s [really-safe-money-gen] - (GT, LT) -> Negative
  14912. 273.92 s [really-safe-money-gen] - (LT, GT) -> Negative
  14913. 273.92 s [really-safe-money-gen] - (LT, LT) -> Positive
  14914. 273.92 s [really-safe-money-gen] + f = case (compare factor 0, compare account zero) of
  14915. 273.92 s [really-safe-money-gen] + (EQ, _) -> const zero
  14916. 273.92 s [really-safe-money-gen] + (_, EQ) -> const zero
  14917. 273.92 s [really-safe-money-gen] + (GT, GT) -> Positive
  14918. 273.92 s [really-safe-money-gen] + (GT, LT) -> Negative
  14919. 273.92 s [really-safe-money-gen] + (LT, GT) -> Negative
  14920. 273.92 s [really-safe-money-gen] + (LT, LT) -> Positive
  14921. 273.92 s [really-safe-money-gen] in f <$> Amount.multiply af (abs account)
  14922. 273.92 s [really-safe-money-gen]
  14923. 273.92 s [really-safe-money-gen] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  14924. 273.92 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:421:11-29
  14925. 273.92 s [really-safe-money-gen] @@ -418,13 +418,13 @@
  14926. 273.92 s [really-safe-money-gen] multiply :: Int32 -> Account -> Maybe Account
  14927. 273.92 s [really-safe-money-gen] multiply factor account =
  14928. 273.92 s [really-safe-money-gen] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  14929. 273.92 s [really-safe-money-gen] - f = case (compare factor 0, compare account zero) of
  14930. 273.92 s [really-safe-money-gen] - (EQ, _) -> const zero
  14931. 273.92 s [really-safe-money-gen] - (_, EQ) -> const zero
  14932. 273.92 s [really-safe-money-gen] - (GT, GT) -> Positive
  14933. 273.92 s [really-safe-money-gen] - (GT, LT) -> Negative
  14934. 273.92 s [really-safe-money-gen] - (LT, GT) -> Negative
  14935. 273.92 s [really-safe-money-gen] - (LT, LT) -> Positive
  14936. 273.92 s [really-safe-money-gen] + f = case (compare factor 0, compare account zero) of
  14937. 273.92 s [really-safe-money-gen] + (EQ, _) -> const zero
  14938. 273.92 s [really-safe-money-gen] + (_, EQ) -> const zero
  14939. 273.92 s [really-safe-money-gen] + (GT, GT) -> Positive
  14940. 273.92 s [really-safe-money-gen] + (GT, LT) -> Negative
  14941. 273.92 s [really-safe-money-gen] + (LT, GT) -> Negative
  14942. 273.92 s [really-safe-money-gen] + (LT, LT) -> Positive
  14943. 273.92 s [really-safe-money-gen] in f <$> Amount.multiply af (abs account)
  14944. 273.92 s [really-safe-money-gen]
  14945. 273.92 s [really-safe-money-gen] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  14946. 273.92 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:451:14-23
  14947. 273.92 s [really-safe-money-gen] @@ -448,7 +448,7 @@
  14948. 273.92 s [really-safe-money-gen] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  14949. 273.92 s [really-safe-money-gen] DistributedZero -> DistributedZero
  14950. 273.92 s [really-safe-money-gen] DistributedIntoEqualChunks numberOfChunks chunk ->
  14951. 273.92 s [really-safe-money-gen] - if a >= zero
  14952. 273.92 s [really-safe-money-gen] + if True
  14953. 273.92 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  14954. 273.92 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  14955. 273.92 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  14956. 273.92 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:451:14-23
  14957. 273.92 s [really-safe-money-gen] @@ -448,7 +448,7 @@
  14958. 273.92 s [really-safe-money-gen] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  14959. 273.92 s [really-safe-money-gen] DistributedZero -> DistributedZero
  14960. 273.92 s [really-safe-money-gen] DistributedIntoEqualChunks numberOfChunks chunk ->
  14961. 273.92 s [really-safe-money-gen] - if a >= zero
  14962. 273.92 s [really-safe-money-gen] + if False
  14963. 273.92 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  14964. 273.92 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  14965. 273.92 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  14966. 273.92 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:451:14-23
  14967. 273.92 s [really-safe-money-gen] @@ -448,7 +448,7 @@
  14968. 273.92 s [really-safe-money-gen] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  14969. 273.92 s [really-safe-money-gen] DistributedZero -> DistributedZero
  14970. 273.92 s [really-safe-money-gen] DistributedIntoEqualChunks numberOfChunks chunk ->
  14971. 273.92 s [really-safe-money-gen] - if a >= zero
  14972. 273.92 s [really-safe-money-gen] + if not (a >= zero)
  14973. 273.92 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  14974. 273.92 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  14975. 273.92 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  14976. 273.92 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:421:11-29
  14977. 273.92 s [really-safe-money-gen] @@ -418,13 +418,13 @@
  14978. 273.92 s [really-safe-money-gen] multiply :: Int32 -> Account -> Maybe Account
  14979. 273.92 s [really-safe-money-gen] multiply factor account =
  14980. 273.92 s [really-safe-money-gen] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  14981. 273.92 s [really-safe-money-gen] - f = case (compare factor 0, compare account zero) of
  14982. 273.92 s [really-safe-money-gen] - (EQ, _) -> const zero
  14983. 273.92 s [really-safe-money-gen] - (_, EQ) -> const zero
  14984. 273.92 s [really-safe-money-gen] - (GT, GT) -> Positive
  14985. 273.92 s [really-safe-money-gen] - (GT, LT) -> Negative
  14986. 273.92 s [really-safe-money-gen] - (LT, GT) -> Negative
  14987. 273.92 s [really-safe-money-gen] - (LT, LT) -> Positive
  14988. 273.92 s [really-safe-money-gen] + f = case (compare factor 0, compare account zero) of
  14989. 273.92 s [really-safe-money-gen] + (EQ, _) -> const zero
  14990. 273.92 s [really-safe-money-gen] + (_, EQ) -> const zero
  14991. 273.92 s [really-safe-money-gen] + (GT, GT) -> Positive
  14992. 273.92 s [really-safe-money-gen] + (GT, LT) -> Negative
  14993. 273.92 s [really-safe-money-gen] + (LT, GT) -> Negative
  14994. 273.92 s [really-safe-money-gen] + (LT, LT) -> Positive
  14995. 273.92 s [really-safe-money-gen] in f <$> Amount.multiply af (abs account)
  14996. 273.92 s [really-safe-money-gen]
  14997. 273.92 s [really-safe-money-gen] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  14998. 273.92 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:451:11-76
  14999. 273.92 s [really-safe-money-gen] @@ -448,9 +448,9 @@
  15000. 273.93 s [really-safe-money-gen] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15001. 273.93 s [really-safe-money-gen] DistributedZero -> DistributedZero
  15002. 273.93 s [really-safe-money-gen] DistributedIntoEqualChunks numberOfChunks chunk ->
  15003. 273.93 s [really-safe-money-gen] - if a >= zero
  15004. 273.93 s [really-safe-money-gen] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15005. 273.93 s [really-safe-money-gen] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15006. 273.93 s [really-safe-money-gen] + if a >= zero
  15007. 273.93 s [really-safe-money-gen] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15008. 273.93 s [really-safe-money-gen] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15009. 273.93 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15010. 273.93 s [really-safe-money-gen] if a >= zero
  15011. 273.93 s [really-safe-money-gen] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15012. 273.93 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:455:14-23
  15013. 273.93 s [really-safe-money-gen] @@ -452,7 +452,7 @@
  15014. 273.93 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15015. 273.93 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15016. 273.93 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15017. 273.93 s [really-safe-money-gen] - if a >= zero
  15018. 273.93 s [really-safe-money-gen] + if False
  15019. 275.15 s [really-safe-money-gen] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15020. 275.25 s [really-safe-money-gen] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15021. 275.25 s [really-safe-money-gen]
  15022. 275.25 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63
  15023. 275.25 s [really-safe-money-gen] @@ -37,7 +37,7 @@
  15024. 275.25 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  15025. 275.25 s [really-safe-money-gen] mconcat
  15026. 275.25 s [really-safe-money-gen] [ genericValidate qf,
  15027. 275.25 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  15028. 275.25 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ True
  15029. 275.25 s [really-safe-money-gen] ]
  15030. 275.25 s [really-safe-money-gen]
  15031. 275.25 s [really-safe-money-gen] instance NFData QuantisationFactor
  15032. 275.25 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:455:14-23
  15033. 275.25 s [really-safe-money-gen] @@ -452,7 +452,7 @@
  15034. 275.25 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15035. 275.25 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15036. 275.25 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15037. 275.25 s [really-safe-money-gen] - if a >= zero
  15038. 275.25 s [really-safe-money-gen] + if True
  15039. 275.25 s [really-safe-money-gen] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15040. 275.25 s [really-safe-money-gen] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15041. 275.25 s [really-safe-money-gen]
  15042. 275.25 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:455:14-23
  15043. 275.25 s [really-safe-money-gen] @@ -452,7 +452,7 @@
  15044. 275.25 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15045. 275.25 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15046. 275.25 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15047. 275.25 s [really-safe-money-gen] - if a >= zero
  15048. 275.25 s [really-safe-money-gen] + if not (a >= zero)
  15049. 275.25 s [really-safe-money-gen] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15050. 275.25 s [really-safe-money-gen] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15051. 275.25 s [really-safe-money-gen]
  15052. 275.25 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:421:11-29
  15053. 275.25 s [really-safe-money-gen] @@ -418,13 +418,13 @@
  15054. 275.25 s [really-safe-money-gen] multiply :: Int32 -> Account -> Maybe Account
  15055. 275.25 s [really-safe-money-gen] multiply factor account =
  15056. 275.25 s [really-safe-money-gen] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  15057. 275.25 s [really-safe-money-gen] - f = case (compare factor 0, compare account zero) of
  15058. 275.25 s [really-safe-money-gen] - (EQ, _) -> const zero
  15059. 275.25 s [really-safe-money-gen] - (_, EQ) -> const zero
  15060. 275.25 s [really-safe-money-gen] - (GT, GT) -> Positive
  15061. 275.25 s [really-safe-money-gen] - (GT, LT) -> Negative
  15062. 275.25 s [really-safe-money-gen] - (LT, GT) -> Negative
  15063. 275.25 s [really-safe-money-gen] - (LT, LT) -> Positive
  15064. 275.25 s [really-safe-money-gen] + f = case (compare factor 0, compare account zero) of
  15065. 275.25 s [really-safe-money-gen] + (EQ, _) -> const zero
  15066. 275.26 s [really-safe-money-gen] + (_, EQ) -> const zero
  15067. 275.26 s [really-safe-money-gen] + (GT, GT) -> Positive
  15068. 275.26 s [really-safe-money-gen] + (GT, LT) -> Negative
  15069. 275.26 s [really-safe-money-gen] + (LT, GT) -> Negative
  15070. 275.26 s [really-safe-money-gen] + (LT, LT) -> Positive
  15071. 275.26 s [really-safe-money-gen] in f <$> Amount.multiply af (abs account)
  15072. 275.26 s [really-safe-money-gen]
  15073. 275.26 s [really-safe-money-gen] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  15074. 275.26 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:447:7-136
  15075. 275.26 s [really-safe-money-gen] @@ -444,17 +444,17 @@
  15076. 275.26 s [really-safe-money-gen] distribute a f =
  15077. 275.26 s [really-safe-money-gen] let aa = abs a
  15078. 275.26 s [really-safe-money-gen] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  15079. 275.26 s [really-safe-money-gen] - in case Amount.distribute aa af of
  15080. 275.26 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15081. 275.26 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15082. 275.26 s [really-safe-money-gen] - DistributedIntoEqualChunks numberOfChunks chunk ->
  15083. 275.26 s [really-safe-money-gen] - if a >= zero
  15084. 275.26 s [really-safe-money-gen] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15085. 275.26 s [really-safe-money-gen] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15086. 275.26 s [really-safe-money-gen] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15087. 275.26 s [really-safe-money-gen] - if a >= zero
  15088. 275.26 s [really-safe-money-gen] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15089. 275.26 s [really-safe-money-gen] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15090. 275.26 s [really-safe-money-gen] + in case Amount.distribute aa af of
  15091. 275.26 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15092. 275.26 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15093. 275.26 s [really-safe-money-gen] + DistributedIntoEqualChunks numberOfChunks chunk ->
  15094. 275.26 s [really-safe-money-gen] + if a >= zero
  15095. 275.26 s [really-safe-money-gen] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15096. 275.26 s [really-safe-money-gen] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15097. 275.26 s [really-safe-money-gen] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15098. 275.26 s [really-safe-money-gen] + if a >= zero
  15099. 275.26 s [really-safe-money-gen] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15100. 275.26 s [really-safe-money-gen] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15101. 275.26 s [really-safe-money-gen]
  15102. 275.26 s [really-safe-money-gen] type AccountDistribution = Amount.Distribution Account
  15103. 275.26 s [really-safe-money-gen]
  15104. 275.26 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:447:7-136
  15105. 275.26 s [really-safe-money-gen] @@ -444,17 +444,17 @@
  15106. 275.26 s [really-safe-money-gen] distribute a f =
  15107. 275.26 s [really-safe-money-gen] let aa = abs a
  15108. 275.26 s [really-safe-money-gen] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  15109. 275.26 s [really-safe-money-gen] - in case Amount.distribute aa af of
  15110. 275.26 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15111. 275.26 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15112. 275.26 s [really-safe-money-gen] - DistributedIntoEqualChunks numberOfChunks chunk ->
  15113. 275.26 s [really-safe-money-gen] - if a >= zero
  15114. 275.26 s [really-safe-money-gen] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15115. 275.26 s [really-safe-money-gen] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15116. 275.26 s [really-safe-money-gen] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15117. 275.26 s [really-safe-money-gen] - if a >= zero
  15118. 275.26 s [really-safe-money-gen] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15119. 275.26 s [really-safe-money-gen] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15120. 275.26 s [really-safe-money-gen] + in case Amount.distribute aa af of
  15121. 275.26 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15122. 275.26 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15123. 275.26 s [really-safe-money-gen] + DistributedIntoEqualChunks numberOfChunks chunk ->
  15124. 275.26 s [really-safe-money-gen] + if a >= zero
  15125. 275.26 s [really-safe-money-gen] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15126. 275.26 s [really-safe-money-gen] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15127. 275.26 s [really-safe-money-gen] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15128. 275.26 s [really-safe-money-gen] + if a >= zero
  15129. 275.26 s [really-safe-money-gen] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15130. 275.26 s [really-safe-money-gen] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15131. 275.26 s [really-safe-money-gen]
  15132. 275.26 s [really-safe-money-gen] type AccountDistribution = Amount.Distribution Account
  15133. 275.26 s [really-safe-money-gen]
  15134. 275.26 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:522:19-35
  15135. 275.26 s [really-safe-money-gen] @@ -519,10 +519,10 @@
  15136. 275.26 s [really-safe-money-gen] let aa = abs account
  15137. 275.26 s [really-safe-money-gen] (amount, actualFraction) = Amount.fraction ro aa af
  15138. 275.26 s [really-safe-money-gen] func :: Maybe Amount -> Ratio Natural -> (Maybe Account, Ratio Natural)
  15139. 275.26 s [really-safe-money-gen] - func ma r = case compare account zero of
  15140. 275.26 s [really-safe-money-gen] - EQ -> (Just zero, r)
  15141. 275.26 s [really-safe-money-gen] - GT -> (Positive <$> ma, r)
  15142. 275.26 s [really-safe-money-gen] - LT -> (Negative <$> ma, r)
  15143. 275.26 s [really-safe-money-gen] + func ma r = case compare account zero of
  15144. 275.26 s [really-safe-money-gen] + EQ -> (Just zero, r)
  15145. 275.26 s [really-safe-money-gen] + GT -> (Positive <$> ma, r)
  15146. 275.26 s [really-safe-money-gen] + LT -> (Negative <$> ma, r)
  15147. 275.26 s [really-safe-money-gen] in func amount actualFraction
  15148. 275.26 s [really-safe-money-gen]
  15149. 275.26 s [really-safe-money-gen] -- | Compute the currency conversion rate between two accounts of money of
  15150. 275.26 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:447:7-136
  15151. 275.26 s [really-safe-money-gen] @@ -444,17 +444,17 @@
  15152. 275.26 s [really-safe-money-gen] distribute a f =
  15153. 275.26 s [really-safe-money-gen] let aa = abs a
  15154. 275.26 s [really-safe-money-gen] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  15155. 275.26 s [really-safe-money-gen] - in case Amount.distribute aa af of
  15156. 275.26 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15157. 275.26 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15158. 275.26 s [really-safe-money-gen] - DistributedIntoEqualChunks numberOfChunks chunk ->
  15159. 275.26 s [really-safe-money-gen] - if a >= zero
  15160. 275.26 s [really-safe-money-gen] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15161. 275.26 s [really-safe-money-gen] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15162. 275.26 s [really-safe-money-gen] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15163. 275.26 s [really-safe-money-gen] - if a >= zero
  15164. 275.26 s [really-safe-money-gen] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15165. 275.26 s [really-safe-money-gen] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15166. 275.26 s [really-safe-money-gen] + in case Amount.distribute aa af of
  15167. 276.24 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15168. 276.24 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15169. 276.24 s [really-safe-money-gen] + DistributedIntoEqualChunks numberOfChunks chunk ->
  15170. 276.24 s [really-safe-money-gen] + if a >= zero
  15171. 276.24 s [really-safe-money-gen] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15172. 276.25 s [really-safe-money-gen] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15173. 276.25 s [really-safe-money-gen] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15174. 276.25 s [really-safe-money-gen] + if a >= zero
  15175. 276.25 s [really-safe-money-gen] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15176. 276.25 s [really-safe-money-gen] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15177. 276.25 s [really-safe-money-gen]
  15178. 276.25 s [really-safe-money-gen] type AccountDistribution = Amount.Distribution Account
  15179. 276.25 s [really-safe-money-gen]
  15180. 276.25 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:495:10-23
  15181. 276.25 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  15182. 276.25 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  15183. 276.25 s [really-safe-money-gen] r :: Integer
  15184. 276.25 s [really-safe-money-gen] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  15185. 276.25 s [really-safe-money-gen] - in if r > maxBoundI
  15186. 276.25 s [really-safe-money-gen] + in if False
  15187. 276.25 s [really-safe-money-gen] then Nothing
  15188. 276.25 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  15189. 276.25 s [really-safe-money-gen]
  15190. 276.25 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:522:19-35
  15191. 276.25 s [really-safe-money-gen] @@ -519,10 +519,10 @@
  15192. 276.25 s [really-safe-money-gen] let aa = abs account
  15193. 276.25 s [really-safe-money-gen] (amount, actualFraction) = Amount.fraction ro aa af
  15194. 276.25 s [really-safe-money-gen] func :: Maybe Amount -> Ratio Natural -> (Maybe Account, Ratio Natural)
  15195. 276.25 s [really-safe-money-gen] - func ma r = case compare account zero of
  15196. 276.25 s [really-safe-money-gen] - EQ -> (Just zero, r)
  15197. 276.25 s [really-safe-money-gen] - GT -> (Positive <$> ma, r)
  15198. 276.25 s [really-safe-money-gen] - LT -> (Negative <$> ma, r)
  15199. 276.25 s [really-safe-money-gen] + func ma r = case compare account zero of
  15200. 276.25 s [really-safe-money-gen] + EQ -> (Just zero, r)
  15201. 276.25 s [really-safe-money-gen] + GT -> (Positive <$> ma, r)
  15202. 276.25 s [really-safe-money-gen] + LT -> (Negative <$> ma, r)
  15203. 276.25 s [really-safe-money-gen] in func amount actualFraction
  15204. 276.25 s [really-safe-money-gen]
  15205. 276.25 s [really-safe-money-gen] -- | Compute the currency conversion rate between two accounts of money of
  15206. 276.25 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:522:19-35
  15207. 276.25 s [really-safe-money-gen] @@ -519,10 +519,10 @@
  15208. 276.25 s [really-safe-money-gen] let aa = abs account
  15209. 276.25 s [really-safe-money-gen] (amount, actualFraction) = Amount.fraction ro aa af
  15210. 276.25 s [really-safe-money-gen] func :: Maybe Amount -> Ratio Natural -> (Maybe Account, Ratio Natural)
  15211. 276.25 s [really-safe-money-gen] - func ma r = case compare account zero of
  15212. 276.25 s [really-safe-money-gen] - EQ -> (Just zero, r)
  15213. 276.25 s [really-safe-money-gen] - GT -> (Positive <$> ma, r)
  15214. 276.25 s [really-safe-money-gen] - LT -> (Negative <$> ma, r)
  15215. 276.25 s [really-safe-money-gen] + func ma r = case compare account zero of
  15216. 276.25 s [really-safe-money-gen] + EQ -> (Just zero, r)
  15217. 276.25 s [really-safe-money-gen] + GT -> (Positive <$> ma, r)
  15218. 276.25 s [really-safe-money-gen] + LT -> (Negative <$> ma, r)
  15219. 276.25 s [really-safe-money-gen] in func amount actualFraction
  15220. 276.25 s [really-safe-money-gen]
  15221. 276.25 s [really-safe-money-gen] -- | Compute the currency conversion rate between two accounts of money of
  15222. 276.25 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:447:7-136
  15223. 276.25 s [really-safe-money-gen] @@ -444,17 +444,17 @@
  15224. 276.25 s [really-safe-money-gen] distribute a f =
  15225. 276.25 s [really-safe-money-gen] let aa = abs a
  15226. 276.25 s [really-safe-money-gen] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  15227. 276.25 s [really-safe-money-gen] - in case Amount.distribute aa af of
  15228. 276.25 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15229. 276.25 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15230. 276.25 s [really-safe-money-gen] - DistributedIntoEqualChunks numberOfChunks chunk ->
  15231. 276.25 s [really-safe-money-gen] - if a >= zero
  15232. 276.25 s [really-safe-money-gen] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15233. 276.25 s [really-safe-money-gen] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15234. 276.26 s [really-safe-money-gen] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15235. 276.26 s [really-safe-money-gen] - if a >= zero
  15236. 276.26 s [really-safe-money-gen] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15237. 276.26 s [really-safe-money-gen] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15238. 276.26 s [really-safe-money-gen] + in case Amount.distribute aa af of
  15239. 276.26 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15240. 276.26 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15241. 276.26 s [really-safe-money-gen] + DistributedIntoEqualChunks numberOfChunks chunk ->
  15242. 276.26 s [really-safe-money-gen] + if a >= zero
  15243. 276.26 s [really-safe-money-gen] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15244. 276.26 s [really-safe-money-gen] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15245. 276.26 s [really-safe-money-gen] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15246. 276.26 s [really-safe-money-gen] + if a >= zero
  15247. 276.26 s [really-safe-money-gen] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15248. 276.26 s [really-safe-money-gen] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15249. 276.26 s [really-safe-money-gen]
  15250. 276.26 s [really-safe-money-gen] type AccountDistribution = Amount.Distribution Account
  15251. 276.26 s [really-safe-money-gen]
  15252. 276.26 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:495:17-18
  15253. 276.26 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  15254. 276.26 s [really-safe-money-gen] fraction rounding account f =
  15255. 276.26 s [really-safe-money-gen] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  15256. 276.26 s [really-safe-money-gen] ro =
  15257. 276.26 s [really-safe-money-gen] - if f >= 0
  15258. 276.26 s [really-safe-money-gen] + if f >= 1
  15259. 276.26 s [really-safe-money-gen] then rounding
  15260. 276.26 s [really-safe-money-gen] else case rounding of
  15261. 276.26 s [really-safe-money-gen] RoundUp -> RoundDown
  15262. 276.26 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:495:12-18
  15263. 276.26 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  15264. 276.26 s [really-safe-money-gen] fraction rounding account f =
  15265. 276.26 s [really-safe-money-gen] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  15266. 276.26 s [really-safe-money-gen] ro =
  15267. 276.26 s [really-safe-money-gen] - if f >= 0
  15268. 276.26 s [really-safe-money-gen] + if False
  15269. 276.26 s [really-safe-money-gen] then rounding
  15270. 276.26 s [really-safe-money-gen] else case rounding of
  15271. 276.26 s [really-safe-money-gen] RoundUp -> RoundDown
  15272. 276.26 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:495:12-18
  15273. 276.26 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  15274. 276.26 s [really-safe-money-gen] fraction rounding account f =
  15275. 276.26 s [really-safe-money-gen] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  15276. 276.26 s [really-safe-money-gen] ro =
  15277. 276.26 s [really-safe-money-gen] - if f >= 0
  15278. 276.26 s [really-safe-money-gen] + if not (f >= 0)
  15279. 276.26 s [really-safe-money-gen] then rounding
  15280. 276.26 s [really-safe-money-gen] else case rounding of
  15281. 276.26 s [really-safe-money-gen] RoundUp -> RoundDown
  15282. 276.26 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:497:16-41
  15283. 276.26 s [really-safe-money-gen] @@ -494,10 +494,10 @@
  15284. 276.26 s [really-safe-money-gen] ro =
  15285. 276.26 s [really-safe-money-gen] if f >= 0
  15286. 276.26 s [really-safe-money-gen] then rounding
  15287. 276.26 s [really-safe-money-gen] - else case rounding of
  15288. 276.26 s [really-safe-money-gen] - RoundUp -> RoundDown
  15289. 276.26 s [really-safe-money-gen] - RoundDown -> RoundUp
  15290. 276.26 s [really-safe-money-gen] - RoundNearest -> RoundNearest
  15291. 276.26 s [really-safe-money-gen] + else case rounding of
  15292. 276.26 s [really-safe-money-gen] + RoundUp -> RoundDown
  15293. 276.26 s [really-safe-money-gen] + RoundDown -> RoundUp
  15294. 276.26 s [really-safe-money-gen] + RoundNearest -> RoundNearest
  15295. 276.26 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  15296. 276.26 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  15297. 276.26 s [really-safe-money-gen] in if f >= 0
  15298. 276.26 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:497:16-41
  15299. 276.26 s [really-safe-money-gen] @@ -494,10 +494,10 @@
  15300. 276.26 s [really-safe-money-gen] ro =
  15301. 276.26 s [really-safe-money-gen] if f >= 0
  15302. 276.26 s [really-safe-money-gen] then rounding
  15303. 276.26 s [really-safe-money-gen] - else case rounding of
  15304. 276.26 s [really-safe-money-gen] - RoundUp -> RoundDown
  15305. 276.26 s [really-safe-money-gen] - RoundDown -> RoundUp
  15306. 276.26 s [really-safe-money-gen] - RoundNearest -> RoundNearest
  15307. 276.26 s [really-safe-money-gen] + else case rounding of
  15308. 276.26 s [really-safe-money-gen] + RoundUp -> RoundDown
  15309. 276.26 s [really-safe-money-gen] + RoundDown -> RoundUp
  15310. 276.26 s [really-safe-money-gen] + RoundNearest -> RoundNearest
  15311. 276.26 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  15312. 276.26 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  15313. 276.26 s [really-safe-money-gen] in if f >= 0
  15314. 276.26 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:495:9-41
  15315. 276.26 s [really-safe-money-gen] @@ -492,12 +492,12 @@
  15316. 276.26 s [really-safe-money-gen] fraction rounding account f =
  15317. 276.26 s [really-safe-money-gen] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  15318. 276.26 s [really-safe-money-gen] ro =
  15319. 276.26 s [really-safe-money-gen] - if f >= 0
  15320. 276.26 s [really-safe-money-gen] - then rounding
  15321. 276.26 s [really-safe-money-gen] - else case rounding of
  15322. 276.26 s [really-safe-money-gen] - RoundUp -> RoundDown
  15323. 276.26 s [really-safe-money-gen] - RoundDown -> RoundUp
  15324. 276.26 s [really-safe-money-gen] - RoundNearest -> RoundNearest
  15325. 276.26 s [really-safe-money-gen] + if f >= 0
  15326. 276.26 s [really-safe-money-gen] + then rounding
  15327. 276.26 s [really-safe-money-gen] + else case rounding of
  15328. 276.26 s [really-safe-money-gen] + RoundUp -> RoundDown
  15329. 276.26 s [really-safe-money-gen] + RoundDown -> RoundUp
  15330. 276.26 s [really-safe-money-gen] + RoundNearest -> RoundNearest
  15331. 276.26 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  15332. 276.26 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  15333. 276.26 s [really-safe-money-gen] in if f >= 0
  15334. 276.26 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:495:12-18
  15335. 276.26 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  15336. 276.26 s [really-safe-money-gen] fraction rounding account f =
  15337. 276.26 s [really-safe-money-gen] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  15338. 276.26 s [really-safe-money-gen] ro =
  15339. 276.26 s [really-safe-money-gen] - if f >= 0
  15340. 276.26 s [really-safe-money-gen] + if True
  15341. 276.26 s [really-safe-money-gen] then rounding
  15342. 276.26 s [really-safe-money-gen] else case rounding of
  15343. 276.26 s [really-safe-money-gen] RoundUp -> RoundDown
  15344. 276.26 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:503:15-16
  15345. 276.27 s [really-safe-money-gen] @@ -500,7 +500,7 @@
  15346. 276.27 s [really-safe-money-gen] RoundNearest -> RoundNearest
  15347. 276.27 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  15348. 276.27 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  15349. 276.27 s [really-safe-money-gen] - in if f >= 0
  15350. 276.27 s [really-safe-money-gen] + in if f >= 1
  15351. 276.27 s [really-safe-money-gen] then (ma, r)
  15352. 276.27 s [really-safe-money-gen] else (negate <$> ma, -r)
  15353. 276.27 s [really-safe-money-gen]
  15354. 276.27 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:503:10-16
  15355. 276.27 s [really-safe-money-gen] @@ -500,7 +500,7 @@
  15356. 276.27 s [really-safe-money-gen] RoundNearest -> RoundNearest
  15357. 276.27 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  15358. 276.27 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  15359. 276.27 s [really-safe-money-gen] - in if f >= 0
  15360. 276.27 s [really-safe-money-gen] + in if True
  15361. 276.27 s [really-safe-money-gen] then (ma, r)
  15362. 276.27 s [really-safe-money-gen] else (negate <$> ma, -r)
  15363. 276.27 s [really-safe-money-gen]
  15364. 276.27 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/QuantisationFactor.hs:98:5-19
  15365. 278.39 s [really-safe-money-gen] @@ -95,9 +95,9 @@
  15366. 278.39 s [really-safe-money-gen] else Just r
  15367. 278.39 s [really-safe-money-gen]
  15368. 278.39 s [really-safe-money-gen] fac <-
  15369. 278.39 s [really-safe-money-gen] - if denominator rat == 1
  15370. 278.39 s [really-safe-money-gen] - then Just (numerator rat)
  15371. 278.39 s [really-safe-money-gen] - else Nothing
  15372. 278.39 s [really-safe-money-gen] + if denominator rat == 1
  15373. 278.39 s [really-safe-money-gen] + then Just (numerator rat)
  15374. 278.39 s [really-safe-money-gen] + else Nothing
  15375. 278.39 s [really-safe-money-gen]
  15376. 278.39 s [really-safe-money-gen] if fac <= fromIntegral (maxBound :: Word32)
  15377. 278.39 s [really-safe-money-gen] then Just (QuantisationFactor (fromIntegral fac))
  15378. 278.39 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:503:7-33
  15379. 278.39 s [really-safe-money-gen] @@ -500,9 +500,9 @@
  15380. 278.39 s [really-safe-money-gen] RoundNearest -> RoundNearest
  15381. 278.39 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  15382. 278.39 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  15383. 278.39 s [really-safe-money-gen] - in if f >= 0
  15384. 278.39 s [really-safe-money-gen] - then (ma, r)
  15385. 278.39 s [really-safe-money-gen] - else (negate <$> ma, -r)
  15386. 278.40 s [really-safe-money-gen] + in if f >= 0
  15387. 278.40 s [really-safe-money-gen] + then (ma, r)
  15388. 278.40 s [really-safe-money-gen] + else (negate <$> ma, -r)
  15389. 278.40 s [really-safe-money-gen]
  15390. 278.40 s [really-safe-money-gen] -- | Fractional multiplication with a positive fraction, see 'Amount.fraction' and 'Account.fraction'.
  15391. 278.40 s [really-safe-money-gen] --
  15392. 278.40 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:233:14-20
  15393. 278.40 s [really-safe-money-gen] @@ -230,7 +230,7 @@
  15394. 278.40 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  15395. 278.40 s [really-safe-money-gen] fromRational quantisationFactor r =
  15396. 278.40 s [really-safe-money-gen] let r' = Prelude.abs r
  15397. 278.40 s [really-safe-money-gen] - f = if r >= 0 then Positive else Negative
  15398. 278.40 s [really-safe-money-gen] + f = if True then Positive else Negative
  15399. 278.40 s [really-safe-money-gen] in f <$> Amount.fromRational quantisationFactor r'
  15400. 278.40 s [really-safe-money-gen]
  15401. 278.40 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  15402. 278.40 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:233:19-20
  15403. 278.40 s [really-safe-money-gen] @@ -230,7 +230,7 @@
  15404. 278.40 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  15405. 278.40 s [really-safe-money-gen] fromRational quantisationFactor r =
  15406. 278.40 s [really-safe-money-gen] let r' = Prelude.abs r
  15407. 278.40 s [really-safe-money-gen] - f = if r >= 0 then Positive else Negative
  15408. 278.40 s [really-safe-money-gen] + f = if r >= 1 then Positive else Negative
  15409. 278.40 s [really-safe-money-gen] in f <$> Amount.fromRational quantisationFactor r'
  15410. 278.40 s [really-safe-money-gen]
  15411. 278.40 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  15412. 278.40 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:233:14-20
  15413. 278.40 s [really-safe-money-gen] @@ -230,7 +230,7 @@
  15414. 278.40 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  15415. 278.40 s [really-safe-money-gen] fromRational quantisationFactor r =
  15416. 278.40 s [really-safe-money-gen] let r' = Prelude.abs r
  15417. 278.40 s [really-safe-money-gen] - f = if r >= 0 then Positive else Negative
  15418. 278.40 s [really-safe-money-gen] + f = if False then Positive else Negative
  15419. 278.40 s [really-safe-money-gen] in f <$> Amount.fromRational quantisationFactor r'
  15420. 278.40 s [really-safe-money-gen]
  15421. 278.40 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  15422. 278.40 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:233:14-20
  15423. 278.40 s [really-safe-money-gen] @@ -230,7 +230,7 @@
  15424. 278.40 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  15425. 278.40 s [really-safe-money-gen] fromRational quantisationFactor r =
  15426. 278.40 s [really-safe-money-gen] let r' = Prelude.abs r
  15427. 278.40 s [really-safe-money-gen] - f = if r >= 0 then Positive else Negative
  15428. 278.40 s [really-safe-money-gen] + f = if not (r >= 0) then Positive else Negative
  15429. 278.40 s [really-safe-money-gen] in f <$> Amount.fromRational quantisationFactor r'
  15430. 278.40 s [really-safe-money-gen]
  15431. 278.40 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  15432. 278.40 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:233:11-48
  15433. 278.40 s [really-safe-money-gen] @@ -230,7 +230,7 @@
  15434. 278.40 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  15435. 278.40 s [really-safe-money-gen] fromRational quantisationFactor r =
  15436. 278.40 s [really-safe-money-gen] let r' = Prelude.abs r
  15437. 278.40 s [really-safe-money-gen] - f = if r >= 0 then Positive else Negative
  15438. 278.40 s [really-safe-money-gen] + f = if r >= 0 then Positive else Negative
  15439. 278.40 s [really-safe-money-gen] in f <$> Amount.fromRational quantisationFactor r'
  15440. 278.40 s [really-safe-money-gen]
  15441. 278.40 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  15442. 278.40 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:503:10-16
  15443. 278.40 s [really-safe-money-gen] @@ -500,7 +500,7 @@
  15444. 278.40 s [really-safe-money-gen] RoundNearest -> RoundNearest
  15445. 278.40 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  15446. 278.40 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  15447. 278.40 s [really-safe-money-gen] - in if f >= 0
  15448. 278.40 s [really-safe-money-gen] + in if False
  15449. 278.40 s [really-safe-money-gen] then (ma, r)
  15450. 278.40 s [really-safe-money-gen] else (negate <$> ma, -r)
  15451. 278.40 s [really-safe-money-gen]
  15452. 278.40 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:455:11-136
  15453. 278.40 s [really-safe-money-gen] @@ -452,9 +452,9 @@
  15454. 278.40 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15455. 278.40 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15456. 278.40 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15457. 278.40 s [really-safe-money-gen] - if a >= zero
  15458. 278.40 s [really-safe-money-gen] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15459. 278.40 s [really-safe-money-gen] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15460. 278.40 s [really-safe-money-gen] + if a >= zero
  15461. 278.40 s [really-safe-money-gen] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15462. 278.40 s [really-safe-money-gen] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15463. 278.40 s [really-safe-money-gen]
  15464. 278.40 s [really-safe-money-gen] type AccountDistribution = Amount.Distribution Account
  15465. 278.40 s [really-safe-money-gen]
  15466. 278.40 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:497:16-41
  15467. 278.40 s [really-safe-money-gen] @@ -494,10 +494,10 @@
  15468. 278.40 s [really-safe-money-gen] ro =
  15469. 278.40 s [really-safe-money-gen] if f >= 0
  15470. 278.40 s [really-safe-money-gen] then rounding
  15471. 278.40 s [really-safe-money-gen] - else case rounding of
  15472. 278.40 s [really-safe-money-gen] - RoundUp -> RoundDown
  15473. 278.40 s [really-safe-money-gen] - RoundDown -> RoundUp
  15474. 278.40 s [really-safe-money-gen] - RoundNearest -> RoundNearest
  15475. 278.40 s [really-safe-money-gen] + else case rounding of
  15476. 278.40 s [really-safe-money-gen] + RoundUp -> RoundDown
  15477. 278.40 s [really-safe-money-gen] + RoundDown -> RoundUp
  15478. 278.40 s [really-safe-money-gen] + RoundNearest -> RoundNearest
  15479. 278.40 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  15480. 278.41 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  15481. 278.41 s [really-safe-money-gen] in if f >= 0
  15482. 278.41 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:211:11-37
  15483. 278.41 s [really-safe-money-gen] @@ -208,9 +208,9 @@
  15484. 278.41 s [really-safe-money-gen] -- (-3) % 20
  15485. 278.41 s [really-safe-money-gen] toRational :: QuantisationFactor -> Account -> Rational
  15486. 278.41 s [really-safe-money-gen] toRational quantisationFactor account =
  15487. 278.41 s [really-safe-money-gen] - let f = case account of
  15488. 278.41 s [really-safe-money-gen] - Positive _ -> id
  15489. 278.41 s [really-safe-money-gen] - Negative _ -> Prelude.negate
  15490. 278.41 s [really-safe-money-gen] + let f = case account of
  15491. 278.41 s [really-safe-money-gen] + Positive _ -> id
  15492. 278.41 s [really-safe-money-gen] + Negative _ -> Prelude.negate
  15493. 278.41 s [really-safe-money-gen] in f $ Amount.toRational quantisationFactor (abs account)
  15494. 278.41 s [really-safe-money-gen]
  15495. 278.41 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  15496. 278.41 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:211:11-37
  15497. 278.41 s [really-safe-money-gen] @@ -208,9 +208,9 @@
  15498. 278.41 s [really-safe-money-gen] -- (-3) % 20
  15499. 278.41 s [really-safe-money-gen] toRational :: QuantisationFactor -> Account -> Rational
  15500. 278.41 s [really-safe-money-gen] toRational quantisationFactor account =
  15501. 278.41 s [really-safe-money-gen] - let f = case account of
  15502. 278.41 s [really-safe-money-gen] - Positive _ -> id
  15503. 278.41 s [really-safe-money-gen] - Negative _ -> Prelude.negate
  15504. 278.41 s [really-safe-money-gen] + let f = case account of
  15505. 278.41 s [really-safe-money-gen] + Positive _ -> id
  15506. 278.41 s [really-safe-money-gen] + Negative _ -> Prelude.negate
  15507. 278.41 s [really-safe-money-gen] in f $ Amount.toRational quantisationFactor (abs account)
  15508. 278.41 s [really-safe-money-gen]
  15509. 278.41 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  15510. 278.41 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:197:19-20
  15511. 278.41 s [really-safe-money-gen] @@ -194,7 +194,7 @@
  15512. 278.41 s [really-safe-money-gen] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  15513. 278.41 s [really-safe-money-gen] fromDouble quantisationFactor d =
  15514. 278.41 s [really-safe-money-gen] let d' = Prelude.abs d
  15515. 278.41 s [really-safe-money-gen] - f = if d >= 0 then Positive else Negative
  15516. 278.41 s [really-safe-money-gen] + f = if d >= 1 then Positive else Negative
  15517. 278.41 s [really-safe-money-gen] in f <$> Amount.fromDouble quantisationFactor d'
  15518. 278.41 s [really-safe-money-gen]
  15519. 278.41 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  15520. 278.41 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:197:14-20
  15521. 278.41 s [really-safe-money-gen] @@ -194,7 +194,7 @@
  15522. 278.41 s [really-safe-money-gen] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  15523. 278.41 s [really-safe-money-gen] fromDouble quantisationFactor d =
  15524. 278.41 s [really-safe-money-gen] let d' = Prelude.abs d
  15525. 278.41 s [really-safe-money-gen] - f = if d >= 0 then Positive else Negative
  15526. 278.41 s [really-safe-money-gen] + f = if False then Positive else Negative
  15527. 278.41 s [really-safe-money-gen] in f <$> Amount.fromDouble quantisationFactor d'
  15528. 278.41 s [really-safe-money-gen]
  15529. 278.41 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  15530. 278.41 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:197:14-20
  15531. 278.41 s [really-safe-money-gen] @@ -194,7 +194,7 @@
  15532. 278.41 s [really-safe-money-gen] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  15533. 278.41 s [really-safe-money-gen] fromDouble quantisationFactor d =
  15534. 278.41 s [really-safe-money-gen] let d' = Prelude.abs d
  15535. 278.41 s [really-safe-money-gen] - f = if d >= 0 then Positive else Negative
  15536. 278.41 s [really-safe-money-gen] + f = if not (d >= 0) then Positive else Negative
  15537. 278.41 s [really-safe-money-gen] in f <$> Amount.fromDouble quantisationFactor d'
  15538. 278.41 s [really-safe-money-gen]
  15539. 278.41 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  15540. 278.41 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:171:11-37
  15541. 278.41 s [really-safe-money-gen] @@ -168,9 +168,9 @@
  15542. 278.41 s [really-safe-money-gen] -- -0.25
  15543. 278.41 s [really-safe-money-gen] toDouble :: QuantisationFactor -> Account -> Double
  15544. 278.41 s [really-safe-money-gen] toDouble quantisationFactor account =
  15545. 278.41 s [really-safe-money-gen] - let f = case account of
  15546. 278.41 s [really-safe-money-gen] - Positive _ -> id
  15547. 278.41 s [really-safe-money-gen] - Negative _ -> Prelude.negate
  15548. 278.41 s [really-safe-money-gen] + let f = case account of
  15549. 278.41 s [really-safe-money-gen] + Positive _ -> id
  15550. 278.41 s [really-safe-money-gen] + Negative _ -> Prelude.negate
  15551. 278.41 s [really-safe-money-gen] in f $ Amount.toDouble quantisationFactor (abs account)
  15552. 278.41 s [really-safe-money-gen]
  15553. 278.41 s [really-safe-money-gen] -- | Turn a 'Double' into an amount of money.
  15554. 278.41 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:197:11-48
  15555. 278.41 s [really-safe-money-gen] @@ -194,7 +194,7 @@
  15556. 278.41 s [really-safe-money-gen] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  15557. 278.41 s [really-safe-money-gen] fromDouble quantisationFactor d =
  15558. 278.41 s [really-safe-money-gen] let d' = Prelude.abs d
  15559. 278.41 s [really-safe-money-gen] - f = if d >= 0 then Positive else Negative
  15560. 278.41 s [really-safe-money-gen] + f = if d >= 0 then Positive else Negative
  15561. 278.41 s [really-safe-money-gen] in f <$> Amount.fromDouble quantisationFactor d'
  15562. 278.41 s [really-safe-money-gen]
  15563. 278.41 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  15564. 278.41 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:171:11-37
  15565. 278.41 s [really-safe-money-gen] @@ -168,9 +168,9 @@
  15566. 278.41 s [really-safe-money-gen] -- -0.25
  15567. 278.41 s [really-safe-money-gen] toDouble :: QuantisationFactor -> Account -> Double
  15568. 278.41 s [really-safe-money-gen] toDouble quantisationFactor account =
  15569. 278.41 s [really-safe-money-gen] - let f = case account of
  15570. 278.42 s [really-safe-money-gen] - Positive _ -> id
  15571. 278.42 s [really-safe-money-gen] - Negative _ -> Prelude.negate
  15572. 278.42 s [really-safe-money-gen] + let f = case account of
  15573. 278.42 s [really-safe-money-gen] + Positive _ -> id
  15574. 278.42 s [really-safe-money-gen] + Negative _ -> Prelude.negate
  15575. 279.58 s [really-safe-money-gen] in f $ Amount.toDouble quantisationFactor (abs account)
  15576. 279.58 s [really-safe-money-gen]
  15577. 279.58 s [really-safe-money-gen] -- | Turn a 'Double' into an amount of money.
  15578. 279.58 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:503:10-16
  15579. 279.58 s [really-safe-money-gen] @@ -500,7 +500,7 @@
  15580. 279.58 s [really-safe-money-gen] RoundNearest -> RoundNearest
  15581. 279.58 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  15582. 279.58 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  15583. 279.58 s [really-safe-money-gen] - in if f >= 0
  15584. 279.58 s [really-safe-money-gen] + in if not (f >= 0)
  15585. 279.58 s [really-safe-money-gen] then (ma, r)
  15586. 279.58 s [really-safe-money-gen] else (negate <$> ma, -r)
  15587. 279.58 s [really-safe-money-gen]
  15588. 279.58 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:197:14-20
  15589. 279.58 s [really-safe-money-gen] @@ -194,7 +194,7 @@
  15590. 279.58 s [really-safe-money-gen] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  15591. 279.58 s [really-safe-money-gen] fromDouble quantisationFactor d =
  15592. 279.58 s [really-safe-money-gen] let d' = Prelude.abs d
  15593. 279.58 s [really-safe-money-gen] - f = if d >= 0 then Positive else Negative
  15594. 279.58 s [really-safe-money-gen] + f = if True then Positive else Negative
  15595. 279.58 s [really-safe-money-gen] in f <$> Amount.fromDouble quantisationFactor d'
  15596. 279.58 s [really-safe-money-gen]
  15597. 279.58 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  15598. 279.58 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:155:11-37
  15599. 279.58 s [really-safe-money-gen] @@ -152,9 +152,9 @@
  15600. 279.58 s [really-safe-money-gen] -- We return 'Integer' because the result does not fit into a 'Word64'
  15601. 279.58 s [really-safe-money-gen] toMinimalQuantisations :: Account -> Integer
  15602. 279.58 s [really-safe-money-gen] toMinimalQuantisations account =
  15603. 279.58 s [really-safe-money-gen] - let f = case account of
  15604. 279.58 s [really-safe-money-gen] - Positive _ -> id
  15605. 279.58 s [really-safe-money-gen] - Negative _ -> Prelude.negate
  15606. 279.58 s [really-safe-money-gen] + let f = case account of
  15607. 279.58 s [really-safe-money-gen] + Positive _ -> id
  15608. 279.59 s [really-safe-money-gen] + Negative _ -> Prelude.negate
  15609. 279.59 s [really-safe-money-gen] in f $ (fromIntegral :: Word64 -> Integer) $ Amount.toMinimalQuantisations (abs account)
  15610. 279.59 s [really-safe-money-gen]
  15611. 279.59 s [really-safe-money-gen] -- | Turn an amount of money into a 'Double'.
  15612. 279.59 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:123:10-23
  15613. 279.59 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  15614. 279.59 s [really-safe-money-gen] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  15615. 279.59 s [really-safe-money-gen] a :: Integer
  15616. 279.59 s [really-safe-money-gen] a = (Prelude.abs :: Integer -> Integer) i
  15617. 279.59 s [really-safe-money-gen] - in if a > maxBoundI
  15618. 279.59 s [really-safe-money-gen] + in if False
  15619. 279.59 s [really-safe-money-gen] then Nothing
  15620. 279.59 s [really-safe-money-gen] else
  15621. 279.59 s [really-safe-money-gen] let w :: Word64
  15622. 279.59 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:123:10-23
  15623. 279.59 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  15624. 279.59 s [really-safe-money-gen] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  15625. 279.59 s [really-safe-money-gen] a :: Integer
  15626. 279.59 s [really-safe-money-gen] a = (Prelude.abs :: Integer -> Integer) i
  15627. 279.59 s [really-safe-money-gen] - in if a > maxBoundI
  15628. 279.59 s [really-safe-money-gen] + in if not (a > maxBoundI)
  15629. 279.59 s [really-safe-money-gen] then Nothing
  15630. 279.59 s [really-safe-money-gen] else
  15631. 279.59 s [really-safe-money-gen] let w :: Word64
  15632. 279.59 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:131:25-26
  15633. 279.59 s [really-safe-money-gen] @@ -128,7 +128,7 @@
  15634. 279.59 s [really-safe-money-gen] amount :: Amount
  15635. 279.59 s [really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
  15636. 279.59 s [really-safe-money-gen] in Just $
  15637. 279.59 s [really-safe-money-gen] - if i >= 0
  15638. 279.59 s [really-safe-money-gen] + if i >= 1
  15639. 279.59 s [really-safe-money-gen] then Positive amount
  15640. 279.59 s [really-safe-money-gen] else Negative amount
  15641. 279.59 s [really-safe-money-gen]
  15642. 279.59 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:131:20-26
  15643. 279.59 s [really-safe-money-gen] @@ -128,7 +128,7 @@
  15644. 279.59 s [really-safe-money-gen] amount :: Amount
  15645. 279.59 s [really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
  15646. 279.59 s [really-safe-money-gen] in Just $
  15647. 279.59 s [really-safe-money-gen] - if i >= 0
  15648. 279.59 s [really-safe-money-gen] + if False
  15649. 279.59 s [really-safe-money-gen] then Positive amount
  15650. 279.59 s [really-safe-money-gen] else Negative amount
  15651. 279.59 s [really-safe-money-gen]
  15652. 279.59 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:131:20-26
  15653. 279.59 s [really-safe-money-gen] @@ -128,7 +128,7 @@
  15654. 279.59 s [really-safe-money-gen] amount :: Amount
  15655. 279.59 s [really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
  15656. 279.59 s [really-safe-money-gen] in Just $
  15657. 279.59 s [really-safe-money-gen] - if i >= 0
  15658. 279.59 s [really-safe-money-gen] + if not (i >= 0)
  15659. 279.59 s [really-safe-money-gen] then Positive amount
  15660. 279.59 s [really-safe-money-gen] else Negative amount
  15661. 279.59 s [really-safe-money-gen]
  15662. 279.59 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:131:17-39
  15663. 279.59 s [really-safe-money-gen] @@ -128,9 +128,9 @@
  15664. 279.59 s [really-safe-money-gen] amount :: Amount
  15665. 279.59 s [really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
  15666. 279.59 s [really-safe-money-gen] in Just $
  15667. 279.59 s [really-safe-money-gen] - if i >= 0
  15668. 279.59 s [really-safe-money-gen] - then Positive amount
  15669. 279.59 s [really-safe-money-gen] - else Negative amount
  15670. 279.59 s [really-safe-money-gen] + if i >= 0
  15671. 279.59 s [really-safe-money-gen] + then Positive amount
  15672. 279.59 s [really-safe-money-gen] + else Negative amount
  15673. 279.59 s [really-safe-money-gen]
  15674. 279.59 s [really-safe-money-gen] -- | Turn an amount into a positive account
  15675. 279.59 s [really-safe-money-gen] --
  15676. 279.59 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:123:7-39
  15677. 279.59 s [really-safe-money-gen] @@ -120,17 +120,17 @@
  15678. 279.59 s [really-safe-money-gen] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  15679. 279.59 s [really-safe-money-gen] a :: Integer
  15680. 279.59 s [really-safe-money-gen] a = (Prelude.abs :: Integer -> Integer) i
  15681. 279.59 s [really-safe-money-gen] - in if a > maxBoundI
  15682. 279.59 s [really-safe-money-gen] - then Nothing
  15683. 279.59 s [really-safe-money-gen] - else
  15684. 279.59 s [really-safe-money-gen] - let w :: Word64
  15685. 279.59 s [really-safe-money-gen] - w = (fromIntegral :: Integer -> Word64) a
  15686. 279.59 s [really-safe-money-gen] - amount :: Amount
  15687. 279.59 s [really-safe-money-gen] - amount = Amount.fromMinimalQuantisations w
  15688. 279.59 s [really-safe-money-gen] - in Just $
  15689. 279.59 s [really-safe-money-gen] - if i >= 0
  15690. 279.59 s [really-safe-money-gen] - then Positive amount
  15691. 279.59 s [really-safe-money-gen] - else Negative amount
  15692. 279.59 s [really-safe-money-gen] + in if a > maxBoundI
  15693. 279.59 s [really-safe-money-gen] + then Nothing
  15694. 279.59 s [really-safe-money-gen] + else
  15695. 279.59 s [really-safe-money-gen] + let w :: Word64
  15696. 279.59 s [really-safe-money-gen] + w = (fromIntegral :: Integer -> Word64) a
  15697. 279.59 s [really-safe-money-gen] + amount :: Amount
  15698. 279.59 s [really-safe-money-gen] + amount = Amount.fromMinimalQuantisations w
  15699. 279.59 s [really-safe-money-gen] + in Just $
  15700. 279.59 s [really-safe-money-gen] + if i >= 0
  15701. 279.59 s [really-safe-money-gen] + then Positive amount
  15702. 279.59 s [really-safe-money-gen] + else Negative amount
  15703. 279.59 s [really-safe-money-gen]
  15704. 279.59 s [really-safe-money-gen] -- | Turn an amount into a positive account
  15705. 279.59 s [really-safe-money-gen] --
  15706. 279.59 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  15707. 279.59 s [really-safe-money-gen] @@ -177,11 +177,11 @@
  15708. 279.59 s [really-safe-money-gen]
  15709. 279.59 s [really-safe-money-gen] -- | See 'Account.distribute'
  15710. 279.59 s [really-safe-money-gen] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  15711. 279.59 s [really-safe-money-gen] -distribute (AccountOf a) w = case Account.distribute a w of
  15712. 279.59 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15713. 279.59 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15714. 279.59 s [really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  15715. 279.59 s [really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  15716. 279.59 s [really-safe-money-gen] +distribute (AccountOf a) w = case Account.distribute a w of
  15717. 279.59 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15718. 279.59 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15719. 279.59 s [really-safe-money-gen] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  15720. 279.59 s [really-safe-money-gen] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  15721. 279.59 s [really-safe-money-gen]
  15722. 279.59 s [really-safe-money-gen] -- | The result of 'distribute'
  15723. 279.59 s [really-safe-money-gen] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  15724. 279.59 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  15725. 279.59 s [really-safe-money-gen] @@ -177,11 +177,11 @@
  15726. 279.60 s [really-safe-money-gen]
  15727. 279.60 s [really-safe-money-gen] -- | See 'Account.distribute'
  15728. 279.60 s [really-safe-money-gen] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  15729. 279.60 s [really-safe-money-gen] -distribute (AccountOf a) w = case Account.distribute a w of
  15730. 279.60 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15731. 279.60 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15732. 279.60 s [really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  15733. 279.60 s [really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  15734. 279.60 s [really-safe-money-gen] +distribute (AccountOf a) w = case Account.distribute a w of
  15735. 279.60 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15736. 279.60 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15737. 279.60 s [really-safe-money-gen] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  15738. 279.60 s [really-safe-money-gen] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  15739. 279.60 s [really-safe-money-gen]
  15740. 279.60 s [really-safe-money-gen] -- | The result of 'distribute'
  15741. 279.60 s [really-safe-money-gen] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  15742. 279.60 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:155:11-37
  15743. 279.60 s [really-safe-money-gen] @@ -152,9 +152,9 @@
  15744. 279.60 s [really-safe-money-gen] -- We return 'Integer' because the result does not fit into a 'Word64'
  15745. 279.60 s [really-safe-money-gen] toMinimalQuantisations :: Account -> Integer
  15746. 279.60 s [really-safe-money-gen] toMinimalQuantisations account =
  15747. 279.60 s [really-safe-money-gen] - let f = case account of
  15748. 279.60 s [really-safe-money-gen] - Positive _ -> id
  15749. 279.60 s [really-safe-money-gen] - Negative _ -> Prelude.negate
  15750. 279.60 s [really-safe-money-gen] + let f = case account of
  15751. 279.60 s [really-safe-money-gen] + Positive _ -> id
  15752. 279.60 s [really-safe-money-gen] + Negative _ -> Prelude.negate
  15753. 279.60 s [really-safe-money-gen] in f $ (fromIntegral :: Word64 -> Integer) $ Amount.toMinimalQuantisations (abs account)
  15754. 279.60 s [really-safe-money-gen]
  15755. 279.60 s [really-safe-money-gen] -- | Turn an amount of money into a 'Double'.
  15756. 279.60 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:123:10-23
  15757. 279.60 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  15758. 279.60 s [really-safe-money-gen] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  15759. 279.60 s [really-safe-money-gen] a :: Integer
  15760. 279.60 s [really-safe-money-gen] a = (Prelude.abs :: Integer -> Integer) i
  15761. 279.60 s [really-safe-money-gen] - in if a > maxBoundI
  15762. 279.60 s [really-safe-money-gen] + in if True
  15763. 279.60 s [really-safe-money-gen] then Nothing
  15764. 279.60 s [really-safe-money-gen] else
  15765. 279.60 s [really-safe-money-gen] let w :: Word64
  15766. 279.60 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  15767. 279.60 s [really-safe-money-gen] @@ -177,11 +177,11 @@
  15768. 279.60 s [really-safe-money-gen]
  15769. 279.60 s [really-safe-money-gen] -- | See 'Account.distribute'
  15770. 279.60 s [really-safe-money-gen] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  15771. 279.60 s [really-safe-money-gen] -distribute (AccountOf a) w = case Account.distribute a w of
  15772. 279.60 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15773. 279.60 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15774. 279.60 s [really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  15775. 279.60 s [really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  15776. 279.60 s [really-safe-money-gen] +distribute (AccountOf a) w = case Account.distribute a w of
  15777. 279.60 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15778. 279.60 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15779. 279.96 s [really-safe-money-gen] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  15780. 279.96 s [really-safe-money-gen] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  15781. 279.96 s [really-safe-money-gen]
  15782. 279.96 s [really-safe-money-gen] -- | The result of 'distribute'
  15783. 279.96 s [really-safe-money-gen] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  15784. 279.96 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:131:20-26
  15785. 279.96 s [really-safe-money-gen] @@ -128,7 +128,7 @@
  15786. 279.96 s [really-safe-money-gen] amount :: Amount
  15787. 279.96 s [really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
  15788. 279.96 s [really-safe-money-gen] in Just $
  15789. 279.96 s [really-safe-money-gen] - if i >= 0
  15790. 279.96 s [really-safe-money-gen] + if True
  15791. 279.96 s [really-safe-money-gen] then Positive amount
  15792. 279.96 s [really-safe-money-gen] else Negative amount
  15793. 279.96 s [really-safe-money-gen]
  15794. 279.96 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  15795. 279.96 s [really-safe-money-gen] @@ -212,11 +212,11 @@
  15796. 279.96 s [really-safe-money-gen]
  15797. 279.96 s [really-safe-money-gen] -- | See 'Amount.distribute'
  15798. 279.96 s [really-safe-money-gen] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  15799. 279.97 s [really-safe-money-gen] -distribute (AmountOf a) f = case Amount.distribute a f of
  15800. 279.97 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15801. 279.97 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15802. 279.97 s [really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  15803. 279.97 s [really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  15804. 279.97 s [really-safe-money-gen] +distribute (AmountOf a) f = case Amount.distribute a f of
  15805. 279.97 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15806. 279.97 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15807. 279.97 s [really-safe-money-gen] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  15808. 279.97 s [really-safe-money-gen] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  15809. 279.97 s [really-safe-money-gen]
  15810. 279.97 s [really-safe-money-gen] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  15811. 279.97 s [really-safe-money-gen]
  15812. 279.97 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  15813. 279.97 s [really-safe-money-gen] @@ -212,11 +212,11 @@
  15814. 279.97 s [really-safe-money-gen]
  15815. 279.97 s [really-safe-money-gen] -- | See 'Amount.distribute'
  15816. 279.97 s [really-safe-money-gen] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  15817. 279.97 s [really-safe-money-gen] -distribute (AmountOf a) f = case Amount.distribute a f of
  15818. 279.97 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15819. 279.97 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15820. 279.97 s [really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  15821. 279.97 s [really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  15822. 279.97 s [really-safe-money-gen] +distribute (AmountOf a) f = case Amount.distribute a f of
  15823. 279.97 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15824. 279.97 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15825. 279.97 s [really-safe-money-gen] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  15826. 279.97 s [really-safe-money-gen] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  15827. 279.97 s [really-safe-money-gen]
  15828. 279.97 s [really-safe-money-gen] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  15829. 279.97 s [really-safe-money-gen]
  15830. 279.97 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  15831. 279.97 s [really-safe-money-gen] @@ -177,11 +177,11 @@
  15832. 279.97 s [really-safe-money-gen]
  15833. 279.97 s [really-safe-money-gen] -- | See 'Account.distribute'
  15834. 279.97 s [really-safe-money-gen] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  15835. 279.97 s [really-safe-money-gen] -distribute (AccountOf a) w = case Account.distribute a w of
  15836. 279.97 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15837. 279.97 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15838. 279.97 s [really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  15839. 279.97 s [really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  15840. 279.97 s [really-safe-money-gen] +distribute (AccountOf a) w = case Account.distribute a w of
  15841. 279.97 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15842. 279.97 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15843. 279.97 s [really-safe-money-gen] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  15844. 279.97 s [really-safe-money-gen] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  15845. 279.97 s [really-safe-money-gen]
  15846. 279.97 s [really-safe-money-gen] -- | The result of 'distribute'
  15847. 279.97 s [really-safe-money-gen] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  15848. 279.97 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  15849. 279.97 s [really-safe-money-gen] @@ -212,11 +212,11 @@
  15850. 279.97 s [really-safe-money-gen]
  15851. 279.97 s [really-safe-money-gen] -- | See 'Amount.distribute'
  15852. 279.97 s [really-safe-money-gen] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  15853. 279.97 s [really-safe-money-gen] -distribute (AmountOf a) f = case Amount.distribute a f of
  15854. 279.97 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15855. 279.97 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15856. 279.97 s [really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  15857. 279.97 s [really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  15858. 279.97 s [really-safe-money-gen] +distribute (AmountOf a) f = case Amount.distribute a f of
  15859. 279.97 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15860. 279.97 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15861. 279.97 s [really-safe-money-gen] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  15862. 279.97 s [really-safe-money-gen] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  15863. 279.97 s [really-safe-money-gen]
  15864. 279.97 s [really-safe-money-gen] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  15865. 279.97 s [really-safe-money-gen]
  15866. 279.97 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount/Codec.hs:49:12-59
  15867. 279.97 s [really-safe-money-gen] @@ -46,7 +46,7 @@
  15868. 279.97 s [really-safe-money-gen] f s = case readMaybe s of
  15869. 279.97 s [really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  15870. 279.97 s [really-safe-money-gen] Just i ->
  15871. 279.97 s [really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
  15872. 279.97 s [really-safe-money-gen] + if True
  15873. 279.97 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15874. 279.97 s [really-safe-money-gen] else
  15875. 279.97 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  15876. 279.97 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  15877. 279.97 s [really-safe-money-gen] @@ -212,11 +212,11 @@
  15878. 279.97 s [really-safe-money-gen]
  15879. 279.97 s [really-safe-money-gen] -- | See 'Amount.distribute'
  15880. 279.97 s [really-safe-money-gen] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  15881. 279.97 s [really-safe-money-gen] -distribute (AmountOf a) f = case Amount.distribute a f of
  15882. 279.97 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15883. 279.97 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15884. 279.97 s [really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  15885. 279.97 s [really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  15886. 279.97 s [really-safe-money-gen] +distribute (AmountOf a) f = case Amount.distribute a f of
  15887. 279.97 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15888. 279.97 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15889. 279.97 s [really-safe-money-gen] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  15890. 279.97 s [really-safe-money-gen] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  15891. 279.97 s [really-safe-money-gen]
  15892. 279.97 s [really-safe-money-gen] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  15893. 279.97 s [really-safe-money-gen]
  15894. 279.97 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount/Codec.hs:49:12-59
  15895. 279.97 s [really-safe-money-gen] @@ -46,7 +46,7 @@
  15896. 279.97 s [really-safe-money-gen] f s = case readMaybe s of
  15897. 279.98 s [really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  15898. 279.98 s [really-safe-money-gen] Just i ->
  15899. 279.98 s [really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
  15900. 279.98 s [really-safe-money-gen] + if not ((i :: Integer) < toInteger (minBound :: Word64))
  15901. 279.98 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15902. 279.98 s [really-safe-money-gen] else
  15903. 279.98 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  15904. 279.98 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:50:31-84
  15905. 279.98 s [really-safe-money-gen] @@ -47,7 +47,7 @@
  15906. 279.98 s [really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  15907. 279.98 s [really-safe-money-gen] Just i ->
  15908. 279.98 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  15909. 279.98 s [really-safe-money-gen] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15910. 279.98 s [really-safe-money-gen] + then Left $ unwords []
  15911. 279.98 s [really-safe-money-gen] else
  15912. 279.98 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  15913. 279.98 s [really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15914. 279.98 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:50:31-84
  15915. 279.98 s [really-safe-money-gen] @@ -47,7 +47,7 @@
  15916. 279.98 s [really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  15917. 279.98 s [really-safe-money-gen] Just i ->
  15918. 279.98 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  15919. 279.98 s [really-safe-money-gen] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15920. 279.98 s [really-safe-money-gen] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15921. 279.98 s [really-safe-money-gen] else
  15922. 279.98 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  15923. 279.98 s [really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15924. 279.98 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount/Codec.hs:52:13-86
  15925. 279.98 s [really-safe-money-gen] @@ -49,9 +49,9 @@
  15926. 279.98 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  15927. 279.98 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15928. 279.98 s [really-safe-money-gen] else
  15929. 279.98 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  15930. 279.98 s [really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15931. 279.98 s [really-safe-money-gen] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  15932. 279.98 s [really-safe-money-gen] + if (i :: Integer) > toInteger (maxBound :: Word64)
  15933. 279.98 s [really-safe-money-gen] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15934. 279.98 s [really-safe-money-gen] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  15935. 279.98 s [really-safe-money-gen] g :: Amount -> String
  15936. 279.98 s [really-safe-money-gen] g = show . Amount.toMinimalQuantisations
  15937. 279.98 s [really-safe-money-gen]
  15938. 279.98 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:53:35-90
  15939. 279.98 s [really-safe-money-gen] @@ -50,7 +50,7 @@
  15940. 279.98 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15941. 279.98 s [really-safe-money-gen] else
  15942. 279.98 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  15943. 279.98 s [really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15944. 279.98 s [really-safe-money-gen] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15945. 279.98 s [really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  15946. 279.98 s [really-safe-money-gen] g :: Amount -> String
  15947. 279.98 s [really-safe-money-gen] g = show . Amount.toMinimalQuantisations
  15948. 279.98 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount/Codec.hs:49:9-86
  15949. 279.98 s [really-safe-money-gen] @@ -46,12 +46,12 @@
  15950. 279.98 s [really-safe-money-gen] f s = case readMaybe s of
  15951. 279.98 s [really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  15952. 279.98 s [really-safe-money-gen] Just i ->
  15953. 279.98 s [really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
  15954. 279.98 s [really-safe-money-gen] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15955. 279.98 s [really-safe-money-gen] - else
  15956. 279.98 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  15957. 279.98 s [really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15958. 279.98 s [really-safe-money-gen] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  15959. 279.98 s [really-safe-money-gen] + if (i :: Integer) < toInteger (minBound :: Word64)
  15960. 279.98 s [really-safe-money-gen] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15961. 279.98 s [really-safe-money-gen] + else
  15962. 279.98 s [really-safe-money-gen] + if (i :: Integer) > toInteger (maxBound :: Word64)
  15963. 279.98 s [really-safe-money-gen] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15964. 279.98 s [really-safe-money-gen] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  15965. 279.98 s [really-safe-money-gen] g :: Amount -> String
  15966. 279.98 s [really-safe-money-gen] g = show . Amount.toMinimalQuantisations
  15967. 279.98 s [really-safe-money-gen]
  15968. 279.98 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:47:33-75
  15969. 279.98 s [really-safe-money-gen] @@ -44,7 +44,7 @@
  15970. 279.98 s [really-safe-money-gen] where
  15971. 279.98 s [really-safe-money-gen] f :: String -> Either String Amount
  15972. 279.98 s [really-safe-money-gen] f s = case readMaybe s of
  15973. 279.98 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  15974. 279.98 s [really-safe-money-gen] + Nothing -> Left $ unwords []
  15975. 279.98 s [really-safe-money-gen] Just i ->
  15976. 279.98 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  15977. 279.98 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15978. 279.98 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:47:33-75
  15979. 279.98 s [really-safe-money-gen] @@ -44,7 +44,7 @@
  15980. 279.98 s [really-safe-money-gen] where
  15981. 279.98 s [really-safe-money-gen] f :: String -> Either String Amount
  15982. 279.98 s [really-safe-money-gen] f s = case readMaybe s of
  15983. 279.98 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  15984. 279.98 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  15985. 279.98 s [really-safe-money-gen] Just i ->
  15986. 279.98 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  15987. 279.98 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15988. 279.98 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount/Codec.hs:52:16-63
  15989. 279.98 s [really-safe-money-gen] @@ -49,7 +49,7 @@
  15990. 279.98 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  15991. 279.98 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15992. 279.98 s [really-safe-money-gen] else
  15993. 279.98 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  15994. 279.98 s [really-safe-money-gen] + if not ((i :: Integer) > toInteger (maxBound :: Word64))
  15995. 279.98 s [really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15996. 279.98 s [really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  15997. 279.98 s [really-safe-money-gen] g :: Amount -> String
  15998. 279.98 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/QuantisationFactor/Codec.hs:41:11-26
  15999. 279.98 s [really-safe-money-gen] @@ -38,6 +38,6 @@
  16000. 279.98 s [really-safe-money-gen] codec
  16001. 279.98 s [really-safe-money-gen] <?> "QuantisationFactor"
  16002. 279.98 s [really-safe-money-gen] where
  16003. 279.98 s [really-safe-money-gen] - f w = case QuantisationFactor.fromWord32 w of
  16004. 279.98 s [really-safe-money-gen] - Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  16005. 279.98 s [really-safe-money-gen] - Just qf -> Right qf
  16006. 279.98 s [really-safe-money-gen] + f w = case QuantisationFactor.fromWord32 w of
  16007. 279.98 s [really-safe-money-gen] + Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  16008. 279.98 s [really-safe-money-gen] + Just qf -> Right qf
  16009. 279.98 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount/Codec.hs:52:16-63
  16010. 279.98 s [really-safe-money-gen] @@ -49,7 +49,7 @@
  16011. 279.98 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  16012. 279.98 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  16013. 279.98 s [really-safe-money-gen] else
  16014. 279.98 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  16015. 279.98 s [really-safe-money-gen] + if True
  16016. 279.98 s [really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  16017. 279.98 s [really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  16018. 279.98 s [really-safe-money-gen] g :: Amount -> String
  16019. 279.98 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account/Codec.hs:79:11-24
  16020. 279.98 s [really-safe-money-gen] @@ -76,6 +76,6 @@
  16021. 279.98 s [really-safe-money-gen] <?> "Account"
  16022. 279.98 s [really-safe-money-gen] where
  16023. 279.98 s [really-safe-money-gen] f :: Integer -> Either String Account
  16024. 279.98 s [really-safe-money-gen] - f i = case Account.fromMinimalQuantisations i of
  16025. 279.98 s [really-safe-money-gen] - Nothing -> Left $ "Number did not fit into an account value: " <> show i
  16026. 279.98 s [really-safe-money-gen] - Just a -> Right a
  16027. 279.98 s [really-safe-money-gen] + f i = case Account.fromMinimalQuantisations i of
  16028. 279.98 s [really-safe-money-gen] + Nothing -> Left $ "Number did not fit into an account value: " <> show i
  16029. 279.98 s [really-safe-money-gen] + Just a -> Right a
  16030. 279.98 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount/Codec.hs:49:12-59
  16031. 279.98 s [really-safe-money-gen] @@ -46,7 +46,7 @@
  16032. 279.98 s [really-safe-money-gen] f s = case readMaybe s of
  16033. 279.98 s [really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  16034. 279.98 s [really-safe-money-gen] Just i ->
  16035. 279.98 s [really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
  16036. 279.98 s [really-safe-money-gen] + if False
  16037. 279.98 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  16038. 279.98 s [really-safe-money-gen] else
  16039. 279.98 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  16040. 279.98 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Account/Codec.hs:51:33-76
  16041. 279.98 s [really-safe-money-gen] @@ -48,7 +48,7 @@
  16042. 279.98 s [really-safe-money-gen] where
  16043. 279.98 s [really-safe-money-gen] f :: String -> Either String Account
  16044. 279.98 s [really-safe-money-gen] f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  16045. 279.99 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  16046. 279.99 s [really-safe-money-gen] + Nothing -> Left $ unwords []
  16047. 279.99 s [really-safe-money-gen] Just a -> Right a
  16048. 279.99 s [really-safe-money-gen] g :: Account -> String
  16049. 279.99 s [really-safe-money-gen] g = show . Account.toMinimalQuantisations
  16050. 279.99 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Account/Codec.hs:51:33-76
  16051. 279.99 s [really-safe-money-gen] @@ -48,7 +48,7 @@
  16052. 279.99 s [really-safe-money-gen] where
  16053. 279.99 s [really-safe-money-gen] f :: String -> Either String Account
  16054. 279.99 s [really-safe-money-gen] f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  16055. 279.99 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  16056. 279.99 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  16057. 279.99 s [really-safe-money-gen] Just a -> Right a
  16058. 279.99 s [really-safe-money-gen] g :: Account -> String
  16059. 279.99 s [really-safe-money-gen] g = show . Account.toMinimalQuantisations
  16060. 279.99 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:53:35-90
  16061. 279.99 s [really-safe-money-gen] @@ -50,7 +50,7 @@
  16062. 279.99 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  16063. 279.99 s [really-safe-money-gen] else
  16064. 279.99 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  16065. 279.99 s [really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  16066. 279.99 s [really-safe-money-gen] + then Left $ unwords []
  16067. 279.99 s [really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  16068. 279.99 s [really-safe-money-gen] g :: Amount -> String
  16069. 279.99 s [really-safe-money-gen] g = show . Amount.toMinimalQuantisations
  16070. 279.99 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account/Codec.hs:50:11-24
  16071. 279.99 s [really-safe-money-gen] @@ -47,9 +47,9 @@
  16072. 279.99 s [really-safe-money-gen] codecViaString = bimapCodec f g stringCodec <?> "Account"
  16073. 279.99 s [really-safe-money-gen] where
  16074. 279.99 s [really-safe-money-gen] f :: String -> Either String Account
  16075. 279.99 s [really-safe-money-gen] - f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  16076. 279.99 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  16077. 279.99 s [really-safe-money-gen] - Just a -> Right a
  16078. 279.99 s [really-safe-money-gen] + f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  16079. 279.99 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  16080. 279.99 s [really-safe-money-gen] + Just a -> Right a
  16081. 279.99 s [really-safe-money-gen] g :: Account -> String
  16082. 279.99 s [really-safe-money-gen] g = show . Account.toMinimalQuantisations
  16083. 279.99 s [really-safe-money-gen]
  16084. 279.99 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount/Codec.hs:52:16-63
  16085. 279.99 s [really-safe-money-gen] @@ -49,7 +49,7 @@
  16086. 279.99 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  16087. 279.99 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  16088. 279.99 s [really-safe-money-gen] else
  16089. 279.99 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  16090. 279.99 s [really-safe-money-gen] + if False
  16091. 279.99 s [really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  16092. 279.99 s [really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  16093. 279.99 s [really-safe-money-gen] g :: Amount -> String
  16094. 279.99 s [really-safe-money-gen] Testing mutation ListLit at src/Numeric/DecimalLiteral/Codec.hs:40:33-82
  16095. 279.99 s [really-safe-money-gen] @@ -37,5 +37,5 @@
  16096. 279.99 s [really-safe-money-gen] where
  16097. 279.99 s [really-safe-money-gen] f :: String -> Either String DecimalLiteral
  16098. 279.99 s [really-safe-money-gen] f s = case DecimalLiteral.fromString s of
  16099. 279.99 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  16100. 279.99 s [really-safe-money-gen] + Nothing -> Left $ unwords []
  16101. 279.99 s [really-safe-money-gen] Just a -> Right a
  16102. 323.66 s [really-safe-money-gen] Testing mutation ListLit at sKilled: 301
  16103. 323.68 s [really-safe-money-gen] Survived: 38
  16104. 323.68 s [really-safe-money-gen] Uncovered: 33
  16105. 323.68 s [really-safe-money-gen]
  16106. 323.68 s [really-safe-money-gen] Surviving mutations:
  16107. 323.68 s [really-safe-money-gen]
  16108. 323.68 s [really-safe-money-gen] RemoveCase at src/Money/AccountOf.hs:180:30-115
  16109. 323.68 s [really-safe-money-gen] @@ -177,11 +177,11 @@
  16110. 323.68 s [really-safe-money-gen]
  16111. 323.68 s [really-safe-money-gen] -- | See 'Account.distribute'
  16112. 323.68 s [really-safe-money-gen] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  16113. 323.68 s [really-safe-money-gen] -distribute (AccountOf a) w = case Account.distribute a w of
  16114. 323.68 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  16115. 323.68 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  16116. 323.68 s [really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  16117. 323.68 s [really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  16118. 323.68 s [really-safe-money-gen] +distribute (AccountOf a) w = case Account.distribute a w of
  16119. 323.68 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  16120. 323.68 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  16121. 323.68 s [really-safe-money-gen] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  16122. 323.68 s [really-safe-money-gen] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  16123. 323.68 s [really-safe-money-gen]
  16124. 323.68 s [really-safe-money-gen] -- | The result of 'distribute'
  16125. 323.68 s [really-safe-money-gen] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  16126. 323.68 s [really-safe-money-gen]
  16127. 323.68 s [really-safe-money-gen] IntLit at src/Money/Account.hs:131:25-26
  16128. 323.68 s [really-safe-money-gen] @@ -128,7 +128,7 @@
  16129. 323.68 s [really-safe-money-gen] amount :: Amount
  16130. 323.68 s [really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
  16131. 323.68 s [really-safe-money-gen] in Just $
  16132. 323.68 s [really-safe-money-gen] - if i >= 0
  16133. 323.68 s [really-safe-money-gen] + if i >= 1
  16134. 323.68 s [really-safe-money-gen] then Positive amount
  16135. 323.68 s [really-safe-money-gen] else Negative amount
  16136. 323.68 s [really-safe-money-gen]
  16137. 323.68 s [really-safe-money-gen]
  16138. 323.68 s [really-safe-money-gen] ConstBool at src/Money/Account.hs:123:10-23
  16139. 323.68 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  16140. 323.68 s [really-safe-money-gen] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  16141. 323.68 s [really-safe-money-gen] a :: Integer
  16142. 323.68 s [really-safe-money-gen] a = (Prelude.abs :: Integer -> Integer) i
  16143. 323.68 s [really-safe-money-gen] - in if a > maxBoundI
  16144. 323.68 s [really-safe-money-gen] + in if False
  16145. 323.68 s [really-safe-money-gen] then Nothing
  16146. 323.68 s [really-safe-money-gen] else
  16147. 323.68 s [really-safe-money-gen] let w :: Word64
  16148. 323.68 s [really-safe-money-gen]
  16149. 323.68 s [really-safe-money-gen] ListLit at src/Money/QuantisationFactor.hs:39:7-8
  16150. 323.68 s [really-safe-money-gen] @@ -36,9 +36,9 @@
  16151. 323.68 s [really-safe-money-gen] instance Validity QuantisationFactor where
  16152. 323.68 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  16153. 323.68 s [really-safe-money-gen] mconcat
  16154. 323.68 s [really-safe-money-gen] - [ genericValidate qf,
  16155. 323.68 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  16156. 323.68 s [really-safe-money-gen] - ]
  16157. 323.68 s [really-safe-money-gen] + [ genericValidate qf,
  16158. 323.68 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ w /= 0
  16159. 323.68 s [really-safe-money-gen] + ]
  16160. 323.68 s [really-safe-money-gen]
  16161. 323.68 s [really-safe-money-gen] instance NFData QuantisationFactor
  16162. 323.68 s [really-safe-money-gen]
  16163. 323.68 s [really-safe-money-gen]
  16164. 323.68 s [really-safe-money-gen] ListLit at src/Money/QuantisationFactor.hs:39:7-8
  16165. 323.68 s [really-safe-money-gen] @@ -36,9 +36,7 @@
  16166. 323.68 s [really-safe-money-gen] instance Validity QuantisationFactor where
  16167. 323.68 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  16168. 323.68 s [really-safe-money-gen] mconcat
  16169. 323.68 s [really-safe-money-gen] - [ genericValidate qf,
  16170. 323.68 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  16171. 323.68 s [really-safe-money-gen] - ]
  16172. 323.68 s [really-safe-money-gen] + []
  16173. 323.68 s [really-safe-money-gen]
  16174. 323.68 s [really-safe-money-gen] instance NFData QuantisationFactor
  16175. 323.68 s [really-safe-money-gen]
  16176. 323.68 s [really-safe-money-gen]
  16177. 323.68 s [really-safe-money-gen] ConstBool at src/Money/QuantisationFactor.hs:40:57-63
  16178. 323.68 s [really-safe-money-gen] @@ -37,7 +37,7 @@
  16179. 323.68 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  16180. 323.68 s [really-safe-money-gen] mconcat
  16181. 323.68 s [really-safe-money-gen] [ genericValidate qf,
  16182. 323.68 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  16183. 323.68 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ True
  16184. 323.68 s [really-safe-money-gen] ]
  16185. 323.68 s [really-safe-money-gen]
  16186. 323.68 s [really-safe-money-gen] instance NFData QuantisationFactor
  16187. 323.68 s [really-safe-money-gen]
  16188. 323.68 s [really-safe-money-gen] IntLit at src/Money/QuantisationFactor.hs:93:16-17
  16189. 323.68 s [really-safe-money-gen] @@ -90,7 +90,7 @@
  16190. 323.68 s [really-safe-money-gen]
  16191. 323.68 s [really-safe-money-gen] rat <-
  16192. 323.68 s [really-safe-money-gen] let r = 1 / irat
  16193. 323.68 s [really-safe-money-gen] - in if r < 0
  16194. 323.68 s [really-safe-money-gen] + in if r < 1
  16195. 323.68 s [really-safe-money-gen] then Nothing
  16196. 323.68 s [really-safe-money-gen] else Just r
  16197. 323.68 s [really-safe-money-gen]
  16198. 323.68 s [really-safe-money-gen]
  16199. 323.68 s [really-safe-money-gen] ListLit at src/Money/Amount.hs:603:7-8
  16200. 323.68 s [really-safe-money-gen] @@ -600,13 +600,13 @@
  16201. 323.68 s [really-safe-money-gen] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  16202. 323.68 s [really-safe-money-gen] validate ad =
  16203. 323.68 s [really-safe-money-gen] mconcat
  16204. 323.68 s [really-safe-money-gen] - [ genericValidate ad,
  16205. 323.68 s [really-safe-money-gen] - case ad of
  16206. 323.68 s [really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  16207. 323.68 s [really-safe-money-gen] - declare "The larger chunks are larger" $
  16208. 323.68 s [really-safe-money-gen] - a1 > a2
  16209. 323.68 s [really-safe-money-gen] - _ -> valid
  16210. 323.68 s [really-safe-money-gen] - ]
  16211. 323.68 s [really-safe-money-gen] + [ genericValidate ad,
  16212. 323.68 s [really-safe-money-gen] + case ad of
  16213. 323.68 s [really-safe-money-gen] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  16214. 323.68 s [really-safe-money-gen] + declare "The larger chunks are larger" $
  16215. 323.69 s [really-safe-money-gen] + a1 > a2
  16216. 323.69 s [really-safe-money-gen] + _ -> valid
  16217. 323.69 s [really-safe-money-gen] + ]
  16218. 323.69 s [really-safe-money-gen]
  16219. 323.69 s [really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
  16220. 323.69 s [really-safe-money-gen]
  16221. 323.69 s [really-safe-money-gen]
  16222. 323.69 s [really-safe-money-gen] ListLit at src/Money/Amount.hs:603:7-8
  16223. 323.69 s [really-safe-money-gen] @@ -600,13 +600,7 @@
  16224. 323.69 s [really-safe-money-gen] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  16225. 323.69 s [really-safe-money-gen] validate ad =
  16226. 323.69 s [really-safe-money-gen] mconcat
  16227. 323.69 s [really-safe-money-gen] - [ genericValidate ad,
  16228. 323.69 s [really-safe-money-gen] - case ad of
  16229. 323.69 s [really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  16230. 323.69 s [really-safe-money-gen] - declare "The larger chunks are larger" $
  16231. 323.69 s [really-safe-money-gen] - a1 > a2
  16232. 323.69 s [really-safe-money-gen] - _ -> valid
  16233. 323.69 s [really-safe-money-gen] - ]
  16234. 323.69 s [really-safe-money-gen] + []
  16235. 323.69 s [really-safe-money-gen]
  16236. 323.69 s [really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
  16237. 323.69 s [really-safe-money-gen]
  16238. 323.69 s [really-safe-money-gen]
  16239. 323.69 s [really-safe-money-gen] RemoveCase at src/Money/Amount.hs:604:9-21
  16240. 323.69 s [really-safe-money-gen] @@ -601,11 +601,11 @@
  16241. 323.69 s [really-safe-money-gen] validate ad =
  16242. 323.69 s [really-safe-money-gen] mconcat
  16243. 323.69 s [really-safe-money-gen] [ genericValidate ad,
  16244. 323.69 s [really-safe-money-gen] - case ad of
  16245. 323.69 s [really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  16246. 323.69 s [really-safe-money-gen] - declare "The larger chunks are larger" $
  16247. 323.69 s [really-safe-money-gen] - a1 > a2
  16248. 323.69 s [really-safe-money-gen] - _ -> valid
  16249. 323.69 s [really-safe-money-gen] + case ad of
  16250. 323.69 s [really-safe-money-gen] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  16251. 323.69 s [really-safe-money-gen] + declare "The larger chunks are larger" $
  16252. 323.69 s [really-safe-money-gen] + a1 > a2
  16253. 323.69 s [really-safe-money-gen] + _ -> valid
  16254. 323.69 s [really-safe-money-gen] ]
  16255. 323.69 s [really-safe-money-gen]
  16256. 323.69 s [really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
  16257. 323.69 s [really-safe-money-gen]
  16258. 323.69 s [really-safe-money-gen] ConstBool at src/Money/Amount.hs:607:15-22
  16259. 323.69 s [really-safe-money-gen] @@ -604,7 +604,7 @@
  16260. 323.69 s [really-safe-money-gen] case ad of
  16261. 323.69 s [really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
  16262. 323.69 s [really-safe-money-gen] declare "The larger chunks are larger" $
  16263. 323.69 s [really-safe-money-gen] - a1 > a2
  16264. 323.69 s [really-safe-money-gen] + True
  16265. 323.69 s [really-safe-money-gen] _ -> valid
  16266. 323.69 s [really-safe-money-gen] ]
  16267. 323.69 s [really-safe-money-gen]
  16268. 323.69 s [really-safe-money-gen]
  16269. 323.69 s [really-safe-money-gen] ConstBool at src/Money/Amount.hs:332:14-40
  16270. 323.69 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  16271. 323.69 s [really-safe-money-gen] | otherwise =
  16272. 323.69 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  16273. 323.69 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  16274. 323.69 s [really-safe-money-gen] - if exponent resultDouble > 65
  16275. 323.69 s [really-safe-money-gen] + if False
  16276. 323.69 s [really-safe-money-gen] then Nothing
  16277. 323.69 s [really-safe-money-gen] else
  16278. 323.69 s [really-safe-money-gen] let ceiled :: Natural
  16279. 323.69 s [really-safe-money-gen]
  16280. 323.69 s [really-safe-money-gen] ConstBool at src/Money/Amount.hs:518:10-15
  16281. 323.69 s [really-safe-money-gen] @@ -515,7 +515,7 @@
  16282. 323.69 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  16283. 323.69 s [really-safe-money-gen] r :: Integer
  16284. 323.69 s [really-safe-money-gen] r = i1 - i2
  16285. 323.69 s [really-safe-money-gen] - in if r < 0
  16286. 323.69 s [really-safe-money-gen] + in if True
  16287. 323.69 s [really-safe-money-gen] then Nothing
  16288. 323.69 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  16289. 323.69 s [really-safe-money-gen]
  16290. 323.69 s [really-safe-money-gen]
  16291. 323.69 s [really-safe-money-gen] IntLit at src/Money/Amount.hs:518:14-15
  16292. 323.69 s [really-safe-money-gen] @@ -515,7 +515,7 @@
  16293. 323.69 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  16294. 323.69 s [really-safe-money-gen] r :: Integer
  16295. 323.69 s [really-safe-money-gen] r = i1 - i2
  16296. 323.69 s [really-safe-money-gen] - in if r < 0
  16297. 323.69 s [really-safe-money-gen] + in if r < 1
  16298. 323.69 s [really-safe-money-gen] then Nothing
  16299. 323.69 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  16300. 323.69 s [really-safe-money-gen]
  16301. 323.69 s [really-safe-money-gen]
  16302. 323.69 s [really-safe-money-gen] RemoveCase at src/Numeric/DecimalLiteral.hs:112:17-21
  16303. 323.69 s [really-safe-money-gen] @@ -109,9 +109,9 @@
  16304. 323.69 s [really-safe-money-gen]
  16305. 323.69 s [really-safe-money-gen] -- | Like 'fromString' but in a 'MonadFail'
  16306. 323.69 s [really-safe-money-gen] fromStringM :: (MonadFail m) => String -> m DecimalLiteral
  16307. 323.69 s [really-safe-money-gen] -fromStringM s = case Numeric.DecimalLiteral.fromString s of
  16308. 323.69 s [really-safe-money-gen] - Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  16309. 323.69 s [really-safe-money-gen] - Just dl -> pure dl
  16310. 323.69 s [really-safe-money-gen] +fromStringM s = case Numeric.DecimalLiteral.fromString s of
  16311. 323.69 s [really-safe-money-gen] + Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  16312. 323.69 s [really-safe-money-gen] + Just dl -> pure dl
  16313. 323.69 s [really-safe-money-gen]
  16314. 323.69 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  16315. 323.69 s [really-safe-money-gen] decimalLiteralP = do
  16316. 323.69 s [really-safe-money-gen]
  16317. 323.69 s [really-safe-money-gen] IntLit at src/Numeric/DecimalLiteral.hs:208:9-10
  16318. 323.69 s [really-safe-money-gen] @@ -205,7 +205,7 @@
  16319. 323.69 s [really-safe-money-gen] -- Nothing
  16320. 323.69 s [really-safe-money-gen] fromRational :: Rational -> Maybe DecimalLiteral
  16321. 323.69 s [really-safe-money-gen] fromRational (n :% d)
  16322. 323.69 s [really-safe-money-gen] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  16323. 323.69 s [really-safe-money-gen] + | n < 1 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  16324. 323.69 s [really-safe-money-gen] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  16325. 323.69 s [really-safe-money-gen]
  16326. 323.69 s [really-safe-money-gen] -- | Turn a 'DecimalLiteral' into a 'Rational'
  16327. 323.69 s [really-safe-money-gen]
  16328. 323.69 s [really-safe-money-gen] RemoveCase at src/Numeric/DecimalLiteral.hs:287:38-40
  16329. 323.69 s [really-safe-money-gen] @@ -284,9 +284,9 @@
  16330. 323.69 s [really-safe-money-gen] -- >>> toRatio (DecimalLiteral (Just False) 3 1)
  16331. 323.69 s [really-safe-money-gen] -- Nothing
  16332. 323.69 s [really-safe-money-gen] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  16333. 323.69 s [really-safe-money-gen] -toRatio (DecimalLiteral mSign m e) = case mSign of
  16334. 323.69 s [really-safe-money-gen] - Just False -> Nothing
  16335. 323.69 s [really-safe-money-gen] - _ -> Just $ fromIntegral m / (10 ^ e)
  16336. 323.69 s [really-safe-money-gen] +toRatio (DecimalLiteral mSign m e) = case mSign of
  16337. 323.69 s [really-safe-money-gen] + Just False -> Nothing
  16338. 323.69 s [really-safe-money-gen] + _ -> Just $ fromIntegral m / (10 ^ e)
  16339. 323.69 s [really-safe-money-gen]
  16340. 323.69 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Word'
  16341. 323.69 s [really-safe-money-gen] fromWord :: Word -> DecimalLiteral
  16342. 323.69 s [really-safe-money-gen]
  16343. 323.69 s [really-safe-money-gen] IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  16344. 323.69 s [really-safe-money-gen] @@ -286,7 +286,7 @@
  16345. 323.69 s [really-safe-money-gen] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  16346. 323.69 s [really-safe-money-gen] toRatio (DecimalLiteral mSign m e) = case mSign of
  16347. 323.69 s [really-safe-money-gen] Just False -> Nothing
  16348. 323.69 s [really-safe-money-gen] - _ -> Just $ fromIntegral m / (10 ^ e)
  16349. 323.69 s [really-safe-money-gen] + _ -> Just $ fromIntegral m / (1 ^ e)
  16350. 323.69 s [really-safe-money-gen]
  16351. 323.69 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Word'
  16352. 323.69 s [really-safe-money-gen] fromWord :: Word -> DecimalLiteral
  16353. 323.69 s [really-safe-money-gen]
  16354. 323.69 s [really-safe-money-gen] ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47
  16355. 323.69 s [really-safe-money-gen] @@ -296,7 +296,7 @@
  16356. 323.69 s [really-safe-money-gen] toWord :: DecimalLiteral -> Maybe Word
  16357. 323.69 s [really-safe-money-gen] toWord dl = do
  16358. 323.69 s [really-safe-money-gen] n <- toNatural dl
  16359. 323.69 s [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Word)
  16360. 323.69 s [really-safe-money-gen] + guard $ True
  16361. 323.69 s [really-safe-money-gen] pure $ fromIntegral n
  16362. 323.69 s [really-safe-money-gen]
  16363. 323.69 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Natural'
  16364. 323.69 s [really-safe-money-gen]
  16365. 323.69 s [really-safe-money-gen] ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46
  16366. 323.69 s [really-safe-money-gen] @@ -330,7 +330,7 @@
  16367. 323.69 s [really-safe-money-gen] toInt dl = do
  16368. 323.69 s [really-safe-money-gen] n <- toInteger dl
  16369. 323.69 s [really-safe-money-gen] guard $ n <= fromIntegral (maxBound :: Int)
  16370. 323.69 s [really-safe-money-gen] - guard $rc/Numeric/DecimalLiteral/Codec.hs:40:33-82
  16371. 323.69 s [really-safe-money-gen] @@ -37,5 +37,5 @@
  16372. 323.69 s [really-safe-money-gen] where
  16373. 323.69 s [really-safe-money-gen] f :: String -> Either String DecimalLiteral
  16374. 323.69 s [really-safe-money-gen] f s = case DecimalLiteral.fromString s of
  16375. 323.69 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  16376. 323.69 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  16377. 323.69 s [really-safe-money-gen] Just a -> Right a
  16378. 323.69 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account/Codec.hs:50:11-24
  16379. 323.69 s [really-safe-money-gen] @@ -47,9 +47,9 @@
  16380. 323.69 s [really-safe-money-gen] codecViaString = bimapCodec f g stringCodec <?> "Account"
  16381. 323.69 s [really-safe-money-gen] where
  16382. 323.69 s [really-safe-money-gen] f :: String -> Either String Account
  16383. 323.69 s [really-safe-money-gen] - f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  16384. 323.69 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  16385. 323.69 s [really-safe-money-gen] - Just a -> Right a
  16386. 323.69 s [really-safe-money-gen] + f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  16387. 323.69 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  16388. 323.69 s [really-safe-money-gen] + Just a -> Right a
  16389. 323.69 s [really-safe-money-gen] g :: Account -> String
  16390. 323.69 s [really-safe-money-gen] g = show . Account.toMinimalQuantisations
  16391. 323.69 s [really-safe-money-gen]
  16392. 323.69 s [really-safe-money-gen] Testing mutation RemoveCase at src/Numeric/DecimalLiteral/Codec.hs:39:11-24
  16393. 323.69 s [really-safe-money-gen] @@ -36,6 +36,6 @@
  16394. 323.69 s [really-safe-money-gen] codecViaString = bimapCodec f DecimalLiteral.toString stringCodec <?> "DecimalLiteral"
  16395. 323.69 s [really-safe-money-gen] where
  16396. 323.69 s [really-safe-money-gen] f :: String -> Either String DecimalLiteral
  16397. 323.69 s [really-safe-money-gen] - f s = case DecimalLiteral.fromString s of
  16398. 323.69 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  16399. 323.69 s [really-safe-money-gen] - Just a -> Right a
  16400. 323.69 s [really-safe-money-gen] + f s = case DecimalLiteral.fromString s of
  16401. 323.69 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  16402. 323.69 s [really-safe-money-gen] + Just a -> Right a
  16403. 323.69 s [really-safe-money-gen] Testing mutation RemoveCase at src/Numeric/DecimalLiteral/Codec.hs:39:11-24
  16404. 323.69 s [really-safe-money-gen] @@ -36,6 +36,6 @@
  16405. 323.69 s [really-safe-money-gen] codecViaString = bimapCodec f DecimalLiteral.toString stringCodec <?> "DecimalLiteral"
  16406. 323.69 s [really-safe-money-gen] where
  16407. 323.69 s [really-safe-money-gen] f :: String -> Either String DecimalLiteral
  16408. 323.69 s [really-safe-money-gen] - f s = case DecimalLiteral.fromString s of
  16409. 323.69 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  16410. 323.69 s [really-safe-money-gen] - Just a -> Right a
  16411. 323.69 s [really-safe-money-gen] + f s = case DecimalLiteral.fromString s of
  16412. 323.69 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  16413. 323.69 s [really-safe-money-gen] + Just a -> Right a
  16414. 323.69 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount/Codec.hs:46:11-86
  16415. 323.69 s [really-safe-money-gen] @@ -43,15 +43,15 @@
  16416. 323.69 s [really-safe-money-gen] codecViaString = bimapCodec f g stringCodec <?> "Amount"
  16417. 323.69 s [really-safe-money-gen] where
  16418. 323.69 s [really-safe-money-gen] f :: String -> Either String Amount
  16419. 323.69 s [really-safe-money-gen] - f s = case readMaybe s of
  16420. 323.69 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  16421. 323.69 s [really-safe-money-gen] - Just i ->
  16422. 323.69 s [really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
  16423. 323.69 s [really-safe-money-gen] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  16424. 323.69 s [really-safe-money-gen] - else
  16425. 323.69 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  16426. 323.69 s [really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  16427. 323.69 s [really-safe-money-gen] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  16428. 323.69 s [really-safe-money-gen] + f s = case readMaybe s of
  16429. 323.69 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  16430. 323.69 s [really-safe-money-gen] + Just i ->
  16431. 323.69 s [really-safe-money-gen] + if (i :: Integer) < toInteger (minBound :: Word64)
  16432. 323.69 s [really-safe-money-gen] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  16433. 323.69 s [really-safe-money-gen] + else
  16434. 323.69 s [really-safe-money-gen] + if (i :: Integer) > toInteger (maxBound :: Word64)
  16435. 323.69 s [really-safe-money-gen] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  16436. 323.69 s [really-safe-money-gen] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  16437. 323.69 s [really-safe-money-gen] g :: Amount -> String
  16438. 323.69 s [really-safe-money-gen] g = show . Amount.toMinimalQuantisations
  16439. 323.69 s [really-safe-money-gen]
  16440. 323.69 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account/Codec.hs:79:11-24
  16441. 323.69 s [really-safe-money-gen] @@ -76,6 +76,6 @@
  16442. 323.69 s [really-safe-money-gen] <?> "Account"
  16443. 323.69 s [really-safe-money-gen] where
  16444. 323.69 s [really-safe-money-gen] f :: Integer -> Either String Account
  16445. 323.69 s [really-safe-money-gen] - f i = case Account.fromMinimalQuantisations i of
  16446. 323.69 s [really-safe-money-gen] - Nothing -> Left $ "Number did not fit into an account value: " <> show i
  16447. 323.69 s [really-safe-money-gen] - Just a -> Right a
  16448. 323.69 s [really-safe-money-gen] + f i = case Account.fromMinimalQuantisations i of
  16449. 323.70 s [really-safe-money-gen] + Nothing -> Left $ "Number did not fit into an account value: " <> show i
  16450. 323.70 s [really-safe-money-gen] + Just a -> Right a
  16451. 323.70 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/QuantisationFactor/Codec.hs:41:11-26
  16452. 323.70 s [really-safe-money-gen] @@ -38,6 +38,6 @@
  16453. 323.70 s [really-safe-money-gen] codec
  16454. 323.70 s [really-safe-money-gen] <?> "QuantisationFactor"
  16455. 323.70 s [really-safe-money-gen] where
  16456. 323.70 s [really-safe-money-gen] - f w = case QuantisationFactor.fromWord32 w of
  16457. 323.70 s [really-safe-money-gen] - Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  16458. 323.70 s [really-safe-money-gen] - Just qf -> Right qf
  16459. 323.70 s [really-safe-money-gen] + f w = case QuantisationFactor.fromWord32 w of
  16460. 323.70 s [really-safe-money-gen] + Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  16461. 323.70 s [really-safe-money-gen] + Just qf -> Right qf
  16462. 323.70 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount/Codec.hs:46:11-86
  16463. 323.70 s [really-safe-money-gen] @@ -43,15 +43,15 @@
  16464. 323.70 s [really-safe-money-gen] codecViaString = bimapCodec f g stringCodec <?> "Amount"
  16465. 323.70 s [really-safe-money-gen] where
  16466. 323.70 s [really-safe-money-gen] f :: String -> Either String Amount
  16467. 323.70 s [really-safe-money-gen] - f s = case readMaybe s of
  16468. 323.70 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  16469. 323.70 s [really-safe-money-gen] - Just i ->
  16470. 323.70 s [really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
  16471. 323.70 s [really-safe-money-gen] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  16472. 323.70 s [really-safe-money-gen] - else
  16473. 323.70 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  16474. 323.70 s [really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  16475. 323.70 s [really-safe-money-gen] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  16476. 323.70 s [really-safe-money-gen] + f s = case readMaybe s of
  16477. 323.70 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  16478. 323.70 s [really-safe-money-gen] + Just i ->
  16479. 323.70 s [really-safe-money-gen] + if (i :: Integer) < toInteger (minBound :: Word64)
  16480. 323.70 s [really-safe-money-gen] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  16481. 323.70 s [really-safe-money-gen] + else
  16482. 323.70 s [really-safe-money-gen] + if (i :: Integer) > toInteger (maxBound :: Word64)
  16483. 323.70 s [really-safe-money-gen] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  16484. 323.70 s [really-safe-money-gen] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  16485. 323.70 s [really-safe-money-gen] g :: Amount -> String
  16486. 323.70 s [really-safe-money-gen] g = show . Amount.toMinimalQuantisations
  16487. 323.70 s [really-safe-money-gen]
  16488. 323.70 s [really-safe-money-gen] n >= fromIntegral (minBound :: Int)
  16489. 323.70 s [really-safe-money-gen] + guard $ True
  16490. 323.70 s [really-safe-money-gen] pure $ fromIntegral n
  16491. 323.70 s [really-safe-money-gen]
  16492. 323.70 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  16493. 323.70 s [really-safe-money-gen]
  16494. 323.70 s [really-safe-money-gen] ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46
  16495. 323.70 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  16496. 323.70 s [really-safe-money-gen] toInt :: DecimalLiteral -> Maybe Int
  16497. 323.70 s [really-safe-money-gen] toInt dl = do
  16498. 323.70 s [really-safe-money-gen] n <- toInteger dl
  16499. 323.70 s [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Int)
  16500. 323.70 s [really-safe-money-gen] + guard $ True
  16501. 323.70 s [really-safe-money-gen] guard $ n >= fromIntegral (minBound :: Int)
  16502. 323.70 s [really-safe-money-gen] pure $ fromIntegral n
  16503. 323.70 s [really-safe-money-gen]
  16504. 323.70 s [really-safe-money-gen]
  16505. 323.70 s [really-safe-money-gen] IntLit at src/Numeric/DecimalLiteral.hs:337:21-22
  16506. 323.70 s [really-safe-money-gen] @@ -334,7 +334,7 @@
  16507. 323.70 s [really-safe-money-gen] pure $ fromIntegral n
  16508. 323.70 s [really-safe-money-gen]
  16509. 323.70 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  16510. 323.70 s [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False
  16511. 323.70 s [really-safe-money-gen] +numSign a = if a >= 1 then Nothing else Just False
  16512. 323.70 s [really-safe-money-gen]
  16513. 323.70 s [really-safe-money-gen] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  16514. 323.70 s [really-safe-money-gen] signSignum = \case
  16515. 323.70 s [really-safe-money-gen]
  16516. 323.70 s [really-safe-money-gen] ListLit at src/Money/MultiAmount.hs:63:7-8
  16517. 323.70 s [really-safe-money-gen] @@ -60,11 +60,11 @@
  16518. 323.70 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
  16519. 323.70 s [really-safe-money-gen] validate ma@(MultiAmount m) =
  16520. 323.70 s [really-safe-money-gen] mconcat
  16521. 323.70 s [really-safe-money-gen] - [ genericValidate ma,
  16522. 323.70 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  16523. 323.70 s [really-safe-money-gen] - declare "The amount is not zero" $
  16524. 323.70 s [really-safe-money-gen] - a /= Amount.zero
  16525. 323.70 s [really-safe-money-gen] - ]
  16526. 323.70 s [really-safe-money-gen] + [ genericValidate ma,
  16527. 323.70 s [really-safe-money-gen] + decorateMap m $ \_ a ->
  16528. 323.70 s [really-safe-money-gen] + declare "The amount is not zero" $
  16529. 323.70 s [really-safe-money-gen] + a /= Amount.zero
  16530. 323.70 s [really-safe-money-gen] + ]
  16531. 323.70 s [really-safe-money-gen]
  16532. 323.70 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  16533. 323.70 s [really-safe-money-gen]
  16534. 323.70 s [really-safe-money-gen]
  16535. 323.70 s [really-safe-money-gen] ListLit at src/Money/MultiAmount.hs:63:7-8
  16536. 323.70 s [really-safe-money-gen] @@ -60,11 +60,7 @@
  16537. 323.70 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
  16538. 323.70 s [really-safe-money-gen] validate ma@(MultiAmount m) =
  16539. 323.70 s [really-safe-money-gen] mconcat
  16540. 323.70 s [really-safe-money-gen] - [ genericValidate ma,
  16541. 323.70 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  16542. 323.70 s [really-safe-money-gen] - declare "The amount is not zero" $
  16543. 323.70 s [really-safe-money-gen] - a /= Amount.zero
  16544. 323.70 s [really-safe-money-gen] - ]
  16545. 323.70 s [really-safe-money-gen] + []
  16546. 323.70 s [really-safe-money-gen]
  16547. 323.70 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  16548. 323.70 s [really-safe-money-gen]
  16549. 323.70 s [really-safe-money-gen]
  16550. 323.70 s [really-safe-money-gen] ConstBool at src/Money/MultiAmount.hs:66:13-29
  16551. 323.70 s [really-safe-money-gen] @@ -63,7 +63,7 @@
  16552. 323.70 s [really-safe-money-gen] [ genericValidate ma,
  16553. 323.70 s [really-safe-money-gen] decorateMap m $ \_ a ->
  16554. 323.70 s [really-safe-money-gen] declare "The amount is not zero" $
  16555. 323.70 s [really-safe-money-gen] - a /= Amount.zero
  16556. 323.70 s [really-safe-money-gen] + True
  16557. 323.70 s [really-safe-money-gen] ]
  16558. 323.70 s [really-safe-money-gen]
  16559. 323.70 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  16560. 323.70 s [really-safe-money-gen]
  16561. 323.70 s [really-safe-money-gen] ConstBool at src/Money/MultiAmount.hs:106:12-28
  16562. 323.70 s [really-safe-money-gen] @@ -103,7 +103,7 @@
  16563. 323.70 s [really-safe-money-gen] Just a -> do
  16564. 323.70 s [really-safe-money-gen] r <- Amount.add a amount
  16565. 323.70 s [really-safe-money-gen] Just $
  16566. 323.70 s [really-safe-money-gen] - if r == Amount.zero
  16567. 323.70 s [really-safe-money-gen] + if False
  16568. 323.70 s [really-safe-money-gen] then M.delete currency m
  16569. 323.70 s [really-safe-money-gen] else M.insert currency r m
  16570. 323.70 s [really-safe-money-gen]
  16571. 323.70 s [really-safe-money-gen]
  16572. 323.70 s [really-safe-money-gen] CondFlip at src/Money/MultiAmount.hs:119:9-37
  16573. 323.70 s [really-safe-money-gen] @@ -116,9 +116,9 @@
  16574. 323.70 s [really-safe-money-gen] Just a -> do
  16575. 323.70 s [really-safe-money-gen] r <- Amount.subtract a amount
  16576. 323.70 s [really-safe-money-gen] Just $
  16577. 323.70 s [really-safe-money-gen] - if r == Amount.zero
  16578. 323.70 s [really-safe-money-gen] - then M.delete currency m
  16579. 323.70 s [really-safe-money-gen] - else M.insert currency r m
  16580. 323.70 s [really-safe-money-gen] + if r == Amount.zero
  16581. 323.70 s [really-safe-money-gen] + then M.delete currency m
  16582. 323.70 s [really-safe-money-gen] + else M.insert currency r m
  16583. 323.70 s [really-safe-money-gen]
  16584. 323.70 s [really-safe-money-gen] -- | Try to convert every amount to one currency.
  16585. 323.70 s [really-safe-money-gen] --
  16586. 323.70 s [really-safe-money-gen]
  16587. 323.70 s [really-safe-money-gen] Negate at src/Money/MultiAmount.hs:119:12-28
  16588. 323.70 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  16589. 323.70 s [really-safe-money-gen] Just a -> do
  16590. 323.70 s [really-safe-money-gen] r <- Amount.subtract a amount
  16591. 323.70 s [really-safe-money-gen] Just $
  16592. 323.70 s [really-safe-money-gen] - if r == Amount.zero
  16593. 323.70 s [really-safe-money-gen] + if not (r == Amount.zero)
  16594. 323.70 s [really-safe-money-gen] then M.delete currency m
  16595. 323.70 s [really-safe-money-gen] else M.insert currency r m
  16596. 323.70 s [really-safe-money-gen]
  16597. 323.70 s [really-safe-money-gen]
  16598. 323.70 s [really-safe-money-gen] ConstBool at src/Money/MultiAmount.hs:119:12-28
  16599. 323.70 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  16600. 323.70 s [really-safe-money-gen] Just a -> do
  16601. 323.70 s [really-safe-money-gen] r <- Amount.subtract a amount
  16602. 323.70 s [really-safe-money-gen] Just $
  16603. 323.70 s [really-safe-money-gen] - if r == Amount.zero
  16604. 323.70 s [really-safe-money-gen] + if False
  16605. 323.70 s [really-safe-money-gen] then M.delete currency m
  16606. 323.70 s [really-safe-money-gen] else M.insert currency r m
  16607. 323.70 s [really-safe-money-gen]
  16608. 323.70 s [really-safe-money-gen]
  16609. 323.70 s [really-safe-money-gen] ConstBool at src/Money/MultiAmount.hs:119:12-28
  16610. 323.70 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  16611. 323.70 s [really-safe-money-gen] Just a -> do
  16612. 323.70 s [really-safe-money-gen] r <- Amount.subtract a amount
  16613. 323.70 s [really-safe-money-gen] Just $
  16614. 323.70 s [really-safe-money-gen] - if r == Amount.zero
  16615. 323.70 s [really-safe-money-gen] + if True
  16616. 323.70 s [really-safe-money-gen] then M.delete currency m
  16617. 323.70 s [really-safe-money-gen] else M.insert currency r m
  16618. 323.70 s [really-safe-money-gen]
  16619. 323.70 s [really-safe-money-gen]
  16620. 323.70 s [really-safe-money-gen] ListLit at src/Money/ConversionRate.hs:37:7-8
  16621. 323.70 s [really-safe-money-gen] @@ -34,9 +34,9 @@
  16622. 323.70 s [really-safe-money-gen] instance Validity ConversionRate where
  16623. 323.70 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  16624. 323.70 s [really-safe-money-gen] mconcat
  16625. 323.70 s [really-safe-money-gen] - [ genericValidate cr,
  16626. 323.70 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  16627. 323.70 s [really-safe-money-gen] - ]
  16628. 323.70 s [really-safe-money-gen] + [ genericValidate cr,
  16629. 323.70 s [really-safe-money-gen] + declare "The rate is nonzero" $ numerator r /= 0
  16630. 323.70 s [really-safe-money-gen] + ]
  16631. 323.70 s [really-safe-money-gen]
  16632. 323.70 s [really-safe-money-gen] instance NFData ConversionRate
  16633. 323.70 s [really-safe-money-gen]
  16634. 323.70 s [really-safe-money-gen]
  16635. 323.70 s [really-safe-money-gen] ListLit at src/Money/ConversionRate.hs:37:7-8
  16636. 323.70 s [really-safe-money-gen] @@ -34,9 +34,7 @@
  16637. 323.70 s [really-safe-money-gen] instance Validity ConversionRate where
  16638. 323.70 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  16639. 323.70 s [really-safe-money-gen] mconcat
  16640. 323.70 s [really-safe-money-gen] - [ genericValidate cr,
  16641. 323.70 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  16642. 323.70 s [really-safe-money-gen] - ]
  16643. 323.70 s [really-safe-money-gen] + []
  16644. 323.70 s [really-safe-money-gen]
  16645. 323.70 s [really-safe-money-gen] instance NFData ConversionRate
  16646. 323.70 s [really-safe-money-gen]
  16647. 323.70 s [really-safe-money-gen]
  16648. 323.70 s [really-safe-money-gen] ConstBool at src/Money/ConversionRate.hs:38:41-57
  16649. 323.70 s [really-safe-money-gen] @@ -35,7 +35,7 @@
  16650. 323.70 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  16651. 323.70 s [really-safe-money-gen] mconcat
  16652. 323.70 s [really-safe-money-gen] [ genericValidate cr,
  16653. 323.70 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  16654. 323.70 s [really-safe-money-gen] + declare "The rate is nonzero" $ True
  16655. 323.70 s [really-safe-money-gen] ]
  16656. 323.70 s [really-safe-money-gen]
  16657. 323.70 s [really-safe-money-gen] instance NFData ConversionRate
  16658. 323.70 s [really-safe-money-gen]
  16659. 323.70 s [really-safe-money-gen] IntLit at src/Money/ConversionRate.hs:109:27-28
  16660. 323.70 s [really-safe-money-gen] @@ -106,7 +106,7 @@
  16661. 323.70 s [really-safe-money-gen]
  16662. 323.70 s [really-safe-money-gen] -- | One-to-one conversion rate
  16663. 323.70 s [really-safe-money-gen] oneToOne :: ConversionRate
  16664. 323.70 s [really-safe-money-gen] -oneToOne = ConversionRate 1
  16665. 323.70 s [really-safe-money-gen] +oneToOne = ConversionRate 0
  16666. 323.70 s [really-safe-money-gen]
  16667. 323.70 s [really-safe-money-gen] -- | Invert a 'ConversionRate', to convert in the other direction.
  16668. 323.70 s [really-safe-money-gen] --
  16669. 323.70 s [really-safe-money-gen]
  16670. 323.70 s [really-safe-money-gen] ListLit at src/Money/MultiAccount.hs:66:7-8
  16671. 323.70 s [really-safe-money-gen] @@ -63,11 +63,11 @@
  16672. 323.70 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
  16673. 323.70 s [really-safe-money-gen] validate ma@(MultiAccount m) =
  16674. 323.70 s [really-safe-money-gen] mconcat
  16675. 323.70 s [really-safe-money-gen] - [ genericValidate ma,
  16676. 323.70 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  16677. 323.70 s [really-safe-money-gen] - declare "The account is not zero" $
  16678. 323.70 s [really-safe-money-gen] - a /= Account.zero
  16679. 323.70 s [really-safe-money-gen] - ]
  16680. 323.70 s [really-safe-money-gen] + [ genericValidate ma,
  16681. 323.70 s [really-safe-money-gen] + decorateMap m $ \_ a ->
  16682. 323.70 s [really-safe-money-gen] + declare "The account is not zero" $
  16683. 323.70 s [really-safe-money-gen] + a /= Account.zero
  16684. 323.70 s [really-safe-money-gen] + ]
  16685. 323.70 s [really-safe-money-gen]
  16686. 323.70 s [really-safe-money-gen] -- TODO no empty currencies
  16687. 323.70 s [really-safe-money-gen]
  16688. 323.70 s [really-safe-money-gen]
  16689. 323.70 s [really-safe-money-gen] ListLit at src/Money/MultiAccount.hs:66:7-8
  16690. 323.70 s [really-safe-money-gen] @@ -63,11 +63,7 @@
  16691. 323.70 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
  16692. 323.70 s [really-safe-money-gen] validate ma@(MultiAccount m) =
  16693. 323.70 s [really-safe-money-gen] mconcat
  16694. 323.70 s [really-safe-money-gen] - [ genericValidate ma,
  16695. 323.70 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  16696. 323.70 s [really-safe-money-gen] - declare "The account is not zero" $
  16697. 323.70 s [really-safe-money-gen] - a /= Account.zero
  16698. 323.70 s [really-safe-money-gen] - ]
  16699. 323.70 s [really-safe-money-gen] + []
  16700. 323.70 s [really-safe-money-gen]
  16701. 323.70 s [really-safe-money-gen] -- TODO no empty currencies
  16702. 323.70 s [really-safe-money-gen]
  16703. 323.71 s [really-safe-money-gen]
  16704. 323.71 s [really-safe-money-gen] ConstBool at src/Money/MultiAccount.hs:69:13-30
  16705. 323.71 s [really-safe-money-gen] @@ -66,7 +66,7 @@
  16706. 323.71 s [really-safe-money-gen] [ genericValidate ma,
  16707. 323.71 s [really-safe-money-gen] decorateMap m $ \_ a ->
  16708. 323.71 s [really-safe-money-gen] declare "The account is not zero" $
  16709. 323.71 s [really-safe-money-gen] - a /= Account.zero
  16710. 323.71 s [really-safe-money-gen] + True
  16711. 323.71 s [really-safe-money-gen] ]
  16712. 323.71 s [really-safe-money-gen]
  16713. 323.71 s [really-safe-money-gen] -- TODO no empty currencies
  16714. 323.71 s [really-safe-money-gen]
  16715. 323.71 s [really-safe-money-gen] ConstBool at src/Money/MultiAccount.hs:78:6-28
  16716. 323.71 s [really-safe-money-gen] @@ -75,7 +75,7 @@
  16717. 323.71 s [really-safe-money-gen]
  16718. 323.71 s [really-safe-money-gen] fromAccount :: currency -> Account -> MultiAccount currency
  16719. 323.71 s [really-safe-money-gen] fromAccount currency amount =
  16720. 323.71 s [really-safe-money-gen] - if amount == Account.zero
  16721. 323.71 s [really-safe-money-gen] + if True
  16722. 323.71 s [really-safe-money-gen] then zero
  16723. 323.71 s [really-safe-money-gen] else MultiAccount $ M.singleton currency amount
  16724. 323.71 s [really-safe-money-gen]
  16725. 323.71 s [really-safe-money-gen] checkPhase completed in 4 minutes 28 seconds
  16726. 323.71 s [really-safe-money-gen] Phase: haddockPhase
  16727. 323.81 s [really-safe-money-gen] Preprocessing library for really-safe-money-gen-0.0.0.0...
  16728. 323.82 s [really-safe-money-gen] Running Haddock on library for really-safe-money-gen-0.0.0.0...
  16729. 323.82 s [really-safe-money-gen] Warning: The documentation for the following packages are not installed. No
  16730. 323.82 s [really-safe-money-gen] links will be generated to these packages: really-safe-money-0.0.0.0
  16731. 323.99 s [really-safe-money-gen] [ 1 of 13] Compiling Money.Amount.Gen ( src/Money/Amount/Gen.hs, nothing )
  16732. 324.09 s [really-safe-money-gen] [ 2 of 13] Compiling Money.Account.Gen ( src/Money/Account/Gen.hs, nothing )
  16733. 324.09 s [really-safe-money-gen] [ 3 of 13] Compiling Money.AccountOf.Gen ( src/Money/AccountOf/Gen.hs, nothing )
  16734. 324.09 s [really-safe-money-gen] [ 4 of 13] Compiling Money.AmountOf.Gen ( src/Money/AmountOf/Gen.hs, nothing )
  16735. 324.10 s [really-safe-money-gen] [ 5 of 13] Compiling Money.ConversionRate.Gen ( src/Money/ConversionRate/Gen.hs, nothing )
  16736. 324.11 s [really-safe-money-gen] [ 6 of 13] Compiling Money.ConversionRateOf.Gen ( src/Money/ConversionRateOf/Gen.hs, nothing )
  16737. 324.11 s [really-safe-money-gen] [ 7 of 13] Compiling Money.QuantisationFactor.Gen ( src/Money/QuantisationFactor/Gen.hs, nothing )
  16738. 324.11 s [really-safe-money-gen] [ 8 of 13] Compiling Money.Currency.Gen ( src/Money/Currency/Gen.hs, nothing )
  16739. 324.12 s [really-safe-money-gen] [ 9 of 13] Compiling Money.MultiAmount.Gen ( src/Money/MultiAmount/Gen.hs, nothing )
  16740. 324.13 s [really-safe-money-gen] [10 of 13] Compiling Money.MultiAccount.Gen ( src/Money/MultiAccount/Gen.hs, nothing )
  16741. 324.13 s [really-safe-money-gen] [11 of 13] Compiling Money.Gen ( src/Money/Gen.hs, nothing )
  16742. 324.14 s [really-safe-money-gen] [12 of 13] Compiling Numeric.DecimalLiteral.Gen ( src/Numeric/DecimalLiteral/Gen.hs, nothing )
  16743. 324.14 s [really-safe-money-gen] [13 of 13] Compiling Paths_really_safe_money_gen ( dist/build/autogen/Paths_really_safe_money_gen.hs, nothing )
  16744. 324.16 s [really-safe-money-gen] Haddock coverage:
  16745. 324.16 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.Amount.Gen'
  16746. 324.16 s [really-safe-money-gen] Missing documentation for:
  16747. 324.16 s [really-safe-money-gen] Module header
  16748. 324.16 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.Account.Gen'
  16749. 324.16 s [really-safe-money-gen] Missing documentation for:
  16750. 324.16 s [really-safe-money-gen] Module header
  16751. 324.16 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.AccountOf.Gen'
  16752. 324.16 s [really-safe-money-gen] Missing documentation for:
  16753. 324.16 s [really-safe-money-gen] Module header
  16754. 324.16 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.AmountOf.Gen'
  16755. 324.16 s [really-safe-money-gen] Missing documentation for:
  16756. 324.16 s [really-safe-money-gen] Module header
  16757. 324.16 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.ConversionRate.Gen'
  16758. 324.16 s [really-safe-money-gen] Missing documentation for:
  16759. 324.16 s [really-safe-money-gen] Module header
  16760. 324.16 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.ConversionRateOf.Gen'
  16761. 324.16 s [really-safe-money-gen] Missing documentation for:
  16762. 324.16 s [really-safe-money-gen] Module header
  16763. 324.16 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.QuantisationFactor.Gen'
  16764. 324.16 s [really-safe-money-gen] Missing documentation for:
  16765. 324.16 s [really-safe-money-gen] Module header
  16766. 324.16 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.Currency.Gen'
  16767. 324.16 s [really-safe-money-gen] Missing documentation for:
  16768. 324.16 s [really-safe-money-gen] Module header
  16769. 324.16 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.MultiAmount.Gen'
  16770. 324.16 s [really-safe-money-gen] Missing documentation for:
  16771. 324.16 s [really-safe-money-gen] Module header
  16772. 324.16 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.MultiAccount.Gen'
  16773. 324.16 s [really-safe-money-gen] Missing documentation for:
  16774. 324.16 s [really-safe-money-gen] Module header
  16775. 324.16 s [really-safe-money-gen] Warning: Money.Gen: Could not find documentation for exported module: Money.Gen
  16776. 324.16 s [really-safe-money-gen] 90% ( 10 / 11) in 'Money.Gen'
  16777. 324.16 s [really-safe-money-gen] Missing documentation for:
  16778. 324.16 s [really-safe-money-gen] Module header
  16779. 324.16 s [really-safe-money-gen] 0% ( 0 / 2) in 'Numeric.DecimalLiteral.Gen'
  16780. 324.16 s [really-safe-money-gen] Missing documentation for:
  16781. 324.16 s [really-safe-money-gen] Module header
  16782. 324.16 s [really-safe-money-gen] shrinkSign (src/Numeric/DecimalLiteral/Gen.hs:16)
  16783. 324.24 s [really-safe-money-gen] Warning: Money.Amount.Gen: could not find link destinations for:
  16784. 324.24 s [really-safe-money-gen] - Money.Amount.Amount
  16785. 324.24 s [really-safe-money-gen] - Money.Amount.Distribution
  16786. 324.24 s [really-safe-money-gen] - Money.Amount.Rounding
  16787. 324.24 s [really-safe-money-gen] Warning: Money.Account.Gen: could not find link destinations for:
  16788. 324.24 s [really-safe-money-gen] - Money.Account.Account
  16789. 324.24 s [really-safe-money-gen] Warning: Money.AccountOf.Gen: could not find link destinations for:
  16790. 324.24 s [really-safe-money-gen] - Money.AccountOf.AccountOf
  16791. 324.24 s [really-safe-money-gen] Warning: Money.AmountOf.Gen: could not find link destinations for:
  16792. 324.24 s [really-safe-money-gen] - Money.AmountOf.AmountOf
  16793. 324.24 s [really-safe-money-gen] Warning: Money.ConversionRate.Gen: could not find link destinations for:
  16794. 324.24 s [really-safe-money-gen] - Money.ConversionRate.ConversionRate
  16795. 324.24 s [really-safe-money-gen] Warning: Money.ConversionRateOf.Gen: could not find link destinations for:
  16796. 324.24 s [really-safe-money-gen] - Money.ConversionRateOf.ConversionRateOf
  16797. 324.24 s [really-safe-money-gen] Warning: Money.QuantisationFactor.Gen: could not find link destinations for:
  16798. 324.24 s [really-safe-money-gen] - Money.QuantisationFactor.QuantisationFactor
  16799. 324.24 s [really-safe-money-gen] Warning: Money.Currency.Gen: could not find link destinations for:
  16800. 324.24 s [really-safe-money-gen] - Money.Currency.Currency
  16801. 324.24 s [really-safe-money-gen] Warning: Money.MultiAmount.Gen: could not find link destinations for:
  16802. 324.24 s [really-safe-money-gen] - Money.MultiAmount.MultiAmount
  16803. 324.24 s [really-safe-money-gen] Warning: Money.MultiAccount.Gen: could not find link destinations for:
  16804. 324.24 s [really-safe-money-gen] - Money.MultiAccount.MultiAccount
  16805. 324.24 s [really-safe-money-gen] Warning: Numeric.DecimalLiteral.Gen: could not find link destinations for:
  16806. 324.24 s [really-safe-money-gen] - Numeric.DecimalLiteral.DecimalLiteral
  16807. 327.95 s [really-safe-money-gen] Documentation created: dist/doc/html/really-safe-money-gen/,
  16808. 327.95 s [really-safe-money-gen] dist/doc/html/really-safe-money-gen/really-safe-money-gen.txt
  16809. 328.00 s [really-safe-money-gen] Preprocessing test suite 'really-safe-money-test' for really-safe-money-gen-0.0.0.0...
  16810. 328.02 s [really-safe-money-gen] Phase: installPhase
  16811. 328.10 s [really-safe-money-gen] Installing library in /nix/store/mszdd971wbn8fa5jbcli2vfjbjxs17w3-really-safe-money-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h
  16812. 328.39 s [really-safe-money-gen] Phase: fixupPhase
  16813. 328.41 s [really-safe-money-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/mszdd971wbn8fa5jbcli2vfjbjxs17w3-really-safe-money-gen-0.0.0.0
  16814. 328.41 s [really-safe-money-gen] shrinking /nix/store/mszdd971wbn8fa5jbcli2vfjbjxs17w3-really-safe-money-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/libHSreally-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h-ghc9.10.3.so
  16815. 328.43 s [really-safe-money-gen] checking for references to /build/ in /nix/store/mszdd971wbn8fa5jbcli2vfjbjxs17w3-really-safe-money-gen-0.0.0.0...
  16816. 328.45 s [really-safe-money-gen] patching script interpreter paths in /nix/store/mszdd971wbn8fa5jbcli2vfjbjxs17w3-really-safe-money-gen-0.0.0.0
  16817. 328.46 s [really-safe-money-gen] stripping (with command strip and flags -S -p) in /nix/store/mszdd971wbn8fa5jbcli2vfjbjxs17w3-really-safe-money-gen-0.0.0.0/lib
  16818. 328.53 s [really-safe-money-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/83q7ddqxny8pph072bbyn0rcsyvmywr1-really-safe-money-gen-0.0.0.0-doc
  16819. 328.53 s [really-safe-money-gen] checking for references to /build/ in /nix/store/83q7ddqxny8pph072bbyn0rcsyvmywr1-really-safe-money-gen-0.0.0.0-doc...
  16820. 328.55 s [really-safe-money-gen] patching script interpreter paths in /nix/store/83q7ddqxny8pph072bbyn0rcsyvmywr1-really-safe-money-gen-0.0.0.0-doc
  16821. 328.56 s [really-safe-money-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/r67y4wiw11z3h1banskqalysd9d07id4-really-safe-money-gen-0.0.0.0-report
  16822. 328.57 s [really-safe-money-gen] checking for references to /build/ in /nix/store/r67y4wiw11z3h1banskqalysd9d07id4-really-safe-money-gen-0.0.0.0-report...
  16823. 328.59 s [really-safe-money-gen] patching script interpreter paths in /nix/store/r67y4wiw11z3h1banskqalysd9d07id4-really-safe-money-gen-0.0.0.0-report
  16824. 328.71 s [post-build-hook] Uploading to cachix cache "sydtest": /nix/store/83q7ddqxny8pph072bbyn0rcsyvmywr1-really-safe-money-gen-0.0.0.0-doc /nix/store/mszdd971wbn8fa5jbcli2vfjbjxs17w3-really-safe-money-gen-0.0.0.0 /nix/store/r67y4wiw11z3h1banskqalysd9d07id4-really-safe-money-gen-0.0.0.0-report
  16825. 329.15 s [post-build-hook] Pushing 3 paths (196 are already present) using zstd to cache sydtest ⏳
  16826. 329.15 s [post-build-hook]
  16827. 329.51 s [post-build-hook] Pushing /nix/store/83q7ddqxny8pph072bbyn0rcsyvmywr1-really-safe-money-gen-0.0.0.0-doc (288.17 KiB)
  16828. 329.55 s [post-build-hook] Pushing /nix/store/mszdd971wbn8fa5jbcli2vfjbjxs17w3-really-safe-money-gen-0.0.0.0 (1.52 MiB)
  16829. 329.56 s [post-build-hook] Pushing /nix/store/r67y4wiw11z3h1banskqalysd9d07id4-really-safe-money-gen-0.0.0.0-report (538.22 KiB)
  16830. 330.56 s [post-build-hook]
  16831. 330.56 s [post-build-hook] All done.
  16832. 330.58 s [post-build-hook] Uploading to the NixCI staging cache: /nix/store/83q7ddqxny8pph072bbyn0rcsyvmywr1-really-safe-money-gen-0.0.0.0-doc /nix/store/mszdd971wbn8fa5jbcli2vfjbjxs17w3-really-safe-money-gen-0.0.0.0 /nix/store/r67y4wiw11z3h1banskqalysd9d07id4-really-safe-money-gen-0.0.0.0-report
  16833. 330.62 s [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  16834. 330.89 s [post-build-hook] copying 3 paths...
  16835. 330.89 s [post-build-hook] copying path '/nix/store/83q7ddqxny8pph072bbyn0rcsyvmywr1-really-safe-money-gen-0.0.0.0-doc' to 'https://cache.staging.nix-ci.com'...
  16836. 330.89 s [post-build-hook] copying path '/nix/store/r67y4wiw11z3h1banskqalysd9d07id4-really-safe-money-gen-0.0.0.0-report' to 'https://cache.staging.nix-ci.com'...
  16837. 330.98 s [post-build-hook] copying path '/nix/store/mszdd971wbn8fa5jbcli2vfjbjxs17w3-really-safe-money-gen-0.0.0.0' to 'https://cache.staging.nix-ci.com'...
  16838. 331.48 s [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  16839. 331.77 s [post-build-hook] copying 1 paths...
  16840. 331.78 s [post-build-hook] copying path '/nix/store/lxf02vydmg0hcangxzq4dggq7g212i47-really-safe-money-gen-0.0.0.0.drv' to 'https://cache.staging.nix-ci.com'...
  16841. 332.00 s Progress: 5 of 6 built