singular-factory-0.1: src/Math/Singular/Factory.hs
{- |
Haskell bindings to the Singular-Factory multivariate polynomial factorization engine.
Singular is a computer algebra system developed at the University of Kaiserslautern,
and Factory is the polynomial factorization engine of Singular.
It handles multivariate polynomials over the integers, rationals, and finite fields
(and also algebraic and trancendental extensions of these, but those are not yet
supported).
Links:
* Singular: https://www.singular.uni-kl.de/
* Factory: https://www.singular.uni-kl.de/dox/html/factory_page.html
-}
module Math.Singular.Factory
( -- * Initialization
initialize
-- * Configuration
, factoryVersion
, factoryConfig , FactoryConfig(..)
, printVersion
, printConfig
-- * Re-exported modules
, module Math.Singular.Factory.Domains
, module Math.Singular.Factory.Variables
, module Math.Singular.Factory.Polynomial
)
where
--------------------------------------------------------------------------------
import Math.Singular.Factory.Domains
import Math.Singular.Factory.Variables
import Math.Singular.Factory.Polynomial
import Math.Singular.Factory.GFTables
import Math.Singular.Factory.Internal.Factory
import Math.Singular.Factory.Internal.CanonicalForm
--------------------------------------------------------------------------------
-- | You are supposed to call 'initialize' before doing anything
-- (though factorization over characteristic zeros should work without it)
initialize = do
initGFTables
setDefaultSwitches
--------------------------------------------------------------------------------
data FactoryConfig = FactoryConfig
{ withFLINT :: Bool
, withNTL :: Bool
, withGMP :: Bool
}
deriving (Eq,Show)
factoryConfig :: FactoryConfig
factoryConfig = FactoryConfig
{ withFLINT = haveFLINT
, withNTL = haveNTL
, withGMP = haveGMP
}
--------------------------------------------------------------------------------
-- | Prints factory\'s version
printVersion = do
putStrLn $ "factory version = " ++ factoryVersion
-- | Prints some more detailed configuration info
printConfig = do
putStrLn $ "factory version = " ++ factoryVersion
putStrLn $ "package version = " ++ packageVersion
mb_gftables <- getGFTablesDir
putStrLn $ "gftables folder = " ++ show mb_gftables
putStrLn $ "have FLINT = " ++ show haveFLINT
putStrLn $ "have NTL = " ++ show haveNTL
putStrLn $ "have GMP = " ++ show haveGMP
--------------------------------------------------------------------------------