k = calculate_containing_cube_coordinate g z
-{-# INLINE zoom_lookup #-}
zoom_lookup :: Values3D -> ScaleFactor -> a -> (R.DIM3 -> Double)
zoom_lookup v3d scale_factor _ =
zoom_result v3d scale_factor
-{-# INLINE zoom_result #-}
zoom_result :: Values3D -> ScaleFactor -> R.DIM3 -> Double
zoom_result v3d (sfx, sfy, sfz) (R.Z R.:. m R.:. n R.:. o) =
f p
| i <- [0..2],
j <- [0..2],
k <- [0..2],
+ c0 <- cs,
t <- tetrahedra c0,
let p = polynomial t,
let i' = fromIntegral i,
let k' = fromIntegral k]
where
g = make_grid 1 trilinear
- c0 = cube_at g 1 1 1
+ cs = [ cube_at g ci cj ck | ci <- [0..2], cj <- [0..2], ck <- [0..2] ]
test_zeros_reproduced :: Assertion
k <- [0..2],
let i' = fromIntegral i,
let j' = fromIntegral j,
- let k' = fromIntegral k]
+ let k' = fromIntegral k,
+ c0 <- cs,
+ t0 <- tetrahedra c0,
+ let p = polynomial t0 ]
where
g = make_grid 1 zeros
- c0 = cube_at g 1 1 1
- t0 = tetrahedron c0 0
- p = polynomial t0
+ cs = [ cube_at g ci cj ck | ci <- [0..2], cj <- [0..2], ck <- [0..2] ]
-- | Make sure we can reproduce a 9x9x9 trilinear from the 3x3x3 one.
trilinear_c0_t0_tests,
p80_29_properties,
testCase "tetrahedra collision test isn't too sensitive"
- test_tetrahedra_collision_sensitivity,
- testCase "trilinear reproduced" test_trilinear_reproduced,
- testCase "zeros reproduced" test_zeros_reproduced ]
+ test_tetrahedra_collision_sensitivity,
+ testProperty "cube indices within bounds"
+ prop_cube_indices_never_go_out_of_bounds ]
-- Do the slow tests last so we can stop paying attention.
slow_tests :: Test.Framework.Test
slow_tests =
testGroup "Slow Tests" [
- testProperty "cube indices within bounds"
- prop_cube_indices_never_go_out_of_bounds,
- testCase "trilinear9x9x9 reproduced" test_trilinear9x9x9_reproduced ]
+ testCase "trilinear reproduced" test_trilinear_reproduced,
+ testCase "trilinear9x9x9 reproduced" test_trilinear9x9x9_reproduced,
+ testCase "zeros reproduced" test_zeros_reproduced ]