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