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=remove-case-and-action-operators&rev=bcd07f26815703a2324799860ff0db824ea194b1#checks.x86_64-linux.mutation-really-safe-money --print-build-logs
  2. 0.09 s warning: ignoring the client-specified setting 'netrc-file', because it is a restricted setting and you are not a trusted user
  3. 0.09 s warning: ignoring the client-specified setting 'post-build-hook', because it is a restricted setting and you are not a trusted user
  4. 0.09 s warning: ignoring untrusted substituter 'https://sydtest.cachix.org', you are not a trusted user.
  5. 0.09 s Run `man nix.conf` for more information on the `substituters` configuration option.
  6. 0.09 s warning: ignoring untrusted substituter 'https://cache.staging.nix-ci.com', you are not a trusted user.
  7. 0.09 s Run `man nix.conf` for more information on the `substituters` configuration option.
  8. 0.09 s warning: ignoring the client-specified setting 'trusted-public-keys', because it is a restricted setting and you are not a trusted user
  9. 0.09 s warning: ignoring untrusted flake configuration setting 'extra-substituters'.
  10. 0.09 s Pass '--accept-flake-config' to trust it
  11. 0.09 s warning: ignoring untrusted flake configuration setting 'extra-trusted-public-keys'.
  12. 0.09 s Pass '--accept-flake-config' to trust it
  13. 0.09 s warning: ignoring the client-specified setting 'netrc-file', because it is a restricted setting and you are not a trusted user
  14. 0.09 s warning: ignoring the client-specified setting 'post-build-hook', because it is a restricted setting and you are not a trusted user
  15. 0.09 s warning: ignoring untrusted substituter 'https://sydtest.cachix.org', you are not a trusted user.
  16. 0.09 s Run `man nix.conf` for more information on the `substituters` configuration option.
  17. 0.09 s warning: ignoring untrusted substituter 'https://cache.staging.nix-ci.com', you are not a trusted user.
  18. 0.09 s Run `man nix.conf` for more information on the `substituters` configuration option.
  19. 0.09 s warning: ignoring the client-specified setting 'trusted-public-keys', because it is a restricted setting and you are not a trusted user
  20. 0.59 s error (ignored): SQLite database '/var/cache/private/nix-ci-worker/eval-cache-v6/cd4609de13e7bea1dfefeba4ac89a59b3e5e6fac340dc6d97ae224e0670538a5.sqlite' is busy
  21. 1.35 s
  22. 1.84 s Waiting for lock on sydtest-mutation-plugin-0.0.0.0-doc
  23. 26.96 s Building really-safe-money
  24. 27.20 s [really-safe-money] Phase: setupCompilerEnvironmentPhase
  25. 27.22 s [really-safe-money] Build with /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3.
  26. 27.45 s [really-safe-money] Phase: unpackPhase
  27. 27.45 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
  28. 27.46 s [really-safe-money] source root is really-safe-money-0.0.0.0
  29. 27.46 s [really-safe-money] setting SOURCE_DATE_EPOCH to timestamp 1778687704 of file "really-safe-money-0.0.0.0/src/Numeric/DecimalLiteral.hs"
  30. 27.47 s [really-safe-money] Phase: patchPhase
  31. 27.48 s [really-safe-money] Phase: compileBuildDriverPhase
  32. 27.48 s [really-safe-money] setupCompileFlags: -package-db=/build/tmp.hHZHGs9oae/setup-package.conf.d -threaded
  33. 27.53 s [really-safe-money] [1 of 2] Compiling Main ( Setup.hs, /build/tmp.hHZHGs9oae/Main.o )
  34. 27.57 s [really-safe-money] [2 of 2] Linking Setup
  35. 28.77 s [really-safe-money] Phase: updateAutotoolsGnuConfigScriptsPhase
  36. 28.78 s [really-safe-money] Phase: configurePhase
  37. 28.79 s [really-safe-money] configureFlags: --verbose --prefix=/nix/store/xa61xikjw2kgpvc3m0cc5r4rikakvs9d-really-safe-money-0.0.0.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --with-gcc=gcc --package-db=/build/tmp.hHZHGs9oae/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
  38. 28.79 s [really-safe-money] Using Parsec parser
  39. 28.79 s [really-safe-money] Configuring really-safe-money-0.0.0.0...
  40. 29.57 s [really-safe-money] Dependency base >=4.7 && <5: using base-4.20.2.0
  41. 29.57 s [really-safe-money] Dependency containers: using containers-0.7
  42. 29.57 s [really-safe-money] Dependency deepseq: using deepseq-1.5.0.0
  43. 29.57 s [really-safe-money] Dependency validity: using validity-0.12.1.0
  44. 29.57 s [really-safe-money] Dependency validity-containers: using validity-containers-0.5.0.5
  45. 29.57 s [really-safe-money] Dependency validity-scientific: using validity-scientific-0.2.0.3
  46. 29.57 s [really-safe-money] Source component graph: component lib
  47. 29.57 s [really-safe-money] Configured component graph:
  48. 29.57 s [really-safe-money] component really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  49. 29.57 s [really-safe-money] include base-4.20.2.0-64da
  50. 29.57 s [really-safe-money] include containers-0.7-504a
  51. 29.57 s [really-safe-money] include deepseq-1.5.0.0-9a2c
  52. 29.57 s [really-safe-money] include validity-0.12.1.0-2vJMqyxn6Ae2B1jlP90HgP
  53. 29.57 s [really-safe-money] include validity-containers-0.5.0.5-JMisIHg6jT0HAhS7h7vTA4
  54. 29.57 s [really-safe-money] include validity-scientific-0.2.0.3-6oQtdkDOQFR80MBRT1UQ1R
  55. 29.57 s [really-safe-money] Linked component graph:
  56. 29.57 s [really-safe-money] unit really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  57. 29.57 s [really-safe-money] include base-4.20.2.0-64da
  58. 29.57 s [really-safe-money] include containers-0.7-504a
  59. 29.57 s [really-safe-money] include deepseq-1.5.0.0-9a2c
  60. 29.57 s [really-safe-money] include validity-0.12.1.0-2vJMqyxn6Ae2B1jlP90HgP
  61. 29.57 s [really-safe-money] include validity-containers-0.5.0.5-JMisIHg6jT0HAhS7h7vTA4
  62. 29.57 s [really-safe-money] include validity-scientific-0.2.0.3-6oQtdkDOQFR80MBRT1UQ1R
  63. 29.57 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
  64. 29.57 s [really-safe-money] Ready component graph:
  65. 29.57 s [really-safe-money] definite really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  66. 29.57 s [really-safe-money] depends base-4.20.2.0-64da
  67. 29.57 s [really-safe-money] depends containers-0.7-504a
  68. 29.57 s [really-safe-money] depends deepseq-1.5.0.0-9a2c
  69. 29.57 s [really-safe-money] depends validity-0.12.1.0-2vJMqyxn6Ae2B1jlP90HgP
  70. 29.57 s [really-safe-money] depends validity-containers-0.5.0.5-JMisIHg6jT0HAhS7h7vTA4
  71. 29.57 s [really-safe-money] depends validity-scientific-0.2.0.3-6oQtdkDOQFR80MBRT1UQ1R
  72. 29.57 s [really-safe-money] Using Cabal-3.12.1.0 compiled by ghc-9.10
  73. 29.57 s [really-safe-money] Using compiler: ghc-9.10.3
  74. 29.57 s [really-safe-money] Using install prefix:
  75. 29.57 s [really-safe-money] /nix/store/xa61xikjw2kgpvc3m0cc5r4rikakvs9d-really-safe-money-0.0.0.0
  76. 29.57 s [really-safe-money] Executables installed in:
  77. 29.57 s [really-safe-money] /nix/store/xa61xikjw2kgpvc3m0cc5r4rikakvs9d-really-safe-money-0.0.0.0/bin
  78. 29.57 s [really-safe-money] Libraries installed in:
  79. 29.57 s [really-safe-money] /nix/store/xa61xikjw2kgpvc3m0cc5r4rikakvs9d-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
  80. 29.57 s [really-safe-money] Dynamic Libraries installed in:
  81. 29.57 s [really-safe-money] /nix/store/xa61xikjw2kgpvc3m0cc5r4rikakvs9d-really-safe-money-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6
  82. 29.57 s [really-safe-money] Private executables installed in:
  83. 29.57 s [really-safe-money] /nix/store/xa61xikjw2kgpvc3m0cc5r4rikakvs9d-really-safe-money-0.0.0.0/libexec/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-0.0.0.0
  84. 29.57 s [really-safe-money] Data files installed in:
  85. 29.57 s [really-safe-money] /nix/store/xa61xikjw2kgpvc3m0cc5r4rikakvs9d-really-safe-money-0.0.0.0/share/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-0.0.0.0
  86. 29.57 s [really-safe-money] Documentation installed in:
  87. 29.57 s [really-safe-money] /nix/store/xa61xikjw2kgpvc3m0cc5r4rikakvs9d-really-safe-money-0.0.0.0/share/doc/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-0.0.0.0
  88. 29.57 s [really-safe-money] Configuration files installed in:
  89. 29.57 s [really-safe-money] /nix/store/xa61xikjw2kgpvc3m0cc5r4rikakvs9d-really-safe-money-0.0.0.0/etc
  90. 29.57 s [really-safe-money] No alex found
  91. 29.57 s [really-safe-money] Using ar found on system at:
  92. 29.57 s [really-safe-money] /nix/store/iz5lckcsg66r223si2gck7csk2hihj0m-binutils-wrapper-2.44/bin/ar
  93. 29.57 s [really-safe-money] No c2hs found
  94. 29.57 s [really-safe-money] No cpphs found
  95. 29.57 s [really-safe-money] No doctest found
  96. 29.57 s [really-safe-money] Using gcc version 14.3.0 given by user at:
  97. 29.57 s [really-safe-money] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/gcc
  98. 29.57 s [really-safe-money] Using ghc version 9.10.3 found on system at:
  99. 29.57 s [really-safe-money] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc
  100. 29.57 s [really-safe-money] Using ghc-pkg version 9.10.3 found on system at:
  101. 29.57 s [really-safe-money] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc-pkg-9.10.3
  102. 29.57 s [really-safe-money] No ghcjs found
  103. 29.57 s [really-safe-money] No ghcjs-pkg found
  104. 29.57 s [really-safe-money] No greencard found
  105. 29.57 s [really-safe-money] Using haddock version 2.31.1 found on system at:
  106. 29.57 s [really-safe-money] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/haddock-ghc-9.10.3
  107. 29.57 s [really-safe-money] No happy found
  108. 29.57 s [really-safe-money] Using haskell-suite found on system at: haskell-suite-dummy-location
  109. 29.57 s [really-safe-money] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location
  110. 29.57 s [really-safe-money] No hmake found
  111. 29.57 s [really-safe-money] Using hpc version 0.69 found on system at:
  112. 29.57 s [really-safe-money] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hpc-ghc-9.10.3
  113. 29.57 s [really-safe-money] Using hsc2hs version 0.68.10 found on system at:
  114. 29.57 s [really-safe-money] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hsc2hs-ghc-9.10.3
  115. 29.57 s [really-safe-money] Using hscolour version 1.25 found on system at:
  116. 29.57 s [really-safe-money] /nix/store/f755skyzf4jvfx3crwq9mmh3x4lsaz8i-hscolour-1.25/bin/HsColour
  117. 29.57 s [really-safe-money] No jhc found
  118. 29.57 s [really-safe-money] Using ld found on system at:
  119. 29.57 s [really-safe-money] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/ld
  120. 29.57 s [really-safe-money] No pkg-config found
  121. 29.57 s [really-safe-money] Using runghc version 9.10.3 found on system at:
  122. 29.57 s [really-safe-money] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/runghc-9.10.3
  123. 29.57 s [really-safe-money] Using strip version 2.44 found on system at:
  124. 29.57 s [really-safe-money] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/strip
  125. 29.57 s [really-safe-money] Using tar found on system at:
  126. 29.57 s [really-safe-money] /nix/store/xl6pd2spjajwcpq09fnmnjv5psqmlmma-gnutar-1.35/bin/tar
  127. 29.57 s [really-safe-money] No uhc found
  128. 29.78 s [really-safe-money] Phase: buildPhase
  129. 29.78 s [really-safe-money] mutation-nix: setting MUTATION_MANIFEST_DIR=/nix/store/nfynk6q38yhj3djq59kjh39ii2l95n4m-really-safe-money-0.0.0.0-manifest
  130. 29.86 s [really-safe-money] Preprocessing library for really-safe-money-0.0.0.0...
  131. 29.86 s [really-safe-money] Building library for really-safe-money-0.0.0.0...
  132. 30.14 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 )
  133. 30.61 s [really-safe-money] mutation: instrumenting Numeric.DecimalLiteral
  134. 30.61 s [really-safe-money] added mutation BoolLit at src/Numeric/DecimalLiteral.hs:396:23-27
  135. 30.61 s [really-safe-money] @@ -393,5 +393,5 @@
  136. 30.61 s [really-safe-money] DecimalLiteral mS m e -> DecimalLiteral (go mS) m e
  137. 30.61 s [really-safe-money] where
  138. 30.61 s [really-safe-money] go = \case
  139. 30.61 s [really-safe-money] - Nothing -> Just True
  140. 30.61 s [really-safe-money] + Nothing -> Just False
  141. 30.61 s [really-safe-money] s -> s
  142. 30.64 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:368:10-39
  143. 30.64 s [really-safe-money] @@ -365,7 +365,7 @@
  144. 30.64 s [really-safe-money] setMinimumDigits wantedDigits dl =
  145. 30.64 s [really-safe-money] let currentDigits :: Word8
  146. 30.64 s [really-safe-money] currentDigits = digits dl
  147. 30.64 s [really-safe-money] - in if wantedDigits <= currentDigits
  148. 30.64 s [really-safe-money] + in if True
  149. 30.64 s [really-safe-money] then dl
  150. 30.64 s [really-safe-money] else increaseDigits (wantedDigits - currentDigits) dl
  151. 30.64 s [really-safe-money] where
  152. 30.64 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:368:10-39
  153. 30.64 s [really-safe-money] @@ -365,7 +365,7 @@
  154. 30.64 s [really-safe-money] setMinimumDigits wantedDigits dl =
  155. 30.64 s [really-safe-money] let currentDigits :: Word8
  156. 30.65 s [really-safe-money] currentDigits = digits dl
  157. 30.65 s [really-safe-money] - in if wantedDigits <= currentDigits
  158. 30.65 s [really-safe-money] + in if False
  159. 30.65 s [really-safe-money] then dl
  160. 30.65 s [really-safe-money] else increaseDigits (wantedDigits - currentDigits) dl
  161. 30.65 s [really-safe-money] where
  162. 30.65 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:368:10-39
  163. 30.65 s [really-safe-money] @@ -365,7 +365,7 @@
  164. 30.65 s [really-safe-money] setMinimumDigits wantedDigits dl =
  165. 30.65 s [really-safe-money] let currentDigits :: Word8
  166. 30.65 s [really-safe-money] currentDigits = digits dl
  167. 30.65 s [really-safe-money] - in if wantedDigits <= currentDigits
  168. 30.65 s [really-safe-money] + in if not (wantedDigits <= currentDigits)
  169. 30.65 s [really-safe-money] then dl
  170. 30.65 s [really-safe-money] else increaseDigits (wantedDigits - currentDigits) dl
  171. 30.65 s [really-safe-money] where
  172. 30.65 s [really-safe-money] added mutation CondFlip at src/Numeric/DecimalLiteral.hs:368:7-62
  173. 30.65 s [really-safe-money] @@ -365,9 +365,9 @@
  174. 30.65 s [really-safe-money] setMinimumDigits wantedDigits dl =
  175. 30.65 s [really-safe-money] let currentDigits :: Word8
  176. 30.65 s [really-safe-money] currentDigits = digits dl
  177. 30.65 s [really-safe-money] - in if wantedDigits <= currentDigits
  178. 30.65 s [really-safe-money] - then dl
  179. 30.65 s [really-safe-money] - else increaseDigits (wantedDigits - currentDigits) dl
  180. 30.65 s [really-safe-money] + in if wantedDigits <= currentDigits
  181. 30.65 s [really-safe-money] + then dl
  182. 30.65 s [really-safe-money] + else increaseDigits (wantedDigits - currentDigits) dl
  183. 30.65 s [really-safe-money] where
  184. 30.65 s [really-safe-money] increaseDigits :: Word8 -> DecimalLiteral -> DecimalLiteral
  185. 30.65 s [really-safe-money] increaseDigits 0 = id
  186. 30.65 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:375:80-82
  187. 30.65 s [really-safe-money] @@ -372,7 +372,7 @@
  188. 30.65 s [really-safe-money] increaseDigits :: Word8 -> DecimalLiteral -> DecimalLiteral
  189. 30.65 s [really-safe-money] increaseDigits 0 = id
  190. 30.65 s [really-safe-money] increaseDigits w = \case
  191. 30.65 s [really-safe-money] - DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 10) (succ e))
  192. 30.65 s [really-safe-money] + DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 0) (succ e))
  193. 30.65 s [really-safe-money]
  194. 30.65 s [really-safe-money] -- | Ensures that a positive literal has no sign
  195. 30.65 s [really-safe-money] --
  196. 30.65 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:375:80-82
  197. 30.65 s [really-safe-money] @@ -372,7 +372,7 @@
  198. 30.65 s [really-safe-money] increaseDigits :: Word8 -> DecimalLiteral -> DecimalLiteral
  199. 30.65 s [really-safe-money] increaseDigits 0 = id
  200. 30.65 s [really-safe-money] increaseDigits w = \case
  201. 30.65 s [really-safe-money] - DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 10) (succ e))
  202. 30.65 s [really-safe-money] + DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 1) (succ e))
  203. 30.65 s [really-safe-money]
  204. 30.65 s [really-safe-money] -- | Ensures that a positive literal has no sign
  205. 30.65 s [really-safe-money] --
  206. 30.65 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:337:21-22
  207. 30.65 s [really-safe-money] @@ -334,7 +334,7 @@
  208. 30.65 s [really-safe-money] pure $ fromIntegral n
  209. 30.65 s [really-safe-money]
  210. 30.65 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  211. 30.65 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  212. 30.65 s [really-safe-money] +numSign a = if a >= 1 then Nothing else Just False
  213. 30.65 s [really-safe-money]
  214. 30.65 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  215. 30.65 s [really-safe-money] signSignum = \case
  216. 30.65 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:337:16-22
  217. 30.65 s [really-safe-money] @@ -334,7 +334,7 @@
  218. 30.65 s [really-safe-money] pure $ fromIntegral n
  219. 30.65 s [really-safe-money]
  220. 30.65 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  221. 30.65 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  222. 30.65 s [really-safe-money] +numSign a = if True then Nothing else Just False
  223. 30.65 s [really-safe-money]
  224. 30.65 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  225. 30.65 s [really-safe-money] signSignum = \case
  226. 30.65 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:337:16-22
  227. 30.65 s [really-safe-money] @@ -334,7 +334,7 @@
  228. 30.65 s [really-safe-money] pure $ fromIntegral n
  229. 30.65 s [really-safe-money]
  230. 30.65 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  231. 30.65 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  232. 30.65 s [really-safe-money] +numSign a = if False then Nothing else Just False
  233. 30.65 s [really-safe-money]
  234. 30.65 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  235. 30.65 s [really-safe-money] signSignum = \case
  236. 30.65 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:337:16-22
  237. 30.65 s [really-safe-money] @@ -334,7 +334,7 @@
  238. 30.65 s [really-safe-money] pure $ fromIntegral n
  239. 30.65 s [really-safe-money]
  240. 30.65 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  241. 30.65 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  242. 30.65 s [really-safe-money] +numSign a = if not (a >= 0) then Nothing else Just False
  243. 30.65 s [really-safe-money]
  244. 30.65 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  245. 30.65 s [really-safe-money] signSignum = \case
  246. 30.65 s [really-safe-money] added mutation BoolLit at src/Numeric/DecimalLiteral.hs:337:46-51
  247. 30.65 s [really-safe-money] @@ -334,7 +334,7 @@
  248. 30.65 s [really-safe-money] pure $ fromIntegral n
  249. 30.65 s [really-safe-money]
  250. 30.65 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  251. 30.65 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  252. 30.65 s [really-safe-money] +numSign a = if a >= 0 then Nothing else Just True
  253. 30.65 s [really-safe-money]
  254. 30.65 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  255. 30.65 s [really-safe-money] signSignum = \case
  256. 30.65 s [really-safe-money] added mutation CondFlip at src/Numeric/DecimalLiteral.hs:337:13-51
  257. 30.65 s [really-safe-money] @@ -334,7 +334,7 @@
  258. 30.65 s [really-safe-money] pure $ fromIntegral n
  259. 30.65 s [really-safe-money]
  260. 30.65 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  261. 30.65 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  262. 30.65 s [really-safe-money] +numSign a = if a >= 0 then Nothing else Just False
  263. 30.65 s [really-safe-money]
  264. 30.65 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  265. 30.65 s [really-safe-money] signSignum = \case
  266. 30.65 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46
  267. 30.65 s [really-safe-money] @@ -329,7 +329,7 @@
  268. 30.65 s [really-safe-money] toInt :: DecimalLiteral -> Maybe Int
  269. 30.65 s [really-safe-money] toInt dl = do
  270. 30.65 s [really-safe-money] n <- toInteger dl
  271. 30.65 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Int)
  272. 30.65 s [really-safe-money] + guard $ True
  273. 30.65 s [really-safe-money] guard $ n >= fromIntegral (minBound :: Int)
  274. 30.65 s [really-safe-money] pure $ fromIntegral n
  275. 30.65 s [really-safe-money]
  276. 30.65 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46
  277. 30.65 s [really-safe-money] @@ -329,7 +329,7 @@
  278. 30.65 s [really-safe-money] toInt :: DecimalLiteral -> Maybe Int
  279. 30.65 s [really-safe-money] toInt dl = do
  280. 30.65 s [really-safe-money] n <- toInteger dl
  281. 30.65 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Int)
  282. 30.65 s [really-safe-money] + guard $ False
  283. 30.65 s [really-safe-money] guard $ n >= fromIntegral (minBound :: Int)
  284. 30.65 s [really-safe-money] pure $ fromIntegral n
  285. 30.65 s [really-safe-money]
  286. 30.65 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:332:11-46
  287. 30.65 s [really-safe-money] @@ -329,7 +329,7 @@
  288. 30.65 s [really-safe-money] toInt :: DecimalLiteral -> Maybe Int
  289. 30.65 s [really-safe-money] toInt dl = do
  290. 30.65 s [really-safe-money] n <- toInteger dl
  291. 30.65 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Int)
  292. 30.65 s [really-safe-money] + guard $ not (n <= fromIntegral (maxBound :: Int))
  293. 30.65 s [really-safe-money] guard $ n >= fromIntegral (minBound :: Int)
  294. 30.65 s [really-safe-money] pure $ fromIntegral n
  295. 30.65 s [really-safe-money]
  296. 30.65 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46
  297. 30.65 s [really-safe-money] @@ -330,7 +330,7 @@
  298. 30.65 s [really-safe-money] toInt dl = do
  299. 30.65 s [really-safe-money] n <- toInteger dl
  300. 30.65 s [really-safe-money] guard $ n <= fromIntegral (maxBound :: Int)
  301. 30.65 s [really-safe-money] - guard $ n >= fromIntegral (minBound :: Int)
  302. 30.65 s [really-safe-money] + guard $ True
  303. 30.65 s [really-safe-money] pure $ fromIntegral n
  304. 30.65 s [really-safe-money]
  305. 30.65 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  306. 30.65 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46
  307. 30.65 s [really-safe-money] @@ -330,7 +330,7 @@
  308. 30.65 s [really-safe-money] toInt dl = do
  309. 30.65 s [really-safe-money] n <- toInteger dl
  310. 30.65 s [really-safe-money] guard $ n <= fromIntegral (maxBound :: Int)
  311. 30.65 s [really-safe-money] - guard $ n >= fromIntegral (minBound :: Int)
  312. 30.65 s [really-safe-money] + guard $ False
  313. 30.65 s [really-safe-money] pure $ fromIntegral n
  314. 30.65 s [really-safe-money]
  315. 30.65 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  316. 30.65 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:333:11-46
  317. 30.65 s [really-safe-money] @@ -330,7 +330,7 @@
  318. 30.65 s [really-safe-money] toInt dl = do
  319. 30.65 s [really-safe-money] n <- toInteger dl
  320. 30.65 s [really-safe-money] guard $ n <= fromIntegral (maxBound :: Int)
  321. 30.65 s [really-safe-money] - guard $ n >= fromIntegral (minBound :: Int)
  322. 30.65 s [really-safe-money] + guard $ not (n >= fromIntegral (minBound :: Int))
  323. 30.65 s [really-safe-money] pure $ fromIntegral n
  324. 30.65 s [really-safe-money]
  325. 30.65 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  326. 30.65 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:315:67-68
  327. 30.65 s [really-safe-money] @@ -312,7 +312,7 @@
  328. 30.65 s [really-safe-money]
  329. 30.65 s [really-safe-money] -- | Construct a 'DecimalLiteral' from an 'Integer'
  330. 30.65 s [really-safe-money] fromInteger :: Integer -> DecimalLiteral
  331. 30.65 s [really-safe-money] -fromInteger n = DecimalLiteral (numSign n) (fromIntegral (abs n)) 0
  332. 30.65 s [really-safe-money] +fromInteger n = DecimalLiteral (numSign n) (fromIntegral (abs n)) 1
  333. 30.65 s [really-safe-money]
  334. 30.65 s [really-safe-money] -- | Turn a 'DecimalLiteral' into an 'Integer'
  335. 30.65 s [really-safe-money] toInteger :: DecimalLiteral -> Maybe Integer
  336. 30.65 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:304:42-43
  337. 30.65 s [really-safe-money] @@ -301,7 +301,7 @@
  338. 30.65 s [really-safe-money]
  339. 30.65 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Natural'
  340. 30.65 s [really-safe-money] fromNatural :: Natural -> DecimalLiteral
  341. 30.65 s [really-safe-money] -fromNatural n = DecimalLiteral Nothing n 0
  342. 30.65 s [really-safe-money] +fromNatural n = DecimalLiteral Nothing n 1
  343. 30.65 s [really-safe-money]
  344. 30.65 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Natural'
  345. 30.65 s [really-safe-money] toNatural :: DecimalLiteral -> Maybe Natural
  346. 30.65 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47
  347. 30.65 s [really-safe-money] @@ -296,7 +296,7 @@
  348. 30.65 s [really-safe-money] toWord :: DecimalLiteral -> Maybe Word
  349. 30.65 s [really-safe-money] toWord dl = do
  350. 30.65 s [really-safe-money] n <- toNatural dl
  351. 30.65 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Word)
  352. 30.65 s [really-safe-money] + guard $ True
  353. 30.65 s [really-safe-money] pure $ fromIntegral n
  354. 30.65 s [really-safe-money]
  355. 30.65 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Natural'
  356. 30.65 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47
  357. 30.65 s [really-safe-money] @@ -296,7 +296,7 @@
  358. 30.65 s [really-safe-money] toWord :: DecimalLiteral -> Maybe Word
  359. 30.65 s [really-safe-money] toWord dl = do
  360. 30.65 s [really-safe-money] n <- toNatural dl
  361. 30.65 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Word)
  362. 30.65 s [really-safe-money] + guard $ False
  363. 30.65 s [really-safe-money] pure $ fromIntegral n
  364. 30.65 s [really-safe-money]
  365. 30.65 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Natural'
  366. 30.65 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:299:11-47
  367. 30.65 s [really-safe-money] @@ -296,7 +296,7 @@
  368. 30.65 s [really-safe-money] toWord :: DecimalLiteral -> Maybe Word
  369. 30.65 s [really-safe-money] toWord dl = do
  370. 30.65 s [really-safe-money] n <- toNatural dl
  371. 30.65 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Word)
  372. 30.65 s [really-safe-money] + guard $ not (n <= fromIntegral (maxBound :: Word))
  373. 30.65 s [really-safe-money] pure $ fromIntegral n
  374. 30.65 s [really-safe-money]
  375. 30.65 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Natural'
  376. 30.65 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  377. 30.65 s [really-safe-money] @@ -286,7 +286,7 @@
  378. 30.65 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  379. 30.65 s [really-safe-money] toRatio (DecimalLiteral mSign m e) = case mSign of
  380. 30.65 s [really-safe-money] Just False -> Nothing
  381. 30.65 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  382. 30.65 s [really-safe-money] + _ -> Just $ fromIntegral m / (0 ^ e)
  383. 30.65 s [really-safe-money]
  384. 30.65 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  385. 30.65 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  386. 30.65 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  387. 30.65 s [really-safe-money] @@ -286,7 +286,7 @@
  388. 30.65 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  389. 30.65 s [really-safe-money] toRatio (DecimalLiteral mSign m e) = case mSign of
  390. 30.65 s [really-safe-money] Just False -> Nothing
  391. 30.65 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  392. 30.65 s [really-safe-money] + _ -> Just $ fromIntegral m / (1 ^ e)
  393. 30.65 s [really-safe-money]
  394. 30.65 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  395. 30.65 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  396. 30.65 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  397. 30.65 s [really-safe-money] @@ -286,7 +286,7 @@
  398. 30.65 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  399. 30.65 s [really-safe-money] toRatio (DecimalLiteral mSign m e) = case mSign of
  400. 30.65 s [really-safe-money] Just False -> Nothing
  401. 30.66 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  402. 30.66 s [really-safe-money] + _ -> Just $ fromIntegral m / (-10 ^ e)
  403. 30.66 s [really-safe-money]
  404. 30.66 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  405. 30.66 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  406. 30.66 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:287:38-40
  407. 30.66 s [really-safe-money] @@ -284,9 +284,9 @@
  408. 30.66 s [really-safe-money] -- >>> toRatio (DecimalLiteral (Just False) 3 1)
  409. 30.66 s [really-safe-money] -- Nothing
  410. 30.66 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  411. 30.66 s [really-safe-money] -toRatio (DecimalLiteral mSign m e) = case mSign of
  412. 30.66 s [really-safe-money] - Just False -> Nothing
  413. 30.66 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  414. 30.66 s [really-safe-money] +toRatio (DecimalLiteral mSign m e) = case mSign of
  415. 30.66 s [really-safe-money] + Just False -> Nothing
  416. 30.66 s [really-safe-money] + _ -> Just $ fromIntegral m / (10 ^ e)
  417. 30.66 s [really-safe-money]
  418. 30.66 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  419. 30.66 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  420. 30.66 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:287:38-40
  421. 30.66 s [really-safe-money] @@ -284,9 +284,9 @@
  422. 30.66 s [really-safe-money] -- >>> toRatio (DecimalLiteral (Just False) 3 1)
  423. 30.66 s [really-safe-money] -- Nothing
  424. 30.66 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  425. 30.66 s [really-safe-money] -toRatio (DecimalLiteral mSign m e) = case mSign of
  426. 30.66 s [really-safe-money] - Just False -> Nothing
  427. 30.66 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  428. 30.66 s [really-safe-money] +toRatio (DecimalLiteral mSign m e) = case mSign of
  429. 30.66 s [really-safe-money] + Just False -> Nothing
  430. 30.66 s [really-safe-money] + _ -> Just $ fromIntegral m / (10 ^ e)
  431. 30.66 s [really-safe-money]
  432. 30.66 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  433. 30.66 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  434. 30.66 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44
  435. 30.66 s [really-safe-money] @@ -233,7 +233,7 @@
  436. 30.66 s [really-safe-money] -- >>> fromRatio (1 % 3)
  437. 30.66 s [really-safe-money] -- Nothing
  438. 30.66 s [really-safe-money] fromRatio :: Ratio Natural -> Maybe DecimalLiteral
  439. 30.66 s [really-safe-money] -fromRatio = fromRationalRepetendLimited 256
  440. 30.66 s [really-safe-money] +fromRatio = fromRationalRepetendLimited 0
  441. 30.66 s [really-safe-money] where
  442. 30.66 s [really-safe-money] fromRationalRepetendLimited ::
  443. 30.66 s [really-safe-money] -- limit
  444. 30.66 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44
  445. 30.66 s [really-safe-money] @@ -233,7 +233,7 @@
  446. 30.66 s [really-safe-money] -- >>> fromRatio (1 % 3)
  447. 30.66 s [really-safe-money] -- Nothing
  448. 30.66 s [really-safe-money] fromRatio :: Ratio Natural -> Maybe DecimalLiteral
  449. 30.66 s [really-safe-money] -fromRatio = fromRationalRepetendLimited 256
  450. 30.66 s [really-safe-money] +fromRatio = fromRationalRepetendLimited 1
  451. 30.66 s [really-safe-money] where
  452. 30.66 s [really-safe-money] fromRationalRepetendLimited ::
  453. 30.66 s [really-safe-money] -- limit
  454. 30.66 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44
  455. 30.66 s [really-safe-money] @@ -233,7 +233,7 @@
  456. 30.66 s [really-safe-money] -- >>> fromRatio (1 % 3)
  457. 30.66 s [really-safe-money] -- Nothing
  458. 30.66 s [really-safe-money] fromRatio :: Ratio Natural -> Maybe DecimalLiteral
  459. 30.66 s [really-safe-money] -fromRatio = fromRationalRepetendLimited 256
  460. 30.66 s [really-safe-money] +fromRatio = fromRationalRepetendLimited -256
  461. 30.66 s [really-safe-money] where
  462. 30.66 s [really-safe-money] fromRationalRepetendLimited ::
  463. 30.66 s [really-safe-money] -- limit
  464. 30.66 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:244:14-15
  465. 30.66 s [really-safe-money] @@ -241,7 +241,7 @@
  466. 30.66 s [really-safe-money] Ratio Natural ->
  467. 30.66 s [really-safe-money] Maybe DecimalLiteral
  468. 30.66 s [really-safe-money] fromRationalRepetendLimited l rational
  469. 30.66 s [really-safe-money] - | d == 0 = Nothing
  470. 30.66 s [really-safe-money] + | d == 1 = Nothing
  471. 30.66 s [really-safe-money] | otherwise = toLiteral Nothing <$> longDiv num
  472. 30.66 s [really-safe-money] where
  473. 30.66 s [really-safe-money] toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e)
  474. 30.66 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:244:9-15
  475. 30.66 s [really-safe-money] @@ -241,7 +241,7 @@
  476. 30.66 s [really-safe-money] Ratio Natural ->
  477. 30.66 s [really-safe-money] Maybe DecimalLiteral
  478. 30.66 s [really-safe-money] fromRationalRepetendLimited l rational
  479. 30.66 s [really-safe-money] - | d == 0 = Nothing
  480. 30.66 s [really-safe-money] + | True = Nothing
  481. 30.66 s [really-safe-money] | otherwise = toLiteral Nothing <$> longDiv num
  482. 30.66 s [really-safe-money] where
  483. 30.66 s [really-safe-money] toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e)
  484. 30.66 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:244:9-15
  485. 30.66 s [really-safe-money] @@ -241,7 +241,7 @@
  486. 30.66 s [really-safe-money] Ratio Natural ->
  487. 30.66 s [really-safe-money] Maybe DecimalLiteral
  488. 30.66 s [really-safe-money] fromRationalRepetendLimited l rational
  489. 30.66 s [really-safe-money] - | d == 0 = Nothing
  490. 30.66 s [really-safe-money] + | not (d == 0) = Nothing
  491. 30.66 s [really-safe-money] | otherwise = toLiteral Nothing <$> longDiv num
  492. 30.66 s [really-safe-money] where
  493. 30.66 s [really-safe-money] toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e)
  494. 30.66 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:264:13-26
  495. 30.66 s [really-safe-money] @@ -261,7 +261,7 @@
  496. 30.66 s [really-safe-money] Just (c, e)
  497. 30.66 s [really-safe-money] longDivWithLimit !c !e ns !n
  498. 30.66 s [really-safe-money] -- If there's a repetend, we can't turn it into a decimal literal
  499. 30.66 s [really-safe-money] - | S.member n ns = Nothing
  500. 30.66 s [really-safe-money] + | True = Nothing
  501. 30.66 s [really-safe-money] -- Over the limit, stop trying
  502. 30.66 s [really-safe-money] | e >= l = Nothing
  503. 30.66 s [really-safe-money] | n < d =
  504. 30.66 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:264:13-26
  505. 30.66 s [really-safe-money] @@ -261,7 +261,7 @@
  506. 30.66 s [really-safe-money] Just (c, e)
  507. 30.66 s [really-safe-money] longDivWithLimit !c !e ns !n
  508. 30.66 s [really-safe-money] -- If there's a repetend, we can't turn it into a decimal literal
  509. 30.66 s [really-safe-money] - | S.member n ns = Nothing
  510. 30.66 s [really-safe-money] + | not (S.member n ns) = Nothing
  511. 30.66 s [really-safe-money] -- Over the limit, stop trying
  512. 30.66 s [really-safe-money] | e >= l = Nothing
  513. 30.66 s [really-safe-money] | n < d =
  514. 30.66 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:266:13-19
  515. 30.66 s [really-safe-money] @@ -263,7 +263,7 @@
  516. 30.66 s [really-safe-money] -- If there's a repetend, we can't turn it into a decimal literal
  517. 30.66 s [really-safe-money] | S.member n ns = Nothing
  518. 30.66 s [really-safe-money] -- Over the limit, stop trying
  519. 30.66 s [really-safe-money] - | e >= l = Nothing
  520. 30.66 s [really-safe-money] + | True = Nothing
  521. 30.66 s [really-safe-money] | n < d =
  522. 30.66 s [really-safe-money] let !ns' = S.insert n ns
  523. 30.66 s [really-safe-money] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  524. 30.66 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:266:13-19
  525. 30.66 s [really-safe-money] @@ -263,7 +263,7 @@
  526. 30.66 s [really-safe-money] -- If there's a repetend, we can't turn it into a decimal literal
  527. 30.66 s [really-safe-money] | S.member n ns = Nothing
  528. 30.66 s [really-safe-money] -- Over the limit, stop trying
  529. 30.66 s [really-safe-money] - | e >= l = Nothing
  530. 30.66 s [really-safe-money] + | not (e >= l) = Nothing
  531. 30.66 s [really-safe-money] | n < d =
  532. 30.66 s [really-safe-money] let !ns' = S.insert n ns
  533. 30.66 s [really-safe-money] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  534. 30.66 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:267:13-18
  535. 30.66 s [really-safe-money] @@ -264,7 +264,7 @@
  536. 30.66 s [really-safe-money] | S.member n ns = Nothing
  537. 30.66 s [really-safe-money] -- Over the limit, stop trying
  538. 30.66 s [really-safe-money] | e >= l = Nothing
  539. 30.66 s [really-safe-money] - | n < d =
  540. 30.66 s [really-safe-money] + | True =
  541. 30.66 s [really-safe-money] let !ns' = S.insert n ns
  542. 30.66 s [really-safe-money] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  543. 30.66 s [really-safe-money] | otherwise =
  544. 30.66 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:267:13-18
  545. 30.66 s [really-safe-money] @@ -264,7 +264,7 @@
  546. 30.66 s [really-safe-money] | S.member n ns = Nothing
  547. 30.66 s [really-safe-money] -- Over the limit, stop trying
  548. 30.66 s [really-safe-money] | e >= l = Nothing
  549. 30.66 s [really-safe-money] - | n < d =
  550. 30.66 s [really-safe-money] + | not (n < d) =
  551. 30.66 s [really-safe-money] let !ns' = S.insert n ns
  552. 30.66 s [really-safe-money] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  553. 30.66 s [really-safe-money] | otherwise =
  554. 30.66 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:269:41-43
  555. 30.66 s [really-safe-money] @@ -266,7 +266,7 @@
  556. 30.66 s [really-safe-money] | e >= l = Nothing
  557. 30.66 s [really-safe-money] | n < d =
  558. 30.66 s [really-safe-money] let !ns' = S.insert n ns
  559. 30.66 s [really-safe-money] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  560. 30.66 s [really-safe-money] + in longDivWithLimit (c * 0) (succ e) ns' (n * 10)
  561. 30.66 s [really-safe-money] | otherwise =
  562. 30.66 s [really-safe-money] let (q, r') = n `quotRem` d
  563. 30.66 s [really-safe-money] in longDivWithLimit (c + q) e ns r'
  564. 30.66 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:269:41-43
  565. 30.66 s [really-safe-money] @@ -266,7 +266,7 @@
  566. 30.66 s [really-safe-money] | e >= l = Nothing
  567. 30.66 s [really-safe-money] | n < d =
  568. 30.66 s [really-safe-money] let !ns' = S.insert n ns
  569. 30.66 s [really-safe-money] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  570. 30.66 s [really-safe-money] + in longDivWithLimit (c * 1) (succ e) ns' (n * 10)
  571. 30.66 s [really-safe-money] | otherwise =
  572. 30.66 s [really-safe-money] let (q, r') = n `quotRem` d
  573. 30.66 s [really-safe-money] in longDivWithLimit (c + q) e ns r'
  574. 30.66 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:269:63-65
  575. 30.66 s [really-safe-money] @@ -266,7 +266,7 @@
  576. 30.66 s [really-safe-money] | e >= l = Nothing
  577. 30.66 s [really-safe-money] | n < d =
  578. 30.66 s [really-safe-money] let !ns' = S.insert n ns
  579. 30.66 s [really-safe-money] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  580. 30.67 s [really-safe-money] + in longDivWithLimit (c * 10) (succ e) ns' (n * 0)
  581. 30.67 s [really-safe-money] | otherwise =
  582. 30.67 s [really-safe-money] let (q, r') = n `quotRem` d
  583. 30.67 s [really-safe-money] in longDivWithLimit (c + q) e ns r'
  584. 30.67 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:269:63-65
  585. 30.67 s [really-safe-money] @@ -266,7 +266,7 @@
  586. 30.67 s [really-safe-money] | e >= l = Nothing
  587. 30.67 s [really-safe-money] | n < d =
  588. 30.67 s [really-safe-money] let !ns' = S.insert n ns
  589. 30.67 s [really-safe-money] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  590. 30.67 s [really-safe-money] + in longDivWithLimit (c * 10) (succ e) ns' (n * 1)
  591. 30.67 s [really-safe-money] | otherwise =
  592. 30.67 s [really-safe-money] let (q, r') = n `quotRem` d
  593. 30.67 s [really-safe-money] in longDivWithLimit (c + q) e ns r'
  594. 30.67 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:252:36-37
  595. 30.67 s [really-safe-money] @@ -249,7 +249,7 @@
  596. 30.67 s [really-safe-money] num = numerator rational
  597. 30.67 s [really-safe-money]
  598. 30.67 s [really-safe-money] longDiv :: Natural -> Maybe (Natural, Int)
  599. 30.67 s [really-safe-money] - longDiv = longDivWithLimit 0 0 S.empty
  600. 30.67 s [really-safe-money] + longDiv = longDivWithLimit 1 0 S.empty
  601. 30.67 s [really-safe-money]
  602. 30.67 s [really-safe-money] longDivWithLimit ::
  603. 30.67 s [really-safe-money] Natural ->
  604. 30.67 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:252:38-39
  605. 30.67 s [really-safe-money] @@ -249,7 +249,7 @@
  606. 30.67 s [really-safe-money] num = numerator rational
  607. 30.67 s [really-safe-money]
  608. 30.67 s [really-safe-money] longDiv :: Natural -> Maybe (Natural, Int)
  609. 30.67 s [really-safe-money] - longDiv = longDivWithLimit 0 0 S.empty
  610. 30.67 s [really-safe-money] + longDiv = longDivWithLimit 0 1 S.empty
  611. 30.67 s [really-safe-money]
  612. 30.67 s [really-safe-money] longDivWithLimit ::
  613. 30.67 s [really-safe-money] Natural ->
  614. 30.67 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:223:39-41
  615. 30.67 s [really-safe-money] @@ -220,7 +220,7 @@
  616. 30.67 s [really-safe-money] -- (-3) % 10
  617. 30.67 s [really-safe-money] toRational :: DecimalLiteral -> Rational
  618. 30.67 s [really-safe-money] toRational (DecimalLiteral mSign m e) =
  619. 30.67 s [really-safe-money] - signSignum mSign (fromIntegral m / (10 ^ e))
  620. 30.67 s [really-safe-money] + signSignum mSign (fromIntegral m / (0 ^ e))
  621. 30.67 s [really-safe-money]
  622. 30.67 s [really-safe-money] -- | Parse a 'DecimalLiteral' from a 'Ratio Natural'
  623. 30.67 s [really-safe-money] --
  624. 30.67 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:223:39-41
  625. 30.67 s [really-safe-money] @@ -220,7 +220,7 @@
  626. 30.67 s [really-safe-money] -- (-3) % 10
  627. 30.67 s [really-safe-money] toRational :: DecimalLiteral -> Rational
  628. 30.67 s [really-safe-money] toRational (DecimalLiteral mSign m e) =
  629. 30.67 s [really-safe-money] - signSignum mSign (fromIntegral m / (10 ^ e))
  630. 30.67 s [really-safe-money] + signSignum mSign (fromIntegral m / (1 ^ e))
  631. 30.67 s [really-safe-money]
  632. 30.67 s [really-safe-money] -- | Parse a 'DecimalLiteral' from a 'Ratio Natural'
  633. 30.67 s [really-safe-money] --
  634. 30.67 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:223:39-41
  635. 30.67 s [really-safe-money] @@ -220,7 +220,7 @@
  636. 30.67 s [really-safe-money] -- (-3) % 10
  637. 30.67 s [really-safe-money] toRational :: DecimalLiteral -> Rational
  638. 30.67 s [really-safe-money] toRational (DecimalLiteral mSign m e) =
  639. 30.67 s [really-safe-money] - signSignum mSign (fromIntegral m / (10 ^ e))
  640. 30.67 s [really-safe-money] + signSignum mSign (fromIntegral m / (-10 ^ e))
  641. 30.67 s [really-safe-money]
  642. 30.67 s [really-safe-money] -- | Parse a 'DecimalLiteral' from a 'Ratio Natural'
  643. 30.67 s [really-safe-money] --
  644. 30.67 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:208:9-10
  645. 30.67 s [really-safe-money] @@ -205,7 +205,7 @@
  646. 30.67 s [really-safe-money] -- Nothing
  647. 30.67 s [really-safe-money] fromRational :: Rational -> Maybe DecimalLiteral
  648. 30.67 s [really-safe-money] fromRational (n :% d)
  649. 30.67 s [really-safe-money] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  650. 30.67 s [really-safe-money] + | n < 1 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  651. 30.67 s [really-safe-money] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  652. 30.67 s [really-safe-money]
  653. 30.67 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Rational'
  654. 30.67 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:208:5-10
  655. 30.67 s [really-safe-money] @@ -205,7 +205,7 @@
  656. 30.67 s [really-safe-money] -- Nothing
  657. 30.67 s [really-safe-money] fromRational :: Rational -> Maybe DecimalLiteral
  658. 30.67 s [really-safe-money] fromRational (n :% d)
  659. 30.67 s [really-safe-money] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  660. 30.67 s [really-safe-money] + | True = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  661. 30.67 s [really-safe-money] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  662. 30.67 s [really-safe-money]
  663. 30.67 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Rational'
  664. 30.67 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:208:5-10
  665. 30.67 s [really-safe-money] @@ -205,7 +205,7 @@
  666. 30.67 s [really-safe-money] -- Nothing
  667. 30.67 s [really-safe-money] fromRational :: Rational -> Maybe DecimalLiteral
  668. 30.67 s [really-safe-money] fromRational (n :% d)
  669. 30.67 s [really-safe-money] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  670. 30.67 s [really-safe-money] + | not (n < 0) = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  671. 30.67 s [really-safe-money] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  672. 30.67 s [really-safe-money]
  673. 30.67 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Rational'
  674. 30.67 s [really-safe-money] added mutation BoolLit at src/Numeric/DecimalLiteral.hs:208:62-67
  675. 30.67 s [really-safe-money] @@ -205,7 +205,7 @@
  676. 30.67 s [really-safe-money] -- Nothing
  677. 30.67 s [really-safe-money] fromRational :: Rational -> Maybe DecimalLiteral
  678. 30.67 s [really-safe-money] fromRational (n :% d)
  679. 30.67 s [really-safe-money] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  680. 30.67 s [really-safe-money] + | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just True) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  681. 30.67 s [really-safe-money] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  682. 30.67 s [really-safe-money]
  683. 30.67 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Rational'
  684. 30.67 s [really-safe-money] added mutation ListLit at src/Numeric/DecimalLiteral.hs:186:15-25
  685. 30.67 s [really-safe-money] @@ -183,7 +183,7 @@
  686. 30.67 s [really-safe-money]
  687. 30.67 s [really-safe-money] goFrac m e = reverse (go e (reverse (show m)))
  688. 30.67 s [really-safe-money] go :: Word8 -> String -> String
  689. 30.67 s [really-safe-money] - go 0 [] = ['.', '0']
  690. 30.67 s [really-safe-money] + go 0 [] = []
  691. 30.67 s [really-safe-money] go 0 s = '.' : s
  692. 30.67 s [really-safe-money] go e [] = '0' : go (pred e) []
  693. 30.67 s [really-safe-money] go e (c : cs) = c : go (pred e) cs
  694. 30.67 s [really-safe-money] added mutation ListLit at src/Numeric/DecimalLiteral.hs:186:15-25
  695. 30.67 s [really-safe-money] @@ -183,7 +183,7 @@
  696. 30.67 s [really-safe-money]
  697. 30.67 s [really-safe-money] goFrac m e = reverse (go e (reverse (show m)))
  698. 30.67 s [really-safe-money] go :: Word8 -> String -> String
  699. 30.67 s [really-safe-money] - go 0 [] = ['.', '0']
  700. 30.67 s [really-safe-money] + go 0 [] = ['.', '0']
  701. 30.67 s [really-safe-money] go 0 s = '.' : s
  702. 30.67 s [really-safe-money] go e [] = '0' : go (pred e) []
  703. 30.67 s [really-safe-money] go e (c : cs) = c : go (pred e) cs
  704. 30.67 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30
  705. 30.67 s [really-safe-money] @@ -142,7 +142,7 @@
  706. 30.67 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  707. 30.67 s [really-safe-money] parseDigits f z = do
  708. 30.67 s [really-safe-money] c <- ReadP.satisfy Char.isDigit
  709. 30.67 s [really-safe-money] - let digit = Char.ord c - 48
  710. 30.67 s [really-safe-money] + let digit = Char.ord c - 0
  711. 30.67 s [really-safe-money] case f z digit of
  712. 30.67 s [really-safe-money] Nothing -> fail "Failed to step the first digit"
  713. 30.67 s [really-safe-money] Just a -> ReadP.look >>= go a
  714. 30.67 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30
  715. 30.67 s [really-safe-money] @@ -142,7 +142,7 @@
  716. 30.67 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  717. 30.67 s [really-safe-money] parseDigits f z = do
  718. 30.67 s [really-safe-money] c <- ReadP.satisfy Char.isDigit
  719. 30.67 s [really-safe-money] - let digit = Char.ord c - 48
  720. 30.67 s [really-safe-money] + let digit = Char.ord c - 1
  721. 30.67 s [really-safe-money] case f z digit of
  722. 30.67 s [really-safe-money] Nothing -> fail "Failed to step the first digit"
  723. 30.67 s [really-safe-money] Just a -> ReadP.look >>= go a
  724. 30.67 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30
  725. 30.67 s [really-safe-money] @@ -142,7 +142,7 @@
  726. 30.67 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  727. 30.67 s [really-safe-money] parseDigits f z = do
  728. 30.67 s [really-safe-money] c <- ReadP.satisfy Char.isDigit
  729. 30.67 s [really-safe-money] - let digit = Char.ord c - 48
  730. 30.67 s [really-safe-money] + let digit = Char.ord c - -48
  731. 30.67 s [really-safe-money] case f z digit of
  732. 30.67 s [really-safe-money] Nothing -> fail "Failed to step the first digit"
  733. 30.67 s [really-safe-money] Just a -> ReadP.look >>= go a
  734. 30.67 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:152:9-23
  735. 30.67 s [really-safe-money] @@ -149,7 +149,7 @@
  736. 30.67 s [really-safe-money] where
  737. 30.67 s [really-safe-money] go !a [] = return a
  738. 30.67 s [really-safe-money] go !a (c : cs)
  739. 30.67 s [really-safe-money] - | Char.isDigit c = do
  740. 30.67 s [really-safe-money] + | True = do
  741. 30.67 s [really-safe-money] _ <- ReadP.get
  742. 30.67 s [really-safe-money] let digit = Char.ord c - 48
  743. 30.67 s [really-safe-money] case f a digit of
  744. 30.67 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:152:9-23
  745. 30.67 s [really-safe-money] @@ -149,7 +149,7 @@
  746. 30.67 s [really-safe-money] where
  747. 30.67 s [really-safe-money] go !a [] = return a
  748. 30.67 s [really-safe-money] go !a (c : cs)
  749. 30.67 s [really-safe-money] - | Char.isDigit c = do
  750. 30.67 s [really-safe-money] + | not (Char.isDigit c) = do
  751. 30.67 s [really-safe-money] _ <- ReadP.get
  752. 30.67 s [really-safe-money] let digit = Char.ord c - 48
  753. 30.67 s [really-safe-money] case f a digit of
  754. 30.67 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:154:36-38
  755. 30.67 s [really-safe-money] @@ -151,7 +151,7 @@
  756. 30.67 s [really-safe-money] go !a (c : cs)
  757. 30.67 s [really-safe-money] | Char.isDigit c = do
  758. 30.67 s [really-safe-money] _ <- ReadP.get
  759. 30.67 s [really-safe-money] - let digit = Char.ord c - 48
  760. 30.67 s [really-safe-money] + let digit = Char.ord c - 0
  761. 30.67 s [really-safe-money] case f a digit of
  762. 30.67 s [really-safe-money] Nothing -> fail "Failed to step the digit"
  763. 30.67 s [really-safe-money] Just a' -> go a' cs
  764. 30.67 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:154:36-38
  765. 30.67 s [really-safe-money] @@ -151,7 +151,7 @@
  766. 30.67 s [really-safe-money] go !a (c : cs)
  767. 30.67 s [really-safe-money] | Char.isDigit c = do
  768. 30.67 s [really-safe-money] _ <- ReadP.get
  769. 30.67 s [really-safe-money] - let digit = Char.ord c - 48
  770. 30.67 s [really-safe-money] + let digit = Char.ord c - 1
  771. 30.67 s [really-safe-money] case f a digit of
  772. 30.67 s [really-safe-money] Nothing -> fail "Failed to step the digit"
  773. 30.67 s [really-safe-money] Just a' -> go a' cs
  774. 30.67 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:154:36-38
  775. 30.67 s [really-safe-money] @@ -151,7 +151,7 @@
  776. 30.67 s [really-safe-money] go !a (c : cs)
  777. 30.67 s [really-safe-money] | Char.isDigit c = do
  778. 30.67 s [really-safe-money] _ <- ReadP.get
  779. 30.67 s [really-safe-money] - let digit = Char.ord c - 48
  780. 30.67 s [really-safe-money] + let digit = Char.ord c - -48
  781. 30.67 s [really-safe-money] case f a digit of
  782. 30.67 s [really-safe-money] Nothing -> fail "Failed to step the digit"
  783. 30.67 s [really-safe-money] Just a' -> go a' cs
  784. 30.67 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:139:27-29
  785. 30.67 s [really-safe-money] @@ -136,7 +136,7 @@
  786. 30.68 s [really-safe-money] stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  787. 30.68 s [really-safe-money]
  788. 30.68 s [really-safe-money] step :: Natural -> Int -> Maybe Natural
  789. 30.68 s [really-safe-money] -step a digit = Just $ a * 10 + fromIntegral digit
  790. 30.68 s [really-safe-money] +step a digit = Just $ a * 0 + fromIntegral digit
  791. 30.68 s [really-safe-money] {-# INLINE step #-}
  792. 30.68 s [really-safe-money]
  793. 30.68 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  794. 30.68 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:139:27-29
  795. 30.68 s [really-safe-money] @@ -136,7 +136,7 @@
  796. 30.68 s [really-safe-money] stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  797. 30.68 s [really-safe-money]
  798. 30.68 s [really-safe-money] step :: Natural -> Int -> Maybe Natural
  799. 30.68 s [really-safe-money] -step a digit = Just $ a * 10 + fromIntegral digit
  800. 30.68 s [really-safe-money] +step a digit = Just $ a * 1 + fromIntegral digit
  801. 30.68 s [really-safe-money] {-# INLINE step #-}
  802. 30.68 s [really-safe-money]
  803. 30.68 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  804. 30.68 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:136:39-41
  805. 30.68 s [really-safe-money] @@ -133,7 +133,7 @@
  806. 30.68 s [really-safe-money]
  807. 30.68 s [really-safe-money] stepFraction :: (Natural, Word8) -> Int -> Maybe (Natural, Word8)
  808. 30.68 s [really-safe-money] stepFraction (_, 255) _ = Nothing
  809. 30.68 s [really-safe-money] -stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  810. 30.68 s [really-safe-money] +stepFraction (m, e) digit = Just (m * 0 + fromIntegral digit, succ e)
  811. 30.68 s [really-safe-money]
  812. 30.68 s [really-safe-money] step :: Natural -> Int -> Maybe Natural
  813. 30.68 s [really-safe-money] step a digit = Just $ a * 10 + fromIntegral digit
  814. 30.68 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:136:39-41
  815. 30.68 s [really-safe-money] @@ -133,7 +133,7 @@
  816. 30.68 s [really-safe-money]
  817. 30.68 s [really-safe-money] stepFraction :: (Natural, Word8) -> Int -> Maybe (Natural, Word8)
  818. 30.68 s [really-safe-money] stepFraction (_, 255) _ = Nothing
  819. 30.68 s [really-safe-money] -stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  820. 30.68 s [really-safe-money] +stepFraction (m, e) digit = Just (m * 1 + fromIntegral digit, succ e)
  821. 30.68 s [really-safe-money]
  822. 30.68 s [really-safe-money] step :: Natural -> Int -> Maybe Natural
  823. 30.68 s [really-safe-money] step a digit = Just $ a * 10 + fromIntegral digit
  824. 30.68 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-30
  825. 30.68 s [really-safe-money] @@ -116,7 +116,7 @@
  826. 30.68 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  827. 30.68 s [really-safe-money] decimalLiteralP = do
  828. 30.68 s [really-safe-money] let isSignChar :: Char -> Bool
  829. 30.68 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  830. 30.68 s [really-safe-money] + isSignChar c = True || c == '+'
  831. 30.68 s [really-safe-money]
  832. 30.68 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  833. 30.68 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  834. 30.68 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-30
  835. 30.68 s [really-safe-money] @@ -116,7 +116,7 @@
  836. 30.68 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  837. 30.68 s [really-safe-money] decimalLiteralP = do
  838. 30.68 s [really-safe-money] let isSignChar :: Char -> Bool
  839. 30.68 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  840. 30.68 s [really-safe-money] + isSignChar c = False || c == '+'
  841. 30.68 s [really-safe-money]
  842. 30.68 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  843. 30.68 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  844. 30.68 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:119:22-30
  845. 30.68 s [really-safe-money] @@ -116,7 +116,7 @@
  846. 30.68 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  847. 30.68 s [really-safe-money] decimalLiteralP = do
  848. 30.68 s [really-safe-money] let isSignChar :: Char -> Bool
  849. 30.68 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  850. 30.68 s [really-safe-money] + isSignChar c = not (c == '-') || c == '+'
  851. 30.68 s [really-safe-money]
  852. 30.68 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  853. 30.68 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  854. 30.68 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:34-42
  855. 30.68 s [really-safe-money] @@ -116,7 +116,7 @@
  856. 30.68 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  857. 30.68 s [really-safe-money] decimalLiteralP = do
  858. 30.68 s [really-safe-money] let isSignChar :: Char -> Bool
  859. 30.68 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  860. 30.68 s [really-safe-money] + isSignChar c = c == '-' || True
  861. 30.68 s [really-safe-money]
  862. 30.68 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  863. 30.68 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  864. 30.68 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:34-42
  865. 30.68 s [really-safe-money] @@ -116,7 +116,7 @@
  866. 30.68 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  867. 30.68 s [really-safe-money] decimalLiteralP = do
  868. 30.68 s [really-safe-money] let isSignChar :: Char -> Bool
  869. 30.68 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  870. 30.68 s [really-safe-money] + isSignChar c = c == '-' || False
  871. 30.68 s [really-safe-money]
  872. 30.68 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  873. 30.68 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  874. 30.68 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:119:34-42
  875. 30.68 s [really-safe-money] @@ -116,7 +116,7 @@
  876. 30.68 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  877. 30.68 s [really-safe-money] decimalLiteralP = do
  878. 30.68 s [really-safe-money] let isSignChar :: Char -> Bool
  879. 30.68 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  880. 30.68 s [really-safe-money] + isSignChar c = c == '-' || not (c == '+')
  881. 30.68 s [really-safe-money]
  882. 30.68 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  883. 30.68 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  884. 30.68 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-42
  885. 30.68 s [really-safe-money] @@ -116,7 +116,7 @@
  886. 30.68 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  887. 30.68 s [really-safe-money] decimalLiteralP = do
  888. 30.68 s [really-safe-money] let isSignChar :: Char -> Bool
  889. 30.68 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  890. 30.68 s [really-safe-money] + isSignChar c = True
  891. 30.68 s [really-safe-money]
  892. 30.68 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  893. 30.68 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  894. 30.68 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-42
  895. 30.68 s [really-safe-money] @@ -116,7 +116,7 @@
  896. 30.68 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  897. 30.68 s [really-safe-money] decimalLiteralP = do
  898. 30.68 s [really-safe-money] let isSignChar :: Char -> Bool
  899. 30.68 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  900. 30.68 s [really-safe-money] + isSignChar c = False
  901. 30.68 s [really-safe-money]
  902. 30.68 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  903. 30.68 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  904. 30.68 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:119:22-42
  905. 30.68 s [really-safe-money] @@ -116,7 +116,7 @@
  906. 30.68 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  907. 30.68 s [really-safe-money] decimalLiteralP = do
  908. 30.68 s [really-safe-money] let isSignChar :: Char -> Bool
  909. 30.68 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  910. 30.68 s [really-safe-money] + isSignChar c = not (c == '-' || c == '+')
  911. 30.68 s [really-safe-money]
  912. 30.68 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  913. 30.68 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  914. 30.68 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:123:19-34
  915. 30.68 s [really-safe-money] @@ -120,7 +120,7 @@
  916. 30.68 s [really-safe-money]
  917. 30.68 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  918. 30.68 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  919. 30.68 s [really-safe-money] - pure $ Just $ signChar == '+'
  920. 30.68 s [really-safe-money] + pure $ Just $ True
  921. 30.68 s [really-safe-money]
  922. 30.68 s [really-safe-money] units <- parseDigits step 0
  923. 30.68 s [really-safe-money]
  924. 30.68 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:123:19-34
  925. 30.68 s [really-safe-money] @@ -120,7 +120,7 @@
  926. 30.68 s [really-safe-money]
  927. 30.68 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  928. 30.68 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  929. 30.68 s [really-safe-money] - pure $ Just $ signChar == '+'
  930. 30.68 s [really-safe-money] + pure $ Just $ False
  931. 30.68 s [really-safe-money]
  932. 30.68 s [really-safe-money] units <- parseDigits step 0
  933. 30.68 s [really-safe-money]
  934. 30.68 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:123:19-34
  935. 30.68 s [really-safe-money] @@ -120,7 +120,7 @@
  936. 30.68 s [really-safe-money]
  937. 30.68 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  938. 30.68 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  939. 30.68 s [really-safe-money] - pure $ Just $ signChar == '+'
  940. 30.68 s [really-safe-money] + pure $ Just $ not (signChar == '+')
  941. 30.68 s [really-safe-money]
  942. 30.68 s [really-safe-money] units <- parseDigits step 0
  943. 30.68 s [really-safe-money]
  944. 30.68 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:125:29-30
  945. 30.68 s [really-safe-money] @@ -122,7 +122,7 @@
  946. 30.68 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  947. 30.68 s [really-safe-money] pure $ Just $ signChar == '+'
  948. 30.68 s [really-safe-money]
  949. 30.68 s [really-safe-money] - units <- parseDigits step 0
  950. 30.68 s [really-safe-money] + units <- parseDigits step 1
  951. 30.68 s [really-safe-money]
  952. 30.68 s [really-safe-money] ReadP.option (DecimalLiteral mSign units 0) $ do
  953. 30.68 s [really-safe-money] _ <- ReadP.satisfy (== '.')
  954. 30.68 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:127:44-45
  955. 30.68 s [really-safe-money] @@ -124,7 +124,7 @@
  956. 30.68 s [really-safe-money]
  957. 30.68 s [really-safe-money] units <- parseDigits step 0
  958. 30.68 s [really-safe-money]
  959. 30.68 s [really-safe-money] - ReadP.option (DecimalLiteral mSign units 0) $ do
  960. 30.68 s [really-safe-money] + ReadP.option (DecimalLiteral mSign units 1) $ do
  961. 30.68 s [really-safe-money] _ <- ReadP.satisfy (== '.')
  962. 30.68 s [really-safe-money]
  963. 30.68 s [really-safe-money] (m, e) <- parseDigits stepFraction (units, 0)
  964. 30.68 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:130:48-49
  965. 30.68 s [really-safe-money] @@ -127,7 +127,7 @@
  966. 30.68 s [really-safe-money] ReadP.option (DecimalLiteral mSign units 0) $ do
  967. 30.68 s [really-safe-money] _ <- ReadP.satisfy (== '.')
  968. 30.68 s [really-safe-money]
  969. 30.68 s [really-safe-money] - (m, e) <- parseDigits stepFraction (units, 0)
  970. 30.68 s [really-safe-money] + (m, e) <- parseDigits stepFraction (units, 1)
  971. 30.68 s [really-safe-money]
  972. 30.68 s [really-safe-money] pure $ DecimalLiteral mSign m e
  973. 30.68 s [really-safe-money]
  974. 30.68 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:112:17-21
  975. 30.68 s [really-safe-money] @@ -109,9 +109,9 @@
  976. 30.68 s [really-safe-money]
  977. 30.68 s [really-safe-money] -- | Like 'fromString' but in a 'MonadFail'
  978. 30.68 s [really-safe-money] fromStringM :: (MonadFail m) => String -> m DecimalLiteral
  979. 30.68 s [really-safe-money] -fromStringM s = case Numeric.DecimalLiteral.fromString s of
  980. 30.68 s [really-safe-money] - Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  981. 30.68 s [really-safe-money] - Just dl -> pure dl
  982. 30.68 s [really-safe-money] +fromStringM s = case Numeric.DecimalLiteral.fromString s of
  983. 30.68 s [really-safe-money] + Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  984. 30.68 s [really-safe-money] + Just dl -> pure dl
  985. 30.68 s [really-safe-money]
  986. 30.68 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  987. 30.68 s [really-safe-money] decimalLiteralP = do
  988. 30.68 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:112:17-21
  989. 30.68 s [really-safe-money] @@ -109,9 +109,9 @@
  990. 30.68 s [really-safe-money]
  991. 30.68 s [really-safe-money] -- | Like 'fromString' but in a 'MonadFail'
  992. 30.68 s [really-safe-money] fromStringM :: (MonadFail m) => String -> m DecimalLiteral
  993. 30.68 s [really-safe-money] -fromStringM s = case Numeric.DecimalLiteral.fromString s of
  994. 30.68 s [really-safe-money] - Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  995. 30.68 s [really-safe-money] - Just dl -> pure dl
  996. 30.68 s [really-safe-money] +fromStringM s = case Numeric.DecimalLiteral.fromString s of
  997. 30.68 s [really-safe-money] + Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  998. 30.68 s [really-safe-money] + Just dl -> pure dl
  999. 30.68 s [really-safe-money]
  1000. 30.68 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  1001. 30.68 s [really-safe-money] decimalLiteralP = do
  1002. 30.68 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:86:18-18
  1003. 30.68 s [really-safe-money] @@ -83,9 +83,9 @@
  1004. 30.68 s [really-safe-money] instance NFData DecimalLiteral
  1005. 30.68 s [really-safe-money]
  1006. 30.68 s [really-safe-money] instance IsString DecimalLiteral where
  1007. 30.68 s [really-safe-money] - fromString s = case Numeric.DecimalLiteral.fromString s of
  1008. 30.68 s [really-safe-money] - Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  1009. 30.68 s [really-safe-money] - Just dl -> dl
  1010. 30.68 s [really-safe-money] + fromString s = case Numeric.DecimalLiteral.fromString s of
  1011. 30.68 s [really-safe-money] + Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  1012. 30.68 s [really-safe-money] + Just dl -> dl
  1013. 30.68 s [really-safe-money]
  1014. 30.68 s [really-safe-money] -- | Parse a decimal literal from a string
  1015. 30.68 s [really-safe-money] --
  1016. 30.68 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:86:18-18
  1017. 30.68 s [really-safe-money] @@ -83,9 +83,9 @@
  1018. 30.68 s [really-safe-money] instance NFData DecimalLiteral
  1019. 30.68 s [really-safe-money]
  1020. 30.68 s [really-safe-money] instance IsString DecimalLiteral where
  1021. 30.68 s [really-safe-money] - fromString s = case Numeric.DecimalLiteral.fromString s of
  1022. 30.68 s [really-safe-money] - Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  1023. 30.68 s [really-safe-money] - Just dl -> dl
  1024. 30.68 s [really-safe-money] + fromString s = case Numeric.DecimalLiteral.fromString s of
  1025. 30.69 s [really-safe-money] + Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  1026. 30.69 s [really-safe-money] + Just dl -> dl
  1027. 30.69 s [really-safe-money]
  1028. 30.69 s [really-safe-money] -- | Parse a decimal literal from a string
  1029. 30.69 s [really-safe-money] --
  1030. 30.69 s [really-safe-money] added 87 mutations
  1031. 32.30 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 )
  1032. 32.43 s [really-safe-money] mutation: instrumenting Money.QuantisationFactor
  1033. 32.43 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:87:27-28
  1034. 32.43 s [really-safe-money] @@ -84,7 +84,7 @@
  1035. 32.43 s [really-safe-money] fromDecimalLiteral dl = do
  1036. 32.43 s [really-safe-money] irat <-
  1037. 32.43 s [really-safe-money] let r = DecimalLiteral.toRational dl
  1038. 32.43 s [really-safe-money] - in if numerator r == 0
  1039. 32.43 s [really-safe-money] + in if numerator r == 1
  1040. 32.43 s [really-safe-money] then Nothing
  1041. 32.43 s [really-safe-money] else pure r
  1042. 32.43 s [really-safe-money]
  1043. 32.43 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:87:12-28
  1044. 32.43 s [really-safe-money] @@ -84,7 +84,7 @@
  1045. 32.43 s [really-safe-money] fromDecimalLiteral dl = do
  1046. 32.43 s [really-safe-money] irat <-
  1047. 32.43 s [really-safe-money] let r = DecimalLiteral.toRational dl
  1048. 32.43 s [really-safe-money] - in if numerator r == 0
  1049. 32.43 s [really-safe-money] + in if True
  1050. 32.43 s [really-safe-money] then Nothing
  1051. 32.43 s [really-safe-money] else pure r
  1052. 32.43 s [really-safe-money]
  1053. 32.43 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:87:12-28
  1054. 32.43 s [really-safe-money] @@ -84,7 +84,7 @@
  1055. 32.43 s [really-safe-money] fromDecimalLiteral dl = do
  1056. 32.43 s [really-safe-money] irat <-
  1057. 32.43 s [really-safe-money] let r = DecimalLiteral.toRational dl
  1058. 32.43 s [really-safe-money] - in if numerator r == 0
  1059. 32.43 s [really-safe-money] + in if False
  1060. 32.43 s [really-safe-money] then Nothing
  1061. 32.43 s [really-safe-money] else pure r
  1062. 32.43 s [really-safe-money]
  1063. 32.43 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:87:12-28
  1064. 32.43 s [really-safe-money] @@ -84,7 +84,7 @@
  1065. 32.43 s [really-safe-money] fromDecimalLiteral dl = do
  1066. 32.43 s [really-safe-money] irat <-
  1067. 32.43 s [really-safe-money] let r = DecimalLiteral.toRational dl
  1068. 32.43 s [really-safe-money] - in if numerator r == 0
  1069. 32.43 s [really-safe-money] + in if not (numerator r == 0)
  1070. 32.43 s [really-safe-money] then Nothing
  1071. 32.43 s [really-safe-money] else pure r
  1072. 32.43 s [really-safe-money]
  1073. 32.43 s [really-safe-money] added mutation CondFlip at src/Money/QuantisationFactor.hs:87:9-22
  1074. 32.43 s [really-safe-money] @@ -84,9 +84,9 @@
  1075. 32.43 s [really-safe-money] fromDecimalLiteral dl = do
  1076. 32.43 s [really-safe-money] irat <-
  1077. 32.43 s [really-safe-money] let r = DecimalLiteral.toRational dl
  1078. 32.43 s [really-safe-money] - in if numerator r == 0
  1079. 32.43 s [really-safe-money] - then Nothing
  1080. 32.43 s [really-safe-money] - else pure r
  1081. 32.43 s [really-safe-money] + in if numerator r == 0
  1082. 32.43 s [really-safe-money] + then Nothing
  1083. 32.43 s [really-safe-money] + else pure r
  1084. 32.43 s [really-safe-money]
  1085. 32.43 s [really-safe-money] rat <-
  1086. 32.43 s [really-safe-money] let r = 1 / irat
  1087. 32.43 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:92:13-14
  1088. 32.43 s [really-safe-money] @@ -89,7 +89,7 @@
  1089. 32.43 s [really-safe-money] else pure r
  1090. 32.43 s [really-safe-money]
  1091. 32.43 s [really-safe-money] rat <-
  1092. 32.43 s [really-safe-money] - let r = 1 / irat
  1093. 32.43 s [really-safe-money] + let r = 0 / irat
  1094. 32.43 s [really-safe-money] in if r < 0
  1095. 32.43 s [really-safe-money] then Nothing
  1096. 32.43 s [really-safe-money] else Just r
  1097. 32.43 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:92:13-14
  1098. 32.43 s [really-safe-money] @@ -89,7 +89,7 @@
  1099. 32.43 s [really-safe-money] else pure r
  1100. 32.43 s [really-safe-money]
  1101. 32.43 s [really-safe-money] rat <-
  1102. 32.43 s [really-safe-money] - let r = 1 / irat
  1103. 32.43 s [really-safe-money] + let r = -1 / irat
  1104. 32.43 s [really-safe-money] in if r < 0
  1105. 32.43 s [really-safe-money] then Nothing
  1106. 32.43 s [really-safe-money] else Just r
  1107. 32.43 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:93:16-17
  1108. 32.43 s [really-safe-money] @@ -90,7 +90,7 @@
  1109. 32.43 s [really-safe-money]
  1110. 32.43 s [really-safe-money] rat <-
  1111. 32.43 s [really-safe-money] let r = 1 / irat
  1112. 32.43 s [really-safe-money] - in if r < 0
  1113. 32.43 s [really-safe-money] + in if r < 1
  1114. 32.43 s [really-safe-money] then Nothing
  1115. 32.43 s [really-safe-money] else Just r
  1116. 32.43 s [really-safe-money]
  1117. 32.43 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:93:12-17
  1118. 32.43 s [really-safe-money] @@ -90,7 +90,7 @@
  1119. 32.43 s [really-safe-money]
  1120. 32.43 s [really-safe-money] rat <-
  1121. 32.43 s [really-safe-money] let r = 1 / irat
  1122. 32.43 s [really-safe-money] - in if r < 0
  1123. 32.43 s [really-safe-money] + in if True
  1124. 32.43 s [really-safe-money] then Nothing
  1125. 32.43 s [really-safe-money] else Just r
  1126. 32.43 s [really-safe-money]
  1127. 32.43 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:93:12-17
  1128. 32.43 s [really-safe-money] @@ -90,7 +90,7 @@
  1129. 32.44 s [really-safe-money]
  1130. 32.44 s [really-safe-money] rat <-
  1131. 32.44 s [really-safe-money] let r = 1 / irat
  1132. 32.44 s [really-safe-money] - in if r < 0
  1133. 32.44 s [really-safe-money] + in if False
  1134. 32.44 s [really-safe-money] then Nothing
  1135. 32.44 s [really-safe-money] else Just r
  1136. 32.44 s [really-safe-money]
  1137. 32.44 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:93:12-17
  1138. 32.44 s [really-safe-money] @@ -90,7 +90,7 @@
  1139. 32.44 s [really-safe-money]
  1140. 32.44 s [really-safe-money] rat <-
  1141. 32.44 s [really-safe-money] let r = 1 / irat
  1142. 32.44 s [really-safe-money] - in if r < 0
  1143. 32.44 s [really-safe-money] + in if not (r < 0)
  1144. 32.44 s [really-safe-money] then Nothing
  1145. 32.44 s [really-safe-money] else Just r
  1146. 32.44 s [really-safe-money]
  1147. 32.44 s [really-safe-money] added mutation CondFlip at src/Money/QuantisationFactor.hs:93:9-22
  1148. 32.44 s [really-safe-money] @@ -90,9 +90,9 @@
  1149. 32.44 s [really-safe-money]
  1150. 32.44 s [really-safe-money] rat <-
  1151. 32.44 s [really-safe-money] let r = 1 / irat
  1152. 32.44 s [really-safe-money] - in if r < 0
  1153. 32.44 s [really-safe-money] - then Nothing
  1154. 32.44 s [really-safe-money] - else Just r
  1155. 32.44 s [really-safe-money] + in if r < 0
  1156. 32.44 s [really-safe-money] + then Nothing
  1157. 32.44 s [really-safe-money] + else Just r
  1158. 32.44 s [really-safe-money]
  1159. 32.44 s [really-safe-money] fac <-
  1160. 32.44 s [really-safe-money] if denominator rat == 1
  1161. 32.44 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:98:27-28
  1162. 32.44 s [really-safe-money] @@ -95,7 +95,7 @@
  1163. 32.44 s [really-safe-money] else Just r
  1164. 32.44 s [really-safe-money]
  1165. 32.44 s [really-safe-money] fac <-
  1166. 32.44 s [really-safe-money] - if denominator rat == 1
  1167. 32.44 s [really-safe-money] + if denominator rat == 0
  1168. 32.44 s [really-safe-money] then Just (numerator rat)
  1169. 32.44 s [really-safe-money] else Nothing
  1170. 32.44 s [really-safe-money]
  1171. 32.44 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:98:27-28
  1172. 32.44 s [really-safe-money] @@ -95,7 +95,7 @@
  1173. 32.44 s [really-safe-money] else Just r
  1174. 32.44 s [really-safe-money]
  1175. 32.44 s [really-safe-money] fac <-
  1176. 32.44 s [really-safe-money] - if denominator rat == 1
  1177. 32.44 s [really-safe-money] + if denominator rat == -1
  1178. 32.44 s [really-safe-money] then Just (numerator rat)
  1179. 32.44 s [really-safe-money] else Nothing
  1180. 32.44 s [really-safe-money]
  1181. 32.44 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:98:8-28
  1182. 32.44 s [really-safe-money] @@ -95,7 +95,7 @@
  1183. 32.44 s [really-safe-money] else Just r
  1184. 32.44 s [really-safe-money]
  1185. 32.44 s [really-safe-money] fac <-
  1186. 32.44 s [really-safe-money] - if denominator rat == 1
  1187. 32.44 s [really-safe-money] + if True
  1188. 32.44 s [really-safe-money] then Just (numerator rat)
  1189. 32.44 s [really-safe-money] else Nothing
  1190. 32.44 s [really-safe-money]
  1191. 32.44 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:98:8-28
  1192. 32.44 s [really-safe-money] @@ -95,7 +95,7 @@
  1193. 32.44 s [really-safe-money] else Just r
  1194. 32.44 s [really-safe-money]
  1195. 32.44 s [really-safe-money] fac <-
  1196. 32.44 s [really-safe-money] - if denominator rat == 1
  1197. 32.44 s [really-safe-money] + if False
  1198. 32.44 s [really-safe-money] then Just (numerator rat)
  1199. 32.44 s [really-safe-money] else Nothing
  1200. 32.44 s [really-safe-money]
  1201. 32.44 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:98:8-28
  1202. 32.44 s [really-safe-money] @@ -95,7 +95,7 @@
  1203. 32.44 s [really-safe-money] else Just r
  1204. 32.44 s [really-safe-money]
  1205. 32.44 s [really-safe-money] fac <-
  1206. 32.44 s [really-safe-money] - if denominator rat == 1
  1207. 32.44 s [really-safe-money] + if not (denominator rat == 1)
  1208. 32.44 s [really-safe-money] then Just (numerator rat)
  1209. 32.44 s [really-safe-money] else Nothing
  1210. 32.44 s [really-safe-money]
  1211. 32.44 s [really-safe-money] added mutation CondFlip at src/Money/QuantisationFactor.hs:98:5-19
  1212. 32.44 s [really-safe-money] @@ -95,9 +95,9 @@
  1213. 32.44 s [really-safe-money] else Just r
  1214. 32.44 s [really-safe-money]
  1215. 32.44 s [really-safe-money] fac <-
  1216. 32.44 s [really-safe-money] - if denominator rat == 1
  1217. 32.44 s [really-safe-money] - then Just (numerator rat)
  1218. 32.44 s [really-safe-money] - else Nothing
  1219. 32.44 s [really-safe-money] + if denominator rat == 1
  1220. 32.44 s [really-safe-money] + then Just (numerator rat)
  1221. 32.44 s [really-safe-money] + else Nothing
  1222. 32.44 s [really-safe-money]
  1223. 32.44 s [really-safe-money] if fac <= fromIntegral (maxBound :: Word32)
  1224. 32.44 s [really-safe-money] then Just (QuantisationFactor (fromIntegral fac))
  1225. 32.44 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:102:6-46
  1226. 32.44 s [really-safe-money] @@ -99,6 +99,6 @@
  1227. 32.44 s [really-safe-money] then Just (numerator rat)
  1228. 32.44 s [really-safe-money] else Nothing
  1229. 32.44 s [really-safe-money]
  1230. 32.44 s [really-safe-money] - if fac <= fromIntegral (maxBound :: Word32)
  1231. 32.44 s [really-safe-money] + if True
  1232. 32.44 s [really-safe-money] then Just (QuantisationFactor (fromIntegral fac))
  1233. 32.44 s [really-safe-money] else Nothing
  1234. 32.44 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:102:6-46
  1235. 32.44 s [really-safe-money] @@ -99,6 +99,6 @@
  1236. 32.44 s [really-safe-money] then Just (numerator rat)
  1237. 32.44 s [really-safe-money] else Nothing
  1238. 32.44 s [really-safe-money]
  1239. 32.44 s [really-safe-money] - if fac <= fromIntegral (maxBound :: Word32)
  1240. 32.44 s [really-safe-money] + if False
  1241. 32.44 s [really-safe-money] then Just (QuantisationFactor (fromIntegral fac))
  1242. 32.44 s [really-safe-money] else Nothing
  1243. 32.44 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:102:6-46
  1244. 32.44 s [really-safe-money] @@ -99,6 +99,6 @@
  1245. 32.44 s [really-safe-money] then Just (numerator rat)
  1246. 32.44 s [really-safe-money] else Nothing
  1247. 32.44 s [really-safe-money]
  1248. 32.44 s [really-safe-money] - if fac <= fromIntegral (maxBound :: Word32)
  1249. 32.44 s [really-safe-money] + if not (fac <= fromIntegral (maxBound :: Word32))
  1250. 32.44 s [really-safe-money] then Just (QuantisationFactor (fromIntegral fac))
  1251. 32.44 s [really-safe-money] else Nothing
  1252. 32.44 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:67:67-68
  1253. 32.44 s [really-safe-money] @@ -64,7 +64,7 @@
  1254. 32.44 s [really-safe-money] -- Just (DecimalLiteral Nothing 1 0)
  1255. 32.44 s [really-safe-money] toDecimalLiteral :: QuantisationFactor -> Maybe DecimalLiteral
  1256. 32.44 s [really-safe-money] toDecimalLiteral (QuantisationFactor qfw) =
  1257. 32.44 s [really-safe-money] - DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (1 % fromIntegral qfw)
  1258. 32.44 s [really-safe-money] + DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (0 % fromIntegral qfw)
  1259. 32.44 s [really-safe-money]
  1260. 32.44 s [really-safe-money] -- | Parse a 'QuantisationFactor' from a 'DecimalLiteral' that represents the smallest unit
  1261. 32.44 s [really-safe-money] -- TODO explain that it's the inverse.
  1262. 32.44 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:67:67-68
  1263. 32.44 s [really-safe-money] @@ -64,7 +64,7 @@
  1264. 32.44 s [really-safe-money] -- Just (DecimalLiteral Nothing 1 0)
  1265. 32.44 s [really-safe-money] toDecimalLiteral :: QuantisationFactor -> Maybe DecimalLiteral
  1266. 32.44 s [really-safe-money] toDecimalLiteral (QuantisationFactor qfw) =
  1267. 32.44 s [really-safe-money] - DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (1 % fromIntegral qfw)
  1268. 32.44 s [really-safe-money] + DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (-1 % fromIntegral qfw)
  1269. 32.44 s [really-safe-money]
  1270. 32.44 s [really-safe-money] -- | Parse a 'QuantisationFactor' from a 'DecimalLiteral' that represents the smallest unit
  1271. 32.44 s [really-safe-money] -- TODO explain that it's the inverse.
  1272. 32.44 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:40:62-63
  1273. 32.44 s [really-safe-money] @@ -37,7 +37,7 @@
  1274. 32.44 s [really-safe-money] validate qf@(QuantisationFactor w) =
  1275. 32.44 s [really-safe-money] mconcat
  1276. 32.44 s [really-safe-money] [ genericValidate qf,
  1277. 32.44 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  1278. 32.44 s [really-safe-money] + declare "The quantisation factor is not zero" $ w /= 1
  1279. 32.44 s [really-safe-money] ]
  1280. 32.44 s [really-safe-money]
  1281. 32.44 s [really-safe-money] instance NFData QuantisationFactor
  1282. 32.44 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63
  1283. 32.44 s [really-safe-money] @@ -37,7 +37,7 @@
  1284. 32.44 s [really-safe-money] validate qf@(QuantisationFactor w) =
  1285. 32.44 s [really-safe-money] mconcat
  1286. 32.44 s [really-safe-money] [ genericValidate qf,
  1287. 32.44 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  1288. 32.44 s [really-safe-money] + declare "The quantisation factor is not zero" $ True
  1289. 32.44 s [really-safe-money] ]
  1290. 32.44 s [really-safe-money]
  1291. 32.44 s [really-safe-money] instance NFData QuantisationFactor
  1292. 32.44 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63
  1293. 32.44 s [really-safe-money] @@ -37,7 +37,7 @@
  1294. 32.44 s [really-safe-money] validate qf@(QuantisationFactor w) =
  1295. 32.44 s [really-safe-money] mconcat
  1296. 32.44 s [really-safe-money] [ genericValidate qf,
  1297. 32.44 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  1298. 32.44 s [really-safe-money] + declare "The quantisation factor is not zero" $ False
  1299. 32.44 s [really-safe-money] ]
  1300. 32.44 s [really-safe-money]
  1301. 32.44 s [really-safe-money] instance NFData QuantisationFactor
  1302. 32.44 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:40:57-63
  1303. 32.44 s [really-safe-money] @@ -37,7 +37,7 @@
  1304. 32.44 s [really-safe-money] validate qf@(QuantisationFactor w) =
  1305. 32.44 s [really-safe-money] mconcat
  1306. 32.44 s [really-safe-money] [ genericValidate qf,
  1307. 32.44 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  1308. 32.44 s [really-safe-money] + declare "The quantisation factor is not zero" $ not (w /= 0)
  1309. 32.44 s [really-safe-money] ]
  1310. 32.44 s [really-safe-money]
  1311. 32.44 s [really-safe-money] instance NFData QuantisationFactor
  1312. 32.45 s [really-safe-money] added mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8
  1313. 32.45 s [really-safe-money] @@ -36,9 +36,7 @@
  1314. 32.45 s [really-safe-money] instance Validity QuantisationFactor where
  1315. 32.45 s [really-safe-money] validate qf@(QuantisationFactor w) =
  1316. 32.45 s [really-safe-money] mconcat
  1317. 32.45 s [really-safe-money] - [ genericValidate qf,
  1318. 32.45 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  1319. 32.45 s [really-safe-money] - ]
  1320. 32.45 s [really-safe-money] + []
  1321. 32.45 s [really-safe-money]
  1322. 32.45 s [really-safe-money] instance NFData QuantisationFactor
  1323. 32.45 s [really-safe-money]
  1324. 32.45 s [really-safe-money] added mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8
  1325. 32.45 s [really-safe-money] @@ -36,9 +36,9 @@
  1326. 32.45 s [really-safe-money] instance Validity QuantisationFactor where
  1327. 32.45 s [really-safe-money] validate qf@(QuantisationFactor w) =
  1328. 32.45 s [really-safe-money] mconcat
  1329. 32.45 s [really-safe-money] - [ genericValidate qf,
  1330. 32.45 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  1331. 32.45 s [really-safe-money] - ]
  1332. 32.45 s [really-safe-money] + [ genericValidate qf,
  1333. 32.45 s [really-safe-money] + declare "The quantisation factor is not zero" $ w /= 0
  1334. 32.45 s [really-safe-money] + ]
  1335. 32.45 s [really-safe-money]
  1336. 32.45 s [really-safe-money] instance NFData QuantisationFactor
  1337. 32.45 s [really-safe-money]
  1338. 32.45 s [really-safe-money] added 29 mutations
  1339. 32.69 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 )
  1340. 32.69 s [really-safe-money] mutation: instrumenting Money.Currency
  1341. 32.69 s [really-safe-money] added 0 mutations
  1342. 33.00 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 )
  1343. 33.01 s [really-safe-money] mutation: instrumenting Money.ConversionRate
  1344. 33.01 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:116:45-46
  1345. 33.01 s [really-safe-money] @@ -113,7 +113,7 @@
  1346. 33.01 s [really-safe-money] -- >>> invert (ConversionRate (1 % 2))
  1347. 33.01 s [really-safe-money] -- ConversionRate {unConversionRate = 2 % 1}
  1348. 33.01 s [really-safe-money] invert :: ConversionRate -> ConversionRate
  1349. 33.01 s [really-safe-money] -invert (ConversionRate r) = ConversionRate (1 / r)
  1350. 33.01 s [really-safe-money] +invert (ConversionRate r) = ConversionRate (0 / r)
  1351. 33.01 s [really-safe-money]
  1352. 33.01 s [really-safe-money] -- | Compose two conversion rates
  1353. 33.01 s [really-safe-money] --
  1354. 33.01 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:116:45-46
  1355. 33.01 s [really-safe-money] @@ -113,7 +113,7 @@
  1356. 33.01 s [really-safe-money] -- >>> invert (ConversionRate (1 % 2))
  1357. 33.01 s [really-safe-money] -- ConversionRate {unConversionRate = 2 % 1}
  1358. 33.01 s [really-safe-money] invert :: ConversionRate -> ConversionRate
  1359. 33.01 s [really-safe-money] -invert (ConversionRate r) = ConversionRate (1 / r)
  1360. 33.01 s [really-safe-money] +invert (ConversionRate r) = ConversionRate (-1 / r)
  1361. 33.01 s [really-safe-money]
  1362. 33.01 s [really-safe-money] -- | Compose two conversion rates
  1363. 33.01 s [really-safe-money] --
  1364. 33.01 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:109:27-28
  1365. 33.01 s [really-safe-money] @@ -106,7 +106,7 @@
  1366. 33.01 s [really-safe-money]
  1367. 33.01 s [really-safe-money] -- | One-to-one conversion rate
  1368. 33.01 s [really-safe-money] oneToOne :: ConversionRate
  1369. 33.01 s [really-safe-money] -oneToOne = ConversionRate 1
  1370. 33.01 s [really-safe-money] +oneToOne = ConversionRate 0
  1371. 33.01 s [really-safe-money]
  1372. 33.01 s [really-safe-money] -- | Invert a 'ConversionRate', to convert in the other direction.
  1373. 33.01 s [really-safe-money] --
  1374. 33.01 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:109:27-28
  1375. 33.01 s [really-safe-money] @@ -106,7 +106,7 @@
  1376. 33.01 s [really-safe-money]
  1377. 33.01 s [really-safe-money] -- | One-to-one conversion rate
  1378. 33.01 s [really-safe-money] oneToOne :: ConversionRate
  1379. 33.01 s [really-safe-money] -oneToOne = ConversionRate 1
  1380. 33.01 s [really-safe-money] +oneToOne = ConversionRate -1
  1381. 33.01 s [really-safe-money]
  1382. 33.01 s [really-safe-money] -- | Invert a 'ConversionRate', to convert in the other direction.
  1383. 33.01 s [really-safe-money] --
  1384. 33.01 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:72:25-26
  1385. 33.01 s [really-safe-money] @@ -69,7 +69,7 @@
  1386. 33.01 s [really-safe-money] -- >>> fromRational (0 % 1)
  1387. 33.01 s [really-safe-money] -- Nothing
  1388. 33.01 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  1389. 33.01 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  1390. 33.01 s [really-safe-money] +fromRational r = if r < 1 then Nothing else fromRatio (realToFrac r)
  1391. 33.01 s [really-safe-money]
  1392. 33.01 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  1393. 33.01 s [really-safe-money] --
  1394. 33.01 s [really-safe-money] added mutation ConstBool at src/Money/ConversionRate.hs:72:21-26
  1395. 33.01 s [really-safe-money] @@ -69,7 +69,7 @@
  1396. 33.01 s [really-safe-money] -- >>> fromRational (0 % 1)
  1397. 33.01 s [really-safe-money] -- Nothing
  1398. 33.01 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  1399. 33.01 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  1400. 33.01 s [really-safe-money] +fromRational r = if True then Nothing else fromRatio (realToFrac r)
  1401. 33.01 s [really-safe-money]
  1402. 33.01 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  1403. 33.01 s [really-safe-money] --
  1404. 33.01 s [really-safe-money] added mutation ConstBool at src/Money/ConversionRate.hs:72:21-26
  1405. 33.01 s [really-safe-money] @@ -69,7 +69,7 @@
  1406. 33.01 s [really-safe-money] -- >>> fromRational (0 % 1)
  1407. 33.01 s [really-safe-money] -- Nothing
  1408. 33.01 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  1409. 33.01 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  1410. 33.01 s [really-safe-money] +fromRational r = if False then Nothing else fromRatio (realToFrac r)
  1411. 33.01 s [really-safe-money]
  1412. 33.01 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  1413. 33.01 s [really-safe-money] --
  1414. 33.01 s [really-safe-money] added mutation Negate at src/Money/ConversionRate.hs:72:21-26
  1415. 33.01 s [really-safe-money] @@ -69,7 +69,7 @@
  1416. 33.01 s [really-safe-money] -- >>> fromRational (0 % 1)
  1417. 33.01 s [really-safe-money] -- Nothing
  1418. 33.01 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  1419. 33.01 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  1420. 33.01 s [really-safe-money] +fromRational r = if not (r < 0) then Nothing else fromRatio (realToFrac r)
  1421. 33.01 s [really-safe-money]
  1422. 33.01 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  1423. 33.01 s [really-safe-money] --
  1424. 33.01 s [really-safe-money] added mutation CondFlip at src/Money/ConversionRate.hs:72:18-69
  1425. 33.01 s [really-safe-money] @@ -69,7 +69,7 @@
  1426. 33.01 s [really-safe-money] -- >>> fromRational (0 % 1)
  1427. 33.01 s [really-safe-money] -- Nothing
  1428. 33.01 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  1429. 33.01 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  1430. 33.02 s [really-safe-money] +fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  1431. 33.02 s [really-safe-money]
  1432. 33.02 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  1433. 33.02 s [really-safe-money] --
  1434. 33.02 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:38:56-57
  1435. 33.02 s [really-safe-money] @@ -35,7 +35,7 @@
  1436. 33.02 s [really-safe-money] validate cr@(ConversionRate r) =
  1437. 33.02 s [really-safe-money] mconcat
  1438. 33.02 s [really-safe-money] [ genericValidate cr,
  1439. 33.02 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  1440. 33.02 s [really-safe-money] + declare "The rate is nonzero" $ numerator r /= 1
  1441. 33.02 s [really-safe-money] ]
  1442. 33.02 s [really-safe-money]
  1443. 33.02 s [really-safe-money] instance NFData ConversionRate
  1444. 33.02 s [really-safe-money] added mutation ConstBool at src/Money/ConversionRate.hs:38:41-57
  1445. 33.02 s [really-safe-money] @@ -35,7 +35,7 @@
  1446. 33.02 s [really-safe-money] validate cr@(ConversionRate r) =
  1447. 33.02 s [really-safe-money] mconcat
  1448. 33.02 s [really-safe-money] [ genericValidate cr,
  1449. 33.02 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  1450. 33.02 s [really-safe-money] + declare "The rate is nonzero" $ True
  1451. 33.02 s [really-safe-money] ]
  1452. 33.02 s [really-safe-money]
  1453. 33.02 s [really-safe-money] instance NFData ConversionRate
  1454. 33.02 s [really-safe-money] added mutation ConstBool at src/Money/ConversionRate.hs:38:41-57
  1455. 33.02 s [really-safe-money] @@ -35,7 +35,7 @@
  1456. 33.02 s [really-safe-money] validate cr@(ConversionRate r) =
  1457. 33.02 s [really-safe-money] mconcat
  1458. 33.02 s [really-safe-money] [ genericValidate cr,
  1459. 33.02 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  1460. 33.02 s [really-safe-money] + declare "The rate is nonzero" $ False
  1461. 33.02 s [really-safe-money] ]
  1462. 33.02 s [really-safe-money]
  1463. 33.02 s [really-safe-money] instance NFData ConversionRate
  1464. 33.02 s [really-safe-money] added mutation Negate at src/Money/ConversionRate.hs:38:41-57
  1465. 33.02 s [really-safe-money] @@ -35,7 +35,7 @@
  1466. 33.02 s [really-safe-money] validate cr@(ConversionRate r) =
  1467. 33.02 s [really-safe-money] mconcat
  1468. 33.02 s [really-safe-money] [ genericValidate cr,
  1469. 33.02 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  1470. 33.02 s [really-safe-money] + declare "The rate is nonzero" $ not (numerator r /= 0)
  1471. 33.02 s [really-safe-money] ]
  1472. 33.02 s [really-safe-money]
  1473. 33.02 s [really-safe-money] instance NFData ConversionRate
  1474. 33.02 s [really-safe-money] added mutation ListLit at src/Money/ConversionRate.hs:37:7-8
  1475. 33.02 s [really-safe-money] @@ -34,9 +34,7 @@
  1476. 33.02 s [really-safe-money] instance Validity ConversionRate where
  1477. 33.02 s [really-safe-money] validate cr@(ConversionRate r) =
  1478. 33.02 s [really-safe-money] mconcat
  1479. 33.02 s [really-safe-money] - [ genericValidate cr,
  1480. 33.02 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  1481. 33.02 s [really-safe-money] - ]
  1482. 33.02 s [really-safe-money] + []
  1483. 33.02 s [really-safe-money]
  1484. 33.02 s [really-safe-money] instance NFData ConversionRate
  1485. 33.02 s [really-safe-money]
  1486. 33.02 s [really-safe-money] added mutation ListLit at src/Money/ConversionRate.hs:37:7-8
  1487. 33.02 s [really-safe-money] @@ -34,9 +34,9 @@
  1488. 33.02 s [really-safe-money] instance Validity ConversionRate where
  1489. 33.02 s [really-safe-money] validate cr@(ConversionRate r) =
  1490. 33.02 s [really-safe-money] mconcat
  1491. 33.02 s [really-safe-money] - [ genericValidate cr,
  1492. 33.02 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  1493. 33.02 s [really-safe-money] - ]
  1494. 33.02 s [really-safe-money] + [ genericValidate cr,
  1495. 33.02 s [really-safe-money] + declare "The rate is nonzero" $ numerator r /= 0
  1496. 33.02 s [really-safe-money] + ]
  1497. 33.02 s [really-safe-money]
  1498. 33.02 s [really-safe-money] instance NFData ConversionRate
  1499. 33.02 s [really-safe-money]
  1500. 33.02 s [really-safe-money] added 15 mutations
  1501. 33.25 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 )
  1502. 33.25 s [really-safe-money] mutation: instrumenting Money.ConversionRateOf
  1503. 33.25 s [really-safe-money] added 0 mutations
  1504. 33.33 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 )
  1505. 33.40 s [really-safe-money] mutation: instrumenting Money.Amount
  1506. 33.40 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:801:36-38
  1507. 33.40 s [really-safe-money] @@ -798,7 +798,7 @@
  1508. 33.40 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  1509. 33.40 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor qf) =
  1510. 33.40 s [really-safe-money] let decimals :: Int
  1511. 33.40 s [really-safe-money] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  1512. 33.40 s [really-safe-money] + decimals = ceiling $ logBase 0 (fromIntegral qf :: Float)
  1513. 33.40 s [really-safe-money] in printf "%%0.%df" decimals
  1514. 33.40 s [really-safe-money]
  1515. 33.40 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  1516. 33.40 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:801:36-38
  1517. 33.40 s [really-safe-money] @@ -798,7 +798,7 @@
  1518. 33.40 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  1519. 33.40 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor qf) =
  1520. 33.40 s [really-safe-money] let decimals :: Int
  1521. 33.40 s [really-safe-money] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  1522. 33.40 s [really-safe-money] + decimals = ceiling $ logBase 1 (fromIntegral qf :: Float)
  1523. 33.40 s [really-safe-money] in printf "%%0.%df" decimals
  1524. 33.40 s [really-safe-money]
  1525. 33.40 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  1526. 33.40 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:801:36-38
  1527. 33.40 s [really-safe-money] @@ -798,7 +798,7 @@
  1528. 33.40 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  1529. 33.40 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor qf) =
  1530. 33.40 s [really-safe-money] let decimals :: Int
  1531. 33.40 s [really-safe-money] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  1532. 33.40 s [really-safe-money] + decimals = ceiling $ logBase -10 (fromIntegral qf :: Float)
  1533. 33.40 s [really-safe-money] in printf "%%0.%df" decimals
  1534. 33.40 s [really-safe-money]
  1535. 33.40 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  1536. 33.40 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:569:18-19
  1537. 33.40 s [really-safe-money] @@ -566,7 +566,7 @@
  1538. 33.40 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  1539. 33.40 s [really-safe-money] smallerChunk :: Amount
  1540. 33.40 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  1541. 33.40 s [really-safe-money] - in if rest == 0
  1542. 33.40 s [really-safe-money] + in if rest == 1
  1543. 33.40 s [really-safe-money] then DistributedIntoEqualChunks f smallerChunk
  1544. 33.40 s [really-safe-money] else
  1545. 33.40 s [really-safe-money] let -- This 'fromIntegral' is theoretically not safe, but it's
  1546. 33.40 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:569:10-19
  1547. 33.40 s [really-safe-money] @@ -566,7 +566,7 @@
  1548. 33.40 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  1549. 33.40 s [really-safe-money] smallerChunk :: Amount
  1550. 33.40 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  1551. 33.40 s [really-safe-money] - in if rest == 0
  1552. 33.40 s [really-safe-money] + in if True
  1553. 33.40 s [really-safe-money] then DistributedIntoEqualChunks f smallerChunk
  1554. 33.40 s [really-safe-money] else
  1555. 33.40 s [really-safe-money] let -- This 'fromIntegral' is theoretically not safe, but it's
  1556. 33.40 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:569:10-19
  1557. 33.40 s [really-safe-money] @@ -566,7 +566,7 @@
  1558. 33.40 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  1559. 33.40 s [really-safe-money] smallerChunk :: Amount
  1560. 33.40 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  1561. 33.40 s [really-safe-money] - in if rest == 0
  1562. 33.40 s [really-safe-money] + in if False
  1563. 33.40 s [really-safe-money] then DistributedIntoEqualChunks f smallerChunk
  1564. 33.40 s [really-safe-money] else
  1565. 33.40 s [really-safe-money] let -- This 'fromIntegral' is theoretically not safe, but it's
  1566. 33.40 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:569:10-19
  1567. 33.40 s [really-safe-money] @@ -566,7 +566,7 @@
  1568. 33.40 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  1569. 33.40 s [really-safe-money] smallerChunk :: Amount
  1570. 33.40 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  1571. 33.40 s [really-safe-money] - in if rest == 0
  1572. 33.40 s [really-safe-money] + in if not (rest == 0)
  1573. 33.40 s [really-safe-money] then DistributedIntoEqualChunks f smallerChunk
  1574. 33.40 s [really-safe-money] else
  1575. 33.40 s [really-safe-money] let -- This 'fromIntegral' is theoretically not safe, but it's
  1576. 33.40 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:569:7-29
  1577. 33.40 s [really-safe-money] @@ -566,22 +566,22 @@
  1578. 33.40 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  1579. 33.40 s [really-safe-money] smallerChunk :: Amount
  1580. 33.40 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  1581. 33.40 s [really-safe-money] - in if rest == 0
  1582. 33.40 s [really-safe-money] - then DistributedIntoEqualChunks f smallerChunk
  1583. 33.40 s [really-safe-money] - else
  1584. 33.40 s [really-safe-money] - let -- This 'fromIntegral' is theoretically not safe, but it's
  1585. 33.40 s [really-safe-money] - -- necessarily smaller than f so it will fit.
  1586. 33.40 s [really-safe-money] - numberOfLargerChunks :: Word32
  1587. 33.40 s [really-safe-money] - numberOfLargerChunks = (fromIntegral :: Word64 -> Word32) rest
  1588. 33.40 s [really-safe-money] - numberOfSmallerChunks :: Word32
  1589. 33.40 s [really-safe-money] - numberOfSmallerChunks = f - numberOfLargerChunks
  1590. 33.40 s [really-safe-money] - largerChunk :: Amount
  1591. 33.40 s [really-safe-money] - largerChunk = Amount $ succ smallerChunkSize
  1592. 33.40 s [really-safe-money] - in DistributedIntoUnequalChunks
  1593. 33.40 s [really-safe-money] - numberOfLargerChunks
  1594. 33.40 s [really-safe-money] - largerChunk
  1595. 33.40 s [really-safe-money] - numberOfSmallerChunks
  1596. 33.40 s [really-safe-money] - smallerChunk
  1597. 33.40 s [really-safe-money] + in if rest == 0
  1598. 33.40 s [really-safe-money] + then DistributedIntoEqualChunks f smallerChunk
  1599. 33.40 s [really-safe-money] + else
  1600. 33.40 s [really-safe-money] + let -- This 'fromIntegral' is theoretically not safe, but it's
  1601. 33.40 s [really-safe-money] + -- necessarily smaller than f so it will fit.
  1602. 33.40 s [really-safe-money] + numberOfLargerChunks :: Word32
  1603. 33.40 s [really-safe-money] + numberOfLargerChunks = (fromIntegral :: Word64 -> Word32) rest
  1604. 33.40 s [really-safe-money] + numberOfSmallerChunks :: Word32
  1605. 33.40 s [really-safe-money] + numberOfSmallerChunks = f - numberOfLargerChunks
  1606. 33.40 s [really-safe-money] + largerChunk :: Amount
  1607. 33.40 s [really-safe-money] + largerChunk = Amount $ succ smallerChunkSize
  1608. 33.40 s [really-safe-money] + in DistributedIntoUnequalChunks
  1609. 33.40 s [really-safe-money] + numberOfLargerChunks
  1610. 33.40 s [really-safe-money] + largerChunk
  1611. 33.41 s [really-safe-money] + numberOfSmallerChunks
  1612. 33.41 s [really-safe-money] + smallerChunk
  1613. 33.41 s [really-safe-money]
  1614. 33.41 s [really-safe-money] -- | The result of 'distribute'
  1615. 33.41 s [really-safe-money] type AmountDistribution = Distribution Amount
  1616. 33.41 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:544:10-23
  1617. 33.41 s [really-safe-money] @@ -541,7 +541,7 @@
  1618. 33.41 s [really-safe-money] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  1619. 33.41 s [really-safe-money] r :: Integer
  1620. 33.41 s [really-safe-money] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  1621. 33.41 s [really-safe-money] - in if r > maxBoundI
  1622. 33.41 s [really-safe-money] + in if True
  1623. 33.41 s [really-safe-money] then Nothing
  1624. 33.41 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1625. 33.41 s [really-safe-money]
  1626. 33.41 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:544:10-23
  1627. 33.41 s [really-safe-money] @@ -541,7 +541,7 @@
  1628. 33.41 s [really-safe-money] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  1629. 33.41 s [really-safe-money] r :: Integer
  1630. 33.41 s [really-safe-money] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  1631. 33.41 s [really-safe-money] - in if r > maxBoundI
  1632. 33.41 s [really-safe-money] + in if False
  1633. 33.41 s [really-safe-money] then Nothing
  1634. 33.41 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1635. 33.41 s [really-safe-money]
  1636. 33.41 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:544:10-23
  1637. 33.41 s [really-safe-money] @@ -541,7 +541,7 @@
  1638. 33.41 s [really-safe-money] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  1639. 33.41 s [really-safe-money] r :: Integer
  1640. 33.41 s [really-safe-money] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  1641. 33.41 s [really-safe-money] - in if r > maxBoundI
  1642. 33.41 s [really-safe-money] + in if not (r > maxBoundI)
  1643. 33.41 s [really-safe-money] then Nothing
  1644. 33.41 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1645. 33.41 s [really-safe-money]
  1646. 33.41 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:544:7-66
  1647. 33.41 s [really-safe-money] @@ -541,9 +541,9 @@
  1648. 33.41 s [really-safe-money] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  1649. 33.41 s [really-safe-money] r :: Integer
  1650. 33.41 s [really-safe-money] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  1651. 33.41 s [really-safe-money] - in if r > maxBoundI
  1652. 33.41 s [really-safe-money] - then Nothing
  1653. 33.41 s [really-safe-money] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1654. 33.41 s [really-safe-money] + in if r > maxBoundI
  1655. 33.41 s [really-safe-money] + then Nothing
  1656. 33.41 s [really-safe-money] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1657. 33.41 s [really-safe-money]
  1658. 33.41 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  1659. 33.41 s [really-safe-money] --
  1660. 33.41 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:518:14-15
  1661. 33.41 s [really-safe-money] @@ -515,7 +515,7 @@
  1662. 33.41 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  1663. 33.41 s [really-safe-money] r :: Integer
  1664. 33.41 s [really-safe-money] r = i1 - i2
  1665. 33.41 s [really-safe-money] - in if r < 0
  1666. 33.41 s [really-safe-money] + in if r < 1
  1667. 33.41 s [really-safe-money] then Nothing
  1668. 33.41 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1669. 33.41 s [really-safe-money]
  1670. 33.41 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:518:10-15
  1671. 33.41 s [really-safe-money] @@ -515,7 +515,7 @@
  1672. 33.41 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  1673. 33.41 s [really-safe-money] r :: Integer
  1674. 33.41 s [really-safe-money] r = i1 - i2
  1675. 33.41 s [really-safe-money] - in if r < 0
  1676. 33.41 s [really-safe-money] + in if True
  1677. 33.41 s [really-safe-money] then Nothing
  1678. 33.41 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1679. 33.41 s [really-safe-money]
  1680. 33.41 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:518:10-15
  1681. 33.41 s [really-safe-money] @@ -515,7 +515,7 @@
  1682. 33.41 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  1683. 33.41 s [really-safe-money] r :: Integer
  1684. 33.41 s [really-safe-money] r = i1 - i2
  1685. 33.41 s [really-safe-money] - in if r < 0
  1686. 33.41 s [really-safe-money] + in if False
  1687. 33.41 s [really-safe-money] then Nothing
  1688. 33.41 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1689. 33.41 s [really-safe-money]
  1690. 33.41 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:518:10-15
  1691. 33.41 s [really-safe-money] @@ -515,7 +515,7 @@
  1692. 33.41 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  1693. 33.41 s [really-safe-money] r :: Integer
  1694. 33.41 s [really-safe-money] r = i1 - i2
  1695. 33.41 s [really-safe-money] - in if r < 0
  1696. 33.41 s [really-safe-money] + in if not (r < 0)
  1697. 33.41 s [really-safe-money] then Nothing
  1698. 33.41 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1699. 33.41 s [really-safe-money]
  1700. 33.41 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:518:7-66
  1701. 33.41 s [really-safe-money] @@ -515,9 +515,9 @@
  1702. 33.41 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  1703. 33.41 s [really-safe-money] r :: Integer
  1704. 33.41 s [really-safe-money] r = i1 - i2
  1705. 33.41 s [really-safe-money] - in if r < 0
  1706. 33.41 s [really-safe-money] - then Nothing
  1707. 33.41 s [really-safe-money] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1708. 33.41 s [really-safe-money] + in if r < 0
  1709. 33.41 s [really-safe-money] + then Nothing
  1710. 33.41 s [really-safe-money] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1711. 33.41 s [really-safe-money]
  1712. 33.41 s [really-safe-money] -- | Multiply an amount of money by an integer scalar
  1713. 33.41 s [really-safe-money] --
  1714. 33.41 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:476:10-23
  1715. 33.41 s [really-safe-money] @@ -473,7 +473,7 @@
  1716. 33.41 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  1717. 33.41 s [really-safe-money] r :: Integer
  1718. 33.41 s [really-safe-money] r = i1 + i2
  1719. 33.41 s [really-safe-money] - in if r > maxBoundI
  1720. 33.41 s [really-safe-money] + in if True
  1721. 33.41 s [really-safe-money] then Nothing
  1722. 33.41 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1723. 33.41 s [really-safe-money]
  1724. 33.41 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:476:10-23
  1725. 33.41 s [really-safe-money] @@ -473,7 +473,7 @@
  1726. 33.41 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  1727. 33.41 s [really-safe-money] r :: Integer
  1728. 33.41 s [really-safe-money] r = i1 + i2
  1729. 33.41 s [really-safe-money] - in if r > maxBoundI
  1730. 33.41 s [really-safe-money] + in if False
  1731. 33.41 s [really-safe-money] then Nothing
  1732. 33.41 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1733. 33.41 s [really-safe-money]
  1734. 33.41 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:476:10-23
  1735. 33.41 s [really-safe-money] @@ -473,7 +473,7 @@
  1736. 33.41 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  1737. 33.41 s [really-safe-money] r :: Integer
  1738. 33.41 s [really-safe-money] r = i1 + i2
  1739. 33.41 s [really-safe-money] - in if r > maxBoundI
  1740. 33.41 s [really-safe-money] + in if not (r > maxBoundI)
  1741. 33.41 s [really-safe-money] then Nothing
  1742. 33.41 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1743. 33.41 s [really-safe-money]
  1744. 33.41 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:476:7-66
  1745. 33.41 s [really-safe-money] @@ -473,9 +473,9 @@
  1746. 33.41 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  1747. 33.41 s [really-safe-money] r :: Integer
  1748. 33.41 s [really-safe-money] r = i1 + i2
  1749. 33.41 s [really-safe-money] - in if r > maxBoundI
  1750. 33.41 s [really-safe-money] - then Nothing
  1751. 33.41 s [really-safe-money] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1752. 33.41 s [really-safe-money] + in if r > maxBoundI
  1753. 33.41 s [really-safe-money] + then Nothing
  1754. 33.41 s [really-safe-money] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  1755. 33.41 s [really-safe-money]
  1756. 33.41 s [really-safe-money] -- | Add a number of amounts of money together.
  1757. 33.41 s [really-safe-money] --
  1758. 33.41 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:388:5-16
  1759. 33.41 s [really-safe-money] @@ -385,7 +385,7 @@
  1760. 33.41 s [really-safe-money] -- Nothing
  1761. 33.41 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  1762. 33.41 s [really-safe-money] fromRational (QuantisationFactor qf) r
  1763. 33.41 s [really-safe-money] - | isInvalid r = Nothing
  1764. 33.41 s [really-safe-money] + | True = Nothing
  1765. 33.41 s [really-safe-money] | r < 0 = Nothing
  1766. 33.41 s [really-safe-money] | otherwise =
  1767. 33.41 s [really-safe-money] let resultRational :: Rational
  1768. 33.41 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:388:5-16
  1769. 33.41 s [really-safe-money] @@ -385,7 +385,7 @@
  1770. 33.41 s [really-safe-money] -- Nothing
  1771. 33.41 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  1772. 33.41 s [really-safe-money] fromRational (QuantisationFactor qf) r
  1773. 33.41 s [really-safe-money] - | isInvalid r = Nothing
  1774. 33.41 s [really-safe-money] + | not (isInvalid r) = Nothing
  1775. 33.41 s [really-safe-money] | r < 0 = Nothing
  1776. 33.41 s [really-safe-money] | otherwise =
  1777. 33.41 s [really-safe-money] let resultRational :: Rational
  1778. 33.41 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:389:9-10
  1779. 33.41 s [really-safe-money] @@ -386,7 +386,7 @@
  1780. 33.41 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  1781. 33.41 s [really-safe-money] fromRational (QuantisationFactor qf) r
  1782. 33.41 s [really-safe-money] | isInvalid r = Nothing
  1783. 33.41 s [really-safe-money] - | r < 0 = Nothing
  1784. 33.41 s [really-safe-money] + | r < 1 = Nothing
  1785. 33.41 s [really-safe-money] | otherwise =
  1786. 33.41 s [really-safe-money] let resultRational :: Rational
  1787. 33.41 s [really-safe-money] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  1788. 33.41 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:389:5-10
  1789. 33.41 s [really-safe-money] @@ -386,7 +386,7 @@
  1790. 33.41 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  1791. 33.41 s [really-safe-money] fromRational (QuantisationFactor qf) r
  1792. 33.41 s [really-safe-money] | isInvalid r = Nothing
  1793. 33.41 s [really-safe-money] - | r < 0 = Nothing
  1794. 33.41 s [really-safe-money] + | True = Nothing
  1795. 33.41 s [really-safe-money] | otherwise =
  1796. 33.41 s [really-safe-money] let resultRational :: Rational
  1797. 33.41 s [really-safe-money] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  1798. 33.41 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:389:5-10
  1799. 33.41 s [really-safe-money] @@ -386,7 +386,7 @@
  1800. 33.41 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  1801. 33.41 s [really-safe-money] fromRational (QuantisationFactor qf) r
  1802. 33.41 s [really-safe-money] | isInvalid r = Nothing
  1803. 33.41 s [really-safe-money] - | r < 0 = Nothing
  1804. 33.41 s [really-safe-money] + | not (r < 0) = Nothing
  1805. 33.41 s [really-safe-money] | otherwise =
  1806. 33.41 s [really-safe-money] let resultRational :: Rational
  1807. 33.41 s [really-safe-money] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  1808. 33.41 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:397:14-31
  1809. 33.41 s [really-safe-money] @@ -394,7 +394,7 @@
  1810. 33.41 s [really-safe-money] ceiled = (ceiling :: Rational -> Natural) resultRational
  1811. 33.41 s [really-safe-money] floored :: Natural
  1812. 33.41 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  1813. 33.41 s [really-safe-money] - in if ceiled == floored
  1814. 33.41 s [really-safe-money] + in if True
  1815. 33.41 s [really-safe-money] then
  1816. 33.41 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1817. 33.41 s [really-safe-money] then Nothing
  1818. 33.41 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:397:14-31
  1819. 33.41 s [really-safe-money] @@ -394,7 +394,7 @@
  1820. 33.41 s [really-safe-money] ceiled = (ceiling :: Rational -> Natural) resultRational
  1821. 33.41 s [really-safe-money] floored :: Natural
  1822. 33.41 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  1823. 33.41 s [really-safe-money] - in if ceiled == floored
  1824. 33.41 s [really-safe-money] + in if False
  1825. 33.41 s [really-safe-money] then
  1826. 33.41 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1827. 33.41 s [really-safe-money] then Nothing
  1828. 33.41 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:397:14-31
  1829. 33.41 s [really-safe-money] @@ -394,7 +394,7 @@
  1830. 33.41 s [really-safe-money] ceiled = (ceiling :: Rational -> Natural) resultRational
  1831. 33.41 s [really-safe-money] floored :: Natural
  1832. 33.41 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  1833. 33.41 s [really-safe-money] - in if ceiled == floored
  1834. 33.41 s [really-safe-money] + in if not (ceiled == floored)
  1835. 33.41 s [really-safe-money] then
  1836. 33.41 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1837. 33.41 s [really-safe-money] then Nothing
  1838. 33.41 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:399:18-83
  1839. 33.41 s [really-safe-money] @@ -396,7 +396,7 @@
  1840. 33.41 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  1841. 33.41 s [really-safe-money] in if ceiled == floored
  1842. 33.41 s [really-safe-money] then
  1843. 33.41 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1844. 33.41 s [really-safe-money] + if True
  1845. 33.41 s [really-safe-money] then Nothing
  1846. 33.41 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  1847. 33.41 s [really-safe-money] else Nothing
  1848. 33.42 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:399:18-83
  1849. 33.42 s [really-safe-money] @@ -396,7 +396,7 @@
  1850. 33.42 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  1851. 33.42 s [really-safe-money] in if ceiled == floored
  1852. 33.42 s [really-safe-money] then
  1853. 33.42 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1854. 33.42 s [really-safe-money] + if False
  1855. 33.42 s [really-safe-money] then Nothing
  1856. 33.42 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  1857. 33.42 s [really-safe-money] else Nothing
  1858. 33.42 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:399:18-83
  1859. 33.42 s [really-safe-money] @@ -396,7 +396,7 @@
  1860. 33.42 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  1861. 33.42 s [really-safe-money] in if ceiled == floored
  1862. 33.42 s [really-safe-money] then
  1863. 33.42 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1864. 33.42 s [really-safe-money] + if not (ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64))
  1865. 33.42 s [really-safe-money] then Nothing
  1866. 33.42 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  1867. 33.42 s [really-safe-money] else Nothing
  1868. 33.42 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:399:15-57
  1869. 33.42 s [really-safe-money] @@ -396,9 +396,9 @@
  1870. 33.42 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  1871. 33.42 s [really-safe-money] in if ceiled == floored
  1872. 33.42 s [really-safe-money] then
  1873. 33.42 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1874. 33.42 s [really-safe-money] - then Nothing
  1875. 33.42 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  1876. 33.42 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1877. 33.42 s [really-safe-money] + then Nothing
  1878. 33.42 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  1879. 33.42 s [really-safe-money] else Nothing
  1880. 33.42 s [really-safe-money]
  1881. 33.42 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  1882. 33.42 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:397:11-25
  1883. 33.43 s [really-safe-money] @@ -394,12 +394,12 @@
  1884. 33.43 s [really-safe-money] ceiled = (ceiling :: Rational -> Natural) resultRational
  1885. 33.43 s [really-safe-money] floored :: Natural
  1886. 33.43 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  1887. 33.43 s [really-safe-money] - in if ceiled == floored
  1888. 33.43 s [really-safe-money] - then
  1889. 33.43 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1890. 33.43 s [really-safe-money] - then Nothing
  1891. 33.43 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  1892. 33.43 s [really-safe-money] - else Nothing
  1893. 33.43 s [really-safe-money] + in if ceiled == floored
  1894. 33.43 s [really-safe-money] + then
  1895. 33.43 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  1896. 33.43 s [really-safe-money] + then Nothing
  1897. 33.43 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  1898. 33.43 s [really-safe-money] + else Nothing
  1899. 33.43 s [really-safe-money]
  1900. 33.43 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  1901. 33.43 s [really-safe-money] --
  1902. 33.43 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:320:9-10
  1903. 33.43 s [really-safe-money] @@ -317,7 +317,7 @@
  1904. 33.43 s [really-safe-money] Double ->
  1905. 33.43 s [really-safe-money] Maybe Amount
  1906. 33.43 s [really-safe-money] fromDouble (QuantisationFactor qf) d
  1907. 33.43 s [really-safe-money] - | d < 0 = Nothing
  1908. 33.43 s [really-safe-money] + | d < 1 = Nothing
  1909. 33.43 s [really-safe-money] | otherwise =
  1910. 33.43 s [really-safe-money] let resultDouble :: Double
  1911. 33.43 s [really-safe-money] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  1912. 33.43 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:320:5-10
  1913. 33.43 s [really-safe-money] @@ -317,7 +317,7 @@
  1914. 33.43 s [really-safe-money] Double ->
  1915. 33.43 s [really-safe-money] Maybe Amount
  1916. 33.43 s [really-safe-money] fromDouble (QuantisationFactor qf) d
  1917. 33.43 s [really-safe-money] - | d < 0 = Nothing
  1918. 33.43 s [really-safe-money] + | True = Nothing
  1919. 33.43 s [really-safe-money] | otherwise =
  1920. 33.43 s [really-safe-money] let resultDouble :: Double
  1921. 33.43 s [really-safe-money] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  1922. 33.43 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:320:5-10
  1923. 33.43 s [really-safe-money] @@ -317,7 +317,7 @@
  1924. 33.43 s [really-safe-money] Double ->
  1925. 33.43 s [really-safe-money] Maybe Amount
  1926. 33.43 s [really-safe-money] fromDouble (QuantisationFactor qf) d
  1927. 33.43 s [really-safe-money] - | d < 0 = Nothing
  1928. 33.43 s [really-safe-money] + | not (d < 0) = Nothing
  1929. 33.43 s [really-safe-money] | otherwise =
  1930. 33.43 s [really-safe-money] let resultDouble :: Double
  1931. 33.43 s [really-safe-money] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  1932. 33.43 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:327:9-16
  1933. 33.43 s [really-safe-money] @@ -324,7 +324,7 @@
  1934. 33.43 s [really-safe-money] in go resultDouble
  1935. 33.43 s [really-safe-money] where
  1936. 33.43 s [really-safe-money] go resultDouble
  1937. 33.43 s [really-safe-money] - | isNaN d = Nothing
  1938. 33.43 s [really-safe-money] + | True = Nothing
  1939. 33.43 s [really-safe-money] | isInfinite d = Nothing
  1940. 33.43 s [really-safe-money] | otherwise =
  1941. 33.43 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  1942. 33.43 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:327:9-16
  1943. 33.43 s [really-safe-money] @@ -324,7 +324,7 @@
  1944. 33.43 s [really-safe-money] in go resultDouble
  1945. 33.43 s [really-safe-money] where
  1946. 33.43 s [really-safe-money] go resultDouble
  1947. 33.43 s [really-safe-money] - | isNaN d = Nothing
  1948. 33.43 s [really-safe-money] + | not (isNaN d) = Nothing
  1949. 33.43 s [really-safe-money] | isInfinite d = Nothing
  1950. 33.43 s [really-safe-money] | otherwise =
  1951. 33.43 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  1952. 33.43 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:328:9-21
  1953. 33.43 s [really-safe-money] @@ -325,7 +325,7 @@
  1954. 33.43 s [really-safe-money] where
  1955. 33.43 s [really-safe-money] go resultDouble
  1956. 33.43 s [really-safe-money] | isNaN d = Nothing
  1957. 33.43 s [really-safe-money] - | isInfinite d = Nothing
  1958. 33.43 s [really-safe-money] + | True = Nothing
  1959. 33.43 s [really-safe-money] | otherwise =
  1960. 33.43 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  1961. 33.43 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  1962. 33.43 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:328:9-21
  1963. 33.43 s [really-safe-money] @@ -325,7 +325,7 @@
  1964. 33.43 s [really-safe-money] where
  1965. 33.43 s [really-safe-money] go resultDouble
  1966. 33.43 s [really-safe-money] | isNaN d = Nothing
  1967. 33.43 s [really-safe-money] - | isInfinite d = Nothing
  1968. 33.43 s [really-safe-money] + | not (isInfinite d) = Nothing
  1969. 33.43 s [really-safe-money] | otherwise =
  1970. 33.43 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  1971. 33.43 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  1972. 33.43 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:332:38-40
  1973. 33.43 s [really-safe-money] @@ -329,7 +329,7 @@
  1974. 33.43 s [really-safe-money] | otherwise =
  1975. 33.43 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  1976. 33.43 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  1977. 33.43 s [really-safe-money] - if exponent resultDouble > 65
  1978. 33.43 s [really-safe-money] + if exponent resultDouble > 0
  1979. 33.43 s [really-safe-money] then Nothing
  1980. 33.43 s [really-safe-money] else
  1981. 33.43 s [really-safe-money] let ceiled :: Natural
  1982. 33.43 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:332:38-40
  1983. 33.43 s [really-safe-money] @@ -329,7 +329,7 @@
  1984. 33.43 s [really-safe-money] | otherwise =
  1985. 33.43 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  1986. 33.43 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  1987. 33.43 s [really-safe-money] - if exponent resultDouble > 65
  1988. 33.43 s [really-safe-money] + if exponent resultDouble > 1
  1989. 33.43 s [really-safe-money] then Nothing
  1990. 33.43 s [really-safe-money] else
  1991. 33.43 s [really-safe-money] let ceiled :: Natural
  1992. 33.43 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:332:38-40
  1993. 33.43 s [really-safe-money] @@ -329,7 +329,7 @@
  1994. 33.43 s [really-safe-money] | otherwise =
  1995. 33.43 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  1996. 33.43 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  1997. 33.43 s [really-safe-money] - if exponent resultDouble > 65
  1998. 33.43 s [really-safe-money] + if exponent resultDouble > -65
  1999. 33.43 s [really-safe-money] then Nothing
  2000. 33.43 s [really-safe-money] else
  2001. 33.43 s [really-safe-money] let ceiled :: Natural
  2002. 33.43 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:332:14-40
  2003. 33.43 s [really-safe-money] @@ -329,7 +329,7 @@
  2004. 33.43 s [really-safe-money] | otherwise =
  2005. 33.43 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  2006. 33.43 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  2007. 33.43 s [really-safe-money] - if exponent resultDouble > 65
  2008. 33.43 s [really-safe-money] + if True
  2009. 33.43 s [really-safe-money] then Nothing
  2010. 33.43 s [really-safe-money] else
  2011. 33.43 s [really-safe-money] let ceiled :: Natural
  2012. 33.43 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:332:14-40
  2013. 33.43 s [really-safe-money] @@ -329,7 +329,7 @@
  2014. 33.43 s [really-safe-money] | otherwise =
  2015. 33.43 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  2016. 33.43 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  2017. 33.43 s [really-safe-money] - if exponent resultDouble > 65
  2018. 33.43 s [really-safe-money] + if False
  2019. 33.43 s [really-safe-money] then Nothing
  2020. 33.43 s [really-safe-money] else
  2021. 33.43 s [really-safe-money] let ceiled :: Natural
  2022. 33.43 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:332:14-40
  2023. 33.43 s [really-safe-money] @@ -329,7 +329,7 @@
  2024. 33.43 s [really-safe-money] | otherwise =
  2025. 33.43 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  2026. 33.43 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  2027. 33.43 s [really-safe-money] - if exponent resultDouble > 65
  2028. 33.43 s [really-safe-money] + if not (exponent resultDouble > 65)
  2029. 33.43 s [really-safe-money] then Nothing
  2030. 33.43 s [really-safe-money] else
  2031. 33.43 s [really-safe-money] let ceiled :: Natural
  2032. 33.43 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:339:22-39
  2033. 33.43 s [really-safe-money] @@ -336,7 +336,7 @@
  2034. 33.43 s [really-safe-money] ceiled = (ceiling :: Double -> Natural) resultDouble
  2035. 33.43 s [really-safe-money] floored :: Natural
  2036. 33.43 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  2037. 33.43 s [really-safe-money] - in if ceiled == floored
  2038. 33.43 s [really-safe-money] + in if True
  2039. 33.43 s [really-safe-money] then
  2040. 33.43 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2041. 33.43 s [really-safe-money] then Nothing
  2042. 33.43 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:339:22-39
  2043. 33.43 s [really-safe-money] @@ -336,7 +336,7 @@
  2044. 33.43 s [really-safe-money] ceiled = (ceiling :: Double -> Natural) resultDouble
  2045. 33.43 s [really-safe-money] floored :: Natural
  2046. 33.43 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  2047. 33.43 s [really-safe-money] - in if ceiled == floored
  2048. 33.43 s [really-safe-money] + in if False
  2049. 33.43 s [really-safe-money] then
  2050. 33.43 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2051. 33.43 s [really-safe-money] then Nothing
  2052. 33.43 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:339:22-39
  2053. 33.43 s [really-safe-money] @@ -336,7 +336,7 @@
  2054. 33.43 s [really-safe-money] ceiled = (ceiling :: Double -> Natural) resultDouble
  2055. 33.43 s [really-safe-money] floored :: Natural
  2056. 33.43 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  2057. 33.43 s [really-safe-money] - in if ceiled == floored
  2058. 33.43 s [really-safe-money] + in if not (ceiled == floored)
  2059. 33.43 s [really-safe-money] then
  2060. 33.43 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2061. 33.43 s [really-safe-money] then Nothing
  2062. 33.43 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:341:26-91
  2063. 33.43 s [really-safe-money] @@ -338,7 +338,7 @@
  2064. 33.43 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  2065. 33.43 s [really-safe-money] in if ceiled == floored
  2066. 33.43 s [really-safe-money] then
  2067. 33.43 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2068. 33.43 s [really-safe-money] + if True
  2069. 33.43 s [really-safe-money] then Nothing
  2070. 33.43 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  2071. 33.43 s [really-safe-money] else Nothing
  2072. 33.43 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:341:26-91
  2073. 33.43 s [really-safe-money] @@ -338,7 +338,7 @@
  2074. 33.43 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  2075. 33.43 s [really-safe-money] in if ceiled == floored
  2076. 33.43 s [really-safe-money] then
  2077. 33.43 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2078. 33.43 s [really-safe-money] + if False
  2079. 33.43 s [really-safe-money] then Nothing
  2080. 33.43 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  2081. 33.43 s [really-safe-money] else Nothing
  2082. 33.43 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:341:26-91
  2083. 33.43 s [really-safe-money] @@ -338,7 +338,7 @@
  2084. 33.43 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  2085. 33.43 s [really-safe-money] in if ceiled == floored
  2086. 33.43 s [really-safe-money] then
  2087. 33.43 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2088. 33.43 s [really-safe-money] + if not (ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64))
  2089. 33.43 s [really-safe-money] then Nothing
  2090. 33.43 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  2091. 33.43 s [really-safe-money] else Nothing
  2092. 33.43 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:341:23-65
  2093. 33.43 s [really-safe-money] @@ -338,9 +338,9 @@
  2094. 33.43 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  2095. 33.43 s [really-safe-money] in if ceiled == floored
  2096. 33.43 s [really-safe-money] then
  2097. 33.43 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2098. 33.43 s [really-safe-money] - then Nothing
  2099. 33.43 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  2100. 33.43 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2101. 33.43 s [really-safe-money] + then Nothing
  2102. 33.43 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  2103. 33.43 s [really-safe-money] else Nothing
  2104. 33.43 s [really-safe-money]
  2105. 33.43 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  2106. 33.43 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:339:19-33
  2107. 33.43 s [really-safe-money] @@ -336,12 +336,12 @@
  2108. 33.43 s [really-safe-money] ceiled = (ceiling :: Double -> Natural) resultDouble
  2109. 33.43 s [really-safe-money] floored :: Natural
  2110. 33.43 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  2111. 33.43 s [really-safe-money] - in if ceiled == floored
  2112. 33.43 s [really-safe-money] - then
  2113. 33.43 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2114. 33.43 s [really-safe-money] - then Nothing
  2115. 33.43 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  2116. 33.43 s [really-safe-money] - else Nothing
  2117. 33.43 s [really-safe-money] + in if ceiled == floored
  2118. 33.43 s [really-safe-money] + then
  2119. 33.43 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2120. 33.43 s [really-safe-money] + then Nothing
  2121. 33.43 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  2122. 33.43 s [really-safe-money] + else Nothing
  2123. 33.43 s [really-safe-money]
  2124. 33.43 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  2125. 33.43 s [really-safe-money] --
  2126. 33.43 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:332:11-33
  2127. 33.43 s [really-safe-money] @@ -329,19 +329,19 @@
  2128. 33.43 s [really-safe-money] | otherwise =
  2129. 33.43 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  2130. 33.43 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  2131. 33.43 s [really-safe-money] - if exponent resultDouble > 65
  2132. 33.43 s [really-safe-money] - then Nothing
  2133. 33.43 s [really-safe-money] - else
  2134. 33.43 s [really-safe-money] - let ceiled :: Natural
  2135. 33.43 s [really-safe-money] - ceiled = (ceiling :: Double -> Natural) resultDouble
  2136. 33.43 s [really-safe-money] - floored :: Natural
  2137. 33.43 s [really-safe-money] - floored = (floor :: Double -> Natural) resultDouble
  2138. 33.43 s [really-safe-money] - in if ceiled == floored
  2139. 33.43 s [really-safe-money] - then
  2140. 33.43 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2141. 33.43 s [really-safe-money] - then Nothing
  2142. 33.43 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  2143. 33.44 s [really-safe-money] - else Nothing
  2144. 33.44 s [really-safe-money] + if exponent resultDouble > 65
  2145. 33.44 s [really-safe-money] + then Nothing
  2146. 33.44 s [really-safe-money] + else
  2147. 33.44 s [really-safe-money] + let ceiled :: Natural
  2148. 33.44 s [really-safe-money] + ceiled = (ceiling :: Double -> Natural) resultDouble
  2149. 33.44 s [really-safe-money] + floored :: Natural
  2150. 33.44 s [really-safe-money] + floored = (floor :: Double -> Natural) resultDouble
  2151. 33.44 s [really-safe-money] + in if ceiled == floored
  2152. 33.44 s [really-safe-money] + then
  2153. 33.44 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  2154. 33.44 s [really-safe-money] + then Nothing
  2155. 33.44 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  2156. 33.44 s [really-safe-money] + else Nothing
  2157. 33.44 s [really-safe-money]
  2158. 33.44 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  2159. 33.44 s [really-safe-money] --
  2160. 33.44 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:290:79-80
  2161. 33.44 s [really-safe-money] @@ -287,7 +287,7 @@
  2162. 33.44 s [really-safe-money] -- >>> toRatio (QuantisationFactor 100) (Amount 1)
  2163. 33.44 s [really-safe-money] -- 1 % 100
  2164. 33.44 s [really-safe-money] toRatio :: QuantisationFactor -> Amount -> Ratio Natural
  2165. 33.44 s [really-safe-money] -toRatio (QuantisationFactor 0) a = fromIntegral (toMinimalQuantisations a) :% 0
  2166. 33.44 s [really-safe-money] +toRatio (QuantisationFactor 0) a = fromIntegral (toMinimalQuantisations a) :% 1
  2167. 33.44 s [really-safe-money] toRatio (QuantisationFactor quantisationFactor) a =
  2168. 33.44 s [really-safe-money] (fromIntegral :: Word64 -> Natural) (toMinimalQuantisations a)
  2169. 33.44 s [really-safe-money] % (fromIntegral :: Word32 -> Natural) quantisationFactor
  2170. 33.44 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:494:96-97
  2171. 33.44 s [really-safe-money] @@ -491,7 +491,7 @@
  2172. 33.44 s [really-safe-money] let maxBoundI :: Integer
  2173. 33.44 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  2174. 33.44 s [really-safe-money] r :: Integer
  2175. 33.44 s [really-safe-money] - r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  2176. 33.44 s [really-safe-money] + r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 1 l
  2177. 33.44 s [really-safe-money] in if r > maxBoundI
  2178. 33.44 s [really-safe-money] then Nothing
  2179. 33.44 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  2180. 33.44 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:495:10-23
  2181. 33.44 s [really-safe-money] @@ -492,7 +492,7 @@
  2182. 33.44 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  2183. 33.44 s [really-safe-money] r :: Integer
  2184. 33.44 s [really-safe-money] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  2185. 33.44 s [really-safe-money] - in if r > maxBoundI
  2186. 33.44 s [really-safe-money] + in if True
  2187. 33.44 s [really-safe-money] then Nothing
  2188. 33.44 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  2189. 33.44 s [really-safe-money]
  2190. 33.44 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:495:10-23
  2191. 33.44 s [really-safe-money] @@ -492,7 +492,7 @@
  2192. 33.44 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  2193. 33.44 s [really-safe-money] r :: Integer
  2194. 33.44 s [really-safe-money] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  2195. 33.44 s [really-safe-money] - in if r > maxBoundI
  2196. 33.44 s [really-safe-money] + in if False
  2197. 33.44 s [really-safe-money] then Nothing
  2198. 33.44 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  2199. 33.44 s [really-safe-money]
  2200. 33.44 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:495:10-23
  2201. 33.44 s [really-safe-money] @@ -492,7 +492,7 @@
  2202. 33.44 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  2203. 33.44 s [really-safe-money] r :: Integer
  2204. 33.44 s [really-safe-money] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  2205. 33.44 s [really-safe-money] - in if r > maxBoundI
  2206. 33.44 s [really-safe-money] + in if not (r > maxBoundI)
  2207. 33.44 s [really-safe-money] then Nothing
  2208. 33.44 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  2209. 33.44 s [really-safe-money]
  2210. 33.44 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:495:7-66
  2211. 33.44 s [really-safe-money] @@ -492,9 +492,9 @@
  2212. 33.44 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  2213. 33.44 s [really-safe-money] r :: Integer
  2214. 33.44 s [really-safe-money] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  2215. 33.44 s [really-safe-money] - in if r > maxBoundI
  2216. 33.44 s [really-safe-money] - then Nothing
  2217. 33.44 s [really-safe-money] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  2218. 33.44 s [really-safe-money] + in if r > maxBoundI
  2219. 33.44 s [really-safe-money] + then Nothing
  2220. 33.44 s [really-safe-money] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  2221. 33.44 s [really-safe-money]
  2222. 33.44 s [really-safe-money] -- | Add two amounts of money.
  2223. 33.44 s [really-safe-money] --
  2224. 33.44 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:250:15-16
  2225. 33.44 s [really-safe-money] @@ -247,7 +247,7 @@
  2226. 33.44 s [really-safe-money] -- >>> zero
  2227. 33.44 s [really-safe-money] -- Amount 0
  2228. 33.44 s [really-safe-money] zero :: Amount
  2229. 33.44 s [really-safe-money] -zero = Amount 0
  2230. 33.44 s [really-safe-money] +zero = Amount 1
  2231. 33.44 s [really-safe-money]
  2232. 33.44 s [really-safe-money] -- | Turn an amount into a number of minimal quantisations.
  2233. 33.44 s [really-safe-money] --
  2234. 33.44 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:661:30-31
  2235. 33.44 s [really-safe-money] @@ -658,7 +658,7 @@
  2236. 33.44 s [really-safe-money] -- | The amount and the real rate that was used, considering the 'Rounding'
  2237. 33.44 s [really-safe-money] (Maybe Amount, Ratio Natural)
  2238. 33.44 s [really-safe-money] fraction _ (Amount 0) f = (Just zero, f)
  2239. 33.44 s [really-safe-money] -fraction _ _ 0 = (Just zero, 0)
  2240. 33.44 s [really-safe-money] +fraction _ _ 0 = (Just zero, 1)
  2241. 33.44 s [really-safe-money] fraction r (Amount a) f =
  2242. 33.44 s [really-safe-money] let amountAsRatio :: Ratio Natural
  2243. 33.44 s [really-safe-money] amountAsRatio = (fromIntegral :: Word64 -> Ratio Natural) a
  2244. 33.44 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:668:17-30
  2245. 33.44 s [really-safe-money] @@ -665,10 +665,10 @@
  2246. 33.44 s [really-safe-money] theoreticalResult :: Ratio Natural
  2247. 33.44 s [really-safe-money] theoreticalResult = amountAsRatio * f
  2248. 33.44 s [really-safe-money] rounder :: Ratio Natural -> Natural
  2249. 33.44 s [really-safe-money] - rounder = case r of
  2250. 33.44 s [really-safe-money] - RoundUp -> ceiling
  2251. 33.44 s [really-safe-money] - RoundDown -> floor
  2252. 33.44 s [really-safe-money] - RoundNearest -> round
  2253. 33.44 s [really-safe-money] + rounder = case r of
  2254. 33.44 s [really-safe-money] + RoundUp -> ceiling
  2255. 33.44 s [really-safe-money] + RoundDown -> floor
  2256. 33.44 s [really-safe-money] + RoundNearest -> round
  2257. 33.44 s [really-safe-money] roundedResult :: Natural
  2258. 33.44 s [really-safe-money] roundedResult = rounder theoreticalResult
  2259. 33.44 s [really-safe-money] actualRate :: Ratio Natural
  2260. 33.44 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:668:17-30
  2261. 33.44 s [really-safe-money] @@ -665,10 +665,10 @@
  2262. 33.44 s [really-safe-money] theoreticalResult :: Ratio Natural
  2263. 33.44 s [really-safe-money] theoreticalResult = amountAsRatio * f
  2264. 33.44 s [really-safe-money] rounder :: Ratio Natural -> Natural
  2265. 33.44 s [really-safe-money] - rounder = case r of
  2266. 33.44 s [really-safe-money] - RoundUp -> ceiling
  2267. 33.44 s [really-safe-money] - RoundDown -> floor
  2268. 33.44 s [really-safe-money] - RoundNearest -> round
  2269. 33.44 s [really-safe-money] + rounder = case r of
  2270. 33.44 s [really-safe-money] + RoundUp -> ceiling
  2271. 33.44 s [really-safe-money] + RoundDown -> floor
  2272. 33.44 s [really-safe-money] + RoundNearest -> round
  2273. 33.44 s [really-safe-money] roundedResult :: Natural
  2274. 33.44 s [really-safe-money] roundedResult = rounder theoreticalResult
  2275. 33.44 s [really-safe-money] actualRate :: Ratio Natural
  2276. 33.44 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:668:17-30
  2277. 33.44 s [really-safe-money] @@ -665,10 +665,10 @@
  2278. 33.44 s [really-safe-money] theoreticalResult :: Ratio Natural
  2279. 33.44 s [really-safe-money] theoreticalResult = amountAsRatio * f
  2280. 33.44 s [really-safe-money] rounder :: Ratio Natural -> Natural
  2281. 33.44 s [really-safe-money] - rounder = case r of
  2282. 33.44 s [really-safe-money] - RoundUp -> ceiling
  2283. 33.44 s [really-safe-money] - RoundDown -> floor
  2284. 33.44 s [really-safe-money] - RoundNearest -> round
  2285. 33.44 s [really-safe-money] + rounder = case r of
  2286. 33.44 s [really-safe-money] + RoundUp -> ceiling
  2287. 33.44 s [really-safe-money] + RoundDown -> floor
  2288. 33.44 s [really-safe-money] + RoundNearest -> round
  2289. 33.44 s [really-safe-money] roundedResult :: Natural
  2290. 33.44 s [really-safe-money] roundedResult = rounder theoreticalResult
  2291. 33.44 s [really-safe-money] actualRate :: Ratio Natural
  2292. 33.44 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:681:12-37
  2293. 33.44 s [really-safe-money] @@ -678,7 +678,7 @@
  2294. 33.44 s [really-safe-money] maxBoundN :: Natural
  2295. 33.44 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  2296. 33.44 s [really-safe-money] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  2297. 33.44 s [really-safe-money] - in ( if roundedResult > maxBoundN
  2298. 33.44 s [really-safe-money] + in ( if True
  2299. 33.44 s [really-safe-money] then Nothing
  2300. 33.44 s [really-safe-money] else Just result,
  2301. 33.44 s [really-safe-money] actualRate
  2302. 33.44 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:681:12-37
  2303. 33.44 s [really-safe-money] @@ -678,7 +678,7 @@
  2304. 33.44 s [really-safe-money] maxBoundN :: Natural
  2305. 33.44 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  2306. 33.44 s [really-safe-money] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  2307. 33.44 s [really-safe-money] - in ( if roundedResult > maxBoundN
  2308. 33.44 s [really-safe-money] + in ( if False
  2309. 33.44 s [really-safe-money] then Nothing
  2310. 33.44 s [really-safe-money] else Just result,
  2311. 33.44 s [really-safe-money] actualRate
  2312. 33.44 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:681:12-37
  2313. 33.44 s [really-safe-money] @@ -678,7 +678,7 @@
  2314. 33.44 s [really-safe-money] maxBoundN :: Natural
  2315. 33.44 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  2316. 33.44 s [really-safe-money] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  2317. 33.44 s [really-safe-money] - in ( if roundedResult > maxBoundN
  2318. 33.44 s [really-safe-money] + in ( if not (roundedResult > maxBoundN)
  2319. 33.44 s [really-safe-money] then Nothing
  2320. 33.44 s [really-safe-money] else Just result,
  2321. 33.44 s [really-safe-money] actualRate
  2322. 33.44 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:681:9-27
  2323. 33.44 s [really-safe-money] @@ -678,9 +678,9 @@
  2324. 33.44 s [really-safe-money] maxBoundN :: Natural
  2325. 33.44 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  2326. 33.44 s [really-safe-money] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  2327. 33.44 s [really-safe-money] - in ( if roundedResult > maxBoundN
  2328. 33.44 s [really-safe-money] - then Nothing
  2329. 33.44 s [really-safe-money] - else Just result,
  2330. 33.44 s [really-safe-money] + in ( if roundedResult > maxBoundN
  2331. 33.44 s [really-safe-money] + then Nothing
  2332. 33.44 s [really-safe-money] + else Just result,
  2333. 33.44 s [really-safe-money] actualRate
  2334. 33.44 s [really-safe-money] )
  2335. 33.44 s [really-safe-money]
  2336. 33.44 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:806:79-92
  2337. 33.44 s [really-safe-money] @@ -803,4 +803,4 @@
  2338. 33.44 s [really-safe-money]
  2339. 33.44 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  2340. 33.44 s [really-safe-money] validateStrictlyPositive :: Amount -> Validation
  2341. 33.44 s [really-safe-money] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  2342. 33.44 s [really-safe-money] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ True
  2343. 33.44 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:806:79-92
  2344. 33.44 s [really-safe-money] @@ -803,4 +803,4 @@
  2345. 33.44 s [really-safe-money]
  2346. 33.44 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  2347. 33.44 s [really-safe-money] validateStrictlyPositive :: Amount -> Validation
  2348. 33.44 s [really-safe-money] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  2349. 33.44 s [really-safe-money] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ False
  2350. 33.44 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:806:79-92
  2351. 33.44 s [really-safe-money] @@ -803,4 +803,4 @@
  2352. 33.44 s [really-safe-money]
  2353. 33.44 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  2354. 33.44 s [really-safe-money] validateStrictlyPositive :: Amount -> Validation
  2355. 33.44 s [really-safe-money] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  2356. 33.44 s [really-safe-money] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ not (amount > zero)
  2357. 33.44 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:607:15-22
  2358. 33.44 s [really-safe-money] @@ -604,7 +604,7 @@
  2359. 33.44 s [really-safe-money] case ad of
  2360. 33.44 s [really-safe-money] DistributedIntoUnequalChunks _ a1 _ a2 ->
  2361. 33.44 s [really-safe-money] declare "The larger chunks are larger" $
  2362. 33.44 s [really-safe-money] - a1 > a2
  2363. 33.44 s [really-safe-money] + True
  2364. 33.44 s [really-safe-money] _ -> valid
  2365. 33.44 s [really-safe-money] ]
  2366. 33.44 s [really-safe-money]
  2367. 33.44 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:607:15-22
  2368. 33.44 s [really-safe-money] @@ -604,7 +604,7 @@
  2369. 33.44 s [really-safe-money] case ad of
  2370. 33.44 s [really-safe-money] DistributedIntoUnequalChunks _ a1 _ a2 ->
  2371. 33.44 s [really-safe-money] declare "The larger chunks are larger" $
  2372. 33.44 s [really-safe-money] - a1 > a2
  2373. 33.44 s [really-safe-money] + False
  2374. 33.44 s [really-safe-money] _ -> valid
  2375. 33.44 s [really-safe-money] ]
  2376. 33.44 s [really-safe-money]
  2377. 33.44 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:607:15-22
  2378. 33.44 s [really-safe-money] @@ -604,7 +604,7 @@
  2379. 33.44 s [really-safe-money] case ad of
  2380. 33.44 s [really-safe-money] DistributedIntoUnequalChunks _ a1 _ a2 ->
  2381. 33.44 s [really-safe-money] declare "The larger chunks are larger" $
  2382. 33.44 s [really-safe-money] - a1 > a2
  2383. 33.44 s [really-safe-money] + not (a1 > a2)
  2384. 33.44 s [really-safe-money] _ -> valid
  2385. 33.44 s [really-safe-money] ]
  2386. 33.44 s [really-safe-money]
  2387. 33.44 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:604:9-21
  2388. 33.44 s [really-safe-money] @@ -601,11 +601,11 @@
  2389. 33.44 s [really-safe-money] validate ad =
  2390. 33.44 s [really-safe-money] mconcat
  2391. 33.44 s [really-safe-money] [ genericValidate ad,
  2392. 33.44 s [really-safe-money] - case ad of
  2393. 33.44 s [really-safe-money] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  2394. 33.44 s [really-safe-money] - declare "The larger chunks are larger" $
  2395. 33.44 s [really-safe-money] - a1 > a2
  2396. 33.44 s [really-safe-money] - _ -> valid
  2397. 33.44 s [really-safe-money] + case ad of
  2398. 33.44 s [really-safe-money] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  2399. 33.44 s [really-safe-money] + declare "The larger chunks are larger" $
  2400. 33.44 s [really-safe-money] + a1 > a2
  2401. 33.44 s [really-safe-money] + _ -> valid
  2402. 33.44 s [really-safe-money] ]
  2403. 33.44 s [really-safe-money]
  2404. 33.44 s [really-safe-money] instance (NFData amount) => NFData (Distribution amount)
  2405. 33.44 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:604:9-21
  2406. 33.44 s [really-safe-money] @@ -601,11 +601,11 @@
  2407. 33.44 s [really-safe-money] validate ad =
  2408. 33.44 s [really-safe-money] mconcat
  2409. 33.44 s [really-safe-money] [ genericValidate ad,
  2410. 33.44 s [really-safe-money] - case ad of
  2411. 33.44 s [really-safe-money] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  2412. 33.44 s [really-safe-money] - declare "The larger chunks are larger" $
  2413. 33.44 s [really-safe-money] - a1 > a2
  2414. 33.44 s [really-safe-money] - _ -> valid
  2415. 33.44 s [really-safe-money] + case ad of
  2416. 33.44 s [really-safe-money] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  2417. 33.44 s [really-safe-money] + declare "The larger chunks are larger" $
  2418. 33.44 s [really-safe-money] + a1 > a2
  2419. 33.44 s [really-safe-money] + _ -> valid
  2420. 33.44 s [really-safe-money] ]
  2421. 33.44 s [really-safe-money]
  2422. 33.44 s [really-safe-money] instance (NFData amount) => NFData (Distribution amount)
  2423. 33.44 s [really-safe-money] added mutation ListLit at src/Money/Amount.hs:603:7-8
  2424. 33.44 s [really-safe-money] @@ -600,13 +600,7 @@
  2425. 33.44 s [really-safe-money] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  2426. 33.44 s [really-safe-money] validate ad =
  2427. 33.44 s [really-safe-money] mconcat
  2428. 33.44 s [really-safe-money] - [ genericValidate ad,
  2429. 33.44 s [really-safe-money] - case ad of
  2430. 33.45 s [really-safe-money] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  2431. 33.45 s [really-safe-money] - declare "The larger chunks are larger" $
  2432. 33.45 s [really-safe-money] - a1 > a2
  2433. 33.45 s [really-safe-money] - _ -> valid
  2434. 33.45 s [really-safe-money] - ]
  2435. 33.45 s [really-safe-money] + []
  2436. 33.45 s [really-safe-money]
  2437. 33.45 s [really-safe-money] instance (NFData amount) => NFData (Distribution amount)
  2438. 33.45 s [really-safe-money]
  2439. 33.45 s [really-safe-money] added mutation ListLit at src/Money/Amount.hs:603:7-8
  2440. 33.45 s [really-safe-money] @@ -600,13 +600,13 @@
  2441. 33.45 s [really-safe-money] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  2442. 33.45 s [really-safe-money] validate ad =
  2443. 33.45 s [really-safe-money] mconcat
  2444. 33.45 s [really-safe-money] - [ genericValidate ad,
  2445. 33.45 s [really-safe-money] - case ad of
  2446. 33.45 s [really-safe-money] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  2447. 33.45 s [really-safe-money] - declare "The larger chunks are larger" $
  2448. 33.45 s [really-safe-money] - a1 > a2
  2449. 33.45 s [really-safe-money] - _ -> valid
  2450. 33.45 s [really-safe-money] - ]
  2451. 33.45 s [really-safe-money] + [ genericValidate ad,
  2452. 33.45 s [really-safe-money] + case ad of
  2453. 33.45 s [really-safe-money] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  2454. 33.45 s [really-safe-money] + declare "The larger chunks are larger" $
  2455. 33.45 s [really-safe-money] + a1 > a2
  2456. 33.45 s [really-safe-money] + _ -> valid
  2457. 33.45 s [really-safe-money] + ]
  2458. 33.45 s [really-safe-money]
  2459. 33.45 s [really-safe-money] instance (NFData amount) => NFData (Distribution amount)
  2460. 33.45 s [really-safe-money]
  2461. 33.45 s [really-safe-money] added 81 mutations
  2462. 35.39 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 )
  2463. 35.42 s [really-safe-money] mutation: instrumenting Money.MultiAmount
  2464. 35.42 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
  2465. 35.42 s [really-safe-money] @@ -156,10 +156,10 @@
  2466. 35.42 s [really-safe-money] fmap
  2467. 35.42 s [really-safe-money] ( ( \theoreticalResult ->
  2468. 35.42 s [really-safe-money] let rounder :: Ratio Natural -> Natural
  2469. 35.42 s [really-safe-money] - rounder = case r of
  2470. 35.42 s [really-safe-money] - RoundUp -> ceiling
  2471. 35.42 s [really-safe-money] - RoundDown -> floor
  2472. 35.42 s [really-safe-money] - RoundNearest -> round
  2473. 35.42 s [really-safe-money] + rounder = case r of
  2474. 35.42 s [really-safe-money] + RoundUp -> ceiling
  2475. 35.42 s [really-safe-money] + RoundDown -> floor
  2476. 35.42 s [really-safe-money] + RoundNearest -> round
  2477. 35.42 s [really-safe-money] roundedResult :: Natural
  2478. 35.42 s [really-safe-money] roundedResult = rounder theoreticalResult
  2479. 35.42 s [really-safe-money] maxBoundN :: Natural
  2480. 35.42 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
  2481. 35.42 s [really-safe-money] @@ -156,10 +156,10 @@
  2482. 35.42 s [really-safe-money] fmap
  2483. 35.42 s [really-safe-money] ( ( \theoreticalResult ->
  2484. 35.42 s [really-safe-money] let rounder :: Ratio Natural -> Natural
  2485. 35.42 s [really-safe-money] - rounder = case r of
  2486. 35.42 s [really-safe-money] - RoundUp -> ceiling
  2487. 35.42 s [really-safe-money] - RoundDown -> floor
  2488. 35.42 s [really-safe-money] - RoundNearest -> round
  2489. 35.42 s [really-safe-money] + rounder = case r of
  2490. 35.42 s [really-safe-money] + RoundUp -> ceiling
  2491. 35.42 s [really-safe-money] + RoundDown -> floor
  2492. 35.42 s [really-safe-money] + RoundNearest -> round
  2493. 35.42 s [really-safe-money] roundedResult :: Natural
  2494. 35.42 s [really-safe-money] roundedResult = rounder theoreticalResult
  2495. 35.42 s [really-safe-money] maxBoundN :: Natural
  2496. 35.42 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
  2497. 35.42 s [really-safe-money] @@ -156,10 +156,10 @@
  2498. 35.42 s [really-safe-money] fmap
  2499. 35.42 s [really-safe-money] ( ( \theoreticalResult ->
  2500. 35.42 s [really-safe-money] let rounder :: Ratio Natural -> Natural
  2501. 35.42 s [really-safe-money] - rounder = case r of
  2502. 35.42 s [really-safe-money] - RoundUp -> ceiling
  2503. 35.42 s [really-safe-money] - RoundDown -> floor
  2504. 35.42 s [really-safe-money] - RoundNearest -> round
  2505. 35.42 s [really-safe-money] + rounder = case r of
  2506. 35.42 s [really-safe-money] + RoundUp -> ceiling
  2507. 35.42 s [really-safe-money] + RoundDown -> floor
  2508. 35.42 s [really-safe-money] + RoundNearest -> round
  2509. 35.42 s [really-safe-money] roundedResult :: Natural
  2510. 35.42 s [really-safe-money] roundedResult = rounder theoreticalResult
  2511. 35.42 s [really-safe-money] maxBoundN :: Natural
  2512. 35.42 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:168:20-45
  2513. 35.42 s [really-safe-money] @@ -165,7 +165,7 @@
  2514. 35.42 s [really-safe-money] maxBoundN :: Natural
  2515. 35.42 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  2516. 35.42 s [really-safe-money] actualResult =
  2517. 35.42 s [really-safe-money] - if roundedResult > maxBoundN
  2518. 35.42 s [really-safe-money] + if True
  2519. 35.42 s [really-safe-money] then Nothing
  2520. 35.42 s [really-safe-money] else Just (fromIntegral roundedResult)
  2521. 35.42 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2522. 35.42 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:168:20-45
  2523. 35.42 s [really-safe-money] @@ -165,7 +165,7 @@
  2524. 35.42 s [really-safe-money] maxBoundN :: Natural
  2525. 35.42 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  2526. 35.42 s [really-safe-money] actualResult =
  2527. 35.42 s [really-safe-money] - if roundedResult > maxBoundN
  2528. 35.42 s [really-safe-money] + if False
  2529. 35.42 s [really-safe-money] then Nothing
  2530. 35.42 s [really-safe-money] else Just (fromIntegral roundedResult)
  2531. 35.42 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2532. 35.42 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:168:20-45
  2533. 35.42 s [really-safe-money] @@ -165,7 +165,7 @@
  2534. 35.42 s [really-safe-money] maxBoundN :: Natural
  2535. 35.42 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  2536. 35.42 s [really-safe-money] actualResult =
  2537. 35.42 s [really-safe-money] - if roundedResult > maxBoundN
  2538. 35.42 s [really-safe-money] + if not (roundedResult > maxBoundN)
  2539. 35.42 s [really-safe-money] then Nothing
  2540. 35.42 s [really-safe-money] else Just (fromIntegral roundedResult)
  2541. 35.42 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2542. 35.42 s [really-safe-money] added mutation CondFlip at src/Money/MultiAmount.hs:168:17-57
  2543. 35.42 s [really-safe-money] @@ -165,9 +165,9 @@
  2544. 35.42 s [really-safe-money] maxBoundN :: Natural
  2545. 35.42 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  2546. 35.42 s [really-safe-money] actualResult =
  2547. 35.42 s [really-safe-money] - if roundedResult > maxBoundN
  2548. 35.42 s [really-safe-money] - then Nothing
  2549. 35.42 s [really-safe-money] - else Just (fromIntegral roundedResult)
  2550. 35.42 s [really-safe-money] + if roundedResult > maxBoundN
  2551. 35.42 s [really-safe-money] + then Nothing
  2552. 35.42 s [really-safe-money] + else Just (fromIntegral roundedResult)
  2553. 35.42 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2554. 35.42 s [really-safe-money] LT -> RoundedDown
  2555. 35.42 s [really-safe-money] EQ -> DidNotRound
  2556. 35.42 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
  2557. 35.42 s [really-safe-money] @@ -168,10 +168,10 @@
  2558. 35.42 s [really-safe-money] if roundedResult > maxBoundN
  2559. 35.42 s [really-safe-money] then Nothing
  2560. 35.42 s [really-safe-money] else Just (fromIntegral roundedResult)
  2561. 35.42 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2562. 35.42 s [really-safe-money] - LT -> RoundedDown
  2563. 35.42 s [really-safe-money] - EQ -> DidNotRound
  2564. 35.42 s [really-safe-money] - GT -> RoundedUp
  2565. 35.42 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2566. 35.42 s [really-safe-money] + LT -> RoundedDown
  2567. 35.42 s [really-safe-money] + EQ -> DidNotRound
  2568. 35.42 s [really-safe-money] + GT -> RoundedUp
  2569. 35.42 s [really-safe-money] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
  2570. 35.42 s [really-safe-money] )
  2571. 35.42 s [really-safe-money] . Prelude.sum
  2572. 35.42 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
  2573. 35.42 s [really-safe-money] @@ -168,10 +168,10 @@
  2574. 35.42 s [really-safe-money] if roundedResult > maxBoundN
  2575. 35.42 s [really-safe-money] then Nothing
  2576. 35.42 s [really-safe-money] else Just (fromIntegral roundedResult)
  2577. 35.42 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2578. 35.42 s [really-safe-money] - LT -> RoundedDown
  2579. 35.42 s [really-safe-money] - EQ -> DidNotRound
  2580. 35.42 s [really-safe-money] - GT -> RoundedUp
  2581. 35.42 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2582. 35.42 s [really-safe-money] + LT -> RoundedDown
  2583. 35.42 s [really-safe-money] + EQ -> DidNotRound
  2584. 35.42 s [really-safe-money] + GT -> RoundedUp
  2585. 35.42 s [really-safe-money] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
  2586. 35.42 s [really-safe-money] )
  2587. 35.42 s [really-safe-money] . Prelude.sum
  2588. 35.42 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
  2589. 35.42 s [really-safe-money] @@ -168,10 +168,10 @@
  2590. 35.42 s [really-safe-money] if roundedResult > maxBoundN
  2591. 35.42 s [really-safe-money] then Nothing
  2592. 35.42 s [really-safe-money] else Just (fromIntegral roundedResult)
  2593. 35.42 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2594. 35.42 s [really-safe-money] - LT -> RoundedDown
  2595. 35.42 s [really-safe-money] - EQ -> DidNotRound
  2596. 35.42 s [really-safe-money] - GT -> RoundedUp
  2597. 35.42 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  2598. 35.42 s [really-safe-money] + LT -> RoundedDown
  2599. 35.42 s [really-safe-money] + EQ -> DidNotRound
  2600. 35.42 s [really-safe-money] + GT -> RoundedUp
  2601. 35.42 s [really-safe-money] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
  2602. 35.42 s [really-safe-money] )
  2603. 35.42 s [really-safe-money] . Prelude.sum
  2604. 35.42 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:119:12-28
  2605. 35.42 s [really-safe-money] @@ -116,7 +116,7 @@
  2606. 35.42 s [really-safe-money] Just a -> do
  2607. 35.42 s [really-safe-money] r <- Amount.subtract a amount
  2608. 35.42 s [really-safe-money] Just $
  2609. 35.42 s [really-safe-money] - if r == Amount.zero
  2610. 35.42 s [really-safe-money] + if True
  2611. 35.42 s [really-safe-money] then M.delete currency m
  2612. 35.42 s [really-safe-money] else M.insert currency r m
  2613. 35.42 s [really-safe-money]
  2614. 35.42 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:119:12-28
  2615. 35.42 s [really-safe-money] @@ -116,7 +116,7 @@
  2616. 35.42 s [really-safe-money] Just a -> do
  2617. 35.42 s [really-safe-money] r <- Amount.subtract a amount
  2618. 35.42 s [really-safe-money] Just $
  2619. 35.42 s [really-safe-money] - if r == Amount.zero
  2620. 35.42 s [really-safe-money] + if False
  2621. 35.42 s [really-safe-money] then M.delete currency m
  2622. 35.42 s [really-safe-money] else M.insert currency r m
  2623. 35.42 s [really-safe-money]
  2624. 35.42 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:119:12-28
  2625. 35.42 s [really-safe-money] @@ -116,7 +116,7 @@
  2626. 35.42 s [really-safe-money] Just a -> do
  2627. 35.42 s [really-safe-money] r <- Amount.subtract a amount
  2628. 35.42 s [really-safe-money] Just $
  2629. 35.42 s [really-safe-money] - if r == Amount.zero
  2630. 35.42 s [really-safe-money] + if not (r == Amount.zero)
  2631. 35.42 s [really-safe-money] then M.delete currency m
  2632. 35.42 s [really-safe-money] else M.insert currency r m
  2633. 35.42 s [really-safe-money]
  2634. 35.42 s [really-safe-money] added mutation CondFlip at src/Money/MultiAmount.hs:119:9-37
  2635. 35.42 s [really-safe-money] @@ -116,9 +116,9 @@
  2636. 35.42 s [really-safe-money] Just a -> do
  2637. 35.42 s [really-safe-money] r <- Amount.subtract a amount
  2638. 35.42 s [really-safe-money] Just $
  2639. 35.42 s [really-safe-money] - if r == Amount.zero
  2640. 35.42 s [really-safe-money] - then M.delete currency m
  2641. 35.42 s [really-safe-money] - else M.insert currency r m
  2642. 35.42 s [really-safe-money] + if r == Amount.zero
  2643. 35.42 s [really-safe-money] + then M.delete currency m
  2644. 35.42 s [really-safe-money] + else M.insert currency r m
  2645. 35.42 s [really-safe-money]
  2646. 35.42 s [really-safe-money] -- | Try to convert every amount to one currency.
  2647. 35.42 s [really-safe-money] --
  2648. 35.42 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:114:22-37
  2649. 35.42 s [really-safe-money] @@ -111,14 +111,14 @@
  2650. 35.42 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  2651. 35.42 s [really-safe-money] subtractAmount m _ (Amount 0) = Just m
  2652. 35.42 s [really-safe-money] subtractAmount (MultiAmount m) currency amount =
  2653. 35.42 s [really-safe-money] - fmap MultiAmount $ case M.lookup currency m of
  2654. 35.42 s [really-safe-money] - Nothing -> Nothing -- Can't go below zero
  2655. 35.42 s [really-safe-money] - Just a -> do
  2656. 35.42 s [really-safe-money] - r <- Amount.subtract a amount
  2657. 35.42 s [really-safe-money] - Just $
  2658. 35.42 s [really-safe-money] - if r == Amount.zero
  2659. 35.42 s [really-safe-money] - then M.delete currency m
  2660. 35.42 s [really-safe-money] - else M.insert currency r m
  2661. 35.42 s [really-safe-money] + fmap MultiAmount $ case M.lookup currency m of
  2662. 35.42 s [really-safe-money] + Nothing -> Nothing -- Can't go below zero
  2663. 35.42 s [really-safe-money] + Just a -> do
  2664. 35.42 s [really-safe-money] + r <- Amount.subtract a amount
  2665. 35.42 s [really-safe-money] + Just $
  2666. 35.42 s [really-safe-money] + if r == Amount.zero
  2667. 35.42 s [really-safe-money] + then M.delete currency m
  2668. 35.42 s [really-safe-money] + else M.insert currency r m
  2669. 35.42 s [really-safe-money]
  2670. 35.42 s [really-safe-money] -- | Try to convert every amount to one currency.
  2671. 35.42 s [really-safe-money] --
  2672. 35.42 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:114:22-37
  2673. 35.42 s [really-safe-money] @@ -111,14 +111,14 @@
  2674. 35.42 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  2675. 35.42 s [really-safe-money] subtractAmount m _ (Amount 0) = Just m
  2676. 35.42 s [really-safe-money] subtractAmount (MultiAmount m) currency amount =
  2677. 35.42 s [really-safe-money] - fmap MultiAmount $ case M.lookup currency m of
  2678. 35.42 s [really-safe-money] - Nothing -> Nothing -- Can't go below zero
  2679. 35.42 s [really-safe-money] - Just a -> do
  2680. 35.42 s [really-safe-money] - r <- Amount.subtract a amount
  2681. 35.42 s [really-safe-money] - Just $
  2682. 35.42 s [really-safe-money] - if r == Amount.zero
  2683. 35.42 s [really-safe-money] - then M.delete currency m
  2684. 35.42 s [really-safe-money] - else M.insert currency r m
  2685. 35.42 s [really-safe-money] + fmap MultiAmount $ case M.lookup currency m of
  2686. 35.42 s [really-safe-money] + Nothing -> Nothing -- Can't go below zero
  2687. 35.42 s [really-safe-money] + Just a -> do
  2688. 35.42 s [really-safe-money] + r <- Amount.subtract a amount
  2689. 35.42 s [really-safe-money] + Just $
  2690. 35.42 s [really-safe-money] + if r == Amount.zero
  2691. 35.42 s [really-safe-money] + then M.delete currency m
  2692. 35.42 s [really-safe-money] + else M.insert currency r m
  2693. 35.42 s [really-safe-money]
  2694. 35.42 s [really-safe-money] -- | Try to convert every amount to one currency.
  2695. 35.42 s [really-safe-money] --
  2696. 35.42 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:106:12-28
  2697. 35.42 s [really-safe-money] @@ -103,7 +103,7 @@
  2698. 35.42 s [really-safe-money] Just a -> do
  2699. 35.42 s [really-safe-money] r <- Amount.add a amount
  2700. 35.42 s [really-safe-money] Just $
  2701. 35.42 s [really-safe-money] - if r == Amount.zero
  2702. 35.42 s [really-safe-money] + if True
  2703. 35.42 s [really-safe-money] then M.delete currency m
  2704. 35.42 s [really-safe-money] else M.insert currency r m
  2705. 35.42 s [really-safe-money]
  2706. 35.42 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:106:12-28
  2707. 35.42 s [really-safe-money] @@ -103,7 +103,7 @@
  2708. 35.42 s [really-safe-money] Just a -> do
  2709. 35.42 s [really-safe-money] r <- Amount.add a amount
  2710. 35.43 s [really-safe-money] Just $
  2711. 35.43 s [really-safe-money] - if r == Amount.zero
  2712. 35.43 s [really-safe-money] + if False
  2713. 35.43 s [really-safe-money] then M.delete currency m
  2714. 35.43 s [really-safe-money] else M.insert currency r m
  2715. 35.43 s [really-safe-money]
  2716. 35.43 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:106:12-28
  2717. 35.43 s [really-safe-money] @@ -103,7 +103,7 @@
  2718. 35.43 s [really-safe-money] Just a -> do
  2719. 35.43 s [really-safe-money] r <- Amount.add a amount
  2720. 35.43 s [really-safe-money] Just $
  2721. 35.43 s [really-safe-money] - if r == Amount.zero
  2722. 35.43 s [really-safe-money] + if not (r == Amount.zero)
  2723. 35.43 s [really-safe-money] then M.delete currency m
  2724. 35.43 s [really-safe-money] else M.insert currency r m
  2725. 35.43 s [really-safe-money]
  2726. 35.43 s [really-safe-money] added mutation CondFlip at src/Money/MultiAmount.hs:106:9-37
  2727. 35.43 s [really-safe-money] @@ -103,9 +103,9 @@
  2728. 35.43 s [really-safe-money] Just a -> do
  2729. 35.43 s [really-safe-money] r <- Amount.add a amount
  2730. 35.43 s [really-safe-money] Just $
  2731. 35.43 s [really-safe-money] - if r == Amount.zero
  2732. 35.43 s [really-safe-money] - then M.delete currency m
  2733. 35.43 s [really-safe-money] - else M.insert currency r m
  2734. 35.43 s [really-safe-money] + if r == Amount.zero
  2735. 35.43 s [really-safe-money] + then M.delete currency m
  2736. 35.43 s [really-safe-money] + else M.insert currency r m
  2737. 35.43 s [really-safe-money]
  2738. 35.43 s [really-safe-money] -- | Subtract an 'Amount' from a 'MultiAmount'
  2739. 35.43 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  2740. 35.43 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:101:22-37
  2741. 35.43 s [really-safe-money] @@ -98,14 +98,14 @@
  2742. 35.43 s [really-safe-money] addAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  2743. 35.43 s [really-safe-money] addAmount m _ (Amount 0) = Just m
  2744. 35.43 s [really-safe-money] addAmount (MultiAmount m) currency amount =
  2745. 35.43 s [really-safe-money] - fmap MultiAmount $ case M.lookup currency m of
  2746. 35.43 s [really-safe-money] - Nothing -> Just $ M.insert currency amount m
  2747. 35.43 s [really-safe-money] - Just a -> do
  2748. 35.43 s [really-safe-money] - r <- Amount.add a amount
  2749. 35.43 s [really-safe-money] - Just $
  2750. 35.43 s [really-safe-money] - if r == Amount.zero
  2751. 35.43 s [really-safe-money] - then M.delete currency m
  2752. 35.43 s [really-safe-money] - else M.insert currency r m
  2753. 35.43 s [really-safe-money] + fmap MultiAmount $ case M.lookup currency m of
  2754. 35.43 s [really-safe-money] + Nothing -> Just $ M.insert currency amount m
  2755. 35.43 s [really-safe-money] + Just a -> do
  2756. 35.43 s [really-safe-money] + r <- Amount.add a amount
  2757. 35.43 s [really-safe-money] + Just $
  2758. 35.43 s [really-safe-money] + if r == Amount.zero
  2759. 35.43 s [really-safe-money] + then M.delete currency m
  2760. 35.43 s [really-safe-money] + else M.insert currency r m
  2761. 35.43 s [really-safe-money]
  2762. 35.43 s [really-safe-money] -- | Subtract an 'Amount' from a 'MultiAmount'
  2763. 35.43 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  2764. 35.43 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:101:22-37
  2765. 35.43 s [really-safe-money] @@ -98,14 +98,14 @@
  2766. 35.43 s [really-safe-money] addAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  2767. 35.43 s [really-safe-money] addAmount m _ (Amount 0) = Just m
  2768. 35.43 s [really-safe-money] addAmount (MultiAmount m) currency amount =
  2769. 35.43 s [really-safe-money] - fmap MultiAmount $ case M.lookup currency m of
  2770. 35.43 s [really-safe-money] - Nothing -> Just $ M.insert currency amount m
  2771. 35.43 s [really-safe-money] - Just a -> do
  2772. 35.43 s [really-safe-money] - r <- Amount.add a amount
  2773. 35.43 s [really-safe-money] - Just $
  2774. 35.43 s [really-safe-money] - if r == Amount.zero
  2775. 35.43 s [really-safe-money] - then M.delete currency m
  2776. 35.43 s [really-safe-money] - else M.insert currency r m
  2777. 35.43 s [really-safe-money] + fmap MultiAmount $ case M.lookup currency m of
  2778. 35.43 s [really-safe-money] + Nothing -> Just $ M.insert currency amount m
  2779. 35.43 s [really-safe-money] + Just a -> do
  2780. 35.43 s [really-safe-money] + r <- Amount.add a amount
  2781. 35.43 s [really-safe-money] + Just $
  2782. 35.43 s [really-safe-money] + if r == Amount.zero
  2783. 35.43 s [really-safe-money] + then M.delete currency m
  2784. 35.43 s [really-safe-money] + else M.insert currency r m
  2785. 35.43 s [really-safe-money]
  2786. 35.43 s [really-safe-money] -- | Subtract an 'Amount' from a 'MultiAmount'
  2787. 35.43 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  2788. 35.43 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:73:6-27
  2789. 35.43 s [really-safe-money] @@ -70,7 +70,7 @@
  2790. 35.43 s [really-safe-money]
  2791. 35.43 s [really-safe-money] fromAmount :: currency -> Amount -> MultiAmount currency
  2792. 35.43 s [really-safe-money] fromAmount currency amount =
  2793. 35.43 s [really-safe-money] - if amount == Amount.zero
  2794. 35.43 s [really-safe-money] + if True
  2795. 35.43 s [really-safe-money] then zero
  2796. 35.43 s [really-safe-money] else MultiAmount $ M.singleton currency amount
  2797. 35.43 s [really-safe-money]
  2798. 35.43 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:73:6-27
  2799. 35.43 s [really-safe-money] @@ -70,7 +70,7 @@
  2800. 35.43 s [really-safe-money]
  2801. 35.43 s [really-safe-money] fromAmount :: currency -> Amount -> MultiAmount currency
  2802. 35.43 s [really-safe-money] fromAmount currency amount =
  2803. 35.43 s [really-safe-money] - if amount == Amount.zero
  2804. 35.43 s [really-safe-money] + if False
  2805. 35.43 s [really-safe-money] then zero
  2806. 35.43 s [really-safe-money] else MultiAmount $ M.singleton currency amount
  2807. 35.43 s [really-safe-money]
  2808. 35.43 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:73:6-27
  2809. 35.43 s [really-safe-money] @@ -70,7 +70,7 @@
  2810. 35.43 s [really-safe-money]
  2811. 35.43 s [really-safe-money] fromAmount :: currency -> Amount -> MultiAmount currency
  2812. 35.43 s [really-safe-money] fromAmount currency amount =
  2813. 35.43 s [really-safe-money] - if amount == Amount.zero
  2814. 35.43 s [really-safe-money] + if not (amount == Amount.zero)
  2815. 35.43 s [really-safe-money] then zero
  2816. 35.43 s [really-safe-money] else MultiAmount $ M.singleton currency amount
  2817. 35.43 s [really-safe-money]
  2818. 35.43 s [really-safe-money] added mutation CondFlip at src/Money/MultiAmount.hs:73:3-51
  2819. 35.43 s [really-safe-money] @@ -70,9 +70,9 @@
  2820. 35.43 s [really-safe-money]
  2821. 35.43 s [really-safe-money] fromAmount :: currency -> Amount -> MultiAmount currency
  2822. 35.43 s [really-safe-money] fromAmount currency amount =
  2823. 35.43 s [really-safe-money] - if amount == Amount.zero
  2824. 35.43 s [really-safe-money] - then zero
  2825. 35.43 s [really-safe-money] - else MultiAmount $ M.singleton currency amount
  2826. 35.43 s [really-safe-money] + if amount == Amount.zero
  2827. 35.43 s [really-safe-money] + then zero
  2828. 35.43 s [really-safe-money] + else MultiAmount $ M.singleton currency amount
  2829. 35.43 s [really-safe-money]
  2830. 35.43 s [really-safe-money] -- | No money of any currency
  2831. 35.43 s [really-safe-money] zero :: MultiAmount currency
  2832. 35.43 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:66:13-29
  2833. 35.43 s [really-safe-money] @@ -63,7 +63,7 @@
  2834. 35.43 s [really-safe-money] [ genericValidate ma,
  2835. 35.43 s [really-safe-money] decorateMap m $ \_ a ->
  2836. 35.43 s [really-safe-money] declare "The amount is not zero" $
  2837. 35.43 s [really-safe-money] - a /= Amount.zero
  2838. 35.43 s [really-safe-money] + True
  2839. 35.43 s [really-safe-money] ]
  2840. 35.43 s [really-safe-money]
  2841. 35.43 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  2842. 35.43 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:66:13-29
  2843. 35.43 s [really-safe-money] @@ -63,7 +63,7 @@
  2844. 35.43 s [really-safe-money] [ genericValidate ma,
  2845. 35.43 s [really-safe-money] decorateMap m $ \_ a ->
  2846. 35.43 s [really-safe-money] declare "The amount is not zero" $
  2847. 35.43 s [really-safe-money] - a /= Amount.zero
  2848. 35.43 s [really-safe-money] + False
  2849. 35.43 s [really-safe-money] ]
  2850. 35.43 s [really-safe-money]
  2851. 35.43 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  2852. 35.43 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:66:13-29
  2853. 35.43 s [really-safe-money] @@ -63,7 +63,7 @@
  2854. 35.43 s [really-safe-money] [ genericValidate ma,
  2855. 35.43 s [really-safe-money] decorateMap m $ \_ a ->
  2856. 35.43 s [really-safe-money] declare "The amount is not zero" $
  2857. 35.43 s [really-safe-money] - a /= Amount.zero
  2858. 35.43 s [really-safe-money] + not (a /= Amount.zero)
  2859. 35.43 s [really-safe-money] ]
  2860. 35.43 s [really-safe-money]
  2861. 35.43 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  2862. 35.43 s [really-safe-money] added mutation ListLit at src/Money/MultiAmount.hs:63:7-8
  2863. 35.43 s [really-safe-money] @@ -60,11 +60,7 @@
  2864. 35.43 s [really-safe-money] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
  2865. 35.43 s [really-safe-money] validate ma@(MultiAmount m) =
  2866. 35.43 s [really-safe-money] mconcat
  2867. 35.43 s [really-safe-money] - [ genericValidate ma,
  2868. 35.43 s [really-safe-money] - decorateMap m $ \_ a ->
  2869. 35.43 s [really-safe-money] - declare "The amount is not zero" $
  2870. 35.43 s [really-safe-money] - a /= Amount.zero
  2871. 35.43 s [really-safe-money] - ]
  2872. 35.43 s [really-safe-money] + []
  2873. 35.43 s [really-safe-money]
  2874. 35.43 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  2875. 35.43 s [really-safe-money]
  2876. 35.43 s [really-safe-money] added mutation ListLit at src/Money/MultiAmount.hs:63:7-8
  2877. 35.43 s [really-safe-money] @@ -60,11 +60,11 @@
  2878. 35.43 s [really-safe-money] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
  2879. 35.43 s [really-safe-money] validate ma@(MultiAmount m) =
  2880. 35.43 s [really-safe-money] mconcat
  2881. 35.43 s [really-safe-money] - [ genericValidate ma,
  2882. 35.43 s [really-safe-money] - decorateMap m $ \_ a ->
  2883. 35.43 s [really-safe-money] - declare "The amount is not zero" $
  2884. 35.43 s [really-safe-money] - a /= Amount.zero
  2885. 35.43 s [really-safe-money] - ]
  2886. 35.43 s [really-safe-money] + [ genericValidate ma,
  2887. 35.43 s [really-safe-money] + decorateMap m $ \_ a ->
  2888. 35.43 s [really-safe-money] + declare "The amount is not zero" $
  2889. 35.43 s [really-safe-money] + a /= Amount.zero
  2890. 35.43 s [really-safe-money] + ]
  2891. 35.43 s [really-safe-money]
  2892. 35.43 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  2893. 35.43 s [really-safe-money]
  2894. 35.43 s [really-safe-money] added 31 mutations
  2895. 36.01 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 )
  2896. 36.02 s [really-safe-money] mutation: instrumenting Money.AmountOf
  2897. 36.02 s [really-safe-money] added mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  2898. 36.02 s [really-safe-money] @@ -212,11 +212,11 @@
  2899. 36.02 s [really-safe-money]
  2900. 36.02 s [really-safe-money] -- | See 'Amount.distribute'
  2901. 36.02 s [really-safe-money] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  2902. 36.02 s [really-safe-money] -distribute (AmountOf a) f = case Amount.distribute a f of
  2903. 36.02 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  2904. 36.02 s [really-safe-money] - DistributedZero -> DistributedZero
  2905. 36.02 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  2906. 36.02 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  2907. 36.02 s [really-safe-money] +distribute (AmountOf a) f = case Amount.distribute a f of
  2908. 36.02 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  2909. 36.02 s [really-safe-money] + DistributedZero -> DistributedZero
  2910. 36.02 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  2911. 36.02 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  2912. 36.02 s [really-safe-money]
  2913. 36.02 s [really-safe-money] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  2914. 36.02 s [really-safe-money]
  2915. 36.02 s [really-safe-money] added mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  2916. 36.02 s [really-safe-money] @@ -212,11 +212,11 @@
  2917. 36.02 s [really-safe-money]
  2918. 36.02 s [really-safe-money] -- | See 'Amount.distribute'
  2919. 36.02 s [really-safe-money] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  2920. 36.02 s [really-safe-money] -distribute (AmountOf a) f = case Amount.distribute a f of
  2921. 36.02 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  2922. 36.02 s [really-safe-money] - DistributedZero -> DistributedZero
  2923. 36.02 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  2924. 36.02 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  2925. 36.02 s [really-safe-money] +distribute (AmountOf a) f = case Amount.distribute a f of
  2926. 36.02 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  2927. 36.03 s [really-safe-money] + DistributedZero -> DistributedZero
  2928. 36.03 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  2929. 36.03 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  2930. 36.03 s [really-safe-money]
  2931. 36.03 s [really-safe-money] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  2932. 36.03 s [really-safe-money]
  2933. 36.03 s [really-safe-money] added mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  2934. 36.03 s [really-safe-money] @@ -212,11 +212,11 @@
  2935. 36.03 s [really-safe-money]
  2936. 36.03 s [really-safe-money] -- | See 'Amount.distribute'
  2937. 36.03 s [really-safe-money] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  2938. 36.03 s [really-safe-money] -distribute (AmountOf a) f = case Amount.distribute a f of
  2939. 36.03 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  2940. 36.03 s [really-safe-money] - DistributedZero -> DistributedZero
  2941. 36.03 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  2942. 36.03 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  2943. 36.03 s [really-safe-money] +distribute (AmountOf a) f = case Amount.distribute a f of
  2944. 36.03 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  2945. 36.03 s [really-safe-money] + DistributedZero -> DistributedZero
  2946. 36.03 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  2947. 36.03 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  2948. 36.03 s [really-safe-money]
  2949. 36.03 s [really-safe-money] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  2950. 36.03 s [really-safe-money]
  2951. 36.03 s [really-safe-money] added mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  2952. 36.03 s [really-safe-money] @@ -212,11 +212,11 @@
  2953. 36.03 s [really-safe-money]
  2954. 36.03 s [really-safe-money] -- | See 'Amount.distribute'
  2955. 36.03 s [really-safe-money] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  2956. 36.03 s [really-safe-money] -distribute (AmountOf a) f = case Amount.distribute a f of
  2957. 36.03 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  2958. 36.03 s [really-safe-money] - DistributedZero -> DistributedZero
  2959. 36.03 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  2960. 36.03 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  2961. 36.03 s [really-safe-money] +distribute (AmountOf a) f = case Amount.distribute a f of
  2962. 36.03 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  2963. 36.03 s [really-safe-money] + DistributedZero -> DistributedZero
  2964. 36.03 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  2965. 36.03 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  2966. 36.03 s [really-safe-money]
  2967. 36.03 s [really-safe-money] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  2968. 36.03 s [really-safe-money]
  2969. 36.03 s [really-safe-money] added 4 mutations
  2970. 36.21 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 )
  2971. 36.23 s [really-safe-money] mutation: instrumenting Money.Account
  2972. 36.23 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:553:7-39
  2973. 36.23 s [really-safe-money] @@ -550,11 +550,11 @@
  2974. 36.23 s [really-safe-money] let aa1 = abs a1
  2975. 36.23 s [really-safe-money] aa2 = abs a2
  2976. 36.23 s [really-safe-money] mr = Amount.rate qf1 aa1 qf2 aa2
  2977. 36.23 s [really-safe-money] - in case (a1, a2) of
  2978. 36.23 s [really-safe-money] - (Positive _, Positive _) -> mr
  2979. 36.23 s [really-safe-money] - (Positive _, Negative _) -> Nothing
  2980. 36.23 s [really-safe-money] - (Negative _, Positive _) -> Nothing
  2981. 36.23 s [really-safe-money] - (Negative _, Negative _) -> mr
  2982. 36.23 s [really-safe-money] + in case (a1, a2) of
  2983. 36.23 s [really-safe-money] + (Positive _, Positive _) -> mr
  2984. 36.23 s [really-safe-money] + (Positive _, Negative _) -> Nothing
  2985. 36.23 s [really-safe-money] + (Negative _, Positive _) -> Nothing
  2986. 36.23 s [really-safe-money] + (Negative _, Negative _) -> mr
  2987. 36.23 s [really-safe-money]
  2988. 36.23 s [really-safe-money] -- | Convert an amount of money of one currency into an amount of money of
  2989. 36.23 s [really-safe-money] -- another currency using a conversion rate.
  2990. 36.23 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:553:7-39
  2991. 36.23 s [really-safe-money] @@ -550,11 +550,11 @@
  2992. 36.23 s [really-safe-money] let aa1 = abs a1
  2993. 36.23 s [really-safe-money] aa2 = abs a2
  2994. 36.23 s [really-safe-money] mr = Amount.rate qf1 aa1 qf2 aa2
  2995. 36.23 s [really-safe-money] - in case (a1, a2) of
  2996. 36.23 s [really-safe-money] - (Positive _, Positive _) -> mr
  2997. 36.23 s [really-safe-money] - (Positive _, Negative _) -> Nothing
  2998. 36.23 s [really-safe-money] - (Negative _, Positive _) -> Nothing
  2999. 36.23 s [really-safe-money] - (Negative _, Negative _) -> mr
  3000. 36.23 s [really-safe-money] + in case (a1, a2) of
  3001. 36.23 s [really-safe-money] + (Positive _, Positive _) -> mr
  3002. 36.23 s [really-safe-money] + (Positive _, Negative _) -> Nothing
  3003. 36.23 s [really-safe-money] + (Negative _, Positive _) -> Nothing
  3004. 36.23 s [really-safe-money] + (Negative _, Negative _) -> mr
  3005. 36.23 s [really-safe-money]
  3006. 36.23 s [really-safe-money] -- | Convert an amount of money of one currency into an amount of money of
  3007. 36.23 s [really-safe-money] -- another currency using a conversion rate.
  3008. 36.23 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:553:7-39
  3009. 36.23 s [really-safe-money] @@ -550,11 +550,11 @@
  3010. 36.23 s [really-safe-money] let aa1 = abs a1
  3011. 36.23 s [really-safe-money] aa2 = abs a2
  3012. 36.23 s [really-safe-money] mr = Amount.rate qf1 aa1 qf2 aa2
  3013. 36.23 s [really-safe-money] - in case (a1, a2) of
  3014. 36.23 s [really-safe-money] - (Positive _, Positive _) -> mr
  3015. 36.23 s [really-safe-money] - (Positive _, Negative _) -> Nothing
  3016. 36.23 s [really-safe-money] - (Negative _, Positive _) -> Nothing
  3017. 36.23 s [really-safe-money] - (Negative _, Negative _) -> mr
  3018. 36.23 s [really-safe-money] + in case (a1, a2) of
  3019. 36.23 s [really-safe-money] + (Positive _, Positive _) -> mr
  3020. 36.23 s [really-safe-money] + (Positive _, Negative _) -> Nothing
  3021. 36.23 s [really-safe-money] + (Negative _, Positive _) -> Nothing
  3022. 36.23 s [really-safe-money] + (Negative _, Negative _) -> mr
  3023. 36.23 s [really-safe-money]
  3024. 36.23 s [really-safe-money] -- | Convert an amount of money of one currency into an amount of money of
  3025. 36.23 s [really-safe-money] -- another currency using a conversion rate.
  3026. 36.23 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:553:7-39
  3027. 36.23 s [really-safe-money] @@ -550,11 +550,11 @@
  3028. 36.23 s [really-safe-money] let aa1 = abs a1
  3029. 36.23 s [really-safe-money] aa2 = abs a2
  3030. 36.23 s [really-safe-money] mr = Amount.rate qf1 aa1 qf2 aa2
  3031. 36.23 s [really-safe-money] - in case (a1, a2) of
  3032. 36.23 s [really-safe-money] - (Positive _, Positive _) -> mr
  3033. 36.23 s [really-safe-money] - (Positive _, Negative _) -> Nothing
  3034. 36.23 s [really-safe-money] - (Negative _, Positive _) -> Nothing
  3035. 36.23 s [really-safe-money] - (Negative _, Negative _) -> mr
  3036. 36.23 s [really-safe-money] + in case (a1, a2) of
  3037. 36.23 s [really-safe-money] + (Positive _, Positive _) -> mr
  3038. 36.23 s [really-safe-money] + (Positive _, Negative _) -> Nothing
  3039. 36.23 s [really-safe-money] + (Negative _, Positive _) -> Nothing
  3040. 36.23 s [really-safe-money] + (Negative _, Negative _) -> mr
  3041. 36.23 s [really-safe-money]
  3042. 36.23 s [really-safe-money] -- | Convert an amount of money of one currency into an amount of money of
  3043. 36.23 s [really-safe-money] -- another currency using a conversion rate.
  3044. 36.23 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:591:7-44
  3045. 36.23 s [really-safe-money] @@ -588,9 +588,9 @@
  3046. 36.23 s [really-safe-money] (Maybe Account, Maybe ConversionRate)
  3047. 36.23 s [really-safe-money] convert r qf1 a cr qf2 =
  3048. 36.23 s [really-safe-money] let (ma, mr) = Amount.convert r qf1 (abs a) cr qf2
  3049. 36.23 s [really-safe-money] - in case a of
  3050. 36.23 s [really-safe-money] - Positive _ -> (Positive <$> ma, mr)
  3051. 36.23 s [really-safe-money] - Negative _ -> (Negative <$> ma, mr)
  3052. 36.23 s [really-safe-money] + in case a of
  3053. 36.23 s [really-safe-money] + Positive _ -> (Positive <$> ma, mr)
  3054. 36.23 s [really-safe-money] + Negative _ -> (Negative <$> ma, mr)
  3055. 36.23 s [really-safe-money]
  3056. 36.23 s [really-safe-money] -- | Format an account of money without a symbol.
  3057. 36.23 s [really-safe-money] --
  3058. 36.23 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:591:7-44
  3059. 36.23 s [really-safe-money] @@ -588,9 +588,9 @@
  3060. 36.23 s [really-safe-money] (Maybe Account, Maybe ConversionRate)
  3061. 36.23 s [really-safe-money] convert r qf1 a cr qf2 =
  3062. 36.23 s [really-safe-money] let (ma, mr) = Amount.convert r qf1 (abs a) cr qf2
  3063. 36.23 s [really-safe-money] - in case a of
  3064. 36.23 s [really-safe-money] - Positive _ -> (Positive <$> ma, mr)
  3065. 36.23 s [really-safe-money] - Negative _ -> (Negative <$> ma, mr)
  3066. 36.23 s [really-safe-money] + in case a of
  3067. 36.23 s [really-safe-money] + Positive _ -> (Positive <$> ma, mr)
  3068. 36.23 s [really-safe-money] + Negative _ -> (Negative <$> ma, mr)
  3069. 36.23 s [really-safe-money]
  3070. 36.23 s [really-safe-money] -- | Format an account of money without a symbol.
  3071. 36.23 s [really-safe-money] --
  3072. 36.23 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:421:32-33
  3073. 36.23 s [really-safe-money] @@ -418,7 +418,7 @@
  3074. 36.23 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  3075. 36.23 s [really-safe-money] multiply factor account =
  3076. 36.23 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  3077. 36.23 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  3078. 36.23 s [really-safe-money] + f = case (compare factor 1, compare account zero) of
  3079. 36.23 s [really-safe-money] (EQ, _) -> const zero
  3080. 36.23 s [really-safe-money] (_, EQ) -> const zero
  3081. 36.23 s [really-safe-money] (GT, GT) -> Positive
  3082. 36.23 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  3083. 36.23 s [really-safe-money] @@ -418,13 +418,13 @@
  3084. 36.23 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  3085. 36.23 s [really-safe-money] multiply factor account =
  3086. 36.23 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  3087. 36.23 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  3088. 36.23 s [really-safe-money] - (EQ, _) -> const zero
  3089. 36.23 s [really-safe-money] - (_, EQ) -> const zero
  3090. 36.23 s [really-safe-money] - (GT, GT) -> Positive
  3091. 36.23 s [really-safe-money] - (GT, LT) -> Negative
  3092. 36.23 s [really-safe-money] - (LT, GT) -> Negative
  3093. 36.23 s [really-safe-money] - (LT, LT) -> Positive
  3094. 36.23 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  3095. 36.23 s [really-safe-money] + (EQ, _) -> const zero
  3096. 36.23 s [really-safe-money] + (_, EQ) -> const zero
  3097. 36.23 s [really-safe-money] + (GT, GT) -> Positive
  3098. 36.23 s [really-safe-money] + (GT, LT) -> Negative
  3099. 36.24 s [really-safe-money] + (LT, GT) -> Negative
  3100. 36.24 s [really-safe-money] + (LT, LT) -> Positive
  3101. 36.24 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  3102. 36.24 s [really-safe-money]
  3103. 36.24 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  3104. 36.24 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  3105. 36.24 s [really-safe-money] @@ -418,13 +418,13 @@
  3106. 36.24 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  3107. 36.24 s [really-safe-money] multiply factor account =
  3108. 36.24 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  3109. 36.24 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  3110. 36.24 s [really-safe-money] - (EQ, _) -> const zero
  3111. 36.24 s [really-safe-money] - (_, EQ) -> const zero
  3112. 36.24 s [really-safe-money] - (GT, GT) -> Positive
  3113. 36.24 s [really-safe-money] - (GT, LT) -> Negative
  3114. 36.24 s [really-safe-money] - (LT, GT) -> Negative
  3115. 36.24 s [really-safe-money] - (LT, LT) -> Positive
  3116. 36.24 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  3117. 36.24 s [really-safe-money] + (EQ, _) -> const zero
  3118. 36.24 s [really-safe-money] + (_, EQ) -> const zero
  3119. 36.24 s [really-safe-money] + (GT, GT) -> Positive
  3120. 36.24 s [really-safe-money] + (GT, LT) -> Negative
  3121. 36.24 s [really-safe-money] + (LT, GT) -> Negative
  3122. 36.24 s [really-safe-money] + (LT, LT) -> Positive
  3123. 36.24 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  3124. 36.24 s [really-safe-money]
  3125. 36.24 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  3126. 36.24 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  3127. 36.24 s [really-safe-money] @@ -418,13 +418,13 @@
  3128. 36.24 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  3129. 36.24 s [really-safe-money] multiply factor account =
  3130. 36.24 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  3131. 36.24 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  3132. 36.24 s [really-safe-money] - (EQ, _) -> const zero
  3133. 36.24 s [really-safe-money] - (_, EQ) -> const zero
  3134. 36.24 s [really-safe-money] - (GT, GT) -> Positive
  3135. 36.24 s [really-safe-money] - (GT, LT) -> Negative
  3136. 36.24 s [really-safe-money] - (LT, GT) -> Negative
  3137. 36.24 s [really-safe-money] - (LT, LT) -> Positive
  3138. 36.24 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  3139. 36.24 s [really-safe-money] + (EQ, _) -> const zero
  3140. 36.24 s [really-safe-money] + (_, EQ) -> const zero
  3141. 36.24 s [really-safe-money] + (GT, GT) -> Positive
  3142. 36.24 s [really-safe-money] + (GT, LT) -> Negative
  3143. 36.24 s [really-safe-money] + (LT, GT) -> Negative
  3144. 36.24 s [really-safe-money] + (LT, LT) -> Positive
  3145. 36.24 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  3146. 36.24 s [really-safe-money]
  3147. 36.24 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  3148. 36.24 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  3149. 36.24 s [really-safe-money] @@ -418,13 +418,13 @@
  3150. 36.24 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  3151. 36.24 s [really-safe-money] multiply factor account =
  3152. 36.24 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  3153. 36.24 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  3154. 36.24 s [really-safe-money] - (EQ, _) -> const zero
  3155. 36.24 s [really-safe-money] - (_, EQ) -> const zero
  3156. 36.24 s [really-safe-money] - (GT, GT) -> Positive
  3157. 36.24 s [really-safe-money] - (GT, LT) -> Negative
  3158. 36.24 s [really-safe-money] - (LT, GT) -> Negative
  3159. 36.24 s [really-safe-money] - (LT, LT) -> Positive
  3160. 36.24 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  3161. 36.24 s [really-safe-money] + (EQ, _) -> const zero
  3162. 36.24 s [really-safe-money] + (_, EQ) -> const zero
  3163. 36.24 s [really-safe-money] + (GT, GT) -> Positive
  3164. 36.24 s [really-safe-money] + (GT, LT) -> Negative
  3165. 36.24 s [really-safe-money] + (LT, GT) -> Negative
  3166. 36.24 s [really-safe-money] + (LT, LT) -> Positive
  3167. 36.24 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  3168. 36.24 s [really-safe-money]
  3169. 36.24 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  3170. 36.24 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  3171. 36.24 s [really-safe-money] @@ -418,13 +418,13 @@
  3172. 36.24 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  3173. 36.24 s [really-safe-money] multiply factor account =
  3174. 36.24 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  3175. 36.24 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  3176. 36.24 s [really-safe-money] - (EQ, _) -> const zero
  3177. 36.24 s [really-safe-money] - (_, EQ) -> const zero
  3178. 36.24 s [really-safe-money] - (GT, GT) -> Positive
  3179. 36.24 s [really-safe-money] - (GT, LT) -> Negative
  3180. 36.24 s [really-safe-money] - (LT, GT) -> Negative
  3181. 36.24 s [really-safe-money] - (LT, LT) -> Positive
  3182. 36.24 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  3183. 36.24 s [really-safe-money] + (EQ, _) -> const zero
  3184. 36.24 s [really-safe-money] + (_, EQ) -> const zero
  3185. 36.24 s [really-safe-money] + (GT, GT) -> Positive
  3186. 36.24 s [really-safe-money] + (GT, LT) -> Negative
  3187. 36.24 s [really-safe-money] + (LT, GT) -> Negative
  3188. 36.24 s [really-safe-money] + (LT, LT) -> Positive
  3189. 36.24 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  3190. 36.24 s [really-safe-money]
  3191. 36.24 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  3192. 36.24 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  3193. 36.24 s [really-safe-money] @@ -418,13 +418,13 @@
  3194. 36.24 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  3195. 36.24 s [really-safe-money] multiply factor account =
  3196. 36.24 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  3197. 36.24 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  3198. 36.24 s [really-safe-money] - (EQ, _) -> const zero
  3199. 36.24 s [really-safe-money] - (_, EQ) -> const zero
  3200. 36.24 s [really-safe-money] - (GT, GT) -> Positive
  3201. 36.24 s [really-safe-money] - (GT, LT) -> Negative
  3202. 36.24 s [really-safe-money] - (LT, GT) -> Negative
  3203. 36.24 s [really-safe-money] - (LT, LT) -> Positive
  3204. 36.24 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  3205. 36.24 s [really-safe-money] + (EQ, _) -> const zero
  3206. 36.24 s [really-safe-money] + (_, EQ) -> const zero
  3207. 36.24 s [really-safe-money] + (GT, GT) -> Positive
  3208. 36.24 s [really-safe-money] + (GT, LT) -> Negative
  3209. 36.24 s [really-safe-money] + (LT, GT) -> Negative
  3210. 36.24 s [really-safe-money] + (LT, LT) -> Positive
  3211. 36.24 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  3212. 36.24 s [really-safe-money]
  3213. 36.24 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  3214. 36.24 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:451:14-23
  3215. 36.24 s [really-safe-money] @@ -448,7 +448,7 @@
  3216. 36.24 s [really-safe-money] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3217. 36.24 s [really-safe-money] DistributedZero -> DistributedZero
  3218. 36.24 s [really-safe-money] DistributedIntoEqualChunks numberOfChunks chunk ->
  3219. 36.24 s [really-safe-money] - if a >= zero
  3220. 36.24 s [really-safe-money] + if True
  3221. 36.24 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3222. 36.24 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3223. 36.24 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3224. 36.24 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:451:14-23
  3225. 36.24 s [really-safe-money] @@ -448,7 +448,7 @@
  3226. 36.24 s [really-safe-money] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3227. 36.24 s [really-safe-money] DistributedZero -> DistributedZero
  3228. 36.24 s [really-safe-money] DistributedIntoEqualChunks numberOfChunks chunk ->
  3229. 36.24 s [really-safe-money] - if a >= zero
  3230. 36.24 s [really-safe-money] + if False
  3231. 36.24 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3232. 36.24 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3233. 36.24 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3234. 36.24 s [really-safe-money] added mutation Negate at src/Money/Account.hs:451:14-23
  3235. 36.24 s [really-safe-money] @@ -448,7 +448,7 @@
  3236. 36.24 s [really-safe-money] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3237. 36.24 s [really-safe-money] DistributedZero -> DistributedZero
  3238. 36.24 s [really-safe-money] DistributedIntoEqualChunks numberOfChunks chunk ->
  3239. 36.24 s [really-safe-money] - if a >= zero
  3240. 36.24 s [really-safe-money] + if not (a >= zero)
  3241. 36.24 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3242. 36.24 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3243. 36.24 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3244. 36.24 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:451:11-76
  3245. 36.24 s [really-safe-money] @@ -448,9 +448,9 @@
  3246. 36.24 s [really-safe-money] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3247. 36.24 s [really-safe-money] DistributedZero -> DistributedZero
  3248. 36.24 s [really-safe-money] DistributedIntoEqualChunks numberOfChunks chunk ->
  3249. 36.24 s [really-safe-money] - if a >= zero
  3250. 36.24 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3251. 36.24 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3252. 36.24 s [really-safe-money] + if a >= zero
  3253. 36.24 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3254. 36.24 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3255. 36.24 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3256. 36.24 s [really-safe-money] if a >= zero
  3257. 36.24 s [really-safe-money] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3258. 36.24 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:455:14-23
  3259. 36.24 s [really-safe-money] @@ -452,7 +452,7 @@
  3260. 36.24 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3261. 36.24 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3262. 36.24 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3263. 36.24 s [really-safe-money] - if a >= zero
  3264. 36.24 s [really-safe-money] + if True
  3265. 36.24 s [really-safe-money] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3266. 36.24 s [really-safe-money] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3267. 36.24 s [really-safe-money]
  3268. 36.24 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:455:14-23
  3269. 36.24 s [really-safe-money] @@ -452,7 +452,7 @@
  3270. 36.24 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3271. 36.24 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3272. 36.24 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3273. 36.24 s [really-safe-money] - if a >= zero
  3274. 36.24 s [really-safe-money] + if False
  3275. 36.24 s [really-safe-money] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3276. 36.24 s [really-safe-money] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3277. 36.24 s [really-safe-money]
  3278. 36.24 s [really-safe-money] added mutation Negate at src/Money/Account.hs:455:14-23
  3279. 36.24 s [really-safe-money] @@ -452,7 +452,7 @@
  3280. 36.24 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3281. 36.24 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3282. 36.24 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3283. 36.24 s [really-safe-money] - if a >= zero
  3284. 36.24 s [really-safe-money] + if not (a >= zero)
  3285. 36.24 s [really-safe-money] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3286. 36.24 s [really-safe-money] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3287. 36.24 s [really-safe-money]
  3288. 36.24 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:455:11-136
  3289. 36.24 s [really-safe-money] @@ -452,9 +452,9 @@
  3290. 36.24 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3291. 36.24 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3292. 36.24 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3293. 36.24 s [really-safe-money] - if a >= zero
  3294. 36.24 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3295. 36.24 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3296. 36.24 s [really-safe-money] + if a >= zero
  3297. 36.24 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3298. 36.24 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3299. 36.24 s [really-safe-money]
  3300. 36.24 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  3301. 36.24 s [really-safe-money]
  3302. 36.24 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:447:7-136
  3303. 36.25 s [really-safe-money] @@ -444,17 +444,17 @@
  3304. 36.25 s [really-safe-money] distribute a f =
  3305. 36.25 s [really-safe-money] let aa = abs a
  3306. 36.25 s [really-safe-money] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  3307. 36.25 s [really-safe-money] - in case Amount.distribute aa af of
  3308. 36.25 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3309. 36.25 s [really-safe-money] - DistributedZero -> DistributedZero
  3310. 36.25 s [really-safe-money] - DistributedIntoEqualChunks numberOfChunks chunk ->
  3311. 36.25 s [really-safe-money] - if a >= zero
  3312. 36.25 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3313. 36.25 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3314. 36.25 s [really-safe-money] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3315. 36.25 s [really-safe-money] - if a >= zero
  3316. 36.25 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3317. 36.25 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3318. 36.25 s [really-safe-money] + in case Amount.distribute aa af of
  3319. 36.25 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3320. 36.25 s [really-safe-money] + DistributedZero -> DistributedZero
  3321. 36.25 s [really-safe-money] + DistributedIntoEqualChunks numberOfChunks chunk ->
  3322. 36.25 s [really-safe-money] + if a >= zero
  3323. 36.25 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3324. 36.25 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3325. 36.25 s [really-safe-money] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3326. 36.25 s [really-safe-money] + if a >= zero
  3327. 36.25 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3328. 36.25 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3329. 36.25 s [really-safe-money]
  3330. 36.25 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  3331. 36.25 s [really-safe-money]
  3332. 36.25 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:447:7-136
  3333. 36.25 s [really-safe-money] @@ -444,17 +444,17 @@
  3334. 36.25 s [really-safe-money] distribute a f =
  3335. 36.25 s [really-safe-money] let aa = abs a
  3336. 36.25 s [really-safe-money] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  3337. 36.25 s [really-safe-money] - in case Amount.distribute aa af of
  3338. 36.25 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3339. 36.25 s [really-safe-money] - DistributedZero -> DistributedZero
  3340. 36.25 s [really-safe-money] - DistributedIntoEqualChunks numberOfChunks chunk ->
  3341. 36.25 s [really-safe-money] - if a >= zero
  3342. 36.25 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3343. 36.25 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3344. 36.25 s [really-safe-money] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3345. 36.25 s [really-safe-money] - if a >= zero
  3346. 36.25 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3347. 36.25 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3348. 36.25 s [really-safe-money] + in case Amount.distribute aa af of
  3349. 36.25 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3350. 36.25 s [really-safe-money] + DistributedZero -> DistributedZero
  3351. 36.25 s [really-safe-money] + DistributedIntoEqualChunks numberOfChunks chunk ->
  3352. 36.25 s [really-safe-money] + if a >= zero
  3353. 36.25 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3354. 36.25 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3355. 36.25 s [really-safe-money] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3356. 36.25 s [really-safe-money] + if a >= zero
  3357. 36.25 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3358. 36.25 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3359. 36.25 s [really-safe-money]
  3360. 36.25 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  3361. 36.25 s [really-safe-money]
  3362. 36.25 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:447:7-136
  3363. 36.25 s [really-safe-money] @@ -444,17 +444,17 @@
  3364. 36.25 s [really-safe-money] distribute a f =
  3365. 36.25 s [really-safe-money] let aa = abs a
  3366. 36.25 s [really-safe-money] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  3367. 36.25 s [really-safe-money] - in case Amount.distribute aa af of
  3368. 36.25 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3369. 36.25 s [really-safe-money] - DistributedZero -> DistributedZero
  3370. 36.25 s [really-safe-money] - DistributedIntoEqualChunks numberOfChunks chunk ->
  3371. 36.25 s [really-safe-money] - if a >= zero
  3372. 36.25 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3373. 36.25 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3374. 36.25 s [really-safe-money] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3375. 36.25 s [really-safe-money] - if a >= zero
  3376. 36.25 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3377. 36.25 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3378. 36.25 s [really-safe-money] + in case Amount.distribute aa af of
  3379. 36.25 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3380. 36.25 s [really-safe-money] + DistributedZero -> DistributedZero
  3381. 36.25 s [really-safe-money] + DistributedIntoEqualChunks numberOfChunks chunk ->
  3382. 36.25 s [really-safe-money] + if a >= zero
  3383. 36.25 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3384. 36.25 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3385. 36.25 s [really-safe-money] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3386. 36.25 s [really-safe-money] + if a >= zero
  3387. 36.25 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3388. 36.25 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3389. 36.25 s [really-safe-money]
  3390. 36.25 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  3391. 36.25 s [really-safe-money]
  3392. 36.25 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:447:7-136
  3393. 36.25 s [really-safe-money] @@ -444,17 +444,17 @@
  3394. 36.25 s [really-safe-money] distribute a f =
  3395. 36.25 s [really-safe-money] let aa = abs a
  3396. 36.25 s [really-safe-money] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  3397. 36.25 s [really-safe-money] - in case Amount.distribute aa af of
  3398. 36.25 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3399. 36.25 s [really-safe-money] - DistributedZero -> DistributedZero
  3400. 36.25 s [really-safe-money] - DistributedIntoEqualChunks numberOfChunks chunk ->
  3401. 36.25 s [really-safe-money] - if a >= zero
  3402. 36.25 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3403. 36.25 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3404. 36.25 s [really-safe-money] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3405. 36.25 s [really-safe-money] - if a >= zero
  3406. 36.25 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3407. 36.25 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3408. 36.25 s [really-safe-money] + in case Amount.distribute aa af of
  3409. 36.25 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  3410. 36.25 s [really-safe-money] + DistributedZero -> DistributedZero
  3411. 36.25 s [really-safe-money] + DistributedIntoEqualChunks numberOfChunks chunk ->
  3412. 36.25 s [really-safe-money] + if a >= zero
  3413. 36.25 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  3414. 36.25 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  3415. 36.25 s [really-safe-money] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  3416. 36.25 s [really-safe-money] + if a >= zero
  3417. 36.25 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  3418. 36.25 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  3419. 36.25 s [really-safe-money]
  3420. 36.25 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  3421. 36.25 s [really-safe-money]
  3422. 36.25 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:522:19-35
  3423. 36.25 s [really-safe-money] @@ -519,10 +519,10 @@
  3424. 36.25 s [really-safe-money] let aa = abs account
  3425. 36.25 s [really-safe-money] (amount, actualFraction) = Amount.fraction ro aa af
  3426. 36.25 s [really-safe-money] func :: Maybe Amount -> Ratio Natural -> (Maybe Account, Ratio Natural)
  3427. 36.25 s [really-safe-money] - func ma r = case compare account zero of
  3428. 36.25 s [really-safe-money] - EQ -> (Just zero, r)
  3429. 36.25 s [really-safe-money] - GT -> (Positive <$> ma, r)
  3430. 36.25 s [really-safe-money] - LT -> (Negative <$> ma, r)
  3431. 36.25 s [really-safe-money] + func ma r = case compare account zero of
  3432. 36.25 s [really-safe-money] + EQ -> (Just zero, r)
  3433. 36.25 s [really-safe-money] + GT -> (Positive <$> ma, r)
  3434. 36.25 s [really-safe-money] + LT -> (Negative <$> ma, r)
  3435. 36.25 s [really-safe-money] in func amount actualFraction
  3436. 36.25 s [really-safe-money]
  3437. 36.25 s [really-safe-money] -- | Compute the currency conversion rate between two accounts of money of
  3438. 36.25 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:522:19-35
  3439. 36.25 s [really-safe-money] @@ -519,10 +519,10 @@
  3440. 36.25 s [really-safe-money] let aa = abs account
  3441. 36.25 s [really-safe-money] (amount, actualFraction) = Amount.fraction ro aa af
  3442. 36.25 s [really-safe-money] func :: Maybe Amount -> Ratio Natural -> (Maybe Account, Ratio Natural)
  3443. 36.25 s [really-safe-money] - func ma r = case compare account zero of
  3444. 36.25 s [really-safe-money] - EQ -> (Just zero, r)
  3445. 36.25 s [really-safe-money] - GT -> (Positive <$> ma, r)
  3446. 36.25 s [really-safe-money] - LT -> (Negative <$> ma, r)
  3447. 36.25 s [really-safe-money] + func ma r = case compare account zero of
  3448. 36.25 s [really-safe-money] + EQ -> (Just zero, r)
  3449. 36.25 s [really-safe-money] + GT -> (Positive <$> ma, r)
  3450. 36.25 s [really-safe-money] + LT -> (Negative <$> ma, r)
  3451. 36.25 s [really-safe-money] in func amount actualFraction
  3452. 36.25 s [really-safe-money]
  3453. 36.25 s [really-safe-money] -- | Compute the currency conversion rate between two accounts of money of
  3454. 36.25 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:522:19-35
  3455. 36.25 s [really-safe-money] @@ -519,10 +519,10 @@
  3456. 36.25 s [really-safe-money] let aa = abs account
  3457. 36.25 s [really-safe-money] (amount, actualFraction) = Amount.fraction ro aa af
  3458. 36.25 s [really-safe-money] func :: Maybe Amount -> Ratio Natural -> (Maybe Account, Ratio Natural)
  3459. 36.25 s [really-safe-money] - func ma r = case compare account zero of
  3460. 36.25 s [really-safe-money] - EQ -> (Just zero, r)
  3461. 36.25 s [really-safe-money] - GT -> (Positive <$> ma, r)
  3462. 36.25 s [really-safe-money] - LT -> (Negative <$> ma, r)
  3463. 36.25 s [really-safe-money] + func ma r = case compare account zero of
  3464. 36.25 s [really-safe-money] + EQ -> (Just zero, r)
  3465. 36.25 s [really-safe-money] + GT -> (Positive <$> ma, r)
  3466. 36.25 s [really-safe-money] + LT -> (Negative <$> ma, r)
  3467. 36.25 s [really-safe-money] in func amount actualFraction
  3468. 36.25 s [really-safe-money]
  3469. 36.25 s [really-safe-money] -- | Compute the currency conversion rate between two accounts of money of
  3470. 36.25 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:495:17-18
  3471. 36.25 s [really-safe-money] @@ -492,7 +492,7 @@
  3472. 36.25 s [really-safe-money] fraction rounding account f =
  3473. 36.25 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  3474. 36.25 s [really-safe-money] ro =
  3475. 36.25 s [really-safe-money] - if f >= 0
  3476. 36.25 s [really-safe-money] + if f >= 1
  3477. 36.25 s [really-safe-money] then rounding
  3478. 36.25 s [really-safe-money] else case rounding of
  3479. 36.25 s [really-safe-money] RoundUp -> RoundDown
  3480. 36.25 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:495:12-18
  3481. 36.25 s [really-safe-money] @@ -492,7 +492,7 @@
  3482. 36.25 s [really-safe-money] fraction rounding account f =
  3483. 36.25 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  3484. 36.25 s [really-safe-money] ro =
  3485. 36.25 s [really-safe-money] - if f >= 0
  3486. 36.25 s [really-safe-money] + if True
  3487. 36.25 s [really-safe-money] then rounding
  3488. 36.25 s [really-safe-money] else case rounding of
  3489. 36.25 s [really-safe-money] RoundUp -> RoundDown
  3490. 36.25 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:495:12-18
  3491. 36.25 s [really-safe-money] @@ -492,7 +492,7 @@
  3492. 36.25 s [really-safe-money] fraction rounding account f =
  3493. 36.25 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  3494. 36.25 s [really-safe-money] ro =
  3495. 36.25 s [really-safe-money] - if f >= 0
  3496. 36.25 s [really-safe-money] + if False
  3497. 36.25 s [really-safe-money] then rounding
  3498. 36.25 s [really-safe-money] else case rounding of
  3499. 36.25 s [really-safe-money] RoundUp -> RoundDown
  3500. 36.25 s [really-safe-money] added mutation Negate at src/Money/Account.hs:495:12-18
  3501. 36.25 s [really-safe-money] @@ -492,7 +492,7 @@
  3502. 36.25 s [really-safe-money] fraction rounding account f =
  3503. 36.25 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  3504. 36.25 s [really-safe-money] ro =
  3505. 36.25 s [really-safe-money] - if f >= 0
  3506. 36.25 s [really-safe-money] + if not (f >= 0)
  3507. 36.25 s [really-safe-money] then rounding
  3508. 36.25 s [really-safe-money] else case rounding of
  3509. 36.25 s [really-safe-money] RoundUp -> RoundDown
  3510. 36.25 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:497:16-41
  3511. 36.25 s [really-safe-money] @@ -494,10 +494,10 @@
  3512. 36.25 s [really-safe-money] ro =
  3513. 36.25 s [really-safe-money] if f >= 0
  3514. 36.25 s [really-safe-money] then rounding
  3515. 36.25 s [really-safe-money] - else case rounding of
  3516. 36.25 s [really-safe-money] - RoundUp -> RoundDown
  3517. 36.25 s [really-safe-money] - RoundDown -> RoundUp
  3518. 36.25 s [really-safe-money] - RoundNearest -> RoundNearest
  3519. 36.25 s [really-safe-money] + else case rounding of
  3520. 36.25 s [really-safe-money] + RoundUp -> RoundDown
  3521. 36.25 s [really-safe-money] + RoundDown -> RoundUp
  3522. 36.25 s [really-safe-money] + RoundNearest -> RoundNearest
  3523. 36.25 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  3524. 36.25 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  3525. 36.25 s [really-safe-money] in if f >= 0
  3526. 36.25 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:497:16-41
  3527. 36.25 s [really-safe-money] @@ -494,10 +494,10 @@
  3528. 36.25 s [really-safe-money] ro =
  3529. 36.25 s [really-safe-money] if f >= 0
  3530. 36.25 s [really-safe-money] then rounding
  3531. 36.25 s [really-safe-money] - else case rounding of
  3532. 36.25 s [really-safe-money] - RoundUp -> RoundDown
  3533. 36.25 s [really-safe-money] - RoundDown -> RoundUp
  3534. 36.25 s [really-safe-money] - RoundNearest -> RoundNearest
  3535. 36.25 s [really-safe-money] + else case rounding of
  3536. 36.25 s [really-safe-money] + RoundUp -> RoundDown
  3537. 36.25 s [really-safe-money] + RoundDown -> RoundUp
  3538. 36.25 s [really-safe-money] + RoundNearest -> RoundNearest
  3539. 36.25 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  3540. 36.25 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  3541. 36.25 s [really-safe-money] in if f >= 0
  3542. 36.25 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:497:16-41
  3543. 36.25 s [really-safe-money] @@ -494,10 +494,10 @@
  3544. 36.25 s [really-safe-money] ro =
  3545. 36.25 s [really-safe-money] if f >= 0
  3546. 36.25 s [really-safe-money] then rounding
  3547. 36.25 s [really-safe-money] - else case rounding of
  3548. 36.25 s [really-safe-money] - RoundUp -> RoundDown
  3549. 36.25 s [really-safe-money] - RoundDown -> RoundUp
  3550. 36.25 s [really-safe-money] - RoundNearest -> RoundNearest
  3551. 36.25 s [really-safe-money] + else case rounding of
  3552. 36.25 s [really-safe-money] + RoundUp -> RoundDown
  3553. 36.25 s [really-safe-money] + RoundDown -> RoundUp
  3554. 36.25 s [really-safe-money] + RoundNearest -> RoundNearest
  3555. 36.25 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  3556. 36.25 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  3557. 36.26 s [really-safe-money] in if f >= 0
  3558. 36.26 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:495:9-41
  3559. 36.26 s [really-safe-money] @@ -492,12 +492,12 @@
  3560. 36.26 s [really-safe-money] fraction rounding account f =
  3561. 36.26 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  3562. 36.26 s [really-safe-money] ro =
  3563. 36.26 s [really-safe-money] - if f >= 0
  3564. 36.26 s [really-safe-money] - then rounding
  3565. 36.26 s [really-safe-money] - else case rounding of
  3566. 36.26 s [really-safe-money] - RoundUp -> RoundDown
  3567. 36.26 s [really-safe-money] - RoundDown -> RoundUp
  3568. 36.26 s [really-safe-money] - RoundNearest -> RoundNearest
  3569. 36.26 s [really-safe-money] + if f >= 0
  3570. 36.26 s [really-safe-money] + then rounding
  3571. 36.26 s [really-safe-money] + else case rounding of
  3572. 36.26 s [really-safe-money] + RoundUp -> RoundDown
  3573. 36.26 s [really-safe-money] + RoundDown -> RoundUp
  3574. 36.26 s [really-safe-money] + RoundNearest -> RoundNearest
  3575. 36.26 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  3576. 36.26 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  3577. 36.26 s [really-safe-money] in if f >= 0
  3578. 36.26 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:503:15-16
  3579. 36.26 s [really-safe-money] @@ -500,7 +500,7 @@
  3580. 36.26 s [really-safe-money] RoundNearest -> RoundNearest
  3581. 36.26 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  3582. 36.26 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  3583. 36.26 s [really-safe-money] - in if f >= 0
  3584. 36.26 s [really-safe-money] + in if f >= 1
  3585. 36.26 s [really-safe-money] then (ma, r)
  3586. 36.26 s [really-safe-money] else (negate <$> ma, -r)
  3587. 36.26 s [really-safe-money]
  3588. 36.26 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:503:10-16
  3589. 36.26 s [really-safe-money] @@ -500,7 +500,7 @@
  3590. 36.26 s [really-safe-money] RoundNearest -> RoundNearest
  3591. 36.26 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  3592. 36.26 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  3593. 36.26 s [really-safe-money] - in if f >= 0
  3594. 36.26 s [really-safe-money] + in if True
  3595. 36.26 s [really-safe-money] then (ma, r)
  3596. 36.26 s [really-safe-money] else (negate <$> ma, -r)
  3597. 36.26 s [really-safe-money]
  3598. 36.26 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:503:10-16
  3599. 36.26 s [really-safe-money] @@ -500,7 +500,7 @@
  3600. 36.26 s [really-safe-money] RoundNearest -> RoundNearest
  3601. 36.26 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  3602. 36.26 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  3603. 36.26 s [really-safe-money] - in if f >= 0
  3604. 36.26 s [really-safe-money] + in if False
  3605. 36.26 s [really-safe-money] then (ma, r)
  3606. 36.26 s [really-safe-money] else (negate <$> ma, -r)
  3607. 36.26 s [really-safe-money]
  3608. 36.26 s [really-safe-money] added mutation Negate at src/Money/Account.hs:503:10-16
  3609. 36.26 s [really-safe-money] @@ -500,7 +500,7 @@
  3610. 36.26 s [really-safe-money] RoundNearest -> RoundNearest
  3611. 36.26 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  3612. 36.26 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  3613. 36.26 s [really-safe-money] - in if f >= 0
  3614. 36.26 s [really-safe-money] + in if not (f >= 0)
  3615. 36.26 s [really-safe-money] then (ma, r)
  3616. 36.26 s [really-safe-money] else (negate <$> ma, -r)
  3617. 36.26 s [really-safe-money]
  3618. 36.26 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:503:7-33
  3619. 36.26 s [really-safe-money] @@ -500,9 +500,9 @@
  3620. 36.26 s [really-safe-money] RoundNearest -> RoundNearest
  3621. 36.26 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  3622. 36.26 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  3623. 36.26 s [really-safe-money] - in if f >= 0
  3624. 36.26 s [really-safe-money] - then (ma, r)
  3625. 36.26 s [really-safe-money] - else (negate <$> ma, -r)
  3626. 36.26 s [really-safe-money] + in if f >= 0
  3627. 36.26 s [really-safe-money] + then (ma, r)
  3628. 36.26 s [really-safe-money] + else (negate <$> ma, -r)
  3629. 36.26 s [really-safe-money]
  3630. 36.26 s [really-safe-money] -- | Fractional multiplication with a positive fraction, see 'Amount.fraction' and 'Account.fraction'.
  3631. 36.26 s [really-safe-money] --
  3632. 36.26 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:233:19-20
  3633. 36.26 s [really-safe-money] @@ -230,7 +230,7 @@
  3634. 36.26 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  3635. 36.26 s [really-safe-money] fromRational quantisationFactor r =
  3636. 36.26 s [really-safe-money] let r' = Prelude.abs r
  3637. 36.26 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  3638. 36.26 s [really-safe-money] + f = if r >= 1 then Positive else Negative
  3639. 36.26 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  3640. 36.26 s [really-safe-money]
  3641. 36.26 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  3642. 36.26 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:233:14-20
  3643. 36.26 s [really-safe-money] @@ -230,7 +230,7 @@
  3644. 36.26 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  3645. 36.26 s [really-safe-money] fromRational quantisationFactor r =
  3646. 36.26 s [really-safe-money] let r' = Prelude.abs r
  3647. 36.26 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  3648. 36.26 s [really-safe-money] + f = if True then Positive else Negative
  3649. 36.26 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  3650. 36.26 s [really-safe-money]
  3651. 36.26 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  3652. 36.26 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:233:14-20
  3653. 36.26 s [really-safe-money] @@ -230,7 +230,7 @@
  3654. 36.26 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  3655. 36.26 s [really-safe-money] fromRational quantisationFactor r =
  3656. 36.26 s [really-safe-money] let r' = Prelude.abs r
  3657. 36.26 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  3658. 36.26 s [really-safe-money] + f = if False then Positive else Negative
  3659. 36.26 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  3660. 36.26 s [really-safe-money]
  3661. 36.26 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  3662. 36.26 s [really-safe-money] added mutation Negate at src/Money/Account.hs:233:14-20
  3663. 36.26 s [really-safe-money] @@ -230,7 +230,7 @@
  3664. 36.26 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  3665. 36.26 s [really-safe-money] fromRational quantisationFactor r =
  3666. 36.26 s [really-safe-money] let r' = Prelude.abs r
  3667. 36.26 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  3668. 36.26 s [really-safe-money] + f = if not (r >= 0) then Positive else Negative
  3669. 36.26 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  3670. 36.26 s [really-safe-money]
  3671. 36.26 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  3672. 36.26 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:233:11-48
  3673. 36.26 s [really-safe-money] @@ -230,7 +230,7 @@
  3674. 36.26 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  3675. 36.26 s [really-safe-money] fromRational quantisationFactor r =
  3676. 36.26 s [really-safe-money] let r' = Prelude.abs r
  3677. 36.26 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  3678. 36.26 s [really-safe-money] + f = if r >= 0 then Positive else Negative
  3679. 36.26 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  3680. 36.26 s [really-safe-money]
  3681. 36.26 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  3682. 36.26 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:211:11-37
  3683. 36.26 s [really-safe-money] @@ -208,9 +208,9 @@
  3684. 36.26 s [really-safe-money] -- (-3) % 20
  3685. 36.26 s [really-safe-money] toRational :: QuantisationFactor -> Account -> Rational
  3686. 36.26 s [really-safe-money] toRational quantisationFactor account =
  3687. 36.26 s [really-safe-money] - let f = case account of
  3688. 36.26 s [really-safe-money] - Positive _ -> id
  3689. 36.26 s [really-safe-money] - Negative _ -> Prelude.negate
  3690. 36.26 s [really-safe-money] + let f = case account of
  3691. 36.26 s [really-safe-money] + Positive _ -> id
  3692. 36.26 s [really-safe-money] + Negative _ -> Prelude.negate
  3693. 36.26 s [really-safe-money] in f $ Amount.toRational quantisationFactor (abs account)
  3694. 36.26 s [really-safe-money]
  3695. 36.26 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  3696. 36.26 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:211:11-37
  3697. 36.26 s [really-safe-money] @@ -208,9 +208,9 @@
  3698. 36.26 s [really-safe-money] -- (-3) % 20
  3699. 36.26 s [really-safe-money] toRational :: QuantisationFactor -> Account -> Rational
  3700. 36.26 s [really-safe-money] toRational quantisationFactor account =
  3701. 36.26 s [really-safe-money] - let f = case account of
  3702. 36.26 s [really-safe-money] - Positive _ -> id
  3703. 36.26 s [really-safe-money] - Negative _ -> Prelude.negate
  3704. 36.26 s [really-safe-money] + let f = case account of
  3705. 36.26 s [really-safe-money] + Positive _ -> id
  3706. 36.26 s [really-safe-money] + Negative _ -> Prelude.negate
  3707. 36.26 s [really-safe-money] in f $ Amount.toRational quantisationFactor (abs account)
  3708. 36.26 s [really-safe-money]
  3709. 36.26 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  3710. 36.26 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:197:19-20
  3711. 36.26 s [really-safe-money] @@ -194,7 +194,7 @@
  3712. 36.26 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  3713. 36.26 s [really-safe-money] fromDouble quantisationFactor d =
  3714. 36.26 s [really-safe-money] let d' = Prelude.abs d
  3715. 36.26 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  3716. 36.26 s [really-safe-money] + f = if d >= 1 then Positive else Negative
  3717. 36.26 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  3718. 36.26 s [really-safe-money]
  3719. 36.26 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  3720. 36.26 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:197:14-20
  3721. 36.26 s [really-safe-money] @@ -194,7 +194,7 @@
  3722. 36.26 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  3723. 36.26 s [really-safe-money] fromDouble quantisationFactor d =
  3724. 36.26 s [really-safe-money] let d' = Prelude.abs d
  3725. 36.26 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  3726. 36.26 s [really-safe-money] + f = if True then Positive else Negative
  3727. 36.26 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  3728. 36.26 s [really-safe-money]
  3729. 36.26 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  3730. 36.26 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:197:14-20
  3731. 36.26 s [really-safe-money] @@ -194,7 +194,7 @@
  3732. 36.26 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  3733. 36.26 s [really-safe-money] fromDouble quantisationFactor d =
  3734. 36.26 s [really-safe-money] let d' = Prelude.abs d
  3735. 36.26 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  3736. 36.26 s [really-safe-money] + f = if False then Positive else Negative
  3737. 36.26 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  3738. 36.26 s [really-safe-money]
  3739. 36.26 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  3740. 36.26 s [really-safe-money] added mutation Negate at src/Money/Account.hs:197:14-20
  3741. 36.26 s [really-safe-money] @@ -194,7 +194,7 @@
  3742. 36.26 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  3743. 36.26 s [really-safe-money] fromDouble quantisationFactor d =
  3744. 36.26 s [really-safe-money] let d' = Prelude.abs d
  3745. 36.26 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  3746. 36.26 s [really-safe-money] + f = if not (d >= 0) then Positive else Negative
  3747. 36.26 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  3748. 36.26 s [really-safe-money]
  3749. 36.26 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  3750. 36.26 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:197:11-48
  3751. 36.26 s [really-safe-money] @@ -194,7 +194,7 @@
  3752. 36.26 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  3753. 36.26 s [really-safe-money] fromDouble quantisationFactor d =
  3754. 36.26 s [really-safe-money] let d' = Prelude.abs d
  3755. 36.26 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  3756. 36.26 s [really-safe-money] + f = if d >= 0 then Positive else Negative
  3757. 36.26 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  3758. 36.26 s [really-safe-money]
  3759. 36.26 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  3760. 36.26 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:171:11-37
  3761. 36.26 s [really-safe-money] @@ -168,9 +168,9 @@
  3762. 36.26 s [really-safe-money] -- -0.25
  3763. 36.26 s [really-safe-money] toDouble :: QuantisationFactor -> Account -> Double
  3764. 36.26 s [really-safe-money] toDouble quantisationFactor account =
  3765. 36.26 s [really-safe-money] - let f = case account of
  3766. 36.26 s [really-safe-money] - Positive _ -> id
  3767. 36.26 s [really-safe-money] - Negative _ -> Prelude.negate
  3768. 36.26 s [really-safe-money] + let f = case account of
  3769. 36.26 s [really-safe-money] + Positive _ -> id
  3770. 36.26 s [really-safe-money] + Negative _ -> Prelude.negate
  3771. 36.26 s [really-safe-money] in f $ Amount.toDouble quantisationFactor (abs account)
  3772. 36.26 s [really-safe-money]
  3773. 36.26 s [really-safe-money] -- | Turn a 'Double' into an amount of money.
  3774. 36.26 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:171:11-37
  3775. 36.26 s [really-safe-money] @@ -168,9 +168,9 @@
  3776. 36.26 s [really-safe-money] -- -0.25
  3777. 36.26 s [really-safe-money] toDouble :: QuantisationFactor -> Account -> Double
  3778. 36.26 s [really-safe-money] toDouble quantisationFactor account =
  3779. 36.26 s [really-safe-money] - let f = case account of
  3780. 36.26 s [really-safe-money] - Positive _ -> id
  3781. 36.26 s [really-safe-money] - Negative _ -> Prelude.negate
  3782. 36.26 s [really-safe-money] + let f = case account of
  3783. 36.26 s [really-safe-money] + Positive _ -> id
  3784. 36.26 s [really-safe-money] + Negative _ -> Prelude.negate
  3785. 36.26 s [really-safe-money] in f $ Amount.toDouble quantisationFactor (abs account)
  3786. 36.26 s [really-safe-money]
  3787. 36.26 s [really-safe-money] -- | Turn a 'Double' into an amount of money.
  3788. 36.26 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:155:11-37
  3789. 36.26 s [really-safe-money] @@ -152,9 +152,9 @@
  3790. 36.26 s [really-safe-money] -- We return 'Integer' because the result does not fit into a 'Word64'
  3791. 36.26 s [really-safe-money] toMinimalQuantisations :: Account -> Integer
  3792. 36.26 s [really-safe-money] toMinimalQuantisations account =
  3793. 36.26 s [really-safe-money] - let f = case account of
  3794. 36.26 s [really-safe-money] - Positive _ -> id
  3795. 36.26 s [really-safe-money] - Negative _ -> Prelude.negate
  3796. 36.26 s [really-safe-money] + let f = case account of
  3797. 36.26 s [really-safe-money] + Positive _ -> id
  3798. 36.26 s [really-safe-money] + Negative _ -> Prelude.negate
  3799. 36.26 s [really-safe-money] in f $ (fromIntegral :: Word64 -> Integer) $ Amount.toMinimalQuantisations (abs account)
  3800. 36.26 s [really-safe-money]
  3801. 36.26 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  3802. 36.26 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:155:11-37
  3803. 36.26 s [really-safe-money] @@ -152,9 +152,9 @@
  3804. 36.26 s [really-safe-money] -- We return 'Integer' because the result does not fit into a 'Word64'
  3805. 36.26 s [really-safe-money] toMinimalQuantisations :: Account -> Integer
  3806. 36.26 s [really-safe-money] toMinimalQuantisations account =
  3807. 36.26 s [really-safe-money] - let f = case account of
  3808. 36.27 s [really-safe-money] - Positive _ -> id
  3809. 36.27 s [really-safe-money] - Negative _ -> Prelude.negate
  3810. 36.27 s [really-safe-money] + let f = case account of
  3811. 36.27 s [really-safe-money] + Positive _ -> id
  3812. 36.27 s [really-safe-money] + Negative _ -> Prelude.negate
  3813. 36.27 s [really-safe-money] in f $ (fromIntegral :: Word64 -> Integer) $ Amount.toMinimalQuantisations (abs account)
  3814. 36.27 s [really-safe-money]
  3815. 36.27 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  3816. 36.27 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:123:10-23
  3817. 36.27 s [really-safe-money] @@ -120,7 +120,7 @@
  3818. 36.27 s [really-safe-money] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  3819. 36.27 s [really-safe-money] a :: Integer
  3820. 36.27 s [really-safe-money] a = (Prelude.abs :: Integer -> Integer) i
  3821. 36.27 s [really-safe-money] - in if a > maxBoundI
  3822. 36.27 s [really-safe-money] + in if True
  3823. 36.27 s [really-safe-money] then Nothing
  3824. 36.27 s [really-safe-money] else
  3825. 36.27 s [really-safe-money] let w :: Word64
  3826. 36.27 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:123:10-23
  3827. 36.27 s [really-safe-money] @@ -120,7 +120,7 @@
  3828. 36.27 s [really-safe-money] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  3829. 36.27 s [really-safe-money] a :: Integer
  3830. 36.27 s [really-safe-money] a = (Prelude.abs :: Integer -> Integer) i
  3831. 36.27 s [really-safe-money] - in if a > maxBoundI
  3832. 36.27 s [really-safe-money] + in if False
  3833. 36.27 s [really-safe-money] then Nothing
  3834. 36.27 s [really-safe-money] else
  3835. 36.27 s [really-safe-money] let w :: Word64
  3836. 36.27 s [really-safe-money] added mutation Negate at src/Money/Account.hs:123:10-23
  3837. 36.27 s [really-safe-money] @@ -120,7 +120,7 @@
  3838. 36.27 s [really-safe-money] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  3839. 36.27 s [really-safe-money] a :: Integer
  3840. 36.27 s [really-safe-money] a = (Prelude.abs :: Integer -> Integer) i
  3841. 36.27 s [really-safe-money] - in if a > maxBoundI
  3842. 36.27 s [really-safe-money] + in if not (a > maxBoundI)
  3843. 36.27 s [really-safe-money] then Nothing
  3844. 36.27 s [really-safe-money] else
  3845. 36.27 s [really-safe-money] let w :: Word64
  3846. 36.27 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:131:25-26
  3847. 36.27 s [really-safe-money] @@ -128,7 +128,7 @@
  3848. 36.27 s [really-safe-money] amount :: Amount
  3849. 36.27 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  3850. 36.27 s [really-safe-money] in Just $
  3851. 36.27 s [really-safe-money] - if i >= 0
  3852. 36.27 s [really-safe-money] + if i >= 1
  3853. 36.27 s [really-safe-money] then Positive amount
  3854. 36.27 s [really-safe-money] else Negative amount
  3855. 36.27 s [really-safe-money]
  3856. 36.27 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:131:20-26
  3857. 36.27 s [really-safe-money] @@ -128,7 +128,7 @@
  3858. 36.27 s [really-safe-money] amount :: Amount
  3859. 36.27 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  3860. 36.27 s [really-safe-money] in Just $
  3861. 36.27 s [really-safe-money] - if i >= 0
  3862. 36.27 s [really-safe-money] + if True
  3863. 36.27 s [really-safe-money] then Positive amount
  3864. 36.27 s [really-safe-money] else Negative amount
  3865. 36.27 s [really-safe-money]
  3866. 36.27 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:131:20-26
  3867. 36.27 s [really-safe-money] @@ -128,7 +128,7 @@
  3868. 36.27 s [really-safe-money] amount :: Amount
  3869. 36.27 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  3870. 36.27 s [really-safe-money] in Just $
  3871. 36.27 s [really-safe-money] - if i >= 0
  3872. 36.27 s [really-safe-money] + if False
  3873. 36.27 s [really-safe-money] then Positive amount
  3874. 36.27 s [really-safe-money] else Negative amount
  3875. 36.27 s [really-safe-money]
  3876. 36.27 s [really-safe-money] added mutation Negate at src/Money/Account.hs:131:20-26
  3877. 36.27 s [really-safe-money] @@ -128,7 +128,7 @@
  3878. 36.27 s [really-safe-money] amount :: Amount
  3879. 36.27 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  3880. 36.27 s [really-safe-money] in Just $
  3881. 36.27 s [really-safe-money] - if i >= 0
  3882. 36.27 s [really-safe-money] + if not (i >= 0)
  3883. 36.27 s [really-safe-money] then Positive amount
  3884. 36.27 s [really-safe-money] else Negative amount
  3885. 36.27 s [really-safe-money]
  3886. 36.27 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:131:17-39
  3887. 36.27 s [really-safe-money] @@ -128,9 +128,9 @@
  3888. 36.27 s [really-safe-money] amount :: Amount
  3889. 36.27 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  3890. 36.27 s [really-safe-money] in Just $
  3891. 36.27 s [really-safe-money] - if i >= 0
  3892. 36.27 s [really-safe-money] - then Positive amount
  3893. 36.27 s [really-safe-money] - else Negative amount
  3894. 36.27 s [really-safe-money] + if i >= 0
  3895. 36.27 s [really-safe-money] + then Positive amount
  3896. 36.27 s [really-safe-money] + else Negative amount
  3897. 36.27 s [really-safe-money]
  3898. 36.27 s [really-safe-money] -- | Turn an amount into a positive account
  3899. 36.27 s [really-safe-money] --
  3900. 36.27 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:123:7-39
  3901. 36.27 s [really-safe-money] @@ -120,17 +120,17 @@
  3902. 36.27 s [really-safe-money] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  3903. 36.27 s [really-safe-money] a :: Integer
  3904. 36.27 s [really-safe-money] a = (Prelude.abs :: Integer -> Integer) i
  3905. 36.27 s [really-safe-money] - in if a > maxBoundI
  3906. 36.27 s [really-safe-money] - then Nothing
  3907. 36.27 s [really-safe-money] - else
  3908. 36.27 s [really-safe-money] - let w :: Word64
  3909. 36.27 s [really-safe-money] - w = (fromIntegral :: Integer -> Word64) a
  3910. 36.27 s [really-safe-money] - amount :: Amount
  3911. 36.27 s [really-safe-money] - amount = Amount.fromMinimalQuantisations w
  3912. 36.27 s [really-safe-money] - in Just $
  3913. 36.27 s [really-safe-money] - if i >= 0
  3914. 36.27 s [really-safe-money] - then Positive amount
  3915. 36.27 s [really-safe-money] - else Negative amount
  3916. 36.27 s [really-safe-money] + in if a > maxBoundI
  3917. 36.27 s [really-safe-money] + then Nothing
  3918. 36.27 s [really-safe-money] + else
  3919. 36.27 s [really-safe-money] + let w :: Word64
  3920. 36.27 s [really-safe-money] + w = (fromIntegral :: Integer -> Word64) a
  3921. 36.27 s [really-safe-money] + amount :: Amount
  3922. 36.27 s [really-safe-money] + amount = Amount.fromMinimalQuantisations w
  3923. 36.27 s [really-safe-money] + in Just $
  3924. 36.27 s [really-safe-money] + if i >= 0
  3925. 36.27 s [really-safe-money] + then Positive amount
  3926. 36.27 s [really-safe-money] + else Negative amount
  3927. 36.27 s [really-safe-money]
  3928. 36.27 s [really-safe-money] -- | Turn an amount into a positive account
  3929. 36.27 s [really-safe-money] --
  3930. 36.27 s [really-safe-money] added 66 mutations
  3931. 37.02 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 )
  3932. 37.03 s [really-safe-money] mutation: instrumenting Money.MultiAccount
  3933. 37.03 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
  3934. 37.03 s [really-safe-money] @@ -171,10 +171,10 @@
  3935. 37.03 s [really-safe-money] fmap
  3936. 37.03 s [really-safe-money] ( ( \theoreticalResult ->
  3937. 37.03 s [really-safe-money] let rounder :: Rational -> Integer
  3938. 37.03 s [really-safe-money] - rounder = case r of
  3939. 37.03 s [really-safe-money] - RoundUp -> ceiling
  3940. 37.03 s [really-safe-money] - RoundDown -> floor
  3941. 37.03 s [really-safe-money] - RoundNearest -> round
  3942. 37.03 s [really-safe-money] + rounder = case r of
  3943. 37.03 s [really-safe-money] + RoundUp -> ceiling
  3944. 37.03 s [really-safe-money] + RoundDown -> floor
  3945. 37.03 s [really-safe-money] + RoundNearest -> round
  3946. 37.03 s [really-safe-money] roundedResult :: Integer
  3947. 37.03 s [really-safe-money] roundedResult = rounder theoreticalResult
  3948. 37.03 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  3949. 37.03 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
  3950. 37.03 s [really-safe-money] @@ -171,10 +171,10 @@
  3951. 37.03 s [really-safe-money] fmap
  3952. 37.03 s [really-safe-money] ( ( \theoreticalResult ->
  3953. 37.03 s [really-safe-money] let rounder :: Rational -> Integer
  3954. 37.03 s [really-safe-money] - rounder = case r of
  3955. 37.03 s [really-safe-money] - RoundUp -> ceiling
  3956. 37.03 s [really-safe-money] - RoundDown -> floor
  3957. 37.03 s [really-safe-money] - RoundNearest -> round
  3958. 37.03 s [really-safe-money] + rounder = case r of
  3959. 37.03 s [really-safe-money] + RoundUp -> ceiling
  3960. 37.03 s [really-safe-money] + RoundDown -> floor
  3961. 37.03 s [really-safe-money] + RoundNearest -> round
  3962. 37.03 s [really-safe-money] roundedResult :: Integer
  3963. 37.03 s [really-safe-money] roundedResult = rounder theoreticalResult
  3964. 37.03 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  3965. 37.03 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
  3966. 37.03 s [really-safe-money] @@ -171,10 +171,10 @@
  3967. 37.03 s [really-safe-money] fmap
  3968. 37.03 s [really-safe-money] ( ( \theoreticalResult ->
  3969. 37.03 s [really-safe-money] let rounder :: Rational -> Integer
  3970. 37.03 s [really-safe-money] - rounder = case r of
  3971. 37.03 s [really-safe-money] - RoundUp -> ceiling
  3972. 37.03 s [really-safe-money] - RoundDown -> floor
  3973. 37.03 s [really-safe-money] - RoundNearest -> round
  3974. 37.03 s [really-safe-money] + rounder = case r of
  3975. 37.03 s [really-safe-money] + RoundUp -> ceiling
  3976. 37.03 s [really-safe-money] + RoundDown -> floor
  3977. 37.03 s [really-safe-money] + RoundNearest -> round
  3978. 37.03 s [really-safe-money] roundedResult :: Integer
  3979. 37.03 s [really-safe-money] roundedResult = rounder theoreticalResult
  3980. 37.03 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  3981. 37.03 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
  3982. 37.03 s [really-safe-money] @@ -177,10 +177,10 @@
  3983. 37.03 s [really-safe-money] RoundNearest -> round
  3984. 37.03 s [really-safe-money] roundedResult :: Integer
  3985. 37.03 s [really-safe-money] roundedResult = rounder theoreticalResult
  3986. 37.03 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  3987. 37.03 s [really-safe-money] - LT -> RoundedDown
  3988. 37.03 s [really-safe-money] - EQ -> DidNotRound
  3989. 37.03 s [really-safe-money] - GT -> RoundedUp
  3990. 37.03 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  3991. 37.04 s [really-safe-money] + LT -> RoundedDown
  3992. 37.04 s [really-safe-money] + EQ -> DidNotRound
  3993. 37.04 s [really-safe-money] + GT -> RoundedUp
  3994. 37.04 s [really-safe-money] in (Account.fromMinimalQuantisations roundedResult, rounded)
  3995. 37.04 s [really-safe-money] )
  3996. 37.04 s [really-safe-money] . Prelude.sum
  3997. 37.04 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
  3998. 37.04 s [really-safe-money] @@ -177,10 +177,10 @@
  3999. 37.04 s [really-safe-money] RoundNearest -> round
  4000. 37.04 s [really-safe-money] roundedResult :: Integer
  4001. 37.04 s [really-safe-money] roundedResult = rounder theoreticalResult
  4002. 37.04 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  4003. 37.04 s [really-safe-money] - LT -> RoundedDown
  4004. 37.04 s [really-safe-money] - EQ -> DidNotRound
  4005. 37.04 s [really-safe-money] - GT -> RoundedUp
  4006. 37.04 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  4007. 37.04 s [really-safe-money] + LT -> RoundedDown
  4008. 37.04 s [really-safe-money] + EQ -> DidNotRound
  4009. 37.04 s [really-safe-money] + GT -> RoundedUp
  4010. 37.04 s [really-safe-money] in (Account.fromMinimalQuantisations roundedResult, rounded)
  4011. 37.04 s [really-safe-money] )
  4012. 37.04 s [really-safe-money] . Prelude.sum
  4013. 37.04 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
  4014. 37.04 s [really-safe-money] @@ -177,10 +177,10 @@
  4015. 37.04 s [really-safe-money] RoundNearest -> round
  4016. 37.04 s [really-safe-money] roundedResult :: Integer
  4017. 37.04 s [really-safe-money] roundedResult = rounder theoreticalResult
  4018. 37.04 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  4019. 37.04 s [really-safe-money] - LT -> RoundedDown
  4020. 37.04 s [really-safe-money] - EQ -> DidNotRound
  4021. 37.04 s [really-safe-money] - GT -> RoundedUp
  4022. 37.04 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  4023. 37.04 s [really-safe-money] + LT -> RoundedDown
  4024. 37.04 s [really-safe-money] + EQ -> DidNotRound
  4025. 37.04 s [really-safe-money] + GT -> RoundedUp
  4026. 37.04 s [really-safe-money] in (Account.fromMinimalQuantisations roundedResult, rounded)
  4027. 37.04 s [really-safe-money] )
  4028. 37.04 s [really-safe-money] . Prelude.sum
  4029. 37.04 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:134:12-29
  4030. 37.04 s [really-safe-money] @@ -131,7 +131,7 @@
  4031. 37.04 s [really-safe-money] Just a -> do
  4032. 37.04 s [really-safe-money] r <- Account.subtract a account
  4033. 37.04 s [really-safe-money] Just $
  4034. 37.04 s [really-safe-money] - if r == Account.zero
  4035. 37.04 s [really-safe-money] + if True
  4036. 37.04 s [really-safe-money] then M.delete currency m
  4037. 37.04 s [really-safe-money] else M.insert currency r m
  4038. 37.04 s [really-safe-money]
  4039. 37.04 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:134:12-29
  4040. 37.04 s [really-safe-money] @@ -131,7 +131,7 @@
  4041. 37.04 s [really-safe-money] Just a -> do
  4042. 37.04 s [really-safe-money] r <- Account.subtract a account
  4043. 37.04 s [really-safe-money] Just $
  4044. 37.04 s [really-safe-money] - if r == Account.zero
  4045. 37.04 s [really-safe-money] + if False
  4046. 37.04 s [really-safe-money] then M.delete currency m
  4047. 37.04 s [really-safe-money] else M.insert currency r m
  4048. 37.04 s [really-safe-money]
  4049. 37.04 s [really-safe-money] added mutation Negate at src/Money/MultiAccount.hs:134:12-29
  4050. 37.04 s [really-safe-money] @@ -131,7 +131,7 @@
  4051. 37.04 s [really-safe-money] Just a -> do
  4052. 37.04 s [really-safe-money] r <- Account.subtract a account
  4053. 37.04 s [really-safe-money] Just $
  4054. 37.04 s [really-safe-money] - if r == Account.zero
  4055. 37.04 s [really-safe-money] + if not (r == Account.zero)
  4056. 37.04 s [really-safe-money] then M.delete currency m
  4057. 37.04 s [really-safe-money] else M.insert currency r m
  4058. 37.04 s [really-safe-money]
  4059. 37.04 s [really-safe-money] added mutation CondFlip at src/Money/MultiAccount.hs:134:9-37
  4060. 37.04 s [really-safe-money] @@ -131,9 +131,9 @@
  4061. 37.04 s [really-safe-money] Just a -> do
  4062. 37.04 s [really-safe-money] r <- Account.subtract a account
  4063. 37.04 s [really-safe-money] Just $
  4064. 37.04 s [really-safe-money] - if r == Account.zero
  4065. 37.04 s [really-safe-money] - then M.delete currency m
  4066. 37.04 s [really-safe-money] - else M.insert currency r m
  4067. 37.04 s [really-safe-money] + if r == Account.zero
  4068. 37.04 s [really-safe-money] + then M.delete currency m
  4069. 37.04 s [really-safe-money] + else M.insert currency r m
  4070. 37.04 s [really-safe-money]
  4071. 37.04 s [really-safe-money] -- | Try to convert every account to one currency.
  4072. 37.04 s [really-safe-money] --
  4073. 37.04 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:129:23-37
  4074. 37.04 s [really-safe-money] @@ -126,14 +126,14 @@
  4075. 37.04 s [really-safe-money] subtractAccount m _ (Positive (Amount 0)) = Just m
  4076. 37.04 s [really-safe-money] subtractAccount m _ (Negative (Amount 0)) = Just m
  4077. 37.04 s [really-safe-money] subtractAccount (MultiAccount m) currency account =
  4078. 37.04 s [really-safe-money] - fmap MultiAccount $ case M.lookup currency m of
  4079. 37.04 s [really-safe-money] - Nothing -> Just $ M.insert currency (Account.negate account) m
  4080. 37.04 s [really-safe-money] - Just a -> do
  4081. 37.04 s [really-safe-money] - r <- Account.subtract a account
  4082. 37.04 s [really-safe-money] - Just $
  4083. 37.04 s [really-safe-money] - if r == Account.zero
  4084. 37.04 s [really-safe-money] - then M.delete currency m
  4085. 37.04 s [really-safe-money] - else M.insert currency r m
  4086. 37.04 s [really-safe-money] + fmap MultiAccount $ case M.lookup currency m of
  4087. 37.04 s [really-safe-money] + Nothing -> Just $ M.insert currency (Account.negate account) m
  4088. 37.04 s [really-safe-money] + Just a -> do
  4089. 37.04 s [really-safe-money] + r <- Account.subtract a account
  4090. 37.04 s [really-safe-money] + Just $
  4091. 37.04 s [really-safe-money] + if r == Account.zero
  4092. 37.04 s [really-safe-money] + then M.delete currency m
  4093. 37.04 s [really-safe-money] + else M.insert currency r m
  4094. 37.04 s [really-safe-money]
  4095. 37.04 s [really-safe-money] -- | Try to convert every account to one currency.
  4096. 37.04 s [really-safe-money] --
  4097. 37.04 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:129:23-37
  4098. 37.04 s [really-safe-money] @@ -126,14 +126,14 @@
  4099. 37.04 s [really-safe-money] subtractAccount m _ (Positive (Amount 0)) = Just m
  4100. 37.04 s [really-safe-money] subtractAccount m _ (Negative (Amount 0)) = Just m
  4101. 37.04 s [really-safe-money] subtractAccount (MultiAccount m) currency account =
  4102. 37.04 s [really-safe-money] - fmap MultiAccount $ case M.lookup currency m of
  4103. 37.04 s [really-safe-money] - Nothing -> Just $ M.insert currency (Account.negate account) m
  4104. 37.04 s [really-safe-money] - Just a -> do
  4105. 37.04 s [really-safe-money] - r <- Account.subtract a account
  4106. 37.04 s [really-safe-money] - Just $
  4107. 37.04 s [really-safe-money] - if r == Account.zero
  4108. 37.04 s [really-safe-money] - then M.delete currency m
  4109. 37.04 s [really-safe-money] - else M.insert currency r m
  4110. 37.04 s [really-safe-money] + fmap MultiAccount $ case M.lookup currency m of
  4111. 37.04 s [really-safe-money] + Nothing -> Just $ M.insert currency (Account.negate account) m
  4112. 37.04 s [really-safe-money] + Just a -> do
  4113. 37.04 s [really-safe-money] + r <- Account.subtract a account
  4114. 37.04 s [really-safe-money] + Just $
  4115. 37.04 s [really-safe-money] + if r == Account.zero
  4116. 37.04 s [really-safe-money] + then M.delete currency m
  4117. 37.04 s [really-safe-money] + else M.insert currency r m
  4118. 37.04 s [really-safe-money]
  4119. 37.04 s [really-safe-money] -- | Try to convert every account to one currency.
  4120. 37.04 s [really-safe-money] --
  4121. 37.04 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:120:12-29
  4122. 37.04 s [really-safe-money] @@ -117,7 +117,7 @@
  4123. 37.04 s [really-safe-money] Just a -> do
  4124. 37.04 s [really-safe-money] r <- Account.add a account
  4125. 37.04 s [really-safe-money] Just $
  4126. 37.04 s [really-safe-money] - if r == Account.zero
  4127. 37.04 s [really-safe-money] + if True
  4128. 37.04 s [really-safe-money] then M.delete currency m
  4129. 37.04 s [really-safe-money] else M.insert currency r m
  4130. 37.04 s [really-safe-money]
  4131. 37.04 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:120:12-29
  4132. 37.04 s [really-safe-money] @@ -117,7 +117,7 @@
  4133. 37.04 s [really-safe-money] Just a -> do
  4134. 37.04 s [really-safe-money] r <- Account.add a account
  4135. 37.04 s [really-safe-money] Just $
  4136. 37.04 s [really-safe-money] - if r == Account.zero
  4137. 37.04 s [really-safe-money] + if False
  4138. 37.04 s [really-safe-money] then M.delete currency m
  4139. 37.04 s [really-safe-money] else M.insert currency r m
  4140. 37.04 s [really-safe-money]
  4141. 37.04 s [really-safe-money] added mutation Negate at src/Money/MultiAccount.hs:120:12-29
  4142. 37.04 s [really-safe-money] @@ -117,7 +117,7 @@
  4143. 37.04 s [really-safe-money] Just a -> do
  4144. 37.04 s [really-safe-money] r <- Account.add a account
  4145. 37.04 s [really-safe-money] Just $
  4146. 37.04 s [really-safe-money] - if r == Account.zero
  4147. 37.04 s [really-safe-money] + if not (r == Account.zero)
  4148. 37.04 s [really-safe-money] then M.delete currency m
  4149. 37.04 s [really-safe-money] else M.insert currency r m
  4150. 37.04 s [really-safe-money]
  4151. 37.04 s [really-safe-money] added mutation CondFlip at src/Money/MultiAccount.hs:120:9-37
  4152. 37.04 s [really-safe-money] @@ -117,9 +117,9 @@
  4153. 37.04 s [really-safe-money] Just a -> do
  4154. 37.04 s [really-safe-money] r <- Account.add a account
  4155. 37.04 s [really-safe-money] Just $
  4156. 37.04 s [really-safe-money] - if r == Account.zero
  4157. 37.04 s [really-safe-money] - then M.delete currency m
  4158. 37.04 s [really-safe-money] - else M.insert currency r m
  4159. 37.04 s [really-safe-money] + if r == Account.zero
  4160. 37.04 s [really-safe-money] + then M.delete currency m
  4161. 37.04 s [really-safe-money] + else M.insert currency r m
  4162. 37.04 s [really-safe-money]
  4163. 37.04 s [really-safe-money] -- | Add an 'Account' to a 'MultiAccount'
  4164. 37.04 s [really-safe-money] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
  4165. 37.04 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:115:23-37
  4166. 37.04 s [really-safe-money] @@ -112,14 +112,14 @@
  4167. 37.04 s [really-safe-money] addAccount m _ (Positive (Amount 0)) = Just m
  4168. 37.04 s [really-safe-money] addAccount m _ (Negative (Amount 0)) = Just m
  4169. 37.04 s [really-safe-money] addAccount (MultiAccount m) currency account =
  4170. 37.04 s [really-safe-money] - fmap MultiAccount $ case M.lookup currency m of
  4171. 37.04 s [really-safe-money] - Nothing -> Just $ M.insert currency account m
  4172. 37.04 s [really-safe-money] - Just a -> do
  4173. 37.04 s [really-safe-money] - r <- Account.add a account
  4174. 37.04 s [really-safe-money] - Just $
  4175. 37.04 s [really-safe-money] - if r == Account.zero
  4176. 37.04 s [really-safe-money] - then M.delete currency m
  4177. 37.04 s [really-safe-money] - else M.insert currency r m
  4178. 37.04 s [really-safe-money] + fmap MultiAccount $ case M.lookup currency m of
  4179. 37.04 s [really-safe-money] + Nothing -> Just $ M.insert currency account m
  4180. 37.04 s [really-safe-money] + Just a -> do
  4181. 37.04 s [really-safe-money] + r <- Account.add a account
  4182. 37.04 s [really-safe-money] + Just $
  4183. 37.04 s [really-safe-money] + if r == Account.zero
  4184. 37.04 s [really-safe-money] + then M.delete currency m
  4185. 37.04 s [really-safe-money] + else M.insert currency r m
  4186. 37.04 s [really-safe-money]
  4187. 37.04 s [really-safe-money] -- | Add an 'Account' to a 'MultiAccount'
  4188. 37.04 s [really-safe-money] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
  4189. 37.04 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:115:23-37
  4190. 37.04 s [really-safe-money] @@ -112,14 +112,14 @@
  4191. 37.04 s [really-safe-money] addAccount m _ (Positive (Amount 0)) = Just m
  4192. 37.04 s [really-safe-money] addAccount m _ (Negative (Amount 0)) = Just m
  4193. 37.04 s [really-safe-money] addAccount (MultiAccount m) currency account =
  4194. 37.04 s [really-safe-money] - fmap MultiAccount $ case M.lookup currency m of
  4195. 37.04 s [really-safe-money] - Nothing -> Just $ M.insert currency account m
  4196. 37.04 s [really-safe-money] - Just a -> do
  4197. 37.04 s [really-safe-money] - r <- Account.add a account
  4198. 37.04 s [really-safe-money] - Just $
  4199. 37.04 s [really-safe-money] - if r == Account.zero
  4200. 37.04 s [really-safe-money] - then M.delete currency m
  4201. 37.04 s [really-safe-money] - else M.insert currency r m
  4202. 37.04 s [really-safe-money] + fmap MultiAccount $ case M.lookup currency m of
  4203. 37.04 s [really-safe-money] + Nothing -> Just $ M.insert currency account m
  4204. 37.04 s [really-safe-money] + Just a -> do
  4205. 37.04 s [really-safe-money] + r <- Account.add a account
  4206. 37.04 s [really-safe-money] + Just $
  4207. 37.04 s [really-safe-money] + if r == Account.zero
  4208. 37.04 s [really-safe-money] + then M.delete currency m
  4209. 37.04 s [really-safe-money] + else M.insert currency r m
  4210. 37.04 s [really-safe-money]
  4211. 37.04 s [really-safe-money] -- | Add an 'Account' to a 'MultiAccount'
  4212. 37.04 s [really-safe-money] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
  4213. 37.04 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:78:6-28
  4214. 37.04 s [really-safe-money] @@ -75,7 +75,7 @@
  4215. 37.04 s [really-safe-money]
  4216. 37.04 s [really-safe-money] fromAccount :: currency -> Account -> MultiAccount currency
  4217. 37.04 s [really-safe-money] fromAccount currency amount =
  4218. 37.04 s [really-safe-money] - if amount == Account.zero
  4219. 37.04 s [really-safe-money] + if True
  4220. 37.04 s [really-safe-money] then zero
  4221. 37.04 s [really-safe-money] else MultiAccount $ M.singleton currency amount
  4222. 37.04 s [really-safe-money]
  4223. 37.04 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:78:6-28
  4224. 37.04 s [really-safe-money] @@ -75,7 +75,7 @@
  4225. 37.04 s [really-safe-money]
  4226. 37.04 s [really-safe-money] fromAccount :: currency -> Account -> MultiAccount currency
  4227. 37.04 s [really-safe-money] fromAccount currency amount =
  4228. 37.04 s [really-safe-money] - if amount == Account.zero
  4229. 37.04 s [really-safe-money] + if False
  4230. 37.04 s [really-safe-money] then zero
  4231. 37.04 s [really-safe-money] else MultiAccount $ M.singleton currency amount
  4232. 37.04 s [really-safe-money]
  4233. 37.04 s [really-safe-money] added mutation Negate at src/Money/MultiAccount.hs:78:6-28
  4234. 37.04 s [really-safe-money] @@ -75,7 +75,7 @@
  4235. 37.04 s [really-safe-money]
  4236. 37.04 s [really-safe-money] fromAccount :: currency -> Account -> MultiAccount currency
  4237. 37.04 s [really-safe-money] fromAccount currency amount =
  4238. 37.04 s [really-safe-money] - if amount == Account.zero
  4239. 37.04 s [really-safe-money] + if not (amount == Account.zero)
  4240. 37.04 s [really-safe-money] then zero
  4241. 37.04 s [really-safe-money] else MultiAccount $ M.singleton currency amount
  4242. 37.04 s [really-safe-money]
  4243. 37.04 s [really-safe-money] added mutation CondFlip at src/Money/MultiAccount.hs:78:3-52
  4244. 37.04 s [really-safe-money] @@ -75,9 +75,9 @@
  4245. 37.04 s [really-safe-money]
  4246. 37.04 s [really-safe-money] fromAccount :: currency -> Account -> MultiAccount currency
  4247. 37.04 s [really-safe-money] fromAccount currency amount =
  4248. 37.04 s [really-safe-money] - if amount == Account.zero
  4249. 37.04 s [really-safe-money] - then zero
  4250. 37.04 s [really-safe-money] - else MultiAccount $ M.singleton currency amount
  4251. 37.04 s [really-safe-money] + if amount == Account.zero
  4252. 37.04 s [really-safe-money] + then zero
  4253. 37.04 s [really-safe-money] + else MultiAccount $ M.singleton currency amount
  4254. 37.04 s [really-safe-money]
  4255. 37.04 s [really-safe-money] -- | No money of any currency
  4256. 37.04 s [really-safe-money] zero :: MultiAccount currency
  4257. 37.04 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:69:13-30
  4258. 37.04 s [really-safe-money] @@ -66,7 +66,7 @@
  4259. 37.04 s [really-safe-money] [ genericValidate ma,
  4260. 37.04 s [really-safe-money] decorateMap m $ \_ a ->
  4261. 37.04 s [really-safe-money] declare "The account is not zero" $
  4262. 37.04 s [really-safe-money] - a /= Account.zero
  4263. 37.04 s [really-safe-money] + True
  4264. 37.04 s [really-safe-money] ]
  4265. 37.04 s [really-safe-money]
  4266. 37.04 s [really-safe-money] -- TODO no empty currencies
  4267. 37.04 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:69:13-30
  4268. 37.04 s [really-safe-money] @@ -66,7 +66,7 @@
  4269. 37.04 s [really-safe-money] [ genericValidate ma,
  4270. 37.04 s [really-safe-money] decorateMap m $ \_ a ->
  4271. 37.04 s [really-safe-money] declare "The account is not zero" $
  4272. 37.04 s [really-safe-money] - a /= Account.zero
  4273. 37.04 s [really-safe-money] + False
  4274. 37.04 s [really-safe-money] ]
  4275. 37.04 s [really-safe-money]
  4276. 37.04 s [really-safe-money] -- TODO no empty currencies
  4277. 37.04 s [really-safe-money] added mutation Negate at src/Money/MultiAccount.hs:69:13-30
  4278. 37.04 s [really-safe-money] @@ -66,7 +66,7 @@
  4279. 37.04 s [really-safe-money] [ genericValidate ma,
  4280. 37.04 s [really-safe-money] decorateMap m $ \_ a ->
  4281. 37.04 s [really-safe-money] declare "The account is not zero" $
  4282. 37.04 s [really-safe-money] - a /= Account.zero
  4283. 37.04 s [really-safe-money] + not (a /= Account.zero)
  4284. 37.05 s [really-safe-money] ]
  4285. 37.05 s [really-safe-money]
  4286. 37.05 s [really-safe-money] -- TODO no empty currencies
  4287. 37.05 s [really-safe-money] added mutation ListLit at src/Money/MultiAccount.hs:66:7-8
  4288. 37.05 s [really-safe-money] @@ -63,11 +63,7 @@
  4289. 37.05 s [really-safe-money] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
  4290. 37.05 s [really-safe-money] validate ma@(MultiAccount m) =
  4291. 37.05 s [really-safe-money] mconcat
  4292. 37.05 s [really-safe-money] - [ genericValidate ma,
  4293. 37.05 s [really-safe-money] - decorateMap m $ \_ a ->
  4294. 37.05 s [really-safe-money] - declare "The account is not zero" $
  4295. 37.05 s [really-safe-money] - a /= Account.zero
  4296. 37.05 s [really-safe-money] - ]
  4297. 37.05 s [really-safe-money] + []
  4298. 37.05 s [really-safe-money]
  4299. 37.05 s [really-safe-money] -- TODO no empty currencies
  4300. 37.05 s [really-safe-money]
  4301. 37.05 s [really-safe-money] added mutation ListLit at src/Money/MultiAccount.hs:66:7-8
  4302. 37.05 s [really-safe-money] @@ -63,11 +63,11 @@
  4303. 37.05 s [really-safe-money] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
  4304. 37.05 s [really-safe-money] validate ma@(MultiAccount m) =
  4305. 37.05 s [really-safe-money] mconcat
  4306. 37.05 s [really-safe-money] - [ genericValidate ma,
  4307. 37.05 s [really-safe-money] - decorateMap m $ \_ a ->
  4308. 37.05 s [really-safe-money] - declare "The account is not zero" $
  4309. 37.05 s [really-safe-money] - a /= Account.zero
  4310. 37.05 s [really-safe-money] - ]
  4311. 37.05 s [really-safe-money] + [ genericValidate ma,
  4312. 37.05 s [really-safe-money] + decorateMap m $ \_ a ->
  4313. 37.05 s [really-safe-money] + declare "The account is not zero" $
  4314. 37.05 s [really-safe-money] + a /= Account.zero
  4315. 37.05 s [really-safe-money] + ]
  4316. 37.05 s [really-safe-money]
  4317. 37.05 s [really-safe-money] -- TODO no empty currencies
  4318. 37.05 s [really-safe-money]
  4319. 37.05 s [really-safe-money] added 27 mutations
  4320. 37.52 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 )
  4321. 37.77 s [really-safe-money] mutation: instrumenting Money.AccountOf
  4322. 37.77 s [really-safe-money] added mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  4323. 37.77 s [really-safe-money] @@ -177,11 +177,11 @@
  4324. 37.77 s [really-safe-money]
  4325. 37.77 s [really-safe-money] -- | See 'Account.distribute'
  4326. 37.77 s [really-safe-money] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  4327. 37.77 s [really-safe-money] -distribute (AccountOf a) w = case Account.distribute a w of
  4328. 37.77 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  4329. 37.77 s [really-safe-money] - DistributedZero -> DistributedZero
  4330. 37.77 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  4331. 37.77 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  4332. 37.77 s [really-safe-money] +distribute (AccountOf a) w = case Account.distribute a w of
  4333. 37.77 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  4334. 37.77 s [really-safe-money] + DistributedZero -> DistributedZero
  4335. 37.77 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  4336. 37.78 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  4337. 37.78 s [really-safe-money]
  4338. 37.78 s [really-safe-money] -- | The result of 'distribute'
  4339. 37.78 s [really-safe-money] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  4340. 37.78 s [really-safe-money] added mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  4341. 37.78 s [really-safe-money] @@ -177,11 +177,11 @@
  4342. 37.78 s [really-safe-money]
  4343. 37.78 s [really-safe-money] -- | See 'Account.distribute'
  4344. 37.78 s [really-safe-money] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  4345. 37.78 s [really-safe-money] -distribute (AccountOf a) w = case Account.distribute a w of
  4346. 37.78 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  4347. 37.78 s [really-safe-money] - DistributedZero -> DistributedZero
  4348. 37.78 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  4349. 37.78 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  4350. 37.78 s [really-safe-money] +distribute (AccountOf a) w = case Account.distribute a w of
  4351. 37.78 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  4352. 37.78 s [really-safe-money] + DistributedZero -> DistributedZero
  4353. 37.78 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  4354. 37.78 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  4355. 37.78 s [really-safe-money]
  4356. 37.78 s [really-safe-money] -- | The result of 'distribute'
  4357. 37.78 s [really-safe-money] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  4358. 37.78 s [really-safe-money] added mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  4359. 37.78 s [really-safe-money] @@ -177,11 +177,11 @@
  4360. 37.78 s [really-safe-money]
  4361. 37.78 s [really-safe-money] -- | See 'Account.distribute'
  4362. 37.78 s [really-safe-money] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  4363. 37.78 s [really-safe-money] -distribute (AccountOf a) w = case Account.distribute a w of
  4364. 37.78 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  4365. 37.78 s [really-safe-money] - DistributedZero -> DistributedZero
  4366. 37.78 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  4367. 37.78 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  4368. 37.78 s [really-safe-money] +distribute (AccountOf a) w = case Account.distribute a w of
  4369. 37.78 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  4370. 37.78 s [really-safe-money] + DistributedZero -> DistributedZero
  4371. 37.78 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  4372. 37.78 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  4373. 37.78 s [really-safe-money]
  4374. 37.78 s [really-safe-money] -- | The result of 'distribute'
  4375. 37.78 s [really-safe-money] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  4376. 37.78 s [really-safe-money] added mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  4377. 37.78 s [really-safe-money] @@ -177,11 +177,11 @@
  4378. 37.78 s [really-safe-money]
  4379. 37.78 s [really-safe-money] -- | See 'Account.distribute'
  4380. 37.78 s [really-safe-money] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  4381. 37.78 s [really-safe-money] -distribute (AccountOf a) w = case Account.distribute a w of
  4382. 37.78 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  4383. 37.78 s [really-safe-money] - DistributedZero -> DistributedZero
  4384. 37.78 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  4385. 37.78 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  4386. 37.78 s [really-safe-money] +distribute (AccountOf a) w = case Account.distribute a w of
  4387. 37.78 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  4388. 37.78 s [really-safe-money] + DistributedZero -> DistributedZero
  4389. 37.78 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  4390. 37.78 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  4391. 37.78 s [really-safe-money]
  4392. 37.78 s [really-safe-money] -- | The result of 'distribute'
  4393. 37.78 s [really-safe-money] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  4394. 37.78 s [really-safe-money] added 4 mutations
  4395. 37.78 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 )
  4396. 38.16 s [really-safe-money] [ 1 of 12] Compiling Numeric.DecimalLiteral ( src/Numeric/DecimalLiteral.hs, dist/build/Numeric/DecimalLiteral.p_o )
  4397. 38.59 s [really-safe-money] mutation: instrumenting Numeric.DecimalLiteral
  4398. 38.59 s [really-safe-money] added mutation BoolLit at src/Numeric/DecimalLiteral.hs:396:23-27
  4399. 38.59 s [really-safe-money] @@ -393,5 +393,5 @@
  4400. 38.59 s [really-safe-money] DecimalLiteral mS m e -> DecimalLiteral (go mS) m e
  4401. 38.59 s [really-safe-money] where
  4402. 38.59 s [really-safe-money] go = \case
  4403. 38.59 s [really-safe-money] - Nothing -> Just True
  4404. 38.59 s [really-safe-money] + Nothing -> Just False
  4405. 38.59 s [really-safe-money] s -> s
  4406. 38.59 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:368:10-39
  4407. 38.59 s [really-safe-money] @@ -365,7 +365,7 @@
  4408. 38.59 s [really-safe-money] setMinimumDigits wantedDigits dl =
  4409. 38.59 s [really-safe-money] let currentDigits :: Word8
  4410. 38.59 s [really-safe-money] currentDigits = digits dl
  4411. 38.59 s [really-safe-money] - in if wantedDigits <= currentDigits
  4412. 38.59 s [really-safe-money] + in if True
  4413. 38.59 s [really-safe-money] then dl
  4414. 38.59 s [really-safe-money] else increaseDigits (wantedDigits - currentDigits) dl
  4415. 38.59 s [really-safe-money] where
  4416. 38.59 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:368:10-39
  4417. 38.59 s [really-safe-money] @@ -365,7 +365,7 @@
  4418. 38.59 s [really-safe-money] setMinimumDigits wantedDigits dl =
  4419. 38.59 s [really-safe-money] let currentDigits :: Word8
  4420. 38.59 s [really-safe-money] currentDigits = digits dl
  4421. 38.59 s [really-safe-money] - in if wantedDigits <= currentDigits
  4422. 38.59 s [really-safe-money] + in if False
  4423. 38.59 s [really-safe-money] then dl
  4424. 38.59 s [really-safe-money] else increaseDigits (wantedDigits - currentDigits) dl
  4425. 38.59 s [really-safe-money] where
  4426. 38.59 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:368:10-39
  4427. 38.59 s [really-safe-money] @@ -365,7 +365,7 @@
  4428. 38.59 s [really-safe-money] setMinimumDigits wantedDigits dl =
  4429. 38.59 s [really-safe-money] let currentDigits :: Word8
  4430. 38.59 s [really-safe-money] currentDigits = digits dl
  4431. 38.59 s [really-safe-money] - in if wantedDigits <= currentDigits
  4432. 38.59 s [really-safe-money] + in if not (wantedDigits <= currentDigits)
  4433. 38.59 s [really-safe-money] then dl
  4434. 38.59 s [really-safe-money] else increaseDigits (wantedDigits - currentDigits) dl
  4435. 38.59 s [really-safe-money] where
  4436. 38.59 s [really-safe-money] added mutation CondFlip at src/Numeric/DecimalLiteral.hs:368:7-62
  4437. 38.59 s [really-safe-money] @@ -365,9 +365,9 @@
  4438. 38.59 s [really-safe-money] setMinimumDigits wantedDigits dl =
  4439. 38.59 s [really-safe-money] let currentDigits :: Word8
  4440. 38.59 s [really-safe-money] currentDigits = digits dl
  4441. 38.59 s [really-safe-money] - in if wantedDigits <= currentDigits
  4442. 38.59 s [really-safe-money] - then dl
  4443. 38.59 s [really-safe-money] - else increaseDigits (wantedDigits - currentDigits) dl
  4444. 38.59 s [really-safe-money] + in if wantedDigits <= currentDigits
  4445. 38.59 s [really-safe-money] + then dl
  4446. 38.59 s [really-safe-money] + else increaseDigits (wantedDigits - currentDigits) dl
  4447. 38.59 s [really-safe-money] where
  4448. 38.59 s [really-safe-money] increaseDigits :: Word8 -> DecimalLiteral -> DecimalLiteral
  4449. 38.59 s [really-safe-money] increaseDigits 0 = id
  4450. 38.59 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:375:80-82
  4451. 38.59 s [really-safe-money] @@ -372,7 +372,7 @@
  4452. 38.59 s [really-safe-money] increaseDigits :: Word8 -> DecimalLiteral -> DecimalLiteral
  4453. 38.59 s [really-safe-money] increaseDigits 0 = id
  4454. 38.59 s [really-safe-money] increaseDigits w = \case
  4455. 38.60 s [really-safe-money] - DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 10) (succ e))
  4456. 38.60 s [really-safe-money] + DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 0) (succ e))
  4457. 38.60 s [really-safe-money]
  4458. 38.60 s [really-safe-money] -- | Ensures that a positive literal has no sign
  4459. 38.60 s [really-safe-money] --
  4460. 38.60 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:375:80-82
  4461. 38.60 s [really-safe-money] @@ -372,7 +372,7 @@
  4462. 38.60 s [really-safe-money] increaseDigits :: Word8 -> DecimalLiteral -> DecimalLiteral
  4463. 38.60 s [really-safe-money] increaseDigits 0 = id
  4464. 38.60 s [really-safe-money] increaseDigits w = \case
  4465. 38.60 s [really-safe-money] - DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 10) (succ e))
  4466. 38.60 s [really-safe-money] + DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 1) (succ e))
  4467. 38.60 s [really-safe-money]
  4468. 38.60 s [really-safe-money] -- | Ensures that a positive literal has no sign
  4469. 38.60 s [really-safe-money] --
  4470. 38.60 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:337:21-22
  4471. 38.60 s [really-safe-money] @@ -334,7 +334,7 @@
  4472. 38.60 s [really-safe-money] pure $ fromIntegral n
  4473. 38.60 s [really-safe-money]
  4474. 38.60 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  4475. 38.60 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  4476. 38.60 s [really-safe-money] +numSign a = if a >= 1 then Nothing else Just False
  4477. 38.60 s [really-safe-money]
  4478. 38.60 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  4479. 38.60 s [really-safe-money] signSignum = \case
  4480. 38.60 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:337:16-22
  4481. 38.60 s [really-safe-money] @@ -334,7 +334,7 @@
  4482. 38.60 s [really-safe-money] pure $ fromIntegral n
  4483. 38.60 s [really-safe-money]
  4484. 38.60 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  4485. 38.60 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  4486. 38.60 s [really-safe-money] +numSign a = if True then Nothing else Just False
  4487. 38.60 s [really-safe-money]
  4488. 38.60 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  4489. 38.60 s [really-safe-money] signSignum = \case
  4490. 38.60 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:337:16-22
  4491. 38.60 s [really-safe-money] @@ -334,7 +334,7 @@
  4492. 38.60 s [really-safe-money] pure $ fromIntegral n
  4493. 38.60 s [really-safe-money]
  4494. 38.60 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  4495. 38.60 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  4496. 38.60 s [really-safe-money] +numSign a = if False then Nothing else Just False
  4497. 38.60 s [really-safe-money]
  4498. 38.60 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  4499. 38.60 s [really-safe-money] signSignum = \case
  4500. 38.60 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:337:16-22
  4501. 38.60 s [really-safe-money] @@ -334,7 +334,7 @@
  4502. 38.60 s [really-safe-money] pure $ fromIntegral n
  4503. 38.60 s [really-safe-money]
  4504. 38.60 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  4505. 38.60 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  4506. 38.60 s [really-safe-money] +numSign a = if not (a >= 0) then Nothing else Just False
  4507. 38.60 s [really-safe-money]
  4508. 38.60 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  4509. 38.60 s [really-safe-money] signSignum = \case
  4510. 38.60 s [really-safe-money] added mutation BoolLit at src/Numeric/DecimalLiteral.hs:337:46-51
  4511. 38.60 s [really-safe-money] @@ -334,7 +334,7 @@
  4512. 38.60 s [really-safe-money] pure $ fromIntegral n
  4513. 38.60 s [really-safe-money]
  4514. 38.60 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  4515. 38.60 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  4516. 38.60 s [really-safe-money] +numSign a = if a >= 0 then Nothing else Just True
  4517. 38.60 s [really-safe-money]
  4518. 38.60 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  4519. 38.60 s [really-safe-money] signSignum = \case
  4520. 38.60 s [really-safe-money] added mutation CondFlip at src/Numeric/DecimalLiteral.hs:337:13-51
  4521. 38.60 s [really-safe-money] @@ -334,7 +334,7 @@
  4522. 38.60 s [really-safe-money] pure $ fromIntegral n
  4523. 38.60 s [really-safe-money]
  4524. 38.60 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  4525. 38.60 s [really-safe-money] -numSign a = if a >= 0 then Nothing else Just False
  4526. 38.60 s [really-safe-money] +numSign a = if a >= 0 then Nothing else Just False
  4527. 38.60 s [really-safe-money]
  4528. 38.60 s [really-safe-money] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  4529. 38.60 s [really-safe-money] signSignum = \case
  4530. 38.60 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46
  4531. 38.60 s [really-safe-money] @@ -329,7 +329,7 @@
  4532. 38.60 s [really-safe-money] toInt :: DecimalLiteral -> Maybe Int
  4533. 38.60 s [really-safe-money] toInt dl = do
  4534. 38.60 s [really-safe-money] n <- toInteger dl
  4535. 38.60 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Int)
  4536. 38.60 s [really-safe-money] + guard $ True
  4537. 38.60 s [really-safe-money] guard $ n >= fromIntegral (minBound :: Int)
  4538. 38.60 s [really-safe-money] pure $ fromIntegral n
  4539. 38.60 s [really-safe-money]
  4540. 38.60 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46
  4541. 38.60 s [really-safe-money] @@ -329,7 +329,7 @@
  4542. 38.60 s [really-safe-money] toInt :: DecimalLiteral -> Maybe Int
  4543. 38.60 s [really-safe-money] toInt dl = do
  4544. 38.60 s [really-safe-money] n <- toInteger dl
  4545. 38.60 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Int)
  4546. 38.60 s [really-safe-money] + guard $ False
  4547. 38.60 s [really-safe-money] guard $ n >= fromIntegral (minBound :: Int)
  4548. 38.60 s [really-safe-money] pure $ fromIntegral n
  4549. 38.60 s [really-safe-money]
  4550. 38.60 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:332:11-46
  4551. 38.60 s [really-safe-money] @@ -329,7 +329,7 @@
  4552. 38.60 s [really-safe-money] toInt :: DecimalLiteral -> Maybe Int
  4553. 38.60 s [really-safe-money] toInt dl = do
  4554. 38.60 s [really-safe-money] n <- toInteger dl
  4555. 38.60 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Int)
  4556. 38.60 s [really-safe-money] + guard $ not (n <= fromIntegral (maxBound :: Int))
  4557. 38.60 s [really-safe-money] guard $ n >= fromIntegral (minBound :: Int)
  4558. 38.60 s [really-safe-money] pure $ fromIntegral n
  4559. 38.60 s [really-safe-money]
  4560. 38.60 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46
  4561. 38.60 s [really-safe-money] @@ -330,7 +330,7 @@
  4562. 38.60 s [really-safe-money] toInt dl = do
  4563. 38.60 s [really-safe-money] n <- toInteger dl
  4564. 38.60 s [really-safe-money] guard $ n <= fromIntegral (maxBound :: Int)
  4565. 38.60 s [really-safe-money] - guard $ n >= fromIntegral (minBound :: Int)
  4566. 38.60 s [really-safe-money] + guard $ True
  4567. 38.60 s [really-safe-money] pure $ fromIntegral n
  4568. 38.60 s [really-safe-money]
  4569. 38.60 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  4570. 38.60 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46
  4571. 38.60 s [really-safe-money] @@ -330,7 +330,7 @@
  4572. 38.60 s [really-safe-money] toInt dl = do
  4573. 38.60 s [really-safe-money] n <- toInteger dl
  4574. 38.60 s [really-safe-money] guard $ n <= fromIntegral (maxBound :: Int)
  4575. 38.60 s [really-safe-money] - guard $ n >= fromIntegral (minBound :: Int)
  4576. 38.60 s [really-safe-money] + guard $ False
  4577. 38.60 s [really-safe-money] pure $ fromIntegral n
  4578. 38.60 s [really-safe-money]
  4579. 38.60 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  4580. 38.60 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:333:11-46
  4581. 38.60 s [really-safe-money] @@ -330,7 +330,7 @@
  4582. 38.60 s [really-safe-money] toInt dl = do
  4583. 38.60 s [really-safe-money] n <- toInteger dl
  4584. 38.60 s [really-safe-money] guard $ n <= fromIntegral (maxBound :: Int)
  4585. 38.60 s [really-safe-money] - guard $ n >= fromIntegral (minBound :: Int)
  4586. 38.60 s [really-safe-money] + guard $ not (n >= fromIntegral (minBound :: Int))
  4587. 38.60 s [really-safe-money] pure $ fromIntegral n
  4588. 38.60 s [really-safe-money]
  4589. 38.60 s [really-safe-money] numSign :: (Ord a, Num a) => a -> Maybe Bool
  4590. 38.60 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:315:67-68
  4591. 38.60 s [really-safe-money] @@ -312,7 +312,7 @@
  4592. 38.60 s [really-safe-money]
  4593. 38.60 s [really-safe-money] -- | Construct a 'DecimalLiteral' from an 'Integer'
  4594. 38.60 s [really-safe-money] fromInteger :: Integer -> DecimalLiteral
  4595. 38.60 s [really-safe-money] -fromInteger n = DecimalLiteral (numSign n) (fromIntegral (abs n)) 0
  4596. 38.60 s [really-safe-money] +fromInteger n = DecimalLiteral (numSign n) (fromIntegral (abs n)) 1
  4597. 38.60 s [really-safe-money]
  4598. 38.60 s [really-safe-money] -- | Turn a 'DecimalLiteral' into an 'Integer'
  4599. 38.60 s [really-safe-money] toInteger :: DecimalLiteral -> Maybe Integer
  4600. 38.60 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:304:42-43
  4601. 38.60 s [really-safe-money] @@ -301,7 +301,7 @@
  4602. 38.60 s [really-safe-money]
  4603. 38.60 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Natural'
  4604. 38.60 s [really-safe-money] fromNatural :: Natural -> DecimalLiteral
  4605. 38.60 s [really-safe-money] -fromNatural n = DecimalLiteral Nothing n 0
  4606. 38.60 s [really-safe-money] +fromNatural n = DecimalLiteral Nothing n 1
  4607. 38.60 s [really-safe-money]
  4608. 38.60 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Natural'
  4609. 38.60 s [really-safe-money] toNatural :: DecimalLiteral -> Maybe Natural
  4610. 38.60 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47
  4611. 38.60 s [really-safe-money] @@ -296,7 +296,7 @@
  4612. 38.60 s [really-safe-money] toWord :: DecimalLiteral -> Maybe Word
  4613. 38.60 s [really-safe-money] toWord dl = do
  4614. 38.60 s [really-safe-money] n <- toNatural dl
  4615. 38.60 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Word)
  4616. 38.60 s [really-safe-money] + guard $ True
  4617. 38.60 s [really-safe-money] pure $ fromIntegral n
  4618. 38.60 s [really-safe-money]
  4619. 38.60 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Natural'
  4620. 38.60 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47
  4621. 38.60 s [really-safe-money] @@ -296,7 +296,7 @@
  4622. 38.60 s [really-safe-money] toWord :: DecimalLiteral -> Maybe Word
  4623. 38.60 s [really-safe-money] toWord dl = do
  4624. 38.60 s [really-safe-money] n <- toNatural dl
  4625. 38.60 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Word)
  4626. 38.60 s [really-safe-money] + guard $ False
  4627. 38.60 s [really-safe-money] pure $ fromIntegral n
  4628. 38.60 s [really-safe-money]
  4629. 38.60 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Natural'
  4630. 38.60 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:299:11-47
  4631. 38.60 s [really-safe-money] @@ -296,7 +296,7 @@
  4632. 38.60 s [really-safe-money] toWord :: DecimalLiteral -> Maybe Word
  4633. 38.60 s [really-safe-money] toWord dl = do
  4634. 38.60 s [really-safe-money] n <- toNatural dl
  4635. 38.60 s [really-safe-money] - guard $ n <= fromIntegral (maxBound :: Word)
  4636. 38.60 s [really-safe-money] + guard $ not (n <= fromIntegral (maxBound :: Word))
  4637. 38.60 s [really-safe-money] pure $ fromIntegral n
  4638. 38.60 s [really-safe-money]
  4639. 38.60 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Natural'
  4640. 38.60 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  4641. 38.60 s [really-safe-money] @@ -286,7 +286,7 @@
  4642. 38.60 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  4643. 38.60 s [really-safe-money] toRatio (DecimalLiteral mSign m e) = case mSign of
  4644. 38.60 s [really-safe-money] Just False -> Nothing
  4645. 38.60 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  4646. 38.60 s [really-safe-money] + _ -> Just $ fromIntegral m / (0 ^ e)
  4647. 38.61 s [really-safe-money]
  4648. 38.61 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  4649. 38.61 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  4650. 38.61 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  4651. 38.61 s [really-safe-money] @@ -286,7 +286,7 @@
  4652. 38.61 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  4653. 38.61 s [really-safe-money] toRatio (DecimalLiteral mSign m e) = case mSign of
  4654. 38.61 s [really-safe-money] Just False -> Nothing
  4655. 38.61 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  4656. 38.61 s [really-safe-money] + _ -> Just $ fromIntegral m / (1 ^ e)
  4657. 38.61 s [really-safe-money]
  4658. 38.61 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  4659. 38.61 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  4660. 38.61 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  4661. 38.61 s [really-safe-money] @@ -286,7 +286,7 @@
  4662. 38.61 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  4663. 38.61 s [really-safe-money] toRatio (DecimalLiteral mSign m e) = case mSign of
  4664. 38.61 s [really-safe-money] Just False -> Nothing
  4665. 38.61 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  4666. 38.61 s [really-safe-money] + _ -> Just $ fromIntegral m / (-10 ^ e)
  4667. 38.61 s [really-safe-money]
  4668. 38.61 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  4669. 38.61 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  4670. 38.61 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:287:38-40
  4671. 38.61 s [really-safe-money] @@ -284,9 +284,9 @@
  4672. 38.61 s [really-safe-money] -- >>> toRatio (DecimalLiteral (Just False) 3 1)
  4673. 38.61 s [really-safe-money] -- Nothing
  4674. 38.61 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  4675. 38.61 s [really-safe-money] -toRatio (DecimalLiteral mSign m e) = case mSign of
  4676. 38.61 s [really-safe-money] - Just False -> Nothing
  4677. 38.61 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  4678. 38.61 s [really-safe-money] +toRatio (DecimalLiteral mSign m e) = case mSign of
  4679. 38.61 s [really-safe-money] + Just False -> Nothing
  4680. 38.61 s [really-safe-money] + _ -> Just $ fromIntegral m / (10 ^ e)
  4681. 38.61 s [really-safe-money]
  4682. 38.61 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  4683. 38.61 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  4684. 38.61 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:287:38-40
  4685. 38.61 s [really-safe-money] @@ -284,9 +284,9 @@
  4686. 38.61 s [really-safe-money] -- >>> toRatio (DecimalLiteral (Just False) 3 1)
  4687. 38.61 s [really-safe-money] -- Nothing
  4688. 38.61 s [really-safe-money] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  4689. 38.61 s [really-safe-money] -toRatio (DecimalLiteral mSign m e) = case mSign of
  4690. 38.61 s [really-safe-money] - Just False -> Nothing
  4691. 38.61 s [really-safe-money] - _ -> Just $ fromIntegral m / (10 ^ e)
  4692. 38.61 s [really-safe-money] +toRatio (DecimalLiteral mSign m e) = case mSign of
  4693. 38.61 s [really-safe-money] + Just False -> Nothing
  4694. 38.61 s [really-safe-money] + _ -> Just $ fromIntegral m / (10 ^ e)
  4695. 38.61 s [really-safe-money]
  4696. 38.61 s [really-safe-money] -- | Construct a 'DecimalLiteral' from a 'Word'
  4697. 38.61 s [really-safe-money] fromWord :: Word -> DecimalLiteral
  4698. 38.61 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44
  4699. 38.61 s [really-safe-money] @@ -233,7 +233,7 @@
  4700. 38.61 s [really-safe-money] -- >>> fromRatio (1 % 3)
  4701. 38.61 s [really-safe-money] -- Nothing
  4702. 38.61 s [really-safe-money] fromRatio :: Ratio Natural -> Maybe DecimalLiteral
  4703. 38.61 s [really-safe-money] -fromRatio = fromRationalRepetendLimited 256
  4704. 38.61 s [really-safe-money] +fromRatio = fromRationalRepetendLimited 0
  4705. 38.61 s [really-safe-money] where
  4706. 38.61 s [really-safe-money] fromRationalRepetendLimited ::
  4707. 38.61 s [really-safe-money] -- limit
  4708. 38.61 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44
  4709. 38.61 s [really-safe-money] @@ -233,7 +233,7 @@
  4710. 38.61 s [really-safe-money] -- >>> fromRatio (1 % 3)
  4711. 38.61 s [really-safe-money] -- Nothing
  4712. 38.61 s [really-safe-money] fromRatio :: Ratio Natural -> Maybe DecimalLiteral
  4713. 38.61 s [really-safe-money] -fromRatio = fromRationalRepetendLimited 256
  4714. 38.61 s [really-safe-money] +fromRatio = fromRationalRepetendLimited 1
  4715. 38.61 s [really-safe-money] where
  4716. 38.61 s [really-safe-money] fromRationalRepetendLimited ::
  4717. 38.61 s [really-safe-money] -- limit
  4718. 38.61 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44
  4719. 38.61 s [really-safe-money] @@ -233,7 +233,7 @@
  4720. 38.61 s [really-safe-money] -- >>> fromRatio (1 % 3)
  4721. 38.61 s [really-safe-money] -- Nothing
  4722. 38.61 s [really-safe-money] fromRatio :: Ratio Natural -> Maybe DecimalLiteral
  4723. 38.61 s [really-safe-money] -fromRatio = fromRationalRepetendLimited 256
  4724. 38.61 s [really-safe-money] +fromRatio = fromRationalRepetendLimited -256
  4725. 38.61 s [really-safe-money] where
  4726. 38.61 s [really-safe-money] fromRationalRepetendLimited ::
  4727. 38.61 s [really-safe-money] -- limit
  4728. 38.61 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:244:14-15
  4729. 38.61 s [really-safe-money] @@ -241,7 +241,7 @@
  4730. 38.61 s [really-safe-money] Ratio Natural ->
  4731. 38.61 s [really-safe-money] Maybe DecimalLiteral
  4732. 38.61 s [really-safe-money] fromRationalRepetendLimited l rational
  4733. 38.61 s [really-safe-money] - | d == 0 = Nothing
  4734. 38.61 s [really-safe-money] + | d == 1 = Nothing
  4735. 38.61 s [really-safe-money] | otherwise = toLiteral Nothing <$> longDiv num
  4736. 38.61 s [really-safe-money] where
  4737. 38.61 s [really-safe-money] toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e)
  4738. 38.61 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:244:9-15
  4739. 38.61 s [really-safe-money] @@ -241,7 +241,7 @@
  4740. 38.61 s [really-safe-money] Ratio Natural ->
  4741. 38.61 s [really-safe-money] Maybe DecimalLiteral
  4742. 38.61 s [really-safe-money] fromRationalRepetendLimited l rational
  4743. 38.61 s [really-safe-money] - | d == 0 = Nothing
  4744. 38.61 s [really-safe-money] + | True = Nothing
  4745. 38.61 s [really-safe-money] | otherwise = toLiteral Nothing <$> longDiv num
  4746. 38.61 s [really-safe-money] where
  4747. 38.61 s [really-safe-money] toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e)
  4748. 38.61 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:244:9-15
  4749. 38.61 s [really-safe-money] @@ -241,7 +241,7 @@
  4750. 38.61 s [really-safe-money] Ratio Natural ->
  4751. 38.61 s [really-safe-money] Maybe DecimalLiteral
  4752. 38.61 s [really-safe-money] fromRationalRepetendLimited l rational
  4753. 38.61 s [really-safe-money] - | d == 0 = Nothing
  4754. 38.61 s [really-safe-money] + | not (d == 0) = Nothing
  4755. 38.61 s [really-safe-money] | otherwise = toLiteral Nothing <$> longDiv num
  4756. 38.61 s [really-safe-money] where
  4757. 38.61 s [really-safe-money] toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e)
  4758. 38.61 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:264:13-26
  4759. 38.61 s [really-safe-money] @@ -261,7 +261,7 @@
  4760. 38.61 s [really-safe-money] Just (c, e)
  4761. 38.61 s [really-safe-money] longDivWithLimit !c !e ns !n
  4762. 38.61 s [really-safe-money] -- If there's a repetend, we can't turn it into a decimal literal
  4763. 38.61 s [really-safe-money] - | S.member n ns = Nothing
  4764. 38.61 s [really-safe-money] + | True = Nothing
  4765. 38.61 s [really-safe-money] -- Over the limit, stop trying
  4766. 38.61 s [really-safe-money] | e >= l = Nothing
  4767. 38.61 s [really-safe-money] | n < d =
  4768. 38.61 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:264:13-26
  4769. 38.61 s [really-safe-money] @@ -261,7 +261,7 @@
  4770. 38.61 s [really-safe-money] Just (c, e)
  4771. 38.61 s [really-safe-money] longDivWithLimit !c !e ns !n
  4772. 38.61 s [really-safe-money] -- If there's a repetend, we can't turn it into a decimal literal
  4773. 38.61 s [really-safe-money] - | S.member n ns = Nothing
  4774. 38.61 s [really-safe-money] + | not (S.member n ns) = Nothing
  4775. 38.61 s [really-safe-money] -- Over the limit, stop trying
  4776. 38.61 s [really-safe-money] | e >= l = Nothing
  4777. 38.61 s [really-safe-money] | n < d =
  4778. 38.61 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:266:13-19
  4779. 38.61 s [really-safe-money] @@ -263,7 +263,7 @@
  4780. 38.61 s [really-safe-money] -- If there's a repetend, we can't turn it into a decimal literal
  4781. 38.61 s [really-safe-money] | S.member n ns = Nothing
  4782. 38.61 s [really-safe-money] -- Over the limit, stop trying
  4783. 38.61 s [really-safe-money] - | e >= l = Nothing
  4784. 38.61 s [really-safe-money] + | True = Nothing
  4785. 38.61 s [really-safe-money] | n < d =
  4786. 38.61 s [really-safe-money] let !ns' = S.insert n ns
  4787. 38.61 s [really-safe-money] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  4788. 38.61 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:266:13-19
  4789. 38.61 s [really-safe-money] @@ -263,7 +263,7 @@
  4790. 38.61 s [really-safe-money] -- If there's a repetend, we can't turn it into a decimal literal
  4791. 38.61 s [really-safe-money] | S.member n ns = Nothing
  4792. 38.61 s [really-safe-money] -- Over the limit, stop trying
  4793. 38.61 s [really-safe-money] - | e >= l = Nothing
  4794. 38.61 s [really-safe-money] + | not (e >= l) = Nothing
  4795. 38.61 s [really-safe-money] | n < d =
  4796. 38.61 s [really-safe-money] let !ns' = S.insert n ns
  4797. 38.61 s [really-safe-money] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  4798. 38.61 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:267:13-18
  4799. 38.61 s [really-safe-money] @@ -264,7 +264,7 @@
  4800. 38.61 s [really-safe-money] | S.member n ns = Nothing
  4801. 38.61 s [really-safe-money] -- Over the limit, stop trying
  4802. 38.61 s [really-safe-money] | e >= l = Nothing
  4803. 38.61 s [really-safe-money] - | n < d =
  4804. 38.61 s [really-safe-money] + | True =
  4805. 38.61 s [really-safe-money] let !ns' = S.insert n ns
  4806. 38.61 s [really-safe-money] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  4807. 38.61 s [really-safe-money] | otherwise =
  4808. 38.61 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:267:13-18
  4809. 38.61 s [really-safe-money] @@ -264,7 +264,7 @@
  4810. 38.61 s [really-safe-money] | S.member n ns = Nothing
  4811. 38.61 s [really-safe-money] -- Over the limit, stop trying
  4812. 38.61 s [really-safe-money] | e >= l = Nothing
  4813. 38.61 s [really-safe-money] - | n < d =
  4814. 38.61 s [really-safe-money] + | not (n < d) =
  4815. 38.61 s [really-safe-money] let !ns' = S.insert n ns
  4816. 38.61 s [really-safe-money] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  4817. 38.61 s [really-safe-money] | otherwise =
  4818. 38.61 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:269:41-43
  4819. 38.61 s [really-safe-money] @@ -266,7 +266,7 @@
  4820. 38.61 s [really-safe-money] | e >= l = Nothing
  4821. 38.61 s [really-safe-money] | n < d =
  4822. 38.61 s [really-safe-money] let !ns' = S.insert n ns
  4823. 38.61 s [really-safe-money] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  4824. 38.61 s [really-safe-money] + in longDivWithLimit (c * 0) (succ e) ns' (n * 10)
  4825. 38.61 s [really-safe-money] | otherwise =
  4826. 38.61 s [really-safe-money] let (q, r') = n `quotRem` d
  4827. 38.61 s [really-safe-money] in longDivWithLimit (c + q) e ns r'
  4828. 38.61 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:269:41-43
  4829. 38.61 s [really-safe-money] @@ -266,7 +266,7 @@
  4830. 38.61 s [really-safe-money] | e >= l = Nothing
  4831. 38.61 s [really-safe-money] | n < d =
  4832. 38.61 s [really-safe-money] let !ns' = S.insert n ns
  4833. 38.61 s [really-safe-money] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  4834. 38.61 s [really-safe-money] + in longDivWithLimit (c * 1) (succ e) ns' (n * 10)
  4835. 38.61 s [really-safe-money] | otherwise =
  4836. 38.61 s [really-safe-money] let (q, r') = n `quotRem` d
  4837. 38.61 s [really-safe-money] in longDivWithLimit (c + q) e ns r'
  4838. 38.61 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:269:63-65
  4839. 38.61 s [really-safe-money] @@ -266,7 +266,7 @@
  4840. 38.61 s [really-safe-money] | e >= l = Nothing
  4841. 38.61 s [really-safe-money] | n < d =
  4842. 38.61 s [really-safe-money] let !ns' = S.insert n ns
  4843. 38.61 s [really-safe-money] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  4844. 38.61 s [really-safe-money] + in longDivWithLimit (c * 10) (succ e) ns' (n * 0)
  4845. 38.61 s [really-safe-money] | otherwise =
  4846. 38.61 s [really-safe-money] let (q, r') = n `quotRem` d
  4847. 38.61 s [really-safe-money] in longDivWithLimit (c + q) e ns r'
  4848. 38.61 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:269:63-65
  4849. 38.61 s [really-safe-money] @@ -266,7 +266,7 @@
  4850. 38.61 s [really-safe-money] | e >= l = Nothing
  4851. 38.61 s [really-safe-money] | n < d =
  4852. 38.61 s [really-safe-money] let !ns' = S.insert n ns
  4853. 38.61 s [really-safe-money] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  4854. 38.61 s [really-safe-money] + in longDivWithLimit (c * 10) (succ e) ns' (n * 1)
  4855. 38.61 s [really-safe-money] | otherwise =
  4856. 38.61 s [really-safe-money] let (q, r') = n `quotRem` d
  4857. 38.61 s [really-safe-money] in longDivWithLimit (c + q) e ns r'
  4858. 38.61 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:252:36-37
  4859. 38.61 s [really-safe-money] @@ -249,7 +249,7 @@
  4860. 38.61 s [really-safe-money] num = numerator rational
  4861. 38.61 s [really-safe-money]
  4862. 38.61 s [really-safe-money] longDiv :: Natural -> Maybe (Natural, Int)
  4863. 38.61 s [really-safe-money] - longDiv = longDivWithLimit 0 0 S.empty
  4864. 38.61 s [really-safe-money] + longDiv = longDivWithLimit 1 0 S.empty
  4865. 38.61 s [really-safe-money]
  4866. 38.61 s [really-safe-money] longDivWithLimit ::
  4867. 38.61 s [really-safe-money] Natural ->
  4868. 38.61 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:252:38-39
  4869. 38.61 s [really-safe-money] @@ -249,7 +249,7 @@
  4870. 38.61 s [really-safe-money] num = numerator rational
  4871. 38.61 s [really-safe-money]
  4872. 38.61 s [really-safe-money] longDiv :: Natural -> Maybe (Natural, Int)
  4873. 38.61 s [really-safe-money] - longDiv = longDivWithLimit 0 0 S.empty
  4874. 38.61 s [really-safe-money] + longDiv = longDivWithLimit 0 1 S.empty
  4875. 38.61 s [really-safe-money]
  4876. 38.61 s [really-safe-money] longDivWithLimit ::
  4877. 38.61 s [really-safe-money] Natural ->
  4878. 38.61 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:223:39-41
  4879. 38.61 s [really-safe-money] @@ -220,7 +220,7 @@
  4880. 38.61 s [really-safe-money] -- (-3) % 10
  4881. 38.61 s [really-safe-money] toRational :: DecimalLiteral -> Rational
  4882. 38.61 s [really-safe-money] toRational (DecimalLiteral mSign m e) =
  4883. 38.61 s [really-safe-money] - signSignum mSign (fromIntegral m / (10 ^ e))
  4884. 38.61 s [really-safe-money] + signSignum mSign (fromIntegral m / (0 ^ e))
  4885. 38.61 s [really-safe-money]
  4886. 38.61 s [really-safe-money] -- | Parse a 'DecimalLiteral' from a 'Ratio Natural'
  4887. 38.61 s [really-safe-money] --
  4888. 38.61 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:223:39-41
  4889. 38.61 s [really-safe-money] @@ -220,7 +220,7 @@
  4890. 38.61 s [really-safe-money] -- (-3) % 10
  4891. 38.61 s [really-safe-money] toRational :: DecimalLiteral -> Rational
  4892. 38.61 s [really-safe-money] toRational (DecimalLiteral mSign m e) =
  4893. 38.61 s [really-safe-money] - signSignum mSign (fromIntegral m / (10 ^ e))
  4894. 38.61 s [really-safe-money] + signSignum mSign (fromIntegral m / (1 ^ e))
  4895. 38.61 s [really-safe-money]
  4896. 38.61 s [really-safe-money] -- | Parse a 'DecimalLiteral' from a 'Ratio Natural'
  4897. 38.61 s [really-safe-money] --
  4898. 38.61 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:223:39-41
  4899. 38.61 s [really-safe-money] @@ -220,7 +220,7 @@
  4900. 38.61 s [really-safe-money] -- (-3) % 10
  4901. 38.61 s [really-safe-money] toRational :: DecimalLiteral -> Rational
  4902. 38.61 s [really-safe-money] toRational (DecimalLiteral mSign m e) =
  4903. 38.61 s [really-safe-money] - signSignum mSign (fromIntegral m / (10 ^ e))
  4904. 38.61 s [really-safe-money] + signSignum mSign (fromIntegral m / (-10 ^ e))
  4905. 38.62 s [really-safe-money]
  4906. 38.62 s [really-safe-money] -- | Parse a 'DecimalLiteral' from a 'Ratio Natural'
  4907. 38.62 s [really-safe-money] --
  4908. 38.62 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:208:9-10
  4909. 38.62 s [really-safe-money] @@ -205,7 +205,7 @@
  4910. 38.62 s [really-safe-money] -- Nothing
  4911. 38.62 s [really-safe-money] fromRational :: Rational -> Maybe DecimalLiteral
  4912. 38.62 s [really-safe-money] fromRational (n :% d)
  4913. 38.62 s [really-safe-money] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  4914. 38.62 s [really-safe-money] + | n < 1 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  4915. 38.62 s [really-safe-money] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  4916. 38.62 s [really-safe-money]
  4917. 38.62 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Rational'
  4918. 38.62 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:208:5-10
  4919. 38.62 s [really-safe-money] @@ -205,7 +205,7 @@
  4920. 38.62 s [really-safe-money] -- Nothing
  4921. 38.62 s [really-safe-money] fromRational :: Rational -> Maybe DecimalLiteral
  4922. 38.62 s [really-safe-money] fromRational (n :% d)
  4923. 38.62 s [really-safe-money] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  4924. 38.62 s [really-safe-money] + | True = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  4925. 38.62 s [really-safe-money] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  4926. 38.62 s [really-safe-money]
  4927. 38.62 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Rational'
  4928. 38.62 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:208:5-10
  4929. 38.62 s [really-safe-money] @@ -205,7 +205,7 @@
  4930. 38.62 s [really-safe-money] -- Nothing
  4931. 38.62 s [really-safe-money] fromRational :: Rational -> Maybe DecimalLiteral
  4932. 38.62 s [really-safe-money] fromRational (n :% d)
  4933. 38.62 s [really-safe-money] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  4934. 38.62 s [really-safe-money] + | not (n < 0) = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  4935. 38.62 s [really-safe-money] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  4936. 38.62 s [really-safe-money]
  4937. 38.62 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Rational'
  4938. 38.62 s [really-safe-money] added mutation BoolLit at src/Numeric/DecimalLiteral.hs:208:62-67
  4939. 38.62 s [really-safe-money] @@ -205,7 +205,7 @@
  4940. 38.62 s [really-safe-money] -- Nothing
  4941. 38.62 s [really-safe-money] fromRational :: Rational -> Maybe DecimalLiteral
  4942. 38.62 s [really-safe-money] fromRational (n :% d)
  4943. 38.62 s [really-safe-money] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  4944. 38.62 s [really-safe-money] + | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just True) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  4945. 38.62 s [really-safe-money] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  4946. 38.62 s [really-safe-money]
  4947. 38.62 s [really-safe-money] -- | Turn a 'DecimalLiteral' into a 'Rational'
  4948. 38.62 s [really-safe-money] added mutation ListLit at src/Numeric/DecimalLiteral.hs:186:15-25
  4949. 38.62 s [really-safe-money] @@ -183,7 +183,7 @@
  4950. 38.62 s [really-safe-money]
  4951. 38.62 s [really-safe-money] goFrac m e = reverse (go e (reverse (show m)))
  4952. 38.62 s [really-safe-money] go :: Word8 -> String -> String
  4953. 38.62 s [really-safe-money] - go 0 [] = ['.', '0']
  4954. 38.62 s [really-safe-money] + go 0 [] = []
  4955. 38.62 s [really-safe-money] go 0 s = '.' : s
  4956. 38.62 s [really-safe-money] go e [] = '0' : go (pred e) []
  4957. 38.62 s [really-safe-money] go e (c : cs) = c : go (pred e) cs
  4958. 38.62 s [really-safe-money] added mutation ListLit at src/Numeric/DecimalLiteral.hs:186:15-25
  4959. 38.62 s [really-safe-money] @@ -183,7 +183,7 @@
  4960. 38.62 s [really-safe-money]
  4961. 38.62 s [really-safe-money] goFrac m e = reverse (go e (reverse (show m)))
  4962. 38.62 s [really-safe-money] go :: Word8 -> String -> String
  4963. 38.62 s [really-safe-money] - go 0 [] = ['.', '0']
  4964. 38.62 s [really-safe-money] + go 0 [] = ['.', '0']
  4965. 38.62 s [really-safe-money] go 0 s = '.' : s
  4966. 38.62 s [really-safe-money] go e [] = '0' : go (pred e) []
  4967. 38.62 s [really-safe-money] go e (c : cs) = c : go (pred e) cs
  4968. 38.62 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30
  4969. 38.62 s [really-safe-money] @@ -142,7 +142,7 @@
  4970. 38.62 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  4971. 38.62 s [really-safe-money] parseDigits f z = do
  4972. 38.62 s [really-safe-money] c <- ReadP.satisfy Char.isDigit
  4973. 38.62 s [really-safe-money] - let digit = Char.ord c - 48
  4974. 38.62 s [really-safe-money] + let digit = Char.ord c - 0
  4975. 38.62 s [really-safe-money] case f z digit of
  4976. 38.62 s [really-safe-money] Nothing -> fail "Failed to step the first digit"
  4977. 38.62 s [really-safe-money] Just a -> ReadP.look >>= go a
  4978. 38.62 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30
  4979. 38.62 s [really-safe-money] @@ -142,7 +142,7 @@
  4980. 38.62 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  4981. 38.62 s [really-safe-money] parseDigits f z = do
  4982. 38.62 s [really-safe-money] c <- ReadP.satisfy Char.isDigit
  4983. 38.62 s [really-safe-money] - let digit = Char.ord c - 48
  4984. 38.62 s [really-safe-money] + let digit = Char.ord c - 1
  4985. 38.62 s [really-safe-money] case f z digit of
  4986. 38.62 s [really-safe-money] Nothing -> fail "Failed to step the first digit"
  4987. 38.62 s [really-safe-money] Just a -> ReadP.look >>= go a
  4988. 38.62 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30
  4989. 38.62 s [really-safe-money] @@ -142,7 +142,7 @@
  4990. 38.62 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  4991. 38.62 s [really-safe-money] parseDigits f z = do
  4992. 38.62 s [really-safe-money] c <- ReadP.satisfy Char.isDigit
  4993. 38.62 s [really-safe-money] - let digit = Char.ord c - 48
  4994. 38.62 s [really-safe-money] + let digit = Char.ord c - -48
  4995. 38.62 s [really-safe-money] case f z digit of
  4996. 38.62 s [really-safe-money] Nothing -> fail "Failed to step the first digit"
  4997. 38.62 s [really-safe-money] Just a -> ReadP.look >>= go a
  4998. 38.62 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:152:9-23
  4999. 38.62 s [really-safe-money] @@ -149,7 +149,7 @@
  5000. 38.62 s [really-safe-money] where
  5001. 38.62 s [really-safe-money] go !a [] = return a
  5002. 38.62 s [really-safe-money] go !a (c : cs)
  5003. 38.62 s [really-safe-money] - | Char.isDigit c = do
  5004. 38.62 s [really-safe-money] + | True = do
  5005. 38.62 s [really-safe-money] _ <- ReadP.get
  5006. 38.62 s [really-safe-money] let digit = Char.ord c - 48
  5007. 38.62 s [really-safe-money] case f a digit of
  5008. 38.62 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:152:9-23
  5009. 38.62 s [really-safe-money] @@ -149,7 +149,7 @@
  5010. 38.62 s [really-safe-money] where
  5011. 38.62 s [really-safe-money] go !a [] = return a
  5012. 38.62 s [really-safe-money] go !a (c : cs)
  5013. 38.62 s [really-safe-money] - | Char.isDigit c = do
  5014. 38.62 s [really-safe-money] + | not (Char.isDigit c) = do
  5015. 38.62 s [really-safe-money] _ <- ReadP.get
  5016. 38.62 s [really-safe-money] let digit = Char.ord c - 48
  5017. 38.62 s [really-safe-money] case f a digit of
  5018. 38.62 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:154:36-38
  5019. 38.62 s [really-safe-money] @@ -151,7 +151,7 @@
  5020. 38.62 s [really-safe-money] go !a (c : cs)
  5021. 38.62 s [really-safe-money] | Char.isDigit c = do
  5022. 38.62 s [really-safe-money] _ <- ReadP.get
  5023. 38.62 s [really-safe-money] - let digit = Char.ord c - 48
  5024. 38.62 s [really-safe-money] + let digit = Char.ord c - 0
  5025. 38.62 s [really-safe-money] case f a digit of
  5026. 38.62 s [really-safe-money] Nothing -> fail "Failed to step the digit"
  5027. 38.62 s [really-safe-money] Just a' -> go a' cs
  5028. 38.62 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:154:36-38
  5029. 38.62 s [really-safe-money] @@ -151,7 +151,7 @@
  5030. 38.62 s [really-safe-money] go !a (c : cs)
  5031. 38.62 s [really-safe-money] | Char.isDigit c = do
  5032. 38.62 s [really-safe-money] _ <- ReadP.get
  5033. 38.62 s [really-safe-money] - let digit = Char.ord c - 48
  5034. 38.62 s [really-safe-money] + let digit = Char.ord c - 1
  5035. 38.62 s [really-safe-money] case f a digit of
  5036. 38.62 s [really-safe-money] Nothing -> fail "Failed to step the digit"
  5037. 38.62 s [really-safe-money] Just a' -> go a' cs
  5038. 38.62 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:154:36-38
  5039. 38.62 s [really-safe-money] @@ -151,7 +151,7 @@
  5040. 38.62 s [really-safe-money] go !a (c : cs)
  5041. 38.62 s [really-safe-money] | Char.isDigit c = do
  5042. 38.62 s [really-safe-money] _ <- ReadP.get
  5043. 38.62 s [really-safe-money] - let digit = Char.ord c - 48
  5044. 38.62 s [really-safe-money] + let digit = Char.ord c - -48
  5045. 38.62 s [really-safe-money] case f a digit of
  5046. 38.62 s [really-safe-money] Nothing -> fail "Failed to step the digit"
  5047. 38.62 s [really-safe-money] Just a' -> go a' cs
  5048. 38.62 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:139:27-29
  5049. 38.62 s [really-safe-money] @@ -136,7 +136,7 @@
  5050. 38.62 s [really-safe-money] stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  5051. 38.62 s [really-safe-money]
  5052. 38.62 s [really-safe-money] step :: Natural -> Int -> Maybe Natural
  5053. 38.62 s [really-safe-money] -step a digit = Just $ a * 10 + fromIntegral digit
  5054. 38.62 s [really-safe-money] +step a digit = Just $ a * 0 + fromIntegral digit
  5055. 38.62 s [really-safe-money] {-# INLINE step #-}
  5056. 38.62 s [really-safe-money]
  5057. 38.62 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  5058. 38.62 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:139:27-29
  5059. 38.62 s [really-safe-money] @@ -136,7 +136,7 @@
  5060. 38.62 s [really-safe-money] stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  5061. 38.62 s [really-safe-money]
  5062. 38.62 s [really-safe-money] step :: Natural -> Int -> Maybe Natural
  5063. 38.62 s [really-safe-money] -step a digit = Just $ a * 10 + fromIntegral digit
  5064. 38.62 s [really-safe-money] +step a digit = Just $ a * 1 + fromIntegral digit
  5065. 38.62 s [really-safe-money] {-# INLINE step #-}
  5066. 38.62 s [really-safe-money]
  5067. 38.62 s [really-safe-money] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  5068. 38.63 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:136:39-41
  5069. 38.63 s [really-safe-money] @@ -133,7 +133,7 @@
  5070. 38.63 s [really-safe-money]
  5071. 38.63 s [really-safe-money] stepFraction :: (Natural, Word8) -> Int -> Maybe (Natural, Word8)
  5072. 38.63 s [really-safe-money] stepFraction (_, 255) _ = Nothing
  5073. 38.63 s [really-safe-money] -stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  5074. 38.63 s [really-safe-money] +stepFraction (m, e) digit = Just (m * 0 + fromIntegral digit, succ e)
  5075. 38.63 s [really-safe-money]
  5076. 38.63 s [really-safe-money] step :: Natural -> Int -> Maybe Natural
  5077. 38.63 s [really-safe-money] step a digit = Just $ a * 10 + fromIntegral digit
  5078. 38.63 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:136:39-41
  5079. 38.63 s [really-safe-money] @@ -133,7 +133,7 @@
  5080. 38.63 s [really-safe-money]
  5081. 38.63 s [really-safe-money] stepFraction :: (Natural, Word8) -> Int -> Maybe (Natural, Word8)
  5082. 38.63 s [really-safe-money] stepFraction (_, 255) _ = Nothing
  5083. 38.63 s [really-safe-money] -stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  5084. 38.63 s [really-safe-money] +stepFraction (m, e) digit = Just (m * 1 + fromIntegral digit, succ e)
  5085. 38.63 s [really-safe-money]
  5086. 38.63 s [really-safe-money] step :: Natural -> Int -> Maybe Natural
  5087. 38.63 s [really-safe-money] step a digit = Just $ a * 10 + fromIntegral digit
  5088. 38.63 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-30
  5089. 38.63 s [really-safe-money] @@ -116,7 +116,7 @@
  5090. 38.63 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5091. 38.63 s [really-safe-money] decimalLiteralP = do
  5092. 38.63 s [really-safe-money] let isSignChar :: Char -> Bool
  5093. 38.63 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  5094. 38.63 s [really-safe-money] + isSignChar c = True || c == '+'
  5095. 38.63 s [really-safe-money]
  5096. 38.63 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5097. 38.63 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5098. 38.63 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-30
  5099. 38.63 s [really-safe-money] @@ -116,7 +116,7 @@
  5100. 38.63 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5101. 38.63 s [really-safe-money] decimalLiteralP = do
  5102. 38.63 s [really-safe-money] let isSignChar :: Char -> Bool
  5103. 38.63 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  5104. 38.63 s [really-safe-money] + isSignChar c = False || c == '+'
  5105. 38.63 s [really-safe-money]
  5106. 38.63 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5107. 38.63 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5108. 38.63 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:119:22-30
  5109. 38.63 s [really-safe-money] @@ -116,7 +116,7 @@
  5110. 38.63 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5111. 38.63 s [really-safe-money] decimalLiteralP = do
  5112. 38.63 s [really-safe-money] let isSignChar :: Char -> Bool
  5113. 38.63 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  5114. 38.63 s [really-safe-money] + isSignChar c = not (c == '-') || c == '+'
  5115. 38.63 s [really-safe-money]
  5116. 38.63 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5117. 38.63 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5118. 38.63 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:34-42
  5119. 38.63 s [really-safe-money] @@ -116,7 +116,7 @@
  5120. 38.63 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5121. 38.63 s [really-safe-money] decimalLiteralP = do
  5122. 38.63 s [really-safe-money] let isSignChar :: Char -> Bool
  5123. 38.63 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  5124. 38.63 s [really-safe-money] + isSignChar c = c == '-' || True
  5125. 38.63 s [really-safe-money]
  5126. 38.63 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5127. 38.63 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5128. 38.63 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:34-42
  5129. 38.63 s [really-safe-money] @@ -116,7 +116,7 @@
  5130. 38.63 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5131. 38.63 s [really-safe-money] decimalLiteralP = do
  5132. 38.63 s [really-safe-money] let isSignChar :: Char -> Bool
  5133. 38.63 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  5134. 38.63 s [really-safe-money] + isSignChar c = c == '-' || False
  5135. 38.63 s [really-safe-money]
  5136. 38.63 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5137. 38.63 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5138. 38.63 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:119:34-42
  5139. 38.63 s [really-safe-money] @@ -116,7 +116,7 @@
  5140. 38.63 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5141. 38.63 s [really-safe-money] decimalLiteralP = do
  5142. 38.63 s [really-safe-money] let isSignChar :: Char -> Bool
  5143. 38.63 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  5144. 38.63 s [really-safe-money] + isSignChar c = c == '-' || not (c == '+')
  5145. 38.63 s [really-safe-money]
  5146. 38.63 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5147. 38.63 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5148. 38.63 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-42
  5149. 38.63 s [really-safe-money] @@ -116,7 +116,7 @@
  5150. 38.63 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5151. 38.63 s [really-safe-money] decimalLiteralP = do
  5152. 38.63 s [really-safe-money] let isSignChar :: Char -> Bool
  5153. 38.63 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  5154. 38.63 s [really-safe-money] + isSignChar c = True
  5155. 38.63 s [really-safe-money]
  5156. 38.63 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5157. 38.63 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5158. 38.63 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-42
  5159. 38.63 s [really-safe-money] @@ -116,7 +116,7 @@
  5160. 38.63 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5161. 38.63 s [really-safe-money] decimalLiteralP = do
  5162. 38.63 s [really-safe-money] let isSignChar :: Char -> Bool
  5163. 38.63 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  5164. 38.63 s [really-safe-money] + isSignChar c = False
  5165. 38.63 s [really-safe-money]
  5166. 38.63 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5167. 38.63 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5168. 38.63 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:119:22-42
  5169. 38.63 s [really-safe-money] @@ -116,7 +116,7 @@
  5170. 38.63 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5171. 38.63 s [really-safe-money] decimalLiteralP = do
  5172. 38.63 s [really-safe-money] let isSignChar :: Char -> Bool
  5173. 38.63 s [really-safe-money] - isSignChar c = c == '-' || c == '+'
  5174. 38.63 s [really-safe-money] + isSignChar c = not (c == '-' || c == '+')
  5175. 38.63 s [really-safe-money]
  5176. 38.63 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5177. 38.63 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5178. 38.63 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:123:19-34
  5179. 38.63 s [really-safe-money] @@ -120,7 +120,7 @@
  5180. 38.63 s [really-safe-money]
  5181. 38.63 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5182. 38.63 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5183. 38.63 s [really-safe-money] - pure $ Just $ signChar == '+'
  5184. 38.63 s [really-safe-money] + pure $ Just $ True
  5185. 38.63 s [really-safe-money]
  5186. 38.63 s [really-safe-money] units <- parseDigits step 0
  5187. 38.63 s [really-safe-money]
  5188. 38.63 s [really-safe-money] added mutation ConstBool at src/Numeric/DecimalLiteral.hs:123:19-34
  5189. 38.63 s [really-safe-money] @@ -120,7 +120,7 @@
  5190. 38.63 s [really-safe-money]
  5191. 38.63 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5192. 38.63 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5193. 38.63 s [really-safe-money] - pure $ Just $ signChar == '+'
  5194. 38.63 s [really-safe-money] + pure $ Just $ False
  5195. 38.63 s [really-safe-money]
  5196. 38.63 s [really-safe-money] units <- parseDigits step 0
  5197. 38.63 s [really-safe-money]
  5198. 38.64 s [really-safe-money] added mutation Negate at src/Numeric/DecimalLiteral.hs:123:19-34
  5199. 38.64 s [really-safe-money] @@ -120,7 +120,7 @@
  5200. 38.64 s [really-safe-money]
  5201. 38.64 s [really-safe-money] mSign <- ReadP.option Nothing $ do
  5202. 38.64 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5203. 38.64 s [really-safe-money] - pure $ Just $ signChar == '+'
  5204. 38.64 s [really-safe-money] + pure $ Just $ not (signChar == '+')
  5205. 38.64 s [really-safe-money]
  5206. 38.64 s [really-safe-money] units <- parseDigits step 0
  5207. 38.64 s [really-safe-money]
  5208. 38.64 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:125:29-30
  5209. 38.64 s [really-safe-money] @@ -122,7 +122,7 @@
  5210. 38.64 s [really-safe-money] signChar <- ReadP.satisfy isSignChar
  5211. 38.64 s [really-safe-money] pure $ Just $ signChar == '+'
  5212. 38.64 s [really-safe-money]
  5213. 38.64 s [really-safe-money] - units <- parseDigits step 0
  5214. 38.64 s [really-safe-money] + units <- parseDigits step 1
  5215. 38.64 s [really-safe-money]
  5216. 38.64 s [really-safe-money] ReadP.option (DecimalLiteral mSign units 0) $ do
  5217. 38.64 s [really-safe-money] _ <- ReadP.satisfy (== '.')
  5218. 38.64 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:127:44-45
  5219. 38.64 s [really-safe-money] @@ -124,7 +124,7 @@
  5220. 38.64 s [really-safe-money]
  5221. 38.64 s [really-safe-money] units <- parseDigits step 0
  5222. 38.64 s [really-safe-money]
  5223. 38.64 s [really-safe-money] - ReadP.option (DecimalLiteral mSign units 0) $ do
  5224. 38.64 s [really-safe-money] + ReadP.option (DecimalLiteral mSign units 1) $ do
  5225. 38.64 s [really-safe-money] _ <- ReadP.satisfy (== '.')
  5226. 38.64 s [really-safe-money]
  5227. 38.64 s [really-safe-money] (m, e) <- parseDigits stepFraction (units, 0)
  5228. 38.64 s [really-safe-money] added mutation IntLit at src/Numeric/DecimalLiteral.hs:130:48-49
  5229. 38.64 s [really-safe-money] @@ -127,7 +127,7 @@
  5230. 38.64 s [really-safe-money] ReadP.option (DecimalLiteral mSign units 0) $ do
  5231. 38.64 s [really-safe-money] _ <- ReadP.satisfy (== '.')
  5232. 38.64 s [really-safe-money]
  5233. 38.64 s [really-safe-money] - (m, e) <- parseDigits stepFraction (units, 0)
  5234. 38.64 s [really-safe-money] + (m, e) <- parseDigits stepFraction (units, 1)
  5235. 38.64 s [really-safe-money]
  5236. 38.64 s [really-safe-money] pure $ DecimalLiteral mSign m e
  5237. 38.64 s [really-safe-money]
  5238. 38.64 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:112:17-21
  5239. 38.64 s [really-safe-money] @@ -109,9 +109,9 @@
  5240. 38.64 s [really-safe-money]
  5241. 38.64 s [really-safe-money] -- | Like 'fromString' but in a 'MonadFail'
  5242. 38.64 s [really-safe-money] fromStringM :: (MonadFail m) => String -> m DecimalLiteral
  5243. 38.64 s [really-safe-money] -fromStringM s = case Numeric.DecimalLiteral.fromString s of
  5244. 38.64 s [really-safe-money] - Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  5245. 38.64 s [really-safe-money] - Just dl -> pure dl
  5246. 38.64 s [really-safe-money] +fromStringM s = case Numeric.DecimalLiteral.fromString s of
  5247. 38.64 s [really-safe-money] + Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  5248. 38.64 s [really-safe-money] + Just dl -> pure dl
  5249. 38.64 s [really-safe-money]
  5250. 38.64 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5251. 38.64 s [really-safe-money] decimalLiteralP = do
  5252. 38.64 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:112:17-21
  5253. 38.64 s [really-safe-money] @@ -109,9 +109,9 @@
  5254. 38.64 s [really-safe-money]
  5255. 38.64 s [really-safe-money] -- | Like 'fromString' but in a 'MonadFail'
  5256. 38.64 s [really-safe-money] fromStringM :: (MonadFail m) => String -> m DecimalLiteral
  5257. 38.64 s [really-safe-money] -fromStringM s = case Numeric.DecimalLiteral.fromString s of
  5258. 38.64 s [really-safe-money] - Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  5259. 38.64 s [really-safe-money] - Just dl -> pure dl
  5260. 38.64 s [really-safe-money] +fromStringM s = case Numeric.DecimalLiteral.fromString s of
  5261. 38.64 s [really-safe-money] + Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  5262. 38.64 s [really-safe-money] + Just dl -> pure dl
  5263. 38.64 s [really-safe-money]
  5264. 38.64 s [really-safe-money] decimalLiteralP :: ReadP DecimalLiteral
  5265. 38.64 s [really-safe-money] decimalLiteralP = do
  5266. 38.64 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:86:18-18
  5267. 38.64 s [really-safe-money] @@ -83,9 +83,9 @@
  5268. 38.64 s [really-safe-money] instance NFData DecimalLiteral
  5269. 38.64 s [really-safe-money]
  5270. 38.64 s [really-safe-money] instance IsString DecimalLiteral where
  5271. 38.64 s [really-safe-money] - fromString s = case Numeric.DecimalLiteral.fromString s of
  5272. 38.64 s [really-safe-money] - Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  5273. 38.64 s [really-safe-money] - Just dl -> dl
  5274. 38.64 s [really-safe-money] + fromString s = case Numeric.DecimalLiteral.fromString s of
  5275. 38.64 s [really-safe-money] + Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  5276. 38.64 s [really-safe-money] + Just dl -> dl
  5277. 38.64 s [really-safe-money]
  5278. 38.64 s [really-safe-money] -- | Parse a decimal literal from a string
  5279. 38.64 s [really-safe-money] --
  5280. 38.64 s [really-safe-money] added mutation RemoveCase at src/Numeric/DecimalLiteral.hs:86:18-18
  5281. 38.64 s [really-safe-money] @@ -83,9 +83,9 @@
  5282. 38.64 s [really-safe-money] instance NFData DecimalLiteral
  5283. 38.64 s [really-safe-money]
  5284. 38.64 s [really-safe-money] instance IsString DecimalLiteral where
  5285. 38.64 s [really-safe-money] - fromString s = case Numeric.DecimalLiteral.fromString s of
  5286. 38.64 s [really-safe-money] - Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  5287. 38.64 s [really-safe-money] - Just dl -> dl
  5288. 38.64 s [really-safe-money] + fromString s = case Numeric.DecimalLiteral.fromString s of
  5289. 38.64 s [really-safe-money] + Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  5290. 38.64 s [really-safe-money] + Just dl -> dl
  5291. 38.64 s [really-safe-money]
  5292. 38.64 s [really-safe-money] -- | Parse a decimal literal from a string
  5293. 38.64 s [really-safe-money] --
  5294. 38.64 s [really-safe-money] added 87 mutations
  5295. 40.84 s [really-safe-money] [ 2 of 12] Compiling Money.QuantisationFactor ( src/Money/QuantisationFactor.hs, dist/build/Money/QuantisationFactor.p_o )
  5296. 40.86 s [really-safe-money] mutation: instrumenting Money.QuantisationFactor
  5297. 40.86 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:87:27-28
  5298. 40.86 s [really-safe-money] @@ -84,7 +84,7 @@
  5299. 40.86 s [really-safe-money] fromDecimalLiteral dl = do
  5300. 40.86 s [really-safe-money] irat <-
  5301. 40.86 s [really-safe-money] let r = DecimalLiteral.toRational dl
  5302. 40.86 s [really-safe-money] - in if numerator r == 0
  5303. 40.86 s [really-safe-money] + in if numerator r == 1
  5304. 40.86 s [really-safe-money] then Nothing
  5305. 40.86 s [really-safe-money] else pure r
  5306. 40.86 s [really-safe-money]
  5307. 40.86 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:87:12-28
  5308. 40.86 s [really-safe-money] @@ -84,7 +84,7 @@
  5309. 40.86 s [really-safe-money] fromDecimalLiteral dl = do
  5310. 40.86 s [really-safe-money] irat <-
  5311. 40.86 s [really-safe-money] let r = DecimalLiteral.toRational dl
  5312. 40.86 s [really-safe-money] - in if numerator r == 0
  5313. 40.86 s [really-safe-money] + in if True
  5314. 40.86 s [really-safe-money] then Nothing
  5315. 40.86 s [really-safe-money] else pure r
  5316. 40.86 s [really-safe-money]
  5317. 40.86 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:87:12-28
  5318. 40.86 s [really-safe-money] @@ -84,7 +84,7 @@
  5319. 40.86 s [really-safe-money] fromDecimalLiteral dl = do
  5320. 40.86 s [really-safe-money] irat <-
  5321. 40.86 s [really-safe-money] let r = DecimalLiteral.toRational dl
  5322. 40.86 s [really-safe-money] - in if numerator r == 0
  5323. 40.86 s [really-safe-money] + in if False
  5324. 40.86 s [really-safe-money] then Nothing
  5325. 40.86 s [really-safe-money] else pure r
  5326. 40.86 s [really-safe-money]
  5327. 40.86 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:87:12-28
  5328. 40.86 s [really-safe-money] @@ -84,7 +84,7 @@
  5329. 40.86 s [really-safe-money] fromDecimalLiteral dl = do
  5330. 40.87 s [really-safe-money] irat <-
  5331. 40.87 s [really-safe-money] let r = DecimalLiteral.toRational dl
  5332. 40.87 s [really-safe-money] - in if numerator r == 0
  5333. 40.87 s [really-safe-money] + in if not (numerator r == 0)
  5334. 40.87 s [really-safe-money] then Nothing
  5335. 40.87 s [really-safe-money] else pure r
  5336. 40.87 s [really-safe-money]
  5337. 40.87 s [really-safe-money] added mutation CondFlip at src/Money/QuantisationFactor.hs:87:9-22
  5338. 40.87 s [really-safe-money] @@ -84,9 +84,9 @@
  5339. 40.87 s [really-safe-money] fromDecimalLiteral dl = do
  5340. 40.87 s [really-safe-money] irat <-
  5341. 40.87 s [really-safe-money] let r = DecimalLiteral.toRational dl
  5342. 40.87 s [really-safe-money] - in if numerator r == 0
  5343. 40.87 s [really-safe-money] - then Nothing
  5344. 40.87 s [really-safe-money] - else pure r
  5345. 40.87 s [really-safe-money] + in if numerator r == 0
  5346. 40.87 s [really-safe-money] + then Nothing
  5347. 40.87 s [really-safe-money] + else pure r
  5348. 40.87 s [really-safe-money]
  5349. 40.87 s [really-safe-money] rat <-
  5350. 40.87 s [really-safe-money] let r = 1 / irat
  5351. 40.87 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:92:13-14
  5352. 40.87 s [really-safe-money] @@ -89,7 +89,7 @@
  5353. 40.87 s [really-safe-money] else pure r
  5354. 40.87 s [really-safe-money]
  5355. 40.87 s [really-safe-money] rat <-
  5356. 40.87 s [really-safe-money] - let r = 1 / irat
  5357. 40.87 s [really-safe-money] + let r = 0 / irat
  5358. 40.87 s [really-safe-money] in if r < 0
  5359. 40.87 s [really-safe-money] then Nothing
  5360. 40.87 s [really-safe-money] else Just r
  5361. 40.87 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:92:13-14
  5362. 40.87 s [really-safe-money] @@ -89,7 +89,7 @@
  5363. 40.87 s [really-safe-money] else pure r
  5364. 40.87 s [really-safe-money]
  5365. 40.87 s [really-safe-money] rat <-
  5366. 40.87 s [really-safe-money] - let r = 1 / irat
  5367. 40.87 s [really-safe-money] + let r = -1 / irat
  5368. 40.87 s [really-safe-money] in if r < 0
  5369. 40.87 s [really-safe-money] then Nothing
  5370. 40.87 s [really-safe-money] else Just r
  5371. 40.87 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:93:16-17
  5372. 40.87 s [really-safe-money] @@ -90,7 +90,7 @@
  5373. 40.87 s [really-safe-money]
  5374. 40.87 s [really-safe-money] rat <-
  5375. 40.87 s [really-safe-money] let r = 1 / irat
  5376. 40.87 s [really-safe-money] - in if r < 0
  5377. 40.87 s [really-safe-money] + in if r < 1
  5378. 40.87 s [really-safe-money] then Nothing
  5379. 40.87 s [really-safe-money] else Just r
  5380. 40.87 s [really-safe-money]
  5381. 40.87 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:93:12-17
  5382. 40.87 s [really-safe-money] @@ -90,7 +90,7 @@
  5383. 40.87 s [really-safe-money]
  5384. 40.87 s [really-safe-money] rat <-
  5385. 40.87 s [really-safe-money] let r = 1 / irat
  5386. 40.87 s [really-safe-money] - in if r < 0
  5387. 40.87 s [really-safe-money] + in if True
  5388. 40.87 s [really-safe-money] then Nothing
  5389. 40.87 s [really-safe-money] else Just r
  5390. 40.87 s [really-safe-money]
  5391. 40.87 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:93:12-17
  5392. 40.87 s [really-safe-money] @@ -90,7 +90,7 @@
  5393. 40.87 s [really-safe-money]
  5394. 40.87 s [really-safe-money] rat <-
  5395. 40.87 s [really-safe-money] let r = 1 / irat
  5396. 40.87 s [really-safe-money] - in if r < 0
  5397. 40.87 s [really-safe-money] + in if False
  5398. 40.87 s [really-safe-money] then Nothing
  5399. 40.87 s [really-safe-money] else Just r
  5400. 40.87 s [really-safe-money]
  5401. 40.87 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:93:12-17
  5402. 40.87 s [really-safe-money] @@ -90,7 +90,7 @@
  5403. 40.87 s [really-safe-money]
  5404. 40.87 s [really-safe-money] rat <-
  5405. 40.87 s [really-safe-money] let r = 1 / irat
  5406. 40.87 s [really-safe-money] - in if r < 0
  5407. 40.87 s [really-safe-money] + in if not (r < 0)
  5408. 40.87 s [really-safe-money] then Nothing
  5409. 40.87 s [really-safe-money] else Just r
  5410. 40.87 s [really-safe-money]
  5411. 40.87 s [really-safe-money] added mutation CondFlip at src/Money/QuantisationFactor.hs:93:9-22
  5412. 40.87 s [really-safe-money] @@ -90,9 +90,9 @@
  5413. 40.87 s [really-safe-money]
  5414. 40.87 s [really-safe-money] rat <-
  5415. 40.87 s [really-safe-money] let r = 1 / irat
  5416. 40.87 s [really-safe-money] - in if r < 0
  5417. 40.87 s [really-safe-money] - then Nothing
  5418. 40.87 s [really-safe-money] - else Just r
  5419. 40.87 s [really-safe-money] + in if r < 0
  5420. 40.87 s [really-safe-money] + then Nothing
  5421. 40.87 s [really-safe-money] + else Just r
  5422. 40.87 s [really-safe-money]
  5423. 40.87 s [really-safe-money] fac <-
  5424. 40.87 s [really-safe-money] if denominator rat == 1
  5425. 40.87 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:98:27-28
  5426. 40.87 s [really-safe-money] @@ -95,7 +95,7 @@
  5427. 40.87 s [really-safe-money] else Just r
  5428. 40.87 s [really-safe-money]
  5429. 40.87 s [really-safe-money] fac <-
  5430. 40.87 s [really-safe-money] - if denominator rat == 1
  5431. 40.87 s [really-safe-money] + if denominator rat == 0
  5432. 40.87 s [really-safe-money] then Just (numerator rat)
  5433. 40.87 s [really-safe-money] else Nothing
  5434. 40.87 s [really-safe-money]
  5435. 40.87 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:98:27-28
  5436. 40.87 s [really-safe-money] @@ -95,7 +95,7 @@
  5437. 40.87 s [really-safe-money] else Just r
  5438. 40.87 s [really-safe-money]
  5439. 40.87 s [really-safe-money] fac <-
  5440. 40.87 s [really-safe-money] - if denominator rat == 1
  5441. 40.87 s [really-safe-money] + if denominator rat == -1
  5442. 40.87 s [really-safe-money] then Just (numerator rat)
  5443. 40.87 s [really-safe-money] else Nothing
  5444. 40.87 s [really-safe-money]
  5445. 40.87 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:98:8-28
  5446. 40.87 s [really-safe-money] @@ -95,7 +95,7 @@
  5447. 40.87 s [really-safe-money] else Just r
  5448. 40.87 s [really-safe-money]
  5449. 40.87 s [really-safe-money] fac <-
  5450. 40.87 s [really-safe-money] - if denominator rat == 1
  5451. 40.87 s [really-safe-money] + if True
  5452. 40.87 s [really-safe-money] then Just (numerator rat)
  5453. 40.87 s [really-safe-money] else Nothing
  5454. 40.87 s [really-safe-money]
  5455. 40.87 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:98:8-28
  5456. 40.87 s [really-safe-money] @@ -95,7 +95,7 @@
  5457. 40.87 s [really-safe-money] else Just r
  5458. 40.87 s [really-safe-money]
  5459. 40.87 s [really-safe-money] fac <-
  5460. 40.87 s [really-safe-money] - if denominator rat == 1
  5461. 40.87 s [really-safe-money] + if False
  5462. 40.87 s [really-safe-money] then Just (numerator rat)
  5463. 40.87 s [really-safe-money] else Nothing
  5464. 40.87 s [really-safe-money]
  5465. 40.87 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:98:8-28
  5466. 40.87 s [really-safe-money] @@ -95,7 +95,7 @@
  5467. 40.87 s [really-safe-money] else Just r
  5468. 40.87 s [really-safe-money]
  5469. 40.87 s [really-safe-money] fac <-
  5470. 40.87 s [really-safe-money] - if denominator rat == 1
  5471. 40.87 s [really-safe-money] + if not (denominator rat == 1)
  5472. 40.87 s [really-safe-money] then Just (numerator rat)
  5473. 40.87 s [really-safe-money] else Nothing
  5474. 40.87 s [really-safe-money]
  5475. 40.87 s [really-safe-money] added mutation CondFlip at src/Money/QuantisationFactor.hs:98:5-19
  5476. 40.87 s [really-safe-money] @@ -95,9 +95,9 @@
  5477. 40.87 s [really-safe-money] else Just r
  5478. 40.87 s [really-safe-money]
  5479. 40.87 s [really-safe-money] fac <-
  5480. 40.87 s [really-safe-money] - if denominator rat == 1
  5481. 40.87 s [really-safe-money] - then Just (numerator rat)
  5482. 40.87 s [really-safe-money] - else Nothing
  5483. 40.87 s [really-safe-money] + if denominator rat == 1
  5484. 40.87 s [really-safe-money] + then Just (numerator rat)
  5485. 40.87 s [really-safe-money] + else Nothing
  5486. 40.87 s [really-safe-money]
  5487. 40.87 s [really-safe-money] if fac <= fromIntegral (maxBound :: Word32)
  5488. 40.87 s [really-safe-money] then Just (QuantisationFactor (fromIntegral fac))
  5489. 40.87 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:102:6-46
  5490. 40.87 s [really-safe-money] @@ -99,6 +99,6 @@
  5491. 40.87 s [really-safe-money] then Just (numerator rat)
  5492. 40.87 s [really-safe-money] else Nothing
  5493. 40.87 s [really-safe-money]
  5494. 40.87 s [really-safe-money] - if fac <= fromIntegral (maxBound :: Word32)
  5495. 40.87 s [really-safe-money] + if True
  5496. 40.87 s [really-safe-money] then Just (QuantisationFactor (fromIntegral fac))
  5497. 40.87 s [really-safe-money] else Nothing
  5498. 40.87 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:102:6-46
  5499. 40.87 s [really-safe-money] @@ -99,6 +99,6 @@
  5500. 40.87 s [really-safe-money] then Just (numerator rat)
  5501. 40.87 s [really-safe-money] else Nothing
  5502. 40.87 s [really-safe-money]
  5503. 40.87 s [really-safe-money] - if fac <= fromIntegral (maxBound :: Word32)
  5504. 40.87 s [really-safe-money] + if False
  5505. 40.87 s [really-safe-money] then Just (QuantisationFactor (fromIntegral fac))
  5506. 40.87 s [really-safe-money] else Nothing
  5507. 40.87 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:102:6-46
  5508. 40.87 s [really-safe-money] @@ -99,6 +99,6 @@
  5509. 40.87 s [really-safe-money] then Just (numerator rat)
  5510. 40.87 s [really-safe-money] else Nothing
  5511. 40.87 s [really-safe-money]
  5512. 40.87 s [really-safe-money] - if fac <= fromIntegral (maxBound :: Word32)
  5513. 40.88 s [really-safe-money] + if not (fac <= fromIntegral (maxBound :: Word32))
  5514. 40.88 s [really-safe-money] then Just (QuantisationFactor (fromIntegral fac))
  5515. 40.88 s [really-safe-money] else Nothing
  5516. 40.88 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:67:67-68
  5517. 40.88 s [really-safe-money] @@ -64,7 +64,7 @@
  5518. 40.88 s [really-safe-money] -- Just (DecimalLiteral Nothing 1 0)
  5519. 40.88 s [really-safe-money] toDecimalLiteral :: QuantisationFactor -> Maybe DecimalLiteral
  5520. 40.88 s [really-safe-money] toDecimalLiteral (QuantisationFactor qfw) =
  5521. 40.88 s [really-safe-money] - DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (1 % fromIntegral qfw)
  5522. 40.88 s [really-safe-money] + DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (0 % fromIntegral qfw)
  5523. 40.88 s [really-safe-money]
  5524. 40.88 s [really-safe-money] -- | Parse a 'QuantisationFactor' from a 'DecimalLiteral' that represents the smallest unit
  5525. 40.88 s [really-safe-money] -- TODO explain that it's the inverse.
  5526. 40.88 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:67:67-68
  5527. 40.88 s [really-safe-money] @@ -64,7 +64,7 @@
  5528. 40.88 s [really-safe-money] -- Just (DecimalLiteral Nothing 1 0)
  5529. 40.88 s [really-safe-money] toDecimalLiteral :: QuantisationFactor -> Maybe DecimalLiteral
  5530. 40.88 s [really-safe-money] toDecimalLiteral (QuantisationFactor qfw) =
  5531. 40.88 s [really-safe-money] - DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (1 % fromIntegral qfw)
  5532. 40.88 s [really-safe-money] + DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (-1 % fromIntegral qfw)
  5533. 40.88 s [really-safe-money]
  5534. 40.88 s [really-safe-money] -- | Parse a 'QuantisationFactor' from a 'DecimalLiteral' that represents the smallest unit
  5535. 40.88 s [really-safe-money] -- TODO explain that it's the inverse.
  5536. 40.88 s [really-safe-money] added mutation IntLit at src/Money/QuantisationFactor.hs:40:62-63
  5537. 40.88 s [really-safe-money] @@ -37,7 +37,7 @@
  5538. 40.88 s [really-safe-money] validate qf@(QuantisationFactor w) =
  5539. 40.88 s [really-safe-money] mconcat
  5540. 40.88 s [really-safe-money] [ genericValidate qf,
  5541. 40.88 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  5542. 40.88 s [really-safe-money] + declare "The quantisation factor is not zero" $ w /= 1
  5543. 40.88 s [really-safe-money] ]
  5544. 40.88 s [really-safe-money]
  5545. 40.88 s [really-safe-money] instance NFData QuantisationFactor
  5546. 40.88 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63
  5547. 40.88 s [really-safe-money] @@ -37,7 +37,7 @@
  5548. 40.88 s [really-safe-money] validate qf@(QuantisationFactor w) =
  5549. 40.88 s [really-safe-money] mconcat
  5550. 40.88 s [really-safe-money] [ genericValidate qf,
  5551. 40.88 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  5552. 40.88 s [really-safe-money] + declare "The quantisation factor is not zero" $ True
  5553. 40.88 s [really-safe-money] ]
  5554. 40.88 s [really-safe-money]
  5555. 40.88 s [really-safe-money] instance NFData QuantisationFactor
  5556. 40.88 s [really-safe-money] added mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63
  5557. 40.88 s [really-safe-money] @@ -37,7 +37,7 @@
  5558. 40.88 s [really-safe-money] validate qf@(QuantisationFactor w) =
  5559. 40.88 s [really-safe-money] mconcat
  5560. 40.88 s [really-safe-money] [ genericValidate qf,
  5561. 40.88 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  5562. 40.88 s [really-safe-money] + declare "The quantisation factor is not zero" $ False
  5563. 40.88 s [really-safe-money] ]
  5564. 40.88 s [really-safe-money]
  5565. 40.88 s [really-safe-money] instance NFData QuantisationFactor
  5566. 40.88 s [really-safe-money] added mutation Negate at src/Money/QuantisationFactor.hs:40:57-63
  5567. 40.88 s [really-safe-money] @@ -37,7 +37,7 @@
  5568. 40.88 s [really-safe-money] validate qf@(QuantisationFactor w) =
  5569. 40.88 s [really-safe-money] mconcat
  5570. 40.88 s [really-safe-money] [ genericValidate qf,
  5571. 40.88 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  5572. 40.88 s [really-safe-money] + declare "The quantisation factor is not zero" $ not (w /= 0)
  5573. 40.88 s [really-safe-money] ]
  5574. 40.88 s [really-safe-money]
  5575. 40.88 s [really-safe-money] instance NFData QuantisationFactor
  5576. 40.88 s [really-safe-money] added mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8
  5577. 40.88 s [really-safe-money] @@ -36,9 +36,7 @@
  5578. 40.88 s [really-safe-money] instance Validity QuantisationFactor where
  5579. 40.88 s [really-safe-money] validate qf@(QuantisationFactor w) =
  5580. 40.88 s [really-safe-money] mconcat
  5581. 40.88 s [really-safe-money] - [ genericValidate qf,
  5582. 40.88 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  5583. 40.88 s [really-safe-money] - ]
  5584. 40.88 s [really-safe-money] + []
  5585. 40.88 s [really-safe-money]
  5586. 40.88 s [really-safe-money] instance NFData QuantisationFactor
  5587. 40.88 s [really-safe-money]
  5588. 40.88 s [really-safe-money] added mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8
  5589. 40.88 s [really-safe-money] @@ -36,9 +36,9 @@
  5590. 40.88 s [really-safe-money] instance Validity QuantisationFactor where
  5591. 40.88 s [really-safe-money] validate qf@(QuantisationFactor w) =
  5592. 40.88 s [really-safe-money] mconcat
  5593. 40.88 s [really-safe-money] - [ genericValidate qf,
  5594. 40.88 s [really-safe-money] - declare "The quantisation factor is not zero" $ w /= 0
  5595. 40.88 s [really-safe-money] - ]
  5596. 40.88 s [really-safe-money] + [ genericValidate qf,
  5597. 40.88 s [really-safe-money] + declare "The quantisation factor is not zero" $ w /= 0
  5598. 40.88 s [really-safe-money] + ]
  5599. 40.88 s [really-safe-money]
  5600. 40.88 s [really-safe-money] instance NFData QuantisationFactor
  5601. 40.88 s [really-safe-money]
  5602. 40.88 s [really-safe-money] added 29 mutations
  5603. 41.43 s [really-safe-money] [ 3 of 12] Compiling Money.Currency ( src/Money/Currency.hs, dist/build/Money/Currency.p_o )
  5604. 41.44 s [really-safe-money] mutation: instrumenting Money.Currency
  5605. 41.44 s [really-safe-money] added 0 mutations
  5606. 41.94 s [really-safe-money] [ 4 of 12] Compiling Money.ConversionRate ( src/Money/ConversionRate.hs, dist/build/Money/ConversionRate.p_o )
  5607. 41.95 s [really-safe-money] mutation: instrumenting Money.ConversionRate
  5608. 41.95 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:116:45-46
  5609. 41.95 s [really-safe-money] @@ -113,7 +113,7 @@
  5610. 41.95 s [really-safe-money] -- >>> invert (ConversionRate (1 % 2))
  5611. 41.95 s [really-safe-money] -- ConversionRate {unConversionRate = 2 % 1}
  5612. 41.95 s [really-safe-money] invert :: ConversionRate -> ConversionRate
  5613. 41.95 s [really-safe-money] -invert (ConversionRate r) = ConversionRate (1 / r)
  5614. 41.95 s [really-safe-money] +invert (ConversionRate r) = ConversionRate (0 / r)
  5615. 41.95 s [really-safe-money]
  5616. 41.95 s [really-safe-money] -- | Compose two conversion rates
  5617. 41.95 s [really-safe-money] --
  5618. 41.95 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:116:45-46
  5619. 41.95 s [really-safe-money] @@ -113,7 +113,7 @@
  5620. 41.95 s [really-safe-money] -- >>> invert (ConversionRate (1 % 2))
  5621. 41.95 s [really-safe-money] -- ConversionRate {unConversionRate = 2 % 1}
  5622. 41.95 s [really-safe-money] invert :: ConversionRate -> ConversionRate
  5623. 41.95 s [really-safe-money] -invert (ConversionRate r) = ConversionRate (1 / r)
  5624. 41.95 s [really-safe-money] +invert (ConversionRate r) = ConversionRate (-1 / r)
  5625. 41.95 s [really-safe-money]
  5626. 41.95 s [really-safe-money] -- | Compose two conversion rates
  5627. 41.95 s [really-safe-money] --
  5628. 41.95 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:109:27-28
  5629. 41.95 s [really-safe-money] @@ -106,7 +106,7 @@
  5630. 41.95 s [really-safe-money]
  5631. 41.95 s [really-safe-money] -- | One-to-one conversion rate
  5632. 41.95 s [really-safe-money] oneToOne :: ConversionRate
  5633. 41.95 s [really-safe-money] -oneToOne = ConversionRate 1
  5634. 41.95 s [really-safe-money] +oneToOne = ConversionRate 0
  5635. 41.95 s [really-safe-money]
  5636. 41.95 s [really-safe-money] -- | Invert a 'ConversionRate', to convert in the other direction.
  5637. 41.95 s [really-safe-money] --
  5638. 41.95 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:109:27-28
  5639. 41.95 s [really-safe-money] @@ -106,7 +106,7 @@
  5640. 41.95 s [really-safe-money]
  5641. 41.95 s [really-safe-money] -- | One-to-one conversion rate
  5642. 41.95 s [really-safe-money] oneToOne :: ConversionRate
  5643. 41.95 s [really-safe-money] -oneToOne = ConversionRate 1
  5644. 41.95 s [really-safe-money] +oneToOne = ConversionRate -1
  5645. 41.95 s [really-safe-money]
  5646. 41.95 s [really-safe-money] -- | Invert a 'ConversionRate', to convert in the other direction.
  5647. 41.95 s [really-safe-money] --
  5648. 41.95 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:72:25-26
  5649. 41.95 s [really-safe-money] @@ -69,7 +69,7 @@
  5650. 41.95 s [really-safe-money] -- >>> fromRational (0 % 1)
  5651. 41.95 s [really-safe-money] -- Nothing
  5652. 41.95 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  5653. 41.95 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  5654. 41.95 s [really-safe-money] +fromRational r = if r < 1 then Nothing else fromRatio (realToFrac r)
  5655. 41.95 s [really-safe-money]
  5656. 41.95 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  5657. 41.95 s [really-safe-money] --
  5658. 41.95 s [really-safe-money] added mutation ConstBool at src/Money/ConversionRate.hs:72:21-26
  5659. 41.95 s [really-safe-money] @@ -69,7 +69,7 @@
  5660. 41.95 s [really-safe-money] -- >>> fromRational (0 % 1)
  5661. 41.95 s [really-safe-money] -- Nothing
  5662. 41.95 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  5663. 41.95 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  5664. 41.95 s [really-safe-money] +fromRational r = if True then Nothing else fromRatio (realToFrac r)
  5665. 41.95 s [really-safe-money]
  5666. 41.95 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  5667. 41.95 s [really-safe-money] --
  5668. 41.95 s [really-safe-money] added mutation ConstBool at src/Money/ConversionRate.hs:72:21-26
  5669. 41.95 s [really-safe-money] @@ -69,7 +69,7 @@
  5670. 41.95 s [really-safe-money] -- >>> fromRational (0 % 1)
  5671. 41.95 s [really-safe-money] -- Nothing
  5672. 41.95 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  5673. 41.95 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  5674. 41.95 s [really-safe-money] +fromRational r = if False then Nothing else fromRatio (realToFrac r)
  5675. 41.95 s [really-safe-money]
  5676. 41.95 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  5677. 41.95 s [really-safe-money] --
  5678. 41.95 s [really-safe-money] added mutation Negate at src/Money/ConversionRate.hs:72:21-26
  5679. 41.95 s [really-safe-money] @@ -69,7 +69,7 @@
  5680. 41.95 s [really-safe-money] -- >>> fromRational (0 % 1)
  5681. 41.95 s [really-safe-money] -- Nothing
  5682. 41.95 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  5683. 41.95 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  5684. 41.95 s [really-safe-money] +fromRational r = if not (r < 0) then Nothing else fromRatio (realToFrac r)
  5685. 41.95 s [really-safe-money]
  5686. 41.95 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  5687. 41.95 s [really-safe-money] --
  5688. 41.95 s [really-safe-money] added mutation CondFlip at src/Money/ConversionRate.hs:72:18-69
  5689. 41.95 s [really-safe-money] @@ -69,7 +69,7 @@
  5690. 41.95 s [really-safe-money] -- >>> fromRational (0 % 1)
  5691. 41.95 s [really-safe-money] -- Nothing
  5692. 41.95 s [really-safe-money] fromRational :: Rational -> Maybe ConversionRate
  5693. 41.95 s [really-safe-money] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  5694. 41.95 s [really-safe-money] +fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  5695. 41.95 s [really-safe-money]
  5696. 41.95 s [really-safe-money] -- | Turn a 'ConversionRate' back into a 'Rational'
  5697. 41.95 s [really-safe-money] --
  5698. 41.95 s [really-safe-money] added mutation IntLit at src/Money/ConversionRate.hs:38:56-57
  5699. 41.95 s [really-safe-money] @@ -35,7 +35,7 @@
  5700. 41.95 s [really-safe-money] validate cr@(ConversionRate r) =
  5701. 41.95 s [really-safe-money] mconcat
  5702. 41.95 s [really-safe-money] [ genericValidate cr,
  5703. 41.95 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  5704. 41.95 s [really-safe-money] + declare "The rate is nonzero" $ numerator r /= 1
  5705. 41.95 s [really-safe-money] ]
  5706. 41.95 s [really-safe-money]
  5707. 41.95 s [really-safe-money] instance NFData ConversionRate
  5708. 41.95 s [really-safe-money] added mutation ConstBool at src/Money/ConversionRate.hs:38:41-57
  5709. 41.95 s [really-safe-money] @@ -35,7 +35,7 @@
  5710. 41.95 s [really-safe-money] validate cr@(ConversionRate r) =
  5711. 41.95 s [really-safe-money] mconcat
  5712. 41.95 s [really-safe-money] [ genericValidate cr,
  5713. 41.95 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  5714. 41.95 s [really-safe-money] + declare "The rate is nonzero" $ True
  5715. 41.95 s [really-safe-money] ]
  5716. 41.95 s [really-safe-money]
  5717. 41.95 s [really-safe-money] instance NFData ConversionRate
  5718. 41.95 s [really-safe-money] added mutation ConstBool at src/Money/ConversionRate.hs:38:41-57
  5719. 41.95 s [really-safe-money] @@ -35,7 +35,7 @@
  5720. 41.95 s [really-safe-money] validate cr@(ConversionRate r) =
  5721. 41.95 s [really-safe-money] mconcat
  5722. 41.95 s [really-safe-money] [ genericValidate cr,
  5723. 41.95 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  5724. 41.95 s [really-safe-money] + declare "The rate is nonzero" $ False
  5725. 41.95 s [really-safe-money] ]
  5726. 41.95 s [really-safe-money]
  5727. 41.95 s [really-safe-money] instance NFData ConversionRate
  5728. 41.95 s [really-safe-money] added mutation Negate at src/Money/ConversionRate.hs:38:41-57
  5729. 41.95 s [really-safe-money] @@ -35,7 +35,7 @@
  5730. 41.95 s [really-safe-money] validate cr@(ConversionRate r) =
  5731. 41.95 s [really-safe-money] mconcat
  5732. 41.95 s [really-safe-money] [ genericValidate cr,
  5733. 41.95 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  5734. 41.95 s [really-safe-money] + declare "The rate is nonzero" $ not (numerator r /= 0)
  5735. 41.95 s [really-safe-money] ]
  5736. 41.95 s [really-safe-money]
  5737. 41.95 s [really-safe-money] instance NFData ConversionRate
  5738. 41.95 s [really-safe-money] added mutation ListLit at src/Money/ConversionRate.hs:37:7-8
  5739. 41.95 s [really-safe-money] @@ -34,9 +34,7 @@
  5740. 41.95 s [really-safe-money] instance Validity ConversionRate where
  5741. 41.95 s [really-safe-money] validate cr@(ConversionRate r) =
  5742. 41.95 s [really-safe-money] mconcat
  5743. 41.95 s [really-safe-money] - [ genericValidate cr,
  5744. 41.95 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  5745. 41.95 s [really-safe-money] - ]
  5746. 41.95 s [really-safe-money] + []
  5747. 41.95 s [really-safe-money]
  5748. 41.95 s [really-safe-money] instance NFData ConversionRate
  5749. 41.95 s [really-safe-money]
  5750. 41.95 s [really-safe-money] added mutation ListLit at src/Money/ConversionRate.hs:37:7-8
  5751. 41.95 s [really-safe-money] @@ -34,9 +34,9 @@
  5752. 41.95 s [really-safe-money] instance Validity ConversionRate where
  5753. 41.95 s [really-safe-money] validate cr@(ConversionRate r) =
  5754. 41.95 s [really-safe-money] mconcat
  5755. 41.95 s [really-safe-money] - [ genericValidate cr,
  5756. 41.95 s [really-safe-money] - declare "The rate is nonzero" $ numerator r /= 0
  5757. 41.95 s [really-safe-money] - ]
  5758. 41.95 s [really-safe-money] + [ genericValidate cr,
  5759. 41.95 s [really-safe-money] + declare "The rate is nonzero" $ numerator r /= 0
  5760. 41.95 s [really-safe-money] + ]
  5761. 41.95 s [really-safe-money]
  5762. 41.95 s [really-safe-money] instance NFData ConversionRate
  5763. 41.95 s [really-safe-money]
  5764. 41.95 s [really-safe-money] added 15 mutations
  5765. 42.29 s [really-safe-money] [ 5 of 12] Compiling Money.ConversionRateOf ( src/Money/ConversionRateOf.hs, dist/build/Money/ConversionRateOf.p_o )
  5766. 42.30 s [really-safe-money] mutation: instrumenting Money.ConversionRateOf
  5767. 42.30 s [really-safe-money] added 0 mutations
  5768. 42.47 s [really-safe-money] [ 6 of 12] Compiling Money.Amount ( src/Money/Amount.hs, dist/build/Money/Amount.p_o )
  5769. 42.56 s [really-safe-money] mutation: instrumenting Money.Amount
  5770. 42.56 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:801:36-38
  5771. 42.72 s [really-safe-money] @@ -798,7 +798,7 @@
  5772. 42.72 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  5773. 42.72 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor qf) =
  5774. 42.72 s [really-safe-money] let decimals :: Int
  5775. 42.72 s [really-safe-money] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  5776. 42.72 s [really-safe-money] + decimals = ceiling $ logBase 0 (fromIntegral qf :: Float)
  5777. 42.72 s [really-safe-money] in printf "%%0.%df" decimals
  5778. 42.72 s [really-safe-money]
  5779. 42.72 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  5780. 42.72 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:801:36-38
  5781. 42.72 s [really-safe-money] @@ -798,7 +798,7 @@
  5782. 42.72 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  5783. 42.72 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor qf) =
  5784. 42.72 s [really-safe-money] let decimals :: Int
  5785. 42.72 s [really-safe-money] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  5786. 42.72 s [really-safe-money] + decimals = ceiling $ logBase 1 (fromIntegral qf :: Float)
  5787. 42.72 s [really-safe-money] in printf "%%0.%df" decimals
  5788. 42.72 s [really-safe-money]
  5789. 42.72 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  5790. 42.72 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:801:36-38
  5791. 42.72 s [really-safe-money] @@ -798,7 +798,7 @@
  5792. 42.72 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  5793. 42.72 s [really-safe-money] quantisationFactorFormatString (QuantisationFactor qf) =
  5794. 42.72 s [really-safe-money] let decimals :: Int
  5795. 42.72 s [really-safe-money] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  5796. 42.72 s [really-safe-money] + decimals = ceiling $ logBase -10 (fromIntegral qf :: Float)
  5797. 42.72 s [really-safe-money] in printf "%%0.%df" decimals
  5798. 42.72 s [really-safe-money]
  5799. 42.72 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  5800. 42.72 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:569:18-19
  5801. 42.72 s [really-safe-money] @@ -566,7 +566,7 @@
  5802. 42.72 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  5803. 42.72 s [really-safe-money] smallerChunk :: Amount
  5804. 42.72 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  5805. 42.72 s [really-safe-money] - in if rest == 0
  5806. 42.72 s [really-safe-money] + in if rest == 1
  5807. 42.72 s [really-safe-money] then DistributedIntoEqualChunks f smallerChunk
  5808. 42.72 s [really-safe-money] else
  5809. 42.72 s [really-safe-money] let -- This 'fromIntegral' is theoretically not safe, but it's
  5810. 42.72 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:569:10-19
  5811. 42.72 s [really-safe-money] @@ -566,7 +566,7 @@
  5812. 42.72 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  5813. 42.72 s [really-safe-money] smallerChunk :: Amount
  5814. 42.72 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  5815. 42.72 s [really-safe-money] - in if rest == 0
  5816. 42.72 s [really-safe-money] + in if True
  5817. 42.72 s [really-safe-money] then DistributedIntoEqualChunks f smallerChunk
  5818. 42.72 s [really-safe-money] else
  5819. 42.72 s [really-safe-money] let -- This 'fromIntegral' is theoretically not safe, but it's
  5820. 42.72 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:569:10-19
  5821. 42.72 s [really-safe-money] @@ -566,7 +566,7 @@
  5822. 42.72 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  5823. 42.72 s [really-safe-money] smallerChunk :: Amount
  5824. 42.72 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  5825. 42.72 s [really-safe-money] - in if rest == 0
  5826. 42.72 s [really-safe-money] + in if False
  5827. 42.72 s [really-safe-money] then DistributedIntoEqualChunks f smallerChunk
  5828. 42.72 s [really-safe-money] else
  5829. 42.72 s [really-safe-money] let -- This 'fromIntegral' is theoretically not safe, but it's
  5830. 42.72 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:569:10-19
  5831. 42.72 s [really-safe-money] @@ -566,7 +566,7 @@
  5832. 42.72 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  5833. 42.72 s [really-safe-money] smallerChunk :: Amount
  5834. 42.72 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  5835. 42.72 s [really-safe-money] - in if rest == 0
  5836. 42.72 s [really-safe-money] + in if not (rest == 0)
  5837. 42.72 s [really-safe-money] then DistributedIntoEqualChunks f smallerChunk
  5838. 42.72 s [really-safe-money] else
  5839. 42.72 s [really-safe-money] let -- This 'fromIntegral' is theoretically not safe, but it's
  5840. 42.72 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:569:7-29
  5841. 42.72 s [really-safe-money] @@ -566,22 +566,22 @@
  5842. 42.72 s [really-safe-money] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  5843. 42.72 s [really-safe-money] smallerChunk :: Amount
  5844. 42.72 s [really-safe-money] smallerChunk = Amount smallerChunkSize
  5845. 42.72 s [really-safe-money] - in if rest == 0
  5846. 42.72 s [really-safe-money] - then DistributedIntoEqualChunks f smallerChunk
  5847. 42.72 s [really-safe-money] - else
  5848. 42.72 s [really-safe-money] - let -- This 'fromIntegral' is theoretically not safe, but it's
  5849. 42.72 s [really-safe-money] - -- necessarily smaller than f so it will fit.
  5850. 42.72 s [really-safe-money] - numberOfLargerChunks :: Word32
  5851. 42.72 s [really-safe-money] - numberOfLargerChunks = (fromIntegral :: Word64 -> Word32) rest
  5852. 42.72 s [really-safe-money] - numberOfSmallerChunks :: Word32
  5853. 42.72 s [really-safe-money] - numberOfSmallerChunks = f - numberOfLargerChunks
  5854. 42.72 s [really-safe-money] - largerChunk :: Amount
  5855. 42.72 s [really-safe-money] - largerChunk = Amount $ succ smallerChunkSize
  5856. 42.72 s [really-safe-money] - in DistributedIntoUnequalChunks
  5857. 42.72 s [really-safe-money] - numberOfLargerChunks
  5858. 42.72 s [really-safe-money] - largerChunk
  5859. 42.72 s [really-safe-money] - numberOfSmallerChunks
  5860. 42.72 s [really-safe-money] - smallerChunk
  5861. 42.72 s [really-safe-money] + in if rest == 0
  5862. 42.72 s [really-safe-money] + then DistributedIntoEqualChunks f smallerChunk
  5863. 42.72 s [really-safe-money] + else
  5864. 42.72 s [really-safe-money] + let -- This 'fromIntegral' is theoretically not safe, but it's
  5865. 42.72 s [really-safe-money] + -- necessarily smaller than f so it will fit.
  5866. 42.72 s [really-safe-money] + numberOfLargerChunks :: Word32
  5867. 42.72 s [really-safe-money] + numberOfLargerChunks = (fromIntegral :: Word64 -> Word32) rest
  5868. 42.72 s [really-safe-money] + numberOfSmallerChunks :: Word32
  5869. 42.72 s [really-safe-money] + numberOfSmallerChunks = f - numberOfLargerChunks
  5870. 42.72 s [really-safe-money] + largerChunk :: Amount
  5871. 42.72 s [really-safe-money] + largerChunk = Amount $ succ smallerChunkSize
  5872. 42.72 s [really-safe-money] + in DistributedIntoUnequalChunks
  5873. 42.72 s [really-safe-money] + numberOfLargerChunks
  5874. 42.72 s [really-safe-money] + largerChunk
  5875. 42.72 s [really-safe-money] + numberOfSmallerChunks
  5876. 42.73 s [really-safe-money] + smallerChunk
  5877. 42.73 s [really-safe-money]
  5878. 42.73 s [really-safe-money] -- | The result of 'distribute'
  5879. 42.73 s [really-safe-money] type AmountDistribution = Distribution Amount
  5880. 42.73 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:544:10-23
  5881. 42.73 s [really-safe-money] @@ -541,7 +541,7 @@
  5882. 42.73 s [really-safe-money] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  5883. 42.73 s [really-safe-money] r :: Integer
  5884. 42.73 s [really-safe-money] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  5885. 42.73 s [really-safe-money] - in if r > maxBoundI
  5886. 42.73 s [really-safe-money] + in if True
  5887. 42.73 s [really-safe-money] then Nothing
  5888. 42.73 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5889. 42.73 s [really-safe-money]
  5890. 42.73 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:544:10-23
  5891. 42.73 s [really-safe-money] @@ -541,7 +541,7 @@
  5892. 42.73 s [really-safe-money] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  5893. 42.73 s [really-safe-money] r :: Integer
  5894. 42.73 s [really-safe-money] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  5895. 42.73 s [really-safe-money] - in if r > maxBoundI
  5896. 42.73 s [really-safe-money] + in if False
  5897. 42.73 s [really-safe-money] then Nothing
  5898. 42.73 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5899. 42.73 s [really-safe-money]
  5900. 42.73 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:544:10-23
  5901. 42.73 s [really-safe-money] @@ -541,7 +541,7 @@
  5902. 42.73 s [really-safe-money] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  5903. 42.73 s [really-safe-money] r :: Integer
  5904. 42.73 s [really-safe-money] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  5905. 42.73 s [really-safe-money] - in if r > maxBoundI
  5906. 42.73 s [really-safe-money] + in if not (r > maxBoundI)
  5907. 42.73 s [really-safe-money] then Nothing
  5908. 42.73 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5909. 42.73 s [really-safe-money]
  5910. 42.73 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:544:7-66
  5911. 42.73 s [really-safe-money] @@ -541,9 +541,9 @@
  5912. 42.73 s [really-safe-money] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  5913. 42.73 s [really-safe-money] r :: Integer
  5914. 42.73 s [really-safe-money] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  5915. 42.73 s [really-safe-money] - in if r > maxBoundI
  5916. 42.73 s [really-safe-money] - then Nothing
  5917. 42.73 s [really-safe-money] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5918. 42.73 s [really-safe-money] + in if r > maxBoundI
  5919. 42.73 s [really-safe-money] + then Nothing
  5920. 42.73 s [really-safe-money] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5921. 42.73 s [really-safe-money]
  5922. 42.73 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  5923. 42.73 s [really-safe-money] --
  5924. 42.73 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:518:14-15
  5925. 42.73 s [really-safe-money] @@ -515,7 +515,7 @@
  5926. 42.73 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  5927. 42.73 s [really-safe-money] r :: Integer
  5928. 42.73 s [really-safe-money] r = i1 - i2
  5929. 42.73 s [really-safe-money] - in if r < 0
  5930. 42.73 s [really-safe-money] + in if r < 1
  5931. 42.73 s [really-safe-money] then Nothing
  5932. 42.73 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5933. 42.73 s [really-safe-money]
  5934. 42.73 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:518:10-15
  5935. 42.73 s [really-safe-money] @@ -515,7 +515,7 @@
  5936. 42.73 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  5937. 42.73 s [really-safe-money] r :: Integer
  5938. 42.73 s [really-safe-money] r = i1 - i2
  5939. 42.73 s [really-safe-money] - in if r < 0
  5940. 42.73 s [really-safe-money] + in if True
  5941. 42.73 s [really-safe-money] then Nothing
  5942. 42.73 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5943. 42.73 s [really-safe-money]
  5944. 42.73 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:518:10-15
  5945. 42.73 s [really-safe-money] @@ -515,7 +515,7 @@
  5946. 42.73 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  5947. 42.73 s [really-safe-money] r :: Integer
  5948. 42.73 s [really-safe-money] r = i1 - i2
  5949. 42.73 s [really-safe-money] - in if r < 0
  5950. 42.73 s [really-safe-money] + in if False
  5951. 42.73 s [really-safe-money] then Nothing
  5952. 42.73 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5953. 42.73 s [really-safe-money]
  5954. 42.73 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:518:10-15
  5955. 42.73 s [really-safe-money] @@ -515,7 +515,7 @@
  5956. 42.73 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  5957. 42.73 s [really-safe-money] r :: Integer
  5958. 42.73 s [really-safe-money] r = i1 - i2
  5959. 42.73 s [really-safe-money] - in if r < 0
  5960. 42.73 s [really-safe-money] + in if not (r < 0)
  5961. 42.73 s [really-safe-money] then Nothing
  5962. 42.73 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5963. 42.73 s [really-safe-money]
  5964. 42.73 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:518:7-66
  5965. 42.73 s [really-safe-money] @@ -515,9 +515,9 @@
  5966. 42.73 s [really-safe-money] i2 = (fromIntegral :: Word64 -> Integer) a2
  5967. 42.73 s [really-safe-money] r :: Integer
  5968. 42.73 s [really-safe-money] r = i1 - i2
  5969. 42.73 s [really-safe-money] - in if r < 0
  5970. 42.73 s [really-safe-money] - then Nothing
  5971. 42.73 s [really-safe-money] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5972. 42.73 s [really-safe-money] + in if r < 0
  5973. 42.73 s [really-safe-money] + then Nothing
  5974. 42.73 s [really-safe-money] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5975. 42.73 s [really-safe-money]
  5976. 42.73 s [really-safe-money] -- | Multiply an amount of money by an integer scalar
  5977. 42.73 s [really-safe-money] --
  5978. 42.73 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:476:10-23
  5979. 42.73 s [really-safe-money] @@ -473,7 +473,7 @@
  5980. 42.73 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  5981. 42.73 s [really-safe-money] r :: Integer
  5982. 42.73 s [really-safe-money] r = i1 + i2
  5983. 42.73 s [really-safe-money] - in if r > maxBoundI
  5984. 42.73 s [really-safe-money] + in if True
  5985. 42.73 s [really-safe-money] then Nothing
  5986. 42.73 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5987. 42.73 s [really-safe-money]
  5988. 42.73 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:476:10-23
  5989. 42.73 s [really-safe-money] @@ -473,7 +473,7 @@
  5990. 42.73 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  5991. 42.73 s [really-safe-money] r :: Integer
  5992. 42.73 s [really-safe-money] r = i1 + i2
  5993. 42.73 s [really-safe-money] - in if r > maxBoundI
  5994. 42.73 s [really-safe-money] + in if False
  5995. 42.73 s [really-safe-money] then Nothing
  5996. 42.73 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  5997. 42.73 s [really-safe-money]
  5998. 42.73 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:476:10-23
  5999. 42.73 s [really-safe-money] @@ -473,7 +473,7 @@
  6000. 42.73 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  6001. 42.73 s [really-safe-money] r :: Integer
  6002. 42.73 s [really-safe-money] r = i1 + i2
  6003. 42.73 s [really-safe-money] - in if r > maxBoundI
  6004. 42.73 s [really-safe-money] + in if not (r > maxBoundI)
  6005. 42.73 s [really-safe-money] then Nothing
  6006. 42.73 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  6007. 42.73 s [really-safe-money]
  6008. 42.73 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:476:7-66
  6009. 42.73 s [really-safe-money] @@ -473,9 +473,9 @@
  6010. 42.73 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  6011. 42.73 s [really-safe-money] r :: Integer
  6012. 42.73 s [really-safe-money] r = i1 + i2
  6013. 42.73 s [really-safe-money] - in if r > maxBoundI
  6014. 42.73 s [really-safe-money] - then Nothing
  6015. 42.73 s [really-safe-money] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  6016. 42.73 s [really-safe-money] + in if r > maxBoundI
  6017. 42.73 s [really-safe-money] + then Nothing
  6018. 42.73 s [really-safe-money] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  6019. 42.73 s [really-safe-money]
  6020. 42.73 s [really-safe-money] -- | Add a number of amounts of money together.
  6021. 42.73 s [really-safe-money] --
  6022. 42.73 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:388:5-16
  6023. 42.73 s [really-safe-money] @@ -385,7 +385,7 @@
  6024. 42.73 s [really-safe-money] -- Nothing
  6025. 42.73 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  6026. 42.73 s [really-safe-money] fromRational (QuantisationFactor qf) r
  6027. 42.73 s [really-safe-money] - | isInvalid r = Nothing
  6028. 42.73 s [really-safe-money] + | True = Nothing
  6029. 42.73 s [really-safe-money] | r < 0 = Nothing
  6030. 42.73 s [really-safe-money] | otherwise =
  6031. 42.73 s [really-safe-money] let resultRational :: Rational
  6032. 42.73 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:388:5-16
  6033. 42.73 s [really-safe-money] @@ -385,7 +385,7 @@
  6034. 42.73 s [really-safe-money] -- Nothing
  6035. 42.73 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  6036. 42.73 s [really-safe-money] fromRational (QuantisationFactor qf) r
  6037. 42.73 s [really-safe-money] - | isInvalid r = Nothing
  6038. 42.73 s [really-safe-money] + | not (isInvalid r) = Nothing
  6039. 42.73 s [really-safe-money] | r < 0 = Nothing
  6040. 42.73 s [really-safe-money] | otherwise =
  6041. 42.73 s [really-safe-money] let resultRational :: Rational
  6042. 42.73 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:389:9-10
  6043. 42.73 s [really-safe-money] @@ -386,7 +386,7 @@
  6044. 42.73 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  6045. 42.73 s [really-safe-money] fromRational (QuantisationFactor qf) r
  6046. 42.73 s [really-safe-money] | isInvalid r = Nothing
  6047. 42.73 s [really-safe-money] - | r < 0 = Nothing
  6048. 42.73 s [really-safe-money] + | r < 1 = Nothing
  6049. 42.73 s [really-safe-money] | otherwise =
  6050. 42.73 s [really-safe-money] let resultRational :: Rational
  6051. 42.73 s [really-safe-money] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  6052. 42.73 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:389:5-10
  6053. 42.73 s [really-safe-money] @@ -386,7 +386,7 @@
  6054. 42.73 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  6055. 42.73 s [really-safe-money] fromRational (QuantisationFactor qf) r
  6056. 42.73 s [really-safe-money] | isInvalid r = Nothing
  6057. 42.73 s [really-safe-money] - | r < 0 = Nothing
  6058. 42.73 s [really-safe-money] + | True = Nothing
  6059. 42.73 s [really-safe-money] | otherwise =
  6060. 42.73 s [really-safe-money] let resultRational :: Rational
  6061. 42.73 s [really-safe-money] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  6062. 42.73 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:389:5-10
  6063. 42.73 s [really-safe-money] @@ -386,7 +386,7 @@
  6064. 42.73 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  6065. 42.73 s [really-safe-money] fromRational (QuantisationFactor qf) r
  6066. 42.73 s [really-safe-money] | isInvalid r = Nothing
  6067. 42.73 s [really-safe-money] - | r < 0 = Nothing
  6068. 42.73 s [really-safe-money] + | not (r < 0) = Nothing
  6069. 42.73 s [really-safe-money] | otherwise =
  6070. 42.73 s [really-safe-money] let resultRational :: Rational
  6071. 42.73 s [really-safe-money] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  6072. 42.73 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:397:14-31
  6073. 42.73 s [really-safe-money] @@ -394,7 +394,7 @@
  6074. 42.73 s [really-safe-money] ceiled = (ceiling :: Rational -> Natural) resultRational
  6075. 42.73 s [really-safe-money] floored :: Natural
  6076. 42.73 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  6077. 42.73 s [really-safe-money] - in if ceiled == floored
  6078. 42.73 s [really-safe-money] + in if True
  6079. 42.73 s [really-safe-money] then
  6080. 42.73 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6081. 42.73 s [really-safe-money] then Nothing
  6082. 42.73 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:397:14-31
  6083. 42.73 s [really-safe-money] @@ -394,7 +394,7 @@
  6084. 42.73 s [really-safe-money] ceiled = (ceiling :: Rational -> Natural) resultRational
  6085. 42.73 s [really-safe-money] floored :: Natural
  6086. 42.73 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  6087. 42.73 s [really-safe-money] - in if ceiled == floored
  6088. 42.73 s [really-safe-money] + in if False
  6089. 42.73 s [really-safe-money] then
  6090. 42.73 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6091. 42.73 s [really-safe-money] then Nothing
  6092. 42.73 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:397:14-31
  6093. 42.73 s [really-safe-money] @@ -394,7 +394,7 @@
  6094. 42.73 s [really-safe-money] ceiled = (ceiling :: Rational -> Natural) resultRational
  6095. 42.73 s [really-safe-money] floored :: Natural
  6096. 42.73 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  6097. 42.73 s [really-safe-money] - in if ceiled == floored
  6098. 42.73 s [really-safe-money] + in if not (ceiled == floored)
  6099. 42.73 s [really-safe-money] then
  6100. 42.73 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6101. 42.73 s [really-safe-money] then Nothing
  6102. 42.73 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:399:18-83
  6103. 42.73 s [really-safe-money] @@ -396,7 +396,7 @@
  6104. 42.73 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  6105. 42.73 s [really-safe-money] in if ceiled == floored
  6106. 42.73 s [really-safe-money] then
  6107. 42.73 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6108. 42.73 s [really-safe-money] + if True
  6109. 42.73 s [really-safe-money] then Nothing
  6110. 42.73 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  6111. 42.73 s [really-safe-money] else Nothing
  6112. 42.73 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:399:18-83
  6113. 42.73 s [really-safe-money] @@ -396,7 +396,7 @@
  6114. 42.73 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  6115. 42.73 s [really-safe-money] in if ceiled == floored
  6116. 42.73 s [really-safe-money] then
  6117. 42.73 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6118. 42.73 s [really-safe-money] + if False
  6119. 42.73 s [really-safe-money] then Nothing
  6120. 42.73 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  6121. 42.73 s [really-safe-money] else Nothing
  6122. 42.73 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:399:18-83
  6123. 42.73 s [really-safe-money] @@ -396,7 +396,7 @@
  6124. 42.73 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  6125. 42.73 s [really-safe-money] in if ceiled == floored
  6126. 42.73 s [really-safe-money] then
  6127. 42.73 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6128. 42.73 s [really-safe-money] + if not (ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64))
  6129. 42.73 s [really-safe-money] then Nothing
  6130. 42.74 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  6131. 42.74 s [really-safe-money] else Nothing
  6132. 42.74 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:399:15-57
  6133. 42.74 s [really-safe-money] @@ -396,9 +396,9 @@
  6134. 42.74 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  6135. 42.74 s [really-safe-money] in if ceiled == floored
  6136. 42.74 s [really-safe-money] then
  6137. 42.74 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6138. 42.74 s [really-safe-money] - then Nothing
  6139. 42.74 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  6140. 42.74 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6141. 42.74 s [really-safe-money] + then Nothing
  6142. 42.74 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  6143. 42.74 s [really-safe-money] else Nothing
  6144. 42.74 s [really-safe-money]
  6145. 42.74 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  6146. 42.74 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:397:11-25
  6147. 42.74 s [really-safe-money] @@ -394,12 +394,12 @@
  6148. 42.74 s [really-safe-money] ceiled = (ceiling :: Rational -> Natural) resultRational
  6149. 42.74 s [really-safe-money] floored :: Natural
  6150. 42.74 s [really-safe-money] floored = (floor :: Rational -> Natural) resultRational
  6151. 42.74 s [really-safe-money] - in if ceiled == floored
  6152. 42.74 s [really-safe-money] - then
  6153. 42.74 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6154. 42.74 s [really-safe-money] - then Nothing
  6155. 42.74 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  6156. 42.74 s [really-safe-money] - else Nothing
  6157. 42.74 s [really-safe-money] + in if ceiled == floored
  6158. 42.74 s [really-safe-money] + then
  6159. 42.74 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6160. 42.74 s [really-safe-money] + then Nothing
  6161. 42.74 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  6162. 42.74 s [really-safe-money] + else Nothing
  6163. 42.74 s [really-safe-money]
  6164. 42.74 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  6165. 42.74 s [really-safe-money] --
  6166. 42.74 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:320:9-10
  6167. 42.74 s [really-safe-money] @@ -317,7 +317,7 @@
  6168. 42.74 s [really-safe-money] Double ->
  6169. 42.74 s [really-safe-money] Maybe Amount
  6170. 42.74 s [really-safe-money] fromDouble (QuantisationFactor qf) d
  6171. 42.74 s [really-safe-money] - | d < 0 = Nothing
  6172. 42.74 s [really-safe-money] + | d < 1 = Nothing
  6173. 42.74 s [really-safe-money] | otherwise =
  6174. 42.74 s [really-safe-money] let resultDouble :: Double
  6175. 42.74 s [really-safe-money] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  6176. 42.74 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:320:5-10
  6177. 42.74 s [really-safe-money] @@ -317,7 +317,7 @@
  6178. 42.74 s [really-safe-money] Double ->
  6179. 42.74 s [really-safe-money] Maybe Amount
  6180. 42.74 s [really-safe-money] fromDouble (QuantisationFactor qf) d
  6181. 42.74 s [really-safe-money] - | d < 0 = Nothing
  6182. 42.74 s [really-safe-money] + | True = Nothing
  6183. 42.74 s [really-safe-money] | otherwise =
  6184. 42.74 s [really-safe-money] let resultDouble :: Double
  6185. 42.74 s [really-safe-money] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  6186. 42.74 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:320:5-10
  6187. 42.74 s [really-safe-money] @@ -317,7 +317,7 @@
  6188. 42.74 s [really-safe-money] Double ->
  6189. 42.74 s [really-safe-money] Maybe Amount
  6190. 42.74 s [really-safe-money] fromDouble (QuantisationFactor qf) d
  6191. 42.74 s [really-safe-money] - | d < 0 = Nothing
  6192. 42.74 s [really-safe-money] + | not (d < 0) = Nothing
  6193. 42.74 s [really-safe-money] | otherwise =
  6194. 42.74 s [really-safe-money] let resultDouble :: Double
  6195. 42.74 s [really-safe-money] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  6196. 42.74 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:327:9-16
  6197. 42.74 s [really-safe-money] @@ -324,7 +324,7 @@
  6198. 42.74 s [really-safe-money] in go resultDouble
  6199. 42.74 s [really-safe-money] where
  6200. 42.74 s [really-safe-money] go resultDouble
  6201. 42.74 s [really-safe-money] - | isNaN d = Nothing
  6202. 42.74 s [really-safe-money] + | True = Nothing
  6203. 42.74 s [really-safe-money] | isInfinite d = Nothing
  6204. 42.74 s [really-safe-money] | otherwise =
  6205. 42.74 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6206. 42.74 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:327:9-16
  6207. 42.74 s [really-safe-money] @@ -324,7 +324,7 @@
  6208. 42.74 s [really-safe-money] in go resultDouble
  6209. 42.74 s [really-safe-money] where
  6210. 42.74 s [really-safe-money] go resultDouble
  6211. 42.74 s [really-safe-money] - | isNaN d = Nothing
  6212. 42.74 s [really-safe-money] + | not (isNaN d) = Nothing
  6213. 42.74 s [really-safe-money] | isInfinite d = Nothing
  6214. 42.74 s [really-safe-money] | otherwise =
  6215. 42.74 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6216. 42.74 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:328:9-21
  6217. 42.74 s [really-safe-money] @@ -325,7 +325,7 @@
  6218. 42.74 s [really-safe-money] where
  6219. 42.74 s [really-safe-money] go resultDouble
  6220. 42.74 s [really-safe-money] | isNaN d = Nothing
  6221. 42.74 s [really-safe-money] - | isInfinite d = Nothing
  6222. 42.74 s [really-safe-money] + | True = Nothing
  6223. 42.74 s [really-safe-money] | otherwise =
  6224. 42.74 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6225. 42.74 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  6226. 42.74 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:328:9-21
  6227. 42.74 s [really-safe-money] @@ -325,7 +325,7 @@
  6228. 42.74 s [really-safe-money] where
  6229. 42.74 s [really-safe-money] go resultDouble
  6230. 42.74 s [really-safe-money] | isNaN d = Nothing
  6231. 42.74 s [really-safe-money] - | isInfinite d = Nothing
  6232. 42.74 s [really-safe-money] + | not (isInfinite d) = Nothing
  6233. 42.74 s [really-safe-money] | otherwise =
  6234. 42.74 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6235. 42.74 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  6236. 42.74 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:332:38-40
  6237. 42.74 s [really-safe-money] @@ -329,7 +329,7 @@
  6238. 42.74 s [really-safe-money] | otherwise =
  6239. 42.74 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6240. 42.74 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  6241. 42.74 s [really-safe-money] - if exponent resultDouble > 65
  6242. 42.74 s [really-safe-money] + if exponent resultDouble > 0
  6243. 42.74 s [really-safe-money] then Nothing
  6244. 42.74 s [really-safe-money] else
  6245. 42.74 s [really-safe-money] let ceiled :: Natural
  6246. 42.74 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:332:38-40
  6247. 42.74 s [really-safe-money] @@ -329,7 +329,7 @@
  6248. 42.74 s [really-safe-money] | otherwise =
  6249. 42.74 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6250. 42.74 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  6251. 42.74 s [really-safe-money] - if exponent resultDouble > 65
  6252. 42.74 s [really-safe-money] + if exponent resultDouble > 1
  6253. 42.74 s [really-safe-money] then Nothing
  6254. 42.74 s [really-safe-money] else
  6255. 42.74 s [really-safe-money] let ceiled :: Natural
  6256. 42.74 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:332:38-40
  6257. 42.74 s [really-safe-money] @@ -329,7 +329,7 @@
  6258. 42.74 s [really-safe-money] | otherwise =
  6259. 42.74 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6260. 42.74 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  6261. 42.74 s [really-safe-money] - if exponent resultDouble > 65
  6262. 42.74 s [really-safe-money] + if exponent resultDouble > -65
  6263. 42.74 s [really-safe-money] then Nothing
  6264. 42.74 s [really-safe-money] else
  6265. 42.74 s [really-safe-money] let ceiled :: Natural
  6266. 42.74 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:332:14-40
  6267. 42.74 s [really-safe-money] @@ -329,7 +329,7 @@
  6268. 42.74 s [really-safe-money] | otherwise =
  6269. 42.74 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6270. 42.74 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  6271. 42.74 s [really-safe-money] - if exponent resultDouble > 65
  6272. 42.74 s [really-safe-money] + if True
  6273. 42.74 s [really-safe-money] then Nothing
  6274. 42.74 s [really-safe-money] else
  6275. 42.74 s [really-safe-money] let ceiled :: Natural
  6276. 42.74 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:332:14-40
  6277. 42.74 s [really-safe-money] @@ -329,7 +329,7 @@
  6278. 42.74 s [really-safe-money] | otherwise =
  6279. 42.74 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6280. 42.74 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  6281. 42.74 s [really-safe-money] - if exponent resultDouble > 65
  6282. 42.74 s [really-safe-money] + if False
  6283. 42.74 s [really-safe-money] then Nothing
  6284. 42.74 s [really-safe-money] else
  6285. 42.74 s [really-safe-money] let ceiled :: Natural
  6286. 42.74 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:332:14-40
  6287. 42.74 s [really-safe-money] @@ -329,7 +329,7 @@
  6288. 42.74 s [really-safe-money] | otherwise =
  6289. 42.74 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6290. 42.74 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  6291. 42.74 s [really-safe-money] - if exponent resultDouble > 65
  6292. 42.74 s [really-safe-money] + if not (exponent resultDouble > 65)
  6293. 42.74 s [really-safe-money] then Nothing
  6294. 42.74 s [really-safe-money] else
  6295. 42.74 s [really-safe-money] let ceiled :: Natural
  6296. 42.74 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:339:22-39
  6297. 42.74 s [really-safe-money] @@ -336,7 +336,7 @@
  6298. 42.74 s [really-safe-money] ceiled = (ceiling :: Double -> Natural) resultDouble
  6299. 42.74 s [really-safe-money] floored :: Natural
  6300. 42.74 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  6301. 42.74 s [really-safe-money] - in if ceiled == floored
  6302. 42.74 s [really-safe-money] + in if True
  6303. 42.74 s [really-safe-money] then
  6304. 42.74 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6305. 42.74 s [really-safe-money] then Nothing
  6306. 42.74 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:339:22-39
  6307. 42.74 s [really-safe-money] @@ -336,7 +336,7 @@
  6308. 42.74 s [really-safe-money] ceiled = (ceiling :: Double -> Natural) resultDouble
  6309. 42.74 s [really-safe-money] floored :: Natural
  6310. 42.74 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  6311. 42.74 s [really-safe-money] - in if ceiled == floored
  6312. 42.74 s [really-safe-money] + in if False
  6313. 42.74 s [really-safe-money] then
  6314. 42.74 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6315. 42.74 s [really-safe-money] then Nothing
  6316. 42.74 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:339:22-39
  6317. 42.74 s [really-safe-money] @@ -336,7 +336,7 @@
  6318. 42.74 s [really-safe-money] ceiled = (ceiling :: Double -> Natural) resultDouble
  6319. 42.74 s [really-safe-money] floored :: Natural
  6320. 42.74 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  6321. 42.74 s [really-safe-money] - in if ceiled == floored
  6322. 42.74 s [really-safe-money] + in if not (ceiled == floored)
  6323. 42.74 s [really-safe-money] then
  6324. 42.74 s [really-safe-money] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6325. 42.74 s [really-safe-money] then Nothing
  6326. 42.74 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:341:26-91
  6327. 42.74 s [really-safe-money] @@ -338,7 +338,7 @@
  6328. 42.74 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  6329. 42.74 s [really-safe-money] in if ceiled == floored
  6330. 42.74 s [really-safe-money] then
  6331. 42.74 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6332. 42.74 s [really-safe-money] + if True
  6333. 42.74 s [really-safe-money] then Nothing
  6334. 42.74 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  6335. 42.74 s [really-safe-money] else Nothing
  6336. 42.74 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:341:26-91
  6337. 42.74 s [really-safe-money] @@ -338,7 +338,7 @@
  6338. 42.74 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  6339. 42.74 s [really-safe-money] in if ceiled == floored
  6340. 42.74 s [really-safe-money] then
  6341. 42.74 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6342. 42.74 s [really-safe-money] + if False
  6343. 42.74 s [really-safe-money] then Nothing
  6344. 42.75 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  6345. 42.75 s [really-safe-money] else Nothing
  6346. 42.75 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:341:26-91
  6347. 42.75 s [really-safe-money] @@ -338,7 +338,7 @@
  6348. 42.75 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  6349. 42.75 s [really-safe-money] in if ceiled == floored
  6350. 42.75 s [really-safe-money] then
  6351. 42.75 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6352. 42.75 s [really-safe-money] + if not (ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64))
  6353. 42.75 s [really-safe-money] then Nothing
  6354. 42.75 s [really-safe-money] else Just $ Amount (fromIntegral ceiled)
  6355. 42.75 s [really-safe-money] else Nothing
  6356. 42.75 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:341:23-65
  6357. 42.75 s [really-safe-money] @@ -338,9 +338,9 @@
  6358. 42.75 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  6359. 42.75 s [really-safe-money] in if ceiled == floored
  6360. 42.75 s [really-safe-money] then
  6361. 42.75 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6362. 42.75 s [really-safe-money] - then Nothing
  6363. 42.75 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  6364. 42.75 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6365. 42.75 s [really-safe-money] + then Nothing
  6366. 42.75 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  6367. 42.75 s [really-safe-money] else Nothing
  6368. 42.75 s [really-safe-money]
  6369. 42.75 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  6370. 42.75 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:339:19-33
  6371. 42.75 s [really-safe-money] @@ -336,12 +336,12 @@
  6372. 42.75 s [really-safe-money] ceiled = (ceiling :: Double -> Natural) resultDouble
  6373. 42.75 s [really-safe-money] floored :: Natural
  6374. 42.75 s [really-safe-money] floored = (floor :: Double -> Natural) resultDouble
  6375. 42.75 s [really-safe-money] - in if ceiled == floored
  6376. 42.75 s [really-safe-money] - then
  6377. 42.75 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6378. 42.75 s [really-safe-money] - then Nothing
  6379. 42.75 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  6380. 42.75 s [really-safe-money] - else Nothing
  6381. 42.75 s [really-safe-money] + in if ceiled == floored
  6382. 42.75 s [really-safe-money] + then
  6383. 42.75 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6384. 42.75 s [really-safe-money] + then Nothing
  6385. 42.75 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  6386. 42.75 s [really-safe-money] + else Nothing
  6387. 42.75 s [really-safe-money]
  6388. 42.75 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  6389. 42.75 s [really-safe-money] --
  6390. 42.75 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:332:11-33
  6391. 42.75 s [really-safe-money] @@ -329,19 +329,19 @@
  6392. 42.75 s [really-safe-money] | otherwise =
  6393. 42.75 s [really-safe-money] -- Shortcut for numbers that are way too big anyway
  6394. 42.75 s [really-safe-money] -- so that we don't have to compute the according 'Natural' values.
  6395. 42.75 s [really-safe-money] - if exponent resultDouble > 65
  6396. 42.75 s [really-safe-money] - then Nothing
  6397. 42.75 s [really-safe-money] - else
  6398. 42.75 s [really-safe-money] - let ceiled :: Natural
  6399. 42.75 s [really-safe-money] - ceiled = (ceiling :: Double -> Natural) resultDouble
  6400. 42.75 s [really-safe-money] - floored :: Natural
  6401. 42.75 s [really-safe-money] - floored = (floor :: Double -> Natural) resultDouble
  6402. 42.75 s [really-safe-money] - in if ceiled == floored
  6403. 42.75 s [really-safe-money] - then
  6404. 42.75 s [really-safe-money] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6405. 42.75 s [really-safe-money] - then Nothing
  6406. 42.75 s [really-safe-money] - else Just $ Amount (fromIntegral ceiled)
  6407. 42.75 s [really-safe-money] - else Nothing
  6408. 42.75 s [really-safe-money] + if exponent resultDouble > 65
  6409. 42.75 s [really-safe-money] + then Nothing
  6410. 42.75 s [really-safe-money] + else
  6411. 42.75 s [really-safe-money] + let ceiled :: Natural
  6412. 42.75 s [really-safe-money] + ceiled = (ceiling :: Double -> Natural) resultDouble
  6413. 42.75 s [really-safe-money] + floored :: Natural
  6414. 42.75 s [really-safe-money] + floored = (floor :: Double -> Natural) resultDouble
  6415. 42.75 s [really-safe-money] + in if ceiled == floored
  6416. 42.75 s [really-safe-money] + then
  6417. 42.75 s [really-safe-money] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  6418. 42.75 s [really-safe-money] + then Nothing
  6419. 42.75 s [really-safe-money] + else Just $ Amount (fromIntegral ceiled)
  6420. 42.75 s [really-safe-money] + else Nothing
  6421. 42.75 s [really-safe-money]
  6422. 42.75 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  6423. 42.75 s [really-safe-money] --
  6424. 42.75 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:290:79-80
  6425. 42.75 s [really-safe-money] @@ -287,7 +287,7 @@
  6426. 42.75 s [really-safe-money] -- >>> toRatio (QuantisationFactor 100) (Amount 1)
  6427. 42.75 s [really-safe-money] -- 1 % 100
  6428. 42.75 s [really-safe-money] toRatio :: QuantisationFactor -> Amount -> Ratio Natural
  6429. 42.75 s [really-safe-money] -toRatio (QuantisationFactor 0) a = fromIntegral (toMinimalQuantisations a) :% 0
  6430. 42.75 s [really-safe-money] +toRatio (QuantisationFactor 0) a = fromIntegral (toMinimalQuantisations a) :% 1
  6431. 42.75 s [really-safe-money] toRatio (QuantisationFactor quantisationFactor) a =
  6432. 42.75 s [really-safe-money] (fromIntegral :: Word64 -> Natural) (toMinimalQuantisations a)
  6433. 42.75 s [really-safe-money] % (fromIntegral :: Word32 -> Natural) quantisationFactor
  6434. 42.75 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:494:96-97
  6435. 42.75 s [really-safe-money] @@ -491,7 +491,7 @@
  6436. 42.75 s [really-safe-money] let maxBoundI :: Integer
  6437. 42.75 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  6438. 42.75 s [really-safe-money] r :: Integer
  6439. 42.75 s [really-safe-money] - r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  6440. 42.75 s [really-safe-money] + r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 1 l
  6441. 42.75 s [really-safe-money] in if r > maxBoundI
  6442. 42.75 s [really-safe-money] then Nothing
  6443. 42.75 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  6444. 42.75 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:495:10-23
  6445. 42.75 s [really-safe-money] @@ -492,7 +492,7 @@
  6446. 42.75 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  6447. 42.75 s [really-safe-money] r :: Integer
  6448. 42.75 s [really-safe-money] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  6449. 42.75 s [really-safe-money] - in if r > maxBoundI
  6450. 42.75 s [really-safe-money] + in if True
  6451. 42.75 s [really-safe-money] then Nothing
  6452. 42.75 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  6453. 42.75 s [really-safe-money]
  6454. 42.75 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:495:10-23
  6455. 42.75 s [really-safe-money] @@ -492,7 +492,7 @@
  6456. 42.75 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  6457. 42.75 s [really-safe-money] r :: Integer
  6458. 42.75 s [really-safe-money] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  6459. 42.75 s [really-safe-money] - in if r > maxBoundI
  6460. 42.75 s [really-safe-money] + in if False
  6461. 42.75 s [really-safe-money] then Nothing
  6462. 42.75 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  6463. 42.75 s [really-safe-money]
  6464. 42.75 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:495:10-23
  6465. 42.75 s [really-safe-money] @@ -492,7 +492,7 @@
  6466. 42.75 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  6467. 42.75 s [really-safe-money] r :: Integer
  6468. 42.75 s [really-safe-money] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  6469. 42.75 s [really-safe-money] - in if r > maxBoundI
  6470. 42.75 s [really-safe-money] + in if not (r > maxBoundI)
  6471. 42.75 s [really-safe-money] then Nothing
  6472. 42.75 s [really-safe-money] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  6473. 42.75 s [really-safe-money]
  6474. 42.75 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:495:7-66
  6475. 42.75 s [really-safe-money] @@ -492,9 +492,9 @@
  6476. 42.75 s [really-safe-money] maxBoundI = fromIntegral (maxBound :: Word64)
  6477. 42.75 s [really-safe-money] r :: Integer
  6478. 42.75 s [really-safe-money] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  6479. 42.75 s [really-safe-money] - in if r > maxBoundI
  6480. 42.75 s [really-safe-money] - then Nothing
  6481. 42.75 s [really-safe-money] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  6482. 42.75 s [really-safe-money] + in if r > maxBoundI
  6483. 42.75 s [really-safe-money] + then Nothing
  6484. 42.75 s [really-safe-money] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  6485. 42.75 s [really-safe-money]
  6486. 42.75 s [really-safe-money] -- | Add two amounts of money.
  6487. 42.75 s [really-safe-money] --
  6488. 42.75 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:250:15-16
  6489. 42.75 s [really-safe-money] @@ -247,7 +247,7 @@
  6490. 42.75 s [really-safe-money] -- >>> zero
  6491. 42.75 s [really-safe-money] -- Amount 0
  6492. 42.75 s [really-safe-money] zero :: Amount
  6493. 42.75 s [really-safe-money] -zero = Amount 0
  6494. 42.75 s [really-safe-money] +zero = Amount 1
  6495. 42.75 s [really-safe-money]
  6496. 42.75 s [really-safe-money] -- | Turn an amount into a number of minimal quantisations.
  6497. 42.75 s [really-safe-money] --
  6498. 42.75 s [really-safe-money] added mutation IntLit at src/Money/Amount.hs:661:30-31
  6499. 42.75 s [really-safe-money] @@ -658,7 +658,7 @@
  6500. 42.75 s [really-safe-money] -- | The amount and the real rate that was used, considering the 'Rounding'
  6501. 42.75 s [really-safe-money] (Maybe Amount, Ratio Natural)
  6502. 42.75 s [really-safe-money] fraction _ (Amount 0) f = (Just zero, f)
  6503. 42.75 s [really-safe-money] -fraction _ _ 0 = (Just zero, 0)
  6504. 42.75 s [really-safe-money] +fraction _ _ 0 = (Just zero, 1)
  6505. 42.75 s [really-safe-money] fraction r (Amount a) f =
  6506. 42.75 s [really-safe-money] let amountAsRatio :: Ratio Natural
  6507. 42.75 s [really-safe-money] amountAsRatio = (fromIntegral :: Word64 -> Ratio Natural) a
  6508. 42.75 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:668:17-30
  6509. 42.75 s [really-safe-money] @@ -665,10 +665,10 @@
  6510. 42.75 s [really-safe-money] theoreticalResult :: Ratio Natural
  6511. 42.75 s [really-safe-money] theoreticalResult = amountAsRatio * f
  6512. 42.75 s [really-safe-money] rounder :: Ratio Natural -> Natural
  6513. 42.75 s [really-safe-money] - rounder = case r of
  6514. 42.75 s [really-safe-money] - RoundUp -> ceiling
  6515. 42.75 s [really-safe-money] - RoundDown -> floor
  6516. 42.75 s [really-safe-money] - RoundNearest -> round
  6517. 42.75 s [really-safe-money] + rounder = case r of
  6518. 42.75 s [really-safe-money] + RoundUp -> ceiling
  6519. 42.75 s [really-safe-money] + RoundDown -> floor
  6520. 42.75 s [really-safe-money] + RoundNearest -> round
  6521. 42.75 s [really-safe-money] roundedResult :: Natural
  6522. 42.75 s [really-safe-money] roundedResult = rounder theoreticalResult
  6523. 42.75 s [really-safe-money] actualRate :: Ratio Natural
  6524. 42.75 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:668:17-30
  6525. 42.75 s [really-safe-money] @@ -665,10 +665,10 @@
  6526. 42.75 s [really-safe-money] theoreticalResult :: Ratio Natural
  6527. 42.75 s [really-safe-money] theoreticalResult = amountAsRatio * f
  6528. 42.75 s [really-safe-money] rounder :: Ratio Natural -> Natural
  6529. 42.75 s [really-safe-money] - rounder = case r of
  6530. 42.75 s [really-safe-money] - RoundUp -> ceiling
  6531. 42.75 s [really-safe-money] - RoundDown -> floor
  6532. 42.75 s [really-safe-money] - RoundNearest -> round
  6533. 42.75 s [really-safe-money] + rounder = case r of
  6534. 42.75 s [really-safe-money] + RoundUp -> ceiling
  6535. 42.75 s [really-safe-money] + RoundDown -> floor
  6536. 42.75 s [really-safe-money] + RoundNearest -> round
  6537. 42.75 s [really-safe-money] roundedResult :: Natural
  6538. 42.75 s [really-safe-money] roundedResult = rounder theoreticalResult
  6539. 42.75 s [really-safe-money] actualRate :: Ratio Natural
  6540. 42.75 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:668:17-30
  6541. 42.75 s [really-safe-money] @@ -665,10 +665,10 @@
  6542. 42.75 s [really-safe-money] theoreticalResult :: Ratio Natural
  6543. 42.75 s [really-safe-money] theoreticalResult = amountAsRatio * f
  6544. 42.75 s [really-safe-money] rounder :: Ratio Natural -> Natural
  6545. 42.75 s [really-safe-money] - rounder = case r of
  6546. 42.75 s [really-safe-money] - RoundUp -> ceiling
  6547. 42.75 s [really-safe-money] - RoundDown -> floor
  6548. 42.75 s [really-safe-money] - RoundNearest -> round
  6549. 42.75 s [really-safe-money] + rounder = case r of
  6550. 42.75 s [really-safe-money] + RoundUp -> ceiling
  6551. 42.75 s [really-safe-money] + RoundDown -> floor
  6552. 42.75 s [really-safe-money] + RoundNearest -> round
  6553. 42.75 s [really-safe-money] roundedResult :: Natural
  6554. 42.75 s [really-safe-money] roundedResult = rounder theoreticalResult
  6555. 42.75 s [really-safe-money] actualRate :: Ratio Natural
  6556. 42.75 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:681:12-37
  6557. 42.75 s [really-safe-money] @@ -678,7 +678,7 @@
  6558. 42.75 s [really-safe-money] maxBoundN :: Natural
  6559. 42.75 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  6560. 42.75 s [really-safe-money] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  6561. 42.75 s [really-safe-money] - in ( if roundedResult > maxBoundN
  6562. 42.75 s [really-safe-money] + in ( if True
  6563. 42.75 s [really-safe-money] then Nothing
  6564. 42.75 s [really-safe-money] else Just result,
  6565. 42.75 s [really-safe-money] actualRate
  6566. 42.75 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:681:12-37
  6567. 42.75 s [really-safe-money] @@ -678,7 +678,7 @@
  6568. 42.76 s [really-safe-money] maxBoundN :: Natural
  6569. 42.76 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  6570. 42.76 s [really-safe-money] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  6571. 42.76 s [really-safe-money] - in ( if roundedResult > maxBoundN
  6572. 42.76 s [really-safe-money] + in ( if False
  6573. 42.76 s [really-safe-money] then Nothing
  6574. 42.76 s [really-safe-money] else Just result,
  6575. 42.76 s [really-safe-money] actualRate
  6576. 42.76 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:681:12-37
  6577. 42.76 s [really-safe-money] @@ -678,7 +678,7 @@
  6578. 42.76 s [really-safe-money] maxBoundN :: Natural
  6579. 42.76 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  6580. 42.76 s [really-safe-money] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  6581. 42.76 s [really-safe-money] - in ( if roundedResult > maxBoundN
  6582. 42.76 s [really-safe-money] + in ( if not (roundedResult > maxBoundN)
  6583. 42.76 s [really-safe-money] then Nothing
  6584. 42.76 s [really-safe-money] else Just result,
  6585. 42.76 s [really-safe-money] actualRate
  6586. 42.76 s [really-safe-money] added mutation CondFlip at src/Money/Amount.hs:681:9-27
  6587. 42.76 s [really-safe-money] @@ -678,9 +678,9 @@
  6588. 42.76 s [really-safe-money] maxBoundN :: Natural
  6589. 42.76 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  6590. 42.76 s [really-safe-money] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  6591. 42.76 s [really-safe-money] - in ( if roundedResult > maxBoundN
  6592. 42.76 s [really-safe-money] - then Nothing
  6593. 42.76 s [really-safe-money] - else Just result,
  6594. 42.76 s [really-safe-money] + in ( if roundedResult > maxBoundN
  6595. 42.76 s [really-safe-money] + then Nothing
  6596. 42.76 s [really-safe-money] + else Just result,
  6597. 42.76 s [really-safe-money] actualRate
  6598. 42.76 s [really-safe-money] )
  6599. 42.76 s [really-safe-money]
  6600. 42.76 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:806:79-92
  6601. 42.76 s [really-safe-money] @@ -803,4 +803,4 @@
  6602. 42.76 s [really-safe-money]
  6603. 42.76 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  6604. 42.76 s [really-safe-money] validateStrictlyPositive :: Amount -> Validation
  6605. 42.76 s [really-safe-money] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  6606. 42.76 s [really-safe-money] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ True
  6607. 42.76 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:806:79-92
  6608. 42.76 s [really-safe-money] @@ -803,4 +803,4 @@
  6609. 42.76 s [really-safe-money]
  6610. 42.76 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  6611. 42.76 s [really-safe-money] validateStrictlyPositive :: Amount -> Validation
  6612. 42.76 s [really-safe-money] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  6613. 42.76 s [really-safe-money] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ False
  6614. 42.76 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:806:79-92
  6615. 42.76 s [really-safe-money] @@ -803,4 +803,4 @@
  6616. 42.76 s [really-safe-money]
  6617. 42.76 s [really-safe-money] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  6618. 42.76 s [really-safe-money] validateStrictlyPositive :: Amount -> Validation
  6619. 42.76 s [really-safe-money] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  6620. 42.76 s [really-safe-money] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ not (amount > zero)
  6621. 42.76 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:607:15-22
  6622. 42.76 s [really-safe-money] @@ -604,7 +604,7 @@
  6623. 42.76 s [really-safe-money] case ad of
  6624. 42.76 s [really-safe-money] DistributedIntoUnequalChunks _ a1 _ a2 ->
  6625. 42.76 s [really-safe-money] declare "The larger chunks are larger" $
  6626. 42.76 s [really-safe-money] - a1 > a2
  6627. 42.76 s [really-safe-money] + True
  6628. 42.76 s [really-safe-money] _ -> valid
  6629. 42.76 s [really-safe-money] ]
  6630. 42.76 s [really-safe-money]
  6631. 42.76 s [really-safe-money] added mutation ConstBool at src/Money/Amount.hs:607:15-22
  6632. 42.76 s [really-safe-money] @@ -604,7 +604,7 @@
  6633. 42.76 s [really-safe-money] case ad of
  6634. 42.76 s [really-safe-money] DistributedIntoUnequalChunks _ a1 _ a2 ->
  6635. 42.76 s [really-safe-money] declare "The larger chunks are larger" $
  6636. 42.76 s [really-safe-money] - a1 > a2
  6637. 42.76 s [really-safe-money] + False
  6638. 42.76 s [really-safe-money] _ -> valid
  6639. 42.76 s [really-safe-money] ]
  6640. 42.76 s [really-safe-money]
  6641. 42.76 s [really-safe-money] added mutation Negate at src/Money/Amount.hs:607:15-22
  6642. 42.76 s [really-safe-money] @@ -604,7 +604,7 @@
  6643. 42.76 s [really-safe-money] case ad of
  6644. 42.76 s [really-safe-money] DistributedIntoUnequalChunks _ a1 _ a2 ->
  6645. 42.76 s [really-safe-money] declare "The larger chunks are larger" $
  6646. 42.76 s [really-safe-money] - a1 > a2
  6647. 42.76 s [really-safe-money] + not (a1 > a2)
  6648. 42.76 s [really-safe-money] _ -> valid
  6649. 42.76 s [really-safe-money] ]
  6650. 42.76 s [really-safe-money]
  6651. 42.76 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:604:9-21
  6652. 42.76 s [really-safe-money] @@ -601,11 +601,11 @@
  6653. 42.76 s [really-safe-money] validate ad =
  6654. 42.76 s [really-safe-money] mconcat
  6655. 42.76 s [really-safe-money] [ genericValidate ad,
  6656. 42.76 s [really-safe-money] - case ad of
  6657. 42.76 s [really-safe-money] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  6658. 42.76 s [really-safe-money] - declare "The larger chunks are larger" $
  6659. 42.76 s [really-safe-money] - a1 > a2
  6660. 42.76 s [really-safe-money] - _ -> valid
  6661. 42.76 s [really-safe-money] + case ad of
  6662. 42.76 s [really-safe-money] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  6663. 42.76 s [really-safe-money] + declare "The larger chunks are larger" $
  6664. 42.76 s [really-safe-money] + a1 > a2
  6665. 42.76 s [really-safe-money] + _ -> valid
  6666. 42.76 s [really-safe-money] ]
  6667. 42.76 s [really-safe-money]
  6668. 42.76 s [really-safe-money] instance (NFData amount) => NFData (Distribution amount)
  6669. 42.76 s [really-safe-money] added mutation RemoveCase at src/Money/Amount.hs:604:9-21
  6670. 42.76 s [really-safe-money] @@ -601,11 +601,11 @@
  6671. 42.76 s [really-safe-money] validate ad =
  6672. 42.76 s [really-safe-money] mconcat
  6673. 42.76 s [really-safe-money] [ genericValidate ad,
  6674. 42.76 s [really-safe-money] - case ad of
  6675. 42.76 s [really-safe-money] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  6676. 42.76 s [really-safe-money] - declare "The larger chunks are larger" $
  6677. 42.76 s [really-safe-money] - a1 > a2
  6678. 42.76 s [really-safe-money] - _ -> valid
  6679. 42.76 s [really-safe-money] + case ad of
  6680. 42.76 s [really-safe-money] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  6681. 42.76 s [really-safe-money] + declare "The larger chunks are larger" $
  6682. 42.76 s [really-safe-money] + a1 > a2
  6683. 42.76 s [really-safe-money] + _ -> valid
  6684. 42.76 s [really-safe-money] ]
  6685. 42.76 s [really-safe-money]
  6686. 42.76 s [really-safe-money] instance (NFData amount) => NFData (Distribution amount)
  6687. 42.76 s [really-safe-money] added mutation ListLit at src/Money/Amount.hs:603:7-8
  6688. 42.76 s [really-safe-money] @@ -600,13 +600,7 @@
  6689. 42.76 s [really-safe-money] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  6690. 42.76 s [really-safe-money] validate ad =
  6691. 42.76 s [really-safe-money] mconcat
  6692. 42.76 s [really-safe-money] - [ genericValidate ad,
  6693. 42.76 s [really-safe-money] - case ad of
  6694. 42.76 s [really-safe-money] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  6695. 42.76 s [really-safe-money] - declare "The larger chunks are larger" $
  6696. 42.76 s [really-safe-money] - a1 > a2
  6697. 42.76 s [really-safe-money] - _ -> valid
  6698. 42.76 s [really-safe-money] - ]
  6699. 42.76 s [really-safe-money] + []
  6700. 42.76 s [really-safe-money]
  6701. 42.76 s [really-safe-money] instance (NFData amount) => NFData (Distribution amount)
  6702. 42.76 s [really-safe-money]
  6703. 42.76 s [really-safe-money] added mutation ListLit at src/Money/Amount.hs:603:7-8
  6704. 42.76 s [really-safe-money] @@ -600,13 +600,13 @@
  6705. 42.76 s [really-safe-money] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  6706. 42.76 s [really-safe-money] validate ad =
  6707. 42.76 s [really-safe-money] mconcat
  6708. 42.76 s [really-safe-money] - [ genericValidate ad,
  6709. 42.76 s [really-safe-money] - case ad of
  6710. 42.76 s [really-safe-money] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  6711. 42.76 s [really-safe-money] - declare "The larger chunks are larger" $
  6712. 42.76 s [really-safe-money] - a1 > a2
  6713. 42.76 s [really-safe-money] - _ -> valid
  6714. 42.76 s [really-safe-money] - ]
  6715. 42.76 s [really-safe-money] + [ genericValidate ad,
  6716. 42.76 s [really-safe-money] + case ad of
  6717. 42.76 s [really-safe-money] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  6718. 42.76 s [really-safe-money] + declare "The larger chunks are larger" $
  6719. 42.76 s [really-safe-money] + a1 > a2
  6720. 42.76 s [really-safe-money] + _ -> valid
  6721. 42.76 s [really-safe-money] + ]
  6722. 42.76 s [really-safe-money]
  6723. 42.76 s [really-safe-money] instance (NFData amount) => NFData (Distribution amount)
  6724. 42.76 s [really-safe-money]
  6725. 42.76 s [really-safe-money] added 81 mutations
  6726. 44.42 s [really-safe-money] [ 7 of 12] Compiling Money.MultiAmount ( src/Money/MultiAmount.hs, dist/build/Money/MultiAmount.p_o )
  6727. 44.44 s [really-safe-money] mutation: instrumenting Money.MultiAmount
  6728. 44.44 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
  6729. 44.44 s [really-safe-money] @@ -156,10 +156,10 @@
  6730. 44.44 s [really-safe-money] fmap
  6731. 44.44 s [really-safe-money] ( ( \theoreticalResult ->
  6732. 44.44 s [really-safe-money] let rounder :: Ratio Natural -> Natural
  6733. 44.44 s [really-safe-money] - rounder = case r of
  6734. 44.44 s [really-safe-money] - RoundUp -> ceiling
  6735. 44.44 s [really-safe-money] - RoundDown -> floor
  6736. 44.44 s [really-safe-money] - RoundNearest -> round
  6737. 44.44 s [really-safe-money] + rounder = case r of
  6738. 44.44 s [really-safe-money] + RoundUp -> ceiling
  6739. 44.44 s [really-safe-money] + RoundDown -> floor
  6740. 44.44 s [really-safe-money] + RoundNearest -> round
  6741. 44.44 s [really-safe-money] roundedResult :: Natural
  6742. 44.44 s [really-safe-money] roundedResult = rounder theoreticalResult
  6743. 44.44 s [really-safe-money] maxBoundN :: Natural
  6744. 44.44 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
  6745. 44.44 s [really-safe-money] @@ -156,10 +156,10 @@
  6746. 44.44 s [really-safe-money] fmap
  6747. 44.44 s [really-safe-money] ( ( \theoreticalResult ->
  6748. 44.44 s [really-safe-money] let rounder :: Ratio Natural -> Natural
  6749. 44.44 s [really-safe-money] - rounder = case r of
  6750. 44.44 s [really-safe-money] - RoundUp -> ceiling
  6751. 44.44 s [really-safe-money] - RoundDown -> floor
  6752. 44.44 s [really-safe-money] - RoundNearest -> round
  6753. 44.44 s [really-safe-money] + rounder = case r of
  6754. 44.44 s [really-safe-money] + RoundUp -> ceiling
  6755. 44.44 s [really-safe-money] + RoundDown -> floor
  6756. 44.44 s [really-safe-money] + RoundNearest -> round
  6757. 44.44 s [really-safe-money] roundedResult :: Natural
  6758. 44.44 s [really-safe-money] roundedResult = rounder theoreticalResult
  6759. 44.44 s [really-safe-money] maxBoundN :: Natural
  6760. 44.44 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
  6761. 44.44 s [really-safe-money] @@ -156,10 +156,10 @@
  6762. 44.44 s [really-safe-money] fmap
  6763. 44.44 s [really-safe-money] ( ( \theoreticalResult ->
  6764. 44.44 s [really-safe-money] let rounder :: Ratio Natural -> Natural
  6765. 44.44 s [really-safe-money] - rounder = case r of
  6766. 44.44 s [really-safe-money] - RoundUp -> ceiling
  6767. 44.44 s [really-safe-money] - RoundDown -> floor
  6768. 44.45 s [really-safe-money] - RoundNearest -> round
  6769. 44.45 s [really-safe-money] + rounder = case r of
  6770. 44.45 s [really-safe-money] + RoundUp -> ceiling
  6771. 44.45 s [really-safe-money] + RoundDown -> floor
  6772. 44.45 s [really-safe-money] + RoundNearest -> round
  6773. 44.45 s [really-safe-money] roundedResult :: Natural
  6774. 44.45 s [really-safe-money] roundedResult = rounder theoreticalResult
  6775. 44.45 s [really-safe-money] maxBoundN :: Natural
  6776. 44.45 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:168:20-45
  6777. 44.45 s [really-safe-money] @@ -165,7 +165,7 @@
  6778. 44.45 s [really-safe-money] maxBoundN :: Natural
  6779. 44.45 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  6780. 44.45 s [really-safe-money] actualResult =
  6781. 44.45 s [really-safe-money] - if roundedResult > maxBoundN
  6782. 44.45 s [really-safe-money] + if True
  6783. 44.45 s [really-safe-money] then Nothing
  6784. 44.45 s [really-safe-money] else Just (fromIntegral roundedResult)
  6785. 44.45 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6786. 44.45 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:168:20-45
  6787. 44.45 s [really-safe-money] @@ -165,7 +165,7 @@
  6788. 44.45 s [really-safe-money] maxBoundN :: Natural
  6789. 44.45 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  6790. 44.45 s [really-safe-money] actualResult =
  6791. 44.45 s [really-safe-money] - if roundedResult > maxBoundN
  6792. 44.45 s [really-safe-money] + if False
  6793. 44.45 s [really-safe-money] then Nothing
  6794. 44.45 s [really-safe-money] else Just (fromIntegral roundedResult)
  6795. 44.45 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6796. 44.45 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:168:20-45
  6797. 44.45 s [really-safe-money] @@ -165,7 +165,7 @@
  6798. 44.45 s [really-safe-money] maxBoundN :: Natural
  6799. 44.45 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  6800. 44.45 s [really-safe-money] actualResult =
  6801. 44.45 s [really-safe-money] - if roundedResult > maxBoundN
  6802. 44.45 s [really-safe-money] + if not (roundedResult > maxBoundN)
  6803. 44.45 s [really-safe-money] then Nothing
  6804. 44.45 s [really-safe-money] else Just (fromIntegral roundedResult)
  6805. 44.45 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6806. 44.45 s [really-safe-money] added mutation CondFlip at src/Money/MultiAmount.hs:168:17-57
  6807. 44.45 s [really-safe-money] @@ -165,9 +165,9 @@
  6808. 44.45 s [really-safe-money] maxBoundN :: Natural
  6809. 44.45 s [really-safe-money] maxBoundN = fromIntegral (maxBound :: Word64)
  6810. 44.45 s [really-safe-money] actualResult =
  6811. 44.45 s [really-safe-money] - if roundedResult > maxBoundN
  6812. 44.45 s [really-safe-money] - then Nothing
  6813. 44.45 s [really-safe-money] - else Just (fromIntegral roundedResult)
  6814. 44.45 s [really-safe-money] + if roundedResult > maxBoundN
  6815. 44.45 s [really-safe-money] + then Nothing
  6816. 44.45 s [really-safe-money] + else Just (fromIntegral roundedResult)
  6817. 44.45 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6818. 44.45 s [really-safe-money] LT -> RoundedDown
  6819. 44.45 s [really-safe-money] EQ -> DidNotRound
  6820. 44.45 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
  6821. 44.45 s [really-safe-money] @@ -168,10 +168,10 @@
  6822. 44.45 s [really-safe-money] if roundedResult > maxBoundN
  6823. 44.45 s [really-safe-money] then Nothing
  6824. 44.45 s [really-safe-money] else Just (fromIntegral roundedResult)
  6825. 44.45 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6826. 44.45 s [really-safe-money] - LT -> RoundedDown
  6827. 44.45 s [really-safe-money] - EQ -> DidNotRound
  6828. 44.45 s [really-safe-money] - GT -> RoundedUp
  6829. 44.45 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6830. 44.45 s [really-safe-money] + LT -> RoundedDown
  6831. 44.45 s [really-safe-money] + EQ -> DidNotRound
  6832. 44.45 s [really-safe-money] + GT -> RoundedUp
  6833. 44.45 s [really-safe-money] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
  6834. 44.45 s [really-safe-money] )
  6835. 44.45 s [really-safe-money] . Prelude.sum
  6836. 44.45 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
  6837. 44.45 s [really-safe-money] @@ -168,10 +168,10 @@
  6838. 44.45 s [really-safe-money] if roundedResult > maxBoundN
  6839. 44.45 s [really-safe-money] then Nothing
  6840. 44.45 s [really-safe-money] else Just (fromIntegral roundedResult)
  6841. 44.45 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6842. 44.45 s [really-safe-money] - LT -> RoundedDown
  6843. 44.45 s [really-safe-money] - EQ -> DidNotRound
  6844. 44.45 s [really-safe-money] - GT -> RoundedUp
  6845. 44.45 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6846. 44.45 s [really-safe-money] + LT -> RoundedDown
  6847. 44.45 s [really-safe-money] + EQ -> DidNotRound
  6848. 44.45 s [really-safe-money] + GT -> RoundedUp
  6849. 44.45 s [really-safe-money] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
  6850. 44.45 s [really-safe-money] )
  6851. 44.45 s [really-safe-money] . Prelude.sum
  6852. 44.45 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
  6853. 44.45 s [really-safe-money] @@ -168,10 +168,10 @@
  6854. 44.45 s [really-safe-money] if roundedResult > maxBoundN
  6855. 44.45 s [really-safe-money] then Nothing
  6856. 44.45 s [really-safe-money] else Just (fromIntegral roundedResult)
  6857. 44.45 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6858. 44.45 s [really-safe-money] - LT -> RoundedDown
  6859. 44.45 s [really-safe-money] - EQ -> DidNotRound
  6860. 44.45 s [really-safe-money] - GT -> RoundedUp
  6861. 44.45 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  6862. 44.45 s [really-safe-money] + LT -> RoundedDown
  6863. 44.45 s [really-safe-money] + EQ -> DidNotRound
  6864. 44.45 s [really-safe-money] + GT -> RoundedUp
  6865. 44.45 s [really-safe-money] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
  6866. 44.45 s [really-safe-money] )
  6867. 44.45 s [really-safe-money] . Prelude.sum
  6868. 44.45 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:119:12-28
  6869. 44.45 s [really-safe-money] @@ -116,7 +116,7 @@
  6870. 44.45 s [really-safe-money] Just a -> do
  6871. 44.45 s [really-safe-money] r <- Amount.subtract a amount
  6872. 44.45 s [really-safe-money] Just $
  6873. 44.45 s [really-safe-money] - if r == Amount.zero
  6874. 44.45 s [really-safe-money] + if True
  6875. 44.45 s [really-safe-money] then M.delete currency m
  6876. 44.45 s [really-safe-money] else M.insert currency r m
  6877. 44.45 s [really-safe-money]
  6878. 44.45 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:119:12-28
  6879. 44.45 s [really-safe-money] @@ -116,7 +116,7 @@
  6880. 44.45 s [really-safe-money] Just a -> do
  6881. 44.45 s [really-safe-money] r <- Amount.subtract a amount
  6882. 44.45 s [really-safe-money] Just $
  6883. 44.45 s [really-safe-money] - if r == Amount.zero
  6884. 44.45 s [really-safe-money] + if False
  6885. 44.45 s [really-safe-money] then M.delete currency m
  6886. 44.45 s [really-safe-money] else M.insert currency r m
  6887. 44.45 s [really-safe-money]
  6888. 44.45 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:119:12-28
  6889. 44.45 s [really-safe-money] @@ -116,7 +116,7 @@
  6890. 44.45 s [really-safe-money] Just a -> do
  6891. 44.45 s [really-safe-money] r <- Amount.subtract a amount
  6892. 44.45 s [really-safe-money] Just $
  6893. 44.45 s [really-safe-money] - if r == Amount.zero
  6894. 44.45 s [really-safe-money] + if not (r == Amount.zero)
  6895. 44.45 s [really-safe-money] then M.delete currency m
  6896. 44.45 s [really-safe-money] else M.insert currency r m
  6897. 44.45 s [really-safe-money]
  6898. 44.45 s [really-safe-money] added mutation CondFlip at src/Money/MultiAmount.hs:119:9-37
  6899. 44.45 s [really-safe-money] @@ -116,9 +116,9 @@
  6900. 44.45 s [really-safe-money] Just a -> do
  6901. 44.45 s [really-safe-money] r <- Amount.subtract a amount
  6902. 44.45 s [really-safe-money] Just $
  6903. 44.45 s [really-safe-money] - if r == Amount.zero
  6904. 44.45 s [really-safe-money] - then M.delete currency m
  6905. 44.45 s [really-safe-money] - else M.insert currency r m
  6906. 44.45 s [really-safe-money] + if r == Amount.zero
  6907. 44.45 s [really-safe-money] + then M.delete currency m
  6908. 44.45 s [really-safe-money] + else M.insert currency r m
  6909. 44.45 s [really-safe-money]
  6910. 44.45 s [really-safe-money] -- | Try to convert every amount to one currency.
  6911. 44.45 s [really-safe-money] --
  6912. 44.45 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:114:22-37
  6913. 44.45 s [really-safe-money] @@ -111,14 +111,14 @@
  6914. 44.45 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  6915. 44.45 s [really-safe-money] subtractAmount m _ (Amount 0) = Just m
  6916. 44.45 s [really-safe-money] subtractAmount (MultiAmount m) currency amount =
  6917. 44.45 s [really-safe-money] - fmap MultiAmount $ case M.lookup currency m of
  6918. 44.45 s [really-safe-money] - Nothing -> Nothing -- Can't go below zero
  6919. 44.45 s [really-safe-money] - Just a -> do
  6920. 44.45 s [really-safe-money] - r <- Amount.subtract a amount
  6921. 44.45 s [really-safe-money] - Just $
  6922. 44.45 s [really-safe-money] - if r == Amount.zero
  6923. 44.45 s [really-safe-money] - then M.delete currency m
  6924. 44.45 s [really-safe-money] - else M.insert currency r m
  6925. 44.45 s [really-safe-money] + fmap MultiAmount $ case M.lookup currency m of
  6926. 44.45 s [really-safe-money] + Nothing -> Nothing -- Can't go below zero
  6927. 44.45 s [really-safe-money] + Just a -> do
  6928. 44.45 s [really-safe-money] + r <- Amount.subtract a amount
  6929. 44.45 s [really-safe-money] + Just $
  6930. 44.45 s [really-safe-money] + if r == Amount.zero
  6931. 44.45 s [really-safe-money] + then M.delete currency m
  6932. 44.45 s [really-safe-money] + else M.insert currency r m
  6933. 44.45 s [really-safe-money]
  6934. 44.45 s [really-safe-money] -- | Try to convert every amount to one currency.
  6935. 44.45 s [really-safe-money] --
  6936. 44.45 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:114:22-37
  6937. 44.45 s [really-safe-money] @@ -111,14 +111,14 @@
  6938. 44.45 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  6939. 44.45 s [really-safe-money] subtractAmount m _ (Amount 0) = Just m
  6940. 44.45 s [really-safe-money] subtractAmount (MultiAmount m) currency amount =
  6941. 44.45 s [really-safe-money] - fmap MultiAmount $ case M.lookup currency m of
  6942. 44.45 s [really-safe-money] - Nothing -> Nothing -- Can't go below zero
  6943. 44.45 s [really-safe-money] - Just a -> do
  6944. 44.45 s [really-safe-money] - r <- Amount.subtract a amount
  6945. 44.45 s [really-safe-money] - Just $
  6946. 44.45 s [really-safe-money] - if r == Amount.zero
  6947. 44.45 s [really-safe-money] - then M.delete currency m
  6948. 44.45 s [really-safe-money] - else M.insert currency r m
  6949. 44.45 s [really-safe-money] + fmap MultiAmount $ case M.lookup currency m of
  6950. 44.45 s [really-safe-money] + Nothing -> Nothing -- Can't go below zero
  6951. 44.45 s [really-safe-money] + Just a -> do
  6952. 44.45 s [really-safe-money] + r <- Amount.subtract a amount
  6953. 44.45 s [really-safe-money] + Just $
  6954. 44.45 s [really-safe-money] + if r == Amount.zero
  6955. 44.45 s [really-safe-money] + then M.delete currency m
  6956. 44.45 s [really-safe-money] + else M.insert currency r m
  6957. 44.45 s [really-safe-money]
  6958. 44.45 s [really-safe-money] -- | Try to convert every amount to one currency.
  6959. 44.45 s [really-safe-money] --
  6960. 44.45 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:106:12-28
  6961. 44.45 s [really-safe-money] @@ -103,7 +103,7 @@
  6962. 44.45 s [really-safe-money] Just a -> do
  6963. 44.45 s [really-safe-money] r <- Amount.add a amount
  6964. 44.45 s [really-safe-money] Just $
  6965. 44.45 s [really-safe-money] - if r == Amount.zero
  6966. 44.45 s [really-safe-money] + if True
  6967. 44.45 s [really-safe-money] then M.delete currency m
  6968. 44.45 s [really-safe-money] else M.insert currency r m
  6969. 44.45 s [really-safe-money]
  6970. 44.45 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:106:12-28
  6971. 44.45 s [really-safe-money] @@ -103,7 +103,7 @@
  6972. 44.45 s [really-safe-money] Just a -> do
  6973. 44.45 s [really-safe-money] r <- Amount.add a amount
  6974. 44.45 s [really-safe-money] Just $
  6975. 44.45 s [really-safe-money] - if r == Amount.zero
  6976. 44.45 s [really-safe-money] + if False
  6977. 44.45 s [really-safe-money] then M.delete currency m
  6978. 44.45 s [really-safe-money] else M.insert currency r m
  6979. 44.45 s [really-safe-money]
  6980. 44.45 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:106:12-28
  6981. 44.45 s [really-safe-money] @@ -103,7 +103,7 @@
  6982. 44.45 s [really-safe-money] Just a -> do
  6983. 44.45 s [really-safe-money] r <- Amount.add a amount
  6984. 44.45 s [really-safe-money] Just $
  6985. 44.45 s [really-safe-money] - if r == Amount.zero
  6986. 44.45 s [really-safe-money] + if not (r == Amount.zero)
  6987. 44.45 s [really-safe-money] then M.delete currency m
  6988. 44.45 s [really-safe-money] else M.insert currency r m
  6989. 44.45 s [really-safe-money]
  6990. 44.45 s [really-safe-money] added mutation CondFlip at src/Money/MultiAmount.hs:106:9-37
  6991. 44.45 s [really-safe-money] @@ -103,9 +103,9 @@
  6992. 44.45 s [really-safe-money] Just a -> do
  6993. 44.45 s [really-safe-money] r <- Amount.add a amount
  6994. 44.45 s [really-safe-money] Just $
  6995. 44.45 s [really-safe-money] - if r == Amount.zero
  6996. 44.45 s [really-safe-money] - then M.delete currency m
  6997. 44.45 s [really-safe-money] - else M.insert currency r m
  6998. 44.45 s [really-safe-money] + if r == Amount.zero
  6999. 44.45 s [really-safe-money] + then M.delete currency m
  7000. 44.45 s [really-safe-money] + else M.insert currency r m
  7001. 44.45 s [really-safe-money]
  7002. 44.46 s [really-safe-money] -- | Subtract an 'Amount' from a 'MultiAmount'
  7003. 44.46 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  7004. 44.46 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:101:22-37
  7005. 44.46 s [really-safe-money] @@ -98,14 +98,14 @@
  7006. 44.46 s [really-safe-money] addAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  7007. 44.46 s [really-safe-money] addAmount m _ (Amount 0) = Just m
  7008. 44.46 s [really-safe-money] addAmount (MultiAmount m) currency amount =
  7009. 44.46 s [really-safe-money] - fmap MultiAmount $ case M.lookup currency m of
  7010. 44.46 s [really-safe-money] - Nothing -> Just $ M.insert currency amount m
  7011. 44.46 s [really-safe-money] - Just a -> do
  7012. 44.46 s [really-safe-money] - r <- Amount.add a amount
  7013. 44.46 s [really-safe-money] - Just $
  7014. 44.46 s [really-safe-money] - if r == Amount.zero
  7015. 44.46 s [really-safe-money] - then M.delete currency m
  7016. 44.46 s [really-safe-money] - else M.insert currency r m
  7017. 44.46 s [really-safe-money] + fmap MultiAmount $ case M.lookup currency m of
  7018. 44.46 s [really-safe-money] + Nothing -> Just $ M.insert currency amount m
  7019. 44.46 s [really-safe-money] + Just a -> do
  7020. 44.46 s [really-safe-money] + r <- Amount.add a amount
  7021. 44.46 s [really-safe-money] + Just $
  7022. 44.46 s [really-safe-money] + if r == Amount.zero
  7023. 44.46 s [really-safe-money] + then M.delete currency m
  7024. 44.46 s [really-safe-money] + else M.insert currency r m
  7025. 44.46 s [really-safe-money]
  7026. 44.46 s [really-safe-money] -- | Subtract an 'Amount' from a 'MultiAmount'
  7027. 44.46 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  7028. 44.46 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAmount.hs:101:22-37
  7029. 44.46 s [really-safe-money] @@ -98,14 +98,14 @@
  7030. 44.46 s [really-safe-money] addAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  7031. 44.46 s [really-safe-money] addAmount m _ (Amount 0) = Just m
  7032. 44.46 s [really-safe-money] addAmount (MultiAmount m) currency amount =
  7033. 44.46 s [really-safe-money] - fmap MultiAmount $ case M.lookup currency m of
  7034. 44.46 s [really-safe-money] - Nothing -> Just $ M.insert currency amount m
  7035. 44.46 s [really-safe-money] - Just a -> do
  7036. 44.46 s [really-safe-money] - r <- Amount.add a amount
  7037. 44.46 s [really-safe-money] - Just $
  7038. 44.46 s [really-safe-money] - if r == Amount.zero
  7039. 44.46 s [really-safe-money] - then M.delete currency m
  7040. 44.46 s [really-safe-money] - else M.insert currency r m
  7041. 44.46 s [really-safe-money] + fmap MultiAmount $ case M.lookup currency m of
  7042. 44.46 s [really-safe-money] + Nothing -> Just $ M.insert currency amount m
  7043. 44.46 s [really-safe-money] + Just a -> do
  7044. 44.46 s [really-safe-money] + r <- Amount.add a amount
  7045. 44.46 s [really-safe-money] + Just $
  7046. 44.46 s [really-safe-money] + if r == Amount.zero
  7047. 44.46 s [really-safe-money] + then M.delete currency m
  7048. 44.46 s [really-safe-money] + else M.insert currency r m
  7049. 44.46 s [really-safe-money]
  7050. 44.46 s [really-safe-money] -- | Subtract an 'Amount' from a 'MultiAmount'
  7051. 44.46 s [really-safe-money] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  7052. 44.46 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:73:6-27
  7053. 44.46 s [really-safe-money] @@ -70,7 +70,7 @@
  7054. 44.46 s [really-safe-money]
  7055. 44.46 s [really-safe-money] fromAmount :: currency -> Amount -> MultiAmount currency
  7056. 44.46 s [really-safe-money] fromAmount currency amount =
  7057. 44.46 s [really-safe-money] - if amount == Amount.zero
  7058. 44.46 s [really-safe-money] + if True
  7059. 44.46 s [really-safe-money] then zero
  7060. 44.46 s [really-safe-money] else MultiAmount $ M.singleton currency amount
  7061. 44.46 s [really-safe-money]
  7062. 44.46 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:73:6-27
  7063. 44.46 s [really-safe-money] @@ -70,7 +70,7 @@
  7064. 44.46 s [really-safe-money]
  7065. 44.46 s [really-safe-money] fromAmount :: currency -> Amount -> MultiAmount currency
  7066. 44.46 s [really-safe-money] fromAmount currency amount =
  7067. 44.46 s [really-safe-money] - if amount == Amount.zero
  7068. 44.46 s [really-safe-money] + if False
  7069. 44.46 s [really-safe-money] then zero
  7070. 44.46 s [really-safe-money] else MultiAmount $ M.singleton currency amount
  7071. 44.46 s [really-safe-money]
  7072. 44.46 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:73:6-27
  7073. 44.46 s [really-safe-money] @@ -70,7 +70,7 @@
  7074. 44.46 s [really-safe-money]
  7075. 44.46 s [really-safe-money] fromAmount :: currency -> Amount -> MultiAmount currency
  7076. 44.46 s [really-safe-money] fromAmount currency amount =
  7077. 44.46 s [really-safe-money] - if amount == Amount.zero
  7078. 44.46 s [really-safe-money] + if not (amount == Amount.zero)
  7079. 44.46 s [really-safe-money] then zero
  7080. 44.46 s [really-safe-money] else MultiAmount $ M.singleton currency amount
  7081. 44.46 s [really-safe-money]
  7082. 44.46 s [really-safe-money] added mutation CondFlip at src/Money/MultiAmount.hs:73:3-51
  7083. 44.46 s [really-safe-money] @@ -70,9 +70,9 @@
  7084. 44.46 s [really-safe-money]
  7085. 44.46 s [really-safe-money] fromAmount :: currency -> Amount -> MultiAmount currency
  7086. 44.46 s [really-safe-money] fromAmount currency amount =
  7087. 44.46 s [really-safe-money] - if amount == Amount.zero
  7088. 44.46 s [really-safe-money] - then zero
  7089. 44.46 s [really-safe-money] - else MultiAmount $ M.singleton currency amount
  7090. 44.46 s [really-safe-money] + if amount == Amount.zero
  7091. 44.46 s [really-safe-money] + then zero
  7092. 44.46 s [really-safe-money] + else MultiAmount $ M.singleton currency amount
  7093. 44.46 s [really-safe-money]
  7094. 44.46 s [really-safe-money] -- | No money of any currency
  7095. 44.46 s [really-safe-money] zero :: MultiAmount currency
  7096. 44.46 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:66:13-29
  7097. 44.46 s [really-safe-money] @@ -63,7 +63,7 @@
  7098. 44.46 s [really-safe-money] [ genericValidate ma,
  7099. 44.46 s [really-safe-money] decorateMap m $ \_ a ->
  7100. 44.46 s [really-safe-money] declare "The amount is not zero" $
  7101. 44.46 s [really-safe-money] - a /= Amount.zero
  7102. 44.46 s [really-safe-money] + True
  7103. 44.46 s [really-safe-money] ]
  7104. 44.46 s [really-safe-money]
  7105. 44.46 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  7106. 44.46 s [really-safe-money] added mutation ConstBool at src/Money/MultiAmount.hs:66:13-29
  7107. 44.46 s [really-safe-money] @@ -63,7 +63,7 @@
  7108. 44.46 s [really-safe-money] [ genericValidate ma,
  7109. 44.46 s [really-safe-money] decorateMap m $ \_ a ->
  7110. 44.46 s [really-safe-money] declare "The amount is not zero" $
  7111. 44.46 s [really-safe-money] - a /= Amount.zero
  7112. 44.46 s [really-safe-money] + False
  7113. 44.46 s [really-safe-money] ]
  7114. 44.46 s [really-safe-money]
  7115. 44.46 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  7116. 44.46 s [really-safe-money] added mutation Negate at src/Money/MultiAmount.hs:66:13-29
  7117. 44.46 s [really-safe-money] @@ -63,7 +63,7 @@
  7118. 44.46 s [really-safe-money] [ genericValidate ma,
  7119. 44.46 s [really-safe-money] decorateMap m $ \_ a ->
  7120. 44.46 s [really-safe-money] declare "The amount is not zero" $
  7121. 44.46 s [really-safe-money] - a /= Amount.zero
  7122. 44.46 s [really-safe-money] + not (a /= Amount.zero)
  7123. 44.46 s [really-safe-money] ]
  7124. 44.46 s [really-safe-money]
  7125. 44.46 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  7126. 44.46 s [really-safe-money] added mutation ListLit at src/Money/MultiAmount.hs:63:7-8
  7127. 44.46 s [really-safe-money] @@ -60,11 +60,7 @@
  7128. 44.46 s [really-safe-money] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
  7129. 44.46 s [really-safe-money] validate ma@(MultiAmount m) =
  7130. 44.46 s [really-safe-money] mconcat
  7131. 44.46 s [really-safe-money] - [ genericValidate ma,
  7132. 44.46 s [really-safe-money] - decorateMap m $ \_ a ->
  7133. 44.46 s [really-safe-money] - declare "The amount is not zero" $
  7134. 44.46 s [really-safe-money] - a /= Amount.zero
  7135. 44.46 s [really-safe-money] - ]
  7136. 44.46 s [really-safe-money] + []
  7137. 44.46 s [really-safe-money]
  7138. 44.46 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  7139. 44.46 s [really-safe-money]
  7140. 44.46 s [really-safe-money] added mutation ListLit at src/Money/MultiAmount.hs:63:7-8
  7141. 44.46 s [really-safe-money] @@ -60,11 +60,11 @@
  7142. 44.46 s [really-safe-money] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
  7143. 44.46 s [really-safe-money] validate ma@(MultiAmount m) =
  7144. 44.46 s [really-safe-money] mconcat
  7145. 44.46 s [really-safe-money] - [ genericValidate ma,
  7146. 44.46 s [really-safe-money] - decorateMap m $ \_ a ->
  7147. 44.46 s [really-safe-money] - declare "The amount is not zero" $
  7148. 44.46 s [really-safe-money] - a /= Amount.zero
  7149. 44.46 s [really-safe-money] - ]
  7150. 44.46 s [really-safe-money] + [ genericValidate ma,
  7151. 44.46 s [really-safe-money] + decorateMap m $ \_ a ->
  7152. 44.46 s [really-safe-money] + declare "The amount is not zero" $
  7153. 44.46 s [really-safe-money] + a /= Amount.zero
  7154. 44.46 s [really-safe-money] + ]
  7155. 44.46 s [really-safe-money]
  7156. 44.46 s [really-safe-money] instance (NFData currency) => NFData (MultiAmount currency)
  7157. 44.46 s [really-safe-money]
  7158. 44.46 s [really-safe-money] added 31 mutations
  7159. 45.34 s [really-safe-money] [ 8 of 12] Compiling Money.AmountOf ( src/Money/AmountOf.hs, dist/build/Money/AmountOf.p_o )
  7160. 45.36 s [really-safe-money] mutation: instrumenting Money.AmountOf
  7161. 45.36 s [really-safe-money] added mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  7162. 45.36 s [really-safe-money] @@ -212,11 +212,11 @@
  7163. 45.36 s [really-safe-money]
  7164. 45.36 s [really-safe-money] -- | See 'Amount.distribute'
  7165. 45.36 s [really-safe-money] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  7166. 45.36 s [really-safe-money] -distribute (AmountOf a) f = case Amount.distribute a f of
  7167. 45.36 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7168. 45.36 s [really-safe-money] - DistributedZero -> DistributedZero
  7169. 45.36 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  7170. 45.36 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  7171. 45.36 s [really-safe-money] +distribute (AmountOf a) f = case Amount.distribute a f of
  7172. 45.36 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7173. 45.36 s [really-safe-money] + DistributedZero -> DistributedZero
  7174. 45.36 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  7175. 45.36 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  7176. 45.36 s [really-safe-money]
  7177. 45.36 s [really-safe-money] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  7178. 45.36 s [really-safe-money]
  7179. 45.36 s [really-safe-money] added mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  7180. 45.36 s [really-safe-money] @@ -212,11 +212,11 @@
  7181. 45.36 s [really-safe-money]
  7182. 45.36 s [really-safe-money] -- | See 'Amount.distribute'
  7183. 45.36 s [really-safe-money] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  7184. 45.36 s [really-safe-money] -distribute (AmountOf a) f = case Amount.distribute a f of
  7185. 45.36 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7186. 45.36 s [really-safe-money] - DistributedZero -> DistributedZero
  7187. 45.36 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  7188. 45.36 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  7189. 45.36 s [really-safe-money] +distribute (AmountOf a) f = case Amount.distribute a f of
  7190. 45.36 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7191. 45.36 s [really-safe-money] + DistributedZero -> DistributedZero
  7192. 45.37 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  7193. 45.37 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  7194. 45.37 s [really-safe-money]
  7195. 45.37 s [really-safe-money] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  7196. 45.37 s [really-safe-money]
  7197. 45.37 s [really-safe-money] added mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  7198. 45.37 s [really-safe-money] @@ -212,11 +212,11 @@
  7199. 45.37 s [really-safe-money]
  7200. 45.37 s [really-safe-money] -- | See 'Amount.distribute'
  7201. 45.37 s [really-safe-money] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  7202. 45.37 s [really-safe-money] -distribute (AmountOf a) f = case Amount.distribute a f of
  7203. 45.37 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7204. 45.37 s [really-safe-money] - DistributedZero -> DistributedZero
  7205. 45.37 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  7206. 45.37 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  7207. 45.37 s [really-safe-money] +distribute (AmountOf a) f = case Amount.distribute a f of
  7208. 45.37 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7209. 45.37 s [really-safe-money] + DistributedZero -> DistributedZero
  7210. 45.37 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  7211. 45.37 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  7212. 45.37 s [really-safe-money]
  7213. 45.37 s [really-safe-money] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  7214. 45.37 s [really-safe-money]
  7215. 45.37 s [really-safe-money] added mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  7216. 45.37 s [really-safe-money] @@ -212,11 +212,11 @@
  7217. 45.37 s [really-safe-money]
  7218. 45.37 s [really-safe-money] -- | See 'Amount.distribute'
  7219. 45.37 s [really-safe-money] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  7220. 45.37 s [really-safe-money] -distribute (AmountOf a) f = case Amount.distribute a f of
  7221. 45.37 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7222. 45.37 s [really-safe-money] - DistributedZero -> DistributedZero
  7223. 45.37 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  7224. 45.37 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  7225. 45.37 s [really-safe-money] +distribute (AmountOf a) f = case Amount.distribute a f of
  7226. 45.37 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7227. 45.37 s [really-safe-money] + DistributedZero -> DistributedZero
  7228. 45.37 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  7229. 45.37 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  7230. 45.37 s [really-safe-money]
  7231. 45.37 s [really-safe-money] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  7232. 45.37 s [really-safe-money]
  7233. 45.37 s [really-safe-money] added 4 mutations
  7234. 45.68 s [really-safe-money] [ 9 of 12] Compiling Money.Account ( src/Money/Account.hs, dist/build/Money/Account.p_o )
  7235. 45.70 s [really-safe-money] mutation: instrumenting Money.Account
  7236. 45.70 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:553:7-39
  7237. 45.70 s [really-safe-money] @@ -550,11 +550,11 @@
  7238. 45.70 s [really-safe-money] let aa1 = abs a1
  7239. 45.70 s [really-safe-money] aa2 = abs a2
  7240. 45.70 s [really-safe-money] mr = Amount.rate qf1 aa1 qf2 aa2
  7241. 45.70 s [really-safe-money] - in case (a1, a2) of
  7242. 45.70 s [really-safe-money] - (Positive _, Positive _) -> mr
  7243. 45.70 s [really-safe-money] - (Positive _, Negative _) -> Nothing
  7244. 45.70 s [really-safe-money] - (Negative _, Positive _) -> Nothing
  7245. 45.70 s [really-safe-money] - (Negative _, Negative _) -> mr
  7246. 45.70 s [really-safe-money] + in case (a1, a2) of
  7247. 45.70 s [really-safe-money] + (Positive _, Positive _) -> mr
  7248. 45.70 s [really-safe-money] + (Positive _, Negative _) -> Nothing
  7249. 45.70 s [really-safe-money] + (Negative _, Positive _) -> Nothing
  7250. 45.70 s [really-safe-money] + (Negative _, Negative _) -> mr
  7251. 45.70 s [really-safe-money]
  7252. 45.70 s [really-safe-money] -- | Convert an amount of money of one currency into an amount of money of
  7253. 45.70 s [really-safe-money] -- another currency using a conversion rate.
  7254. 45.70 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:553:7-39
  7255. 45.70 s [really-safe-money] @@ -550,11 +550,11 @@
  7256. 45.70 s [really-safe-money] let aa1 = abs a1
  7257. 45.70 s [really-safe-money] aa2 = abs a2
  7258. 45.70 s [really-safe-money] mr = Amount.rate qf1 aa1 qf2 aa2
  7259. 45.70 s [really-safe-money] - in case (a1, a2) of
  7260. 45.70 s [really-safe-money] - (Positive _, Positive _) -> mr
  7261. 45.70 s [really-safe-money] - (Positive _, Negative _) -> Nothing
  7262. 45.70 s [really-safe-money] - (Negative _, Positive _) -> Nothing
  7263. 45.70 s [really-safe-money] - (Negative _, Negative _) -> mr
  7264. 45.70 s [really-safe-money] + in case (a1, a2) of
  7265. 45.70 s [really-safe-money] + (Positive _, Positive _) -> mr
  7266. 45.70 s [really-safe-money] + (Positive _, Negative _) -> Nothing
  7267. 45.70 s [really-safe-money] + (Negative _, Positive _) -> Nothing
  7268. 45.70 s [really-safe-money] + (Negative _, Negative _) -> mr
  7269. 45.70 s [really-safe-money]
  7270. 45.70 s [really-safe-money] -- | Convert an amount of money of one currency into an amount of money of
  7271. 45.70 s [really-safe-money] -- another currency using a conversion rate.
  7272. 45.70 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:553:7-39
  7273. 45.70 s [really-safe-money] @@ -550,11 +550,11 @@
  7274. 45.70 s [really-safe-money] let aa1 = abs a1
  7275. 45.70 s [really-safe-money] aa2 = abs a2
  7276. 45.70 s [really-safe-money] mr = Amount.rate qf1 aa1 qf2 aa2
  7277. 45.70 s [really-safe-money] - in case (a1, a2) of
  7278. 45.70 s [really-safe-money] - (Positive _, Positive _) -> mr
  7279. 45.70 s [really-safe-money] - (Positive _, Negative _) -> Nothing
  7280. 45.70 s [really-safe-money] - (Negative _, Positive _) -> Nothing
  7281. 45.70 s [really-safe-money] - (Negative _, Negative _) -> mr
  7282. 45.70 s [really-safe-money] + in case (a1, a2) of
  7283. 45.70 s [really-safe-money] + (Positive _, Positive _) -> mr
  7284. 45.70 s [really-safe-money] + (Positive _, Negative _) -> Nothing
  7285. 45.70 s [really-safe-money] + (Negative _, Positive _) -> Nothing
  7286. 45.70 s [really-safe-money] + (Negative _, Negative _) -> mr
  7287. 45.70 s [really-safe-money]
  7288. 45.70 s [really-safe-money] -- | Convert an amount of money of one currency into an amount of money of
  7289. 45.70 s [really-safe-money] -- another currency using a conversion rate.
  7290. 45.70 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:553:7-39
  7291. 45.70 s [really-safe-money] @@ -550,11 +550,11 @@
  7292. 45.70 s [really-safe-money] let aa1 = abs a1
  7293. 45.70 s [really-safe-money] aa2 = abs a2
  7294. 45.70 s [really-safe-money] mr = Amount.rate qf1 aa1 qf2 aa2
  7295. 45.70 s [really-safe-money] - in case (a1, a2) of
  7296. 45.70 s [really-safe-money] - (Positive _, Positive _) -> mr
  7297. 45.70 s [really-safe-money] - (Positive _, Negative _) -> Nothing
  7298. 45.70 s [really-safe-money] - (Negative _, Positive _) -> Nothing
  7299. 45.70 s [really-safe-money] - (Negative _, Negative _) -> mr
  7300. 45.70 s [really-safe-money] + in case (a1, a2) of
  7301. 45.70 s [really-safe-money] + (Positive _, Positive _) -> mr
  7302. 45.70 s [really-safe-money] + (Positive _, Negative _) -> Nothing
  7303. 45.70 s [really-safe-money] + (Negative _, Positive _) -> Nothing
  7304. 45.70 s [really-safe-money] + (Negative _, Negative _) -> mr
  7305. 45.70 s [really-safe-money]
  7306. 45.70 s [really-safe-money] -- | Convert an amount of money of one currency into an amount of money of
  7307. 45.70 s [really-safe-money] -- another currency using a conversion rate.
  7308. 45.70 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:591:7-44
  7309. 45.70 s [really-safe-money] @@ -588,9 +588,9 @@
  7310. 45.70 s [really-safe-money] (Maybe Account, Maybe ConversionRate)
  7311. 45.70 s [really-safe-money] convert r qf1 a cr qf2 =
  7312. 45.70 s [really-safe-money] let (ma, mr) = Amount.convert r qf1 (abs a) cr qf2
  7313. 45.70 s [really-safe-money] - in case a of
  7314. 45.70 s [really-safe-money] - Positive _ -> (Positive <$> ma, mr)
  7315. 45.70 s [really-safe-money] - Negative _ -> (Negative <$> ma, mr)
  7316. 45.70 s [really-safe-money] + in case a of
  7317. 45.70 s [really-safe-money] + Positive _ -> (Positive <$> ma, mr)
  7318. 45.70 s [really-safe-money] + Negative _ -> (Negative <$> ma, mr)
  7319. 45.70 s [really-safe-money]
  7320. 45.70 s [really-safe-money] -- | Format an account of money without a symbol.
  7321. 45.70 s [really-safe-money] --
  7322. 45.70 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:591:7-44
  7323. 45.70 s [really-safe-money] @@ -588,9 +588,9 @@
  7324. 45.70 s [really-safe-money] (Maybe Account, Maybe ConversionRate)
  7325. 45.70 s [really-safe-money] convert r qf1 a cr qf2 =
  7326. 45.70 s [really-safe-money] let (ma, mr) = Amount.convert r qf1 (abs a) cr qf2
  7327. 45.70 s [really-safe-money] - in case a of
  7328. 45.70 s [really-safe-money] - Positive _ -> (Positive <$> ma, mr)
  7329. 45.70 s [really-safe-money] - Negative _ -> (Negative <$> ma, mr)
  7330. 45.70 s [really-safe-money] + in case a of
  7331. 45.70 s [really-safe-money] + Positive _ -> (Positive <$> ma, mr)
  7332. 45.70 s [really-safe-money] + Negative _ -> (Negative <$> ma, mr)
  7333. 45.70 s [really-safe-money]
  7334. 45.70 s [really-safe-money] -- | Format an account of money without a symbol.
  7335. 45.70 s [really-safe-money] --
  7336. 45.70 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:421:32-33
  7337. 45.70 s [really-safe-money] @@ -418,7 +418,7 @@
  7338. 45.70 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  7339. 45.70 s [really-safe-money] multiply factor account =
  7340. 45.70 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  7341. 45.70 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  7342. 45.70 s [really-safe-money] + f = case (compare factor 1, compare account zero) of
  7343. 45.70 s [really-safe-money] (EQ, _) -> const zero
  7344. 45.70 s [really-safe-money] (_, EQ) -> const zero
  7345. 45.70 s [really-safe-money] (GT, GT) -> Positive
  7346. 45.70 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  7347. 45.70 s [really-safe-money] @@ -418,13 +418,13 @@
  7348. 45.70 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  7349. 45.70 s [really-safe-money] multiply factor account =
  7350. 45.70 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  7351. 45.70 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  7352. 45.70 s [really-safe-money] - (EQ, _) -> const zero
  7353. 45.70 s [really-safe-money] - (_, EQ) -> const zero
  7354. 45.70 s [really-safe-money] - (GT, GT) -> Positive
  7355. 45.70 s [really-safe-money] - (GT, LT) -> Negative
  7356. 45.70 s [really-safe-money] - (LT, GT) -> Negative
  7357. 45.70 s [really-safe-money] - (LT, LT) -> Positive
  7358. 45.70 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  7359. 45.70 s [really-safe-money] + (EQ, _) -> const zero
  7360. 45.70 s [really-safe-money] + (_, EQ) -> const zero
  7361. 45.70 s [really-safe-money] + (GT, GT) -> Positive
  7362. 45.70 s [really-safe-money] + (GT, LT) -> Negative
  7363. 45.70 s [really-safe-money] + (LT, GT) -> Negative
  7364. 45.70 s [really-safe-money] + (LT, LT) -> Positive
  7365. 45.70 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  7366. 45.70 s [really-safe-money]
  7367. 45.70 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  7368. 45.70 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  7369. 45.70 s [really-safe-money] @@ -418,13 +418,13 @@
  7370. 45.70 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  7371. 45.70 s [really-safe-money] multiply factor account =
  7372. 45.70 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  7373. 45.70 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  7374. 45.70 s [really-safe-money] - (EQ, _) -> const zero
  7375. 45.70 s [really-safe-money] - (_, EQ) -> const zero
  7376. 45.70 s [really-safe-money] - (GT, GT) -> Positive
  7377. 45.70 s [really-safe-money] - (GT, LT) -> Negative
  7378. 45.70 s [really-safe-money] - (LT, GT) -> Negative
  7379. 45.70 s [really-safe-money] - (LT, LT) -> Positive
  7380. 45.70 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  7381. 45.71 s [really-safe-money] + (EQ, _) -> const zero
  7382. 45.71 s [really-safe-money] + (_, EQ) -> const zero
  7383. 45.71 s [really-safe-money] + (GT, GT) -> Positive
  7384. 45.71 s [really-safe-money] + (GT, LT) -> Negative
  7385. 45.71 s [really-safe-money] + (LT, GT) -> Negative
  7386. 45.71 s [really-safe-money] + (LT, LT) -> Positive
  7387. 45.71 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  7388. 45.71 s [really-safe-money]
  7389. 45.71 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  7390. 45.71 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  7391. 45.71 s [really-safe-money] @@ -418,13 +418,13 @@
  7392. 45.71 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  7393. 45.71 s [really-safe-money] multiply factor account =
  7394. 45.71 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  7395. 45.71 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  7396. 45.71 s [really-safe-money] - (EQ, _) -> const zero
  7397. 45.71 s [really-safe-money] - (_, EQ) -> const zero
  7398. 45.71 s [really-safe-money] - (GT, GT) -> Positive
  7399. 45.71 s [really-safe-money] - (GT, LT) -> Negative
  7400. 45.71 s [really-safe-money] - (LT, GT) -> Negative
  7401. 45.71 s [really-safe-money] - (LT, LT) -> Positive
  7402. 45.71 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  7403. 45.71 s [really-safe-money] + (EQ, _) -> const zero
  7404. 45.71 s [really-safe-money] + (_, EQ) -> const zero
  7405. 45.71 s [really-safe-money] + (GT, GT) -> Positive
  7406. 45.71 s [really-safe-money] + (GT, LT) -> Negative
  7407. 45.71 s [really-safe-money] + (LT, GT) -> Negative
  7408. 45.71 s [really-safe-money] + (LT, LT) -> Positive
  7409. 45.71 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  7410. 45.71 s [really-safe-money]
  7411. 45.71 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  7412. 45.71 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  7413. 45.71 s [really-safe-money] @@ -418,13 +418,13 @@
  7414. 45.71 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  7415. 45.71 s [really-safe-money] multiply factor account =
  7416. 45.71 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  7417. 45.71 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  7418. 45.71 s [really-safe-money] - (EQ, _) -> const zero
  7419. 45.71 s [really-safe-money] - (_, EQ) -> const zero
  7420. 45.71 s [really-safe-money] - (GT, GT) -> Positive
  7421. 45.71 s [really-safe-money] - (GT, LT) -> Negative
  7422. 45.71 s [really-safe-money] - (LT, GT) -> Negative
  7423. 45.71 s [really-safe-money] - (LT, LT) -> Positive
  7424. 45.71 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  7425. 45.71 s [really-safe-money] + (EQ, _) -> const zero
  7426. 45.71 s [really-safe-money] + (_, EQ) -> const zero
  7427. 45.71 s [really-safe-money] + (GT, GT) -> Positive
  7428. 45.71 s [really-safe-money] + (GT, LT) -> Negative
  7429. 45.71 s [really-safe-money] + (LT, GT) -> Negative
  7430. 45.71 s [really-safe-money] + (LT, LT) -> Positive
  7431. 45.71 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  7432. 45.71 s [really-safe-money]
  7433. 45.71 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  7434. 45.71 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  7435. 45.71 s [really-safe-money] @@ -418,13 +418,13 @@
  7436. 45.71 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  7437. 45.71 s [really-safe-money] multiply factor account =
  7438. 45.71 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  7439. 45.71 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  7440. 45.71 s [really-safe-money] - (EQ, _) -> const zero
  7441. 45.71 s [really-safe-money] - (_, EQ) -> const zero
  7442. 45.71 s [really-safe-money] - (GT, GT) -> Positive
  7443. 45.71 s [really-safe-money] - (GT, LT) -> Negative
  7444. 45.71 s [really-safe-money] - (LT, GT) -> Negative
  7445. 45.71 s [really-safe-money] - (LT, LT) -> Positive
  7446. 45.71 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  7447. 45.71 s [really-safe-money] + (EQ, _) -> const zero
  7448. 45.71 s [really-safe-money] + (_, EQ) -> const zero
  7449. 45.71 s [really-safe-money] + (GT, GT) -> Positive
  7450. 45.71 s [really-safe-money] + (GT, LT) -> Negative
  7451. 45.71 s [really-safe-money] + (LT, GT) -> Negative
  7452. 45.71 s [really-safe-money] + (LT, LT) -> Positive
  7453. 45.71 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  7454. 45.71 s [really-safe-money]
  7455. 45.71 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  7456. 45.71 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:421:11-29
  7457. 45.71 s [really-safe-money] @@ -418,13 +418,13 @@
  7458. 45.71 s [really-safe-money] multiply :: Int32 -> Account -> Maybe Account
  7459. 45.71 s [really-safe-money] multiply factor account =
  7460. 45.71 s [really-safe-money] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  7461. 45.71 s [really-safe-money] - f = case (compare factor 0, compare account zero) of
  7462. 45.71 s [really-safe-money] - (EQ, _) -> const zero
  7463. 45.71 s [really-safe-money] - (_, EQ) -> const zero
  7464. 45.71 s [really-safe-money] - (GT, GT) -> Positive
  7465. 45.71 s [really-safe-money] - (GT, LT) -> Negative
  7466. 45.71 s [really-safe-money] - (LT, GT) -> Negative
  7467. 45.71 s [really-safe-money] - (LT, LT) -> Positive
  7468. 45.71 s [really-safe-money] + f = case (compare factor 0, compare account zero) of
  7469. 45.71 s [really-safe-money] + (EQ, _) -> const zero
  7470. 45.71 s [really-safe-money] + (_, EQ) -> const zero
  7471. 45.71 s [really-safe-money] + (GT, GT) -> Positive
  7472. 45.71 s [really-safe-money] + (GT, LT) -> Negative
  7473. 45.71 s [really-safe-money] + (LT, GT) -> Negative
  7474. 45.71 s [really-safe-money] + (LT, LT) -> Positive
  7475. 45.71 s [really-safe-money] in f <$> Amount.multiply af (abs account)
  7476. 45.71 s [really-safe-money]
  7477. 45.71 s [really-safe-money] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  7478. 45.71 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:451:14-23
  7479. 45.71 s [really-safe-money] @@ -448,7 +448,7 @@
  7480. 45.71 s [really-safe-money] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7481. 45.71 s [really-safe-money] DistributedZero -> DistributedZero
  7482. 45.71 s [really-safe-money] DistributedIntoEqualChunks numberOfChunks chunk ->
  7483. 45.71 s [really-safe-money] - if a >= zero
  7484. 45.71 s [really-safe-money] + if True
  7485. 45.71 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7486. 45.71 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7487. 45.71 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7488. 45.71 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:451:14-23
  7489. 45.71 s [really-safe-money] @@ -448,7 +448,7 @@
  7490. 45.71 s [really-safe-money] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7491. 45.71 s [really-safe-money] DistributedZero -> DistributedZero
  7492. 45.71 s [really-safe-money] DistributedIntoEqualChunks numberOfChunks chunk ->
  7493. 45.71 s [really-safe-money] - if a >= zero
  7494. 45.71 s [really-safe-money] + if False
  7495. 45.71 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7496. 45.71 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7497. 45.71 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7498. 45.71 s [really-safe-money] added mutation Negate at src/Money/Account.hs:451:14-23
  7499. 45.71 s [really-safe-money] @@ -448,7 +448,7 @@
  7500. 45.71 s [really-safe-money] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7501. 45.71 s [really-safe-money] DistributedZero -> DistributedZero
  7502. 45.71 s [really-safe-money] DistributedIntoEqualChunks numberOfChunks chunk ->
  7503. 45.71 s [really-safe-money] - if a >= zero
  7504. 45.71 s [really-safe-money] + if not (a >= zero)
  7505. 45.71 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7506. 45.71 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7507. 45.71 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7508. 45.71 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:451:11-76
  7509. 45.71 s [really-safe-money] @@ -448,9 +448,9 @@
  7510. 45.71 s [really-safe-money] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7511. 45.71 s [really-safe-money] DistributedZero -> DistributedZero
  7512. 45.71 s [really-safe-money] DistributedIntoEqualChunks numberOfChunks chunk ->
  7513. 45.71 s [really-safe-money] - if a >= zero
  7514. 45.71 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7515. 45.71 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7516. 45.71 s [really-safe-money] + if a >= zero
  7517. 45.71 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7518. 45.71 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7519. 45.71 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7520. 45.71 s [really-safe-money] if a >= zero
  7521. 45.71 s [really-safe-money] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7522. 45.71 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:455:14-23
  7523. 45.71 s [really-safe-money] @@ -452,7 +452,7 @@
  7524. 45.71 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7525. 45.71 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7526. 45.71 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7527. 45.71 s [really-safe-money] - if a >= zero
  7528. 45.71 s [really-safe-money] + if True
  7529. 45.71 s [really-safe-money] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7530. 45.71 s [really-safe-money] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7531. 45.71 s [really-safe-money]
  7532. 45.71 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:455:14-23
  7533. 45.71 s [really-safe-money] @@ -452,7 +452,7 @@
  7534. 45.71 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7535. 45.71 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7536. 45.71 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7537. 45.71 s [really-safe-money] - if a >= zero
  7538. 45.71 s [really-safe-money] + if False
  7539. 45.71 s [really-safe-money] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7540. 45.71 s [really-safe-money] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7541. 45.71 s [really-safe-money]
  7542. 45.71 s [really-safe-money] added mutation Negate at src/Money/Account.hs:455:14-23
  7543. 45.71 s [really-safe-money] @@ -452,7 +452,7 @@
  7544. 45.71 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7545. 45.71 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7546. 45.71 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7547. 45.71 s [really-safe-money] - if a >= zero
  7548. 45.71 s [really-safe-money] + if not (a >= zero)
  7549. 45.71 s [really-safe-money] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7550. 45.71 s [really-safe-money] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7551. 45.71 s [really-safe-money]
  7552. 45.71 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:455:11-136
  7553. 45.71 s [really-safe-money] @@ -452,9 +452,9 @@
  7554. 45.71 s [really-safe-money] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7555. 45.71 s [really-safe-money] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7556. 45.71 s [really-safe-money] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7557. 45.71 s [really-safe-money] - if a >= zero
  7558. 45.71 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7559. 45.71 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7560. 45.71 s [really-safe-money] + if a >= zero
  7561. 45.71 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7562. 45.71 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7563. 45.71 s [really-safe-money]
  7564. 45.71 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  7565. 45.71 s [really-safe-money]
  7566. 45.71 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:447:7-136
  7567. 45.71 s [really-safe-money] @@ -444,17 +444,17 @@
  7568. 45.71 s [really-safe-money] distribute a f =
  7569. 45.71 s [really-safe-money] let aa = abs a
  7570. 45.71 s [really-safe-money] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  7571. 45.71 s [really-safe-money] - in case Amount.distribute aa af of
  7572. 45.71 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7573. 45.71 s [really-safe-money] - DistributedZero -> DistributedZero
  7574. 45.71 s [really-safe-money] - DistributedIntoEqualChunks numberOfChunks chunk ->
  7575. 45.71 s [really-safe-money] - if a >= zero
  7576. 45.71 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7577. 45.71 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7578. 45.71 s [really-safe-money] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7579. 45.71 s [really-safe-money] - if a >= zero
  7580. 45.71 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7581. 45.71 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7582. 45.71 s [really-safe-money] + in case Amount.distribute aa af of
  7583. 45.71 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7584. 45.71 s [really-safe-money] + DistributedZero -> DistributedZero
  7585. 45.71 s [really-safe-money] + DistributedIntoEqualChunks numberOfChunks chunk ->
  7586. 45.71 s [really-safe-money] + if a >= zero
  7587. 45.71 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7588. 45.71 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7589. 45.71 s [really-safe-money] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7590. 45.71 s [really-safe-money] + if a >= zero
  7591. 45.71 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7592. 45.71 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7593. 45.71 s [really-safe-money]
  7594. 45.71 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  7595. 45.71 s [really-safe-money]
  7596. 45.71 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:447:7-136
  7597. 45.71 s [really-safe-money] @@ -444,17 +444,17 @@
  7598. 45.71 s [really-safe-money] distribute a f =
  7599. 45.71 s [really-safe-money] let aa = abs a
  7600. 45.71 s [really-safe-money] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  7601. 45.71 s [really-safe-money] - in case Amount.distribute aa af of
  7602. 45.71 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7603. 45.71 s [really-safe-money] - DistributedZero -> DistributedZero
  7604. 45.71 s [really-safe-money] - DistributedIntoEqualChunks numberOfChunks chunk ->
  7605. 45.71 s [really-safe-money] - if a >= zero
  7606. 45.71 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7607. 45.71 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7608. 45.71 s [really-safe-money] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7609. 45.71 s [really-safe-money] - if a >= zero
  7610. 45.71 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7611. 45.71 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7612. 45.71 s [really-safe-money] + in case Amount.distribute aa af of
  7613. 45.71 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7614. 45.71 s [really-safe-money] + DistributedZero -> DistributedZero
  7615. 45.71 s [really-safe-money] + DistributedIntoEqualChunks numberOfChunks chunk ->
  7616. 45.71 s [really-safe-money] + if a >= zero
  7617. 45.71 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7618. 45.71 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7619. 45.71 s [really-safe-money] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7620. 45.71 s [really-safe-money] + if a >= zero
  7621. 45.71 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7622. 45.71 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7623. 45.71 s [really-safe-money]
  7624. 45.71 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  7625. 45.71 s [really-safe-money]
  7626. 45.71 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:447:7-136
  7627. 45.71 s [really-safe-money] @@ -444,17 +444,17 @@
  7628. 45.71 s [really-safe-money] distribute a f =
  7629. 45.71 s [really-safe-money] let aa = abs a
  7630. 45.71 s [really-safe-money] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  7631. 45.71 s [really-safe-money] - in case Amount.distribute aa af of
  7632. 45.71 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7633. 45.71 s [really-safe-money] - DistributedZero -> DistributedZero
  7634. 45.72 s [really-safe-money] - DistributedIntoEqualChunks numberOfChunks chunk ->
  7635. 45.72 s [really-safe-money] - if a >= zero
  7636. 45.72 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7637. 45.72 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7638. 45.72 s [really-safe-money] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7639. 45.72 s [really-safe-money] - if a >= zero
  7640. 45.72 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7641. 45.72 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7642. 45.72 s [really-safe-money] + in case Amount.distribute aa af of
  7643. 45.72 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7644. 45.72 s [really-safe-money] + DistributedZero -> DistributedZero
  7645. 45.72 s [really-safe-money] + DistributedIntoEqualChunks numberOfChunks chunk ->
  7646. 45.72 s [really-safe-money] + if a >= zero
  7647. 45.72 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7648. 45.72 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7649. 45.72 s [really-safe-money] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7650. 45.72 s [really-safe-money] + if a >= zero
  7651. 45.72 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7652. 45.72 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7653. 45.72 s [really-safe-money]
  7654. 45.72 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  7655. 45.72 s [really-safe-money]
  7656. 45.72 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:447:7-136
  7657. 45.72 s [really-safe-money] @@ -444,17 +444,17 @@
  7658. 45.72 s [really-safe-money] distribute a f =
  7659. 45.72 s [really-safe-money] let aa = abs a
  7660. 45.72 s [really-safe-money] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  7661. 45.72 s [really-safe-money] - in case Amount.distribute aa af of
  7662. 45.72 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7663. 45.72 s [really-safe-money] - DistributedZero -> DistributedZero
  7664. 45.72 s [really-safe-money] - DistributedIntoEqualChunks numberOfChunks chunk ->
  7665. 45.72 s [really-safe-money] - if a >= zero
  7666. 45.72 s [really-safe-money] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7667. 45.72 s [really-safe-money] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7668. 45.72 s [really-safe-money] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7669. 45.72 s [really-safe-money] - if a >= zero
  7670. 45.72 s [really-safe-money] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7671. 45.72 s [really-safe-money] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7672. 45.72 s [really-safe-money] + in case Amount.distribute aa af of
  7673. 45.72 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  7674. 45.72 s [really-safe-money] + DistributedZero -> DistributedZero
  7675. 45.72 s [really-safe-money] + DistributedIntoEqualChunks numberOfChunks chunk ->
  7676. 45.72 s [really-safe-money] + if a >= zero
  7677. 45.72 s [really-safe-money] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  7678. 45.72 s [really-safe-money] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  7679. 45.72 s [really-safe-money] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  7680. 45.72 s [really-safe-money] + if a >= zero
  7681. 45.72 s [really-safe-money] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  7682. 45.72 s [really-safe-money] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  7683. 45.72 s [really-safe-money]
  7684. 45.72 s [really-safe-money] type AccountDistribution = Amount.Distribution Account
  7685. 45.72 s [really-safe-money]
  7686. 45.72 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:522:19-35
  7687. 45.72 s [really-safe-money] @@ -519,10 +519,10 @@
  7688. 45.72 s [really-safe-money] let aa = abs account
  7689. 45.72 s [really-safe-money] (amount, actualFraction) = Amount.fraction ro aa af
  7690. 45.72 s [really-safe-money] func :: Maybe Amount -> Ratio Natural -> (Maybe Account, Ratio Natural)
  7691. 45.72 s [really-safe-money] - func ma r = case compare account zero of
  7692. 45.72 s [really-safe-money] - EQ -> (Just zero, r)
  7693. 45.72 s [really-safe-money] - GT -> (Positive <$> ma, r)
  7694. 45.72 s [really-safe-money] - LT -> (Negative <$> ma, r)
  7695. 45.72 s [really-safe-money] + func ma r = case compare account zero of
  7696. 45.72 s [really-safe-money] + EQ -> (Just zero, r)
  7697. 45.72 s [really-safe-money] + GT -> (Positive <$> ma, r)
  7698. 45.72 s [really-safe-money] + LT -> (Negative <$> ma, r)
  7699. 45.72 s [really-safe-money] in func amount actualFraction
  7700. 45.72 s [really-safe-money]
  7701. 45.72 s [really-safe-money] -- | Compute the currency conversion rate between two accounts of money of
  7702. 45.72 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:522:19-35
  7703. 45.72 s [really-safe-money] @@ -519,10 +519,10 @@
  7704. 45.72 s [really-safe-money] let aa = abs account
  7705. 45.72 s [really-safe-money] (amount, actualFraction) = Amount.fraction ro aa af
  7706. 45.72 s [really-safe-money] func :: Maybe Amount -> Ratio Natural -> (Maybe Account, Ratio Natural)
  7707. 45.72 s [really-safe-money] - func ma r = case compare account zero of
  7708. 45.72 s [really-safe-money] - EQ -> (Just zero, r)
  7709. 45.72 s [really-safe-money] - GT -> (Positive <$> ma, r)
  7710. 45.72 s [really-safe-money] - LT -> (Negative <$> ma, r)
  7711. 45.72 s [really-safe-money] + func ma r = case compare account zero of
  7712. 45.72 s [really-safe-money] + EQ -> (Just zero, r)
  7713. 45.72 s [really-safe-money] + GT -> (Positive <$> ma, r)
  7714. 45.72 s [really-safe-money] + LT -> (Negative <$> ma, r)
  7715. 45.72 s [really-safe-money] in func amount actualFraction
  7716. 45.72 s [really-safe-money]
  7717. 45.72 s [really-safe-money] -- | Compute the currency conversion rate between two accounts of money of
  7718. 45.72 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:522:19-35
  7719. 45.72 s [really-safe-money] @@ -519,10 +519,10 @@
  7720. 45.72 s [really-safe-money] let aa = abs account
  7721. 45.72 s [really-safe-money] (amount, actualFraction) = Amount.fraction ro aa af
  7722. 45.72 s [really-safe-money] func :: Maybe Amount -> Ratio Natural -> (Maybe Account, Ratio Natural)
  7723. 45.72 s [really-safe-money] - func ma r = case compare account zero of
  7724. 45.72 s [really-safe-money] - EQ -> (Just zero, r)
  7725. 45.72 s [really-safe-money] - GT -> (Positive <$> ma, r)
  7726. 45.72 s [really-safe-money] - LT -> (Negative <$> ma, r)
  7727. 45.72 s [really-safe-money] + func ma r = case compare account zero of
  7728. 45.72 s [really-safe-money] + EQ -> (Just zero, r)
  7729. 45.72 s [really-safe-money] + GT -> (Positive <$> ma, r)
  7730. 45.72 s [really-safe-money] + LT -> (Negative <$> ma, r)
  7731. 45.72 s [really-safe-money] in func amount actualFraction
  7732. 45.72 s [really-safe-money]
  7733. 45.72 s [really-safe-money] -- | Compute the currency conversion rate between two accounts of money of
  7734. 45.72 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:495:17-18
  7735. 45.72 s [really-safe-money] @@ -492,7 +492,7 @@
  7736. 45.72 s [really-safe-money] fraction rounding account f =
  7737. 45.72 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  7738. 45.72 s [really-safe-money] ro =
  7739. 45.72 s [really-safe-money] - if f >= 0
  7740. 45.72 s [really-safe-money] + if f >= 1
  7741. 45.72 s [really-safe-money] then rounding
  7742. 45.72 s [really-safe-money] else case rounding of
  7743. 45.72 s [really-safe-money] RoundUp -> RoundDown
  7744. 45.72 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:495:12-18
  7745. 45.72 s [really-safe-money] @@ -492,7 +492,7 @@
  7746. 45.72 s [really-safe-money] fraction rounding account f =
  7747. 45.72 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  7748. 45.72 s [really-safe-money] ro =
  7749. 45.72 s [really-safe-money] - if f >= 0
  7750. 45.72 s [really-safe-money] + if True
  7751. 45.72 s [really-safe-money] then rounding
  7752. 45.72 s [really-safe-money] else case rounding of
  7753. 45.72 s [really-safe-money] RoundUp -> RoundDown
  7754. 45.72 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:495:12-18
  7755. 45.72 s [really-safe-money] @@ -492,7 +492,7 @@
  7756. 45.72 s [really-safe-money] fraction rounding account f =
  7757. 45.72 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  7758. 45.72 s [really-safe-money] ro =
  7759. 45.72 s [really-safe-money] - if f >= 0
  7760. 45.72 s [really-safe-money] + if False
  7761. 45.72 s [really-safe-money] then rounding
  7762. 45.72 s [really-safe-money] else case rounding of
  7763. 45.72 s [really-safe-money] RoundUp -> RoundDown
  7764. 45.72 s [really-safe-money] added mutation Negate at src/Money/Account.hs:495:12-18
  7765. 45.72 s [really-safe-money] @@ -492,7 +492,7 @@
  7766. 45.72 s [really-safe-money] fraction rounding account f =
  7767. 45.72 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  7768. 45.72 s [really-safe-money] ro =
  7769. 45.72 s [really-safe-money] - if f >= 0
  7770. 45.72 s [really-safe-money] + if not (f >= 0)
  7771. 45.72 s [really-safe-money] then rounding
  7772. 45.72 s [really-safe-money] else case rounding of
  7773. 45.72 s [really-safe-money] RoundUp -> RoundDown
  7774. 45.72 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:497:16-41
  7775. 45.72 s [really-safe-money] @@ -494,10 +494,10 @@
  7776. 45.72 s [really-safe-money] ro =
  7777. 45.72 s [really-safe-money] if f >= 0
  7778. 45.72 s [really-safe-money] then rounding
  7779. 45.72 s [really-safe-money] - else case rounding of
  7780. 45.72 s [really-safe-money] - RoundUp -> RoundDown
  7781. 45.72 s [really-safe-money] - RoundDown -> RoundUp
  7782. 45.72 s [really-safe-money] - RoundNearest -> RoundNearest
  7783. 45.72 s [really-safe-money] + else case rounding of
  7784. 45.72 s [really-safe-money] + RoundUp -> RoundDown
  7785. 45.72 s [really-safe-money] + RoundDown -> RoundUp
  7786. 45.72 s [really-safe-money] + RoundNearest -> RoundNearest
  7787. 45.72 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  7788. 45.72 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  7789. 45.72 s [really-safe-money] in if f >= 0
  7790. 45.72 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:497:16-41
  7791. 45.72 s [really-safe-money] @@ -494,10 +494,10 @@
  7792. 45.72 s [really-safe-money] ro =
  7793. 45.72 s [really-safe-money] if f >= 0
  7794. 45.72 s [really-safe-money] then rounding
  7795. 45.72 s [really-safe-money] - else case rounding of
  7796. 45.72 s [really-safe-money] - RoundUp -> RoundDown
  7797. 45.72 s [really-safe-money] - RoundDown -> RoundUp
  7798. 45.72 s [really-safe-money] - RoundNearest -> RoundNearest
  7799. 45.72 s [really-safe-money] + else case rounding of
  7800. 45.72 s [really-safe-money] + RoundUp -> RoundDown
  7801. 45.72 s [really-safe-money] + RoundDown -> RoundUp
  7802. 45.72 s [really-safe-money] + RoundNearest -> RoundNearest
  7803. 45.72 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  7804. 45.72 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  7805. 45.72 s [really-safe-money] in if f >= 0
  7806. 45.72 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:497:16-41
  7807. 45.72 s [really-safe-money] @@ -494,10 +494,10 @@
  7808. 45.72 s [really-safe-money] ro =
  7809. 45.72 s [really-safe-money] if f >= 0
  7810. 45.72 s [really-safe-money] then rounding
  7811. 45.72 s [really-safe-money] - else case rounding of
  7812. 45.72 s [really-safe-money] - RoundUp -> RoundDown
  7813. 45.72 s [really-safe-money] - RoundDown -> RoundUp
  7814. 45.72 s [really-safe-money] - RoundNearest -> RoundNearest
  7815. 45.72 s [really-safe-money] + else case rounding of
  7816. 45.72 s [really-safe-money] + RoundUp -> RoundDown
  7817. 45.72 s [really-safe-money] + RoundDown -> RoundUp
  7818. 45.72 s [really-safe-money] + RoundNearest -> RoundNearest
  7819. 45.72 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  7820. 45.72 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  7821. 45.72 s [really-safe-money] in if f >= 0
  7822. 45.72 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:495:9-41
  7823. 45.72 s [really-safe-money] @@ -492,12 +492,12 @@
  7824. 45.72 s [really-safe-money] fraction rounding account f =
  7825. 45.72 s [really-safe-money] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  7826. 45.72 s [really-safe-money] ro =
  7827. 45.72 s [really-safe-money] - if f >= 0
  7828. 45.72 s [really-safe-money] - then rounding
  7829. 45.72 s [really-safe-money] - else case rounding of
  7830. 45.72 s [really-safe-money] - RoundUp -> RoundDown
  7831. 45.72 s [really-safe-money] - RoundDown -> RoundUp
  7832. 45.72 s [really-safe-money] - RoundNearest -> RoundNearest
  7833. 45.72 s [really-safe-money] + if f >= 0
  7834. 45.72 s [really-safe-money] + then rounding
  7835. 45.72 s [really-safe-money] + else case rounding of
  7836. 45.72 s [really-safe-money] + RoundUp -> RoundDown
  7837. 45.72 s [really-safe-money] + RoundDown -> RoundUp
  7838. 45.72 s [really-safe-money] + RoundNearest -> RoundNearest
  7839. 45.72 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  7840. 45.72 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  7841. 45.72 s [really-safe-money] in if f >= 0
  7842. 45.72 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:503:15-16
  7843. 45.72 s [really-safe-money] @@ -500,7 +500,7 @@
  7844. 45.72 s [really-safe-money] RoundNearest -> RoundNearest
  7845. 45.72 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  7846. 45.72 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  7847. 45.72 s [really-safe-money] - in if f >= 0
  7848. 45.72 s [really-safe-money] + in if f >= 1
  7849. 45.72 s [really-safe-money] then (ma, r)
  7850. 45.72 s [really-safe-money] else (negate <$> ma, -r)
  7851. 45.72 s [really-safe-money]
  7852. 45.72 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:503:10-16
  7853. 45.72 s [really-safe-money] @@ -500,7 +500,7 @@
  7854. 45.72 s [really-safe-money] RoundNearest -> RoundNearest
  7855. 45.72 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  7856. 45.72 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  7857. 45.72 s [really-safe-money] - in if f >= 0
  7858. 45.72 s [really-safe-money] + in if True
  7859. 45.72 s [really-safe-money] then (ma, r)
  7860. 45.72 s [really-safe-money] else (negate <$> ma, -r)
  7861. 45.72 s [really-safe-money]
  7862. 45.72 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:503:10-16
  7863. 45.72 s [really-safe-money] @@ -500,7 +500,7 @@
  7864. 45.72 s [really-safe-money] RoundNearest -> RoundNearest
  7865. 45.72 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  7866. 45.72 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  7867. 45.72 s [really-safe-money] - in if f >= 0
  7868. 45.72 s [really-safe-money] + in if False
  7869. 45.72 s [really-safe-money] then (ma, r)
  7870. 45.72 s [really-safe-money] else (negate <$> ma, -r)
  7871. 45.72 s [really-safe-money]
  7872. 45.72 s [really-safe-money] added mutation Negate at src/Money/Account.hs:503:10-16
  7873. 45.72 s [really-safe-money] @@ -500,7 +500,7 @@
  7874. 45.72 s [really-safe-money] RoundNearest -> RoundNearest
  7875. 45.72 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  7876. 45.72 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  7877. 45.72 s [really-safe-money] - in if f >= 0
  7878. 45.72 s [really-safe-money] + in if not (f >= 0)
  7879. 45.72 s [really-safe-money] then (ma, r)
  7880. 45.72 s [really-safe-money] else (negate <$> ma, -r)
  7881. 45.72 s [really-safe-money]
  7882. 45.72 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:503:7-33
  7883. 45.72 s [really-safe-money] @@ -500,9 +500,9 @@
  7884. 45.72 s [really-safe-money] RoundNearest -> RoundNearest
  7885. 45.72 s [really-safe-money] (ma, ar) = fractionRatio ro account af
  7886. 45.72 s [really-safe-money] r = (realToFrac :: Ratio Natural -> Rational) ar
  7887. 45.72 s [really-safe-money] - in if f >= 0
  7888. 45.72 s [really-safe-money] - then (ma, r)
  7889. 45.72 s [really-safe-money] - else (negate <$> ma, -r)
  7890. 45.72 s [really-safe-money] + in if f >= 0
  7891. 45.72 s [really-safe-money] + then (ma, r)
  7892. 45.72 s [really-safe-money] + else (negate <$> ma, -r)
  7893. 45.72 s [really-safe-money]
  7894. 45.72 s [really-safe-money] -- | Fractional multiplication with a positive fraction, see 'Amount.fraction' and 'Account.fraction'.
  7895. 45.72 s [really-safe-money] --
  7896. 45.72 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:233:19-20
  7897. 45.72 s [really-safe-money] @@ -230,7 +230,7 @@
  7898. 45.72 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  7899. 45.72 s [really-safe-money] fromRational quantisationFactor r =
  7900. 45.72 s [really-safe-money] let r' = Prelude.abs r
  7901. 45.72 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  7902. 45.72 s [really-safe-money] + f = if r >= 1 then Positive else Negative
  7903. 45.72 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  7904. 45.72 s [really-safe-money]
  7905. 45.72 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  7906. 45.72 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:233:14-20
  7907. 45.73 s [really-safe-money] @@ -230,7 +230,7 @@
  7908. 45.73 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  7909. 45.73 s [really-safe-money] fromRational quantisationFactor r =
  7910. 45.73 s [really-safe-money] let r' = Prelude.abs r
  7911. 45.73 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  7912. 45.73 s [really-safe-money] + f = if True then Positive else Negative
  7913. 45.73 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  7914. 45.73 s [really-safe-money]
  7915. 45.73 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  7916. 45.73 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:233:14-20
  7917. 45.73 s [really-safe-money] @@ -230,7 +230,7 @@
  7918. 45.73 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  7919. 45.73 s [really-safe-money] fromRational quantisationFactor r =
  7920. 45.73 s [really-safe-money] let r' = Prelude.abs r
  7921. 45.73 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  7922. 45.73 s [really-safe-money] + f = if False then Positive else Negative
  7923. 45.73 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  7924. 45.73 s [really-safe-money]
  7925. 45.73 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  7926. 45.73 s [really-safe-money] added mutation Negate at src/Money/Account.hs:233:14-20
  7927. 45.73 s [really-safe-money] @@ -230,7 +230,7 @@
  7928. 45.73 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  7929. 45.73 s [really-safe-money] fromRational quantisationFactor r =
  7930. 45.73 s [really-safe-money] let r' = Prelude.abs r
  7931. 45.73 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  7932. 45.73 s [really-safe-money] + f = if not (r >= 0) then Positive else Negative
  7933. 45.73 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  7934. 45.73 s [really-safe-money]
  7935. 45.73 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  7936. 45.73 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:233:11-48
  7937. 45.73 s [really-safe-money] @@ -230,7 +230,7 @@
  7938. 45.73 s [really-safe-money] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  7939. 45.73 s [really-safe-money] fromRational quantisationFactor r =
  7940. 45.73 s [really-safe-money] let r' = Prelude.abs r
  7941. 45.73 s [really-safe-money] - f = if r >= 0 then Positive else Negative
  7942. 45.73 s [really-safe-money] + f = if r >= 0 then Positive else Negative
  7943. 45.73 s [really-safe-money] in f <$> Amount.fromRational quantisationFactor r'
  7944. 45.73 s [really-safe-money]
  7945. 45.73 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  7946. 45.73 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:211:11-37
  7947. 45.73 s [really-safe-money] @@ -208,9 +208,9 @@
  7948. 45.73 s [really-safe-money] -- (-3) % 20
  7949. 45.73 s [really-safe-money] toRational :: QuantisationFactor -> Account -> Rational
  7950. 45.73 s [really-safe-money] toRational quantisationFactor account =
  7951. 45.73 s [really-safe-money] - let f = case account of
  7952. 45.73 s [really-safe-money] - Positive _ -> id
  7953. 45.73 s [really-safe-money] - Negative _ -> Prelude.negate
  7954. 45.73 s [really-safe-money] + let f = case account of
  7955. 45.73 s [really-safe-money] + Positive _ -> id
  7956. 45.73 s [really-safe-money] + Negative _ -> Prelude.negate
  7957. 45.73 s [really-safe-money] in f $ Amount.toRational quantisationFactor (abs account)
  7958. 45.73 s [really-safe-money]
  7959. 45.73 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  7960. 45.73 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:211:11-37
  7961. 45.73 s [really-safe-money] @@ -208,9 +208,9 @@
  7962. 45.73 s [really-safe-money] -- (-3) % 20
  7963. 45.73 s [really-safe-money] toRational :: QuantisationFactor -> Account -> Rational
  7964. 45.73 s [really-safe-money] toRational quantisationFactor account =
  7965. 45.73 s [really-safe-money] - let f = case account of
  7966. 45.73 s [really-safe-money] - Positive _ -> id
  7967. 45.73 s [really-safe-money] - Negative _ -> Prelude.negate
  7968. 45.73 s [really-safe-money] + let f = case account of
  7969. 45.73 s [really-safe-money] + Positive _ -> id
  7970. 45.73 s [really-safe-money] + Negative _ -> Prelude.negate
  7971. 45.73 s [really-safe-money] in f $ Amount.toRational quantisationFactor (abs account)
  7972. 45.73 s [really-safe-money]
  7973. 45.73 s [really-safe-money] -- | Turn a 'Rational' into an amount of money.
  7974. 45.73 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:197:19-20
  7975. 45.73 s [really-safe-money] @@ -194,7 +194,7 @@
  7976. 45.73 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  7977. 45.73 s [really-safe-money] fromDouble quantisationFactor d =
  7978. 45.73 s [really-safe-money] let d' = Prelude.abs d
  7979. 45.73 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  7980. 45.73 s [really-safe-money] + f = if d >= 1 then Positive else Negative
  7981. 45.73 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  7982. 45.73 s [really-safe-money]
  7983. 45.73 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  7984. 45.73 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:197:14-20
  7985. 45.73 s [really-safe-money] @@ -194,7 +194,7 @@
  7986. 45.73 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  7987. 45.73 s [really-safe-money] fromDouble quantisationFactor d =
  7988. 45.73 s [really-safe-money] let d' = Prelude.abs d
  7989. 45.73 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  7990. 45.73 s [really-safe-money] + f = if True then Positive else Negative
  7991. 45.73 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  7992. 45.73 s [really-safe-money]
  7993. 45.73 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  7994. 45.73 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:197:14-20
  7995. 45.73 s [really-safe-money] @@ -194,7 +194,7 @@
  7996. 45.73 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  7997. 45.73 s [really-safe-money] fromDouble quantisationFactor d =
  7998. 45.73 s [really-safe-money] let d' = Prelude.abs d
  7999. 45.73 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  8000. 45.73 s [really-safe-money] + f = if False then Positive else Negative
  8001. 45.73 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  8002. 45.73 s [really-safe-money]
  8003. 45.73 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  8004. 45.73 s [really-safe-money] added mutation Negate at src/Money/Account.hs:197:14-20
  8005. 45.73 s [really-safe-money] @@ -194,7 +194,7 @@
  8006. 45.73 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  8007. 45.73 s [really-safe-money] fromDouble quantisationFactor d =
  8008. 45.73 s [really-safe-money] let d' = Prelude.abs d
  8009. 45.73 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  8010. 45.73 s [really-safe-money] + f = if not (d >= 0) then Positive else Negative
  8011. 45.73 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  8012. 45.73 s [really-safe-money]
  8013. 45.73 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  8014. 45.73 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:197:11-48
  8015. 45.73 s [really-safe-money] @@ -194,7 +194,7 @@
  8016. 45.73 s [really-safe-money] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  8017. 45.73 s [really-safe-money] fromDouble quantisationFactor d =
  8018. 45.73 s [really-safe-money] let d' = Prelude.abs d
  8019. 45.73 s [really-safe-money] - f = if d >= 0 then Positive else Negative
  8020. 45.73 s [really-safe-money] + f = if d >= 0 then Positive else Negative
  8021. 45.73 s [really-safe-money] in f <$> Amount.fromDouble quantisationFactor d'
  8022. 45.73 s [really-safe-money]
  8023. 45.73 s [really-safe-money] -- | Turn an amount of money into a 'Rational'.
  8024. 45.73 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:171:11-37
  8025. 45.73 s [really-safe-money] @@ -168,9 +168,9 @@
  8026. 45.73 s [really-safe-money] -- -0.25
  8027. 45.73 s [really-safe-money] toDouble :: QuantisationFactor -> Account -> Double
  8028. 45.73 s [really-safe-money] toDouble quantisationFactor account =
  8029. 45.73 s [really-safe-money] - let f = case account of
  8030. 45.73 s [really-safe-money] - Positive _ -> id
  8031. 45.73 s [really-safe-money] - Negative _ -> Prelude.negate
  8032. 45.73 s [really-safe-money] + let f = case account of
  8033. 45.73 s [really-safe-money] + Positive _ -> id
  8034. 45.73 s [really-safe-money] + Negative _ -> Prelude.negate
  8035. 45.73 s [really-safe-money] in f $ Amount.toDouble quantisationFactor (abs account)
  8036. 45.73 s [really-safe-money]
  8037. 45.73 s [really-safe-money] -- | Turn a 'Double' into an amount of money.
  8038. 45.73 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:171:11-37
  8039. 45.73 s [really-safe-money] @@ -168,9 +168,9 @@
  8040. 45.73 s [really-safe-money] -- -0.25
  8041. 45.73 s [really-safe-money] toDouble :: QuantisationFactor -> Account -> Double
  8042. 45.73 s [really-safe-money] toDouble quantisationFactor account =
  8043. 45.73 s [really-safe-money] - let f = case account of
  8044. 45.73 s [really-safe-money] - Positive _ -> id
  8045. 45.73 s [really-safe-money] - Negative _ -> Prelude.negate
  8046. 45.73 s [really-safe-money] + let f = case account of
  8047. 45.73 s [really-safe-money] + Positive _ -> id
  8048. 45.73 s [really-safe-money] + Negative _ -> Prelude.negate
  8049. 45.73 s [really-safe-money] in f $ Amount.toDouble quantisationFactor (abs account)
  8050. 45.73 s [really-safe-money]
  8051. 45.73 s [really-safe-money] -- | Turn a 'Double' into an amount of money.
  8052. 45.73 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:155:11-37
  8053. 45.73 s [really-safe-money] @@ -152,9 +152,9 @@
  8054. 45.73 s [really-safe-money] -- We return 'Integer' because the result does not fit into a 'Word64'
  8055. 45.73 s [really-safe-money] toMinimalQuantisations :: Account -> Integer
  8056. 45.73 s [really-safe-money] toMinimalQuantisations account =
  8057. 45.73 s [really-safe-money] - let f = case account of
  8058. 45.73 s [really-safe-money] - Positive _ -> id
  8059. 45.73 s [really-safe-money] - Negative _ -> Prelude.negate
  8060. 45.73 s [really-safe-money] + let f = case account of
  8061. 45.73 s [really-safe-money] + Positive _ -> id
  8062. 45.73 s [really-safe-money] + Negative _ -> Prelude.negate
  8063. 45.73 s [really-safe-money] in f $ (fromIntegral :: Word64 -> Integer) $ Amount.toMinimalQuantisations (abs account)
  8064. 45.73 s [really-safe-money]
  8065. 45.73 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  8066. 45.73 s [really-safe-money] added mutation RemoveCase at src/Money/Account.hs:155:11-37
  8067. 45.73 s [really-safe-money] @@ -152,9 +152,9 @@
  8068. 45.73 s [really-safe-money] -- We return 'Integer' because the result does not fit into a 'Word64'
  8069. 45.73 s [really-safe-money] toMinimalQuantisations :: Account -> Integer
  8070. 45.73 s [really-safe-money] toMinimalQuantisations account =
  8071. 45.73 s [really-safe-money] - let f = case account of
  8072. 45.73 s [really-safe-money] - Positive _ -> id
  8073. 45.73 s [really-safe-money] - Negative _ -> Prelude.negate
  8074. 45.73 s [really-safe-money] + let f = case account of
  8075. 45.73 s [really-safe-money] + Positive _ -> id
  8076. 45.73 s [really-safe-money] + Negative _ -> Prelude.negate
  8077. 45.73 s [really-safe-money] in f $ (fromIntegral :: Word64 -> Integer) $ Amount.toMinimalQuantisations (abs account)
  8078. 45.73 s [really-safe-money]
  8079. 45.73 s [really-safe-money] -- | Turn an amount of money into a 'Double'.
  8080. 45.73 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:123:10-23
  8081. 45.73 s [really-safe-money] @@ -120,7 +120,7 @@
  8082. 45.73 s [really-safe-money] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  8083. 45.73 s [really-safe-money] a :: Integer
  8084. 45.73 s [really-safe-money] a = (Prelude.abs :: Integer -> Integer) i
  8085. 45.73 s [really-safe-money] - in if a > maxBoundI
  8086. 45.73 s [really-safe-money] + in if True
  8087. 45.73 s [really-safe-money] then Nothing
  8088. 45.73 s [really-safe-money] else
  8089. 45.73 s [really-safe-money] let w :: Word64
  8090. 45.73 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:123:10-23
  8091. 45.73 s [really-safe-money] @@ -120,7 +120,7 @@
  8092. 45.73 s [really-safe-money] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  8093. 45.73 s [really-safe-money] a :: Integer
  8094. 45.73 s [really-safe-money] a = (Prelude.abs :: Integer -> Integer) i
  8095. 45.73 s [really-safe-money] - in if a > maxBoundI
  8096. 45.73 s [really-safe-money] + in if False
  8097. 45.73 s [really-safe-money] then Nothing
  8098. 45.73 s [really-safe-money] else
  8099. 45.73 s [really-safe-money] let w :: Word64
  8100. 45.73 s [really-safe-money] added mutation Negate at src/Money/Account.hs:123:10-23
  8101. 45.73 s [really-safe-money] @@ -120,7 +120,7 @@
  8102. 45.73 s [really-safe-money] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  8103. 45.73 s [really-safe-money] a :: Integer
  8104. 45.73 s [really-safe-money] a = (Prelude.abs :: Integer -> Integer) i
  8105. 45.73 s [really-safe-money] - in if a > maxBoundI
  8106. 45.73 s [really-safe-money] + in if not (a > maxBoundI)
  8107. 45.73 s [really-safe-money] then Nothing
  8108. 45.73 s [really-safe-money] else
  8109. 45.73 s [really-safe-money] let w :: Word64
  8110. 45.73 s [really-safe-money] added mutation IntLit at src/Money/Account.hs:131:25-26
  8111. 45.73 s [really-safe-money] @@ -128,7 +128,7 @@
  8112. 45.73 s [really-safe-money] amount :: Amount
  8113. 45.73 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  8114. 45.73 s [really-safe-money] in Just $
  8115. 45.73 s [really-safe-money] - if i >= 0
  8116. 45.73 s [really-safe-money] + if i >= 1
  8117. 45.73 s [really-safe-money] then Positive amount
  8118. 45.73 s [really-safe-money] else Negative amount
  8119. 45.73 s [really-safe-money]
  8120. 45.73 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:131:20-26
  8121. 45.73 s [really-safe-money] @@ -128,7 +128,7 @@
  8122. 45.73 s [really-safe-money] amount :: Amount
  8123. 45.73 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  8124. 45.73 s [really-safe-money] in Just $
  8125. 45.73 s [really-safe-money] - if i >= 0
  8126. 45.73 s [really-safe-money] + if True
  8127. 45.73 s [really-safe-money] then Positive amount
  8128. 45.73 s [really-safe-money] else Negative amount
  8129. 45.73 s [really-safe-money]
  8130. 45.73 s [really-safe-money] added mutation ConstBool at src/Money/Account.hs:131:20-26
  8131. 45.73 s [really-safe-money] @@ -128,7 +128,7 @@
  8132. 45.73 s [really-safe-money] amount :: Amount
  8133. 45.73 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  8134. 45.73 s [really-safe-money] in Just $
  8135. 45.73 s [really-safe-money] - if i >= 0
  8136. 45.73 s [really-safe-money] + if False
  8137. 45.73 s [really-safe-money] then Positive amount
  8138. 45.73 s [really-safe-money] else Negative amount
  8139. 45.73 s [really-safe-money]
  8140. 45.73 s [really-safe-money] added mutation Negate at src/Money/Account.hs:131:20-26
  8141. 45.73 s [really-safe-money] @@ -128,7 +128,7 @@
  8142. 45.73 s [really-safe-money] amount :: Amount
  8143. 45.73 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  8144. 45.73 s [really-safe-money] in Just $
  8145. 45.73 s [really-safe-money] - if i >= 0
  8146. 45.73 s [really-safe-money] + if not (i >= 0)
  8147. 45.73 s [really-safe-money] then Positive amount
  8148. 45.73 s [really-safe-money] else Negative amount
  8149. 45.73 s [really-safe-money]
  8150. 45.73 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:131:17-39
  8151. 45.73 s [really-safe-money] @@ -128,9 +128,9 @@
  8152. 45.73 s [really-safe-money] amount :: Amount
  8153. 45.73 s [really-safe-money] amount = Amount.fromMinimalQuantisations w
  8154. 45.73 s [really-safe-money] in Just $
  8155. 45.73 s [really-safe-money] - if i >= 0
  8156. 45.73 s [really-safe-money] - then Positive amount
  8157. 45.73 s [really-safe-money] - else Negative amount
  8158. 45.73 s [really-safe-money] + if i >= 0
  8159. 45.73 s [really-safe-money] + then Positive amount
  8160. 45.73 s [really-safe-money] + else Negative amount
  8161. 45.73 s [really-safe-money]
  8162. 45.73 s [really-safe-money] -- | Turn an amount into a positive account
  8163. 45.73 s [really-safe-money] --
  8164. 45.73 s [really-safe-money] added mutation CondFlip at src/Money/Account.hs:123:7-39
  8165. 45.73 s [really-safe-money] @@ -120,17 +120,17 @@
  8166. 45.73 s [really-safe-money] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  8167. 45.73 s [really-safe-money] a :: Integer
  8168. 45.73 s [really-safe-money] a = (Prelude.abs :: Integer -> Integer) i
  8169. 45.73 s [really-safe-money] - in if a > maxBoundI
  8170. 45.73 s [really-safe-money] - then Nothing
  8171. 45.73 s [really-safe-money] - else
  8172. 45.73 s [really-safe-money] - let w :: Word64
  8173. 45.73 s [really-safe-money] - w = (fromIntegral :: Integer -> Word64) a
  8174. 45.73 s [really-safe-money] - amount :: Amount
  8175. 45.73 s [really-safe-money] - amount = Amount.fromMinimalQuantisations w
  8176. 45.73 s [really-safe-money] - in Just $
  8177. 45.73 s [really-safe-money] - if i >= 0
  8178. 45.73 s [really-safe-money] - then Positive amount
  8179. 45.73 s [really-safe-money] - else Negative amount
  8180. 45.73 s [really-safe-money] + in if a > maxBoundI
  8181. 45.73 s [really-safe-money] + then Nothing
  8182. 45.73 s [really-safe-money] + else
  8183. 45.73 s [really-safe-money] + let w :: Word64
  8184. 45.73 s [really-safe-money] + w = (fromIntegral :: Integer -> Word64) a
  8185. 45.73 s [really-safe-money] + amount :: Amount
  8186. 45.73 s [really-safe-money] + amount = Amount.fromMinimalQuantisations w
  8187. 45.73 s [really-safe-money] + in Just $
  8188. 45.73 s [really-safe-money] + if i >= 0
  8189. 45.73 s [really-safe-money] + then Positive amount
  8190. 45.74 s [really-safe-money] + else Negative amount
  8191. 45.74 s [really-safe-money]
  8192. 45.74 s [really-safe-money] -- | Turn an amount into a positive account
  8193. 45.74 s [really-safe-money] --
  8194. 45.74 s [really-safe-money] added 66 mutations
  8195. 46.61 s [really-safe-money] [10 of 12] Compiling Money.MultiAccount ( src/Money/MultiAccount.hs, dist/build/Money/MultiAccount.p_o )
  8196. 46.63 s [really-safe-money] mutation: instrumenting Money.MultiAccount
  8197. 46.63 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
  8198. 46.63 s [really-safe-money] @@ -171,10 +171,10 @@
  8199. 46.63 s [really-safe-money] fmap
  8200. 46.63 s [really-safe-money] ( ( \theoreticalResult ->
  8201. 46.63 s [really-safe-money] let rounder :: Rational -> Integer
  8202. 46.63 s [really-safe-money] - rounder = case r of
  8203. 46.63 s [really-safe-money] - RoundUp -> ceiling
  8204. 46.63 s [really-safe-money] - RoundDown -> floor
  8205. 46.63 s [really-safe-money] - RoundNearest -> round
  8206. 46.63 s [really-safe-money] + rounder = case r of
  8207. 46.63 s [really-safe-money] + RoundUp -> ceiling
  8208. 46.63 s [really-safe-money] + RoundDown -> floor
  8209. 46.63 s [really-safe-money] + RoundNearest -> round
  8210. 46.63 s [really-safe-money] roundedResult :: Integer
  8211. 46.63 s [really-safe-money] roundedResult = rounder theoreticalResult
  8212. 46.63 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  8213. 46.63 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
  8214. 46.63 s [really-safe-money] @@ -171,10 +171,10 @@
  8215. 46.63 s [really-safe-money] fmap
  8216. 46.63 s [really-safe-money] ( ( \theoreticalResult ->
  8217. 46.63 s [really-safe-money] let rounder :: Rational -> Integer
  8218. 46.63 s [really-safe-money] - rounder = case r of
  8219. 46.63 s [really-safe-money] - RoundUp -> ceiling
  8220. 46.63 s [really-safe-money] - RoundDown -> floor
  8221. 46.63 s [really-safe-money] - RoundNearest -> round
  8222. 46.63 s [really-safe-money] + rounder = case r of
  8223. 46.63 s [really-safe-money] + RoundUp -> ceiling
  8224. 46.63 s [really-safe-money] + RoundDown -> floor
  8225. 46.63 s [really-safe-money] + RoundNearest -> round
  8226. 46.63 s [really-safe-money] roundedResult :: Integer
  8227. 46.64 s [really-safe-money] roundedResult = rounder theoreticalResult
  8228. 46.64 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  8229. 46.64 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
  8230. 46.64 s [really-safe-money] @@ -171,10 +171,10 @@
  8231. 46.64 s [really-safe-money] fmap
  8232. 46.64 s [really-safe-money] ( ( \theoreticalResult ->
  8233. 46.64 s [really-safe-money] let rounder :: Rational -> Integer
  8234. 46.64 s [really-safe-money] - rounder = case r of
  8235. 46.64 s [really-safe-money] - RoundUp -> ceiling
  8236. 46.64 s [really-safe-money] - RoundDown -> floor
  8237. 46.64 s [really-safe-money] - RoundNearest -> round
  8238. 46.64 s [really-safe-money] + rounder = case r of
  8239. 46.64 s [really-safe-money] + RoundUp -> ceiling
  8240. 46.64 s [really-safe-money] + RoundDown -> floor
  8241. 46.64 s [really-safe-money] + RoundNearest -> round
  8242. 46.64 s [really-safe-money] roundedResult :: Integer
  8243. 46.64 s [really-safe-money] roundedResult = rounder theoreticalResult
  8244. 46.64 s [really-safe-money] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  8245. 46.64 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
  8246. 46.64 s [really-safe-money] @@ -177,10 +177,10 @@
  8247. 46.64 s [really-safe-money] RoundNearest -> round
  8248. 46.64 s [really-safe-money] roundedResult :: Integer
  8249. 46.64 s [really-safe-money] roundedResult = rounder theoreticalResult
  8250. 46.64 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  8251. 46.64 s [really-safe-money] - LT -> RoundedDown
  8252. 46.64 s [really-safe-money] - EQ -> DidNotRound
  8253. 46.64 s [really-safe-money] - GT -> RoundedUp
  8254. 46.64 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  8255. 46.64 s [really-safe-money] + LT -> RoundedDown
  8256. 46.64 s [really-safe-money] + EQ -> DidNotRound
  8257. 46.64 s [really-safe-money] + GT -> RoundedUp
  8258. 46.64 s [really-safe-money] in (Account.fromMinimalQuantisations roundedResult, rounded)
  8259. 46.64 s [really-safe-money] )
  8260. 46.64 s [really-safe-money] . Prelude.sum
  8261. 46.64 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
  8262. 46.64 s [really-safe-money] @@ -177,10 +177,10 @@
  8263. 46.64 s [really-safe-money] RoundNearest -> round
  8264. 46.64 s [really-safe-money] roundedResult :: Integer
  8265. 46.64 s [really-safe-money] roundedResult = rounder theoreticalResult
  8266. 46.64 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  8267. 46.64 s [really-safe-money] - LT -> RoundedDown
  8268. 46.64 s [really-safe-money] - EQ -> DidNotRound
  8269. 46.64 s [really-safe-money] - GT -> RoundedUp
  8270. 46.64 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  8271. 46.64 s [really-safe-money] + LT -> RoundedDown
  8272. 46.64 s [really-safe-money] + EQ -> DidNotRound
  8273. 46.64 s [really-safe-money] + GT -> RoundedUp
  8274. 46.64 s [really-safe-money] in (Account.fromMinimalQuantisations roundedResult, rounded)
  8275. 46.64 s [really-safe-money] )
  8276. 46.64 s [really-safe-money] . Prelude.sum
  8277. 46.64 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
  8278. 46.64 s [really-safe-money] @@ -177,10 +177,10 @@
  8279. 46.64 s [really-safe-money] RoundNearest -> round
  8280. 46.64 s [really-safe-money] roundedResult :: Integer
  8281. 46.64 s [really-safe-money] roundedResult = rounder theoreticalResult
  8282. 46.64 s [really-safe-money] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  8283. 46.64 s [really-safe-money] - LT -> RoundedDown
  8284. 46.64 s [really-safe-money] - EQ -> DidNotRound
  8285. 46.64 s [really-safe-money] - GT -> RoundedUp
  8286. 46.64 s [really-safe-money] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  8287. 46.64 s [really-safe-money] + LT -> RoundedDown
  8288. 46.64 s [really-safe-money] + EQ -> DidNotRound
  8289. 46.64 s [really-safe-money] + GT -> RoundedUp
  8290. 46.64 s [really-safe-money] in (Account.fromMinimalQuantisations roundedResult, rounded)
  8291. 46.64 s [really-safe-money] )
  8292. 46.64 s [really-safe-money] . Prelude.sum
  8293. 46.64 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:134:12-29
  8294. 46.64 s [really-safe-money] @@ -131,7 +131,7 @@
  8295. 46.64 s [really-safe-money] Just a -> do
  8296. 46.64 s [really-safe-money] r <- Account.subtract a account
  8297. 46.64 s [really-safe-money] Just $
  8298. 46.64 s [really-safe-money] - if r == Account.zero
  8299. 46.64 s [really-safe-money] + if True
  8300. 46.64 s [really-safe-money] then M.delete currency m
  8301. 46.64 s [really-safe-money] else M.insert currency r m
  8302. 46.64 s [really-safe-money]
  8303. 46.64 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:134:12-29
  8304. 46.64 s [really-safe-money] @@ -131,7 +131,7 @@
  8305. 46.64 s [really-safe-money] Just a -> do
  8306. 46.64 s [really-safe-money] r <- Account.subtract a account
  8307. 46.64 s [really-safe-money] Just $
  8308. 46.64 s [really-safe-money] - if r == Account.zero
  8309. 46.64 s [really-safe-money] + if False
  8310. 46.64 s [really-safe-money] then M.delete currency m
  8311. 46.64 s [really-safe-money] else M.insert currency r m
  8312. 46.64 s [really-safe-money]
  8313. 46.64 s [really-safe-money] added mutation Negate at src/Money/MultiAccount.hs:134:12-29
  8314. 46.64 s [really-safe-money] @@ -131,7 +131,7 @@
  8315. 46.64 s [really-safe-money] Just a -> do
  8316. 46.64 s [really-safe-money] r <- Account.subtract a account
  8317. 46.64 s [really-safe-money] Just $
  8318. 46.64 s [really-safe-money] - if r == Account.zero
  8319. 46.64 s [really-safe-money] + if not (r == Account.zero)
  8320. 46.64 s [really-safe-money] then M.delete currency m
  8321. 46.64 s [really-safe-money] else M.insert currency r m
  8322. 46.64 s [really-safe-money]
  8323. 46.64 s [really-safe-money] added mutation CondFlip at src/Money/MultiAccount.hs:134:9-37
  8324. 46.64 s [really-safe-money] @@ -131,9 +131,9 @@
  8325. 46.64 s [really-safe-money] Just a -> do
  8326. 46.64 s [really-safe-money] r <- Account.subtract a account
  8327. 46.64 s [really-safe-money] Just $
  8328. 46.64 s [really-safe-money] - if r == Account.zero
  8329. 46.64 s [really-safe-money] - then M.delete currency m
  8330. 46.64 s [really-safe-money] - else M.insert currency r m
  8331. 46.64 s [really-safe-money] + if r == Account.zero
  8332. 46.64 s [really-safe-money] + then M.delete currency m
  8333. 46.64 s [really-safe-money] + else M.insert currency r m
  8334. 46.64 s [really-safe-money]
  8335. 46.64 s [really-safe-money] -- | Try to convert every account to one currency.
  8336. 46.64 s [really-safe-money] --
  8337. 46.64 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:129:23-37
  8338. 46.64 s [really-safe-money] @@ -126,14 +126,14 @@
  8339. 46.64 s [really-safe-money] subtractAccount m _ (Positive (Amount 0)) = Just m
  8340. 46.64 s [really-safe-money] subtractAccount m _ (Negative (Amount 0)) = Just m
  8341. 46.64 s [really-safe-money] subtractAccount (MultiAccount m) currency account =
  8342. 46.64 s [really-safe-money] - fmap MultiAccount $ case M.lookup currency m of
  8343. 46.64 s [really-safe-money] - Nothing -> Just $ M.insert currency (Account.negate account) m
  8344. 46.64 s [really-safe-money] - Just a -> do
  8345. 46.64 s [really-safe-money] - r <- Account.subtract a account
  8346. 46.64 s [really-safe-money] - Just $
  8347. 46.64 s [really-safe-money] - if r == Account.zero
  8348. 46.64 s [really-safe-money] - then M.delete currency m
  8349. 46.64 s [really-safe-money] - else M.insert currency r m
  8350. 46.64 s [really-safe-money] + fmap MultiAccount $ case M.lookup currency m of
  8351. 46.64 s [really-safe-money] + Nothing -> Just $ M.insert currency (Account.negate account) m
  8352. 46.64 s [really-safe-money] + Just a -> do
  8353. 46.64 s [really-safe-money] + r <- Account.subtract a account
  8354. 46.64 s [really-safe-money] + Just $
  8355. 46.64 s [really-safe-money] + if r == Account.zero
  8356. 46.64 s [really-safe-money] + then M.delete currency m
  8357. 46.64 s [really-safe-money] + else M.insert currency r m
  8358. 46.64 s [really-safe-money]
  8359. 46.64 s [really-safe-money] -- | Try to convert every account to one currency.
  8360. 46.64 s [really-safe-money] --
  8361. 46.64 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:129:23-37
  8362. 46.64 s [really-safe-money] @@ -126,14 +126,14 @@
  8363. 46.64 s [really-safe-money] subtractAccount m _ (Positive (Amount 0)) = Just m
  8364. 46.64 s [really-safe-money] subtractAccount m _ (Negative (Amount 0)) = Just m
  8365. 46.64 s [really-safe-money] subtractAccount (MultiAccount m) currency account =
  8366. 46.64 s [really-safe-money] - fmap MultiAccount $ case M.lookup currency m of
  8367. 46.64 s [really-safe-money] - Nothing -> Just $ M.insert currency (Account.negate account) m
  8368. 46.64 s [really-safe-money] - Just a -> do
  8369. 46.64 s [really-safe-money] - r <- Account.subtract a account
  8370. 46.64 s [really-safe-money] - Just $
  8371. 46.64 s [really-safe-money] - if r == Account.zero
  8372. 46.64 s [really-safe-money] - then M.delete currency m
  8373. 46.64 s [really-safe-money] - else M.insert currency r m
  8374. 46.64 s [really-safe-money] + fmap MultiAccount $ case M.lookup currency m of
  8375. 46.64 s [really-safe-money] + Nothing -> Just $ M.insert currency (Account.negate account) m
  8376. 46.64 s [really-safe-money] + Just a -> do
  8377. 46.64 s [really-safe-money] + r <- Account.subtract a account
  8378. 46.64 s [really-safe-money] + Just $
  8379. 46.64 s [really-safe-money] + if r == Account.zero
  8380. 46.64 s [really-safe-money] + then M.delete currency m
  8381. 46.64 s [really-safe-money] + else M.insert currency r m
  8382. 46.64 s [really-safe-money]
  8383. 46.64 s [really-safe-money] -- | Try to convert every account to one currency.
  8384. 46.64 s [really-safe-money] --
  8385. 46.64 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:120:12-29
  8386. 46.64 s [really-safe-money] @@ -117,7 +117,7 @@
  8387. 46.64 s [really-safe-money] Just a -> do
  8388. 46.64 s [really-safe-money] r <- Account.add a account
  8389. 46.64 s [really-safe-money] Just $
  8390. 46.64 s [really-safe-money] - if r == Account.zero
  8391. 46.64 s [really-safe-money] + if True
  8392. 46.64 s [really-safe-money] then M.delete currency m
  8393. 46.64 s [really-safe-money] else M.insert currency r m
  8394. 46.64 s [really-safe-money]
  8395. 46.64 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:120:12-29
  8396. 46.64 s [really-safe-money] @@ -117,7 +117,7 @@
  8397. 46.64 s [really-safe-money] Just a -> do
  8398. 46.64 s [really-safe-money] r <- Account.add a account
  8399. 46.64 s [really-safe-money] Just $
  8400. 46.64 s [really-safe-money] - if r == Account.zero
  8401. 46.64 s [really-safe-money] + if False
  8402. 46.64 s [really-safe-money] then M.delete currency m
  8403. 46.64 s [really-safe-money] else M.insert currency r m
  8404. 46.64 s [really-safe-money]
  8405. 46.64 s [really-safe-money] added mutation Negate at src/Money/MultiAccount.hs:120:12-29
  8406. 46.64 s [really-safe-money] @@ -117,7 +117,7 @@
  8407. 46.64 s [really-safe-money] Just a -> do
  8408. 46.64 s [really-safe-money] r <- Account.add a account
  8409. 46.64 s [really-safe-money] Just $
  8410. 46.64 s [really-safe-money] - if r == Account.zero
  8411. 46.64 s [really-safe-money] + if not (r == Account.zero)
  8412. 46.64 s [really-safe-money] then M.delete currency m
  8413. 46.64 s [really-safe-money] else M.insert currency r m
  8414. 46.64 s [really-safe-money]
  8415. 46.64 s [really-safe-money] added mutation CondFlip at src/Money/MultiAccount.hs:120:9-37
  8416. 46.64 s [really-safe-money] @@ -117,9 +117,9 @@
  8417. 46.64 s [really-safe-money] Just a -> do
  8418. 46.64 s [really-safe-money] r <- Account.add a account
  8419. 46.64 s [really-safe-money] Just $
  8420. 46.64 s [really-safe-money] - if r == Account.zero
  8421. 46.64 s [really-safe-money] - then M.delete currency m
  8422. 46.64 s [really-safe-money] - else M.insert currency r m
  8423. 46.64 s [really-safe-money] + if r == Account.zero
  8424. 46.64 s [really-safe-money] + then M.delete currency m
  8425. 46.64 s [really-safe-money] + else M.insert currency r m
  8426. 46.64 s [really-safe-money]
  8427. 46.64 s [really-safe-money] -- | Add an 'Account' to a 'MultiAccount'
  8428. 46.64 s [really-safe-money] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
  8429. 46.64 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:115:23-37
  8430. 46.64 s [really-safe-money] @@ -112,14 +112,14 @@
  8431. 46.64 s [really-safe-money] addAccount m _ (Positive (Amount 0)) = Just m
  8432. 46.64 s [really-safe-money] addAccount m _ (Negative (Amount 0)) = Just m
  8433. 46.64 s [really-safe-money] addAccount (MultiAccount m) currency account =
  8434. 46.64 s [really-safe-money] - fmap MultiAccount $ case M.lookup currency m of
  8435. 46.64 s [really-safe-money] - Nothing -> Just $ M.insert currency account m
  8436. 46.64 s [really-safe-money] - Just a -> do
  8437. 46.64 s [really-safe-money] - r <- Account.add a account
  8438. 46.64 s [really-safe-money] - Just $
  8439. 46.64 s [really-safe-money] - if r == Account.zero
  8440. 46.64 s [really-safe-money] - then M.delete currency m
  8441. 46.64 s [really-safe-money] - else M.insert currency r m
  8442. 46.64 s [really-safe-money] + fmap MultiAccount $ case M.lookup currency m of
  8443. 46.64 s [really-safe-money] + Nothing -> Just $ M.insert currency account m
  8444. 46.64 s [really-safe-money] + Just a -> do
  8445. 46.64 s [really-safe-money] + r <- Account.add a account
  8446. 46.64 s [really-safe-money] + Just $
  8447. 46.64 s [really-safe-money] + if r == Account.zero
  8448. 46.64 s [really-safe-money] + then M.delete currency m
  8449. 46.64 s [really-safe-money] + else M.insert currency r m
  8450. 46.64 s [really-safe-money]
  8451. 46.64 s [really-safe-money] -- | Add an 'Account' to a 'MultiAccount'
  8452. 46.64 s [really-safe-money] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
  8453. 46.64 s [really-safe-money] added mutation RemoveCase at src/Money/MultiAccount.hs:115:23-37
  8454. 46.64 s [really-safe-money] @@ -112,14 +112,14 @@
  8455. 46.64 s [really-safe-money] addAccount m _ (Positive (Amount 0)) = Just m
  8456. 46.64 s [really-safe-money] addAccount m _ (Negative (Amount 0)) = Just m
  8457. 46.64 s [really-safe-money] addAccount (MultiAccount m) currency account =
  8458. 46.64 s [really-safe-money] - fmap MultiAccount $ case M.lookup currency m of
  8459. 46.64 s [really-safe-money] - Nothing -> Just $ M.insert currency account m
  8460. 46.64 s [really-safe-money] - Just a -> do
  8461. 46.64 s [really-safe-money] - r <- Account.add a account
  8462. 46.64 s [really-safe-money] - Just $
  8463. 46.64 s [really-safe-money] - if r == Account.zero
  8464. 46.64 s [really-safe-money] - then M.delete currency m
  8465. 46.64 s [really-safe-money] - else M.insert currency r m
  8466. 46.64 s [really-safe-money] + fmap MultiAccount $ case M.lookup currency m of
  8467. 46.64 s [really-safe-money] + Nothing -> Just $ M.insert currency account m
  8468. 46.64 s [really-safe-money] + Just a -> do
  8469. 46.64 s [really-safe-money] + r <- Account.add a account
  8470. 46.64 s [really-safe-money] + Just $
  8471. 46.64 s [really-safe-money] + if r == Account.zero
  8472. 46.64 s [really-safe-money] + then M.delete currency m
  8473. 46.64 s [really-safe-money] + else M.insert currency r m
  8474. 46.64 s [really-safe-money]
  8475. 46.64 s [really-safe-money] -- | Add an 'Account' to a 'MultiAccount'
  8476. 46.64 s [really-safe-money] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
  8477. 46.64 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:78:6-28
  8478. 46.64 s [really-safe-money] @@ -75,7 +75,7 @@
  8479. 46.64 s [really-safe-money]
  8480. 46.64 s [really-safe-money] fromAccount :: currency -> Account -> MultiAccount currency
  8481. 46.64 s [really-safe-money] fromAccount currency amount =
  8482. 46.64 s [really-safe-money] - if amount == Account.zero
  8483. 46.64 s [really-safe-money] + if True
  8484. 46.65 s [really-safe-money] then zero
  8485. 46.65 s [really-safe-money] else MultiAccount $ M.singleton currency amount
  8486. 46.65 s [really-safe-money]
  8487. 46.65 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:78:6-28
  8488. 46.65 s [really-safe-money] @@ -75,7 +75,7 @@
  8489. 46.65 s [really-safe-money]
  8490. 46.65 s [really-safe-money] fromAccount :: currency -> Account -> MultiAccount currency
  8491. 46.65 s [really-safe-money] fromAccount currency amount =
  8492. 46.65 s [really-safe-money] - if amount == Account.zero
  8493. 46.65 s [really-safe-money] + if False
  8494. 46.65 s [really-safe-money] then zero
  8495. 46.65 s [really-safe-money] else MultiAccount $ M.singleton currency amount
  8496. 46.65 s [really-safe-money]
  8497. 46.65 s [really-safe-money] added mutation Negate at src/Money/MultiAccount.hs:78:6-28
  8498. 46.65 s [really-safe-money] @@ -75,7 +75,7 @@
  8499. 46.65 s [really-safe-money]
  8500. 46.65 s [really-safe-money] fromAccount :: currency -> Account -> MultiAccount currency
  8501. 46.65 s [really-safe-money] fromAccount currency amount =
  8502. 46.65 s [really-safe-money] - if amount == Account.zero
  8503. 46.65 s [really-safe-money] + if not (amount == Account.zero)
  8504. 46.65 s [really-safe-money] then zero
  8505. 46.65 s [really-safe-money] else MultiAccount $ M.singleton currency amount
  8506. 46.65 s [really-safe-money]
  8507. 46.65 s [really-safe-money] added mutation CondFlip at src/Money/MultiAccount.hs:78:3-52
  8508. 46.65 s [really-safe-money] @@ -75,9 +75,9 @@
  8509. 46.65 s [really-safe-money]
  8510. 46.65 s [really-safe-money] fromAccount :: currency -> Account -> MultiAccount currency
  8511. 46.65 s [really-safe-money] fromAccount currency amount =
  8512. 46.65 s [really-safe-money] - if amount == Account.zero
  8513. 46.65 s [really-safe-money] - then zero
  8514. 46.65 s [really-safe-money] - else MultiAccount $ M.singleton currency amount
  8515. 46.65 s [really-safe-money] + if amount == Account.zero
  8516. 46.65 s [really-safe-money] + then zero
  8517. 46.65 s [really-safe-money] + else MultiAccount $ M.singleton currency amount
  8518. 46.65 s [really-safe-money]
  8519. 46.65 s [really-safe-money] -- | No money of any currency
  8520. 46.65 s [really-safe-money] zero :: MultiAccount currency
  8521. 46.65 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:69:13-30
  8522. 46.65 s [really-safe-money] @@ -66,7 +66,7 @@
  8523. 46.65 s [really-safe-money] [ genericValidate ma,
  8524. 46.65 s [really-safe-money] decorateMap m $ \_ a ->
  8525. 46.65 s [really-safe-money] declare "The account is not zero" $
  8526. 46.65 s [really-safe-money] - a /= Account.zero
  8527. 46.65 s [really-safe-money] + True
  8528. 46.65 s [really-safe-money] ]
  8529. 46.65 s [really-safe-money]
  8530. 46.65 s [really-safe-money] -- TODO no empty currencies
  8531. 46.65 s [really-safe-money] added mutation ConstBool at src/Money/MultiAccount.hs:69:13-30
  8532. 46.65 s [really-safe-money] @@ -66,7 +66,7 @@
  8533. 46.65 s [really-safe-money] [ genericValidate ma,
  8534. 46.65 s [really-safe-money] decorateMap m $ \_ a ->
  8535. 46.65 s [really-safe-money] declare "The account is not zero" $
  8536. 46.65 s [really-safe-money] - a /= Account.zero
  8537. 46.65 s [really-safe-money] + False
  8538. 46.65 s [really-safe-money] ]
  8539. 46.65 s [really-safe-money]
  8540. 46.65 s [really-safe-money] -- TODO no empty currencies
  8541. 46.65 s [really-safe-money] added mutation Negate at src/Money/MultiAccount.hs:69:13-30
  8542. 46.65 s [really-safe-money] @@ -66,7 +66,7 @@
  8543. 46.65 s [really-safe-money] [ genericValidate ma,
  8544. 46.65 s [really-safe-money] decorateMap m $ \_ a ->
  8545. 46.65 s [really-safe-money] declare "The account is not zero" $
  8546. 46.65 s [really-safe-money] - a /= Account.zero
  8547. 46.65 s [really-safe-money] + not (a /= Account.zero)
  8548. 46.65 s [really-safe-money] ]
  8549. 46.65 s [really-safe-money]
  8550. 46.65 s [really-safe-money] -- TODO no empty currencies
  8551. 46.65 s [really-safe-money] added mutation ListLit at src/Money/MultiAccount.hs:66:7-8
  8552. 46.65 s [really-safe-money] @@ -63,11 +63,7 @@
  8553. 46.65 s [really-safe-money] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
  8554. 46.65 s [really-safe-money] validate ma@(MultiAccount m) =
  8555. 46.65 s [really-safe-money] mconcat
  8556. 46.65 s [really-safe-money] - [ genericValidate ma,
  8557. 46.65 s [really-safe-money] - decorateMap m $ \_ a ->
  8558. 46.65 s [really-safe-money] - declare "The account is not zero" $
  8559. 46.65 s [really-safe-money] - a /= Account.zero
  8560. 46.65 s [really-safe-money] - ]
  8561. 46.65 s [really-safe-money] + []
  8562. 46.65 s [really-safe-money]
  8563. 46.65 s [really-safe-money] -- TODO no empty currencies
  8564. 46.65 s [really-safe-money]
  8565. 46.65 s [really-safe-money] added mutation ListLit at src/Money/MultiAccount.hs:66:7-8
  8566. 46.65 s [really-safe-money] @@ -63,11 +63,11 @@
  8567. 46.65 s [really-safe-money] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
  8568. 46.65 s [really-safe-money] validate ma@(MultiAccount m) =
  8569. 46.65 s [really-safe-money] mconcat
  8570. 46.65 s [really-safe-money] - [ genericValidate ma,
  8571. 46.65 s [really-safe-money] - decorateMap m $ \_ a ->
  8572. 46.65 s [really-safe-money] - declare "The account is not zero" $
  8573. 46.65 s [really-safe-money] - a /= Account.zero
  8574. 46.65 s [really-safe-money] - ]
  8575. 46.65 s [really-safe-money] + [ genericValidate ma,
  8576. 46.65 s [really-safe-money] + decorateMap m $ \_ a ->
  8577. 46.65 s [really-safe-money] + declare "The account is not zero" $
  8578. 46.65 s [really-safe-money] + a /= Account.zero
  8579. 46.65 s [really-safe-money] + ]
  8580. 46.65 s [really-safe-money]
  8581. 46.65 s [really-safe-money] -- TODO no empty currencies
  8582. 46.65 s [really-safe-money]
  8583. 46.65 s [really-safe-money] added 27 mutations
  8584. 47.23 s [really-safe-money] [11 of 12] Compiling Money.AccountOf ( src/Money/AccountOf.hs, dist/build/Money/AccountOf.p_o )
  8585. 47.25 s [really-safe-money] mutation: instrumenting Money.AccountOf
  8586. 47.25 s [really-safe-money] added mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  8587. 47.25 s [really-safe-money] @@ -177,11 +177,11 @@
  8588. 47.25 s [really-safe-money]
  8589. 47.25 s [really-safe-money] -- | See 'Account.distribute'
  8590. 47.25 s [really-safe-money] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  8591. 47.25 s [really-safe-money] -distribute (AccountOf a) w = case Account.distribute a w of
  8592. 47.25 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  8593. 47.25 s [really-safe-money] - DistributedZero -> DistributedZero
  8594. 47.25 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  8595. 47.25 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  8596. 47.25 s [really-safe-money] +distribute (AccountOf a) w = case Account.distribute a w of
  8597. 47.25 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  8598. 47.25 s [really-safe-money] + DistributedZero -> DistributedZero
  8599. 47.25 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  8600. 47.25 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  8601. 47.25 s [really-safe-money]
  8602. 47.25 s [really-safe-money] -- | The result of 'distribute'
  8603. 47.25 s [really-safe-money] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  8604. 47.25 s [really-safe-money] added mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  8605. 47.25 s [really-safe-money] @@ -177,11 +177,11 @@
  8606. 47.25 s [really-safe-money]
  8607. 47.25 s [really-safe-money] -- | See 'Account.distribute'
  8608. 47.25 s [really-safe-money] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  8609. 47.25 s [really-safe-money] -distribute (AccountOf a) w = case Account.distribute a w of
  8610. 47.25 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  8611. 47.25 s [really-safe-money] - DistributedZero -> DistributedZero
  8612. 47.25 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  8613. 47.25 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  8614. 47.25 s [really-safe-money] +distribute (AccountOf a) w = case Account.distribute a w of
  8615. 47.25 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  8616. 47.25 s [really-safe-money] + DistributedZero -> DistributedZero
  8617. 47.25 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  8618. 47.25 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  8619. 47.25 s [really-safe-money]
  8620. 47.25 s [really-safe-money] -- | The result of 'distribute'
  8621. 47.25 s [really-safe-money] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  8622. 47.25 s [really-safe-money] added mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  8623. 47.25 s [really-safe-money] @@ -177,11 +177,11 @@
  8624. 47.25 s [really-safe-money]
  8625. 47.25 s [really-safe-money] -- | See 'Account.distribute'
  8626. 47.25 s [really-safe-money] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  8627. 47.25 s [really-safe-money] -distribute (AccountOf a) w = case Account.distribute a w of
  8628. 47.25 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  8629. 47.25 s [really-safe-money] - DistributedZero -> DistributedZero
  8630. 47.25 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  8631. 47.25 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  8632. 47.25 s [really-safe-money] +distribute (AccountOf a) w = case Account.distribute a w of
  8633. 47.25 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  8634. 47.25 s [really-safe-money] + DistributedZero -> DistributedZero
  8635. 47.25 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  8636. 47.25 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  8637. 47.25 s [really-safe-money]
  8638. 47.25 s [really-safe-money] -- | The result of 'distribute'
  8639. 47.25 s [really-safe-money] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  8640. 47.25 s [really-safe-money] added mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  8641. 47.25 s [really-safe-money] @@ -177,11 +177,11 @@
  8642. 47.25 s [really-safe-money]
  8643. 47.25 s [really-safe-money] -- | See 'Account.distribute'
  8644. 47.25 s [really-safe-money] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  8645. 47.25 s [really-safe-money] -distribute (AccountOf a) w = case Account.distribute a w of
  8646. 47.25 s [really-safe-money] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  8647. 47.25 s [really-safe-money] - DistributedZero -> DistributedZero
  8648. 47.25 s [really-safe-money] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  8649. 47.25 s [really-safe-money] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  8650. 47.25 s [really-safe-money] +distribute (AccountOf a) w = case Account.distribute a w of
  8651. 47.25 s [really-safe-money] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  8652. 47.25 s [really-safe-money] + DistributedZero -> DistributedZero
  8653. 47.25 s [really-safe-money] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  8654. 47.25 s [really-safe-money] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  8655. 47.25 s [really-safe-money]
  8656. 47.25 s [really-safe-money] -- | The result of 'distribute'
  8657. 47.25 s [really-safe-money] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  8658. 47.25 s [really-safe-money] added 4 mutations
  8659. 47.54 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 )
  8660. 47.94 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/Account.dyn_o'
  8661. 47.94 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/AccountOf.dyn_o'
  8662. 48.19 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/Amount.dyn_o'
  8663. 48.19 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/AmountOf.dyn_o'
  8664. 48.19 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/ConversionRate.dyn_o'
  8665. 48.19 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/ConversionRateOf.dyn_o'
  8666. 48.19 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/Currency.dyn_o'
  8667. 48.19 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/MultiAccount.dyn_o'
  8668. 48.19 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/MultiAmount.dyn_o'
  8669. 48.19 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/QuantisationFactor.dyn_o'
  8670. 48.19 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Numeric/DecimalLiteral.dyn_o'
  8671. 48.19 s [really-safe-money] Warning: ignoring unrecognised input `dist/build/Paths_really_safe_money.dyn_o'
  8672. 49.12 s [really-safe-money] mutation-nix: manifest output at /nix/store/nfynk6q38yhj3djq59kjh39ii2l95n4m-really-safe-money-0.0.0.0-manifest:
  8673. 49.12 s [really-safe-money] total 296
  8674. 49.12 s [really-safe-money] drwxr-xr-x 2 nixbld nixbld 4096 May 13 16:10 .
  8675. 49.12 s [really-safe-money] drwxrwxr-t 238 nobody nixbld 28672 May 13 16:10 ..
  8676. 49.12 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 56505 May 13 16:10 Money.Account.json
  8677. 49.12 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 5229 May 13 16:10 Money.AccountOf.json
  8678. 49.12 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 54786 May 13 16:10 Money.Amount.json
  8679. 49.12 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 5033 May 13 16:10 Money.AmountOf.json
  8680. 49.12 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 8599 May 13 16:10 Money.ConversionRate.json
  8681. 49.12 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 2 May 13 16:10 Money.ConversionRateOf.json
  8682. 49.12 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 2 May 13 16:10 Money.Currency.json
  8683. 49.12 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 20330 May 13 16:10 Money.MultiAccount.json
  8684. 49.12 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 23239 May 13 16:10 Money.MultiAmount.json
  8685. 49.12 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 15615 May 13 16:10 Money.QuantisationFactor.json
  8686. 49.12 s [really-safe-money] -rw-r--r-- 1 nixbld nixbld 53101 May 13 16:10 Numeric.DecimalLiteral.json
  8687. 49.12 s [really-safe-money] Phase: haddockPhase
  8688. 49.13 s [really-safe-money] Phase: installPhase
  8689. 49.16 s [really-safe-money] Installing library in /nix/store/xa61xikjw2kgpvc3m0cc5r4rikakvs9d-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
  8690. 49.47 s [really-safe-money] Phase: fixupPhase
  8691. 49.49 s [really-safe-money] shrinking RPATHs of ELF executables and libraries in /nix/store/xa61xikjw2kgpvc3m0cc5r4rikakvs9d-really-safe-money-0.0.0.0
  8692. 49.50 s [really-safe-money] shrinking /nix/store/xa61xikjw2kgpvc3m0cc5r4rikakvs9d-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
  8693. 49.52 s [really-safe-money] checking for references to /build/ in /nix/store/xa61xikjw2kgpvc3m0cc5r4rikakvs9d-really-safe-money-0.0.0.0...
  8694. 49.55 s [really-safe-money] patching script interpreter paths in /nix/store/xa61xikjw2kgpvc3m0cc5r4rikakvs9d-really-safe-money-0.0.0.0
  8695. 49.55 s [really-safe-money] stripping (with command strip and flags -S -p) in /nix/store/xa61xikjw2kgpvc3m0cc5r4rikakvs9d-really-safe-money-0.0.0.0/lib
  8696. 49.71 s [really-safe-money] shrinking RPATHs of ELF executables and libraries in /nix/store/nfynk6q38yhj3djq59kjh39ii2l95n4m-really-safe-money-0.0.0.0-manifest
  8697. 49.71 s [really-safe-money] checking for references to /build/ in /nix/store/nfynk6q38yhj3djq59kjh39ii2l95n4m-really-safe-money-0.0.0.0-manifest...
  8698. 49.72 s [really-safe-money] patching script interpreter paths in /nix/store/nfynk6q38yhj3djq59kjh39ii2l95n4m-really-safe-money-0.0.0.0-manifest
  8699. 49.81 s Progress: 1 of 7 built
  8700. 49.86 s Building really-safe-money-autodocodec-source
  8701. 49.90 s Building really-safe-money-gen-source
  8702. 50.07 s [really-safe-money-autodocodec-source] Phase: setupCompilerEnvironmentPhase
  8703. 50.08 s [really-safe-money-autodocodec-source] Build with /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3.
  8704. 50.18 s [really-safe-money-gen-source] Phase: setupCompilerEnvironmentPhase
  8705. 50.19 s [really-safe-money-gen-source] Build with /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3.
  8706. 50.35 s [really-safe-money-autodocodec-source] Phase: unpackPhase
  8707. 50.36 s [really-safe-money-autodocodec-source] unpacking source archive /nix/store/8krpxqimxqvympfqdqxg1jzjg2jrcglb-really-safe-money-autodocodec
  8708. 50.36 s [really-safe-money-autodocodec-source] source root is really-safe-money-autodocodec
  8709. 50.37 s [really-safe-money-autodocodec-source] Phase: patchPhase
  8710. 50.38 s [really-safe-money-autodocodec-source] Phase: compileBuildDriverPhase
  8711. 50.39 s [really-safe-money-autodocodec-source] setupCompileFlags: -package-db=/build/tmp.7bsWD1EF18/setup-package.conf.d -threaded
  8712. 50.44 s [really-safe-money-autodocodec-source] [1 of 2] Compiling Main ( /nix/store/4mdp8nhyfddh7bllbi7xszz7k9955n79-Setup.hs, /build/tmp.7bsWD1EF18/Main.o )
  8713. 50.50 s [really-safe-money-autodocodec-source] [2 of 2] Linking Setup
  8714. 50.54 s [really-safe-money-gen-source] Phase: unpackPhase
  8715. 50.54 s [really-safe-money-gen-source] unpacking source archive /nix/store/igm3hbdpcwgfbdx9yjyf6d68w1ifih08-really-safe-money-gen
  8716. 50.55 s [really-safe-money-gen-source] source root is really-safe-money-gen
  8717. 50.56 s [really-safe-money-gen-source] Phase: patchPhase
  8718. 50.57 s [really-safe-money-gen-source] Phase: compileBuildDriverPhase
  8719. 50.57 s [really-safe-money-gen-source] setupCompileFlags: -package-db=/build/tmp.yxenrDyg5w/setup-package.conf.d -threaded
  8720. 50.62 s [really-safe-money-gen-source] [1 of 2] Compiling Main ( /nix/store/4mdp8nhyfddh7bllbi7xszz7k9955n79-Setup.hs, /build/tmp.yxenrDyg5w/Main.o )
  8721. 50.67 s [really-safe-money-gen-source] [2 of 2] Linking Setup
  8722. 51.75 s [really-safe-money-autodocodec-source] Phase: updateAutotoolsGnuConfigScriptsPhase
  8723. 51.77 s [really-safe-money-autodocodec-source] Phase: configurePhase
  8724. 51.77 s [really-safe-money-autodocodec-source] configureFlags: --verbose --prefix=/nix/store/al7lg8kns188ppz1b3kz15ddxk77z5c0-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.7bsWD1EF18/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
  8725. 51.78 s [really-safe-money-autodocodec-source] Using Parsec parser
  8726. 51.78 s [really-safe-money-autodocodec-source] Configuring really-safe-money-autodocodec-0.0.0.0...
  8727. 51.91 s [really-safe-money-gen-source] Phase: updateAutotoolsGnuConfigScriptsPhase
  8728. 51.93 s [really-safe-money-gen-source] Phase: configurePhase
  8729. 51.93 s [really-safe-money-gen-source] configureFlags: --verbose --prefix=/nix/store/w4nkbq86l33109ak3dwpv6bjsrj1y3n1-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.yxenrDyg5w/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
  8730. 51.94 s [really-safe-money-gen-source] Using Parsec parser
  8731. 51.94 s [really-safe-money-gen-source] Configuring really-safe-money-gen-0.0.0.0...
  8732. 52.41 s [really-safe-money-autodocodec-source] Dependency autodocodec: using autodocodec-0.5.0.0
  8733. 52.41 s [really-safe-money-autodocodec-source] Dependency base >=4.7 && <5: using base-4.20.2.0
  8734. 52.41 s [really-safe-money-autodocodec-source] Dependency really-safe-money: using really-safe-money-0.0.0.0
  8735. 52.41 s [really-safe-money-autodocodec-source] Source component graph: component lib
  8736. 52.41 s [really-safe-money-autodocodec-source] Configured component graph:
  8737. 52.41 s [really-safe-money-autodocodec-source] component really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk
  8738. 52.41 s [really-safe-money-autodocodec-source] include autodocodec-0.5.0.0-1mMvp4WI6JDKv9IH8Klk8Y
  8739. 52.41 s [really-safe-money-autodocodec-source] include base-4.20.2.0-64da
  8740. 52.41 s [really-safe-money-autodocodec-source] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8741. 52.41 s [really-safe-money-autodocodec-source] Linked component graph:
  8742. 52.41 s [really-safe-money-autodocodec-source] unit really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk
  8743. 52.41 s [really-safe-money-autodocodec-source] include autodocodec-0.5.0.0-1mMvp4WI6JDKv9IH8Klk8Y
  8744. 52.41 s [really-safe-money-autodocodec-source] include base-4.20.2.0-64da
  8745. 52.41 s [really-safe-money-autodocodec-source] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8746. 52.41 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
  8747. 52.41 s [really-safe-money-autodocodec-source] Ready component graph:
  8748. 52.41 s [really-safe-money-autodocodec-source] definite really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk
  8749. 52.41 s [really-safe-money-autodocodec-source] depends autodocodec-0.5.0.0-1mMvp4WI6JDKv9IH8Klk8Y
  8750. 52.41 s [really-safe-money-autodocodec-source] depends base-4.20.2.0-64da
  8751. 52.41 s [really-safe-money-autodocodec-source] depends really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8752. 52.41 s [really-safe-money-autodocodec-source] Using Cabal-3.12.1.0 compiled by ghc-9.10
  8753. 52.41 s [really-safe-money-autodocodec-source] Using compiler: ghc-9.10.3
  8754. 52.41 s [really-safe-money-autodocodec-source] Using install prefix:
  8755. 52.41 s [really-safe-money-autodocodec-source] /nix/store/al7lg8kns188ppz1b3kz15ddxk77z5c0-really-safe-money-autodocodec-source-0.0.0.0
  8756. 52.41 s [really-safe-money-autodocodec-source] Executables installed in:
  8757. 52.41 s [really-safe-money-autodocodec-source] /nix/store/al7lg8kns188ppz1b3kz15ddxk77z5c0-really-safe-money-autodocodec-source-0.0.0.0/bin
  8758. 52.41 s [really-safe-money-autodocodec-source] Libraries installed in:
  8759. 52.41 s [really-safe-money-autodocodec-source] /nix/store/al7lg8kns188ppz1b3kz15ddxk77z5c0-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
  8760. 52.41 s [really-safe-money-autodocodec-source] Dynamic Libraries installed in:
  8761. 52.41 s [really-safe-money-autodocodec-source] /nix/store/al7lg8kns188ppz1b3kz15ddxk77z5c0-really-safe-money-autodocodec-source-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6
  8762. 52.41 s [really-safe-money-autodocodec-source] Private executables installed in:
  8763. 52.41 s [really-safe-money-autodocodec-source] /nix/store/al7lg8kns188ppz1b3kz15ddxk77z5c0-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
  8764. 52.41 s [really-safe-money-autodocodec-source] Data files installed in:
  8765. 52.41 s [really-safe-money-autodocodec-source] /nix/store/al7lg8kns188ppz1b3kz15ddxk77z5c0-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
  8766. 52.41 s [really-safe-money-autodocodec-source] Documentation installed in: /share/doc/really-safe-money-autodocodec-0.0.0.0
  8767. 52.41 s [really-safe-money-autodocodec-source] Configuration files installed in:
  8768. 52.41 s [really-safe-money-autodocodec-source] /nix/store/al7lg8kns188ppz1b3kz15ddxk77z5c0-really-safe-money-autodocodec-source-0.0.0.0/etc
  8769. 52.42 s [really-safe-money-autodocodec-source] No alex found
  8770. 52.42 s [really-safe-money-autodocodec-source] Using ar found on system at:
  8771. 52.42 s [really-safe-money-autodocodec-source] /nix/store/iz5lckcsg66r223si2gck7csk2hihj0m-binutils-wrapper-2.44/bin/ar
  8772. 52.42 s [really-safe-money-autodocodec-source] No c2hs found
  8773. 52.42 s [really-safe-money-autodocodec-source] No cpphs found
  8774. 52.42 s [really-safe-money-autodocodec-source] No doctest found
  8775. 52.42 s [really-safe-money-autodocodec-source] Using gcc version 14.3.0 given by user at:
  8776. 52.42 s [really-safe-money-autodocodec-source] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/gcc
  8777. 52.42 s [really-safe-money-autodocodec-source] Using ghc version 9.10.3 found on system at:
  8778. 52.42 s [really-safe-money-autodocodec-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc
  8779. 52.42 s [really-safe-money-autodocodec-source] Using ghc-pkg version 9.10.3 found on system at:
  8780. 52.42 s [really-safe-money-autodocodec-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc-pkg-9.10.3
  8781. 52.42 s [really-safe-money-autodocodec-source] No ghcjs found
  8782. 52.42 s [really-safe-money-autodocodec-source] No ghcjs-pkg found
  8783. 52.42 s [really-safe-money-autodocodec-source] No greencard found
  8784. 52.42 s [really-safe-money-autodocodec-source] Using haddock version 2.31.1 found on system at:
  8785. 52.42 s [really-safe-money-autodocodec-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/haddock-ghc-9.10.3
  8786. 52.42 s [really-safe-money-autodocodec-source] No happy found
  8787. 52.42 s [really-safe-money-autodocodec-source] Using haskell-suite found on system at: haskell-suite-dummy-location
  8788. 52.42 s [really-safe-money-autodocodec-source] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location
  8789. 52.42 s [really-safe-money-autodocodec-source] No hmake found
  8790. 52.42 s [really-safe-money-autodocodec-source] Using hpc version 0.69 found on system at:
  8791. 52.42 s [really-safe-money-autodocodec-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hpc-ghc-9.10.3
  8792. 52.42 s [really-safe-money-autodocodec-source] Using hsc2hs version 0.68.10 found on system at:
  8793. 52.42 s [really-safe-money-autodocodec-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hsc2hs-ghc-9.10.3
  8794. 52.42 s [really-safe-money-autodocodec-source] Using hscolour version 1.25 found on system at:
  8795. 52.42 s [really-safe-money-autodocodec-source] /nix/store/f755skyzf4jvfx3crwq9mmh3x4lsaz8i-hscolour-1.25/bin/HsColour
  8796. 52.42 s [really-safe-money-autodocodec-source] No jhc found
  8797. 52.42 s [really-safe-money-autodocodec-source] Using ld found on system at:
  8798. 52.42 s [really-safe-money-autodocodec-source] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/ld
  8799. 52.42 s [really-safe-money-autodocodec-source] No pkg-config found
  8800. 52.42 s [really-safe-money-autodocodec-source] Using runghc version 9.10.3 found on system at:
  8801. 52.42 s [really-safe-money-autodocodec-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/runghc-9.10.3
  8802. 52.42 s [really-safe-money-autodocodec-source] Using strip version 2.44 found on system at:
  8803. 52.42 s [really-safe-money-autodocodec-source] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/strip
  8804. 52.42 s [really-safe-money-autodocodec-source] Using tar found on system at:
  8805. 52.42 s [really-safe-money-autodocodec-source] /nix/store/xl6pd2spjajwcpq09fnmnjv5psqmlmma-gnutar-1.35/bin/tar
  8806. 52.42 s [really-safe-money-autodocodec-source] No uhc found
  8807. 52.62 s [really-safe-money-gen-source] Dependency QuickCheck: using QuickCheck-2.15.0.1
  8808. 52.62 s [really-safe-money-gen-source] Dependency base >=4.7 && <5: using base-4.20.2.0
  8809. 52.62 s [really-safe-money-gen-source] Dependency genvalidity: using genvalidity-1.1.1.0
  8810. 52.62 s [really-safe-money-gen-source] Dependency genvalidity-containers: using genvalidity-containers-1.0.0.2
  8811. 52.62 s [really-safe-money-gen-source] Dependency really-safe-money: using really-safe-money-0.0.0.0
  8812. 52.62 s [really-safe-money-gen-source] Dependency QuickCheck: using QuickCheck-2.15.0.1
  8813. 52.62 s [really-safe-money-gen-source] Dependency base >=4.7 && <5: using base-4.20.2.0
  8814. 52.62 s [really-safe-money-gen-source] Dependency criterion: using criterion-1.6.4.0
  8815. 52.62 s [really-safe-money-gen-source] Dependency deepseq: using deepseq-1.5.0.0
  8816. 52.62 s [really-safe-money-gen-source] Dependency genvalidity: using genvalidity-1.1.1.0
  8817. 52.62 s [really-safe-money-gen-source] Dependency genvalidity-criterion: using genvalidity-criterion-1.1.0.0
  8818. 52.62 s [really-safe-money-gen-source] Dependency genvalidity-vector: using genvalidity-vector-1.0.0.0
  8819. 52.62 s [really-safe-money-gen-source] Dependency really-safe-money: using really-safe-money-0.0.0.0
  8820. 52.62 s [really-safe-money-gen-source] Dependency really-safe-money-gen: using really-safe-money-gen-0.0.0.0
  8821. 52.62 s [really-safe-money-gen-source] Dependency vector: using vector-0.13.2.0
  8822. 52.62 s [really-safe-money-gen-source] Source component graph:
  8823. 52.63 s [really-safe-money-gen-source] component lib
  8824. 52.63 s [really-safe-money-gen-source] component bench:really-safe-money-bench dependency lib
  8825. 52.63 s [really-safe-money-gen-source] Configured component graph:
  8826. 52.63 s [really-safe-money-gen-source] component really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53
  8827. 52.63 s [really-safe-money-gen-source] include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU
  8828. 52.63 s [really-safe-money-gen-source] include base-4.20.2.0-64da
  8829. 52.63 s [really-safe-money-gen-source] include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L
  8830. 52.63 s [really-safe-money-gen-source] include genvalidity-containers-1.0.0.2-DXaOCEBh8iJ1c8u2LwVlK1
  8831. 52.63 s [really-safe-money-gen-source] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8832. 52.63 s [really-safe-money-gen-source] component really-safe-money-gen-0.0.0.0-LP0fSqTOwvk9RMpsKSu0nN-really-safe-money-bench
  8833. 52.63 s [really-safe-money-gen-source] include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU
  8834. 52.63 s [really-safe-money-gen-source] include base-4.20.2.0-64da
  8835. 52.63 s [really-safe-money-gen-source] include criterion-1.6.4.0-ExZW8LB8ON09pSIfu9sGRN
  8836. 52.63 s [really-safe-money-gen-source] include deepseq-1.5.0.0-9a2c
  8837. 52.63 s [really-safe-money-gen-source] include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L
  8838. 52.63 s [really-safe-money-gen-source] include genvalidity-criterion-1.1.0.0-9pHw4wnFNz9EtFzK0UU3g3
  8839. 52.63 s [really-safe-money-gen-source] include genvalidity-vector-1.0.0.0-6KKiduowklk7hSxSW05Gxi
  8840. 52.63 s [really-safe-money-gen-source] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8841. 52.63 s [really-safe-money-gen-source] include really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53
  8842. 52.63 s [really-safe-money-gen-source] include vector-0.13.2.0-GDUCoiHhVuq2SKPTzzTr3a
  8843. 52.63 s [really-safe-money-gen-source] Linked component graph:
  8844. 52.63 s [really-safe-money-gen-source] unit really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53
  8845. 52.63 s [really-safe-money-gen-source] include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU
  8846. 52.63 s [really-safe-money-gen-source] include base-4.20.2.0-64da
  8847. 52.63 s [really-safe-money-gen-source] include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L
  8848. 52.63 s [really-safe-money-gen-source] include genvalidity-containers-1.0.0.2-DXaOCEBh8iJ1c8u2LwVlK1
  8849. 52.63 s [really-safe-money-gen-source] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8850. 52.63 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
  8851. 52.63 s [really-safe-money-gen-source] unit really-safe-money-gen-0.0.0.0-LP0fSqTOwvk9RMpsKSu0nN-really-safe-money-bench
  8852. 52.63 s [really-safe-money-gen-source] include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU
  8853. 52.63 s [really-safe-money-gen-source] include base-4.20.2.0-64da
  8854. 52.63 s [really-safe-money-gen-source] include criterion-1.6.4.0-ExZW8LB8ON09pSIfu9sGRN
  8855. 52.63 s [really-safe-money-gen-source] include deepseq-1.5.0.0-9a2c
  8856. 52.63 s [really-safe-money-gen-source] include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L
  8857. 52.63 s [really-safe-money-gen-source] include genvalidity-criterion-1.1.0.0-9pHw4wnFNz9EtFzK0UU3g3
  8858. 52.63 s [really-safe-money-gen-source] include genvalidity-vector-1.0.0.0-6KKiduowklk7hSxSW05Gxi
  8859. 52.63 s [really-safe-money-gen-source] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8860. 52.63 s [really-safe-money-gen-source] include really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53
  8861. 52.63 s [really-safe-money-gen-source] include vector-0.13.2.0-GDUCoiHhVuq2SKPTzzTr3a
  8862. 52.63 s [really-safe-money-gen-source] Ready component graph:
  8863. 52.63 s [really-safe-money-gen-source] definite really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53
  8864. 52.63 s [really-safe-money-gen-source] depends QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU
  8865. 52.63 s [really-safe-money-gen-source] depends base-4.20.2.0-64da
  8866. 52.63 s [really-safe-money-gen-source] depends genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L
  8867. 52.63 s [really-safe-money-gen-source] depends genvalidity-containers-1.0.0.2-DXaOCEBh8iJ1c8u2LwVlK1
  8868. 52.63 s [really-safe-money-gen-source] depends really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8869. 52.63 s [really-safe-money-gen-source] definite really-safe-money-gen-0.0.0.0-LP0fSqTOwvk9RMpsKSu0nN-really-safe-money-bench
  8870. 52.63 s [really-safe-money-gen-source] depends QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU
  8871. 52.63 s [really-safe-money-gen-source] depends base-4.20.2.0-64da
  8872. 52.63 s [really-safe-money-gen-source] depends criterion-1.6.4.0-ExZW8LB8ON09pSIfu9sGRN
  8873. 52.63 s [really-safe-money-gen-source] depends deepseq-1.5.0.0-9a2c
  8874. 52.63 s [really-safe-money-gen-source] depends genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L
  8875. 52.63 s [really-safe-money-gen-source] depends genvalidity-criterion-1.1.0.0-9pHw4wnFNz9EtFzK0UU3g3
  8876. 52.63 s [really-safe-money-gen-source] depends genvalidity-vector-1.0.0.0-6KKiduowklk7hSxSW05Gxi
  8877. 52.63 s [really-safe-money-gen-source] depends really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  8878. 52.63 s [really-safe-money-gen-source] depends really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53
  8879. 52.63 s [really-safe-money-gen-source] depends vector-0.13.2.0-GDUCoiHhVuq2SKPTzzTr3a
  8880. 52.63 s [really-safe-money-gen-source] Using Cabal-3.12.1.0 compiled by ghc-9.10
  8881. 52.63 s [really-safe-money-gen-source] Using compiler: ghc-9.10.3
  8882. 52.63 s [really-safe-money-gen-source] Using install prefix:
  8883. 52.63 s [really-safe-money-gen-source] /nix/store/w4nkbq86l33109ak3dwpv6bjsrj1y3n1-really-safe-money-gen-source-0.0.0.0
  8884. 52.63 s [really-safe-money-gen-source] Executables installed in:
  8885. 52.63 s [really-safe-money-gen-source] /nix/store/w4nkbq86l33109ak3dwpv6bjsrj1y3n1-really-safe-money-gen-source-0.0.0.0/bin
  8886. 52.63 s [really-safe-money-gen-source] Libraries installed in:
  8887. 52.63 s [really-safe-money-gen-source] /nix/store/w4nkbq86l33109ak3dwpv6bjsrj1y3n1-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
  8888. 52.63 s [really-safe-money-gen-source] Dynamic Libraries installed in:
  8889. 52.63 s [really-safe-money-gen-source] /nix/store/w4nkbq86l33109ak3dwpv6bjsrj1y3n1-really-safe-money-gen-source-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6
  8890. 52.63 s [really-safe-money-gen-source] Private executables installed in:
  8891. 52.63 s [really-safe-money-gen-source] /nix/store/w4nkbq86l33109ak3dwpv6bjsrj1y3n1-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
  8892. 52.63 s [really-safe-money-gen-source] Data files installed in:
  8893. 52.63 s [really-safe-money-gen-source] /nix/store/w4nkbq86l33109ak3dwpv6bjsrj1y3n1-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
  8894. 52.63 s [really-safe-money-gen-source] Documentation installed in: /share/doc/really-safe-money-gen-0.0.0.0
  8895. 52.63 s [really-safe-money-gen-source] Configuration files installed in:
  8896. 52.63 s [really-safe-money-gen-source] /nix/store/w4nkbq86l33109ak3dwpv6bjsrj1y3n1-really-safe-money-gen-source-0.0.0.0/etc
  8897. 52.63 s [really-safe-money-gen-source] No alex found
  8898. 52.63 s [really-safe-money-gen-source] Using ar found on system at:
  8899. 52.63 s [really-safe-money-gen-source] /nix/store/iz5lckcsg66r223si2gck7csk2hihj0m-binutils-wrapper-2.44/bin/ar
  8900. 52.63 s [really-safe-money-gen-source] No c2hs found
  8901. 52.63 s [really-safe-money-gen-source] No cpphs found
  8902. 52.63 s [really-safe-money-gen-source] No doctest found
  8903. 52.63 s [really-safe-money-gen-source] Using gcc version 14.3.0 given by user at:
  8904. 52.63 s [really-safe-money-gen-source] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/gcc
  8905. 52.63 s [really-safe-money-gen-source] Using ghc version 9.10.3 found on system at:
  8906. 52.63 s [really-safe-money-gen-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc
  8907. 52.63 s [really-safe-money-gen-source] Using ghc-pkg version 9.10.3 found on system at:
  8908. 52.63 s [really-safe-money-gen-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc-pkg-9.10.3
  8909. 52.63 s [really-safe-money-gen-source] No ghcjs found
  8910. 52.63 s [really-safe-money-gen-source] No ghcjs-pkg found
  8911. 52.63 s [really-safe-money-gen-source] No greencard found
  8912. 52.63 s [really-safe-money-gen-source] Using haddock version 2.31.1 found on system at:
  8913. 52.63 s [really-safe-money-gen-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/haddock-ghc-9.10.3
  8914. 52.63 s [really-safe-money-gen-source] No happy found
  8915. 52.63 s [really-safe-money-gen-source] Using haskell-suite found on system at: haskell-suite-dummy-location
  8916. 52.63 s [really-safe-money-gen-source] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location
  8917. 52.63 s [really-safe-money-gen-source] No hmake found
  8918. 52.63 s [really-safe-money-gen-source] Using hpc version 0.69 found on system at:
  8919. 52.63 s [really-safe-money-gen-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hpc-ghc-9.10.3
  8920. 52.63 s [really-safe-money-gen-source] Using hsc2hs version 0.68.10 found on system at:
  8921. 52.63 s [really-safe-money-gen-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hsc2hs-ghc-9.10.3
  8922. 52.63 s [really-safe-money-gen-source] Using hscolour version 1.25 found on system at:
  8923. 52.63 s [really-safe-money-gen-source] /nix/store/f755skyzf4jvfx3crwq9mmh3x4lsaz8i-hscolour-1.25/bin/HsColour
  8924. 52.63 s [really-safe-money-gen-source] No jhc found
  8925. 52.63 s [really-safe-money-gen-source] Using ld found on system at:
  8926. 52.63 s [really-safe-money-gen-source] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/ld
  8927. 52.63 s [really-safe-money-gen-source] No pkg-config found
  8928. 52.63 s [really-safe-money-gen-source] Using runghc version 9.10.3 found on system at:
  8929. 52.63 s [really-safe-money-gen-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/runghc-9.10.3
  8930. 52.63 s [really-safe-money-gen-source] Using strip version 2.44 found on system at:
  8931. 52.63 s [really-safe-money-gen-source] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/strip
  8932. 52.63 s [really-safe-money-gen-source] Using tar found on system at:
  8933. 52.63 s [really-safe-money-gen-source] /nix/store/xl6pd2spjajwcpq09fnmnjv5psqmlmma-gnutar-1.35/bin/tar
  8934. 52.63 s [really-safe-money-gen-source] No uhc found
  8935. 52.69 s [really-safe-money-autodocodec-source] Phase: buildPhase
  8936. 52.70 s [really-safe-money-autodocodec-source] Distribution quality errors:
  8937. 52.70 s [really-safe-money-autodocodec-source] [no-syn-desc] No 'synopsis' or 'description' field.
  8938. 52.70 s [really-safe-money-autodocodec-source] Distribution quality warnings:
  8939. 52.70 s [really-safe-money-autodocodec-source] [no-category] No 'category' field.
  8940. 52.70 s [really-safe-money-autodocodec-source] [no-maintainer] No 'maintainer' field.
  8941. 52.70 s [really-safe-money-autodocodec-source] [all-rights-reserved] The 'license' is AllRightsReserved. Is that really what
  8942. 52.70 s [really-safe-money-autodocodec-source] you want?
  8943. 52.70 s [really-safe-money-autodocodec-source] [missing-upper-bounds] On library, these packages miss upper bounds:
  8944. 52.70 s [really-safe-money-autodocodec-source] - autodocodec
  8945. 52.70 s [really-safe-money-autodocodec-source] - really-safe-money
  8946. 52.70 s [really-safe-money-autodocodec-source] Please add them. There is more information at https://pvp.haskell.org/
  8947. 52.70 s [really-safe-money-autodocodec-source] Note: the public hackage server would reject this package.
  8948. 52.70 s [really-safe-money-autodocodec-source] Building source dist for really-safe-money-autodocodec-0.0.0.0...
  8949. 52.72 s [really-safe-money-autodocodec-source] Source tarball created: dist/really-safe-money-autodocodec-0.0.0.0.tar.gz
  8950. 52.72 s [really-safe-money-autodocodec-source] Phase: haddockPhase
  8951. 52.73 s [really-safe-money-autodocodec-source] Phase: installPhase
  8952. 52.73 s [really-safe-money-autodocodec-source] Phase: fixupPhase
  8953. 52.76 s Progress: 2 of 6 built (1 building)
  8954. 52.81 s Building really-safe-money-autodocodec
  8955. 53.00 s [really-safe-money-gen-source] Phase: buildPhase
  8956. 53.07 s [really-safe-money-gen-source] Distribution quality errors:
  8957. 53.07 s [really-safe-money-gen-source] [no-syn-desc] No 'synopsis' or 'description' field.
  8958. 53.07 s [really-safe-money-gen-source] Distribution quality warnings:
  8959. 53.07 s [really-safe-money-gen-source] [no-category] No 'category' field.
  8960. 53.07 s [really-safe-money-gen-source] [no-maintainer] No 'maintainer' field.
  8961. 53.07 s [really-safe-money-gen-source] [all-rights-reserved] The 'license' is AllRightsReserved. Is that really what
  8962. 53.07 s [really-safe-money-gen-source] you want?
  8963. 53.07 s [really-safe-money-gen-source] [missing-upper-bounds] On library, these packages miss upper bounds:
  8964. 53.07 s [really-safe-money-gen-source] - QuickCheck
  8965. 53.07 s [really-safe-money-gen-source] - genvalidity
  8966. 53.07 s [really-safe-money-gen-source] - genvalidity-containers
  8967. 53.07 s [really-safe-money-gen-source] - really-safe-money
  8968. 53.07 s [really-safe-money-gen-source] Please add them. There is more information at https://pvp.haskell.org/
  8969. 53.07 s [really-safe-money-gen-source] Note: the public hackage server would reject this package.
  8970. 53.07 s [really-safe-money-gen-source] Building source dist for really-safe-money-gen-0.0.0.0...
  8971. 53.07 s [really-safe-money-gen-source] Source tarball created: dist/really-safe-money-gen-0.0.0.0.tar.gz
  8972. 53.07 s [really-safe-money-gen-source] Phase: haddockPhase
  8973. 53.07 s [really-safe-money-autodocodec] Phase: setupCompilerEnvironmentPhase
  8974. 53.07 s [really-safe-money-gen-source] Phase: installPhase
  8975. 53.08 s [really-safe-money-autodocodec] Build with /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3.
  8976. 53.08 s [really-safe-money-gen-source] Phase: fixupPhase
  8977. 53.08 s Progress: 3 of 6 built (1 building)
  8978. 53.35 s [really-safe-money-autodocodec] Phase: unpackPhase
  8979. 53.35 s [really-safe-money-autodocodec] unpacking source archive /nix/store/al7lg8kns188ppz1b3kz15ddxk77z5c0-really-safe-money-autodocodec-source-0.0.0.0/really-safe-money-autodocodec-0.0.0.0.tar.gz
  8980. 53.36 s [really-safe-money-autodocodec] source root is really-safe-money-autodocodec-0.0.0.0
  8981. 53.37 s [really-safe-money-autodocodec] setting SOURCE_DATE_EPOCH to timestamp 1778688644 of file "really-safe-money-autodocodec-0.0.0.0/test/Spec.hs"
  8982. 53.37 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
  8983. 53.37 s [really-safe-money-autodocodec] Phase: patchPhase
  8984. 53.38 s [really-safe-money-autodocodec] Phase: compileBuildDriverPhase
  8985. 53.39 s [really-safe-money-autodocodec] setupCompileFlags: -package-db=/build/tmp.nl3kWenk0j/setup-package.conf.d -threaded
  8986. 53.44 s [really-safe-money-autodocodec] [1 of 2] Compiling Main ( Setup.hs, /build/tmp.nl3kWenk0j/Main.o )
  8987. 53.48 s [really-safe-money-autodocodec] [2 of 2] Linking Setup
  8988. 54.88 s [really-safe-money-autodocodec] Phase: updateAutotoolsGnuConfigScriptsPhase
  8989. 54.90 s [really-safe-money-autodocodec] Phase: configurePhase
  8990. 54.91 s [really-safe-money-autodocodec] configureFlags: --verbose --prefix=/nix/store/z7d0pxvwgva7vya06a0z69dyixcs5sgb-really-safe-money-autodocodec-0.0.0.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --with-gcc=gcc --package-db=/build/tmp.nl3kWenk0j/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
  8991. 54.92 s [really-safe-money-autodocodec] Using Parsec parser
  8992. 54.92 s [really-safe-money-autodocodec] Configuring really-safe-money-autodocodec-0.0.0.0...
  8993. 56.41 s [really-safe-money-autodocodec] Dependency autodocodec: using autodocodec-0.5.0.0
  8994. 56.41 s [really-safe-money-autodocodec] Dependency base >=4.7 && <5: using base-4.20.2.0
  8995. 56.41 s [really-safe-money-autodocodec] Dependency really-safe-money: using really-safe-money-0.0.0.0
  8996. 56.41 s [really-safe-money-autodocodec] Source component graph: component lib
  8997. 56.41 s [really-safe-money-autodocodec] Configured component graph:
  8998. 56.41 s [really-safe-money-autodocodec] component really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk
  8999. 56.41 s [really-safe-money-autodocodec] include autodocodec-0.5.0.0-1mMvp4WI6JDKv9IH8Klk8Y
  9000. 56.41 s [really-safe-money-autodocodec] include base-4.20.2.0-64da
  9001. 56.41 s [really-safe-money-autodocodec] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  9002. 56.41 s [really-safe-money-autodocodec] Linked component graph:
  9003. 56.41 s [really-safe-money-autodocodec] unit really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk
  9004. 56.41 s [really-safe-money-autodocodec] include autodocodec-0.5.0.0-1mMvp4WI6JDKv9IH8Klk8Y
  9005. 56.41 s [really-safe-money-autodocodec] include base-4.20.2.0-64da
  9006. 56.41 s [really-safe-money-autodocodec] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  9007. 56.41 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
  9008. 56.41 s [really-safe-money-autodocodec] Ready component graph:
  9009. 56.41 s [really-safe-money-autodocodec] definite really-safe-money-autodocodec-0.0.0.0-6uQz3PYxbwUCTmvro4lDZk
  9010. 56.41 s [really-safe-money-autodocodec] depends autodocodec-0.5.0.0-1mMvp4WI6JDKv9IH8Klk8Y
  9011. 56.41 s [really-safe-money-autodocodec] depends base-4.20.2.0-64da
  9012. 56.41 s [really-safe-money-autodocodec] depends really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  9013. 56.41 s [really-safe-money-autodocodec] Using Cabal-3.12.1.0 compiled by ghc-9.10
  9014. 56.41 s [really-safe-money-autodocodec] Using compiler: ghc-9.10.3
  9015. 56.41 s [really-safe-money-autodocodec] Using install prefix:
  9016. 56.41 s [really-safe-money-autodocodec] /nix/store/z7d0pxvwgva7vya06a0z69dyixcs5sgb-really-safe-money-autodocodec-0.0.0.0
  9017. 56.41 s [really-safe-money-autodocodec] Executables installed in:
  9018. 56.41 s [really-safe-money-autodocodec] /nix/store/z7d0pxvwgva7vya06a0z69dyixcs5sgb-really-safe-money-autodocodec-0.0.0.0/bin
  9019. 56.41 s [really-safe-money-autodocodec] Libraries installed in:
  9020. 56.41 s [really-safe-money-autodocodec] /nix/store/z7d0pxvwgva7vya06a0z69dyixcs5sgb-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
  9021. 56.41 s [really-safe-money-autodocodec] Dynamic Libraries installed in:
  9022. 56.41 s [really-safe-money-autodocodec] /nix/store/z7d0pxvwgva7vya06a0z69dyixcs5sgb-really-safe-money-autodocodec-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6
  9023. 56.41 s [really-safe-money-autodocodec] Private executables installed in:
  9024. 56.41 s [really-safe-money-autodocodec] /nix/store/z7d0pxvwgva7vya06a0z69dyixcs5sgb-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
  9025. 56.41 s [really-safe-money-autodocodec] Data files installed in:
  9026. 56.41 s [really-safe-money-autodocodec] /nix/store/z7d0pxvwgva7vya06a0z69dyixcs5sgb-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
  9027. 56.41 s [really-safe-money-autodocodec] Documentation installed in:
  9028. 56.41 s [really-safe-money-autodocodec] /nix/store/z7d0pxvwgva7vya06a0z69dyixcs5sgb-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
  9029. 56.41 s [really-safe-money-autodocodec] Configuration files installed in:
  9030. 56.41 s [really-safe-money-autodocodec] /nix/store/z7d0pxvwgva7vya06a0z69dyixcs5sgb-really-safe-money-autodocodec-0.0.0.0/etc
  9031. 56.41 s [really-safe-money-autodocodec] No alex found
  9032. 56.41 s [really-safe-money-autodocodec] Using ar found on system at:
  9033. 56.41 s [really-safe-money-autodocodec] /nix/store/iz5lckcsg66r223si2gck7csk2hihj0m-binutils-wrapper-2.44/bin/ar
  9034. 56.41 s [really-safe-money-autodocodec] No c2hs found
  9035. 56.41 s [really-safe-money-autodocodec] No cpphs found
  9036. 56.41 s [really-safe-money-autodocodec] No doctest found
  9037. 56.41 s [really-safe-money-autodocodec] Using gcc version 14.3.0 given by user at:
  9038. 56.41 s [really-safe-money-autodocodec] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/gcc
  9039. 56.41 s [really-safe-money-autodocodec] Using ghc version 9.10.3 found on system at:
  9040. 56.41 s [really-safe-money-autodocodec] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc
  9041. 56.41 s [really-safe-money-autodocodec] Using ghc-pkg version 9.10.3 found on system at:
  9042. 56.41 s [really-safe-money-autodocodec] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc-pkg-9.10.3
  9043. 56.41 s [really-safe-money-autodocodec] No ghcjs found
  9044. 56.41 s [really-safe-money-autodocodec] No ghcjs-pkg found
  9045. 56.41 s [really-safe-money-autodocodec] No greencard found
  9046. 56.41 s [really-safe-money-autodocodec] Using haddock version 2.31.1 found on system at:
  9047. 56.41 s [really-safe-money-autodocodec] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/haddock-ghc-9.10.3
  9048. 56.41 s [really-safe-money-autodocodec] No happy found
  9049. 56.41 s [really-safe-money-autodocodec] Using haskell-suite found on system at: haskell-suite-dummy-location
  9050. 56.41 s [really-safe-money-autodocodec] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location
  9051. 56.41 s [really-safe-money-autodocodec] No hmake found
  9052. 56.41 s [really-safe-money-autodocodec] Using hpc version 0.69 found on system at:
  9053. 56.41 s [really-safe-money-autodocodec] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hpc-ghc-9.10.3
  9054. 56.41 s [really-safe-money-autodocodec] Using hsc2hs version 0.68.10 found on system at:
  9055. 56.41 s [really-safe-money-autodocodec] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hsc2hs-ghc-9.10.3
  9056. 56.41 s [really-safe-money-autodocodec] Using hscolour version 1.25 found on system at:
  9057. 56.41 s [really-safe-money-autodocodec] /nix/store/f755skyzf4jvfx3crwq9mmh3x4lsaz8i-hscolour-1.25/bin/HsColour
  9058. 56.41 s [really-safe-money-autodocodec] No jhc found
  9059. 56.41 s [really-safe-money-autodocodec] Using ld found on system at:
  9060. 56.41 s [really-safe-money-autodocodec] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/ld
  9061. 56.41 s [really-safe-money-autodocodec] No pkg-config found
  9062. 56.41 s [really-safe-money-autodocodec] Using runghc version 9.10.3 found on system at:
  9063. 56.41 s [really-safe-money-autodocodec] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/runghc-9.10.3
  9064. 56.41 s [really-safe-money-autodocodec] Using strip version 2.44 found on system at:
  9065. 56.41 s [really-safe-money-autodocodec] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/strip
  9066. 56.41 s [really-safe-money-autodocodec] Using tar found on system at:
  9067. 56.41 s [really-safe-money-autodocodec] /nix/store/xl6pd2spjajwcpq09fnmnjv5psqmlmma-gnutar-1.35/bin/tar
  9068. 56.41 s [really-safe-money-autodocodec] No uhc found
  9069. 56.78 s [really-safe-money-autodocodec] Phase: buildPhase
  9070. 56.78 s [really-safe-money-autodocodec] mutation-nix: setting MUTATION_MANIFEST_DIR=/nix/store/a266611cfdhdmlk5x3ax9s6vmpvn4c18-really-safe-money-autodocodec-0.0.0.0-manifest
  9071. 56.90 s [really-safe-money-autodocodec] Preprocessing library for really-safe-money-autodocodec-0.0.0.0...
  9072. 56.90 s [really-safe-money-autodocodec] Building library for really-safe-money-autodocodec-0.0.0.0...
  9073. 57.14 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 )
  9074. 57.28 s [really-safe-money-autodocodec] mutation: instrumenting Money.Account.Codec
  9075. 57.33 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Account/Codec.hs:79:11-24
  9076. 57.33 s [really-safe-money-autodocodec] @@ -76,6 +76,6 @@
  9077. 57.33 s [really-safe-money-autodocodec] <?> "Account"
  9078. 57.33 s [really-safe-money-autodocodec] where
  9079. 57.33 s [really-safe-money-autodocodec] f :: Integer -> Either String Account
  9080. 57.33 s [really-safe-money-autodocodec] - f i = case Account.fromMinimalQuantisations i of
  9081. 57.33 s [really-safe-money-autodocodec] - Nothing -> Left $ "Number did not fit into an account value: " <> show i
  9082. 57.33 s [really-safe-money-autodocodec] - Just a -> Right a
  9083. 57.33 s [really-safe-money-autodocodec] + f i = case Account.fromMinimalQuantisations i of
  9084. 57.33 s [really-safe-money-autodocodec] + Nothing -> Left $ "Number did not fit into an account value: " <> show i
  9085. 57.33 s [really-safe-money-autodocodec] + Just a -> Right a
  9086. 57.33 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Account/Codec.hs:79:11-24
  9087. 57.33 s [really-safe-money-autodocodec] @@ -76,6 +76,6 @@
  9088. 57.33 s [really-safe-money-autodocodec] <?> "Account"
  9089. 57.33 s [really-safe-money-autodocodec] where
  9090. 57.33 s [really-safe-money-autodocodec] f :: Integer -> Either String Account
  9091. 57.33 s [really-safe-money-autodocodec] - f i = case Account.fromMinimalQuantisations i of
  9092. 57.33 s [really-safe-money-autodocodec] - Nothing -> Left $ "Number did not fit into an account value: " <> show i
  9093. 57.33 s [really-safe-money-autodocodec] - Just a -> Right a
  9094. 57.33 s [really-safe-money-autodocodec] + f i = case Account.fromMinimalQuantisations i of
  9095. 57.33 s [really-safe-money-autodocodec] + Nothing -> Left $ "Number did not fit into an account value: " <> show i
  9096. 57.33 s [really-safe-money-autodocodec] + Just a -> Right a
  9097. 57.33 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Account/Codec.hs:51:33-76
  9098. 57.33 s [really-safe-money-autodocodec] @@ -48,7 +48,7 @@
  9099. 57.33 s [really-safe-money-autodocodec] where
  9100. 57.33 s [really-safe-money-autodocodec] f :: String -> Either String Account
  9101. 57.33 s [really-safe-money-autodocodec] f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9102. 57.33 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9103. 57.33 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords []
  9104. 57.33 s [really-safe-money-autodocodec] Just a -> Right a
  9105. 57.33 s [really-safe-money-autodocodec] g :: Account -> String
  9106. 57.33 s [really-safe-money-autodocodec] g = show . Account.toMinimalQuantisations
  9107. 57.33 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Account/Codec.hs:51:33-76
  9108. 57.33 s [really-safe-money-autodocodec] @@ -48,7 +48,7 @@
  9109. 57.33 s [really-safe-money-autodocodec] where
  9110. 57.33 s [really-safe-money-autodocodec] f :: String -> Either String Account
  9111. 57.33 s [really-safe-money-autodocodec] f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9112. 57.33 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9113. 57.33 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9114. 57.33 s [really-safe-money-autodocodec] Just a -> Right a
  9115. 57.33 s [really-safe-money-autodocodec] g :: Account -> String
  9116. 57.33 s [really-safe-money-autodocodec] g = show . Account.toMinimalQuantisations
  9117. 57.33 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Account/Codec.hs:50:11-24
  9118. 57.33 s [really-safe-money-autodocodec] @@ -47,9 +47,9 @@
  9119. 57.33 s [really-safe-money-autodocodec] codecViaString = bimapCodec f g stringCodec <?> "Account"
  9120. 57.33 s [really-safe-money-autodocodec] where
  9121. 57.33 s [really-safe-money-autodocodec] f :: String -> Either String Account
  9122. 57.33 s [really-safe-money-autodocodec] - f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9123. 57.33 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9124. 57.33 s [really-safe-money-autodocodec] - Just a -> Right a
  9125. 57.33 s [really-safe-money-autodocodec] + f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9126. 57.33 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9127. 57.33 s [really-safe-money-autodocodec] + Just a -> Right a
  9128. 57.33 s [really-safe-money-autodocodec] g :: Account -> String
  9129. 57.33 s [really-safe-money-autodocodec] g = show . Account.toMinimalQuantisations
  9130. 57.33 s [really-safe-money-autodocodec]
  9131. 57.33 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Account/Codec.hs:50:11-24
  9132. 57.33 s [really-safe-money-autodocodec] @@ -47,9 +47,9 @@
  9133. 57.34 s [really-safe-money-autodocodec] codecViaString = bimapCodec f g stringCodec <?> "Account"
  9134. 57.34 s [really-safe-money-autodocodec] where
  9135. 57.34 s [really-safe-money-autodocodec] f :: String -> Either String Account
  9136. 57.34 s [really-safe-money-autodocodec] - f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9137. 57.34 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9138. 57.34 s [really-safe-money-autodocodec] - Just a -> Right a
  9139. 57.34 s [really-safe-money-autodocodec] + f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9140. 57.34 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9141. 57.34 s [really-safe-money-autodocodec] + Just a -> Right a
  9142. 57.34 s [really-safe-money-autodocodec] g :: Account -> String
  9143. 57.34 s [really-safe-money-autodocodec] g = show . Account.toMinimalQuantisations
  9144. 57.34 s [really-safe-money-autodocodec]
  9145. 57.34 s [really-safe-money-autodocodec] added 6 mutations
  9146. 57.87 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 )
  9147. 57.87 s [really-safe-money-autodocodec] mutation: instrumenting Money.AccountOf.Codec
  9148. 57.87 s [really-safe-money-autodocodec] added 0 mutations
  9149. 57.90 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 )
  9150. 57.91 s [really-safe-money-autodocodec] mutation: instrumenting Money.Amount.Codec
  9151. 57.91 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:47:33-75
  9152. 57.91 s [really-safe-money-autodocodec] @@ -44,7 +44,7 @@
  9153. 57.91 s [really-safe-money-autodocodec] where
  9154. 57.91 s [really-safe-money-autodocodec] f :: String -> Either String Amount
  9155. 57.91 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9156. 57.91 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9157. 57.91 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords []
  9158. 57.91 s [really-safe-money-autodocodec] Just i ->
  9159. 57.91 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9160. 57.91 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9161. 57.91 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:47:33-75
  9162. 57.91 s [really-safe-money-autodocodec] @@ -44,7 +44,7 @@
  9163. 57.91 s [really-safe-money-autodocodec] where
  9164. 57.91 s [really-safe-money-autodocodec] f :: String -> Either String Amount
  9165. 57.91 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9166. 57.91 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9167. 57.91 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9168. 57.91 s [really-safe-money-autodocodec] Just i ->
  9169. 57.91 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9170. 57.91 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9171. 57.91 s [really-safe-money-autodocodec] added mutation ConstBool at src/Money/Amount/Codec.hs:49:12-59
  9172. 57.91 s [really-safe-money-autodocodec] @@ -46,7 +46,7 @@
  9173. 57.91 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9174. 57.91 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9175. 57.91 s [really-safe-money-autodocodec] Just i ->
  9176. 57.91 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9177. 57.91 s [really-safe-money-autodocodec] + if True
  9178. 57.91 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9179. 57.91 s [really-safe-money-autodocodec] else
  9180. 57.91 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9181. 57.91 s [really-safe-money-autodocodec] added mutation ConstBool at src/Money/Amount/Codec.hs:49:12-59
  9182. 57.91 s [really-safe-money-autodocodec] @@ -46,7 +46,7 @@
  9183. 57.91 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9184. 57.91 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9185. 57.91 s [really-safe-money-autodocodec] Just i ->
  9186. 57.91 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9187. 57.91 s [really-safe-money-autodocodec] + if False
  9188. 57.91 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9189. 57.91 s [really-safe-money-autodocodec] else
  9190. 57.91 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9191. 57.91 s [really-safe-money-autodocodec] added mutation Negate at src/Money/Amount/Codec.hs:49:12-59
  9192. 57.91 s [really-safe-money-autodocodec] @@ -46,7 +46,7 @@
  9193. 57.91 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9194. 57.91 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9195. 57.91 s [really-safe-money-autodocodec] Just i ->
  9196. 57.91 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9197. 57.91 s [really-safe-money-autodocodec] + if not ((i :: Integer) < toInteger (minBound :: Word64))
  9198. 57.91 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9199. 57.91 s [really-safe-money-autodocodec] else
  9200. 57.91 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9201. 57.91 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:50:31-84
  9202. 57.91 s [really-safe-money-autodocodec] @@ -47,7 +47,7 @@
  9203. 57.91 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9204. 57.91 s [really-safe-money-autodocodec] Just i ->
  9205. 57.91 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9206. 57.91 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9207. 57.91 s [really-safe-money-autodocodec] + then Left $ unwords []
  9208. 57.91 s [really-safe-money-autodocodec] else
  9209. 57.91 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9210. 57.91 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9211. 57.91 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:50:31-84
  9212. 57.91 s [really-safe-money-autodocodec] @@ -47,7 +47,7 @@
  9213. 57.91 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9214. 57.91 s [really-safe-money-autodocodec] Just i ->
  9215. 57.91 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9216. 57.91 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9217. 57.91 s [really-safe-money-autodocodec] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9218. 57.92 s [really-safe-money-autodocodec] else
  9219. 57.92 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9220. 57.92 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9221. 57.92 s [really-safe-money-autodocodec] added mutation ConstBool at src/Money/Amount/Codec.hs:52:16-63
  9222. 57.92 s [really-safe-money-autodocodec] @@ -49,7 +49,7 @@
  9223. 57.92 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9224. 57.92 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9225. 57.92 s [really-safe-money-autodocodec] else
  9226. 57.92 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9227. 57.92 s [really-safe-money-autodocodec] + if True
  9228. 57.92 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9229. 57.92 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9230. 57.92 s [really-safe-money-autodocodec] g :: Amount -> String
  9231. 57.92 s [really-safe-money-autodocodec] added mutation ConstBool at src/Money/Amount/Codec.hs:52:16-63
  9232. 57.92 s [really-safe-money-autodocodec] @@ -49,7 +49,7 @@
  9233. 57.92 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9234. 57.92 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9235. 57.92 s [really-safe-money-autodocodec] else
  9236. 57.92 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9237. 57.92 s [really-safe-money-autodocodec] + if False
  9238. 57.92 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9239. 57.92 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9240. 57.92 s [really-safe-money-autodocodec] g :: Amount -> String
  9241. 57.92 s [really-safe-money-autodocodec] added mutation Negate at src/Money/Amount/Codec.hs:52:16-63
  9242. 57.92 s [really-safe-money-autodocodec] @@ -49,7 +49,7 @@
  9243. 57.92 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9244. 57.92 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9245. 57.92 s [really-safe-money-autodocodec] else
  9246. 57.92 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9247. 57.92 s [really-safe-money-autodocodec] + if not ((i :: Integer) > toInteger (maxBound :: Word64))
  9248. 57.92 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9249. 57.92 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9250. 57.92 s [really-safe-money-autodocodec] g :: Amount -> String
  9251. 57.92 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:53:35-90
  9252. 57.92 s [really-safe-money-autodocodec] @@ -50,7 +50,7 @@
  9253. 57.92 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9254. 57.92 s [really-safe-money-autodocodec] else
  9255. 57.92 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9256. 57.92 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9257. 57.92 s [really-safe-money-autodocodec] + then Left $ unwords []
  9258. 57.92 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9259. 57.92 s [really-safe-money-autodocodec] g :: Amount -> String
  9260. 57.92 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9261. 57.92 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:53:35-90
  9262. 57.92 s [really-safe-money-autodocodec] @@ -50,7 +50,7 @@
  9263. 57.92 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9264. 57.92 s [really-safe-money-autodocodec] else
  9265. 57.92 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9266. 57.92 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9267. 57.92 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9268. 57.92 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9269. 57.92 s [really-safe-money-autodocodec] g :: Amount -> String
  9270. 57.92 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9271. 57.92 s [really-safe-money-autodocodec] added mutation CondFlip at src/Money/Amount/Codec.hs:52:13-86
  9272. 57.92 s [really-safe-money-autodocodec] @@ -49,9 +49,9 @@
  9273. 57.92 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9274. 57.92 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9275. 57.92 s [really-safe-money-autodocodec] else
  9276. 57.92 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9277. 57.92 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9278. 57.92 s [really-safe-money-autodocodec] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9279. 57.92 s [really-safe-money-autodocodec] + if (i :: Integer) > toInteger (maxBound :: Word64)
  9280. 57.92 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9281. 57.92 s [really-safe-money-autodocodec] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9282. 57.92 s [really-safe-money-autodocodec] g :: Amount -> String
  9283. 57.92 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9284. 57.92 s [really-safe-money-autodocodec]
  9285. 57.92 s [really-safe-money-autodocodec] added mutation CondFlip at src/Money/Amount/Codec.hs:49:9-86
  9286. 57.92 s [really-safe-money-autodocodec] @@ -46,12 +46,12 @@
  9287. 57.92 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9288. 57.92 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9289. 57.92 s [really-safe-money-autodocodec] Just i ->
  9290. 57.92 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9291. 57.92 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9292. 57.92 s [really-safe-money-autodocodec] - else
  9293. 57.92 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9294. 57.92 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9295. 57.92 s [really-safe-money-autodocodec] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9296. 57.92 s [really-safe-money-autodocodec] + if (i :: Integer) < toInteger (minBound :: Word64)
  9297. 57.92 s [really-safe-money-autodocodec] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9298. 57.92 s [really-safe-money-autodocodec] + else
  9299. 57.92 s [really-safe-money-autodocodec] + if (i :: Integer) > toInteger (maxBound :: Word64)
  9300. 57.92 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9301. 57.92 s [really-safe-money-autodocodec] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9302. 57.92 s [really-safe-money-autodocodec] g :: Amount -> String
  9303. 57.92 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9304. 57.92 s [really-safe-money-autodocodec]
  9305. 57.92 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Amount/Codec.hs:46:11-86
  9306. 57.92 s [really-safe-money-autodocodec] @@ -43,15 +43,15 @@
  9307. 57.92 s [really-safe-money-autodocodec] codecViaString = bimapCodec f g stringCodec <?> "Amount"
  9308. 57.92 s [really-safe-money-autodocodec] where
  9309. 57.92 s [really-safe-money-autodocodec] f :: String -> Either String Amount
  9310. 57.92 s [really-safe-money-autodocodec] - f s = case readMaybe s of
  9311. 57.92 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9312. 57.92 s [really-safe-money-autodocodec] - Just i ->
  9313. 57.92 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9314. 57.92 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9315. 57.92 s [really-safe-money-autodocodec] - else
  9316. 57.92 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9317. 57.92 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9318. 57.92 s [really-safe-money-autodocodec] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9319. 57.92 s [really-safe-money-autodocodec] + f s = case readMaybe s of
  9320. 57.92 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9321. 57.92 s [really-safe-money-autodocodec] + Just i ->
  9322. 57.92 s [really-safe-money-autodocodec] + if (i :: Integer) < toInteger (minBound :: Word64)
  9323. 57.92 s [really-safe-money-autodocodec] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9324. 57.92 s [really-safe-money-autodocodec] + else
  9325. 57.92 s [really-safe-money-autodocodec] + if (i :: Integer) > toInteger (maxBound :: Word64)
  9326. 57.92 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9327. 57.92 s [really-safe-money-autodocodec] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9328. 57.92 s [really-safe-money-autodocodec] g :: Amount -> String
  9329. 57.92 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9330. 57.92 s [really-safe-money-autodocodec]
  9331. 57.92 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Amount/Codec.hs:46:11-86
  9332. 57.92 s [really-safe-money-autodocodec] @@ -43,15 +43,15 @@
  9333. 57.92 s [really-safe-money-autodocodec] codecViaString = bimapCodec f g stringCodec <?> "Amount"
  9334. 57.92 s [really-safe-money-autodocodec] where
  9335. 57.92 s [really-safe-money-autodocodec] f :: String -> Either String Amount
  9336. 57.92 s [really-safe-money-autodocodec] - f s = case readMaybe s of
  9337. 57.92 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9338. 57.92 s [really-safe-money-autodocodec] - Just i ->
  9339. 57.92 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9340. 57.92 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9341. 57.92 s [really-safe-money-autodocodec] - else
  9342. 57.92 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9343. 57.92 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9344. 57.92 s [really-safe-money-autodocodec] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9345. 57.92 s [really-safe-money-autodocodec] + f s = case readMaybe s of
  9346. 57.92 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9347. 57.92 s [really-safe-money-autodocodec] + Just i ->
  9348. 57.92 s [really-safe-money-autodocodec] + if (i :: Integer) < toInteger (minBound :: Word64)
  9349. 57.92 s [really-safe-money-autodocodec] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9350. 57.93 s [really-safe-money-autodocodec] + else
  9351. 57.93 s [really-safe-money-autodocodec] + if (i :: Integer) > toInteger (maxBound :: Word64)
  9352. 57.93 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9353. 57.93 s [really-safe-money-autodocodec] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9354. 57.93 s [really-safe-money-autodocodec] g :: Amount -> String
  9355. 57.93 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9356. 57.93 s [really-safe-money-autodocodec]
  9357. 57.93 s [really-safe-money-autodocodec] added 16 mutations
  9358. 58.08 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 )
  9359. 58.16 s [really-safe-money-autodocodec] mutation: instrumenting Money.AmountOf.Codec
  9360. 58.16 s [really-safe-money-autodocodec] added 0 mutations
  9361. 58.16 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 )
  9362. 58.16 s [really-safe-money-autodocodec] mutation: instrumenting Money.QuantisationFactor.Codec
  9363. 58.16 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/QuantisationFactor/Codec.hs:41:11-26
  9364. 58.16 s [really-safe-money-autodocodec] @@ -38,6 +38,6 @@
  9365. 58.16 s [really-safe-money-autodocodec] codec
  9366. 58.16 s [really-safe-money-autodocodec] <?> "QuantisationFactor"
  9367. 58.16 s [really-safe-money-autodocodec] where
  9368. 58.16 s [really-safe-money-autodocodec] - f w = case QuantisationFactor.fromWord32 w of
  9369. 58.16 s [really-safe-money-autodocodec] - Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  9370. 58.16 s [really-safe-money-autodocodec] - Just qf -> Right qf
  9371. 58.16 s [really-safe-money-autodocodec] + f w = case QuantisationFactor.fromWord32 w of
  9372. 58.16 s [really-safe-money-autodocodec] + Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  9373. 58.16 s [really-safe-money-autodocodec] + Just qf -> Right qf
  9374. 58.16 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/QuantisationFactor/Codec.hs:41:11-26
  9375. 58.16 s [really-safe-money-autodocodec] @@ -38,6 +38,6 @@
  9376. 58.16 s [really-safe-money-autodocodec] codec
  9377. 58.16 s [really-safe-money-autodocodec] <?> "QuantisationFactor"
  9378. 58.16 s [really-safe-money-autodocodec] where
  9379. 58.16 s [really-safe-money-autodocodec] - f w = case QuantisationFactor.fromWord32 w of
  9380. 58.16 s [really-safe-money-autodocodec] - Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  9381. 58.16 s [really-safe-money-autodocodec] - Just qf -> Right qf
  9382. 58.16 s [really-safe-money-autodocodec] + f w = case QuantisationFactor.fromWord32 w of
  9383. 58.16 s [really-safe-money-autodocodec] + Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  9384. 58.16 s [really-safe-money-autodocodec] + Just qf -> Right qf
  9385. 58.16 s [really-safe-money-autodocodec] added 2 mutations
  9386. 58.19 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 )
  9387. 58.20 s [really-safe-money-autodocodec] mutation: instrumenting Numeric.DecimalLiteral.Codec
  9388. 58.20 s [really-safe-money-autodocodec] added mutation ListLit at src/Numeric/DecimalLiteral/Codec.hs:40:33-82
  9389. 58.20 s [really-safe-money-autodocodec] @@ -37,5 +37,5 @@
  9390. 58.20 s [really-safe-money-autodocodec] where
  9391. 58.20 s [really-safe-money-autodocodec] f :: String -> Either String DecimalLiteral
  9392. 58.20 s [really-safe-money-autodocodec] f s = case DecimalLiteral.fromString s of
  9393. 58.20 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9394. 58.20 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords []
  9395. 58.20 s [really-safe-money-autodocodec] Just a -> Right a
  9396. 58.20 s [really-safe-money-autodocodec] added mutation ListLit at src/Numeric/DecimalLiteral/Codec.hs:40:33-82
  9397. 58.20 s [really-safe-money-autodocodec] @@ -37,5 +37,5 @@
  9398. 58.20 s [really-safe-money-autodocodec] where
  9399. 58.20 s [really-safe-money-autodocodec] f :: String -> Either String DecimalLiteral
  9400. 58.20 s [really-safe-money-autodocodec] f s = case DecimalLiteral.fromString s of
  9401. 58.20 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9402. 58.20 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9403. 58.20 s [really-safe-money-autodocodec] Just a -> Right a
  9404. 58.20 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Numeric/DecimalLiteral/Codec.hs:39:11-24
  9405. 58.20 s [really-safe-money-autodocodec] @@ -36,6 +36,6 @@
  9406. 58.20 s [really-safe-money-autodocodec] codecViaString = bimapCodec f DecimalLiteral.toString stringCodec <?> "DecimalLiteral"
  9407. 58.20 s [really-safe-money-autodocodec] where
  9408. 58.20 s [really-safe-money-autodocodec] f :: String -> Either String DecimalLiteral
  9409. 58.20 s [really-safe-money-autodocodec] - f s = case DecimalLiteral.fromString s of
  9410. 58.20 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9411. 58.20 s [really-safe-money-autodocodec] - Just a -> Right a
  9412. 58.20 s [really-safe-money-autodocodec] + f s = case DecimalLiteral.fromString s of
  9413. 58.20 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9414. 58.20 s [really-safe-money-autodocodec] + Just a -> Right a
  9415. 58.20 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Numeric/DecimalLiteral/Codec.hs:39:11-24
  9416. 58.20 s [really-safe-money-autodocodec] @@ -36,6 +36,6 @@
  9417. 58.20 s [really-safe-money-autodocodec] codecViaString = bimapCodec f DecimalLiteral.toString stringCodec <?> "DecimalLiteral"
  9418. 58.20 s [really-safe-money-autodocodec] where
  9419. 58.20 s [really-safe-money-autodocodec] f :: String -> Either String DecimalLiteral
  9420. 58.20 s [really-safe-money-autodocodec] - f s = case DecimalLiteral.fromString s of
  9421. 58.20 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9422. 58.20 s [really-safe-money-autodocodec] - Just a -> Right a
  9423. 58.20 s [really-safe-money-autodocodec] + f s = case DecimalLiteral.fromString s of
  9424. 58.20 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9425. 58.20 s [really-safe-money-autodocodec] + Just a -> Right a
  9426. 58.20 s [really-safe-money-autodocodec] added 4 mutations
  9427. 58.28 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 )
  9428. 58.60 s [really-safe-money-autodocodec] [1 of 7] Compiling Money.Account.Codec ( src/Money/Account/Codec.hs, dist/build/Money/Account/Codec.p_o )
  9429. 58.63 s [really-safe-money-autodocodec] mutation: instrumenting Money.Account.Codec
  9430. 58.69 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Account/Codec.hs:79:11-24
  9431. 58.69 s [really-safe-money-autodocodec] @@ -76,6 +76,6 @@
  9432. 58.69 s [really-safe-money-autodocodec] <?> "Account"
  9433. 58.69 s [really-safe-money-autodocodec] where
  9434. 58.69 s [really-safe-money-autodocodec] f :: Integer -> Either String Account
  9435. 58.69 s [really-safe-money-autodocodec] - f i = case Account.fromMinimalQuantisations i of
  9436. 58.69 s [really-safe-money-autodocodec] - Nothing -> Left $ "Number did not fit into an account value: " <> show i
  9437. 58.69 s [really-safe-money-autodocodec] - Just a -> Right a
  9438. 58.69 s [really-safe-money-autodocodec] + f i = case Account.fromMinimalQuantisations i of
  9439. 58.69 s [really-safe-money-autodocodec] + Nothing -> Left $ "Number did not fit into an account value: " <> show i
  9440. 58.69 s [really-safe-money-autodocodec] + Just a -> Right a
  9441. 58.69 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Account/Codec.hs:79:11-24
  9442. 58.69 s [really-safe-money-autodocodec] @@ -76,6 +76,6 @@
  9443. 58.69 s [really-safe-money-autodocodec] <?> "Account"
  9444. 58.69 s [really-safe-money-autodocodec] where
  9445. 58.69 s [really-safe-money-autodocodec] f :: Integer -> Either String Account
  9446. 58.69 s [really-safe-money-autodocodec] - f i = case Account.fromMinimalQuantisations i of
  9447. 58.69 s [really-safe-money-autodocodec] - Nothing -> Left $ "Number did not fit into an account value: " <> show i
  9448. 58.69 s [really-safe-money-autodocodec] - Just a -> Right a
  9449. 58.69 s [really-safe-money-autodocodec] + f i = case Account.fromMinimalQuantisations i of
  9450. 58.69 s [really-safe-money-autodocodec] + Nothing -> Left $ "Number did not fit into an account value: " <> show i
  9451. 58.69 s [really-safe-money-autodocodec] + Just a -> Right a
  9452. 58.69 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Account/Codec.hs:51:33-76
  9453. 58.69 s [really-safe-money-autodocodec] @@ -48,7 +48,7 @@
  9454. 58.69 s [really-safe-money-autodocodec] where
  9455. 58.69 s [really-safe-money-autodocodec] f :: String -> Either String Account
  9456. 58.69 s [really-safe-money-autodocodec] f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9457. 58.69 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9458. 58.69 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords []
  9459. 58.69 s [really-safe-money-autodocodec] Just a -> Right a
  9460. 58.69 s [really-safe-money-autodocodec] g :: Account -> String
  9461. 58.69 s [really-safe-money-autodocodec] g = show . Account.toMinimalQuantisations
  9462. 58.69 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Account/Codec.hs:51:33-76
  9463. 58.69 s [really-safe-money-autodocodec] @@ -48,7 +48,7 @@
  9464. 58.70 s [really-safe-money-autodocodec] where
  9465. 58.70 s [really-safe-money-autodocodec] f :: String -> Either String Account
  9466. 58.70 s [really-safe-money-autodocodec] f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9467. 58.70 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9468. 58.70 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9469. 58.70 s [really-safe-money-autodocodec] Just a -> Right a
  9470. 58.70 s [really-safe-money-autodocodec] g :: Account -> String
  9471. 58.70 s [really-safe-money-autodocodec] g = show . Account.toMinimalQuantisations
  9472. 58.70 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Account/Codec.hs:50:11-24
  9473. 58.70 s [really-safe-money-autodocodec] @@ -47,9 +47,9 @@
  9474. 58.70 s [really-safe-money-autodocodec] codecViaString = bimapCodec f g stringCodec <?> "Account"
  9475. 58.70 s [really-safe-money-autodocodec] where
  9476. 58.70 s [really-safe-money-autodocodec] f :: String -> Either String Account
  9477. 58.70 s [really-safe-money-autodocodec] - f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9478. 58.70 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9479. 58.70 s [really-safe-money-autodocodec] - Just a -> Right a
  9480. 58.70 s [really-safe-money-autodocodec] + f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9481. 58.70 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9482. 58.70 s [really-safe-money-autodocodec] + Just a -> Right a
  9483. 58.70 s [really-safe-money-autodocodec] g :: Account -> String
  9484. 58.70 s [really-safe-money-autodocodec] g = show . Account.toMinimalQuantisations
  9485. 58.70 s [really-safe-money-autodocodec]
  9486. 58.70 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Account/Codec.hs:50:11-24
  9487. 58.70 s [really-safe-money-autodocodec] @@ -47,9 +47,9 @@
  9488. 58.70 s [really-safe-money-autodocodec] codecViaString = bimapCodec f g stringCodec <?> "Account"
  9489. 58.70 s [really-safe-money-autodocodec] where
  9490. 58.70 s [really-safe-money-autodocodec] f :: String -> Either String Account
  9491. 58.70 s [really-safe-money-autodocodec] - f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9492. 58.70 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9493. 58.70 s [really-safe-money-autodocodec] - Just a -> Right a
  9494. 58.70 s [really-safe-money-autodocodec] + f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  9495. 58.70 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  9496. 58.70 s [really-safe-money-autodocodec] + Just a -> Right a
  9497. 58.70 s [really-safe-money-autodocodec] g :: Account -> String
  9498. 58.70 s [really-safe-money-autodocodec] g = show . Account.toMinimalQuantisations
  9499. 58.70 s [really-safe-money-autodocodec]
  9500. 58.70 s [really-safe-money-autodocodec] added 6 mutations
  9501. 59.34 s [really-safe-money-autodocodec] [2 of 7] Compiling Money.AccountOf.Codec ( src/Money/AccountOf/Codec.hs, dist/build/Money/AccountOf/Codec.p_o )
  9502. 59.34 s [really-safe-money-autodocodec] mutation: instrumenting Money.AccountOf.Codec
  9503. 59.34 s [really-safe-money-autodocodec] added 0 mutations
  9504. 59.47 s [really-safe-money-autodocodec] [3 of 7] Compiling Money.Amount.Codec ( src/Money/Amount/Codec.hs, dist/build/Money/Amount/Codec.p_o )
  9505. 59.48 s [really-safe-money-autodocodec] mutation: instrumenting Money.Amount.Codec
  9506. 59.48 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:47:33-75
  9507. 59.48 s [really-safe-money-autodocodec] @@ -44,7 +44,7 @@
  9508. 59.48 s [really-safe-money-autodocodec] where
  9509. 59.48 s [really-safe-money-autodocodec] f :: String -> Either String Amount
  9510. 59.48 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9511. 59.48 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9512. 59.48 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords []
  9513. 59.48 s [really-safe-money-autodocodec] Just i ->
  9514. 59.48 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9515. 59.48 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9516. 59.48 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:47:33-75
  9517. 59.48 s [really-safe-money-autodocodec] @@ -44,7 +44,7 @@
  9518. 59.48 s [really-safe-money-autodocodec] where
  9519. 59.48 s [really-safe-money-autodocodec] f :: String -> Either String Amount
  9520. 59.48 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9521. 59.48 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9522. 59.48 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9523. 59.48 s [really-safe-money-autodocodec] Just i ->
  9524. 59.48 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9525. 59.48 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9526. 59.48 s [really-safe-money-autodocodec] added mutation ConstBool at src/Money/Amount/Codec.hs:49:12-59
  9527. 59.48 s [really-safe-money-autodocodec] @@ -46,7 +46,7 @@
  9528. 59.48 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9529. 59.48 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9530. 59.48 s [really-safe-money-autodocodec] Just i ->
  9531. 59.48 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9532. 59.48 s [really-safe-money-autodocodec] + if True
  9533. 59.48 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9534. 59.48 s [really-safe-money-autodocodec] else
  9535. 59.48 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9536. 59.48 s [really-safe-money-autodocodec] added mutation ConstBool at src/Money/Amount/Codec.hs:49:12-59
  9537. 59.48 s [really-safe-money-autodocodec] @@ -46,7 +46,7 @@
  9538. 59.48 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9539. 59.48 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9540. 59.48 s [really-safe-money-autodocodec] Just i ->
  9541. 59.48 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9542. 59.48 s [really-safe-money-autodocodec] + if False
  9543. 59.48 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9544. 59.48 s [really-safe-money-autodocodec] else
  9545. 59.48 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9546. 59.48 s [really-safe-money-autodocodec] added mutation Negate at src/Money/Amount/Codec.hs:49:12-59
  9547. 59.48 s [really-safe-money-autodocodec] @@ -46,7 +46,7 @@
  9548. 59.48 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9549. 59.48 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9550. 59.48 s [really-safe-money-autodocodec] Just i ->
  9551. 59.48 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9552. 59.48 s [really-safe-money-autodocodec] + if not ((i :: Integer) < toInteger (minBound :: Word64))
  9553. 59.48 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9554. 59.48 s [really-safe-money-autodocodec] else
  9555. 59.48 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9556. 59.48 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:50:31-84
  9557. 59.48 s [really-safe-money-autodocodec] @@ -47,7 +47,7 @@
  9558. 59.48 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9559. 59.48 s [really-safe-money-autodocodec] Just i ->
  9560. 59.48 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9561. 59.48 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9562. 59.48 s [really-safe-money-autodocodec] + then Left $ unwords []
  9563. 59.48 s [really-safe-money-autodocodec] else
  9564. 59.48 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9565. 59.48 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9566. 59.48 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:50:31-84
  9567. 59.48 s [really-safe-money-autodocodec] @@ -47,7 +47,7 @@
  9568. 59.48 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9569. 59.48 s [really-safe-money-autodocodec] Just i ->
  9570. 59.48 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9571. 59.48 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9572. 59.48 s [really-safe-money-autodocodec] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9573. 59.48 s [really-safe-money-autodocodec] else
  9574. 59.48 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9575. 59.48 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9576. 59.48 s [really-safe-money-autodocodec] added mutation ConstBool at src/Money/Amount/Codec.hs:52:16-63
  9577. 59.48 s [really-safe-money-autodocodec] @@ -49,7 +49,7 @@
  9578. 59.48 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9579. 59.48 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9580. 59.48 s [really-safe-money-autodocodec] else
  9581. 59.48 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9582. 59.48 s [really-safe-money-autodocodec] + if True
  9583. 59.48 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9584. 59.48 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9585. 59.48 s [really-safe-money-autodocodec] g :: Amount -> String
  9586. 59.48 s [really-safe-money-autodocodec] added mutation ConstBool at src/Money/Amount/Codec.hs:52:16-63
  9587. 59.48 s [really-safe-money-autodocodec] @@ -49,7 +49,7 @@
  9588. 59.48 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9589. 59.48 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9590. 59.48 s [really-safe-money-autodocodec] else
  9591. 59.48 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9592. 59.48 s [really-safe-money-autodocodec] + if False
  9593. 59.48 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9594. 59.48 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9595. 59.48 s [really-safe-money-autodocodec] g :: Amount -> String
  9596. 59.48 s [really-safe-money-autodocodec] added mutation Negate at src/Money/Amount/Codec.hs:52:16-63
  9597. 59.48 s [really-safe-money-autodocodec] @@ -49,7 +49,7 @@
  9598. 59.48 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9599. 59.48 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9600. 59.48 s [really-safe-money-autodocodec] else
  9601. 59.48 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9602. 59.48 s [really-safe-money-autodocodec] + if not ((i :: Integer) > toInteger (maxBound :: Word64))
  9603. 59.48 s [really-safe-money-autodocodec] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9604. 59.48 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9605. 59.48 s [really-safe-money-autodocodec] g :: Amount -> String
  9606. 59.48 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:53:35-90
  9607. 59.48 s [really-safe-money-autodocodec] @@ -50,7 +50,7 @@
  9608. 59.48 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9609. 59.48 s [really-safe-money-autodocodec] else
  9610. 59.48 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9611. 59.48 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9612. 59.48 s [really-safe-money-autodocodec] + then Left $ unwords []
  9613. 59.48 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9614. 59.48 s [really-safe-money-autodocodec] g :: Amount -> String
  9615. 59.48 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9616. 59.48 s [really-safe-money-autodocodec] added mutation ListLit at src/Money/Amount/Codec.hs:53:35-90
  9617. 59.48 s [really-safe-money-autodocodec] @@ -50,7 +50,7 @@
  9618. 59.48 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9619. 59.48 s [really-safe-money-autodocodec] else
  9620. 59.48 s [really-safe-money-autodocodec] if (i :: Integer) > toInteger (maxBound :: Word64)
  9621. 59.48 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9622. 59.48 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9623. 59.48 s [really-safe-money-autodocodec] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9624. 59.48 s [really-safe-money-autodocodec] g :: Amount -> String
  9625. 59.48 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9626. 59.48 s [really-safe-money-autodocodec] added mutation CondFlip at src/Money/Amount/Codec.hs:52:13-86
  9627. 59.48 s [really-safe-money-autodocodec] @@ -49,9 +49,9 @@
  9628. 59.48 s [really-safe-money-autodocodec] if (i :: Integer) < toInteger (minBound :: Word64)
  9629. 59.48 s [really-safe-money-autodocodec] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9630. 59.48 s [really-safe-money-autodocodec] else
  9631. 59.48 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9632. 59.48 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9633. 59.48 s [really-safe-money-autodocodec] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9634. 59.48 s [really-safe-money-autodocodec] + if (i :: Integer) > toInteger (maxBound :: Word64)
  9635. 59.48 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9636. 59.48 s [really-safe-money-autodocodec] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9637. 59.48 s [really-safe-money-autodocodec] g :: Amount -> String
  9638. 59.48 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9639. 59.48 s [really-safe-money-autodocodec]
  9640. 59.48 s [really-safe-money-autodocodec] added mutation CondFlip at src/Money/Amount/Codec.hs:49:9-86
  9641. 59.48 s [really-safe-money-autodocodec] @@ -46,12 +46,12 @@
  9642. 59.48 s [really-safe-money-autodocodec] f s = case readMaybe s of
  9643. 59.48 s [really-safe-money-autodocodec] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9644. 59.48 s [really-safe-money-autodocodec] Just i ->
  9645. 59.48 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9646. 59.48 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9647. 59.48 s [really-safe-money-autodocodec] - else
  9648. 59.48 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9649. 59.48 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9650. 59.48 s [really-safe-money-autodocodec] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9651. 59.48 s [really-safe-money-autodocodec] + if (i :: Integer) < toInteger (minBound :: Word64)
  9652. 59.48 s [really-safe-money-autodocodec] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9653. 59.48 s [really-safe-money-autodocodec] + else
  9654. 59.48 s [really-safe-money-autodocodec] + if (i :: Integer) > toInteger (maxBound :: Word64)
  9655. 59.48 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9656. 59.48 s [really-safe-money-autodocodec] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9657. 59.48 s [really-safe-money-autodocodec] g :: Amount -> String
  9658. 59.48 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9659. 59.48 s [really-safe-money-autodocodec]
  9660. 59.48 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Amount/Codec.hs:46:11-86
  9661. 59.48 s [really-safe-money-autodocodec] @@ -43,15 +43,15 @@
  9662. 59.48 s [really-safe-money-autodocodec] codecViaString = bimapCodec f g stringCodec <?> "Amount"
  9663. 59.48 s [really-safe-money-autodocodec] where
  9664. 59.48 s [really-safe-money-autodocodec] f :: String -> Either String Amount
  9665. 59.48 s [really-safe-money-autodocodec] - f s = case readMaybe s of
  9666. 59.48 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9667. 59.48 s [really-safe-money-autodocodec] - Just i ->
  9668. 59.48 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9669. 59.48 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9670. 59.48 s [really-safe-money-autodocodec] - else
  9671. 59.48 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9672. 59.48 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9673. 59.48 s [really-safe-money-autodocodec] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9674. 59.48 s [really-safe-money-autodocodec] + f s = case readMaybe s of
  9675. 59.48 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9676. 59.48 s [really-safe-money-autodocodec] + Just i ->
  9677. 59.48 s [really-safe-money-autodocodec] + if (i :: Integer) < toInteger (minBound :: Word64)
  9678. 59.48 s [really-safe-money-autodocodec] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9679. 59.48 s [really-safe-money-autodocodec] + else
  9680. 59.48 s [really-safe-money-autodocodec] + if (i :: Integer) > toInteger (maxBound :: Word64)
  9681. 59.48 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9682. 59.48 s [really-safe-money-autodocodec] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9683. 59.48 s [really-safe-money-autodocodec] g :: Amount -> String
  9684. 59.48 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9685. 59.48 s [really-safe-money-autodocodec]
  9686. 59.48 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/Amount/Codec.hs:46:11-86
  9687. 59.48 s [really-safe-money-autodocodec] @@ -43,15 +43,15 @@
  9688. 59.48 s [really-safe-money-autodocodec] codecViaString = bimapCodec f g stringCodec <?> "Amount"
  9689. 59.48 s [really-safe-money-autodocodec] where
  9690. 59.48 s [really-safe-money-autodocodec] f :: String -> Either String Amount
  9691. 59.48 s [really-safe-money-autodocodec] - f s = case readMaybe s of
  9692. 59.48 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9693. 59.48 s [really-safe-money-autodocodec] - Just i ->
  9694. 59.48 s [really-safe-money-autodocodec] - if (i :: Integer) < toInteger (minBound :: Word64)
  9695. 59.48 s [really-safe-money-autodocodec] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9696. 59.48 s [really-safe-money-autodocodec] - else
  9697. 59.48 s [really-safe-money-autodocodec] - if (i :: Integer) > toInteger (maxBound :: Word64)
  9698. 59.48 s [really-safe-money-autodocodec] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9699. 59.48 s [really-safe-money-autodocodec] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9700. 59.48 s [really-safe-money-autodocodec] + f s = case readMaybe s of
  9701. 59.48 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  9702. 59.48 s [really-safe-money-autodocodec] + Just i ->
  9703. 59.48 s [really-safe-money-autodocodec] + if (i :: Integer) < toInteger (minBound :: Word64)
  9704. 59.48 s [really-safe-money-autodocodec] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  9705. 59.48 s [really-safe-money-autodocodec] + else
  9706. 59.48 s [really-safe-money-autodocodec] + if (i :: Integer) > toInteger (maxBound :: Word64)
  9707. 59.48 s [really-safe-money-autodocodec] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  9708. 59.48 s [really-safe-money-autodocodec] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  9709. 59.48 s [really-safe-money-autodocodec] g :: Amount -> String
  9710. 59.49 s [really-safe-money-autodocodec] g = show . Amount.toMinimalQuantisations
  9711. 59.49 s [really-safe-money-autodocodec]
  9712. 59.49 s [really-safe-money-autodocodec] added 16 mutations
  9713. 59.72 s [really-safe-money-autodocodec] [4 of 7] Compiling Money.AmountOf.Codec ( src/Money/AmountOf/Codec.hs, dist/build/Money/AmountOf/Codec.p_o )
  9714. 59.72 s [really-safe-money-autodocodec] mutation: instrumenting Money.AmountOf.Codec
  9715. 59.72 s [really-safe-money-autodocodec] added 0 mutations
  9716. 59.86 s [really-safe-money-autodocodec] [5 of 7] Compiling Money.QuantisationFactor.Codec ( src/Money/QuantisationFactor/Codec.hs, dist/build/Money/QuantisationFactor/Codec.p_o )
  9717. 59.86 s [really-safe-money-autodocodec] mutation: instrumenting Money.QuantisationFactor.Codec
  9718. 59.86 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/QuantisationFactor/Codec.hs:41:11-26
  9719. 59.86 s [really-safe-money-autodocodec] @@ -38,6 +38,6 @@
  9720. 59.86 s [really-safe-money-autodocodec] codec
  9721. 59.86 s [really-safe-money-autodocodec] <?> "QuantisationFactor"
  9722. 59.86 s [really-safe-money-autodocodec] where
  9723. 59.86 s [really-safe-money-autodocodec] - f w = case QuantisationFactor.fromWord32 w of
  9724. 59.86 s [really-safe-money-autodocodec] - Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  9725. 59.86 s [really-safe-money-autodocodec] - Just qf -> Right qf
  9726. 59.86 s [really-safe-money-autodocodec] + f w = case QuantisationFactor.fromWord32 w of
  9727. 59.86 s [really-safe-money-autodocodec] + Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  9728. 59.86 s [really-safe-money-autodocodec] + Just qf -> Right qf
  9729. 59.86 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Money/QuantisationFactor/Codec.hs:41:11-26
  9730. 59.86 s [really-safe-money-autodocodec] @@ -38,6 +38,6 @@
  9731. 59.86 s [really-safe-money-autodocodec] codec
  9732. 59.86 s [really-safe-money-autodocodec] <?> "QuantisationFactor"
  9733. 59.86 s [really-safe-money-autodocodec] where
  9734. 59.86 s [really-safe-money-autodocodec] - f w = case QuantisationFactor.fromWord32 w of
  9735. 59.86 s [really-safe-money-autodocodec] - Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  9736. 59.86 s [really-safe-money-autodocodec] - Just qf -> Right qf
  9737. 59.86 s [really-safe-money-autodocodec] + f w = case QuantisationFactor.fromWord32 w of
  9738. 59.86 s [really-safe-money-autodocodec] + Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  9739. 59.86 s [really-safe-money-autodocodec] + Just qf -> Right qf
  9740. 59.86 s [really-safe-money-autodocodec] added 2 mutations
  9741. 60.02 s [really-safe-money-autodocodec] [6 of 7] Compiling Numeric.DecimalLiteral.Codec ( src/Numeric/DecimalLiteral/Codec.hs, dist/build/Numeric/DecimalLiteral/Codec.p_o )
  9742. 60.02 s [really-safe-money-autodocodec] mutation: instrumenting Numeric.DecimalLiteral.Codec
  9743. 60.02 s [really-safe-money-autodocodec] added mutation ListLit at src/Numeric/DecimalLiteral/Codec.hs:40:33-82
  9744. 60.02 s [really-safe-money-autodocodec] @@ -37,5 +37,5 @@
  9745. 60.02 s [really-safe-money-autodocodec] where
  9746. 60.02 s [really-safe-money-autodocodec] f :: String -> Either String DecimalLiteral
  9747. 60.02 s [really-safe-money-autodocodec] f s = case DecimalLiteral.fromString s of
  9748. 60.02 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9749. 60.02 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords []
  9750. 60.02 s [really-safe-money-autodocodec] Just a -> Right a
  9751. 60.02 s [really-safe-money-autodocodec] added mutation ListLit at src/Numeric/DecimalLiteral/Codec.hs:40:33-82
  9752. 60.02 s [really-safe-money-autodocodec] @@ -37,5 +37,5 @@
  9753. 60.02 s [really-safe-money-autodocodec] where
  9754. 60.02 s [really-safe-money-autodocodec] f :: String -> Either String DecimalLiteral
  9755. 60.02 s [really-safe-money-autodocodec] f s = case DecimalLiteral.fromString s of
  9756. 60.02 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9757. 60.02 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9758. 60.02 s [really-safe-money-autodocodec] Just a -> Right a
  9759. 60.02 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Numeric/DecimalLiteral/Codec.hs:39:11-24
  9760. 60.02 s [really-safe-money-autodocodec] @@ -36,6 +36,6 @@
  9761. 60.02 s [really-safe-money-autodocodec] codecViaString = bimapCodec f DecimalLiteral.toString stringCodec <?> "DecimalLiteral"
  9762. 60.02 s [really-safe-money-autodocodec] where
  9763. 60.02 s [really-safe-money-autodocodec] f :: String -> Either String DecimalLiteral
  9764. 60.02 s [really-safe-money-autodocodec] - f s = case DecimalLiteral.fromString s of
  9765. 60.02 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9766. 60.02 s [really-safe-money-autodocodec] - Just a -> Right a
  9767. 60.02 s [really-safe-money-autodocodec] + f s = case DecimalLiteral.fromString s of
  9768. 60.02 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9769. 60.02 s [really-safe-money-autodocodec] + Just a -> Right a
  9770. 60.02 s [really-safe-money-autodocodec] added mutation RemoveCase at src/Numeric/DecimalLiteral/Codec.hs:39:11-24
  9771. 60.02 s [really-safe-money-autodocodec] @@ -36,6 +36,6 @@
  9772. 60.02 s [really-safe-money-autodocodec] codecViaString = bimapCodec f DecimalLiteral.toString stringCodec <?> "DecimalLiteral"
  9773. 60.02 s [really-safe-money-autodocodec] where
  9774. 60.02 s [really-safe-money-autodocodec] f :: String -> Either String DecimalLiteral
  9775. 60.02 s [really-safe-money-autodocodec] - f s = case DecimalLiteral.fromString s of
  9776. 60.02 s [really-safe-money-autodocodec] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9777. 60.02 s [really-safe-money-autodocodec] - Just a -> Right a
  9778. 60.02 s [really-safe-money-autodocodec] + f s = case DecimalLiteral.fromString s of
  9779. 60.02 s [really-safe-money-autodocodec] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  9780. 60.02 s [really-safe-money-autodocodec] + Just a -> Right a
  9781. 60.02 s [really-safe-money-autodocodec] added 4 mutations
  9782. 60.18 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 )
  9783. 60.62 s [really-safe-money-autodocodec] Warning: ignoring unrecognised input `dist/build/Money/Account/Codec.dyn_o'
  9784. 60.62 s [really-safe-money-autodocodec] Warning: ignoring unrecognised input `dist/build/Money/AccountOf/Codec.dyn_o'
  9785. 60.62 s [really-safe-money-autodocodec] Warning: ignoring unrecognised input `dist/build/Money/Amount/Codec.dyn_o'
  9786. 60.62 s [really-safe-money-autodocodec] Warning: ignoring unrecognised input `dist/build/Money/AmountOf/Codec.dyn_o'
  9787. 60.62 s [really-safe-money-autodocodec] Warning: ignoring unrecognised input `dist/build/Money/QuantisationFactor/Codec.dyn_o'
  9788. 60.62 s [really-safe-money-autodocodec] Warning: ignoring unrecognised input `dist/build/Numeric/DecimalLiteral/Codec.dyn_o'
  9789. 60.62 s [really-safe-money-autodocodec] Warning: ignoring unrecognised input `dist/build/Paths_really_safe_money_autodocodec.dyn_o'
  9790. 61.70 s [really-safe-money-autodocodec] mutation-nix: manifest output at /nix/store/a266611cfdhdmlk5x3ax9s6vmpvn4c18-really-safe-money-autodocodec-0.0.0.0-manifest:
  9791. 61.70 s [really-safe-money-autodocodec] total 76
  9792. 61.70 s [really-safe-money-autodocodec] drwxr-xr-x 2 nixbld nixbld 4096 May 13 16:10 .
  9793. 61.70 s [really-safe-money-autodocodec] drwxrwxr-t 239 nobody nixbld 28672 May 13 16:10 ..
  9794. 61.70 s [really-safe-money-autodocodec] -rw-r--r-- 1 nixbld nixbld 4702 May 13 16:10 Money.Account.Codec.json
  9795. 61.70 s [really-safe-money-autodocodec] -rw-r--r-- 1 nixbld nixbld 2 May 13 16:10 Money.AccountOf.Codec.json
  9796. 61.70 s [really-safe-money-autodocodec] -rw-r--r-- 1 nixbld nixbld 14717 May 13 16:10 Money.Amount.Codec.json
  9797. 61.70 s [really-safe-money-autodocodec] -rw-r--r-- 1 nixbld nixbld 2 May 13 16:10 Money.AmountOf.Codec.json
  9798. 61.70 s [really-safe-money-autodocodec] -rw-r--r-- 1 nixbld nixbld 1549 May 13 16:10 Money.QuantisationFactor.Codec.json
  9799. 61.70 s [really-safe-money-autodocodec] -rw-r--r-- 1 nixbld nixbld 2972 May 13 16:10 Numeric.DecimalLiteral.Codec.json
  9800. 61.70 s [really-safe-money-autodocodec] Phase: haddockPhase
  9801. 61.71 s [really-safe-money-autodocodec] Phase: installPhase
  9802. 61.80 s [really-safe-money-autodocodec] Installing library in /nix/store/z7d0pxvwgva7vya06a0z69dyixcs5sgb-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
  9803. 62.06 s [really-safe-money-autodocodec] Phase: fixupPhase
  9804. 62.08 s [really-safe-money-autodocodec] shrinking RPATHs of ELF executables and libraries in /nix/store/z7d0pxvwgva7vya06a0z69dyixcs5sgb-really-safe-money-autodocodec-0.0.0.0
  9805. 62.08 s [really-safe-money-autodocodec] shrinking /nix/store/z7d0pxvwgva7vya06a0z69dyixcs5sgb-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
  9806. 62.10 s [really-safe-money-autodocodec] checking for references to /build/ in /nix/store/z7d0pxvwgva7vya06a0z69dyixcs5sgb-really-safe-money-autodocodec-0.0.0.0...
  9807. 62.12 s [really-safe-money-autodocodec] patching script interpreter paths in /nix/store/z7d0pxvwgva7vya06a0z69dyixcs5sgb-really-safe-money-autodocodec-0.0.0.0
  9808. 62.12 s [really-safe-money-autodocodec] stripping (with command strip and flags -S -p) in /nix/store/z7d0pxvwgva7vya06a0z69dyixcs5sgb-really-safe-money-autodocodec-0.0.0.0/lib
  9809. 62.17 s [really-safe-money-autodocodec] shrinking RPATHs of ELF executables and libraries in /nix/store/a266611cfdhdmlk5x3ax9s6vmpvn4c18-really-safe-money-autodocodec-0.0.0.0-manifest
  9810. 62.18 s [really-safe-money-autodocodec] checking for references to /build/ in /nix/store/a266611cfdhdmlk5x3ax9s6vmpvn4c18-really-safe-money-autodocodec-0.0.0.0-manifest...
  9811. 62.19 s [really-safe-money-autodocodec] patching script interpreter paths in /nix/store/a266611cfdhdmlk5x3ax9s6vmpvn4c18-really-safe-money-autodocodec-0.0.0.0-manifest
  9812. 62.25 s Progress: 4 of 6 built
  9813. 62.30 s Building really-safe-money-gen
  9814. 62.67 s [really-safe-money-gen] Phase: setupCompilerEnvironmentPhase
  9815. 62.68 s [really-safe-money-gen] Build with /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3.
  9816. 63.15 s [really-safe-money-gen] Phase: unpackPhase
  9817. 63.23 s [really-safe-money-gen] unpacking source archive /nix/store/w4nkbq86l33109ak3dwpv6bjsrj1y3n1-really-safe-money-gen-source-0.0.0.0/really-safe-money-gen-0.0.0.0.tar.gz
  9818. 63.23 s [really-safe-money-gen] source root is really-safe-money-gen-0.0.0.0
  9819. 63.23 s [really-safe-money-gen] setting SOURCE_DATE_EPOCH to timestamp 1778688644 of file "really-safe-money-gen-0.0.0.0/test/Spec.hs"
  9820. 63.23 s [really-safe-money-gen] warning: file "really-safe-money-gen-0.0.0.0/test/Spec.hs" may be generated; SOURCE_DATE_EPOCH may be non-deterministic
  9821. 63.23 s [really-safe-money-gen] Phase: patchPhase
  9822. 63.23 s [really-safe-money-gen] Phase: compileBuildDriverPhase
  9823. 63.23 s [really-safe-money-gen] setupCompileFlags: -package-db=/build/tmp.Y7AOyHRoEF/setup-package.conf.d -threaded
  9824. 63.24 s [really-safe-money-gen] [1 of 2] Compiling Main ( Setup.hs, /build/tmp.Y7AOyHRoEF/Main.o )
  9825. 63.29 s [really-safe-money-gen] [2 of 2] Linking Setup
  9826. 64.58 s [really-safe-money-gen] Phase: updateAutotoolsGnuConfigScriptsPhase
  9827. 64.59 s [really-safe-money-gen] Phase: configurePhase
  9828. 64.60 s [really-safe-money-gen] configureFlags: --verbose --prefix=/nix/store/mhwmglada4f12f0lxq3m2lsy34vzgsir-really-safe-money-gen-0.0.0.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --docdir=/nix/store/26j8gawyiiv96f6syfhs8kk4k2hh32k5-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.Y7AOyHRoEF/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
  9829. 64.60 s [really-safe-money-gen] Using Parsec parser
  9830. 64.60 s [really-safe-money-gen] Configuring really-safe-money-gen-0.0.0.0...
  9831. 65.25 s [really-safe-money-gen] Dependency QuickCheck: using QuickCheck-2.15.0.1
  9832. 65.25 s [really-safe-money-gen] Dependency base >=4.7 && <5: using base-4.20.2.0
  9833. 65.25 s [really-safe-money-gen] Dependency genvalidity: using genvalidity-1.1.1.0
  9834. 65.25 s [really-safe-money-gen] Dependency genvalidity-containers: using genvalidity-containers-1.0.0.2
  9835. 65.25 s [really-safe-money-gen] Dependency really-safe-money: using really-safe-money-0.0.0.0
  9836. 65.25 s [really-safe-money-gen] Dependency base >=4.7 && <5: using base-4.20.2.0
  9837. 65.25 s [really-safe-money-gen] Dependency containers: using containers-0.7
  9838. 65.25 s [really-safe-money-gen] Dependency genvalidity-sydtest: using genvalidity-sydtest-1.0.1.0
  9839. 65.25 s [really-safe-money-gen] Dependency genvalidity-vector: using genvalidity-vector-1.0.0.0
  9840. 65.25 s [really-safe-money-gen] Dependency really-safe-money: using really-safe-money-0.0.0.0
  9841. 65.25 s [really-safe-money-gen] Dependency really-safe-money-gen: using really-safe-money-gen-0.0.0.0
  9842. 65.25 s [really-safe-money-gen] Dependency sydtest: using sydtest-0.23.0.2
  9843. 65.25 s [really-safe-money-gen] Dependency vector: using vector-0.13.2.0
  9844. 65.25 s [really-safe-money-gen] Source component graph:
  9845. 65.25 s [really-safe-money-gen] component lib
  9846. 65.25 s [really-safe-money-gen] component test:really-safe-money-test dependency lib
  9847. 65.25 s [really-safe-money-gen] Configured component graph:
  9848. 65.25 s [really-safe-money-gen] component really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h
  9849. 65.25 s [really-safe-money-gen] include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU
  9850. 65.25 s [really-safe-money-gen] include base-4.20.2.0-64da
  9851. 65.25 s [really-safe-money-gen] include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L
  9852. 65.25 s [really-safe-money-gen] include genvalidity-containers-1.0.0.2-DXaOCEBh8iJ1c8u2LwVlK1
  9853. 65.25 s [really-safe-money-gen] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  9854. 65.25 s [really-safe-money-gen] component really-safe-money-gen-0.0.0.0-8cvRTlTZbe8HClZztIkEoX-really-safe-money-test
  9855. 65.25 s [really-safe-money-gen] include base-4.20.2.0-64da
  9856. 65.25 s [really-safe-money-gen] include containers-0.7-504a
  9857. 65.25 s [really-safe-money-gen] include genvalidity-sydtest-1.0.1.0-Cj9ZxpByhih2ReY6BClfG1
  9858. 65.25 s [really-safe-money-gen] include genvalidity-vector-1.0.0.0-6KKiduowklk7hSxSW05Gxi
  9859. 65.25 s [really-safe-money-gen] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  9860. 65.25 s [really-safe-money-gen] include really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h
  9861. 65.25 s [really-safe-money-gen] include sydtest-0.23.0.2-RzVaEpJISaERaSrCHYFLw
  9862. 65.25 s [really-safe-money-gen] include vector-0.13.2.0-GDUCoiHhVuq2SKPTzzTr3a
  9863. 65.25 s [really-safe-money-gen] Linked component graph:
  9864. 65.25 s [really-safe-money-gen] unit really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h
  9865. 65.25 s [really-safe-money-gen] include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU
  9866. 65.25 s [really-safe-money-gen] include base-4.20.2.0-64da
  9867. 65.25 s [really-safe-money-gen] include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L
  9868. 65.25 s [really-safe-money-gen] include genvalidity-containers-1.0.0.2-DXaOCEBh8iJ1c8u2LwVlK1
  9869. 65.25 s [really-safe-money-gen] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  9870. 65.25 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
  9871. 65.25 s [really-safe-money-gen] unit really-safe-money-gen-0.0.0.0-8cvRTlTZbe8HClZztIkEoX-really-safe-money-test
  9872. 65.25 s [really-safe-money-gen] include base-4.20.2.0-64da
  9873. 65.25 s [really-safe-money-gen] include containers-0.7-504a
  9874. 65.25 s [really-safe-money-gen] include genvalidity-sydtest-1.0.1.0-Cj9ZxpByhih2ReY6BClfG1
  9875. 65.25 s [really-safe-money-gen] include genvalidity-vector-1.0.0.0-6KKiduowklk7hSxSW05Gxi
  9876. 65.25 s [really-safe-money-gen] include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  9877. 65.25 s [really-safe-money-gen] include really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h
  9878. 65.25 s [really-safe-money-gen] include sydtest-0.23.0.2-RzVaEpJISaERaSrCHYFLw
  9879. 65.25 s [really-safe-money-gen] include vector-0.13.2.0-GDUCoiHhVuq2SKPTzzTr3a
  9880. 65.25 s [really-safe-money-gen] Ready component graph:
  9881. 65.25 s [really-safe-money-gen] definite really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h
  9882. 65.25 s [really-safe-money-gen] depends QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU
  9883. 65.25 s [really-safe-money-gen] depends base-4.20.2.0-64da
  9884. 65.25 s [really-safe-money-gen] depends genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L
  9885. 65.25 s [really-safe-money-gen] depends genvalidity-containers-1.0.0.2-DXaOCEBh8iJ1c8u2LwVlK1
  9886. 65.25 s [really-safe-money-gen] depends really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  9887. 65.25 s [really-safe-money-gen] definite really-safe-money-gen-0.0.0.0-8cvRTlTZbe8HClZztIkEoX-really-safe-money-test
  9888. 65.25 s [really-safe-money-gen] depends base-4.20.2.0-64da
  9889. 65.25 s [really-safe-money-gen] depends containers-0.7-504a
  9890. 65.25 s [really-safe-money-gen] depends genvalidity-sydtest-1.0.1.0-Cj9ZxpByhih2ReY6BClfG1
  9891. 65.25 s [really-safe-money-gen] depends genvalidity-vector-1.0.0.0-6KKiduowklk7hSxSW05Gxi
  9892. 65.25 s [really-safe-money-gen] depends really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9
  9893. 65.25 s [really-safe-money-gen] depends really-safe-money-gen-0.0.0.0-9DfdU4DcgbWHMkem9yRL5h
  9894. 65.25 s [really-safe-money-gen] depends sydtest-0.23.0.2-RzVaEpJISaERaSrCHYFLw
  9895. 65.25 s [really-safe-money-gen] depends vector-0.13.2.0-GDUCoiHhVuq2SKPTzzTr3a
  9896. 65.25 s [really-safe-money-gen] Using Cabal-3.12.1.0 compiled by ghc-9.10
  9897. 65.25 s [really-safe-money-gen] Using compiler: ghc-9.10.3
  9898. 65.25 s [really-safe-money-gen] Using install prefix:
  9899. 65.25 s [really-safe-money-gen] /nix/store/mhwmglada4f12f0lxq3m2lsy34vzgsir-really-safe-money-gen-0.0.0.0
  9900. 65.25 s [really-safe-money-gen] Executables installed in:
  9901. 65.25 s [really-safe-money-gen] /nix/store/mhwmglada4f12f0lxq3m2lsy34vzgsir-really-safe-money-gen-0.0.0.0/bin
  9902. 65.25 s [really-safe-money-gen] Libraries installed in:
  9903. 65.25 s [really-safe-money-gen] /nix/store/mhwmglada4f12f0lxq3m2lsy34vzgsir-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
  9904. 65.25 s [really-safe-money-gen] Dynamic Libraries installed in:
  9905. 65.25 s [really-safe-money-gen] /nix/store/mhwmglada4f12f0lxq3m2lsy34vzgsir-really-safe-money-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6
  9906. 65.25 s [really-safe-money-gen] Private executables installed in:
  9907. 65.25 s [really-safe-money-gen] /nix/store/mhwmglada4f12f0lxq3m2lsy34vzgsir-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
  9908. 65.25 s [really-safe-money-gen] Data files installed in:
  9909. 65.25 s [really-safe-money-gen] /nix/store/mhwmglada4f12f0lxq3m2lsy34vzgsir-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
  9910. 65.25 s [really-safe-money-gen] Documentation installed in:
  9911. 65.25 s [really-safe-money-gen] /nix/store/26j8gawyiiv96f6syfhs8kk4k2hh32k5-really-safe-money-gen-0.0.0.0-doc/share/doc/really-safe-money-gen-0.0.0.0
  9912. 65.25 s [really-safe-money-gen] Configuration files installed in:
  9913. 65.25 s [really-safe-money-gen] /nix/store/mhwmglada4f12f0lxq3m2lsy34vzgsir-really-safe-money-gen-0.0.0.0/etc
  9914. 65.25 s [really-safe-money-gen] No alex found
  9915. 65.25 s [really-safe-money-gen] Using ar found on system at:
  9916. 65.25 s [really-safe-money-gen] /nix/store/iz5lckcsg66r223si2gck7csk2hihj0m-binutils-wrapper-2.44/bin/ar
  9917. 65.25 s [really-safe-money-gen] No c2hs found
  9918. 65.25 s [really-safe-money-gen] No cpphs found
  9919. 65.25 s [really-safe-money-gen] No doctest found
  9920. 65.25 s [really-safe-money-gen] Using gcc version 14.3.0 given by user at:
  9921. 65.25 s [really-safe-money-gen] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/gcc
  9922. 65.25 s [really-safe-money-gen] Using ghc version 9.10.3 found on system at:
  9923. 65.25 s [really-safe-money-gen] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc
  9924. 65.25 s [really-safe-money-gen] Using ghc-pkg version 9.10.3 found on system at:
  9925. 65.25 s [really-safe-money-gen] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc-pkg-9.10.3
  9926. 65.25 s [really-safe-money-gen] No ghcjs found
  9927. 65.25 s [really-safe-money-gen] No ghcjs-pkg found
  9928. 65.25 s [really-safe-money-gen] No greencard found
  9929. 65.25 s [really-safe-money-gen] Using haddock version 2.31.1 found on system at:
  9930. 65.25 s [really-safe-money-gen] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/haddock-ghc-9.10.3
  9931. 65.25 s [really-safe-money-gen] No happy found
  9932. 65.25 s [really-safe-money-gen] Using haskell-suite found on system at: haskell-suite-dummy-location
  9933. 65.25 s [really-safe-money-gen] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location
  9934. 65.25 s [really-safe-money-gen] No hmake found
  9935. 65.25 s [really-safe-money-gen] Using hpc version 0.69 found on system at:
  9936. 65.25 s [really-safe-money-gen] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hpc-ghc-9.10.3
  9937. 65.25 s [really-safe-money-gen] Using hsc2hs version 0.68.10 found on system at:
  9938. 65.25 s [really-safe-money-gen] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hsc2hs-ghc-9.10.3
  9939. 65.25 s [really-safe-money-gen] Using hscolour version 1.25 found on system at:
  9940. 65.25 s [really-safe-money-gen] /nix/store/f755skyzf4jvfx3crwq9mmh3x4lsaz8i-hscolour-1.25/bin/HsColour
  9941. 65.25 s [really-safe-money-gen] No jhc found
  9942. 65.25 s [really-safe-money-gen] Using ld found on system at:
  9943. 65.25 s [really-safe-money-gen] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/ld
  9944. 65.25 s [really-safe-money-gen] No pkg-config found
  9945. 65.25 s [really-safe-money-gen] Using runghc version 9.10.3 found on system at:
  9946. 65.25 s [really-safe-money-gen] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/runghc-9.10.3
  9947. 65.25 s [really-safe-money-gen] Using strip version 2.44 found on system at:
  9948. 65.25 s [really-safe-money-gen] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/strip
  9949. 65.25 s [really-safe-money-gen] Using tar found on system at:
  9950. 65.25 s [really-safe-money-gen] /nix/store/xl6pd2spjajwcpq09fnmnjv5psqmlmma-gnutar-1.35/bin/tar
  9951. 65.26 s [really-safe-money-gen] No uhc found
  9952. 65.65 s [really-safe-money-gen] Phase: buildPhase
  9953. 65.72 s [really-safe-money-gen] Preprocessing library for really-safe-money-gen-0.0.0.0...
  9954. 65.72 s [really-safe-money-gen] Building library for really-safe-money-gen-0.0.0.0...
  9955. 65.82 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 )
  9956. 66.15 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 )
  9957. 66.24 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 )
  9958. 66.28 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 )
  9959. 66.28 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 )
  9960. 66.28 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 )
  9961. 66.28 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 )
  9962. 66.28 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 )
  9963. 66.28 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 )
  9964. 66.28 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 )
  9965. 66.33 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 )
  9966. 66.35 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 )
  9967. 66.35 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 )
  9968. 66.59 s [really-safe-money-gen] [ 1 of 13] Compiling Money.Amount.Gen ( src/Money/Amount/Gen.hs, dist/build/Money/Amount/Gen.p_o )
  9969. 66.98 s [really-safe-money-gen] [ 2 of 13] Compiling Money.Account.Gen ( src/Money/Account/Gen.hs, dist/build/Money/Account/Gen.p_o )
  9970. 67.17 s [really-safe-money-gen] [ 3 of 13] Compiling Money.AccountOf.Gen ( src/Money/AccountOf/Gen.hs, dist/build/Money/AccountOf/Gen.p_o )
  9971. 67.31 s [really-safe-money-gen] [ 4 of 13] Compiling Money.AmountOf.Gen ( src/Money/AmountOf/Gen.hs, dist/build/Money/AmountOf/Gen.p_o )
  9972. 67.31 s [really-safe-money-gen] [ 5 of 13] Compiling Money.ConversionRate.Gen ( src/Money/ConversionRate/Gen.hs, dist/build/Money/ConversionRate/Gen.p_o )
  9973. 67.31 s [really-safe-money-gen] [ 6 of 13] Compiling Money.ConversionRateOf.Gen ( src/Money/ConversionRateOf/Gen.hs, dist/build/Money/ConversionRateOf/Gen.p_o )
  9974. 67.31 s [really-safe-money-gen] [ 7 of 13] Compiling Money.QuantisationFactor.Gen ( src/Money/QuantisationFactor/Gen.hs, dist/build/Money/QuantisationFactor/Gen.p_o )
  9975. 67.31 s [really-safe-money-gen] [ 8 of 13] Compiling Money.Currency.Gen ( src/Money/Currency/Gen.hs, dist/build/Money/Currency/Gen.p_o )
  9976. 67.31 s [really-safe-money-gen] [ 9 of 13] Compiling Money.MultiAmount.Gen ( src/Money/MultiAmount/Gen.hs, dist/build/Money/MultiAmount/Gen.p_o )
  9977. 67.31 s [really-safe-money-gen] [10 of 13] Compiling Money.MultiAccount.Gen ( src/Money/MultiAccount/Gen.hs, dist/build/Money/MultiAccount/Gen.p_o )
  9978. 67.34 s [really-safe-money-gen] [11 of 13] Compiling Money.Gen ( src/Money/Gen.hs, dist/build/Money/Gen.p_o )
  9979. 67.46 s [really-safe-money-gen] [12 of 13] Compiling Numeric.DecimalLiteral.Gen ( src/Numeric/DecimalLiteral/Gen.hs, dist/build/Numeric/DecimalLiteral/Gen.p_o )
  9980. 67.46 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 )
  9981. 68.80 s [really-safe-money-gen] Preprocessing test suite 'really-safe-money-test' for really-safe-money-gen-0.0.0.0...
  9982. 68.81 s [really-safe-money-gen] Building test suite 'really-safe-money-test' for really-safe-money-gen-0.0.0.0...
  9983. 68.97 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 )
  9984. 71.91 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 )
  9985. 72.21 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 )
  9986. 72.21 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 )
  9987. 72.21 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 )
  9988. 72.21 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 )
  9989. 72.21 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 )
  9990. 72.21 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 )
  9991. 72.21 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 )
  9992. 72.21 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 )
  9993. 72.21 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 )
  9994. 72.21 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 )
  9995. 72.21 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 )
  9996. 72.27 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 )
  9997. 72.70 s [really-safe-money-gen] [15 of 15] Linking dist/build/really-safe-money-test/really-safe-money-test
  9998. 74.22 s [really-safe-money-gen] Phase: checkPhase
  9999. 74.24 s [really-safe-money-gen] mutation-nix: collecting coverage for suite really-safe-money-gen
  10000. 75.32 s [really-safe-money-gen] coverage (4/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral Nothing 9 2 into rational 9 % 100 (4 mutations)
  10001. 76.31 s [really-safe-money-gen] coverage (7/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational (-6) % 1 into DecimalLiteral (Just False) 6 0 (19 mutations)
  10002. 76.38 s [really-safe-money-gen] coverage (15/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral (Just False) 600 2 into rational (-6) % 1 (4 mutations)
  10003. 76.45 s [really-safe-money-gen] coverage (26/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral Nothing 1 0 into rational 1 % 1 (4 mutations)
  10004. 76.47 s [really-safe-money-gen] coverage (13/1610): Numeric\.DecimalLiteralSpec.Rational.fromRational.can parse any rendered rational (26 mutations)
  10005. 76.47 s [really-safe-money-gen] coverage (28/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral (Just False) 1 3 into rational (-1) % 1000 (4 mutations)
  10006. 76.68 s [really-safe-money-gen] coverage (19/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational (-3) % 1 into DecimalLiteral (Just False) 3 0 (19 mutations)
  10007. 76.92 s [really-safe-money-gen] coverage (22/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational 9 % 100 into DecimalLiteral Nothing 9 2 (20 mutations)
  10008. 76.99 s [really-safe-money-gen] coverage (25/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational 7 % 1 into DecimalLiteral Nothing 7 0 (18 mutations)
  10009. 77.07 s [really-safe-money-gen] coverage (3/1610): Numeric\.DecimalLiteralSpec.Natural.toNatural.renders to valid naturals (0 mutations)
  10010. 77.11 s [really-safe-money-gen] coverage (20/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral Nothing 7000 3 into rational 7 % 1 (4 mutations)
  10011. 77.13 s [really-safe-money-gen] coverage (12/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational 5 % 1 into DecimalLiteral Nothing 5 0 (18 mutations)
  10012. 77.13 s [really-safe-money-gen] coverage (8/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral Nothing 10 0 into rational 10 % 1 (4 mutations)
  10013. 77.16 s [really-safe-money-gen] coverage (2/1610): Numeric\.DecimalLiteralSpec.Natural.fromNatural.can parse any rendered literal (4 mutations)
  10014. 77.28 s [really-safe-money-gen] coverage (1/1610): Numeric\.DecimalLiteralSpec.Natural.fromNatural.renders to valid decimal literals (1 mutations)
  10015. 77.30 s [really-safe-money-gen] coverage (9/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral Nothing 50 1 into rational 5 % 1 (4 mutations)
  10016. 77.30 s [really-safe-money-gen] coverage (11/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational (-4) % 5 into DecimalLiteral (Just False) 8 1 (21 mutations)
  10017. 77.37 s [really-safe-money-gen] coverage (24/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational 1 % 1 into DecimalLiteral Nothing 1 0 (18 mutations)
  10018. 77.40 s [really-safe-money-gen] coverage (23/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral (Just False) 3 0 into rational (-3) % 1 (4 mutations)
  10019. 77.41 s [really-safe-money-gen] coverage (27/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational 240009 % 20000 into DecimalLiteral Nothing 1200045 5 (22 mutations)
  10020. 77.49 s [really-safe-money-gen] coverage (6/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational 1 % 500 into DecimalLiteral Nothing 2 3 (20 mutations)
  10021. 77.56 s [really-safe-money-gen] coverage (21/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral Nothing 2 0 into rational 2 % 1 (4 mutations)
  10022. 77.56 s [really-safe-money-gen] coverage (10/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational (-1) % 1000 into DecimalLiteral (Just False) 1 3 (21 mutations)
  10023. 77.57 s [really-safe-money-gen] coverage (14/1610): Numeric\.DecimalLiteralSpec.Rational.fromRational.renders to valid decimal literals (23 mutations)
  10024. 77.59 s [really-safe-money-gen] coverage (5/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational 400 % 1 into DecimalLiteral Nothing 400 0 (18 mutations)
  10025. 77.64 s [really-safe-money-gen] coverage (18/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational 10 % 1 into DecimalLiteral Nothing 10 0 (18 mutations)
  10026. 77.71 s [really-safe-money-gen] coverage (16/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral Nothing 400 0 into rational 400 % 1 (4 mutations)
  10027. 77.75 s [really-safe-money-gen] coverage (17/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral Nothing 20 4 into rational 1 % 500 (4 mutations)
  10028. 78.32 s [really-safe-money-gen] coverage (29/1610): Numeric\.DecimalLiteralSpec.Rational.toRational.renders to valid rationals (4 mutations)
  10029. 80.22 s [really-safe-money-gen] coverage (31/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational 2 % 1 into DecimalLiteral Nothing 2 0 (18 mutations)
  10030. 80.34 s [really-safe-money-gen] coverage (32/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral Nothing 1200045 5 into rational 240009 % 20000 (4 mutations)
  10031. 80.39 s [really-safe-money-gen] coverage (34/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral (Just False) 300 5 into rational (-3) % 1000 (4 mutations)
  10032. 80.46 s [really-safe-money-gen] coverage (33/1610): Numeric\.DecimalLiteralSpec.Rational.can turn DecimalLiteral (Just False) 8 1 into rational (-4) % 5 (4 mutations)
  10033. 80.54 s [really-safe-money-gen] coverage (30/1610): Numeric\.DecimalLiteralSpec.Rational.can turn rational (-3) % 1000 into DecimalLiteral (Just False) 3 3 (21 mutations)
  10034. 80.86 s [really-safe-money-gen] coverage (46/1610): Numeric\.DecimalLiteralSpec.Int.fromInt.can parse any rendered literal (13 mutations)
  10035. 80.95 s [really-safe-money-gen] coverage (35/1610): Numeric\.DecimalLiteralSpec.Ratio.fromRatio.can parse any rendered rational (23 mutations)
  10036. 80.95 s [really-safe-money-gen] coverage (44/1610): Numeric\.DecimalLiteralSpec.setSignOptional.produces valid values (0 mutations)
  10037. 81.32 s [really-safe-money-gen] coverage (45/1610): Numeric\.DecimalLiteralSpec.Int.toInt.renders to valid words (6 mutations)
  10038. 81.37 s [really-safe-money-gen] coverage (42/1610): Numeric\.DecimalLiteralSpec.DecimalLiteral\.fromString.fails to parse scientific notation (15 mutations)
  10039. 81.42 s [really-safe-money-gen] coverage (41/1610): Numeric\.DecimalLiteralSpec.GenValid DecimalLiteral.genValid \:\: Gen DecimalLiteral.only generates valid 'DecimalLiteral's (0 mutations)
  10040. 81.48 s [really-safe-money-gen] coverage (37/1610): Numeric\.DecimalLiteralSpec.Ratio.toRatio.renders to valid rationals (5 mutations)
  10041. 81.55 s [really-safe-money-gen] coverage (36/1610): Numeric\.DecimalLiteralSpec.Ratio.fromRatio.renders to valid decimal literals (18 mutations)
  10042. 81.78 s [really-safe-money-gen] coverage (39/1610): Numeric\.DecimalLiteralSpec.setMinimumDigits.produces valid literals (6 mutations)
  10043. 81.81 s [really-safe-money-gen] coverage (40/1610): Numeric\.DecimalLiteralSpec.setMinimumDigits.produces values with more than the given number of digits (6 mutations)
  10044. 81.89 s [really-safe-money-gen] coverage (47/1610): Numeric\.DecimalLiteralSpec.Int.fromInt.renders to valid decimal literals (7 mutations)
  10045. 81.90 s [really-safe-money-gen] coverage (38/1610): Numeric\.DecimalLiteralSpec.setMinimumDigits.does not change the value of the literal (9 mutations)
  10046. 82.04 s [really-safe-money-gen] coverage (43/1610): Numeric\.DecimalLiteralSpec.DecimalLiteral\.fromString.can parse any rendered decimal literal (30 mutations)
  10047. 82.15 s [really-safe-money-gen] coverage (52/1610): Numeric\.DecimalLiteralSpec.toString.can render any decimal literal (2 mutations)
  10048. 82.19 s [really-safe-money-gen] coverage (51/1610): Numeric\.DecimalLiteralSpec.Word.toWord.renders to valid words (0 mutations)
  10049. 82.23 s [really-safe-money-gen] coverage (48/1610): Numeric\.DecimalLiteralSpec.DecimalLiteral\.fromStringM.does the same as DecimalLiteral\.fromString (11 mutations)
  10050. 82.36 s [really-safe-money-gen] coverage (49/1610): Numeric\.DecimalLiteralSpec.Word.fromWord.renders to valid decimal literals (1 mutations)
  10051. 82.50 s [really-safe-money-gen] coverage (50/1610): Numeric\.DecimalLiteralSpec.Word.fromWord.can parse any rendered literal (4 mutations)
  10052. 82.52 s [really-safe-money-gen] coverage (53/1610): Numeric\.DecimalLiteralSpec.examples.can parse "+2" (18 mutations)
  10053. 82.64 s [really-safe-money-gen] coverage (55/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 300 5 (3 mutations)
  10054. 82.64 s [really-safe-money-gen] coverage (54/1610): Numeric\.DecimalLiteralSpec.examples.can parse "1" (15 mutations)
  10055. 82.72 s [really-safe-money-gen] coverage (56/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 50 1 (1 mutations)
  10056. 83.42 s [really-safe-money-gen] coverage (57/1610): Numeric\.DecimalLiteralSpec.examples.can parse "400" (22 mutations)
  10057. 84.86 s [really-safe-money-gen] coverage (58/1610): Numeric\.DecimalLiteralSpec.examples.can parse "5\.0" (19 mutations)
  10058. 84.99 s [really-safe-money-gen] coverage (59/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 8 1 (3 mutations)
  10059. 85.01 s [really-safe-money-gen] coverage (60/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 1 3 (3 mutations)
  10060. 85.07 s [really-safe-money-gen] coverage (61/1610): Numeric\.DecimalLiteralSpec.examples.can parse "0\.00300" (22 mutations)
  10061. 85.12 s [really-safe-money-gen] coverage (65/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 1 0 (1 mutations)
  10062. 85.26 s [really-safe-money-gen] coverage (62/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 7000 3 (1 mutations)
  10063. 85.33 s [really-safe-money-gen] coverage (67/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 1200045 5 (1 mutations)
  10064. 85.35 s [really-safe-money-gen] coverage (63/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 20 4 (3 mutations)
  10065. 85.42 s [really-safe-money-gen] coverage (66/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral (Just True) 2 0 (1 mutations)
  10066. 85.52 s [really-safe-money-gen] coverage (68/1610): Numeric\.DecimalLiteralSpec.examples.can parse "0\.001" (20 mutations)
  10067. 85.53 s [really-safe-money-gen] coverage (72/1610): Numeric\.DecimalLiteralSpec.examples.can parse "0\.8" (17 mutations)
  10068. 85.59 s [really-safe-money-gen] coverage (73/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 400 0 (1 mutations)
  10069. 85.59 s [really-safe-money-gen] coverage (70/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 600 2 (1 mutations)
  10070. 85.62 s [really-safe-money-gen] coverage (64/1610): Numeric\.DecimalLiteralSpec.examples.can parse "12\.00045" (24 mutations)
  10071. 85.68 s [really-safe-money-gen] coverage (74/1610): Numeric\.DecimalLiteralSpec.examples.can parse "0\.09" (20 mutations)
  10072. 85.73 s [really-safe-money-gen] coverage (69/1610): Numeric\.DecimalLiteralSpec.examples.can parse "6\.00" (22 mutations)
  10073. 85.78 s [really-safe-money-gen] coverage (78/1610): Numeric\.DecimalLiteralSpec.examples.can parse "0\.0020" (22 mutations)
  10074. 85.90 s [really-safe-money-gen] coverage (79/1610): Numeric\.DecimalLiteralSpec.Integer.toInteger.renders to valid words (0 mutations)
  10075. 85.90 s [really-safe-money-gen] coverage (71/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral Nothing 9 2 (3 mutations)
  10076. 86.02 s [really-safe-money-gen] coverage (80/1610): Numeric\.DecimalLiteralSpec.Integer.fromInteger.renders to valid decimal literals (7 mutations)
  10077. 86.21 s [really-safe-money-gen] coverage (77/1610): Numeric\.DecimalLiteralSpec.examples.can render DecimalLiteral (Just False) 3 0 (1 mutations)
  10078. 86.21 s [really-safe-money-gen] coverage (76/1610): Numeric\.DecimalLiteralSpec.examples.can parse "-3" (15 mutations)
  10079. 86.33 s [really-safe-money-gen] coverage (81/1610): Numeric\.DecimalLiteralSpec.Integer.fromInteger.can parse any rendered literal (7 mutations)
  10080. 86.38 s [really-safe-money-gen] coverage (83/1610): Numeric\.DecimalLiteralSpec.setSignRequired.produces valid values (1 mutations)
  10081. 86.51 s [really-safe-money-gen] coverage (75/1610): Numeric\.DecimalLiteralSpec.examples.can parse "7\.000" (22 mutations)
  10082. 86.63 s [really-safe-money-gen] coverage (82/1610): Numeric\.DecimalLiteralSpec.digits.produces valid numbers of digits (0 mutations)
  10083. 86.88 s [really-safe-money-gen] coverage (84/1610): Money\.ConversionRateSpec.Rational.toRational.produces valid rationals (0 mutations)
  10084. 87.68 s [really-safe-money-gen] coverage (85/1610): Money\.ConversionRateSpec.Rational.fromRational.roundtrips with toRational (11 mutations)
  10085. 89.07 s [really-safe-money-gen] coverage (88/1610): Money\.ConversionRateSpec.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10086. 89.29 s [really-safe-money-gen] coverage (87/1610): Money\.ConversionRateSpec.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10087. 89.30 s [really-safe-money-gen] coverage (89/1610): Money\.ConversionRateSpec.Ratio.toRatio.produces valid ratios (0 mutations)
  10088. 89.57 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)
  10089. 89.69 s [really-safe-money-gen] coverage (86/1610): Money\.ConversionRateSpec.Rational.fromRational.produces valid conversion rates (11 mutations)
  10090. 89.73 s [really-safe-money-gen] coverage (90/1610): Money\.ConversionRateSpec.invert.produces valid rates (8 mutations)
  10091. 89.76 s [really-safe-money-gen] coverage (100/1610): Money\.AccountSpec.Eq.Eq Account.(==) \:\: Account -> Account -> Bool.is transitive for "valid Account"s (3 mutations)
  10092. 89.93 s [really-safe-money-gen] coverage (108/1610): Money\.AccountSpec.convert.converts this USD to CHF correctly (17 mutations)
  10093. 89.97 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)
  10094. 90.10 s [really-safe-money-gen] coverage (98/1610): Money\.AccountSpec.Eq.Eq Account.(/=) \:\: Account -> Account -> Bool.is antireflexive for "valid Account"s (3 mutations)
  10095. 90.20 s [really-safe-money-gen] coverage (103/1610): Money\.AccountSpec.Eq.says negative 0 equals positive 0 (3 mutations)
  10096. 90.23 s [really-safe-money-gen] coverage (104/1610): Money\.AccountSpec.negate.produces valid amounts (1 mutations)
  10097. 90.26 s [really-safe-money-gen] coverage (95/1610): Money\.ConversionRateSpec.GenValid ConversionRate.genValid \:\: Gen ConversionRate.only generates valid 'ConversionRate's (6 mutations)
  10098. 90.35 s [really-safe-money-gen] coverage (94/1610): Money\.ConversionRateSpec.compose.produces valid rates (6 mutations)
  10099. 90.40 s [really-safe-money-gen] coverage (102/1610): Money\.AccountSpec.Eq.Eq Account.(==) \:\: Account -> Account -> Bool.is reflexive for "valid Account"s (3 mutations)
  10100. 90.43 s [really-safe-money-gen] coverage (101/1610): Money\.AccountSpec.Eq.Eq Account.(==) \:\: Account -> Account -> Bool.is symmetric for "valid Account"s (3 mutations)
  10101. 90.49 s [really-safe-money-gen] coverage (110/1610): Money\.AccountSpec.distribute.correctly distributes 3 into 3 (17 mutations)
  10102. 90.51 s [really-safe-money-gen] coverage (109/1610): Money\.AccountSpec.distribute.correctly distributes 5 into 3 (17 mutations)
  10103. 90.58 s [really-safe-money-gen] coverage (92/1610): Money\.ConversionRateSpec.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10104. 90.61 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)
  10105. 90.96 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)
  10106. 91.21 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)
  10107. 91.24 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)
  10108. 91.44 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)
  10109. 91.73 s [really-safe-money-gen] coverage (105/1610): Money\.AccountSpec.format.produces valid strings (6 mutations)
  10110. 92.53 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)
  10111. 93.99 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)
  10112. 94.33 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)
  10113. 94.57 s [really-safe-money-gen] coverage (118/1610): Money\.AccountSpec.distribute.correctly distributes 10 into 4 (17 mutations)
  10114. 94.65 s [really-safe-money-gen] coverage (122/1610): Money\.AccountSpec.fromAmount.produces valid accounts (1 mutations)
  10115. 94.96 s [really-safe-money-gen] coverage (121/1610): Money\.AccountSpec.abs.produces valid amounts (1 mutations)
  10116. 94.97 s [really-safe-money-gen] coverage (127/1610): Money\.AccountSpec.fromMinimalQuantisations.roundtrips with toMinimalQuantisations (12 mutations)
  10117. 95.10 s [really-safe-money-gen] coverage (120/1610): Money\.AccountSpec.distribute.produces valid amounts (28 mutations)
  10118. 95.15 s [really-safe-money-gen] coverage (131/1610): Money\.AccountSpec.rate.computes this USD to CHF rate correctly (10 mutations)
  10119. 95.16 s [really-safe-money-gen] coverage (117/1610): Money\.AccountSpec.distribute.produces results that sum up to the greater whole (45 mutations)
  10120. 95.26 s [really-safe-money-gen] coverage (128/1610): Money\.AccountSpec.fromMinimalQuantisations.produces valid accounts (10 mutations)
  10121. 95.30 s [really-safe-money-gen] coverage (125/1610): Money\.AccountSpec.fromRatio.produces valid rational (14 mutations)
  10122. 95.35 s [really-safe-money-gen] coverage (133/1610): Money\.AccountSpec.toDouble.produces an infinite or NaN Double with quantisation factor 0 (3 mutations)
  10123. 95.38 s [really-safe-money-gen] coverage (124/1610): Money\.AccountSpec.fromRational.produces valid rational (19 mutations)
  10124. 95.43 s [really-safe-money-gen] coverage (123/1610): Money\.AccountSpec.fromRational.roundtrips with toRational (23 mutations)
  10125. 95.54 s [really-safe-money-gen] coverage (126/1610): Money\.AccountSpec.fromRatio.roundtrips with toRatio (16 mutations)
  10126. 95.58 s [really-safe-money-gen] coverage (132/1610): Money\.AccountSpec.toDouble.produces valid Doubles when the quantisation factor is nonzero (3 mutations)
  10127. 95.65 s [really-safe-money-gen] coverage (134/1610): Money\.AccountSpec.Ord.says -6 is greater than -7 (2 mutations)
  10128. 95.70 s [really-safe-money-gen] coverage (135/1610): Money\.AccountSpec.Ord.says 4 is smaller than 5 (2 mutations)
  10129. 96.09 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)
  10130. 96.14 s [really-safe-money-gen] coverage (136/1610): Money\.AccountSpec.Ord.says -3 is smaller than 2 (2 mutations)
  10131. 96.21 s [really-safe-money-gen] coverage (130/1610): Money\.AccountSpec.rate.produces valid conversion rates (11 mutations)
  10132. 96.23 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)
  10133. 96.31 s [really-safe-money-gen] coverage (107/1610): Money\.AccountSpec.convert.produces valid amounts (17 mutations)
  10134. 96.65 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)
  10135. 96.91 s [really-safe-money-gen] coverage (139/1610): Money\.AccountSpec.Ord.Ord Account.(<=) \:\: Account -> Account -> Bool.is transitive for "valid Account"'s (3 mutations)
  10136. 97.10 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)
  10137. 98.54 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)
  10138. 99.00 s [really-safe-money-gen] coverage (142/1610): Money\.AccountSpec.Ord.Ord Account.(<=) \:\: Account -> Account -> Bool.is reflexive for "valid Account"'s (3 mutations)
  10139. 99.35 s [really-safe-money-gen] coverage (141/1610): Money\.AccountSpec.Ord.Ord Account.(<=) \:\: Account -> Account -> Bool.is antisymmetric for "valid Account"'s (3 mutations)
  10140. 99.43 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)
  10141. 99.46 s [really-safe-money-gen] coverage (143/1610): Money\.AccountSpec.Ord.Ord Account.(>) \:\: Account -> Account -> Bool.is transitive for "valid Account"'s (3 mutations)
  10142. 99.67 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)
  10143. 99.69 s [really-safe-money-gen] coverage (145/1610): Money\.AccountSpec.Ord.Ord Account.(>) \:\: Account -> Account -> Bool.is antireflexive for "valid Account"'s (3 mutations)
  10144. 99.92 s [really-safe-money-gen] coverage (146/1610): Money\.AccountSpec.Ord.Ord Account.(<) \:\: Account -> Account -> Bool.is transitive for "valid Account"'s (3 mutations)
  10145. 99.94 s [really-safe-money-gen] coverage (148/1610): Money\.AccountSpec.Ord.Ord Account.(<) \:\: Account -> Account -> Bool.is antireflexive for "valid Account"'s (3 mutations)
  10146. 99.97 s [really-safe-money-gen] coverage (153/1610): Money\.AccountSpec.toRatio.produces valid Ratios when the quantisation factor is nonzero (1 mutations)
  10147. 100.10 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)
  10148. 100.18 s [really-safe-money-gen] coverage (158/1610): Money\.AccountSpec.sum.correctly sums [1,2,3] to 6 (7 mutations)
  10149. 100.18 s [really-safe-money-gen] coverage (149/1610): Money\.AccountSpec.Ord.Ord Account.(>=) \:\: Account -> Account -> Bool.is reflexive for "valid Account"'s (3 mutations)
  10150. 100.30 s [really-safe-money-gen] coverage (157/1610): Money\.AccountSpec.sum.fails to sum above maxBound (5 mutations)
  10151. 100.32 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)
  10152. 100.36 s [really-safe-money-gen] coverage (152/1610): Money\.AccountSpec.Ord.Ord Account.(>=) \:\: Account -> Account -> Bool.is transitive for "valid Account"'s (3 mutations)
  10153. 100.52 s [really-safe-money-gen] coverage (150/1610): Money\.AccountSpec.Ord.Ord Account.(>=) \:\: Account -> Account -> Bool.is antisymmetric for "valid Account"'s (3 mutations)
  10154. 100.81 s [really-safe-money-gen] coverage (154/1610): Money\.AccountSpec.fractionRatio.produces valid amounts (15 mutations)
  10155. 100.93 s [really-safe-money-gen] coverage (163/1610): Money\.AccountSpec.add.fails for minBound + minBound (4 mutations)
  10156. 100.96 s [really-safe-money-gen] coverage (162/1610): Money\.AccountSpec.add.fails for minBound + (-1) (4 mutations)
  10157. 101.12 s [really-safe-money-gen] coverage (160/1610): Money\.AccountSpec.toMinimalQuantisations.produces valid accounts (3 mutations)
  10158. 101.77 s [really-safe-money-gen] coverage (161/1610): Money\.AccountSpec.add.is commutative (16 mutations)
  10159. 101.84 s [really-safe-money-gen] coverage (155/1610): Money\.AccountSpec.sum.produces valid amounts (17 mutations)
  10160. 101.96 s [really-safe-money-gen] coverage (164/1610): Money\.AccountSpec.add.produces valid amounts (16 mutations)
  10161. 102.28 s [really-safe-money-gen] coverage (165/1610): Money\.AccountSpec.add.has a right-identity\: zero (17 mutations)
  10162. 102.55 s [really-safe-money-gen] coverage (159/1610): Money\.AccountSpec.sum.matches what you would get with Integer, if nothing fails (17 mutations)
  10163. 103.08 s [really-safe-money-gen] coverage (166/1610): Money\.AccountSpec.add.fails for maxBound + 1 (4 mutations)
  10164. 103.31 s [really-safe-money-gen] coverage (167/1610): Money\.AccountSpec.add.fails for maxBound + maxBound (4 mutations)
  10165. 103.47 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)
  10166. 103.72 s [really-safe-money-gen] coverage (169/1610): Money\.AccountSpec.add.has a left-identity\: zero (17 mutations)
  10167. 103.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)
  10168. 103.76 s [really-safe-money-gen] coverage (168/1610): Money\.AccountSpec.add.is associative when both succeed (16 mutations)
  10169. 103.82 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)
  10170. 103.84 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)
  10171. 103.88 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)
  10172. 103.91 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)
  10173. 103.96 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)
  10174. 104.07 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)
  10175. 104.19 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)
  10176. 104.32 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)
  10177. 104.32 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)
  10178. 104.43 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)
  10179. 104.81 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)
  10180. 104.87 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)
  10181. 104.94 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)
  10182. 105.48 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)
  10183. 105.55 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)
  10184. 105.76 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)
  10185. 105.93 s [really-safe-money-gen] coverage (191/1610): Money\.AccountSpec.DecimalLiteral.Account\.fromDecimalLiteral.fails on this amount that is too precise (13 mutations)
  10186. 106.63 s [really-safe-money-gen] coverage (192/1610): Money\.AccountSpec.DecimalLiteral.Account\.fromDecimalLiteral.produces valid factors (22 mutations)
  10187. 106.72 s [really-safe-money-gen] coverage (193/1610): Money\.AccountSpec.DecimalLiteral.Account\.fromDecimalLiteral.fails on this amount that is too precise:1 (13 mutations)
  10188. 106.94 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)
  10189. 107.05 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)
  10190. 107.27 s [really-safe-money-gen] coverage (202/1610): Money\.AccountSpec.subtract.fails for minBound - maxBound (4 mutations)
  10191. 107.36 s [really-safe-money-gen] coverage (204/1610): Money\.AccountSpec.multiply.fails for 3 * minBound (4 mutations)
  10192. 107.43 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)
  10193. 107.47 s [really-safe-money-gen] coverage (203/1610): Money\.AccountSpec.subtract.fails for maxBound - minBound (4 mutations)
  10194. 107.61 s [really-safe-money-gen] coverage (200/1610): Money\.AccountSpec.subtract.matches what you would get with Integer, if nothing fails (16 mutations)
  10195. 107.62 s [really-safe-money-gen] coverage (207/1610): Money\.AccountSpec.multiply.succeeds for 3 * 6 (14 mutations)
  10196. 107.63 s [really-safe-money-gen] coverage (170/1610): Money\.AccountSpec.add.matches what you would get with Integer, if nothing fails (16 mutations)
  10197. 107.70 s [really-safe-money-gen] coverage (199/1610): Money\.AccountSpec.fromDouble.roundtrips with toDouble back to double (30 mutations)
  10198. 107.72 s [really-safe-money-gen] coverage (206/1610): Money\.AccountSpec.multiply.produces valid amounts (15 mutations)
  10199. 107.81 s [really-safe-money-gen] coverage (205/1610): Money\.AccountSpec.multiply.is absorbed by 0 (15 mutations)
  10200. 107.83 s [really-safe-money-gen] coverage (211/1610): Money\.AccountSpec.multiply.fails for 2 * maxbound (4 mutations)
  10201. 108.01 s [really-safe-money-gen] coverage (209/1610): Money\.AccountSpec.multiply.is distributive with add when both succeed (28 mutations)
  10202. 108.04 s [really-safe-money-gen] coverage (198/1610): Money\.AccountSpec.fromDouble.produces valid rational (28 mutations)
  10203. 108.23 s [really-safe-money-gen] coverage (212/1610): Money\.AccountSpec.GenValid Account.genValid \:\: Gen Account.only generates valid 'Account's (1 mutations)
  10204. 108.46 s [really-safe-money-gen] coverage (210/1610): Money\.AccountSpec.multiply.matches what you would get with Integer, if nothing fails (15 mutations)
  10205. 109.17 s [really-safe-money-gen] coverage (214/1610): Money\.AccountSpec.fraction.produces valid amounts (28 mutations)
  10206. 109.33 s [really-safe-money-gen] coverage (221/1610): Money\.MultiAmountSpec.fromAmount.produces valid amounts (16 mutations)
  10207. 109.36 s [really-safe-money-gen] coverage (219/1610): Money\.AccountSpec.toRational.produces valid Rationals when the quantisation factor is nonzero (3 mutations)
  10208. 109.65 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)
  10209. 110.02 s [really-safe-money-gen] coverage (215/1610): Money\.AccountSpec.fraction.Produces a result that can be multiplied back (28 mutations)
  10210. 110.04 s [really-safe-money-gen] coverage (213/1610): Money\.AccountSpec.fraction.Correctly fractions 101 with 1 % 100 (23 mutations)
  10211. 110.48 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)
  10212. 110.68 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)
  10213. 110.88 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)
  10214. 111.36 s [really-safe-money-gen] coverage (223/1610): Money\.MultiAmountSpec.zero.is valid (2 mutations)
  10215. 111.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)
  10216. 111.61 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)
  10217. 111.89 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)
  10218. 111.94 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)
  10219. 112.06 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)
  10220. 112.09 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)
  10221. 112.12 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)
  10222. 112.32 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)
  10223. 112.39 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)
  10224. 112.47 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)
  10225. 112.65 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)
  10226. 112.89 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)
  10227. 112.96 s [really-safe-money-gen] coverage (230/1610): Money\.MultiAmountSpec.sum.produces valid amounts (23 mutations)
  10228. 113.15 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)
  10229. 113.57 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)
  10230. 113.68 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)
  10231. 113.92 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)
  10232. 114.02 s [really-safe-money-gen] coverage (247/1610): Money\.MultiAmountSpec.convertAll.produces the right result in this example (8 mutations)
  10233. 114.13 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)
  10234. 114.36 s [really-safe-money-gen] coverage (249/1610): Money\.MultiAmountSpec.convertAll.does the same as 'convert' when there is only one amount (20 mutations)
  10235. 114.52 s [really-safe-money-gen] coverage (248/1610): Money\.MultiAmountSpec.convertAll.produces valid results when converting two currencies to one (13 mutations)
  10236. 114.82 s [really-safe-money-gen] coverage (255/1610): Money\.MultiAmountSpec.addAmount.produces valid amounts (19 mutations)
  10237. 114.87 s [really-safe-money-gen] coverage (251/1610): Money\.MultiAmountSpec.add.has a right-identity\: zero (2 mutations)
  10238. 114.92 s [really-safe-money-gen] coverage (250/1610): Money\.MultiAmountSpec.add.produces valid amounts (23 mutations)
  10239. 115.20 s [really-safe-money-gen] coverage (256/1610): Money\.MultiAmountSpec.subtractAmount.produces valid amounts (24 mutations)
  10240. 115.54 s [really-safe-money-gen] coverage (258/1610): Money\.MultiAmountSpec.subtract.produces valid amounts (24 mutations)
  10241. 115.60 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)
  10242. 115.64 s [really-safe-money-gen] coverage (220/1610): Money\.AccountSpec.toRational.produces an invalid Rational with quantisation factor 0 (4 mutations)
  10243. 115.64 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)
  10244. 115.80 s [really-safe-money-gen] coverage (259/1610): Money\.MultiAmountSpec.subtract.has a right-identity\: zero (2 mutations)
  10245. 115.96 s [really-safe-money-gen] coverage (216/1610): Money\.AccountSpec.fraction.Correctly fractions 100 with 1 % 100 (23 mutations)
  10246. 116.20 s [really-safe-money-gen] coverage (252/1610): Money\.MultiAmountSpec.add.has a left-identity\: zero (4 mutations)
  10247. 116.29 s [really-safe-money-gen] coverage (254/1610): Money\.MultiAmountSpec.add.is commutative (12 mutations)
  10248. 116.32 s [really-safe-money-gen] coverage (201/1610): Money\.AccountSpec.subtract.fails for minBound - 1 (4 mutations)
  10249. 116.44 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)
  10250. 116.54 s [really-safe-money-gen] coverage (253/1610): Money\.MultiAmountSpec.add.is associative when both succeed (12 mutations)
  10251. 116.54 s [really-safe-money-gen] coverage (91/1610): Money\.ConversionRateSpec.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10252. 116.60 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)
  10253. 116.80 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)
  10254. 116.97 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)
  10255. 117.01 s [really-safe-money-gen] coverage (93/1610): Money\.ConversionRateSpec.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10256. 117.03 s [really-safe-money-gen] coverage (263/1610): Money\.AccountOfSpec.USD.sum.matches what you would get with Integer, if nothing fails (17 mutations)
  10257. 117.23 s [really-safe-money-gen] coverage (262/1610): Money\.AccountOfSpec.USD.sum.produces valid amounts (17 mutations)
  10258. 117.29 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)
  10259. 117.45 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)
  10260. 117.74 s [really-safe-money-gen] coverage (261/1610): Money\.MultiAmountSpec.lookupAmount.can find an added amount (4 mutations)
  10261. 117.78 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)
  10262. 118.23 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)
  10263. 118.27 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)
  10264. 118.53 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)
  10265. 118.57 s [really-safe-money-gen] coverage (208/1610): Money\.AccountSpec.multiply.has an identity\: 1 (15 mutations)
  10266. 118.93 s [really-safe-money-gen] coverage (271/1610): Money\.AccountOfSpec.USD.add.is associative when both succeed (16 mutations)
  10267. 118.93 s [really-safe-money-gen] coverage (273/1610): Money\.AccountOfSpec.USD.add.produces valid amounts (16 mutations)
  10268. 119.00 s [really-safe-money-gen] coverage (272/1610): Money\.AccountOfSpec.USD.add.matches what you would get with Integer, if nothing fails (16 mutations)
  10269. 119.01 s [really-safe-money-gen] coverage (270/1610): Money\.AccountOfSpec.USD.add.has a right-identity\: zero (17 mutations)
  10270. 119.17 s [really-safe-money-gen] coverage (276/1610): Money\.AccountOfSpec.USD.fromAmountOf.produces valid AccountOfs (1 mutations)
  10271. 119.39 s [really-safe-money-gen] coverage (277/1610): Money\.AccountOfSpec.USD.toMinimalQuantisations.produces valid accounts (3 mutations)
  10272. 119.66 s [really-safe-money-gen] coverage (278/1610): Money\.AccountOfSpec.USD.toDouble.produces valid Doubles when the quantisation factor is nonzero (3 mutations)
  10273. 119.66 s [really-safe-money-gen] coverage (260/1610): Money\.MultiAmountSpec.lookupAmount.produces valid amounts (2 mutations)
  10274. 119.69 s [really-safe-money-gen] coverage (280/1610): Money\.AccountOfSpec.USD.negate.produces valid amounts (1 mutations)
  10275. 119.85 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)
  10276. 119.96 s [really-safe-money-gen] coverage (281/1610): Money\.AccountOfSpec.USD.USD.convert.produces valid amounts (17 mutations)
  10277. 119.99 s [really-safe-money-gen] coverage (274/1610): Money\.AccountOfSpec.USD.add.is commutative (16 mutations)
  10278. 120.06 s [really-safe-money-gen] coverage (284/1610): Money\.AccountOfSpec.USD.BTC.rate.produces valid amounts (11 mutations)
  10279. 120.19 s [really-safe-money-gen] coverage (285/1610): Money\.AccountOfSpec.USD.BTC.convert.produces valid amounts (17 mutations)
  10280. 120.44 s [really-safe-money-gen] coverage (288/1610): Money\.AccountOfSpec.USD.ADA.rate.produces valid amounts (11 mutations)
  10281. 120.48 s [really-safe-money-gen] coverage (286/1610): Money\.AccountOfSpec.USD.INR.rate.produces valid amounts (11 mutations)
  10282. 120.53 s [really-safe-money-gen] coverage (282/1610): Money\.AccountOfSpec.USD.USD.rate.produces valid amounts (11 mutations)
  10283. 120.73 s [really-safe-money-gen] coverage (287/1610): Money\.AccountOfSpec.USD.INR.convert.produces valid amounts (17 mutations)
  10284. 120.79 s [really-safe-money-gen] coverage (289/1610): Money\.AccountOfSpec.USD.ADA.convert.produces valid amounts (17 mutations)
  10285. 120.85 s [really-safe-money-gen] coverage (291/1610): Money\.AccountOfSpec.USD.CHF.rate.produces valid amounts (11 mutations)
  10286. 121.20 s [really-safe-money-gen] coverage (295/1610): Money\.AccountOfSpec.USD.fromMinimalQuantisations.roundtrips with toMinimalQuantisations (12 mutations)
  10287. 121.23 s [really-safe-money-gen] coverage (290/1610): Money\.AccountOfSpec.USD.CHF.convert.produces valid amounts (17 mutations)
  10288. 121.81 s [really-safe-money-gen] coverage (294/1610): Money\.AccountOfSpec.USD.fraction.Produces a result that can be multiplied back (28 mutations)
  10289. 121.92 s [really-safe-money-gen] coverage (293/1610): Money\.AccountOfSpec.USD.fraction.produces valid amounts (28 mutations)
  10290. 122.18 s [really-safe-money-gen] coverage (292/1610): Money\.AccountOfSpec.USD.abs.produces valid amounts (1 mutations)
  10291. 122.50 s [really-safe-money-gen] coverage (296/1610): Money\.AccountOfSpec.USD.fromMinimalQuantisations.produces valid accounts (10 mutations)
  10292. 122.66 s [really-safe-money-gen] coverage (275/1610): Money\.AccountOfSpec.USD.add.has a left-identity\: zero (17 mutations)
  10293. 122.73 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)
  10294. 122.90 s [really-safe-money-gen] coverage (279/1610): Money\.AccountOfSpec.USD.fromAmount.produces valid AccountOfs (1 mutations)
  10295. 123.21 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)
  10296. 123.21 s [really-safe-money-gen] coverage (298/1610): Money\.AccountOfSpec.USD.fromDouble.produces valid rational (28 mutations)
  10297. 123.28 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)
  10298. 123.62 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)
  10299. 123.73 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)
  10300. 123.79 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)
  10301. 123.94 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)
  10302. 124.03 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)
  10303. 124.08 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)
  10304. 124.15 s [really-safe-money-gen] coverage (316/1610): Money\.AccountOfSpec.USD.distribute.produces results that sum up to the greater whole (45 mutations)
  10305. 124.54 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)
  10306. 124.69 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)
  10307. 124.84 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)
  10308. 124.91 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)
  10309. 125.00 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)
  10310. 125.03 s [really-safe-money-gen] coverage (324/1610): Money\.AccountOfSpec.USD.distribute.produces valid amounts (28 mutations)
  10311. 125.19 s [really-safe-money-gen] coverage (325/1610): Money\.AccountOfSpec.USD.format.produces valid strings (6 mutations)
  10312. 125.67 s [really-safe-money-gen] coverage (327/1610): Money\.AccountOfSpec.USD.fromRational.produces valid rational (19 mutations)
  10313. 125.92 s [really-safe-money-gen] coverage (326/1610): Money\.AccountOfSpec.USD.subtract.matches what you would get with Integer, if nothing fails (16 mutations)
  10314. 125.98 s [really-safe-money-gen] coverage (329/1610): Money\.AccountOfSpec.USD.multiply.is absorbed by 0 (15 mutations)
  10315. 126.54 s [really-safe-money-gen] coverage (330/1610): Money\.AccountOfSpec.USD.multiply.has an identity\: 1 (15 mutations)
  10316. 126.57 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)
  10317. 126.67 s [really-safe-money-gen] coverage (331/1610): Money\.AccountOfSpec.USD.multiply.produces valid amounts (15 mutations)
  10318. 126.97 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)
  10319. 127.03 s [really-safe-money-gen] coverage (333/1610): Money\.AccountOfSpec.USD.multiply.is distributive with add when both succeed (28 mutations)
  10320. 127.42 s [really-safe-money-gen] coverage (332/1610): Money\.AccountOfSpec.USD.multiply.matches what you would get with Integer, if nothing fails (15 mutations)
  10321. 127.48 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)
  10322. 127.51 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)
  10323. 127.59 s [really-safe-money-gen] coverage (334/1610): Money\.AccountOfSpec.USD.toRational.produces valid Rationals when the quantisation factor is nonzero (3 mutations)
  10324. 128.01 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)
  10325. 128.03 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)
  10326. 128.03 s [really-safe-money-gen] coverage (328/1610): Money\.AccountOfSpec.USD.fromRational.roundtrips with toRational (23 mutations)
  10327. 128.05 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)
  10328. 128.15 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)
  10329. 128.15 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)
  10330. 128.21 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)
  10331. 128.62 s [really-safe-money-gen] coverage (335/1610): Money\.AccountOfSpec.INR.fromAmount.produces valid AccountOfs (1 mutations)
  10332. 128.72 s [really-safe-money-gen] coverage (339/1610): Money\.AccountOfSpec.INR.abs.produces valid amounts (1 mutations)
  10333. 128.72 s [really-safe-money-gen] coverage (340/1610): Money\.AccountOfSpec.INR.add.produces valid amounts (16 mutations)
  10334. 128.85 s [really-safe-money-gen] coverage (342/1610): Money\.AccountOfSpec.INR.add.has a left-identity\: zero (17 mutations)
  10335. 128.88 s [really-safe-money-gen] coverage (344/1610): Money\.AccountOfSpec.INR.add.has a right-identity\: zero (17 mutations)
  10336. 128.95 s [really-safe-money-gen] coverage (343/1610): Money\.AccountOfSpec.INR.add.is commutative (16 mutations)
  10337. 129.03 s [really-safe-money-gen] coverage (345/1610): Money\.AccountOfSpec.INR.add.matches what you would get with Integer, if nothing fails (16 mutations)
  10338. 129.49 s [really-safe-money-gen] coverage (346/1610): Money\.AccountOfSpec.INR.subtract.matches what you would get with Integer, if nothing fails (16 mutations)
  10339. 129.58 s [really-safe-money-gen] coverage (347/1610): Money\.AccountOfSpec.INR.fraction.produces valid amounts (28 mutations)
  10340. 129.79 s [really-safe-money-gen] coverage (348/1610): Money\.AccountOfSpec.INR.fraction.Produces a result that can be multiplied back (28 mutations)
  10341. 130.10 s [really-safe-money-gen] coverage (349/1610): Money\.AccountOfSpec.INR.distribute.produces results that sum up to the greater whole (45 mutations)
  10342. 130.14 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)
  10343. 130.25 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)
  10344. 130.47 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)
  10345. 130.50 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)
  10346. 130.76 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)
  10347. 130.94 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)
  10348. 130.95 s [really-safe-money-gen] coverage (336/1610): Money\.AccountOfSpec.INR.USD.convert.produces valid amounts (17 mutations)
  10349. 131.00 s [really-safe-money-gen] coverage (337/1610): Money\.AccountOfSpec.INR.USD.rate.produces valid amounts (11 mutations)
  10350. 131.26 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)
  10351. 131.31 s [really-safe-money-gen] coverage (341/1610): Money\.AccountOfSpec.INR.add.is associative when both succeed (16 mutations)
  10352. 131.32 s [really-safe-money-gen] coverage (299/1610): Money\.AccountOfSpec.USD.fromDouble.roundtrips with toDouble (30 mutations)
  10353. 131.33 s [really-safe-money-gen] coverage (357/1610): Money\.AccountOfSpec.INR.distribute.produces valid amounts (28 mutations)
  10354. 131.36 s [really-safe-money-gen] coverage (358/1610): Money\.AccountOfSpec.INR.fromAmountOf.produces valid AccountOfs (1 mutations)
  10355. 131.47 s [really-safe-money-gen] coverage (359/1610): Money\.AccountOfSpec.INR.sum.matches what you would get with Integer, if nothing fails (17 mutations)
  10356. 131.60 s [really-safe-money-gen] coverage (360/1610): Money\.AccountOfSpec.INR.sum.produces valid amounts (17 mutations)
  10357. 131.99 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)
  10358. 132.15 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)
  10359. 132.20 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)
  10360. 132.22 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)
  10361. 132.25 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)
  10362. 132.29 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)
  10363. 132.50 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)
  10364. 132.99 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)
  10365. 133.00 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)
  10366. 133.26 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)
  10367. 133.69 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)
  10368. 133.71 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)
  10369. 133.81 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)
  10370. 134.03 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)
  10371. 134.04 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)
  10372. 134.31 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)
  10373. 134.43 s [really-safe-money-gen] coverage (378/1610): Money\.AccountOfSpec.INR.CHF.convert.produces valid amounts (17 mutations)
  10374. 134.49 s [really-safe-money-gen] coverage (377/1610): Money\.AccountOfSpec.INR.CHF.rate.produces valid amounts (11 mutations)
  10375. 134.59 s [really-safe-money-gen] coverage (379/1610): Money\.AccountOfSpec.INR.multiply.is distributive with add when both succeed (28 mutations)
  10376. 134.70 s [really-safe-money-gen] coverage (381/1610): Money\.AccountOfSpec.INR.multiply.is absorbed by 0 (15 mutations)
  10377. 134.70 s [really-safe-money-gen] coverage (380/1610): Money\.AccountOfSpec.INR.multiply.matches what you would get with Integer, if nothing fails (15 mutations)
  10378. 134.80 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)
  10379. 134.90 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)
  10380. 134.91 s [really-safe-money-gen] coverage (382/1610): Money\.AccountOfSpec.INR.multiply.produces valid amounts (15 mutations)
  10381. 134.94 s [really-safe-money-gen] coverage (387/1610): Money\.AccountOfSpec.INR.fromMinimalQuantisations.produces valid accounts (10 mutations)
  10382. 135.08 s [really-safe-money-gen] coverage (388/1610): Money\.AccountOfSpec.INR.fromRational.produces valid rational (19 mutations)
  10383. 135.45 s [really-safe-money-gen] coverage (391/1610): Money\.AccountOfSpec.INR.BTC.rate.produces valid amounts (11 mutations)
  10384. 135.51 s [really-safe-money-gen] coverage (389/1610): Money\.AccountOfSpec.INR.fromRational.roundtrips with toRational (23 mutations)
  10385. 135.58 s [really-safe-money-gen] coverage (390/1610): Money\.AccountOfSpec.INR.toDouble.produces valid Doubles when the quantisation factor is nonzero (3 mutations)
  10386. 135.66 s [really-safe-money-gen] coverage (394/1610): Money\.AccountOfSpec.INR.fromDouble.roundtrips with toDouble (30 mutations)
  10387. 135.71 s [really-safe-money-gen] coverage (392/1610): Money\.AccountOfSpec.INR.BTC.convert.produces valid amounts (17 mutations)
  10388. 135.73 s [really-safe-money-gen] coverage (393/1610): Money\.AccountOfSpec.INR.toRational.produces valid Rationals when the quantisation factor is nonzero (3 mutations)
  10389. 135.92 s [really-safe-money-gen] coverage (395/1610): Money\.AccountOfSpec.INR.fromDouble.produces valid rational (28 mutations)
  10390. 136.30 s [really-safe-money-gen] coverage (397/1610): Money\.AccountOfSpec.INR.ADA.rate.produces valid amounts (11 mutations)
  10391. 136.31 s [really-safe-money-gen] coverage (396/1610): Money\.AccountOfSpec.INR.ADA.convert.produces valid amounts (17 mutations)
  10392. 136.66 s [really-safe-money-gen] coverage (398/1610): Money\.AccountOfSpec.INR.format.produces valid strings (6 mutations)
  10393. 137.01 s [really-safe-money-gen] coverage (399/1610): Money\.AccountOfSpec.INR.toMinimalQuantisations.produces valid accounts (3 mutations)
  10394. 137.05 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)
  10395. 137.19 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)
  10396. 137.49 s [really-safe-money-gen] coverage (386/1610): Money\.AccountOfSpec.INR.fromMinimalQuantisations.roundtrips with toMinimalQuantisations (12 mutations)
  10397. 137.49 s [really-safe-money-gen] coverage (406/1610): Money\.AccountOfSpec.INR.INR.convert.produces valid amounts (17 mutations)
  10398. 137.55 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)
  10399. 137.81 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)
  10400. 137.87 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)
  10401. 138.03 s [really-safe-money-gen] coverage (407/1610): Money\.AccountOfSpec.INR.INR.rate.produces valid amounts (11 mutations)
  10402. 138.10 s [really-safe-money-gen] coverage (408/1610): Money\.AccountOfSpec.CHF.fromAmount.produces valid AccountOfs (1 mutations)
  10403. 138.23 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)
  10404. 138.31 s [really-safe-money-gen] coverage (412/1610): Money\.AccountOfSpec.CHF.multiply.is absorbed by 0 (15 mutations)
  10405. 138.35 s [really-safe-money-gen] coverage (409/1610): Money\.AccountOfSpec.CHF.fromMinimalQuantisations.roundtrips with toMinimalQuantisations (12 mutations)
  10406. 138.39 s [really-safe-money-gen] coverage (411/1610): Money\.AccountOfSpec.CHF.multiply.produces valid amounts (15 mutations)
  10407. 138.40 s [really-safe-money-gen] coverage (410/1610): Money\.AccountOfSpec.CHF.fromMinimalQuantisations.produces valid accounts (10 mutations)
  10408. 138.61 s [really-safe-money-gen] coverage (413/1610): Money\.AccountOfSpec.CHF.multiply.is distributive with add when both succeed (28 mutations)
  10409. 138.63 s [really-safe-money-gen] coverage (414/1610): Money\.AccountOfSpec.CHF.multiply.matches what you would get with Integer, if nothing fails (15 mutations)
  10410. 138.68 s [really-safe-money-gen] coverage (184/1610): Money\.AccountSpec.DecimalLiteral.Account\.toDecimalLiteral.produces valid decimal literals (32 mutations)
  10411. 138.92 s [really-safe-money-gen] coverage (415/1610): Money\.AccountOfSpec.CHF.multiply.has an identity\: 1 (15 mutations)
  10412. 138.99 s [really-safe-money-gen] coverage (416/1610): Money\.AccountOfSpec.CHF.distribute.produces valid amounts (28 mutations)
  10413. 139.13 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)
  10414. 139.16 s [really-safe-money-gen] coverage (417/1610): Money\.AccountOfSpec.CHF.distribute.produces results that sum up to the greater whole (45 mutations)
  10415. 139.26 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)
  10416. 139.39 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)
  10417. 139.66 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)
  10418. 139.78 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)
  10419. 139.99 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)
  10420. 140.38 s [really-safe-money-gen] coverage (425/1610): Money\.AccountOfSpec.CHF.sum.matches what you would get with Integer, if nothing fails (17 mutations)
  10421. 140.43 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)
  10422. 140.56 s [really-safe-money-gen] coverage (426/1610): Money\.AccountOfSpec.CHF.sum.produces valid amounts (17 mutations)
  10423. 140.78 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)
  10424. 140.81 s [really-safe-money-gen] coverage (429/1610): Money\.AccountOfSpec.CHF.USD.rate.produces valid amounts (11 mutations)
  10425. 140.85 s [really-safe-money-gen] coverage (430/1610): Money\.AccountOfSpec.CHF.USD.convert.produces valid amounts (17 mutations)
  10426. 140.90 s [really-safe-money-gen] coverage (428/1610): Money\.AccountOfSpec.CHF.abs.produces valid amounts (1 mutations)
  10427. 141.08 s [really-safe-money-gen] coverage (384/1610): Money\.AccountOfSpec.INR.negate.produces valid amounts (1 mutations)
  10428. 141.23 s [really-safe-money-gen] coverage (432/1610): Money\.AccountOfSpec.CHF.BTC.rate.produces valid amounts (11 mutations)
  10429. 141.23 s [really-safe-money-gen] coverage (431/1610): Money\.AccountOfSpec.CHF.BTC.convert.produces valid amounts (17 mutations)
  10430. 141.27 s [really-safe-money-gen] coverage (433/1610): Money\.AccountOfSpec.CHF.toMinimalQuantisations.produces valid accounts (3 mutations)
  10431. 141.47 s [really-safe-money-gen] coverage (434/1610): Money\.AccountOfSpec.CHF.fraction.Produces a result that can be multiplied back (28 mutations)
  10432. 141.50 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)
  10433. 141.55 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)
  10434. 141.63 s [really-safe-money-gen] coverage (435/1610): Money\.AccountOfSpec.CHF.fraction.produces valid amounts (28 mutations)
  10435. 141.74 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)
  10436. 141.87 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)
  10437. 141.87 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)
  10438. 142.15 s [really-safe-money-gen] coverage (442/1610): Money\.AccountOfSpec.CHF.toDouble.produces valid Doubles when the quantisation factor is nonzero (3 mutations)
  10439. 142.19 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)
  10440. 142.28 s [really-safe-money-gen] coverage (445/1610): Money\.AccountOfSpec.CHF.toRational.produces valid Rationals when the quantisation factor is nonzero (3 mutations)
  10441. 142.33 s [really-safe-money-gen] coverage (443/1610): Money\.AccountOfSpec.CHF.fromAmountOf.produces valid AccountOfs (1 mutations)
  10442. 142.42 s [really-safe-money-gen] coverage (444/1610): Money\.AccountOfSpec.CHF.negate.produces valid amounts (1 mutations)
  10443. 142.51 s [really-safe-money-gen] coverage (447/1610): Money\.AccountOfSpec.CHF.fromRational.produces valid rational (19 mutations)
  10444. 142.88 s [really-safe-money-gen] coverage (448/1610): Money\.AccountOfSpec.CHF.fromRational.roundtrips with toRational (23 mutations)
  10445. 142.99 s [really-safe-money-gen] coverage (446/1610): Money\.AccountOfSpec.CHF.format.produces valid strings (6 mutations)
  10446. 143.18 s [really-safe-money-gen] coverage (449/1610): Money\.AccountOfSpec.CHF.fromDouble.produces valid rational (28 mutations)
  10447. 143.55 s [really-safe-money-gen] coverage (451/1610): Money\.AccountOfSpec.CHF.ADA.convert.produces valid amounts (17 mutations)
  10448. 143.62 s [really-safe-money-gen] coverage (450/1610): Money\.AccountOfSpec.CHF.fromDouble.roundtrips with toDouble (30 mutations)
  10449. 143.72 s [really-safe-money-gen] coverage (452/1610): Money\.AccountOfSpec.CHF.ADA.rate.produces valid amounts (11 mutations)
  10450. 143.87 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)
  10451. 143.91 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)
  10452. 143.97 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)
  10453. 144.04 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)
  10454. 144.19 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)
  10455. 144.23 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)
  10456. 144.34 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)
  10457. 144.38 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)
  10458. 144.55 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)
  10459. 144.56 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)
  10460. 144.60 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)
  10461. 144.65 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)
  10462. 144.75 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)
  10463. 144.88 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)
  10464. 145.00 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)
  10465. 145.10 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)
  10466. 145.19 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)
  10467. 145.22 s [really-safe-money-gen] coverage (470/1610): Money\.AccountOfSpec.CHF.subtract.matches what you would get with Integer, if nothing fails (16 mutations)
  10468. 145.26 s [really-safe-money-gen] coverage (471/1610): Money\.AccountOfSpec.CHF.CHF.rate.produces valid amounts (11 mutations)
  10469. 145.42 s [really-safe-money-gen] coverage (473/1610): Money\.AccountOfSpec.CHF.add.is associative when both succeed (16 mutations)
  10470. 145.57 s [really-safe-money-gen] coverage (475/1610): Money\.AccountOfSpec.CHF.add.matches what you would get with Integer, if nothing fails (16 mutations)
  10471. 145.75 s [really-safe-money-gen] coverage (183/1610): Money\.AccountSpec.DecimalLiteral.Account\.toDecimalLiteral.roundtrips with Account\.fromDecimalLiteral (55 mutations)
  10472. 145.81 s [really-safe-money-gen] coverage (472/1610): Money\.AccountOfSpec.CHF.CHF.convert.produces valid amounts (17 mutations)
  10473. 145.91 s [really-safe-money-gen] coverage (477/1610): Money\.AccountOfSpec.CHF.add.is commutative (16 mutations)
  10474. 146.07 s [really-safe-money-gen] coverage (476/1610): Money\.AccountOfSpec.CHF.add.has a right-identity\: zero (17 mutations)
  10475. 146.57 s [really-safe-money-gen] coverage (478/1610): Money\.AccountOfSpec.CHF.add.produces valid amounts (16 mutations)
  10476. 146.68 s [really-safe-money-gen] coverage (479/1610): Money\.AccountOfSpec.CHF.INR.convert.produces valid amounts (17 mutations)
  10477. 146.93 s [really-safe-money-gen] coverage (480/1610): Money\.AccountOfSpec.CHF.INR.rate.produces valid amounts (11 mutations)
  10478. 147.00 s [really-safe-money-gen] coverage (481/1610): Money\.AccountOfSpec.ADA.fromMinimalQuantisations.produces valid accounts (10 mutations)
  10479. 147.08 s [really-safe-money-gen] coverage (482/1610): Money\.AccountOfSpec.ADA.fromMinimalQuantisations.roundtrips with toMinimalQuantisations (12 mutations)
  10480. 147.33 s [really-safe-money-gen] coverage (484/1610): Money\.AccountOfSpec.ADA.fromDouble.roundtrips with toDouble (30 mutations)
  10481. 147.44 s [really-safe-money-gen] coverage (486/1610): Money\.AccountOfSpec.ADA.fromRational.roundtrips with toRational (23 mutations)
  10482. 147.49 s [really-safe-money-gen] coverage (483/1610): Money\.AccountOfSpec.ADA.fromDouble.produces valid rational (28 mutations)
  10483. 147.60 s [really-safe-money-gen] coverage (485/1610): Money\.AccountOfSpec.ADA.fromRational.produces valid rational (19 mutations)
  10484. 147.69 s [really-safe-money-gen] coverage (488/1610): Money\.AccountOfSpec.ADA.fraction.Produces a result that can be multiplied back (28 mutations)
  10485. 147.88 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)
  10486. 148.15 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)
  10487. 148.17 s [really-safe-money-gen] coverage (489/1610): Money\.AccountOfSpec.ADA.fraction.produces valid amounts (28 mutations)
  10488. 148.38 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)
  10489. 148.45 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)
  10490. 148.54 s [really-safe-money-gen] coverage (474/1610): Money\.AccountOfSpec.CHF.add.has a left-identity\: zero (17 mutations)
  10491. 148.56 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)
  10492. 149.08 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)
  10493. 149.22 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)
  10494. 149.24 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)
  10495. 149.24 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)
  10496. 149.41 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)
  10497. 149.42 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)
  10498. 149.71 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)
  10499. 149.98 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)
  10500. 149.98 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)
  10501. 150.03 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)
  10502. 150.40 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)
  10503. 150.62 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)
  10504. 150.97 s [really-safe-money-gen] coverage (506/1610): Money\.AccountOfSpec.ADA.fromAmountOf.produces valid AccountOfs (1 mutations)
  10505. 151.21 s [really-safe-money-gen] coverage (507/1610): Money\.AccountOfSpec.ADA.toRational.produces valid Rationals when the quantisation factor is nonzero (3 mutations)
  10506. 151.35 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)
  10507. 151.43 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)
  10508. 151.51 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)
  10509. 151.51 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)
  10510. 151.53 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)
  10511. 151.54 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)
  10512. 151.58 s [really-safe-money-gen] coverage (515/1610): Money\.AccountOfSpec.ADA.distribute.produces valid amounts (28 mutations)
  10513. 151.62 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)
  10514. 151.97 s [really-safe-money-gen] coverage (517/1610): Money\.AccountOfSpec.ADA.toDouble.produces valid Doubles when the quantisation factor is nonzero (3 mutations)
  10515. 151.98 s [really-safe-money-gen] coverage (516/1610): Money\.AccountOfSpec.ADA.distribute.produces results that sum up to the greater whole (45 mutations)
  10516. 152.42 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)
  10517. 152.43 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)
  10518. 152.57 s [really-safe-money-gen] coverage (383/1610): Money\.AccountOfSpec.INR.multiply.has an identity\: 1 (15 mutations)
  10519. 152.60 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)
  10520. 152.94 s [really-safe-money-gen] coverage (525/1610): Money\.AccountOfSpec.ADA.format.produces valid strings (6 mutations)
  10521. 152.95 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)
  10522. 153.08 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)
  10523. 153.19 s [really-safe-money-gen] coverage (524/1610): Money\.AccountOfSpec.ADA.abs.produces valid amounts (1 mutations)
  10524. 153.32 s [really-safe-money-gen] coverage (527/1610): Money\.AccountOfSpec.ADA.negate.produces valid amounts (1 mutations)
  10525. 153.32 s [really-safe-money-gen] coverage (526/1610): Money\.AccountOfSpec.ADA.subtract.matches what you would get with Integer, if nothing fails (16 mutations)
  10526. 153.54 s [really-safe-money-gen] coverage (528/1610): Money\.AccountOfSpec.ADA.CHF.rate.produces valid amounts (11 mutations)
  10527. 153.76 s [really-safe-money-gen] coverage (530/1610): Money\.AccountOfSpec.ADA.INR.rate.produces valid amounts (11 mutations)
  10528. 153.95 s [really-safe-money-gen] coverage (529/1610): Money\.AccountOfSpec.ADA.CHF.convert.produces valid amounts (17 mutations)
  10529. 154.02 s [really-safe-money-gen] coverage (531/1610): Money\.AccountOfSpec.ADA.INR.convert.produces valid amounts (17 mutations)
  10530. 154.10 s [really-safe-money-gen] coverage (532/1610): Money\.AccountOfSpec.ADA.fromAmount.produces valid AccountOfs (1 mutations)
  10531. 154.47 s [really-safe-money-gen] coverage (534/1610): Money\.AccountOfSpec.ADA.sum.produces valid amounts (17 mutations)
  10532. 154.73 s [really-safe-money-gen] coverage (535/1610): Money\.AccountOfSpec.ADA.toMinimalQuantisations.produces valid accounts (3 mutations)
  10533. 154.84 s [really-safe-money-gen] coverage (536/1610): Money\.AccountOfSpec.ADA.ADA.convert.produces valid amounts (17 mutations)
  10534. 154.99 s [really-safe-money-gen] coverage (533/1610): Money\.AccountOfSpec.ADA.sum.matches what you would get with Integer, if nothing fails (17 mutations)
  10535. 155.13 s [really-safe-money-gen] coverage (540/1610): Money\.AccountOfSpec.ADA.add.is commutative (16 mutations)
  10536. 155.15 s [really-safe-money-gen] coverage (538/1610): Money\.AccountOfSpec.ADA.add.matches what you would get with Integer, if nothing fails (16 mutations)
  10537. 155.21 s [really-safe-money-gen] coverage (537/1610): Money\.AccountOfSpec.ADA.ADA.rate.produces valid amounts (11 mutations)
  10538. 155.29 s [really-safe-money-gen] coverage (541/1610): Money\.AccountOfSpec.ADA.add.is associative when both succeed (16 mutations)
  10539. 155.35 s [really-safe-money-gen] coverage (539/1610): Money\.AccountOfSpec.ADA.add.produces valid amounts (16 mutations)
  10540. 155.38 s [really-safe-money-gen] coverage (543/1610): Money\.AccountOfSpec.ADA.add.has a right-identity\: zero (17 mutations)
  10541. 155.40 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)
  10542. 155.58 s [really-safe-money-gen] coverage (545/1610): Money\.AccountOfSpec.ADA.BTC.convert.produces valid amounts (17 mutations)
  10543. 155.67 s [really-safe-money-gen] coverage (546/1610): Money\.AccountOfSpec.ADA.BTC.rate.produces valid amounts (11 mutations)
  10544. 156.03 s [really-safe-money-gen] coverage (547/1610): Money\.AccountOfSpec.ADA.multiply.produces valid amounts (15 mutations)
  10545. 156.13 s [really-safe-money-gen] coverage (548/1610): Money\.AccountOfSpec.ADA.multiply.is distributive with add when both succeed (28 mutations)
  10546. 156.24 s [really-safe-money-gen] coverage (549/1610): Money\.AccountOfSpec.ADA.multiply.has an identity\: 1 (15 mutations)
  10547. 156.30 s [really-safe-money-gen] coverage (551/1610): Money\.AccountOfSpec.ADA.multiply.is absorbed by 0 (15 mutations)
  10548. 156.50 s [really-safe-money-gen] coverage (552/1610): Money\.AccountOfSpec.ADA.USD.convert.produces valid amounts (17 mutations)
  10549. 156.67 s [really-safe-money-gen] coverage (553/1610): Money\.AccountOfSpec.ADA.USD.rate.produces valid amounts (11 mutations)
  10550. 156.80 s [really-safe-money-gen] coverage (554/1610): Money\.AccountOfSpec.BTC.add.is commutative (16 mutations)
  10551. 156.90 s [really-safe-money-gen] coverage (558/1610): Money\.AccountOfSpec.BTC.add.is associative when both succeed (16 mutations)
  10552. 156.97 s [really-safe-money-gen] coverage (556/1610): Money\.AccountOfSpec.BTC.add.has a left-identity\: zero (17 mutations)
  10553. 157.05 s [really-safe-money-gen] coverage (559/1610): Money\.AccountOfSpec.BTC.add.matches what you would get with Integer, if nothing fails (16 mutations)
  10554. 157.29 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)
  10555. 157.44 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)
  10556. 157.61 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)
  10557. 157.68 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)
  10558. 157.82 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)
  10559. 158.23 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)
  10560. 158.50 s [really-safe-money-gen] coverage (555/1610): Money\.AccountOfSpec.BTC.add.produces valid amounts (16 mutations)
  10561. 158.51 s [really-safe-money-gen] coverage (550/1610): Money\.AccountOfSpec.ADA.multiply.matches what you would get with Integer, if nothing fails (15 mutations)
  10562. 158.71 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)
  10563. 158.84 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)
  10564. 158.92 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)
  10565. 159.05 s [really-safe-money-gen] coverage (557/1610): Money\.AccountOfSpec.BTC.add.has a right-identity\: zero (17 mutations)
  10566. 159.07 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)
  10567. 159.11 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)
  10568. 159.16 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)
  10569. 159.18 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)
  10570. 159.33 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)
  10571. 159.51 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)
  10572. 159.92 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)
  10573. 159.95 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)
  10574. 160.00 s [really-safe-money-gen] coverage (576/1610): Money\.AccountOfSpec.BTC.BTC.convert.produces valid amounts (17 mutations)
  10575. 160.19 s [really-safe-money-gen] coverage (577/1610): Money\.AccountOfSpec.BTC.BTC.rate.produces valid amounts (11 mutations)
  10576. 160.30 s [really-safe-money-gen] coverage (578/1610): Money\.AccountOfSpec.BTC.distribute.produces valid amounts (28 mutations)
  10577. 160.54 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)
  10578. 160.63 s [really-safe-money-gen] coverage (579/1610): Money\.AccountOfSpec.BTC.distribute.produces results that sum up to the greater whole (45 mutations)
  10579. 160.75 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)
  10580. 160.78 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)
  10581. 160.94 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)
  10582. 161.19 s [really-safe-money-gen] coverage (587/1610): Money\.AccountOfSpec.BTC.toDouble.produces valid Doubles when the quantisation factor is nonzero (3 mutations)
  10583. 161.32 s [really-safe-money-gen] coverage (588/1610): Money\.AccountOfSpec.BTC.negate.produces valid amounts (1 mutations)
  10584. 161.45 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)
  10585. 161.49 s [really-safe-money-gen] coverage (542/1610): Money\.AccountOfSpec.ADA.add.has a left-identity\: zero (17 mutations)
  10586. 161.66 s [really-safe-money-gen] coverage (592/1610): Money\.AccountOfSpec.BTC.multiply.is absorbed by 0 (15 mutations)
  10587. 161.73 s [really-safe-money-gen] coverage (594/1610): Money\.AccountOfSpec.BTC.multiply.matches what you would get with Integer, if nothing fails (15 mutations)
  10588. 162.22 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)
  10589. 162.26 s [really-safe-money-gen] coverage (591/1610): Money\.AccountOfSpec.BTC.multiply.is distributive with add when both succeed (28 mutations)
  10590. 162.50 s [really-safe-money-gen] coverage (593/1610): Money\.AccountOfSpec.BTC.multiply.has an identity\: 1 (15 mutations)
  10591. 162.50 s [really-safe-money-gen] coverage (589/1610): Money\.AccountOfSpec.BTC.fromAmountOf.produces valid AccountOfs (1 mutations)
  10592. 162.50 s [really-safe-money-gen] coverage (590/1610): Money\.AccountOfSpec.BTC.multiply.produces valid amounts (15 mutations)
  10593. 162.75 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)
  10594. 162.79 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)
  10595. 162.79 s [really-safe-money-gen] coverage (603/1610): Money\.AccountOfSpec.BTC.format.produces valid strings (6 mutations)
  10596. 162.82 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)
  10597. 162.90 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)
  10598. 163.03 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)
  10599. 163.22 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)
  10600. 163.47 s [really-safe-money-gen] coverage (596/1610): Money\.AccountOfSpec.BTC.sum.matches what you would get with Integer, if nothing fails (17 mutations)
  10601. 163.59 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)
  10602. 163.74 s [really-safe-money-gen] coverage (595/1610): Money\.AccountOfSpec.BTC.sum.produces valid amounts (17 mutations)
  10603. 163.79 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)
  10604. 163.93 s [really-safe-money-gen] coverage (612/1610): Money\.AccountOfSpec.BTC.toMinimalQuantisations.produces valid accounts (3 mutations)
  10605. 164.11 s [really-safe-money-gen] coverage (618/1610): Money\.AccountOfSpec.BTC.fromDouble.produces valid rational (28 mutations)
  10606. 164.14 s [really-safe-money-gen] coverage (617/1610): Money\.AccountOfSpec.BTC.fromDouble.roundtrips with toDouble (30 mutations)
  10607. 164.14 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)
  10608. 164.35 s [really-safe-money-gen] coverage (616/1610): Money\.AccountOfSpec.BTC.INR.convert.produces valid amounts (17 mutations)
  10609. 164.57 s [really-safe-money-gen] coverage (620/1610): Money\.AccountOfSpec.BTC.fraction.Produces a result that can be multiplied back (28 mutations)
  10610. 164.59 s [really-safe-money-gen] coverage (619/1610): Money\.AccountOfSpec.BTC.fraction.produces valid amounts (28 mutations)
  10611. 164.72 s [really-safe-money-gen] coverage (621/1610): Money\.AccountOfSpec.BTC.CHF.rate.produces valid amounts (11 mutations)
  10612. 164.91 s [really-safe-money-gen] coverage (615/1610): Money\.AccountOfSpec.BTC.INR.rate.produces valid amounts (11 mutations)
  10613. 164.96 s [really-safe-money-gen] coverage (622/1610): Money\.AccountOfSpec.BTC.CHF.convert.produces valid amounts (17 mutations)
  10614. 165.10 s [really-safe-money-gen] coverage (624/1610): Money\.AccountOfSpec.BTC.fromMinimalQuantisations.produces valid accounts (10 mutations)
  10615. 165.18 s [really-safe-money-gen] coverage (625/1610): Money\.AccountOfSpec.BTC.fromAmount.produces valid AccountOfs (1 mutations)
  10616. 165.53 s [really-safe-money-gen] coverage (623/1610): Money\.AccountOfSpec.BTC.fromMinimalQuantisations.roundtrips with toMinimalQuantisations (12 mutations)
  10617. 165.57 s [really-safe-money-gen] coverage (626/1610): Money\.AccountOfSpec.BTC.abs.produces valid amounts (1 mutations)
  10618. 165.86 s [really-safe-money-gen] coverage (614/1610): Money\.AccountOfSpec.BTC.toRational.produces valid Rationals when the quantisation factor is nonzero (3 mutations)
  10619. 165.91 s [really-safe-money-gen] coverage (629/1610): Money\.ConversionRateOfSpec.INR.ADA.Ratio.toRatio.produces valid ratios (0 mutations)
  10620. 165.97 s [really-safe-money-gen] coverage (628/1610): Money\.ConversionRateOfSpec.INR.ADA.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10621. 166.16 s [really-safe-money-gen] coverage (632/1610): Money\.ConversionRateOfSpec.INR.ADA.Rational.fromRational.produces valid conversion rates (11 mutations)
  10622. 166.26 s [really-safe-money-gen] coverage (627/1610): Money\.ConversionRateOfSpec.INR.ADA.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10623. 166.31 s [really-safe-money-gen] coverage (631/1610): Money\.ConversionRateOfSpec.INR.ADA.Rational.toRational.produces valid rationals (0 mutations)
  10624. 166.31 s [really-safe-money-gen] coverage (634/1610): Money\.ConversionRateOfSpec.INR.ADA.compose.produces valid rates (6 mutations)
  10625. 166.32 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)
  10626. 166.45 s [really-safe-money-gen] coverage (635/1610): Money\.ConversionRateOfSpec.INR.ADA.invert.produces valid rates (8 mutations)
  10627. 166.88 s [really-safe-money-gen] coverage (636/1610): Money\.ConversionRateOfSpec.INR.ADA.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10628. 166.94 s [really-safe-money-gen] coverage (637/1610): Money\.ConversionRateOfSpec.INR.ADA.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10629. 167.14 s [really-safe-money-gen] coverage (610/1610): Money\.AccountOfSpec.BTC.fromRational.roundtrips with toRational (23 mutations)
  10630. 167.14 s [really-safe-money-gen] coverage (607/1610): Money\.AccountOfSpec.BTC.ADA.convert.produces valid amounts (17 mutations)
  10631. 167.28 s [really-safe-money-gen] coverage (606/1610): Money\.AccountOfSpec.BTC.subtract.matches what you would get with Integer, if nothing fails (16 mutations)
  10632. 167.46 s [really-safe-money-gen] coverage (608/1610): Money\.AccountOfSpec.BTC.ADA.rate.produces valid amounts (11 mutations)
  10633. 167.56 s [really-safe-money-gen] coverage (604/1610): Money\.AccountOfSpec.BTC.USD.convert.produces valid amounts (17 mutations)
  10634. 167.57 s [really-safe-money-gen] coverage (609/1610): Money\.AccountOfSpec.BTC.fromRational.produces valid rational (19 mutations)
  10635. 167.62 s [really-safe-money-gen] coverage (605/1610): Money\.AccountOfSpec.BTC.USD.rate.produces valid amounts (11 mutations)
  10636. 167.76 s [really-safe-money-gen] coverage (644/1610): Money\.ConversionRateOfSpec.INR.BTC.Rational.toRational.produces valid rationals (0 mutations)
  10637. 167.98 s [really-safe-money-gen] coverage (645/1610): Money\.ConversionRateOfSpec.INR.BTC.Rational.fromRational.roundtrips with toRational (11 mutations)
  10638. 168.05 s [really-safe-money-gen] coverage (638/1610): Money\.ConversionRateOfSpec.INR.ADA.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10639. 168.12 s [really-safe-money-gen] coverage (640/1610): Money\.ConversionRateOfSpec.INR.BTC.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10640. 168.43 s [really-safe-money-gen] coverage (641/1610): Money\.ConversionRateOfSpec.INR.BTC.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10641. 168.60 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)
  10642. 168.77 s [really-safe-money-gen] coverage (648/1610): Money\.ConversionRateOfSpec.INR.BTC.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10643. 168.81 s [really-safe-money-gen] coverage (649/1610): Money\.ConversionRateOfSpec.INR.BTC.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10644. 168.89 s [really-safe-money-gen] coverage (651/1610): Money\.ConversionRateOfSpec.INR.CHF.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10645. 169.24 s [really-safe-money-gen] coverage (652/1610): Money\.ConversionRateOfSpec.INR.CHF.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10646. 169.24 s [really-safe-money-gen] coverage (647/1610): Money\.ConversionRateOfSpec.INR.BTC.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10647. 169.34 s [really-safe-money-gen] coverage (646/1610): Money\.ConversionRateOfSpec.INR.BTC.Rational.fromRational.produces valid conversion rates (11 mutations)
  10648. 169.47 s [really-safe-money-gen] coverage (633/1610): Money\.ConversionRateOfSpec.INR.ADA.Rational.fromRational.roundtrips with toRational (11 mutations)
  10649. 169.62 s [really-safe-money-gen] coverage (654/1610): Money\.ConversionRateOfSpec.INR.CHF.Ratio.toRatio.produces valid ratios (0 mutations)
  10650. 169.65 s [really-safe-money-gen] coverage (664/1610): Money\.ConversionRateOfSpec.INR.USD.Rational.toRational.produces valid rationals (0 mutations)
  10651. 169.65 s [really-safe-money-gen] coverage (661/1610): Money\.ConversionRateOfSpec.INR.CHF.compose.produces valid rates (6 mutations)
  10652. 169.79 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)
  10653. 169.80 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)
  10654. 169.91 s [really-safe-money-gen] coverage (653/1610): Money\.ConversionRateOfSpec.INR.CHF.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10655. 170.14 s [really-safe-money-gen] coverage (659/1610): Money\.ConversionRateOfSpec.INR.CHF.Rational.toRational.produces valid rationals (0 mutations)
  10656. 170.26 s [really-safe-money-gen] coverage (658/1610): Money\.ConversionRateOfSpec.INR.CHF.Rational.fromRational.produces valid conversion rates (11 mutations)
  10657. 170.41 s [really-safe-money-gen] coverage (657/1610): Money\.ConversionRateOfSpec.INR.CHF.Rational.fromRational.roundtrips with toRational (11 mutations)
  10658. 170.43 s [really-safe-money-gen] coverage (660/1610): Money\.ConversionRateOfSpec.INR.CHF.invert.produces valid rates (8 mutations)
  10659. 170.51 s [really-safe-money-gen] coverage (655/1610): Money\.ConversionRateOfSpec.INR.CHF.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10660. 170.73 s [really-safe-money-gen] coverage (656/1610): Money\.ConversionRateOfSpec.INR.CHF.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10661. 170.75 s [really-safe-money-gen] coverage (675/1610): Money\.ConversionRateOfSpec.INR.INR.Rational.toRational.produces valid rationals (0 mutations)
  10662. 170.84 s [really-safe-money-gen] coverage (676/1610): Money\.ConversionRateOfSpec.INR.INR.Rational.fromRational.roundtrips with toRational (11 mutations)
  10663. 170.98 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)
  10664. 171.08 s [really-safe-money-gen] coverage (673/1610): Money\.ConversionRateOfSpec.INR.USD.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10665. 171.16 s [really-safe-money-gen] coverage (677/1610): Money\.ConversionRateOfSpec.INR.INR.Rational.fromRational.produces valid conversion rates (11 mutations)
  10666. 171.66 s [really-safe-money-gen] coverage (670/1610): Money\.ConversionRateOfSpec.INR.USD.Ratio.toRatio.produces valid ratios (0 mutations)
  10667. 171.73 s [really-safe-money-gen] coverage (680/1610): Money\.ConversionRateOfSpec.INR.INR.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10668. 172.26 s [really-safe-money-gen] coverage (682/1610): Money\.ConversionRateOfSpec.INR.INR.compose.produces valid rates (6 mutations)
  10669. 172.48 s [really-safe-money-gen] coverage (686/1610): Money\.ConversionRateOfSpec.INR.INR.Ratio.toRatio.produces valid ratios (0 mutations)
  10670. 172.68 s [really-safe-money-gen] coverage (688/1610): Money\.ConversionRateOfSpec.ADA.USD.Ratio.toRatio.produces valid ratios (0 mutations)
  10671. 172.78 s [really-safe-money-gen] coverage (687/1610): Money\.ConversionRateOfSpec.ADA.USD.compose.produces valid rates (6 mutations)
  10672. 172.93 s [really-safe-money-gen] coverage (689/1610): Money\.ConversionRateOfSpec.ADA.USD.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10673. 173.19 s [really-safe-money-gen] coverage (692/1610): Money\.ConversionRateOfSpec.ADA.USD.Rational.fromRational.produces valid conversion rates (11 mutations)
  10674. 173.42 s [really-safe-money-gen] coverage (691/1610): Money\.ConversionRateOfSpec.ADA.USD.invert.produces valid rates (8 mutations)
  10675. 173.56 s [really-safe-money-gen] coverage (690/1610): Money\.ConversionRateOfSpec.ADA.USD.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10676. 173.58 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)
  10677. 173.73 s [really-safe-money-gen] coverage (693/1610): Money\.ConversionRateOfSpec.ADA.USD.Rational.fromRational.roundtrips with toRational (11 mutations)
  10678. 173.97 s [really-safe-money-gen] coverage (694/1610): Money\.ConversionRateOfSpec.ADA.USD.Rational.toRational.produces valid rationals (0 mutations)
  10679. 174.03 s [really-safe-money-gen] coverage (698/1610): Money\.ConversionRateOfSpec.ADA.USD.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10680. 174.28 s [really-safe-money-gen] coverage (696/1610): Money\.ConversionRateOfSpec.ADA.USD.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10681. 174.31 s [really-safe-money-gen] coverage (685/1610): Money\.ConversionRateOfSpec.INR.INR.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10682. 174.75 s [really-safe-money-gen] coverage (683/1610): Money\.ConversionRateOfSpec.INR.INR.invert.produces valid rates (8 mutations)
  10683. 174.80 s [really-safe-money-gen] coverage (697/1610): Money\.ConversionRateOfSpec.ADA.USD.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10684. 175.15 s [really-safe-money-gen] coverage (681/1610): Money\.ConversionRateOfSpec.INR.INR.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10685. 175.32 s [really-safe-money-gen] coverage (674/1610): Money\.ConversionRateOfSpec.INR.USD.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10686. 175.42 s [really-safe-money-gen] coverage (708/1610): Money\.ConversionRateOfSpec.ADA.CHF.Ratio.toRatio.produces valid ratios (0 mutations)
  10687. 175.44 s [really-safe-money-gen] coverage (639/1610): Money\.ConversionRateOfSpec.INR.BTC.Ratio.toRatio.produces valid ratios (0 mutations)
  10688. 175.53 s [really-safe-money-gen] coverage (707/1610): Money\.ConversionRateOfSpec.ADA.CHF.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10689. 175.59 s [really-safe-money-gen] coverage (672/1610): Money\.ConversionRateOfSpec.INR.USD.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10690. 175.60 s [really-safe-money-gen] coverage (710/1610): Money\.ConversionRateOfSpec.ADA.CHF.invert.produces valid rates (8 mutations)
  10691. 175.69 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)
  10692. 175.71 s [really-safe-money-gen] coverage (706/1610): Money\.ConversionRateOfSpec.ADA.CHF.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10693. 176.26 s [really-safe-money-gen] coverage (703/1610): Money\.ConversionRateOfSpec.ADA.CHF.Rational.toRational.produces valid rationals (0 mutations)
  10694. 176.69 s [really-safe-money-gen] coverage (702/1610): Money\.ConversionRateOfSpec.ADA.CHF.compose.produces valid rates (6 mutations)
  10695. 177.07 s [really-safe-money-gen] coverage (701/1610): Money\.ConversionRateOfSpec.ADA.CHF.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10696. 177.15 s [really-safe-money-gen] coverage (704/1610): Money\.ConversionRateOfSpec.ADA.CHF.Rational.fromRational.roundtrips with toRational (11 mutations)
  10697. 177.37 s [really-safe-money-gen] coverage (705/1610): Money\.ConversionRateOfSpec.ADA.CHF.Rational.fromRational.produces valid conversion rates (11 mutations)
  10698. 177.40 s [really-safe-money-gen] coverage (700/1610): Money\.ConversionRateOfSpec.ADA.CHF.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10699. 177.68 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)
  10700. 177.73 s [really-safe-money-gen] coverage (714/1610): Money\.ConversionRateOfSpec.ADA.ADA.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10701. 177.84 s [really-safe-money-gen] coverage (699/1610): Money\.ConversionRateOfSpec.ADA.CHF.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10702. 178.04 s [really-safe-money-gen] coverage (716/1610): Money\.ConversionRateOfSpec.ADA.ADA.compose.produces valid rates (6 mutations)
  10703. 178.06 s [really-safe-money-gen] coverage (713/1610): Money\.ConversionRateOfSpec.ADA.ADA.Ratio.toRatio.produces valid ratios (0 mutations)
  10704. 178.26 s [really-safe-money-gen] coverage (721/1610): Money\.ConversionRateOfSpec.ADA.ADA.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10705. 178.51 s [really-safe-money-gen] coverage (722/1610): Money\.ConversionRateOfSpec.ADA.ADA.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10706. 178.53 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)
  10707. 178.58 s [really-safe-money-gen] coverage (724/1610): Money\.ConversionRateOfSpec.ADA.BTC.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10708. 178.58 s [really-safe-money-gen] coverage (727/1610): Money\.ConversionRateOfSpec.ADA.BTC.invert.produces valid rates (8 mutations)
  10709. 178.83 s [really-safe-money-gen] coverage (723/1610): Money\.ConversionRateOfSpec.ADA.BTC.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10710. 178.99 s [really-safe-money-gen] coverage (730/1610): Money\.ConversionRateOfSpec.ADA.BTC.Rational.fromRational.produces valid conversion rates (11 mutations)
  10711. 179.02 s [really-safe-money-gen] coverage (728/1610): Money\.ConversionRateOfSpec.ADA.BTC.Rational.toRational.produces valid rationals (0 mutations)
  10712. 179.18 s [really-safe-money-gen] coverage (729/1610): Money\.ConversionRateOfSpec.ADA.BTC.Rational.fromRational.roundtrips with toRational (11 mutations)
  10713. 179.23 s [really-safe-money-gen] coverage (736/1610): Money\.ConversionRateOfSpec.ADA.INR.Rational.fromRational.produces valid conversion rates (11 mutations)
  10714. 179.33 s [really-safe-money-gen] coverage (733/1610): Money\.ConversionRateOfSpec.ADA.BTC.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10715. 179.36 s [really-safe-money-gen] coverage (738/1610): Money\.ConversionRateOfSpec.ADA.INR.Rational.toRational.produces valid rationals (0 mutations)
  10716. 179.47 s [really-safe-money-gen] coverage (739/1610): Money\.ConversionRateOfSpec.ADA.INR.Ratio.toRatio.produces valid ratios (0 mutations)
  10717. 179.49 s [really-safe-money-gen] coverage (740/1610): Money\.ConversionRateOfSpec.ADA.INR.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10718. 179.51 s [really-safe-money-gen] coverage (737/1610): Money\.ConversionRateOfSpec.ADA.INR.Rational.fromRational.roundtrips with toRational (11 mutations)
  10719. 179.71 s [really-safe-money-gen] coverage (725/1610): Money\.ConversionRateOfSpec.ADA.BTC.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10720. 179.73 s [really-safe-money-gen] coverage (741/1610): Money\.ConversionRateOfSpec.ADA.INR.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10721. 180.13 s [really-safe-money-gen] coverage (742/1610): Money\.ConversionRateOfSpec.ADA.INR.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10722. 180.55 s [really-safe-money-gen] coverage (743/1610): Money\.ConversionRateOfSpec.ADA.INR.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10723. 180.63 s [really-safe-money-gen] coverage (745/1610): Money\.ConversionRateOfSpec.ADA.INR.compose.produces valid rates (6 mutations)
  10724. 180.68 s [really-safe-money-gen] coverage (744/1610): Money\.ConversionRateOfSpec.ADA.INR.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10725. 180.91 s [really-safe-money-gen] coverage (747/1610): Money\.ConversionRateOfSpec.CHF.BTC.Rational.toRational.produces valid rationals (0 mutations)
  10726. 180.92 s [really-safe-money-gen] coverage (746/1610): Money\.ConversionRateOfSpec.ADA.INR.invert.produces valid rates (8 mutations)
  10727. 181.16 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)
  10728. 181.20 s [really-safe-money-gen] coverage (748/1610): Money\.ConversionRateOfSpec.CHF.BTC.Rational.fromRational.roundtrips with toRational (11 mutations)
  10729. 181.37 s [really-safe-money-gen] coverage (749/1610): Money\.ConversionRateOfSpec.CHF.BTC.Rational.fromRational.produces valid conversion rates (11 mutations)
  10730. 181.44 s [really-safe-money-gen] coverage (666/1610): Money\.ConversionRateOfSpec.INR.USD.Rational.fromRational.roundtrips with toRational (11 mutations)
  10731. 181.63 s [really-safe-money-gen] coverage (719/1610): Money\.ConversionRateOfSpec.ADA.ADA.Rational.fromRational.produces valid conversion rates (11 mutations)
  10732. 182.00 s [really-safe-money-gen] coverage (712/1610): Money\.ConversionRateOfSpec.ADA.ADA.invert.produces valid rates (8 mutations)
  10733. 182.00 s [really-safe-money-gen] coverage (751/1610): Money\.ConversionRateOfSpec.CHF.BTC.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10734. 182.07 s [really-safe-money-gen] coverage (750/1610): Money\.ConversionRateOfSpec.CHF.BTC.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10735. 182.30 s [really-safe-money-gen] coverage (752/1610): Money\.ConversionRateOfSpec.CHF.BTC.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10736. 182.32 s [really-safe-money-gen] coverage (720/1610): Money\.ConversionRateOfSpec.ADA.ADA.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10737. 182.43 s [really-safe-money-gen] coverage (734/1610): Money\.ConversionRateOfSpec.ADA.BTC.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10738. 182.44 s [really-safe-money-gen] coverage (679/1610): Money\.ConversionRateOfSpec.INR.INR.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10739. 182.51 s [really-safe-money-gen] coverage (717/1610): Money\.ConversionRateOfSpec.ADA.ADA.Rational.toRational.produces valid rationals (0 mutations)
  10740. 182.54 s [really-safe-money-gen] coverage (715/1610): Money\.ConversionRateOfSpec.ADA.ADA.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10741. 182.59 s [really-safe-money-gen] coverage (684/1610): Money\.ConversionRateOfSpec.INR.INR.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10742. 182.73 s [really-safe-money-gen] coverage (753/1610): Money\.ConversionRateOfSpec.CHF.BTC.compose.produces valid rates (6 mutations)
  10743. 182.85 s [really-safe-money-gen] coverage (731/1610): Money\.ConversionRateOfSpec.ADA.BTC.compose.produces valid rates (6 mutations)
  10744. 182.89 s [really-safe-money-gen] coverage (718/1610): Money\.ConversionRateOfSpec.ADA.ADA.Rational.fromRational.roundtrips with toRational (11 mutations)
  10745. 182.90 s [really-safe-money-gen] coverage (667/1610): Money\.ConversionRateOfSpec.INR.USD.invert.produces valid rates (8 mutations)
  10746. 183.04 s [really-safe-money-gen] coverage (754/1610): Money\.ConversionRateOfSpec.CHF.BTC.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10747. 183.04 s [really-safe-money-gen] coverage (755/1610): Money\.ConversionRateOfSpec.CHF.BTC.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10748. 183.20 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)
  10749. 183.47 s [really-safe-money-gen] coverage (759/1610): Money\.ConversionRateOfSpec.CHF.ADA.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10750. 183.91 s [really-safe-money-gen] coverage (762/1610): Money\.ConversionRateOfSpec.CHF.ADA.invert.produces valid rates (8 mutations)
  10751. 184.15 s [really-safe-money-gen] coverage (763/1610): Money\.ConversionRateOfSpec.CHF.ADA.Ratio.toRatio.produces valid ratios (0 mutations)
  10752. 184.18 s [really-safe-money-gen] coverage (761/1610): Money\.ConversionRateOfSpec.CHF.ADA.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10753. 184.28 s [really-safe-money-gen] coverage (760/1610): Money\.ConversionRateOfSpec.CHF.ADA.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10754. 184.29 s [really-safe-money-gen] coverage (764/1610): Money\.ConversionRateOfSpec.CHF.ADA.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10755. 184.54 s [really-safe-money-gen] coverage (765/1610): Money\.ConversionRateOfSpec.CHF.ADA.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10756. 184.66 s [really-safe-money-gen] coverage (732/1610): Money\.ConversionRateOfSpec.ADA.BTC.Ratio.toRatio.produces valid ratios (0 mutations)
  10757. 184.79 s [really-safe-money-gen] coverage (766/1610): Money\.ConversionRateOfSpec.CHF.ADA.compose.produces valid rates (6 mutations)
  10758. 184.85 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)
  10759. 185.03 s [really-safe-money-gen] coverage (757/1610): Money\.ConversionRateOfSpec.CHF.BTC.invert.produces valid rates (8 mutations)
  10760. 185.38 s [really-safe-money-gen] coverage (770/1610): Money\.ConversionRateOfSpec.CHF.ADA.Rational.fromRational.produces valid conversion rates (11 mutations)
  10761. 185.49 s [really-safe-money-gen] coverage (768/1610): Money\.ConversionRateOfSpec.CHF.ADA.Rational.toRational.produces valid rationals (0 mutations)
  10762. 185.56 s [really-safe-money-gen] coverage (769/1610): Money\.ConversionRateOfSpec.CHF.ADA.Rational.fromRational.roundtrips with toRational (11 mutations)
  10763. 185.60 s [really-safe-money-gen] coverage (771/1610): Money\.ConversionRateOfSpec.CHF.USD.invert.produces valid rates (8 mutations)
  10764. 185.90 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)
  10765. 185.97 s [really-safe-money-gen] coverage (776/1610): Money\.ConversionRateOfSpec.CHF.USD.compose.produces valid rates (6 mutations)
  10766. 186.08 s [really-safe-money-gen] coverage (775/1610): Money\.ConversionRateOfSpec.CHF.USD.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10767. 186.09 s [really-safe-money-gen] coverage (777/1610): Money\.ConversionRateOfSpec.CHF.USD.Rational.fromRational.produces valid conversion rates (11 mutations)
  10768. 186.12 s [really-safe-money-gen] coverage (778/1610): Money\.ConversionRateOfSpec.CHF.USD.Rational.fromRational.roundtrips with toRational (11 mutations)
  10769. 186.14 s [really-safe-money-gen] coverage (773/1610): Money\.ConversionRateOfSpec.CHF.USD.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10770. 186.23 s [really-safe-money-gen] coverage (779/1610): Money\.ConversionRateOfSpec.CHF.USD.Rational.toRational.produces valid rationals (0 mutations)
  10771. 186.33 s [really-safe-money-gen] coverage (781/1610): Money\.ConversionRateOfSpec.CHF.USD.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10772. 186.51 s [really-safe-money-gen] coverage (782/1610): Money\.ConversionRateOfSpec.CHF.USD.Ratio.toRatio.produces valid ratios (0 mutations)
  10773. 186.56 s [really-safe-money-gen] coverage (780/1610): Money\.ConversionRateOfSpec.CHF.USD.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10774. 186.77 s [really-safe-money-gen] coverage (774/1610): Money\.ConversionRateOfSpec.CHF.USD.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10775. 186.79 s [really-safe-money-gen] coverage (786/1610): Money\.ConversionRateOfSpec.CHF.CHF.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10776. 186.95 s [really-safe-money-gen] coverage (785/1610): Money\.ConversionRateOfSpec.CHF.CHF.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10777. 187.41 s [really-safe-money-gen] coverage (784/1610): Money\.ConversionRateOfSpec.CHF.CHF.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10778. 187.49 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)
  10779. 187.67 s [really-safe-money-gen] coverage (787/1610): Money\.ConversionRateOfSpec.CHF.CHF.Rational.toRational.produces valid rationals (0 mutations)
  10780. 187.68 s [really-safe-money-gen] coverage (792/1610): Money\.ConversionRateOfSpec.CHF.CHF.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10781. 187.89 s [really-safe-money-gen] coverage (794/1610): Money\.ConversionRateOfSpec.CHF.CHF.compose.produces valid rates (6 mutations)
  10782. 187.96 s [really-safe-money-gen] coverage (791/1610): Money\.ConversionRateOfSpec.CHF.CHF.Ratio.toRatio.produces valid ratios (0 mutations)
  10783. 188.05 s [really-safe-money-gen] coverage (789/1610): Money\.ConversionRateOfSpec.CHF.CHF.Rational.fromRational.roundtrips with toRational (11 mutations)
  10784. 188.15 s [really-safe-money-gen] coverage (795/1610): Money\.ConversionRateOfSpec.CHF.INR.Ratio.toRatio.produces valid ratios (0 mutations)
  10785. 188.27 s [really-safe-money-gen] coverage (790/1610): Money\.ConversionRateOfSpec.CHF.CHF.invert.produces valid rates (8 mutations)
  10786. 188.31 s [really-safe-money-gen] coverage (793/1610): Money\.ConversionRateOfSpec.CHF.CHF.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10787. 188.58 s [really-safe-money-gen] coverage (796/1610): Money\.ConversionRateOfSpec.CHF.INR.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10788. 188.86 s [really-safe-money-gen] coverage (797/1610): Money\.ConversionRateOfSpec.CHF.INR.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10789. 188.87 s [really-safe-money-gen] coverage (798/1610): Money\.ConversionRateOfSpec.CHF.INR.compose.produces valid rates (6 mutations)
  10790. 188.97 s [really-safe-money-gen] coverage (799/1610): Money\.ConversionRateOfSpec.CHF.INR.invert.produces valid rates (8 mutations)
  10791. 189.08 s [really-safe-money-gen] coverage (788/1610): Money\.ConversionRateOfSpec.CHF.CHF.Rational.fromRational.produces valid conversion rates (11 mutations)
  10792. 189.30 s [really-safe-money-gen] coverage (801/1610): Money\.ConversionRateOfSpec.CHF.INR.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10793. 189.39 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)
  10794. 189.40 s [really-safe-money-gen] coverage (806/1610): Money\.ConversionRateOfSpec.CHF.INR.Rational.toRational.produces valid rationals (0 mutations)
  10795. 189.48 s [really-safe-money-gen] coverage (808/1610): Money\.ConversionRateOfSpec.USD.CHF.invert.produces valid rates (8 mutations)
  10796. 189.51 s [really-safe-money-gen] coverage (805/1610): Money\.ConversionRateOfSpec.CHF.INR.Rational.fromRational.produces valid conversion rates (11 mutations)
  10797. 189.58 s [really-safe-money-gen] coverage (800/1610): Money\.ConversionRateOfSpec.CHF.INR.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10798. 189.60 s [really-safe-money-gen] coverage (804/1610): Money\.ConversionRateOfSpec.CHF.INR.Rational.fromRational.roundtrips with toRational (11 mutations)
  10799. 189.68 s [really-safe-money-gen] coverage (802/1610): Money\.ConversionRateOfSpec.CHF.INR.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10800. 189.82 s [really-safe-money-gen] coverage (810/1610): Money\.ConversionRateOfSpec.USD.CHF.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10801. 189.93 s [really-safe-money-gen] coverage (809/1610): Money\.ConversionRateOfSpec.USD.CHF.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10802. 189.99 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)
  10803. 190.16 s [really-safe-money-gen] coverage (812/1610): Money\.ConversionRateOfSpec.USD.CHF.Rational.toRational.produces valid rationals (0 mutations)
  10804. 190.29 s [really-safe-money-gen] coverage (811/1610): Money\.ConversionRateOfSpec.USD.CHF.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10805. 190.46 s [really-safe-money-gen] coverage (826/1610): Money\.ConversionRateOfSpec.USD.USD.Rational.toRational.produces valid rationals (0 mutations)
  10806. 190.54 s [really-safe-money-gen] coverage (827/1610): Money\.ConversionRateOfSpec.USD.USD.Rational.fromRational.roundtrips with toRational (11 mutations)
  10807. 190.75 s [really-safe-money-gen] coverage (829/1610): Money\.ConversionRateOfSpec.USD.USD.compose.produces valid rates (6 mutations)
  10808. 190.77 s [really-safe-money-gen] coverage (828/1610): Money\.ConversionRateOfSpec.USD.USD.Rational.fromRational.produces valid conversion rates (11 mutations)
  10809. 190.89 s [really-safe-money-gen] coverage (825/1610): Money\.ConversionRateOfSpec.USD.USD.invert.produces valid rates (8 mutations)
  10810. 191.05 s [really-safe-money-gen] coverage (832/1610): Money\.ConversionRateOfSpec.USD.INR.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10811. 191.27 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)
  10812. 191.30 s [really-safe-money-gen] coverage (823/1610): Money\.ConversionRateOfSpec.USD.USD.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10813. 191.37 s [really-safe-money-gen] coverage (815/1610): Money\.ConversionRateOfSpec.USD.CHF.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10814. 191.44 s [really-safe-money-gen] coverage (831/1610): Money\.ConversionRateOfSpec.USD.INR.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10815. 191.58 s [really-safe-money-gen] coverage (820/1610): Money\.ConversionRateOfSpec.USD.USD.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10816. 191.75 s [really-safe-money-gen] coverage (817/1610): Money\.ConversionRateOfSpec.USD.CHF.Ratio.toRatio.produces valid ratios (0 mutations)
  10817. 191.88 s [really-safe-money-gen] coverage (814/1610): Money\.ConversionRateOfSpec.USD.CHF.Rational.fromRational.produces valid conversion rates (11 mutations)
  10818. 191.90 s [really-safe-money-gen] coverage (818/1610): Money\.ConversionRateOfSpec.USD.CHF.compose.produces valid rates (6 mutations)
  10819. 192.27 s [really-safe-money-gen] coverage (821/1610): Money\.ConversionRateOfSpec.USD.USD.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10820. 192.35 s [really-safe-money-gen] coverage (824/1610): Money\.ConversionRateOfSpec.USD.USD.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10821. 192.44 s [really-safe-money-gen] coverage (819/1610): Money\.ConversionRateOfSpec.USD.USD.Ratio.toRatio.produces valid ratios (0 mutations)
  10822. 192.50 s [really-safe-money-gen] coverage (839/1610): Money\.ConversionRateOfSpec.USD.INR.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10823. 192.51 s [really-safe-money-gen] coverage (838/1610): Money\.ConversionRateOfSpec.USD.INR.Ratio.toRatio.produces valid ratios (0 mutations)
  10824. 192.52 s [really-safe-money-gen] coverage (813/1610): Money\.ConversionRateOfSpec.USD.CHF.Rational.fromRational.roundtrips with toRational (11 mutations)
  10825. 192.52 s [really-safe-money-gen] coverage (816/1610): Money\.ConversionRateOfSpec.USD.CHF.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10826. 192.59 s [really-safe-money-gen] coverage (822/1610): Money\.ConversionRateOfSpec.USD.USD.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10827. 192.63 s [really-safe-money-gen] coverage (840/1610): Money\.ConversionRateOfSpec.USD.INR.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10828. 192.75 s [really-safe-money-gen] coverage (841/1610): Money\.ConversionRateOfSpec.USD.INR.invert.produces valid rates (8 mutations)
  10829. 192.93 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)
  10830. 192.95 s [really-safe-money-gen] coverage (843/1610): Money\.ConversionRateOfSpec.USD.BTC.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10831. 193.18 s [really-safe-money-gen] coverage (844/1610): Money\.ConversionRateOfSpec.USD.BTC.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10832. 193.26 s [really-safe-money-gen] coverage (845/1610): Money\.ConversionRateOfSpec.USD.BTC.Ratio.toRatio.produces valid ratios (0 mutations)
  10833. 193.40 s [really-safe-money-gen] coverage (837/1610): Money\.ConversionRateOfSpec.USD.INR.Rational.toRational.produces valid rationals (0 mutations)
  10834. 193.49 s [really-safe-money-gen] coverage (835/1610): Money\.ConversionRateOfSpec.USD.INR.Rational.fromRational.roundtrips with toRational (11 mutations)
  10835. 193.73 s [really-safe-money-gen] coverage (836/1610): Money\.ConversionRateOfSpec.USD.INR.Rational.fromRational.produces valid conversion rates (11 mutations)
  10836. 193.74 s [really-safe-money-gen] coverage (834/1610): Money\.ConversionRateOfSpec.USD.INR.compose.produces valid rates (6 mutations)
  10837. 193.84 s [really-safe-money-gen] coverage (847/1610): Money\.ConversionRateOfSpec.USD.BTC.Rational.toRational.produces valid rationals (0 mutations)
  10838. 194.23 s [really-safe-money-gen] coverage (849/1610): Money\.ConversionRateOfSpec.USD.BTC.Rational.fromRational.roundtrips with toRational (11 mutations)
  10839. 194.26 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)
  10840. 194.38 s [really-safe-money-gen] coverage (833/1610): Money\.ConversionRateOfSpec.USD.INR.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10841. 194.40 s [really-safe-money-gen] coverage (854/1610): Money\.ConversionRateOfSpec.USD.BTC.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10842. 194.61 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)
  10843. 194.65 s [really-safe-money-gen] coverage (852/1610): Money\.ConversionRateOfSpec.USD.BTC.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10844. 194.75 s [really-safe-money-gen] coverage (856/1610): Money\.ConversionRateOfSpec.USD.ADA.compose.produces valid rates (6 mutations)
  10845. 194.76 s [really-safe-money-gen] coverage (851/1610): Money\.ConversionRateOfSpec.USD.BTC.invert.produces valid rates (8 mutations)
  10846. 195.17 s [really-safe-money-gen] coverage (853/1610): Money\.ConversionRateOfSpec.USD.BTC.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10847. 195.26 s [really-safe-money-gen] coverage (671/1610): Money\.ConversionRateOfSpec.INR.USD.compose.produces valid rates (6 mutations)
  10848. 195.39 s [really-safe-money-gen] coverage (846/1610): Money\.ConversionRateOfSpec.USD.BTC.compose.produces valid rates (6 mutations)
  10849. 195.45 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)
  10850. 195.50 s [really-safe-money-gen] coverage (643/1610): Money\.ConversionRateOfSpec.INR.BTC.compose.produces valid rates (6 mutations)
  10851. 195.51 s [really-safe-money-gen] coverage (848/1610): Money\.ConversionRateOfSpec.USD.BTC.Rational.fromRational.produces valid conversion rates (11 mutations)
  10852. 195.59 s [really-safe-money-gen] coverage (642/1610): Money\.ConversionRateOfSpec.INR.BTC.invert.produces valid rates (8 mutations)
  10853. 195.65 s [really-safe-money-gen] coverage (867/1610): Money\.ConversionRateOfSpec.BTC.ADA.Ratio.toRatio.produces valid ratios (0 mutations)
  10854. 195.68 s [really-safe-money-gen] coverage (857/1610): Money\.ConversionRateOfSpec.USD.ADA.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10855. 195.71 s [really-safe-money-gen] coverage (869/1610): Money\.ConversionRateOfSpec.BTC.ADA.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10856. 195.91 s [really-safe-money-gen] coverage (868/1610): Money\.ConversionRateOfSpec.BTC.ADA.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10857. 195.93 s [really-safe-money-gen] coverage (859/1610): Money\.ConversionRateOfSpec.USD.ADA.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10858. 196.00 s [really-safe-money-gen] coverage (866/1610): Money\.ConversionRateOfSpec.USD.ADA.Rational.toRational.produces valid rationals (0 mutations)
  10859. 196.26 s [really-safe-money-gen] coverage (865/1610): Money\.ConversionRateOfSpec.USD.ADA.Rational.fromRational.roundtrips with toRational (11 mutations)
  10860. 196.47 s [really-safe-money-gen] coverage (863/1610): Money\.ConversionRateOfSpec.USD.ADA.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10861. 196.48 s [really-safe-money-gen] coverage (870/1610): Money\.ConversionRateOfSpec.BTC.ADA.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10862. 196.58 s [really-safe-money-gen] coverage (871/1610): Money\.ConversionRateOfSpec.BTC.ADA.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10863. 196.80 s [really-safe-money-gen] coverage (874/1610): Money\.ConversionRateOfSpec.BTC.ADA.invert.produces valid rates (8 mutations)
  10864. 196.89 s [really-safe-money-gen] coverage (861/1610): Money\.ConversionRateOfSpec.USD.ADA.Ratio.toRatio.produces valid ratios (0 mutations)
  10865. 197.10 s [really-safe-money-gen] coverage (873/1610): Money\.ConversionRateOfSpec.BTC.ADA.compose.produces valid rates (6 mutations)
  10866. 197.11 s [really-safe-money-gen] coverage (872/1610): Money\.ConversionRateOfSpec.BTC.ADA.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10867. 197.20 s [really-safe-money-gen] coverage (864/1610): Money\.ConversionRateOfSpec.USD.ADA.Rational.fromRational.produces valid conversion rates (11 mutations)
  10868. 197.31 s [really-safe-money-gen] coverage (878/1610): Money\.ConversionRateOfSpec.BTC.ADA.Rational.toRational.produces valid rationals (0 mutations)
  10869. 197.36 s [really-safe-money-gen] coverage (877/1610): Money\.ConversionRateOfSpec.BTC.ADA.Rational.fromRational.roundtrips with toRational (11 mutations)
  10870. 197.66 s [really-safe-money-gen] coverage (883/1610): Money\.ConversionRateOfSpec.BTC.USD.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10871. 197.84 s [really-safe-money-gen] coverage (885/1610): Money\.ConversionRateOfSpec.BTC.USD.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10872. 197.94 s [really-safe-money-gen] coverage (882/1610): Money\.ConversionRateOfSpec.BTC.USD.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10873. 198.10 s [really-safe-money-gen] coverage (884/1610): Money\.ConversionRateOfSpec.BTC.USD.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10874. 198.15 s [really-safe-money-gen] coverage (886/1610): Money\.ConversionRateOfSpec.BTC.USD.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10875. 198.26 s [really-safe-money-gen] coverage (888/1610): Money\.ConversionRateOfSpec.BTC.USD.compose.produces valid rates (6 mutations)
  10876. 198.43 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)
  10877. 198.47 s [really-safe-money-gen] coverage (891/1610): Money\.ConversionRateOfSpec.BTC.INR.compose.produces valid rates (6 mutations)
  10878. 198.48 s [really-safe-money-gen] coverage (887/1610): Money\.ConversionRateOfSpec.BTC.USD.Ratio.toRatio.produces valid ratios (0 mutations)
  10879. 198.52 s [really-safe-money-gen] coverage (879/1610): Money\.ConversionRateOfSpec.BTC.USD.Rational.toRational.produces valid rationals (0 mutations)
  10880. 198.54 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)
  10881. 198.66 s [really-safe-money-gen] coverage (897/1610): Money\.ConversionRateOfSpec.BTC.INR.Rational.fromRational.roundtrips with toRational (11 mutations)
  10882. 198.74 s [really-safe-money-gen] coverage (896/1610): Money\.ConversionRateOfSpec.BTC.INR.invert.produces valid rates (8 mutations)
  10883. 198.92 s [really-safe-money-gen] coverage (893/1610): Money\.ConversionRateOfSpec.BTC.INR.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10884. 199.01 s [really-safe-money-gen] coverage (899/1610): Money\.ConversionRateOfSpec.BTC.INR.Rational.toRational.produces valid rationals (0 mutations)
  10885. 199.11 s [really-safe-money-gen] coverage (898/1610): Money\.ConversionRateOfSpec.BTC.INR.Rational.fromRational.produces valid conversion rates (11 mutations)
  10886. 199.34 s [really-safe-money-gen] coverage (895/1610): Money\.ConversionRateOfSpec.BTC.INR.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10887. 199.61 s [really-safe-money-gen] coverage (894/1610): Money\.ConversionRateOfSpec.BTC.INR.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10888. 199.84 s [really-safe-money-gen] coverage (876/1610): Money\.ConversionRateOfSpec.BTC.ADA.Rational.fromRational.produces valid conversion rates (11 mutations)
  10889. 199.86 s [really-safe-money-gen] coverage (860/1610): Money\.ConversionRateOfSpec.USD.ADA.invert.produces valid rates (8 mutations)
  10890. 199.99 s [really-safe-money-gen] coverage (881/1610): Money\.ConversionRateOfSpec.BTC.USD.Rational.fromRational.produces valid conversion rates (11 mutations)
  10891. 200.39 s [really-safe-money-gen] coverage (880/1610): Money\.ConversionRateOfSpec.BTC.USD.Rational.fromRational.roundtrips with toRational (11 mutations)
  10892. 200.63 s [really-safe-money-gen] coverage (889/1610): Money\.ConversionRateOfSpec.BTC.USD.invert.produces valid rates (8 mutations)
  10893. 200.88 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)
  10894. 200.96 s [really-safe-money-gen] coverage (911/1610): Money\.ConversionRateOfSpec.BTC.CHF.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10895. 200.96 s [really-safe-money-gen] coverage (905/1610): Money\.ConversionRateOfSpec.BTC.CHF.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10896. 200.99 s [really-safe-money-gen] coverage (910/1610): Money\.ConversionRateOfSpec.BTC.CHF.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10897. 201.03 s [really-safe-money-gen] coverage (912/1610): Money\.ConversionRateOfSpec.BTC.CHF.Rational.fromRational.roundtrips with toRational (11 mutations)
  10898. 201.39 s [really-safe-money-gen] coverage (914/1610): Money\.ConversionRateOfSpec.BTC.CHF.Rational.toRational.produces valid rationals (0 mutations)
  10899. 201.78 s [really-safe-money-gen] coverage (913/1610): Money\.ConversionRateOfSpec.BTC.CHF.Rational.fromRational.produces valid conversion rates (11 mutations)
  10900. 201.93 s [really-safe-money-gen] coverage (915/1610): Money\.ConversionRateOfSpec.BTC.BTC.invert.produces valid rates (8 mutations)
  10901. 202.06 s [really-safe-money-gen] coverage (916/1610): Money\.ConversionRateOfSpec.BTC.BTC.Rational.toRational.produces valid rationals (0 mutations)
  10902. 202.16 s [really-safe-money-gen] coverage (919/1610): Money\.ConversionRateOfSpec.BTC.BTC.compose.produces valid rates (6 mutations)
  10903. 202.30 s [really-safe-money-gen] coverage (917/1610): Money\.ConversionRateOfSpec.BTC.BTC.Rational.fromRational.produces valid conversion rates (11 mutations)
  10904. 202.65 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)
  10905. 202.67 s [really-safe-money-gen] coverage (922/1610): Money\.ConversionRateOfSpec.BTC.BTC.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10906. 202.78 s [really-safe-money-gen] coverage (926/1610): Money\.ConversionRateOfSpec.BTC.BTC.Ratio.toRatio.produces valid ratios (0 mutations)
  10907. 202.78 s [really-safe-money-gen] coverage (929/1610): Money\.QuantisationFactorSpec.digits.works on 20 (0 mutations)
  10908. 202.93 s [really-safe-money-gen] coverage (924/1610): Money\.ConversionRateOfSpec.BTC.BTC.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10909. 202.96 s [really-safe-money-gen] coverage (928/1610): Money\.QuantisationFactorSpec.digits.works on 10 (0 mutations)
  10910. 203.04 s [really-safe-money-gen] coverage (921/1610): Money\.ConversionRateOfSpec.BTC.BTC.DecimalLiteral.toDecimalLiteral.produces valid literals (21 mutations)
  10911. 203.22 s [really-safe-money-gen] coverage (931/1610): Money\.QuantisationFactorSpec.digits.produces valid numbers of digits (0 mutations)
  10912. 203.23 s [really-safe-money-gen] coverage (927/1610): Money\.QuantisationFactorSpec.fromWord32.produces valid quantisation factors (6 mutations)
  10913. 203.39 s [really-safe-money-gen] coverage (932/1610): Money\.QuantisationFactorSpec.digits.works on 1 (0 mutations)
  10914. 203.78 s [really-safe-money-gen] coverage (933/1610): Money\.QuantisationFactorSpec.DecimalLiteral.fromDecimalLiteral.fails to render a non-1 integer (22 mutations)
  10915. 204.26 s [really-safe-money-gen] coverage (935/1610): Money\.QuantisationFactorSpec.DecimalLiteral.fromDecimalLiteral.produces valid factors (31 mutations)
  10916. 204.29 s [really-safe-money-gen] coverage (934/1610): Money\.QuantisationFactorSpec.DecimalLiteral.fromDecimalLiteral.fails to render negative fractionals (16 mutations)
  10917. 204.65 s [really-safe-money-gen] coverage (936/1610): Money\.QuantisationFactorSpec.DecimalLiteral.fromDecimalLiteral.fails to render a 0 (9 mutations)
  10918. 204.69 s [really-safe-money-gen] coverage (858/1610): Money\.ConversionRateOfSpec.USD.ADA.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10919. 204.71 s [really-safe-money-gen] coverage (939/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn DecimalLiteral Nothing 1 1 into quantisation factor 10 (25 mutations)
  10920. 204.81 s [really-safe-money-gen] coverage (945/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn DecimalLiteral Nothing 1 0 into quantisation factor 1 (25 mutations)
  10921. 205.05 s [really-safe-money-gen] coverage (941/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn quantisation factor 50 into DecimalLiteral Nothing 2 2 (22 mutations)
  10922. 205.17 s [really-safe-money-gen] coverage (942/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn DecimalLiteral Nothing 1 3 into quantisation factor 1000 (25 mutations)
  10923. 205.26 s [really-safe-money-gen] coverage (948/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn quantisation factor 1 into DecimalLiteral Nothing 1 0 (20 mutations)
  10924. 205.50 s [really-safe-money-gen] coverage (950/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn quantisation factor 1000 into DecimalLiteral Nothing 1 3 (22 mutations)
  10925. 205.96 s [really-safe-money-gen] coverage (944/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn DecimalLiteral Nothing 2 2 into quantisation factor 50 (25 mutations)
  10926. 206.01 s [really-safe-money-gen] coverage (949/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn DecimalLiteral Nothing 1 2 into quantisation factor 100 (25 mutations)
  10927. 206.11 s [really-safe-money-gen] coverage (943/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn quantisation factor 10 into DecimalLiteral Nothing 1 1 (22 mutations)
  10928. 206.21 s [really-safe-money-gen] coverage (952/1610): Money\.MultiAccountSpec.subtractAmount.produces valid amounts (34 mutations)
  10929. 206.25 s [really-safe-money-gen] coverage (953/1610): Money\.MultiAccountSpec.subtractAmount.computes this example correctly (19 mutations)
  10930. 206.45 s [really-safe-money-gen] coverage (940/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn quantisation factor 100 into DecimalLiteral Nothing 1 2 (22 mutations)
  10931. 206.54 s [really-safe-money-gen] coverage (947/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn DecimalLiteral Nothing 5 2 into quantisation factor 20 (25 mutations)
  10932. 206.57 s [really-safe-money-gen] coverage (946/1610): Money\.QuantisationFactorSpec.DecimalLiteral.can turn quantisation factor 20 into DecimalLiteral Nothing 5 2 (22 mutations)
  10933. 206.86 s [really-safe-money-gen] coverage (930/1610): Money\.QuantisationFactorSpec.digits.works on 100 (0 mutations)
  10934. 206.90 s [really-safe-money-gen] coverage (903/1610): Money\.ConversionRateOfSpec.BTC.CHF.compose.produces valid rates (6 mutations)
  10935. 206.98 s [really-safe-money-gen] coverage (909/1610): Money\.ConversionRateOfSpec.BTC.CHF.Ratio.toRatio.produces valid ratios (0 mutations)
  10936. 207.23 s [really-safe-money-gen] coverage (923/1610): Money\.ConversionRateOfSpec.BTC.BTC.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10937. 207.33 s [really-safe-money-gen] coverage (908/1610): Money\.ConversionRateOfSpec.BTC.CHF.invert.produces valid rates (8 mutations)
  10938. 207.49 s [really-safe-money-gen] coverage (906/1610): Money\.ConversionRateOfSpec.BTC.CHF.DecimalLiteral.fromDecimalLiteral.produces valid conversion rates (14 mutations)
  10939. 207.53 s [really-safe-money-gen] coverage (907/1610): Money\.ConversionRateOfSpec.BTC.CHF.DecimalLiteral.fromDecimalLiteral.roundtrips with toDecimalLiteral (35 mutations)
  10940. 207.87 s [really-safe-money-gen] coverage (902/1610): Money\.ConversionRateOfSpec.BTC.INR.Ratio.toRatio.produces valid ratios (0 mutations)
  10941. 208.07 s [really-safe-money-gen] coverage (925/1610): Money\.ConversionRateOfSpec.BTC.BTC.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10942. 208.19 s [really-safe-money-gen] coverage (900/1610): Money\.ConversionRateOfSpec.BTC.INR.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  10943. 208.33 s [really-safe-money-gen] coverage (956/1610): Money\.MultiAccountSpec.add.has a right-identity\: zero (4 mutations)
  10944. 208.55 s [really-safe-money-gen] coverage (901/1610): Money\.ConversionRateOfSpec.BTC.INR.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  10945. 208.98 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)
  10946. 209.03 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)
  10947. 209.07 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)
  10948. 209.15 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)
  10949. 209.41 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)
  10950. 209.68 s [really-safe-money-gen] coverage (955/1610): Money\.MultiAccountSpec.subtractAmount.removes a zero amount (19 mutations)
  10951. 209.99 s [really-safe-money-gen] coverage (970/1610): Money\.MultiAccountSpec.zero.is valid (2 mutations)
  10952. 210.05 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)
  10953. 210.32 s [really-safe-money-gen] coverage (958/1610): Money\.MultiAccountSpec.add.produces valid amounts (34 mutations)
  10954. 210.36 s [really-safe-money-gen] coverage (971/1610): Money\.MultiAccountSpec.fromAccount.produces valid amounts (19 mutations)
  10955. 210.37 s [really-safe-money-gen] coverage (960/1610): Money\.MultiAccountSpec.add.has a left-identity\: zero (6 mutations)
  10956. 210.53 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)
  10957. 210.80 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)
  10958. 210.89 s [really-safe-money-gen] coverage (972/1610): Money\.MultiAccountSpec.addAccount.produces valid amounts (34 mutations)
  10959. 210.98 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)
  10960. 211.01 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)
  10961. 211.12 s [really-safe-money-gen] coverage (968/1610): Money\.MultiAccountSpec.sum.produces valid amounts (34 mutations)
  10962. 211.15 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)
  10963. 211.17 s [really-safe-money-gen] coverage (959/1610): Money\.MultiAccountSpec.add.is associative when both succeed (23 mutations)
  10964. 211.35 s [really-safe-money-gen] coverage (957/1610): Money\.MultiAccountSpec.add.is commutative (23 mutations)
  10965. 211.57 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)
  10966. 211.62 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)
  10967. 211.73 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)
  10968. 211.89 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)
  10969. 211.97 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)
  10970. 212.31 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)
  10971. 212.52 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)
  10972. 212.60 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)
  10973. 212.64 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)
  10974. 212.91 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)
  10975. 213.07 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)
  10976. 213.72 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)
  10977. 213.77 s [really-safe-money-gen] coverage (954/1610): Money\.MultiAccountSpec.subtractAmount.adds a non zero amount (5 mutations)
  10978. 213.81 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)
  10979. 213.98 s [really-safe-money-gen] coverage (993/1610): Money\.MultiAccountSpec.addAmount.adds a non zero amount (5 mutations)
  10980. 214.09 s [really-safe-money-gen] coverage (989/1610): Money\.MultiAccountSpec.subtract.produces valid amounts (34 mutations)
  10981. 214.44 s [really-safe-money-gen] coverage (1000/1610): Money\.AmountOfSpec.USD.toMinimalQuantisations.produces valid Int64s (0 mutations)
  10982. 214.44 s [really-safe-money-gen] coverage (997/1610): Money\.MultiAccountSpec.lookupAccount.produces valid amounts (4 mutations)
  10983. 214.47 s [really-safe-money-gen] coverage (999/1610): Money\.MultiAccountSpec.convertAll.produces the right result in this example (15 mutations)
  10984. 214.52 s [really-safe-money-gen] coverage (991/1610): Money\.MultiAccountSpec.addAmount.produces valid amounts (34 mutations)
  10985. 214.58 s [really-safe-money-gen] coverage (1003/1610): Money\.AmountOfSpec.USD.CHF.convert.produces valid amounts (15 mutations)
  10986. 214.60 s [really-safe-money-gen] coverage (995/1610): Money\.MultiAccountSpec.subtractAccount.produces valid amounts (34 mutations)
  10987. 214.69 s [really-safe-money-gen] coverage (1002/1610): Money\.AmountOfSpec.USD.CHF.rate.produces valid amounts (6 mutations)
  10988. 214.78 s [really-safe-money-gen] coverage (1001/1610): Money\.AmountOfSpec.USD.toMinimalQuantisations.roundtrips with fromMinimalQuantisations (0 mutations)
  10989. 214.96 s [really-safe-money-gen] coverage (1004/1610): Money\.AmountOfSpec.USD.fromRatio.succeeds on 1 (13 mutations)
  10990. 215.03 s [really-safe-money-gen] coverage (1005/1610): Money\.AmountOfSpec.USD.fromRatio.roundtrips with toRatio (13 mutations)
  10991. 215.20 s [really-safe-money-gen] coverage (1006/1610): Money\.AmountOfSpec.USD.fromRatio.produces valid AmountOfs (13 mutations)
  10992. 215.33 s [really-safe-money-gen] coverage (1007/1610): Money\.AmountOfSpec.USD.fromRatio.succeeds on 77 (13 mutations)
  10993. 215.52 s [really-safe-money-gen] coverage (1008/1610): Money\.AmountOfSpec.USD.fromRatio.fails on NaN (2 mutations)
  10994. 215.63 s [really-safe-money-gen] coverage (1009/1610): Money\.AmountOfSpec.USD.fromRatio.succeeds on 0 (14 mutations)
  10995. 215.99 s [really-safe-money-gen] coverage (951/1610): Money\.QuantisationFactorSpec.GenValid QuantisationFactor.genValid \:\: Gen QuantisationFactor.only generates valid 'QuantisationFactor's (6 mutations)
  10996. 216.21 s [really-safe-money-gen] coverage (1010/1610): Money\.AmountOfSpec.USD.fromRatio.fails on 7\.123 (9 mutations)
  10997. 216.61 s [really-safe-money-gen] coverage (1011/1610): Money\.AmountOfSpec.USD.fromRatio.fails on +Infinity (2 mutations)
  10998. 216.62 s [really-safe-money-gen] coverage (1013/1610): Money\.AmountOfSpec.USD.add.has a right-identity\: zero (5 mutations)
  10999. 216.67 s [really-safe-money-gen] coverage (1012/1610): Money\.AmountOfSpec.USD.add.matches what you would get with Integer, if nothing fails (4 mutations)
  11000. 216.92 s [really-safe-money-gen] coverage (1014/1610): Money\.AmountOfSpec.USD.add.produces valid amounts (4 mutations)
  11001. 217.08 s [really-safe-money-gen] coverage (1015/1610): Money\.AmountOfSpec.USD.add.has a left-identity\: zero (5 mutations)
  11002. 218.07 s [really-safe-money-gen] coverage (1016/1610): Money\.AmountOfSpec.USD.add.is commutative (4 mutations)
  11003. 218.19 s [really-safe-money-gen] coverage (1020/1610): Money\.AmountOfSpec.USD.fromRational.fails on -1 (5 mutations)
  11004. 218.20 s [really-safe-money-gen] coverage (1017/1610): Money\.AmountOfSpec.USD.add.is associative when both succeed (4 mutations)
  11005. 218.30 s [really-safe-money-gen] coverage (1018/1610): Money\.AmountOfSpec.USD.fromMinimalQuantisations.produces valid amounts (0 mutations)
  11006. 218.62 s [really-safe-money-gen] coverage (1021/1610): Money\.AmountOfSpec.USD.fromRational.fails on +Infinity (2 mutations)
  11007. 218.82 s [really-safe-money-gen] coverage (862/1610): Money\.ConversionRateOfSpec.USD.ADA.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  11008. 218.90 s [really-safe-money-gen] coverage (1024/1610): Money\.AmountOfSpec.USD.fromRational.fails on -Infinity (2 mutations)
  11009. 218.95 s [really-safe-money-gen] coverage (1023/1610): Money\.AmountOfSpec.USD.fromRational.fails on NaN (2 mutations)
  11010. 218.96 s [really-safe-money-gen] coverage (1025/1610): Money\.AmountOfSpec.USD.fromRational.succeeds on 1 (13 mutations)
  11011. 219.13 s [really-safe-money-gen] coverage (1026/1610): Money\.AmountOfSpec.USD.fromRational.succeeds on 0 (13 mutations)
  11012. 219.18 s [really-safe-money-gen] coverage (1022/1610): Money\.AmountOfSpec.USD.fromRational.produces valid Amounts (13 mutations)
  11013. 219.29 s [really-safe-money-gen] coverage (998/1610): Money\.MultiAccountSpec.convertAll.produces valid results when converting two currencies to one (20 mutations)
  11014. 219.30 s [really-safe-money-gen] coverage (1029/1610): Money\.AmountOfSpec.USD.zero.is valid (1 mutations)
  11015. 219.36 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)
  11016. 219.43 s [really-safe-money-gen] coverage (1031/1610): Money\.AmountOfSpec.USD.BTC.convert.produces valid amounts (15 mutations)
  11017. 219.45 s [really-safe-money-gen] coverage (1033/1610): Money\.AmountOfSpec.USD.fromDouble.produces valid amounts (22 mutations)
  11018. 219.61 s [really-safe-money-gen] coverage (1032/1610): Money\.AmountOfSpec.USD.BTC.rate.produces valid amounts (6 mutations)
  11019. 219.75 s [really-safe-money-gen] coverage (1035/1610): Money\.AmountOfSpec.USD.fromDouble.succeeds on 1 (22 mutations)
  11020. 219.88 s [really-safe-money-gen] coverage (1037/1610): Money\.AmountOfSpec.USD.fromDouble.fails on -Infinity (3 mutations)
  11021. 220.15 s [really-safe-money-gen] coverage (1034/1610): Money\.AmountOfSpec.USD.fromDouble.succeeds on 0 (22 mutations)
  11022. 220.30 s [really-safe-money-gen] coverage (996/1610): Money\.MultiAccountSpec.lookupAccount.can find an added amount (6 mutations)
  11023. 220.40 s [really-safe-money-gen] coverage (669/1610): Money\.ConversionRateOfSpec.INR.USD.Ratio.fromRatio.produces valid conversion rates (6 mutations)
  11024. 220.59 s [really-safe-money-gen] coverage (994/1610): Money\.MultiAccountSpec.addAmount.removes a zero amount (19 mutations)
  11025. 220.62 s [really-safe-money-gen] coverage (992/1610): Money\.MultiAccountSpec.addAmount.computes this example correctly (14 mutations)
  11026. 220.73 s [really-safe-money-gen] coverage (668/1610): Money\.ConversionRateOfSpec.INR.USD.Ratio.fromRatio.roundtrips with toRatio (6 mutations)
  11027. 220.95 s [really-safe-money-gen] coverage (665/1610): Money\.ConversionRateOfSpec.INR.USD.Rational.fromRational.produces valid conversion rates (11 mutations)
  11028. 221.47 s [really-safe-money-gen] coverage (756/1610): Money\.ConversionRateOfSpec.CHF.BTC.Ratio.toRatio.produces valid ratios (0 mutations)
  11029. 221.54 s [really-safe-money-gen] coverage (1040/1610): Money\.AmountOfSpec.USD.fraction.produces valid amounts (10 mutations)
  11030. 221.59 s [really-safe-money-gen] coverage (1044/1610): Money\.AmountOfSpec.USD.USD.convert.produces valid amounts (15 mutations)
  11031. 221.64 s [really-safe-money-gen] coverage (1039/1610): Money\.AmountOfSpec.USD.fromDouble.fails on -1 (3 mutations)
  11032. 221.89 s [really-safe-money-gen] coverage (1043/1610): Money\.AmountOfSpec.USD.USD.rate.produces valid amounts (6 mutations)
  11033. 221.97 s [really-safe-money-gen] coverage (1046/1610): Money\.AmountOfSpec.USD.sum.matches what you would get with Integer, if nothing fails (5 mutations)
  11034. 222.01 s [really-safe-money-gen] coverage (1036/1610): Money\.AmountOfSpec.USD.fromDouble.fails on +Infinity (7 mutations)
  11035. 222.05 s [really-safe-money-gen] coverage (1045/1610): Money\.AmountOfSpec.USD.sum.produces valid amounts (5 mutations)
  11036. 222.17 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)
  11037. 222.18 s [really-safe-money-gen] coverage (1047/1610): Money\.AmountOfSpec.USD.subtract.matches what you would get with Integer, if nothing fails (5 mutations)
  11038. 222.29 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)
  11039. 222.30 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)
  11040. 222.38 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)
  11041. 222.43 s [really-safe-money-gen] coverage (1027/1610): Money\.AmountOfSpec.USD.toRational.produces valid Rationals (0 mutations)
  11042. 222.57 s [really-safe-money-gen] coverage (1019/1610): Money\.AmountOfSpec.USD.fromRational.roundtrips with toRational (13 mutations)
  11043. 222.65 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)
  11044. 222.91 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)
  11045. 222.91 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)
  11046. 223.39 s [really-safe-money-gen] coverage (990/1610): Money\.MultiAccountSpec.subtract.has a right-identity\: zero (4 mutations)
  11047. 223.40 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)
  11048. 223.65 s [really-safe-money-gen] coverage (1041/1610): Money\.AmountOfSpec.USD.INR.convert.produces valid amounts (15 mutations)
  11049. 223.71 s [really-safe-money-gen] coverage (1042/1610): Money\.AmountOfSpec.USD.INR.rate.produces valid amounts (6 mutations)
  11050. 223.88 s [really-safe-money-gen] coverage (918/1610): Money\.ConversionRateOfSpec.BTC.BTC.Rational.fromRational.roundtrips with toRational (11 mutations)
  11051. 223.88 s [really-safe-money-gen] coverage (1038/1610): Money\.AmountOfSpec.USD.fromDouble.fails on NaN (5 mutations)
  11052. 224.23 s [really-safe-money-gen] coverage (1068/1610): Money\.AmountOfSpec.USD.multiply.is distributive with add when both succeed (8 mutations)
  11053. 224.37 s [really-safe-money-gen] coverage (1067/1610): Money\.AmountOfSpec.USD.multiply.is absorbed by 0 (5 mutations)
  11054. 224.85 s [really-safe-money-gen] coverage (1064/1610): Money\.AmountOfSpec.USD.toRatio.produces valid Rationals when the quantisation factor is nonzero (0 mutations)
  11055. 224.97 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)
  11056. 225.06 s [really-safe-money-gen] coverage (1081/1610): Money\.AmountOfSpec.USD.ADA.convert.produces valid amounts (15 mutations)
  11057. 225.11 s [really-safe-money-gen] coverage (1082/1610): Money\.AmountOfSpec.USD.ADA.rate.produces valid amounts (6 mutations)
  11058. 225.38 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)
  11059. 225.46 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)
  11060. 225.51 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)
  11061. 225.53 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)
  11062. 225.63 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)
  11063. 225.73 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)
  11064. 225.75 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)
  11065. 225.86 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)
  11066. 225.91 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)
  11067. 225.93 s [really-safe-money-gen] coverage (1065/1610): Money\.AmountOfSpec.USD.format.produces valid strings (3 mutations)
  11068. 226.05 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)
  11069. 226.12 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)
  11070. 226.48 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)
  11071. 226.49 s [really-safe-money-gen] coverage (1066/1610): Money\.AmountOfSpec.USD.multiply.matches what you would get with Integer, if nothing fails (4 mutations)
  11072. 226.90 s [really-safe-money-gen] coverage (1069/1610): Money\.AmountOfSpec.USD.multiply.has an identity\: 1 (4 mutations)
  11073. 226.95 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)
  11074. 227.31 s [really-safe-money-gen] coverage (1070/1610): Money\.AmountOfSpec.USD.multiply.produces valid amounts (4 mutations)
  11075. 227.49 s [really-safe-money-gen] coverage (1071/1610): Money\.AmountOfSpec.USD.toDouble.produces valid Doubles (0 mutations)
  11076. 227.51 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)
  11077. 227.60 s [really-safe-money-gen] coverage (1074/1610): Money\.AmountOfSpec.USD.distribute.produces results that sum up to the greater whole (18 mutations)
  11078. 227.80 s [really-safe-money-gen] coverage (1073/1610): Money\.AmountOfSpec.USD.distribute.produces valid amounts (17 mutations)
  11079. 228.11 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)
  11080. 228.71 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)
  11081. 228.92 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)
  11082. 228.94 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)
  11083. 229.09 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)
  11084. 229.09 s [really-safe-money-gen] coverage (1089/1610): Money\.AmountOfSpec.ADA.BTC.convert.produces valid amounts (15 mutations)
  11085. 229.34 s [really-safe-money-gen] coverage (1090/1610): Money\.AmountOfSpec.ADA.BTC.rate.produces valid amounts (6 mutations)
  11086. 229.57 s [really-safe-money-gen] coverage (1097/1610): Money\.AmountOfSpec.ADA.zero.is valid (1 mutations)
  11087. 229.63 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)
  11088. 229.78 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)
  11089. 229.82 s [really-safe-money-gen] coverage (1100/1610): Money\.AmountOfSpec.ADA.toRational.produces valid Rationals (0 mutations)
  11090. 229.95 s [really-safe-money-gen] coverage (1099/1610): Money\.AmountOfSpec.ADA.toRatio.produces valid Rationals when the quantisation factor is nonzero (0 mutations)
  11091. 229.99 s [really-safe-money-gen] coverage (1101/1610): Money\.AmountOfSpec.ADA.fromRatio.produces valid AmountOfs (13 mutations)
  11092. 230.03 s [really-safe-money-gen] coverage (1103/1610): Money\.AmountOfSpec.ADA.fromRatio.succeeds on 0 (14 mutations)
  11093. 230.08 s [really-safe-money-gen] coverage (1102/1610): Money\.AmountOfSpec.ADA.fromRatio.roundtrips with toRatio (13 mutations)
  11094. 230.19 s [really-safe-money-gen] coverage (1104/1610): Money\.AmountOfSpec.ADA.fromRatio.fails on +Infinity (2 mutations)
  11095. 230.41 s [really-safe-money-gen] coverage (1105/1610): Money\.AmountOfSpec.ADA.fromRatio.succeeds on 1 (13 mutations)
  11096. 230.82 s [really-safe-money-gen] coverage (1106/1610): Money\.AmountOfSpec.ADA.fromRatio.fails on NaN (2 mutations)
  11097. 230.83 s [really-safe-money-gen] coverage (1107/1610): Money\.AmountOfSpec.ADA.fromRatio.succeeds on 77 (13 mutations)
  11098. 231.14 s [really-safe-money-gen] coverage (1108/1610): Money\.AmountOfSpec.ADA.fromRatio.fails on 7\.123 (9 mutations)
  11099. 231.16 s [really-safe-money-gen] coverage (1109/1610): Money\.AmountOfSpec.ADA.fromRational.fails on NaN (2 mutations)
  11100. 231.51 s [really-safe-money-gen] coverage (1110/1610): Money\.AmountOfSpec.ADA.fromRational.succeeds on 1 (13 mutations)
  11101. 231.62 s [really-safe-money-gen] coverage (1112/1610): Money\.AmountOfSpec.ADA.fromRational.fails on -1 (5 mutations)
  11102. 231.62 s [really-safe-money-gen] coverage (1111/1610): Money\.AmountOfSpec.ADA.fromRational.roundtrips with toRational (13 mutations)
  11103. 231.72 s [really-safe-money-gen] coverage (1113/1610): Money\.AmountOfSpec.ADA.fromRational.fails on -Infinity (2 mutations)
  11104. 231.81 s [really-safe-money-gen] coverage (1114/1610): Money\.AmountOfSpec.ADA.fromRational.fails on +Infinity (2 mutations)
  11105. 231.96 s [really-safe-money-gen] coverage (1115/1610): Money\.AmountOfSpec.ADA.fromRational.produces valid Amounts (13 mutations)
  11106. 232.42 s [really-safe-money-gen] coverage (1116/1610): Money\.AmountOfSpec.ADA.fromRational.succeeds on 0 (13 mutations)
  11107. 232.52 s [really-safe-money-gen] coverage (1118/1610): Money\.AmountOfSpec.ADA.sum.produces valid amounts (5 mutations)
  11108. 232.56 s [really-safe-money-gen] coverage (1117/1610): Money\.AmountOfSpec.ADA.sum.matches what you would get with Integer, if nothing fails (5 mutations)
  11109. 232.63 s [really-safe-money-gen] coverage (1120/1610): Money\.AmountOfSpec.ADA.add.matches what you would get with Integer, if nothing fails (4 mutations)
  11110. 232.70 s [really-safe-money-gen] coverage (1121/1610): Money\.AmountOfSpec.ADA.add.has a left-identity\: zero (5 mutations)
  11111. 232.72 s [really-safe-money-gen] coverage (1119/1610): Money\.AmountOfSpec.ADA.toDouble.produces valid Doubles (0 mutations)
  11112. 232.97 s [really-safe-money-gen] coverage (1122/1610): Money\.AmountOfSpec.ADA.add.has a right-identity\: zero (5 mutations)
  11113. 233.11 s [really-safe-money-gen] coverage (1124/1610): Money\.AmountOfSpec.ADA.add.produces valid amounts (4 mutations)
  11114. 233.21 s [really-safe-money-gen] coverage (1126/1610): Money\.AmountOfSpec.ADA.USD.rate.produces valid amounts (6 mutations)
  11115. 233.26 s [really-safe-money-gen] coverage (1128/1610): Money\.AmountOfSpec.ADA.fromMinimalQuantisations.produces valid amounts (0 mutations)
  11116. 233.29 s [really-safe-money-gen] coverage (1127/1610): Money\.AmountOfSpec.ADA.USD.convert.produces valid amounts (15 mutations)
  11117. 233.46 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)
  11118. 233.46 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)
  11119. 233.47 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)
  11120. 233.54 s [really-safe-money-gen] coverage (1130/1610): Money\.AmountOfSpec.ADA.distribute.produces results that sum up to the greater whole (18 mutations)
  11121. 233.76 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)
  11122. 234.03 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)
  11123. 234.11 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)
  11124. 234.24 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)
  11125. 234.26 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)
  11126. 234.58 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)
  11127. 234.73 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)
  11128. 234.73 s [really-safe-money-gen] coverage (1125/1610): Money\.AmountOfSpec.ADA.add.is commutative (4 mutations)
  11129. 234.83 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)
  11130. 234.90 s [really-safe-money-gen] coverage (1123/1610): Money\.AmountOfSpec.ADA.add.is associative when both succeed (4 mutations)
  11131. 234.94 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)
  11132. 235.43 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)
  11133. 235.59 s [really-safe-money-gen] coverage (1144/1610): Money\.AmountOfSpec.ADA.ADA.rate.produces valid amounts (6 mutations)
  11134. 235.73 s [really-safe-money-gen] coverage (1153/1610): Money\.AmountOfSpec.ADA.multiply.has an identity\: 1 (4 mutations)
  11135. 235.76 s [really-safe-money-gen] coverage (1149/1610): Money\.AmountOfSpec.ADA.multiply.produces valid amounts (4 mutations)
  11136. 235.80 s [really-safe-money-gen] coverage (1147/1610): Money\.AmountOfSpec.ADA.INR.rate.produces valid amounts (6 mutations)
  11137. 235.92 s [really-safe-money-gen] coverage (1151/1610): Money\.AmountOfSpec.ADA.multiply.matches what you would get with Integer, if nothing fails (4 mutations)
  11138. 236.11 s [really-safe-money-gen] coverage (1154/1610): Money\.AmountOfSpec.ADA.fromDouble.succeeds on 0 (22 mutations)
  11139. 236.14 s [really-safe-money-gen] coverage (1152/1610): Money\.AmountOfSpec.ADA.multiply.is distributive with add when both succeed (8 mutations)
  11140. 236.35 s [really-safe-money-gen] coverage (1148/1610): Money\.AmountOfSpec.ADA.INR.convert.produces valid amounts (15 mutations)
  11141. 236.38 s [really-safe-money-gen] coverage (1142/1610): Money\.AmountOfSpec.ADA.format.produces valid strings (3 mutations)
  11142. 236.40 s [really-safe-money-gen] coverage (1156/1610): Money\.AmountOfSpec.ADA.fromDouble.succeeds on 1 (22 mutations)
  11143. 236.42 s [really-safe-money-gen] coverage (1140/1610): Money\.AmountOfSpec.ADA.CHF.convert.produces valid amounts (15 mutations)
  11144. 236.53 s [really-safe-money-gen] coverage (1141/1610): Money\.AmountOfSpec.ADA.CHF.rate.produces valid amounts (6 mutations)
  11145. 236.57 s [really-safe-money-gen] coverage (1139/1610): Money\.AmountOfSpec.ADA.toMinimalQuantisations.produces valid Int64s (0 mutations)
  11146. 236.67 s [really-safe-money-gen] coverage (1146/1610): Money\.AmountOfSpec.ADA.fraction.produces valid amounts (10 mutations)
  11147. 236.88 s [really-safe-money-gen] coverage (1138/1610): Money\.AmountOfSpec.ADA.toMinimalQuantisations.roundtrips with fromMinimalQuantisations (0 mutations)
  11148. 237.01 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)
  11149. 237.37 s [really-safe-money-gen] coverage (1160/1610): Money\.AmountOfSpec.ADA.fromDouble.fails on -1 (3 mutations)
  11150. 237.39 s [really-safe-money-gen] coverage (1137/1610): Money\.AmountOfSpec.ADA.distribute.produces valid amounts (17 mutations)
  11151. 237.56 s [really-safe-money-gen] coverage (1159/1610): Money\.AmountOfSpec.ADA.fromDouble.produces valid amounts (22 mutations)
  11152. 237.78 s [really-safe-money-gen] coverage (1161/1610): Money\.AmountOfSpec.ADA.subtract.matches what you would get with Integer, if nothing fails (5 mutations)
  11153. 237.85 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)
  11154. 237.88 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)
  11155. 238.06 s [really-safe-money-gen] coverage (1158/1610): Money\.AmountOfSpec.ADA.fromDouble.fails on -Infinity (3 mutations)
  11156. 238.07 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)
  11157. 238.13 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)
  11158. 238.56 s [really-safe-money-gen] coverage (1145/1610): Money\.AmountOfSpec.ADA.ADA.convert.produces valid amounts (15 mutations)
  11159. 238.72 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)
  11160. 238.79 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)
  11161. 238.86 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)
  11162. 238.86 s [really-safe-money-gen] coverage (1178/1610): Money\.AmountOfSpec.INR.subtract.matches what you would get with Integer, if nothing fails (5 mutations)
  11163. 239.05 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)
  11164. 239.20 s [really-safe-money-gen] coverage (1179/1610): Money\.AmountOfSpec.INR.toDouble.produces valid Doubles (0 mutations)
  11165. 239.27 s [really-safe-money-gen] coverage (1157/1610): Money\.AmountOfSpec.ADA.fromDouble.fails on NaN (5 mutations)
  11166. 239.46 s [really-safe-money-gen] coverage (1150/1610): Money\.AmountOfSpec.ADA.multiply.is absorbed by 0 (5 mutations)
  11167. 239.46 s [really-safe-money-gen] coverage (1155/1610): Money\.AmountOfSpec.ADA.fromDouble.fails on +Infinity (7 mutations)
  11168. 239.53 s [really-safe-money-gen] coverage (1180/1610): Money\.AmountOfSpec.INR.distribute.produces results that sum up to the greater whole (18 mutations)
  11169. 239.65 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)
  11170. 239.68 s [really-safe-money-gen] coverage (1181/1610): Money\.AmountOfSpec.INR.distribute.produces valid amounts (17 mutations)
  11171. 239.68 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)
  11172. 239.75 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)
  11173. 239.86 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)
  11174. 240.17 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)
  11175. 240.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)
  11176. 240.53 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)
  11177. 240.57 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)
  11178. 240.92 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)
  11179. 240.93 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)
  11180. 240.98 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)
  11181. 241.05 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)
  11182. 241.14 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)
  11183. 241.30 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)
  11184. 241.65 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)
  11185. 241.72 s [really-safe-money-gen] coverage (1189/1610): Money\.AmountOfSpec.INR.zero.is valid (1 mutations)
  11186. 241.78 s [really-safe-money-gen] coverage (1196/1610): Money\.AmountOfSpec.INR.fromDouble.fails on NaN (5 mutations)
  11187. 241.85 s [really-safe-money-gen] coverage (1197/1610): Money\.AmountOfSpec.INR.fromDouble.fails on +Infinity (7 mutations)
  11188. 241.86 s [really-safe-money-gen] coverage (1199/1610): Money\.AmountOfSpec.INR.fromDouble.succeeds on 0 (22 mutations)
  11189. 242.23 s [really-safe-money-gen] coverage (1200/1610): Money\.AmountOfSpec.INR.fromDouble.produces valid amounts (22 mutations)
  11190. 242.30 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)
  11191. 242.32 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)
  11192. 242.48 s [really-safe-money-gen] coverage (938/1610): Money\.QuantisationFactorSpec.DecimalLiteral.toDecimalLiteral.produces valid literals (24 mutations)
  11193. 242.56 s [really-safe-money-gen] coverage (1193/1610): Money\.AmountOfSpec.INR.ADA.convert.produces valid amounts (15 mutations)
  11194. 242.57 s [really-safe-money-gen] coverage (1195/1610): Money\.AmountOfSpec.INR.fromDouble.succeeds on 1 (22 mutations)
  11195. 242.68 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)
  11196. 242.73 s [really-safe-money-gen] coverage (1192/1610): Money\.AmountOfSpec.INR.ADA.rate.produces valid amounts (6 mutations)
  11197. 242.80 s [really-safe-money-gen] coverage (1198/1610): Money\.AmountOfSpec.INR.fromDouble.fails on -1 (3 mutations)
  11198. 242.86 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)
  11199. 242.87 s [really-safe-money-gen] coverage (1194/1610): Money\.AmountOfSpec.INR.fromDouble.fails on -Infinity (3 mutations)
  11200. 242.88 s [really-safe-money-gen] coverage (1191/1610): Money\.AmountOfSpec.INR.fraction.produces valid amounts (10 mutations)
  11201. 243.35 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)
  11202. 243.58 s [really-safe-money-gen] coverage (1190/1610): Money\.AmountOfSpec.INR.fromMinimalQuantisations.produces valid amounts (0 mutations)
  11203. 243.63 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)
  11204. 243.80 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)
  11205. 243.97 s [really-safe-money-gen] coverage (937/1610): Money\.QuantisationFactorSpec.DecimalLiteral.toDecimalLiteral.roundtrips with fromDecimalLiteral (48 mutations)
  11206. 244.12 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)
  11207. 244.15 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)
  11208. 244.27 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)
  11209. 244.35 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)
  11210. 244.47 s [really-safe-money-gen] coverage (1217/1610): Money\.AmountOfSpec.INR.CHF.convert.produces valid amounts (15 mutations)
  11211. 244.67 s [really-safe-money-gen] coverage (1218/1610): Money\.AmountOfSpec.INR.CHF.rate.produces valid amounts (6 mutations)
  11212. 244.95 s [really-safe-money-gen] coverage (1219/1610): Money\.AmountOfSpec.INR.multiply.matches what you would get with Integer, if nothing fails (4 mutations)
  11213. 244.95 s [really-safe-money-gen] coverage (1221/1610): Money\.AmountOfSpec.INR.multiply.is absorbed by 0 (5 mutations)
  11214. 245.05 s [really-safe-money-gen] coverage (1220/1610): Money\.AmountOfSpec.INR.multiply.produces valid amounts (4 mutations)
  11215. 245.07 s [really-safe-money-gen] coverage (1223/1610): Money\.AmountOfSpec.INR.multiply.is distributive with add when both succeed (8 mutations)
  11216. 245.14 s [really-safe-money-gen] coverage (1222/1610): Money\.AmountOfSpec.INR.multiply.has an identity\: 1 (4 mutations)
  11217. 245.44 s [really-safe-money-gen] coverage (1224/1610): Money\.AmountOfSpec.INR.toMinimalQuantisations.roundtrips with fromMinimalQuantisations (0 mutations)
  11218. 245.67 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)
  11219. 245.78 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)
  11220. 245.92 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)
  11221. 246.00 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)
  11222. 246.01 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)
  11223. 246.32 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)
  11224. 246.37 s [really-safe-money-gen] coverage (1230/1610): Money\.AmountOfSpec.INR.fromRational.fails on NaN (2 mutations)
  11225. 246.46 s [really-safe-money-gen] coverage (1228/1610): Money\.AmountOfSpec.INR.fromRational.roundtrips with toRational (13 mutations)
  11226. 246.46 s [really-safe-money-gen] coverage (1232/1610): Money\.AmountOfSpec.INR.fromRational.succeeds on 1 (13 mutations)
  11227. 246.48 s [really-safe-money-gen] coverage (1229/1610): Money\.AmountOfSpec.INR.fromRational.fails on +Infinity (2 mutations)
  11228. 246.57 s [really-safe-money-gen] coverage (1231/1610): Money\.AmountOfSpec.INR.fromRational.produces valid Amounts (13 mutations)
  11229. 247.19 s [really-safe-money-gen] coverage (1233/1610): Money\.AmountOfSpec.INR.fromRational.fails on -1 (5 mutations)
  11230. 247.40 s [really-safe-money-gen] coverage (1234/1610): Money\.AmountOfSpec.INR.add.is commutative (4 mutations)
  11231. 247.59 s [really-safe-money-gen] coverage (1235/1610): Money\.AmountOfSpec.INR.add.is associative when both succeed (4 mutations)
  11232. 247.61 s [really-safe-money-gen] coverage (1236/1610): Money\.AmountOfSpec.INR.add.matches what you would get with Integer, if nothing fails (4 mutations)
  11233. 247.89 s [really-safe-money-gen] coverage (1227/1610): Money\.AmountOfSpec.INR.fromRational.fails on -Infinity (2 mutations)
  11234. 248.04 s [really-safe-money-gen] coverage (1238/1610): Money\.AmountOfSpec.INR.add.has a right-identity\: zero (5 mutations)
  11235. 248.10 s [really-safe-money-gen] coverage (1226/1610): Money\.AmountOfSpec.INR.fromRational.succeeds on 0 (13 mutations)
  11236. 248.16 s [really-safe-money-gen] coverage (1237/1610): Money\.AmountOfSpec.INR.add.has a left-identity\: zero (5 mutations)
  11237. 248.33 s [really-safe-money-gen] coverage (1225/1610): Money\.AmountOfSpec.INR.toMinimalQuantisations.produces valid Int64s (0 mutations)
  11238. 248.52 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)
  11239. 248.53 s [really-safe-money-gen] coverage (1243/1610): Money\.AmountOfSpec.INR.sum.produces valid amounts (5 mutations)
  11240. 248.73 s [really-safe-money-gen] coverage (1242/1610): Money\.AmountOfSpec.INR.toRational.produces valid Rationals (0 mutations)
  11241. 248.91 s [really-safe-money-gen] coverage (1244/1610): Money\.AmountOfSpec.INR.sum.matches what you would get with Integer, if nothing fails (5 mutations)
  11242. 248.91 s [really-safe-money-gen] coverage (1240/1610): Money\.AmountOfSpec.INR.toRatio.produces valid Rationals when the quantisation factor is nonzero (0 mutations)
  11243. 248.94 s [really-safe-money-gen] coverage (1239/1610): Money\.AmountOfSpec.INR.add.produces valid amounts (4 mutations)
  11244. 249.20 s [really-safe-money-gen] coverage (1245/1610): Money\.AmountOfSpec.INR.format.produces valid strings (3 mutations)
  11245. 249.32 s [really-safe-money-gen] coverage (1246/1610): Money\.AmountOfSpec.INR.INR.rate.produces valid amounts (6 mutations)
  11246. 249.47 s [really-safe-money-gen] coverage (1248/1610): Money\.AmountOfSpec.INR.BTC.rate.produces valid amounts (6 mutations)
  11247. 249.48 s [really-safe-money-gen] coverage (1250/1610): Money\.AmountOfSpec.INR.fromRatio.fails on NaN (2 mutations)
  11248. 249.61 s [really-safe-money-gen] coverage (1252/1610): Money\.AmountOfSpec.INR.fromRatio.succeeds on 1 (13 mutations)
  11249. 249.75 s [really-safe-money-gen] coverage (1254/1610): Money\.AmountOfSpec.INR.fromRatio.roundtrips with toRatio (13 mutations)
  11250. 249.86 s [really-safe-money-gen] coverage (1253/1610): Money\.AmountOfSpec.INR.fromRatio.succeeds on 0 (14 mutations)
  11251. 250.10 s [really-safe-money-gen] coverage (1257/1610): Money\.AmountOfSpec.INR.fromRatio.succeeds on 77 (13 mutations)
  11252. 250.13 s [really-safe-money-gen] coverage (1256/1610): Money\.AmountOfSpec.INR.fromRatio.fails on 7\.123 (9 mutations)
  11253. 250.13 s [really-safe-money-gen] coverage (1255/1610): Money\.AmountOfSpec.INR.fromRatio.produces valid AmountOfs (13 mutations)
  11254. 250.19 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)
  11255. 250.22 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)
  11256. 250.38 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)
  11257. 250.81 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)
  11258. 250.99 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)
  11259. 251.08 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)
  11260. 251.24 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)
  11261. 251.42 s [really-safe-money-gen] coverage (1265/1610): Money\.AmountOfSpec.INR.USD.convert.produces valid amounts (15 mutations)
  11262. 251.56 s [really-safe-money-gen] coverage (1266/1610): Money\.AmountOfSpec.INR.USD.rate.produces valid amounts (6 mutations)
  11263. 251.59 s [really-safe-money-gen] coverage (1267/1610): Money\.AmountOfSpec.BTC.format.produces valid strings (3 mutations)
  11264. 251.61 s [really-safe-money-gen] coverage (1268/1610): Money\.AmountOfSpec.BTC.toMinimalQuantisations.roundtrips with fromMinimalQuantisations (0 mutations)
  11265. 251.85 s [really-safe-money-gen] coverage (1269/1610): Money\.AmountOfSpec.BTC.toMinimalQuantisations.produces valid Int64s (0 mutations)
  11266. 251.89 s [really-safe-money-gen] coverage (1249/1610): Money\.AmountOfSpec.INR.BTC.convert.produces valid amounts (15 mutations)
  11267. 251.91 s [really-safe-money-gen] coverage (1251/1610): Money\.AmountOfSpec.INR.fromRatio.fails on +Infinity (2 mutations)
  11268. 252.29 s [really-safe-money-gen] coverage (1271/1610): Money\.AmountOfSpec.BTC.INR.convert.produces valid amounts (15 mutations)
  11269. 252.33 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)
  11270. 252.36 s [really-safe-money-gen] coverage (1247/1610): Money\.AmountOfSpec.INR.INR.convert.produces valid amounts (15 mutations)
  11271. 252.39 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)
  11272. 252.68 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)
  11273. 252.88 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)
  11274. 252.90 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)
  11275. 253.01 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)
  11276. 253.02 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)
  11277. 253.37 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)
  11278. 253.47 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)
  11279. 253.54 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)
  11280. 253.56 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)
  11281. 253.63 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)
  11282. 253.65 s [really-safe-money-gen] coverage (1270/1610): Money\.AmountOfSpec.BTC.INR.rate.produces valid amounts (6 mutations)
  11283. 253.68 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)
  11284. 253.84 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)
  11285. 254.20 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)
  11286. 254.26 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)
  11287. 254.45 s [really-safe-money-gen] coverage (1288/1610): Money\.AmountOfSpec.BTC.fromRatio.roundtrips with toRatio (13 mutations)
  11288. 254.66 s [really-safe-money-gen] coverage (1289/1610): Money\.AmountOfSpec.BTC.fromRatio.fails on NaN (2 mutations)
  11289. 254.90 s [really-safe-money-gen] coverage (1290/1610): Money\.AmountOfSpec.BTC.fromRatio.succeeds on 77 (13 mutations)
  11290. 254.96 s [really-safe-money-gen] coverage (1292/1610): Money\.AmountOfSpec.BTC.fromRatio.succeeds on 1 (13 mutations)
  11291. 254.99 s [really-safe-money-gen] coverage (1291/1610): Money\.AmountOfSpec.BTC.fromRatio.succeeds on 0 (14 mutations)
  11292. 255.16 s [really-safe-money-gen] coverage (1293/1610): Money\.AmountOfSpec.BTC.fromRatio.produces valid AmountOfs (13 mutations)
  11293. 255.26 s [really-safe-money-gen] coverage (1295/1610): Money\.AmountOfSpec.BTC.fromRatio.fails on 7\.123 (9 mutations)
  11294. 255.55 s [really-safe-money-gen] coverage (1297/1610): Money\.AmountOfSpec.BTC.CHF.rate.produces valid amounts (6 mutations)
  11295. 255.55 s [really-safe-money-gen] coverage (1294/1610): Money\.AmountOfSpec.BTC.fromRatio.fails on +Infinity (2 mutations)
  11296. 255.55 s [really-safe-money-gen] coverage (1296/1610): Money\.AmountOfSpec.BTC.CHF.convert.produces valid amounts (15 mutations)
  11297. 255.65 s [really-safe-money-gen] coverage (1298/1610): Money\.AmountOfSpec.BTC.fromRational.fails on NaN (2 mutations)
  11298. 255.75 s [really-safe-money-gen] coverage (1300/1610): Money\.AmountOfSpec.BTC.fromRational.fails on -1 (5 mutations)
  11299. 255.75 s [really-safe-money-gen] coverage (1299/1610): Money\.AmountOfSpec.BTC.fromRational.produces valid Amounts (13 mutations)
  11300. 255.96 s [really-safe-money-gen] coverage (1301/1610): Money\.AmountOfSpec.BTC.fromRational.succeeds on 1 (13 mutations)
  11301. 256.13 s [really-safe-money-gen] coverage (1304/1610): Money\.AmountOfSpec.BTC.fromRational.succeeds on 0 (13 mutations)
  11302. 256.20 s [really-safe-money-gen] coverage (1303/1610): Money\.AmountOfSpec.BTC.fromRational.fails on -Infinity (2 mutations)
  11303. 256.24 s [really-safe-money-gen] coverage (1302/1610): Money\.AmountOfSpec.BTC.fromRational.fails on +Infinity (2 mutations)
  11304. 256.27 s [really-safe-money-gen] coverage (1305/1610): Money\.AmountOfSpec.BTC.fromRational.roundtrips with toRational (13 mutations)
  11305. 256.51 s [really-safe-money-gen] coverage (1306/1610): Money\.AmountOfSpec.BTC.fromDouble.fails on +Infinity (7 mutations)
  11306. 256.60 s [really-safe-money-gen] coverage (1307/1610): Money\.AmountOfSpec.BTC.fromDouble.succeeds on 1 (22 mutations)
  11307. 256.61 s [really-safe-money-gen] coverage (1308/1610): Money\.AmountOfSpec.BTC.fromDouble.produces valid amounts (22 mutations)
  11308. 256.67 s [really-safe-money-gen] coverage (1309/1610): Money\.AmountOfSpec.BTC.fromDouble.fails on -1 (3 mutations)
  11309. 256.74 s [really-safe-money-gen] coverage (1312/1610): Money\.AmountOfSpec.BTC.fromDouble.fails on NaN (5 mutations)
  11310. 256.74 s [really-safe-money-gen] coverage (1310/1610): Money\.AmountOfSpec.BTC.fromDouble.succeeds on 0 (22 mutations)
  11311. 256.75 s [really-safe-money-gen] coverage (1311/1610): Money\.AmountOfSpec.BTC.fromDouble.fails on -Infinity (3 mutations)
  11312. 256.89 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)
  11313. 257.17 s [really-safe-money-gen] coverage (1314/1610): Money\.AmountOfSpec.BTC.USD.rate.produces valid amounts (6 mutations)
  11314. 257.34 s [really-safe-money-gen] coverage (1315/1610): Money\.AmountOfSpec.BTC.USD.convert.produces valid amounts (15 mutations)
  11315. 257.46 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)
  11316. 257.67 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)
  11317. 257.81 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)
  11318. 257.91 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)
  11319. 257.94 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)
  11320. 258.13 s [really-safe-money-gen] coverage (1322/1610): Money\.AmountOfSpec.BTC.add.has a right-identity\: zero (5 mutations)
  11321. 258.48 s [really-safe-money-gen] coverage (1323/1610): Money\.AmountOfSpec.BTC.add.has a left-identity\: zero (5 mutations)
  11322. 258.55 s [really-safe-money-gen] coverage (1325/1610): Money\.AmountOfSpec.BTC.add.is commutative (4 mutations)
  11323. 258.63 s [really-safe-money-gen] coverage (1329/1610): Money\.AmountOfSpec.BTC.ADA.rate.produces valid amounts (6 mutations)
  11324. 258.64 s [really-safe-money-gen] coverage (1326/1610): Money\.AmountOfSpec.BTC.add.produces valid amounts (4 mutations)
  11325. 258.65 s [really-safe-money-gen] coverage (1324/1610): Money\.AmountOfSpec.BTC.add.matches what you would get with Integer, if nothing fails (4 mutations)
  11326. 258.70 s [really-safe-money-gen] coverage (1327/1610): Money\.AmountOfSpec.BTC.add.is associative when both succeed (4 mutations)
  11327. 258.72 s [really-safe-money-gen] coverage (1328/1610): Money\.AmountOfSpec.BTC.ADA.convert.produces valid amounts (15 mutations)
  11328. 258.87 s [really-safe-money-gen] coverage (1330/1610): Money\.AmountOfSpec.BTC.zero.is valid (1 mutations)
  11329. 259.11 s [really-safe-money-gen] coverage (1332/1610): Money\.AmountOfSpec.BTC.BTC.rate.produces valid amounts (6 mutations)
  11330. 259.11 s [really-safe-money-gen] coverage (1331/1610): Money\.AmountOfSpec.BTC.BTC.convert.produces valid amounts (15 mutations)
  11331. 259.20 s [really-safe-money-gen] coverage (1333/1610): Money\.AmountOfSpec.BTC.toDouble.produces valid Doubles (0 mutations)
  11332. 259.31 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)
  11333. 259.55 s [really-safe-money-gen] coverage (1337/1610): Money\.AmountOfSpec.BTC.toRatio.produces valid Rationals when the quantisation factor is nonzero (0 mutations)
  11334. 259.59 s [really-safe-money-gen] coverage (1336/1610): Money\.AmountOfSpec.BTC.fromMinimalQuantisations.produces valid amounts (0 mutations)
  11335. 259.65 s [really-safe-money-gen] coverage (1335/1610): Money\.AmountOfSpec.BTC.subtract.matches what you would get with Integer, if nothing fails (5 mutations)
  11336. 259.67 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)
  11337. 259.75 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)
  11338. 259.80 s [really-safe-money-gen] coverage (1338/1610): Money\.AmountOfSpec.BTC.sum.matches what you would get with Integer, if nothing fails (5 mutations)
  11339. 259.81 s [really-safe-money-gen] coverage (1339/1610): Money\.AmountOfSpec.BTC.sum.produces valid amounts (5 mutations)
  11340. 259.91 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)
  11341. 260.36 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)
  11342. 260.40 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)
  11343. 260.55 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)
  11344. 260.76 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)
  11345. 260.94 s [really-safe-money-gen] coverage (1346/1610): Money\.AmountOfSpec.BTC.distribute.produces valid amounts (17 mutations)
  11346. 261.10 s [really-safe-money-gen] coverage (1347/1610): Money\.AmountOfSpec.BTC.distribute.produces results that sum up to the greater whole (18 mutations)
  11347. 261.11 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)
  11348. 261.32 s [really-safe-money-gen] coverage (1349/1610): Money\.AmountOfSpec.BTC.toRational.produces valid Rationals (0 mutations)
  11349. 261.54 s [really-safe-money-gen] coverage (1350/1610): Money\.AmountOfSpec.BTC.fraction.produces valid amounts (10 mutations)
  11350. 261.56 s [really-safe-money-gen] coverage (1351/1610): Money\.AmountOfSpec.BTC.multiply.is absorbed by 0 (5 mutations)
  11351. 261.66 s [really-safe-money-gen] coverage (1353/1610): Money\.AmountOfSpec.BTC.multiply.produces valid amounts (4 mutations)
  11352. 261.68 s [really-safe-money-gen] coverage (1354/1610): Money\.AmountOfSpec.BTC.multiply.matches what you would get with Integer, if nothing fails (4 mutations)
  11353. 261.69 s [really-safe-money-gen] coverage (1356/1610): Money\.AmountOfSpec.CHF.INR.convert.produces valid amounts (15 mutations)
  11354. 261.73 s [really-safe-money-gen] coverage (1352/1610): Money\.AmountOfSpec.BTC.multiply.has an identity\: 1 (4 mutations)
  11355. 261.85 s [really-safe-money-gen] coverage (1355/1610): Money\.AmountOfSpec.BTC.multiply.is distributive with add when both succeed (8 mutations)
  11356. 261.98 s [really-safe-money-gen] coverage (1357/1610): Money\.AmountOfSpec.CHF.INR.rate.produces valid amounts (6 mutations)
  11357. 262.22 s [really-safe-money-gen] coverage (1359/1610): Money\.AmountOfSpec.CHF.USD.rate.produces valid amounts (6 mutations)
  11358. 262.24 s [really-safe-money-gen] coverage (1358/1610): Money\.AmountOfSpec.CHF.USD.convert.produces valid amounts (15 mutations)
  11359. 262.30 s [really-safe-money-gen] coverage (1360/1610): Money\.AmountOfSpec.CHF.fromMinimalQuantisations.produces valid amounts (0 mutations)
  11360. 262.31 s [really-safe-money-gen] coverage (1361/1610): Money\.AmountOfSpec.CHF.fromRatio.succeeds on 0 (14 mutations)
  11361. 262.52 s [really-safe-money-gen] coverage (1362/1610): Money\.AmountOfSpec.CHF.fromRatio.fails on +Infinity (2 mutations)
  11362. 262.67 s [really-safe-money-gen] coverage (1363/1610): Money\.AmountOfSpec.CHF.fromRatio.fails on NaN (2 mutations)
  11363. 262.68 s [really-safe-money-gen] coverage (1367/1610): Money\.AmountOfSpec.CHF.fromRatio.succeeds on 77 (13 mutations)
  11364. 262.69 s [really-safe-money-gen] coverage (1364/1610): Money\.AmountOfSpec.CHF.fromRatio.roundtrips with toRatio (13 mutations)
  11365. 262.72 s [really-safe-money-gen] coverage (1365/1610): Money\.AmountOfSpec.CHF.fromRatio.succeeds on 1 (13 mutations)
  11366. 262.80 s [really-safe-money-gen] coverage (1366/1610): Money\.AmountOfSpec.CHF.fromRatio.fails on 7\.123 (9 mutations)
  11367. 262.83 s [really-safe-money-gen] coverage (1370/1610): Money\.AmountOfSpec.CHF.multiply.has an identity\: 1 (4 mutations)
  11368. 262.89 s [really-safe-money-gen] coverage (1368/1610): Money\.AmountOfSpec.CHF.fromRatio.produces valid AmountOfs (13 mutations)
  11369. 263.13 s [really-safe-money-gen] coverage (1371/1610): Money\.AmountOfSpec.CHF.multiply.is absorbed by 0 (5 mutations)
  11370. 263.36 s [really-safe-money-gen] coverage (1369/1610): Money\.AmountOfSpec.CHF.fraction.produces valid amounts (10 mutations)
  11371. 263.39 s [really-safe-money-gen] coverage (1372/1610): Money\.AmountOfSpec.CHF.multiply.is distributive with add when both succeed (8 mutations)
  11372. 263.63 s [really-safe-money-gen] coverage (1373/1610): Money\.AmountOfSpec.CHF.multiply.matches what you would get with Integer, if nothing fails (4 mutations)
  11373. 263.83 s [really-safe-money-gen] coverage (1375/1610): Money\.AmountOfSpec.CHF.toRatio.produces valid Rationals when the quantisation factor is nonzero (0 mutations)
  11374. 264.19 s [really-safe-money-gen] coverage (1374/1610): Money\.AmountOfSpec.CHF.multiply.produces valid amounts (4 mutations)
  11375. 264.22 s [really-safe-money-gen] coverage (1376/1610): Money\.AmountOfSpec.CHF.fromRational.fails on +Infinity (2 mutations)
  11376. 264.28 s [really-safe-money-gen] coverage (1377/1610): Money\.AmountOfSpec.CHF.fromRational.produces valid Amounts (13 mutations)
  11377. 264.56 s [really-safe-money-gen] coverage (1378/1610): Money\.AmountOfSpec.CHF.fromRational.succeeds on 0 (13 mutations)
  11378. 264.57 s [really-safe-money-gen] coverage (1379/1610): Money\.AmountOfSpec.CHF.fromRational.fails on -Infinity (2 mutations)
  11379. 264.57 s [really-safe-money-gen] coverage (1382/1610): Money\.AmountOfSpec.CHF.fromRational.roundtrips with toRational (13 mutations)
  11380. 264.63 s [really-safe-money-gen] coverage (1380/1610): Money\.AmountOfSpec.CHF.fromRational.fails on -1 (5 mutations)
  11381. 264.64 s [really-safe-money-gen] coverage (1381/1610): Money\.AmountOfSpec.CHF.fromRational.fails on NaN (2 mutations)
  11382. 264.75 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)
  11383. 264.79 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)
  11384. 265.04 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)
  11385. 265.08 s [really-safe-money-gen] coverage (1383/1610): Money\.AmountOfSpec.CHF.fromRational.succeeds on 1 (13 mutations)
  11386. 265.25 s [really-safe-money-gen] coverage (1391/1610): Money\.AmountOfSpec.CHF.sum.produces valid amounts (5 mutations)
  11387. 265.30 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)
  11388. 265.36 s [really-safe-money-gen] coverage (1392/1610): Money\.AmountOfSpec.CHF.BTC.convert.produces valid amounts (15 mutations)
  11389. 265.37 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)
  11390. 265.63 s [really-safe-money-gen] coverage (1394/1610): Money\.AmountOfSpec.CHF.zero.is valid (1 mutations)
  11391. 265.66 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)
  11392. 265.67 s [really-safe-money-gen] coverage (1395/1610): Money\.AmountOfSpec.CHF.subtract.matches what you would get with Integer, if nothing fails (5 mutations)
  11393. 265.79 s [really-safe-money-gen] coverage (1390/1610): Money\.AmountOfSpec.CHF.sum.matches what you would get with Integer, if nothing fails (5 mutations)
  11394. 265.81 s [really-safe-money-gen] coverage (1393/1610): Money\.AmountOfSpec.CHF.BTC.rate.produces valid amounts (6 mutations)
  11395. 265.84 s [really-safe-money-gen] coverage (1397/1610): Money\.AmountOfSpec.CHF.toRational.produces valid Rationals (0 mutations)
  11396. 265.98 s [really-safe-money-gen] coverage (1396/1610): Money\.AmountOfSpec.CHF.toDouble.produces valid Doubles (0 mutations)
  11397. 266.15 s [really-safe-money-gen] coverage (1399/1610): Money\.AmountOfSpec.CHF.CHF.rate.produces valid amounts (6 mutations)
  11398. 266.31 s [really-safe-money-gen] coverage (1402/1610): Money\.AmountOfSpec.CHF.fromDouble.succeeds on 1 (22 mutations)
  11399. 266.34 s [really-safe-money-gen] coverage (1403/1610): Money\.AmountOfSpec.CHF.fromDouble.produces valid amounts (22 mutations)
  11400. 266.65 s [really-safe-money-gen] coverage (1405/1610): Money\.AmountOfSpec.CHF.fromDouble.succeeds on 0 (22 mutations)
  11401. 266.94 s [really-safe-money-gen] coverage (1406/1610): Money\.AmountOfSpec.CHF.fromDouble.fails on -1 (3 mutations)
  11402. 267.08 s [really-safe-money-gen] coverage (1409/1610): Money\.AmountOfSpec.CHF.ADA.rate.produces valid amounts (6 mutations)
  11403. 267.16 s [really-safe-money-gen] coverage (1408/1610): Money\.AmountOfSpec.CHF.fromDouble.fails on -Infinity (3 mutations)
  11404. 267.38 s [really-safe-money-gen] coverage (1410/1610): Money\.AmountOfSpec.CHF.ADA.convert.produces valid amounts (15 mutations)
  11405. 267.53 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)
  11406. 267.54 s [really-safe-money-gen] coverage (1411/1610): Money\.AmountOfSpec.CHF.toMinimalQuantisations.produces valid Int64s (0 mutations)
  11407. 267.56 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)
  11408. 267.62 s [really-safe-money-gen] coverage (1412/1610): Money\.AmountOfSpec.CHF.toMinimalQuantisations.roundtrips with fromMinimalQuantisations (0 mutations)
  11409. 267.70 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)
  11410. 267.83 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)
  11411. 267.84 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)
  11412. 268.11 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)
  11413. 268.15 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)
  11414. 268.33 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)
  11415. 268.39 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)
  11416. 268.45 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)
  11417. 268.46 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)
  11418. 268.60 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)
  11419. 268.68 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)
  11420. 268.81 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)
  11421. 268.81 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)
  11422. 268.84 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)
  11423. 268.91 s [really-safe-money-gen] coverage (1431/1610): Money\.AmountOfSpec.CHF.distribute.produces valid amounts (17 mutations)
  11424. 269.09 s [really-safe-money-gen] coverage (1432/1610): Money\.AmountOfSpec.CHF.distribute.produces results that sum up to the greater whole (18 mutations)
  11425. 269.19 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)
  11426. 269.29 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)
  11427. 269.42 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)
  11428. 269.78 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)
  11429. 269.96 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)
  11430. 270.11 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)
  11431. 270.23 s [really-safe-money-gen] coverage (1439/1610): Money\.AmountOfSpec.CHF.add.is commutative (4 mutations)
  11432. 270.45 s [really-safe-money-gen] coverage (1441/1610): Money\.AmountOfSpec.CHF.add.is associative when both succeed (4 mutations)
  11433. 270.49 s [really-safe-money-gen] coverage (1440/1610): Money\.AmountOfSpec.CHF.add.has a left-identity\: zero (5 mutations)
  11434. 270.51 s [really-safe-money-gen] coverage (1444/1610): Money\.AmountOfSpec.CHF.add.has a right-identity\: zero (5 mutations)
  11435. 270.54 s [really-safe-money-gen] coverage (1442/1610): Money\.AmountOfSpec.CHF.add.produces valid amounts (4 mutations)
  11436. 270.70 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)
  11437. 270.72 s [really-safe-money-gen] coverage (1401/1610): Money\.AmountOfSpec.CHF.format.produces valid strings (3 mutations)
  11438. 270.82 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)
  11439. 270.96 s [really-safe-money-gen] coverage (1404/1610): Money\.AmountOfSpec.CHF.fromDouble.fails on +Infinity (7 mutations)
  11440. 271.11 s [really-safe-money-gen] coverage (1407/1610): Money\.AmountOfSpec.CHF.fromDouble.fails on NaN (5 mutations)
  11441. 271.14 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)
  11442. 271.34 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)
  11443. 271.40 s [really-safe-money-gen] coverage (1398/1610): Money\.AmountOfSpec.CHF.CHF.convert.produces valid amounts (15 mutations)
  11444. 271.50 s [really-safe-money-gen] coverage (1451/1610): Money\.AmountSpec.format.formats 1 correctly with quantisation factor 1 (3 mutations)
  11445. 271.82 s [really-safe-money-gen] coverage (1452/1610): Money\.AmountSpec.format.formats 1 correctly with quantisation factor 10 (3 mutations)
  11446. 271.82 s [really-safe-money-gen] coverage (1465/1610): Money\.AmountSpec.distribute.correctly distributes 10 into 4 (6 mutations)
  11447. 271.84 s [really-safe-money-gen] coverage (1449/1610): Money\.AmountSpec.fraction.Correctly fractions 100 with 1 % 100 (7 mutations)
  11448. 272.12 s [really-safe-money-gen] coverage (1447/1610): Money\.AmountSpec.fraction.Produces a result that can be multiplied back (10 mutations)
  11449. 272.22 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)
  11450. 272.23 s [really-safe-money-gen] coverage (1453/1610): Money\.AmountSpec.format.produces valid strings (3 mutations)
  11451. 272.27 s [really-safe-money-gen] coverage (1448/1610): Money\.AmountSpec.fraction.produces valid amounts (10 mutations)
  11452. 272.31 s [really-safe-money-gen] coverage (1467/1610): Money\.AmountSpec.distribute.correctly distributes 5 into 3 (6 mutations)
  11453. 272.47 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)
  11454. 272.59 s [really-safe-money-gen] coverage (1454/1610): Money\.AmountSpec.fromRatio.produces valid Amounts (13 mutations)
  11455. 272.90 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)
  11456. 272.97 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)
  11457. 273.13 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)
  11458. 273.23 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)
  11459. 273.41 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)
  11460. 273.53 s [really-safe-money-gen] coverage (1461/1610): Money\.AmountSpec.fromRatio.fails on 7\.123 with quantisation factor 10 (9 mutations)
  11461. 273.63 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)
  11462. 273.69 s [really-safe-money-gen] coverage (1474/1610): Money\.AmountSpec.distribute.produces valid amounts (13 mutations)
  11463. 273.69 s [really-safe-money-gen] coverage (1455/1610): Money\.AmountSpec.fromRatio.roundtrips with toRatio (13 mutations)
  11464. 273.73 s [really-safe-money-gen] coverage (1446/1610): Money\.AmountSpec.fraction.Correctly fractions 101 with 1 % 100 (7 mutations)
  11465. 274.01 s [really-safe-money-gen] coverage (1462/1610): Money\.AmountSpec.distribute.correctly distributes 3 into 3 (6 mutations)
  11466. 274.08 s [really-safe-money-gen] coverage (1459/1610): Money\.AmountSpec.fromRatio.succeeds on 77\.02 with quantisation factor 100 (13 mutations)
  11467. 274.14 s [really-safe-money-gen] coverage (1463/1610): Money\.AmountSpec.distribute.produces results that sum up to the greater whole (14 mutations)
  11468. 274.22 s [really-safe-money-gen] coverage (1478/1610): Money\.AmountSpec.sum.correctly sums [1,2,3] to 6 (5 mutations)
  11469. 274.34 s [really-safe-money-gen] coverage (1460/1610): Money\.AmountSpec.fromRatio.succeeds on 0 (13 mutations)
  11470. 274.51 s [really-safe-money-gen] coverage (1458/1610): Money\.AmountSpec.fromRatio.fails on +Infinity (2 mutations)
  11471. 274.79 s [really-safe-money-gen] coverage (1475/1610): Money\.AmountSpec.sum.produces valid amounts (5 mutations)
  11472. 274.80 s [really-safe-money-gen] coverage (1456/1610): Money\.AmountSpec.fromRatio.succeeds on 1 (13 mutations)
  11473. 274.87 s [really-safe-money-gen] coverage (1457/1610): Money\.AmountSpec.fromRatio.fails on NaN (2 mutations)
  11474. 275.00 s [really-safe-money-gen] coverage (1481/1610): Money\.AmountSpec.multiply.produces valid amounts (4 mutations)
  11475. 275.37 s [really-safe-money-gen] coverage (1443/1610): Money\.AmountOfSpec.CHF.add.matches what you would get with Integer, if nothing fails (4 mutations)
  11476. 275.40 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)
  11477. 275.46 s [really-safe-money-gen] coverage (1485/1610): Money\.AmountSpec.multiply.succeeds for 3 * 6 (4 mutations)
  11478. 275.52 s [really-safe-money-gen] coverage (1484/1610): Money\.AmountSpec.multiply.has an identity\: 1 (4 mutations)
  11479. 275.62 s [really-safe-money-gen] coverage (1482/1610): Money\.AmountSpec.multiply.is absorbed by 0 (5 mutations)
  11480. 275.72 s [really-safe-money-gen] coverage (1487/1610): Money\.AmountSpec.fromDouble.fails on really large numbers (14 mutations)
  11481. 275.98 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)
  11482. 276.28 s [really-safe-money-gen] coverage (1489/1610): Money\.AmountSpec.fromDouble.succeeds on 77\.02 with quantisation factor 100 (22 mutations)
  11483. 276.30 s [really-safe-money-gen] coverage (1488/1610): Money\.AmountSpec.fromDouble.roundtrips with toDouble, back to double (22 mutations)
  11484. 276.47 s [really-safe-money-gen] coverage (1490/1610): Money\.AmountSpec.fromDouble.produces valid amounts (22 mutations)
  11485. 276.64 s [really-safe-money-gen] coverage (1492/1610): Money\.AmountSpec.fromDouble.fails on NaN (5 mutations)
  11486. 276.82 s [really-safe-money-gen] coverage (1477/1610): Money\.AmountSpec.sum.fails to sum above maxBound (5 mutations)
  11487. 276.87 s [really-safe-money-gen] coverage (1479/1610): Money\.AmountSpec.multiply.matches what you would get with Integer, if nothing fails (4 mutations)
  11488. 277.01 s [really-safe-money-gen] coverage (1480/1610): Money\.AmountSpec.multiply.fails for 2 * maxbound (4 mutations)
  11489. 277.21 s [really-safe-money-gen] coverage (1494/1610): Money\.AmountSpec.fromDouble.fails on 7\.123 with quantisation factor 10 (18 mutations)
  11490. 277.39 s [really-safe-money-gen] coverage (1496/1610): Money\.AmountSpec.fromDouble.fails on +Infinity (7 mutations)
  11491. 277.43 s [really-safe-money-gen] coverage (1483/1610): Money\.AmountSpec.multiply.is distributive with add when both succeed (8 mutations)
  11492. 277.80 s [really-safe-money-gen] coverage (1499/1610): Money\.AmountSpec.Ord Amount.(<=) \:\: Amount -> Amount -> Bool.is reflexive for "valid Amount"'s (0 mutations)
  11493. 277.85 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)
  11494. 277.88 s [really-safe-money-gen] coverage (1497/1610): Money\.AmountSpec.fromDouble.succeeds on 1 (22 mutations)
  11495. 277.90 s [really-safe-money-gen] coverage (1498/1610): Money\.AmountSpec.fromDouble.succeeds on 0 (22 mutations)
  11496. 277.92 s [really-safe-money-gen] coverage (1502/1610): Money\.AmountSpec.Ord Amount.(<=) \:\: Amount -> Amount -> Bool.is transitive for "valid Amount"'s (0 mutations)
  11497. 278.20 s [really-safe-money-gen] coverage (1503/1610): Money\.AmountSpec.Ord Amount.(>=) \:\: Amount -> Amount -> Bool.is transitive for "valid Amount"'s (0 mutations)
  11498. 278.40 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)
  11499. 278.41 s [really-safe-money-gen] coverage (1505/1610): Money\.AmountSpec.Ord Amount.(>=) \:\: Amount -> Amount -> Bool.is antisymmetric for "valid Amount"'s (0 mutations)
  11500. 278.61 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)
  11501. 278.63 s [really-safe-money-gen] coverage (1476/1610): Money\.AmountSpec.sum.matches what you would get with Integer, if nothing fails (5 mutations)
  11502. 278.63 s [really-safe-money-gen] coverage (1506/1610): Money\.AmountSpec.Ord Amount.(>=) \:\: Amount -> Amount -> Bool.is reflexive for "valid Amount"'s (0 mutations)
  11503. 278.74 s [really-safe-money-gen] coverage (1509/1610): Money\.AmountSpec.Ord Amount.(<) \:\: Amount -> Amount -> Bool.is transitive for "valid Amount"'s (0 mutations)
  11504. 278.97 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)
  11505. 279.01 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)
  11506. 279.11 s [really-safe-money-gen] coverage (1513/1610): Money\.AmountSpec.Ord Amount.(>) \:\: Amount -> Amount -> Bool.is antireflexive for "valid Amount"'s (0 mutations)
  11507. 279.19 s [really-safe-money-gen] coverage (1516/1610): Money\.AmountSpec.toRational.produces an invalid Rational with quantisation factor 0 (1 mutations)
  11508. 279.32 s [really-safe-money-gen] coverage (1515/1610): Money\.AmountSpec.toRational.produces valid Rationals when the quantisation factor is nonzero (0 mutations)
  11509. 279.63 s [really-safe-money-gen] coverage (1519/1610): Money\.AmountSpec.fromRational.fails on really large numbers (13 mutations)
  11510. 279.86 s [really-safe-money-gen] coverage (1517/1610): Money\.AmountSpec.fromRational.roundtrips with toRational (13 mutations)
  11511. 279.91 s [really-safe-money-gen] coverage (1520/1610): Money\.AmountSpec.fromRational.fails on -Infinity (2 mutations)
  11512. 280.04 s [really-safe-money-gen] coverage (1493/1610): Money\.AmountSpec.fromDouble.fails on -1 (3 mutations)
  11513. 280.22 s [really-safe-money-gen] coverage (1522/1610): Money\.AmountSpec.fromRational.succeeds on 77\.02 with quantisation factor 100 (13 mutations)
  11514. 280.22 s [really-safe-money-gen] coverage (1521/1610): Money\.AmountSpec.fromRational.succeeds on 1 (13 mutations)
  11515. 280.38 s [really-safe-money-gen] coverage (1514/1610): Money\.AmountSpec.Ord Amount.(>) \:\: Amount -> Amount -> Bool.is transitive for "valid Amount"'s (0 mutations)
  11516. 280.44 s [really-safe-money-gen] coverage (1525/1610): Money\.AmountSpec.fromRational.fails on -1 (5 mutations)
  11517. 280.57 s [really-safe-money-gen] coverage (1524/1610): Money\.AmountSpec.fromRational.fails on +Infinity (2 mutations)
  11518. 280.70 s [really-safe-money-gen] coverage (1534/1610): Money\.AmountSpec.add.fails for maxBound + maxBound (4 mutations)
  11519. 280.90 s [really-safe-money-gen] coverage (1528/1610): Money\.AmountSpec.add.is associative when both succeed (4 mutations)
  11520. 281.00 s [really-safe-money-gen] coverage (1536/1610): Money\.AmountSpec.toMinimalQuantisations.roundtrips with fromMinimalQuantisations (0 mutations)
  11521. 281.09 s [really-safe-money-gen] coverage (1537/1610): Money\.AmountSpec.toMinimalQuantisations.produces valid Int64s (0 mutations)
  11522. 281.10 s [really-safe-money-gen] coverage (1538/1610): Money\.AmountSpec.Eq Amount.(/=) \:\: Amount -> Amount -> Bool.is antireflexive for "valid Amount"s (0 mutations)
  11523. 281.17 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)
  11524. 281.39 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)
  11525. 281.61 s [really-safe-money-gen] coverage (1541/1610): Money\.AmountSpec.Eq Amount.(==) \:\: Amount -> Amount -> Bool.is transitive for "valid Amount"s (0 mutations)
  11526. 281.69 s [really-safe-money-gen] coverage (1542/1610): Money\.AmountSpec.Eq Amount.(==) \:\: Amount -> Amount -> Bool.is reflexive for "valid Amount"s (0 mutations)
  11527. 281.80 s [really-safe-money-gen] coverage (1543/1610): Money\.AmountSpec.Eq Amount.(==) \:\: Amount -> Amount -> Bool.is symmetric for "valid Amount"s (0 mutations)
  11528. 281.93 s [really-safe-money-gen] coverage (1546/1610): Money\.AmountSpec.toDouble.succeeds on 7702 with quantisation factor 100 (0 mutations)
  11529. 281.95 s [really-safe-money-gen] coverage (1544/1610): Money\.AmountSpec.GenValid Amount.genValid \:\: Gen Amount.only generates valid 'Amount's (0 mutations)
  11530. 282.05 s [really-safe-money-gen] coverage (1545/1610): Money\.AmountSpec.toDouble.produces valid Doubles (0 mutations)
  11531. 282.14 s [really-safe-money-gen] coverage (1547/1610): Money\.AmountSpec.toDouble.produces an infinite Double with quantisation factor 0 (0 mutations)
  11532. 282.28 s [really-safe-money-gen] coverage (1550/1610): Money\.AmountSpec.rate.computes this USD to CHF rate correctly (6 mutations)
  11533. 282.45 s [really-safe-money-gen] coverage (1551/1610): Money\.AmountSpec.zero.is valid (1 mutations)
  11534. 282.88 s [really-safe-money-gen] coverage (1553/1610): Money\.AmountSpec.convert.converts this USD to CHF correctly (13 mutations)
  11535. 283.14 s [really-safe-money-gen] coverage (1558/1610): Money\.AmountSpec.subtract.fails for 0 - 1 (5 mutations)
  11536. 283.15 s [really-safe-money-gen] coverage (1548/1610): Money\.AmountSpec.rate.produces valid conversion rates (6 mutations)
  11537. 283.17 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)
  11538. 283.22 s [really-safe-money-gen] coverage (1555/1610): Money\.AmountSpec.toRatio.produces an invalid Rational with quantisation factor 0 (1 mutations)
  11539. 283.50 s [really-safe-money-gen] coverage (1491/1610): Money\.AmountSpec.fromDouble.fails on really large numbers:1 (7 mutations)
  11540. 283.50 s [really-safe-money-gen] coverage (1556/1610): Money\.AmountSpec.toRatio.produces valid Rationals when the quantisation factor is nonzero (0 mutations)
  11541. 283.51 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)
  11542. 283.62 s [really-safe-money-gen] coverage (1559/1610): Money\.AmountSpec.subtract.matches what you would get with Integer, if nothing fails (5 mutations)
  11543. 283.74 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)
  11544. 283.78 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)
  11545. 283.80 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)
  11546. 284.01 s [really-safe-money-gen] coverage (1571/1610): Money\.AmountSpec.DecimalLiteral.Amount\.fromDecimalLiteral.fails on this amount that is too precise:1 (13 mutations)
  11547. 284.09 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)
  11548. 284.19 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)
  11549. 284.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)
  11550. 284.26 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)
  11551. 284.45 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)
  11552. 284.50 s [really-safe-money-gen] coverage (1554/1610): Money\.AmountSpec.convert.produces valid amounts (15 mutations)
  11553. 284.67 s [really-safe-money-gen] coverage (1570/1610): Money\.AmountSpec.DecimalLiteral.Amount\.fromDecimalLiteral.fails on this amount that is too precise (13 mutations)
  11554. 284.86 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)
  11555. 285.00 s [really-safe-money-gen] coverage (1532/1610): Money\.AmountSpec.add.has a right-identity\: zero (5 mutations)
  11556. 285.03 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)
  11557. 285.09 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)
  11558. 285.12 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)
  11559. 285.19 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)
  11560. 285.34 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)
  11561. 285.47 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)
  11562. 285.87 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)
  11563. 286.23 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)
  11564. 286.30 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)
  11565. 286.51 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)
  11566. 286.53 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)
  11567. 286.61 s [really-safe-money-gen] coverage (1587/1610): Money\.AmountSpec.fromMinimalQuantisations.produces valid amounts (0 mutations)
  11568. 286.74 s [really-safe-money-gen] coverage (1533/1610): Money\.AmountSpec.add.produces valid amounts (4 mutations)
  11569. 286.80 s [really-safe-money-gen] coverage (1523/1610): Money\.AmountSpec.fromRational.fails on 7\.123 with quantisation factor 10 (9 mutations)
  11570. 286.84 s [really-safe-money-gen] coverage (1526/1610): Money\.AmountSpec.fromRational.fails on NaN (2 mutations)
  11571. 287.02 s [really-safe-money-gen] coverage (1531/1610): Money\.AmountSpec.add.matches what you would get with Integer, if nothing fails (4 mutations)
  11572. 287.31 s [really-safe-money-gen] coverage (1593/1610): Money\.CurrencySpec.Eq Currency.(==) \:\: Currency -> Currency -> Bool.is reflexive for "valid Currency"s (1 mutations)
  11573. 287.43 s [really-safe-money-gen] coverage (1557/1610): Money\.AmountSpec.subtract.fails for 0 - maxBound (5 mutations)
  11574. 287.58 s [really-safe-money-gen] coverage (1592/1610): Money\.CurrencySpec.Eq Currency.(==) \:\: Currency -> Currency -> Bool.is transitive for "valid Currency"s (1 mutations)
  11575. 287.60 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)
  11576. 287.77 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)
  11577. 287.77 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)
  11578. 287.84 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)
  11579. 287.94 s [really-safe-money-gen] coverage (1591/1610): Money\.CurrencySpec.Eq Currency.(==) \:\: Currency -> Currency -> Bool.is symmetric for "valid Currency"s (1 mutations)
  11580. 288.02 s [really-safe-money-gen] coverage (1535/1610): Money\.AmountSpec.add.has a left-identity\: zero (5 mutations)
  11581. 288.11 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)
  11582. 288.11 s [really-safe-money-gen] coverage (1495/1610): Money\.AmountSpec.fromDouble.fails on -Infinity (3 mutations)
  11583. 288.33 s [really-safe-money-gen] coverage (1598/1610): Money\.CurrencySpec.Ord Currency.(<=) \:\: Currency -> Currency -> Bool.is antisymmetric for "valid Currency"'s (1 mutations)
  11584. 288.48 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)
  11585. 288.52 s [really-safe-money-gen] coverage (1603/1610): Money\.CurrencySpec.Ord Currency.(>) \:\: Currency -> Currency -> Bool.is antireflexive for "valid Currency"'s (1 mutations)
  11586. 288.59 s [really-safe-money-gen] coverage (1604/1610): Money\.CurrencySpec.Ord Currency.(>=) \:\: Currency -> Currency -> Bool.is transitive for "valid Currency"'s (1 mutations)
  11587. 288.68 s [really-safe-money-gen] coverage (1605/1610): Money\.CurrencySpec.Ord Currency.(>=) \:\: Currency -> Currency -> Bool.is antisymmetric for "valid Currency"'s (1 mutations)
  11588. 288.94 s [really-safe-money-gen] coverage (1606/1610): Money\.CurrencySpec.Ord Currency.(>=) \:\: Currency -> Currency -> Bool.is reflexive for "valid Currency"'s (1 mutations)
  11589. 289.07 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)
  11590. 289.16 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)
  11591. 289.24 s [really-safe-money-gen] coverage (1518/1610): Money\.AmountSpec.fromRational.succeeds on 0 (13 mutations)
  11592. 289.30 s [really-safe-money-gen] coverage (1610/1610): Money\.CurrencySpec.Ord Currency.(<) \:\: Currency -> Currency -> Bool.is antireflexive for "valid Currency"'s (1 mutations)
  11593. 289.39 s [really-safe-money-gen] coverage (1600/1610): Money\.CurrencySpec.Ord Currency.(<=) \:\: Currency -> Currency -> Bool.is reflexive for "valid Currency"'s (1 mutations)
  11594. 289.47 s [really-safe-money-gen] coverage (1609/1610): Money\.CurrencySpec.Ord Currency.(<) \:\: Currency -> Currency -> Bool.is transitive for "valid Currency"'s (1 mutations)
  11595. 289.52 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)
  11596. 289.56 s [really-safe-money-gen] coverage (1588/1610): Money\.CurrencySpec.Eq Currency.(/=) \:\: Currency -> Currency -> Bool.is antireflexive for "valid Currency"s (1 mutations)
  11597. 289.56 s [really-safe-money-gen] coverage (1527/1610): Money\.AmountSpec.fromRational.produces valid Amounts (13 mutations)
  11598. 289.58 s [really-safe-money-gen] coverage (1501/1610): Money\.AmountSpec.Ord Amount.(<=) \:\: Amount -> Amount -> Bool.is antisymmetric for "valid Amount"'s (0 mutations)
  11599. 289.62 s [really-safe-money-gen] coverage (1530/1610): Money\.AmountSpec.add.fails for maxBound + 1 (4 mutations)
  11600. 289.67 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)
  11601. 289.68 s [really-safe-money-gen] coverage (1508/1610): Money\.AmountSpec.Ord Amount.(<) \:\: Amount -> Amount -> Bool.is antireflexive for "valid Amount"'s (0 mutations)
  11602. 289.68 s [really-safe-money-gen] coverage (1529/1610): Money\.AmountSpec.add.is commutative (4 mutations)
  11603. 289.70 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)
  11604. 289.77 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)
  11605. 289.80 s [really-safe-money-gen] coverage (1597/1610): Money\.CurrencySpec.Ord Currency.(<=) \:\: Currency -> Currency -> Bool.is transitive for "valid Currency"'s (1 mutations)
  11606. 289.85 s [really-safe-money-gen] coverage (1601/1610): Money\.CurrencySpec.Ord Currency.(>) \:\: Currency -> Currency -> Bool.is transitive for "valid Currency"'s (1 mutations)
  11607. 289.90 s [really-safe-money-gen] coverage (1569/1610): Money\.AmountSpec.DecimalLiteral.Amount\.fromDecimalLiteral.produces valid factors (17 mutations)
  11608. 300.10 s [really-safe-money-gen] coverage (1582/1610): Money\.AmountSpec.DecimalLiteral.Amount\.toDecimalLiteral.produces valid decimal literals (29 mutations)
  11609. 304.20 s [really-safe-money-gen] coverage (1583/1610): Money\.AmountSpec.DecimalLiteral.Amount\.toDecimalLiteral.roundtrips with Amount\.fromDecimalLiteral (45 mutations)
  11610. 304.34 s [really-safe-money-gen] mutation-nix: running mutations
  11611. 306.12 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
  11612. 306.14 s [really-safe-money-gen] @@ -171,10 +171,10 @@
  11613. 306.14 s [really-safe-money-gen] fmap
  11614. 306.14 s [really-safe-money-gen] ( ( \theoreticalResult ->
  11615. 306.15 s [really-safe-money-gen] let rounder :: Rational -> Integer
  11616. 306.15 s [really-safe-money-gen] - rounder = case r of
  11617. 306.15 s [really-safe-money-gen] - RoundUp -> ceiling
  11618. 306.15 s [really-safe-money-gen] - RoundDown -> floor
  11619. 306.15 s [really-safe-money-gen] - RoundNearest -> round
  11620. 306.15 s [really-safe-money-gen] + rounder = case r of
  11621. 306.15 s [really-safe-money-gen] + RoundUp -> ceiling
  11622. 306.15 s [really-safe-money-gen] + RoundDown -> floor
  11623. 306.15 s [really-safe-money-gen] + RoundNearest -> round
  11624. 306.15 s [really-safe-money-gen] roundedResult :: Integer
  11625. 306.15 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  11626. 306.15 s [really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  11627. 306.15 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
  11628. 306.15 s [really-safe-money-gen] @@ -171,10 +171,10 @@
  11629. 306.15 s [really-safe-money-gen] fmap
  11630. 306.15 s [really-safe-money-gen] ( ( \theoreticalResult ->
  11631. 306.15 s [really-safe-money-gen] let rounder :: Rational -> Integer
  11632. 306.15 s [really-safe-money-gen] - rounder = case r of
  11633. 306.15 s [really-safe-money-gen] - RoundUp -> ceiling
  11634. 306.15 s [really-safe-money-gen] - RoundDown -> floor
  11635. 306.15 s [really-safe-money-gen] - RoundNearest -> round
  11636. 306.15 s [really-safe-money-gen] + rounder = case r of
  11637. 306.15 s [really-safe-money-gen] + RoundUp -> ceiling
  11638. 306.15 s [really-safe-money-gen] + RoundDown -> floor
  11639. 306.15 s [really-safe-money-gen] + RoundNearest -> round
  11640. 306.15 s [really-safe-money-gen] roundedResult :: Integer
  11641. 306.15 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  11642. 306.15 s [really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  11643. 306.15 s [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAccount.hs:134:12-29
  11644. 306.15 s [really-safe-money-gen] @@ -131,7 +131,7 @@
  11645. 306.15 s [really-safe-money-gen] Just a -> do
  11646. 306.15 s [really-safe-money-gen] r <- Account.subtract a account
  11647. 306.15 s [really-safe-money-gen] Just $
  11648. 306.15 s [really-safe-money-gen] - if r == Account.zero
  11649. 306.15 s [really-safe-money-gen] + if not (r == Account.zero)
  11650. 306.15 s [really-safe-money-gen] then M.delete currency m
  11651. 306.15 s [really-safe-money-gen] else M.insert currency r m
  11652. 306.15 s [really-safe-money-gen]
  11653. 306.15 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:134:12-29
  11654. 306.15 s [really-safe-money-gen] @@ -131,7 +131,7 @@
  11655. 306.15 s [really-safe-money-gen] Just a -> do
  11656. 306.15 s [really-safe-money-gen] r <- Account.subtract a account
  11657. 306.15 s [really-safe-money-gen] Just $
  11658. 306.15 s [really-safe-money-gen] - if r == Account.zero
  11659. 306.15 s [really-safe-money-gen] + if True
  11660. 306.15 s [really-safe-money-gen] then M.delete currency m
  11661. 306.15 s [really-safe-money-gen] else M.insert currency r m
  11662. 306.15 s [really-safe-money-gen]
  11663. 306.15 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:174:25-38
  11664. 306.15 s [really-safe-money-gen] @@ -171,10 +171,10 @@
  11665. 306.15 s [really-safe-money-gen] fmap
  11666. 306.15 s [really-safe-money-gen] ( ( \theoreticalResult ->
  11667. 306.15 s [really-safe-money-gen] let rounder :: Rational -> Integer
  11668. 306.15 s [really-safe-money-gen] - rounder = case r of
  11669. 306.15 s [really-safe-money-gen] - RoundUp -> ceiling
  11670. 306.15 s [really-safe-money-gen] - RoundDown -> floor
  11671. 306.15 s [really-safe-money-gen] - RoundNearest -> round
  11672. 306.15 s [really-safe-money-gen] + rounder = case r of
  11673. 306.15 s [really-safe-money-gen] + RoundUp -> ceiling
  11674. 306.15 s [really-safe-money-gen] + RoundDown -> floor
  11675. 306.15 s [really-safe-money-gen] + RoundNearest -> round
  11676. 306.15 s [really-safe-money-gen] roundedResult :: Integer
  11677. 306.15 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  11678. 306.15 s [really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  11679. 306.15 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:134:12-29
  11680. 306.15 s [really-safe-money-gen] @@ -131,7 +131,7 @@
  11681. 306.15 s [really-safe-money-gen] Just a -> do
  11682. 306.15 s [really-safe-money-gen] r <- Account.subtract a account
  11683. 306.15 s [really-safe-money-gen] Just $
  11684. 306.15 s [really-safe-money-gen] - if r == Account.zero
  11685. 306.15 s [really-safe-money-gen] + if False
  11686. 306.16 s [really-safe-money-gen] then M.delete currency m
  11687. 306.16 s [really-safe-money-gen] else M.insert currency r m
  11688. 306.16 s [really-safe-money-gen]
  11689. 306.16 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
  11690. 306.16 s [really-safe-money-gen] @@ -177,10 +177,10 @@
  11691. 306.16 s [really-safe-money-gen] RoundNearest -> round
  11692. 306.16 s [really-safe-money-gen] roundedResult :: Integer
  11693. 306.16 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  11694. 306.16 s [really-safe-money-gen] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  11695. 306.16 s [really-safe-money-gen] - LT -> RoundedDown
  11696. 306.16 s [really-safe-money-gen] - EQ -> DidNotRound
  11697. 306.16 s [really-safe-money-gen] - GT -> RoundedUp
  11698. 306.16 s [really-safe-money-gen] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  11699. 306.16 s [really-safe-money-gen] + LT -> RoundedDown
  11700. 306.16 s [really-safe-money-gen] + EQ -> DidNotRound
  11701. 306.16 s [really-safe-money-gen] + GT -> RoundedUp
  11702. 306.16 s [really-safe-money-gen] in (Account.fromMinimalQuantisations roundedResult, rounded)
  11703. 306.16 s [really-safe-money-gen] )
  11704. 306.16 s [really-safe-money-gen] . Prelude.sum
  11705. 306.16 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
  11706. 306.16 s [really-safe-money-gen] @@ -177,10 +177,10 @@
  11707. 306.16 s [really-safe-money-gen] RoundNearest -> round
  11708. 306.16 s [really-safe-money-gen] roundedResult :: Integer
  11709. 306.16 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  11710. 306.16 s [really-safe-money-gen] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  11711. 306.16 s [really-safe-money-gen] - LT -> RoundedDown
  11712. 306.16 s [really-safe-money-gen] - EQ -> DidNotRound
  11713. 306.16 s [really-safe-money-gen] - GT -> RoundedUp
  11714. 306.16 s [really-safe-money-gen] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  11715. 306.16 s [really-safe-money-gen] + LT -> RoundedDown
  11716. 306.16 s [really-safe-money-gen] + EQ -> DidNotRound
  11717. 306.16 s [really-safe-money-gen] + GT -> RoundedUp
  11718. 306.16 s [really-safe-money-gen] in (Account.fromMinimalQuantisations roundedResult, rounded)
  11719. 306.16 s [really-safe-money-gen] )
  11720. 306.16 s [really-safe-money-gen] . Prelude.sum
  11721. 306.16 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/MultiAccount.hs:134:9-37
  11722. 306.16 s [really-safe-money-gen] @@ -131,9 +131,9 @@
  11723. 306.16 s [really-safe-money-gen] Just a -> do
  11724. 306.16 s [really-safe-money-gen] r <- Account.subtract a account
  11725. 306.16 s [really-safe-money-gen] Just $
  11726. 306.16 s [really-safe-money-gen] - if r == Account.zero
  11727. 306.16 s [really-safe-money-gen] - then M.delete currency m
  11728. 306.16 s [really-safe-money-gen] - else M.insert currency r m
  11729. 306.16 s [really-safe-money-gen] + if r == Account.zero
  11730. 306.16 s [really-safe-money-gen] + then M.delete currency m
  11731. 306.16 s [really-safe-money-gen] + else M.insert currency r m
  11732. 306.16 s [really-safe-money-gen]
  11733. 306.16 s [really-safe-money-gen] -- | Try to convert every account to one currency.
  11734. 306.16 s [really-safe-money-gen] --
  11735. 306.16 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:120:12-29
  11736. 306.16 s [really-safe-money-gen] @@ -117,7 +117,7 @@
  11737. 306.16 s [really-safe-money-gen] Just a -> do
  11738. 306.16 s [really-safe-money-gen] r <- Account.add a account
  11739. 306.16 s [really-safe-money-gen] Just $
  11740. 306.16 s [really-safe-money-gen] - if r == Account.zero
  11741. 306.16 s [really-safe-money-gen] + if True
  11742. 306.16 s [really-safe-money-gen] then M.delete currency m
  11743. 306.16 s [really-safe-money-gen] else M.insert currency r m
  11744. 306.16 s [really-safe-money-gen]
  11745. 306.16 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:78:6-28
  11746. 306.16 s [really-safe-money-gen] @@ -75,7 +75,7 @@
  11747. 306.16 s [really-safe-money-gen]
  11748. 306.16 s [really-safe-money-gen] fromAccount :: currency -> Account -> MultiAccount currency
  11749. 306.16 s [really-safe-money-gen] fromAccount currency amount =
  11750. 306.16 s [really-safe-money-gen] - if amount == Account.zero
  11751. 306.16 s [really-safe-money-gen] + if True
  11752. 306.16 s [really-safe-money-gen] then zero
  11753. 306.16 s [really-safe-money-gen] else MultiAccount $ M.singleton currency amount
  11754. 306.16 s [really-safe-money-gen]
  11755. 306.16 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:180:25-32
  11756. 306.16 s [really-safe-money-gen] @@ -177,10 +177,10 @@
  11757. 306.16 s [really-safe-money-gen] RoundNearest -> round
  11758. 306.16 s [really-safe-money-gen] roundedResult :: Integer
  11759. 306.16 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  11760. 306.16 s [really-safe-money-gen] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  11761. 306.16 s [really-safe-money-gen] - LT -> RoundedDown
  11762. 306.16 s [really-safe-money-gen] - EQ -> DidNotRound
  11763. 306.16 s [really-safe-money-gen] - GT -> RoundedUp
  11764. 306.16 s [really-safe-money-gen] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  11765. 306.16 s [really-safe-money-gen] + LT -> RoundedDown
  11766. 306.16 s [really-safe-money-gen] + EQ -> DidNotRound
  11767. 306.16 s [really-safe-money-gen] + GT -> RoundedUp
  11768. 306.16 s [really-safe-money-gen] in (Account.fromMinimalQuantisations roundedResult, rounded)
  11769. 306.16 s [really-safe-money-gen] )
  11770. 306.16 s [really-safe-money-gen] . Prelude.sum
  11771. 306.16 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/MultiAccount.hs:120:9-37
  11772. 306.16 s [really-safe-money-gen] @@ -117,9 +117,9 @@
  11773. 306.16 s [really-safe-money-gen] Just a -> do
  11774. 306.16 s [really-safe-money-gen] r <- Account.add a account
  11775. 306.16 s [really-safe-money-gen] Just $
  11776. 306.16 s [really-safe-money-gen] - if r == Account.zero
  11777. 306.16 s [really-safe-money-gen] - then M.delete currency m
  11778. 306.16 s [really-safe-money-gen] - else M.insert currency r m
  11779. 306.16 s [really-safe-money-gen] + if r == Account.zero
  11780. 306.16 s [really-safe-money-gen] + then M.delete currency m
  11781. 306.16 s [really-safe-money-gen] + else M.insert currency r m
  11782. 306.17 s [really-safe-money-gen]
  11783. 306.17 s [really-safe-money-gen] -- | Add an 'Account' to a 'MultiAccount'
  11784. 306.17 s [really-safe-money-gen] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
  11785. 306.17 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:129:23-37
  11786. 306.17 s [really-safe-money-gen] @@ -126,14 +126,14 @@
  11787. 306.17 s [really-safe-money-gen] subtractAccount m _ (Positive (Amount 0)) = Just m
  11788. 306.17 s [really-safe-money-gen] subtractAccount m _ (Negative (Amount 0)) = Just m
  11789. 306.17 s [really-safe-money-gen] subtractAccount (MultiAccount m) currency account =
  11790. 306.17 s [really-safe-money-gen] - fmap MultiAccount $ case M.lookup currency m of
  11791. 306.17 s [really-safe-money-gen] - Nothing -> Just $ M.insert currency (Account.negate account) m
  11792. 306.17 s [really-safe-money-gen] - Just a -> do
  11793. 306.17 s [really-safe-money-gen] - r <- Account.subtract a account
  11794. 306.17 s [really-safe-money-gen] - Just $
  11795. 306.17 s [really-safe-money-gen] - if r == Account.zero
  11796. 306.17 s [really-safe-money-gen] - then M.delete currency m
  11797. 306.17 s [really-safe-money-gen] - else M.insert currency r m
  11798. 306.17 s [really-safe-money-gen] + fmap MultiAccount $ case M.lookup currency m of
  11799. 306.17 s [really-safe-money-gen] + Nothing -> Just $ M.insert currency (Account.negate account) m
  11800. 306.17 s [really-safe-money-gen] + Just a -> do
  11801. 306.17 s [really-safe-money-gen] + r <- Account.subtract a account
  11802. 306.17 s [really-safe-money-gen] + Just $
  11803. 306.17 s [really-safe-money-gen] + if r == Account.zero
  11804. 306.17 s [really-safe-money-gen] + then M.delete currency m
  11805. 306.17 s [really-safe-money-gen] + else M.insert currency r m
  11806. 306.17 s [really-safe-money-gen]
  11807. 306.17 s [really-safe-money-gen] -- | Try to convert every account to one currency.
  11808. 306.17 s [really-safe-money-gen] --
  11809. 306.17 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:120:12-29
  11810. 306.17 s [really-safe-money-gen] @@ -117,7 +117,7 @@
  11811. 306.17 s [really-safe-money-gen] Just a -> do
  11812. 306.17 s [really-safe-money-gen] r <- Account.add a account
  11813. 306.17 s [really-safe-money-gen] Just $
  11814. 306.17 s [really-safe-money-gen] - if r == Account.zero
  11815. 306.17 s [really-safe-money-gen] + if False
  11816. 306.17 s [really-safe-money-gen] then M.delete currency m
  11817. 306.17 s [really-safe-money-gen] else M.insert currency r m
  11818. 306.17 s [really-safe-money-gen]
  11819. 306.17 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:78:6-28
  11820. 306.17 s [really-safe-money-gen] @@ -75,7 +75,7 @@
  11821. 306.17 s [really-safe-money-gen]
  11822. 306.17 s [really-safe-money-gen] fromAccount :: currency -> Account -> MultiAccount currency
  11823. 306.17 s [really-safe-money-gen] fromAccount currency amount =
  11824. 306.17 s [really-safe-money-gen] - if amount == Account.zero
  11825. 306.17 s [really-safe-money-gen] + if False
  11826. 306.17 s [really-safe-money-gen] then zero
  11827. 306.17 s [really-safe-money-gen] else MultiAccount $ M.singleton currency amount
  11828. 306.17 s [really-safe-money-gen]
  11829. 306.17 s [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAccount.hs:120:12-29
  11830. 306.17 s [really-safe-money-gen] @@ -117,7 +117,7 @@
  11831. 306.17 s [really-safe-money-gen] Just a -> do
  11832. 306.17 s [really-safe-money-gen] r <- Account.add a account
  11833. 306.17 s [really-safe-money-gen] Just $
  11834. 306.17 s [really-safe-money-gen] - if r == Account.zero
  11835. 306.17 s [really-safe-money-gen] + if not (r == Account.zero)
  11836. 306.18 s [really-safe-money-gen] then M.delete currency m
  11837. 306.18 s [really-safe-money-gen] else M.insert currency r m
  11838. 307.58 s [really-safe-money-gen]
  11839. 307.58 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:115:23-37
  11840. 307.58 s [really-safe-money-gen] @@ -112,14 +112,14 @@
  11841. 307.58 s [really-safe-money-gen] addAccount m _ (Positive (Amount 0)) = Just m
  11842. 307.58 s [really-safe-money-gen] addAccount m _ (Negative (Amount 0)) = Just m
  11843. 307.58 s [really-safe-money-gen] addAccount (MultiAccount m) currency account =
  11844. 307.58 s [really-safe-money-gen] - fmap MultiAccount $ case M.lookup currency m of
  11845. 307.58 s [really-safe-money-gen] - Nothing -> Just $ M.insert currency account m
  11846. 307.58 s [really-safe-money-gen] - Just a -> do
  11847. 307.58 s [really-safe-money-gen] - r <- Account.add a account
  11848. 307.58 s [really-safe-money-gen] - Just $
  11849. 307.58 s [really-safe-money-gen] - if r == Account.zero
  11850. 307.58 s [really-safe-money-gen] - then M.delete currency m
  11851. 307.58 s [really-safe-money-gen] - else M.insert currency r m
  11852. 307.59 s [really-safe-money-gen] + fmap MultiAccount $ case M.lookup currency m of
  11853. 307.59 s [really-safe-money-gen] + Nothing -> Just $ M.insert currency account m
  11854. 307.59 s [really-safe-money-gen] + Just a -> do
  11855. 307.59 s [really-safe-money-gen] + r <- Account.add a account
  11856. 307.59 s [really-safe-money-gen] + Just $
  11857. 307.59 s [really-safe-money-gen] + if r == Account.zero
  11858. 307.59 s [really-safe-money-gen] + then M.delete currency m
  11859. 307.59 s [really-safe-money-gen] + else M.insert currency r m
  11860. 307.59 s [really-safe-money-gen]
  11861. 307.59 s [really-safe-money-gen] -- | Add an 'Account' to a 'MultiAccount'
  11862. 307.59 s [really-safe-money-gen] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
  11863. 307.59 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:129:23-37
  11864. 307.59 s [really-safe-money-gen] @@ -126,14 +126,14 @@
  11865. 307.59 s [really-safe-money-gen] subtractAccount m _ (Positive (Amount 0)) = Just m
  11866. 307.59 s [really-safe-money-gen] subtractAccount m _ (Negative (Amount 0)) = Just m
  11867. 307.59 s [really-safe-money-gen] subtractAccount (MultiAccount m) currency account =
  11868. 307.59 s [really-safe-money-gen] - fmap MultiAccount $ case M.lookup currency m of
  11869. 307.59 s [really-safe-money-gen] - Nothing -> Just $ M.insert currency (Account.negate account) m
  11870. 307.59 s [really-safe-money-gen] - Just a -> do
  11871. 307.59 s [really-safe-money-gen] - r <- Account.subtract a account
  11872. 307.59 s [really-safe-money-gen] - Just $
  11873. 307.59 s [really-safe-money-gen] - if r == Account.zero
  11874. 307.59 s [really-safe-money-gen] - then M.delete currency m
  11875. 307.59 s [really-safe-money-gen] - else M.insert currency r m
  11876. 307.59 s [really-safe-money-gen] + fmap MultiAccount $ case M.lookup currency m of
  11877. 307.59 s [really-safe-money-gen] + Nothing -> Just $ M.insert currency (Account.negate account) m
  11878. 307.59 s [really-safe-money-gen] + Just a -> do
  11879. 307.59 s [really-safe-money-gen] + r <- Account.subtract a account
  11880. 307.59 s [really-safe-money-gen] + Just $
  11881. 307.59 s [really-safe-money-gen] + if r == Account.zero
  11882. 307.59 s [really-safe-money-gen] + then M.delete currency m
  11883. 307.59 s [really-safe-money-gen] + else M.insert currency r m
  11884. 307.59 s [really-safe-money-gen]
  11885. 307.59 s [really-safe-money-gen] -- | Try to convert every account to one currency.
  11886. 307.59 s [really-safe-money-gen] --
  11887. 307.59 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAccount.hs:115:23-37
  11888. 307.59 s [really-safe-money-gen] @@ -112,14 +112,14 @@
  11889. 307.59 s [really-safe-money-gen] addAccount m _ (Positive (Amount 0)) = Just m
  11890. 307.59 s [really-safe-money-gen] addAccount m _ (Negative (Amount 0)) = Just m
  11891. 307.59 s [really-safe-money-gen] addAccount (MultiAccount m) currency account =
  11892. 307.59 s [really-safe-money-gen] - fmap MultiAccount $ case M.lookup currency m of
  11893. 307.60 s [really-safe-money-gen] - Nothing -> Just $ M.insert currency account m
  11894. 307.60 s [really-safe-money-gen] - Just a -> do
  11895. 307.60 s [really-safe-money-gen] - r <- Account.add a account
  11896. 307.60 s [really-safe-money-gen] - Just $
  11897. 307.60 s [really-safe-money-gen] - if r == Account.zero
  11898. 307.60 s [really-safe-money-gen] - then M.delete currency m
  11899. 307.60 s [really-safe-money-gen] - else M.insert currency r m
  11900. 307.60 s [really-safe-money-gen] + fmap MultiAccount $ case M.lookup currency m of
  11901. 307.60 s [really-safe-money-gen] + Nothing -> Just $ M.insert currency account m
  11902. 307.60 s [really-safe-money-gen] + Just a -> do
  11903. 307.60 s [really-safe-money-gen] + r <- Account.add a account
  11904. 307.60 s [really-safe-money-gen] + Just $
  11905. 307.60 s [really-safe-money-gen] + if r == Account.zero
  11906. 307.60 s [really-safe-money-gen] + then M.delete currency m
  11907. 307.60 s [really-safe-money-gen] + else M.insert currency r m
  11908. 307.60 s [really-safe-money-gen]
  11909. 307.60 s [really-safe-money-gen] -- | Add an 'Account' to a 'MultiAccount'
  11910. 307.60 s [really-safe-money-gen] subtractAccount :: (Ord currency) => MultiAccount currency -> currency -> Account -> Maybe (MultiAccount currency)
  11911. 307.60 s [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAccount.hs:78:6-28
  11912. 307.60 s [really-safe-money-gen] @@ -75,7 +75,7 @@
  11913. 307.60 s [really-safe-money-gen]
  11914. 307.60 s [really-safe-money-gen] fromAccount :: currency -> Account -> MultiAccount currency
  11915. 307.60 s [really-safe-money-gen] fromAccount currency amount =
  11916. 307.60 s [really-safe-money-gen] - if amount == Account.zero
  11917. 307.60 s [really-safe-money-gen] + if not (amount == Account.zero)
  11918. 307.60 s [really-safe-money-gen] then zero
  11919. 307.60 s [really-safe-money-gen] else MultiAccount $ M.singleton currency amount
  11920. 307.60 s [really-safe-money-gen]
  11921. 307.60 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/MultiAccount.hs:78:3-52
  11922. 307.60 s [really-safe-money-gen] @@ -75,9 +75,9 @@
  11923. 307.60 s [really-safe-money-gen]
  11924. 307.60 s [really-safe-money-gen] fromAccount :: currency -> Account -> MultiAccount currency
  11925. 307.60 s [really-safe-money-gen] fromAccount currency amount =
  11926. 307.60 s [really-safe-money-gen] - if amount == Account.zero
  11927. 307.60 s [really-safe-money-gen] - then zero
  11928. 307.60 s [really-safe-money-gen] - else MultiAccount $ M.singleton currency amount
  11929. 307.60 s [really-safe-money-gen] + if amount == Account.zero
  11930. 307.60 s [really-safe-money-gen] + then zero
  11931. 307.60 s [really-safe-money-gen] + else MultiAccount $ M.singleton currency amount
  11932. 307.60 s [really-safe-money-gen]
  11933. 307.60 s [really-safe-money-gen] -- | No money of any currency
  11934. 307.60 s [really-safe-money-gen] zero :: MultiAccount currency
  11935. 307.60 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:69:13-30
  11936. 307.60 s [really-safe-money-gen] @@ -66,7 +66,7 @@
  11937. 307.60 s [really-safe-money-gen] [ genericValidate ma,
  11938. 307.60 s [really-safe-money-gen] decorateMap m $ \_ a ->
  11939. 307.60 s [really-safe-money-gen] declare "The account is not zero" $
  11940. 307.60 s [really-safe-money-gen] - a /= Account.zero
  11941. 307.60 s [really-safe-money-gen] + True
  11942. 307.60 s [really-safe-money-gen] ]
  11943. 307.60 s [really-safe-money-gen]
  11944. 307.60 s [really-safe-money-gen] -- TODO no empty currencies
  11945. 307.60 s [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAccount.hs:69:13-30
  11946. 307.60 s [really-safe-money-gen] @@ -66,7 +66,7 @@
  11947. 307.60 s [really-safe-money-gen] [ genericValidate ma,
  11948. 307.60 s [really-safe-money-gen] decorateMap m $ \_ a ->
  11949. 307.60 s [really-safe-money-gen] declare "The account is not zero" $
  11950. 307.61 s [really-safe-money-gen] - a /= Account.zero
  11951. 307.61 s [really-safe-money-gen] + not (a /= Account.zero)
  11952. 307.61 s [really-safe-money-gen] ]
  11953. 307.61 s [really-safe-money-gen]
  11954. 307.61 s [really-safe-money-gen] -- TODO no empty currencies
  11955. 307.61 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:69:13-30
  11956. 307.61 s [really-safe-money-gen] @@ -66,7 +66,7 @@
  11957. 307.61 s [really-safe-money-gen] [ genericValidate ma,
  11958. 307.61 s [really-safe-money-gen] decorateMap m $ \_ a ->
  11959. 307.61 s [really-safe-money-gen] declare "The account is not zero" $
  11960. 307.61 s [really-safe-money-gen] - a /= Account.zero
  11961. 307.61 s [really-safe-money-gen] + False
  11962. 307.61 s [really-safe-money-gen] ]
  11963. 307.61 s [really-safe-money-gen]
  11964. 307.61 s [really-safe-money-gen] -- TODO no empty currencies
  11965. 307.61 s [really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAccount.hs:66:7-8
  11966. 307.61 s [really-safe-money-gen] @@ -63,11 +63,11 @@
  11967. 307.61 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
  11968. 307.61 s [really-safe-money-gen] validate ma@(MultiAccount m) =
  11969. 307.61 s [really-safe-money-gen] mconcat
  11970. 307.61 s [really-safe-money-gen] - [ genericValidate ma,
  11971. 307.61 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  11972. 307.61 s [really-safe-money-gen] - declare "The account is not zero" $
  11973. 307.61 s [really-safe-money-gen] - a /= Account.zero
  11974. 307.61 s [really-safe-money-gen] - ]
  11975. 307.61 s [really-safe-money-gen] + [ genericValidate ma,
  11976. 307.61 s [really-safe-money-gen] + decorateMap m $ \_ a ->
  11977. 307.61 s [really-safe-money-gen] + declare "The account is not zero" $
  11978. 307.61 s [really-safe-money-gen] + a /= Account.zero
  11979. 307.61 s [really-safe-money-gen] + ]
  11980. 307.61 s [really-safe-money-gen]
  11981. 307.61 s [really-safe-money-gen] -- TODO no empty currencies
  11982. 307.61 s [really-safe-money-gen]
  11983. 307.61 s [really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAccount.hs:66:7-8
  11984. 307.61 s [really-safe-money-gen] @@ -63,11 +63,7 @@
  11985. 307.61 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
  11986. 307.61 s [really-safe-money-gen] validate ma@(MultiAccount m) =
  11987. 307.61 s [really-safe-money-gen] mconcat
  11988. 307.61 s [really-safe-money-gen] - [ genericValidate ma,
  11989. 307.61 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  11990. 307.61 s [really-safe-money-gen] - declare "The account is not zero" $
  11991. 307.61 s [really-safe-money-gen] - a /= Account.zero
  11992. 307.61 s [really-safe-money-gen] - ]
  11993. 307.61 s [really-safe-money-gen] + []
  11994. 307.61 s [really-safe-money-gen]
  11995. 307.61 s [really-safe-money-gen] -- TODO no empty currencies
  11996. 307.61 s [really-safe-money-gen]
  11997. 307.61 s [really-safe-money-gen] Testing mutation IntLit at src/Money/ConversionRate.hs:116:45-46
  11998. 307.61 s [really-safe-money-gen] @@ -113,7 +113,7 @@
  11999. 307.61 s [really-safe-money-gen] -- >>> invert (ConversionRate (1 % 2))
  12000. 307.61 s [really-safe-money-gen] -- ConversionRate {unConversionRate = 2 % 1}
  12001. 307.61 s [really-safe-money-gen] invert :: ConversionRate -> ConversionRate
  12002. 307.61 s [really-safe-money-gen] -invert (ConversionRate r) = ConversionRate (1 / r)
  12003. 307.61 s [really-safe-money-gen] +invert (ConversionRate r) = ConversionRate (-1 / r)
  12004. 307.61 s [really-safe-money-gen]
  12005. 307.61 s [really-safe-money-gen] -- | Compose two conversion rates
  12006. 307.62 s [really-safe-money-gen] --
  12007. 307.62 s [really-safe-money-gen] Testing mutation IntLit at src/Money/ConversionRate.hs:116:45-46
  12008. 307.62 s [really-safe-money-gen] @@ -113,7 +113,7 @@
  12009. 307.62 s [really-safe-money-gen] -- >>> invert (ConversionRate (1 % 2))
  12010. 307.62 s [really-safe-money-gen] -- ConversionRate {unConversionRate = 2 % 1}
  12011. 307.62 s [really-safe-money-gen] invert :: ConversionRate -> ConversionRate
  12012. 307.62 s [really-safe-money-gen] -invert (ConversionRate r) = ConversionRate (1 / r)
  12013. 307.62 s [really-safe-money-gen] +invert (ConversionRate r) = ConversionRate (0 / r)
  12014. 307.62 s [really-safe-money-gen]
  12015. 307.62 s [really-safe-money-gen] -- | Compose two conversion rates
  12016. 307.62 s [really-safe-money-gen] --
  12017. 307.62 s [really-safe-money-gen] Testing mutation IntLit at src/Money/ConversionRate.hs:109:27-28
  12018. 307.62 s [really-safe-money-gen] @@ -106,7 +106,7 @@
  12019. 307.62 s [really-safe-money-gen]
  12020. 307.62 s [really-safe-money-gen] -- | One-to-one conversion rate
  12021. 307.62 s [really-safe-money-gen] oneToOne :: ConversionRate
  12022. 307.62 s [really-safe-money-gen] -oneToOne = ConversionRate 1
  12023. 307.62 s [really-safe-money-gen] +oneToOne = ConversionRate 0
  12024. 307.62 s [really-safe-money-gen]
  12025. 307.62 s [really-safe-money-gen] -- | Invert a 'ConversionRate', to convert in the other direction.
  12026. 307.62 s [really-safe-money-gen] --
  12027. 307.62 s [really-safe-money-gen] Testing mutation IntLit at src/Money/ConversionRate.hs:72:25-26
  12028. 307.62 s [really-safe-money-gen] @@ -69,7 +69,7 @@
  12029. 307.62 s [really-safe-money-gen] -- >>> fromRational (0 % 1)
  12030. 307.62 s [really-safe-money-gen] -- Nothing
  12031. 307.62 s [really-safe-money-gen] fromRational :: Rational -> Maybe ConversionRate
  12032. 307.62 s [really-safe-money-gen] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  12033. 307.62 s [really-safe-money-gen] +fromRational r = if r < 1 then Nothing else fromRatio (realToFrac r)
  12034. 307.62 s [really-safe-money-gen]
  12035. 307.62 s [really-safe-money-gen] -- | Turn a 'ConversionRate' back into a 'Rational'
  12036. 307.62 s [really-safe-money-gen] --
  12037. 307.62 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/ConversionRate.hs:72:21-26
  12038. 307.62 s [really-safe-money-gen] @@ -69,7 +69,7 @@
  12039. 307.62 s [really-safe-money-gen] -- >>> fromRational (0 % 1)
  12040. 307.62 s [really-safe-money-gen] -- Nothing
  12041. 307.62 s [really-safe-money-gen] fromRational :: Rational -> Maybe ConversionRate
  12042. 307.62 s [really-safe-money-gen] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  12043. 307.62 s [really-safe-money-gen] +fromRational r = if True then Nothing else fromRatio (realToFrac r)
  12044. 307.62 s [really-safe-money-gen]
  12045. 307.62 s [really-safe-money-gen] -- | Turn a 'ConversionRate' back into a 'Rational'
  12046. 307.62 s [really-safe-money-gen] --
  12047. 307.62 s [really-safe-money-gen] Testing mutation IntLit at src/Money/ConversionRate.hs:109:27-28
  12048. 307.62 s [really-safe-money-gen] @@ -106,7 +106,7 @@
  12049. 307.62 s [really-safe-money-gen]
  12050. 307.62 s [really-safe-money-gen] -- | One-to-one conversion rate
  12051. 307.62 s [really-safe-money-gen] oneToOne :: ConversionRate
  12052. 307.62 s [really-safe-money-gen] -oneToOne = ConversionRate 1
  12053. 307.62 s [really-safe-money-gen] +oneToOne = ConversionRate -1
  12054. 307.62 s [really-safe-money-gen]
  12055. 307.62 s [really-safe-money-gen] -- | Invert a 'ConversionRate', to convert in the other direction.
  12056. 307.62 s [really-safe-money-gen] --
  12057. 307.62 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/ConversionRate.hs:72:21-26
  12058. 307.62 s [really-safe-money-gen] @@ -69,7 +69,7 @@
  12059. 307.62 s [really-safe-money-gen] -- >>> fromRational (0 % 1)
  12060. 307.62 s [really-safe-money-gen] -- Nothing
  12061. 307.62 s [really-safe-money-gen] fromRational :: Rational -> Maybe ConversionRate
  12062. 307.62 s [really-safe-money-gen] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  12063. 307.62 s [really-safe-money-gen] +fromRational r = if False then Nothing else fromRatio (realToFrac r)
  12064. 307.62 s [really-safe-money-gen]
  12065. 307.62 s [really-safe-money-gen] -- | Turn a 'ConversionRate' back into a 'Rational'
  12066. 307.62 s [really-safe-money-gen] --
  12067. 307.62 s [really-safe-money-gen] Testing mutation Negate at src/Money/ConversionRate.hs:72:21-26
  12068. 307.62 s [really-safe-money-gen] @@ -69,7 +69,7 @@
  12069. 307.63 s [really-safe-money-gen] -- >>> fromRational (0 % 1)
  12070. 307.63 s [really-safe-money-gen] -- Nothing
  12071. 307.63 s [really-safe-money-gen] fromRational :: Rational -> Maybe ConversionRate
  12072. 307.63 s [really-safe-money-gen] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  12073. 307.63 s [really-safe-money-gen] +fromRational r = if not (r < 0) then Nothing else fromRatio (realToFrac r)
  12074. 307.63 s [really-safe-money-gen]
  12075. 307.63 s [really-safe-money-gen] -- | Turn a 'ConversionRate' back into a 'Rational'
  12076. 307.63 s [really-safe-money-gen] --
  12077. 307.63 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/ConversionRate.hs:72:18-69
  12078. 309.39 s [really-safe-money-gen] @@ -69,7 +69,7 @@
  12079. 309.39 s [really-safe-money-gen] -- >>> fromRational (0 % 1)
  12080. 309.39 s [really-safe-money-gen] -- Nothing
  12081. 309.39 s [really-safe-money-gen] fromRational :: Rational -> Maybe ConversionRate
  12082. 309.39 s [really-safe-money-gen] -fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  12083. 309.39 s [really-safe-money-gen] +fromRational r = if r < 0 then Nothing else fromRatio (realToFrac r)
  12084. 309.39 s [really-safe-money-gen]
  12085. 309.39 s [really-safe-money-gen] -- | Turn a 'ConversionRate' back into a 'Rational'
  12086. 309.39 s [really-safe-money-gen] --
  12087. 309.39 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/ConversionRate.hs:38:41-57
  12088. 309.39 s [really-safe-money-gen] @@ -35,7 +35,7 @@
  12089. 309.39 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  12090. 309.39 s [really-safe-money-gen] mconcat
  12091. 309.39 s [really-safe-money-gen] [ genericValidate cr,
  12092. 309.39 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  12093. 309.39 s [really-safe-money-gen] + declare "The rate is nonzero" $ True
  12094. 309.39 s [really-safe-money-gen] ]
  12095. 309.39 s [really-safe-money-gen]
  12096. 309.39 s [really-safe-money-gen] instance NFData ConversionRate
  12097. 309.39 s [really-safe-money-gen] Testing mutation IntLit at src/Money/ConversionRate.hs:38:56-57
  12098. 309.39 s [really-safe-money-gen] @@ -35,7 +35,7 @@
  12099. 309.39 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  12100. 309.39 s [really-safe-money-gen] mconcat
  12101. 309.39 s [really-safe-money-gen] [ genericValidate cr,
  12102. 309.39 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  12103. 309.39 s [really-safe-money-gen] + declare "The rate is nonzero" $ numerator r /= 1
  12104. 309.40 s [really-safe-money-gen] ]
  12105. 309.40 s [really-safe-money-gen]
  12106. 309.40 s [really-safe-money-gen] instance NFData ConversionRate
  12107. 309.40 s [really-safe-money-gen] Testing mutation Negate at src/Money/ConversionRate.hs:38:41-57
  12108. 309.40 s [really-safe-money-gen] @@ -35,7 +35,7 @@
  12109. 309.40 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  12110. 309.40 s [really-safe-money-gen] mconcat
  12111. 309.40 s [really-safe-money-gen] [ genericValidate cr,
  12112. 309.40 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  12113. 309.40 s [really-safe-money-gen] + declare "The rate is nonzero" $ not (numerator r /= 0)
  12114. 309.40 s [really-safe-money-gen] ]
  12115. 309.40 s [really-safe-money-gen]
  12116. 309.40 s [really-safe-money-gen] instance NFData ConversionRate
  12117. 309.40 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/ConversionRate.hs:38:41-57
  12118. 309.40 s [really-safe-money-gen] @@ -35,7 +35,7 @@
  12119. 309.40 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  12120. 309.40 s [really-safe-money-gen] mconcat
  12121. 309.40 s [really-safe-money-gen] [ genericValidate cr,
  12122. 309.40 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  12123. 309.40 s [really-safe-money-gen] + declare "The rate is nonzero" $ False
  12124. 309.40 s [really-safe-money-gen] ]
  12125. 309.40 s [really-safe-money-gen]
  12126. 309.40 s [really-safe-money-gen] instance NFData ConversionRate
  12127. 309.40 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
  12128. 309.40 s [really-safe-money-gen] @@ -156,10 +156,10 @@
  12129. 309.40 s [really-safe-money-gen] fmap
  12130. 309.40 s [really-safe-money-gen] ( ( \theoreticalResult ->
  12131. 309.40 s [really-safe-money-gen] let rounder :: Ratio Natural -> Natural
  12132. 309.40 s [really-safe-money-gen] - rounder = case r of
  12133. 309.40 s [really-safe-money-gen] - RoundUp -> ceiling
  12134. 309.40 s [really-safe-money-gen] - RoundDown -> floor
  12135. 309.40 s [really-safe-money-gen] - RoundNearest -> round
  12136. 309.40 s [really-safe-money-gen] + rounder = case r of
  12137. 309.40 s [really-safe-money-gen] + RoundUp -> ceiling
  12138. 309.40 s [really-safe-money-gen] + RoundDown -> floor
  12139. 309.40 s [really-safe-money-gen] + RoundNearest -> round
  12140. 309.40 s [really-safe-money-gen] roundedResult :: Natural
  12141. 309.40 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  12142. 309.40 s [really-safe-money-gen] maxBoundN :: Natural
  12143. 309.40 s [really-safe-money-gen] Testing mutation ListLit at src/Money/ConversionRate.hs:37:7-8
  12144. 309.40 s [really-safe-money-gen] @@ -34,9 +34,7 @@
  12145. 309.40 s [really-safe-money-gen] instance Validity ConversionRate where
  12146. 309.40 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  12147. 309.40 s [really-safe-money-gen] mconcat
  12148. 309.40 s [really-safe-money-gen] - [ genericValidate cr,
  12149. 309.40 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  12150. 309.40 s [really-safe-money-gen] - ]
  12151. 309.40 s [really-safe-money-gen] + []
  12152. 309.40 s [really-safe-money-gen]
  12153. 309.40 s [really-safe-money-gen] instance NFData ConversionRate
  12154. 309.40 s [really-safe-money-gen]
  12155. 309.40 s [really-safe-money-gen] Testing mutation ListLit at src/Money/ConversionRate.hs:37:7-8
  12156. 309.40 s [really-safe-money-gen] @@ -34,9 +34,9 @@
  12157. 309.40 s [really-safe-money-gen] instance Validity ConversionRate where
  12158. 309.40 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  12159. 309.40 s [really-safe-money-gen] mconcat
  12160. 309.40 s [really-safe-money-gen] - [ genericValidate cr,
  12161. 309.40 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  12162. 309.40 s [really-safe-money-gen] - ]
  12163. 309.41 s [really-safe-money-gen] + [ genericValidate cr,
  12164. 309.41 s [really-safe-money-gen] + declare "The rate is nonzero" $ numerator r /= 0
  12165. 309.41 s [really-safe-money-gen] + ]
  12166. 309.41 s [really-safe-money-gen]
  12167. 309.41 s [really-safe-money-gen] instance NFData ConversionRate
  12168. 309.41 s [really-safe-money-gen]
  12169. 309.41 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
  12170. 309.41 s [really-safe-money-gen] @@ -156,10 +156,10 @@
  12171. 309.41 s [really-safe-money-gen] fmap
  12172. 309.41 s [really-safe-money-gen] ( ( \theoreticalResult ->
  12173. 309.41 s [really-safe-money-gen] let rounder :: Ratio Natural -> Natural
  12174. 309.41 s [really-safe-money-gen] - rounder = case r of
  12175. 309.41 s [really-safe-money-gen] - RoundUp -> ceiling
  12176. 309.41 s [really-safe-money-gen] - RoundDown -> floor
  12177. 309.41 s [really-safe-money-gen] - RoundNearest -> round
  12178. 309.41 s [really-safe-money-gen] + rounder = case r of
  12179. 309.41 s [really-safe-money-gen] + RoundUp -> ceiling
  12180. 309.41 s [really-safe-money-gen] + RoundDown -> floor
  12181. 309.41 s [really-safe-money-gen] + RoundNearest -> round
  12182. 309.41 s [really-safe-money-gen] roundedResult :: Natural
  12183. 309.41 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  12184. 309.41 s [really-safe-money-gen] maxBoundN :: Natural
  12185. 309.41 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:159:25-38
  12186. 309.41 s [really-safe-money-gen] @@ -156,10 +156,10 @@
  12187. 309.41 s [really-safe-money-gen] fmap
  12188. 309.41 s [really-safe-money-gen] ( ( \theoreticalResult ->
  12189. 309.41 s [really-safe-money-gen] let rounder :: Ratio Natural -> Natural
  12190. 309.41 s [really-safe-money-gen] - rounder = case r of
  12191. 309.41 s [really-safe-money-gen] - RoundUp -> ceiling
  12192. 309.41 s [really-safe-money-gen] - RoundDown -> floor
  12193. 309.41 s [really-safe-money-gen] - RoundNearest -> round
  12194. 309.41 s [really-safe-money-gen] + rounder = case r of
  12195. 309.41 s [really-safe-money-gen] + RoundUp -> ceiling
  12196. 309.41 s [really-safe-money-gen] + RoundDown -> floor
  12197. 309.41 s [really-safe-money-gen] + RoundNearest -> round
  12198. 309.41 s [really-safe-money-gen] roundedResult :: Natural
  12199. 309.41 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  12200. 309.41 s [really-safe-money-gen] maxBoundN :: Natural
  12201. 309.41 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:168:20-45
  12202. 309.41 s [really-safe-money-gen] @@ -165,7 +165,7 @@
  12203. 309.41 s [really-safe-money-gen] maxBoundN :: Natural
  12204. 309.41 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  12205. 309.41 s [really-safe-money-gen] actualResult =
  12206. 309.41 s [really-safe-money-gen] - if roundedResult > maxBoundN
  12207. 309.41 s [really-safe-money-gen] + if True
  12208. 309.41 s [really-safe-money-gen] then Nothing
  12209. 309.41 s [really-safe-money-gen] else Just (fromIntegral roundedResult)
  12210. 309.41 s [really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12211. 309.41 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:168:20-45
  12212. 309.41 s [really-safe-money-gen] @@ -165,7 +165,7 @@
  12213. 309.41 s [really-safe-money-gen] maxBoundN :: Natural
  12214. 309.41 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  12215. 309.41 s [really-safe-money-gen] actualResult =
  12216. 309.41 s [really-safe-money-gen] - if roundedResult > maxBoundN
  12217. 309.41 s [really-safe-money-gen] + if False
  12218. 309.41 s [really-safe-money-gen] then Nothing
  12219. 309.41 s [really-safe-money-gen] else Just (fromIntegral roundedResult)
  12220. 309.41 s [really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12221. 309.41 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/MultiAmount.hs:168:17-57
  12222. 309.41 s [really-safe-money-gen] @@ -165,9 +165,9 @@
  12223. 309.41 s [really-safe-money-gen] maxBoundN :: Natural
  12224. 309.41 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  12225. 309.41 s [really-safe-money-gen] actualResult =
  12226. 309.41 s [really-safe-money-gen] - if roundedResult > maxBoundN
  12227. 309.41 s [really-safe-money-gen] - then Nothing
  12228. 309.41 s [really-safe-money-gen] - else Just (fromIntegral roundedResult)
  12229. 309.41 s [really-safe-money-gen] + if roundedResult > maxBoundN
  12230. 309.41 s [really-safe-money-gen] + then Nothing
  12231. 309.41 s [really-safe-money-gen] + else Just (fromIntegral roundedResult)
  12232. 309.41 s [really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12233. 309.41 s [really-safe-money-gen] LT -> RoundedDown
  12234. 309.41 s [really-safe-money-gen] EQ -> DidNotRound
  12235. 309.41 s [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAmount.hs:168:20-45
  12236. 309.41 s [really-safe-money-gen] @@ -165,7 +165,7 @@
  12237. 309.41 s [really-safe-money-gen] maxBoundN :: Natural
  12238. 309.41 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  12239. 309.41 s [really-safe-money-gen] actualResult =
  12240. 309.41 s [really-safe-money-gen] - if roundedResult > maxBoundN
  12241. 309.41 s [really-safe-money-gen] + if not (roundedResult > maxBoundN)
  12242. 309.41 s [really-safe-money-gen] then Nothing
  12243. 309.41 s [really-safe-money-gen] else Just (fromIntegral roundedResult)
  12244. 309.41 s [really-safe-money-gen] rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12245. 309.41 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
  12246. 309.41 s [really-safe-money-gen] @@ -168,10 +168,10 @@
  12247. 309.41 s [really-safe-money-gen] if roundedResult > maxBoundN
  12248. 309.41 s [really-safe-money-gen] then Nothing
  12249. 309.41 s [really-safe-money-gen] else Just (fromIntegral roundedResult)
  12250. 309.41 s [really-safe-money-gen] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12251. 309.41 s [really-safe-money-gen] - LT -> RoundedDown
  12252. 309.41 s [really-safe-money-gen] - EQ -> DidNotRound
  12253. 309.41 s [really-safe-money-gen] - GT -> RoundedUp
  12254. 309.41 s [really-safe-money-gen] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12255. 309.41 s [really-safe-money-gen] + LT -> RoundedDown
  12256. 309.41 s [really-safe-money-gen] + EQ -> DidNotRound
  12257. 309.41 s [really-safe-money-gen] + GT -> RoundedUp
  12258. 309.41 s [really-safe-money-gen] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
  12259. 309.41 s [really-safe-money-gen] )
  12260. 309.41 s [really-safe-money-gen] . Prelude.sum
  12261. 309.41 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
  12262. 309.41 s [really-safe-money-gen] @@ -168,10 +168,10 @@
  12263. 309.41 s [really-safe-money-gen] if roundedResult > maxBoundN
  12264. 309.41 s [really-safe-money-gen] then Nothing
  12265. 309.42 s [really-safe-money-gen] else Just (fromIntegral roundedResult)
  12266. 309.42 s [really-safe-money-gen] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12267. 309.42 s [really-safe-money-gen] - LT -> RoundedDown
  12268. 309.42 s [really-safe-money-gen] - EQ -> DidNotRound
  12269. 309.42 s [really-safe-money-gen] - GT -> RoundedUp
  12270. 309.42 s [really-safe-money-gen] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12271. 309.42 s [really-safe-money-gen] + LT -> RoundedDown
  12272. 309.42 s [really-safe-money-gen] + EQ -> DidNotRound
  12273. 309.42 s [really-safe-money-gen] + GT -> RoundedUp
  12274. 309.42 s [really-safe-money-gen] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
  12275. 309.42 s [really-safe-money-gen] )
  12276. 309.42 s [really-safe-money-gen] . Prelude.sum
  12277. 309.42 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:171:25-32
  12278. 309.42 s [really-safe-money-gen] @@ -168,10 +168,10 @@
  12279. 309.42 s [really-safe-money-gen] if roundedResult > maxBoundN
  12280. 309.42 s [really-safe-money-gen] then Nothing
  12281. 309.42 s [really-safe-money-gen] else Just (fromIntegral roundedResult)
  12282. 309.42 s [really-safe-money-gen] - rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12283. 309.42 s [really-safe-money-gen] - LT -> RoundedDown
  12284. 309.42 s [really-safe-money-gen] - EQ -> DidNotRound
  12285. 309.42 s [really-safe-money-gen] - GT -> RoundedUp
  12286. 309.42 s [really-safe-money-gen] + rounded = case compare (fromIntegral roundedResult) theoreticalResult of
  12287. 309.42 s [really-safe-money-gen] + LT -> RoundedDown
  12288. 309.42 s [really-safe-money-gen] + EQ -> DidNotRound
  12289. 309.42 s [really-safe-money-gen] + GT -> RoundedUp
  12290. 311.29 s [really-safe-money-gen] in (Amount.fromMinimalQuantisations <$> actualResult, rounded)
  12291. 311.37 s [really-safe-money-gen] )
  12292. 311.37 s [really-safe-money-gen] . Prelude.sum
  12293. 311.37 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:119:12-28
  12294. 311.37 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  12295. 311.37 s [really-safe-money-gen] Just a -> do
  12296. 311.37 s [really-safe-money-gen] r <- Amount.subtract a amount
  12297. 311.37 s [really-safe-money-gen] Just $
  12298. 311.37 s [really-safe-money-gen] - if r == Amount.zero
  12299. 311.37 s [really-safe-money-gen] + if True
  12300. 311.37 s [really-safe-money-gen] then M.delete currency m
  12301. 311.37 s [really-safe-money-gen] else M.insert currency r m
  12302. 311.37 s [really-safe-money-gen]
  12303. 311.37 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:106:12-28
  12304. 311.37 s [really-safe-money-gen] @@ -103,7 +103,7 @@
  12305. 311.37 s [really-safe-money-gen] Just a -> do
  12306. 311.37 s [really-safe-money-gen] r <- Amount.add a amount
  12307. 311.37 s [really-safe-money-gen] Just $
  12308. 311.37 s [really-safe-money-gen] - if r == Amount.zero
  12309. 311.37 s [really-safe-money-gen] + if True
  12310. 311.37 s [really-safe-money-gen] then M.delete currency m
  12311. 311.37 s [really-safe-money-gen] else M.insert currency r m
  12312. 311.37 s [really-safe-money-gen]
  12313. 311.37 s [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAmount.hs:73:6-27
  12314. 311.37 s [really-safe-money-gen] @@ -70,7 +70,7 @@
  12315. 311.37 s [really-safe-money-gen]
  12316. 311.37 s [really-safe-money-gen] fromAmount :: currency -> Amount -> MultiAmount currency
  12317. 311.37 s [really-safe-money-gen] fromAmount currency amount =
  12318. 311.37 s [really-safe-money-gen] - if amount == Amount.zero
  12319. 311.38 s [really-safe-money-gen] + if not (amount == Amount.zero)
  12320. 311.38 s [really-safe-money-gen] then zero
  12321. 311.38 s [really-safe-money-gen] else MultiAmount $ M.singleton currency amount
  12322. 311.38 s [really-safe-money-gen]
  12323. 311.38 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:101:22-37
  12324. 311.38 s [really-safe-money-gen] @@ -98,14 +98,14 @@
  12325. 311.38 s [really-safe-money-gen] addAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  12326. 311.38 s [really-safe-money-gen] addAmount m _ (Amount 0) = Just m
  12327. 311.38 s [really-safe-money-gen] addAmount (MultiAmount m) currency amount =
  12328. 311.38 s [really-safe-money-gen] - fmap MultiAmount $ case M.lookup currency m of
  12329. 311.38 s [really-safe-money-gen] - Nothing -> Just $ M.insert currency amount m
  12330. 311.38 s [really-safe-money-gen] - Just a -> do
  12331. 311.38 s [really-safe-money-gen] - r <- Amount.add a amount
  12332. 311.38 s [really-safe-money-gen] - Just $
  12333. 311.38 s [really-safe-money-gen] - if r == Amount.zero
  12334. 311.38 s [really-safe-money-gen] - then M.delete currency m
  12335. 311.38 s [really-safe-money-gen] - else M.insert currency r m
  12336. 311.38 s [really-safe-money-gen] + fmap MultiAmount $ case M.lookup currency m of
  12337. 311.38 s [really-safe-money-gen] + Nothing -> Just $ M.insert currency amount m
  12338. 311.38 s [really-safe-money-gen] + Just a -> do
  12339. 311.38 s [really-safe-money-gen] + r <- Amount.add a amount
  12340. 311.38 s [really-safe-money-gen] + Just $
  12341. 311.38 s [really-safe-money-gen] + if r == Amount.zero
  12342. 311.38 s [really-safe-money-gen] + then M.delete currency m
  12343. 311.38 s [really-safe-money-gen] + else M.insert currency r m
  12344. 311.38 s [really-safe-money-gen]
  12345. 311.38 s [really-safe-money-gen] -- | Subtract an 'Amount' from a 'MultiAmount'
  12346. 311.38 s [really-safe-money-gen] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  12347. 311.38 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/MultiAmount.hs:106:9-37
  12348. 311.38 s [really-safe-money-gen] @@ -103,9 +103,9 @@
  12349. 311.38 s [really-safe-money-gen] Just a -> do
  12350. 311.38 s [really-safe-money-gen] r <- Amount.add a amount
  12351. 311.38 s [really-safe-money-gen] Just $
  12352. 311.38 s [really-safe-money-gen] - if r == Amount.zero
  12353. 311.38 s [really-safe-money-gen] - then M.delete currency m
  12354. 311.38 s [really-safe-money-gen] - else M.insert currency r m
  12355. 311.38 s [really-safe-money-gen] + if r == Amount.zero
  12356. 311.38 s [really-safe-money-gen] + then M.delete currency m
  12357. 311.38 s [really-safe-money-gen] + else M.insert currency r m
  12358. 311.38 s [really-safe-money-gen]
  12359. 311.38 s [really-safe-money-gen] -- | Subtract an 'Amount' from a 'MultiAmount'
  12360. 311.38 s [really-safe-money-gen] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  12361. 311.38 s [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAmount.hs:119:12-28
  12362. 311.38 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  12363. 311.38 s [really-safe-money-gen] Just a -> do
  12364. 311.38 s [really-safe-money-gen] r <- Amount.subtract a amount
  12365. 311.38 s [really-safe-money-gen] Just $
  12366. 311.38 s [really-safe-money-gen] - if r == Amount.zero
  12367. 311.38 s [really-safe-money-gen] + if not (r == Amount.zero)
  12368. 311.38 s [really-safe-money-gen] then M.delete currency m
  12369. 311.38 s [really-safe-money-gen] else M.insert currency r m
  12370. 311.38 s [really-safe-money-gen]
  12371. 311.38 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:114:22-37
  12372. 311.38 s [really-safe-money-gen] @@ -111,14 +111,14 @@
  12373. 311.38 s [really-safe-money-gen] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  12374. 311.38 s [really-safe-money-gen] subtractAmount m _ (Amount 0) = Just m
  12375. 311.38 s [really-safe-money-gen] subtractAmount (MultiAmount m) currency amount =
  12376. 311.38 s [really-safe-money-gen] - fmap MultiAmount $ case M.lookup currency m of
  12377. 311.38 s [really-safe-money-gen] - Nothing -> Nothing -- Can't go below zero
  12378. 311.38 s [really-safe-money-gen] - Just a -> do
  12379. 311.38 s [really-safe-money-gen] - r <- Amount.subtract a amount
  12380. 311.38 s [really-safe-money-gen] - Just $
  12381. 311.38 s [really-safe-money-gen] - if r == Amount.zero
  12382. 311.38 s [really-safe-money-gen] - then M.delete currency m
  12383. 311.38 s [really-safe-money-gen] - else M.insert currency r m
  12384. 311.38 s [really-safe-money-gen] + fmap MultiAmount $ case M.lookup currency m of
  12385. 311.38 s [really-safe-money-gen] + Nothing -> Nothing -- Can't go below zero
  12386. 311.38 s [really-safe-money-gen] + Just a -> do
  12387. 311.38 s [really-safe-money-gen] + r <- Amount.subtract a amount
  12388. 311.38 s [really-safe-money-gen] + Just $
  12389. 311.38 s [really-safe-money-gen] + if r == Amount.zero
  12390. 311.39 s [really-safe-money-gen] + then M.delete currency m
  12391. 311.39 s [really-safe-money-gen] + else M.insert currency r m
  12392. 311.39 s [really-safe-money-gen]
  12393. 311.39 s [really-safe-money-gen] -- | Try to convert every amount to one currency.
  12394. 311.39 s [really-safe-money-gen] --
  12395. 311.39 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:106:12-28
  12396. 311.39 s [really-safe-money-gen] @@ -103,7 +103,7 @@
  12397. 311.39 s [really-safe-money-gen] Just a -> do
  12398. 311.39 s [really-safe-money-gen] r <- Amount.add a amount
  12399. 311.39 s [really-safe-money-gen] Just $
  12400. 311.39 s [really-safe-money-gen] - if r == Amount.zero
  12401. 311.39 s [really-safe-money-gen] + if False
  12402. 311.39 s [really-safe-money-gen] then M.delete currency m
  12403. 311.39 s [really-safe-money-gen] else M.insert currency r m
  12404. 311.39 s [really-safe-money-gen]
  12405. 311.39 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/MultiAmount.hs:119:9-37
  12406. 311.39 s [really-safe-money-gen] @@ -116,9 +116,9 @@
  12407. 311.39 s [really-safe-money-gen] Just a -> do
  12408. 311.39 s [really-safe-money-gen] r <- Amount.subtract a amount
  12409. 311.39 s [really-safe-money-gen] Just $
  12410. 311.39 s [really-safe-money-gen] - if r == Amount.zero
  12411. 311.39 s [really-safe-money-gen] - then M.delete currency m
  12412. 311.39 s [really-safe-money-gen] - else M.insert currency r m
  12413. 311.39 s [really-safe-money-gen] + if r == Amount.zero
  12414. 311.39 s [really-safe-money-gen] + then M.delete currency m
  12415. 311.39 s [really-safe-money-gen] + else M.insert currency r m
  12416. 311.39 s [really-safe-money-gen]
  12417. 311.39 s [really-safe-money-gen] -- | Try to convert every amount to one currency.
  12418. 311.39 s [really-safe-money-gen] --
  12419. 311.39 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:119:12-28
  12420. 311.39 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  12421. 311.39 s [really-safe-money-gen] Just a -> do
  12422. 311.39 s [really-safe-money-gen] r <- Amount.subtract a amount
  12423. 311.39 s [really-safe-money-gen] Just $
  12424. 311.39 s [really-safe-money-gen] - if r == Amount.zero
  12425. 311.39 s [really-safe-money-gen] + if False
  12426. 311.39 s [really-safe-money-gen] then M.delete currency m
  12427. 311.39 s [really-safe-money-gen] else M.insert currency r m
  12428. 311.39 s [really-safe-money-gen]
  12429. 311.39 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/MultiAmount.hs:73:3-51
  12430. 311.39 s [really-safe-money-gen] @@ -70,9 +70,9 @@
  12431. 311.39 s [really-safe-money-gen]
  12432. 311.39 s [really-safe-money-gen] fromAmount :: currency -> Amount -> MultiAmount currency
  12433. 311.39 s [really-safe-money-gen] fromAmount currency amount =
  12434. 311.39 s [really-safe-money-gen] - if amount == Amount.zero
  12435. 311.39 s [really-safe-money-gen] - then zero
  12436. 311.39 s [really-safe-money-gen] - else MultiAmount $ M.singleton currency amount
  12437. 311.39 s [really-safe-money-gen] + if amount == Amount.zero
  12438. 311.39 s [really-safe-money-gen] + then zero
  12439. 311.39 s [really-safe-money-gen] + else MultiAmount $ M.singleton currency amount
  12440. 311.39 s [really-safe-money-gen]
  12441. 311.39 s [really-safe-money-gen] -- | No money of any currency
  12442. 311.39 s [really-safe-money-gen] zero :: MultiAmount currency
  12443. 311.39 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:73:6-27
  12444. 311.39 s [really-safe-money-gen] @@ -70,7 +70,7 @@
  12445. 311.39 s [really-safe-money-gen]
  12446. 311.39 s [really-safe-money-gen] fromAmount :: currency -> Amount -> MultiAmount currency
  12447. 311.39 s [really-safe-money-gen] fromAmount currency amount =
  12448. 311.39 s [really-safe-money-gen] - if amount == Amount.zero
  12449. 311.39 s [really-safe-money-gen] + if False
  12450. 311.39 s [really-safe-money-gen] then zero
  12451. 311.39 s [really-safe-money-gen] else MultiAmount $ M.singleton currency amount
  12452. 311.39 s [really-safe-money-gen]
  12453. 311.39 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:73:6-27
  12454. 311.39 s [really-safe-money-gen] @@ -70,7 +70,7 @@
  12455. 311.39 s [really-safe-money-gen]
  12456. 311.39 s [really-safe-money-gen] fromAmount :: currency -> Amount -> MultiAmount currency
  12457. 311.39 s [really-safe-money-gen] fromAmount currency amount =
  12458. 311.39 s [really-safe-money-gen] - if amount == Amount.zero
  12459. 311.39 s [really-safe-money-gen] + if True
  12460. 311.39 s [really-safe-money-gen] then zero
  12461. 311.39 s [really-safe-money-gen] else MultiAmount $ M.singleton currency amount
  12462. 311.39 s [really-safe-money-gen]
  12463. 311.39 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:101:22-37
  12464. 311.39 s [really-safe-money-gen] @@ -98,14 +98,14 @@
  12465. 311.39 s [really-safe-money-gen] addAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  12466. 311.39 s [really-safe-money-gen] addAmount m _ (Amount 0) = Just m
  12467. 311.39 s [really-safe-money-gen] addAmount (MultiAmount m) currency amount =
  12468. 311.39 s [really-safe-money-gen] - fmap MultiAmount $ case M.lookup currency m of
  12469. 311.39 s [really-safe-money-gen] - Nothing -> Just $ M.insert currency amount m
  12470. 311.39 s [really-safe-money-gen] - Just a -> do
  12471. 311.39 s [really-safe-money-gen] - r <- Amount.add a amount
  12472. 311.39 s [really-safe-money-gen] - Just $
  12473. 311.39 s [really-safe-money-gen] - if r == Amount.zero
  12474. 311.39 s [really-safe-money-gen] - then M.delete currency m
  12475. 311.39 s [really-safe-money-gen] - else M.insert currency r m
  12476. 311.39 s [really-safe-money-gen] + fmap MultiAmount $ case M.lookup currency m of
  12477. 311.39 s [really-safe-money-gen] + Nothing -> Just $ M.insert currency amount m
  12478. 311.39 s [really-safe-money-gen] + Just a -> do
  12479. 311.39 s [really-safe-money-gen] + r <- Amount.add a amount
  12480. 311.39 s [really-safe-money-gen] + Just $
  12481. 311.39 s [really-safe-money-gen] + if r == Amount.zero
  12482. 311.39 s [really-safe-money-gen] + then M.delete currency m
  12483. 311.39 s [really-safe-money-gen] + else M.insert currency r m
  12484. 311.39 s [really-safe-money-gen]
  12485. 311.39 s [really-safe-money-gen] -- | Subtract an 'Amount' from a 'MultiAmount'
  12486. 311.39 s [really-safe-money-gen] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  12487. 311.39 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/MultiAmount.hs:114:22-37
  12488. 311.40 s [really-safe-money-gen] @@ -111,14 +111,14 @@
  12489. 311.40 s [really-safe-money-gen] subtractAmount :: (Ord currency) => MultiAmount currency -> currency -> Amount -> Maybe (MultiAmount currency)
  12490. 311.40 s [really-safe-money-gen] subtractAmount m _ (Amount 0) = Just m
  12491. 311.40 s [really-safe-money-gen] subtractAmount (MultiAmount m) currency amount =
  12492. 311.40 s [really-safe-money-gen] - fmap MultiAmount $ case M.lookup currency m of
  12493. 311.40 s [really-safe-money-gen] - Nothing -> Nothing -- Can't go below zero
  12494. 311.40 s [really-safe-money-gen] - Just a -> do
  12495. 311.40 s [really-safe-money-gen] - r <- Amount.subtract a amount
  12496. 311.40 s [really-safe-money-gen] - Just $
  12497. 311.40 s [really-safe-money-gen] - if r == Amount.zero
  12498. 311.40 s [really-safe-money-gen] - then M.delete currency m
  12499. 311.40 s [really-safe-money-gen] - else M.insert currency r m
  12500. 311.40 s [really-safe-money-gen] + fmap MultiAmount $ case M.lookup currency m of
  12501. 311.40 s [really-safe-money-gen] + Nothing -> Nothing -- Can't go below zero
  12502. 311.40 s [really-safe-money-gen] + Just a -> do
  12503. 311.40 s [really-safe-money-gen] + r <- Amount.subtract a amount
  12504. 311.40 s [really-safe-money-gen] + Just $
  12505. 311.40 s [really-safe-money-gen] + if r == Amount.zero
  12506. 311.40 s [really-safe-money-gen] + then M.delete currency m
  12507. 311.40 s [really-safe-money-gen] + else M.insert currency r m
  12508. 311.40 s [really-safe-money-gen]
  12509. 311.40 s [really-safe-money-gen] -- | Try to convert every amount to one currency.
  12510. 311.40 s [really-safe-money-gen] --
  12511. 311.40 s [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAmount.hs:106:12-28
  12512. 311.40 s [really-safe-money-gen] @@ -103,7 +103,7 @@
  12513. 311.40 s [really-safe-money-gen] Just a -> do
  12514. 311.40 s [really-safe-money-gen] r <- Amount.add a amount
  12515. 311.40 s [really-safe-money-gen] Just $
  12516. 311.40 s [really-safe-money-gen] - if r == Amount.zero
  12517. 311.40 s [really-safe-money-gen] + if not (r == Amount.zero)
  12518. 311.40 s [really-safe-money-gen] then M.delete currency m
  12519. 311.40 s [really-safe-money-gen] else M.insert currency r m
  12520. 311.40 s [really-safe-money-gen]
  12521. 311.40 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:66:13-29
  12522. 311.40 s [really-safe-money-gen] @@ -63,7 +63,7 @@
  12523. 311.40 s [really-safe-money-gen] [ genericValidate ma,
  12524. 311.40 s [really-safe-money-gen] decorateMap m $ \_ a ->
  12525. 311.40 s [really-safe-money-gen] declare "The amount is not zero" $
  12526. 311.40 s [really-safe-money-gen] - a /= Amount.zero
  12527. 311.40 s [really-safe-money-gen] + True
  12528. 311.40 s [really-safe-money-gen] ]
  12529. 311.40 s [really-safe-money-gen]
  12530. 311.40 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  12531. 311.40 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:66:13-29
  12532. 311.40 s [really-safe-money-gen] @@ -63,7 +63,7 @@
  12533. 311.40 s [really-safe-money-gen] [ genericValidate ma,
  12534. 311.40 s [really-safe-money-gen] decorateMap m $ \_ a ->
  12535. 311.40 s [really-safe-money-gen] declare "The amount is not zero" $
  12536. 314.01 s [really-safe-money-gen] - a /= Amount.zero
  12537. 314.01 s [really-safe-money-gen] + False
  12538. 314.02 s [really-safe-money-gen] ]
  12539. 314.02 s [really-safe-money-gen]
  12540. 314.02 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  12541. 314.02 s [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAmount.hs:66:13-29
  12542. 314.02 s [really-safe-money-gen] @@ -63,7 +63,7 @@
  12543. 314.02 s [really-safe-money-gen] [ genericValidate ma,
  12544. 314.02 s [really-safe-money-gen] decorateMap m $ \_ a ->
  12545. 314.02 s [really-safe-money-gen] declare "The amount is not zero" $
  12546. 314.02 s [really-safe-money-gen] - a /= Amount.zero
  12547. 314.02 s [really-safe-money-gen] + not (a /= Amount.zero)
  12548. 314.02 s [really-safe-money-gen] ]
  12549. 314.02 s [really-safe-money-gen]
  12550. 314.02 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  12551. 314.02 s [really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAmount.hs:63:7-8
  12552. 314.02 s [really-safe-money-gen] @@ -60,11 +60,7 @@
  12553. 314.02 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
  12554. 314.02 s [really-safe-money-gen] validate ma@(MultiAmount m) =
  12555. 314.02 s [really-safe-money-gen] mconcat
  12556. 314.02 s [really-safe-money-gen] - [ genericValidate ma,
  12557. 314.02 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  12558. 314.02 s [really-safe-money-gen] - declare "The amount is not zero" $
  12559. 314.02 s [really-safe-money-gen] - a /= Amount.zero
  12560. 314.02 s [really-safe-money-gen] - ]
  12561. 314.02 s [really-safe-money-gen] + []
  12562. 314.02 s [really-safe-money-gen]
  12563. 314.02 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  12564. 314.02 s [really-safe-money-gen]
  12565. 314.02 s [really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAmount.hs:63:7-8
  12566. 314.03 s [really-safe-money-gen] @@ -60,11 +60,11 @@
  12567. 314.03 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
  12568. 314.03 s [really-safe-money-gen] validate ma@(MultiAmount m) =
  12569. 314.03 s [really-safe-money-gen] mconcat
  12570. 314.03 s [really-safe-money-gen] - [ genericValidate ma,
  12571. 314.03 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  12572. 314.03 s [really-safe-money-gen] - declare "The amount is not zero" $
  12573. 314.03 s [really-safe-money-gen] - a /= Amount.zero
  12574. 314.03 s [really-safe-money-gen] - ]
  12575. 314.03 s [really-safe-money-gen] + [ genericValidate ma,
  12576. 314.03 s [really-safe-money-gen] + decorateMap m $ \_ a ->
  12577. 314.03 s [really-safe-money-gen] + declare "The amount is not zero" $
  12578. 314.03 s [really-safe-money-gen] + a /= Amount.zero
  12579. 314.03 s [really-safe-money-gen] + ]
  12580. 314.03 s [really-safe-money-gen]
  12581. 314.03 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  12582. 314.03 s [really-safe-money-gen]
  12583. 314.03 s [really-safe-money-gen] Testing mutation BoolLit at src/Numeric/DecimalLiteral.hs:396:23-27
  12584. 314.03 s [really-safe-money-gen] @@ -393,5 +393,5 @@
  12585. 314.03 s [really-safe-money-gen] DecimalLiteral mS m e -> DecimalLiteral (go mS) m e
  12586. 314.03 s [really-safe-money-gen] where
  12587. 314.03 s [really-safe-money-gen] go = \case
  12588. 314.03 s [really-safe-money-gen] - Nothing -> Just True
  12589. 314.03 s [really-safe-money-gen] + Nothing -> Just False
  12590. 314.03 s [really-safe-money-gen] s -> s
  12591. 314.03 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:368:10-39
  12592. 314.03 s [really-safe-money-gen] @@ -365,7 +365,7 @@
  12593. 314.03 s [really-safe-money-gen] setMinimumDigits wantedDigits dl =
  12594. 314.03 s [really-safe-money-gen] let currentDigits :: Word8
  12595. 314.03 s [really-safe-money-gen] currentDigits = digits dl
  12596. 314.03 s [really-safe-money-gen] - in if wantedDigits <= currentDigits
  12597. 314.03 s [really-safe-money-gen] + in if True
  12598. 314.03 s [really-safe-money-gen] then dl
  12599. 314.03 s [really-safe-money-gen] else increaseDigits (wantedDigits - currentDigits) dl
  12600. 314.03 s [really-safe-money-gen] where
  12601. 314.03 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:368:10-39
  12602. 314.03 s [really-safe-money-gen] @@ -365,7 +365,7 @@
  12603. 314.03 s [really-safe-money-gen] setMinimumDigits wantedDigits dl =
  12604. 314.03 s [really-safe-money-gen] let currentDigits :: Word8
  12605. 314.03 s [really-safe-money-gen] currentDigits = digits dl
  12606. 314.03 s [really-safe-money-gen] - in if wantedDigits <= currentDigits
  12607. 314.03 s [really-safe-money-gen] + in if False
  12608. 314.03 s [really-safe-money-gen] then dl
  12609. 314.03 s [really-safe-money-gen] else increaseDigits (wantedDigits - currentDigits) dl
  12610. 314.03 s [really-safe-money-gen] where
  12611. 314.03 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:368:10-39
  12612. 314.03 s [really-safe-money-gen] @@ -365,7 +365,7 @@
  12613. 314.03 s [really-safe-money-gen] setMinimumDigits wantedDigits dl =
  12614. 314.03 s [really-safe-money-gen] let currentDigits :: Word8
  12615. 314.03 s [really-safe-money-gen] currentDigits = digits dl
  12616. 314.03 s [really-safe-money-gen] - in if wantedDigits <= currentDigits
  12617. 314.03 s [really-safe-money-gen] + in if not (wantedDigits <= currentDigits)
  12618. 314.03 s [really-safe-money-gen] then dl
  12619. 314.03 s [really-safe-money-gen] else increaseDigits (wantedDigits - currentDigits) dl
  12620. 314.04 s [really-safe-money-gen] where
  12621. 314.04 s [really-safe-money-gen] Testing mutation CondFlip at src/Numeric/DecimalLiteral.hs:368:7-62
  12622. 314.04 s [really-safe-money-gen] @@ -365,9 +365,9 @@
  12623. 314.04 s [really-safe-money-gen] setMinimumDigits wantedDigits dl =
  12624. 314.04 s [really-safe-money-gen] let currentDigits :: Word8
  12625. 314.04 s [really-safe-money-gen] currentDigits = digits dl
  12626. 314.04 s [really-safe-money-gen] - in if wantedDigits <= currentDigits
  12627. 314.04 s [really-safe-money-gen] - then dl
  12628. 314.04 s [really-safe-money-gen] - else increaseDigits (wantedDigits - currentDigits) dl
  12629. 314.04 s [really-safe-money-gen] + in if wantedDigits <= currentDigits
  12630. 314.04 s [really-safe-money-gen] + then dl
  12631. 314.04 s [really-safe-money-gen] + else increaseDigits (wantedDigits - currentDigits) dl
  12632. 314.04 s [really-safe-money-gen] where
  12633. 314.04 s [really-safe-money-gen] increaseDigits :: Word8 -> DecimalLiteral -> DecimalLiteral
  12634. 314.04 s [really-safe-money-gen] increaseDigits 0 = id
  12635. 314.04 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:375:80-82
  12636. 314.04 s [really-safe-money-gen] @@ -372,7 +372,7 @@
  12637. 314.04 s [really-safe-money-gen] increaseDigits :: Word8 -> DecimalLiteral -> DecimalLiteral
  12638. 314.04 s [really-safe-money-gen] increaseDigits 0 = id
  12639. 314.04 s [really-safe-money-gen] increaseDigits w = \case
  12640. 314.04 s [really-safe-money-gen] - DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 10) (succ e))
  12641. 314.04 s [really-safe-money-gen] + DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 0) (succ e))
  12642. 314.04 s [really-safe-money-gen]
  12643. 314.04 s [really-safe-money-gen] -- | Ensures that a positive literal has no sign
  12644. 314.04 s [really-safe-money-gen] --
  12645. 314.04 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:337:21-22
  12646. 314.04 s [really-safe-money-gen] @@ -334,7 +334,7 @@
  12647. 314.04 s [really-safe-money-gen] pure $ fromIntegral n
  12648. 314.04 s [really-safe-money-gen]
  12649. 314.04 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  12650. 314.04 s [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False
  12651. 314.04 s [really-safe-money-gen] +numSign a = if a >= 1 then Nothing else Just False
  12652. 314.04 s [really-safe-money-gen]
  12653. 314.04 s [really-safe-money-gen] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  12654. 314.04 s [really-safe-money-gen] signSignum = \case
  12655. 314.04 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:375:80-82
  12656. 314.04 s [really-safe-money-gen] @@ -372,7 +372,7 @@
  12657. 314.04 s [really-safe-money-gen] increaseDigits :: Word8 -> DecimalLiteral -> DecimalLiteral
  12658. 314.04 s [really-safe-money-gen] increaseDigits 0 = id
  12659. 314.04 s [really-safe-money-gen] increaseDigits w = \case
  12660. 314.04 s [really-safe-money-gen] - DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 10) (succ e))
  12661. 314.04 s [really-safe-money-gen] + DecimalLiteral mS m e -> increaseDigits (pred w) (DecimalLiteral mS (m * 1) (succ e))
  12662. 314.04 s [really-safe-money-gen]
  12663. 314.04 s [really-safe-money-gen] -- | Ensures that a positive literal has no sign
  12664. 314.04 s [really-safe-money-gen] --
  12665. 314.04 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:337:16-22
  12666. 314.04 s [really-safe-money-gen] @@ -334,7 +334,7 @@
  12667. 314.04 s [really-safe-money-gen] pure $ fromIntegral n
  12668. 314.04 s [really-safe-money-gen]
  12669. 314.04 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  12670. 314.04 s [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False
  12671. 314.04 s [really-safe-money-gen] +numSign a = if False then Nothing else Just False
  12672. 314.04 s [really-safe-money-gen]
  12673. 314.04 s [really-safe-money-gen] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  12674. 314.04 s [really-safe-money-gen] signSignum = \case
  12675. 314.04 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:337:16-22
  12676. 314.04 s [really-safe-money-gen] @@ -334,7 +334,7 @@
  12677. 314.04 s [really-safe-money-gen] pure $ fromIntegral n
  12678. 314.04 s [really-safe-money-gen]
  12679. 314.04 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  12680. 314.04 s [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False
  12681. 314.04 s [really-safe-money-gen] +numSign a = if True then Nothing else Just False
  12682. 314.04 s [really-safe-money-gen]
  12683. 314.04 s [really-safe-money-gen] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  12684. 314.04 s [really-safe-money-gen] signSignum = \case
  12685. 314.04 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:337:16-22
  12686. 314.04 s [really-safe-money-gen] @@ -334,7 +334,7 @@
  12687. 314.04 s [really-safe-money-gen] pure $ fromIntegral n
  12688. 314.04 s [really-safe-money-gen]
  12689. 314.04 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  12690. 314.04 s [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False
  12691. 314.04 s [really-safe-money-gen] +numSign a = if not (a >= 0) then Nothing else Just False
  12692. 314.04 s [really-safe-money-gen]
  12693. 314.04 s [really-safe-money-gen] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  12694. 314.04 s [really-safe-money-gen] signSignum = \case
  12695. 314.04 s [really-safe-money-gen] Testing mutation BoolLit at src/Numeric/DecimalLiteral.hs:337:46-51
  12696. 314.04 s [really-safe-money-gen] @@ -334,7 +334,7 @@
  12697. 314.04 s [really-safe-money-gen] pure $ fromIntegral n
  12698. 314.04 s [really-safe-money-gen]
  12699. 314.04 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  12700. 314.04 s [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False
  12701. 314.04 s [really-safe-money-gen] +numSign a = if a >= 0 then Nothing else Just True
  12702. 314.04 s [really-safe-money-gen]
  12703. 314.04 s [really-safe-money-gen] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  12704. 314.04 s [really-safe-money-gen] signSignum = \case
  12705. 314.04 s [really-safe-money-gen] Testing mutation CondFlip at src/Numeric/DecimalLiteral.hs:337:13-51
  12706. 314.04 s [really-safe-money-gen] @@ -334,7 +334,7 @@
  12707. 314.04 s [really-safe-money-gen] pure $ fromIntegral n
  12708. 314.04 s [really-safe-money-gen]
  12709. 314.04 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  12710. 314.04 s [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False
  12711. 314.04 s [really-safe-money-gen] +numSign a = if a >= 0 then Nothing else Just False
  12712. 314.04 s [really-safe-money-gen]
  12713. 314.04 s [really-safe-money-gen] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  12714. 314.04 s [really-safe-money-gen] signSignum = \case
  12715. 314.04 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:332:11-46
  12716. 314.04 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  12717. 314.04 s [really-safe-money-gen] toInt :: DecimalLiteral -> Maybe Int
  12718. 314.04 s [really-safe-money-gen] toInt dl = do
  12719. 314.04 s [really-safe-money-gen] n <- toInteger dl
  12720. 314.04 s [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Int)
  12721. 314.04 s [really-safe-money-gen] + guard $ not (n <= fromIntegral (maxBound :: Int))
  12722. 314.04 s [really-safe-money-gen] guard $ n >= fromIntegral (minBound :: Int)
  12723. 314.04 s [really-safe-money-gen] pure $ fromIntegral n
  12724. 314.04 s [really-safe-money-gen]
  12725. 314.04 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46
  12726. 314.04 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  12727. 314.04 s [really-safe-money-gen] toInt :: DecimalLiteral -> Maybe Int
  12728. 314.04 s [really-safe-money-gen] toInt dl = do
  12729. 314.04 s [really-safe-money-gen] n <- toInteger dl
  12730. 314.04 s [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Int)
  12731. 314.05 s [really-safe-money-gen] + guard $ False
  12732. 314.05 s [really-safe-money-gen] guard $ n >= fromIntegral (minBound :: Int)
  12733. 314.05 s [really-safe-money-gen] pure $ fromIntegral n
  12734. 314.05 s [really-safe-money-gen]
  12735. 314.05 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46
  12736. 314.05 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  12737. 314.05 s [really-safe-money-gen] toInt :: DecimalLiteral -> Maybe Int
  12738. 314.05 s [really-safe-money-gen] toInt dl = do
  12739. 314.05 s [really-safe-money-gen] n <- toInteger dl
  12740. 314.05 s [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Int)
  12741. 314.05 s [really-safe-money-gen] + guard $ True
  12742. 314.05 s [really-safe-money-gen] guard $ n >= fromIntegral (minBound :: Int)
  12743. 314.05 s [really-safe-money-gen] pure $ fromIntegral n
  12744. 314.05 s [really-safe-money-gen]
  12745. 314.05 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46
  12746. 314.05 s [really-safe-money-gen] @@ -330,7 +330,7 @@
  12747. 314.05 s [really-safe-money-gen] toInt dl = do
  12748. 314.05 s [really-safe-money-gen] n <- toInteger dl
  12749. 314.05 s [really-safe-money-gen] guard $ n <= fromIntegral (maxBound :: Int)
  12750. 314.05 s [really-safe-money-gen] - guard $ n >= fromIntegral (minBound :: Int)
  12751. 314.05 s [really-safe-money-gen] + guard $ True
  12752. 314.05 s [really-safe-money-gen] pure $ fromIntegral n
  12753. 314.05 s [really-safe-money-gen]
  12754. 314.05 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  12755. 314.05 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46
  12756. 314.05 s [really-safe-money-gen] @@ -330,7 +330,7 @@
  12757. 314.05 s [really-safe-money-gen] toInt dl = do
  12758. 314.05 s [really-safe-money-gen] n <- toInteger dl
  12759. 314.05 s [really-safe-money-gen] guard $ n <= fromIntegral (maxBound :: Int)
  12760. 314.05 s [really-safe-money-gen] - guard $ n >= fromIntegral (minBound :: Int)
  12761. 314.05 s [really-safe-money-gen] + guard $ False
  12762. 314.05 s [really-safe-money-gen] pure $ fromIntegral n
  12763. 314.05 s [really-safe-money-gen]
  12764. 314.05 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  12765. 314.05 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:333:11-46
  12766. 314.05 s [really-safe-money-gen] @@ -330,7 +330,7 @@
  12767. 314.05 s [really-safe-money-gen] toInt dl = do
  12768. 314.05 s [really-safe-money-gen] n <- toInteger dl
  12769. 314.05 s [really-safe-money-gen] guard $ n <= fromIntegral (maxBound :: Int)
  12770. 314.05 s [really-safe-money-gen] - guard $ n >= fromIntegral (minBound :: Int)
  12771. 314.05 s [really-safe-money-gen] + guard $ not (n >= fromIntegral (minBound :: Int))
  12772. 314.05 s [really-safe-money-gen] pure $ fromIntegral n
  12773. 314.05 s [really-safe-money-gen]
  12774. 314.05 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  12775. 314.05 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:315:67-68
  12776. 314.05 s [really-safe-money-gen] @@ -312,7 +312,7 @@
  12777. 314.05 s [really-safe-money-gen]
  12778. 315.80 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from an 'Integer'
  12779. 315.80 s [really-safe-money-gen] fromInteger :: Integer -> DecimalLiteral
  12780. 315.80 s [really-safe-money-gen] -fromInteger n = DecimalLiteral (numSign n) (fromIntegral (abs n)) 0
  12781. 315.80 s [really-safe-money-gen] +fromInteger n = DecimalLiteral (numSign n) (fromIntegral (abs n)) 1
  12782. 315.80 s [really-safe-money-gen]
  12783. 315.80 s [really-safe-money-gen] -- | Turn a 'DecimalLiteral' into an 'Integer'
  12784. 315.80 s [really-safe-money-gen] toInteger :: DecimalLiteral -> Maybe Integer
  12785. 315.80 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47
  12786. 315.80 s [really-safe-money-gen] @@ -296,7 +296,7 @@
  12787. 315.80 s [really-safe-money-gen] toWord :: DecimalLiteral -> Maybe Word
  12788. 315.81 s [really-safe-money-gen] toWord dl = do
  12789. 315.81 s [really-safe-money-gen] n <- toNatural dl
  12790. 315.81 s [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Word)
  12791. 315.81 s [really-safe-money-gen] + guard $ True
  12792. 315.81 s [really-safe-money-gen] pure $ fromIntegral n
  12793. 315.81 s [really-safe-money-gen]
  12794. 315.81 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Natural'
  12795. 315.81 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47
  12796. 315.81 s [really-safe-money-gen] @@ -296,7 +296,7 @@
  12797. 315.81 s [really-safe-money-gen] toWord :: DecimalLiteral -> Maybe Word
  12798. 315.81 s [really-safe-money-gen] toWord dl = do
  12799. 315.81 s [really-safe-money-gen] n <- toNatural dl
  12800. 315.81 s [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Word)
  12801. 315.81 s [really-safe-money-gen] + guard $ False
  12802. 315.81 s [really-safe-money-gen] pure $ fromIntegral n
  12803. 315.81 s [really-safe-money-gen]
  12804. 315.81 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Natural'
  12805. 315.81 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:299:11-47
  12806. 315.81 s [really-safe-money-gen] @@ -296,7 +296,7 @@
  12807. 315.81 s [really-safe-money-gen] toWord :: DecimalLiteral -> Maybe Word
  12808. 315.81 s [really-safe-money-gen] toWord dl = do
  12809. 315.81 s [really-safe-money-gen] n <- toNatural dl
  12810. 315.81 s [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Word)
  12811. 315.81 s [really-safe-money-gen] + guard $ not (n <= fromIntegral (maxBound :: Word))
  12812. 315.81 s [really-safe-money-gen] pure $ fromIntegral n
  12813. 315.81 s [really-safe-money-gen]
  12814. 315.81 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Natural'
  12815. 315.81 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  12816. 315.81 s [really-safe-money-gen] @@ -286,7 +286,7 @@
  12817. 315.81 s [really-safe-money-gen] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  12818. 315.81 s [really-safe-money-gen] toRatio (DecimalLiteral mSign m e) = case mSign of
  12819. 315.81 s [really-safe-money-gen] Just False -> Nothing
  12820. 315.81 s [really-safe-money-gen] - _ -> Just $ fromIntegral m / (10 ^ e)
  12821. 315.81 s [really-safe-money-gen] + _ -> Just $ fromIntegral m / (0 ^ e)
  12822. 315.81 s [really-safe-money-gen]
  12823. 315.81 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Word'
  12824. 315.81 s [really-safe-money-gen] fromWord :: Word -> DecimalLiteral
  12825. 315.81 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  12826. 315.81 s [really-safe-money-gen] @@ -286,7 +286,7 @@
  12827. 315.81 s [really-safe-money-gen] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  12828. 315.81 s [really-safe-money-gen] toRatio (DecimalLiteral mSign m e) = case mSign of
  12829. 315.82 s [really-safe-money-gen] Just False -> Nothing
  12830. 315.82 s [really-safe-money-gen] - _ -> Just $ fromIntegral m / (10 ^ e)
  12831. 315.82 s [really-safe-money-gen] + _ -> Just $ fromIntegral m / (1 ^ e)
  12832. 315.82 s [really-safe-money-gen]
  12833. 315.82 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Word'
  12834. 315.82 s [really-safe-money-gen] fromWord :: Word -> DecimalLiteral
  12835. 315.82 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  12836. 315.82 s [really-safe-money-gen] @@ -286,7 +286,7 @@
  12837. 315.82 s [really-safe-money-gen] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  12838. 315.82 s [really-safe-money-gen] toRatio (DecimalLiteral mSign m e) = case mSign of
  12839. 315.82 s [really-safe-money-gen] Just False -> Nothing
  12840. 315.82 s [really-safe-money-gen] - _ -> Just $ fromIntegral m / (10 ^ e)
  12841. 315.82 s [really-safe-money-gen] + _ -> Just $ fromIntegral m / (-10 ^ e)
  12842. 315.82 s [really-safe-money-gen]
  12843. 315.82 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Word'
  12844. 315.82 s [really-safe-money-gen] fromWord :: Word -> DecimalLiteral
  12845. 315.82 s [really-safe-money-gen] Testing mutation RemoveCase at src/Numeric/DecimalLiteral.hs:287:38-40
  12846. 315.82 s [really-safe-money-gen] @@ -284,9 +284,9 @@
  12847. 315.82 s [really-safe-money-gen] -- >>> toRatio (DecimalLiteral (Just False) 3 1)
  12848. 315.82 s [really-safe-money-gen] -- Nothing
  12849. 315.82 s [really-safe-money-gen] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  12850. 315.82 s [really-safe-money-gen] -toRatio (DecimalLiteral mSign m e) = case mSign of
  12851. 315.82 s [really-safe-money-gen] - Just False -> Nothing
  12852. 315.82 s [really-safe-money-gen] - _ -> Just $ fromIntegral m / (10 ^ e)
  12853. 315.82 s [really-safe-money-gen] +toRatio (DecimalLiteral mSign m e) = case mSign of
  12854. 315.82 s [really-safe-money-gen] + Just False -> Nothing
  12855. 315.82 s [really-safe-money-gen] + _ -> Just $ fromIntegral m / (10 ^ e)
  12856. 315.82 s [really-safe-money-gen]
  12857. 315.82 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Word'
  12858. 315.82 s [really-safe-money-gen] fromWord :: Word -> DecimalLiteral
  12859. 315.82 s [really-safe-money-gen] Testing mutation RemoveCase at src/Numeric/DecimalLiteral.hs:287:38-40
  12860. 315.82 s [really-safe-money-gen] @@ -284,9 +284,9 @@
  12861. 315.82 s [really-safe-money-gen] -- >>> toRatio (DecimalLiteral (Just False) 3 1)
  12862. 315.82 s [really-safe-money-gen] -- Nothing
  12863. 315.82 s [really-safe-money-gen] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  12864. 315.82 s [really-safe-money-gen] -toRatio (DecimalLiteral mSign m e) = case mSign of
  12865. 315.82 s [really-safe-money-gen] - Just False -> Nothing
  12866. 315.82 s [really-safe-money-gen] - _ -> Just $ fromIntegral m / (10 ^ e)
  12867. 315.82 s [really-safe-money-gen] +toRatio (DecimalLiteral mSign m e) = case mSign of
  12868. 315.82 s [really-safe-money-gen] + Just False -> Nothing
  12869. 315.82 s [really-safe-money-gen] + _ -> Just $ fromIntegral m / (10 ^ e)
  12870. 315.82 s [really-safe-money-gen]
  12871. 315.82 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Word'
  12872. 315.82 s [really-safe-money-gen] fromWord :: Word -> DecimalLiteral
  12873. 315.82 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44
  12874. 315.82 s [really-safe-money-gen] @@ -233,7 +233,7 @@
  12875. 315.82 s [really-safe-money-gen] -- >>> fromRatio (1 % 3)
  12876. 315.82 s [really-safe-money-gen] -- Nothing
  12877. 315.82 s [really-safe-money-gen] fromRatio :: Ratio Natural -> Maybe DecimalLiteral
  12878. 315.82 s [really-safe-money-gen] -fromRatio = fromRationalRepetendLimited 256
  12879. 315.82 s [really-safe-money-gen] +fromRatio = fromRationalRepetendLimited 0
  12880. 315.82 s [really-safe-money-gen] where
  12881. 315.82 s [really-safe-money-gen] fromRationalRepetendLimited ::
  12882. 315.82 s [really-safe-money-gen] -- limit
  12883. 315.82 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44
  12884. 315.82 s [really-safe-money-gen] @@ -233,7 +233,7 @@
  12885. 315.82 s [really-safe-money-gen] -- >>> fromRatio (1 % 3)
  12886. 315.82 s [really-safe-money-gen] -- Nothing
  12887. 315.82 s [really-safe-money-gen] fromRatio :: Ratio Natural -> Maybe DecimalLiteral
  12888. 315.82 s [really-safe-money-gen] -fromRatio = fromRationalRepetendLimited 256
  12889. 315.82 s [really-safe-money-gen] +fromRatio = fromRationalRepetendLimited 1
  12890. 315.82 s [really-safe-money-gen] where
  12891. 315.82 s [really-safe-money-gen] fromRationalRepetendLimited ::
  12892. 315.82 s [really-safe-money-gen] -- limit
  12893. 315.82 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44
  12894. 315.82 s [really-safe-money-gen] @@ -233,7 +233,7 @@
  12895. 315.82 s [really-safe-money-gen] -- >>> fromRatio (1 % 3)
  12896. 315.82 s [really-safe-money-gen] -- Nothing
  12897. 315.82 s [really-safe-money-gen] fromRatio :: Ratio Natural -> Maybe DecimalLiteral
  12898. 315.82 s [really-safe-money-gen] -fromRatio = fromRationalRepetendLimited 256
  12899. 315.82 s [really-safe-money-gen] +fromRatio = fromRationalRepetendLimited -256
  12900. 315.83 s [really-safe-money-gen] where
  12901. 315.83 s [really-safe-money-gen] fromRationalRepetendLimited ::
  12902. 315.83 s [really-safe-money-gen] -- limit
  12903. 315.83 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:244:14-15
  12904. 315.83 s [really-safe-money-gen] @@ -241,7 +241,7 @@
  12905. 315.83 s [really-safe-money-gen] Ratio Natural ->
  12906. 315.83 s [really-safe-money-gen] Maybe DecimalLiteral
  12907. 315.83 s [really-safe-money-gen] fromRationalRepetendLimited l rational
  12908. 315.83 s [really-safe-money-gen] - | d == 0 = Nothing
  12909. 315.83 s [really-safe-money-gen] + | d == 1 = Nothing
  12910. 315.83 s [really-safe-money-gen] | otherwise = toLiteral Nothing <$> longDiv num
  12911. 315.83 s [really-safe-money-gen] where
  12912. 315.83 s [really-safe-money-gen] toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e)
  12913. 315.83 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:244:9-15
  12914. 315.83 s [really-safe-money-gen] @@ -241,7 +241,7 @@
  12915. 315.83 s [really-safe-money-gen] Ratio Natural ->
  12916. 315.83 s [really-safe-money-gen] Maybe DecimalLiteral
  12917. 315.83 s [really-safe-money-gen] fromRationalRepetendLimited l rational
  12918. 315.83 s [really-safe-money-gen] - | d == 0 = Nothing
  12919. 315.83 s [really-safe-money-gen] + | not (d == 0) = Nothing
  12920. 315.83 s [really-safe-money-gen] | otherwise = toLiteral Nothing <$> longDiv num
  12921. 315.83 s [really-safe-money-gen] where
  12922. 315.83 s [really-safe-money-gen] toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e)
  12923. 315.83 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:244:9-15
  12924. 315.83 s [really-safe-money-gen] @@ -241,7 +241,7 @@
  12925. 315.83 s [really-safe-money-gen] Ratio Natural ->
  12926. 315.83 s [really-safe-money-gen] Maybe DecimalLiteral
  12927. 315.83 s [really-safe-money-gen] fromRationalRepetendLimited l rational
  12928. 315.83 s [really-safe-money-gen] - | d == 0 = Nothing
  12929. 315.83 s [really-safe-money-gen] + | True = Nothing
  12930. 315.83 s [really-safe-money-gen] | otherwise = toLiteral Nothing <$> longDiv num
  12931. 315.83 s [really-safe-money-gen] where
  12932. 315.83 s [really-safe-money-gen] toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e)
  12933. 315.83 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:264:13-26
  12934. 315.83 s [really-safe-money-gen] @@ -261,7 +261,7 @@
  12935. 315.83 s [really-safe-money-gen] Just (c, e)
  12936. 315.83 s [really-safe-money-gen] longDivWithLimit !c !e ns !n
  12937. 315.83 s [really-safe-money-gen] -- If there's a repetend, we can't turn it into a decimal literal
  12938. 315.83 s [really-safe-money-gen] - | S.member n ns = Nothing
  12939. 315.83 s [really-safe-money-gen] + | True = Nothing
  12940. 315.83 s [really-safe-money-gen] -- Over the limit, stop trying
  12941. 315.83 s [really-safe-money-gen] | e >= l = Nothing
  12942. 315.83 s [really-safe-money-gen] | n < d =
  12943. 315.83 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:264:13-26
  12944. 315.83 s [really-safe-money-gen] @@ -261,7 +261,7 @@
  12945. 315.83 s [really-safe-money-gen] Just (c, e)
  12946. 315.83 s [really-safe-money-gen] longDivWithLimit !c !e ns !n
  12947. 315.83 s [really-safe-money-gen] -- If there's a repetend, we can't turn it into a decimal literal
  12948. 315.83 s [really-safe-money-gen] - | S.member n ns = Nothing
  12949. 315.83 s [really-safe-money-gen] + | not (S.member n ns) = Nothing
  12950. 315.83 s [really-safe-money-gen] -- Over the limit, stop trying
  12951. 315.83 s [really-safe-money-gen] | e >= l = Nothing
  12952. 315.83 s [really-safe-money-gen] | n < d =
  12953. 315.83 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:266:13-19
  12954. 315.83 s [really-safe-money-gen] @@ -263,7 +263,7 @@
  12955. 315.83 s [really-safe-money-gen] -- If there's a repetend, we can't turn it into a decimal literal
  12956. 315.83 s [really-safe-money-gen] | S.member n ns = Nothing
  12957. 315.83 s [really-safe-money-gen] -- Over the limit, stop trying
  12958. 315.83 s [really-safe-money-gen] - | e >= l = Nothing
  12959. 315.83 s [really-safe-money-gen] + | True = Nothing
  12960. 315.83 s [really-safe-money-gen] | n < d =
  12961. 315.83 s [really-safe-money-gen] let !ns' = S.insert n ns
  12962. 315.83 s [really-safe-money-gen] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  12963. 315.83 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:266:13-19
  12964. 315.83 s [really-safe-money-gen] @@ -263,7 +263,7 @@
  12965. 315.83 s [really-safe-money-gen] -- If there's a repetend, we can't turn it into a decimal literal
  12966. 315.83 s [really-safe-money-gen] | S.member n ns = Nothing
  12967. 315.83 s [really-safe-money-gen] -- Over the limit, stop trying
  12968. 315.83 s [really-safe-money-gen] - | e >= l = Nothing
  12969. 315.83 s [really-safe-money-gen] + | not (e >= l) = Nothing
  12970. 315.83 s [really-safe-money-gen] | n < d =
  12971. 315.83 s [really-safe-money-gen] let !ns' = S.insert n ns
  12972. 315.83 s [really-safe-money-gen] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  12973. 315.83 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:267:13-18
  12974. 315.83 s [really-safe-money-gen] @@ -264,7 +264,7 @@
  12975. 315.83 s [really-safe-money-gen] | S.member n ns = Nothing
  12976. 315.83 s [really-safe-money-gen] -- Over the limit, stop trying
  12977. 315.83 s [really-safe-money-gen] | e >= l = Nothing
  12978. 315.83 s [really-safe-money-gen] - | n < d =
  12979. 315.83 s [really-safe-money-gen] + | True =
  12980. 315.83 s [really-safe-money-gen] let !ns' = S.insert n ns
  12981. 315.83 s [really-safe-money-gen] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  12982. 315.83 s [really-safe-money-gen] | otherwise =
  12983. 315.83 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:267:13-18
  12984. 315.83 s [really-safe-money-gen] @@ -264,7 +264,7 @@
  12985. 315.83 s [really-safe-money-gen] | S.member n ns = Nothing
  12986. 315.83 s [really-safe-money-gen] -- Over the limit, stop trying
  12987. 315.83 s [really-safe-money-gen] | e >= l = Nothing
  12988. 315.83 s [really-safe-money-gen] - | n < d =
  12989. 315.83 s [really-safe-money-gen] + | not (n < d) =
  12990. 315.83 s [really-safe-money-gen] let !ns' = S.insert n ns
  12991. 315.83 s [really-safe-money-gen] in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  12992. 315.83 s [really-safe-money-gen] | otherwise =
  12993. 315.83 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:269:41-43
  12994. 315.83 s [really-safe-money-gen] @@ -266,7 +266,7 @@
  12995. 315.83 s [really-safe-money-gen] | e >= l = Nothing
  12996. 315.83 s [really-safe-money-gen] | n < d =
  12997. 315.84 s [really-safe-money-gen] let !ns' = S.insert n ns
  12998. 317.39 s [really-safe-money-gen] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  12999. 317.48 s [really-safe-money-gen] + in longDivWithLimit (c * 0) (succ e) ns' (n * 10)
  13000. 317.48 s [really-safe-money-gen] | otherwise =
  13001. 317.48 s [really-safe-money-gen] let (q, r') = n `quotRem` d
  13002. 317.48 s [really-safe-money-gen] in longDivWithLimit (c + q) e ns r'
  13003. 317.48 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:269:41-43
  13004. 317.48 s [really-safe-money-gen] @@ -266,7 +266,7 @@
  13005. 317.48 s [really-safe-money-gen] | e >= l = Nothing
  13006. 317.48 s [really-safe-money-gen] | n < d =
  13007. 317.48 s [really-safe-money-gen] let !ns' = S.insert n ns
  13008. 317.48 s [really-safe-money-gen] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  13009. 317.48 s [really-safe-money-gen] + in longDivWithLimit (c * 1) (succ e) ns' (n * 10)
  13010. 317.48 s [really-safe-money-gen] | otherwise =
  13011. 317.48 s [really-safe-money-gen] let (q, r') = n `quotRem` d
  13012. 317.48 s [really-safe-money-gen] in longDivWithLimit (c + q) e ns r'
  13013. 317.48 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:269:63-65
  13014. 317.48 s [really-safe-money-gen] @@ -266,7 +266,7 @@
  13015. 317.49 s [really-safe-money-gen] | e >= l = Nothing
  13016. 317.49 s [really-safe-money-gen] | n < d =
  13017. 317.49 s [really-safe-money-gen] let !ns' = S.insert n ns
  13018. 317.49 s [really-safe-money-gen] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  13019. 317.49 s [really-safe-money-gen] + in longDivWithLimit (c * 10) (succ e) ns' (n * 0)
  13020. 317.49 s [really-safe-money-gen] | otherwise =
  13021. 317.49 s [really-safe-money-gen] let (q, r') = n `quotRem` d
  13022. 317.49 s [really-safe-money-gen] in longDivWithLimit (c + q) e ns r'
  13023. 317.49 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:252:36-37
  13024. 317.49 s [really-safe-money-gen] @@ -249,7 +249,7 @@
  13025. 317.49 s [really-safe-money-gen] num = numerator rational
  13026. 317.49 s [really-safe-money-gen]
  13027. 317.49 s [really-safe-money-gen] longDiv :: Natural -> Maybe (Natural, Int)
  13028. 317.49 s [really-safe-money-gen] - longDiv = longDivWithLimit 0 0 S.empty
  13029. 317.49 s [really-safe-money-gen] + longDiv = longDivWithLimit 1 0 S.empty
  13030. 317.49 s [really-safe-money-gen]
  13031. 317.49 s [really-safe-money-gen] longDivWithLimit ::
  13032. 317.49 s [really-safe-money-gen] Natural ->
  13033. 317.49 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:269:63-65
  13034. 317.49 s [really-safe-money-gen] @@ -266,7 +266,7 @@
  13035. 317.49 s [really-safe-money-gen] | e >= l = Nothing
  13036. 317.49 s [really-safe-money-gen] | n < d =
  13037. 317.49 s [really-safe-money-gen] let !ns' = S.insert n ns
  13038. 317.49 s [really-safe-money-gen] - in longDivWithLimit (c * 10) (succ e) ns' (n * 10)
  13039. 317.49 s [really-safe-money-gen] + in longDivWithLimit (c * 10) (succ e) ns' (n * 1)
  13040. 317.49 s [really-safe-money-gen] | otherwise =
  13041. 317.49 s [really-safe-money-gen] let (q, r') = n `quotRem` d
  13042. 317.49 s [really-safe-money-gen] in longDivWithLimit (c + q) e ns r'
  13043. 317.49 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:252:38-39
  13044. 317.49 s [really-safe-money-gen] @@ -249,7 +249,7 @@
  13045. 317.49 s [really-safe-money-gen] num = numerator rational
  13046. 317.49 s [really-safe-money-gen]
  13047. 317.49 s [really-safe-money-gen] longDiv :: Natural -> Maybe (Natural, Int)
  13048. 317.49 s [really-safe-money-gen] - longDiv = longDivWithLimit 0 0 S.empty
  13049. 317.49 s [really-safe-money-gen] + longDiv = longDivWithLimit 0 1 S.empty
  13050. 317.49 s [really-safe-money-gen]
  13051. 317.49 s [really-safe-money-gen] longDivWithLimit ::
  13052. 317.49 s [really-safe-money-gen] Natural ->
  13053. 317.49 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:223:39-41
  13054. 317.49 s [really-safe-money-gen] @@ -220,7 +220,7 @@
  13055. 317.49 s [really-safe-money-gen] -- (-3) % 10
  13056. 317.49 s [really-safe-money-gen] toRational :: DecimalLiteral -> Rational
  13057. 317.49 s [really-safe-money-gen] toRational (DecimalLiteral mSign m e) =
  13058. 317.49 s [really-safe-money-gen] - signSignum mSign (fromIntegral m / (10 ^ e))
  13059. 317.49 s [really-safe-money-gen] + signSignum mSign (fromIntegral m / (0 ^ e))
  13060. 317.49 s [really-safe-money-gen]
  13061. 317.49 s [really-safe-money-gen] -- | Parse a 'DecimalLiteral' from a 'Ratio Natural'
  13062. 317.49 s [really-safe-money-gen] --
  13063. 317.49 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:223:39-41
  13064. 317.49 s [really-safe-money-gen] @@ -220,7 +220,7 @@
  13065. 317.49 s [really-safe-money-gen] -- (-3) % 10
  13066. 317.49 s [really-safe-money-gen] toRational :: DecimalLiteral -> Rational
  13067. 317.49 s [really-safe-money-gen] toRational (DecimalLiteral mSign m e) =
  13068. 317.49 s [really-safe-money-gen] - signSignum mSign (fromIntegral m / (10 ^ e))
  13069. 317.49 s [really-safe-money-gen] + signSignum mSign (fromIntegral m / (1 ^ e))
  13070. 317.49 s [really-safe-money-gen]
  13071. 317.49 s [really-safe-money-gen] -- | Parse a 'DecimalLiteral' from a 'Ratio Natural'
  13072. 317.49 s [really-safe-money-gen] --
  13073. 317.49 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:223:39-41
  13074. 317.49 s [really-safe-money-gen] @@ -220,7 +220,7 @@
  13075. 317.49 s [really-safe-money-gen] -- (-3) % 10
  13076. 317.49 s [really-safe-money-gen] toRational :: DecimalLiteral -> Rational
  13077. 317.49 s [really-safe-money-gen] toRational (DecimalLiteral mSign m e) =
  13078. 317.49 s [really-safe-money-gen] - signSignum mSign (fromIntegral m / (10 ^ e))
  13079. 317.49 s [really-safe-money-gen] + signSignum mSign (fromIntegral m / (-10 ^ e))
  13080. 317.49 s [really-safe-money-gen]
  13081. 317.49 s [really-safe-money-gen] -- | Parse a 'DecimalLiteral' from a 'Ratio Natural'
  13082. 317.49 s [really-safe-money-gen] --
  13083. 317.49 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:208:9-10
  13084. 317.49 s [really-safe-money-gen] @@ -205,7 +205,7 @@
  13085. 317.49 s [really-safe-money-gen] -- Nothing
  13086. 317.49 s [really-safe-money-gen] fromRational :: Rational -> Maybe DecimalLiteral
  13087. 317.49 s [really-safe-money-gen] fromRational (n :% d)
  13088. 317.49 s [really-safe-money-gen] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  13089. 317.50 s [really-safe-money-gen] + | n < 1 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  13090. 317.50 s [really-safe-money-gen] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  13091. 317.50 s [really-safe-money-gen]
  13092. 317.50 s [really-safe-money-gen] -- | Turn a 'DecimalLiteral' into a 'Rational'
  13093. 317.50 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:208:5-10
  13094. 317.50 s [really-safe-money-gen] @@ -205,7 +205,7 @@
  13095. 317.50 s [really-safe-money-gen] -- Nothing
  13096. 317.50 s [really-safe-money-gen] fromRational :: Rational -> Maybe DecimalLiteral
  13097. 317.50 s [really-safe-money-gen] fromRational (n :% d)
  13098. 317.50 s [really-safe-money-gen] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  13099. 317.50 s [really-safe-money-gen] + | not (n < 0) = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  13100. 317.50 s [really-safe-money-gen] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  13101. 317.50 s [really-safe-money-gen]
  13102. 317.50 s [really-safe-money-gen] -- | Turn a 'DecimalLiteral' into a 'Rational'
  13103. 317.50 s [really-safe-money-gen] Testing mutation BoolLit at src/Numeric/DecimalLiteral.hs:208:62-67
  13104. 317.50 s [really-safe-money-gen] @@ -205,7 +205,7 @@
  13105. 317.50 s [really-safe-money-gen] -- Nothing
  13106. 317.50 s [really-safe-money-gen] fromRational :: Rational -> Maybe DecimalLiteral
  13107. 317.50 s [really-safe-money-gen] fromRational (n :% d)
  13108. 317.50 s [really-safe-money-gen] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  13109. 317.50 s [really-safe-money-gen] + | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just True) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  13110. 317.50 s [really-safe-money-gen] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  13111. 317.50 s [really-safe-money-gen]
  13112. 317.50 s [really-safe-money-gen] -- | Turn a 'DecimalLiteral' into a 'Rational'
  13113. 317.50 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:304:42-43
  13114. 317.50 s [really-safe-money-gen] @@ -301,7 +301,7 @@
  13115. 317.50 s [really-safe-money-gen]
  13116. 317.50 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Natural'
  13117. 317.50 s [really-safe-money-gen] fromNatural :: Natural -> DecimalLiteral
  13118. 317.50 s [really-safe-money-gen] -fromNatural n = DecimalLiteral Nothing n 0
  13119. 317.50 s [really-safe-money-gen] +fromNatural n = DecimalLiteral Nothing n 1
  13120. 317.50 s [really-safe-money-gen]
  13121. 317.50 s [really-safe-money-gen] -- | Turn a 'DecimalLiteral' into a 'Natural'
  13122. 317.50 s [really-safe-money-gen] toNatural :: DecimalLiteral -> Maybe Natural
  13123. 317.50 s [really-safe-money-gen] Testing mutation ListLit at src/Numeric/DecimalLiteral.hs:186:15-25
  13124. 317.50 s [really-safe-money-gen] @@ -183,7 +183,7 @@
  13125. 317.50 s [really-safe-money-gen]
  13126. 317.50 s [really-safe-money-gen] goFrac m e = reverse (go e (reverse (show m)))
  13127. 317.50 s [really-safe-money-gen] go :: Word8 -> String -> String
  13128. 317.50 s [really-safe-money-gen] - go 0 [] = ['.', '0']
  13129. 317.50 s [really-safe-money-gen] + go 0 [] = []
  13130. 317.50 s [really-safe-money-gen] go 0 s = '.' : s
  13131. 317.50 s [really-safe-money-gen] go e [] = '0' : go (pred e) []
  13132. 317.50 s [really-safe-money-gen] go e (c : cs) = c : go (pred e) cs
  13133. 317.50 s [really-safe-money-gen] Testing mutation ListLit at src/Numeric/DecimalLiteral.hs:186:15-25
  13134. 317.50 s [really-safe-money-gen] @@ -183,7 +183,7 @@
  13135. 317.50 s [really-safe-money-gen]
  13136. 317.50 s [really-safe-money-gen] goFrac m e = reverse (go e (reverse (show m)))
  13137. 317.50 s [really-safe-money-gen] go :: Word8 -> String -> String
  13138. 317.50 s [really-safe-money-gen] - go 0 [] = ['.', '0']
  13139. 317.50 s [really-safe-money-gen] + go 0 [] = ['.', '0']
  13140. 317.50 s [really-safe-money-gen] go 0 s = '.' : s
  13141. 317.50 s [really-safe-money-gen] go e [] = '0' : go (pred e) []
  13142. 317.50 s [really-safe-money-gen] go e (c : cs) = c : go (pred e) cs
  13143. 317.50 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30
  13144. 317.50 s [really-safe-money-gen] @@ -142,7 +142,7 @@
  13145. 317.50 s [really-safe-money-gen] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  13146. 317.50 s [really-safe-money-gen] parseDigits f z = do
  13147. 317.50 s [really-safe-money-gen] c <- ReadP.satisfy Char.isDigit
  13148. 317.50 s [really-safe-money-gen] - let digit = Char.ord c - 48
  13149. 317.50 s [really-safe-money-gen] + let digit = Char.ord c - 0
  13150. 317.50 s [really-safe-money-gen] case f z digit of
  13151. 317.50 s [really-safe-money-gen] Nothing -> fail "Failed to step the first digit"
  13152. 317.50 s [really-safe-money-gen] Just a -> ReadP.look >>= go a
  13153. 317.50 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30
  13154. 317.50 s [really-safe-money-gen] @@ -142,7 +142,7 @@
  13155. 317.50 s [really-safe-money-gen] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  13156. 317.50 s [really-safe-money-gen] parseDigits f z = do
  13157. 317.50 s [really-safe-money-gen] c <- ReadP.satisfy Char.isDigit
  13158. 317.50 s [really-safe-money-gen] - let digit = Char.ord c - 48
  13159. 317.50 s [really-safe-money-gen] + let digit = Char.ord c - 1
  13160. 317.50 s [really-safe-money-gen] case f z digit of
  13161. 317.50 s [really-safe-money-gen] Nothing -> fail "Failed to step the first digit"
  13162. 317.50 s [really-safe-money-gen] Just a -> ReadP.look >>= go a
  13163. 317.50 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30
  13164. 317.50 s [really-safe-money-gen] @@ -142,7 +142,7 @@
  13165. 317.50 s [really-safe-money-gen] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  13166. 317.50 s [really-safe-money-gen] parseDigits f z = do
  13167. 317.50 s [really-safe-money-gen] c <- ReadP.satisfy Char.isDigit
  13168. 317.50 s [really-safe-money-gen] - let digit = Char.ord c - 48
  13169. 317.50 s [really-safe-money-gen] + let digit = Char.ord c - -48
  13170. 317.50 s [really-safe-money-gen] case f z digit of
  13171. 317.50 s [really-safe-money-gen] Nothing -> fail "Failed to step the first digit"
  13172. 317.50 s [really-safe-money-gen] Just a -> ReadP.look >>= go a
  13173. 317.50 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:152:9-23
  13174. 317.50 s [really-safe-money-gen] @@ -149,7 +149,7 @@
  13175. 317.50 s [really-safe-money-gen] where
  13176. 317.50 s [really-safe-money-gen] go !a [] = return a
  13177. 317.50 s [really-safe-money-gen] go !a (c : cs)
  13178. 317.50 s [really-safe-money-gen] - | Char.isDigit c = do
  13179. 317.50 s [really-safe-money-gen] + | True = do
  13180. 317.50 s [really-safe-money-gen] _ <- ReadP.get
  13181. 317.50 s [really-safe-money-gen] let digit = Char.ord c - 48
  13182. 317.50 s [really-safe-money-gen] case f a digit of
  13183. 317.50 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:152:9-23
  13184. 317.50 s [really-safe-money-gen] @@ -149,7 +149,7 @@
  13185. 317.50 s [really-safe-money-gen] where
  13186. 317.50 s [really-safe-money-gen] go !a [] = return a
  13187. 317.50 s [really-safe-money-gen] go !a (c : cs)
  13188. 317.50 s [really-safe-money-gen] - | Char.isDigit c = do
  13189. 317.50 s [really-safe-money-gen] + | not (Char.isDigit c) = do
  13190. 317.50 s [really-safe-money-gen] _ <- ReadP.get
  13191. 317.50 s [really-safe-money-gen] let digit = Char.ord c - 48
  13192. 317.50 s [really-safe-money-gen] case f a digit of
  13193. 317.50 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:208:5-10
  13194. 317.50 s [really-safe-money-gen] @@ -205,7 +205,7 @@
  13195. 317.51 s [really-safe-money-gen] -- Nothing
  13196. 317.51 s [really-safe-money-gen] fromRational :: Rational -> Maybe DecimalLiteral
  13197. 317.51 s [really-safe-money-gen] fromRational (n :% d)
  13198. 317.51 s [really-safe-money-gen] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  13199. 317.51 s [really-safe-money-gen] + | True = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  13200. 317.51 s [really-safe-money-gen] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  13201. 317.51 s [really-safe-money-gen]
  13202. 317.51 s [really-safe-money-gen] -- | Turn a 'DecimalLiteral' into a 'Rational'
  13203. 317.51 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:154:36-38
  13204. 317.51 s [really-safe-money-gen] @@ -151,7 +151,7 @@
  13205. 317.51 s [really-safe-money-gen] go !a (c : cs)
  13206. 319.49 s [really-safe-money-gen] | Char.isDigit c = do
  13207. 319.49 s [really-safe-money-gen] _ <- ReadP.get
  13208. 319.49 s [really-safe-money-gen] - let digit = Char.ord c - 48
  13209. 319.49 s [really-safe-money-gen] + let digit = Char.ord c - 0
  13210. 319.49 s [really-safe-money-gen] case f a digit of
  13211. 319.49 s [really-safe-money-gen] Nothing -> fail "Failed to step the digit"
  13212. 319.49 s [really-safe-money-gen] Just a' -> go a' cs
  13213. 319.49 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:154:36-38
  13214. 319.49 s [really-safe-money-gen] @@ -151,7 +151,7 @@
  13215. 319.49 s [really-safe-money-gen] go !a (c : cs)
  13216. 319.49 s [really-safe-money-gen] | Char.isDigit c = do
  13217. 319.49 s [really-safe-money-gen] _ <- ReadP.get
  13218. 319.49 s [really-safe-money-gen] - let digit = Char.ord c - 48
  13219. 319.49 s [really-safe-money-gen] + let digit = Char.ord c - 1
  13220. 319.49 s [really-safe-money-gen] case f a digit of
  13221. 319.49 s [really-safe-money-gen] Nothing -> fail "Failed to step the digit"
  13222. 319.50 s [really-safe-money-gen] Just a' -> go a' cs
  13223. 319.50 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:154:36-38
  13224. 319.50 s [really-safe-money-gen] @@ -151,7 +151,7 @@
  13225. 319.50 s [really-safe-money-gen] go !a (c : cs)
  13226. 319.50 s [really-safe-money-gen] | Char.isDigit c = do
  13227. 319.50 s [really-safe-money-gen] _ <- ReadP.get
  13228. 319.50 s [really-safe-money-gen] - let digit = Char.ord c - 48
  13229. 319.50 s [really-safe-money-gen] + let digit = Char.ord c - -48
  13230. 319.50 s [really-safe-money-gen] case f a digit of
  13231. 319.50 s [really-safe-money-gen] Nothing -> fail "Failed to step the digit"
  13232. 319.50 s [really-safe-money-gen] Just a' -> go a' cs
  13233. 319.50 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:139:27-29
  13234. 319.50 s [really-safe-money-gen] @@ -136,7 +136,7 @@
  13235. 319.50 s [really-safe-money-gen] stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  13236. 319.50 s [really-safe-money-gen]
  13237. 319.50 s [really-safe-money-gen] step :: Natural -> Int -> Maybe Natural
  13238. 319.50 s [really-safe-money-gen] -step a digit = Just $ a * 10 + fromIntegral digit
  13239. 319.50 s [really-safe-money-gen] +step a digit = Just $ a * 0 + fromIntegral digit
  13240. 319.50 s [really-safe-money-gen] {-# INLINE step #-}
  13241. 319.50 s [really-safe-money-gen]
  13242. 319.50 s [really-safe-money-gen] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  13243. 319.50 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:139:27-29
  13244. 319.50 s [really-safe-money-gen] @@ -136,7 +136,7 @@
  13245. 319.50 s [really-safe-money-gen] stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  13246. 319.50 s [really-safe-money-gen]
  13247. 319.50 s [really-safe-money-gen] step :: Natural -> Int -> Maybe Natural
  13248. 319.50 s [really-safe-money-gen] -step a digit = Just $ a * 10 + fromIntegral digit
  13249. 319.50 s [really-safe-money-gen] +step a digit = Just $ a * 1 + fromIntegral digit
  13250. 319.50 s [really-safe-money-gen] {-# INLINE step #-}
  13251. 319.50 s [really-safe-money-gen]
  13252. 319.50 s [really-safe-money-gen] parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a
  13253. 319.50 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:136:39-41
  13254. 319.50 s [really-safe-money-gen] @@ -133,7 +133,7 @@
  13255. 319.50 s [really-safe-money-gen]
  13256. 319.50 s [really-safe-money-gen] stepFraction :: (Natural, Word8) -> Int -> Maybe (Natural, Word8)
  13257. 319.50 s [really-safe-money-gen] stepFraction (_, 255) _ = Nothing
  13258. 319.50 s [really-safe-money-gen] -stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  13259. 319.50 s [really-safe-money-gen] +stepFraction (m, e) digit = Just (m * 0 + fromIntegral digit, succ e)
  13260. 319.50 s [really-safe-money-gen]
  13261. 319.50 s [really-safe-money-gen] step :: Natural -> Int -> Maybe Natural
  13262. 319.50 s [really-safe-money-gen] step a digit = Just $ a * 10 + fromIntegral digit
  13263. 319.50 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:136:39-41
  13264. 319.50 s [really-safe-money-gen] @@ -133,7 +133,7 @@
  13265. 319.51 s [really-safe-money-gen]
  13266. 319.51 s [really-safe-money-gen] stepFraction :: (Natural, Word8) -> Int -> Maybe (Natural, Word8)
  13267. 319.51 s [really-safe-money-gen] stepFraction (_, 255) _ = Nothing
  13268. 319.51 s [really-safe-money-gen] -stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e)
  13269. 319.51 s [really-safe-money-gen] +stepFraction (m, e) digit = Just (m * 1 + fromIntegral digit, succ e)
  13270. 319.51 s [really-safe-money-gen]
  13271. 319.51 s [really-safe-money-gen] step :: Natural -> Int -> Maybe Natural
  13272. 319.51 s [really-safe-money-gen] step a digit = Just $ a * 10 + fromIntegral digit
  13273. 319.51 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-30
  13274. 319.51 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  13275. 319.51 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13276. 319.51 s [really-safe-money-gen] decimalLiteralP = do
  13277. 319.51 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  13278. 319.51 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  13279. 319.51 s [really-safe-money-gen] + isSignChar c = True || c == '+'
  13280. 319.51 s [really-safe-money-gen]
  13281. 319.51 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13282. 319.51 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13283. 319.51 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:34-42
  13284. 319.51 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  13285. 319.51 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13286. 319.51 s [really-safe-money-gen] decimalLiteralP = do
  13287. 319.51 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  13288. 319.51 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  13289. 319.51 s [really-safe-money-gen] + isSignChar c = c == '-' || True
  13290. 319.51 s [really-safe-money-gen]
  13291. 319.51 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13292. 319.51 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13293. 319.51 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:119:22-30
  13294. 319.51 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  13295. 319.51 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13296. 319.51 s [really-safe-money-gen] decimalLiteralP = do
  13297. 319.51 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  13298. 319.51 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  13299. 319.51 s [really-safe-money-gen] + isSignChar c = not (c == '-') || c == '+'
  13300. 319.51 s [really-safe-money-gen]
  13301. 319.51 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13302. 319.51 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13303. 319.51 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-30
  13304. 319.51 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  13305. 319.51 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13306. 319.51 s [really-safe-money-gen] decimalLiteralP = do
  13307. 319.51 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  13308. 319.51 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  13309. 319.51 s [really-safe-money-gen] + isSignChar c = False || c == '+'
  13310. 319.51 s [really-safe-money-gen]
  13311. 319.51 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13312. 319.51 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13313. 319.51 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:119:34-42
  13314. 319.51 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  13315. 319.51 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13316. 319.51 s [really-safe-money-gen] decimalLiteralP = do
  13317. 319.51 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  13318. 319.51 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  13319. 319.51 s [really-safe-money-gen] + isSignChar c = c == '-' || not (c == '+')
  13320. 319.51 s [really-safe-money-gen]
  13321. 319.51 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13322. 319.51 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13323. 319.51 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:34-42
  13324. 319.51 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  13325. 319.51 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13326. 319.51 s [really-safe-money-gen] decimalLiteralP = do
  13327. 319.51 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  13328. 319.51 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  13329. 319.51 s [really-safe-money-gen] + isSignChar c = c == '-' || False
  13330. 319.51 s [really-safe-money-gen]
  13331. 319.51 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13332. 319.51 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13333. 319.51 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-42
  13334. 319.51 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  13335. 319.51 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13336. 319.51 s [really-safe-money-gen] decimalLiteralP = do
  13337. 319.51 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  13338. 319.51 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  13339. 319.51 s [really-safe-money-gen] + isSignChar c = True
  13340. 319.51 s [really-safe-money-gen]
  13341. 319.51 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13342. 319.51 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13343. 319.51 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-42
  13344. 319.51 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  13345. 319.51 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13346. 319.51 s [really-safe-money-gen] decimalLiteralP = do
  13347. 319.51 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  13348. 319.51 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  13349. 319.52 s [really-safe-money-gen] + isSignChar c = False
  13350. 319.52 s [really-safe-money-gen]
  13351. 319.52 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13352. 319.52 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13353. 319.52 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:119:22-42
  13354. 319.52 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  13355. 319.52 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13356. 319.52 s [really-safe-money-gen] decimalLiteralP = do
  13357. 319.52 s [really-safe-money-gen] let isSignChar :: Char -> Bool
  13358. 319.52 s [really-safe-money-gen] - isSignChar c = c == '-' || c == '+'
  13359. 319.52 s [really-safe-money-gen] + isSignChar c = not (c == '-' || c == '+')
  13360. 319.52 s [really-safe-money-gen]
  13361. 319.52 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13362. 319.52 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13363. 319.52 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:123:19-34
  13364. 319.52 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  13365. 319.52 s [really-safe-money-gen]
  13366. 319.52 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13367. 319.52 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13368. 319.52 s [really-safe-money-gen] - pure $ Just $ signChar == '+'
  13369. 319.52 s [really-safe-money-gen] + pure $ Just $ False
  13370. 319.52 s [really-safe-money-gen]
  13371. 319.52 s [really-safe-money-gen] units <- parseDigits step 0
  13372. 319.52 s [really-safe-money-gen]
  13373. 319.52 s [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:123:19-34
  13374. 319.52 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  13375. 319.52 s [really-safe-money-gen]
  13376. 319.52 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13377. 319.52 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13378. 319.52 s [really-safe-money-gen] - pure $ Just $ signChar == '+'
  13379. 319.52 s [really-safe-money-gen] + pure $ Just $ not (signChar == '+')
  13380. 319.52 s [really-safe-money-gen]
  13381. 319.52 s [really-safe-money-gen] units <- parseDigits step 0
  13382. 319.52 s [really-safe-money-gen]
  13383. 319.52 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:125:29-30
  13384. 319.52 s [really-safe-money-gen] @@ -122,7 +122,7 @@
  13385. 319.52 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13386. 319.52 s [really-safe-money-gen] pure $ Just $ signChar == '+'
  13387. 319.52 s [really-safe-money-gen]
  13388. 319.52 s [really-safe-money-gen] - units <- parseDigits step 0
  13389. 319.52 s [really-safe-money-gen] + units <- parseDigits step 1
  13390. 319.52 s [really-safe-money-gen]
  13391. 319.52 s [really-safe-money-gen] ReadP.option (DecimalLiteral mSign units 0) $ do
  13392. 319.52 s [really-safe-money-gen] _ <- ReadP.satisfy (== '.')
  13393. 319.52 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:127:44-45
  13394. 319.52 s [really-safe-money-gen] @@ -124,7 +124,7 @@
  13395. 319.52 s [really-safe-money-gen]
  13396. 319.52 s [really-safe-money-gen] units <- parseDigits step 0
  13397. 319.52 s [really-safe-money-gen]
  13398. 319.52 s [really-safe-money-gen] - ReadP.option (DecimalLiteral mSign units 0) $ do
  13399. 319.52 s [really-safe-money-gen] + ReadP.option (DecimalLiteral mSign units 1) $ do
  13400. 319.52 s [really-safe-money-gen] _ <- ReadP.satisfy (== '.')
  13401. 319.52 s [really-safe-money-gen]
  13402. 319.52 s [really-safe-money-gen] (m, e) <- parseDigits stepFraction (units, 0)
  13403. 319.52 s [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:130:48-49
  13404. 319.52 s [really-safe-money-gen] @@ -127,7 +127,7 @@
  13405. 319.52 s [really-safe-money-gen] ReadP.option (DecimalLiteral mSign units 0) $ do
  13406. 319.52 s [really-safe-money-gen] _ <- ReadP.satisfy (== '.')
  13407. 319.52 s [really-safe-money-gen]
  13408. 319.52 s [really-safe-money-gen] - (m, e) <- parseDigits stepFraction (units, 0)
  13409. 319.52 s [really-safe-money-gen] + (m, e) <- parseDigits stepFraction (units, 1)
  13410. 319.52 s [really-safe-money-gen]
  13411. 319.52 s [really-safe-money-gen] pure $ DecimalLiteral mSign m e
  13412. 319.52 s [really-safe-money-gen]
  13413. 319.52 s [really-safe-money-gen] Testing mutation RemoveCase at src/Numeric/DecimalLiteral.hs:112:17-21
  13414. 319.52 s [really-safe-money-gen] @@ -109,9 +109,9 @@
  13415. 319.52 s [really-safe-money-gen]
  13416. 319.52 s [really-safe-money-gen] -- | Like 'fromString' but in a 'MonadFail'
  13417. 319.52 s [really-safe-money-gen] fromStringM :: (MonadFail m) => String -> m DecimalLiteral
  13418. 319.52 s [really-safe-money-gen] -fromStringM s = case Numeric.DecimalLiteral.fromString s of
  13419. 319.52 s [really-safe-money-gen] - Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  13420. 319.52 s [really-safe-money-gen] - Just dl -> pure dl
  13421. 319.52 s [really-safe-money-gen] +fromStringM s = case Numeric.DecimalLiteral.fromString s of
  13422. 319.52 s [really-safe-money-gen] + Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  13423. 319.52 s [really-safe-money-gen] + Just dl -> pure dl
  13424. 319.52 s [really-safe-money-gen]
  13425. 319.52 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13426. 319.52 s [really-safe-money-gen] decimalLiteralP = do
  13427. 319.52 s [really-safe-money-gen] Testing mutation RemoveCase at src/Numeric/DecimalLiteral.hs:112:17-21
  13428. 319.52 s [really-safe-money-gen] @@ -109,9 +109,9 @@
  13429. 319.52 s [really-safe-money-gen]
  13430. 319.52 s [really-safe-money-gen] -- | Like 'fromString' but in a 'MonadFail'
  13431. 319.52 s [really-safe-money-gen] fromStringM :: (MonadFail m) => String -> m DecimalLiteral
  13432. 319.52 s [really-safe-money-gen] -fromStringM s = case Numeric.DecimalLiteral.fromString s of
  13433. 319.52 s [really-safe-money-gen] - Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  13434. 319.52 s [really-safe-money-gen] - Just dl -> pure dl
  13435. 320.72 s [really-safe-money-gen] +fromStringM s = case Numeric.DecimalLiteral.fromString s of
  13436. 320.73 s [really-safe-money-gen] + Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  13437. 320.73 s [really-safe-money-gen] + Just dl -> pure dl
  13438. 320.73 s [really-safe-money-gen]
  13439. 320.73 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  13440. 320.73 s [really-safe-money-gen] decimalLiteralP = do
  13441. 320.73 s [really-safe-money-gen] Testing mutation RemoveCase at src/Numeric/DecimalLiteral.hs:86:18-18
  13442. 320.73 s [really-safe-money-gen] @@ -83,9 +83,9 @@
  13443. 320.73 s [really-safe-money-gen] instance NFData DecimalLiteral
  13444. 320.73 s [really-safe-money-gen]
  13445. 320.73 s [really-safe-money-gen] instance IsString DecimalLiteral where
  13446. 320.73 s [really-safe-money-gen] - fromString s = case Numeric.DecimalLiteral.fromString s of
  13447. 320.73 s [really-safe-money-gen] - Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  13448. 320.73 s [really-safe-money-gen] - Just dl -> dl
  13449. 320.73 s [really-safe-money-gen] + fromString s = case Numeric.DecimalLiteral.fromString s of
  13450. 320.73 s [really-safe-money-gen] + Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  13451. 320.73 s [really-safe-money-gen] + Just dl -> dl
  13452. 320.73 s [really-safe-money-gen]
  13453. 320.73 s [really-safe-money-gen] -- | Parse a decimal literal from a string
  13454. 320.73 s [really-safe-money-gen] --
  13455. 320.73 s [really-safe-money-gen] Testing mutation RemoveCase at src/Numeric/DecimalLiteral.hs:86:18-18
  13456. 320.73 s [really-safe-money-gen] @@ -83,9 +83,9 @@
  13457. 320.73 s [really-safe-money-gen] instance NFData DecimalLiteral
  13458. 320.73 s [really-safe-money-gen]
  13459. 320.73 s [really-safe-money-gen] instance IsString DecimalLiteral where
  13460. 320.73 s [really-safe-money-gen] - fromString s = case Numeric.DecimalLiteral.fromString s of
  13461. 320.73 s [really-safe-money-gen] - Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  13462. 320.73 s [really-safe-money-gen] - Just dl -> dl
  13463. 320.73 s [really-safe-money-gen] + fromString s = case Numeric.DecimalLiteral.fromString s of
  13464. 320.73 s [really-safe-money-gen] + Nothing -> error $ "Invalid DecimalLiteral: " <> show s
  13465. 320.73 s [really-safe-money-gen] + Just dl -> dl
  13466. 320.73 s [really-safe-money-gen]
  13467. 320.73 s [really-safe-money-gen] -- | Parse a decimal literal from a string
  13468. 320.73 s [really-safe-money-gen] --
  13469. 320.73 s [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:123:19-34
  13470. 320.73 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  13471. 320.73 s [really-safe-money-gen]
  13472. 320.73 s [really-safe-money-gen] mSign <- ReadP.option Nothing $ do
  13473. 320.73 s [really-safe-money-gen] signChar <- ReadP.satisfy isSignChar
  13474. 320.73 s [really-safe-money-gen] - pure $ Just $ signChar == '+'
  13475. 320.73 s [really-safe-money-gen] + pure $ Just $ True
  13476. 320.73 s [really-safe-money-gen]
  13477. 320.73 s [really-safe-money-gen] units <- parseDigits step 0
  13478. 320.73 s [really-safe-money-gen]
  13479. 320.73 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:801:36-38
  13480. 320.73 s [really-safe-money-gen] @@ -798,7 +798,7 @@
  13481. 320.73 s [really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  13482. 320.73 s [really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor qf) =
  13483. 320.73 s [really-safe-money-gen] let decimals :: Int
  13484. 320.73 s [really-safe-money-gen] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  13485. 320.73 s [really-safe-money-gen] + decimals = ceiling $ logBase 0 (fromIntegral qf :: Float)
  13486. 320.73 s [really-safe-money-gen] in printf "%%0.%df" decimals
  13487. 320.73 s [really-safe-money-gen]
  13488. 320.73 s [really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  13489. 320.73 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:801:36-38
  13490. 320.73 s [really-safe-money-gen] @@ -798,7 +798,7 @@
  13491. 320.73 s [really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  13492. 320.73 s [really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor qf) =
  13493. 320.73 s [really-safe-money-gen] let decimals :: Int
  13494. 320.73 s [really-safe-money-gen] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  13495. 320.73 s [really-safe-money-gen] + decimals = ceiling $ logBase 1 (fromIntegral qf :: Float)
  13496. 320.73 s [really-safe-money-gen] in printf "%%0.%df" decimals
  13497. 320.73 s [really-safe-money-gen]
  13498. 320.73 s [really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  13499. 320.73 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:801:36-38
  13500. 320.73 s [really-safe-money-gen] @@ -798,7 +798,7 @@
  13501. 320.73 s [really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor 0) = "%f"
  13502. 320.73 s [really-safe-money-gen] quantisationFactorFormatString (QuantisationFactor qf) =
  13503. 320.73 s [really-safe-money-gen] let decimals :: Int
  13504. 320.73 s [really-safe-money-gen] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float)
  13505. 320.73 s [really-safe-money-gen] + decimals = ceiling $ logBase -10 (fromIntegral qf :: Float)
  13506. 320.73 s [really-safe-money-gen] in printf "%%0.%df" decimals
  13507. 320.73 s [really-safe-money-gen]
  13508. 320.73 s [really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  13509. 320.73 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:569:18-19
  13510. 320.73 s [really-safe-money-gen] @@ -566,7 +566,7 @@
  13511. 320.73 s [really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  13512. 320.73 s [really-safe-money-gen] smallerChunk :: Amount
  13513. 320.73 s [really-safe-money-gen] smallerChunk = Amount smallerChunkSize
  13514. 320.73 s [really-safe-money-gen] - in if rest == 0
  13515. 320.73 s [really-safe-money-gen] + in if rest == 1
  13516. 320.73 s [really-safe-money-gen] then DistributedIntoEqualChunks f smallerChunk
  13517. 320.73 s [really-safe-money-gen] else
  13518. 320.73 s [really-safe-money-gen] let -- This 'fromIntegral' is theoretically not safe, but it's
  13519. 320.73 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:569:10-19
  13520. 320.73 s [really-safe-money-gen] @@ -566,7 +566,7 @@
  13521. 320.73 s [really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  13522. 320.73 s [really-safe-money-gen] smallerChunk :: Amount
  13523. 320.73 s [really-safe-money-gen] smallerChunk = Amount smallerChunkSize
  13524. 320.73 s [really-safe-money-gen] - in if rest == 0
  13525. 320.73 s [really-safe-money-gen] + in if True
  13526. 320.73 s [really-safe-money-gen] then DistributedIntoEqualChunks f smallerChunk
  13527. 320.73 s [really-safe-money-gen] else
  13528. 320.73 s [really-safe-money-gen] let -- This 'fromIntegral' is theoretically not safe, but it's
  13529. 320.73 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:569:10-19
  13530. 320.73 s [really-safe-money-gen] @@ -566,7 +566,7 @@
  13531. 320.73 s [really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  13532. 320.73 s [really-safe-money-gen] smallerChunk :: Amount
  13533. 320.73 s [really-safe-money-gen] smallerChunk = Amount smallerChunkSize
  13534. 320.73 s [really-safe-money-gen] - in if rest == 0
  13535. 320.73 s [really-safe-money-gen] + in if False
  13536. 320.73 s [really-safe-money-gen] then DistributedIntoEqualChunks f smallerChunk
  13537. 320.73 s [really-safe-money-gen] else
  13538. 320.73 s [really-safe-money-gen] let -- This 'fromIntegral' is theoretically not safe, but it's
  13539. 320.73 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:569:10-19
  13540. 320.73 s [really-safe-money-gen] @@ -566,7 +566,7 @@
  13541. 320.73 s [really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  13542. 320.73 s [really-safe-money-gen] smallerChunk :: Amount
  13543. 320.73 s [really-safe-money-gen] smallerChunk = Amount smallerChunkSize
  13544. 320.73 s [really-safe-money-gen] - in if rest == 0
  13545. 320.73 s [really-safe-money-gen] + in if not (rest == 0)
  13546. 320.73 s [really-safe-money-gen] then DistributedIntoEqualChunks f smallerChunk
  13547. 320.73 s [really-safe-money-gen] else
  13548. 320.73 s [really-safe-money-gen] let -- This 'fromIntegral' is theoretically not safe, but it's
  13549. 320.73 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:569:7-29
  13550. 320.73 s [really-safe-money-gen] @@ -566,22 +566,22 @@
  13551. 320.73 s [really-safe-money-gen] (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f)
  13552. 320.73 s [really-safe-money-gen] smallerChunk :: Amount
  13553. 320.73 s [really-safe-money-gen] smallerChunk = Amount smallerChunkSize
  13554. 320.73 s [really-safe-money-gen] - in if rest == 0
  13555. 320.73 s [really-safe-money-gen] - then DistributedIntoEqualChunks f smallerChunk
  13556. 320.73 s [really-safe-money-gen] - else
  13557. 320.73 s [really-safe-money-gen] - let -- This 'fromIntegral' is theoretically not safe, but it's
  13558. 320.73 s [really-safe-money-gen] - -- necessarily smaller than f so it will fit.
  13559. 320.73 s [really-safe-money-gen] - numberOfLargerChunks :: Word32
  13560. 320.73 s [really-safe-money-gen] - numberOfLargerChunks = (fromIntegral :: Word64 -> Word32) rest
  13561. 320.73 s [really-safe-money-gen] - numberOfSmallerChunks :: Word32
  13562. 320.73 s [really-safe-money-gen] - numberOfSmallerChunks = f - numberOfLargerChunks
  13563. 320.73 s [really-safe-money-gen] - largerChunk :: Amount
  13564. 320.73 s [really-safe-money-gen] - largerChunk = Amount $ succ smallerChunkSize
  13565. 320.73 s [really-safe-money-gen] - in DistributedIntoUnequalChunks
  13566. 320.74 s [really-safe-money-gen] - numberOfLargerChunks
  13567. 320.74 s [really-safe-money-gen] - largerChunk
  13568. 320.74 s [really-safe-money-gen] - numberOfSmallerChunks
  13569. 320.74 s [really-safe-money-gen] - smallerChunk
  13570. 320.74 s [really-safe-money-gen] + in if rest == 0
  13571. 320.74 s [really-safe-money-gen] + then DistributedIntoEqualChunks f smallerChunk
  13572. 320.74 s [really-safe-money-gen] + else
  13573. 320.74 s [really-safe-money-gen] + let -- This 'fromIntegral' is theoretically not safe, but it's
  13574. 320.74 s [really-safe-money-gen] + -- necessarily smaller than f so it will fit.
  13575. 320.74 s [really-safe-money-gen] + numberOfLargerChunks :: Word32
  13576. 320.74 s [really-safe-money-gen] + numberOfLargerChunks = (fromIntegral :: Word64 -> Word32) rest
  13577. 320.74 s [really-safe-money-gen] + numberOfSmallerChunks :: Word32
  13578. 320.74 s [really-safe-money-gen] + numberOfSmallerChunks = f - numberOfLargerChunks
  13579. 320.74 s [really-safe-money-gen] + largerChunk :: Amount
  13580. 320.74 s [really-safe-money-gen] + largerChunk = Amount $ succ smallerChunkSize
  13581. 320.74 s [really-safe-money-gen] + in DistributedIntoUnequalChunks
  13582. 320.74 s [really-safe-money-gen] + numberOfLargerChunks
  13583. 320.74 s [really-safe-money-gen] + largerChunk
  13584. 320.74 s [really-safe-money-gen] + numberOfSmallerChunks
  13585. 320.74 s [really-safe-money-gen] + smallerChunk
  13586. 320.74 s [really-safe-money-gen]
  13587. 320.74 s [really-safe-money-gen] -- | The result of 'distribute'
  13588. 320.74 s [really-safe-money-gen] type AmountDistribution = Distribution Amount
  13589. 320.74 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:544:10-23
  13590. 320.74 s [really-safe-money-gen] @@ -541,7 +541,7 @@
  13591. 320.74 s [really-safe-money-gen] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  13592. 320.74 s [really-safe-money-gen] r :: Integer
  13593. 320.74 s [really-safe-money-gen] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  13594. 320.74 s [really-safe-money-gen] - in if r > maxBoundI
  13595. 320.74 s [really-safe-money-gen] + in if True
  13596. 320.74 s [really-safe-money-gen] then Nothing
  13597. 320.74 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13598. 320.74 s [really-safe-money-gen]
  13599. 320.74 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:544:10-23
  13600. 320.74 s [really-safe-money-gen] @@ -541,7 +541,7 @@
  13601. 320.74 s [really-safe-money-gen] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  13602. 320.74 s [really-safe-money-gen] r :: Integer
  13603. 320.74 s [really-safe-money-gen] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  13604. 320.74 s [really-safe-money-gen] - in if r > maxBoundI
  13605. 320.74 s [really-safe-money-gen] + in if False
  13606. 320.74 s [really-safe-money-gen] then Nothing
  13607. 320.74 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13608. 320.74 s [really-safe-money-gen]
  13609. 320.74 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:544:10-23
  13610. 320.74 s [really-safe-money-gen] @@ -541,7 +541,7 @@
  13611. 320.74 s [really-safe-money-gen] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  13612. 320.74 s [really-safe-money-gen] r :: Integer
  13613. 320.74 s [really-safe-money-gen] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  13614. 320.74 s [really-safe-money-gen] - in if r > maxBoundI
  13615. 320.74 s [really-safe-money-gen] + in if not (r > maxBoundI)
  13616. 320.74 s [really-safe-money-gen] then Nothing
  13617. 320.74 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13618. 320.74 s [really-safe-money-gen]
  13619. 320.74 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:544:7-66
  13620. 320.74 s [really-safe-money-gen] @@ -541,9 +541,9 @@
  13621. 320.74 s [really-safe-money-gen] maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64)
  13622. 320.74 s [really-safe-money-gen] r :: Integer
  13623. 320.74 s [really-safe-money-gen] r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a
  13624. 320.74 s [really-safe-money-gen] - in if r > maxBoundI
  13625. 320.74 s [really-safe-money-gen] - then Nothing
  13626. 320.74 s [really-safe-money-gen] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13627. 320.74 s [really-safe-money-gen] + in if r > maxBoundI
  13628. 320.74 s [really-safe-money-gen] + then Nothing
  13629. 320.74 s [really-safe-money-gen] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13630. 320.74 s [really-safe-money-gen]
  13631. 320.74 s [really-safe-money-gen] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  13632. 320.74 s [really-safe-money-gen] --
  13633. 320.74 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:518:14-15
  13634. 320.74 s [really-safe-money-gen] @@ -515,7 +515,7 @@
  13635. 320.74 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  13636. 322.35 s [really-safe-money-gen] r :: Integer
  13637. 322.35 s [really-safe-money-gen] r = i1 - i2
  13638. 322.35 s [really-safe-money-gen] - in if r < 0
  13639. 322.35 s [really-safe-money-gen] + in if r < 1
  13640. 322.35 s [really-safe-money-gen] then Nothing
  13641. 322.35 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13642. 322.35 s [really-safe-money-gen]
  13643. 322.35 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:518:10-15
  13644. 322.35 s [really-safe-money-gen] @@ -515,7 +515,7 @@
  13645. 322.35 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  13646. 322.35 s [really-safe-money-gen] r :: Integer
  13647. 322.35 s [really-safe-money-gen] r = i1 - i2
  13648. 322.35 s [really-safe-money-gen] - in if r < 0
  13649. 322.35 s [really-safe-money-gen] + in if True
  13650. 322.35 s [really-safe-money-gen] then Nothing
  13651. 322.35 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13652. 322.36 s [really-safe-money-gen]
  13653. 322.36 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:518:10-15
  13654. 322.36 s [really-safe-money-gen] @@ -515,7 +515,7 @@
  13655. 322.36 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  13656. 322.36 s [really-safe-money-gen] r :: Integer
  13657. 322.36 s [really-safe-money-gen] r = i1 - i2
  13658. 322.36 s [really-safe-money-gen] - in if r < 0
  13659. 322.36 s [really-safe-money-gen] + in if False
  13660. 322.36 s [really-safe-money-gen] then Nothing
  13661. 322.36 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13662. 322.36 s [really-safe-money-gen]
  13663. 322.36 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:518:10-15
  13664. 322.36 s [really-safe-money-gen] @@ -515,7 +515,7 @@
  13665. 322.36 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  13666. 322.36 s [really-safe-money-gen] r :: Integer
  13667. 322.36 s [really-safe-money-gen] r = i1 - i2
  13668. 322.36 s [really-safe-money-gen] - in if r < 0
  13669. 322.36 s [really-safe-money-gen] + in if not (r < 0)
  13670. 322.36 s [really-safe-money-gen] then Nothing
  13671. 322.36 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13672. 322.36 s [really-safe-money-gen]
  13673. 322.36 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:518:7-66
  13674. 322.36 s [really-safe-money-gen] @@ -515,9 +515,9 @@
  13675. 322.36 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  13676. 322.36 s [really-safe-money-gen] r :: Integer
  13677. 322.36 s [really-safe-money-gen] r = i1 - i2
  13678. 322.36 s [really-safe-money-gen] - in if r < 0
  13679. 322.36 s [really-safe-money-gen] - then Nothing
  13680. 322.36 s [really-safe-money-gen] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13681. 322.36 s [really-safe-money-gen] + in if r < 0
  13682. 322.36 s [really-safe-money-gen] + then Nothing
  13683. 322.36 s [really-safe-money-gen] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13684. 322.36 s [really-safe-money-gen]
  13685. 322.36 s [really-safe-money-gen] -- | Multiply an amount of money by an integer scalar
  13686. 322.36 s [really-safe-money-gen] --
  13687. 322.36 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:476:10-23
  13688. 322.36 s [really-safe-money-gen] @@ -473,7 +473,7 @@
  13689. 322.36 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  13690. 322.36 s [really-safe-money-gen] r :: Integer
  13691. 322.36 s [really-safe-money-gen] r = i1 + i2
  13692. 322.36 s [really-safe-money-gen] - in if r > maxBoundI
  13693. 322.36 s [really-safe-money-gen] + in if True
  13694. 322.36 s [really-safe-money-gen] then Nothing
  13695. 322.36 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13696. 322.36 s [really-safe-money-gen]
  13697. 322.36 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:476:10-23
  13698. 322.36 s [really-safe-money-gen] @@ -473,7 +473,7 @@
  13699. 322.36 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  13700. 322.36 s [really-safe-money-gen] r :: Integer
  13701. 322.36 s [really-safe-money-gen] r = i1 + i2
  13702. 322.36 s [really-safe-money-gen] - in if r > maxBoundI
  13703. 322.36 s [really-safe-money-gen] + in if False
  13704. 322.36 s [really-safe-money-gen] then Nothing
  13705. 322.36 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13706. 322.36 s [really-safe-money-gen]
  13707. 322.36 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:476:10-23
  13708. 322.36 s [really-safe-money-gen] @@ -473,7 +473,7 @@
  13709. 322.36 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  13710. 322.36 s [really-safe-money-gen] r :: Integer
  13711. 322.36 s [really-safe-money-gen] r = i1 + i2
  13712. 322.36 s [really-safe-money-gen] - in if r > maxBoundI
  13713. 322.36 s [really-safe-money-gen] + in if not (r > maxBoundI)
  13714. 322.36 s [really-safe-money-gen] then Nothing
  13715. 322.36 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13716. 322.36 s [really-safe-money-gen]
  13717. 322.36 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:476:7-66
  13718. 322.36 s [really-safe-money-gen] @@ -473,9 +473,9 @@
  13719. 322.36 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  13720. 322.36 s [really-safe-money-gen] r :: Integer
  13721. 322.36 s [really-safe-money-gen] r = i1 + i2
  13722. 322.36 s [really-safe-money-gen] - in if r > maxBoundI
  13723. 322.36 s [really-safe-money-gen] - then Nothing
  13724. 322.36 s [really-safe-money-gen] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13725. 322.36 s [really-safe-money-gen] + in if r > maxBoundI
  13726. 322.36 s [really-safe-money-gen] + then Nothing
  13727. 322.36 s [really-safe-money-gen] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  13728. 322.36 s [really-safe-money-gen]
  13729. 322.36 s [really-safe-money-gen] -- | Add a number of amounts of money together.
  13730. 322.36 s [really-safe-money-gen] --
  13731. 322.37 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:388:5-16
  13732. 322.37 s [really-safe-money-gen] @@ -385,7 +385,7 @@
  13733. 322.37 s [really-safe-money-gen] -- Nothing
  13734. 322.37 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  13735. 322.37 s [really-safe-money-gen] fromRational (QuantisationFactor qf) r
  13736. 322.37 s [really-safe-money-gen] - | isInvalid r = Nothing
  13737. 322.37 s [really-safe-money-gen] + | True = Nothing
  13738. 322.37 s [really-safe-money-gen] | r < 0 = Nothing
  13739. 322.37 s [really-safe-money-gen] | otherwise =
  13740. 322.37 s [really-safe-money-gen] let resultRational :: Rational
  13741. 322.37 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:388:5-16
  13742. 322.37 s [really-safe-money-gen] @@ -385,7 +385,7 @@
  13743. 322.37 s [really-safe-money-gen] -- Nothing
  13744. 322.37 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  13745. 322.37 s [really-safe-money-gen] fromRational (QuantisationFactor qf) r
  13746. 322.37 s [really-safe-money-gen] - | isInvalid r = Nothing
  13747. 322.37 s [really-safe-money-gen] + | not (isInvalid r) = Nothing
  13748. 322.37 s [really-safe-money-gen] | r < 0 = Nothing
  13749. 322.37 s [really-safe-money-gen] | otherwise =
  13750. 322.37 s [really-safe-money-gen] let resultRational :: Rational
  13751. 322.37 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:389:9-10
  13752. 322.37 s [really-safe-money-gen] @@ -386,7 +386,7 @@
  13753. 322.37 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  13754. 322.37 s [really-safe-money-gen] fromRational (QuantisationFactor qf) r
  13755. 322.37 s [really-safe-money-gen] | isInvalid r = Nothing
  13756. 322.37 s [really-safe-money-gen] - | r < 0 = Nothing
  13757. 322.37 s [really-safe-money-gen] + | r < 1 = Nothing
  13758. 322.37 s [really-safe-money-gen] | otherwise =
  13759. 322.37 s [really-safe-money-gen] let resultRational :: Rational
  13760. 322.37 s [really-safe-money-gen] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  13761. 322.37 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:389:5-10
  13762. 322.37 s [really-safe-money-gen] @@ -386,7 +386,7 @@
  13763. 322.37 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  13764. 322.37 s [really-safe-money-gen] fromRational (QuantisationFactor qf) r
  13765. 322.37 s [really-safe-money-gen] | isInvalid r = Nothing
  13766. 322.37 s [really-safe-money-gen] - | r < 0 = Nothing
  13767. 322.37 s [really-safe-money-gen] + | True = Nothing
  13768. 322.37 s [really-safe-money-gen] | otherwise =
  13769. 322.37 s [really-safe-money-gen] let resultRational :: Rational
  13770. 322.37 s [really-safe-money-gen] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  13771. 322.37 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:389:5-10
  13772. 322.37 s [really-safe-money-gen] @@ -386,7 +386,7 @@
  13773. 322.37 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Amount
  13774. 322.37 s [really-safe-money-gen] fromRational (QuantisationFactor qf) r
  13775. 322.37 s [really-safe-money-gen] | isInvalid r = Nothing
  13776. 322.37 s [really-safe-money-gen] - | r < 0 = Nothing
  13777. 322.37 s [really-safe-money-gen] + | not (r < 0) = Nothing
  13778. 322.37 s [really-safe-money-gen] | otherwise =
  13779. 322.37 s [really-safe-money-gen] let resultRational :: Rational
  13780. 322.37 s [really-safe-money-gen] resultRational = r * (fromIntegral :: Word32 -> Rational) qf
  13781. 322.37 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:397:14-31
  13782. 322.37 s [really-safe-money-gen] @@ -394,7 +394,7 @@
  13783. 322.37 s [really-safe-money-gen] ceiled = (ceiling :: Rational -> Natural) resultRational
  13784. 322.37 s [really-safe-money-gen] floored :: Natural
  13785. 322.37 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  13786. 322.37 s [really-safe-money-gen] - in if ceiled == floored
  13787. 322.37 s [really-safe-money-gen] + in if True
  13788. 322.37 s [really-safe-money-gen] then
  13789. 322.37 s [really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13790. 322.37 s [really-safe-money-gen] then Nothing
  13791. 322.37 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:397:14-31
  13792. 322.37 s [really-safe-money-gen] @@ -394,7 +394,7 @@
  13793. 322.37 s [really-safe-money-gen] ceiled = (ceiling :: Rational -> Natural) resultRational
  13794. 322.37 s [really-safe-money-gen] floored :: Natural
  13795. 322.37 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  13796. 322.37 s [really-safe-money-gen] - in if ceiled == floored
  13797. 322.37 s [really-safe-money-gen] + in if False
  13798. 322.37 s [really-safe-money-gen] then
  13799. 322.37 s [really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13800. 322.37 s [really-safe-money-gen] then Nothing
  13801. 322.37 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:399:18-83
  13802. 322.37 s [really-safe-money-gen] @@ -396,7 +396,7 @@
  13803. 322.37 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  13804. 322.37 s [really-safe-money-gen] in if ceiled == floored
  13805. 322.37 s [really-safe-money-gen] then
  13806. 322.37 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13807. 322.37 s [really-safe-money-gen] + if False
  13808. 322.37 s [really-safe-money-gen] then Nothing
  13809. 322.37 s [really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
  13810. 322.37 s [really-safe-money-gen] else Nothing
  13811. 322.37 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:397:14-31
  13812. 322.37 s [really-safe-money-gen] @@ -394,7 +394,7 @@
  13813. 322.37 s [really-safe-money-gen] ceiled = (ceiling :: Rational -> Natural) resultRational
  13814. 322.37 s [really-safe-money-gen] floored :: Natural
  13815. 322.37 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  13816. 322.37 s [really-safe-money-gen] - in if ceiled == floored
  13817. 322.37 s [really-safe-money-gen] + in if not (ceiled == floored)
  13818. 322.37 s [really-safe-money-gen] then
  13819. 322.37 s [really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13820. 322.37 s [really-safe-money-gen] then Nothing
  13821. 322.37 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:399:18-83
  13822. 322.37 s [really-safe-money-gen] @@ -396,7 +396,7 @@
  13823. 322.37 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  13824. 322.37 s [really-safe-money-gen] in if ceiled == floored
  13825. 322.37 s [really-safe-money-gen] then
  13826. 322.37 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13827. 322.37 s [really-safe-money-gen] + if True
  13828. 322.37 s [really-safe-money-gen] then Nothing
  13829. 322.37 s [really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
  13830. 322.37 s [really-safe-money-gen] else Nothing
  13831. 322.38 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:399:18-83
  13832. 322.38 s [really-safe-money-gen] @@ -396,7 +396,7 @@
  13833. 322.38 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  13834. 322.38 s [really-safe-money-gen] in if ceiled == floored
  13835. 322.38 s [really-safe-money-gen] then
  13836. 322.38 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13837. 322.38 s [really-safe-money-gen] + if not (ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64))
  13838. 322.38 s [really-safe-money-gen] then Nothing
  13839. 322.38 s [really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
  13840. 322.38 s [really-safe-money-gen] else Nothing
  13841. 322.38 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:399:15-57
  13842. 322.38 s [really-safe-money-gen] @@ -396,9 +396,9 @@
  13843. 322.38 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  13844. 322.38 s [really-safe-money-gen] in if ceiled == floored
  13845. 322.38 s [really-safe-money-gen] then
  13846. 322.38 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13847. 322.38 s [really-safe-money-gen] - then Nothing
  13848. 322.38 s [really-safe-money-gen] - else Just $ Amount (fromIntegral ceiled)
  13849. 322.38 s [really-safe-money-gen] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13850. 322.38 s [really-safe-money-gen] + then Nothing
  13851. 322.38 s [really-safe-money-gen] + else Just $ Amount (fromIntegral ceiled)
  13852. 322.38 s [really-safe-money-gen] else Nothing
  13853. 322.38 s [really-safe-money-gen]
  13854. 322.38 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  13855. 322.38 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:397:11-25
  13856. 322.38 s [really-safe-money-gen] @@ -394,12 +394,12 @@
  13857. 322.38 s [really-safe-money-gen] ceiled = (ceiling :: Rational -> Natural) resultRational
  13858. 322.38 s [really-safe-money-gen] floored :: Natural
  13859. 322.38 s [really-safe-money-gen] floored = (floor :: Rational -> Natural) resultRational
  13860. 322.38 s [really-safe-money-gen] - in if ceiled == floored
  13861. 322.38 s [really-safe-money-gen] - then
  13862. 325.22 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13863. 325.33 s [really-safe-money-gen] - then Nothing
  13864. 325.33 s [really-safe-money-gen] - else Just $ Amount (fromIntegral ceiled)
  13865. 325.33 s [really-safe-money-gen] - else Nothing
  13866. 325.33 s [really-safe-money-gen] + in if ceiled == floored
  13867. 325.33 s [really-safe-money-gen] + then
  13868. 325.33 s [really-safe-money-gen] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13869. 325.33 s [really-safe-money-gen] + then Nothing
  13870. 325.33 s [really-safe-money-gen] + else Just $ Amount (fromIntegral ceiled)
  13871. 325.33 s [really-safe-money-gen] + else Nothing
  13872. 325.33 s [really-safe-money-gen]
  13873. 325.33 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  13874. 325.33 s [really-safe-money-gen] --
  13875. 325.33 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:320:5-10
  13876. 325.33 s [really-safe-money-gen] @@ -317,7 +317,7 @@
  13877. 325.33 s [really-safe-money-gen] Double ->
  13878. 325.33 s [really-safe-money-gen] Maybe Amount
  13879. 325.33 s [really-safe-money-gen] fromDouble (QuantisationFactor qf) d
  13880. 325.33 s [really-safe-money-gen] - | d < 0 = Nothing
  13881. 325.33 s [really-safe-money-gen] + | True = Nothing
  13882. 325.33 s [really-safe-money-gen] | otherwise =
  13883. 325.33 s [really-safe-money-gen] let resultDouble :: Double
  13884. 325.33 s [really-safe-money-gen] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  13885. 325.33 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:320:9-10
  13886. 325.33 s [really-safe-money-gen] @@ -317,7 +317,7 @@
  13887. 325.33 s [really-safe-money-gen] Double ->
  13888. 325.33 s [really-safe-money-gen] Maybe Amount
  13889. 325.33 s [really-safe-money-gen] fromDouble (QuantisationFactor qf) d
  13890. 325.33 s [really-safe-money-gen] - | d < 0 = Nothing
  13891. 325.33 s [really-safe-money-gen] + | d < 1 = Nothing
  13892. 325.33 s [really-safe-money-gen] | otherwise =
  13893. 325.33 s [really-safe-money-gen] let resultDouble :: Double
  13894. 325.33 s [really-safe-money-gen] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  13895. 325.33 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:320:5-10
  13896. 325.33 s [really-safe-money-gen] @@ -317,7 +317,7 @@
  13897. 325.33 s [really-safe-money-gen] Double ->
  13898. 325.33 s [really-safe-money-gen] Maybe Amount
  13899. 325.33 s [really-safe-money-gen] fromDouble (QuantisationFactor qf) d
  13900. 325.33 s [really-safe-money-gen] - | d < 0 = Nothing
  13901. 325.33 s [really-safe-money-gen] + | not (d < 0) = Nothing
  13902. 325.33 s [really-safe-money-gen] | otherwise =
  13903. 325.33 s [really-safe-money-gen] let resultDouble :: Double
  13904. 325.33 s [really-safe-money-gen] resultDouble = d * (fromIntegral :: Word32 -> Double) qf
  13905. 325.33 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:327:9-16
  13906. 325.33 s [really-safe-money-gen] @@ -324,7 +324,7 @@
  13907. 325.33 s [really-safe-money-gen] in go resultDouble
  13908. 325.33 s [really-safe-money-gen] where
  13909. 325.33 s [really-safe-money-gen] go resultDouble
  13910. 325.33 s [really-safe-money-gen] - | isNaN d = Nothing
  13911. 325.34 s [really-safe-money-gen] + | True = Nothing
  13912. 325.34 s [really-safe-money-gen] | isInfinite d = Nothing
  13913. 325.34 s [really-safe-money-gen] | otherwise =
  13914. 325.34 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  13915. 325.34 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:327:9-16
  13916. 325.34 s [really-safe-money-gen] @@ -324,7 +324,7 @@
  13917. 325.34 s [really-safe-money-gen] in go resultDouble
  13918. 325.34 s [really-safe-money-gen] where
  13919. 325.34 s [really-safe-money-gen] go resultDouble
  13920. 325.34 s [really-safe-money-gen] - | isNaN d = Nothing
  13921. 325.34 s [really-safe-money-gen] + | not (isNaN d) = Nothing
  13922. 325.34 s [really-safe-money-gen] | isInfinite d = Nothing
  13923. 325.34 s [really-safe-money-gen] | otherwise =
  13924. 325.34 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  13925. 325.34 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:328:9-21
  13926. 325.34 s [really-safe-money-gen] @@ -325,7 +325,7 @@
  13927. 325.34 s [really-safe-money-gen] where
  13928. 325.34 s [really-safe-money-gen] go resultDouble
  13929. 325.34 s [really-safe-money-gen] | isNaN d = Nothing
  13930. 325.34 s [really-safe-money-gen] - | isInfinite d = Nothing
  13931. 325.34 s [really-safe-money-gen] + | not (isInfinite d) = Nothing
  13932. 325.34 s [really-safe-money-gen] | otherwise =
  13933. 325.34 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  13934. 325.34 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  13935. 325.34 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:332:38-40
  13936. 325.34 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  13937. 325.34 s [really-safe-money-gen] | otherwise =
  13938. 325.34 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  13939. 325.34 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  13940. 325.34 s [really-safe-money-gen] - if exponent resultDouble > 65
  13941. 325.34 s [really-safe-money-gen] + if exponent resultDouble > 1
  13942. 325.34 s [really-safe-money-gen] then Nothing
  13943. 325.34 s [really-safe-money-gen] else
  13944. 325.34 s [really-safe-money-gen] let ceiled :: Natural
  13945. 325.34 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:332:38-40
  13946. 325.34 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  13947. 325.34 s [really-safe-money-gen] | otherwise =
  13948. 325.34 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  13949. 325.34 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  13950. 325.34 s [really-safe-money-gen] - if exponent resultDouble > 65
  13951. 325.34 s [really-safe-money-gen] + if exponent resultDouble > -65
  13952. 325.34 s [really-safe-money-gen] then Nothing
  13953. 325.34 s [really-safe-money-gen] else
  13954. 325.34 s [really-safe-money-gen] let ceiled :: Natural
  13955. 325.34 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:332:14-40
  13956. 325.34 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  13957. 325.34 s [really-safe-money-gen] | otherwise =
  13958. 325.34 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  13959. 325.34 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  13960. 325.34 s [really-safe-money-gen] - if exponent resultDouble > 65
  13961. 325.34 s [really-safe-money-gen] + if True
  13962. 325.34 s [really-safe-money-gen] then Nothing
  13963. 325.34 s [really-safe-money-gen] else
  13964. 325.34 s [really-safe-money-gen] let ceiled :: Natural
  13965. 325.34 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:332:14-40
  13966. 325.34 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  13967. 325.34 s [really-safe-money-gen] | otherwise =
  13968. 325.34 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  13969. 325.34 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  13970. 325.34 s [really-safe-money-gen] - if exponent resultDouble > 65
  13971. 325.34 s [really-safe-money-gen] + if False
  13972. 325.34 s [really-safe-money-gen] then Nothing
  13973. 325.34 s [really-safe-money-gen] else
  13974. 325.34 s [really-safe-money-gen] let ceiled :: Natural
  13975. 325.34 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:332:14-40
  13976. 325.34 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  13977. 325.34 s [really-safe-money-gen] | otherwise =
  13978. 325.34 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  13979. 325.34 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  13980. 325.34 s [really-safe-money-gen] - if exponent resultDouble > 65
  13981. 325.34 s [really-safe-money-gen] + if not (exponent resultDouble > 65)
  13982. 325.34 s [really-safe-money-gen] then Nothing
  13983. 325.34 s [really-safe-money-gen] else
  13984. 325.34 s [really-safe-money-gen] let ceiled :: Natural
  13985. 325.34 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:339:22-39
  13986. 325.34 s [really-safe-money-gen] @@ -336,7 +336,7 @@
  13987. 325.34 s [really-safe-money-gen] ceiled = (ceiling :: Double -> Natural) resultDouble
  13988. 325.34 s [really-safe-money-gen] floored :: Natural
  13989. 325.34 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  13990. 325.34 s [really-safe-money-gen] - in if ceiled == floored
  13991. 325.34 s [really-safe-money-gen] + in if True
  13992. 325.34 s [really-safe-money-gen] then
  13993. 325.34 s [really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  13994. 325.34 s [really-safe-money-gen] then Nothing
  13995. 325.34 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:328:9-21
  13996. 325.34 s [really-safe-money-gen] @@ -325,7 +325,7 @@
  13997. 325.34 s [really-safe-money-gen] where
  13998. 325.34 s [really-safe-money-gen] go resultDouble
  13999. 325.34 s [really-safe-money-gen] | isNaN d = Nothing
  14000. 325.34 s [really-safe-money-gen] - | isInfinite d = Nothing
  14001. 325.34 s [really-safe-money-gen] + | True = Nothing
  14002. 325.34 s [really-safe-money-gen] | otherwise =
  14003. 325.34 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  14004. 325.34 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  14005. 325.34 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:339:22-39
  14006. 325.34 s [really-safe-money-gen] @@ -336,7 +336,7 @@
  14007. 325.34 s [really-safe-money-gen] ceiled = (ceiling :: Double -> Natural) resultDouble
  14008. 325.34 s [really-safe-money-gen] floored :: Natural
  14009. 325.34 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  14010. 325.34 s [really-safe-money-gen] - in if ceiled == floored
  14011. 325.34 s [really-safe-money-gen] + in if not (ceiled == floored)
  14012. 325.34 s [really-safe-money-gen] then
  14013. 325.34 s [really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14014. 325.34 s [really-safe-money-gen] then Nothing
  14015. 325.34 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:332:38-40
  14016. 325.34 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  14017. 325.34 s [really-safe-money-gen] | otherwise =
  14018. 325.34 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  14019. 325.34 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  14020. 325.34 s [really-safe-money-gen] - if exponent resultDouble > 65
  14021. 325.34 s [really-safe-money-gen] + if exponent resultDouble > 0
  14022. 325.34 s [really-safe-money-gen] then Nothing
  14023. 325.34 s [really-safe-money-gen] else
  14024. 325.34 s [really-safe-money-gen] let ceiled :: Natural
  14025. 325.34 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:339:22-39
  14026. 325.34 s [really-safe-money-gen] @@ -336,7 +336,7 @@
  14027. 325.34 s [really-safe-money-gen] ceiled = (ceiling :: Double -> Natural) resultDouble
  14028. 325.34 s [really-safe-money-gen] floored :: Natural
  14029. 325.34 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  14030. 325.34 s [really-safe-money-gen] - in if ceiled == floored
  14031. 325.34 s [really-safe-money-gen] + in if False
  14032. 325.34 s [really-safe-money-gen] then
  14033. 325.34 s [really-safe-money-gen] if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14034. 325.34 s [really-safe-money-gen] then Nothing
  14035. 325.34 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:341:26-91
  14036. 325.34 s [really-safe-money-gen] @@ -338,7 +338,7 @@
  14037. 325.34 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  14038. 325.34 s [really-safe-money-gen] in if ceiled == floored
  14039. 325.34 s [really-safe-money-gen] then
  14040. 325.34 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14041. 325.34 s [really-safe-money-gen] + if True
  14042. 325.34 s [really-safe-money-gen] then Nothing
  14043. 325.34 s [really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
  14044. 325.34 s [really-safe-money-gen] else Nothing
  14045. 325.34 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:341:26-91
  14046. 325.35 s [really-safe-money-gen] @@ -338,7 +338,7 @@
  14047. 325.35 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  14048. 325.35 s [really-safe-money-gen] in if ceiled == floored
  14049. 325.35 s [really-safe-money-gen] then
  14050. 325.35 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14051. 325.35 s [really-safe-money-gen] + if not (ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64))
  14052. 325.35 s [really-safe-money-gen] then Nothing
  14053. 325.35 s [really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
  14054. 325.35 s [really-safe-money-gen] else Nothing
  14055. 325.35 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:341:23-65
  14056. 325.35 s [really-safe-money-gen] @@ -338,9 +338,9 @@
  14057. 325.35 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  14058. 325.35 s [really-safe-money-gen] in if ceiled == floored
  14059. 325.35 s [really-safe-money-gen] then
  14060. 325.35 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14061. 325.35 s [really-safe-money-gen] - then Nothing
  14062. 325.35 s [really-safe-money-gen] - else Just $ Amount (fromIntegral ceiled)
  14063. 325.35 s [really-safe-money-gen] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14064. 325.35 s [really-safe-money-gen] + then Nothing
  14065. 326.77 s [really-safe-money-gen] + else Just $ Amount (fromIntegral ceiled)
  14066. 326.77 s [really-safe-money-gen] else Nothing
  14067. 326.77 s [really-safe-money-gen]
  14068. 326.77 s [really-safe-money-gen] -- | Turn an amount of money into a 'Double'.
  14069. 326.77 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:339:19-33
  14070. 326.77 s [really-safe-money-gen] @@ -336,12 +336,12 @@
  14071. 326.77 s [really-safe-money-gen] ceiled = (ceiling :: Double -> Natural) resultDouble
  14072. 326.77 s [really-safe-money-gen] floored :: Natural
  14073. 326.77 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  14074. 326.77 s [really-safe-money-gen] - in if ceiled == floored
  14075. 326.77 s [really-safe-money-gen] - then
  14076. 326.77 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14077. 326.77 s [really-safe-money-gen] - then Nothing
  14078. 326.77 s [really-safe-money-gen] - else Just $ Amount (fromIntegral ceiled)
  14079. 326.77 s [really-safe-money-gen] - else Nothing
  14080. 326.77 s [really-safe-money-gen] + in if ceiled == floored
  14081. 326.77 s [really-safe-money-gen] + then
  14082. 326.77 s [really-safe-money-gen] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14083. 326.77 s [really-safe-money-gen] + then Nothing
  14084. 326.77 s [really-safe-money-gen] + else Just $ Amount (fromIntegral ceiled)
  14085. 326.77 s [really-safe-money-gen] + else Nothing
  14086. 326.77 s [really-safe-money-gen]
  14087. 326.77 s [really-safe-money-gen] -- | Turn an amount of money into a 'Double'.
  14088. 326.77 s [really-safe-money-gen] --
  14089. 326.77 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:332:11-33
  14090. 326.77 s [really-safe-money-gen] @@ -329,19 +329,19 @@
  14091. 326.77 s [really-safe-money-gen] | otherwise =
  14092. 326.77 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  14093. 326.77 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  14094. 326.77 s [really-safe-money-gen] - if exponent resultDouble > 65
  14095. 326.77 s [really-safe-money-gen] - then Nothing
  14096. 326.77 s [really-safe-money-gen] - else
  14097. 326.77 s [really-safe-money-gen] - let ceiled :: Natural
  14098. 326.77 s [really-safe-money-gen] - ceiled = (ceiling :: Double -> Natural) resultDouble
  14099. 326.77 s [really-safe-money-gen] - floored :: Natural
  14100. 326.77 s [really-safe-money-gen] - floored = (floor :: Double -> Natural) resultDouble
  14101. 326.77 s [really-safe-money-gen] - in if ceiled == floored
  14102. 326.77 s [really-safe-money-gen] - then
  14103. 326.77 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14104. 326.77 s [really-safe-money-gen] - then Nothing
  14105. 326.77 s [really-safe-money-gen] - else Just $ Amount (fromIntegral ceiled)
  14106. 326.77 s [really-safe-money-gen] - else Nothing
  14107. 326.77 s [really-safe-money-gen] + if exponent resultDouble > 65
  14108. 326.78 s [really-safe-money-gen] + then Nothing
  14109. 326.78 s [really-safe-money-gen] + else
  14110. 326.78 s [really-safe-money-gen] + let ceiled :: Natural
  14111. 326.78 s [really-safe-money-gen] + ceiled = (ceiling :: Double -> Natural) resultDouble
  14112. 326.78 s [really-safe-money-gen] + floored :: Natural
  14113. 326.78 s [really-safe-money-gen] + floored = (floor :: Double -> Natural) resultDouble
  14114. 326.78 s [really-safe-money-gen] + in if ceiled == floored
  14115. 326.78 s [really-safe-money-gen] + then
  14116. 326.78 s [really-safe-money-gen] + if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14117. 326.78 s [really-safe-money-gen] + then Nothing
  14118. 326.78 s [really-safe-money-gen] + else Just $ Amount (fromIntegral ceiled)
  14119. 326.78 s [really-safe-money-gen] + else Nothing
  14120. 326.78 s [really-safe-money-gen]
  14121. 326.78 s [really-safe-money-gen] -- | Turn an amount of money into a 'Double'.
  14122. 326.78 s [really-safe-money-gen] --
  14123. 326.78 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:290:79-80
  14124. 326.78 s [really-safe-money-gen] @@ -287,7 +287,7 @@
  14125. 326.78 s [really-safe-money-gen] -- >>> toRatio (QuantisationFactor 100) (Amount 1)
  14126. 326.78 s [really-safe-money-gen] -- 1 % 100
  14127. 326.78 s [really-safe-money-gen] toRatio :: QuantisationFactor -> Amount -> Ratio Natural
  14128. 326.78 s [really-safe-money-gen] -toRatio (QuantisationFactor 0) a = fromIntegral (toMinimalQuantisations a) :% 0
  14129. 326.78 s [really-safe-money-gen] +toRatio (QuantisationFactor 0) a = fromIntegral (toMinimalQuantisations a) :% 1
  14130. 326.78 s [really-safe-money-gen] toRatio (QuantisationFactor quantisationFactor) a =
  14131. 326.78 s [really-safe-money-gen] (fromIntegral :: Word64 -> Natural) (toMinimalQuantisations a)
  14132. 326.78 s [really-safe-money-gen] % (fromIntegral :: Word32 -> Natural) quantisationFactor
  14133. 326.78 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:494:96-97
  14134. 326.78 s [really-safe-money-gen] @@ -491,7 +491,7 @@
  14135. 326.78 s [really-safe-money-gen] let maxBoundI :: Integer
  14136. 326.78 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  14137. 326.78 s [really-safe-money-gen] r :: Integer
  14138. 326.78 s [really-safe-money-gen] - r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  14139. 326.78 s [really-safe-money-gen] + r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 1 l
  14140. 326.78 s [really-safe-money-gen] in if r > maxBoundI
  14141. 326.78 s [really-safe-money-gen] then Nothing
  14142. 326.78 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  14143. 326.78 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:495:10-23
  14144. 326.78 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  14145. 326.78 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  14146. 326.78 s [really-safe-money-gen] r :: Integer
  14147. 326.78 s [really-safe-money-gen] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  14148. 326.78 s [really-safe-money-gen] - in if r > maxBoundI
  14149. 326.78 s [really-safe-money-gen] + in if True
  14150. 326.78 s [really-safe-money-gen] then Nothing
  14151. 326.78 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  14152. 326.78 s [really-safe-money-gen]
  14153. 326.78 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:495:10-23
  14154. 326.78 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  14155. 326.78 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  14156. 326.78 s [really-safe-money-gen] r :: Integer
  14157. 326.78 s [really-safe-money-gen] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  14158. 326.78 s [really-safe-money-gen] - in if r > maxBoundI
  14159. 326.78 s [really-safe-money-gen] + in if False
  14160. 326.78 s [really-safe-money-gen] then Nothing
  14161. 326.78 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  14162. 326.78 s [really-safe-money-gen]
  14163. 326.78 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:341:26-91
  14164. 326.78 s [really-safe-money-gen] @@ -338,7 +338,7 @@
  14165. 326.78 s [really-safe-money-gen] floored = (floor :: Double -> Natural) resultDouble
  14166. 326.78 s [really-safe-money-gen] in if ceiled == floored
  14167. 326.78 s [really-safe-money-gen] then
  14168. 326.78 s [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)
  14169. 326.78 s [really-safe-money-gen] + if False
  14170. 326.78 s [really-safe-money-gen] then Nothing
  14171. 326.78 s [really-safe-money-gen] else Just $ Amount (fromIntegral ceiled)
  14172. 326.78 s [really-safe-money-gen] else Nothing
  14173. 326.78 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:495:10-23
  14174. 326.78 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  14175. 326.78 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  14176. 326.78 s [really-safe-money-gen] r :: Integer
  14177. 326.78 s [really-safe-money-gen] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  14178. 326.78 s [really-safe-money-gen] - in if r > maxBoundI
  14179. 326.78 s [really-safe-money-gen] + in if not (r > maxBoundI)
  14180. 326.78 s [really-safe-money-gen] then Nothing
  14181. 326.78 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  14182. 326.78 s [really-safe-money-gen]
  14183. 326.78 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:495:7-66
  14184. 326.78 s [really-safe-money-gen] @@ -492,9 +492,9 @@
  14185. 326.78 s [really-safe-money-gen] maxBoundI = fromIntegral (maxBound :: Word64)
  14186. 326.78 s [really-safe-money-gen] r :: Integer
  14187. 326.78 s [really-safe-money-gen] r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l
  14188. 326.78 s [really-safe-money-gen] - in if r > maxBoundI
  14189. 326.78 s [really-safe-money-gen] - then Nothing
  14190. 326.78 s [really-safe-money-gen] - else Just (Amount ((fromInteger :: Integer -> Word64) r))
  14191. 326.78 s [really-safe-money-gen] + in if r > maxBoundI
  14192. 326.78 s [really-safe-money-gen] + then Nothing
  14193. 326.78 s [really-safe-money-gen] + else Just (Amount ((fromInteger :: Integer -> Word64) r))
  14194. 326.78 s [really-safe-money-gen]
  14195. 326.78 s [really-safe-money-gen] -- | Add two amounts of money.
  14196. 326.78 s [really-safe-money-gen] --
  14197. 326.78 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:661:30-31
  14198. 326.78 s [really-safe-money-gen] @@ -658,7 +658,7 @@
  14199. 326.78 s [really-safe-money-gen] -- | The amount and the real rate that was used, considering the 'Rounding'
  14200. 326.78 s [really-safe-money-gen] (Maybe Amount, Ratio Natural)
  14201. 326.78 s [really-safe-money-gen] fraction _ (Amount 0) f = (Just zero, f)
  14202. 326.78 s [really-safe-money-gen] -fraction _ _ 0 = (Just zero, 0)
  14203. 326.78 s [really-safe-money-gen] +fraction _ _ 0 = (Just zero, 1)
  14204. 326.78 s [really-safe-money-gen] fraction r (Amount a) f =
  14205. 326.78 s [really-safe-money-gen] let amountAsRatio :: Ratio Natural
  14206. 326.78 s [really-safe-money-gen] amountAsRatio = (fromIntegral :: Word64 -> Ratio Natural) a
  14207. 326.78 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:250:15-16
  14208. 326.78 s [really-safe-money-gen] @@ -247,7 +247,7 @@
  14209. 326.78 s [really-safe-money-gen] -- >>> zero
  14210. 326.78 s [really-safe-money-gen] -- Amount 0
  14211. 326.78 s [really-safe-money-gen] zero :: Amount
  14212. 326.78 s [really-safe-money-gen] -zero = Amount 0
  14213. 326.78 s [really-safe-money-gen] +zero = Amount 1
  14214. 326.78 s [really-safe-money-gen]
  14215. 326.78 s [really-safe-money-gen] -- | Turn an amount into a number of minimal quantisations.
  14216. 326.78 s [really-safe-money-gen] --
  14217. 326.78 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount.hs:668:17-30
  14218. 326.78 s [really-safe-money-gen] @@ -665,10 +665,10 @@
  14219. 326.78 s [really-safe-money-gen] theoreticalResult :: Ratio Natural
  14220. 326.78 s [really-safe-money-gen] theoreticalResult = amountAsRatio * f
  14221. 326.78 s [really-safe-money-gen] rounder :: Ratio Natural -> Natural
  14222. 326.78 s [really-safe-money-gen] - rounder = case r of
  14223. 326.78 s [really-safe-money-gen] - RoundUp -> ceiling
  14224. 326.78 s [really-safe-money-gen] - RoundDown -> floor
  14225. 326.78 s [really-safe-money-gen] - RoundNearest -> round
  14226. 326.78 s [really-safe-money-gen] + rounder = case r of
  14227. 326.78 s [really-safe-money-gen] + RoundUp -> ceiling
  14228. 326.78 s [really-safe-money-gen] + RoundDown -> floor
  14229. 326.78 s [really-safe-money-gen] + RoundNearest -> round
  14230. 326.78 s [really-safe-money-gen] roundedResult :: Natural
  14231. 326.78 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  14232. 326.78 s [really-safe-money-gen] actualRate :: Ratio Natural
  14233. 326.78 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount.hs:668:17-30
  14234. 326.78 s [really-safe-money-gen] @@ -665,10 +665,10 @@
  14235. 326.78 s [really-safe-money-gen] theoreticalResult :: Ratio Natural
  14236. 326.78 s [really-safe-money-gen] theoreticalResult = amountAsRatio * f
  14237. 326.78 s [really-safe-money-gen] rounder :: Ratio Natural -> Natural
  14238. 326.78 s [really-safe-money-gen] - rounder = case r of
  14239. 326.78 s [really-safe-money-gen] - RoundUp -> ceiling
  14240. 326.78 s [really-safe-money-gen] - RoundDown -> floor
  14241. 326.78 s [really-safe-money-gen] - RoundNearest -> round
  14242. 326.78 s [really-safe-money-gen] + rounder = case r of
  14243. 326.78 s [really-safe-money-gen] + RoundUp -> ceiling
  14244. 326.78 s [really-safe-money-gen] + RoundDown -> floor
  14245. 326.78 s [really-safe-money-gen] + RoundNearest -> round
  14246. 326.78 s [really-safe-money-gen] roundedResult :: Natural
  14247. 326.78 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  14248. 326.78 s [really-safe-money-gen] actualRate :: Ratio Natural
  14249. 326.78 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount.hs:668:17-30
  14250. 326.78 s [really-safe-money-gen] @@ -665,10 +665,10 @@
  14251. 326.78 s [really-safe-money-gen] theoreticalResult :: Ratio Natural
  14252. 326.78 s [really-safe-money-gen] theoreticalResult = amountAsRatio * f
  14253. 326.78 s [really-safe-money-gen] rounder :: Ratio Natural -> Natural
  14254. 326.78 s [really-safe-money-gen] - rounder = case r of
  14255. 326.78 s [really-safe-money-gen] - RoundUp -> ceiling
  14256. 326.78 s [really-safe-money-gen] - RoundDown -> floor
  14257. 326.78 s [really-safe-money-gen] - RoundNearest -> round
  14258. 326.78 s [really-safe-money-gen] + rounder = case r of
  14259. 326.78 s [really-safe-money-gen] + RoundUp -> ceiling
  14260. 326.78 s [really-safe-money-gen] + RoundDown -> floor
  14261. 326.78 s [really-safe-money-gen] + RoundNearest -> round
  14262. 326.78 s [really-safe-money-gen] roundedResult :: Natural
  14263. 326.78 s [really-safe-money-gen] roundedResult = rounder theoreticalResult
  14264. 326.78 s [really-safe-money-gen] actualRate :: Ratio Natural
  14265. 326.78 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:681:12-37
  14266. 326.78 s [really-safe-money-gen] @@ -678,7 +678,7 @@
  14267. 326.78 s [really-safe-money-gen] maxBoundN :: Natural
  14268. 326.78 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  14269. 329.31 s [really-safe-money-gen] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  14270. 329.31 s [really-safe-money-gen] - in ( if roundedResult > maxBoundN
  14271. 329.31 s [really-safe-money-gen] + in ( if False
  14272. 329.31 s [really-safe-money-gen] then Nothing
  14273. 329.31 s [really-safe-money-gen] else Just result,
  14274. 329.31 s [really-safe-money-gen] actualRate
  14275. 329.31 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:681:12-37
  14276. 329.31 s [really-safe-money-gen] @@ -678,7 +678,7 @@
  14277. 329.31 s [really-safe-money-gen] maxBoundN :: Natural
  14278. 329.31 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  14279. 329.32 s [really-safe-money-gen] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  14280. 329.32 s [really-safe-money-gen] - in ( if roundedResult > maxBoundN
  14281. 329.32 s [really-safe-money-gen] + in ( if not (roundedResult > maxBoundN)
  14282. 329.32 s [really-safe-money-gen] then Nothing
  14283. 329.32 s [really-safe-money-gen] else Just result,
  14284. 329.32 s [really-safe-money-gen] actualRate
  14285. 329.32 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:681:9-27
  14286. 329.32 s [really-safe-money-gen] @@ -678,9 +678,9 @@
  14287. 329.32 s [really-safe-money-gen] maxBoundN :: Natural
  14288. 329.32 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  14289. 329.32 s [really-safe-money-gen] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  14290. 329.32 s [really-safe-money-gen] - in ( if roundedResult > maxBoundN
  14291. 329.32 s [really-safe-money-gen] - then Nothing
  14292. 329.32 s [really-safe-money-gen] - else Just result,
  14293. 329.32 s [really-safe-money-gen] + in ( if roundedResult > maxBoundN
  14294. 329.32 s [really-safe-money-gen] + then Nothing
  14295. 329.32 s [really-safe-money-gen] + else Just result,
  14296. 329.32 s [really-safe-money-gen] actualRate
  14297. 329.32 s [really-safe-money-gen] )
  14298. 329.32 s [really-safe-money-gen]
  14299. 329.32 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:806:79-92
  14300. 329.32 s [really-safe-money-gen] @@ -803,4 +803,4 @@
  14301. 329.32 s [really-safe-money-gen]
  14302. 329.32 s [really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  14303. 329.32 s [really-safe-money-gen] validateStrictlyPositive :: Amount -> Validation
  14304. 329.32 s [really-safe-money-gen] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  14305. 329.32 s [really-safe-money-gen] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ True
  14306. 329.32 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:806:79-92
  14307. 329.32 s [really-safe-money-gen] @@ -803,4 +803,4 @@
  14308. 329.32 s [really-safe-money-gen]
  14309. 329.32 s [really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  14310. 329.32 s [really-safe-money-gen] validateStrictlyPositive :: Amount -> Validation
  14311. 329.32 s [really-safe-money-gen] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  14312. 329.32 s [really-safe-money-gen] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ False
  14313. 329.32 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:806:79-92
  14314. 329.32 s [really-safe-money-gen] @@ -803,4 +803,4 @@
  14315. 329.32 s [really-safe-money-gen]
  14316. 329.32 s [really-safe-money-gen] -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'.
  14317. 329.32 s [really-safe-money-gen] validateStrictlyPositive :: Amount -> Validation
  14318. 329.32 s [really-safe-money-gen] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero
  14319. 329.32 s [really-safe-money-gen] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ not (amount > zero)
  14320. 329.32 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:607:15-22
  14321. 329.32 s [really-safe-money-gen] @@ -604,7 +604,7 @@
  14322. 329.32 s [really-safe-money-gen] case ad of
  14323. 329.32 s [really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
  14324. 329.32 s [really-safe-money-gen] declare "The larger chunks are larger" $
  14325. 329.32 s [really-safe-money-gen] - a1 > a2
  14326. 329.32 s [really-safe-money-gen] + True
  14327. 329.32 s [really-safe-money-gen] _ -> valid
  14328. 329.32 s [really-safe-money-gen] ]
  14329. 329.32 s [really-safe-money-gen]
  14330. 329.32 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:681:12-37
  14331. 329.32 s [really-safe-money-gen] @@ -678,7 +678,7 @@
  14332. 329.32 s [really-safe-money-gen] maxBoundN :: Natural
  14333. 329.32 s [really-safe-money-gen] maxBoundN = fromIntegral (maxBound :: Word64)
  14334. 329.32 s [really-safe-money-gen] result = Amount ((fromIntegral :: Natural -> Word64) roundedResult)
  14335. 329.32 s [really-safe-money-gen] - in ( if roundedResult > maxBoundN
  14336. 329.32 s [really-safe-money-gen] + in ( if True
  14337. 329.32 s [really-safe-money-gen] then Nothing
  14338. 329.32 s [really-safe-money-gen] else Just result,
  14339. 329.32 s [really-safe-money-gen] actualRate
  14340. 329.32 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:607:15-22
  14341. 329.32 s [really-safe-money-gen] @@ -604,7 +604,7 @@
  14342. 329.32 s [really-safe-money-gen] case ad of
  14343. 329.32 s [really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
  14344. 329.32 s [really-safe-money-gen] declare "The larger chunks are larger" $
  14345. 329.32 s [really-safe-money-gen] - a1 > a2
  14346. 329.32 s [really-safe-money-gen] + False
  14347. 329.32 s [really-safe-money-gen] _ -> valid
  14348. 329.32 s [really-safe-money-gen] ]
  14349. 329.32 s [really-safe-money-gen]
  14350. 329.32 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:607:15-22
  14351. 329.32 s [really-safe-money-gen] @@ -604,7 +604,7 @@
  14352. 329.32 s [really-safe-money-gen] case ad of
  14353. 329.32 s [really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
  14354. 329.32 s [really-safe-money-gen] declare "The larger chunks are larger" $
  14355. 329.32 s [really-safe-money-gen] - a1 > a2
  14356. 329.32 s [really-safe-money-gen] + not (a1 > a2)
  14357. 329.32 s [really-safe-money-gen] _ -> valid
  14358. 329.32 s [really-safe-money-gen] ]
  14359. 329.32 s [really-safe-money-gen]
  14360. 329.32 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount.hs:604:9-21
  14361. 329.32 s [really-safe-money-gen] @@ -601,11 +601,11 @@
  14362. 329.32 s [really-safe-money-gen] validate ad =
  14363. 329.32 s [really-safe-money-gen] mconcat
  14364. 329.32 s [really-safe-money-gen] [ genericValidate ad,
  14365. 329.32 s [really-safe-money-gen] - case ad of
  14366. 329.32 s [really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  14367. 329.32 s [really-safe-money-gen] - declare "The larger chunks are larger" $
  14368. 329.32 s [really-safe-money-gen] - a1 > a2
  14369. 329.32 s [really-safe-money-gen] - _ -> valid
  14370. 329.32 s [really-safe-money-gen] + case ad of
  14371. 329.32 s [really-safe-money-gen] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  14372. 329.32 s [really-safe-money-gen] + declare "The larger chunks are larger" $
  14373. 329.32 s [really-safe-money-gen] + a1 > a2
  14374. 329.32 s [really-safe-money-gen] + _ -> valid
  14375. 329.32 s [really-safe-money-gen] ]
  14376. 329.32 s [really-safe-money-gen]
  14377. 329.32 s [really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
  14378. 329.32 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount.hs:604:9-21
  14379. 329.32 s [really-safe-money-gen] @@ -601,11 +601,11 @@
  14380. 329.32 s [really-safe-money-gen] validate ad =
  14381. 329.32 s [really-safe-money-gen] mconcat
  14382. 329.32 s [really-safe-money-gen] [ genericValidate ad,
  14383. 329.32 s [really-safe-money-gen] - case ad of
  14384. 329.32 s [really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  14385. 329.32 s [really-safe-money-gen] - declare "The larger chunks are larger" $
  14386. 329.32 s [really-safe-money-gen] - a1 > a2
  14387. 329.32 s [really-safe-money-gen] - _ -> valid
  14388. 329.32 s [really-safe-money-gen] + case ad of
  14389. 329.32 s [really-safe-money-gen] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  14390. 329.32 s [really-safe-money-gen] + declare "The larger chunks are larger" $
  14391. 329.32 s [really-safe-money-gen] + a1 > a2
  14392. 329.32 s [really-safe-money-gen] + _ -> valid
  14393. 329.32 s [really-safe-money-gen] ]
  14394. 329.33 s [really-safe-money-gen]
  14395. 329.33 s [really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
  14396. 329.33 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:87:27-28
  14397. 329.33 s [really-safe-money-gen] @@ -84,7 +84,7 @@
  14398. 329.33 s [really-safe-money-gen] fromDecimalLiteral dl = do
  14399. 329.33 s [really-safe-money-gen] irat <-
  14400. 329.33 s [really-safe-money-gen] let r = DecimalLiteral.toRational dl
  14401. 329.33 s [really-safe-money-gen] - in if numerator r == 0
  14402. 329.33 s [really-safe-money-gen] + in if numerator r == 1
  14403. 329.33 s [really-safe-money-gen] then Nothing
  14404. 329.33 s [really-safe-money-gen] else pure r
  14405. 329.33 s [really-safe-money-gen]
  14406. 329.33 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:87:12-28
  14407. 329.33 s [really-safe-money-gen] @@ -84,7 +84,7 @@
  14408. 329.33 s [really-safe-money-gen] fromDecimalLiteral dl = do
  14409. 329.33 s [really-safe-money-gen] irat <-
  14410. 329.33 s [really-safe-money-gen] let r = DecimalLiteral.toRational dl
  14411. 329.33 s [really-safe-money-gen] - in if numerator r == 0
  14412. 329.33 s [really-safe-money-gen] + in if True
  14413. 329.33 s [really-safe-money-gen] then Nothing
  14414. 329.33 s [really-safe-money-gen] else pure r
  14415. 329.33 s [really-safe-money-gen]
  14416. 329.33 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:87:12-28
  14417. 329.33 s [really-safe-money-gen] @@ -84,7 +84,7 @@
  14418. 329.33 s [really-safe-money-gen] fromDecimalLiteral dl = do
  14419. 329.33 s [really-safe-money-gen] irat <-
  14420. 329.33 s [really-safe-money-gen] let r = DecimalLiteral.toRational dl
  14421. 329.33 s [really-safe-money-gen] - in if numerator r == 0
  14422. 329.33 s [really-safe-money-gen] + in if False
  14423. 329.33 s [really-safe-money-gen] then Nothing
  14424. 329.33 s [really-safe-money-gen] else pure r
  14425. 329.33 s [really-safe-money-gen]
  14426. 329.33 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/QuantisationFactor.hs:87:9-22
  14427. 329.33 s [really-safe-money-gen] @@ -84,9 +84,9 @@
  14428. 329.33 s [really-safe-money-gen] fromDecimalLiteral dl = do
  14429. 329.33 s [really-safe-money-gen] irat <-
  14430. 329.33 s [really-safe-money-gen] let r = DecimalLiteral.toRational dl
  14431. 329.33 s [really-safe-money-gen] - in if numerator r == 0
  14432. 329.33 s [really-safe-money-gen] - then Nothing
  14433. 329.33 s [really-safe-money-gen] - else pure r
  14434. 329.33 s [really-safe-money-gen] + in if numerator r == 0
  14435. 329.33 s [really-safe-money-gen] + then Nothing
  14436. 329.33 s [really-safe-money-gen] + else pure r
  14437. 329.33 s [really-safe-money-gen]
  14438. 329.33 s [really-safe-money-gen] rat <-
  14439. 329.33 s [really-safe-money-gen] let r = 1 / irat
  14440. 329.33 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:92:13-14
  14441. 329.33 s [really-safe-money-gen] @@ -89,7 +89,7 @@
  14442. 329.33 s [really-safe-money-gen] else pure r
  14443. 329.33 s [really-safe-money-gen]
  14444. 329.33 s [really-safe-money-gen] rat <-
  14445. 329.33 s [really-safe-money-gen] - let r = 1 / irat
  14446. 329.33 s [really-safe-money-gen] + let r = 0 / irat
  14447. 329.33 s [really-safe-money-gen] in if r < 0
  14448. 329.33 s [really-safe-money-gen] then Nothing
  14449. 329.33 s [really-safe-money-gen] else Just r
  14450. 329.33 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:92:13-14
  14451. 329.33 s [really-safe-money-gen] @@ -89,7 +89,7 @@
  14452. 329.33 s [really-safe-money-gen] else pure r
  14453. 329.33 s [really-safe-money-gen]
  14454. 329.33 s [really-safe-money-gen] rat <-
  14455. 329.33 s [really-safe-money-gen] - let r = 1 / irat
  14456. 329.33 s [really-safe-money-gen] + let r = -1 / irat
  14457. 329.33 s [really-safe-money-gen] in if r < 0
  14458. 329.33 s [really-safe-money-gen] then Nothing
  14459. 329.33 s [really-safe-money-gen] else Just r
  14460. 329.33 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:93:16-17
  14461. 329.33 s [really-safe-money-gen] @@ -90,7 +90,7 @@
  14462. 329.33 s [really-safe-money-gen]
  14463. 329.33 s [really-safe-money-gen] rat <-
  14464. 329.33 s [really-safe-money-gen] let r = 1 / irat
  14465. 329.33 s [really-safe-money-gen] - in if r < 0
  14466. 329.33 s [really-safe-money-gen] + in if r < 1
  14467. 329.33 s [really-safe-money-gen] then Nothing
  14468. 329.33 s [really-safe-money-gen] else Just r
  14469. 329.33 s [really-safe-money-gen]
  14470. 329.33 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount.hs:603:7-8
  14471. 329.33 s [really-safe-money-gen] @@ -600,13 +600,7 @@
  14472. 329.33 s [really-safe-money-gen] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  14473. 329.33 s [really-safe-money-gen] validate ad =
  14474. 329.33 s [really-safe-money-gen] mconcat
  14475. 329.33 s [really-safe-money-gen] - [ genericValidate ad,
  14476. 329.33 s [really-safe-money-gen] - case ad of
  14477. 329.33 s [really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  14478. 329.33 s [really-safe-money-gen] - declare "The larger chunks are larger" $
  14479. 329.33 s [really-safe-money-gen] - a1 > a2
  14480. 329.33 s [really-safe-money-gen] - _ -> valid
  14481. 329.33 s [really-safe-money-gen] - ]
  14482. 329.33 s [really-safe-money-gen] + []
  14483. 329.33 s [really-safe-money-gen]
  14484. 329.33 s [really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
  14485. 329.33 s [really-safe-money-gen]
  14486. 329.33 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount.hs:603:7-8
  14487. 329.33 s [really-safe-money-gen] @@ -600,13 +600,13 @@
  14488. 329.33 s [really-safe-money-gen] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  14489. 329.33 s [really-safe-money-gen] validate ad =
  14490. 329.33 s [really-safe-money-gen] mconcat
  14491. 329.33 s [really-safe-money-gen] - [ genericValidate ad,
  14492. 329.33 s [really-safe-money-gen] - case ad of
  14493. 329.33 s [really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  14494. 329.33 s [really-safe-money-gen] - declare "The larger chunks are larger" $
  14495. 329.33 s [really-safe-money-gen] - a1 > a2
  14496. 329.33 s [really-safe-money-gen] - _ -> valid
  14497. 329.33 s [really-safe-money-gen] - ]
  14498. 329.33 s [really-safe-money-gen] + [ genericValidate ad,
  14499. 329.33 s [really-safe-money-gen] + case ad of
  14500. 329.33 s [really-safe-money-gen] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  14501. 329.33 s [really-safe-money-gen] + declare "The larger chunks are larger" $
  14502. 329.33 s [really-safe-money-gen] + a1 > a2
  14503. 329.33 s [really-safe-money-gen] + _ -> valid
  14504. 329.33 s [really-safe-money-gen] + ]
  14505. 329.33 s [really-safe-money-gen]
  14506. 329.33 s [really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
  14507. 329.33 s [really-safe-money-gen]
  14508. 329.33 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:93:12-17
  14509. 329.33 s [really-safe-money-gen] @@ -90,7 +90,7 @@
  14510. 329.33 s [really-safe-money-gen]
  14511. 329.33 s [really-safe-money-gen] rat <-
  14512. 329.33 s [really-safe-money-gen] let r = 1 / irat
  14513. 329.33 s [really-safe-money-gen] - in if r < 0
  14514. 329.33 s [really-safe-money-gen] + in if True
  14515. 329.33 s [really-safe-money-gen] then Nothing
  14516. 329.33 s [really-safe-money-gen] else Just r
  14517. 329.33 s [really-safe-money-gen]
  14518. 329.33 s [really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:87:12-28
  14519. 329.33 s [really-safe-money-gen] @@ -84,7 +84,7 @@
  14520. 329.33 s [really-safe-money-gen] fromDecimalLiteral dl = do
  14521. 329.33 s [really-safe-money-gen] irat <-
  14522. 329.33 s [really-safe-money-gen] let r = DecimalLiteral.toRational dl
  14523. 329.33 s [really-safe-money-gen] - in if numerator r == 0
  14524. 329.33 s [really-safe-money-gen] + in if not (numerator r == 0)
  14525. 329.33 s [really-safe-money-gen] then Nothing
  14526. 329.33 s [really-safe-money-gen] else pure r
  14527. 329.33 s [really-safe-money-gen]
  14528. 329.33 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:93:12-17
  14529. 329.33 s [really-safe-money-gen] @@ -90,7 +90,7 @@
  14530. 329.33 s [really-safe-money-gen]
  14531. 329.33 s [really-safe-money-gen] rat <-
  14532. 329.33 s [really-safe-money-gen] let r = 1 / irat
  14533. 329.33 s [really-safe-money-gen] - in if r < 0
  14534. 329.33 s [really-safe-money-gen] + in if False
  14535. 329.33 s [really-safe-money-gen] then Nothing
  14536. 329.33 s [really-safe-money-gen] else Just r
  14537. 329.33 s [really-safe-money-gen]
  14538. 331.48 s [really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:93:12-17
  14539. 331.57 s [really-safe-money-gen] @@ -90,7 +90,7 @@
  14540. 331.57 s [really-safe-money-gen]
  14541. 331.57 s [really-safe-money-gen] rat <-
  14542. 331.57 s [really-safe-money-gen] let r = 1 / irat
  14543. 331.57 s [really-safe-money-gen] - in if r < 0
  14544. 331.57 s [really-safe-money-gen] + in if not (r < 0)
  14545. 331.57 s [really-safe-money-gen] then Nothing
  14546. 331.57 s [really-safe-money-gen] else Just r
  14547. 331.57 s [really-safe-money-gen]
  14548. 331.57 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/QuantisationFactor.hs:93:9-22
  14549. 331.57 s [really-safe-money-gen] @@ -90,9 +90,9 @@
  14550. 331.57 s [really-safe-money-gen]
  14551. 331.57 s [really-safe-money-gen] rat <-
  14552. 331.57 s [really-safe-money-gen] let r = 1 / irat
  14553. 331.57 s [really-safe-money-gen] - in if r < 0
  14554. 331.57 s [really-safe-money-gen] - then Nothing
  14555. 331.57 s [really-safe-money-gen] - else Just r
  14556. 331.57 s [really-safe-money-gen] + in if r < 0
  14557. 331.58 s [really-safe-money-gen] + then Nothing
  14558. 331.58 s [really-safe-money-gen] + else Just r
  14559. 331.58 s [really-safe-money-gen]
  14560. 331.58 s [really-safe-money-gen] fac <-
  14561. 331.58 s [really-safe-money-gen] if denominator rat == 1
  14562. 331.58 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:98:27-28
  14563. 331.58 s [really-safe-money-gen] @@ -95,7 +95,7 @@
  14564. 331.58 s [really-safe-money-gen] else Just r
  14565. 331.58 s [really-safe-money-gen]
  14566. 331.58 s [really-safe-money-gen] fac <-
  14567. 331.58 s [really-safe-money-gen] - if denominator rat == 1
  14568. 331.58 s [really-safe-money-gen] + if denominator rat == 0
  14569. 331.58 s [really-safe-money-gen] then Just (numerator rat)
  14570. 331.58 s [really-safe-money-gen] else Nothing
  14571. 331.58 s [really-safe-money-gen]
  14572. 331.58 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:98:27-28
  14573. 331.58 s [really-safe-money-gen] @@ -95,7 +95,7 @@
  14574. 331.58 s [really-safe-money-gen] else Just r
  14575. 331.58 s [really-safe-money-gen]
  14576. 331.58 s [really-safe-money-gen] fac <-
  14577. 331.58 s [really-safe-money-gen] - if denominator rat == 1
  14578. 331.58 s [really-safe-money-gen] + if denominator rat == -1
  14579. 331.58 s [really-safe-money-gen] then Just (numerator rat)
  14580. 331.58 s [really-safe-money-gen] else Nothing
  14581. 331.58 s [really-safe-money-gen]
  14582. 331.58 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:98:8-28
  14583. 331.58 s [really-safe-money-gen] @@ -95,7 +95,7 @@
  14584. 331.58 s [really-safe-money-gen] else Just r
  14585. 331.58 s [really-safe-money-gen]
  14586. 331.58 s [really-safe-money-gen] fac <-
  14587. 331.58 s [really-safe-money-gen] - if denominator rat == 1
  14588. 331.58 s [really-safe-money-gen] + if True
  14589. 331.58 s [really-safe-money-gen] then Just (numerator rat)
  14590. 331.58 s [really-safe-money-gen] else Nothing
  14591. 331.58 s [really-safe-money-gen]
  14592. 331.58 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:98:8-28
  14593. 331.58 s [really-safe-money-gen] @@ -95,7 +95,7 @@
  14594. 331.58 s [really-safe-money-gen] else Just r
  14595. 331.58 s [really-safe-money-gen]
  14596. 331.58 s [really-safe-money-gen] fac <-
  14597. 331.58 s [really-safe-money-gen] - if denominator rat == 1
  14598. 331.58 s [really-safe-money-gen] + if False
  14599. 331.58 s [really-safe-money-gen] then Just (numerator rat)
  14600. 331.58 s [really-safe-money-gen] else Nothing
  14601. 331.58 s [really-safe-money-gen]
  14602. 331.58 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/QuantisationFactor.hs:98:5-19
  14603. 331.58 s [really-safe-money-gen] @@ -95,9 +95,9 @@
  14604. 331.58 s [really-safe-money-gen] else Just r
  14605. 331.58 s [really-safe-money-gen]
  14606. 331.58 s [really-safe-money-gen] fac <-
  14607. 331.58 s [really-safe-money-gen] - if denominator rat == 1
  14608. 331.58 s [really-safe-money-gen] - then Just (numerator rat)
  14609. 331.58 s [really-safe-money-gen] - else Nothing
  14610. 331.58 s [really-safe-money-gen] + if denominator rat == 1
  14611. 331.58 s [really-safe-money-gen] + then Just (numerator rat)
  14612. 331.58 s [really-safe-money-gen] + else Nothing
  14613. 331.58 s [really-safe-money-gen]
  14614. 331.58 s [really-safe-money-gen] if fac <= fromIntegral (maxBound :: Word32)
  14615. 331.58 s [really-safe-money-gen] then Just (QuantisationFactor (fromIntegral fac))
  14616. 331.58 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:102:6-46
  14617. 331.58 s [really-safe-money-gen] @@ -99,6 +99,6 @@
  14618. 331.58 s [really-safe-money-gen] then Just (numerator rat)
  14619. 331.58 s [really-safe-money-gen] else Nothing
  14620. 331.58 s [really-safe-money-gen]
  14621. 331.58 s [really-safe-money-gen] - if fac <= fromIntegral (maxBound :: Word32)
  14622. 331.58 s [really-safe-money-gen] + if True
  14623. 331.58 s [really-safe-money-gen] then Just (QuantisationFactor (fromIntegral fac))
  14624. 331.58 s [really-safe-money-gen] else Nothing
  14625. 331.58 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:102:6-46
  14626. 331.58 s [really-safe-money-gen] @@ -99,6 +99,6 @@
  14627. 331.58 s [really-safe-money-gen] then Just (numerator rat)
  14628. 331.58 s [really-safe-money-gen] else Nothing
  14629. 331.58 s [really-safe-money-gen]
  14630. 331.58 s [really-safe-money-gen] - if fac <= fromIntegral (maxBound :: Word32)
  14631. 331.58 s [really-safe-money-gen] + if False
  14632. 331.58 s [really-safe-money-gen] then Just (QuantisationFactor (fromIntegral fac))
  14633. 331.58 s [really-safe-money-gen] else Nothing
  14634. 331.58 s [really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:102:6-46
  14635. 331.58 s [really-safe-money-gen] @@ -99,6 +99,6 @@
  14636. 331.58 s [really-safe-money-gen] then Just (numerator rat)
  14637. 331.58 s [really-safe-money-gen] else Nothing
  14638. 331.58 s [really-safe-money-gen]
  14639. 331.58 s [really-safe-money-gen] - if fac <= fromIntegral (maxBound :: Word32)
  14640. 331.58 s [really-safe-money-gen] + if not (fac <= fromIntegral (maxBound :: Word32))
  14641. 331.58 s [really-safe-money-gen] then Just (QuantisationFactor (fromIntegral fac))
  14642. 331.58 s [really-safe-money-gen] else Nothing
  14643. 331.58 s [really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:98:8-28
  14644. 331.58 s [really-safe-money-gen] @@ -95,7 +95,7 @@
  14645. 331.58 s [really-safe-money-gen] else Just r
  14646. 331.58 s [really-safe-money-gen]
  14647. 331.58 s [really-safe-money-gen] fac <-
  14648. 331.59 s [really-safe-money-gen] - if denominator rat == 1
  14649. 331.59 s [really-safe-money-gen] + if not (denominator rat == 1)
  14650. 331.59 s [really-safe-money-gen] then Just (numerator rat)
  14651. 331.59 s [really-safe-money-gen] else Nothing
  14652. 331.59 s [really-safe-money-gen]
  14653. 331.59 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:67:67-68
  14654. 331.59 s [really-safe-money-gen] @@ -64,7 +64,7 @@
  14655. 331.59 s [really-safe-money-gen] -- Just (DecimalLiteral Nothing 1 0)
  14656. 331.59 s [really-safe-money-gen] toDecimalLiteral :: QuantisationFactor -> Maybe DecimalLiteral
  14657. 331.59 s [really-safe-money-gen] toDecimalLiteral (QuantisationFactor qfw) =
  14658. 331.59 s [really-safe-money-gen] - DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (1 % fromIntegral qfw)
  14659. 331.59 s [really-safe-money-gen] + DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (-1 % fromIntegral qfw)
  14660. 331.59 s [really-safe-money-gen]
  14661. 331.59 s [really-safe-money-gen] -- | Parse a 'QuantisationFactor' from a 'DecimalLiteral' that represents the smallest unit
  14662. 331.59 s [really-safe-money-gen] -- TODO explain that it's the inverse.
  14663. 331.59 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:40:62-63
  14664. 331.59 s [really-safe-money-gen] @@ -37,7 +37,7 @@
  14665. 331.59 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  14666. 331.59 s [really-safe-money-gen] mconcat
  14667. 331.59 s [really-safe-money-gen] [ genericValidate qf,
  14668. 331.59 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  14669. 331.59 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ w /= 1
  14670. 331.59 s [really-safe-money-gen] ]
  14671. 331.59 s [really-safe-money-gen]
  14672. 331.59 s [really-safe-money-gen] instance NFData QuantisationFactor
  14673. 331.59 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63
  14674. 331.59 s [really-safe-money-gen] @@ -37,7 +37,7 @@
  14675. 331.59 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  14676. 331.59 s [really-safe-money-gen] mconcat
  14677. 331.59 s [really-safe-money-gen] [ genericValidate qf,
  14678. 331.59 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  14679. 331.59 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ False
  14680. 331.59 s [really-safe-money-gen] ]
  14681. 331.59 s [really-safe-money-gen]
  14682. 331.59 s [really-safe-money-gen] instance NFData QuantisationFactor
  14683. 331.59 s [really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:40:57-63
  14684. 331.59 s [really-safe-money-gen] @@ -37,7 +37,7 @@
  14685. 331.59 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  14686. 331.59 s [really-safe-money-gen] mconcat
  14687. 331.59 s [really-safe-money-gen] [ genericValidate qf,
  14688. 331.59 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  14689. 331.59 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ not (w /= 0)
  14690. 331.59 s [really-safe-money-gen] ]
  14691. 331.59 s [really-safe-money-gen]
  14692. 331.59 s [really-safe-money-gen] instance NFData QuantisationFactor
  14693. 331.59 s [really-safe-money-gen] Testing mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8
  14694. 331.59 s [really-safe-money-gen] @@ -36,9 +36,7 @@
  14695. 331.59 s [really-safe-money-gen] instance Validity QuantisationFactor where
  14696. 331.59 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  14697. 331.59 s [really-safe-money-gen] mconcat
  14698. 331.59 s [really-safe-money-gen] - [ genericValidate qf,
  14699. 331.59 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  14700. 331.59 s [really-safe-money-gen] - ]
  14701. 331.59 s [really-safe-money-gen] + []
  14702. 331.59 s [really-safe-money-gen]
  14703. 331.59 s [really-safe-money-gen] instance NFData QuantisationFactor
  14704. 331.59 s [really-safe-money-gen]
  14705. 331.59 s [really-safe-money-gen] Testing mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8
  14706. 331.59 s [really-safe-money-gen] @@ -36,9 +36,9 @@
  14707. 331.59 s [really-safe-money-gen] instance Validity QuantisationFactor where
  14708. 331.59 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  14709. 331.59 s [really-safe-money-gen] mconcat
  14710. 331.59 s [really-safe-money-gen] - [ genericValidate qf,
  14711. 331.59 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  14712. 331.59 s [really-safe-money-gen] - ]
  14713. 331.59 s [really-safe-money-gen] + [ genericValidate qf,
  14714. 331.59 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ w /= 0
  14715. 331.59 s [really-safe-money-gen] + ]
  14716. 331.59 s [really-safe-money-gen]
  14717. 331.59 s [really-safe-money-gen] instance NFData QuantisationFactor
  14718. 331.59 s [really-safe-money-gen]
  14719. 331.59 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:553:7-39
  14720. 331.59 s [really-safe-money-gen] @@ -550,11 +550,11 @@
  14721. 331.59 s [really-safe-money-gen] let aa1 = abs a1
  14722. 331.59 s [really-safe-money-gen] aa2 = abs a2
  14723. 331.59 s [really-safe-money-gen] mr = Amount.rate qf1 aa1 qf2 aa2
  14724. 331.59 s [really-safe-money-gen] - in case (a1, a2) of
  14725. 331.59 s [really-safe-money-gen] - (Positive _, Positive _) -> mr
  14726. 331.59 s [really-safe-money-gen] - (Positive _, Negative _) -> Nothing
  14727. 331.59 s [really-safe-money-gen] - (Negative _, Positive _) -> Nothing
  14728. 331.59 s [really-safe-money-gen] - (Negative _, Negative _) -> mr
  14729. 331.59 s [really-safe-money-gen] + in case (a1, a2) of
  14730. 331.59 s [really-safe-money-gen] + (Positive _, Positive _) -> mr
  14731. 331.59 s [really-safe-money-gen] + (Positive _, Negative _) -> Nothing
  14732. 331.59 s [really-safe-money-gen] + (Negative _, Positive _) -> Nothing
  14733. 331.59 s [really-safe-money-gen] + (Negative _, Negative _) -> mr
  14734. 331.59 s [really-safe-money-gen]
  14735. 331.59 s [really-safe-money-gen] -- | Convert an amount of money of one currency into an amount of money of
  14736. 331.59 s [really-safe-money-gen] -- another currency using a conversion rate.
  14737. 331.59 s [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:67:67-68
  14738. 331.59 s [really-safe-money-gen] @@ -64,7 +64,7 @@
  14739. 331.59 s [really-safe-money-gen] -- Just (DecimalLiteral Nothing 1 0)
  14740. 331.59 s [really-safe-money-gen] toDecimalLiteral :: QuantisationFactor -> Maybe DecimalLiteral
  14741. 331.59 s [really-safe-money-gen] toDecimalLiteral (QuantisationFactor qfw) =
  14742. 331.59 s [really-safe-money-gen] - DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (1 % fromIntegral qfw)
  14743. 331.59 s [really-safe-money-gen] + DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (0 % fromIntegral qfw)
  14744. 331.59 s [really-safe-money-gen]
  14745. 331.59 s [really-safe-money-gen] -- | Parse a 'QuantisationFactor' from a 'DecimalLiteral' that represents the smallest unit
  14746. 331.59 s [really-safe-money-gen] -- TODO explain that it's the inverse.
  14747. 331.59 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:553:7-39
  14748. 331.59 s [really-safe-money-gen] @@ -550,11 +550,11 @@
  14749. 331.59 s [really-safe-money-gen] let aa1 = abs a1
  14750. 331.59 s [really-safe-money-gen] aa2 = abs a2
  14751. 331.59 s [really-safe-money-gen] mr = Amount.rate qf1 aa1 qf2 aa2
  14752. 331.59 s [really-safe-money-gen] - in case (a1, a2) of
  14753. 331.59 s [really-safe-money-gen] - (Positive _, Positive _) -> mr
  14754. 331.59 s [really-safe-money-gen] - (Positive _, Negative _) -> Nothing
  14755. 331.59 s [really-safe-money-gen] - (Negative _, Positive _) -> Nothing
  14756. 331.59 s [really-safe-money-gen] - (Negative _, Negative _) -> mr
  14757. 331.59 s [really-safe-money-gen] + in case (a1, a2) of
  14758. 331.59 s [really-safe-money-gen] + (Positive _, Positive _) -> mr
  14759. 331.59 s [really-safe-money-gen] + (Positive _, Negative _) -> Nothing
  14760. 331.59 s [really-safe-money-gen] + (Negative _, Positive _) -> Nothing
  14761. 331.59 s [really-safe-money-gen] + (Negative _, Negative _) -> mr
  14762. 331.60 s [really-safe-money-gen]
  14763. 331.60 s [really-safe-money-gen] -- | Convert an amount of money of one currency into an amount of money of
  14764. 331.60 s [really-safe-money-gen] -- another currency using a conversion rate.
  14765. 331.60 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63
  14766. 331.60 s [really-safe-money-gen] @@ -37,7 +37,7 @@
  14767. 331.60 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  14768. 331.60 s [really-safe-money-gen] mconcat
  14769. 331.60 s [really-safe-money-gen] [ genericValidate qf,
  14770. 331.60 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  14771. 331.60 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ True
  14772. 331.60 s [really-safe-money-gen] ]
  14773. 331.60 s [really-safe-money-gen]
  14774. 331.60 s [really-safe-money-gen] instance NFData QuantisationFactor
  14775. 331.60 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:553:7-39
  14776. 331.60 s [really-safe-money-gen] @@ -550,11 +550,11 @@
  14777. 331.60 s [really-safe-money-gen] let aa1 = abs a1
  14778. 331.60 s [really-safe-money-gen] aa2 = abs a2
  14779. 331.60 s [really-safe-money-gen] mr = Amount.rate qf1 aa1 qf2 aa2
  14780. 331.60 s [really-safe-money-gen] - in case (a1, a2) of
  14781. 331.60 s [really-safe-money-gen] - (Positive _, Positive _) -> mr
  14782. 331.60 s [really-safe-money-gen] - (Positive _, Negative _) -> Nothing
  14783. 331.60 s [really-safe-money-gen] - (Negative _, Positive _) -> Nothing
  14784. 331.60 s [really-safe-money-gen] - (Negative _, Negative _) -> mr
  14785. 331.60 s [really-safe-money-gen] + in case (a1, a2) of
  14786. 331.60 s [really-safe-money-gen] + (Positive _, Positive _) -> mr
  14787. 331.60 s [really-safe-money-gen] + (Positive _, Negative _) -> Nothing
  14788. 331.60 s [really-safe-money-gen] + (Negative _, Positive _) -> Nothing
  14789. 331.60 s [really-safe-money-gen] + (Negative _, Negative _) -> mr
  14790. 331.60 s [really-safe-money-gen]
  14791. 331.60 s [really-safe-money-gen] -- | Convert an amount of money of one currency into an amount of money of
  14792. 331.60 s [really-safe-money-gen] -- another currency using a conversion rate.
  14793. 332.38 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:591:7-44
  14794. 332.38 s [really-safe-money-gen] @@ -588,9 +588,9 @@
  14795. 332.38 s [really-safe-money-gen] (Maybe Account, Maybe ConversionRate)
  14796. 332.38 s [really-safe-money-gen] convert r qf1 a cr qf2 =
  14797. 332.38 s [really-safe-money-gen] let (ma, mr) = Amount.convert r qf1 (abs a) cr qf2
  14798. 332.38 s [really-safe-money-gen] - in case a of
  14799. 332.38 s [really-safe-money-gen] - Positive _ -> (Positive <$> ma, mr)
  14800. 332.38 s [really-safe-money-gen] - Negative _ -> (Negative <$> ma, mr)
  14801. 332.38 s [really-safe-money-gen] + in case a of
  14802. 332.38 s [really-safe-money-gen] + Positive _ -> (Positive <$> ma, mr)
  14803. 332.39 s [really-safe-money-gen] + Negative _ -> (Negative <$> ma, mr)
  14804. 332.39 s [really-safe-money-gen]
  14805. 332.39 s [really-safe-money-gen] -- | Format an account of money without a symbol.
  14806. 332.39 s [really-safe-money-gen] --
  14807. 332.39 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:421:11-29
  14808. 332.39 s [really-safe-money-gen] @@ -418,13 +418,13 @@
  14809. 332.39 s [really-safe-money-gen] multiply :: Int32 -> Account -> Maybe Account
  14810. 332.39 s [really-safe-money-gen] multiply factor account =
  14811. 332.39 s [really-safe-money-gen] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  14812. 332.39 s [really-safe-money-gen] - f = case (compare factor 0, compare account zero) of
  14813. 332.39 s [really-safe-money-gen] - (EQ, _) -> const zero
  14814. 332.39 s [really-safe-money-gen] - (_, EQ) -> const zero
  14815. 332.39 s [really-safe-money-gen] - (GT, GT) -> Positive
  14816. 332.39 s [really-safe-money-gen] - (GT, LT) -> Negative
  14817. 332.39 s [really-safe-money-gen] - (LT, GT) -> Negative
  14818. 332.39 s [really-safe-money-gen] - (LT, LT) -> Positive
  14819. 332.39 s [really-safe-money-gen] + f = case (compare factor 0, compare account zero) of
  14820. 332.39 s [really-safe-money-gen] + (EQ, _) -> const zero
  14821. 332.39 s [really-safe-money-gen] + (_, EQ) -> const zero
  14822. 332.39 s [really-safe-money-gen] + (GT, GT) -> Positive
  14823. 332.39 s [really-safe-money-gen] + (GT, LT) -> Negative
  14824. 332.39 s [really-safe-money-gen] + (LT, GT) -> Negative
  14825. 332.39 s [really-safe-money-gen] + (LT, LT) -> Positive
  14826. 332.39 s [really-safe-money-gen] in f <$> Amount.multiply af (abs account)
  14827. 332.39 s [really-safe-money-gen]
  14828. 332.39 s [really-safe-money-gen] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  14829. 332.39 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:421:11-29
  14830. 332.39 s [really-safe-money-gen] @@ -418,13 +418,13 @@
  14831. 332.39 s [really-safe-money-gen] multiply :: Int32 -> Account -> Maybe Account
  14832. 332.39 s [really-safe-money-gen] multiply factor account =
  14833. 332.39 s [really-safe-money-gen] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  14834. 332.39 s [really-safe-money-gen] - f = case (compare factor 0, compare account zero) of
  14835. 332.39 s [really-safe-money-gen] - (EQ, _) -> const zero
  14836. 332.39 s [really-safe-money-gen] - (_, EQ) -> const zero
  14837. 332.39 s [really-safe-money-gen] - (GT, GT) -> Positive
  14838. 332.39 s [really-safe-money-gen] - (GT, LT) -> Negative
  14839. 332.39 s [really-safe-money-gen] - (LT, GT) -> Negative
  14840. 332.39 s [really-safe-money-gen] - (LT, LT) -> Positive
  14841. 332.39 s [really-safe-money-gen] + f = case (compare factor 0, compare account zero) of
  14842. 332.39 s [really-safe-money-gen] + (EQ, _) -> const zero
  14843. 332.39 s [really-safe-money-gen] + (_, EQ) -> const zero
  14844. 332.39 s [really-safe-money-gen] + (GT, GT) -> Positive
  14845. 332.39 s [really-safe-money-gen] + (GT, LT) -> Negative
  14846. 332.39 s [really-safe-money-gen] + (LT, GT) -> Negative
  14847. 332.39 s [really-safe-money-gen] + (LT, LT) -> Positive
  14848. 332.39 s [really-safe-money-gen] in f <$> Amount.multiply af (abs account)
  14849. 332.39 s [really-safe-money-gen]
  14850. 332.39 s [really-safe-money-gen] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  14851. 332.39 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:421:11-29
  14852. 332.39 s [really-safe-money-gen] @@ -418,13 +418,13 @@
  14853. 332.39 s [really-safe-money-gen] multiply :: Int32 -> Account -> Maybe Account
  14854. 332.39 s [really-safe-money-gen] multiply factor account =
  14855. 332.39 s [really-safe-money-gen] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  14856. 332.39 s [really-safe-money-gen] - f = case (compare factor 0, compare account zero) of
  14857. 332.40 s [really-safe-money-gen] - (EQ, _) -> const zero
  14858. 332.40 s [really-safe-money-gen] - (_, EQ) -> const zero
  14859. 332.40 s [really-safe-money-gen] - (GT, GT) -> Positive
  14860. 332.40 s [really-safe-money-gen] - (GT, LT) -> Negative
  14861. 332.40 s [really-safe-money-gen] - (LT, GT) -> Negative
  14862. 332.40 s [really-safe-money-gen] - (LT, LT) -> Positive
  14863. 332.40 s [really-safe-money-gen] + f = case (compare factor 0, compare account zero) of
  14864. 332.40 s [really-safe-money-gen] + (EQ, _) -> const zero
  14865. 332.40 s [really-safe-money-gen] + (_, EQ) -> const zero
  14866. 332.40 s [really-safe-money-gen] + (GT, GT) -> Positive
  14867. 332.40 s [really-safe-money-gen] + (GT, LT) -> Negative
  14868. 332.40 s [really-safe-money-gen] + (LT, GT) -> Negative
  14869. 332.40 s [really-safe-money-gen] + (LT, LT) -> Positive
  14870. 332.40 s [really-safe-money-gen] in f <$> Amount.multiply af (abs account)
  14871. 332.40 s [really-safe-money-gen]
  14872. 332.40 s [really-safe-money-gen] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  14873. 332.40 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:421:11-29
  14874. 332.40 s [really-safe-money-gen] @@ -418,13 +418,13 @@
  14875. 332.40 s [really-safe-money-gen] multiply :: Int32 -> Account -> Maybe Account
  14876. 332.40 s [really-safe-money-gen] multiply factor account =
  14877. 332.40 s [really-safe-money-gen] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  14878. 332.40 s [really-safe-money-gen] - f = case (compare factor 0, compare account zero) of
  14879. 332.40 s [really-safe-money-gen] - (EQ, _) -> const zero
  14880. 332.40 s [really-safe-money-gen] - (_, EQ) -> const zero
  14881. 332.40 s [really-safe-money-gen] - (GT, GT) -> Positive
  14882. 332.40 s [really-safe-money-gen] - (GT, LT) -> Negative
  14883. 332.40 s [really-safe-money-gen] - (LT, GT) -> Negative
  14884. 332.40 s [really-safe-money-gen] - (LT, LT) -> Positive
  14885. 332.40 s [really-safe-money-gen] + f = case (compare factor 0, compare account zero) of
  14886. 332.40 s [really-safe-money-gen] + (EQ, _) -> const zero
  14887. 332.40 s [really-safe-money-gen] + (_, EQ) -> const zero
  14888. 332.40 s [really-safe-money-gen] + (GT, GT) -> Positive
  14889. 332.40 s [really-safe-money-gen] + (GT, LT) -> Negative
  14890. 332.40 s [really-safe-money-gen] + (LT, GT) -> Negative
  14891. 332.40 s [really-safe-money-gen] + (LT, LT) -> Positive
  14892. 332.40 s [really-safe-money-gen] in f <$> Amount.multiply af (abs account)
  14893. 332.40 s [really-safe-money-gen]
  14894. 332.40 s [really-safe-money-gen] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  14895. 332.40 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:553:7-39
  14896. 332.40 s [really-safe-money-gen] @@ -550,11 +550,11 @@
  14897. 332.40 s [really-safe-money-gen] let aa1 = abs a1
  14898. 332.40 s [really-safe-money-gen] aa2 = abs a2
  14899. 332.40 s [really-safe-money-gen] mr = Amount.rate qf1 aa1 qf2 aa2
  14900. 332.40 s [really-safe-money-gen] - in case (a1, a2) of
  14901. 332.40 s [really-safe-money-gen] - (Positive _, Positive _) -> mr
  14902. 332.40 s [really-safe-money-gen] - (Positive _, Negative _) -> Nothing
  14903. 332.40 s [really-safe-money-gen] - (Negative _, Positive _) -> Nothing
  14904. 332.40 s [really-safe-money-gen] - (Negative _, Negative _) -> mr
  14905. 332.40 s [really-safe-money-gen] + in case (a1, a2) of
  14906. 332.40 s [really-safe-money-gen] + (Positive _, Positive _) -> mr
  14907. 332.40 s [really-safe-money-gen] + (Positive _, Negative _) -> Nothing
  14908. 332.40 s [really-safe-money-gen] + (Negative _, Positive _) -> Nothing
  14909. 332.40 s [really-safe-money-gen] + (Negative _, Negative _) -> mr
  14910. 332.40 s [really-safe-money-gen]
  14911. 332.40 s [really-safe-money-gen] -- | Convert an amount of money of one currency into an amount of money of
  14912. 332.40 s [really-safe-money-gen] -- another currency using a conversion rate.
  14913. 332.40 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:451:14-23
  14914. 332.40 s [really-safe-money-gen] @@ -448,7 +448,7 @@
  14915. 332.40 s [really-safe-money-gen] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  14916. 332.40 s [really-safe-money-gen] DistributedZero -> DistributedZero
  14917. 332.40 s [really-safe-money-gen] DistributedIntoEqualChunks numberOfChunks chunk ->
  14918. 332.40 s [really-safe-money-gen] - if a >= zero
  14919. 332.40 s [really-safe-money-gen] + if True
  14920. 332.40 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  14921. 332.40 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  14922. 332.40 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  14923. 332.40 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:421:32-33
  14924. 332.40 s [really-safe-money-gen] @@ -418,7 +418,7 @@
  14925. 332.40 s [really-safe-money-gen] multiply :: Int32 -> Account -> Maybe Account
  14926. 332.40 s [really-safe-money-gen] multiply factor account =
  14927. 332.41 s [really-safe-money-gen] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  14928. 332.41 s [really-safe-money-gen] - f = case (compare factor 0, compare account zero) of
  14929. 332.41 s [really-safe-money-gen] + f = case (compare factor 1, compare account zero) of
  14930. 332.41 s [really-safe-money-gen] (EQ, _) -> const zero
  14931. 332.41 s [really-safe-money-gen] (_, EQ) -> const zero
  14932. 332.41 s [really-safe-money-gen] (GT, GT) -> Positive
  14933. 332.41 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:591:7-44
  14934. 332.41 s [really-safe-money-gen] @@ -588,9 +588,9 @@
  14935. 332.41 s [really-safe-money-gen] (Maybe Account, Maybe ConversionRate)
  14936. 332.41 s [really-safe-money-gen] convert r qf1 a cr qf2 =
  14937. 332.41 s [really-safe-money-gen] let (ma, mr) = Amount.convert r qf1 (abs a) cr qf2
  14938. 332.41 s [really-safe-money-gen] - in case a of
  14939. 332.41 s [really-safe-money-gen] - Positive _ -> (Positive <$> ma, mr)
  14940. 332.41 s [really-safe-money-gen] - Negative _ -> (Negative <$> ma, mr)
  14941. 332.41 s [really-safe-money-gen] + in case a of
  14942. 332.41 s [really-safe-money-gen] + Positive _ -> (Positive <$> ma, mr)
  14943. 332.41 s [really-safe-money-gen] + Negative _ -> (Negative <$> ma, mr)
  14944. 332.41 s [really-safe-money-gen]
  14945. 332.41 s [really-safe-money-gen] -- | Format an account of money without a symbol.
  14946. 332.41 s [really-safe-money-gen] --
  14947. 332.41 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:451:14-23
  14948. 332.41 s [really-safe-money-gen] @@ -448,7 +448,7 @@
  14949. 332.41 s [really-safe-money-gen] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  14950. 332.41 s [really-safe-money-gen] DistributedZero -> DistributedZero
  14951. 332.41 s [really-safe-money-gen] DistributedIntoEqualChunks numberOfChunks chunk ->
  14952. 332.41 s [really-safe-money-gen] - if a >= zero
  14953. 332.41 s [really-safe-money-gen] + if not (a >= zero)
  14954. 332.41 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  14955. 332.41 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  14956. 332.41 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  14957. 332.41 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:451:11-76
  14958. 332.41 s [really-safe-money-gen] @@ -448,9 +448,9 @@
  14959. 332.41 s [really-safe-money-gen] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  14960. 332.41 s [really-safe-money-gen] DistributedZero -> DistributedZero
  14961. 332.41 s [really-safe-money-gen] DistributedIntoEqualChunks numberOfChunks chunk ->
  14962. 332.41 s [really-safe-money-gen] - if a >= zero
  14963. 332.41 s [really-safe-money-gen] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  14964. 332.41 s [really-safe-money-gen] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  14965. 332.41 s [really-safe-money-gen] + if a >= zero
  14966. 332.41 s [really-safe-money-gen] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  14967. 332.41 s [really-safe-money-gen] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  14968. 332.41 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  14969. 332.41 s [really-safe-money-gen] if a >= zero
  14970. 332.41 s [really-safe-money-gen] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  14971. 332.41 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:455:14-23
  14972. 332.41 s [really-safe-money-gen] @@ -452,7 +452,7 @@
  14973. 332.41 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  14974. 332.41 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  14975. 332.41 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  14976. 332.41 s [really-safe-money-gen] - if a >= zero
  14977. 332.41 s [really-safe-money-gen] + if True
  14978. 332.41 s [really-safe-money-gen] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  14979. 332.41 s [really-safe-money-gen] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  14980. 332.41 s [really-safe-money-gen]
  14981. 333.42 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:421:11-29
  14982. 333.42 s [really-safe-money-gen] @@ -418,13 +418,13 @@
  14983. 333.42 s [really-safe-money-gen] multiply :: Int32 -> Account -> Maybe Account
  14984. 333.42 s [really-safe-money-gen] multiply factor account =
  14985. 333.42 s [really-safe-money-gen] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  14986. 333.42 s [really-safe-money-gen] - f = case (compare factor 0, compare account zero) of
  14987. 333.42 s [really-safe-money-gen] - (EQ, _) -> const zero
  14988. 333.43 s [really-safe-money-gen] - (_, EQ) -> const zero
  14989. 333.43 s [really-safe-money-gen] - (GT, GT) -> Positive
  14990. 333.43 s [really-safe-money-gen] - (GT, LT) -> Negative
  14991. 333.43 s [really-safe-money-gen] - (LT, GT) -> Negative
  14992. 333.43 s [really-safe-money-gen] - (LT, LT) -> Positive
  14993. 333.43 s [really-safe-money-gen] + f = case (compare factor 0, compare account zero) of
  14994. 333.43 s [really-safe-money-gen] + (EQ, _) -> const zero
  14995. 333.43 s [really-safe-money-gen] + (_, EQ) -> const zero
  14996. 333.43 s [really-safe-money-gen] + (GT, GT) -> Positive
  14997. 333.43 s [really-safe-money-gen] + (GT, LT) -> Negative
  14998. 333.43 s [really-safe-money-gen] + (LT, GT) -> Negative
  14999. 333.43 s [really-safe-money-gen] + (LT, LT) -> Positive
  15000. 333.43 s [really-safe-money-gen] in f <$> Amount.multiply af (abs account)
  15001. 333.43 s [really-safe-money-gen]
  15002. 333.43 s [really-safe-money-gen] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  15003. 333.43 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:455:14-23
  15004. 333.43 s [really-safe-money-gen] @@ -452,7 +452,7 @@
  15005. 333.43 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15006. 333.43 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15007. 333.43 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15008. 333.43 s [really-safe-money-gen] - if a >= zero
  15009. 333.43 s [really-safe-money-gen] + if False
  15010. 333.43 s [really-safe-money-gen] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15011. 333.43 s [really-safe-money-gen] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15012. 333.43 s [really-safe-money-gen]
  15013. 333.43 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:455:14-23
  15014. 333.43 s [really-safe-money-gen] @@ -452,7 +452,7 @@
  15015. 333.43 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15016. 333.43 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15017. 333.43 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15018. 333.43 s [really-safe-money-gen] - if a >= zero
  15019. 333.43 s [really-safe-money-gen] + if not (a >= zero)
  15020. 333.43 s [really-safe-money-gen] then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15021. 333.43 s [really-safe-money-gen] else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15022. 333.43 s [really-safe-money-gen]
  15023. 333.43 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:455:11-136
  15024. 333.44 s [really-safe-money-gen] @@ -452,9 +452,9 @@
  15025. 333.44 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15026. 333.44 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15027. 333.44 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15028. 333.44 s [really-safe-money-gen] - if a >= zero
  15029. 333.44 s [really-safe-money-gen] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15030. 333.44 s [really-safe-money-gen] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15031. 333.44 s [really-safe-money-gen] + if a >= zero
  15032. 333.44 s [really-safe-money-gen] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15033. 333.44 s [really-safe-money-gen] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15034. 333.44 s [really-safe-money-gen]
  15035. 333.44 s [really-safe-money-gen] type AccountDistribution = Amount.Distribution Account
  15036. 333.44 s [really-safe-money-gen]
  15037. 333.44 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:447:7-136
  15038. 333.44 s [really-safe-money-gen] @@ -444,17 +444,17 @@
  15039. 333.44 s [really-safe-money-gen] distribute a f =
  15040. 333.44 s [really-safe-money-gen] let aa = abs a
  15041. 333.44 s [really-safe-money-gen] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  15042. 333.44 s [really-safe-money-gen] - in case Amount.distribute aa af of
  15043. 333.44 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15044. 333.44 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15045. 333.44 s [really-safe-money-gen] - DistributedIntoEqualChunks numberOfChunks chunk ->
  15046. 333.44 s [really-safe-money-gen] - if a >= zero
  15047. 333.44 s [really-safe-money-gen] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15048. 333.44 s [really-safe-money-gen] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15049. 333.44 s [really-safe-money-gen] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15050. 333.44 s [really-safe-money-gen] - if a >= zero
  15051. 333.44 s [really-safe-money-gen] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15052. 333.44 s [really-safe-money-gen] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15053. 333.44 s [really-safe-money-gen] + in case Amount.distribute aa af of
  15054. 333.44 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15055. 333.44 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15056. 333.44 s [really-safe-money-gen] + DistributedIntoEqualChunks numberOfChunks chunk ->
  15057. 333.44 s [really-safe-money-gen] + if a >= zero
  15058. 333.44 s [really-safe-money-gen] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15059. 333.44 s [really-safe-money-gen] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15060. 333.44 s [really-safe-money-gen] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15061. 333.44 s [really-safe-money-gen] + if a >= zero
  15062. 333.44 s [really-safe-money-gen] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15063. 333.44 s [really-safe-money-gen] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15064. 333.44 s [really-safe-money-gen]
  15065. 333.44 s [really-safe-money-gen] type AccountDistribution = Amount.Distribution Account
  15066. 333.44 s [really-safe-money-gen]
  15067. 333.44 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:447:7-136
  15068. 333.44 s [really-safe-money-gen] @@ -444,17 +444,17 @@
  15069. 333.44 s [really-safe-money-gen] distribute a f =
  15070. 333.44 s [really-safe-money-gen] let aa = abs a
  15071. 333.44 s [really-safe-money-gen] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  15072. 333.44 s [really-safe-money-gen] - in case Amount.distribute aa af of
  15073. 333.44 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15074. 333.44 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15075. 333.44 s [really-safe-money-gen] - DistributedIntoEqualChunks numberOfChunks chunk ->
  15076. 333.44 s [really-safe-money-gen] - if a >= zero
  15077. 333.44 s [really-safe-money-gen] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15078. 333.45 s [really-safe-money-gen] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15079. 333.45 s [really-safe-money-gen] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15080. 333.45 s [really-safe-money-gen] - if a >= zero
  15081. 333.45 s [really-safe-money-gen] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15082. 333.45 s [really-safe-money-gen] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15083. 333.45 s [really-safe-money-gen] + in case Amount.distribute aa af of
  15084. 333.45 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15085. 333.45 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15086. 333.45 s [really-safe-money-gen] + DistributedIntoEqualChunks numberOfChunks chunk ->
  15087. 333.45 s [really-safe-money-gen] + if a >= zero
  15088. 333.45 s [really-safe-money-gen] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15089. 333.45 s [really-safe-money-gen] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15090. 333.45 s [really-safe-money-gen] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15091. 333.45 s [really-safe-money-gen] + if a >= zero
  15092. 333.45 s [really-safe-money-gen] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15093. 333.45 s [really-safe-money-gen] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15094. 333.45 s [really-safe-money-gen]
  15095. 333.45 s [really-safe-money-gen] type AccountDistribution = Amount.Distribution Account
  15096. 333.45 s [really-safe-money-gen]
  15097. 333.45 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:522:19-35
  15098. 333.45 s [really-safe-money-gen] @@ -519,10 +519,10 @@
  15099. 333.45 s [really-safe-money-gen] let aa = abs account
  15100. 333.45 s [really-safe-money-gen] (amount, actualFraction) = Amount.fraction ro aa af
  15101. 333.45 s [really-safe-money-gen] func :: Maybe Amount -> Ratio Natural -> (Maybe Account, Ratio Natural)
  15102. 333.45 s [really-safe-money-gen] - func ma r = case compare account zero of
  15103. 333.45 s [really-safe-money-gen] - EQ -> (Just zero, r)
  15104. 333.45 s [really-safe-money-gen] - GT -> (Positive <$> ma, r)
  15105. 333.45 s [really-safe-money-gen] - LT -> (Negative <$> ma, r)
  15106. 333.45 s [really-safe-money-gen] + func ma r = case compare account zero of
  15107. 333.45 s [really-safe-money-gen] + EQ -> (Just zero, r)
  15108. 333.45 s [really-safe-money-gen] + GT -> (Positive <$> ma, r)
  15109. 333.45 s [really-safe-money-gen] + LT -> (Negative <$> ma, r)
  15110. 333.45 s [really-safe-money-gen] in func amount actualFraction
  15111. 333.45 s [really-safe-money-gen]
  15112. 333.45 s [really-safe-money-gen] -- | Compute the currency conversion rate between two accounts of money of
  15113. 333.45 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:447:7-136
  15114. 333.45 s [really-safe-money-gen] @@ -444,17 +444,17 @@
  15115. 333.45 s [really-safe-money-gen] distribute a f =
  15116. 333.45 s [really-safe-money-gen] let aa = abs a
  15117. 333.45 s [really-safe-money-gen] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  15118. 333.45 s [really-safe-money-gen] - in case Amount.distribute aa af of
  15119. 333.45 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15120. 333.45 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15121. 333.45 s [really-safe-money-gen] - DistributedIntoEqualChunks numberOfChunks chunk ->
  15122. 333.45 s [really-safe-money-gen] - if a >= zero
  15123. 333.45 s [really-safe-money-gen] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15124. 333.45 s [really-safe-money-gen] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15125. 333.45 s [really-safe-money-gen] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15126. 333.45 s [really-safe-money-gen] - if a >= zero
  15127. 334.31 s [really-safe-money-gen] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15128. 334.31 s [really-safe-money-gen] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15129. 334.31 s [really-safe-money-gen] + in case Amount.distribute aa af of
  15130. 334.31 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15131. 334.31 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15132. 334.31 s [really-safe-money-gen] + DistributedIntoEqualChunks numberOfChunks chunk ->
  15133. 334.31 s [really-safe-money-gen] + if a >= zero
  15134. 334.31 s [really-safe-money-gen] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15135. 334.31 s [really-safe-money-gen] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15136. 334.31 s [really-safe-money-gen] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15137. 334.31 s [really-safe-money-gen] + if a >= zero
  15138. 334.31 s [really-safe-money-gen] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15139. 334.31 s [really-safe-money-gen] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15140. 334.31 s [really-safe-money-gen]
  15141. 334.31 s [really-safe-money-gen] type AccountDistribution = Amount.Distribution Account
  15142. 334.31 s [really-safe-money-gen]
  15143. 334.31 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:522:19-35
  15144. 334.31 s [really-safe-money-gen] @@ -519,10 +519,10 @@
  15145. 334.31 s [really-safe-money-gen] let aa = abs account
  15146. 334.31 s [really-safe-money-gen] (amount, actualFraction) = Amount.fraction ro aa af
  15147. 334.31 s [really-safe-money-gen] func :: Maybe Amount -> Ratio Natural -> (Maybe Account, Ratio Natural)
  15148. 334.31 s [really-safe-money-gen] - func ma r = case compare account zero of
  15149. 334.31 s [really-safe-money-gen] - EQ -> (Just zero, r)
  15150. 334.31 s [really-safe-money-gen] - GT -> (Positive <$> ma, r)
  15151. 334.31 s [really-safe-money-gen] - LT -> (Negative <$> ma, r)
  15152. 334.31 s [really-safe-money-gen] + func ma r = case compare account zero of
  15153. 334.31 s [really-safe-money-gen] + EQ -> (Just zero, r)
  15154. 334.31 s [really-safe-money-gen] + GT -> (Positive <$> ma, r)
  15155. 334.31 s [really-safe-money-gen] + LT -> (Negative <$> ma, r)
  15156. 334.31 s [really-safe-money-gen] in func amount actualFraction
  15157. 334.31 s [really-safe-money-gen]
  15158. 334.31 s [really-safe-money-gen] -- | Compute the currency conversion rate between two accounts of money of
  15159. 334.31 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:495:17-18
  15160. 334.31 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  15161. 334.31 s [really-safe-money-gen] fraction rounding account f =
  15162. 334.31 s [really-safe-money-gen] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  15163. 334.31 s [really-safe-money-gen] ro =
  15164. 334.31 s [really-safe-money-gen] - if f >= 0
  15165. 334.31 s [really-safe-money-gen] + if f >= 1
  15166. 334.31 s [really-safe-money-gen] then rounding
  15167. 334.32 s [really-safe-money-gen] else case rounding of
  15168. 334.32 s [really-safe-money-gen] RoundUp -> RoundDown
  15169. 334.32 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:451:14-23
  15170. 334.32 s [really-safe-money-gen] @@ -448,7 +448,7 @@
  15171. 334.32 s [really-safe-money-gen] DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15172. 334.32 s [really-safe-money-gen] DistributedZero -> DistributedZero
  15173. 334.32 s [really-safe-money-gen] DistributedIntoEqualChunks numberOfChunks chunk ->
  15174. 334.32 s [really-safe-money-gen] - if a >= zero
  15175. 334.32 s [really-safe-money-gen] + if False
  15176. 334.32 s [really-safe-money-gen] then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15177. 334.32 s [really-safe-money-gen] else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15178. 334.32 s [really-safe-money-gen] DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15179. 334.32 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:421:11-29
  15180. 334.32 s [really-safe-money-gen] @@ -418,13 +418,13 @@
  15181. 334.32 s [really-safe-money-gen] multiply :: Int32 -> Account -> Maybe Account
  15182. 334.32 s [really-safe-money-gen] multiply factor account =
  15183. 334.32 s [really-safe-money-gen] let af = (fromIntegral :: Int32 -> Word32) ((Prelude.abs :: Int32 -> Int32) factor)
  15184. 334.32 s [really-safe-money-gen] - f = case (compare factor 0, compare account zero) of
  15185. 334.32 s [really-safe-money-gen] - (EQ, _) -> const zero
  15186. 334.32 s [really-safe-money-gen] - (_, EQ) -> const zero
  15187. 334.32 s [really-safe-money-gen] - (GT, GT) -> Positive
  15188. 334.32 s [really-safe-money-gen] - (GT, LT) -> Negative
  15189. 334.32 s [really-safe-money-gen] - (LT, GT) -> Negative
  15190. 334.32 s [really-safe-money-gen] - (LT, LT) -> Positive
  15191. 334.32 s [really-safe-money-gen] + f = case (compare factor 0, compare account zero) of
  15192. 334.32 s [really-safe-money-gen] + (EQ, _) -> const zero
  15193. 334.32 s [really-safe-money-gen] + (_, EQ) -> const zero
  15194. 334.32 s [really-safe-money-gen] + (GT, GT) -> Positive
  15195. 334.32 s [really-safe-money-gen] + (GT, LT) -> Negative
  15196. 334.32 s [really-safe-money-gen] + (LT, GT) -> Negative
  15197. 334.32 s [really-safe-money-gen] + (LT, LT) -> Positive
  15198. 334.32 s [really-safe-money-gen] in f <$> Amount.multiply af (abs account)
  15199. 334.32 s [really-safe-money-gen]
  15200. 334.32 s [really-safe-money-gen] -- | Distribute an amount of money into chunks that are as evenly distributed as possible.
  15201. 334.32 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:522:19-35
  15202. 334.32 s [really-safe-money-gen] @@ -519,10 +519,10 @@
  15203. 334.32 s [really-safe-money-gen] let aa = abs account
  15204. 334.32 s [really-safe-money-gen] (amount, actualFraction) = Amount.fraction ro aa af
  15205. 334.32 s [really-safe-money-gen] func :: Maybe Amount -> Ratio Natural -> (Maybe Account, Ratio Natural)
  15206. 334.32 s [really-safe-money-gen] - func ma r = case compare account zero of
  15207. 334.32 s [really-safe-money-gen] - EQ -> (Just zero, r)
  15208. 334.32 s [really-safe-money-gen] - GT -> (Positive <$> ma, r)
  15209. 334.32 s [really-safe-money-gen] - LT -> (Negative <$> ma, r)
  15210. 334.32 s [really-safe-money-gen] + func ma r = case compare account zero of
  15211. 334.32 s [really-safe-money-gen] + EQ -> (Just zero, r)
  15212. 334.32 s [really-safe-money-gen] + GT -> (Positive <$> ma, r)
  15213. 334.32 s [really-safe-money-gen] + LT -> (Negative <$> ma, r)
  15214. 334.32 s [really-safe-money-gen] in func amount actualFraction
  15215. 334.32 s [really-safe-money-gen]
  15216. 334.32 s [really-safe-money-gen] -- | Compute the currency conversion rate between two accounts of money of
  15217. 334.32 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:495:12-18
  15218. 334.32 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  15219. 334.32 s [really-safe-money-gen] fraction rounding account f =
  15220. 334.32 s [really-safe-money-gen] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  15221. 334.32 s [really-safe-money-gen] ro =
  15222. 334.32 s [really-safe-money-gen] - if f >= 0
  15223. 334.32 s [really-safe-money-gen] + if True
  15224. 334.32 s [really-safe-money-gen] then rounding
  15225. 334.32 s [really-safe-money-gen] else case rounding of
  15226. 334.32 s [really-safe-money-gen] RoundUp -> RoundDown
  15227. 334.32 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:495:12-18
  15228. 334.32 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  15229. 334.32 s [really-safe-money-gen] fraction rounding account f =
  15230. 334.32 s [really-safe-money-gen] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  15231. 334.32 s [really-safe-money-gen] ro =
  15232. 334.32 s [really-safe-money-gen] - if f >= 0
  15233. 334.32 s [really-safe-money-gen] + if False
  15234. 334.32 s [really-safe-money-gen] then rounding
  15235. 334.32 s [really-safe-money-gen] else case rounding of
  15236. 334.32 s [really-safe-money-gen] RoundUp -> RoundDown
  15237. 334.32 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:497:16-41
  15238. 334.32 s [really-safe-money-gen] @@ -494,10 +494,10 @@
  15239. 334.32 s [really-safe-money-gen] ro =
  15240. 334.32 s [really-safe-money-gen] if f >= 0
  15241. 334.32 s [really-safe-money-gen] then rounding
  15242. 334.32 s [really-safe-money-gen] - else case rounding of
  15243. 334.32 s [really-safe-money-gen] - RoundUp -> RoundDown
  15244. 334.33 s [really-safe-money-gen] - RoundDown -> RoundUp
  15245. 334.33 s [really-safe-money-gen] - RoundNearest -> RoundNearest
  15246. 334.33 s [really-safe-money-gen] + else case rounding of
  15247. 334.33 s [really-safe-money-gen] + RoundUp -> RoundDown
  15248. 334.33 s [really-safe-money-gen] + RoundDown -> RoundUp
  15249. 334.33 s [really-safe-money-gen] + RoundNearest -> RoundNearest
  15250. 334.33 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  15251. 334.33 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  15252. 334.33 s [really-safe-money-gen] in if f >= 0
  15253. 334.33 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:447:7-136
  15254. 334.33 s [really-safe-money-gen] @@ -444,17 +444,17 @@
  15255. 334.33 s [really-safe-money-gen] distribute a f =
  15256. 334.33 s [really-safe-money-gen] let aa = abs a
  15257. 334.33 s [really-safe-money-gen] af = (fromIntegral :: Word16 -> Word32) (Prelude.abs f)
  15258. 334.33 s [really-safe-money-gen] - in case Amount.distribute aa af of
  15259. 334.33 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15260. 334.33 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15261. 334.33 s [really-safe-money-gen] - DistributedIntoEqualChunks numberOfChunks chunk ->
  15262. 334.33 s [really-safe-money-gen] - if a >= zero
  15263. 334.33 s [really-safe-money-gen] - then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15264. 334.33 s [really-safe-money-gen] - else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15265. 334.33 s [really-safe-money-gen] - DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15266. 334.33 s [really-safe-money-gen] - if a >= zero
  15267. 334.33 s [really-safe-money-gen] - then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15268. 334.33 s [really-safe-money-gen] - else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15269. 334.33 s [really-safe-money-gen] + in case Amount.distribute aa af of
  15270. 334.33 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15271. 334.33 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15272. 334.33 s [really-safe-money-gen] + DistributedIntoEqualChunks numberOfChunks chunk ->
  15273. 334.33 s [really-safe-money-gen] + if a >= zero
  15274. 334.33 s [really-safe-money-gen] + then DistributedIntoEqualChunks numberOfChunks (Positive chunk)
  15275. 334.33 s [really-safe-money-gen] + else DistributedIntoEqualChunks numberOfChunks (Negative chunk)
  15276. 334.33 s [really-safe-money-gen] + DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk ->
  15277. 334.33 s [really-safe-money-gen] + if a >= zero
  15278. 334.33 s [really-safe-money-gen] + then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk)
  15279. 334.33 s [really-safe-money-gen] + else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk)
  15280. 334.33 s [really-safe-money-gen]
  15281. 334.33 s [really-safe-money-gen] type AccountDistribution = Amount.Distribution Account
  15282. 334.33 s [really-safe-money-gen]
  15283. 334.33 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:497:16-41
  15284. 334.33 s [really-safe-money-gen] @@ -494,10 +494,10 @@
  15285. 334.33 s [really-safe-money-gen] ro =
  15286. 334.33 s [really-safe-money-gen] if f >= 0
  15287. 334.33 s [really-safe-money-gen] then rounding
  15288. 334.33 s [really-safe-money-gen] - else case rounding of
  15289. 334.33 s [really-safe-money-gen] - RoundUp -> RoundDown
  15290. 334.33 s [really-safe-money-gen] - RoundDown -> RoundUp
  15291. 334.33 s [really-safe-money-gen] - RoundNearest -> RoundNearest
  15292. 334.33 s [really-safe-money-gen] + else case rounding of
  15293. 334.33 s [really-safe-money-gen] + RoundUp -> RoundDown
  15294. 334.33 s [really-safe-money-gen] + RoundDown -> RoundUp
  15295. 334.33 s [really-safe-money-gen] + RoundNearest -> RoundNearest
  15296. 334.33 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  15297. 334.33 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  15298. 334.33 s [really-safe-money-gen] in if f >= 0
  15299. 334.33 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:495:9-41
  15300. 334.33 s [really-safe-money-gen] @@ -492,12 +492,12 @@
  15301. 334.33 s [really-safe-money-gen] fraction rounding account f =
  15302. 334.33 s [really-safe-money-gen] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  15303. 334.33 s [really-safe-money-gen] ro =
  15304. 334.33 s [really-safe-money-gen] - if f >= 0
  15305. 334.33 s [really-safe-money-gen] - then rounding
  15306. 334.33 s [really-safe-money-gen] - else case rounding of
  15307. 334.33 s [really-safe-money-gen] - RoundUp -> RoundDown
  15308. 334.33 s [really-safe-money-gen] - RoundDown -> RoundUp
  15309. 336.54 s [really-safe-money-gen] - RoundNearest -> RoundNearest
  15310. 336.54 s [really-safe-money-gen] + if f >= 0
  15311. 336.54 s [really-safe-money-gen] + then rounding
  15312. 336.64 s [really-safe-money-gen] + else case rounding of
  15313. 336.64 s [really-safe-money-gen] + RoundUp -> RoundDown
  15314. 336.64 s [really-safe-money-gen] + RoundDown -> RoundUp
  15315. 336.64 s [really-safe-money-gen] + RoundNearest -> RoundNearest
  15316. 336.64 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  15317. 336.64 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  15318. 336.64 s [really-safe-money-gen] in if f >= 0
  15319. 336.64 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:503:15-16
  15320. 336.64 s [really-safe-money-gen] @@ -500,7 +500,7 @@
  15321. 336.64 s [really-safe-money-gen] RoundNearest -> RoundNearest
  15322. 336.64 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  15323. 336.64 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  15324. 336.64 s [really-safe-money-gen] - in if f >= 0
  15325. 336.64 s [really-safe-money-gen] + in if f >= 1
  15326. 336.64 s [really-safe-money-gen] then (ma, r)
  15327. 336.64 s [really-safe-money-gen] else (negate <$> ma, -r)
  15328. 336.64 s [really-safe-money-gen]
  15329. 336.65 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:503:10-16
  15330. 336.65 s [really-safe-money-gen] @@ -500,7 +500,7 @@
  15331. 336.65 s [really-safe-money-gen] RoundNearest -> RoundNearest
  15332. 336.65 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  15333. 336.65 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  15334. 336.65 s [really-safe-money-gen] - in if f >= 0
  15335. 336.65 s [really-safe-money-gen] + in if False
  15336. 336.65 s [really-safe-money-gen] then (ma, r)
  15337. 336.65 s [really-safe-money-gen] else (negate <$> ma, -r)
  15338. 336.65 s [really-safe-money-gen]
  15339. 336.65 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:503:10-16
  15340. 336.65 s [really-safe-money-gen] @@ -500,7 +500,7 @@
  15341. 336.65 s [really-safe-money-gen] RoundNearest -> RoundNearest
  15342. 336.65 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  15343. 336.65 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  15344. 336.65 s [really-safe-money-gen] - in if f >= 0
  15345. 336.65 s [really-safe-money-gen] + in if not (f >= 0)
  15346. 336.65 s [really-safe-money-gen] then (ma, r)
  15347. 336.65 s [really-safe-money-gen] else (negate <$> ma, -r)
  15348. 336.65 s [really-safe-money-gen]
  15349. 336.65 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:503:7-33
  15350. 336.65 s [really-safe-money-gen] @@ -500,9 +500,9 @@
  15351. 336.65 s [really-safe-money-gen] RoundNearest -> RoundNearest
  15352. 336.65 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  15353. 336.65 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  15354. 336.65 s [really-safe-money-gen] - in if f >= 0
  15355. 336.65 s [really-safe-money-gen] - then (ma, r)
  15356. 336.65 s [really-safe-money-gen] - else (negate <$> ma, -r)
  15357. 336.65 s [really-safe-money-gen] + in if f >= 0
  15358. 336.65 s [really-safe-money-gen] + then (ma, r)
  15359. 336.65 s [really-safe-money-gen] + else (negate <$> ma, -r)
  15360. 336.65 s [really-safe-money-gen]
  15361. 336.65 s [really-safe-money-gen] -- | Fractional multiplication with a positive fraction, see 'Amount.fraction' and 'Account.fraction'.
  15362. 336.65 s [really-safe-money-gen] --
  15363. 336.65 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:233:19-20
  15364. 336.65 s [really-safe-money-gen] @@ -230,7 +230,7 @@
  15365. 336.65 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  15366. 336.65 s [really-safe-money-gen] fromRational quantisationFactor r =
  15367. 336.65 s [really-safe-money-gen] let r' = Prelude.abs r
  15368. 336.65 s [really-safe-money-gen] - f = if r >= 0 then Positive else Negative
  15369. 336.65 s [really-safe-money-gen] + f = if r >= 1 then Positive else Negative
  15370. 336.65 s [really-safe-money-gen] in f <$> Amount.fromRational quantisationFactor r'
  15371. 336.65 s [really-safe-money-gen]
  15372. 336.65 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  15373. 336.65 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:233:14-20
  15374. 336.65 s [really-safe-money-gen] @@ -230,7 +230,7 @@
  15375. 336.65 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  15376. 336.65 s [really-safe-money-gen] fromRational quantisationFactor r =
  15377. 336.65 s [really-safe-money-gen] let r' = Prelude.abs r
  15378. 336.65 s [really-safe-money-gen] - f = if r >= 0 then Positive else Negative
  15379. 336.65 s [really-safe-money-gen] + f = if True then Positive else Negative
  15380. 336.65 s [really-safe-money-gen] in f <$> Amount.fromRational quantisationFactor r'
  15381. 336.65 s [really-safe-money-gen]
  15382. 336.65 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  15383. 336.65 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:495:12-18
  15384. 336.65 s [really-safe-money-gen] @@ -492,7 +492,7 @@
  15385. 336.65 s [really-safe-money-gen] fraction rounding account f =
  15386. 336.65 s [really-safe-money-gen] let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f)
  15387. 336.65 s [really-safe-money-gen] ro =
  15388. 336.66 s [really-safe-money-gen] - if f >= 0
  15389. 336.66 s [really-safe-money-gen] + if not (f >= 0)
  15390. 336.66 s [really-safe-money-gen] then rounding
  15391. 336.66 s [really-safe-money-gen] else case rounding of
  15392. 336.66 s [really-safe-money-gen] RoundUp -> RoundDown
  15393. 336.66 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:233:14-20
  15394. 336.66 s [really-safe-money-gen] @@ -230,7 +230,7 @@
  15395. 336.66 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  15396. 336.66 s [really-safe-money-gen] fromRational quantisationFactor r =
  15397. 336.66 s [really-safe-money-gen] let r' = Prelude.abs r
  15398. 336.66 s [really-safe-money-gen] - f = if r >= 0 then Positive else Negative
  15399. 336.66 s [really-safe-money-gen] + f = if not (r >= 0) then Positive else Negative
  15400. 336.66 s [really-safe-money-gen] in f <$> Amount.fromRational quantisationFactor r'
  15401. 336.66 s [really-safe-money-gen]
  15402. 336.66 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  15403. 336.66 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:497:16-41
  15404. 336.66 s [really-safe-money-gen] @@ -494,10 +494,10 @@
  15405. 336.66 s [really-safe-money-gen] ro =
  15406. 336.66 s [really-safe-money-gen] if f >= 0
  15407. 336.66 s [really-safe-money-gen] then rounding
  15408. 336.66 s [really-safe-money-gen] - else case rounding of
  15409. 336.66 s [really-safe-money-gen] - RoundUp -> RoundDown
  15410. 336.66 s [really-safe-money-gen] - RoundDown -> RoundUp
  15411. 336.66 s [really-safe-money-gen] - RoundNearest -> RoundNearest
  15412. 336.66 s [really-safe-money-gen] + else case rounding of
  15413. 336.66 s [really-safe-money-gen] + RoundUp -> RoundDown
  15414. 336.66 s [really-safe-money-gen] + RoundDown -> RoundUp
  15415. 336.66 s [really-safe-money-gen] + RoundNearest -> RoundNearest
  15416. 336.66 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  15417. 336.66 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  15418. 336.66 s [really-safe-money-gen] in if f >= 0
  15419. 336.66 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:211:11-37
  15420. 336.66 s [really-safe-money-gen] @@ -208,9 +208,9 @@
  15421. 336.66 s [really-safe-money-gen] -- (-3) % 20
  15422. 336.66 s [really-safe-money-gen] toRational :: QuantisationFactor -> Account -> Rational
  15423. 336.66 s [really-safe-money-gen] toRational quantisationFactor account =
  15424. 336.66 s [really-safe-money-gen] - let f = case account of
  15425. 336.66 s [really-safe-money-gen] - Positive _ -> id
  15426. 336.66 s [really-safe-money-gen] - Negative _ -> Prelude.negate
  15427. 336.66 s [really-safe-money-gen] + let f = case account of
  15428. 336.66 s [really-safe-money-gen] + Positive _ -> id
  15429. 336.66 s [really-safe-money-gen] + Negative _ -> Prelude.negate
  15430. 336.66 s [really-safe-money-gen] in f $ Amount.toRational quantisationFactor (abs account)
  15431. 336.66 s [really-safe-money-gen]
  15432. 336.66 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  15433. 336.66 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:197:19-20
  15434. 336.66 s [really-safe-money-gen] @@ -194,7 +194,7 @@
  15435. 336.66 s [really-safe-money-gen] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  15436. 336.66 s [really-safe-money-gen] fromDouble quantisationFactor d =
  15437. 336.66 s [really-safe-money-gen] let d' = Prelude.abs d
  15438. 336.66 s [really-safe-money-gen] - f = if d >= 0 then Positive else Negative
  15439. 336.66 s [really-safe-money-gen] + f = if d >= 1 then Positive else Negative
  15440. 336.66 s [really-safe-money-gen] in f <$> Amount.fromDouble quantisationFactor d'
  15441. 336.66 s [really-safe-money-gen]
  15442. 336.66 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  15443. 336.66 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:197:14-20
  15444. 336.66 s [really-safe-money-gen] @@ -194,7 +194,7 @@
  15445. 336.66 s [really-safe-money-gen] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  15446. 336.66 s [really-safe-money-gen] fromDouble quantisationFactor d =
  15447. 336.66 s [really-safe-money-gen] let d' = Prelude.abs d
  15448. 336.66 s [really-safe-money-gen] - f = if d >= 0 then Positive else Negative
  15449. 336.66 s [really-safe-money-gen] + f = if not (d >= 0) then Positive else Negative
  15450. 336.66 s [really-safe-money-gen] in f <$> Amount.fromDouble quantisationFactor d'
  15451. 336.66 s [really-safe-money-gen]
  15452. 336.66 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  15453. 336.66 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:233:14-20
  15454. 336.66 s [really-safe-money-gen] @@ -230,7 +230,7 @@
  15455. 336.66 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  15456. 336.66 s [really-safe-money-gen] fromRational quantisationFactor r =
  15457. 336.66 s [really-safe-money-gen] let r' = Prelude.abs r
  15458. 336.66 s [really-safe-money-gen] - f = if r >= 0 then Positive else Negative
  15459. 336.66 s [really-safe-money-gen] + f = if False then Positive else Negative
  15460. 336.66 s [really-safe-money-gen] in f <$> Amount.fromRational quantisationFactor r'
  15461. 336.66 s [really-safe-money-gen]
  15462. 336.66 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  15463. 336.66 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:171:11-37
  15464. 336.66 s [really-safe-money-gen] @@ -168,9 +168,9 @@
  15465. 336.66 s [really-safe-money-gen] -- -0.25
  15466. 336.66 s [really-safe-money-gen] toDouble :: QuantisationFactor -> Account -> Double
  15467. 336.66 s [really-safe-money-gen] toDouble quantisationFactor account =
  15468. 336.66 s [really-safe-money-gen] - let f = case account of
  15469. 336.66 s [really-safe-money-gen] - Positive _ -> id
  15470. 336.66 s [really-safe-money-gen] - Negative _ -> Prelude.negate
  15471. 336.66 s [really-safe-money-gen] + let f = case account of
  15472. 336.66 s [really-safe-money-gen] + Positive _ -> id
  15473. 336.66 s [really-safe-money-gen] + Negative _ -> Prelude.negate
  15474. 336.66 s [really-safe-money-gen] in f $ Amount.toDouble quantisationFactor (abs account)
  15475. 336.66 s [really-safe-money-gen]
  15476. 336.66 s [really-safe-money-gen] -- | Turn a 'Double' into an amount of money.
  15477. 336.66 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:155:11-37
  15478. 336.66 s [really-safe-money-gen] @@ -152,9 +152,9 @@
  15479. 336.66 s [really-safe-money-gen] -- We return 'Integer' because the result does not fit into a 'Word64'
  15480. 336.66 s [really-safe-money-gen] toMinimalQuantisations :: Account -> Integer
  15481. 336.66 s [really-safe-money-gen] toMinimalQuantisations account =
  15482. 336.66 s [really-safe-money-gen] - let f = case account of
  15483. 336.66 s [really-safe-money-gen] - Positive _ -> id
  15484. 336.66 s [really-safe-money-gen] - Negative _ -> Prelude.negate
  15485. 336.66 s [really-safe-money-gen] + let f = case account of
  15486. 336.66 s [really-safe-money-gen] + Positive _ -> id
  15487. 336.66 s [really-safe-money-gen] + Negative _ -> Prelude.negate
  15488. 336.66 s [really-safe-money-gen] in f $ (fromIntegral :: Word64 -> Integer) $ Amount.toMinimalQuantisations (abs account)
  15489. 336.66 s [really-safe-money-gen]
  15490. 336.66 s [really-safe-money-gen] -- | Turn an amount of money into a 'Double'.
  15491. 336.66 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:155:11-37
  15492. 336.66 s [really-safe-money-gen] @@ -152,9 +152,9 @@
  15493. 336.66 s [really-safe-money-gen] -- We return 'Integer' because the result does not fit into a 'Word64'
  15494. 336.67 s [really-safe-money-gen] toMinimalQuantisations :: Account -> Integer
  15495. 336.67 s [really-safe-money-gen] toMinimalQuantisations account =
  15496. 336.67 s [really-safe-money-gen] - let f = case account of
  15497. 336.67 s [really-safe-money-gen] - Positive _ -> id
  15498. 336.67 s [really-safe-money-gen] - Negative _ -> Prelude.negate
  15499. 336.67 s [really-safe-money-gen] + let f = case account of
  15500. 336.67 s [really-safe-money-gen] + Positive _ -> id
  15501. 336.67 s [really-safe-money-gen] + Negative _ -> Prelude.negate
  15502. 336.67 s [really-safe-money-gen] in f $ (fromIntegral :: Word64 -> Integer) $ Amount.toMinimalQuantisations (abs account)
  15503. 336.67 s [really-safe-money-gen]
  15504. 336.67 s [really-safe-money-gen] -- | Turn an amount of money into a 'Double'.
  15505. 336.67 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:171:11-37
  15506. 336.67 s [really-safe-money-gen] @@ -168,9 +168,9 @@
  15507. 336.67 s [really-safe-money-gen] -- -0.25
  15508. 336.67 s [really-safe-money-gen] toDouble :: QuantisationFactor -> Account -> Double
  15509. 336.67 s [really-safe-money-gen] toDouble quantisationFactor account =
  15510. 336.67 s [really-safe-money-gen] - let f = case account of
  15511. 336.67 s [really-safe-money-gen] - Positive _ -> id
  15512. 336.67 s [really-safe-money-gen] - Negative _ -> Prelude.negate
  15513. 336.67 s [really-safe-money-gen] + let f = case account of
  15514. 336.67 s [really-safe-money-gen] + Positive _ -> id
  15515. 336.67 s [really-safe-money-gen] + Negative _ -> Prelude.negate
  15516. 336.67 s [really-safe-money-gen] in f $ Amount.toDouble quantisationFactor (abs account)
  15517. 336.67 s [really-safe-money-gen]
  15518. 336.67 s [really-safe-money-gen] -- | Turn a 'Double' into an amount of money.
  15519. 336.67 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:123:10-23
  15520. 336.67 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  15521. 336.67 s [really-safe-money-gen] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  15522. 336.67 s [really-safe-money-gen] a :: Integer
  15523. 336.67 s [really-safe-money-gen] a = (Prelude.abs :: Integer -> Integer) i
  15524. 336.67 s [really-safe-money-gen] - in if a > maxBoundI
  15525. 336.67 s [really-safe-money-gen] + in if True
  15526. 336.67 s [really-safe-money-gen] then Nothing
  15527. 336.67 s [really-safe-money-gen] else
  15528. 336.67 s [really-safe-money-gen] let w :: Word64
  15529. 336.67 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:123:10-23
  15530. 336.67 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  15531. 336.67 s [really-safe-money-gen] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  15532. 336.67 s [really-safe-money-gen] a :: Integer
  15533. 337.72 s [really-safe-money-gen] a = (Prelude.abs :: Integer -> Integer) i
  15534. 337.72 s [really-safe-money-gen] - in if a > maxBoundI
  15535. 337.72 s [really-safe-money-gen] + in if False
  15536. 337.72 s [really-safe-money-gen] then Nothing
  15537. 337.72 s [really-safe-money-gen] else
  15538. 337.72 s [really-safe-money-gen] let w :: Word64
  15539. 337.72 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:197:11-48
  15540. 337.72 s [really-safe-money-gen] @@ -194,7 +194,7 @@
  15541. 337.72 s [really-safe-money-gen] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  15542. 337.72 s [really-safe-money-gen] fromDouble quantisationFactor d =
  15543. 337.72 s [really-safe-money-gen] let d' = Prelude.abs d
  15544. 337.72 s [really-safe-money-gen] - f = if d >= 0 then Positive else Negative
  15545. 337.72 s [really-safe-money-gen] + f = if d >= 0 then Positive else Negative
  15546. 337.72 s [really-safe-money-gen] in f <$> Amount.fromDouble quantisationFactor d'
  15547. 337.72 s [really-safe-money-gen]
  15548. 337.72 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  15549. 337.72 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:197:14-20
  15550. 337.72 s [really-safe-money-gen] @@ -194,7 +194,7 @@
  15551. 337.72 s [really-safe-money-gen] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  15552. 337.72 s [really-safe-money-gen] fromDouble quantisationFactor d =
  15553. 337.72 s [really-safe-money-gen] let d' = Prelude.abs d
  15554. 337.72 s [really-safe-money-gen] - f = if d >= 0 then Positive else Negative
  15555. 337.72 s [really-safe-money-gen] + f = if True then Positive else Negative
  15556. 337.72 s [really-safe-money-gen] in f <$> Amount.fromDouble quantisationFactor d'
  15557. 337.72 s [really-safe-money-gen]
  15558. 337.72 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  15559. 337.72 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:123:10-23
  15560. 337.72 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  15561. 337.72 s [really-safe-money-gen] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  15562. 337.72 s [really-safe-money-gen] a :: Integer
  15563. 337.72 s [really-safe-money-gen] a = (Prelude.abs :: Integer -> Integer) i
  15564. 337.72 s [really-safe-money-gen] - in if a > maxBoundI
  15565. 337.72 s [really-safe-money-gen] + in if not (a > maxBoundI)
  15566. 337.72 s [really-safe-money-gen] then Nothing
  15567. 337.72 s [really-safe-money-gen] else
  15568. 337.72 s [really-safe-money-gen] let w :: Word64
  15569. 337.72 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:233:11-48
  15570. 337.72 s [really-safe-money-gen] @@ -230,7 +230,7 @@
  15571. 337.72 s [really-safe-money-gen] fromRational :: QuantisationFactor -> Rational -> Maybe Account
  15572. 337.72 s [really-safe-money-gen] fromRational quantisationFactor r =
  15573. 337.72 s [really-safe-money-gen] let r' = Prelude.abs r
  15574. 337.72 s [really-safe-money-gen] - f = if r >= 0 then Positive else Negative
  15575. 337.72 s [really-safe-money-gen] + f = if r >= 0 then Positive else Negative
  15576. 337.72 s [really-safe-money-gen] in f <$> Amount.fromRational quantisationFactor r'
  15577. 337.72 s [really-safe-money-gen]
  15578. 337.72 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  15579. 337.72 s [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:131:25-26
  15580. 337.72 s [really-safe-money-gen] @@ -128,7 +128,7 @@
  15581. 337.72 s [really-safe-money-gen] amount :: Amount
  15582. 337.72 s [really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
  15583. 337.72 s [really-safe-money-gen] in Just $
  15584. 337.72 s [really-safe-money-gen] - if i >= 0
  15585. 337.72 s [really-safe-money-gen] + if i >= 1
  15586. 337.72 s [really-safe-money-gen] then Positive amount
  15587. 337.73 s [really-safe-money-gen] else Negative amount
  15588. 337.73 s [really-safe-money-gen]
  15589. 337.73 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:197:14-20
  15590. 337.73 s [really-safe-money-gen] @@ -194,7 +194,7 @@
  15591. 337.73 s [really-safe-money-gen] fromDouble :: QuantisationFactor -> Double -> Maybe Account
  15592. 337.73 s [really-safe-money-gen] fromDouble quantisationFactor d =
  15593. 337.73 s [really-safe-money-gen] let d' = Prelude.abs d
  15594. 337.73 s [really-safe-money-gen] - f = if d >= 0 then Positive else Negative
  15595. 337.73 s [really-safe-money-gen] + f = if False then Positive else Negative
  15596. 337.73 s [really-safe-money-gen] in f <$> Amount.fromDouble quantisationFactor d'
  15597. 337.73 s [really-safe-money-gen]
  15598. 337.73 s [really-safe-money-gen] -- | Turn an amount of money into a 'Rational'.
  15599. 337.73 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:131:20-26
  15600. 337.73 s [really-safe-money-gen] @@ -128,7 +128,7 @@
  15601. 337.73 s [really-safe-money-gen] amount :: Amount
  15602. 337.73 s [really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
  15603. 337.73 s [really-safe-money-gen] in Just $
  15604. 337.73 s [really-safe-money-gen] - if i >= 0
  15605. 337.73 s [really-safe-money-gen] + if True
  15606. 337.73 s [really-safe-money-gen] then Positive amount
  15607. 337.73 s [really-safe-money-gen] else Negative amount
  15608. 337.73 s [really-safe-money-gen]
  15609. 337.73 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:131:20-26
  15610. 337.73 s [really-safe-money-gen] @@ -128,7 +128,7 @@
  15611. 337.73 s [really-safe-money-gen] amount :: Amount
  15612. 337.73 s [really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
  15613. 337.73 s [really-safe-money-gen] in Just $
  15614. 337.73 s [really-safe-money-gen] - if i >= 0
  15615. 337.73 s [really-safe-money-gen] + if False
  15616. 337.73 s [really-safe-money-gen] then Positive amount
  15617. 337.73 s [really-safe-money-gen] else Negative amount
  15618. 337.73 s [really-safe-money-gen]
  15619. 337.73 s [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:131:20-26
  15620. 337.73 s [really-safe-money-gen] @@ -128,7 +128,7 @@
  15621. 337.73 s [really-safe-money-gen] amount :: Amount
  15622. 337.73 s [really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
  15623. 337.73 s [really-safe-money-gen] in Just $
  15624. 337.73 s [really-safe-money-gen] - if i >= 0
  15625. 337.73 s [really-safe-money-gen] + if not (i >= 0)
  15626. 337.73 s [really-safe-money-gen] then Positive amount
  15627. 337.73 s [really-safe-money-gen] else Negative amount
  15628. 337.73 s [really-safe-money-gen]
  15629. 337.73 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:131:17-39
  15630. 337.73 s [really-safe-money-gen] @@ -128,9 +128,9 @@
  15631. 337.73 s [really-safe-money-gen] amount :: Amount
  15632. 337.73 s [really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
  15633. 337.73 s [really-safe-money-gen] in Just $
  15634. 337.73 s [really-safe-money-gen] - if i >= 0
  15635. 337.73 s [really-safe-money-gen] - then Positive amount
  15636. 337.73 s [really-safe-money-gen] - else Negative amount
  15637. 337.73 s [really-safe-money-gen] + if i >= 0
  15638. 337.73 s [really-safe-money-gen] + then Positive amount
  15639. 337.73 s [really-safe-money-gen] + else Negative amount
  15640. 337.73 s [really-safe-money-gen]
  15641. 337.73 s [really-safe-money-gen] -- | Turn an amount into a positive account
  15642. 337.73 s [really-safe-money-gen] --
  15643. 337.73 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account.hs:211:11-37
  15644. 337.73 s [really-safe-money-gen] @@ -208,9 +208,9 @@
  15645. 337.73 s [really-safe-money-gen] -- (-3) % 20
  15646. 337.73 s [really-safe-money-gen] toRational :: QuantisationFactor -> Account -> Rational
  15647. 337.73 s [really-safe-money-gen] toRational quantisationFactor account =
  15648. 337.73 s [really-safe-money-gen] - let f = case account of
  15649. 337.73 s [really-safe-money-gen] - Positive _ -> id
  15650. 337.73 s [really-safe-money-gen] - Negative _ -> Prelude.negate
  15651. 337.73 s [really-safe-money-gen] + let f = case account of
  15652. 337.73 s [really-safe-money-gen] + Positive _ -> id
  15653. 337.73 s [really-safe-money-gen] + Negative _ -> Prelude.negate
  15654. 337.73 s [really-safe-money-gen] in f $ Amount.toRational quantisationFactor (abs account)
  15655. 337.73 s [really-safe-money-gen]
  15656. 337.73 s [really-safe-money-gen] -- | Turn a 'Rational' into an amount of money.
  15657. 337.73 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:123:7-39
  15658. 337.73 s [really-safe-money-gen] @@ -120,17 +120,17 @@
  15659. 337.73 s [really-safe-money-gen] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  15660. 337.73 s [really-safe-money-gen] a :: Integer
  15661. 337.73 s [really-safe-money-gen] a = (Prelude.abs :: Integer -> Integer) i
  15662. 337.73 s [really-safe-money-gen] - in if a > maxBoundI
  15663. 337.73 s [really-safe-money-gen] - then Nothing
  15664. 337.73 s [really-safe-money-gen] - else
  15665. 337.73 s [really-safe-money-gen] - let w :: Word64
  15666. 337.73 s [really-safe-money-gen] - w = (fromIntegral :: Integer -> Word64) a
  15667. 337.73 s [really-safe-money-gen] - amount :: Amount
  15668. 337.73 s [really-safe-money-gen] - amount = Amount.fromMinimalQuantisations w
  15669. 337.73 s [really-safe-money-gen] - in Just $
  15670. 337.73 s [really-safe-money-gen] - if i >= 0
  15671. 337.73 s [really-safe-money-gen] - then Positive amount
  15672. 337.73 s [really-safe-money-gen] - else Negative amount
  15673. 337.73 s [really-safe-money-gen] + in if a > maxBoundI
  15674. 337.73 s [really-safe-money-gen] + then Nothing
  15675. 337.73 s [really-safe-money-gen] + else
  15676. 337.73 s [really-safe-money-gen] + let w :: Word64
  15677. 337.73 s [really-safe-money-gen] + w = (fromIntegral :: Integer -> Word64) a
  15678. 337.73 s [really-safe-money-gen] + amount :: Amount
  15679. 337.73 s [really-safe-money-gen] + amount = Amount.fromMinimalQuantisations w
  15680. 337.73 s [really-safe-money-gen] + in Just $
  15681. 337.73 s [really-safe-money-gen] + if i >= 0
  15682. 337.73 s [really-safe-money-gen] + then Positive amount
  15683. 337.73 s [really-safe-money-gen] + else Negative amount
  15684. 337.73 s [really-safe-money-gen]
  15685. 337.73 s [really-safe-money-gen] -- | Turn an amount into a positive account
  15686. 337.73 s [really-safe-money-gen] --
  15687. 337.73 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  15688. 337.73 s [really-safe-money-gen] @@ -177,11 +177,11 @@
  15689. 337.74 s [really-safe-money-gen]
  15690. 337.74 s [really-safe-money-gen] -- | See 'Account.distribute'
  15691. 337.74 s [really-safe-money-gen] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  15692. 337.74 s [really-safe-money-gen] -distribute (AccountOf a) w = case Account.distribute a w of
  15693. 337.74 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15694. 337.74 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15695. 337.74 s [really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  15696. 337.74 s [really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  15697. 337.74 s [really-safe-money-gen] +distribute (AccountOf a) w = case Account.distribute a w of
  15698. 337.74 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15699. 337.74 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15700. 337.74 s [really-safe-money-gen] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  15701. 337.74 s [really-safe-money-gen] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  15702. 337.74 s [really-safe-money-gen]
  15703. 337.74 s [really-safe-money-gen] -- | The result of 'distribute'
  15704. 337.74 s [really-safe-money-gen] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  15705. 337.74 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  15706. 337.74 s [really-safe-money-gen] @@ -177,11 +177,11 @@
  15707. 337.74 s [really-safe-money-gen]
  15708. 337.74 s [really-safe-money-gen] -- | See 'Account.distribute'
  15709. 337.74 s [really-safe-money-gen] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  15710. 337.74 s [really-safe-money-gen] -distribute (AccountOf a) w = case Account.distribute a w of
  15711. 337.74 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15712. 337.74 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15713. 337.74 s [really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  15714. 337.74 s [really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  15715. 337.74 s [really-safe-money-gen] +distribute (AccountOf a) w = case Account.distribute a w of
  15716. 337.74 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15717. 337.74 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15718. 337.74 s [really-safe-money-gen] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  15719. 337.74 s [really-safe-money-gen] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  15720. 337.74 s [really-safe-money-gen]
  15721. 337.74 s [really-safe-money-gen] -- | The result of 'distribute'
  15722. 337.74 s [really-safe-money-gen] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  15723. 337.74 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:503:10-16
  15724. 337.74 s [really-safe-money-gen] @@ -500,7 +500,7 @@
  15725. 337.74 s [really-safe-money-gen] RoundNearest -> RoundNearest
  15726. 337.74 s [really-safe-money-gen] (ma, ar) = fractionRatio ro account af
  15727. 337.74 s [really-safe-money-gen] r = (realToFrac :: Ratio Natural -> Rational) ar
  15728. 337.74 s [really-safe-money-gen] - in if f >= 0
  15729. 337.74 s [really-safe-money-gen] + in if True
  15730. 337.74 s [really-safe-money-gen] then (ma, r)
  15731. 337.74 s [really-safe-money-gen] else (negate <$> ma, -r)
  15732. 337.74 s [really-safe-money-gen]
  15733. 337.74 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  15734. 337.74 s [really-safe-money-gen] @@ -177,11 +177,11 @@
  15735. 337.74 s [really-safe-money-gen]
  15736. 337.74 s [really-safe-money-gen] -- | See 'Account.distribute'
  15737. 337.74 s [really-safe-money-gen] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  15738. 337.74 s [really-safe-money-gen] -distribute (AccountOf a) w = case Account.distribute a w of
  15739. 337.74 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15740. 337.74 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15741. 337.74 s [really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  15742. 338.62 s [really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  15743. 338.62 s [really-safe-money-gen] +distribute (AccountOf a) w = case Account.distribute a w of
  15744. 338.62 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15745. 338.62 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15746. 338.62 s [really-safe-money-gen] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  15747. 338.62 s [really-safe-money-gen] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  15748. 338.62 s [really-safe-money-gen]
  15749. 338.63 s [really-safe-money-gen] -- | The result of 'distribute'
  15750. 338.63 s [really-safe-money-gen] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  15751. 338.63 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  15752. 338.63 s [really-safe-money-gen] @@ -212,11 +212,11 @@
  15753. 338.63 s [really-safe-money-gen]
  15754. 338.63 s [really-safe-money-gen] -- | See 'Amount.distribute'
  15755. 338.63 s [really-safe-money-gen] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  15756. 338.63 s [really-safe-money-gen] -distribute (AmountOf a) f = case Amount.distribute a f of
  15757. 338.63 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15758. 338.63 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15759. 338.63 s [really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  15760. 338.63 s [really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  15761. 338.63 s [really-safe-money-gen] +distribute (AmountOf a) f = case Amount.distribute a f of
  15762. 338.63 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15763. 338.63 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15764. 338.63 s [really-safe-money-gen] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  15765. 338.63 s [really-safe-money-gen] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  15766. 338.63 s [really-safe-money-gen]
  15767. 338.63 s [really-safe-money-gen] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  15768. 338.63 s [really-safe-money-gen]
  15769. 338.63 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/AccountOf.hs:180:30-115
  15770. 338.63 s [really-safe-money-gen] @@ -177,11 +177,11 @@
  15771. 338.63 s [really-safe-money-gen]
  15772. 338.63 s [really-safe-money-gen] -- | See 'Account.distribute'
  15773. 338.63 s [really-safe-money-gen] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  15774. 338.63 s [really-safe-money-gen] -distribute (AccountOf a) w = case Account.distribute a w of
  15775. 338.63 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15776. 338.63 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15777. 338.63 s [really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  15778. 338.63 s [really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  15779. 338.63 s [really-safe-money-gen] +distribute (AccountOf a) w = case Account.distribute a w of
  15780. 338.63 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15781. 338.63 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15782. 338.63 s [really-safe-money-gen] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  15783. 338.63 s [really-safe-money-gen] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  15784. 338.63 s [really-safe-money-gen]
  15785. 338.63 s [really-safe-money-gen] -- | The result of 'distribute'
  15786. 338.63 s [really-safe-money-gen] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  15787. 338.63 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  15788. 338.63 s [really-safe-money-gen] @@ -212,11 +212,11 @@
  15789. 338.63 s [really-safe-money-gen]
  15790. 338.63 s [really-safe-money-gen] -- | See 'Amount.distribute'
  15791. 338.63 s [really-safe-money-gen] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  15792. 338.63 s [really-safe-money-gen] -distribute (AmountOf a) f = case Amount.distribute a f of
  15793. 338.63 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15794. 338.63 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15795. 338.63 s [really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  15796. 338.63 s [really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  15797. 338.63 s [really-safe-money-gen] +distribute (AmountOf a) f = case Amount.distribute a f of
  15798. 338.64 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15799. 338.64 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15800. 338.64 s [really-safe-money-gen] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  15801. 338.64 s [really-safe-money-gen] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  15802. 338.64 s [really-safe-money-gen]
  15803. 338.64 s [really-safe-money-gen] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  15804. 338.64 s [really-safe-money-gen]
  15805. 338.64 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  15806. 338.64 s [really-safe-money-gen] @@ -212,11 +212,11 @@
  15807. 338.64 s [really-safe-money-gen]
  15808. 338.64 s [really-safe-money-gen] -- | See 'Amount.distribute'
  15809. 338.64 s [really-safe-money-gen] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  15810. 338.64 s [really-safe-money-gen] -distribute (AmountOf a) f = case Amount.distribute a f of
  15811. 338.64 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15812. 338.64 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15813. 338.64 s [really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  15814. 338.64 s [really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  15815. 338.64 s [really-safe-money-gen] +distribute (AmountOf a) f = case Amount.distribute a f of
  15816. 338.64 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15817. 338.64 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15818. 338.64 s [really-safe-money-gen] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  15819. 338.64 s [really-safe-money-gen] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  15820. 338.64 s [really-safe-money-gen]
  15821. 338.64 s [really-safe-money-gen] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  15822. 338.64 s [really-safe-money-gen]
  15823. 338.64 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/AmountOf.hs:215:29-113
  15824. 338.64 s [really-safe-money-gen] @@ -212,11 +212,11 @@
  15825. 338.64 s [really-safe-money-gen]
  15826. 338.64 s [really-safe-money-gen] -- | See 'Amount.distribute'
  15827. 338.64 s [really-safe-money-gen] distribute :: AmountOf currency -> Word32 -> AmountDistributionOf currency
  15828. 338.64 s [really-safe-money-gen] -distribute (AmountOf a) f = case Amount.distribute a f of
  15829. 338.64 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15830. 338.64 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  15831. 338.64 s [really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  15832. 338.64 s [really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  15833. 338.64 s [really-safe-money-gen] +distribute (AmountOf a) f = case Amount.distribute a f of
  15834. 338.64 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  15835. 338.64 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  15836. 338.64 s [really-safe-money-gen] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAmount a')
  15837. 338.64 s [really-safe-money-gen] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAmount a1) w2 (fromAmount a2)
  15838. 338.64 s [really-safe-money-gen]
  15839. 338.64 s [really-safe-money-gen] type AmountDistributionOf (currency :: k) = Distribution (AmountOf currency)
  15840. 338.64 s [really-safe-money-gen]
  15841. 338.64 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:47:33-75
  15842. 338.64 s [really-safe-money-gen] @@ -44,7 +44,7 @@
  15843. 338.64 s [really-safe-money-gen] where
  15844. 338.64 s [really-safe-money-gen] f :: String -> Either String Amount
  15845. 338.64 s [really-safe-money-gen] f s = case readMaybe s of
  15846. 338.64 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  15847. 338.64 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  15848. 338.64 s [really-safe-money-gen] Just i ->
  15849. 338.64 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  15850. 338.64 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15851. 338.64 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:47:33-75
  15852. 338.64 s [really-safe-money-gen] @@ -44,7 +44,7 @@
  15853. 338.64 s [really-safe-money-gen] where
  15854. 338.64 s [really-safe-money-gen] f :: String -> Either String Amount
  15855. 338.64 s [really-safe-money-gen] f s = case readMaybe s of
  15856. 338.64 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  15857. 338.64 s [really-safe-money-gen] + Nothing -> Left $ unwords []
  15858. 338.64 s [really-safe-money-gen] Just i ->
  15859. 338.64 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  15860. 338.64 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15861. 338.64 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount/Codec.hs:49:12-59
  15862. 338.64 s [really-safe-money-gen] @@ -46,7 +46,7 @@
  15863. 338.64 s [really-safe-money-gen] f s = case readMaybe s of
  15864. 338.64 s [really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  15865. 338.64 s [really-safe-money-gen] Just i ->
  15866. 338.65 s [really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
  15867. 338.65 s [really-safe-money-gen] + if True
  15868. 338.65 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15869. 338.65 s [really-safe-money-gen] else
  15870. 338.65 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  15871. 338.65 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount/Codec.hs:49:12-59
  15872. 338.65 s [really-safe-money-gen] @@ -46,7 +46,7 @@
  15873. 338.65 s [really-safe-money-gen] f s = case readMaybe s of
  15874. 338.65 s [really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  15875. 338.65 s [really-safe-money-gen] Just i ->
  15876. 338.65 s [really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
  15877. 338.65 s [really-safe-money-gen] + if False
  15878. 338.65 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15879. 338.65 s [really-safe-money-gen] else
  15880. 338.65 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  15881. 338.65 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount/Codec.hs:49:12-59
  15882. 338.65 s [really-safe-money-gen] @@ -46,7 +46,7 @@
  15883. 338.65 s [really-safe-money-gen] f s = case readMaybe s of
  15884. 338.65 s [really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  15885. 338.65 s [really-safe-money-gen] Just i ->
  15886. 338.65 s [really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
  15887. 338.65 s [really-safe-money-gen] + if not ((i :: Integer) < toInteger (minBound :: Word64))
  15888. 338.65 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15889. 338.65 s [really-safe-money-gen] else
  15890. 338.65 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  15891. 338.65 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:50:31-84
  15892. 338.65 s [really-safe-money-gen] @@ -47,7 +47,7 @@
  15893. 338.65 s [really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  15894. 338.65 s [really-safe-money-gen] Just i ->
  15895. 338.65 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  15896. 338.65 s [really-safe-money-gen] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15897. 338.65 s [really-safe-money-gen] + then Left $ unwords []
  15898. 338.65 s [really-safe-money-gen] else
  15899. 338.65 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  15900. 338.65 s [really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15901. 338.65 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:50:31-84
  15902. 338.65 s [really-safe-money-gen] @@ -47,7 +47,7 @@
  15903. 338.65 s [really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  15904. 338.65 s [really-safe-money-gen] Just i ->
  15905. 338.65 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  15906. 338.65 s [really-safe-money-gen] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15907. 338.65 s [really-safe-money-gen] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15908. 338.65 s [really-safe-money-gen] else
  15909. 338.65 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  15910. 338.65 s [really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15911. 338.65 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount/Codec.hs:52:16-63
  15912. 338.65 s [really-safe-money-gen] @@ -49,7 +49,7 @@
  15913. 338.65 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  15914. 338.65 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15915. 338.65 s [really-safe-money-gen] else
  15916. 338.65 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  15917. 338.65 s [really-safe-money-gen] + if True
  15918. 338.65 s [really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15919. 338.65 s [really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  15920. 338.65 s [really-safe-money-gen] g :: Amount -> String
  15921. 338.65 s [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount/Codec.hs:52:16-63
  15922. 338.65 s [really-safe-money-gen] @@ -49,7 +49,7 @@
  15923. 338.65 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  15924. 338.65 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15925. 338.65 s [really-safe-money-gen] else
  15926. 338.65 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  15927. 338.65 s [really-safe-money-gen] + if False
  15928. 338.65 s [really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15929. 338.65 s [really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  15930. 338.65 s [really-safe-money-gen] g :: Amount -> String
  15931. 338.65 s [really-safe-money-gen] Testing mutation Negate at src/Money/Amount/Codec.hs:52:16-63
  15932. 338.65 s [really-safe-money-gen] @@ -49,7 +49,7 @@
  15933. 338.65 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  15934. 338.65 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15935. 338.65 s [really-safe-money-gen] else
  15936. 338.65 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  15937. 338.65 s [really-safe-money-gen] + if not ((i :: Integer) > toInteger (maxBound :: Word64))
  15938. 338.65 s [really-safe-money-gen] then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15939. 338.65 s [really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  15940. 338.65 s [really-safe-money-gen] g :: Amount -> String
  15941. 338.65 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:53:35-90
  15942. 338.65 s [really-safe-money-gen] @@ -50,7 +50,7 @@
  15943. 338.65 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15944. 338.65 s [really-safe-money-gen] else
  15945. 338.65 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  15946. 338.65 s [really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15947. 338.65 s [really-safe-money-gen] + then Left $ unwords []
  15948. 338.65 s [really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  15949. 338.66 s [really-safe-money-gen] g :: Amount -> String
  15950. 338.66 s [really-safe-money-gen] g = show . Amount.toMinimalQuantisations
  15951. 338.66 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount/Codec.hs:53:35-90
  15952. 338.66 s [really-safe-money-gen] @@ -50,7 +50,7 @@
  15953. 338.66 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15954. 338.66 s [really-safe-money-gen] else
  15955. 338.66 s [really-safe-money-gen] if (i :: Integer) > toInteger (maxBound :: Word64)
  15956. 338.66 s [really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15957. 338.66 s [really-safe-money-gen] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15958. 338.66 s [really-safe-money-gen] else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  15959. 338.66 s [really-safe-money-gen] g :: Amount -> String
  15960. 338.66 s [really-safe-money-gen] g = show . Amount.toMinimalQuantisations
  15961. 338.66 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount/Codec.hs:52:13-86
  15962. 338.66 s [really-safe-money-gen] @@ -49,9 +49,9 @@
  15963. 338.66 s [really-safe-money-gen] if (i :: Integer) < toInteger (minBound :: Word64)
  15964. 338.66 s [really-safe-money-gen] then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15965. 338.66 s [really-safe-money-gen] else
  15966. 338.66 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  15967. 338.66 s [really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15968. 338.66 s [really-safe-money-gen] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  15969. 338.66 s [really-safe-money-gen] + if (i :: Integer) > toInteger (maxBound :: Word64)
  15970. 338.66 s [really-safe-money-gen] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15971. 338.66 s [really-safe-money-gen] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  15972. 338.66 s [really-safe-money-gen] g :: Amount -> String
  15973. 338.66 s [really-safe-money-gen] g = show . Amount.toMinimalQuantisations
  15974. 338.66 s [really-safe-money-gen]
  15975. 338.66 s [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount/Codec.hs:49:9-86
  15976. 338.66 s [really-safe-money-gen] @@ -46,12 +46,12 @@
  15977. 338.66 s [really-safe-money-gen] f s = case readMaybe s of
  15978. 338.66 s [really-safe-money-gen] Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  15979. 338.66 s [really-safe-money-gen] Just i ->
  15980. 338.66 s [really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
  15981. 338.66 s [really-safe-money-gen] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15982. 338.66 s [really-safe-money-gen] - else
  15983. 338.66 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  15984. 338.66 s [really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15985. 338.66 s [really-safe-money-gen] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  15986. 338.66 s [really-safe-money-gen] + if (i :: Integer) < toInteger (minBound :: Word64)
  15987. 338.66 s [really-safe-money-gen] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  15988. 338.66 s [really-safe-money-gen] + else
  15989. 338.66 s [really-safe-money-gen] + if (i :: Integer) > toInteger (maxBound :: Word64)
  15990. 338.66 s [really-safe-money-gen] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  15991. 338.66 s [really-safe-money-gen] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  15992. 338.66 s [really-safe-money-gen] g :: Amount -> String
  15993. 338.66 s [really-safe-money-gen] g = show . Amount.toMinimalQuantisations
  15994. 338.66 s [really-safe-money-gen]
  15995. 338.66 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount/Codec.hs:46:11-86
  15996. 338.66 s [really-safe-money-gen] @@ -43,15 +43,15 @@
  15997. 338.66 s [really-safe-money-gen] codecViaString = bimapCodec f g stringCodec <?> "Amount"
  15998. 338.66 s [really-safe-money-gen] where
  15999. 338.66 s [really-safe-money-gen] f :: String -> Either String Amount
  16000. 338.66 s [really-safe-money-gen] - f s = case readMaybe s of
  16001. 338.66 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  16002. 338.66 s [really-safe-money-gen] - Just i ->
  16003. 338.66 s [really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
  16004. 338.66 s [really-safe-money-gen] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  16005. 338.66 s [really-safe-money-gen] - else
  16006. 338.66 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  16007. 338.66 s [really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  16008. 338.66 s [really-safe-money-gen] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  16009. 338.66 s [really-safe-money-gen] + f s = case readMaybe s of
  16010. 338.66 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  16011. 338.66 s [really-safe-money-gen] + Just i ->
  16012. 338.66 s [really-safe-money-gen] + if (i :: Integer) < toInteger (minBound :: Word64)
  16013. 338.66 s [really-safe-money-gen] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  16014. 338.66 s [really-safe-money-gen] + else
  16015. 338.66 s [really-safe-money-gen] + if (i :: Integer) > toInteger (maxBound :: Word64)
  16016. 338.66 s [really-safe-money-gen] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  16017. 338.66 s [really-safe-money-gen] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  16018. 338.66 s [really-safe-money-gen] g :: Amount -> String
  16019. 338.66 s [really-safe-money-gen] g = show . Amount.toMinimalQuantisations
  16020. 338.66 s [really-safe-money-gen]
  16021. 338.66 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Amount/Codec.hs:46:11-86
  16022. 338.66 s [really-safe-money-gen] @@ -43,15 +43,15 @@
  16023. 338.66 s [really-safe-money-gen] codecViaString = bimapCodec f g stringCodec <?> "Amount"
  16024. 338.66 s [really-safe-money-gen] where
  16025. 338.66 s [really-safe-money-gen] f :: String -> Either String Amount
  16026. 338.66 s [really-safe-money-gen] - f s = case readMaybe s of
  16027. 338.66 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  16028. 338.66 s [really-safe-money-gen] - Just i ->
  16029. 338.66 s [really-safe-money-gen] - if (i :: Integer) < toInteger (minBound :: Word64)
  16030. 338.66 s [really-safe-money-gen] - then Left $ unwords ["Negative number of minimal quantisations:", show i]
  16031. 338.66 s [really-safe-money-gen] - else
  16032. 338.66 s [really-safe-money-gen] - if (i :: Integer) > toInteger (maxBound :: Word64)
  16033. 338.66 s [really-safe-money-gen] - then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  16034. 338.66 s [really-safe-money-gen] - else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  16035. 338.66 s [really-safe-money-gen] + f s = case readMaybe s of
  16036. 338.66 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as an Amount:", s]
  16037. 338.66 s [really-safe-money-gen] + Just i ->
  16038. 338.66 s [really-safe-money-gen] + if (i :: Integer) < toInteger (minBound :: Word64)
  16039. 338.66 s [really-safe-money-gen] + then Left $ unwords ["Negative number of minimal quantisations:", show i]
  16040. 338.66 s [really-safe-money-gen] + else
  16041. 338.66 s [really-safe-money-gen] + if (i :: Integer) > toInteger (maxBound :: Word64)
  16042. 338.66 s [really-safe-money-gen] + then Left $ unwords ["Number of minimal quantisations is too big:", show i]
  16043. 338.66 s [really-safe-money-gen] + else Right $ Amount.fromMinimalQuantisations (fromIntegral i :: Word64)
  16044. 338.66 s [really-safe-money-gen] g :: Amount -> String
  16045. 338.66 s [really-safe-money-gen] g = show . Amount.toMinimalQuantisations
  16046. 338.66 s [really-safe-money-gen]
  16047. 338.66 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/QuantisationFactor/Codec.hs:41:11-26
  16048. 338.66 s [really-safe-money-gen] @@ -38,6 +38,6 @@
  16049. 338.66 s [really-safe-money-gen] codec
  16050. 338.67 s [really-safe-money-gen] <?> "QuantisationFactor"
  16051. 393.83 s [really-safe-money-gen] Killed: 301
  16052. 393.83 s [really-safe-money-gen] Survived: 38
  16053. 393.83 s [really-safe-money-gen] Uncovered: 33
  16054. 393.83 s [really-safe-money-gen]
  16055. 393.85 s [really-safe-money-gen] Surviving mutations:
  16056. 393.85 s [really-safe-money-gen]
  16057. 393.85 s [really-safe-money-gen] RemoveCase at src/Money/AccountOf.hs:180:30-115
  16058. 393.85 s [really-safe-money-gen] @@ -177,11 +177,11 @@
  16059. 393.85 s [really-safe-money-gen]
  16060. 393.86 s [really-safe-money-gen] -- | See 'Account.distribute'
  16061. 393.86 s [really-safe-money-gen] distribute :: AccountOf currency -> Word16 -> AccountDistributionOf currency
  16062. 393.86 s [really-safe-money-gen] -distribute (AccountOf a) w = case Account.distribute a w of
  16063. 393.86 s [really-safe-money-gen] - DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  16064. 393.86 s [really-safe-money-gen] - DistributedZero -> DistributedZero
  16065. 393.86 s [really-safe-money-gen] - DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  16066. 393.86 s [really-safe-money-gen] - DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  16067. 393.86 s [really-safe-money-gen] +distribute (AccountOf a) w = case Account.distribute a w of
  16068. 393.86 s [really-safe-money-gen] + DistributedIntoZeroChunks -> DistributedIntoZeroChunks
  16069. 393.86 s [really-safe-money-gen] + DistributedZero -> DistributedZero
  16070. 393.86 s [really-safe-money-gen] + DistributedIntoEqualChunks w' a' -> DistributedIntoEqualChunks w' (fromAccount a')
  16071. 393.86 s [really-safe-money-gen] + DistributedIntoUnequalChunks w1 a1 w2 a2 -> DistributedIntoUnequalChunks w1 (fromAccount a1) w2 (fromAccount a2)
  16072. 393.86 s [really-safe-money-gen]
  16073. 393.86 s [really-safe-money-gen] -- | The result of 'distribute'
  16074. 393.86 s [really-safe-money-gen] type AccountDistributionOf (currency :: k) = Distribution (AccountOf currency)
  16075. 393.86 s [really-safe-money-gen]
  16076. 393.86 s [really-safe-money-gen] IntLit at src/Money/Account.hs:131:25-26
  16077. 393.86 s [really-safe-money-gen] @@ -128,7 +128,7 @@
  16078. 393.86 s [really-safe-money-gen] amount :: Amount
  16079. 393.86 s [really-safe-money-gen] amount = Amount.fromMinimalQuantisations w
  16080. 393.86 s [really-safe-money-gen] in Just $
  16081. 393.86 s [really-safe-money-gen] - if i >= 0
  16082. 393.86 s [really-safe-money-gen] + if i >= 1
  16083. 393.86 s [really-safe-money-gen] then Positive amount
  16084. 393.86 s [really-safe-money-gen] else Negative amount
  16085. 393.86 s [really-safe-money-gen]
  16086. 393.86 s [really-safe-money-gen]
  16087. 393.86 s [really-safe-money-gen] ConstBool at src/Money/Account.hs:123:10-23
  16088. 393.86 s [really-safe-money-gen] @@ -120,7 +120,7 @@
  16089. 393.86 s [really-safe-money-gen] maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64)
  16090. 393.86 s [really-safe-money-gen] a :: Integer
  16091. 393.86 s [really-safe-money-gen] a = (Prelude.abs :: Integer -> Integer) i
  16092. 393.86 s [really-safe-money-gen] - in if a > maxBoundI
  16093. 393.86 s [really-safe-money-gen] + in if False
  16094. 393.86 s [really-safe-money-gen] then Nothing
  16095. 393.86 s [really-safe-money-gen] else
  16096. 393.86 s [really-safe-money-gen] let w :: Word64
  16097. 393.86 s [really-safe-money-gen]
  16098. 393.86 s [really-safe-money-gen] ListLit at src/Money/QuantisationFactor.hs:39:7-8
  16099. 393.86 s [really-safe-money-gen] @@ -36,9 +36,9 @@
  16100. 393.86 s [really-safe-money-gen] instance Validity QuantisationFactor where
  16101. 393.86 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  16102. 393.86 s [really-safe-money-gen] mconcat
  16103. 393.86 s [really-safe-money-gen] - [ genericValidate qf,
  16104. 393.86 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  16105. 393.86 s [really-safe-money-gen] - ]
  16106. 393.86 s [really-safe-money-gen] + [ genericValidate qf,
  16107. 393.86 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ w /= 0
  16108. 393.86 s [really-safe-money-gen] + ]
  16109. 393.86 s [really-safe-money-gen]
  16110. 393.86 s [really-safe-money-gen] instance NFData QuantisationFactor
  16111. 393.86 s [really-safe-money-gen]
  16112. 393.86 s [really-safe-money-gen]
  16113. 393.86 s [really-safe-money-gen] ListLit at src/Money/QuantisationFactor.hs:39:7-8
  16114. 393.86 s [really-safe-money-gen] @@ -36,9 +36,7 @@
  16115. 393.86 s [really-safe-money-gen] instance Validity QuantisationFactor where
  16116. 393.86 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  16117. 393.86 s [really-safe-money-gen] mconcat
  16118. 393.86 s [really-safe-money-gen] - [ genericValidate qf,
  16119. 393.86 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  16120. 393.86 s [really-safe-money-gen] - ]
  16121. 393.86 s [really-safe-money-gen] + []
  16122. 393.86 s [really-safe-money-gen]
  16123. 393.86 s [really-safe-money-gen] instance NFData QuantisationFactor
  16124. 393.86 s [really-safe-money-gen]
  16125. 393.86 s [really-safe-money-gen]
  16126. 393.86 s [really-safe-money-gen] ConstBool at src/Money/QuantisationFactor.hs:40:57-63
  16127. 393.86 s [really-safe-money-gen] @@ -37,7 +37,7 @@
  16128. 393.86 s [really-safe-money-gen] validate qf@(QuantisationFactor w) =
  16129. 393.86 s [really-safe-money-gen] mconcat
  16130. 393.86 s [really-safe-money-gen] [ genericValidate qf,
  16131. 393.86 s [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0
  16132. 393.86 s [really-safe-money-gen] + declare "The quantisation factor is not zero" $ True
  16133. 393.86 s [really-safe-money-gen] ]
  16134. 393.86 s [really-safe-money-gen]
  16135. 393.86 s [really-safe-money-gen] instance NFData QuantisationFactor
  16136. 393.86 s [really-safe-money-gen]
  16137. 393.86 s [really-safe-money-gen] IntLit at src/Money/QuantisationFactor.hs:93:16-17
  16138. 393.86 s [really-safe-money-gen] @@ -90,7 +90,7 @@
  16139. 393.86 s [really-safe-money-gen]
  16140. 393.86 s [really-safe-money-gen] rat <-
  16141. 393.86 s [really-safe-money-gen] let r = 1 / irat
  16142. 393.86 s [really-safe-money-gen] - in if r < 0
  16143. 393.86 s [really-safe-money-gen] + in if r < 1
  16144. 393.86 s [really-safe-money-gen] then Nothing
  16145. 393.86 s [really-safe-money-gen] else Just r
  16146. 393.86 s [really-safe-money-gen]
  16147. 393.86 s [really-safe-money-gen]
  16148. 393.86 s [really-safe-money-gen] ListLit at src/Money/Amount.hs:603:7-8
  16149. 393.86 s [really-safe-money-gen] @@ -600,13 +600,13 @@
  16150. 393.86 s [really-safe-money-gen] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  16151. 393.86 s [really-safe-money-gen] validate ad =
  16152. 393.86 s [really-safe-money-gen] mconcat
  16153. 393.86 s [really-safe-money-gen] - [ genericValidate ad,
  16154. 393.86 s [really-safe-money-gen] - case ad of
  16155. 393.86 s [really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  16156. 393.86 s [really-safe-money-gen] - declare "The larger chunks are larger" $
  16157. 393.86 s [really-safe-money-gen] - a1 > a2
  16158. 393.86 s [really-safe-money-gen] - _ -> valid
  16159. 393.86 s [really-safe-money-gen] - ]
  16160. 393.86 s [really-safe-money-gen] + [ genericValidate ad,
  16161. 393.86 s [really-safe-money-gen] + case ad of
  16162. 393.86 s [really-safe-money-gen] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  16163. 393.86 s [really-safe-money-gen] + declare "The larger chunks are larger" $
  16164. 393.86 s [really-safe-money-gen] + a1 > a2
  16165. 393.86 s [really-safe-money-gen] + _ -> valid
  16166. 393.86 s [really-safe-money-gen] + ]
  16167. 393.86 s [really-safe-money-gen]
  16168. 393.86 s [really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
  16169. 393.86 s [really-safe-money-gen]
  16170. 393.86 s [really-safe-money-gen]
  16171. 393.86 s [really-safe-money-gen] ListLit at src/Money/Amount.hs:603:7-8
  16172. 393.86 s [really-safe-money-gen] @@ -600,13 +600,7 @@
  16173. 393.86 s [really-safe-money-gen] instance (Validity amount, Ord amount) => Validity (Distribution amount) where
  16174. 393.86 s [really-safe-money-gen] validate ad =
  16175. 393.86 s [really-safe-money-gen] mconcat
  16176. 393.86 s [really-safe-money-gen] - [ genericValidate ad,
  16177. 393.86 s [really-safe-money-gen] - case ad of
  16178. 393.86 s [really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  16179. 393.86 s [really-safe-money-gen] - declare "The larger chunks are larger" $
  16180. 393.86 s [really-safe-money-gen] - a1 > a2
  16181. 393.86 s [really-safe-money-gen] - _ -> valid
  16182. 393.86 s [really-safe-money-gen] - ]
  16183. 393.86 s [really-safe-money-gen] + []
  16184. 393.86 s [really-safe-money-gen]
  16185. 393.86 s [really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
  16186. 393.86 s [really-safe-money-gen]
  16187. 393.86 s [really-safe-money-gen]
  16188. 393.86 s [really-safe-money-gen] RemoveCase at src/Money/Amount.hs:604:9-21
  16189. 393.86 s [really-safe-money-gen] @@ -601,11 +601,11 @@
  16190. 393.86 s [really-safe-money-gen] validate ad =
  16191. 393.86 s [really-safe-money-gen] mconcat
  16192. 393.86 s [really-safe-money-gen] [ genericValidate ad,
  16193. 393.86 s [really-safe-money-gen] - case ad of
  16194. 393.86 s [really-safe-money-gen] - DistributedIntoUnequalChunks _ a1 _ a2 ->
  16195. 393.86 s [really-safe-money-gen] - declare "The larger chunks are larger" $
  16196. 393.86 s [really-safe-money-gen] - a1 > a2
  16197. 393.86 s [really-safe-money-gen] - _ -> valid
  16198. 393.86 s [really-safe-money-gen] + case ad of
  16199. 393.86 s [really-safe-money-gen] + DistributedIntoUnequalChunks _ a1 _ a2 ->
  16200. 393.86 s [really-safe-money-gen] + declare "The larger chunks are larger" $
  16201. 393.86 s [really-safe-money-gen] + a1 > a2
  16202. 393.86 s [really-safe-money-gen] + _ -> valid
  16203. 393.86 s [really-safe-money-gen] ]
  16204. 393.86 s [really-safe-money-gen]
  16205. 393.86 s [really-safe-money-gen] instance (NFData amount) => NFData (Distribution amount)
  16206. 393.86 s [really-safe-money-gen]
  16207. 393.86 s [really-safe-money-gen] ConstBool at src/Money/Amount.hs:607:15-22
  16208. 393.86 s [really-safe-money-gen] @@ -604,7 +604,7 @@
  16209. 393.86 s [really-safe-money-gen] case ad of
  16210. 393.86 s [really-safe-money-gen] DistributedIntoUnequalChunks _ a1 _ a2 ->
  16211. 393.86 s [really-safe-money-gen] declare "The larger chunks are larger" $
  16212. 393.86 s [really-safe-money-gen] - a1 > a2
  16213. 393.86 s [really-safe-money-gen] + True
  16214. 393.86 s [really-safe-money-gen] _ -> valid
  16215. 393.86 s [really-safe-money-gen] ]
  16216. 393.86 s [really-safe-money-gen]
  16217. 393.86 s [really-safe-money-gen]
  16218. 393.86 s [really-safe-money-gen] ConstBool at src/Money/Amount.hs:332:14-40
  16219. 393.86 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  16220. 393.86 s [really-safe-money-gen] | otherwise =
  16221. 393.86 s [really-safe-money-gen] -- Shortcut for numbers that are way too big anyway
  16222. 393.86 s [really-safe-money-gen] -- so that we don't have to compute the according 'Natural' values.
  16223. 393.86 s [really-safe-money-gen] - if exponent resultDouble > 65
  16224. 393.86 s [really-safe-money-gen] + if False
  16225. 393.86 s [really-safe-money-gen] then Nothing
  16226. 393.86 s [really-safe-money-gen] else
  16227. 393.86 s [really-safe-money-gen] let ceiled :: Natural
  16228. 393.86 s [really-safe-money-gen]
  16229. 393.86 s [really-safe-money-gen] ConstBool at src/Money/Amount.hs:518:10-15
  16230. 393.86 s [really-safe-money-gen] @@ -515,7 +515,7 @@
  16231. 393.86 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  16232. 393.86 s [really-safe-money-gen] r :: Integer
  16233. 393.86 s [really-safe-money-gen] r = i1 - i2
  16234. 393.86 s [really-safe-money-gen] - in if r < 0
  16235. 393.86 s [really-safe-money-gen] + in if True
  16236. 393.86 s [really-safe-money-gen] then Nothing
  16237. 393.86 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  16238. 393.86 s [really-safe-money-gen]
  16239. 393.86 s [really-safe-money-gen]
  16240. 393.86 s [really-safe-money-gen] IntLit at src/Money/Amount.hs:518:14-15
  16241. 393.86 s [really-safe-money-gen] @@ -515,7 +515,7 @@
  16242. 393.86 s [really-safe-money-gen] i2 = (fromIntegral :: Word64 -> Integer) a2
  16243. 393.86 s [really-safe-money-gen] r :: Integer
  16244. 393.86 s [really-safe-money-gen] r = i1 - i2
  16245. 393.86 s [really-safe-money-gen] - in if r < 0
  16246. 393.86 s [really-safe-money-gen] + in if r < 1
  16247. 393.86 s [really-safe-money-gen] then Nothing
  16248. 393.86 s [really-safe-money-gen] else Just (Amount ((fromInteger :: Integer -> Word64) r))
  16249. 393.86 s [really-safe-money-gen]
  16250. 393.86 s [really-safe-money-gen]
  16251. 393.86 s [really-safe-money-gen] RemoveCase at src/Numeric/DecimalLiteral.hs:112:17-21
  16252. 393.86 s [really-safe-money-gen] @@ -109,9 +109,9 @@
  16253. 393.86 s [really-safe-money-gen]
  16254. 393.86 s [really-safe-money-gen] -- | Like 'fromString' but in a 'MonadFail'
  16255. 393.86 s [really-safe-money-gen] fromStringM :: (MonadFail m) => String -> m DecimalLiteral
  16256. 393.86 s [really-safe-money-gen] -fromStringM s = case Numeric.DecimalLiteral.fromString s of
  16257. 393.86 s [really-safe-money-gen] - Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  16258. 393.86 s [really-safe-money-gen] - Just dl -> pure dl
  16259. 393.86 s [really-safe-money-gen] +fromStringM s = case Numeric.DecimalLiteral.fromString s of
  16260. 393.86 s [really-safe-money-gen] + Nothing -> fail $ "Failed to parse decimal literal from: " <> show s
  16261. 393.86 s [really-safe-money-gen] + Just dl -> pure dl
  16262. 393.86 s [really-safe-money-gen]
  16263. 393.86 s [really-safe-money-gen] decimalLiteralP :: ReadP DecimalLiteral
  16264. 393.86 s [really-safe-money-gen] decimalLiteralP = do
  16265. 393.86 s [really-safe-money-gen]
  16266. 393.86 s [really-safe-money-gen] IntLit at src/Numeric/DecimalLiteral.hs:208:9-10
  16267. 393.86 s [really-safe-money-gen] @@ -205,7 +205,7 @@
  16268. 393.86 s [really-safe-money-gen] -- Nothing
  16269. 393.86 s [really-safe-money-gen] fromRational :: Rational -> Maybe DecimalLiteral
  16270. 393.86 s [really-safe-money-gen] fromRational (n :% d)
  16271. 393.86 s [really-safe-money-gen] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  16272. 393.86 s [really-safe-money-gen] + | n < 1 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d)
  16273. 393.86 s [really-safe-money-gen] | otherwise = fromRatio (fromIntegral n % fromIntegral d)
  16274. 393.86 s [really-safe-money-gen]
  16275. 393.86 s [really-safe-money-gen] -- | Turn a 'DecimalLiteral' into a 'Rational'
  16276. 393.86 s [really-safe-money-gen]
  16277. 393.86 s [really-safe-money-gen] RemoveCase at src/Numeric/DecimalLiteral.hs:287:38-40
  16278. 393.86 s [really-safe-money-gen] @@ -284,9 +284,9 @@
  16279. 393.86 s [really-safe-money-gen] -- >>> toRatio (DecimalLiteral (Just False) 3 1)
  16280. 393.86 s [really-safe-money-gen] -- Nothing
  16281. 393.86 s [really-safe-money-gen] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  16282. 393.86 s [really-safe-money-gen] -toRatio (DecimalLiteral mSign m e) = case mSign of
  16283. 393.86 s [really-safe-money-gen] - Just False -> Nothing
  16284. 393.86 s [really-safe-money-gen] - _ -> Just $ fromIntegral m / (10 ^ e)
  16285. 393.86 s [really-safe-money-gen] +toRatio (DecimalLiteral mSign m e) = case mSign of
  16286. 393.86 s [really-safe-money-gen] + Just False -> Nothing
  16287. 393.86 s [really-safe-money-gen] + _ -> Just $ fromIntegral m / (10 ^ e)
  16288. 393.86 s [really-safe-money-gen]
  16289. 393.86 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Word'
  16290. 393.86 s [really-safe-money-gen] fromWord :: Word -> DecimalLiteral
  16291. 393.86 s [really-safe-money-gen]
  16292. 393.86 s [really-safe-money-gen] IntLit at src/Numeric/DecimalLiteral.hs:289:33-35
  16293. 393.86 s [really-safe-money-gen] @@ -286,7 +286,7 @@
  16294. 393.86 s [really-safe-money-gen] toRatio :: DecimalLiteral -> Maybe (Ratio Natural)
  16295. 393.86 s [really-safe-money-gen] toRatio (DecimalLiteral mSign m e) = case mSign of
  16296. 393.86 s [really-safe-money-gen] Just False -> Nothing
  16297. 393.86 s [really-safe-money-gen] - _ -> Just $ fromIntegral m / (10 ^ e)
  16298. 393.86 s [really-safe-money-gen] + _ -> Just $ fromIntegral m / (1 ^ e)
  16299. 393.86 s [really-safe-money-gen]
  16300. 393.86 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Word'
  16301. 393.86 s [really-safe-money-gen] fromWord :: Word -> DecimalLiteral
  16302. 393.86 s [really-safe-money-gen]
  16303. 393.86 s [really-safe-money-gen] ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47
  16304. 393.86 s [really-safe-money-gen] @@ -296,7 +296,7 @@
  16305. 393.86 s [really-safe-money-gen] toWord :: DecimalLiteral -> Maybe Word
  16306. 393.86 s [really-safe-money-gen] toWord dl = do
  16307. 393.86 s [really-safe-money-gen] n <- toNatural dl
  16308. 393.86 s [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Word)
  16309. 393.86 s [really-safe-money-gen] + guard $ True
  16310. 393.86 s [really-safe-money-gen] pure $ fromIntegral n
  16311. 393.86 s [really-safe-money-gen]
  16312. 393.86 s [really-safe-money-gen] -- | Construct a 'DecimalLiteral' from a 'Natural'
  16313. 393.86 s [really-safe-money-gen]
  16314. 393.86 s [really-safe-money-gen] ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46
  16315. 393.86 s [really-safe-money-gen] @@ -330,7 +330,7 @@
  16316. 393.86 s [really-safe-money-gen] toInt dl = do
  16317. 393.86 s [really-safe-money-gen] n <- toInteger dl
  16318. 393.86 s [really-safe-money-gen] guard $ n <= fromIntegral (maxBound :: Int)
  16319. 393.86 s [really-safe-money-gen] - guard $where
  16320. 393.86 s [really-safe-money-gen] - f w = case QuantisationFactor.fromWord32 w of
  16321. 393.86 s [really-safe-money-gen] - Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  16322. 393.87 s [really-safe-money-gen] - Just qf -> Right qf
  16323. 393.87 s [really-safe-money-gen] + f w = case QuantisationFactor.fromWord32 w of
  16324. 393.87 s [really-safe-money-gen] + Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  16325. 393.87 s [really-safe-money-gen] + Just qf -> Right qf
  16326. 393.87 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/QuantisationFactor/Codec.hs:41:11-26
  16327. 393.87 s [really-safe-money-gen] @@ -38,6 +38,6 @@
  16328. 393.87 s [really-safe-money-gen] codec
  16329. 393.87 s [really-safe-money-gen] <?> "QuantisationFactor"
  16330. 393.87 s [really-safe-money-gen] where
  16331. 393.87 s [really-safe-money-gen] - f w = case QuantisationFactor.fromWord32 w of
  16332. 393.87 s [really-safe-money-gen] - Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  16333. 393.87 s [really-safe-money-gen] - Just qf -> Right qf
  16334. 393.87 s [really-safe-money-gen] + f w = case QuantisationFactor.fromWord32 w of
  16335. 393.87 s [really-safe-money-gen] + Nothing -> Left $ "Unable to parse as a quantisation factor: " <> show w
  16336. 393.87 s [really-safe-money-gen] + Just qf -> Right qf
  16337. 393.87 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account/Codec.hs:79:11-24
  16338. 393.87 s [really-safe-money-gen] @@ -76,6 +76,6 @@
  16339. 393.87 s [really-safe-money-gen] <?> "Account"
  16340. 393.87 s [really-safe-money-gen] where
  16341. 393.87 s [really-safe-money-gen] f :: Integer -> Either String Account
  16342. 393.87 s [really-safe-money-gen] - f i = case Account.fromMinimalQuantisations i of
  16343. 393.87 s [really-safe-money-gen] - Nothing -> Left $ "Number did not fit into an account value: " <> show i
  16344. 393.87 s [really-safe-money-gen] - Just a -> Right a
  16345. 393.87 s [really-safe-money-gen] + f i = case Account.fromMinimalQuantisations i of
  16346. 393.87 s [really-safe-money-gen] + Nothing -> Left $ "Number did not fit into an account value: " <> show i
  16347. 393.87 s [really-safe-money-gen] + Just a -> Right a
  16348. 393.87 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account/Codec.hs:79:11-24
  16349. 393.87 s [really-safe-money-gen] @@ -76,6 +76,6 @@
  16350. 393.87 s [really-safe-money-gen] <?> "Account"
  16351. 393.87 s [really-safe-money-gen] where
  16352. 393.87 s [really-safe-money-gen] f :: Integer -> Either String Account
  16353. 393.87 s [really-safe-money-gen] - f i = case Account.fromMinimalQuantisations i of
  16354. 393.87 s [really-safe-money-gen] - Nothing -> Left $ "Number did not fit into an account value: " <> show i
  16355. 393.87 s [really-safe-money-gen] - Just a -> Right a
  16356. 393.87 s [really-safe-money-gen] + f i = case Account.fromMinimalQuantisations i of
  16357. 393.87 s [really-safe-money-gen] + Nothing -> Left $ "Number did not fit into an account value: " <> show i
  16358. 393.87 s [really-safe-money-gen] + Just a -> Right a
  16359. 393.87 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Account/Codec.hs:51:33-76
  16360. 393.87 s [really-safe-money-gen] @@ -48,7 +48,7 @@
  16361. 393.87 s [really-safe-money-gen] where
  16362. 393.87 s [really-safe-money-gen] f :: String -> Either String Account
  16363. 393.87 s [really-safe-money-gen] f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  16364. 393.87 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  16365. 393.87 s [really-safe-money-gen] + Nothing -> Left $ unwords []
  16366. 393.87 s [really-safe-money-gen] Just a -> Right a
  16367. 393.87 s [really-safe-money-gen] g :: Account -> String
  16368. 393.87 s [really-safe-money-gen] g = show . Account.toMinimalQuantisations
  16369. 393.87 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account/Codec.hs:50:11-24
  16370. 393.87 s [really-safe-money-gen] @@ -47,9 +47,9 @@
  16371. 393.87 s [really-safe-money-gen] codecViaString = bimapCodec f g stringCodec <?> "Account"
  16372. 393.87 s [really-safe-money-gen] where
  16373. 393.87 s [really-safe-money-gen] f :: String -> Either String Account
  16374. 393.87 s [really-safe-money-gen] - f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  16375. 393.87 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  16376. 393.87 s [really-safe-money-gen] - Just a -> Right a
  16377. 393.87 s [really-safe-money-gen] + f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  16378. 393.87 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  16379. 393.87 s [really-safe-money-gen] + Just a -> Right a
  16380. 393.87 s [really-safe-money-gen] g :: Account -> String
  16381. 393.87 s [really-safe-money-gen] g = show . Account.toMinimalQuantisations
  16382. 393.87 s [really-safe-money-gen]
  16383. 393.87 s [really-safe-money-gen] Testing mutation ListLit at src/Money/Account/Codec.hs:51:33-76
  16384. 393.87 s [really-safe-money-gen] @@ -48,7 +48,7 @@
  16385. 393.87 s [really-safe-money-gen] where
  16386. 393.87 s [really-safe-money-gen] f :: String -> Either String Account
  16387. 393.87 s [really-safe-money-gen] f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  16388. 393.87 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  16389. 393.87 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  16390. 393.87 s [really-safe-money-gen] Just a -> Right a
  16391. 393.87 s [really-safe-money-gen] g :: Account -> String
  16392. 393.87 s [really-safe-money-gen] g = show . Account.toMinimalQuantisations
  16393. 393.87 s [really-safe-money-gen] Testing mutation RemoveCase at src/Money/Account/Codec.hs:50:11-24
  16394. 393.87 s [really-safe-money-gen] @@ -47,9 +47,9 @@
  16395. 393.87 s [really-safe-money-gen] codecViaString = bimapCodec f g stringCodec <?> "Account"
  16396. 393.87 s [really-safe-money-gen] where
  16397. 393.87 s [really-safe-money-gen] f :: String -> Either String Account
  16398. 393.87 s [really-safe-money-gen] - f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  16399. 393.87 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  16400. 393.87 s [really-safe-money-gen] - Just a -> Right a
  16401. 393.87 s [really-safe-money-gen] + f s = case readMaybe s >>= Account.fromMinimalQuantisations of
  16402. 393.87 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as an Account:", s]
  16403. 393.87 s [really-safe-money-gen] + Just a -> Right a
  16404. 393.87 s [really-safe-money-gen] g :: Account -> String
  16405. 393.87 s [really-safe-money-gen] g = show . Account.toMinimalQuantisations
  16406. 393.87 s [really-safe-money-gen]
  16407. 393.87 s [really-safe-money-gen] Testing mutation ListLit at src/Numeric/DecimalLiteral/Codec.hs:40:33-82
  16408. 393.87 s [really-safe-money-gen] @@ -37,5 +37,5 @@
  16409. 393.87 s [really-safe-money-gen] where
  16410. 393.87 s [really-safe-money-gen] f :: String -> Either String DecimalLiteral
  16411. 393.87 s [really-safe-money-gen] f s = case DecimalLiteral.fromString s of
  16412. 393.87 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  16413. 393.87 s [really-safe-money-gen] + Nothing -> Left $ unwords []
  16414. 393.87 s [really-safe-money-gen] Just a -> Right a
  16415. 393.87 s [really-safe-money-gen] Testing mutation RemoveCase at src/Numeric/DecimalLiteral/Codec.hs:39:11-24
  16416. 393.87 s [really-safe-money-gen] @@ -36,6 +36,6 @@
  16417. 393.87 s [really-safe-money-gen] codecViaString = bimapCodec f DecimalLiteral.toString stringCodec <?> "DecimalLiteral"
  16418. 393.87 s [really-safe-money-gen] where
  16419. 393.87 s [really-safe-money-gen] f :: String -> Either String DecimalLiteral
  16420. 393.87 s [really-safe-money-gen] - f s = case DecimalLiteral.fromString s of
  16421. 393.87 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  16422. 393.87 s [really-safe-money-gen] - Just a -> Right a
  16423. 393.87 s [really-safe-money-gen] + f s = case DecimalLiteral.fromString s of
  16424. 393.87 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  16425. 393.87 s [really-safe-money-gen] + Just a -> Right a
  16426. 393.87 s [really-safe-money-gen] Testing mutation ListLit at src/Numeric/DecimalLiteral/Codec.hs:40:33-82
  16427. 393.87 s [really-safe-money-gen] @@ -37,5 +37,5 @@
  16428. 393.87 s [really-safe-money-gen] where
  16429. 393.87 s [really-safe-money-gen] f :: String -> Either String DecimalLiteral
  16430. 393.87 s [really-safe-money-gen] f s = case DecimalLiteral.fromString s of
  16431. 393.87 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  16432. 393.87 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  16433. 393.87 s [really-safe-money-gen] Just a -> Right a
  16434. 393.87 s [really-safe-money-gen] Testing mutation RemoveCase at src/Numeric/DecimalLiteral/Codec.hs:39:11-24
  16435. 393.87 s [really-safe-money-gen] @@ -36,6 +36,6 @@
  16436. 393.87 s [really-safe-money-gen] codecViaString = bimapCodec f DecimalLiteral.toString stringCodec <?> "DecimalLiteral"
  16437. 393.87 s [really-safe-money-gen] where
  16438. 393.87 s [really-safe-money-gen] f :: String -> Either String DecimalLiteral
  16439. 393.87 s [really-safe-money-gen] - f s = case DecimalLiteral.fromString s of
  16440. 393.87 s [really-safe-money-gen] - Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  16441. 393.87 s [really-safe-money-gen] - Just a -> Right a
  16442. 393.87 s [really-safe-money-gen] + f s = case DecimalLiteral.fromString s of
  16443. 393.87 s [really-safe-money-gen] + Nothing -> Left $ unwords ["Could not read string as a DecimalLiteral:", s]
  16444. 393.87 s [really-safe-money-gen] + Just a -> Right a
  16445. 393.87 s [really-safe-money-gen] n >= fromIntegral (minBound :: Int)
  16446. 393.87 s [really-safe-money-gen] + guard $ True
  16447. 393.87 s [really-safe-money-gen] pure $ fromIntegral n
  16448. 393.87 s [really-safe-money-gen]
  16449. 393.87 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  16450. 393.87 s [really-safe-money-gen]
  16451. 393.87 s [really-safe-money-gen] ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46
  16452. 393.87 s [really-safe-money-gen] @@ -329,7 +329,7 @@
  16453. 393.87 s [really-safe-money-gen] toInt :: DecimalLiteral -> Maybe Int
  16454. 393.87 s [really-safe-money-gen] toInt dl = do
  16455. 393.87 s [really-safe-money-gen] n <- toInteger dl
  16456. 393.87 s [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Int)
  16457. 393.87 s [really-safe-money-gen] + guard $ True
  16458. 393.87 s [really-safe-money-gen] guard $ n >= fromIntegral (minBound :: Int)
  16459. 393.87 s [really-safe-money-gen] pure $ fromIntegral n
  16460. 393.87 s [really-safe-money-gen]
  16461. 393.87 s [really-safe-money-gen]
  16462. 393.87 s [really-safe-money-gen] IntLit at src/Numeric/DecimalLiteral.hs:337:21-22
  16463. 393.87 s [really-safe-money-gen] @@ -334,7 +334,7 @@
  16464. 393.87 s [really-safe-money-gen] pure $ fromIntegral n
  16465. 393.87 s [really-safe-money-gen]
  16466. 393.87 s [really-safe-money-gen] numSign :: (Ord a, Num a) => a -> Maybe Bool
  16467. 393.87 s [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False
  16468. 393.87 s [really-safe-money-gen] +numSign a = if a >= 1 then Nothing else Just False
  16469. 393.87 s [really-safe-money-gen]
  16470. 393.87 s [really-safe-money-gen] signSignum :: (Num a) => Maybe Bool -> (a -> a)
  16471. 393.87 s [really-safe-money-gen] signSignum = \case
  16472. 393.87 s [really-safe-money-gen]
  16473. 393.87 s [really-safe-money-gen] ListLit at src/Money/MultiAmount.hs:63:7-8
  16474. 393.87 s [really-safe-money-gen] @@ -60,11 +60,11 @@
  16475. 393.87 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
  16476. 393.87 s [really-safe-money-gen] validate ma@(MultiAmount m) =
  16477. 393.87 s [really-safe-money-gen] mconcat
  16478. 393.87 s [really-safe-money-gen] - [ genericValidate ma,
  16479. 393.87 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  16480. 393.87 s [really-safe-money-gen] - declare "The amount is not zero" $
  16481. 393.87 s [really-safe-money-gen] - a /= Amount.zero
  16482. 393.87 s [really-safe-money-gen] - ]
  16483. 393.87 s [really-safe-money-gen] + [ genericValidate ma,
  16484. 393.87 s [really-safe-money-gen] + decorateMap m $ \_ a ->
  16485. 393.87 s [really-safe-money-gen] + declare "The amount is not zero" $
  16486. 393.87 s [really-safe-money-gen] + a /= Amount.zero
  16487. 393.87 s [really-safe-money-gen] + ]
  16488. 393.87 s [really-safe-money-gen]
  16489. 393.87 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  16490. 393.87 s [really-safe-money-gen]
  16491. 393.87 s [really-safe-money-gen]
  16492. 393.87 s [really-safe-money-gen] ListLit at src/Money/MultiAmount.hs:63:7-8
  16493. 393.87 s [really-safe-money-gen] @@ -60,11 +60,7 @@
  16494. 393.87 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where
  16495. 393.87 s [really-safe-money-gen] validate ma@(MultiAmount m) =
  16496. 393.87 s [really-safe-money-gen] mconcat
  16497. 393.87 s [really-safe-money-gen] - [ genericValidate ma,
  16498. 393.87 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  16499. 393.87 s [really-safe-money-gen] - declare "The amount is not zero" $
  16500. 393.87 s [really-safe-money-gen] - a /= Amount.zero
  16501. 393.87 s [really-safe-money-gen] - ]
  16502. 393.87 s [really-safe-money-gen] + []
  16503. 393.87 s [really-safe-money-gen]
  16504. 393.87 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  16505. 393.87 s [really-safe-money-gen]
  16506. 393.87 s [really-safe-money-gen]
  16507. 393.87 s [really-safe-money-gen] ConstBool at src/Money/MultiAmount.hs:66:13-29
  16508. 393.87 s [really-safe-money-gen] @@ -63,7 +63,7 @@
  16509. 393.87 s [really-safe-money-gen] [ genericValidate ma,
  16510. 393.87 s [really-safe-money-gen] decorateMap m $ \_ a ->
  16511. 393.87 s [really-safe-money-gen] declare "The amount is not zero" $
  16512. 393.87 s [really-safe-money-gen] - a /= Amount.zero
  16513. 393.87 s [really-safe-money-gen] + True
  16514. 393.87 s [really-safe-money-gen] ]
  16515. 393.87 s [really-safe-money-gen]
  16516. 393.87 s [really-safe-money-gen] instance (NFData currency) => NFData (MultiAmount currency)
  16517. 393.87 s [really-safe-money-gen]
  16518. 393.87 s [really-safe-money-gen] ConstBool at src/Money/MultiAmount.hs:106:12-28
  16519. 393.87 s [really-safe-money-gen] @@ -103,7 +103,7 @@
  16520. 393.87 s [really-safe-money-gen] Just a -> do
  16521. 393.87 s [really-safe-money-gen] r <- Amount.add a amount
  16522. 393.87 s [really-safe-money-gen] Just $
  16523. 393.87 s [really-safe-money-gen] - if r == Amount.zero
  16524. 393.87 s [really-safe-money-gen] + if False
  16525. 393.87 s [really-safe-money-gen] then M.delete currency m
  16526. 393.87 s [really-safe-money-gen] else M.insert currency r m
  16527. 393.87 s [really-safe-money-gen]
  16528. 393.87 s [really-safe-money-gen]
  16529. 393.87 s [really-safe-money-gen] CondFlip at src/Money/MultiAmount.hs:119:9-37
  16530. 393.87 s [really-safe-money-gen] @@ -116,9 +116,9 @@
  16531. 393.87 s [really-safe-money-gen] Just a -> do
  16532. 393.87 s [really-safe-money-gen] r <- Amount.subtract a amount
  16533. 393.87 s [really-safe-money-gen] Just $
  16534. 393.87 s [really-safe-money-gen] - if r == Amount.zero
  16535. 393.87 s [really-safe-money-gen] - then M.delete currency m
  16536. 393.87 s [really-safe-money-gen] - else M.insert currency r m
  16537. 393.87 s [really-safe-money-gen] + if r == Amount.zero
  16538. 393.87 s [really-safe-money-gen] + then M.delete currency m
  16539. 393.87 s [really-safe-money-gen] + else M.insert currency r m
  16540. 393.87 s [really-safe-money-gen]
  16541. 393.87 s [really-safe-money-gen] -- | Try to convert every amount to one currency.
  16542. 393.87 s [really-safe-money-gen] --
  16543. 393.87 s [really-safe-money-gen]
  16544. 393.87 s [really-safe-money-gen] Negate at src/Money/MultiAmount.hs:119:12-28
  16545. 393.87 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  16546. 393.87 s [really-safe-money-gen] Just a -> do
  16547. 393.87 s [really-safe-money-gen] r <- Amount.subtract a amount
  16548. 393.87 s [really-safe-money-gen] Just $
  16549. 393.87 s [really-safe-money-gen] - if r == Amount.zero
  16550. 393.87 s [really-safe-money-gen] + if not (r == Amount.zero)
  16551. 393.87 s [really-safe-money-gen] then M.delete currency m
  16552. 393.87 s [really-safe-money-gen] else M.insert currency r m
  16553. 393.87 s [really-safe-money-gen]
  16554. 393.87 s [really-safe-money-gen]
  16555. 393.87 s [really-safe-money-gen] ConstBool at src/Money/MultiAmount.hs:119:12-28
  16556. 393.87 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  16557. 393.87 s [really-safe-money-gen] Just a -> do
  16558. 393.87 s [really-safe-money-gen] r <- Amount.subtract a amount
  16559. 393.87 s [really-safe-money-gen] Just $
  16560. 393.87 s [really-safe-money-gen] - if r == Amount.zero
  16561. 393.87 s [really-safe-money-gen] + if False
  16562. 393.87 s [really-safe-money-gen] then M.delete currency m
  16563. 393.88 s [really-safe-money-gen] else M.insert currency r m
  16564. 393.88 s [really-safe-money-gen]
  16565. 393.88 s [really-safe-money-gen]
  16566. 393.88 s [really-safe-money-gen] ConstBool at src/Money/MultiAmount.hs:119:12-28
  16567. 393.88 s [really-safe-money-gen] @@ -116,7 +116,7 @@
  16568. 393.88 s [really-safe-money-gen] Just a -> do
  16569. 393.88 s [really-safe-money-gen] r <- Amount.subtract a amount
  16570. 393.88 s [really-safe-money-gen] Just $
  16571. 393.88 s [really-safe-money-gen] - if r == Amount.zero
  16572. 393.88 s [really-safe-money-gen] + if True
  16573. 393.88 s [really-safe-money-gen] then M.delete currency m
  16574. 393.88 s [really-safe-money-gen] else M.insert currency r m
  16575. 393.88 s [really-safe-money-gen]
  16576. 393.88 s [really-safe-money-gen]
  16577. 393.88 s [really-safe-money-gen] ListLit at src/Money/ConversionRate.hs:37:7-8
  16578. 393.88 s [really-safe-money-gen] @@ -34,9 +34,9 @@
  16579. 393.88 s [really-safe-money-gen] instance Validity ConversionRate where
  16580. 393.88 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  16581. 393.88 s [really-safe-money-gen] mconcat
  16582. 393.88 s [really-safe-money-gen] - [ genericValidate cr,
  16583. 393.88 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  16584. 393.88 s [really-safe-money-gen] - ]
  16585. 393.88 s [really-safe-money-gen] + [ genericValidate cr,
  16586. 393.88 s [really-safe-money-gen] + declare "The rate is nonzero" $ numerator r /= 0
  16587. 393.88 s [really-safe-money-gen] + ]
  16588. 393.88 s [really-safe-money-gen]
  16589. 393.88 s [really-safe-money-gen] instance NFData ConversionRate
  16590. 393.88 s [really-safe-money-gen]
  16591. 393.88 s [really-safe-money-gen]
  16592. 393.88 s [really-safe-money-gen] ListLit at src/Money/ConversionRate.hs:37:7-8
  16593. 393.88 s [really-safe-money-gen] @@ -34,9 +34,7 @@
  16594. 393.88 s [really-safe-money-gen] instance Validity ConversionRate where
  16595. 393.88 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  16596. 393.88 s [really-safe-money-gen] mconcat
  16597. 393.88 s [really-safe-money-gen] - [ genericValidate cr,
  16598. 393.88 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  16599. 393.88 s [really-safe-money-gen] - ]
  16600. 393.88 s [really-safe-money-gen] + []
  16601. 393.88 s [really-safe-money-gen]
  16602. 393.88 s [really-safe-money-gen] instance NFData ConversionRate
  16603. 393.88 s [really-safe-money-gen]
  16604. 393.88 s [really-safe-money-gen]
  16605. 393.88 s [really-safe-money-gen] ConstBool at src/Money/ConversionRate.hs:38:41-57
  16606. 393.88 s [really-safe-money-gen] @@ -35,7 +35,7 @@
  16607. 393.88 s [really-safe-money-gen] validate cr@(ConversionRate r) =
  16608. 393.88 s [really-safe-money-gen] mconcat
  16609. 393.88 s [really-safe-money-gen] [ genericValidate cr,
  16610. 393.88 s [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0
  16611. 393.88 s [really-safe-money-gen] + declare "The rate is nonzero" $ True
  16612. 393.88 s [really-safe-money-gen] ]
  16613. 393.88 s [really-safe-money-gen]
  16614. 393.88 s [really-safe-money-gen] instance NFData ConversionRate
  16615. 393.88 s [really-safe-money-gen]
  16616. 393.88 s [really-safe-money-gen] IntLit at src/Money/ConversionRate.hs:109:27-28
  16617. 393.88 s [really-safe-money-gen] @@ -106,7 +106,7 @@
  16618. 393.88 s [really-safe-money-gen]
  16619. 393.88 s [really-safe-money-gen] -- | One-to-one conversion rate
  16620. 393.88 s [really-safe-money-gen] oneToOne :: ConversionRate
  16621. 393.88 s [really-safe-money-gen] -oneToOne = ConversionRate 1
  16622. 393.88 s [really-safe-money-gen] +oneToOne = ConversionRate 0
  16623. 393.88 s [really-safe-money-gen]
  16624. 393.88 s [really-safe-money-gen] -- | Invert a 'ConversionRate', to convert in the other direction.
  16625. 393.88 s [really-safe-money-gen] --
  16626. 393.88 s [really-safe-money-gen]
  16627. 393.88 s [really-safe-money-gen] ListLit at src/Money/MultiAccount.hs:66:7-8
  16628. 393.88 s [really-safe-money-gen] @@ -63,11 +63,11 @@
  16629. 393.88 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
  16630. 393.88 s [really-safe-money-gen] validate ma@(MultiAccount m) =
  16631. 393.88 s [really-safe-money-gen] mconcat
  16632. 393.88 s [really-safe-money-gen] - [ genericValidate ma,
  16633. 393.88 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  16634. 393.88 s [really-safe-money-gen] - declare "The account is not zero" $
  16635. 393.88 s [really-safe-money-gen] - a /= Account.zero
  16636. 393.88 s [really-safe-money-gen] - ]
  16637. 393.88 s [really-safe-money-gen] + [ genericValidate ma,
  16638. 393.88 s [really-safe-money-gen] + decorateMap m $ \_ a ->
  16639. 393.88 s [really-safe-money-gen] + declare "The account is not zero" $
  16640. 393.88 s [really-safe-money-gen] + a /= Account.zero
  16641. 393.88 s [really-safe-money-gen] + ]
  16642. 393.88 s [really-safe-money-gen]
  16643. 393.88 s [really-safe-money-gen] -- TODO no empty currencies
  16644. 393.88 s [really-safe-money-gen]
  16645. 393.88 s [really-safe-money-gen]
  16646. 393.88 s [really-safe-money-gen] ListLit at src/Money/MultiAccount.hs:66:7-8
  16647. 393.88 s [really-safe-money-gen] @@ -63,11 +63,7 @@
  16648. 393.88 s [really-safe-money-gen] instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where
  16649. 393.88 s [really-safe-money-gen] validate ma@(MultiAccount m) =
  16650. 393.88 s [really-safe-money-gen] mconcat
  16651. 393.88 s [really-safe-money-gen] - [ genericValidate ma,
  16652. 393.88 s [really-safe-money-gen] - decorateMap m $ \_ a ->
  16653. 393.88 s [really-safe-money-gen] - declare "The account is not zero" $
  16654. 393.88 s [really-safe-money-gen] - a /= Account.zero
  16655. 393.88 s [really-safe-money-gen] - ]
  16656. 393.88 s [really-safe-money-gen] + []
  16657. 393.88 s [really-safe-money-gen]
  16658. 393.88 s [really-safe-money-gen] -- TODO no empty currencies
  16659. 393.88 s [really-safe-money-gen]
  16660. 393.88 s [really-safe-money-gen]
  16661. 393.88 s [really-safe-money-gen] ConstBool at src/Money/MultiAccount.hs:69:13-30
  16662. 393.88 s [really-safe-money-gen] @@ -66,7 +66,7 @@
  16663. 393.88 s [really-safe-money-gen] [ genericValidate ma,
  16664. 393.88 s [really-safe-money-gen] decorateMap m $ \_ a ->
  16665. 393.88 s [really-safe-money-gen] declare "The account is not zero" $
  16666. 393.88 s [really-safe-money-gen] - a /= Account.zero
  16667. 393.88 s [really-safe-money-gen] + True
  16668. 393.88 s [really-safe-money-gen] ]
  16669. 393.88 s [really-safe-money-gen]
  16670. 393.88 s [really-safe-money-gen] -- TODO no empty currencies
  16671. 393.88 s [really-safe-money-gen]
  16672. 393.88 s [really-safe-money-gen] ConstBool at src/Money/MultiAccount.hs:78:6-28
  16673. 393.88 s [really-safe-money-gen] @@ -75,7 +75,7 @@
  16674. 393.88 s [really-safe-money-gen]
  16675. 393.88 s [really-safe-money-gen] fromAccount :: currency -> Account -> MultiAccount currency
  16676. 393.88 s [really-safe-money-gen] fromAccount currency amount =
  16677. 393.88 s [really-safe-money-gen] - if amount == Account.zero
  16678. 393.88 s [really-safe-money-gen] + if True
  16679. 393.88 s [really-safe-money-gen] then zero
  16680. 393.88 s [really-safe-money-gen] else MultiAccount $ M.singleton currency amount
  16681. 393.88 s [really-safe-money-gen]
  16682. 393.88 s [really-safe-money-gen] checkPhase completed in 5 minutes 20 seconds
  16683. 393.88 s [really-safe-money-gen] Phase: haddockPhase
  16684. 394.00 s [really-safe-money-gen] Preprocessing library for really-safe-money-gen-0.0.0.0...
  16685. 394.01 s [really-safe-money-gen] Running Haddock on library for really-safe-money-gen-0.0.0.0...
  16686. 394.01 s [really-safe-money-gen] Warning: The documentation for the following packages are not installed. No
  16687. 394.01 s [really-safe-money-gen] links will be generated to these packages: really-safe-money-0.0.0.0
  16688. 394.20 s [really-safe-money-gen] [ 1 of 13] Compiling Money.Amount.Gen ( src/Money/Amount/Gen.hs, nothing )
  16689. 394.35 s [really-safe-money-gen] [ 2 of 13] Compiling Money.Account.Gen ( src/Money/Account/Gen.hs, nothing )
  16690. 394.35 s [really-safe-money-gen] [ 3 of 13] Compiling Money.AccountOf.Gen ( src/Money/AccountOf/Gen.hs, nothing )
  16691. 394.36 s [really-safe-money-gen] [ 4 of 13] Compiling Money.AmountOf.Gen ( src/Money/AmountOf/Gen.hs, nothing )
  16692. 394.37 s [really-safe-money-gen] [ 5 of 13] Compiling Money.ConversionRate.Gen ( src/Money/ConversionRate/Gen.hs, nothing )
  16693. 394.39 s [really-safe-money-gen] [ 6 of 13] Compiling Money.ConversionRateOf.Gen ( src/Money/ConversionRateOf/Gen.hs, nothing )
  16694. 394.40 s [really-safe-money-gen] [ 7 of 13] Compiling Money.QuantisationFactor.Gen ( src/Money/QuantisationFactor/Gen.hs, nothing )
  16695. 394.40 s [really-safe-money-gen] [ 8 of 13] Compiling Money.Currency.Gen ( src/Money/Currency/Gen.hs, nothing )
  16696. 394.41 s [really-safe-money-gen] [ 9 of 13] Compiling Money.MultiAmount.Gen ( src/Money/MultiAmount/Gen.hs, nothing )
  16697. 394.44 s [really-safe-money-gen] [10 of 13] Compiling Money.MultiAccount.Gen ( src/Money/MultiAccount/Gen.hs, nothing )
  16698. 394.46 s [really-safe-money-gen] [11 of 13] Compiling Money.Gen ( src/Money/Gen.hs, nothing )
  16699. 394.46 s [really-safe-money-gen] [12 of 13] Compiling Numeric.DecimalLiteral.Gen ( src/Numeric/DecimalLiteral/Gen.hs, nothing )
  16700. 394.48 s [really-safe-money-gen] [13 of 13] Compiling Paths_really_safe_money_gen ( dist/build/autogen/Paths_really_safe_money_gen.hs, nothing )
  16701. 394.52 s [really-safe-money-gen] Haddock coverage:
  16702. 394.52 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.Amount.Gen'
  16703. 394.52 s [really-safe-money-gen] Missing documentation for:
  16704. 394.52 s [really-safe-money-gen] Module header
  16705. 394.52 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.Account.Gen'
  16706. 394.52 s [really-safe-money-gen] Missing documentation for:
  16707. 394.52 s [really-safe-money-gen] Module header
  16708. 394.52 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.AccountOf.Gen'
  16709. 394.52 s [really-safe-money-gen] Missing documentation for:
  16710. 394.52 s [really-safe-money-gen] Module header
  16711. 394.52 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.AmountOf.Gen'
  16712. 394.52 s [really-safe-money-gen] Missing documentation for:
  16713. 394.52 s [really-safe-money-gen] Module header
  16714. 394.52 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.ConversionRate.Gen'
  16715. 394.52 s [really-safe-money-gen] Missing documentation for:
  16716. 394.52 s [really-safe-money-gen] Module header
  16717. 394.52 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.ConversionRateOf.Gen'
  16718. 394.52 s [really-safe-money-gen] Missing documentation for:
  16719. 394.52 s [really-safe-money-gen] Module header
  16720. 394.52 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.QuantisationFactor.Gen'
  16721. 394.52 s [really-safe-money-gen] Missing documentation for:
  16722. 394.52 s [really-safe-money-gen] Module header
  16723. 394.52 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.Currency.Gen'
  16724. 394.52 s [really-safe-money-gen] Missing documentation for:
  16725. 394.52 s [really-safe-money-gen] Module header
  16726. 394.52 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.MultiAmount.Gen'
  16727. 394.52 s [really-safe-money-gen] Missing documentation for:
  16728. 394.52 s [really-safe-money-gen] Module header
  16729. 394.52 s [really-safe-money-gen] 0% ( 0 / 1) in 'Money.MultiAccount.Gen'
  16730. 394.52 s [really-safe-money-gen] Missing documentation for:
  16731. 394.52 s [really-safe-money-gen] Module header
  16732. 394.52 s [really-safe-money-gen] Warning: Money.Gen: Could not find documentation for exported module: Money.Gen
  16733. 394.52 s [really-safe-money-gen] 90% ( 10 / 11) in 'Money.Gen'
  16734. 394.52 s [really-safe-money-gen] Missing documentation for:
  16735. 394.52 s [really-safe-money-gen] Module header
  16736. 394.52 s [really-safe-money-gen] 0% ( 0 / 2) in 'Numeric.DecimalLiteral.Gen'
  16737. 394.52 s [really-safe-money-gen] Missing documentation for:
  16738. 394.52 s [really-safe-money-gen] Module header
  16739. 394.52 s [really-safe-money-gen] shrinkSign (src/Numeric/DecimalLiteral/Gen.hs:16)
  16740. 394.72 s [really-safe-money-gen] Warning: Money.Amount.Gen: could not find link destinations for:
  16741. 394.72 s [really-safe-money-gen] - Money.Amount.Amount
  16742. 394.72 s [really-safe-money-gen] - Money.Amount.Distribution
  16743. 394.72 s [really-safe-money-gen] - Money.Amount.Rounding
  16744. 394.72 s [really-safe-money-gen] Warning: Money.Account.Gen: could not find link destinations for:
  16745. 394.72 s [really-safe-money-gen] - Money.Account.Account
  16746. 394.73 s [really-safe-money-gen] Warning: Money.AccountOf.Gen: could not find link destinations for:
  16747. 394.73 s [really-safe-money-gen] - Money.AccountOf.AccountOf
  16748. 394.73 s [really-safe-money-gen] Warning: Money.AmountOf.Gen: could not find link destinations for:
  16749. 394.73 s [really-safe-money-gen] - Money.AmountOf.AmountOf
  16750. 394.73 s [really-safe-money-gen] Warning: Money.ConversionRate.Gen: could not find link destinations for:
  16751. 394.73 s [really-safe-money-gen] - Money.ConversionRate.ConversionRate
  16752. 394.73 s [really-safe-money-gen] Warning: Money.ConversionRateOf.Gen: could not find link destinations for:
  16753. 394.73 s [really-safe-money-gen] - Money.ConversionRateOf.ConversionRateOf
  16754. 394.73 s [really-safe-money-gen] Warning: Money.QuantisationFactor.Gen: could not find link destinations for:
  16755. 394.73 s [really-safe-money-gen] - Money.QuantisationFactor.QuantisationFactor
  16756. 394.73 s [really-safe-money-gen] Warning: Money.Currency.Gen: could not find link destinations for:
  16757. 394.73 s [really-safe-money-gen] - Money.Currency.Currency
  16758. 394.73 s [really-safe-money-gen] Warning: Money.MultiAmount.Gen: could not find link destinations for:
  16759. 394.73 s [really-safe-money-gen] - Money.MultiAmount.MultiAmount
  16760. 394.73 s [really-safe-money-gen] Warning: Money.MultiAccount.Gen: could not find link destinations for:
  16761. 394.73 s [really-safe-money-gen] - Money.MultiAccount.MultiAccount
  16762. 394.73 s [really-safe-money-gen] Warning: Numeric.DecimalLiteral.Gen: could not find link destinations for:
  16763. 394.73 s [really-safe-money-gen] - Numeric.DecimalLiteral.DecimalLiteral
  16764. 399.93 s [really-safe-money-gen] Documentation created: dist/doc/html/really-safe-money-gen/,
  16765. 399.93 s [really-safe-money-gen] dist/doc/html/really-safe-money-gen/really-safe-money-gen.txt
  16766. 400.01 s [really-safe-money-gen] Preprocessing test suite 'really-safe-money-test' for really-safe-money-gen-0.0.0.0...
  16767. 400.02 s [really-safe-money-gen] Phase: installPhase
  16768. 400.19 s [really-safe-money-gen] Installing library in /nix/store/mhwmglada4f12f0lxq3m2lsy34vzgsir-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
  16769. 400.66 s [really-safe-money-gen] Phase: fixupPhase
  16770. 400.69 s [really-safe-money-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/mhwmglada4f12f0lxq3m2lsy34vzgsir-really-safe-money-gen-0.0.0.0
  16771. 400.69 s [really-safe-money-gen] shrinking /nix/store/mhwmglada4f12f0lxq3m2lsy34vzgsir-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
  16772. 400.71 s [really-safe-money-gen] checking for references to /build/ in /nix/store/mhwmglada4f12f0lxq3m2lsy34vzgsir-really-safe-money-gen-0.0.0.0...
  16773. 400.74 s [really-safe-money-gen] patching script interpreter paths in /nix/store/mhwmglada4f12f0lxq3m2lsy34vzgsir-really-safe-money-gen-0.0.0.0
  16774. 400.74 s [really-safe-money-gen] stripping (with command strip and flags -S -p) in /nix/store/mhwmglada4f12f0lxq3m2lsy34vzgsir-really-safe-money-gen-0.0.0.0/lib
  16775. 400.81 s [really-safe-money-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/26j8gawyiiv96f6syfhs8kk4k2hh32k5-really-safe-money-gen-0.0.0.0-doc
  16776. 400.82 s [really-safe-money-gen] checking for references to /build/ in /nix/store/26j8gawyiiv96f6syfhs8kk4k2hh32k5-really-safe-money-gen-0.0.0.0-doc...
  16777. 400.85 s [really-safe-money-gen] patching script interpreter paths in /nix/store/26j8gawyiiv96f6syfhs8kk4k2hh32k5-really-safe-money-gen-0.0.0.0-doc
  16778. 400.85 s [really-safe-money-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/g0ds0q19cyy7asvxia86b512vzfdbl5r-really-safe-money-gen-0.0.0.0-report
  16779. 400.87 s [really-safe-money-gen] checking for references to /build/ in /nix/store/g0ds0q19cyy7asvxia86b512vzfdbl5r-really-safe-money-gen-0.0.0.0-report...
  16780. 400.90 s [really-safe-money-gen] patching script interpreter paths in /nix/store/g0ds0q19cyy7asvxia86b512vzfdbl5r-really-safe-money-gen-0.0.0.0-report
  16781. 401.05 s Progress: 5 of 6 built