H=eulerPolynomialTable(M,low,high)
H=eulerPolynomialTable(T,low,high)
H=eulerPolynomialTable H'
If M is a multigraded module representing a coherent sheaf F on $P^n := P^{n_0} x .. x P^{n_{t1}}$, the script returns a hash table with entries a => sum_i h^i(F(a))*h^i \in ZZ[h,k], where k represents h^{1}, where a is a multiindex, low<=a<=high in the partial order (thus the value is 0 when i is not in the range 0..sum n.) In case T is a Tate resolution corresponding to an object F in D^b(P^n), then the values returned are the polynomials of the hypercohomology groups of twists of F, and the values can be nonzero in a wider range.
In case the number of factors t is 2, the output of cohomologyMatrix is easier to parse. In general the script cohomologyHashTable gives the same information as this script, but in a less compact form.
The script computes a sufficient part of the Tate resolution for F, and then calls itself in the version for a Tate resolution.
If T is not a large enough part of the Tate resolution, such as W below, then the function collects only the contribution of T to the cohomology table of the Tate resolution, according to the formula in Corollary 0.2 of Tate Resolutions on Products of Projective Spaces.






We can print just the entries representing nonzero cohomology groups:

In the case of two factors (t=2), the same information can be read conveniently from a matrix

where the entry in the a= \{a_0,a_1\} place is sum_i h^i(F(a)*h^i \in ZZ[h].
In case of hypercohomology, we write k instead of h^{1}, and use the cohomology ring ZZ[h,k].
The object eulerPolynomialTable is a method function.