Cabal revisions of rounded-hw-0.4.0
Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.
revision 1
-cabal-version: 3.0--- asm-sources is Cabal 3.0 feature--name: rounded-hw-version: 0.4.0-synopsis: Directed rounding for built-in floating types-description: Please see the README on GitHub at <https://github.com/minoki/haskell-floating-point/tree/master/rounded-hw#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-2023 ARATA Mizuki-license: BSD-3-Clause-license-file: LICENSE-build-type: Custom-tested-with:- GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.7, GHC == 9.0.2, GHC == 9.2.8, GHC == 9.4.8, GHC == 9.6.3, GHC == 9.8.1-extra-source-files:- README.md- ChangeLog.md- cbits/rounded-common.inl- cbits/rounded-avx512.inl- cbits/interval-prim-x86_64-sse2.S- cbits/interval-prim-x86_64-avx512.S--source-repository head- type: git- location: https://github.com/minoki/haskell-floating-point- subdir: rounded-hw---- Custom setup is required to allow assembly sources to #include "ghcconfig.h"-custom-setup- setup-depends:- Cabal >=3.0 && <3.11- , base >=4.12 && <4.20--flag pure-hs- description: Disable FFI- manual: True- default: False--flag c99- description: Restrict use of platform-dependent features (e.g. SSE2) and only use C99 features- manual: True- default: False--flag avx512- description: Use AVX512 EVEX encoding- manual: True- default: False--flag ghc-prim- description: Use GHC's "foreign import prim" on the supported platform- manual: True- default: True--flag x87-long-double- description: Support x87 "long double"- manual: True- default: False--flag float128- description: Support Float128- manual: True- default: False--common deps- build-depends:- array >=0.5.2.0 && <0.6- , base >=4.12 && <4.20- , deepseq >=1.4.4.0 && <1.6- , fp-ieee ==0.1.*- , primitive >=0.6.1.1 && <0.10- , vector >=0.12.0.1 && <0.14--common options- ghc-options: -Wcompat--library- import: deps, options- exposed-modules:- Numeric.Rounded.Hardware- Numeric.Rounded.Hardware.Backend- Numeric.Rounded.Hardware.Backend.ViaRational- Numeric.Rounded.Hardware.Class- Numeric.Rounded.Hardware.Internal- Numeric.Rounded.Hardware.Interval- Numeric.Rounded.Hardware.Interval.Class- Numeric.Rounded.Hardware.Interval.NonEmpty- Numeric.Rounded.Hardware.Rounding- Numeric.Rounded.Hardware.Vector.Storable- Numeric.Rounded.Hardware.Vector.Unboxed- other-modules:- Numeric.Rounded.Hardware.Internal.Rounding- Numeric.Rounded.Hardware.Internal.Class- Numeric.Rounded.Hardware.Internal.Constants- Numeric.Rounded.Hardware.Internal.Conversion- Numeric.Rounded.Hardware.Internal.FloatUtil- Numeric.Rounded.Hardware.Internal.Show- Numeric.Rounded.Hardware.Backend.Default- Numeric.Rounded.Hardware.Interval.ElementaryFunctions- hs-source-dirs:- src- build-depends:- tagged >=0.8.6 && <0.9- ghc-options: -Wall- -- Use FFI when flag(pure-hs) is off- if !flag(pure-hs)- exposed-modules:- Numeric.Rounded.Hardware.Backend.C- other-modules:- FFIWrapper.Float- FFIWrapper.Double- cpp-options: -DUSE_FFI- c-sources:- cbits/rounded.c- -- flag(c99): Disable platform-dependent techniques and only use C99 fesetround- if flag(c99)- cc-options: -DUSE_C99- -- flag(avx512): Use AVX512 EVEX encoding- if flag(avx512)- cc-options: -DUSE_AVX512 -mavx512f- -- flag(ghc-prim): We support "foreign import prim" on GHC/x86_64- if !flag(pure-hs) && !flag(c99) && flag(ghc-prim) && impl(ghc) && arch(x86_64)- exposed-modules:- Numeric.Rounded.Hardware.Backend.FastFFI- cpp-options: -DUSE_GHC_PRIM- if impl(ghc >= 9.2)- if flag(avx512)- asm-sources:- cbits/interval-prim-x86_64-avx512.S- else- asm-sources:- cbits/interval-prim-x86_64.S- else- if flag(avx512)- c-sources:- cbits/interval-prim-x86_64-avx512.S- else- c-sources:- cbits/interval-prim-x86_64.S- -- flag(x87-long-double): Support LongDouble on x86- if flag(x87-long-double) && (arch(i386) || arch(x86_64))- other-modules:- Numeric.Rounded.Hardware.Backend.X87LongDouble- cpp-options: -DUSE_X87_LONG_DOUBLE- c-sources:- cbits/rounded-x87longdouble.c- build-depends:- long-double >=0.1 && <0.2- -- flag(float128): Support Float128- if flag(float128)- other-modules:- Numeric.Rounded.Hardware.Backend.Float128- cpp-options: -DUSE_FLOAT128- c-sources:- cbits/rounded-float128.c- build-depends:- float128 >=0.1 && <0.2- default-language: Haskell2010--test-suite rounded-hw-doctests- import: deps, options- type: exitcode-stdio-1.0- main-is: doctests.hs- build-depends:- doctest ^>=0.22.2- default-language: Haskell2010- if impl(ghc >= 9.8)- buildable: False--test-suite rounded-hw-test- import: deps, options- type: exitcode-stdio-1.0- main-is: Spec.hs- other-modules:- ConstantsSpec- FromIntegerSpec- FromRationalSpec- IntervalArithmeticSpec- RoundedArithmeticSpec- ShowFloatSpec- Util- VectorSpec- hs-source-dirs:- test- ghc-options: -threaded -rtsopts -with-rtsopts=-N- build-depends:- QuickCheck ^>=2.14.3- , hspec ^>=2.11.7- , random ^>=1.2.1.1- , rounded-hw- if flag(x87-long-double) && (arch(i386) || (arch(x86_64) && !os(windows)))- -- Support for 80-bit long double is not good on Win64, so don't test- other-modules:- X87LongDoubleSpec- cpp-options: -DTEST_X87_LONG_DOUBLE- build-depends:- long-double- if flag(float128)- other-modules:- Float128Spec- cpp-options: -DTEST_FLOAT128- build-depends:- float128- default-language: Haskell2010--benchmark rounded-hw-benchmark- import: deps, options- type: exitcode-stdio-1.0- main-is: Benchmark.hs- other-modules:- Conversion- IGA- hs-source-dirs:- benchmark- build-depends:- rounded-hw- , tasty-bench ^>=0.3.5- default-language: Haskell2010+cabal-version: 3.0 +-- asm-sources is Cabal 3.0 feature + +name: rounded-hw +version: 0.4.0 +x-revision: 1 +synopsis: Directed rounding for built-in floating types +description: Please see the README on GitHub at <https://github.com/minoki/haskell-floating-point/tree/master/rounded-hw#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-2023 ARATA Mizuki +license: BSD-3-Clause +license-file: LICENSE +build-type: Custom +tested-with: + GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.7, GHC == 9.0.2, GHC == 9.2.8, GHC == 9.4.8, GHC == 9.6.3, GHC == 9.8.1 +extra-source-files: + README.md + ChangeLog.md + cbits/rounded-common.inl + cbits/rounded-avx512.inl + cbits/interval-prim-x86_64-sse2.S + cbits/interval-prim-x86_64-avx512.S + +source-repository head + type: git + location: https://github.com/minoki/haskell-floating-point + subdir: rounded-hw + +-- Custom setup is required to allow assembly sources to #include "ghcconfig.h" +custom-setup + setup-depends: + Cabal >=3.0 && <3.11 + , base >=4.12 && <4.21 + +flag pure-hs + description: Disable FFI + manual: True + default: False + +flag c99 + description: Restrict use of platform-dependent features (e.g. SSE2) and only use C99 features + manual: True + default: False + +flag avx512 + description: Use AVX512 EVEX encoding + manual: True + default: False + +flag ghc-prim + description: Use GHC's "foreign import prim" on the supported platform + manual: True + default: True + +flag x87-long-double + description: Support x87 "long double" + manual: True + default: False + +flag float128 + description: Support Float128 + manual: True + default: False + +common deps + build-depends: + array >=0.5.2.0 && <0.6 + , base >=4.12 && <4.21 + , deepseq >=1.4.4.0 && <1.6 + , fp-ieee ==0.1.* + , primitive >=0.6.1.1 && <0.10 + , vector >=0.12.0.1 && <0.14 + +common options + ghc-options: -Wcompat + +library + import: deps, options + exposed-modules: + Numeric.Rounded.Hardware + Numeric.Rounded.Hardware.Backend + Numeric.Rounded.Hardware.Backend.ViaRational + Numeric.Rounded.Hardware.Class + Numeric.Rounded.Hardware.Internal + Numeric.Rounded.Hardware.Interval + Numeric.Rounded.Hardware.Interval.Class + Numeric.Rounded.Hardware.Interval.NonEmpty + Numeric.Rounded.Hardware.Rounding + Numeric.Rounded.Hardware.Vector.Storable + Numeric.Rounded.Hardware.Vector.Unboxed + other-modules: + Numeric.Rounded.Hardware.Internal.Rounding + Numeric.Rounded.Hardware.Internal.Class + Numeric.Rounded.Hardware.Internal.Constants + Numeric.Rounded.Hardware.Internal.Conversion + Numeric.Rounded.Hardware.Internal.FloatUtil + Numeric.Rounded.Hardware.Internal.Show + Numeric.Rounded.Hardware.Backend.Default + Numeric.Rounded.Hardware.Interval.ElementaryFunctions + hs-source-dirs: + src + build-depends: + tagged >=0.8.6 && <0.9 + ghc-options: -Wall + -- Use FFI when flag(pure-hs) is off + if !flag(pure-hs) + exposed-modules: + Numeric.Rounded.Hardware.Backend.C + other-modules: + FFIWrapper.Float + FFIWrapper.Double + cpp-options: -DUSE_FFI + c-sources: + cbits/rounded.c + -- flag(c99): Disable platform-dependent techniques and only use C99 fesetround + if flag(c99) + cc-options: -DUSE_C99 + -- flag(avx512): Use AVX512 EVEX encoding + if flag(avx512) + cc-options: -DUSE_AVX512 -mavx512f + -- flag(ghc-prim): We support "foreign import prim" on GHC/x86_64 + if !flag(pure-hs) && !flag(c99) && flag(ghc-prim) && impl(ghc) && arch(x86_64) + exposed-modules: + Numeric.Rounded.Hardware.Backend.FastFFI + cpp-options: -DUSE_GHC_PRIM + if impl(ghc >= 9.2) + if flag(avx512) + asm-sources: + cbits/interval-prim-x86_64-avx512.S + else + asm-sources: + cbits/interval-prim-x86_64.S + else + if flag(avx512) + c-sources: + cbits/interval-prim-x86_64-avx512.S + else + c-sources: + cbits/interval-prim-x86_64.S + -- flag(x87-long-double): Support LongDouble on x86 + if flag(x87-long-double) && (arch(i386) || arch(x86_64)) + other-modules: + Numeric.Rounded.Hardware.Backend.X87LongDouble + cpp-options: -DUSE_X87_LONG_DOUBLE + c-sources: + cbits/rounded-x87longdouble.c + build-depends: + long-double >=0.1 && <0.2 + -- flag(float128): Support Float128 + if flag(float128) + other-modules: + Numeric.Rounded.Hardware.Backend.Float128 + cpp-options: -DUSE_FLOAT128 + c-sources: + cbits/rounded-float128.c + build-depends: + float128 >=0.1 && <0.2 + default-language: Haskell2010 + +test-suite rounded-hw-doctests + import: deps, options + type: exitcode-stdio-1.0 + main-is: doctests.hs + build-depends: + doctest ^>=0.22.2 + default-language: Haskell2010 + if impl(ghc >= 9.8) + buildable: False + +test-suite rounded-hw-test + import: deps, options + type: exitcode-stdio-1.0 + main-is: Spec.hs + other-modules: + ConstantsSpec + FromIntegerSpec + FromRationalSpec + IntervalArithmeticSpec + RoundedArithmeticSpec + ShowFloatSpec + Util + VectorSpec + hs-source-dirs: + test + ghc-options: -threaded -rtsopts -with-rtsopts=-N + build-depends: + QuickCheck ^>=2.14.3 + , hspec ^>=2.11.7 + , random ^>=1.2.1.1 + , rounded-hw + if flag(x87-long-double) && (arch(i386) || (arch(x86_64) && !os(windows))) + -- Support for 80-bit long double is not good on Win64, so don't test + other-modules: + X87LongDoubleSpec + cpp-options: -DTEST_X87_LONG_DOUBLE + build-depends: + long-double + if flag(float128) + other-modules: + Float128Spec + cpp-options: -DTEST_FLOAT128 + build-depends: + float128 + default-language: Haskell2010 + +benchmark rounded-hw-benchmark + import: deps, options + type: exitcode-stdio-1.0 + main-is: Benchmark.hs + other-modules: + Conversion + IGA + hs-source-dirs: + benchmark + build-depends: + rounded-hw + , tasty-bench ^>=0.3.5 + default-language: Haskell2010