packages feed

accelerate-examples-0.15.0.0: examples/nofib/Test/Issues/Issue187.hs

module Test.Issues.Issue187 (test_issue187)
  where

import Config
import ParseArgs
import Test.Base
import Test.Framework
import Test.Framework.Providers.HUnit

import Prelude                                  as P
import Data.Array.Accelerate                    as A
import Data.Label


test_issue187 :: Config -> Test
test_issue187 conf = testGroup "187"
  [ testCase "A" (assertEqual ref1 $ run backend test1)
  , testCase "B" (assertEqual ref2 $ run backend test2)
  ]
  where
    backend     = get configBackend conf


ref1 :: Scalar Bool
ref1 = fromList Z [True]

test1 :: Acc (Scalar Bool)
test1 =
  let x = constant 1 :: Exp Int
      v = use (fromList (Z :. 5) [1,2,3,4,5] :: Vector Int)
      y = (x ==* 1 ||* v A.!! (-1) ==* 1)
  in generate (constant Z) (const y)


ref2 :: Scalar Bool
ref2 = fromList Z [True]

test2 :: Acc (Scalar Bool)
test2 =
  let x  = constant 1 :: Exp Int
      x' = unit x
      v  = use (fromList (Z :. 5) [1,2,3,4,5] :: Vector Int)
      y  = (x ==* the x' ||* let y' = v A.!! (-1) in y'*y' ==* 1)
  in generate (constant Z) (const y)