Some checks failed
Deploy to GitHub Pages / build-and-deploy (push) Has been cancelled
2.0 KiB
2.0 KiB
Calculator Module Interface Contract
Purpose
Defines the interface for the core calculator functionality module that will handle all mathematical operations.
Interface Definition
Core Calculator API
interface Calculator {
// Evaluate an arithmetic expression in standard notation
evaluate(expression: string): number | Error
// Add two numbers
add(a: number, b: number): number
// Subtract two numbers
subtract(a: number, b: number): number
// Multiply two numbers
multiply(a: number, b: number): number
// Divide two numbers (handles division by zero)
divide(a: number, b: number): number | Error
// Handle percentage operations
percentage(value: number, percent: number): number
// Toggle sign of a number
toggleSign(value: number): number
// Clear the current calculation
clear(): void
// Get current display value
getCurrentDisplay(): string
}
RPN Calculator API
interface RPNCalculator {
// Push a number onto the stack
push(value: number): void
// Pop a number from the stack
pop(): number | undefined
// Perform an operation on stack values
operate(operator: string): number | Error
// Clear the entire stack
clear(): void
// Get current stack state
getStack(): number[]
// Execute RPN expression (e.g., "3 4 +")
evaluate(rpnExpression: string): number | Error
}
Validation Requirements
- All operations must return valid numbers or appropriate error objects
- Division by zero must return an Error object
- Expression syntax errors must return Error objects
- Operations must respect JavaScript numeric limits (will return Infinity if exceeded)
Performance Requirements
- All operations must complete within 100ms
- Evaluation should be efficient to maintain responsive UI
Error Handling
- Invalid operations return Error objects with descriptive messages
- Overflow conditions return Infinity values
- Underflow conditions return 0 values