All Versions
46
Latest Version
Avg Release Cycle
41 days
Latest Release
557 days ago

Changelog History
Page 4

  • v47.1.0 Changes

    April 09, 2019

    πŸ”„ Changed

    org.ojalgo.constant

    • πŸ“¦ Everything in this package has been moved to org.ojalgo.function.constant

    org.ojalgo.data

    • πŸ†• New package that currently only contains an (also new) class DataPreprocessors. The intention is that this is where various data preprocessors utilities will go.

    org.ojalgo.function

    • πŸ†• New package org.ojalgo.function.special with currently 4 new classes: CombinatorialFunctions, ErrorFunction, GammaFunction and MissingMath.
    • πŸ†• New package org.ojalgo.function.constant with constants related to doing basic maths on different types.
    • πŸ“¦ Moved constants defined in various classes to the new org.ojalgo.function.constant package, and deprecated a ffew others that will be made private.

    org.ojalgo.matrix

    • πŸ›  Fixed a problem with one of the Eigenvalue implementations - it would check for symmetric/hermitian but then failed to make use of the results.
    • πŸ›  Fixed a problem with some of the Eigenvalue implementations regarding ordering of the eigenvales/eigenvectors – they were not always ordered in descending absolut order (used to consider the sign).
    • 🚚 The interface TransformationMatrix has been removed. Partly this functionality has been revoked, and partially replaced by the new Transformation2D interface.

    org.ojalgo.optimisation

    • πŸ”¨ Refactoring of the presolvers. Among other things there are now presolvers that perform integer rounding. Previously existing presolvers have also been improved. There is also a new presolver that removes (obviously) redundant constraints.
    • πŸ‘ Modified what happends when you relax an integer model. Now the variables are kept as integer variables, but the model set a flag that it is relaxed. This means the presolvers can now make use of the integer property and thus perform better.
    • πŸ“œ The MPS file parser, MathProgSysModel, has been modified to not strictly use field index ranges, but instead more freely interpret whitespace as a delimiter. This is in line with commonly used MPS format extensions and allows ojAlgo to correctly parse/use a larger set of models. Further MathProgSysModel is no longer a model – it no longer implements Optimisation.Model. This should/will be a model file parser, and nothinng else.
    • πŸ”¨ Major extension and refactoring of optimisation test cases. In particular the test cases in ojAlgo are now available to the various solver integration modules in ojAlgo-extensions.
    • When adding a solver integration to ExpressionsBasedModel it is now possible to differentiate between preferred and fallback solvers - addIntegration() has been replaced with addPreferredSolver() and addFallbackSolver().
    • πŸ›  Fixed a concurrency related problem with the sparse simplex solver.
    • πŸ“œ There is now an options 'options.sparse' that control if sparse/iterative solvers should be favoured over dense/direct solvers, or not.
    • πŸ‘‰ Tweaking of ConvexSolver internals – several small changes that in combination makes a big difference on some numerically challenging problems.
    • πŸ›  Fixed a bug in ConvexSolver (ActiveSetSolver) that caused the suffice stopping conditions to not be considered since the state was set to APPROXIMATE raher than FEASIBLE.

    org.ojalgo.random

    • πŸ†• New Cauchy distribution RandomNumber.
    • Partial implementation of Student's TDistribution
    • πŸ“¦ Deprecated the RandomUtils class and moved its various methods to classes in the new org.ojalgo.function.special package.
    • For continuous distributions the getProbability methods has been renamed getDensity.
    • 🐎 Minor performance improvement to SampleSet when calling getStandardDeviation() repeatedly.

    org.ojalgo.structure

    • πŸ†• New interfaces Transformation1D, Transformation2D and TransformationAnyD as well as Mutate1D.Transformable, Mutate2D.Transformable and MutateAnyD.Transformable. The Transformation?D interfaces are functional. With them you can write custom "mutators" that can be used on everything that implements the Transformable interfaces.
    • πŸ—„ The interfaces Access1D.Elements, Access1D.IndexOf, Access2D.Elements, Access2D.IndexOf, AccessAnyD.Elements and AccessAnyD.IndexOf have been deprecated.

    org.ojalgo.type

    • βž• Additions to Stopwatch that make it easier to compare with time limits in various forms.
  • v47.0.0 Changes

    December 16, 2018

    πŸ”„ Changed

    org.ojalgo.array

    • πŸ“œ SparseArray: It is now possible to visit the nonzero elements in an index range with a functional callback interface - you can have a lambda called by each nonzero element in a range.

    org.ojalgo.matrix

    • πŸ”¨ The BasicMatrix interface has been removed. More precisely it has been merged with the abstract package private class AbstractMatrix (and that class was then renamed BasicMatrix). Further all supporting (nested) classes and interfaces as well as the MatrixFactory class has been refactored in a similar way. The various matrix implementations (PrimitiveMatrix, ComplexMatrix, RationalMatrix and QuaternionMatrix) are now entirely self-contained - not generic in any way.
    • 🚚 The MatrixUtils class has been deprecated. Everything in it has been moved to other (different) places. No features or functionality are removed.
    • 🚚 Reshuffled the declarations in Mutate1D, Mutate2D and MutateAnyD. Nothing is removed. This only affects those doing low-level ojAlgo programming.
    • 🐎 Internal refactoring and performance improvements in SparseStore.

    org.ojalgo.netio

    • πŸ‘ Complete rewrite of ResourceLocator. It can still be used the same was as before (roughly the same API for that) but it now also support more advanced usage. ResourceLocator has taken steps towards becoming an "http client" with support for cookies, sessions, requests and responses.
    • πŸ†• New interface BasicLogger.Printable to be used by classes that need detailed debug logging.

    org.ojalgo.optimisation

    • Iterations and time limits are now enforced for the LP solver. (Only worked for the QP and MIP solver before.)
    • πŸ”„ Changed how the initial solution, extracted from the model and supplied to the solvers, is derived. This primarily affects the ConvexSolver.
    • πŸ”„ Changed how the ConvexSolver utilises the supplied initial solution to derive a better set of initially active inequalities.
    • Modified the ConvexSolver/ActiveSetSolver behaviour regarding failed subproblems and iteration limits. Re-solving a failed subproblem now counts as a separate iteration, and iteration and time limits are enforced when determining if a failed subproblem should be re-solved or not.
    • ConvexSolver validation is now slightly less strict. (Tiny negative eigenvalues are now allowed.)

    org.ojalgo.series

    • 🚚 The Β΄resampleΒ΄ methods have been removed from the NaturallySequenced interface. Resampling is now only possible with the CalendarDateSeries implementation.

    org.ojalgo.type

    • πŸ”¨ Refactoring to CalendarDate, CalendarDateUnit and CalendarDateDuration; simplified implementations that are better aligned with the java.time classes.
  • v46.3.0 Changes

    October 12, 2018

    πŸ”„ Changed

    • πŸ— Now builds a separate test-jar artefact. It contains a test utilities class that can be used by libraries that extend ojAlgo to help test some ojAlgo specific types.
    • βž• Added a main method in org.ojalgo.OjAlgoUtils that output info about the environment.

    org.ojalgo.matrix

    • πŸ—„ The BasicMatrix interface has been deprecated!!! The various implementations will remain - all of them - but you should use those implementations directly/explicitly rather than the interface.
  • v46.2.0 Changes

    October 04, 2018

    πŸ”„ Changed

    πŸ‘ Nothing in ojAlgo implements Serializable - a few odd classes used to declare that they did, but serialization has never been supported.

    org.ojalgo.matrix

    • πŸ›  Fixed a bug related to transposing ElementConsumer/Supplier
    • 🐎 Performance improvements on some SparseStore operations

    org.ojalgo.netio

    • πŸ”¨ Refactored the various IDX.print(...) methods

    org.ojalgo.structure

    • Access1D no longer extends Iterable. To iterate over the elements use elements().
  • v46.1.0 Changes

    September 17, 2018

    πŸ”„ Changed

    org.ojalgo.ann

    • πŸ”¨ Refactoring, tuning and improvements.

    org.ojalgo.array

    • 🐎 The Array1D, Array2D and ArrayAnyD factories now have specific makeSparse(...) methods. Previously the makeZero(...) methods would automatically switch to creating sparse internals when it was large enough. Users were not aware of this (didn't want/need sparse) and performance was very poor.

    org.ojalgo.netio

    • πŸ†• New class IDX with utilities to read, parse and print contents of IDX-files. (To access the MNIST database of handwritten digits: http://yann.lecun.com/exdb/mnist/)

    org.ojalgo.scalar

    • πŸ›  A new abstract class, ExactDecimal, to help implement exact decimal numbers (fixed scale) as well as an example implementation Money.

    org.ojalgo.structure (previously org.ojalgo.access)

    • βž• Added default methods to get all primitive number types from Access1D, Access2D and AccessAnyD and to somewhat modified the ones in AccessScalar: byteValue(), shortValue(), intValue(), longValue(), floatValue(), doubleValue().
    • AccessAnyD now has a method matrices() that return a Iterable<MatrixView<N>>. On a multi-dimensional data structure you can iterate over its 2D (sub)matrices. Useful when you have a 3-dimensional (or more) data structure that is actually a collection of 2D matrices.
  • v46.0.0 Changes

    August 19, 2018

    πŸ”„ Changed

    org.ojalgo.access

    • πŸ“¦ package renamed org.ojalgo.structure

    org.ojalgo.ann

    • πŸ— Rudimentary support for ArtificialNeuralNetwork. You can build, train and use feedforward neural networks.

    org.ojalgo.array

    • 🚚 The BasicArray.factory(?) method has been removed. It should never have been public
    • πŸ†• New indexOf(array, value) utility methods in Raw1D

    org.ojalgo.constant

    • New constants in BigMath and PrimitiveMath: TWO_THIRDS and THREE_QUARTERS

    org.ojalgo.function

    • πŸ†• New PredicateFunction interface.
    • πŸ†• New PlainUnary interface.

    org.ojalgo.matrix

    • 🚚 BigMatrix, BigDenseStore and ComplexDenseStore are removed. They were deprecated before - now they're actually gone!
    • πŸ›  Fixed bug: The getEigenpair(int) method of the Eigenvalue interface threw an ArrayIndexOutOfBoundsException
    • πŸ›  Fixed a couple of issues related to calculating the nullspace (using QR or SVD decompositions).
    • πŸ—„ Revised the BasicMatrix interface - cleaned up some old deprecated stuff.
    • πŸ— BasicMatrix.Builder interface has been renamed BasicMatrix.PhysicalBuilder and its feature set extended. In addition there is now a BasicMatrix.LogicalBuilder. Stuff that should be done via those builders are now deprecated in the main, BasicMatrix, interface.
    • The various BasicMatrix implementations now implement Access2D.Collectable which allows them to be more efficiently used with MatrixDecomposition:s.

    org.ojalgo.netio

    • πŸ‘Œ Improvements/extensions to the BasicParser interface - it is now possible to skip a header line.

    org.ojalgo.optimisation

    • πŸ†• New interface UpdatableSolver that will contain a selection of optional methods to do in-place updates of solvers. Currently there is only one such method - fixVariable(?).
    • πŸ†• New class ExpressionsBasedModel.Intermediate used by the IntegerSolver to exploit the capabilities exposed by UpdatableSolver.
    • ⚑️ Many thing internal to the IntegerSolver (MIP solver) have changed. In general things are cached, re-used and updated in-place more than before.
    • πŸ†• New option 'mip_defer' that control an aspect of the branch-and-bound algorithm in IntegerSolver. (Read its javadoc.)

    org.ojalgo.scalar

    • There is now a ComplexNumber.NaN constant.

    org.ojalgo.structure (previously org.ojalgo.access)

    • πŸ†• New default methods aggregateDiagonal(..), sliceDiagonal(...), visitDiagonal(...), fillDiagonal(...) and modifyDiagonal(..) targeting the main diagonal.
    • πŸ†• New default methods in Factory2D to make it easier to create 2D-structures of single rows or columns.
    • Mutate2D.BiModifiable now (again) extends Mutate2D.Modifiable and defines additional methods modifyMatchingInRows(...) and modifyMatchingInColumns(...)

    org.ojalgo.type

    • πŸ†• New class ObjectPool
    • The generics type parameter of NumberContext.Enforceable changed from <N extends Number> to <T>.
  • v45.1.0 Changes

    April 13, 2018

    πŸ”„ Changed

    org.ojalgo.access

    • 3 new interfaces Structure2D.ReducibleTo1D, StructureAnyD.ReducibleTo1D and StructureAnyD.ReducibleTo2D
    • ⚑️ Most (all) of the *AnyD interfaces got new or updated methods "set" methods: aggregateSet(...), visitSet(...), fillSet(..), modifySet(...), sliceSet(...)
    • πŸ†• New functional interface Structure1D.LoopCallback to be used when iterating through a set of subloops.

    org.ojalgo.array

    • Array1D now implements Access1D.Aggregatable
    • Array2D now implements Access2D.Aggregatable as well as Structure2D.ReducibleTo1D
    • ArrayAnyD now implements AccessAnyD.Aggregatable as well as StructureAnyD.ReducibleTo1D and StructureAnyD.ReducibleTo2D
    • βž• Additions or cleanup of the various methods relating subsets of elements: aggregateSet(...), visitSet(...), fillSet(..), modifySet(...), sliceSet(...)
    • πŸ›  Fixed a bug regarding fillAll(...) on a SparseArray - it didn't fill all, just the currently set (already existing) elements. (Performing fillAll on a SparseArray is stupid.)

    org.ojalgo.function

    • πŸ†• New aggregator function AVERAGE. (The Aggregator enum has a new member, and the AggregatorSet class has new method.)

    org.ojalgo.matrix

    • BasicMatrix now implements Structure2D.ReducibleTo1D
    • πŸ‘Œ Improved firstInRow/Column and limitOfRow/Column logic of AboveBelowStore and LeftRightStore.
    • MatrixStore now implements Structure2D.ReducibleTo1D. The rows/columns are reduced to ElementSupplier:s so you can continue working with the numbers before supplying the elements to some ElementsConsumer.

    org.ojalgo.netio

    • πŸ†• New class LineSplittingParser - a very simple csv parser
    • πŸ†• New class TableData - used to create a "table" of values that can then be exported to a csv file.
  • v45.0.0 Changes

    March 30, 2018

    πŸ”„ Changed

    Switced to using JUnit 5!

    org.ojalgo.access

    • Methods Access1D.wrapAccess1D(...) has been renamed simply Access1D.wrap(...), and similarly Access2D.wrap(...)
    • βž• Add/restore fillMatching(...) methods to the Mutate1D.Fillable interface.

    org.ojalgo.function

    • πŸ†• New method getLinearFactors() in MultiaryFunction.TwiceDifferentiable that returns the gradient at 0.

    org.ojalgo.matrix

    Major Changes!!
    • πŸ”„ Changed matrix multiplication code to be better on modern hardware & JVM:s (not fully verified to be better).
    • πŸ—„ Everything "Big" has been deprecated: BigMatrix, BigDenseStore and everything else using BigDecimal elements. This is intended to be replaced by the new RationalNumber based implementations.
    • πŸ”¨ The ComplexNumber related code (all of it) has been refactored/generalised to handle any Scalar implementation (ComplexNumber, RationalNumber, Quaternion and any other future implementations). ComplexDenseStore has been deprecated and replaced by GenericDenseStore.
    • πŸ†• New interfaces MatrixTransformation and MatrixTransformation.Transformable - an attempt to unify matrix transformation implementations.
    • πŸ†• New package org.ojalgo.matrix.geometry containing mutable 3D vector math classes.
    • πŸ›  Fixed a bug with sparse matrix multiplication – in some cases the result was wrong (depending on the internal structure of the nonzero elements). The bug was actually in the SparseArray class.
    • πŸ›  Fixed a bug with incorrect pseudoinverse in RawSingularValue.
    • πŸ›  Fixed correct sign on determinant in QR decompositions

    org.ojalgo.netio

    • βž• Added default methods to BasicLogger.Printer to simplify creating custom implementations.

    org.ojalgo.optimisation

    • βž• Added new methods getUnadjustedLowerLimit() and getUnadjustedUpperLimit() to the Variable and Expression classes.
    • πŸ”§ Optimisation.Options now allow to specify a solver specific configurator method. This is useful when creating 3:d party solvers.
    • πŸ‘ Experimental support for Special Ordered Sets (SOS) in ExpressionsBasedModel.
    • Variable:s are now ordered (compared using) their indices rather than their names.
    • πŸ†• New variants of addVariable() and addExpression() methods that don't require you to supply an entity name. (A name is generated for you.)
    • πŸ”„ Changes to presolver and validation code. Fixed a whole bunch of problems, mainly related to rounding errors.
    • πŸ”¨ Refactoring in the IntegerSolver. It should now be more memory efficient. Also, somewhat, modified the branching strategy.
    • βž• Added the possibility to get progress logging from the solvers (Currently only implemented in IntegerSolver). model.options.progress(IntegerSolver.class);

    API breaking!

    • The 'slack', 'problem', 'objective' and 'integer' properties of Optimisation.Options have been unified and replaced by a new property 'feasibility'.

    org.ojalgo.random

    • πŸ‘€ It is now possible to setSeed(long) on any RandomNumber and Random1D instance.

    org.ojalgo.scalar

    • RationalNumber has been re-implemented using primitive long and numerator and denominator (they used to be BigInteger).
    • RationalNumber can now be instatiated from a double without creating any objevts other than the resulting RationalNumber instance. There is also an alternative implementation using rational approximation.

    org.ojalgo.type

    • πŸ†• New TypeContext implementation, named TemporalContext, to handle the classes from Java's new date time API. The older DateContext is still available.
    • πŸ› Bug fixed in a NumberContext factory method - getPercent(int,Locale)
  • v44.0.0 Changes

    September 27, 2017

    πŸ”„ Changed

    org.ojalgo.access

    • 🚚 Deprecated AccessUtils. All the various utility methods have been moved to other places - primarily to the Acess1D, Access2D or AccessAnyD interfaces.
    • The generic declaration of the IndexMapper interface has been changed from > to simply , and it is now a nested interface of Structure1D. Similarly there are now nested interfaces RowColumnMapper and ReferenceMapper in Structure2D and StructureAnyD respectively.
    • The ElementView1D interface no longer extends ListIterator, but only Iterator. Instead it now extends Spliterator, and there is now a metod stream(boolean).
    • The Mutate1D interface now declares a method reset() that should reset the mutable structure to an (all zeros) initial state.
    • The Factory_D interfaces now has new variants of the makeZero(...) and makeFilled(...) methods that take Structure_D instances as input.

    org.ojalgo.array

    • 🚚 Deprecated ArrayUtils. All the various utility methods have been moved to other places - primarily to the new Raw1D, Raw2D or RawAnyD classes. (ArrayUtils was split into Raw1D, Raw2D and RawAnyD.)

    org.ojalgo.concurency

    • The DivideAndConquer class now has a limit on the total number of threads it will create. (If a program had multiple threads that each invoked some multithreaded part of ojAlgo, the total number of threads would multiply and grow out of control.)

    org.ojalgo.constant

    • πŸ†• New constant GOLDEN_RATIO

    org.ojalgo.finance

    • πŸ“¦ This entire package has been moved to the ojAlgo-finance repository/project/artefact !!!
    • πŸ›  Fixed a bug related to downloading historical data from Google and/or Yahoo Finance. When parsing the initial header line failed it was still translated to an actual data item with all zero values at a default/dummy date.
    • πŸ†• New version of YahooSymbol that works with Yahoo Finance's changes. (They deliberately changed/broke the previously existing method of downloading.)

    org.ojalgo.matrix

    • 🚚 org.ojalgo.matrix.task.TaskException has been removed and replaced with org.ojalgo.RecoverableCondition.
    • 🚚 org.ojalgo.matrix.MatrixError has been removed and replaced with various standard java.lang.RuntimeException subclasses instantiated via factory methods in org.ojalgo.ProgrammingError.
    • πŸ†• New interface MatrixDecomposition.RankRevealing that define two methods: getRank() and isFullRank(). Several of the existing decompositions now implement this interface. This also caused a review of the implementations of the isSolvable() method of the MatrixDecomposition.Solver interface.
    • πŸ—„ Deprecated isSquareAndNotSingular() of the LU interface.
    • πŸ‘Œ Improved the multiplication code of SparseStore, ZeroStore and IdentityStore. In particular sparse matrix multiplication is now parallelised.
    • 🚚 Moved (deprecated) the matrix size thresholds methods from org.ojalgo.matrix.MatrixUtils to org.ojalgo.matrix.store.operation.MatrixOperation.
    • πŸ“œ Altered the RowsSupplier and ColumnsSupplier classes to (always) use sparse rows/columns.

    org.ojalgo.netio

    • 🚚 The parse(String) method of BasicParser now declares to throw a RecoverableCondition. Failure to parse an individual line now just results in that line being skipped, and the process moves on to the next line.
    • πŸ”¨ The ResourceLocator class has been refactored. Essentially it's a URI/URL builder and it is now implemented using the builder pattern. The changes are API breaking this class is rarely used directly. It is mostly used indirectly via GoogleSymbol and YahooSymbol, and those classes' public API:s are intact.

    org.ojalgo.optimisation

    • πŸ‘Œ Improved the ConvexSolver to better handle cases with not positive definite and/or rank deficient covariance matrices (the quadratic term).
    • πŸ‘Œ Improved the IntegerSolver to better handle cases with problem parameters with significant magnitude differences (it affected the branching strategy unfavourably).
    • πŸ›  Fixed a problem with debug printing in the IntegerSolver.
    • πŸ”¨ Refactored major parts of the LinearSolver. Among other things the internal data structures are now sometimes sparse depending on the problem size (and sparsity).
    • πŸ”¨ Refactored parts of the ConvexSolver to make better use of sparsity (and other things).

    org.ojalgo.series

    • 🚚 The declaration of the resample(...) methods of CalendarDateSeries have been moved to the BasicSeries.NaturallySequenced interface with generalised signatures.
    • πŸ”§ The TimeSeriesBuilder can now be configured using CalendarDate.Resolution rather than only CalendarDateDuration.

    org.ojalgo.type

    • πŸ†• New Stopwatch class
    • The CalendarDate constructor with a String argument/parameter now declares to throw a RecoverableCondition.
    • NumberContext now has specific format(double) and format(long) methods, and now formats decimals with a variable number of fraction digits.
    • NumberContext now has new compare(double,double) and compare(float,float) that are alternatives to the compare(...) methods in Double and Float - the only difference is that these return 0 when the two input args are ==.
  • v43.0.0 Changes

    April 22, 2017

    πŸ”„ Changed

    • πŸ‘€ It is now possible to turn off warnings related to missing hardware profiles. Set a system property 'shut.up.ojAlgo' to anything, not null, and you won't see those warnings. (It would be must better if you contributed your hardware profile to ojAlgo.)

    org.ojalgo.access

    • Added new interfaces Access_D.Collectable to be used as super interfaces to the Stream_D interfaces, and used as input parameter type for matrix tasks and decompositions. The new interfaces interacts with the Mutate_D.Receiver interfaces and to some extent replaces the Supplier_D interfaces removed with v42.
    • πŸ“¦ There's a new package private interface FactorySupplement used as a common superinterface to the Facory_D interfaces. It declares methods that give access to FunctionSet, AggregatorSet and Scalar.Factory instances - all 1D, 2D and AnyD factories now have this.
    • The Stream_D interfaces got some new utility variants of operateOnAll-methods.
    • πŸ†• New interfaces Mutate_D.Mixable that allow aggregating individual elements using the supplied binary "mixer" function.
    • πŸ†• New interface Mutate1D.Sortable

    org.ojalgo.array

    • βž• Addedd a Collector (Java 8 streams) that creates NumberList instances.
    • πŸ— Deprecated all previously existing factory methods in NumberList, LongToNumberMap and SparseArray. They are replaced with new alternatives (1 each). The new factories are configurable using builder pattern.
    • πŸ“¦ SegmentedArray now package private. If you had explicit references to this class you have a compilation error. Switch to using some of the BasicArray pr DenseArray factories. If necessary things will be segmented for you.
    • πŸ“¦ BufferArray is now abstract and has two package private subclasses DoubleBufferArray and FloatBufferArray. You instantiate them via factories in BufferArray.

    org.ojalgo.finance

    • Yahoo now requires to use https rather http when downloading historical financial data. Both YahooSymbol and GoogleSymbol now use https.

    org.ojalgo.function

    • Two new additions to FunctionSet - "logistic" and "logit".

    org.ojalgo.matrix

    • Replaced all usage of ElementsSupplier as input parameter type with Access2D.Collectable.
    • βœ‚ Removed all public/external usage of DecompositionStore and replaced it with PhysicalStore.
    • 🚚 Moved (deprecated) the various equals(...) and reconstruct(...) methods from MatrixUtils to the respective matrix decomposition interfaces.
    • πŸ—„ Deprecated Eigenvalue.getEigenvector(int) and replaced it with Eigenvalue.getEigenpair(int)
    • Various internal improvements to the Eigenvalue and Singular Value implementations.
    • πŸ—„ Deprecated the Schur decomposition. Eigenvalue decompositions are of course still supported. It's just Schur "on its own" that is deprecated.

    org.ojalgo.netio

    • 0️⃣ The default scheme of ResourceLocator is changed from http to https.

    org.ojalgo.optimisation

    • Extremely large (absolute value) lower/upper limits on variables or expressions are now treated as "no limit" (null).
    • Extremely small (absolute value) lower/upper limits on variables or expressions are now treated as exactly 0.0.

    org.ojalgo.random

    • πŸ›  Fixed a minor bug in SampleSet - calculations would fail when repeatedly using SampleSet with empty sample sets

    org.ojalgo.series

    • πŸ”¨ Various refactoring to the BasicSeries implementations. There is also a new nested interface BasicSeries.NaturallySequenced and some declarations have been moved there.
    • βž• Added the concept of an accumulator that may be used to accumulate the values of multiple put operations on the same key.
    • πŸ†• New class CoordinatedSet - a set of coordinated (same start, end & resolution) series.

    org.ojalgo.tensor

    • πŸ†• New package!
    • πŸ†• New interface Tensor with an implementation and a factory method. Not much you can do with this yet - functionality will be expanded slowly.

    org.ojalgo.type

    • πŸ”¨ Refactoring and additions to CalendarDate, CalendarDateUnit and CalendarDateDuration. Among other things there is a now an interface CalendarDate.Resolution that both CalendarDateUnit and CalendarDateDuration implement.