blas-ffi 0.0 → 0.0.1
raw patch · 5 files changed
+150/−94 lines, 5 files
Files
- blas-ffi.cabal +3/−3
- src/Numeric/BLAS/FFI/Double.hs +21/−21
- src/Numeric/BLAS/FFI/Float.hs +21/−21
- src/Numeric/BLAS/FFI/Generic.hs +56/−0
- src/Numeric/BLAS/FFI/Real.hs +49/−49
blas-ffi.cabal view
@@ -1,5 +1,5 @@ Name: blas-ffi-Version: 0.0+Version: 0.0.1 License: BSD3 License-File: LICENSE Author: Henning Thielemann <haskell@henning-thielemann.de>@@ -18,11 +18,11 @@ but instead Haskell 98 code generated by the custom @lapack-ffi-tools@ package. Tested-With: GHC==7.4.2, GHC==7.8.4-Cabal-Version: >=1.14+Cabal-Version: 1.14 Build-Type: Simple Source-Repository this- Tag: 0.0+ Tag: 0.0.1 Type: darcs Location: http://hub.darcs.net/thielema/blas-ffi/
src/Numeric/BLAS/FFI/Double.hs view
@@ -30,6 +30,27 @@ foreign import ccall "dger_" ger :: Ptr CInt -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> IO () +foreign import ccall "dsbmv_"+ sbmv :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> IO ()++foreign import ccall "dsymv_"+ symv :: Ptr CChar -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> IO ()++foreign import ccall "dsyr_"+ syr :: Ptr CChar -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> IO ()++foreign import ccall "dsyr2_"+ syr2 :: Ptr CChar -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> IO ()++foreign import ccall "dspmv_"+ spmv :: Ptr CChar -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> IO ()++foreign import ccall "dspr_"+ spr :: Ptr CChar -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> IO ()++foreign import ccall "dspr2_"+ spr2 :: Ptr CChar -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> IO ()+ foreign import ccall "idamax_" iamax :: Ptr CInt -> Ptr Double -> Ptr CInt -> IO CInt @@ -48,38 +69,17 @@ foreign import ccall "drotmg_" rotmg :: Ptr Double -> Ptr Double -> Ptr Double -> Ptr Double -> Ptr Double -> IO () -foreign import ccall "dsbmv_"- sbmv :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> IO ()- foreign import ccall "dscal_" scal :: Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> IO () foreign import ccall "dsdot_" sdot :: Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> IO Double -foreign import ccall "dspmv_"- spmv :: Ptr CChar -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> IO ()--foreign import ccall "dspr_"- spr :: Ptr CChar -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> IO ()--foreign import ccall "dspr2_"- spr2 :: Ptr CChar -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> IO ()- foreign import ccall "dswap_" swap :: Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> IO () foreign import ccall "dsymm_" symm :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> IO ()--foreign import ccall "dsymv_"- symv :: Ptr CChar -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> IO ()--foreign import ccall "dsyr_"- syr :: Ptr CChar -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> IO ()--foreign import ccall "dsyr2_"- syr2 :: Ptr CChar -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> IO () foreign import ccall "dsyr2k_" syr2k :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> IO ()
src/Numeric/BLAS/FFI/Float.hs view
@@ -33,6 +33,27 @@ foreign import ccall "sger_" ger :: Ptr CInt -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> IO () +foreign import ccall "ssbmv_"+ sbmv :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> IO ()++foreign import ccall "ssymv_"+ symv :: Ptr CChar -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> IO ()++foreign import ccall "ssyr_"+ syr :: Ptr CChar -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> IO ()++foreign import ccall "ssyr2_"+ syr2 :: Ptr CChar -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> IO ()++foreign import ccall "sspmv_"+ spmv :: Ptr CChar -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> IO ()++foreign import ccall "sspr_"+ spr :: Ptr CChar -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> IO ()++foreign import ccall "sspr2_"+ spr2 :: Ptr CChar -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> IO ()+ foreign import ccall "isamax_" iamax :: Ptr CInt -> Ptr Float -> Ptr CInt -> IO CInt @@ -51,35 +72,14 @@ foreign import ccall "srotmg_" rotmg :: Ptr Float -> Ptr Float -> Ptr Float -> Ptr Float -> Ptr Float -> IO () -foreign import ccall "ssbmv_"- sbmv :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> IO ()- foreign import ccall "sscal_" scal :: Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> IO () -foreign import ccall "sspmv_"- spmv :: Ptr CChar -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> IO ()--foreign import ccall "sspr_"- spr :: Ptr CChar -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> IO ()--foreign import ccall "sspr2_"- spr2 :: Ptr CChar -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> IO ()- foreign import ccall "sswap_" swap :: Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> IO () foreign import ccall "ssymm_" symm :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> IO ()--foreign import ccall "ssymv_"- symv :: Ptr CChar -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> IO ()--foreign import ccall "ssyr_"- syr :: Ptr CChar -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> IO ()--foreign import ccall "ssyr2_"- syr2 :: Ptr CChar -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> IO () foreign import ccall "ssyr2k_" syr2k :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> IO ()
src/Numeric/BLAS/FFI/Generic.hs view
@@ -5,6 +5,14 @@ gbmv, gemm, gemv,+ gerc,+ geru,+ hbmv,+ hemm,+ hemv,+ her2,+ hpmv,+ hpr2, iamax, scal, swap,@@ -61,6 +69,54 @@ gemv :: Class.Floating a => Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO () gemv = getGEMV $ Class.switchFloating (GEMV S.gemv) (GEMV D.gemv) (GEMV C.gemv) (GEMV Z.gemv)+++newtype GERC a = GERC {getGERC :: Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++gerc :: Class.Floating a => Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+gerc = getGERC $ Class.switchFloating (GERC S.ger) (GERC D.ger) (GERC C.gerc) (GERC Z.gerc)+++newtype GERU a = GERU {getGERU :: Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++geru :: Class.Floating a => Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+geru = getGERU $ Class.switchFloating (GERU S.ger) (GERU D.ger) (GERU C.geru) (GERU Z.geru)+++newtype HBMV a = HBMV {getHBMV :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++hbmv :: Class.Floating a => Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()+hbmv = getHBMV $ Class.switchFloating (HBMV S.sbmv) (HBMV D.sbmv) (HBMV C.hbmv) (HBMV Z.hbmv)+++newtype HEMM a = HEMM {getHEMM :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++hemm :: Class.Floating a => Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()+hemm = getHEMM $ Class.switchFloating (HEMM S.symm) (HEMM D.symm) (HEMM C.hemm) (HEMM Z.hemm)+++newtype HEMV a = HEMV {getHEMV :: Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++hemv :: Class.Floating a => Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()+hemv = getHEMV $ Class.switchFloating (HEMV S.symv) (HEMV D.symv) (HEMV C.hemv) (HEMV Z.hemv)+++newtype HER2 a = HER2 {getHER2 :: Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++her2 :: Class.Floating a => Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+her2 = getHER2 $ Class.switchFloating (HER2 S.syr2) (HER2 D.syr2) (HER2 C.her2) (HER2 Z.her2)+++newtype HPMV a = HPMV {getHPMV :: Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++hpmv :: Class.Floating a => Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()+hpmv = getHPMV $ Class.switchFloating (HPMV S.spmv) (HPMV D.spmv) (HPMV C.hpmv) (HPMV Z.hpmv)+++newtype HPR2 a = HPR2 {getHPR2 :: Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> IO ()}++hpr2 :: Class.Floating a => Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> IO ()+hpr2 = getHPR2 $ Class.switchFloating (HPR2 S.spr2) (HPR2 D.spr2) (HPR2 C.hpr2) (HPR2 Z.hpr2) newtype IAMAX a = IAMAX {getIAMAX :: Ptr CInt -> Ptr a -> Ptr CInt -> IO CInt}
src/Numeric/BLAS/FFI/Real.hs view
@@ -8,22 +8,22 @@ gemm, gemv, ger,+ sbmv,+ symv,+ syr,+ syr2,+ spmv,+ spr,+ spr2, iamax, nrm2, rot, rotg, rotm, rotmg,- sbmv, scal,- spmv,- spr,- spr2, swap, symm,- symv,- syr,- syr2, syr2k, syrk, tbmv,@@ -94,6 +94,48 @@ ger = getGER $ Class.switchReal (GER S.ger) (GER D.ger) +newtype SBMV a = SBMV {getSBMV :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++sbmv :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()+sbmv = getSBMV $ Class.switchReal (SBMV S.sbmv) (SBMV D.sbmv)+++newtype SYMV a = SYMV {getSYMV :: Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++symv :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()+symv = getSYMV $ Class.switchReal (SYMV S.symv) (SYMV D.symv)+++newtype SYR a = SYR {getSYR :: Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++syr :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+syr = getSYR $ Class.switchReal (SYR S.syr) (SYR D.syr)+++newtype SYR2 a = SYR2 {getSYR2 :: Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++syr2 :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+syr2 = getSYR2 $ Class.switchReal (SYR2 S.syr2) (SYR2 D.syr2)+++newtype SPMV a = SPMV {getSPMV :: Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++spmv :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()+spmv = getSPMV $ Class.switchReal (SPMV S.spmv) (SPMV D.spmv)+++newtype SPR a = SPR {getSPR :: Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> IO ()}++spr :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> IO ()+spr = getSPR $ Class.switchReal (SPR S.spr) (SPR D.spr)+++newtype SPR2 a = SPR2 {getSPR2 :: Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> IO ()}++spr2 :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> IO ()+spr2 = getSPR2 $ Class.switchReal (SPR2 S.spr2) (SPR2 D.spr2)++ newtype IAMAX a = IAMAX {getIAMAX :: Ptr CInt -> Ptr a -> Ptr CInt -> IO CInt} iamax :: Class.Real a => Ptr CInt -> Ptr a -> Ptr CInt -> IO CInt@@ -130,36 +172,12 @@ rotmg = getROTMG $ Class.switchReal (ROTMG S.rotmg) (ROTMG D.rotmg) -newtype SBMV a = SBMV {getSBMV :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}--sbmv :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()-sbmv = getSBMV $ Class.switchReal (SBMV S.sbmv) (SBMV D.sbmv)-- newtype SCAL a = SCAL {getSCAL :: Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()} scal :: Class.Real a => Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO () scal = getSCAL $ Class.switchReal (SCAL S.scal) (SCAL D.scal) -newtype SPMV a = SPMV {getSPMV :: Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}--spmv :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()-spmv = getSPMV $ Class.switchReal (SPMV S.spmv) (SPMV D.spmv)---newtype SPR a = SPR {getSPR :: Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> IO ()}--spr :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> IO ()-spr = getSPR $ Class.switchReal (SPR S.spr) (SPR D.spr)---newtype SPR2 a = SPR2 {getSPR2 :: Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> IO ()}--spr2 :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> IO ()-spr2 = getSPR2 $ Class.switchReal (SPR2 S.spr2) (SPR2 D.spr2)-- newtype SWAP a = SWAP {getSWAP :: Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()} swap :: Class.Real a => Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()@@ -170,24 +188,6 @@ symm :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO () symm = getSYMM $ Class.switchReal (SYMM S.symm) (SYMM D.symm)---newtype SYMV a = SYMV {getSYMV :: Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}--symv :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()-symv = getSYMV $ Class.switchReal (SYMV S.symv) (SYMV D.symv)---newtype SYR a = SYR {getSYR :: Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}--syr :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()-syr = getSYR $ Class.switchReal (SYR S.syr) (SYR D.syr)---newtype SYR2 a = SYR2 {getSYR2 :: Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}--syr2 :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()-syr2 = getSYR2 $ Class.switchReal (SYR2 S.syr2) (SYR2 D.syr2) newtype SYR2K a = SYR2K {getSYR2K :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}