Eisenstein = function(k) {
k=BigInt(k)
let Ek=new QQt(undefined, 0)
Ek.a=(n)=>{
if (Ek.arr[n] != undefined) return Ek.arr[n]
let foo=new QQt([Bernoulli.a(k).div(-2n*k)])
let num=[0,1], den=[1,-1]
for (let i=1n; i<=n; i++) {
foo=foo.add((new QQt(num)).div(new QQt(den)))
num[i]=0; num.push((i+1n)**(k-1n));
den[i]=0; den.push(-1);
}
Ek.arr[n]=foo.a(n)
return foo.a(n)
}
return Ek
}