module Main where

import Numeric.CBLAS.FFI.Extra (copyMatrix, addMatrix)
-- import Numeric.CBLAS.FFI.Private (somatcopy, ccharFromChar)
import Numeric.Netlib.Modifier (Transposition(NonTransposed,Transposed))

import qualified Foreign


main :: IO ()
main =
   Foreign.withArray [1,2,3,4,5,6,7,8,9,10,11,12::Float] $ \x ->
   Foreign.allocaArray 8 $ \y -> do
--   somatcopy (ccharFromChar 'C') (ccharFromChar 'N') 2 4  1.0  x 3 y 2
   copyMatrix NonTransposed 2 4  x 3 y 2
   putStrLn . show =<< Foreign.peekArray 8 y
   copyMatrix Transposed 2 4  x 3 y 4
   putStrLn . show =<< Foreign.peekArray 8 y
   -- fails with AMD/AOCL/BLIS 4.2 because wrong size check on transposition
   -- https://github.com/flame/blis/issues/640
   -- Foreign.pokeArray x (replicate 8 0)
   Foreign.pokeArray y (replicate 8 42)
   copyMatrix Transposed 8 1  x 8 y 1
   putStrLn . show =<< Foreign.peekArray 8 y
   addMatrix 2 4  1 x 3  1 y 2
   putStrLn . show =<< Foreign.peekArray 8 y