qd-vec 1.0 → 1.1
raw patch · 3 files changed
+99/−13 lines, 3 filesdep ~Vec
Dependency ranges changed: Vec
Files
- LICENSE +1/−1
- Numeric/QD/Vec.hs +82/−5
- qd-vec.cabal +16/−7
LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) 2011, Claude Heiland-Allen+Copyright (c) 2011,2012, Claude Heiland-Allen All rights reserved.
Numeric/QD/Vec.hs view
@@ -1,16 +1,93 @@+{-# LANGUAGE FlexibleInstances, TypeFamilies, TypeSynonymInstances #-} {- | Module : Numeric.QD.Vec-Copyright : (c) Claude Heiland-Allen 2011+Copyright : (c) Claude Heiland-Allen 2011, 2012 License : BSD3 -Maintainer : claudiusmaximus@goto10.org+Maintainer : claude@mathr.co.uk Stability : provisional-Portability : portable+Portability : TypeFamilies, TypeSynonymInstances, FlexibleInstance -NearZero instances for QD types.+Vec instances for QD types. -} module Numeric.QD.Vec where-import Data.Vec (NearZero(nearZero))+import Data.Vec (NearZero(..), PackedVec(..), Vec2, Vec3, Vec4, (:.)((:.))) import Numeric.QD (DoubleDouble, QuadDouble)+ instance NearZero DoubleDouble where nearZero x = not (abs x > (1e-28))+ instance NearZero QuadDouble where nearZero x = not (abs x > (1e-60))++instance PackedVec (Vec2 DoubleDouble) where+ data Packed (Vec2 DoubleDouble) = Vec2DD {-#UNPACK#-} !DoubleDouble {-#UNPACK#-} !DoubleDouble+ pack (a:.b:.()) = Vec2DD a b+ unpack (Vec2DD a b) = a:.b:.()+ {-# INLINE pack #-}+ {-# INLINE unpack #-}++instance PackedVec (Vec3 DoubleDouble) where+ data Packed (Vec3 DoubleDouble) = Vec3DD {-#UNPACK#-} !DoubleDouble {-#UNPACK#-} !DoubleDouble {-#UNPACK#-} !DoubleDouble+ pack (a:.b:.c:.()) = Vec3DD a b c+ unpack (Vec3DD a b c) = a:.b:.c:.()+ {-# INLINE pack #-}+ {-# INLINE unpack #-}++instance PackedVec (Vec4 DoubleDouble) where+ data Packed (Vec4 DoubleDouble) = Vec4DD {-#UNPACK#-} !DoubleDouble {-#UNPACK#-} !DoubleDouble {-#UNPACK#-} !DoubleDouble {-#UNPACK#-} !DoubleDouble+ pack (a:.b:.c:.d:.()) = Vec4DD a b c d+ unpack (Vec4DD a b c d) = a:.b:.c:.d:.()+ {-# INLINE pack #-}+ {-# INLINE unpack #-}++type Vec2DD = Packed (Vec2 DoubleDouble)+type Vec3DD = Packed (Vec3 DoubleDouble)+type Vec4DD = Packed (Vec4 DoubleDouble)++type Mat22DD = Vec2 (Vec2DD)+type Mat23DD = Vec2 (Vec3DD)+type Mat24DD = Vec2 (Vec4DD)++type Mat32DD = Vec3 (Vec2DD)+type Mat33DD = Vec3 (Vec3DD)+type Mat34DD = Vec3 (Vec4DD)++type Mat42DD = Vec4 (Vec2DD)+type Mat43DD = Vec4 (Vec3DD)+type Mat44DD = Vec4 (Vec4DD)++instance PackedVec (Vec2 QuadDouble) where+ data Packed (Vec2 QuadDouble) = Vec2QD {-#UNPACK#-} !QuadDouble {-#UNPACK#-} !QuadDouble+ pack (a:.b:.()) = Vec2QD a b+ unpack (Vec2QD a b) = a:.b:.()+ {-# INLINE pack #-}+ {-# INLINE unpack #-}++instance PackedVec (Vec3 QuadDouble) where+ data Packed (Vec3 QuadDouble) = Vec3QD {-#UNPACK#-} !QuadDouble {-#UNPACK#-} !QuadDouble {-#UNPACK#-} !QuadDouble+ pack (a:.b:.c:.()) = Vec3QD a b c+ unpack (Vec3QD a b c) = a:.b:.c:.()+ {-# INLINE pack #-}+ {-# INLINE unpack #-}++instance PackedVec (Vec4 QuadDouble) where+ data Packed (Vec4 QuadDouble) = Vec4QD {-#UNPACK#-} !QuadDouble {-#UNPACK#-} !QuadDouble {-#UNPACK#-} !QuadDouble {-#UNPACK#-} !QuadDouble+ pack (a:.b:.c:.d:.()) = Vec4QD a b c d+ unpack (Vec4QD a b c d) = a:.b:.c:.d:.()+ {-# INLINE pack #-}+ {-# INLINE unpack #-}++type Vec2QD = Packed (Vec2 QuadDouble)+type Vec3QD = Packed (Vec3 QuadDouble)+type Vec4QD = Packed (Vec4 QuadDouble)++type Mat22QD = Vec2 (Vec2QD)+type Mat23QD = Vec2 (Vec3QD)+type Mat24QD = Vec2 (Vec4QD)++type Mat32QD = Vec3 (Vec2QD)+type Mat33QD = Vec3 (Vec3QD)+type Mat34QD = Vec3 (Vec4QD)++type Mat42QD = Vec4 (Vec2QD)+type Mat43QD = Vec4 (Vec3QD)+type Mat44QD = Vec4 (Vec4QD)
qd-vec.cabal view
@@ -1,19 +1,28 @@ Name: qd-vec-Version: 1.0-Synopsis: Data.Vec.NearZero instances for Numeric.QD types+Version: 1.1+Synopsis: 'Vec' instances for 'qd' types Description:- This package provides instances of Vec's NearZero for qd's types.+ Instances of Vec's NearZero and Packed for qd's types. License: BSD3 License-file: LICENSE Author: Claude Heiland-Allen-Maintainer: claudiusmaximus@goto10.org+Maintainer: claude@mathr.co.uk Category: Math Build-type: Simple-Cabal-version: >=1.2+cabal-version: >=1.8 Library- Build-depends: base >= 3 && < 6, qd >= 1 && < 2, Vec >= 0.9.8 && < 1+ Build-depends: base >= 3 && < 6, qd >= 1 && < 2, Vec >= 0.9.9 && < 2 Exposed-modules: Numeric.QD.Vec GHC-options: -Wall -fno-excess-precision- GHC-prof-options: -prof -auto-all -caf-all+ GHC-prof-options: -auto-all -caf-all++source-repository head+ type: git+ location: git://gitorious.org/hsqd/hsqd-vec.git++source-repository this+ type: git+ location: git://gitorious.org/hsqd/hsqd-vec.git+ tag: v1.1