Muhammadtaha12's picture
Create app.py
f3245c5 verified
import streamlit as st
import math
# Define functions for various scientific operations
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def multiply(x, y):
return x * y
def divide(x, y):
if y == 0:
return "Cannot divide by zero"
return x / y
def power(x, y):
return math.pow(x, y)
def sqrt(x):
return math.sqrt(x)
def log10(x):
if x <= 0:
return "Logarithm undefined for non-positive numbers"
return math.log10(x)
def loge(x):
if x <= 0:
return "Natural log undefined for non-positive numbers"
return math.log(x)
def sine(x):
return math.sin(math.radians(x))
def cosine(x):
return math.cos(math.radians(x))
def tangent(x):
return math.tan(math.radians(x))
def factorial(x):
if x < 0:
return "Factorial undefined for negative numbers"
return math.factorial(int(x))
def absolute(x):
return abs(x)
# Streamlit UI setup
st.title("Scientific Calculator")
# Input fields for two numbers (for binary operations)
num1 = st.number_input("Enter the first number:", value=0.0)
num2 = st.number_input("Enter the second number:", value=0.0)
# Select box for selecting operations
operation = st.selectbox(
"Select an operation",
["Add", "Subtract", "Multiply", "Divide", "Power", "Square Root", "log10", "ln", "Sine", "Cosine", "Tangent", "Factorial", "Absolute"]
)
# Perform the selected operation
if operation == "Add":
result = add(num1, num2)
elif operation == "Subtract":
result = subtract(num1, num2)
elif operation == "Multiply":
result = multiply(num1, num2)
elif operation == "Divide":
result = divide(num1, num2)
elif operation == "Power":
result = power(num1, num2)
elif operation == "Square Root":
result = sqrt(num1)
elif operation == "log10":
result = log10(num1)
elif operation == "ln":
result = loge(num1)
elif operation == "Sine":
result = sine(num1)
elif operation == "Cosine":
result = cosine(num1)
elif operation == "Tangent":
result = tangent(num1)
elif operation == "Factorial":
result = factorial(num1)
elif operation == "Absolute":
result = absolute(num1)
# Display the result
st.write(f"The result of {operation} is: {result}")