On this day, 20 years ago, ojAlgo was registered at SourceForge. At that time, that was the place for Open Source project hosting (and the default version control system was CVS).

The anniversary is celebrated by releasing a new version – v53.0.0!

One of the new features of this release is the addition of the Quadruple scalar emulating quadruple precision floating point arithmetic using two double precision scalars. All the various array and matrix classes support this new element type. The emulation works surprisingly well, and performance is better than using either RationalNumber or BigDecimal. This is a great addition to ojAlgo.

There is a new experimental QP solver available through a configuration option – options.convex().extendedPrecision(true);

This new solver is contributed by Magnus Jansson (Programmer-Magnus@GitHub). It is inspired by what’s described in the paper “Solving quadratic programs to high precision using scaled iterative refinement” by Weber, Sager and Gleixner, and it makes use of the new Quadruple precision scalar. The master algorithm is implemented using Quadruple precision matrices.

There is also an entirely new LP solver. Many hours have gone in to developing this. Test results so far are promising, but at this point it is still missing features needed to fully replace the old LP solver. To try it you need to explicitly add the LinearSolver.NEW_INTEGRATION to ExpressionsBasedModel. For pure LP:s the new solver may already be better than the old one. In most cases you should see significantly better performance. What’s lacking is features necessary to function as a MIP sub-solver (and probably some numerical tuning). Until all this is done, the old solver must remain the default alternative.

When solving linear equation systems like Ax=b using various matrix decompositions, it is now possibly to also solve yTA=cT using the same decomposition of A. This is supported by all MatrixDecomposition.Solver implementors. More precisely that interface now extends a new interface named InvertibleFactor. That interface defines chainable and reversible in-place (equation system) solvers.

In addition to that there are many more additions and changes – performance improvements and some bugs fixed. Read the complete changelog to learn more: