readback.py

back to table · edit · history · where entries came from · files · download

2338 bytes, as of the version from 2026-10-25 18:47 (current). Recorded here, not run.

"""Verify all stored entries of T498 by independent exact algebraic brackets."""
import os,sys,json
from decimal import Decimal
from fractions import Fraction
import numberdb.sage as numberdb
from numberdb._write import attach
from sage.rings.rational_field import QQ
from sage.rings.real_arb import RealBallField
from checks import independent_form
from generate import LatticeSecondMoments
key=sys.stdin.read().strip()
os.environ['NUMBERDB_API_KEY']=key
client=numberdb.Client(api_key=key)
d=numberdb.table('T498',client=client)
rows=[]
for family,group in d['Numbers'].items():
    for n,value in group.items():
        item=dict(value) if isinstance(value,dict) else {'number':value}
        item['params']={'family':family,'n':n}
        rows.append(item)
assert len(rows)==114
assert list(d['Parameters'])==['family','n']
g=LatticeSecondMoments()
assert [(r['params']['family'],int(r['params']['n'])) for r in rows]==[(p['family'],p['n']) for p in g.enumerate()]
exact=0; approximate=0; largest=0
for r in rows:
    f,n=r['params']['family'],int(r['params']['n'])
    a,b=independent_form(f,n)
    true_power=a**n*b
    s=r['number'];largest=max(largest,len(s))
    if '.' not in s and 'e' not in s.lower():
        x=QQ(s);assert x>0 and x**n==true_power,(f,n,s);exact+=1
    else:
        centre=Fraction(s)
        exponent=Decimal(s).as_tuple().exponent
        unit=Fraction(10)**exponent
        lo=QQ((centre.numerator,centre.denominator))-QQ((unit.numerator,unit.denominator))
        hi=QQ((centre.numerator,centre.denominator))+QQ((unit.numerator,unit.denominator))
        assert 0<lo and lo**n<true_power<hi**n,(f,n,s)
        assert len(Decimal(s).as_tuple().digits)>=100
        approximate+=1
assert (exact,approximate)==(26,88)
# Execute the exact snippet stored in Programs.
ns={'QQ':QQ,'RealBallField':RealBallField}
exec(d['Programs']['program-sage']['code'],ns)
assert ns['G'].overlaps(RealBallField(400)(5)/(36*RealBallField(400)(3).sqrt()))
r=g.verify(sample=None,client=client)
assert r.ok
print('READBACK: 114 independent exact nth-power bracket checks passed; 26 exact fractions, 88 intervals of 100 significant digits.')
print('Parameter and entry order: correct. Stored Sage snippet: passed. Longest stored value:',largest)
print('VERIFY',r)
print('STORED_DOCUMENT_JSON',json.dumps(d,ensure_ascii=False))