'use client' import { useState } from 'react' export default function ScientificCalculator() { const [display, setDisplay] = useState('0') const [memory, setMemory] = useState(0) const [lastOperation, setLastOperation] = useState(null) const [newNumber, setNewNumber] = useState(true) const operations = { '+': (a: number, b: number) => a + b, '-': (a: number, b: number) => a - b, '×': (a: number, b: number) => a * b, '÷': (a: number, b: number) => a / b, 'xⁿ': (a: number, b: number) => Math.pow(a, b), 'ⁿ√x': (a: number, b: number) => Math.pow(a, 1/b), } const handleNumber = (num: string) => { if (newNumber) { setDisplay(num) setNewNumber(false) } else { setDisplay(display === '0' ? num : display + num) } } const handleDecimal = () => { if (newNumber) { setDisplay('0.') setNewNumber(false) } else if (!display.includes('.')) { setDisplay(display + '.') } } const handleOperation = (op: string) => { setMemory(parseFloat(display)) setLastOperation(op) setNewNumber(true) } const handleEquals = () => { if (lastOperation && !newNumber) { const current = parseFloat(display) const operation = operations[lastOperation as keyof typeof operations] const result = operation(memory, current) setDisplay(result.toString()) setNewNumber(true) setLastOperation(null) } } const handleFunction = (func: string) => { const num = parseFloat(display) let result: number switch (func) { case 'sin': result = Math.sin(num * Math.PI / 180) break case 'cos': result = Math.cos(num * Math.PI / 180) break case 'tan': result = Math.tan(num * Math.PI / 180) break case 'log': result = Math.log10(num) break case 'ln': result = Math.log(num) break case '√': result = Math.sqrt(num) break case 'x²': result = num * num break case '1/x': result = 1 / num break default: return } setDisplay(result.toString()) setNewNumber(true) } const handleClear = () => { setDisplay('0') setMemory(0) setLastOperation(null) setNewNumber(true) } const handleBackspace = () => { if (display.length > 1) { setDisplay(display.slice(0, -1)) } else { setDisplay('0') setNewNumber(true) } } const handlePlusMinus = () => { setDisplay(display.startsWith('-') ? display.slice(1) : '-' + display) } const Button = ({ children, onClick, className = '' }: { children: React.ReactNode, onClick: () => void, className?: string }) => ( ) return (

Scientific Calculator

A scientific calculator with advanced mathematical functions including trigonometry, logarithms, and exponential operations.

{/* Scientific Functions */} {/* Numbers and Basic Operations */}
) }