eval f (Quotient x y) = (eval f x) / (eval f y)
value_at :: [[[Double]]] -> Int -> Int -> Int -> Double
-value_at values i j k =
- ((values !! k) !! j) !! i
+value_at values i j k
+ | i < 0 = 0
+ | j < 0 = 0
+ | k < 0 = 0
+ | length values <= k = 0
+ | length (values !! k) <= j = 0
+ | length ((values !! k) !! j) <= i = 0
+ | otherwise = ((values !! k) !! j) !! i
make_values :: [[[Double]]] -> Int -> Int -> Int -> FunctionValues
make_values values i j k =