Skip to content

Commit

Permalink
Merge pull request #235 from optimatika/develop
Browse files Browse the repository at this point in the history
v48.0.0
  • Loading branch information
apete authored Nov 24, 2019
2 parents ce84915 + 805d259 commit 8693750
Show file tree
Hide file tree
Showing 404 changed files with 9,236 additions and 4,632 deletions.
65 changes: 64 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,55 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

Added / Changed / Deprecated / Removed / Fixed / Security


## [Unreleased]

> Corresponds to changes in the `develop` branch since the last release
Added / Changed / Deprecated / Removed / Fixed / Security

## [48.0.0] – 2019-11-24

### Added

- Improved support for float throughout the library, and specifically added matrices with float elements.

#### org.ojalgo.algebra

- ScalarOperation has been extended with support for float arguments.

#### org.ojalgo.function

- New special functions: beta (complete, incomplete and regularized), gamma (logarithmic), Hypergeometric and Pochhammer symbol. Inluding complex valued variants where applicable. The complete gamma function existed previously, and the upper/lower incomplete gamma functions are only implemented for the integer case.
- All the function interaces now have float specific methods.

#### org.ojalgo.matrix

- There is a new float based matrix store implementation, Primitive32Store.

#### org.ojalgo.random

- The `getDistribution()` method in the TDistribution is now implemented for the general case. Previously it was only implemented for a few distinct degrees of freedom.

### Changed

- Generic declarations in interfaces and abstract classes (everywhere) that used to be `<N extends Number>` are now `<N extends Comparable<N>>`. Code that extends/implements ojAlgo classes and interaces will most likely need to be updated. Simple usage may not require any changes at all. Please note that `java.lang.Number` is NOT `Comparable` but all the speciic subclasses are.
- Everything (classes/interfaces, constants...) named "Primitive" -something now separates between "Primitive32" and "Primitive64".

#### org.ojalgo.matrix

- PrimitiveDenseStore has been renamed Primitive64Store (and there is now also a Primitive32Store). GenericDenseStore was also renamed GenericStore. Likewise PrimitiveMatrix is repalced by Primitive64Matrix and Primitive32Matrix.

#### org.ojalgo.scalar

- ComplexNumber and Quaternion are now final. That means there are no longer special normalised subclasses (no Versor).

#### org.ojalgo.structure

- The methods in the Mutate*D.Fillable interaces that take a NullaryFunction as input has changed the generic declaration from `NullaryFunction<N>` to `NullaryFunction<?>`.
- Reftactoring of the Factory*D interfaces.


## [47.3.1] – 2019-09-29

Expand Down Expand Up @@ -45,6 +89,7 @@ Added / Changed / Deprecated / Removed / Fixed / Security

- The compareTo method of CalendarDateDuration didn't work when the unit of either instances was "nanos".


## [47.3.0] – 2019-08-08

### Changed
Expand Down Expand Up @@ -108,6 +153,7 @@ Added / Changed / Deprecated / Removed / Fixed / Security
* Additions to Structure2D.Logical (Moved definitions from MatrixStore.LogicalBuilder to here).
* Refactoring to Factory1D, Factory2D and FactoryAnyD – makeZero(...) is renamed make(...) and everything else is moved to a nested subinterface Dense.


## [47.2.0] – 2019-05-03

### Changed
Expand Down Expand Up @@ -143,6 +189,7 @@ Added / Changed / Deprecated / Removed / Fixed / Security

* The Stream2D interface now has methods operateOnColumns(...) and operateOnRows(...)


## [47.1.2] – 2019-04-23

### Changed
Expand All @@ -152,6 +199,7 @@ Added / Changed / Deprecated / Removed / Fixed / Security
* Fixed bug related to LDL – stackoverflow if you called isSolvable() on some LDL instances.
* Various tweaks and cleanup with MatrixDecompostion:s


## [47.1.1] – 2019-04-12

### Changed
Expand All @@ -174,6 +222,7 @@ Added / Changed / Deprecated / Removed / Fixed / Security
* The Stream1D, Stream2D and StreamAnyD each got a new method named operateOnAny that takes a Transformation?D as input.
* The Mutate1D.ModifiableReceiver, Mutate2D.ModifiableReceiver and MutateAnyD.ModifiableReceiver each got a new method named modifyAny that takes a Transformation?D as input.


