Class DenseSingularValue<N extends java.lang.Comparable<N>>
- java.lang.Object
-
- org.ojalgo.matrix.decomposition.AbstractDecomposition<N,DecompositionStore<N>>
-
- org.ojalgo.matrix.decomposition.DenseSingularValue<N>
-
- All Implemented Interfaces:
MatrixDecomposition<N>,MatrixDecomposition.EconomySize<N>,MatrixDecomposition.Ordered<N>,MatrixDecomposition.RankRevealing<N>,MatrixDecomposition.Solver<N>,MatrixDecomposition.Values<N>,SingularValue<N>,Provider2D,Provider2D.Condition,Provider2D.Inverse<java.util.Optional<MatrixStore<N>>>,Provider2D.Rank,Provider2D.Solution<java.util.Optional<MatrixStore<N>>>,InverterTask<N>,MatrixTask<N>,SolverTask<N>,InvertibleFactor<N>,Structure1D,Structure2D
- Direct Known Subclasses:
DenseSingularValue.C128,DenseSingularValue.H256,DenseSingularValue.Q128,DenseSingularValue.R064,DenseSingularValue.R128
abstract class DenseSingularValue<N extends java.lang.Comparable<N>> extends AbstractDecomposition<N,DecompositionStore<N>> implements SingularValue<N>
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classDenseSingularValue.C128(package private) static classDenseSingularValue.H256(package private) static classDenseSingularValue.Q128(package private) static classDenseSingularValue.R064(package private) static classDenseSingularValue.R128-
Nested classes/interfaces inherited from interface org.ojalgo.matrix.transformation.InvertibleFactor
InvertibleFactor.IdentityFactor<N extends java.lang.Comparable<N>>
-
Nested classes/interfaces inherited from interface org.ojalgo.matrix.decomposition.MatrixDecomposition
MatrixDecomposition.Determinant<N extends java.lang.Comparable<N>>, MatrixDecomposition.EconomySize<N extends java.lang.Comparable<N>>, MatrixDecomposition.Factory<D extends MatrixDecomposition<?>>, MatrixDecomposition.Hermitian<N extends java.lang.Comparable<N>>, MatrixDecomposition.Ordered<N extends java.lang.Comparable<N>>, MatrixDecomposition.Pivoting<N extends java.lang.Comparable<N>>, MatrixDecomposition.RankRevealing<N extends java.lang.Comparable<N>>, MatrixDecomposition.Solver<N extends java.lang.Comparable<N>>, MatrixDecomposition.Updatable<N extends java.lang.Comparable<N>>, MatrixDecomposition.Values<N extends java.lang.Comparable<N>>
-
Nested classes/interfaces inherited from interface org.ojalgo.matrix.Provider2D
Provider2D.Condition, Provider2D.Determinant<N extends java.lang.Comparable<N>>, Provider2D.Eigenpairs, Provider2D.Hermitian, Provider2D.Inverse<M>, Provider2D.Rank, Provider2D.Solution<M>, Provider2D.Symmetric, Provider2D.Trace<N extends java.lang.Comparable<N>>
-
Nested classes/interfaces inherited from interface org.ojalgo.matrix.decomposition.SingularValue
SingularValue.Factory<N extends java.lang.Comparable<N>>
-
Nested classes/interfaces inherited from interface org.ojalgo.structure.Structure1D
Structure1D.BasicMapper<T>, Structure1D.IndexMapper<T>, Structure1D.IntIndex, Structure1D.LongIndex, Structure1D.LoopCallback
-
Nested classes/interfaces inherited from interface org.ojalgo.structure.Structure2D
Structure2D.IntRowColumn, Structure2D.Logical<S extends Structure2D,B extends Structure2D.Logical<S,B>>, Structure2D.LongRowColumn, Structure2D.ReducibleTo1D<R extends Structure1D>, Structure2D.Reshapable, Structure2D.RowColumnKey<R,C>, Structure2D.RowColumnMapper<R,C>
-
-
Field Summary
Fields Modifier and Type Field Description private double[]eprivate DenseBidiagonal<N>myBidiagonalprivate booleanmyFullSizeprivate Structure2DmyInputStructureprivate MatrixStore<N>myInverseprivate MatrixStore<N>mySprivate Array1D<java.lang.Double>mySingularValuesprivate booleanmyTransposedprivate MatrixStore<N>myUprivate MatrixStore<N>myVprivate booleanmyValuesOnlyprivate double[]sprivate static doubleTINY≈ 1.6E-291-
Fields inherited from interface org.ojalgo.matrix.decomposition.MatrixDecomposition
TYPICAL
-
-
Constructor Summary
Constructors Constructor Description DenseSingularValue(PhysicalStore.Factory<N,? extends DecompositionStore<N>> factory, DenseBidiagonal<N> bidiagonal, boolean fullSize)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidbtran(double[] arg)voidbtran(PhysicalStore<N> arg)Backwards-transformationprotected booleancheckSolvability()protected booleancompute(Access2D.Collectable<N,? super TransformableRegion<N>> matrix, boolean valuesOnly, boolean fullSize)protected booleancomputeBidiagonal(Access2D.Collectable<N,? super TransformableRegion<N>> matrix, boolean fullSize)booleancomputeValuesOnly(Access2D.Collectable<N,? super TransformableRegion<N>> matrix)intcountSignificant(double threshold)booleandecompose(Access2D.Collectable<N,? super TransformableRegion<N>> matrix)private static voiddoCase1(double[] s, double[] e, int p, int k, RotateRight q2RotR)private static voiddoCase2(double[] s, double[] e, int p, int k, RotateRight mtrxQ1)private static voiddoCase3(double[] s, double[] e, int p, int k, RotateRight q1RotR, RotateRight q2RotR)private static voiddoCase4(double[] s, int k, NegateColumn q2NegCol, ExchangeColumns q1XchgCols, ExchangeColumns q2XchgCols)protected booleandoCompute(Access2D.Collectable<N,? super TransformableRegion<N>> matrix, boolean valuesOnly, boolean fullSize)voidftran(double[] arg)intgetColDim()doublegetCondition()The condition number.MatrixStore<N>getCovariance()MatrixStore<N>getD()Deprecated.UsegetS()insteaddoublegetFrobeniusNorm()Sometimes also called the Schatten 2-norm or Hilbert-Schmidt norm.MatrixStore<N>getInverse()The output must be a "right inverse" and a "generalised inverse".MatrixStore<N>getInverse(PhysicalStore<N> preallocated)Implementing this method is optional.private MatrixStore<N>getInverseOldVersion(DecompositionStore<N> preallocated)doublegetKyFanNorm(int k)Ky Fan k-norm.doublegetOperatorNorm()doublegetRankThreshold()intgetRowDim()MatrixStore<N>getS()Array1D<java.lang.Double>getSingularValues()MatrixStore<N>getSolution(Access2D.Collectable<N,? super PhysicalStore<N>> rhs, PhysicalStore<N> preallocated)Implementing this method is optional.doublegetTraceNorm()MatrixStore<N>getU()If [A] is m-by-n and its rank is r, then: The first r columns of [U] span the column space, range or image of [A]. The last m-r columns of [U] span the left nullspace or cokernel of [A]. Calculating the QR decomposition of [A] is a faster alternative.MatrixStore<N>getV()If [A] is m-by-n and its rank is r, then: The first r columns of [V] span the row space or coimage of [A]. The last n-r columns of [V] span the nullspace or kernel of [A]. Calculating the QR decomposition of [A]T is a faster alternative.MatrixStore<N>invert(Access2D<?> original)The output must be a "right inverse" and a "generalised inverse".MatrixStore<N>invert(Access2D<?> original, PhysicalStore<N> preallocated)Exactly how (if at all) a specific implementation makes use ofpreallocatedis not specified by this interface.booleanisFullRank()booleanisFullSize()booleanisOrdered()This is a property of the algorithm/implementation, not the data.booleanisSolvable()Please note that producing a pseudoinverse and/or a least squares solution is ok! The return value, of this method, is not an indication of if the decomposed matrix is square, has full rank, is postive definite or whatever.protected booleanisTransposed()protected MatrixStore<N>makeD()protected Array1D<java.lang.Double>makeSingularValues()PhysicalStore<N>preallocate(int nbEquations, int nbVariables, int nbSolutions)voidreset()Delete computed results, and resets attributes to default valuesMatrixStore<N>solve(Access2D<?> body, Access2D<?> rhs)[A][X]=[B] or [body][return]=[rhs]MatrixStore<N>solve(Access2D<?> body, Access2D<?> rhs, PhysicalStore<N> preallocated)Exactly how (if at all) a specific implementation makes use ofpreallocatedis not specified by this interface.(package private) static voidtoDiagonal(double[] s, double[] e, RotateRight q1RotR, RotateRight q2RotR, ExchangeColumns q1XchgCols, ExchangeColumns q2XchgCols, NegateColumn q2NegCol)-
Methods inherited from class org.ojalgo.matrix.decomposition.AbstractDecomposition
aggregator, applyPivotOrder, applyReverseOrder, collect, computed, copyColumn, copyRow, function, getDimensionalEpsilon, isAspectRatioNormal, isComputed, makeArray, makeDiagonal, makeEye, makeHouseholder, makeIdentity, makeRotation, makeRotation, makeZero, makeZero, scalar, wrap
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.ojalgo.matrix.task.InverterTask
preallocate
-
Methods inherited from interface org.ojalgo.matrix.decomposition.MatrixDecomposition
isComputed
-
Methods inherited from interface org.ojalgo.matrix.decomposition.MatrixDecomposition.RankRevealing
getRank
-
Methods inherited from interface org.ojalgo.matrix.decomposition.MatrixDecomposition.Solver
compute, getSolution, invert, preallocate, solve, toInverseProvider, toSolutionProvider
-
Methods inherited from interface org.ojalgo.matrix.decomposition.SingularValue
ftran, getSingularValues, reconstruct, reconstruct
-
Methods inherited from interface org.ojalgo.matrix.task.SolverTask
preallocate
-
Methods inherited from interface org.ojalgo.structure.Structure2D
count, countColumns, countRows, firstInColumn, firstInRow, getMaxDim, getMinDim, isEmpty, isFat, isScalar, isSquare, isTall, isVector, limitOfColumn, limitOfRow, size
-
-
-
-
Field Detail
-
TINY
private static final double TINY
≈ 1.6E-291
-
e
private double[] e
-
myBidiagonal
private final DenseBidiagonal<N extends java.lang.Comparable<N>> myBidiagonal
-
myFullSize
private final boolean myFullSize
-
myInputStructure
private final Structure2D myInputStructure
-
myInverse
private transient MatrixStore<N extends java.lang.Comparable<N>> myInverse
-
myS
private transient MatrixStore<N extends java.lang.Comparable<N>> myS
-
mySingularValues
private transient Array1D<java.lang.Double> mySingularValues
-
myTransposed
private boolean myTransposed
-
myU
private transient MatrixStore<N extends java.lang.Comparable<N>> myU
-
myV
private transient MatrixStore<N extends java.lang.Comparable<N>> myV
-
myValuesOnly
private boolean myValuesOnly
-
s
private double[] s
-
-
Constructor Detail
-
DenseSingularValue
DenseSingularValue(PhysicalStore.Factory<N,? extends DecompositionStore<N>> factory, DenseBidiagonal<N> bidiagonal, boolean fullSize)
-
-
Method Detail
-
doCase1
private static void doCase1(double[] s, double[] e, int p, int k, RotateRight q2RotR)
-
doCase2
private static void doCase2(double[] s, double[] e, int p, int k, RotateRight mtrxQ1)
-
doCase3
private static void doCase3(double[] s, double[] e, int p, int k, RotateRight q1RotR, RotateRight q2RotR)
-
doCase4
private static void doCase4(double[] s, int k, NegateColumn q2NegCol, ExchangeColumns q1XchgCols, ExchangeColumns q2XchgCols)
-
toDiagonal
static void toDiagonal(double[] s, double[] e, RotateRight q1RotR, RotateRight q2RotR, ExchangeColumns q1XchgCols, ExchangeColumns q2XchgCols, NegateColumn q2NegCol)
-
btran
public void btran(double[] arg)
- Specified by:
btranin interfaceInvertibleFactor<N extends java.lang.Comparable<N>>- See Also:
InvertibleFactor.IdentityFactor.btran(PhysicalStore)
-
btran
public final void btran(PhysicalStore<N> arg)
Description copied from interface:InvertibleFactorBackwards-transformationSolve [x]T[A] = [b]T (equivalent to [A]T[x] = [b]) by transforming [b] into [x] in-place.
- Specified by:
btranin interfaceInvertibleFactor<N extends java.lang.Comparable<N>>- Parameters:
arg- [b] transformed into [x]
-
computeValuesOnly
public boolean computeValuesOnly(Access2D.Collectable<N,? super TransformableRegion<N>> matrix)
- Specified by:
computeValuesOnlyin interfaceMatrixDecomposition.Values<N extends java.lang.Comparable<N>>- Parameters:
matrix- The matrix to decompose- Returns:
- The same as
MatrixDecomposition.Solver.compute(Collectable)orMatrixDecomposition.decompose(Collectable)if the instance does not implementMatrixDecomposition.Solver.
-
countSignificant
public int countSignificant(double threshold)
- Specified by:
countSignificantin interfaceMatrixDecomposition.RankRevealing<N extends java.lang.Comparable<N>>- Parameters:
threshold- Significance limit- Returns:
- The number of elements in the diagonal matrix that are greater than the threshold
-
decompose
public boolean decompose(Access2D.Collectable<N,? super TransformableRegion<N>> matrix)
- Specified by:
decomposein interfaceMatrixDecomposition<N extends java.lang.Comparable<N>>- Parameters:
matrix- A matrix to decompose- Returns:
- true if decomposition suceeded; false if not
-
ftran
public void ftran(double[] arg)
- Specified by:
ftranin interfaceInvertibleFactor<N extends java.lang.Comparable<N>>- See Also:
InvertibleFactor.IdentityFactor.ftran(PhysicalStore)
-
getColDim
public int getColDim()
- Specified by:
getColDimin interfaceStructure2D- Returns:
- The number of columns
-
getCondition
public double getCondition()
Description copied from interface:SingularValueThe condition number.- Specified by:
getConditionin interfaceProvider2D.Condition- Specified by:
getConditionin interfaceSingularValue<N extends java.lang.Comparable<N>>- Returns:
- The largest singular value divided by the smallest singular value.
-
getCovariance
public MatrixStore<N> getCovariance()
- Specified by:
getCovariancein interfaceSingularValue<N extends java.lang.Comparable<N>>- Returns:
- [[A]T[A]]-1 Where [A] is the original matrix.
-
getD
@Deprecated public MatrixStore<N> getD()
Deprecated.UsegetS()instead- Specified by:
getDin interfaceSingularValue<N extends java.lang.Comparable<N>>- Returns:
- The diagonal matrix of singular values.
-
getFrobeniusNorm
public double getFrobeniusNorm()
Description copied from interface:SingularValueSometimes also called the Schatten 2-norm or Hilbert-Schmidt norm.- Specified by:
getFrobeniusNormin interfaceSingularValue<N extends java.lang.Comparable<N>>- Returns:
- The square root of the sum of squares of the singular values.
-
getInverse
public MatrixStore<N> getInverse()
Description copied from interface:MatrixDecomposition.SolverThe output must be a "right inverse" and a "generalised inverse".- Specified by:
getInversein interfaceMatrixDecomposition.Solver<N extends java.lang.Comparable<N>>
-
getInverse
public MatrixStore<N> getInverse(PhysicalStore<N> preallocated)
Description copied from interface:MatrixDecomposition.SolverImplementing this method is optional.
Exactly how a specific implementation makes use of
preallocatedis not specified by this interface. It must be documented for each implementation.Should produce the same results as calling
MatrixDecomposition.Solver.getInverse().- Specified by:
getInversein interfaceMatrixDecomposition.Solver<N extends java.lang.Comparable<N>>- Parameters:
preallocated- Preallocated memory for the results, possibly some intermediate results. You must assume this is modified, but you cannot assume it will contain the full/final/correct solution. UseMatrixDecomposition.Solver.preallocate(int, int)orInverterTask.preallocate(Structure2D)to get a suitable instance.- Returns:
- The inverse, this is where you get the solution
-
getKyFanNorm
public double getKyFanNorm(int k)
Description copied from interface:SingularValueKy Fan k-norm.
The first Ky Fan k-norm is the operator norm (the largest singular value), and the last is called the trace norm (the sum of all singular values).
- Specified by:
getKyFanNormin interfaceSingularValue<N extends java.lang.Comparable<N>>- Parameters:
k- The number of singular values to add up.- Returns:
- The sum of the k largest singular values.
-
getOperatorNorm
public double getOperatorNorm()
- Specified by:
getOperatorNormin interfaceSingularValue<N extends java.lang.Comparable<N>>- Returns:
- 2-norm
-
getRankThreshold
public double getRankThreshold()
- Specified by:
getRankThresholdin interfaceMatrixDecomposition.RankRevealing<N extends java.lang.Comparable<N>>
-
getRowDim
public int getRowDim()
- Specified by:
getRowDimin interfaceStructure2D- Returns:
- The number of rows
-
getS
public MatrixStore<N> getS()
- Specified by:
getSin interfaceSingularValue<N extends java.lang.Comparable<N>>- Returns:
- The diagonal matrix of singular values.
-
getSingularValues
public Array1D<java.lang.Double> getSingularValues()
- Specified by:
getSingularValuesin interfaceSingularValue<N extends java.lang.Comparable<N>>- Returns:
- The singular values ordered in descending order.
-
getSolution
public MatrixStore<N> getSolution(Access2D.Collectable<N,? super PhysicalStore<N>> rhs, PhysicalStore<N> preallocated)
Description copied from interface:MatrixDecomposition.SolverImplementing this method is optional.
Exactly how a specific implementation makes use of
preallocatedis not specified by this interface. It must be documented for each implementation.Should produce the same results as calling
MatrixDecomposition.Solver.getSolution(Collectable).- Specified by:
getSolutionin interfaceMatrixDecomposition.Solver<N extends java.lang.Comparable<N>>- Parameters:
rhs- The Right Hand Side, wont be modfiedpreallocated- Preallocated memory for the results, possibly some intermediate results. You must assume this is modified, but you cannot assume it will contain the full/final/correct solution. UseSolverTask.preallocate(int, int, int)orSolverTask.preallocate(Structure2D, Structure2D)to get a suitable instance.- Returns:
- The solution
-
getTraceNorm
public double getTraceNorm()
- Specified by:
getTraceNormin interfaceSingularValue<N extends java.lang.Comparable<N>>
-
getU
public MatrixStore<N> getU()
Description copied from interface:SingularValueIf [A] is m-by-n and its rank is r, then:- The first r columns of [U] span the column space, range or image of [A].
- The last m-r columns of [U] span the left nullspace or cokernel of [A].
- Specified by:
getUin interfaceSingularValue<N extends java.lang.Comparable<N>>
-
getV
public MatrixStore<N> getV()
Description copied from interface:SingularValueIf [A] is m-by-n and its rank is r, then:- The first r columns of [V] span the row space or coimage of [A].
- The last n-r columns of [V] span the nullspace or kernel of [A].
- Specified by:
getVin interfaceSingularValue<N extends java.lang.Comparable<N>>
-
invert
public MatrixStore<N> invert(Access2D<?> original) throws RecoverableCondition
Description copied from interface:InverterTaskThe output must be a "right inverse" and a "generalised inverse".- Specified by:
invertin interfaceInverterTask<N extends java.lang.Comparable<N>>- Throws:
RecoverableCondition
-
invert
public MatrixStore<N> invert(Access2D<?> original, PhysicalStore<N> preallocated) throws RecoverableCondition
Description copied from interface:InverterTaskExactly how (if at all) a specific implementation makes use of
preallocatedis not specified by this interface. It must be documented for each implementation.Should produce the same results as calling
InverterTask.invert(Access2D).Use
InverterTask.preallocate(Structure2D)to obtain a suitbalepreallocated.- Specified by:
invertin interfaceInverterTask<N extends java.lang.Comparable<N>>preallocated- Preallocated memory for the results, possibly some intermediate results. You must assume this is modified, but you cannot assume it will contain the full/final/correct solution.- Returns:
- The inverse
- Throws:
RecoverableCondition- TODO
-
isFullRank
public boolean isFullRank()
- Specified by:
isFullRankin interfaceMatrixDecomposition.RankRevealing<N extends java.lang.Comparable<N>>- Returns:
- true if the rank is equal to the minimum of the row and column dimensions; false if not
-
isFullSize
public boolean isFullSize()
- Specified by:
isFullSizein interfaceMatrixDecomposition.EconomySize<N extends java.lang.Comparable<N>>- Returns:
- True if it will generate a full sized decomposition.
-
isOrdered
public boolean isOrdered()
Description copied from interface:MatrixDecomposition.OrderedThis is a property of the algorithm/implementation, not the data. Typically relevant forSingularValue,Eigenvalueor anyMatrixDecomposition.RankRevealingdecomposition.- Specified by:
isOrderedin interfaceMatrixDecomposition.Ordered<N extends java.lang.Comparable<N>>- Returns:
- true if the rows/columns of the returned matrix factors are guaranteed some specific order; false if there is no such guarantee.
-
isSolvable
public boolean isSolvable()
Description copied from interface:MatrixDecomposition.SolverPlease note that producing a pseudoinverse and/or a least squares solution is ok! The return value, of this method, is not an indication of if the decomposed matrix is square, has full rank, is postive definite or whatever. It's that in combination with the specific decomposition algorithm's capabilities.- Specified by:
isSolvablein interfaceMatrixDecomposition.Solver<N extends java.lang.Comparable<N>>- Overrides:
isSolvablein classAbstractDecomposition<N extends java.lang.Comparable<N>,DecompositionStore<N extends java.lang.Comparable<N>>>- Returns:
- true if this matrix decomposition is in a state to be able to deliver an inverse or an equation system solution (with some degree of numerical stability).
-
preallocate
public PhysicalStore<N> preallocate(int nbEquations, int nbVariables, int nbSolutions)
- Specified by:
preallocatein interfaceSolverTask<N extends java.lang.Comparable<N>>
-
reset
public void reset()
Description copied from interface:MatrixDecompositionDelete computed results, and resets attributes to default values- Specified by:
resetin interfaceMatrixDecomposition<N extends java.lang.Comparable<N>>- Overrides:
resetin classAbstractDecomposition<N extends java.lang.Comparable<N>,DecompositionStore<N extends java.lang.Comparable<N>>>
-
solve
public MatrixStore<N> solve(Access2D<?> body, Access2D<?> rhs) throws RecoverableCondition
Description copied from interface:SolverTask[A][X]=[B] or [body][return]=[rhs]- Specified by:
solvein interfaceSolverTask<N extends java.lang.Comparable<N>>- Throws:
RecoverableCondition
-
solve
public MatrixStore<N> solve(Access2D<?> body, Access2D<?> rhs, PhysicalStore<N> preallocated) throws RecoverableCondition
Description copied from interface:SolverTaskExactly how (if at all) a specific implementation makes use of
preallocatedis not specified by this interface. It must be documented for each implementation.Should produce the same results as calling
SolverTask.solve(Access2D, Access2D).Use
SolverTask.preallocate(Structure2D, Structure2D)to obtain a suitbalepreallocated.- Specified by:
solvein interfaceSolverTask<N extends java.lang.Comparable<N>>rhs- The Right Hand Side, wont be modfiedpreallocated- Preallocated memory for the results, possibly some intermediate results. You must assume this is modified, but you cannot assume it will contain the full/ /correct solution.- Returns:
- The solution
- Throws:
RecoverableCondition
-
getInverseOldVersion
private MatrixStore<N> getInverseOldVersion(DecompositionStore<N> preallocated)
-
checkSolvability
protected boolean checkSolvability()
- Overrides:
checkSolvabilityin classAbstractDecomposition<N extends java.lang.Comparable<N>,DecompositionStore<N extends java.lang.Comparable<N>>>
-
compute
protected boolean compute(Access2D.Collectable<N,? super TransformableRegion<N>> matrix, boolean valuesOnly, boolean fullSize)
-
computeBidiagonal
protected boolean computeBidiagonal(Access2D.Collectable<N,? super TransformableRegion<N>> matrix, boolean fullSize)
-
doCompute
protected boolean doCompute(Access2D.Collectable<N,? super TransformableRegion<N>> matrix, boolean valuesOnly, boolean fullSize)
-
isTransposed
protected boolean isTransposed()
-
makeD
protected MatrixStore<N> makeD()
-
makeSingularValues
protected Array1D<java.lang.Double> makeSingularValues()
-
-