X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FTests%2FCube.hs;h=46b2530ab82053fae93fcf68de6e839ed8cf6304;hb=b36cb982a689fa31b1d0c4e3e9994f36cc4b26b2;hp=150faef89669de34d7a7b7d0235b827e9587f024;hpb=cc10c04deda3bdf54867a9052b638f0bc4b09fbe;p=spline3.git diff --git a/src/Tests/Cube.hs b/src/Tests/Cube.hs index 150faef..46b2530 100644 --- a/src/Tests/Cube.hs +++ b/src/Tests/Cube.hs @@ -2,7 +2,6 @@ module Tests.Cube where import Prelude hiding (LT) -import Test.QuickCheck import Cardinal import Comparisons @@ -13,246 +12,27 @@ import Tests.FunctionValues () import Tetrahedron (b0, b1, b2, b3, c, fv, v0, v1, v2, v3, volume) -instance Arbitrary Cube where - arbitrary = do - (Positive h') <- arbitrary :: Gen (Positive Double) - i' <- choose (coordmin, coordmax) - j' <- choose (coordmin, coordmax) - k' <- choose (coordmin, coordmax) - fv' <- arbitrary :: Gen FunctionValues - return (Cube h' i' j' k' fv') - where - coordmin = -268435456 -- -(2^29 / 2) - coordmax = 268435456 -- +(2^29 / 2) -- Quickcheck tests. --- | Since the grid size is necessarily positive, all tetrahedrons +-- | Since the grid size is necessarily positive, all tetrahedra -- (which comprise cubes of positive volume) must have positive volume -- as well. prop_all_volumes_positive :: Cube -> Bool prop_all_volumes_positive cube = null nonpositive_volumes where - ts = tetrahedrons cube + ts = tetrahedra cube volumes = map volume ts nonpositive_volumes = filter (<= 0) volumes -- | In fact, since all of the tetrahedra are identical, we should -- already know their volumes. There's 24 tetrahedra to a cube, so -- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron0_volumes_exact :: Cube -> Bool -prop_tetrahedron0_volumes_exact cube = - volume (tetrahedron0 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron1_volumes_exact :: Cube -> Bool -prop_tetrahedron1_volumes_exact cube = - volume (tetrahedron1 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron2_volumes_exact :: Cube -> Bool -prop_tetrahedron2_volumes_exact cube = - volume (tetrahedron2 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron3_volumes_exact :: Cube -> Bool -prop_tetrahedron3_volumes_exact cube = - volume (tetrahedron3 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron4_volumes_exact :: Cube -> Bool -prop_tetrahedron4_volumes_exact cube = - volume (tetrahedron4 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron5_volumes_exact :: Cube -> Bool -prop_tetrahedron5_volumes_exact cube = - volume (tetrahedron5 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron6_volumes_exact :: Cube -> Bool -prop_tetrahedron6_volumes_exact cube = - volume (tetrahedron6 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron7_volumes_exact :: Cube -> Bool -prop_tetrahedron7_volumes_exact cube = - volume (tetrahedron7 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron8_volumes_exact :: Cube -> Bool -prop_tetrahedron8_volumes_exact cube = - volume (tetrahedron8 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron9_volumes_exact :: Cube -> Bool -prop_tetrahedron9_volumes_exact cube = - volume (tetrahedron9 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron10_volumes_exact :: Cube -> Bool -prop_tetrahedron10_volumes_exact cube = - volume (tetrahedron10 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron11_volumes_exact :: Cube -> Bool -prop_tetrahedron11_volumes_exact cube = - volume (tetrahedron11 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron12_volumes_exact :: Cube -> Bool -prop_tetrahedron12_volumes_exact cube = - volume (tetrahedron12 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron13_volumes_exact :: Cube -> Bool -prop_tetrahedron13_volumes_exact cube = - volume (tetrahedron13 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron14_volumes_exact :: Cube -> Bool -prop_tetrahedron14_volumes_exact cube = - volume (tetrahedron14 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron15_volumes_exact :: Cube -> Bool -prop_tetrahedron15_volumes_exact cube = - volume (tetrahedron15 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron16_volumes_exact :: Cube -> Bool -prop_tetrahedron16_volumes_exact cube = - volume (tetrahedron16 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron17_volumes_exact :: Cube -> Bool -prop_tetrahedron17_volumes_exact cube = - volume (tetrahedron17 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron18_volumes_exact :: Cube -> Bool -prop_tetrahedron18_volumes_exact cube = - volume (tetrahedron18 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron19_volumes_exact :: Cube -> Bool -prop_tetrahedron19_volumes_exact cube = - volume (tetrahedron19 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron20_volumes_exact :: Cube -> Bool -prop_tetrahedron20_volumes_exact cube = - volume (tetrahedron20 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron21_volumes_exact :: Cube -> Bool -prop_tetrahedron21_volumes_exact cube = - volume (tetrahedron21 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron22_volumes_exact :: Cube -> Bool -prop_tetrahedron22_volumes_exact cube = - volume (tetrahedron22 cube) ~~= (1/24)*(delta^(3::Int)) - where - delta = h cube - --- | In fact, since all of the tetrahedra are identical, we should --- already know their volumes. There's 24 tetrahedra to a cube, so --- we'd expect the volume of each one to be (1/24)*h^3. -prop_tetrahedron23_volumes_exact :: Cube -> Bool -prop_tetrahedron23_volumes_exact cube = - volume (tetrahedron23 cube) ~~= (1/24)*(delta^(3::Int)) +prop_all_volumes_exact :: Cube -> Bool +prop_all_volumes_exact cube = + and [volume t ~~= (1/24)*(delta^(3::Int)) | t <- tetrahedra cube] where delta = h cube @@ -260,8 +40,8 @@ prop_tetrahedron23_volumes_exact cube = prop_v0_all_equal :: Cube -> Bool prop_v0_all_equal cube = (v0 t0) == (v0 t1) where - t0 = head (tetrahedrons cube) -- Doesn't matter which two we choose. - t1 = head $ tail (tetrahedrons cube) + t0 = head (tetrahedra cube) -- Doesn't matter which two we choose. + t1 = head $ tail (tetrahedra cube) -- | This pretty much repeats the prop_all_volumes_positive property,