File size: 2,051 Bytes
14f0522
481c83a
564b4e2
9f72ed4
53403c1
481c83a
53403c1
481c83a
53403c1
481c83a
53403c1
481c83a
53403c1
481c83a
53403c1
481c83a
626683a
481c83a
48a3aa1
481c83a
48a3aa1
481c83a
48a3aa1
481c83a
48a3aa1
481c83a
 
 
 
 
 
 
 
 
 
 
 
48a3aa1
53403c1
 
 
 
48a3aa1
9f72ed4
53403c1
 
 
 
 
 
 
15aba26
481c83a
 
 
 
53403c1
9f72ed4
14f0522
53403c1
 
564b4e2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
from fractions import Fraction
import gradio as gr

def calculator(num1, operation, num2=None):
    if operation == "add":
        return num1 + num2
    elif operation == "subtract":
        return num1 - num2
    elif operation == "multiply":
        return num1 * num2
    elif operation == "divide":
        return num1 / num2
    elif operation == "square":
        return num1 * num1
    elif operation == "cube":
        return num1 * num1 * num1
    elif operation == "exponential":
        return num1 ** num2
    elif operation == "frac add":
        return num1 + num2
    elif operation == "frac subtract":
        return num1 - num2
    elif operation == "frac multiply":
        return num1 * num2
    elif operation == "frac divide":
        return num1 / num2

    # convert all inputs to fractions
    num1 = Fraction(num1)
    if num2 is not None:
        num2 = Fraction(num2)

    # convert result back to float if input was not a fraction
    if isinstance(num1, float) or isinstance(num2, float):
        return float(calculator(float(num1), operation, float(num2)))
    else:
        return num1

demo = gr.Interface(
    fn=calculator,
    inputs=[
            gr.Number(value=4), 
            gr.Radio(["add", "subtract", "multiply", "divide", "square", "cube", "exponential", "frac add", "frac subtract", "frac multiply", "frac divide"]), 
            gr.Number(value=2, label="Second Number (optional)", optional=True)
            ],
    outputs="number",
    examples=[
        [5, "add", 3],
        [4, "divide", 2],
        [-4, "multiply", 2.5],
        [0, "subtract", 1.2],
        [2, "exponential", 3],
        [Fraction(1, 2), "frac add", Fraction(1, 3)],
        [Fraction(3, 4), "frac subtract", Fraction(1, 5)],
        [Fraction(2, 3), "frac multiply", Fraction(4, 5)],
        [Fraction(3, 4), "frac divide", Fraction(1, 2)]
    ],
    title="Scientific Calculator",
    description="Here's a sample scientific calculator. Enjoy! Code by: Freddy Aboulton   Improved by: Usually3 and ChatGpt"
)

demo.launch()