#!/usr/bin/env python3 """ Hugging Face Space: gate-level calculator for threshold-calculus. """ import gradio as gr from calculator import ThresholdCalculator, bits_to_int, float16_bits_to_float calc = ThresholdCalculator("arithmetic.safetensors") def eval_expression(expr: str): expr = (expr or "").strip() if not expr: return "", "", "", "" try: result = calc.evaluate_expr(expr) out_int = bits_to_int(result.bits) out_float = float16_bits_to_float(out_int) return ( f"{out_float}", f"0x{out_int:04x}", f"{result.gates_evaluated}", f"{result.elapsed_s:.4f}s", ) except Exception as exc: return f"ERROR: {exc}", "", "", "" with gr.Blocks(title="Threshold Calculus Calculator") as demo: gr.Markdown( "# Threshold Calculus Calculator\n" "Pure gate-level evaluation of float16 arithmetic (IEEE-754 half). " "All results are float16 and may be rounded." ) expr = gr.Textbox( label="Expression", placeholder="e.g., 1 + 1, sin(pi / 2), exp(ln(2))", ) run = gr.Button("Evaluate") out_val = gr.Textbox(label="Float16 Result", interactive=False) out_bits = gr.Textbox(label="Result Bits (hex)", interactive=False) out_gates = gr.Textbox(label="Gates Evaluated", interactive=False) out_time = gr.Textbox(label="Elapsed", interactive=False) run.click(eval_expression, inputs=[expr], outputs=[out_val, out_bits, out_gates, out_time]) expr.submit(eval_expression, inputs=[expr], outputs=[out_val, out_bits, out_gates, out_time]) gr.Markdown( "Notes:\n" "- Functions: sin, cos, tan, tanh, sqrt, rsqrt, exp, ln, log2, abs, neg\n" "- Constants: pi, e, inf, nan\n" "- Pow uses exp(b*ln(a)); negative bases yield NaN." ) if __name__ == "__main__": demo.launch()