packages feed

qd-vec 1.0 → 1.1

raw patch · 3 files changed

+99/−13 lines, 3 filesdep ~Vec

Dependency ranges changed: Vec

Files

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