Changelog
[1.0.0] - 2025-05-13 (Advanced Symbolic Capabilities & UI Enhancements)
This major update significantly expands the symbolic mathematics capabilities by integrating a wider range of Nerdamer.js functions and refines the user experience with enhanced options and documentation.
✨ Added
- Expanded Symbolic Operations (via Nerdamer.js):
- Systems of Equations: Implemented
solveEquations([eq1,...], [vars,...])
for solving simultaneous equations, with custom argument parsing for user-friendly input. - Equation Rearrangement: Added
solveFor(equation, variable)
to symbolically make a variable the subject of an equation, with custom argument parsing. - Calculus - Differentiation:
diff(expression, variable [, order])
for symbolic derivatives. - Calculus - Indefinite Integration:
integrate(expression, variable)
for symbolic indefinite integrals. - Calculus - Definite Integration:
defint(expression, variable, start, end)
for symbolic definite integrals. - Calculus - Limits:
limit(expression, variable, point)
for computing symbolic limits. - Calculus - Symbolic Summation:
sum(expression, indexVar, lowerBound, upperBound)
. - Calculus - Symbolic Product:
product(expression, indexVar, lowerBound, upperBound)
. - Algebra - Factoring:
factor(polynomial)
for symbolic factorization. - Algebra - Expansion:
expand(expression)
for polynomial expansion. - Algebra - Partial Fractions:
partfrac(expression, variable)
for partial fraction decomposition. - Algebra - Polynomial Roots:
roots(polynomial [, variable])
to find roots of polynomials. - Algebra - GCD/LCM:
gcd(expr1, expr2)
andlcm(expr1, expr2)
for symbolic and numerical greatest common divisor/least common multiple. - Algebra - Polynomial Coefficients & Degree:
coeffs(poly, var)
anddeg(poly, var)
. - Algebra - Complete the Square:
sqcomp(expression, variable)
. - Expression Simplification:
simplify(expression)
. - Number Theory - Primality Test:
isPrime(integerExpression)
. - Transforms - Laplace & Inverse Laplace:
laplace(expr, tVar, sVar)
andilt(expr, sVar, tVar)
.
- Systems of Equations: Implemented
- User Interface & Experience:
- Options Page: Introduced a dedicated options page (
options.html
) allowing customization of:- Base font size for the UI.
- Default height and width for the pop-out window.
- Font families for Title, Links, Results/History, and Input areas.
- Help Page: Added a comprehensive
help.html
page, linked from the calculator, detailing features, syntax, and examples for both Math.js and the newly integrated Nerdamer.js functions. - Visual Feedback for Copy: Implemented visual feedback in the title bar ("Copied!" or "Copy Failed!") when attempting to copy results.
- Options Page: Introduced a dedicated options page (
- Internal:
- Refactored
processInput
inpopup.js
to route a wider array of function calls to Nerdamer.js, including specific argument parsing forsolveEquations
andsolveFor
. - Updated state saving/loading to correctly persist and re-evaluate Math.js user-defined functions.
- Improved handling and display of errors from both Math.js and Nerdamer.js.
- Refactored
🛠️ Changed
- Documentation: Significantly updated
README.md
and createdREFERENCE.md
to reflect all new features and provide comprehensive usage guidance. - Nerdamer Integration: Shifted from only using
solve()
to a broader integration strategy, leveraging more of Nerdamer's symbolic modules. - Error Handling: More specific error messages for invalid arguments in custom-parsed Nerdamer functions.
Previous Versions (for context):
[0.2.0] (Initial Equation Solving)
- Added:
- Integrated Nerdamer.js (
nerdamer.all.min.js
). - Introduced basic algebraic equation solving via the
solve(equation, variable)
command.
- Integrated Nerdamer.js (
- Known Limitations:
solve()
had limitations for general symbolic forms and transcendental equations.
[0.1.0] (Core Math.js Functionality)
- Initial Release:
- Core calculator functionality powered by Math.js (arithmetic, variables, user-defined functions, units, matrices, complex numbers).
- Basic UI with input/output areas, history,
@
variable, and pop-out window. - Persistent state for history, variables, and functions.