+
+instance Arbitrary Values3D where
+ arbitrary = do
+ x_dim <- arbitrary :: Gen Int
+ y_dim <- arbitrary :: Gen Int
+ z_dim <- arbitrary :: Gen Int
+ one_d <- arbitrary :: Gen Values1D
+ let new_shape = (Z :. x_dim :. y_dim :. z_dim)
+ let three_d = reshape new_shape one_d
+ return three_d
+
+
+instance Arbitrary Values1D where
+ arbitrary = do
+ x <- arbitrary :: Gen [Double]
+ let shape = (Z :. (length x))
+ let one_d = Data.Array.Repa.fromList shape x
+ return one_d
+
+