Ritt-Wu-0.1.0.0: bench/Benchmarking.hs
module Main(main) where
import Criterion.Main
import Prelude as P
import Polynomial.Monomial
import Polynomial.Wu
import Polynomial.Polynomial
import Data.Massiv.Array as A
a33 = p[tp 1 [2][4], tp 1 [1,2,3][1,2,1], t 1 [2], t (-2)[1,1], tp 1 [2][1], tp 1 [3][2] ] :: Poly Rational Revlex
a34 = p[tp 1 [1,2][1,4], tp 1 [2,3][1,4], t (-2) [2,1], t (-3) []]:: Poly Rational Revlex
a35 = p[t (-1) [3,2], t 1 [1,1,3], tp 1 [2][4], t 1 [1,2,1], t (-2)[1,1]]:: Poly Rational Revlex
ps9 = parps [a33,a34,a35]
--import Polynomial.Terms
main :: IO ()
main
--Example 1 book calculator
= do
let f1 = p [tp 1 [2] [2], t (-1) [1, 1], t (-1) []] :: Poly Rational Revlex
f2 = p [t 1 [2], tp (-2) [3] [1]] :: Poly Rational Revlex
f3 = p [tp 1 [3] [2], t (-1) [1, 1], t 1 []] :: Poly Rational Revlex
ps1 = parps [f2,f1, f3]
-- --------------------------------------------------
-- -- example 6.1 pag 15 (Wang 2004, Epsilon-A14)
a6 =
p [tp 1 [2] [2], tp 1 [3] [2], tp 1 [4] [2], t (-1) [2]] :: Poly Rational Revlex
a7 =
p [tp 1 [2, 3] [1, 1], tp 1 [4] [2], t (-1) []] :: Poly Rational Revlex
a8 =
p
[ tp 1 [2, 3, 4] [1, 1, 1]
, tp (-1) [2] [2]
, tp (-1) [3] [2]
, tp (-1) [4] [1]
, t 1 []
] :: Poly Rational Revlex
ps2' = a6 : a7 : a8 : []
ps2 = parps ps2'
-- http://symbolicdata.org/XMLResources/IntPS/DiscrC2.xml
a9 =
p
[ tp 1 [1, 10] [2, 1]
, tp 2 [1, 2, 11] [1, 1, 1]
, tp 3 [2, 12] [2, 1]
, tp 1 [1, 4] [1, 1]
, tp 2 [2, 5] [1, 1]
, tp 1 [7] [1]
] :: Poly Rational Revlex
a10 =
p
[ tp 3 [1, 9] [2, 1]
, tp 2 [1, 2, 10] [1, 1, 1]
, tp 1 [2, 11] [2, 1]
, tp 2 [1, 3] [1, 1]
, tp 1 [2, 4] [1, 1]
, tp 1 [6] [1]
] :: Poly Rational Revlex
a11 =
p
[ tp 1 [1, 9] [3, 1]
, tp 1 [1, 2, 10] [2, 1, 1]
, tp 1 [1, 2, 11] [1, 2, 1]
, tp 1 [2, 12] [3, 1]
, tp 1 [1, 3] [2, 1]
, tp 1 [1, 2, 4] [1, 1, 1]
, tp 1 [2, 5] [2, 1]
, tp 1 [1, 6] [1, 1]
, tp 1 [2, 7] [1, 1]
, tp 1 [8] [1]
] :: Poly Rational Revlex
ps3' = a9 : a10 : a11 : []
ps3 = parps ps3'
---------------------------------------------------
-- http://symbolicdata.org/XMLResources/IntPS/Schiele_1.xml
a12 = p [ tp 1 [1,2,3][2,4,1], tp 1 [1,2][2,4], tp 2 [1,2,3][2,2,1], tp 6 [1,2][2,2], tp (-4) [1,2][1,3], tp 1 [2,3][4,1], tp (-1) [2][4], tp 1 [1,3][2,1], tp 1 [1][2], tp 4 [1,2][1,1], tp 2 [2,3][2,1], tp (-6) [2][2], tp 1 [3][1], t (-1) []
] :: Poly Rational Revlex
a13 = p [ tp 1 [1,2,3][8,3,1], tp 1 [1,2,3][8,1,1], tp 4 [1,2,3][6,3,1], tp (-8) [1,2][6,3], tp 8 [1,2][5,4], tp 4 [1,2,3][6,1,1], tp 8 [1,2][6,1], tp (-48) [1,2][5,2], tp 6 [1,2,3][4,3,1], tp 48 [1,2][4,3], tp (-8) [1,2][3,4], tp 8 [1][5], tp 6 [1,2,3][4,1,1], tp (-48) [1,2][4,1], tp (48) [1,2][3,2], tp 4 [1,2,3][2,3,1], tp (-8) [1,2][2,3], tp (-8) [1][3], tp 4 [1,2,3][2,1,1], tp (8) [1,2][2,1], tp (1) [2,3][3,1], tp 1 [2,3][1,1]
] :: Poly Rational Revlex
ps4 = parps [a12,a13]
--------------------------------------------------
-- http://symbolicdata.org/XMLResources/IntPS/Trinks.xml
a14 = p[ tp 35 [2][1], tp 40 [3][1], tp 25 [4][1], tp (-27) [5][1]] :: Poly Rational Revlex
a15 = p[ tp 45 [2][1], tp 35 [5][1], tp (-165) [6][1], t (-36) []] :: Poly Rational Revlex
a16 = p[ tp (-11)[5,6][1,1], tp (3)[6][2],tp (99) [1][1] ] :: Poly Rational Revlex
a17 = p[ tp 25 [2,5][1,1], tp (-165)[6][2], tp (15) [1][1], tp 30 [3][1], tp (-18) [4][1] ] :: Poly Rational Revlex
a18 = p[ tp 15 [2,4][1,1], tp 20 [3,5][1,1], tp (-9) [1][1]] :: Poly Rational Revlex
a19 = p[ tp (-11)[6][3], tp 1 [1,2][1,1], tp 2 [3,4][1,1] ] :: Poly Rational Revlex
ps5 = parps [a14,a15,a16,a17,a18,a19]
-- --------------------------------------------------
-- http://symbolicdata.org/XMLResources/IntPS/ZeroDim.example_14.xml
a20 = p[t (-4) [1], tp 1 [2][1], tp 1 [3][1], tp 1 [4][1]] :: Poly Rational Revlex
a21 = p[tp (-4) [1][2], tp 1 [2][2], tp 1 [3][2], tp 1 [4][2], tp 4 [1][1], tp 1 [2][1], tp 1 [3][1], tp 1 [4][1], t (-3) []] :: Poly Rational Revlex
a22 = p[tp (5) [1][3], tp 4 [3,4][2,1], tp 3 [2][2], tp 2 [1,4][1,1], tp 4 [1][1], tp 1 [2][1], tp 1 [3][1], tp 2 [4][1], t (-1) []] :: Poly Rational Revlex
a23 = p[tp 5 [3][4], tp 1 [4][3], tp 16 [1][2], tp 3 [2][2], tp (-4) [4][1], t (-1) []] :: Poly Rational Revlex
ps6 = parps [a20,a21,a22,a23]
--------------------------------------------------
-- http://symbolicdata.org/XMLResources/IntPS/Cyclic_5.xml
-- v,w,x,y,z
-- 1,2,3,4,5
a24 = p[tp 1 [1][1], tp 1 [2][1], tp 1 [3][1], tp 1 [4][1], tp 1 [5][1]] :: Poly Rational Revlex
a25 = p[tp 1 [1,2][1,1], tp 1 [2,3][1,1], tp 1 [3,4][1,1], tp 1 [1,5][1,1], tp 1 [4,5][1,1]] :: Poly Rational Revlex
a26 = p[tp 1 [1,2,3][1,1,1], tp 1 [2,3,4][1,1,1], tp 1 [1,2,5][1,1,1], tp 1 [1,4,5][1,1,1], tp 1 [3,4,5][1,1,1]] :: Poly Rational Revlex
a27 = p[tp 1 [1,2,3,4][1,1,1,1], tp 1 [1,2,3,5][1,1,1,1], tp 1 [1,2,4,5][1,1,1,1], tp 1 [1,3,4,5][1,1,1,1], tp 1 [2,3,4,5][1,1,1,1]] :: Poly Rational Revlex
a28 = p[t 1 [1,1,1,1,1], t (-1) []] :: Poly Rational Revlex
ps7 = parps [a24,a25,a26, a27, a28]
--------------------------------------------------
-- http://symbolicdata.org/XMLResources/IntPS/Fee_1.xml q,c,p,d a29 =
-- q,c,p,d
-- 1,2,3,4
a29 = p[tp (-2) [1,3][1,1], tp (-2) [3][2], tp (-2)[1][1], tp (8) [3][1], t (-2) []]:: Poly Rational Revlex
a30 = p[tp (-3)[1,2,3][1,1,1], tp (2) [1,3,4][1,1,1], tp (4)[3,4][2,1], tp (3)[2,3][1,1], tp 1 [1,4][1,1], tp (-7) [3,4][1,1]]:: Poly Rational Revlex
a31 = p[tp 1 [1,2][2,2], tp (-2)[1,2,4][2,1,1], t (-2) [1,1,1,1], tp 1 [1,4][2,2], tp 2 [1,3,4][1,1,2], tp 1 [3,4][2,2], tp (-2)[1,2][1,2], t (4) [1,1,1], tp 2 [1,2,4][1,1,1], tp 2 [2,3,4][1,1,1], tp (-4)[1,4][1,2], tp (-4) [3,4][1,2], tp 1 [2][2], tp 2 [1,3][1,1], tp 10 [3][2], tp (-4)[2,4][1,1], tp 4 [4][2], tp (-2)[1][1], tp (-8)[3][1], t 2 [] ]:: Poly Rational Revlex
a32 = p[t 3 [2,2], t 12 [1,1,1,1], tp (-3) [1,4][2,2], tp 6 [1,3,4][1,1,2], tp (-3) [3,4][2,2], tp (-6) [1,2][1,2], tp 12 [1,2,4][1,1,1], tp 12 [2,3,4][1,1,1], tp (-4) [1][2], tp 3 [2][2], tp 5 [3][2], tp (-12) [2,4][1,1], tp 12 [4][2], tp (-6) [3][1], t 5 [] ] :: Poly Rational Revlex
ps8 = parps [a29,a30,a31,a32]
--------------------------------------------------
-- http://symbolicdata.org/XMLResources/IntPS/Weispfenning-94.xml
a33 = p[tp 1 [2][4], tp 1 [1,2,3][1,2,1], t 1 [2], t (-2)[1,1], tp 1 [2][1], tp 1 [3][2] ] :: Poly Rational Revlex
a34 = p[tp 1 [1,2][1,4], tp 1 [2,3][1,4], t (-2) [2,1], t (-3) []]:: Poly Rational Revlex
a35 = p[t (-1) [3,2], t 1 [1,1,3], tp 1 [2][4], t 1 [1,2,1], t (-2)[1,1]]:: Poly Rational Revlex
ps9 = parps [a33,a34,a35]
--------------------------------------------------
-- http://symbolicdata.org/XMLResources/IntPS/Fateman.xml
a36 = p[t 2 [3], tp 2 [2][3], tp 2 [3][3], tp 1 [4][3]]:: Poly Rational Revlex
-- 6*p^4*q+4*p^3*q^2+2*p^2*q^3+4*p*q^4+6*p^4*r+8*p^3*q*r+4*p*q^3*r+6*q^4*r+4*p^3*r^2+4*q^3*r^2+2*p^2*r^3+4*p*q*r^3+2*q^2*r^3+4*p*r^4+4*q*r^4+3*p^4*s+4*p^3*q*s+2*p*q^3*s+3*q^4*s+4*p^3*r*s+4*q^3*r*s+2*p*r^3*s+2*q*r^3*s+3*r^4*s+p^3*s^2+q^3*s^2+r^3*s^2+p^2*s^3+2*p*q*s^3+q^2*s^3+2*p*r*s^3+2*q*r*s^3+r^2*s^3+p*s^4+q*s^4+r*s^4-s^5
a37 = p[]:: Poly Rational Revlex
a38 = p[t 2 [5], tp 2 [2][5], tp 2 [3][5], tp 1 [4][5]]:: Poly Rational Revlex
ps10 = parps [a36,a37,a38]
-- http://symbolicdata.org/XMLResources/IntPS/Sym3_5.xml
a39 = p[tp 1 [2,3][1,5], t 1 [1], t (-2)[] ]:: Poly Rational Revlex
a40 = p[tp 1 [1,3][5,1], tp 1 [2][1], t (-2)[]]:: Poly Rational Revlex
a41 = p[t 1 [1,5], tp 1 [3][1], t (-2) []]:: Poly Rational Revlex
ps11 = parps [a39,a40,a41]
-- http://symbolicdata.org/XMLResources/IntPS/Wu-90.xml -- no seguro 4
-- http://symbolicdata.org/XMLResources/IntPS/Cyclic_6.xml
a46 = p[tp 1 [1][1], tp 1 [2][1], tp 1 [3][1], tp 1 [4][1], tp 1 [5][1], tp 1 [6][1]] :: Poly Rational Revlex
a47 = p[tp 1 [1,2][1,1], tp 1 [2,3][1,1], tp 1 [3,4][1,1], tp 1 [4,5][1,1], tp 1 [1,6][1,1], tp 1 [5,6][1,1]] :: Poly Rational Revlex
a48 = p[tp 1 [1,2,3][1,1,1], tp 1 [2,3,4][1,1,1], tp 1[3,4,5][1,1,1], tp 1 [1,2,6][1,1,1], tp 1 [1,5,6][1,1,1], tp 1 [4,5,6][1,1,1]] :: Poly Rational Revlex
a49 = p[tp 1 [1,2,3,4][1,1,1,1], tp 1 [2,3,4,5][1,1,1,1], tp 1 [1,2,3,6][1,1,1,1], tp 1 [1,2,5,6][1,1,1,1], tp 1 [1,4,5,6][1,1,1,1], tp 1 [3,4,5,6][1,1,1,1]] :: Poly Rational Revlex
a50 = p[tp 1 [1,2,3,4,5][1,1,1,1,1], tp 1 [1,2,3,4,6][1,1,1,1,1], tp 1 [1,2,3,5,6][1,1,1,1,1], tp 1 [1,2,4,5,6][1,1,1,1,1], tp 1 [1,3,4,5,6][1,1,1,1,1], tp 1 [2,3,4,5,6][1,1,1,1,1]] :: Poly Rational Revlex
a51 = p[t 1 [1,1,1,1,1,1], t (-1) [] ] :: Poly Rational Revlex
ps13 = parps [a46,a47,a48,a49,a50,a51]
--http://symbolicdata.org/XMLResources/IntPS/Cyclic_5_1.xml
a52 = p [t 1 [1,1],tp 1 [2,3][1,1], tp 1 [3,4][1,1], tp 1 [1,5][1,1], tp 1 [4,5][1,1]] :: Poly Rational Revlex
a53 = p [tp 1 [1][1], tp 1 [2][1], tp 1 [3][1], tp 1 [4][1], tp 1 [5][1]] :: Poly Rational Revlex
a54 = p [tp 1 [1,2,3][1,1,1], tp 1 [2,3,4][1,1,1], tp 1 [1,2,5][1,1,1], tp 1 [1,4,5][1,1,1], tp 1 [3,4,5][1,1,1]] :: Poly Rational Revlex
a55 = p [t 1 [1,1,1,1], tp 1 [1,2,4,5][1,1,1,1], tp 1 [1,3,4,5][1,1,1,1], tp 1 [2,3,4,5][1,1,1,1], tp 1 [2,3,4][1,1,1] ] :: Poly Rational Revlex
a56 = p [ t 1 [1,1,1,1,1], t (-1) []] :: Poly Rational Revlex
ps14 = parps [a52, a53,a54,a55,a56]
--http://symbolicdata.org/XMLResources/IntPS/Cyclic_7_1.xml
a57 = p [tp 1 [1,2,3][2,1,1], tp 1 [1,2,3][1,2,1], tp 1 [1,2,3][1,1,2], tp 1 [1,1,1][1,1,1], tp 1 [1,2][1,1], tp 1 [1,3][1,1], tp 1 [2,3][1,1]] :: Poly Rational Revlex
a58 = p [tp 1 [1,2,3][2,2,1], tp 1 [1,2,3][1,2,2], tp 1 [1,2,3][2,1,1], t 1 [1,1,1], tp 1 [2,3][1,1], t 1 [1], tp 1 [3][1] ] :: Poly Rational Revlex
a59 = p [t 1 [2,2,2], t 1 [2,2,1], t 1 [1,2,1], t 1 [1,1,1], tp 1 [1,3][1,1], tp 1 [3][1], t 1 []] :: Poly Rational Revlex
ps15 = parps [a57, a58, a59]
-- http://symbolicdata.org/XMLResources/IntPS/Czapor-86a.xml
a60 = p [] :: Poly Rational Revlex
a61 = p [] :: Poly Rational Revlex
a62 = p [] :: Poly Rational Revlex
ps16 = parps [a60, a61, a62]
defaultMain
-- ********************************************
[ bgroup
"Computing CharSet"
[
-- bgroup
-- "SP1"
-- [
-- bench "nf" $ nf (charSetMSP) ps1
-- --bench "whnf" $ whnf (charSetMSP) ps1
-- ]
-- ,
-- bgroup
-- "PS1"
-- [bench "nf" $ nf (charSetMPS) ps1
-- --bench "nf" $ nf (A.sum) (fromLists' Par [[0,0,0,0,0],[0,1,2,3,4],[0,2,4,6,8]] :: Array U Ix2 Double)
-- --bench "whnf" $ whnf (charSetMPS) ps1
-- ]
-- ,
-- bgroup
-- "SP2"
-- [bench "nf" $ nf (charSetMSP) ps2
-- --bench "whnf" $ whnf (charSetMSP) ps2
-- ]
-- ,
-- bgroup
-- "PS2"
-- [bench "nf" $ nf (charSetMPS) ps2
-- -- bench "whnf" $ whnf (charSetMPS) ps2
-- ]
-- ,
-- bgroup
-- "SP3"
-- [bench "nf" $ nf (charSetMSP) ps3
-- --bench "whnf" $ whnf (charSetMSP) ps3
-- ]
-- ,
-- bgroup
-- "PS3"
-- [bench "nf" $ nf (charSetMPS) ps3
-- --bench "whnf" $ whnf (charSetMPS) ps3
-- ]
-- ,
-- bgroup
-- "SP4"
-- [bench "nf" $ nf (charSetMSP) ps4
-- --bench "whnf" $ whnf (charSetMSP) ps4
-- ]
-- ,
-- bgroup
-- "PS4"
-- [bench "nf" $ nf (charSetMPS) ps4
-- --bench "whnf" $ nf (charSetMPS) ps4
-- ]
-- ,
-- bgroup
-- "SP5"
-- [bench "nf" $ nf (charSetMSP) ps5
-- --bench "whnf" $ nf (charSetMSP) ps5
-- ]
-- ,
-- bgroup
-- "PS5"
-- [bench "nf" $ nf (charSetMPS) ps5
-- --bench "whnf" $ nf (charSetMPS) ps5
-- ]
-- ,
-- bgroup
-- "SP6"
-- [bench "nf" $ nf (charSetMSP) ps6
-- --bench "whnf" $ nf (charSetMSP) ps6
-- ]
-- ,
-- bgroup
-- "PS6"
-- [bench "nf" $ nf (charSetMPS) ps6
-- --bench "whnf" $ nf (charSetMPS) ps6
-- ]
-- ,
-- bgroup
-- "SP7"
-- [bench "nf" $ nf (charSetMSP) ps7
-- --bench "whnf" $ nf (charSetMSP) ps7
-- ]
-- ,
-- bgroup
-- "PS7"
-- [bench "nf" $ nf (charSetMPS) ps7
-- --bench "whnf" $ nf (charSetMPS) ps7
-- ]
-- ,
-- bgroup
-- "SP8"
-- [bench "nf" $ nf (charSetMSP) ps8
-- --bench "whnf" $ nf (charSetMSP) ps8
-- ]
-- ,
bgroup
"PS8"
[bench "nf" $ nf (charSetMPS) ps8
--bench "whnf" $ nf (charSetMPS) ps8
]
-- ,
-- bgroup
-- "SP9"
-- [bench "nf" $ nf (charSetMSP) ps11
-- --bench "whnf" $ nf (charSetMSP) ps11
-- ]
-- ,
-- bgroup
-- "PS9"
-- [bench "nf" $ nf (charSetMPS) ps11
-- --bench "whnf" $ nf (charSetMPS) ps11
-- ]
-- ,
-- bgroup
-- "SP10"
-- [bench "nf" $ nf (charSetMSP) ps13
-- --bench "whnf" $ nf (charSetMPS) ps13
-- ]
-- ,
-- bgroup
-- "PS10"
-- [bench "nf" $ nf (charSetMPS) ps13
-- --bench "nf" $ nf (charSetMPS) ps13
-- ]
-- ,
-- bgroup
-- "SP11"
-- [bench "nf" $ nf (charSetMSP) ps14
-- --bench "whnf" $ nf (charSetMPS) ps14
-- ]
-- ,
-- bgroup
-- "PS11"
-- [bench "nf" $ nf (charSetMPS) ps14
-- --bench "nf" $ nf (charSetMPS) ps14
-- ]
-- ,
-- bgroup
-- "SP12"
-- [bench "nf" $ nf (charSetMSP) ps15
-- --bench "whnf" $ nf (charSetMPS) ps15
-- ]
-- ,
-- bgroup
-- "PS12"
-- [bench "nf" $ nf (charSetMPS) ps15
-- --bench "nf" $ nf (charSetMPS) ps15
-- ]
]
]
-- ./Ritt-Wu-benchmark +RTS -N -l
-- threadscope Ritt-Wu-benchmark.eventlog
-- el comando anterior genera estos achivos por lo cual es innecesario la siguiente linea
-- ./Ritt-Wu-benchmark +RTS -p -RTS
-- cat Ritt-Wu-benchmark.prof > profiling.txt
-- hp2ps -c Ritt-Wu-benchmark.hp
-- gnome-open Ritt-Wu-benchmark.ps
--return $ charSetMPS ps6 -- excelent
--return $ charSetMSP ps5 -- excelent to parallel
--return $ charSetMPS ps7
--return $ charSetMSP ps8 --- parallel
--return $ charSetMPS ps9 -- parallel
--return $ charSetMPS ps1