blas-ffi (empty) → 0.0
raw patch · 11 files changed
+1221/−0 lines, 11 filesdep +basedep +netlib-ffisetup-changed
Dependencies added: base, netlib-ffi
Files
- LICENSE +27/−0
- Setup.lhs +3/−0
- blas-ffi.cabal +50/−0
- src/Numeric/BLAS/FFI/Complex.hs +272/−0
- src/Numeric/BLAS/FFI/ComplexDouble.hs +119/−0
- src/Numeric/BLAS/FFI/ComplexFloat.hs +119/−0
- src/Numeric/BLAS/FFI/Double.hs +112/−0
- src/Numeric/BLAS/FFI/Float.hs +112/−0
- src/Numeric/BLAS/FFI/Generic.hs +147/−0
- src/Numeric/BLAS/FFI/Miscellaneous.hs +10/−0
- src/Numeric/BLAS/FFI/Real.hs +250/−0
+ LICENSE view
@@ -0,0 +1,27 @@+Copyright (c) Henning Thielemann 2017++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions+are met:+1. Redistributions of source code must retain the above copyright+ notice, this list of conditions and the following disclaimer.+2. Redistributions in binary form must reproduce the above copyright+ notice, this list of conditions and the following disclaimer in the+ documentation and/or other materials provided with the distribution.+3. Neither the name of the author nor the names of his contributors+ may be used to endorse or promote products derived from this software+ without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF+SUCH DAMAGE.
+ Setup.lhs view
@@ -0,0 +1,3 @@+#! /usr/bin/env runhaskell+> import Distribution.Simple+> main = defaultMain
+ blas-ffi.cabal view
@@ -0,0 +1,50 @@+Name: blas-ffi+Version: 0.0+License: BSD3+License-File: LICENSE+Author: Henning Thielemann <haskell@henning-thielemann.de>+Maintainer: Henning Thielemann <haskell@henning-thielemann.de>+Homepage: http://hub.darcs.net/thielema/blas-ffi/+Category: Math+Synopsis: Auto-generated interface to Fortran BLAS+Description:+ BLAS is a package for efficient basic linear algebra operations.+ The reference implementation is written in FORTRAN.+ .+ This is an automatically generated low-level interface.+ We provide bindings to functions of all variants+ for @Float@, @Double@, @Complex Float@ and @Complex Double@.+ We do not use TemplateHaskell nor HSC nor CHS,+ 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+Build-Type: Simple++Source-Repository this+ Tag: 0.0+ Type: darcs+ Location: http://hub.darcs.net/thielema/blas-ffi/++Source-Repository head+ Type: darcs+ Location: http://hub.darcs.net/thielema/blas-ffi/++Library+ PkgConfig-Depends: blas+ Build-Depends:+ netlib-ffi >=0.0 && <0.1,+ base >=4.5 && <5++ GHC-Options: -Wall+ Hs-Source-Dirs: src+ Default-Language: Haskell98+ Exposed-Modules:+ Numeric.BLAS.FFI.Float+ Numeric.BLAS.FFI.Double+ Numeric.BLAS.FFI.Real+ Numeric.BLAS.FFI.ComplexFloat+ Numeric.BLAS.FFI.ComplexDouble+ Numeric.BLAS.FFI.Complex+ Numeric.BLAS.FFI.Generic+ Numeric.BLAS.FFI.Miscellaneous
+ src/Numeric/BLAS/FFI/Complex.hs view
@@ -0,0 +1,272 @@+-- Do not edit! Automatically generated by create-lapack-ffi.+module Numeric.BLAS.FFI.Complex (+ axpy,+ cabs1,+ casum,+ cnrm2,+ copy,+ gbmv,+ gemm,+ gemv,+ gerc,+ geru,+ hbmv,+ hemm,+ hemv,+ her,+ her2,+ her2k,+ herk,+ hpmv,+ hpr,+ hpr2,+ iamax,+ rotg,+ rrot,+ rscal,+ scal,+ swap,+ symm,+ syr2k,+ syrk,+ tbmv,+ tbsv,+ tpmv,+ tpsv,+ trmm,+ trmv,+ trsm,+ trsv,+ ) where++import qualified Numeric.BLAS.FFI.ComplexFloat as C+import qualified Numeric.BLAS.FFI.ComplexDouble as Z++import qualified Numeric.Netlib.Class as Class++import Data.Complex (Complex)+import Foreign.Ptr (Ptr)+import Foreign.C.Types++++newtype AXPY a = AXPY {getAXPY :: Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()}++axpy :: Class.Real a => Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()+axpy = getAXPY $ Class.switchReal (AXPY C.axpy) (AXPY Z.axpy)+++newtype CABS1 a = CABS1 {getCABS1 :: Ptr (Complex a) -> IO a}++cabs1 :: Class.Real a => Ptr (Complex a) -> IO a+cabs1 = getCABS1 $ Class.switchReal (CABS1 C.cabs1) (CABS1 Z.cabs1)+++newtype CASUM a = CASUM {getCASUM :: Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO a}++casum :: Class.Real a => Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO a+casum = getCASUM $ Class.switchReal (CASUM C.casum) (CASUM Z.casum)+++newtype CNRM2 a = CNRM2 {getCNRM2 :: Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO a}++cnrm2 :: Class.Real a => Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO a+cnrm2 = getCNRM2 $ Class.switchReal (CNRM2 C.cnrm2) (CNRM2 Z.cnrm2)+++newtype COPY a = COPY {getCOPY :: Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()}++copy :: Class.Real a => Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()+copy = getCOPY $ Class.switchReal (COPY C.copy) (COPY Z.copy)+++newtype GBMV a = GBMV {getGBMV :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()}++gbmv :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()+gbmv = getGBMV $ Class.switchReal (GBMV C.gbmv) (GBMV Z.gbmv)+++newtype GEMM a = GEMM {getGEMM :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()}++gemm :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()+gemm = getGEMM $ Class.switchReal (GEMM C.gemm) (GEMM Z.gemm)+++newtype GEMV a = GEMV {getGEMV :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()}++gemv :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()+gemv = getGEMV $ Class.switchReal (GEMV C.gemv) (GEMV Z.gemv)+++newtype GERC a = GERC {getGERC :: Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()}++gerc :: Class.Real a => Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()+gerc = getGERC $ Class.switchReal (GERC C.gerc) (GERC Z.gerc)+++newtype GERU a = GERU {getGERU :: Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()}++geru :: Class.Real a => Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()+geru = getGERU $ Class.switchReal (GERU C.geru) (GERU Z.geru)+++newtype HBMV a = HBMV {getHBMV :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()}++hbmv :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()+hbmv = getHBMV $ Class.switchReal (HBMV C.hbmv) (HBMV Z.hbmv)+++newtype HEMM a = HEMM {getHEMM :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()}++hemm :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()+hemm = getHEMM $ Class.switchReal (HEMM C.hemm) (HEMM Z.hemm)+++newtype HEMV a = HEMV {getHEMV :: Ptr CChar -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()}++hemv :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()+hemv = getHEMV $ Class.switchReal (HEMV C.hemv) (HEMV Z.hemv)+++newtype HER a = HER {getHER :: Ptr CChar -> Ptr CInt -> Ptr a -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()}++her :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr a -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()+her = getHER $ Class.switchReal (HER C.her) (HER Z.her)+++newtype HER2 a = HER2 {getHER2 :: Ptr CChar -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()}++her2 :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()+her2 = getHER2 $ Class.switchReal (HER2 C.her2) (HER2 Z.her2)+++newtype HER2K a = HER2K {getHER2K :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr a -> Ptr (Complex a) -> Ptr CInt -> IO ()}++her2k :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr a -> Ptr (Complex a) -> Ptr CInt -> IO ()+her2k = getHER2K $ Class.switchReal (HER2K C.her2k) (HER2K Z.her2k)+++newtype HERK a = HERK {getHERK :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr (Complex a) -> Ptr CInt -> Ptr a -> Ptr (Complex a) -> Ptr CInt -> IO ()}++herk :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr (Complex a) -> Ptr CInt -> Ptr a -> Ptr (Complex a) -> Ptr CInt -> IO ()+herk = getHERK $ Class.switchReal (HERK C.herk) (HERK Z.herk)+++newtype HPMV a = HPMV {getHPMV :: Ptr CChar -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()}++hpmv :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()+hpmv = getHPMV $ Class.switchReal (HPMV C.hpmv) (HPMV Z.hpmv)+++newtype HPR a = HPR {getHPR :: Ptr CChar -> Ptr CInt -> Ptr a -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> IO ()}++hpr :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr a -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> IO ()+hpr = getHPR $ Class.switchReal (HPR C.hpr) (HPR Z.hpr)+++newtype HPR2 a = HPR2 {getHPR2 :: Ptr CChar -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> IO ()}++hpr2 :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> IO ()+hpr2 = getHPR2 $ Class.switchReal (HPR2 C.hpr2) (HPR2 Z.hpr2)+++newtype IAMAX a = IAMAX {getIAMAX :: Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO CInt}++iamax :: Class.Real a => Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO CInt+iamax = getIAMAX $ Class.switchReal (IAMAX C.iamax) (IAMAX Z.iamax)+++newtype ROTG a = ROTG {getROTG :: Ptr (Complex a) -> Ptr (Complex a) -> Ptr a -> Ptr (Complex a) -> IO ()}++rotg :: Class.Real a => Ptr (Complex a) -> Ptr (Complex a) -> Ptr a -> Ptr (Complex a) -> IO ()+rotg = getROTG $ Class.switchReal (ROTG C.rotg) (ROTG Z.rotg)+++newtype RROT a = RROT {getRROT :: Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr a -> Ptr a -> IO ()}++rrot :: Class.Real a => Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr a -> Ptr a -> IO ()+rrot = getRROT $ Class.switchReal (RROT C.rrot) (RROT Z.rrot)+++newtype RSCAL a = RSCAL {getRSCAL :: Ptr CInt -> Ptr a -> Ptr (Complex a) -> Ptr CInt -> IO ()}++rscal :: Class.Real a => Ptr CInt -> Ptr a -> Ptr (Complex a) -> Ptr CInt -> IO ()+rscal = getRSCAL $ Class.switchReal (RSCAL C.rscal) (RSCAL Z.rscal)+++newtype SCAL a = SCAL {getSCAL :: Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()}++scal :: Class.Real a => Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()+scal = getSCAL $ Class.switchReal (SCAL C.scal) (SCAL Z.scal)+++newtype SWAP a = SWAP {getSWAP :: Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()}++swap :: Class.Real a => Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()+swap = getSWAP $ Class.switchReal (SWAP C.swap) (SWAP Z.swap)+++newtype SYMM a = SYMM {getSYMM :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()}++symm :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()+symm = getSYMM $ Class.switchReal (SYMM C.symm) (SYMM Z.symm)+++newtype SYR2K a = SYR2K {getSYR2K :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()}++syr2k :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()+syr2k = getSYR2K $ Class.switchReal (SYR2K C.syr2k) (SYR2K Z.syr2k)+++newtype SYRK a = SYRK {getSYRK :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()}++syrk :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()+syrk = getSYRK $ Class.switchReal (SYRK C.syrk) (SYRK Z.syrk)+++newtype TBMV a = TBMV {getTBMV :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()}++tbmv :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()+tbmv = getTBMV $ Class.switchReal (TBMV C.tbmv) (TBMV Z.tbmv)+++newtype TBSV a = TBSV {getTBSV :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()}++tbsv :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()+tbsv = getTBSV $ Class.switchReal (TBSV C.tbsv) (TBSV Z.tbsv)+++newtype TPMV a = TPMV {getTPMV :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()}++tpmv :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()+tpmv = getTPMV $ Class.switchReal (TPMV C.tpmv) (TPMV Z.tpmv)+++newtype TPSV a = TPSV {getTPSV :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()}++tpsv :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> IO ()+tpsv = getTPSV $ Class.switchReal (TPSV C.tpsv) (TPSV Z.tpsv)+++newtype TRMM a = TRMM {getTRMM :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()}++trmm :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()+trmm = getTRMM $ Class.switchReal (TRMM C.trmm) (TRMM Z.trmm)+++newtype TRMV a = TRMV {getTRMV :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()}++trmv :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()+trmv = getTRMV $ Class.switchReal (TRMV C.trmv) (TRMV Z.trmv)+++newtype TRSM a = TRSM {getTRSM :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()}++trsm :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex a) -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()+trsm = getTRSM $ Class.switchReal (TRSM C.trsm) (TRSM Z.trsm)+++newtype TRSV a = TRSV {getTRSV :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()}++trsv :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> Ptr (Complex a) -> Ptr CInt -> IO ()+trsv = getTRSV $ Class.switchReal (TRSV C.trsv) (TRSV Z.trsv)
+ src/Numeric/BLAS/FFI/ComplexDouble.hs view
@@ -0,0 +1,119 @@+-- Do not edit! Automatically generated by create-lapack-ffi.+{-# LANGUAGE ForeignFunctionInterface #-}+module Numeric.BLAS.FFI.ComplexDouble where++import Data.Complex (Complex)+import Foreign.Ptr (Ptr)+import Foreign.C.Types+++foreign import ccall "zaxpy_"+ axpy :: Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "dcabs1_"+ cabs1 :: Ptr (Complex Double) -> IO Double++foreign import ccall "dzasum_"+ casum :: Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> IO Double++foreign import ccall "dznrm2_"+ cnrm2 :: Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> IO Double++foreign import ccall "zcopy_"+ copy :: Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zgbmv_"+ gbmv :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zgemm_"+ gemm :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zgemv_"+ gemv :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zgerc_"+ gerc :: Ptr CInt -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zgeru_"+ geru :: Ptr CInt -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zhbmv_"+ hbmv :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zhemm_"+ hemm :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zhemv_"+ hemv :: Ptr CChar -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zher_"+ her :: Ptr CChar -> Ptr CInt -> Ptr Double -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zher2_"+ her2 :: Ptr CChar -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zher2k_"+ her2k :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr Double -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zherk_"+ herk :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Double -> Ptr (Complex Double) -> Ptr CInt -> Ptr Double -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zhpmv_"+ hpmv :: Ptr CChar -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zhpr_"+ hpr :: Ptr CChar -> Ptr CInt -> Ptr Double -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> IO ()++foreign import ccall "zhpr2_"+ hpr2 :: Ptr CChar -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> IO ()++foreign import ccall "izamax_"+ iamax :: Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> IO CInt++foreign import ccall "zrotg_"+ rotg :: Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr Double -> Ptr (Complex Double) -> IO ()++foreign import ccall "zdrot_"+ rrot :: Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr Double -> Ptr Double -> IO ()++foreign import ccall "zdscal_"+ rscal :: Ptr CInt -> Ptr Double -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zscal_"+ scal :: Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zswap_"+ swap :: Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zsymm_"+ symm :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zsyr2k_"+ syr2k :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "zsyrk_"+ syrk :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "ztbmv_"+ tbmv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "ztbsv_"+ tbsv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "ztpmv_"+ tpmv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "ztpsv_"+ tpsv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "ztrmm_"+ trmm :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "ztrmv_"+ trmv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "ztrsm_"+ trsm :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Double) -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> IO ()++foreign import ccall "ztrsv_"+ trsv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> Ptr (Complex Double) -> Ptr CInt -> IO ()
+ src/Numeric/BLAS/FFI/ComplexFloat.hs view
@@ -0,0 +1,119 @@+-- Do not edit! Automatically generated by create-lapack-ffi.+{-# LANGUAGE ForeignFunctionInterface #-}+module Numeric.BLAS.FFI.ComplexFloat where++import Data.Complex (Complex)+import Foreign.Ptr (Ptr)+import Foreign.C.Types+++foreign import ccall "caxpy_"+ axpy :: Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "scabs1_"+ cabs1 :: Ptr (Complex Float) -> IO Float++foreign import ccall "scasum_"+ casum :: Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> IO Float++foreign import ccall "scnrm2_"+ cnrm2 :: Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> IO Float++foreign import ccall "ccopy_"+ copy :: Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "cgbmv_"+ gbmv :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "cgemm_"+ gemm :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "cgemv_"+ gemv :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "cgerc_"+ gerc :: Ptr CInt -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "cgeru_"+ geru :: Ptr CInt -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "chbmv_"+ hbmv :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "chemm_"+ hemm :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "chemv_"+ hemv :: Ptr CChar -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "cher_"+ her :: Ptr CChar -> Ptr CInt -> Ptr Float -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "cher2_"+ her2 :: Ptr CChar -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "cher2k_"+ her2k :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr Float -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "cherk_"+ herk :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Float -> Ptr (Complex Float) -> Ptr CInt -> Ptr Float -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "chpmv_"+ hpmv :: Ptr CChar -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "chpr_"+ hpr :: Ptr CChar -> Ptr CInt -> Ptr Float -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> IO ()++foreign import ccall "chpr2_"+ hpr2 :: Ptr CChar -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> IO ()++foreign import ccall "icamax_"+ iamax :: Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> IO CInt++foreign import ccall "crotg_"+ rotg :: Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr Float -> Ptr (Complex Float) -> IO ()++foreign import ccall "csrot_"+ rrot :: Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr Float -> Ptr Float -> IO ()++foreign import ccall "csscal_"+ rscal :: Ptr CInt -> Ptr Float -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "cscal_"+ scal :: Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "cswap_"+ swap :: Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "csymm_"+ symm :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "csyr2k_"+ syr2k :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "csyrk_"+ syrk :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "ctbmv_"+ tbmv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "ctbsv_"+ tbsv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "ctpmv_"+ tpmv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "ctpsv_"+ tpsv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "ctrmm_"+ trmm :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "ctrmv_"+ trmv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "ctrsm_"+ trsm :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr (Complex Float) -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> IO ()++foreign import ccall "ctrsv_"+ trsv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> Ptr (Complex Float) -> Ptr CInt -> IO ()
+ src/Numeric/BLAS/FFI/Double.hs view
@@ -0,0 +1,112 @@+-- Do not edit! Automatically generated by create-lapack-ffi.+{-# LANGUAGE ForeignFunctionInterface #-}+module Numeric.BLAS.FFI.Double where++import Foreign.Ptr (Ptr)+import Foreign.C.Types+++foreign import ccall "dasum_"+ asum :: Ptr CInt -> Ptr Double -> Ptr CInt -> IO Double++foreign import ccall "daxpy_"+ axpy :: Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> IO ()++foreign import ccall "dcopy_"+ copy :: Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> IO ()++foreign import ccall "ddot_"+ dot :: Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> IO Double++foreign import ccall "dgbmv_"+ gbmv :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> IO ()++foreign import ccall "dgemm_"+ gemm :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> IO ()++foreign import ccall "dgemv_"+ gemv :: 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 "dger_"+ ger :: Ptr CInt -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> IO ()++foreign import ccall "idamax_"+ iamax :: Ptr CInt -> Ptr Double -> Ptr CInt -> IO CInt++foreign import ccall "dnrm2_"+ nrm2 :: Ptr CInt -> Ptr Double -> Ptr CInt -> IO Double++foreign import ccall "drot_"+ rot :: Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr Double -> IO ()++foreign import ccall "drotg_"+ rotg :: Ptr Double -> Ptr Double -> Ptr Double -> Ptr Double -> IO ()++foreign import ccall "drotm_"+ rotm :: Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> IO ()++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 ()++foreign import ccall "dsyrk_"+ syrk :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> IO ()++foreign import ccall "dtbmv_"+ tbmv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> IO ()++foreign import ccall "dtbsv_"+ tbsv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> IO ()++foreign import ccall "dtpmv_"+ tpmv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> IO ()++foreign import ccall "dtpsv_"+ tpsv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> IO ()++foreign import ccall "dtrmm_"+ trmm :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> IO ()++foreign import ccall "dtrmv_"+ trmv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> IO ()++foreign import ccall "dtrsm_"+ trsm :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Double -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> IO ()++foreign import ccall "dtrsv_"+ trsv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr Double -> Ptr CInt -> Ptr Double -> Ptr CInt -> IO ()
+ src/Numeric/BLAS/FFI/Float.hs view
@@ -0,0 +1,112 @@+-- Do not edit! Automatically generated by create-lapack-ffi.+{-# LANGUAGE ForeignFunctionInterface #-}+module Numeric.BLAS.FFI.Float where++import Foreign.Ptr (Ptr)+import Foreign.C.Types+++foreign import ccall "sasum_"+ asum :: Ptr CInt -> Ptr Float -> Ptr CInt -> IO Float++foreign import ccall "saxpy_"+ axpy :: Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> IO ()++foreign import ccall "scopy_"+ copy :: Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> IO ()++foreign import ccall "sdot_"+ dot :: Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> IO Float++foreign import ccall "sdsdot_"+ dsdot :: Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> IO Float++foreign import ccall "sgbmv_"+ gbmv :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> IO ()++foreign import ccall "sgemm_"+ gemm :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> IO ()++foreign import ccall "sgemv_"+ gemv :: 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 "sger_"+ ger :: Ptr CInt -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> IO ()++foreign import ccall "isamax_"+ iamax :: Ptr CInt -> Ptr Float -> Ptr CInt -> IO CInt++foreign import ccall "snrm2_"+ nrm2 :: Ptr CInt -> Ptr Float -> Ptr CInt -> IO Float++foreign import ccall "srot_"+ rot :: Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr Float -> IO ()++foreign import ccall "srotg_"+ rotg :: Ptr Float -> Ptr Float -> Ptr Float -> Ptr Float -> IO ()++foreign import ccall "srotm_"+ rotm :: Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> IO ()++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 ()++foreign import ccall "ssyrk_"+ syrk :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> IO ()++foreign import ccall "stbmv_"+ tbmv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> IO ()++foreign import ccall "stbsv_"+ tbsv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> IO ()++foreign import ccall "stpmv_"+ tpmv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> IO ()++foreign import ccall "stpsv_"+ tpsv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> IO ()++foreign import ccall "strmm_"+ trmm :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> IO ()++foreign import ccall "strmv_"+ trmv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> IO ()++foreign import ccall "strsm_"+ trsm :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr Float -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> IO ()++foreign import ccall "strsv_"+ trsv :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr Float -> Ptr CInt -> Ptr Float -> Ptr CInt -> IO ()
+ src/Numeric/BLAS/FFI/Generic.hs view
@@ -0,0 +1,147 @@+-- Do not edit! Automatically generated by create-lapack-ffi.+module Numeric.BLAS.FFI.Generic (+ axpy,+ copy,+ gbmv,+ gemm,+ gemv,+ iamax,+ scal,+ swap,+ symm,+ syr2k,+ syrk,+ tbmv,+ tbsv,+ tpmv,+ tpsv,+ trmm,+ trmv,+ trsm,+ trsv,+ ) where++import qualified Numeric.BLAS.FFI.ComplexFloat as C+import qualified Numeric.BLAS.FFI.ComplexDouble as Z+import qualified Numeric.BLAS.FFI.Float as S+import qualified Numeric.BLAS.FFI.Double as D++import qualified Numeric.Netlib.Class as Class++import Foreign.Ptr (Ptr)+import Foreign.C.Types++++newtype AXPY a = AXPY {getAXPY :: Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++axpy :: Class.Floating a => Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+axpy = getAXPY $ Class.switchFloating (AXPY S.axpy) (AXPY D.axpy) (AXPY C.axpy) (AXPY Z.axpy)+++newtype COPY a = COPY {getCOPY :: Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++copy :: Class.Floating a => Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+copy = getCOPY $ Class.switchFloating (COPY S.copy) (COPY D.copy) (COPY C.copy) (COPY Z.copy)+++newtype GBMV a = GBMV {getGBMV :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++gbmv :: Class.Floating a => Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()+gbmv = getGBMV $ Class.switchFloating (GBMV S.gbmv) (GBMV D.gbmv) (GBMV C.gbmv) (GBMV Z.gbmv)+++newtype GEMM a = GEMM {getGEMM :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++gemm :: Class.Floating a => Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()+gemm = getGEMM $ Class.switchFloating (GEMM S.gemm) (GEMM D.gemm) (GEMM C.gemm) (GEMM Z.gemm)+++newtype GEMV a = GEMV {getGEMV :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++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 IAMAX a = IAMAX {getIAMAX :: Ptr CInt -> Ptr a -> Ptr CInt -> IO CInt}++iamax :: Class.Floating a => Ptr CInt -> Ptr a -> Ptr CInt -> IO CInt+iamax = getIAMAX $ Class.switchFloating (IAMAX S.iamax) (IAMAX D.iamax) (IAMAX C.iamax) (IAMAX Z.iamax)+++newtype SCAL a = SCAL {getSCAL :: Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++scal :: Class.Floating a => Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()+scal = getSCAL $ Class.switchFloating (SCAL S.scal) (SCAL D.scal) (SCAL C.scal) (SCAL Z.scal)+++newtype SWAP a = SWAP {getSWAP :: Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++swap :: Class.Floating a => Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+swap = getSWAP $ Class.switchFloating (SWAP S.swap) (SWAP D.swap) (SWAP C.swap) (SWAP Z.swap)+++newtype SYMM a = SYMM {getSYMM :: 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 :: 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 ()+symm = getSYMM $ Class.switchFloating (SYMM S.symm) (SYMM D.symm) (SYMM C.symm) (SYMM Z.symm)+++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 ()}++syr2k :: 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 ()+syr2k = getSYR2K $ Class.switchFloating (SYR2K S.syr2k) (SYR2K D.syr2k) (SYR2K C.syr2k) (SYR2K Z.syr2k)+++newtype SYRK a = SYRK {getSYRK :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++syrk :: Class.Floating a => Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()+syrk = getSYRK $ Class.switchFloating (SYRK S.syrk) (SYRK D.syrk) (SYRK C.syrk) (SYRK Z.syrk)+++newtype TBMV a = TBMV {getTBMV :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++tbmv :: Class.Floating a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+tbmv = getTBMV $ Class.switchFloating (TBMV S.tbmv) (TBMV D.tbmv) (TBMV C.tbmv) (TBMV Z.tbmv)+++newtype TBSV a = TBSV {getTBSV :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++tbsv :: Class.Floating a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+tbsv = getTBSV $ Class.switchFloating (TBSV S.tbsv) (TBSV D.tbsv) (TBSV C.tbsv) (TBSV Z.tbsv)+++newtype TPMV a = TPMV {getTPMV :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++tpmv :: Class.Floating a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()+tpmv = getTPMV $ Class.switchFloating (TPMV S.tpmv) (TPMV D.tpmv) (TPMV C.tpmv) (TPMV Z.tpmv)+++newtype TPSV a = TPSV {getTPSV :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++tpsv :: Class.Floating a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()+tpsv = getTPSV $ Class.switchFloating (TPSV S.tpsv) (TPSV D.tpsv) (TPSV C.tpsv) (TPSV Z.tpsv)+++newtype TRMM a = TRMM {getTRMM :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++trmm :: Class.Floating a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+trmm = getTRMM $ Class.switchFloating (TRMM S.trmm) (TRMM D.trmm) (TRMM C.trmm) (TRMM Z.trmm)+++newtype TRMV a = TRMV {getTRMV :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++trmv :: Class.Floating a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+trmv = getTRMV $ Class.switchFloating (TRMV S.trmv) (TRMV D.trmv) (TRMV C.trmv) (TRMV Z.trmv)+++newtype TRSM a = TRSM {getTRSM :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++trsm :: Class.Floating a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+trsm = getTRSM $ Class.switchFloating (TRSM S.trsm) (TRSM D.trsm) (TRSM C.trsm) (TRSM Z.trsm)+++newtype TRSV a = TRSV {getTRSV :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++trsv :: Class.Floating a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+trsv = getTRSV $ Class.switchFloating (TRSV S.trsv) (TRSV D.trsv) (TRSV C.trsv) (TRSV Z.trsv)
+ src/Numeric/BLAS/FFI/Miscellaneous.hs view
@@ -0,0 +1,10 @@+-- Do not edit! Automatically generated by create-lapack-ffi.+{-# LANGUAGE ForeignFunctionInterface #-}+module Numeric.BLAS.FFI.Miscellaneous where++import Foreign.Ptr (Ptr)+import Foreign.C.Types+++foreign import ccall "lsame_"+ lsame :: Ptr CChar -> Ptr CChar -> IO Bool
+ src/Numeric/BLAS/FFI/Real.hs view
@@ -0,0 +1,250 @@+-- Do not edit! Automatically generated by create-lapack-ffi.+module Numeric.BLAS.FFI.Real (+ asum,+ axpy,+ copy,+ dot,+ gbmv,+ gemm,+ gemv,+ ger,+ iamax,+ nrm2,+ rot,+ rotg,+ rotm,+ rotmg,+ sbmv,+ scal,+ spmv,+ spr,+ spr2,+ swap,+ symm,+ symv,+ syr,+ syr2,+ syr2k,+ syrk,+ tbmv,+ tbsv,+ tpmv,+ tpsv,+ trmm,+ trmv,+ trsm,+ trsv,+ ) where++import qualified Numeric.BLAS.FFI.Float as S+import qualified Numeric.BLAS.FFI.Double as D++import qualified Numeric.Netlib.Class as Class++import Foreign.Ptr (Ptr)+import Foreign.C.Types++++newtype ASUM a = ASUM {getASUM :: Ptr CInt -> Ptr a -> Ptr CInt -> IO a}++asum :: Class.Real a => Ptr CInt -> Ptr a -> Ptr CInt -> IO a+asum = getASUM $ Class.switchReal (ASUM S.asum) (ASUM D.asum)+++newtype AXPY a = AXPY {getAXPY :: Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++axpy :: Class.Real a => Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+axpy = getAXPY $ Class.switchReal (AXPY S.axpy) (AXPY D.axpy)+++newtype COPY a = COPY {getCOPY :: Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++copy :: Class.Real a => Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+copy = getCOPY $ Class.switchReal (COPY S.copy) (COPY D.copy)+++newtype DOT a = DOT {getDOT :: Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO a}++dot :: Class.Real a => Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO a+dot = getDOT $ Class.switchReal (DOT S.dot) (DOT D.dot)+++newtype GBMV a = GBMV {getGBMV :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++gbmv :: Class.Real a => Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()+gbmv = getGBMV $ Class.switchReal (GBMV S.gbmv) (GBMV D.gbmv)+++newtype GEMM a = GEMM {getGEMM :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++gemm :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()+gemm = getGEMM $ Class.switchReal (GEMM S.gemm) (GEMM D.gemm)+++newtype GEMV a = GEMV {getGEMV :: Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++gemv :: 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 ()+gemv = getGEMV $ Class.switchReal (GEMV S.gemv) (GEMV D.gemv)+++newtype GER a = GER {getGER :: Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++ger :: Class.Real a => Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+ger = getGER $ Class.switchReal (GER S.ger) (GER D.ger)+++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+iamax = getIAMAX $ Class.switchReal (IAMAX S.iamax) (IAMAX D.iamax)+++newtype NRM2 a = NRM2 {getNRM2 :: Ptr CInt -> Ptr a -> Ptr CInt -> IO a}++nrm2 :: Class.Real a => Ptr CInt -> Ptr a -> Ptr CInt -> IO a+nrm2 = getNRM2 $ Class.switchReal (NRM2 S.nrm2) (NRM2 D.nrm2)+++newtype ROT a = ROT {getROT :: Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> IO ()}++rot :: Class.Real a => Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> IO ()+rot = getROT $ Class.switchReal (ROT S.rot) (ROT D.rot)+++newtype ROTG a = ROTG {getROTG :: Ptr a -> Ptr a -> Ptr a -> Ptr a -> IO ()}++rotg :: Class.Real a => Ptr a -> Ptr a -> Ptr a -> Ptr a -> IO ()+rotg = getROTG $ Class.switchReal (ROTG S.rotg) (ROTG D.rotg)+++newtype ROTM a = ROTM {getROTM :: Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> IO ()}++rotm :: Class.Real a => Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> IO ()+rotm = getROTM $ Class.switchReal (ROTM S.rotm) (ROTM D.rotm)+++newtype ROTMG a = ROTMG {getROTMG :: Ptr a -> Ptr a -> Ptr a -> Ptr a -> Ptr a -> IO ()}++rotmg :: Class.Real a => Ptr a -> Ptr a -> Ptr a -> Ptr a -> Ptr a -> IO ()+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 ()+swap = getSWAP $ Class.switchReal (SWAP S.swap) (SWAP D.swap)+++newtype SYMM a = SYMM {getSYMM :: 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 :: 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 ()}++syr2k :: 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 ()+syr2k = getSYR2K $ Class.switchReal (SYR2K S.syr2k) (SYR2K D.syr2k)+++newtype SYRK a = SYRK {getSYRK :: Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++syrk :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()+syrk = getSYRK $ Class.switchReal (SYRK S.syrk) (SYRK D.syrk)+++newtype TBMV a = TBMV {getTBMV :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++tbmv :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+tbmv = getTBMV $ Class.switchReal (TBMV S.tbmv) (TBMV D.tbmv)+++newtype TBSV a = TBSV {getTBSV :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++tbsv :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+tbsv = getTBSV $ Class.switchReal (TBSV S.tbsv) (TBSV D.tbsv)+++newtype TPMV a = TPMV {getTPMV :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++tpmv :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()+tpmv = getTPMV $ Class.switchReal (TPMV S.tpmv) (TPMV D.tpmv)+++newtype TPSV a = TPSV {getTPSV :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()}++tpsv :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> IO ()+tpsv = getTPSV $ Class.switchReal (TPSV S.tpsv) (TPSV D.tpsv)+++newtype TRMM a = TRMM {getTRMM :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++trmm :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+trmm = getTRMM $ Class.switchReal (TRMM S.trmm) (TRMM D.trmm)+++newtype TRMV a = TRMV {getTRMV :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++trmv :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+trmv = getTRMV $ Class.switchReal (TRMV S.trmv) (TRMV D.trmv)+++newtype TRSM a = TRSM {getTRSM :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++trsm :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr CInt -> Ptr a -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+trsm = getTRSM $ Class.switchReal (TRSM S.trsm) (TRSM D.trsm)+++newtype TRSV a = TRSV {getTRSV :: Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()}++trsv :: Class.Real a => Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CInt -> Ptr a -> Ptr CInt -> Ptr a -> Ptr CInt -> IO ()+trsv = getTRSV $ Class.switchReal (TRSV S.trsv) (TRSV D.trsv)