]> gitweb.michael.orlitzky.com - spline3.git/blobdiff - src/Grid.hs
Bump the cmdargs dep to 0.10.*.
[spline3.git] / src / Grid.hs
index 26f44251d4a5f08612317788afa223cb723a24e2..953c6a3d56f35978638f50d730814920c2a256dc 100644 (file)
@@ -10,6 +10,7 @@ module Grid (
 where
 
 import qualified Data.Array.Repa as R
+import qualified Data.Array.Repa.Operators.Traversal as R (unsafeTraverse)
 import Test.HUnit (Assertion, assertEqual)
 import Test.Framework (Test, testGroup)
 import Test.Framework.Providers.HUnit (testCase)
@@ -117,15 +118,19 @@ zoom_result v3d (sfx, sfy, sfz) (R.Z R.:. m R.:. n R.:. o) =
     f = polynomial t
 
 
-zoom :: Values3D -> ScaleFactor -> Values3D
+--
+-- Instead of IO, we could get away with a generic monad 'm'
+-- here. However, /we/ only call this function from within IO.
+--
+zoom :: Values3D -> ScaleFactor -> IO Values3D
 zoom v3d scale_factor
-    | xsize == 0 || ysize == 0 || zsize == 0 = empty3d
+    | xsize == 0 || ysize == 0 || zsize == 0 = return empty3d
     | otherwise =
-        R.compute $ R.unsafeTraverse v3d transExtent f
-          where
-            (xsize, ysize, zsize) = dims v3d
-            transExtent = zoom_shape scale_factor
-            f = zoom_lookup v3d scale_factor
+        R.computeUnboxedP $ R.unsafeTraverse v3d transExtent f
+        where
+          (xsize, ysize, zsize) = dims v3d
+          transExtent = zoom_shape scale_factor
+          f = zoom_lookup v3d scale_factor
 
 
 -- | Check all coefficients of tetrahedron0 belonging to the cube