]> gitweb.michael.orlitzky.com - spline3.git/blobdiff - src/FunctionValues.hs
spline3.cabal: bump version to 1.0.2
[spline3.git] / src / FunctionValues.hs
index dc1f0d00f6fd7cc4a6bc36fa67b54efd5d2037d7..bc1414630a6ca44b64e7667cf08423e388634a99 100644 (file)
@@ -1,3 +1,6 @@
+-- The "value_at" function pattern matches on some integers, but
+-- doesn't handle the "otherwise" case, for performance reasons.
+{-# OPTIONS_GHC -Wno-incomplete-patterns #-}
 {-# LANGUAGE BangPatterns #-}
 
 -- | The FunctionValues module contains the 'FunctionValues' type and
@@ -14,7 +17,19 @@ module FunctionValues (
   value_at )
 where
 
-import Prelude hiding ( LT )
+import Prelude(
+  Bool,
+  Double,
+  Eq( (==) ),
+  Fractional( (/) ),
+  Int,
+  Num( (+), (-), (*) ),
+  Ord ( (>=), (<) ),
+  Show,
+  (&&),
+  and,
+  not,
+  return )
 import Test.Tasty ( TestTree, testGroup )
 import Test.Tasty.HUnit ( Assertion, testCase )
 import Test.Tasty.QuickCheck ( Arbitrary( arbitrary ), choose, testProperty )
@@ -275,32 +290,32 @@ value_at v3d !i !j !k
 --   object centered at (i,j,k)
 make_values :: Values3D -> Int -> Int -> Int -> FunctionValues
 make_values values !i !j !k =
-    empty_values { front  = value_at values (i-1) j k,
-                   back   = value_at values (i+1) j k,
-                   left   = value_at values i (j-1) k,
-                   right  = value_at values i (j+1) k,
-                   down   = value_at values i j (k-1),
-                   top    = value_at values i j (k+1),
-                   front_left = value_at values (i-1) (j-1) k,
-                   front_right = value_at values (i-1) (j+1) k,
-                   front_down =value_at values (i-1) j (k-1),
-                   front_top = value_at values (i-1) j (k+1),
-                   back_left = value_at values (i+1) (j-1) k,
-                   back_right = value_at values (i+1) (j+1) k,
-                   back_down = value_at values (i+1) j (k-1),
-                   back_top = value_at values (i+1) j (k+1),
-                   left_down = value_at values i (j-1) (k-1),
-                   left_top = value_at values i (j-1) (k+1),
-                   right_down = value_at values i (j+1) (k-1),
-                   right_top = value_at values i (j+1) (k+1),
-                   front_left_down = value_at values (i-1) (j-1) (k-1),
-                   front_left_top = value_at values (i-1) (j-1) (k+1),
-                   front_right_down = value_at values (i-1) (j+1) (k-1),
-                   front_right_top = value_at values (i-1) (j+1) (k+1),
-                   back_left_down = value_at values (i+1) (j-1) (k-1),
-                   back_left_top = value_at values (i+1) (j-1) (k+1),
-                   back_right_down = value_at values (i+1) (j+1) (k-1),
-                   back_right_top = value_at values (i+1) (j+1) (k+1),
+    empty_values { front  = value_at values (i - 1) j k,
+                   back   = value_at values (i + 1) j k,
+                   left   = value_at values i (j - 1) k,
+                   right  = value_at values i (j + 1) k,
+                   down   = value_at values i j (k - 1),
+                   top    = value_at values i j (k + 1),
+                   front_left = value_at values (i - 1) (j - 1) k,
+                   front_right = value_at values (i - 1) (j + 1) k,
+                   front_down =value_at values (i - 1) j (k - 1),
+                   front_top = value_at values (i - 1) j (k + 1),
+                   back_left = value_at values (i + 1) (j - 1) k,
+                   back_right = value_at values (i + 1) (j + 1) k,
+                   back_down = value_at values (i + 1) j (k - 1),
+                   back_top = value_at values (i + 1) j (k + 1),
+                   left_down = value_at values i (j - 1) (k - 1),
+                   left_top = value_at values i (j - 1) (k + 1),
+                   right_down = value_at values i (j + 1) (k - 1),
+                   right_top = value_at values i (j + 1) (k + 1),
+                   front_left_down = value_at values (i - 1) (j - 1) (k - 1),
+                   front_left_top = value_at values (i - 1) (j - 1) (k + 1),
+                   front_right_down = value_at values (i - 1) (j + 1) (k - 1),
+                   front_right_top = value_at values (i - 1) (j + 1) (k + 1),
+                   back_left_down = value_at values (i + 1) (j - 1) (k - 1),
+                   back_left_top = value_at values (i + 1) (j - 1) (k + 1),
+                   back_right_down = value_at values (i + 1) (j + 1) (k - 1),
+                   back_right_top = value_at values (i + 1) (j + 1) (k + 1),
                    interior = value_at values i j k }
 
 -- | Takes a 'FunctionValues' and a function that transforms one