half 0.2.1 → 0.2.2
raw patch · 4 files changed
+97/−41 lines, 4 filesdep ~basePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base
API changes (from Hackage documentation)
- Numeric.Half: Half :: CUShort -> Half
- Numeric.Half: getHalf :: Half -> CUShort
- Numeric.Half: instance Typeable Half
+ Numeric.Half: [Half] :: CUShort -> Half
+ Numeric.Half: [getHalf] :: Half -> CUShort
Files
- .travis.yml +80/−38
- CHANGELOG.markdown +5/−0
- half.cabal +1/−1
- src/Numeric/Half.hs +11/−2
.travis.yml view
@@ -1,54 +1,96 @@-language: haskell+language: c+sudo: false -env:- - GHCVER=7.8.3- - GHCVER=head+cache:+ directories:+ - $HOME/.cabsnap+ - $HOME/.cabal/packages +before_cache:+ - rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log+ - rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.tar+ matrix:- allow_failures:- - env: GHCVER=head+ include:+ - env: CABALVER=1.16 GHCVER=7.4.2+ compiler: ": #GHC 7.4.2"+ addons: {apt: {packages: [cabal-install-1.16,ghc-7.4.2,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}+ - env: CABALVER=1.16 GHCVER=7.6.3+ compiler: ": #GHC 7.6.3"+ addons: {apt: {packages: [cabal-install-1.16,ghc-7.6.3,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}+ - env: CABALVER=1.18 GHCVER=7.8.4+ compiler: ": #GHC 7.8.4"+ addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}+ - env: CABALVER=1.22 GHCVER=7.10.1+ compiler: ": #GHC 7.10.1"+ addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.1,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}+ - env: CABALVER=1.22 GHCVER=7.10.2+ compiler: ": #GHC 7.10.2"+ addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.2,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}} before_install:- # If $GHCVER is the one travis has, don't bother reinstalling it.- # We can also have faster builds by installing some libraries with- # `apt`. If it isn't, install the GHC we want from hvr's PPA along- # with cabal-1.18.- - |- if [ $GHCVER = `ghc --numeric-version` ]; then- # Try installing some of the build-deps with apt-get for speed.- travis/cabal-apt-install --enable-tests $MODE- export CABAL=cabal- else- # Install the GHC we want from hvr's PPA- travis_retry sudo add-apt-repository -y ppa:hvr/ghc- travis_retry sudo apt-get update- travis_retry sudo apt-get install cabal-install-1.18 ghc-$GHCVER happy- export CABAL=cabal-1.18- export PATH=/opt/ghc/$GHCVER/bin:$PATH- fi- # Uncomment whenever hackage is down.- # - mkdir -p ~/.cabal && cp travis/config ~/.cabal/config && $CABAL update- - $CABAL update-- # Update happy when building with GHC head- - |- if [ $GHCVER = "head" ] || [ $GHCVER = "7.8.3" ]; then- $CABAL install happy alex- export PATH=$HOME/.cabal/bin:$PATH- fi+ - unset CC+ - export HAPPYVER=1.19.5+ - export ALEXVER=3.1.4+ - export PATH=~/.cabal/bin:/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:/opt/happy/$HAPPYVER/bin:/opt/alex/$ALEXVER/bin:$PATH install:- - $CABAL install --dependencies-only --enable-tests- - $CABAL configure --enable-tests $MODE+ - cabal --version+ - echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"+ - if [ -f $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz ];+ then+ zcat $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz >+ $HOME/.cabal/packages/hackage.haskell.org/00-index.tar;+ fi+ - travis_retry cabal update+ - "sed -i 's/^jobs:.*$/jobs: 2/' $HOME/.cabal/config"+ - cabal install --only-dependencies --enable-tests --enable-benchmarks --dry -v > installplan.txt+ - sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt +# check whether current requested install-plan matches cached package-db snapshot+ - if diff -u installplan.txt $HOME/.cabsnap/installplan.txt;+ then+ echo "cabal build-cache HIT";+ rm -rfv .ghc;+ cp -a $HOME/.cabsnap/ghc $HOME/.ghc;+ cp -a $HOME/.cabsnap/lib $HOME/.cabsnap/share $HOME/.cabsnap/bin $HOME/.cabal/;+ else+ echo "cabal build-cache MISS";+ rm -rf $HOME/.cabsnap;+ mkdir -p $HOME/.ghc $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin;+ cabal install --only-dependencies --enable-tests --enable-benchmarks;+ if [ "$GHCVER" = "7.10.1" ]; then cabal install Cabal-1.22.4.0; fi;+ fi++# snapshot package-db on cache miss+ - if [ ! -d $HOME/.cabsnap ];+ then+ echo "snapshotting package-db to build-cache";+ mkdir $HOME/.cabsnap;+ cp -a $HOME/.ghc $HOME/.cabsnap/ghc;+ cp -a $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin installplan.txt $HOME/.cabsnap/;+ fi++# Here starts the actual work to be performed for the package under test;+# any command which exits with a non-zero exit code causes the build to fail. script:- - $CABAL build- - $CABAL test --show-details=always+ - cabal configure --enable-tests -v2 # -v2 provides useful information for debugging+ - cabal build # this builds all libraries and executables (including tests)+ - cabal test+ - cabal bench || true # expected result: these will crash+ - cabal sdist || true # tests that a source-distribution can be generated +# Check that the resulting source distribution can be built & installed.+# If there are no other `.tar.gz` files in `dist`, this can be even simpler:+# `cabal install --force-reinstalls dist/*-*.tar.gz`+ - SRC_TGZ=$(cabal info . | awk '{print $2;exit}').tar.gz &&+ (cd dist && cabal install --force-reinstalls "$SRC_TGZ")+ notifications: irc: channels: - "irc.freenode.org#haskell-lens" skip_join: true template:- - "\x0313half\x03/\x0306%{branch}\x03 \x0314%{commit}\x03 %{build_url} %{message}"+ - "\x0313half\x0f/\x0306%{branch}\x0f \x0314%{commit}\x0f %{message} \x0302\x1f%{build_url}\x0f"+# EOF
CHANGELOG.markdown view
@@ -1,3 +1,8 @@+0.2.2+-----+* Fixed `isInfinite`.+* Added support for older GHCs. On GHC < 7.8 the pattern synonyms are disabled.+ 0.2.1 ----- * Removed need for `GeneralizedNewtypeDeriving` and `ScopedTypeVariables`.
half.cabal view
@@ -1,6 +1,6 @@ name: half category: Numeric-version: 0.2.1+version: 0.2.2 license: BSD3 cabal-version: >= 1.8 license-file: LICENSE
src/Numeric/Half.hs view
@@ -1,6 +1,9 @@-{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE CPP #-}+#if __GLASGOW_HASKELL__ >= 708 {-# LANGUAGE PatternSynonyms #-}+#endif {-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE ForeignFunctionInterface #-} ----------------------------------------------------------------------------- -- | -- Copyright : (C) 2014 Edward Kmett@@ -19,6 +22,7 @@ , isZero , fromHalf , toHalf+#if __GLASGOW_HASKELL__ >= 708 , pattern POS_INF , pattern NEG_INF , pattern QNaN@@ -30,6 +34,7 @@ , pattern HALF_DIG , pattern HALF_MIN_10_EXP , pattern HALF_MAX_10_EXP+#endif ) where import Data.Bits@@ -108,7 +113,7 @@ floatRadix _ = 2 floatDigits _ = 11 decodeFloat = decodeFloat . fromHalf- isInfinite (Half h) = unsafeShiftR h 10 .&. 0x1f >= 32+ isInfinite (Half h) = unsafeShiftR h 10 .&. 0x1f >= 31 isIEEE _ = isIEEE (undefined :: Float) atan2 a b = toHalf $ atan2 (fromHalf a) (fromHalf b) isDenormalized (Half h) = unsafeShiftR h 10 .&. 0x1f == 0 && h .&. 0x3ff /= 0@@ -124,6 +129,8 @@ isZero :: Half -> Bool isZero (Half h) = h .&. 0x7fff == 0 +#if __GLASGOW_HASKELL__ >= 708+ -- | Positive infinity pattern POS_INF = Half 0x7c00 @@ -156,6 +163,8 @@ -- Maximum positive integer such that 10 raised to that power is a normalized half pattern HALF_MAX_10_EXP = 4++#endif instance Num Half where a * b = toHalf (fromHalf a * fromHalf b)