back to table · edit · history · where entries came from · files · download
2758 bytes, as of the version from 2026-10-29 07:39 (current). Recorded here, not run.
"""Verify every stored T603 decimal interval and its stated relations.
sage -python readback.py
Set NUMBERDB_API_KEY to read an unpublished draft. If NUMBERDB_KEY_FROM_STDIN=1,
the key is read only from stdin. No writes or publication actions occur.
"""
import os,sys,json,re
from pathlib import Path
import numberdb.sage as numberdb
from sage.rings.real_arb import RealBallField
from generate import HemisphereDirichlet,logdet
from independent import continuation
from relations import rational_decimal,decimal_enclosure
if __name__=='__main__':
if os.environ.get('NUMBERDB_KEY_FROM_STDIN')=='1':
key=sys.stdin.read().strip()
if re.match(r'^[A-Z_][A-Z0-9_]*\s*=',key):
key=key.split('=',1)[1].strip().strip('\"\'')
os.environ['NUMBERDB_API_KEY']=key
g=HemisphereDirichlet()
report=g.verify(sample=None)
assert report.ok and report.checked==40
print(json.dumps({'verify':str(report),'all_entries':True}),flush=True)
doc=numberdb.table('T603')
R=RealBallField(numberdb.bits(240))
block=doc['Numbers']
if isinstance(block,list):
vals={(str(r['params']['d']),r['params']['convention']):r['number'] for r in block}
else:
vals={(str(d),conv):val['number'] if isinstance(val,dict) else val
for d,record in block.items() for conv,val in record.items()}
expected=[(p['d'],p['convention']) for p in g.enumerate()]
assert list(vals)==expected
assert list(doc['Parameters'])==['d','convention']
spheres=numberdb.table('T595')['Numbers']
for d in range(1,21):
independent,_=continuation(d)
neumann,_=continuation(d,boundary='N')
L=logdet(d,200)
for conv in ('det','logdet'):
text=vals[(str(d),conv)];v,ulp=rational_decimal(text)
lower,upper=R(v-ulp),R(v+ulp)
computed=L.exp() if conv=='det' else L
checked=independent.exp() if conv=='det' else independent
assert lower<computed and computed<upper
assert lower<checked and checked<upper
storedL=decimal_enclosure(vals[(str(d),'logdet')],R)
storedD=decimal_enclosure(vals[(str(d),'det')],R)
assert storedL.exp().overlaps(storedD)
assert (storedL+neumann).overlaps(decimal_enclosure(spheres[str(d)]['logdet'],R))
assert (storedD*neumann.exp()).overlaps(decimal_enclosure(spheres[str(d)]['det'],R))
print(json.dumps({'d':d,'both_stored_intervals_contain_primary_and_independent':True,
'stored_conversion':True,'stored_sphere_relation':True}),flush=True)
print(json.dumps({'status':'PASS','entries':40,'ordered_selection_matches':True,
'maximum_stored_value_characters':max(map(len,vals.values()))}))