ojAlgo v48
diff --git a/pom.xml b/pom.xml
index bbf59bd..fddeaa1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,7 +94,7 @@
<properties>
<!-- UNIQUE FOR THIS JAVA COMPONENT -->
- <ojalgo.version>47.0.0</ojalgo.version>
+ <ojalgo.version>48.0.0-SNAPSHOT</ojalgo.version>
<datasketches-memory.version>1.1.0-incubating</datasketches-memory.version>
<!-- END:UNIQUE FOR THIS JAVA COMPONENT -->
diff --git a/src/main/java/org/apache/datasketches/vector/decomposition/MatrixOpsImplOjAlgo.java b/src/main/java/org/apache/datasketches/vector/decomposition/MatrixOpsImplOjAlgo.java
index 4c1f8d1..39fd0d8 100644
--- a/src/main/java/org/apache/datasketches/vector/decomposition/MatrixOpsImplOjAlgo.java
+++ b/src/main/java/org/apache/datasketches/vector/decomposition/MatrixOpsImplOjAlgo.java
@@ -25,7 +25,7 @@
import org.ojalgo.matrix.decomposition.QR;
import org.ojalgo.matrix.decomposition.SingularValue;
import org.ojalgo.matrix.store.MatrixStore;
-import org.ojalgo.matrix.store.PrimitiveDenseStore;
+import org.ojalgo.matrix.store.Primitive64Store;
import org.ojalgo.matrix.store.SparseStore;
import org.ojalgo.random.Normal;
@@ -34,11 +34,11 @@
class MatrixOpsImplOjAlgo extends MatrixOps {
private double[] sv_;
- private PrimitiveDenseStore Vt_;
+ private Primitive64Store Vt_;
// work objects for SISVD
- private PrimitiveDenseStore block_;
- private PrimitiveDenseStore T_; // also used in SymmetricEVD
+ private Primitive64Store block_;
+ private Primitive64Store T_; // also used in SymmetricEVD
private QR<Double> qr_;
// work objects for Symmetric EVD
@@ -68,21 +68,21 @@
}
if (computeVectors && (Vt_ == null)) {
- Vt_ = PrimitiveDenseStore.FACTORY.makeZero(n_, d_);
+ Vt_ = Primitive64Store.FACTORY.make(n_, d_);
S_ = SparseStore.makePrimitive(sv_.length, sv_.length);
}
switch (algo_) {
case FULL:
- computeFullSVD((PrimitiveDenseStore) A.getRawObject(), computeVectors);
+ computeFullSVD((Primitive64Store) A.getRawObject(), computeVectors);
return;
case SISVD:
- computeSISVD((PrimitiveDenseStore) A.getRawObject(), computeVectors);
+ computeSISVD((Primitive64Store) A.getRawObject(), computeVectors);
return;
case SYM:
- computeSymmEigSVD((PrimitiveDenseStore) A.getRawObject(), computeVectors);
+ computeSymmEigSVD((Primitive64Store) A.getRawObject(), computeVectors);
return;
default:
@@ -131,7 +131,7 @@
}
// store the result back in A
- S_.multiply(Vt_, (PrimitiveDenseStore) A.getRawObject());
+ S_.multiply(Vt_, (Primitive64Store) A.getRawObject());
return svAdjustment;
}
@@ -139,8 +139,8 @@
@Override
Matrix applyAdjustment(final Matrix A, final double svAdjustment) {
// copy A before decomposing
- final PrimitiveDenseStore result
- = PrimitiveDenseStore.FACTORY.copy((PrimitiveDenseStore) A.getRawObject());
+ final Primitive64Store result
+ = Primitive64Store.FACTORY.copy((Primitive64Store) A.getRawObject());
svd(Matrix.wrap(result), true);
for (int i = 0; i < (k_ - 1); ++i) {
@@ -159,12 +159,12 @@
private void computeFullSVD(final MatrixStore<Double> A, final boolean computeVectors) {
if (svd_ == null) {
- svd_ = SingularValue.make(A);
+ svd_ = SingularValue.PRIMITIVE.make(A);
}
if (computeVectors) {
svd_.decompose(A);
- svd_.getQ2().transpose().supplyTo(Vt_);
+ svd_.getV().transpose().supplyTo(Vt_);
} else {
svd_.computeValuesOnly(A);
}
@@ -175,9 +175,9 @@
// want to iterate on smaller dimension of A (n x d)
// currently, error in constructor if d < n, so n is always the smaller dimension
if (block_ == null) {
- block_ = PrimitiveDenseStore.FACTORY.makeFilled(d_, k_, new Normal(0.0, 1.0));
+ block_ = Primitive64Store.FACTORY.makeFilled(d_, k_, new Normal(0.0, 1.0));
qr_ = QR.PRIMITIVE.make(block_);
- T_ = PrimitiveDenseStore.FACTORY.makeZero(n_, k_);
+ T_ = Primitive64Store.FACTORY.make(n_, k_);
} else {
block_.fillAll(new Normal(0.0, 1.0));
}
@@ -196,7 +196,7 @@
// Rayleigh-Ritz postprocessing
- final SingularValue<Double> svd = SingularValue.make(T_);
+ final SingularValue<Double> svd = SingularValue.PRIMITIVE.make(T_);
svd.compute(block_.premultiply(A));
svd.getSingularValues(sv_);
@@ -204,7 +204,7 @@
if (computeVectors) {
// V = block * Q2^T so V^T = Q2 * block^T
// and ojAlgo figures out that it only needs to fill the first k_ rows of Vt_
- svd.getQ2().multiply(block_.transpose()).supplyTo(Vt_);
+ svd.getV().multiply(block_.transpose()).supplyTo(Vt_);
}
}
diff --git a/src/main/java/org/apache/datasketches/vector/matrix/Matrix.java b/src/main/java/org/apache/datasketches/vector/matrix/Matrix.java
index 284eee6..384a425 100644
--- a/src/main/java/org/apache/datasketches/vector/matrix/Matrix.java
+++ b/src/main/java/org/apache/datasketches/vector/matrix/Matrix.java
@@ -21,7 +21,7 @@
import static org.apache.datasketches.vector.matrix.MatrixPreambleUtil.LS;
-import org.ojalgo.matrix.store.PrimitiveDenseStore;
+import org.ojalgo.matrix.store.Primitive64Store;
import org.apache.datasketches.memory.Memory;
import org.apache.datasketches.vector.MatrixFamily;
@@ -62,8 +62,8 @@
public static Matrix wrap(final Object mtx) {
if (mtx == null) {
return null;
- } else if (mtx instanceof PrimitiveDenseStore) {
- return MatrixImplOjAlgo.wrap((PrimitiveDenseStore) mtx);
+ } else if (mtx instanceof Primitive64Store) {
+ return MatrixImplOjAlgo.wrap((Primitive64Store) mtx);
}
else {
throw new IllegalArgumentException("wrap() does not currently support "
diff --git a/src/main/java/org/apache/datasketches/vector/matrix/MatrixImplOjAlgo.java b/src/main/java/org/apache/datasketches/vector/matrix/MatrixImplOjAlgo.java
index 590ddcb..22708a0 100644
--- a/src/main/java/org/apache/datasketches/vector/matrix/MatrixImplOjAlgo.java
+++ b/src/main/java/org/apache/datasketches/vector/matrix/MatrixImplOjAlgo.java
@@ -29,25 +29,25 @@
import static org.apache.datasketches.vector.matrix.MatrixPreambleUtil.extractPreLongs;
import static org.apache.datasketches.vector.matrix.MatrixPreambleUtil.extractSerVer;
-import org.ojalgo.matrix.store.PrimitiveDenseStore;
+import org.ojalgo.matrix.store.Primitive64Store;
import org.apache.datasketches.memory.Memory;
import org.apache.datasketches.memory.WritableMemory;
import org.apache.datasketches.vector.MatrixFamily;
/**
- * Implements the OJ-Algo Matrix operations.
+ * Implements the ojAlgo Matrix operations.
*/
public final class MatrixImplOjAlgo extends Matrix {
- private PrimitiveDenseStore mtx_;
+ private Primitive64Store mtx_;
private MatrixImplOjAlgo(final int numRows, final int numCols) {
- mtx_ = PrimitiveDenseStore.FACTORY.makeZero(numRows, numCols);
+ mtx_ = Primitive64Store.FACTORY.make(numRows, numCols);
numRows_ = numRows;
numCols_ = numCols;
}
- private MatrixImplOjAlgo(final PrimitiveDenseStore mtx) {
+ private MatrixImplOjAlgo(final Primitive64Store mtx) {
mtx_ = mtx;
numRows_ = (int) mtx.countRows();
numCols_ = (int) mtx.countColumns();
@@ -100,7 +100,7 @@
return matrix;
}
- static Matrix wrap(final PrimitiveDenseStore mtx) {
+ static Matrix wrap(final Primitive64Store mtx) {
return new MatrixImplOjAlgo(mtx);
}
diff --git a/src/test/java/org/apache/datasketches/vector/matrix/MatrixImplOjAlgoTest.java b/src/test/java/org/apache/datasketches/vector/matrix/MatrixImplOjAlgoTest.java
index ab76ea5..f46d5f5 100644
--- a/src/test/java/org/apache/datasketches/vector/matrix/MatrixImplOjAlgoTest.java
+++ b/src/test/java/org/apache/datasketches/vector/matrix/MatrixImplOjAlgoTest.java
@@ -22,7 +22,7 @@
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.fail;
-import org.ojalgo.matrix.store.PrimitiveDenseStore;
+import org.ojalgo.matrix.store.Primitive64Store;
import org.testng.annotations.Test;
import org.apache.datasketches.memory.Memory;
@@ -39,7 +39,7 @@
assertEquals(m.getNumRows(), nRows);
assertEquals(m.getNumColumns(), nCols);
- final PrimitiveDenseStore pds = (PrimitiveDenseStore) m.getRawObject();
+ final Primitive64Store pds = (Primitive64Store) m.getRawObject();
assertEquals(pds.countRows(), nRows);
assertEquals(pds.countColumns(), nCols);
@@ -215,7 +215,7 @@
* starting with 1.0.
* @param nRows number of rows
* @param nCols number of columns
- * @return PrimitiveDenseStore, suitable for direct use or wrapping
+ * @return Primitive64Store, suitable for direct use or wrapping
*/
private static Matrix generateIncreasingEye(final int nRows, final int nCols) {
final Matrix m = MatrixImplOjAlgo.newInstance(nRows, nCols);