eigen-hhlo-0.1.0.0: src/EigenHHLO/Core/BackendConfig.hs
{-# LANGUAGE OverloadedStrings #-}
-- | Build opaque 'backend_config' strings for XLA custom calls.
module EigenHHLO.Core.BackendConfig
( svdConfig
, qrConfig
, eigConfig
, cholConfig
, luConfig
) where
import Data.Text (Text)
import qualified Data.Text as T
-- | Build backend_config string for SVD.
svdConfig :: Integer -> Integer -> Char -> Char -> Text
svdConfig m n jobu jobvt = T.intercalate "," $
[ "m=" <> T.pack (show m)
, "n=" <> T.pack (show n)
, "jobu=" <> T.pack [jobu]
, "jobvt=" <> T.pack [jobvt]
]
-- | Build backend_config string for QR factorization.
qrConfig :: Integer -> Integer -> Text
qrConfig m n = T.intercalate "," $
[ "m=" <> T.pack (show m)
, "n=" <> T.pack (show n)
]
-- | Build backend_config string for symmetric eigenvalue.
eigConfig :: Integer -> Char -> Text
eigConfig n uplo = T.intercalate "," $
[ "n=" <> T.pack (show n)
, "uplo=" <> T.pack [uplo]
]
-- | Build backend_config string for Cholesky.
cholConfig :: Integer -> Char -> Text
cholConfig n uplo = T.intercalate "," $
[ "n=" <> T.pack (show n)
, "uplo=" <> T.pack [uplo]
]
-- | Build backend_config string for LU.
luConfig :: Integer -> Integer -> Text
luConfig m n = T.intercalate "," $
[ "m=" <> T.pack (show m)
, "n=" <> T.pack (show n)
]