-- Do not edit! Automatically generated by create-lapack-ffi.
module Numeric.LAPACK.ComfortArray.Miscellaneous where

import qualified Numeric.LAPACK.FFI.Miscellaneous as FFI
import qualified Numeric.Netlib.ComfortArray.Utility as Call

import Foreign.C.Types (CInt, CChar)

import Control.Monad.Trans.Cont (evalContT)
import Control.Monad.IO.Class (liftIO)


-- | <http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/chla_transtype.f>
chla_transtype ::
   Int {- ^ trans -} ->
   IO CChar
chla_transtype :: Int -> IO CChar
chla_transtype Int
trans = do
   ContT CChar IO CChar -> IO CChar
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT CChar IO CChar -> IO CChar)
-> ContT CChar IO CChar -> IO CChar
forall a b. (a -> b) -> a -> b
$ do
      Ptr CInt
transPtr <- Int -> FortranIO CChar (Ptr CInt)
forall r. Int -> FortranIO r (Ptr CInt)
Call.cint Int
trans
      IO CChar -> ContT CChar IO CChar
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO CChar -> ContT CChar IO CChar)
-> IO CChar -> ContT CChar IO CChar
forall a b. (a -> b) -> a -> b
$ Ptr CInt -> IO CChar
FFI.chla_transtype Ptr CInt
transPtr

-- | <http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/ieeeck.f>
ieeeck ::
   Int {- ^ ispec -} ->
   Float {- ^ zero -} ->
   Float {- ^ one -} ->
   IO CInt
ieeeck :: Int -> Float -> Float -> IO CInt
ieeeck Int
ispec Float
zero Float
one = do
   ContT CInt IO CInt -> IO CInt
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT CInt IO CInt -> IO CInt) -> ContT CInt IO CInt -> IO CInt
forall a b. (a -> b) -> a -> b
$ do
      Ptr CInt
ispecPtr <- Int -> FortranIO CInt (Ptr CInt)
forall r. Int -> FortranIO r (Ptr CInt)
Call.cint Int
ispec
      Ptr Float
zeroPtr <- Float -> FortranIO CInt (Ptr Float)
forall r. Float -> FortranIO r (Ptr Float)
Call.float Float
zero
      Ptr Float
onePtr <- Float -> FortranIO CInt (Ptr Float)
forall r. Float -> FortranIO r (Ptr Float)
Call.float Float
one
      IO CInt -> ContT CInt IO CInt
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO CInt -> ContT CInt IO CInt) -> IO CInt -> ContT CInt IO CInt
forall a b. (a -> b) -> a -> b
$ Ptr CInt -> Ptr Float -> Ptr Float -> IO CInt
FFI.ieeeck Ptr CInt
ispecPtr Ptr Float
zeroPtr Ptr Float
onePtr

-- | <http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/iladiag.f>
ladiag ::
   Char {- ^ diag -} ->
   IO CInt
ladiag :: Char -> IO CInt
ladiag Char
diag = do
   ContT CInt IO CInt -> IO CInt
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT CInt IO CInt -> IO CInt) -> ContT CInt IO CInt -> IO CInt
forall a b. (a -> b) -> a -> b
$ do
      Ptr CChar
diagPtr <- Char -> FortranIO CInt (Ptr CChar)
forall r. Char -> FortranIO r (Ptr CChar)
Call.char Char
diag
      IO CInt -> ContT CInt IO CInt
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO CInt -> ContT CInt IO CInt) -> IO CInt -> ContT CInt IO CInt
forall a b. (a -> b) -> a -> b
$ Ptr CChar -> IO CInt
FFI.ladiag Ptr CChar
diagPtr

-- | <http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/ilaprec.f>
laprec ::
   Char {- ^ prec -} ->
   IO CInt
laprec :: Char -> IO CInt
laprec Char
prec = do
   ContT CInt IO CInt -> IO CInt
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT CInt IO CInt -> IO CInt) -> ContT CInt IO CInt -> IO CInt
forall a b. (a -> b) -> a -> b
$ do
      Ptr CChar
precPtr <- Char -> FortranIO CInt (Ptr CChar)
forall r. Char -> FortranIO r (Ptr CChar)
Call.char Char
prec
      IO CInt -> ContT CInt IO CInt
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO CInt -> ContT CInt IO CInt) -> IO CInt -> ContT CInt IO CInt
forall a b. (a -> b) -> a -> b
$ Ptr CChar -> IO CInt
FFI.laprec Ptr CChar
precPtr

-- | <http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/ilatrans.f>
latrans ::
   Char {- ^ trans -} ->
   IO CInt
latrans :: Char -> IO CInt
latrans Char
trans = do
   ContT CInt IO CInt -> IO CInt
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT CInt IO CInt -> IO CInt) -> ContT CInt IO CInt -> IO CInt
forall a b. (a -> b) -> a -> b
$ do
      Ptr CChar
transPtr <- Char -> FortranIO CInt (Ptr CChar)
forall r. Char -> FortranIO r (Ptr CChar)
Call.char Char
trans
      IO CInt -> ContT CInt IO CInt
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO CInt -> ContT CInt IO CInt) -> IO CInt -> ContT CInt IO CInt
forall a b. (a -> b) -> a -> b
$ Ptr CChar -> IO CInt
FFI.latrans Ptr CChar
transPtr

-- | <http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/ilauplo.f>
lauplo ::
   Char {- ^ uplo -} ->
   IO CInt
lauplo :: Char -> IO CInt
lauplo Char
uplo = do
   ContT CInt IO CInt -> IO CInt
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT CInt IO CInt -> IO CInt) -> ContT CInt IO CInt -> IO CInt
forall a b. (a -> b) -> a -> b
$ do
      Ptr CChar
uploPtr <- Char -> FortranIO CInt (Ptr CChar)
forall r. Char -> FortranIO r (Ptr CChar)
Call.char Char
uplo
      IO CInt -> ContT CInt IO CInt
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO CInt -> ContT CInt IO CInt) -> IO CInt -> ContT CInt IO CInt
forall a b. (a -> b) -> a -> b
$ Ptr CChar -> IO CInt
FFI.lauplo Ptr CChar
uploPtr