Skip to content

v2.0.0-preview.1

Pre-release
Pre-release

Choose a tag to compare

@Rafael-SOWNet Rafael-SOWNet released this 09 Aug 14:23
· 993 commits to master since this release
59947e3

The first preview of 2.0, the release where AngouriMath changes answers it was getting wrong.

Please read BREAKING-CHANGES.md before upgrading. It lists every place the same input now gives a different result, with the value before and the value now, both measured on a build rather than taken from the diff.

Why a preview rather than 2.0.0

Most of 2.0 is a wrong answer becoming a right one. That is still a breaking change if you built on the wrong one — and a large share of these changes are silent: the call still succeeds and quietly returns something else. No compiler error, no exception, just a different value.

Those are the ones a preview exists to surface. If you depend on AngouriMath, this is the build to try before 2.0.0 is final.

The loud breaks — the compiler will find these for you

was is
target frameworks net7.0;netstandard2.0 netstandard2.0;net8.0;net10.0
28 members deprecated since 1.x obsolete but present removed
Latexise, ILatexiseable, entity_latexise the British spelling Latexize, ILatexizeable, entity_latexize
MathS.Quantum.Factorise one letter from the unrelated Entity.Factorize MathS.Quantum.TensorFactorize
MathS.Quantum.IsNormalised the British spelling IsNormalized
Minusf.Minuend / .Subtrahend named for the wrong operand named for the right one

AssemblyVersion is pinned at 2.0.0.0 for the whole of 2.x, so later 2.x releases are drop-in replacements for this one.

The silent ones — these are what to test against

A sample; the full list with worked examples is in BREAKING-CHANGES.md.

  • sqrt(x^2) and sqrt(-x) are left as written instead of being simplified to x and i*sqrt(x), which were wrong for negative x.
  • Real % follows the sign of the divisor: -7 % 3 is 2, was -1.
  • Radicals are reduced everywhere: sqrt(12) is now 2 * sqrt(3).
  • Numbers below 1e-16 are kept rather than rounded to 0.
  • An identity equation solves to all of CC, not { } or { 0 }.
  • Many limits that returned NaN or stayed unevaluated now return a value.
  • Stringize output parses back for powers, lambdas, applications, piecewises and complex numbers with a fractional imaginary part. If you parse printed output, read that section.
  • Boolean expressions are minimised where that is shorter, rather than factored.
  • Some integrals return closed forms that were not antiderivatives before — and two that were answered correctly are now unevaluated, a deliberate loss.

Reporting

If something you relied on changed and it is not in BREAKING-CHANGES.md, that is a bug in the notes as much as in the code — please open an issue either way. A silent change found now is one that does not arrive against 2.0.0 final.

Packages: AngouriMath, AngouriMath.FSharp, AngouriMath.Interactive, AngouriMath.Terminal.