## [47.1.0] – 2019-04-09

### Changed
Expand Down Expand Up @@ -228,6 +277,7 @@ Added / Changed / Deprecated / Removed / Fixed / Security

* Additions to Stopwatch that make it easier to compare with time limits in various forms.


## [47.0.0] – 2018-12-16

### Changed
Expand Down Expand Up @@ -276,6 +326,7 @@ Added / Changed / Deprecated / Removed / Fixed / Security

* 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.


## [46.2.0] – 2018-10-04

### Changed
Expand All @@ -295,6 +346,7 @@ Nothing in ojAlgo implements Serializable - a few odd classes used to declare th

* Access1D no longer extends Iterable. To iterate over the elements use `elements()`.


## [46.1.0] – 2018-09-17

### Changed
Expand All @@ -320,6 +372,7 @@ Nothing in ojAlgo implements Serializable - a few odd classes used to declare th
* 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.


## [46.0.0] – 2018-08-19

### Changed
Expand Down Expand Up @@ -381,6 +434,7 @@ Nothing in ojAlgo implements Serializable - a few odd classes used to declare th
* New class ObjectPool
* The generics type parameter of NumberContext.Enforceable changed from `<N extends Number>` to `<T>`.


## [45.1.0] – 2018-04-13

### Changed
Expand Down Expand Up @@ -414,6 +468,7 @@ Nothing in ojAlgo implements Serializable - a few odd classes used to declare th
* 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.


## [45.0.0] – 2018-03-30

### Changed
Expand Down Expand Up @@ -475,6 +530,7 @@ Nothing in ojAlgo implements Serializable - a few odd classes used to declare th
* 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)


## [44.0.0] – 2017-09-27

### Changed
Expand Down Expand Up @@ -540,6 +596,7 @@ Nothing in ojAlgo implements Serializable - a few odd classes used to declare th
* 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 ==.


## [43.0.0] – 2017-04-22

### Changed
Expand Down Expand Up @@ -606,6 +663,7 @@ Nothing in ojAlgo implements Serializable - a few odd classes used to declare th

* 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.


## [42.0.0] – 2017-02-03

### Changed
Expand Down Expand Up @@ -654,6 +712,7 @@ Nothing in ojAlgo implements Serializable - a few odd classes used to declare th
* 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.


## [41.0.0] – 2016-11-13

### Changed
Expand Down Expand Up @@ -718,6 +777,7 @@ Nothing in ojAlgo implements Serializable - a few odd classes used to declare th
* New builder instances in the BasicSeries interface. If you use them they will return implementations, new to v41, backed by array classes from the org.ojalgo.array package. It is now possible to use just about any date/time related class as a time series key.
* The methods getDataSeries() and getPrimitiveValues() are deprecated, both replaced by the new method getPrimitiveSeries(). Further the modifyAll(UnaryFunction) method is deprecated. You should do modifications on the series returned by getPrimitiveSeries().


## [40.0.0] – 2016-06-20

### Changed
Expand Down Expand Up @@ -778,6 +838,7 @@ Nothing in ojAlgo implements Serializable - a few odd classes used to declare th
* CalendarDateUnit now implements TemporalUnit
* CalendarDateDuration now implements TemporalAmount


## [39.0.0] – 2015-11-28

### Changed
Expand Down Expand Up @@ -862,12 +923,14 @@ Nothing in ojAlgo implements Serializable - a few odd classes used to declare th

>API-breaking!

## [38.0.0]

### Changed

The first version to require Java 8!


## [37.0.0] / [37.1.0]

### Changed
Expand Down
21 changes: 11 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,25 @@ ojAlgo is available at [The Central (Maven) Repository](https://search.maven.org
<version>X.Y.Z</version>
</dependency>
```
...or download the jar from SourceForge.
<p align="center">
<a href="https://sourceforge.net/projects/ojalgo/files/latest/download" rel="nofollow"><img alt="Download oj! Algorithms" src="https://a.fsdn.com/con/app/sf-download-button"></a>
</p>

### Documentation and Support

User documentation wiki with examples is here at GitHub: https://github.com/optimatika/ojAlgo/wiki
User documentation is available in the form of blog posts at the ojAlgo web site: http://ojalgo.org/

The wiki here at GitHub is in the process of being migrated to the ojAlgo site, but still contains info not available elsewhere: https://github.com/optimatika/ojAlgo/wiki

Programming questions related to ojAlgo are best asked at [stack overflow](https://stackoverflow.com/search?tab=relevance&q=ojalgo). Just remember to actually mention ojAlgo and tag the question using 'ojalgo' and whatever other tags you find suitable.

Bug reports and to some extent feature requests should be posted here at GitHub: https://github.com/optimatika/ojAlgo/issues
Bug reports, and to some extent feature requests, should be posted here at GitHub: https://github.com/optimatika/ojAlgo/issues
(Please do not use GitHub Issues for general discussions or user support requests!)

The [ojAlgo-user mailing list](https://sourceforge.net/p/ojalgo/mailman/ojalgo-user/) can be used for just about anything as long as it relates to ojAlgo. (Note that you have to be a member to post to that list!)

ojAlgo is Open Source, and you are strongly encouraged to clone or fork this repository and work directly with the source code. The source code is (part of) the documentation, and you should read it.

<a href="https://tidelift.com/subscription/pkg/maven-org-ojalgo-ojalgo?utm_source=maven-org-ojalgo-ojalgo&utm_medium=referral&utm_campaign=readme" rel="nofollow"><img alt="Tidelift Subscription" height="100" src="https://numpy.org/_static/Tidelift_Logos_RGB_Tidelift_Mark_On-White.png"></a>
### Enterprise-Grade Support

Available as part of the Tidelift Subscription

The maintainers of ojAlgo and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/maven-org-ojalgo-ojalgo?utm_source=maven-org-ojalgo-ojalgo&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)

<a href="https://tidelift.com/subscription/pkg/maven-org-ojalgo-ojalgo?utm_source=maven-org-ojalgo-ojalgo&utm_medium=referral&utm_campaign=enterprise&utm_term=repo" rel="nofollow"><img alt="Tidelift Subscription" height="100" src="https://numpy.org/_static/Tidelift_Logos_RGB_Tidelift_Mark_On-White.png"></a>

[Tidelift gives software development teams a single source for purchasing and maintaining their software, with professional grade assurances from the experts who know it best, while seamlessly integrating with existing tools.](https://tidelift.com/subscription/pkg/maven-org-ojalgo-ojalgo?utm_source=maven-org-ojalgo-ojalgo&utm_medium=referral&utm_campaign=readme)
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.ojalgo</groupId>
<artifactId>ojalgo</artifactId>
<version>47.3.1</version>
<version>48.0.0</version>
<packaging>jar</packaging>
<name>ojAlgo</name>
<url>http://ojalgo.org</url>
Expand Down
15 changes: 15 additions & 0 deletions rsrc/csv/example.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# This example was extracted from Wikipedia (en.wikipedia.org/wiki/Comma-separated_values)
#
# 2 double quotes ("") are used as the escape sequence for quoted fields, as per the RFC4180 standard
#

Year,Make,Model,Description,Price
1997,Ford,E350,"ac, abs, moon",3000.00
1999,Chevy,"Venture ""Extended Edition""","",4900.00

# Look, a multi line value. And blank rows around it!

1996,Jeep,Grand Cherokee,"MUST SELL!
air, moon roof, loaded",4799.00
1999,Chevy,"Venture ""Extended Edition, Very Large""",,5000.00
,,"Venture ""Extended Edition""","",4900.00
22 changes: 22 additions & 0 deletions rsrc/csv/fast.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
A,B,C,D,E,F,G,H,I,J
,B,C,D,E,F,G,H,I,J
A,,C,D,E,F,G,H,I,J
A,B,,D,E,F,G,H,I,J
A,B,C,,E,F,G,H,I,J
A,B,C,D,,F,G,H,I,J
A,B,C,D,E,,G,H,I,J
A,B,C,D,E,F,,H,I,J
A,B,C,D,E,F,G,,I,J
A,B,C,D,E,F,G,H,,J
A,B,C,D,E,F,G,H,I,
,,,,,,,,,
A,,,,,,,,,
,B,,,,,,,,
,,C,,,,,,,
,,,D,,,,,,
,,,,E,,,,,
,,,,,F,,,,
,,,,,,G,,,
,,,,,,,H,,
,,,,,,,,I,
,,,,,,,,,J
22 changes: 22 additions & 0 deletions rsrc/csv/quoted.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
"A","B","C","D","E","F","G","H","I","J"
"","B","C","D","E","F","G","H","I","J"
"A","","C","D","E","F","G","H","I","J"
"A","B","","D","E","F","G","H","I","J"
"A","B","C","","E","F","G","H","I","J"
"A","B","C","D","","F","G","H","I","J"
"A","B","C","D","E","","G","H","I","J"
"A","B","C","D","E","F","","H","I","J"
"A","B","C","D","E","F","G","","I","J"
"A","B","C","D","E","F","G","H","","J"
"A","B","C","D","E","F","G","H","I",""
"","","","","","","","","",""
"A","","","","","","","","",""
"","B","","","","","","","",""
"","","C","","","","","","",""
"","","","D","","","","","",""
"","","","","E","","","","",""
"","","","","","F","","","",""
"","","","","","","G","","",""
"","","","","","","","H","",""
"","","","","","","","","I",""
"","","","","","","","","","J"
2 changes: 1 addition & 1 deletion src/org/ojalgo/algebra/Field.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,6 @@
* @see <a href="https://en.wikipedia.org/wiki/Field_(mathematics)">Field</a>
* @see <a href="https://en.wikipedia.org/wiki/Division_ring">Division ring</a>
*/
public interface Field<S> extends Ring<S>, Group.Multiplicative<S>, Operation.Subtraction<S>, Operation.Division<S> {
public interface Field<T> extends Ring<T>, Group.Multiplicative<T>, Operation.Subtraction<T>, Operation.Division<T> {

}
8 changes: 4 additions & 4 deletions src/org/ojalgo/algebra/Group.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,28 +46,28 @@ public interface Group {
/**
* @see <a href="https://en.wikipedia.org/wiki/Additive_group">Additive group</a>
*/
public interface Additive<S> extends Group, Operation.Addition<S> {
public interface Additive<T> extends Group, Operation.Addition<T> {

/**
* The additive inverse of this.
*
* @return <code>-this</code>.
*/
S negate();
T negate();

}

/**
* @see <a href="https://en.wikipedia.org/wiki/Multiplicative_group">Multiplicative group</a>
*/
public interface Multiplicative<S> extends Group, Operation.Multiplication<S> {
public interface Multiplicative<T> extends Group, Operation.Multiplication<T> {

/**
* The multiplicative inverse.
*
* @return <code>IDENTITY / this</code>.
*/
S invert();
T invert();

}

Expand Down
4 changes: 2 additions & 2 deletions src/org/ojalgo/algebra/NormedVectorSpace.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
/**
* @author apete
*/
public interface NormedVectorSpace<V, F extends Number> extends VectorSpace<V, F> {
public interface NormedVectorSpace<T, N extends Comparable<N>> extends VectorSpace<T, N> {

/**
* @param comparedTo What to compare with
Expand All @@ -44,6 +44,6 @@ public interface NormedVectorSpace<V, F extends Number> extends VectorSpace<V, F
*
* @return A unit "vector"
*/
V signum();
T signum();

}
2 changes: 1 addition & 1 deletion src/org/ojalgo/algebra/Ring.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,6 @@
* @see <a href="https://en.wikipedia.org/wiki/Distributive_property">Distributive property</a>
* @see <a href="https://en.wikipedia.org/wiki/Associative_property">Associative property</a>
*/
public interface Ring<S> extends Group.Additive<S>, Operation.Multiplication<S> {
public interface Ring<T> extends Group.Additive<T>, Operation.Multiplication<T> {

}
Loading

0 comments on commit 8693750

Please sign in to comment.