| | |
| | """ |
| | 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() |
| |
|