{-# LANGUAGE DataKinds, FlexibleContexts, FlexibleInstances, GADTs #-} {-# LANGUAGE MultiParamTypeClasses, OverloadedStrings, PolyKinds, QuasiQuotes #-} {-# LANGUAGE TemplateHaskell, UndecidableInstances, DataKinds, NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-type-defaults -fno-warn-orphans #-} import Algebra.Algorithms.Groebner import Algebra.Prelude import Control.DeepSeq import Control.Parallel.Strategies import Criterion.Main i1, i2, i4 :: [OrderedPolynomial (Fraction Integer) Grevlex 3] (i1, i2, i4) = ([x^2 + y^2 + z^2 - 1, x^2 + y^2 + z^2 - 2*x, 2*x -3*y - z], [x^2 * y - 2*x*y - 4*z - 1, z-y^2, x^3 - 4*z*y], [ z^5 + y^4 + x^3 - 1, z^3 + y^3 + x^2 - 1] ) where [x,y,z] = vars i3 :: [OrderedPolynomial Rational Grevlex 6] i3 = [ 2 * s - a * y, b^2 - (x^2 + y^2), c^2 - ( (a-x) ^ 2 + y^2)] where [x,y,s,a,b,c] = vars main :: IO () main = do defaultMain $ [ env (return $! toIdeal $ map (changeOrder Lex) i1) $ \ ~ideal -> bgroup "lex01" [ bench "simple" $ nf simpleBuchberger ideal , bench "relprime" $ nf primeTestBuchberger ideal , bench "syzygy" $ nf (syzygyBuchbergerWithStrategy NormalStrategy) ideal , bench "syz+sugar" $ nf syzygyBuchberger ideal ] , env (return $! toIdeal $ map (changeOrder Grlex) i1) $ \ ~ideal -> bgroup "grlex01" [ bench "simple" $ nf simpleBuchberger ideal , bench "relprime" $ nf primeTestBuchberger ideal , bench "syzygy" $ nf (syzygyBuchbergerWithStrategy NormalStrategy) ideal , bench "syz+sugar" $ nf syzygyBuchberger ideal ] , env (return $! toIdeal $ map (changeOrder Grevlex) i1) $ \ ~ideal -> bgroup "grevlex01" [ bench "simple" $ nf simpleBuchberger ideal , bench "relprime" $ nf primeTestBuchberger ideal , bench "syzygy" $ nf (syzygyBuchbergerWithStrategy NormalStrategy) ideal , bench "syz+sugar" $ nf syzygyBuchberger ideal ] , env (return $! toIdeal $ map (changeOrder Grlex) i2) $ \ ~ideal -> bgroup "grlex02" [ bench "simple" $ nf simpleBuchberger ideal , bench "relprime" $ nf primeTestBuchberger ideal , bench "syzygy" $ nf (syzygyBuchbergerWithStrategy NormalStrategy) ideal , bench "syz+sugar" $ nf syzygyBuchberger ideal ] , env (return $! toIdeal $ map (changeOrder Grevlex) i2) $ \ ~ideal -> bgroup "grevlex02" [ bench "simple" $ nf simpleBuchberger ideal , bench "relprime" $ nf primeTestBuchberger ideal , bench "syzygy" $ nf (syzygyBuchbergerWithStrategy NormalStrategy) ideal , bench "syz+sugar" $ nf syzygyBuchberger ideal -- -- , bench "singular" $ nfIO (singularWith Grevlex ideal) ] , env (return $! toIdeal $ map (changeOrder Lex) i3) $ \ ~ideal -> bgroup "lex03" [ bench "simple" $ nf simpleBuchberger ideal , bench "relprime" $ nf primeTestBuchberger ideal , bench "syzygy" $ nf (syzygyBuchbergerWithStrategy NormalStrategy) ideal , bench "syz+sugar" $ nf syzygyBuchberger ideal -- -- , bench "singular" $ nfIO (singularWith Grevlex ideal) ] , env (return $! toIdeal $ map (changeOrder Grlex) i3) $ \ ~ideal -> bgroup "grlex03" [ bench "simple" $ nf simpleBuchberger ideal , bench "relprime" $ nf primeTestBuchberger ideal , bench "syzygy" $ nf (syzygyBuchbergerWithStrategy NormalStrategy) ideal , bench "syz+sugar" $ nf syzygyBuchberger ideal -- -- , bench "singular" $ nfIO (singularWith Grevlex ideal) ] , env (return $! toIdeal $ map (changeOrder Grevlex) i3) $ \ ~ideal -> bgroup "grevlex03" [ bench "simple" $ nf simpleBuchberger ideal , bench "relprime" $ nf primeTestBuchberger ideal , bench "syzygy" $ nf (syzygyBuchbergerWithStrategy NormalStrategy) ideal , bench "syz+sugar" $ nf syzygyBuchberger ideal -- -- , bench "singular" $ nfIO (singularWith Grevlex ideal) ] , env (return $! toIdeal $ map (changeOrder Grlex) i4) $ \ ~ideal -> bgroup "grlex04" [ bench "simple" $ nf simpleBuchberger ideal , bench "relprime" $ nf primeTestBuchberger ideal , bench "syzygy" $ nf (syzygyBuchbergerWithStrategy NormalStrategy) ideal , bench "syz+sugar" $ nf syzygyBuchberger ideal -- -- , bench "singular" $ nfIO (singularWith Grevlex ideal) ] , env (return $! toIdeal $ map (changeOrder Grevlex) i4) $ \ ~ideal -> bgroup "grevlex04" [ bench "simple" $ nf simpleBuchberger ideal , bench "relprime" $ nf primeTestBuchberger ideal , bench "syzygy" $ nf (syzygyBuchbergerWithStrategy NormalStrategy) ideal , bench "syz+sugar" $ nf syzygyBuchberger ideal -- -- , bench "singular" $ nfIO (singularWith Grevlex ideal) ] ]