NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
A robust Dart library for comprehensive mathematical programming. Offers expressions, complex numbers, algebra, statistics, angles, and geometry for diverse computations.
Last release today
07 Oct 2026
Release timing varies
gaps range from 8 days to 4 months
Nearly every release is documented
notes for 57 of 58 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
58 releases · first in 2023
One column per quarter.
[IMPROVEMENT] Improved docstrings and updated dependencies
[BUG_FIX] Fixed mode() in Statistics class to handle both Iterable and varargs num correctly, resolving the ArgumentError: At least one element must b
mode() in Statistics class to handle both Iterable<num> and varargs num correctly, resolving the ArgumentError: At least one element must be provided when called with no arguments.[FEATURE] Added expression factoring capabilities (factor()) to parse and decompose polynomials and algebraic expressions into linear and irreducible
factor()) to parse and decompose polynomials and algebraic expressions into linear and irreducible factors with rational/symbolic coefficients.div(P, Q) or div(numerator, denominator)) returning quotient and remainder pairs [quotient, remainder].expand()) supporting distributive expansion and polynomial simplification.roots()), supporting exact binomial root solving for $n$-th roots of real and complex values (e.g., $(-1)^{1/5}$) and arbitrary polynomials.partfrac()) for rational expressions.sqcomp() / completeSquare()) for quadratic expressions $ax^2 + bx + c$, supporting symbolic coefficients and custom variables to produce $(Ax + B)^2 + C$ forms.Polynomial.factorize() to return structured List<Polynomial> factors and correctly preserve leading coefficient scalings.DurandKerner and Polynomial.roots() before numerical deflation.symbolic_integration.dart using a modular Strategy pattern architecture (SumDifferenceStrategy, ConstantMultipleStrategy, PowerRuleStrategy, ExponentialStrategy, BasicTrigStrategy, InverseTrigStrategy, RationalFunctionStrategy, SubstitutionStrategy, TrigProductStrategy, IntegrationByPartsStrategy, TrigPowerStrategy, InverseHyperbolicStrategy, CompletingTheSquareStrategy, LinearSubstitutionStrategy).LaplaceTransform and InverseLaplaceTransform handling, introducing safe simplification (_safeSimplify) that preserves exact symbolic radical forms (e.g. $\sqrt{\pi}$, $\sqrt{n}$) without forced numerical evaluation.Pow.simplify() for rational powers with half-integer exponents ($n/2$), improper fraction factoring, and safe perfect square extraction.Rational input support across basic math, logarithmic, trigonometric, hyperbolic, and inverse hyperbolic functions (abs, sqrt, cbrt, nthRoot, exp, pow, floor, ceil, round, sign, clamp, log, sin, cos, tan, sinh, cosh, etc.).Rational representations (e.g., $0.75 \to 3/4$).SolverList and _formatSolution) for complex roots and exact polar coordinates.mode() statistics function assertions and scalar return behavior when evaluating numeric collections and varargs.characters to ^1.4.1, dartframe to ^0.9.0, intl to ^0.20.3, and petitparser to ^7.1.0.[DOCUMENTATION] Extensively expanded README.md with comprehensive explanations, code examples, and usage cases for the symbolic calculus package (diff
README.md with comprehensive explanations, code examples, and usage cases for the symbolic calculus package (differentiation, integration, limits, summations), Laplace & Inverse Laplace transforms, and system equation solvers.expressions-cas to highlight the library's advanced Computer Algebra System capabilities.asec, acsc, acot), hyperbolic (sinh, cosh, tanh, sech, csch, coth), and inverse hyperbolic (asinh, acosh, atanh, asech, acsch, acoth) functions natively.LaplaceTransform and InverseLaplaceTransform) with comprehensive mapping of standard functions..extra_spec_test.dart.[FEATURE] Implemented symbolic Laplace Transform and Inverse Laplace Transform computation (LaplaceTransform and InverseLaplaceTransform) with compreh
LaplaceTransform and InverseLaplaceTransform) with comprehensive mapping of standard functions.SymbolicLimit, SymbolicSum, and DefiniteIntegral).abs, sqrt, cbrt, nthRoot, pow, exp, mod, min, max) to accept Expression parameters, yielding correct symbolic counterpart nodes.Abs.simplify() logic to dynamically evaluate and strip/negate absolute signs for expressions with guaranteed non-negative/non-positive values (e.g. abs(5*x^2)).ExpressionSolver for systems of linear, quadratic, and cubic equations, adding robust variable isolation solving algorithms.mode(), mean(), and average() in statistics to natively handle lists, varargs, and complex symbolic expressions.operator ~/ for Complex) using nearest-integer rounding to ensure mathematical correctness in Euclidean domain calculations.Complex numbers when denominator is 1 for consistent hash code evaluation.Capsule, ConeFrustum, Hemisphere, and HollowCylinder, and plane geometry with AnnulusSector and Kite.cumsum() helper function for iterables to calculate cumulative sums.[FEATURE] Completely overhauled the core expression Simplifier into a robust fixed-point iteration engine (max 20 iterations) to guarantee convergence
Simplifier into a robust fixed-point iteration engine (max 20 iterations) to guarantee convergence of multi-pass simplifications._deepSimp), logarithmic simplifications (_logSimp), exponential simplifications (_expSimp), and power algebraic simplifications (_powSimp)._fracSimp and _ratSimp) to support recursive tree traversal, symbolic variable cancellations (e.g. (c * A) / A -> c), negative sign normalization, and rational addition/subtraction with different denominators.isSymbolic logic with type-based checking (_isSymbolicExpression) across all expression types.Sin, Cos, Tan, and base Trigonometric expressions.Ln and Log functions.Pow expressions.[FEATURE] Added comprehensive Computer Algebra System (CAS) support with fully-featured expression simplification and parsing.
Rational representation.Complex types instead of standard numbers, resolving crash/type mismatches (Complex is not a subtype of double/num).Capsule: Cylinder with hemispherical end caps.ConeFrustum: Frustum of a cone defined by bottom/top radii and height.Hemisphere: Perfect hemisphere geometry support.HollowCylinder: Hollow pipe/tube geometry representation.AnnulusSector: Sector of a hollow circle/annulus.Kite: Quadrilateral representing a geometric kite.Ellipse (generating coordinates, perimeter, and area).geometry_expansion_test.dart.cumsum() cumulative sum helper implementation to iterables extension (iterable_ext.dart) with optimized performance.example/zscore.dart and resolving statistical computation bugs.README.md, and added extensive test suites for caching, geometry, and CAS validation.* [IMPROVEMENT] Fixed bugs
* [IMPROVEMENT] Fixed bugs
* [IMPROVEMENT] Fixed bugs
[IMPROVEMENT] More integrations with the Complex number.
[IMPROVEMENT] Initial migration to full complex number.
Nothing published for this version
[IMPROVEMENT] Downgrade characters package to 1.4.0 to fix pubspec.yaml.
characters package to 1.4.0 to fix pubspec.yaml.[BUG_FIX] Fix bugs and clean code.
[IMPROVEMENT] doc: Improve doc comment formatting by consistently using backticks for code references and ranges.
ComplexArray for efficient storage and operations on complex numbers, including FFT and IFFT.Scalar, DartData, Series, DataFrame, DataCube, and NDArray support from dartframe.[BUG_FIX] Fixed Csc.integrate crash and mathematical correctness
Csc.integrate crash and mathematical correctness
1/a) when a is a Complex numbercsc(x)^2 integration to return correct -cot(x) instead of log formulaSin, Cos, Tan, Cot, Sec to robustly handle Complex coefficients in linear substitutions (f(ax+b))Variable multiplication with Complex numbers (partial evaluation)
convertToLiteralIfNeeded to correctly treat Complex numbers as literals, allowing expressions like Complex(8) * y to simplify correctly[FEATURE] Added comprehensive symbolic calculus module (lib/src/math/algebra/calculus/)
lib/src/math/algebra/calculus/)
symbolic_calculus.dart: Core symbolic calculus operationssymbolic_integration.dart: Advanced integration strategies (power rule, trig, exponential, substitution, integration by parts)differentiation.dart: Enhanced differentiation with curl calculations and variable naming improvementshybrid_calculus.dart: Combined symbolic and numerical calculus approacheslib/src/math/algebra/solver/)
equation_solver.dart: Polynomial solving, variable isolation, factor solving, and identity handling(x-1)*(x-2) = 0)x^3 = 0)x - x = 0)lib/src/math/algebra/expression/simplifier/)
simplifier.dart: Core simplification strategiestrig_simplifier.dart: Trigonometric simplification rulesasin.dart: Inverse sine functionacos.dart: Inverse cosine functionatan.dart: Inverse tangent functionlib/src/math/algebra/nonlinear/)
optimization.dart: Optimization algorithmsroot_finding.dart: Root finding methodssystems.dart: Nonlinear systems solvinglib/src/math/differential_equations/)lib/src/math/statistics/)diff(expr, var) parsing for differentiationintegrate(expr, var) parsing for integrationsolve(eq, var) parsing for equation solvingsolveEquations(equations) parsing for system of equationsgcd(a, b), lcm(a, b), factor(poly), deg(poly), pfactor(n), coeffs(poly, var), line(p1, p2), roots(poly), sqcomp(poly)%) for polynomial division remaindergcd(other): Greatest Common Divisor using Euclidean algorithmlcm(other): Least Common MultipleModulo expression class for symbolic modulo operationsisPoly([strict]) method across all expression types for polynomial detectionPolynomial.simplify() to correctly handle Complex coefficients by checking if coefficients are real before computing GCDsolveEquations)
[var, val, var, val, ...] formatInverseTrigStrategy for inverse trigonometric integrals
1/(x^2 + a^2) → atan(x/a)1/sqrt(a^2 - x^2) → asin(x/a)BasicTrigStrategy with trigonometric power reduction
sin^2(x), cos^2(x), etc.IntegrationByPartsStrategy to handle logarithmic and inverse trigonometric functionsCubic equation solver robustness:
d0=0, d1=0) to prevent NaN resultsIntegrationByParts failure for solo functions (e.g., ln(x), asin(x)) by treating them as f(x) * 1PowerRuleStrategy to correctly handle Complex exponents safely avoiding type cast errorsu'/u) to SubstitutionStrategy supporting forms like integrate(1/(x+1))integrate(cos(x)*sin(x)) sign error by improving Divide.simplifyBasicintegrate((2x+1)^2))solve(x^3) returning NaN by fixing Complex.pow for zero basealgebra_spec_test.dart
isPoly testssolve_spec_test.dart
solveEquations testscore_spec_test.dart
11/4 instead of 2.75)differentiate() signature to accept optional Variable parameter for partial differentiation support
Add, Subtract, Multiply, Divide, Pow, Sin, Cos, Tan, Sec, Csc, Cot, Exp, Ln, Log, Abs, and all other expression typessimplify() to simplifyBasic() in binary operations for better simplification control
Add, Subtract, Multiply, PowerAdd.simplifyBasic() to correctly parse terms instead of creating invalid Variable objectsSubtract.simplifyBasic() to handle nested additions and parse terms correctlyMultiply.simplifyBasic() to implement associativity rules for coefficient combination (e.g., (-1) * (2 * x) → (-2) * x)Subtract to flatten nested subtractions and additionsExpression type conversion:
String inputs in _toExpression (automatic parsing)Complex inputs in _toExpressionNaN and Infinity values in Expression operationsAdd, Subtract, Divide) to handle mixed num and Complex typesRationalFunction.simplify() with polynomial division and GCD cancellationRationalFunction.evaluate() to ensure correct simplification and type handling[BUG_FIX] Fixed Polynomial.fromString to correctly handle whitespace and division by constants (e.g., x/2)
[BUG_FIX] Fixed Polynomial.simplify to prevent root casting errors during GCD calculation
[BUG_FIX] Fixed Polynomial.evaluate to prevent nested Literal creation
[BUG_FIX] Fixed coefficient extraction in polynomial solver for correct quadratic detection
[BUG_FIX] Fixed identity equation handling (e.g., solve(x-x, x) now returns [0])
[BUG_FIX] Fixed cancellation detection in subtraction (e.g., x - x = 0)
[FEATURE] Added comprehensive test suites
test/parser_calculus_test.dart: 100 tests for differentiation, integration, and solvingtest/calculus/: Calculus module teststest/solver/: Equation solver teststest/differential_equations/: Differential equations teststest/statistics/: Statistics teststest/nonlinear/: Nonlinear mathematics tests[FEATURE] Added example: example/symbolic_calculus_example.dart
[IMPROVEMENT] Enhanced Limit class with better limit calculation
[IMPROVEMENT] Updated expression exports in advance_math.dart and algebra.dart
[IMPROVEMENT] Code formatting improvements across multiple files
[REFACTOR] Variable naming consistency (e.g., F1, F2, F3 → f1, f2, f3 in curl calculations)
[CLEANUP] Removed simple_export_test.dart
trigonometric.dart)
sec(): Secant functioncsc(): Cosecant functioncot(): Cotangent functionasec(), arcsec(): Inverse secantacsc(), arccsc(): Inverse cosecantacot(), arccot(): Inverse cotangentarcsin(), arccos(), arctan()hyperbolic.dart)
sech(): Hyperbolic secantcsch(): Hyperbolic cosecantcoth(): Hyperbolic cotangentasech(), arcsech(): Inverse hyperbolic secantacsch(), arccsch(): Inverse hyperbolic cosecantacoth(), arccoth(): Inverse hyperbolic cotangentarcsinh(), arccosh(), arctanh()operations.dart)
log10(): Base-10 logarithmlog2(): Base-2 logarithmlogBase(n): Arbitrary base logarithmspecial_functions.dart - NEW FILE)
gamma(): Gamma function using Lanczos approximationlnGamma(): Natural logarithm of gamma functiondigamma(): Digamma (psi) functionerf(): Error function with Taylor series expansionerfc(): Complementary error functionbeta(): Beta functionzeta(): Riemann Zeta functionexpm1(): e^x - 1 for small xlog1p(): ln(1 + x) for small xfrexp(): Mantissa and exponent decompositionldexp(): Recompose double from mantissa and exponentComplex.sum(List<Complex>): Sum of complex numbersComplex.mean(List<Complex>): Arithmetic meanComplex.product(List<Complex>): Product of complex numbersTriangle class
centroid: Intersection of medians (center of mass)inCenter: Intersection of angle bisectors (center of inscribed circle)circumCenter: Intersection of perpendicular bisectors (center of circumscribed circle)orthocenter: Intersection of altitudesPolygon class to extend PlaneGeometry correctly
area() method using Shoelace formula for arbitrary polygonsperimeter() method overridePentagon, Hexagon, Heptagon, Octagon)
apothem property (distance from center to midpoint of side)sumInteriorAngles propertyshortDiagonal property to PentagonboundingBox() method to circle components
Sector: Includes center, arc endpoints, and arc extremesSegment: Includes chord endpoints and arc extremesArc: Includes endpoints and arc extremesSector, Segment, and Arc classes
contains(Point) method in Sector for better performanceErrorEllipse implementation
sigmaX2, sigmaY2, sigmaXY) and standard deviation (sigmaX, sigmaY, rho)generateEllipsePoints() for plottingtoJson()/fromJson() serializationupdateParameters() methodPlaneGeometry inheritance and contains() logicSphere class (lib/src/math/geometry/solid/sphere.dart)
(4/3)πr³4πr²fromVolume(), fromSurfaceArea()contains(Point) method to check if point is inside sphereCylinder class (lib/src/math/geometry/solid/cylinder.dart)
πr²h2πr(r + h)2πrhfromVolumeAndRadius()Cone class (lib/src/math/geometry/solid/cone.dart)
(1/3)πr²hπr(r + s) where s is slant height√(r² + h²)πrsRectangularPrism class (lib/src/math/geometry/solid/rectangular_prism.dart)
l × w × h2(lw + lh + wh)√(l² + w² + h²)vertices() method returns 8 corner pointsRectangularPrism.cube(side) for creating cubesexample/solid_geometry_example.dartVarArgsFunction allowing flexible usage (e.g., mean(1, 2, 3) vs mean([1, 2, 3]))
mean, median, mode, variance, standardDeviationgcd, lcmmax and min in basic.dart to VarArgsFunctionSVD decomposition to use dart:math for max/min operations for better performance and type safetyutils.dart)
sinc, sumUpTo, isClose, integerPart, fibRangediff(): Numerical differentiationsimpson(), numIntegrate(): Numerical integrationrand([min, max])randint(max)halfPi, quarterPi, deg2rad, rad2degc, G, g, h_planck, etc.CallExpression to correctly handle VarArgsFunction invocationsIndexExpression and BinaryExpression type handling failures[IMPROVEMENT] Updated dependencies
Scientific classnum extension and testsAngleUnits, NumWords, and Units classesMultiVariablePolynomial: depth, size, getVariableTerms, simplify, expand, differentiate, integrate, isIndeterminate, and isInfinity[IMPROVEMENT] Updated dependencies
[FEATURE] Added some large value computations
[FEATURE] Add num to expression conversion extension
asinh, acosh, atanh, asech, acsch, and acoth) to support Complex number inputs.[FEATURE] Changed to MIT License
[BUG_FIX] Fixed error from Package conflict after update as from issues #8
Package conflict after update as from issues #8[IMPROVEMENT] Added detailed documentations
[IMPROVEMENT] Improved Imaginary
[FEATURE] Added isClose similar to that of Python
isClose similar to that of Pythonmemoize class wrapper (see examples from var_args_function_test.dart )sumUpTo, timeAsync, time etc.[FEATURE] Added isClose similar to that of Python
isClose similar to that of PythonComplex to numComplexsimplify() method to return appropriate data types from mathematical operationsround() - Now supports rounding both real and imaginary partshypot() - Enhanced to work with Complex inputssign() - Added support for Complex numbersclamp() - Now clamps both real and imaginary parts of Complex numberslerp() - Added support for linear interpolation between Complex numbersSVD and LU algorithms[BUG_FIX] Fixed error from svd as from issues #3
svd as from issues #3Matrix class and Vector class to use Complex for all operations.[IMPROVEMENT] pseudoInverse function has been improved to work with singular and poorly conditioned matrices. Added condition number check and SVD fal
pseudoInverse function has been improved to work with singular and poorly conditioned matrices. Added condition number check and SVD fallback for improved robustness with singular and poorly conditioned matrices.isPrime function now works correctly.Bases class for converting between bases and Strings.PerfectNumbers and functions for calculating perfect numbers including isMersennePrime.isPerfectNumber function for performance and to work with large numbers with BigInt, large String number, and int support.sqrt to the BigInt class to aid computations.cumsum and improved it with functionalitiesfib function.Expression class for parsing and evaluating mathematical expressions. See Expression class for more information.[BUG_FIX] Changed the characters dependency to 1.3.0
[IMPROVEMENT] Updated SDK to 3.6.0
[BROKEN] DataFrame is no longer maintained in advance_math. Now has a separate package for DataFrame called dartframe.
[BROKEN] DataFrame is no longer maintained in advance_math. Now has a separate package for DataFrame called dartframe.
[FEATURE] Added PI class for calculating pi to any precision.
[FEATURE] Added Decimal and Rational classes to support arbitrary precision calculations.
[BROKEN] Old Decimal class based on Number has been changed to Precision class. See Precision class for more information.
[FEATURE] Added Decimal and Rational class based on BigInt with support for arbitrary precision calculations.
[FEATURE] Added bases to advance math. You can now convert from any base to any other base (i.e base 2-36). See Bases class for more information.
[IMPROVEMENT] Matrix inverse has been improved to work with matrices of any size (e.g. 1x1 matrix).
[IMPROVEMENT] Added Dataframe empty initializer/constructor.
[FEATURE] Converted Dataframe columns to a class Series
[FEATURE] Added more functionalities to the Random class eg: nextIntInRange, nextDoubleInRange, nextBytes, nextBigIntInRange, nextBigInt, nextDateTime, nextElementFromList, nextNonRepeatingIntList etc.
[IMPROVEMENT] isPrime function has been improved to use the trial division method for small numbers and Rabin-Miller for large numbers. Now support various data types:
print(isPrime(5)); // Output: true (int)
print(isPrime(6)); // Output: false (int)
print(isPrime(BigInt.from(1433))); // Output: true (BigInt)
print(isPrime('567887653')); // Output: true (String)
print(isPrime('75611592179197710042')); // Output: false (String)
print(isPrime('205561530235962095930138512256047424384916810786171737181163')); // Output: true (String)
[FEATURE] Added more basic math functions: mod, modInv, nChooseRModPrime, bigIntNChooseRModPrime etc.
[FEATURE] Added more statistics math functions: gcf, egcd, lcm etc.
[IMPROVEMENT] In the Geometry class:
rec in the constructor fromPolarCoordinates.[IMPROVEMENT] Added an argument isDegrees for rec and pol easy computation.
[IMPROVEMENT] Roman numerals to work with overline characters and parentheses.
[FEATURE] Added converts polar coordinate rec and converts rectangular coordinates pol functions
[FEATURE] Added an extension groupBy to the iterables and groupByKey to maps.
[FEATURE] Added more extensions to String class:
String testString = "Hello123World456! Café au lait costs 3.50€. Contact: test@example.com or visit https://example.com";
print(testString.extractLetters()); // Includes 'é'
print(testString.extractNumbers(excludeDecimalsAndSymbols: false));
print(testString.extractWords(excludeNumbers: false));
print(testString.extractAlphanumeric(excludeSymbols: false));
print(testString.extractLettersList(excludeSymbols: false));
print(testString.extractNumbersList(excludeDecimalsAndSymbols: false));
print(testString.extractEmails()); // Extracts email addresses
print(testString.extractUrls()); // Extracts URLs
print(testString.containsSymbol()) //Check if the string contains a symbol
// Custom pattern example: extract words starting with 'C'
print(testString.extractCustomPattern(r'\bC\w+', unicode: false));
[IMPROVEMENT] Following the Dart format for libraries
[IMPROVEMENT] Cleaned code base and examples files
[IMPROVEMENT] Fixed README
[BUG_FIX] CoordinateType not set to UTM
NumOrWords has been moved into code translators with the same name as Morse code.MorseCodeTranslator class has been renamed to MorseCodeDataframe class for working with dataframes or tables.combinations and permutations function:
n.func and simplify parameters for applying functions to combinations or permutations and controlling output structure.- Fixed README - Added functions
Renamed Row, Column, and Diagonal matrices to RowMatrix, ColumnMatrix and DiagonalMatrix repectively
Improved documentation and performance
Added support for converting number to words
Setting support for expressions
Fixed error in parsing linear and constant polynomial strings
- Added Interpolation
Added more functions matrix statistics
- Fixed error in angles
Fixed error in angles conversion
Improved the checks on roman numerals
Improved the checks on roman numerals
Added trigonometry functions supports to work with complex numbers
Improved exponents of Complex numbers
Added Geometry (Point, line, Circle, Triangle, Polygon, etc.)
Fixed complex number outputing wrong string
- Fixed bugs
Improved min, max and sum functions with axes
Changed the reverse function to flip in matrices
- Fixed bug
Fixed the usage of quantities in the respective computations
- Fixed bugs - Fixed README
Conversion of angles(radians, degrees, gradients, DMS, and DM)
Moved codes and reorganized functions
Your coding agent can read these notes before it upgrades. Set up the MCP server →