| #### D.15.29.9 eulerPolynomialTable Procedure from library `tateProdCplxNegGrad.lib` (see tateProdCplxNegGrad_lib). Usage: eulerPolynomialTable(M,low,high); M module, L list, low intvec, high intvec Purpose: computes hash table of euler polynomials of twists of coker(M) in the range between low and high Assume: M module, note that at the moment M is a module over S, Return: (Z,eulerpolynomialtable), where eulerpolynomialtable is a hash table with entries in the ring Z = ZZ[h] Note: this function works for arbitrary products P^{n_1} x \cdots x P^{n_t} and corresponding Z^t-gradings, entries can be accessed via eulerpolynomialtable*(a_1,...,a_t) where a=(a_1,...,a_t) is a multidegree between low and high Example:
    LIB "tateProdCplxNegGrad.lib";
    // example 1
    intvec c1 = 1,1;
    def (S1,E1) = productOfProjectiveSpaces(c1);
    intvec low1 = -3,-3;
    intvec high1 = 3,3;
    setring(S1);
    module M1 = 0;
    intmat grading1[2][1] = -1,-1;
    M1 = setModuleGrading(M1,grading1);
    def (Z1,eulerTable1) = eulerPolynomialTable(M1,low1,high1);
    setring(Z1);
    print(eulerTable1);
    ==> -3,-3 => h2
    ==> -2,-3 => 0
    ==> -1,-3 => h
    ==> 0,-3 => 2h
    ==> 1,-3 => 3h
    ==> 2,-3 => 4h
    ==> 3,-3 => 5h
    ==> -3,-2 => 0
    ==> -3,-1 => h
    ==> -3,0 => 2h
    ==> -3,1 => 3h
    ==> -3,2 => 4h
    ==> -3,3 => 5h
    ==> -2,-2 => 0
    ==> -2,-1 => 0
    ==> -2,0 => 0
    ==> -2,1 => 0
    ==> -2,2 => 0
    ==> -2,3 => 0
    ==> -1,-2 => 0
    ==> -1,-1 => 1
    ==> -1,0 => 2
    ==> -1,1 => 3
    ==> -1,2 => 4
    ==> -1,3 => 5
    ==> 0,-2 => 0
    ==> 0,-1 => 2
    ==> 0,0 => 4
    ==> 0,1 => 6
    ==> 0,2 => 8
    ==> 0,3 => 10
    ==> 1,-2 => 0
    ==> 1,-1 => 3
    ==> 1,0 => 6
    ==> 1,1 => 9
    ==> 1,2 => 12
    ==> 1,3 => 15
    ==> 2,-2 => 0
    ==> 2,-1 => 4
    ==> 2,0 => 8
    ==> 2,1 => 12
    ==> 2,2 => 16
    ==> 2,3 => 20
    ==> 3,-2 => 0
    ==> 3,-1 => 5
    ==> 3,0 => 10
    ==> 3,1 => 15
    ==> 3,2 => 20
    ==> 3,3 => 25
    eulerTable1*low1;
    ==> h2
    setring(S1);
    ring Z = cohomologyMatrix(M1,low1,high1);
    setring(Z);
    print(cohomologymat);
    ==> 5h,0,5,10,15,20,25,
    ==> 4h,0,4,8, 12,16,20,
    ==> 3h,0,3,6, 9, 12,15,
    ==> 2h,0,2,4, 6, 8, 10,
    ==> h, 0,1,2, 3, 4, 5,
    ==> 0, 0,0,0, 0, 0, 0,
    ==> h2,0,h,2h,3h,4h,5h
    // example 2
    intvec c2 =  1,1,1;
    def (S2,E2) = productOfProjectiveSpaces(c2);
    setring(S2);
    intvec low2 = 0,0,0;
    intvec high2 = 1,1,1;
    module M2 = 0;
    intmat grading2[3][1] = -1,-1,-1;
    M2 = setModuleGrading(M2,grading2);
    def (Z2,eulerTable2) = eulerPolynomialTable(M2,low2,high2);
    setring(Z2);
    print(eulerTable2);
    ==> 0,0,0 => 8
    ==> 1,0,0 => 12
    ==> 0,1,0 => 12
    ==> 1,1,0 => 18
    ==> 0,0,1 => 12
    ==> 1,0,1 => 18
    ==> 0,1,1 => 18
    ==> 1,1,1 => 27

User manual for Singular version 4.4.1, 2025, generated by texi2html.