oj! Algorithms v42.0.0 Release Notes

Release Date: 2017-02-03 // almost 6 years ago
  • ๐Ÿ”„ Changed


    • โž• Added a method aggregateRange(...) to Access1D.Aggregatable and created new Access2D.Aggregatable and AccessAnyD.Aggregatable interfaces. Their set of methods now match what's available in the Visitable interfaces.
    • ๐Ÿšš The interfaces Consumer1D, Consumer2D, ConsumerAnyD, Supplier1D, Supplier2D and SupplierAnyD have been removed - they didn't add anything.
    • ๐Ÿ†• New interfaces Stream1D, Stream2D and StreamAnyD. They're not real streams, they don't (yet) extend BaseStream, but are intended to be stream-like.
    • ๐Ÿšš New interfaces Mutate1D.Receiver, Mutate2D.Receiver and MutateAnyD.Receiver. They extend Mutate_D and all their nested interfaces respectively and extends Consumer. In part these are replacements for the removed Consumer_D interfaces.
    • The Callback_D interfaces as well as the passMatching(...) methods in the Access_D and Mutate_D interfaces are deprecated. They're replaced by a collection of messages named loop_(...) in the Structure_D interfaces.
    • ๐Ÿ—„ The method indexOfLargestInDiagonal(long,long) in Access2D.IndexOf is deprecated and replaced by indexOfLargestOnDiagonal(long). The new alternative is restricted to work on the main diagonal only, but the returned index is easier to understand and use.


    • PrimitveArray is now abstract but has 2 instantiable subclasses Primitive32Array and Primitive64Array.
    • ๐Ÿ†• New factory methods in Array1D, Array2D and ArrayAnyD that can delegate to any BasicMatrix factory that you supply.
    • NumberList now implements Access1D.Visitable.
    • ๐Ÿ†• New package org.ojalgo.array.blas: The aim is to refactor the code base so that methods matching BLAS functionality should be moved to this new package.
    • ๐Ÿšš The Unsafe/off-heap array implementations have been moved to the new ojAlgo-unsafe project (part of ojAlgo-extensions).


    • The POWERS_OF_2 in PrimitiveMath were incorrectly calculated - it's fixed now. At the same time the type was changed from int[] to long[] and the number of entries extended.


    • ๐Ÿ†• New constructor in SimplePortfolio taking an array of double as input (representing individual asset weights).


    • The AggregatorSet class has a new nethod get(...) that will return the correct AggregatorFunction for a specified Aggregator instance.
    • BigAggregator, ComplexAggregator, PrimitiveAggregator, QuaternionAggregator and RationalAggregator all now extend AggregatorSet.
    • ๐Ÿ—„ All previously existing variations of getXXFunction(...) in Aggregator has been deprecated and are replaced by by 1 new variant.
    • โž• Added a (NumberContext) enforce method to the FunctionSet class. It returns a UnaryFunction that enforces a NumberContext on the the function's input argument.
    • โž• Added andThen(...) and compose(...) methods, where applicable, to all BasicFunction subinterfaces.


    • Both BasicMatrix and MatrixStore now extends the new Access2D.Aggregatable rather than Access1D.Aggregatable.
    • ๐Ÿ‘‰ Tweaking of several of the matrix decomposition (and task) implementations to improve numerical stability.
    • ๐Ÿ†• New classes RowsSupplier and ColumnsSupplier that can be instantiated from the PhysicalStore.Factory:s (experimental design)


    • ๐Ÿ—„ All previously existing variations of getXXFunction(...) in NumberContext has been deprecated and are replaced by by 1 new variant that takes a FunctionSet as input.
    • ๐Ÿ†• New class NativeMemory used as single point to allocate, read or write native memory.