UtilityToolsLab

© 2026 UtilityToolsLab. Built and maintained by the UtilityToolsLab Team.

Free eBooks·About·Changelog·Privacy Policy·Terms of Service·Report a bug
HomeMath & CalcScientific Calculator

Related Tools

Trig CalculatorLog Calculator% CalculatorBMI CalculatorTip CalculatorTemperatureAge CalculatorLoan CalculatorFraction CalculatorQuadratic Solver% Change CalculatorRatio CalculatorRounding CalculatorPythagorean TheoremArea CalculatorVolume Calculator

Scientific Calculator with Memory

Solve trig, log, power and factorial expressions with a full scientific keypad, DEG/RAD modes, memory keys, and calculation history. No eval() used.

You Might Also Like

All Math & Calc

Trig Calculator

All six trig functions in degrees, radians or gradians, with exact surd values, a unit circle, and honest undefined answers where tangent blows up.

Log Calculator

Compute a logarithm in any base, or solve for the base or argument, with change-of-base shown and the same log restated in base 10, e and 2.

Combinatorics

Calculate nCr, nPr, factorials, Catalan numbers and Stirling numbers using exact BigInt arithmetic. Step-by-step working shown for every result.

% Calculator

Calculate percentages, percentage increase and decrease, and what percent one number is of another. Instant answers for discounts and grades.

Type sin(30)+sqrt(16)/2^2 into a spreadsheet cell or a search bar and you get autocomplete suggestions, not a number. Scientific Calculator reads the same kind of expression directly: a keypad for people who would rather tap than type, and a text field underneath it for people who would rather type than tap, both driving one hand-written parser so the two stay in sync.

Nothing here calls eval(). Every expression is tokenised and walked through a recursive-descent parser with the usual precedence: exponents before multiplication, multiplication before addition, and factorial or percent applied before any of it. Fixing the sample expression at 30 degrees gives sin of 30, which is 0.5, plus the square root of 16 divided by 2 squared, which is 1, for a result of 1.5.

Running Your First Expression

  1. Press Load Sample to fill the field with the expression above and switch the angle mode to DEG.
  2. Tap a function key like sin and it inserts sin() with the cursor already sitting between the parentheses, not after the closing one.
  3. Press = or hit Enter. The result replaces the field and becomes Ans, ready for the next line to reuse.
  4. M+ and M− add or subtract whatever is currently on screen from memory; a small M badge appears on the display the moment memory is non-zero.

The Algorithm Behind Every Answer

  • Six precedence levels are threaded through the parser in order: addition and subtraction, then multiplication and division, then unary sign, then exponent (right-associative, so 2^3^2 reads as 2^(3^2)), then factorial and percent, then the innermost values.
  • The ± key does not simply insert a minus sign. It looks at the characters immediately before the cursor, matches the trailing number, and toggles a leading - on that number specifically, leaving the rest of the expression untouched.
  • abs() and exp() are not on any button. They are deliberately keyboard-only, so the 39-key pad does not grow a 40th and 41st key for two functions most sessions never reach for.
  • Angle mode is read at evaluation time, not baked into the number, so switching DEG to RAD after typing an expression changes the answer the next time you press =.

What Happens When the Input Breaks

  • Dividing by zero raises Division by zero is undefined. under the field before you even press =, since the live preview evaluates on every keystroke.
  • A closing parenthesis with nothing to match it raises Missing closing ")" — every "(" needs a matching partner.
  • sqrt(-1) raises a domain error rather than returning a complex number, and asin or acos outside the range -1 to 1 does the same.
  • Factorial only accepts non-negative integers and stops at 170!, because 171! is the first factorial that overflows a JavaScript double to Infinity.
  • History keeps the most recent 20 lines and no more; click any line to load its expression back into the field, angle mode and all.
Expression
200-character limit · nothing you type leaves your browser