packages feed

Cabal revisions of fp-ieee-0.1.0.4

Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.

revision 1
-cabal-version: 2.2--name:           fp-ieee-version:        0.1.0.4-synopsis:       IEEE 754-2019 compliant operations-description:    Please see the README on GitHub at <https://github.com/minoki/haskell-floating-point/tree/master/fp-ieee#readme>-category:       Numeric, Math-homepage:       https://github.com/minoki/haskell-floating-point#readme-bug-reports:    https://github.com/minoki/haskell-floating-point/issues-author:         ARATA Mizuki-maintainer:     minorinoki@gmail.com-copyright:      2020-2024 ARATA Mizuki-license:        BSD-3-Clause-license-file:   LICENSE-build-type:     Simple-extra-source-files:-    README.md-    ChangeLog.md--source-repository head-  type: git-  location: https://github.com/minoki/haskell-floating-point-  subdir: fp-ieee--flag pure-hs-  description: Disable FFI-  manual: True-  default: False--flag sse4_1-  description: Use SSE4.1 instructions on x86-  manual: True-  default: False--flag fma3-  description: Use FMA3 instructions on x86. On GHC 9.8 or later, this flag enables use of FMA primitives.-  manual: True-  default: False--flag f16c-  description: Use F16C instructions on x86-  manual: True-  default: False---- flag x87-long-double---   description: Support x87 "long double" via long-double package---   manual: True---   default: False--flag float128-  description: Support Float128 via float128 package-  manual: True-  default: False--flag half-  description: Support Half (float16) via half package-  manual: True-  default: False--flag integer-gmp-  description: Use integer-gmp package on GHC 8.x-  manual: False-  default: True--flag ghc-bignum-  description: Use ghc-bignum package on GHC 9.x-  manual: False-  default: True--common deps-  build-depends:-      -- We use a post-GHC 8.6 language extension: NumericUnderscores-      -- cast{Word32,Word64}To{Float,Double}, cast{Float,Double}To{Word32,Word64} are since base-4.10.0.0 (GHC 8.2)-      -- Semigroup((<>)) is exported from Prelude since base-4.11.0.0 (GHC 8.4)-      base >=4.12 && <4.20-  if !flag(pure-hs)-    cpp-options: -DUSE_FFI-  if !flag(pure-hs) && os(windows)-    -- mingw-w64 is not reliable-    cpp-options: -DSOME_LIBC_FUNCTIONS_MIGHT_BE_BUGGY-  if flag(float128)-    -- Support Float128-    cpp-options: -DUSE_FLOAT128-    build-depends:-        float128 ==0.1.*-  if flag(half)-    -- Support Half-    -- Note that half-0.3's isInfinite is buggy (https://github.com/ekmett/half/issues/23)-    cpp-options: -DUSE_HALF-    build-depends:-        half ==0.3.*-  -- if flag(x87-long-double)-  --   cpp-options: -DUSE_X87_LONG_DOUBLE-  --   build-depends:-  --       long-double ==???--common options-  ghc-options: -Wcompat-  if arch(i386)-    -- Always enable SSE2 on i386-    ghc-options: -msse2-    cc-options: -msse2 -mfpmath=sse--library-  import: deps, options-  exposed-modules:-      Numeric.Floating.IEEE-      Numeric.Floating.IEEE.Internal-      Numeric.Floating.IEEE.NaN-  other-modules:-      GHC.Float.Compat-      MyPrelude-      Numeric.Floating.IEEE.Internal.Augmented-      Numeric.Floating.IEEE.Internal.Base-      Numeric.Floating.IEEE.Internal.Classify-      Numeric.Floating.IEEE.Internal.Conversion-      Numeric.Floating.IEEE.Internal.FMA-      Numeric.Floating.IEEE.Internal.GenericArith-      Numeric.Floating.IEEE.Internal.IntegerInternals-      Numeric.Floating.IEEE.Internal.MinMax-      Numeric.Floating.IEEE.Internal.NaN-      Numeric.Floating.IEEE.Internal.NextFloat-      Numeric.Floating.IEEE.Internal.Remainder-      Numeric.Floating.IEEE.Internal.RoundToIntegral-      Numeric.Floating.IEEE.Internal.Rounding-      Numeric.Floating.IEEE.Internal.Rounding.Common-      Numeric.Floating.IEEE.Internal.Rounding.Encode-      Numeric.Floating.IEEE.Internal.Rounding.Integral-      Numeric.Floating.IEEE.Internal.Rounding.Rational-  hs-source-dirs:-      src-  build-depends:-      integer-logarithms >=1 && <1.1-  ghc-options: -Wall-  if flag(half)-    other-modules:-        Numeric.Floating.IEEE.Internal.Half-  if flag(float128)-    other-modules:-        Numeric.Floating.IEEE.Internal.Float128-  if flag(integer-gmp) && impl(ghc < 9.0.0)-    build-depends:-        -- integer-gmp-1.1 is based on ghc-bignum, which is not what we want-        integer-gmp ==1.0.*-  if flag(ghc-bignum) && impl(ghc >= 9.0.0)-    build-depends:-        ghc-bignum >=1.0 && <1.4-  -- Fast roundeven: needs SSE4.1 on x86-  if !flag(pure-hs) && (arch(i386) || arch(x86_64)) && flag(sse4_1)-    cpp-options: -DHAS_FAST_ROUNDEVEN-    cc-options: -msse4.1-    c-sources:-        cbits/roundeven.c-  -- Fast roundeven: always available on AArch64-  if !flag(pure-hs) && arch(aarch64)-    cpp-options: -DHAS_FAST_ROUNDEVEN-    c-sources:-        cbits/roundeven.c-  -- Fast FMA: needs FMA3 on x86 (FMA4 is not supported by this package)-  if !flag(pure-hs) && (arch(i386) || arch(x86_64)) && flag(fma3) && impl(ghc < 9.8)-    cpp-options: -DHAS_FAST_FMA-    cc-options: -mfma-    c-sources:-        cbits/fma.c-  if (arch(i386) || arch(x86_64)) && flag(fma3) && impl(ghc >= 9.8)-    cpp-options: -DHAS_FMA_PRIM-    ghc-options: -mfma-  -- Fast FMA: always available on AArch64-  if !flag(pure-hs) && arch(aarch64) && impl(ghc < 9.8)-    cpp-options: -DHAS_FAST_FMA-    c-sources:-        cbits/fma.c-  if !flag(pure-hs) && arch(aarch64) && impl(ghc >= 9.8)-    cpp-options: -DHAS_FMA_PRIM-  -- Enable use of libm's fma unless "pure-hs" is set; but not on Windows-  -- (mingw-w64's fma is not reliable)-  if !flag(pure-hs) && (arch(i386) || arch(x86_64)) && !os(windows)-    cpp-options: -DUSE_C99_FMA-  if (arch(i386) || arch(x86_64)) && os(windows)-    cpp-options: -DDONT_INLINE_FMA_PRIM-  -- Fast min/max: available on AArch64-  if !flag(pure-hs) && arch(aarch64)-    cpp-options: -DHAS_FAST_MINMAX-    c-sources:-        cbits/minmax.c-  if !flag(pure-hs) && flag(half) && arch(x86_64) && flag(f16c)-    cpp-options: -DHAS_FAST_HALF_CONVERSION-    cc-options: -mf16c-    c-sources:-        cbits/half.c-  if !flag(pure-hs) && flag(half) && arch(aarch64)-    cpp-options: -DHAS_FAST_HALF_CONVERSION-    c-sources:-        cbits/half.c-  if !flag(pure-hs) && (arch(aarch64) || arch(x86_64))-    cpp-options: -DHAS_FAST_CANONICALIZE-    c-sources:-        cbits/canonicalize.c-  default-language: Haskell2010--test-suite fp-ieee-doctests-  import: deps, options-  type: exitcode-stdio-1.0-  main-is: doctests.hs-  build-depends:-      doctest ^>=0.22.2-    , QuickCheck ^>=2.14.3-  default-language: Haskell2010-  if impl(ghc >= 9.8)-    buildable: False--test-suite fp-ieee-test-  import: deps, options-  type: exitcode-stdio-1.0-  main-is: Spec.hs-  other-modules:-      AugmentedArithSpec-      ClassificationSpec-      FMASpec-      IntegerInternalsSpec-      MinMaxSpec-      NaNSpec-      NextFloatSpec-      RoundingSpec-      RoundToIntegralSpec-      TwoSumSpec-      Util-  hs-source-dirs:-      test-  ghc-options: -threaded -rtsopts -with-rtsopts=-N -fno-ignore-asserts-  build-depends:-      QuickCheck ^>=2.14.3-    , fp-ieee-    , hspec ^>=2.11.7-    , hspec-core ^>=2.11.7-    , integer-logarithms-    , random ^>=1.2.1.1-  if flag(half)-    other-modules:-        HalfSpec-  if flag(float128)-    other-modules:-        Float128Spec-  default-language: Haskell2010--benchmark fp-ieee-benchmark-  import: deps, options-  type: exitcode-stdio-1.0-  main-is: Benchmark.hs-  hs-source-dirs:-      benchmark-  build-depends:-      fp-ieee-    , tasty-bench ^>=0.3.5-  default-language: Haskell2010+cabal-version: 2.2
+
+name:           fp-ieee
+version:        0.1.0.4
+x-revision: 1
+synopsis:       IEEE 754-2019 compliant operations
+description:    Please see the README on GitHub at <https://github.com/minoki/haskell-floating-point/tree/master/fp-ieee#readme>
+category:       Numeric, Math
+homepage:       https://github.com/minoki/haskell-floating-point#readme
+bug-reports:    https://github.com/minoki/haskell-floating-point/issues
+author:         ARATA Mizuki
+maintainer:     minorinoki@gmail.com
+copyright:      2020-2024 ARATA Mizuki
+license:        BSD-3-Clause
+license-file:   LICENSE
+build-type:     Simple
+extra-source-files:
+    README.md
+    ChangeLog.md
+
+source-repository head
+  type: git
+  location: https://github.com/minoki/haskell-floating-point
+  subdir: fp-ieee
+
+flag pure-hs
+  description: Disable FFI
+  manual: True
+  default: False
+
+flag sse4_1
+  description: Use SSE4.1 instructions on x86
+  manual: True
+  default: False
+
+flag fma3
+  description: Use FMA3 instructions on x86. On GHC 9.8 or later, this flag enables use of FMA primitives.
+  manual: True
+  default: False
+
+flag f16c
+  description: Use F16C instructions on x86
+  manual: True
+  default: False
+
+-- flag x87-long-double
+--   description: Support x87 "long double" via long-double package
+--   manual: True
+--   default: False
+
+flag float128
+  description: Support Float128 via float128 package
+  manual: True
+  default: False
+
+flag half
+  description: Support Half (float16) via half package
+  manual: True
+  default: False
+
+flag integer-gmp
+  description: Use integer-gmp package on GHC 8.x
+  manual: False
+  default: True
+
+flag ghc-bignum
+  description: Use ghc-bignum package on GHC 9.x
+  manual: False
+  default: True
+
+common deps
+  build-depends:
+      -- We use a post-GHC 8.6 language extension: NumericUnderscores
+      -- cast{Word32,Word64}To{Float,Double}, cast{Float,Double}To{Word32,Word64} are since base-4.10.0.0 (GHC 8.2)
+      -- Semigroup((<>)) is exported from Prelude since base-4.11.0.0 (GHC 8.4)
+      base >=4.12 && <4.21
+  if !flag(pure-hs)
+    cpp-options: -DUSE_FFI
+  if !flag(pure-hs) && os(windows)
+    -- mingw-w64 is not reliable
+    cpp-options: -DSOME_LIBC_FUNCTIONS_MIGHT_BE_BUGGY
+  if flag(float128)
+    -- Support Float128
+    cpp-options: -DUSE_FLOAT128
+    build-depends:
+        float128 ==0.1.*
+  if flag(half)
+    -- Support Half
+    -- Note that half-0.3's isInfinite is buggy (https://github.com/ekmett/half/issues/23)
+    cpp-options: -DUSE_HALF
+    build-depends:
+        half ==0.3.*
+  -- if flag(x87-long-double)
+  --   cpp-options: -DUSE_X87_LONG_DOUBLE
+  --   build-depends:
+  --       long-double ==???
+
+common options
+  ghc-options: -Wcompat
+  if arch(i386)
+    -- Always enable SSE2 on i386
+    ghc-options: -msse2
+    cc-options: -msse2 -mfpmath=sse
+
+library
+  import: deps, options
+  exposed-modules:
+      Numeric.Floating.IEEE
+      Numeric.Floating.IEEE.Internal
+      Numeric.Floating.IEEE.NaN
+  other-modules:
+      GHC.Float.Compat
+      MyPrelude
+      Numeric.Floating.IEEE.Internal.Augmented
+      Numeric.Floating.IEEE.Internal.Base
+      Numeric.Floating.IEEE.Internal.Classify
+      Numeric.Floating.IEEE.Internal.Conversion
+      Numeric.Floating.IEEE.Internal.FMA
+      Numeric.Floating.IEEE.Internal.GenericArith
+      Numeric.Floating.IEEE.Internal.IntegerInternals
+      Numeric.Floating.IEEE.Internal.MinMax
+      Numeric.Floating.IEEE.Internal.NaN
+      Numeric.Floating.IEEE.Internal.NextFloat
+      Numeric.Floating.IEEE.Internal.Remainder
+      Numeric.Floating.IEEE.Internal.RoundToIntegral
+      Numeric.Floating.IEEE.Internal.Rounding
+      Numeric.Floating.IEEE.Internal.Rounding.Common
+      Numeric.Floating.IEEE.Internal.Rounding.Encode
+      Numeric.Floating.IEEE.Internal.Rounding.Integral
+      Numeric.Floating.IEEE.Internal.Rounding.Rational
+  hs-source-dirs:
+      src
+  build-depends:
+      integer-logarithms >=1 && <1.1
+  ghc-options: -Wall
+  if flag(half)
+    other-modules:
+        Numeric.Floating.IEEE.Internal.Half
+  if flag(float128)
+    other-modules:
+        Numeric.Floating.IEEE.Internal.Float128
+  if flag(integer-gmp) && impl(ghc < 9.0.0)
+    build-depends:
+        -- integer-gmp-1.1 is based on ghc-bignum, which is not what we want
+        integer-gmp ==1.0.*
+  if flag(ghc-bignum) && impl(ghc >= 9.0.0)
+    build-depends:
+        ghc-bignum >=1.0 && <1.4
+  -- Fast roundeven: needs SSE4.1 on x86
+  if !flag(pure-hs) && (arch(i386) || arch(x86_64)) && flag(sse4_1)
+    cpp-options: -DHAS_FAST_ROUNDEVEN
+    cc-options: -msse4.1
+    c-sources:
+        cbits/roundeven.c
+  -- Fast roundeven: always available on AArch64
+  if !flag(pure-hs) && arch(aarch64)
+    cpp-options: -DHAS_FAST_ROUNDEVEN
+    c-sources:
+        cbits/roundeven.c
+  -- Fast FMA: needs FMA3 on x86 (FMA4 is not supported by this package)
+  if !flag(pure-hs) && (arch(i386) || arch(x86_64)) && flag(fma3) && impl(ghc < 9.8)
+    cpp-options: -DHAS_FAST_FMA
+    cc-options: -mfma
+    c-sources:
+        cbits/fma.c
+  if (arch(i386) || arch(x86_64)) && flag(fma3) && impl(ghc >= 9.8)
+    cpp-options: -DHAS_FMA_PRIM
+    ghc-options: -mfma
+  -- Fast FMA: always available on AArch64
+  if !flag(pure-hs) && arch(aarch64) && impl(ghc < 9.8)
+    cpp-options: -DHAS_FAST_FMA
+    c-sources:
+        cbits/fma.c
+  if !flag(pure-hs) && arch(aarch64) && impl(ghc >= 9.8)
+    cpp-options: -DHAS_FMA_PRIM
+  -- Enable use of libm's fma unless "pure-hs" is set; but not on Windows
+  -- (mingw-w64's fma is not reliable)
+  if !flag(pure-hs) && (arch(i386) || arch(x86_64)) && !os(windows)
+    cpp-options: -DUSE_C99_FMA
+  if (arch(i386) || arch(x86_64)) && os(windows)
+    cpp-options: -DDONT_INLINE_FMA_PRIM
+  -- Fast min/max: available on AArch64
+  if !flag(pure-hs) && arch(aarch64)
+    cpp-options: -DHAS_FAST_MINMAX
+    c-sources:
+        cbits/minmax.c
+  if !flag(pure-hs) && flag(half) && arch(x86_64) && flag(f16c)
+    cpp-options: -DHAS_FAST_HALF_CONVERSION
+    cc-options: -mf16c
+    c-sources:
+        cbits/half.c
+  if !flag(pure-hs) && flag(half) && arch(aarch64)
+    cpp-options: -DHAS_FAST_HALF_CONVERSION
+    c-sources:
+        cbits/half.c
+  if !flag(pure-hs) && (arch(aarch64) || arch(x86_64))
+    cpp-options: -DHAS_FAST_CANONICALIZE
+    c-sources:
+        cbits/canonicalize.c
+  default-language: Haskell2010
+
+test-suite fp-ieee-doctests
+  import: deps, options
+  type: exitcode-stdio-1.0
+  main-is: doctests.hs
+  build-depends:
+      doctest ^>=0.22.2
+    , QuickCheck ^>=2.14.3
+  default-language: Haskell2010
+  if impl(ghc >= 9.8)
+    buildable: False
+
+test-suite fp-ieee-test
+  import: deps, options
+  type: exitcode-stdio-1.0
+  main-is: Spec.hs
+  other-modules:
+      AugmentedArithSpec
+      ClassificationSpec
+      FMASpec
+      IntegerInternalsSpec
+      MinMaxSpec
+      NaNSpec
+      NextFloatSpec
+      RoundingSpec
+      RoundToIntegralSpec
+      TwoSumSpec
+      Util
+  hs-source-dirs:
+      test
+  ghc-options: -threaded -rtsopts -with-rtsopts=-N -fno-ignore-asserts
+  build-depends:
+      QuickCheck ^>=2.14.3
+    , fp-ieee
+    , hspec ^>=2.11.7
+    , hspec-core ^>=2.11.7
+    , integer-logarithms
+    , random ^>=1.2.1.1
+  if flag(half)
+    other-modules:
+        HalfSpec
+  if flag(float128)
+    other-modules:
+        Float128Spec
+  default-language: Haskell2010
+
+benchmark fp-ieee-benchmark
+  import: deps, options
+  type: exitcode-stdio-1.0
+  main-is: Benchmark.hs
+  hs-source-dirs:
+      benchmark
+  build-depends:
+      fp-ieee
+    , tasty-bench ^>=0.3.5
+  default-language: Haskell2010