X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FTetrahedron.hs;h=87bfd5e8a65b8621179d480bd636a1feeed6854b;hb=2d5f265a2dbb3082e4af12e2eed21c952fa3f8c6;hp=e63f96b7d1bc750e4c18c08888a5bf95ecc2f049;hpb=a499efdb0e215ac424fe7c38a52430daebefc22b;p=spline3.git diff --git a/src/Tetrahedron.hs b/src/Tetrahedron.hs index e63f96b..87bfd5e 100644 --- a/src/Tetrahedron.hs +++ b/src/Tetrahedron.hs @@ -1,3 +1,7 @@ +-- The local "coefficient" function defined within the "c" function +-- pattern matches on a bunch of integers, but doesn't handle the +-- "otherwise" case for performance reasons. +{-# OPTIONS_GHC -Wno-incomplete-patterns #-} {-# LANGUAGE BangPatterns #-} module Tetrahedron ( @@ -19,16 +23,22 @@ import qualified Data.Vector as V ( sum ) import Test.Tasty ( TestTree, testGroup ) import Test.Tasty.HUnit ( Assertion, assertEqual, testCase ) import Test.Tasty.QuickCheck ( - Arbitrary(..), + Arbitrary( arbitrary ), Gen, Property, (==>), testProperty ) import Comparisons ( (~=) ) -import FunctionValues ( FunctionValues(..), empty_values ) +import FunctionValues ( + FunctionValues( front, back, left, right, top, down, front_left, + front_right, front_down, front_top, back_left, back_right, + back_down, back_top, left_down, left_top, right_down, + right_top, front_left_down, front_left_top, + front_right_down, front_right_top, interior ), + empty_values ) import Misc ( factorial ) -import Point ( Point(..), scale ) +import Point ( Point(Point), scale ) import RealFunction ( RealFunction, cmult, fexp ) data Tetrahedron = @@ -107,7 +117,7 @@ beta t i j k l = coefficient `cmult` (b0_term * b1_term * b2_term * b3_term) where denominator = (factorial i)*(factorial j)*(factorial k)*(factorial l) - coefficient = 6 / (fromIntegral denominator) + coefficient = (6 / (fromIntegral denominator)) :: Double b0_term = (b0 t) `fexp` i b1_term = (b1 t) `fexp` j b2_term = (b2 t) `fexp` k