import json,time
import numberdb.sage as numberdb
from sage.rings.integer_ring import ZZ
from sage.rings.rational_field import QQ
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
R=PolynomialRing(QQ, names=('x','m'))
Z=PolynomialRing(ZZ, names=('x','m'))
x,m=R.gens()
a=b=R.one()
for n in range(10):
    if n:
        start=time.monotonic()
        numerator=(x+m)*b*b-x*(b*b.derivative(x,2)-b.derivative(x)**2)-b*b.derivative(x)
        c,r=numerator.quo_rem(a)
        assert not r
        a,b=b,c
    else: start=time.monotonic()
    z=Z(b)
    print(json.dumps({'n':n,'terms':len(z.dict()),'bytes':len(str(z).encode()),'degree':int(z.total_degree()),'seconds':time.monotonic()-start,'value':str(z) if n<4 else None}),flush=True)
