001    /*
002     * Copyright (C) 2008-2010 by Holger Arndt
003     *
004     * This file is part of the Universal Java Matrix Package (UJMP).
005     * See the NOTICE file distributed with this work for additional
006     * information regarding copyright ownership and licensing.
007     *
008     * UJMP is free software; you can redistribute it and/or modify
009     * it under the terms of the GNU Lesser General Public License as
010     * published by the Free Software Foundation; either version 2
011     * of the License, or (at your option) any later version.
012     *
013     * UJMP is distributed in the hope that it will be useful,
014     * but WITHOUT ANY WARRANTY; without even the implied warranty of
015     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
016     * GNU Lesser General Public License for more details.
017     *
018     * You should have received a copy of the GNU Lesser General Public
019     * License along with UJMP; if not, write to the
020     * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
021     * Boston, MA  02110-1301  USA
022     */
023    
024    package org.ujmp.core.doublematrix;
025    
026    import org.ujmp.core.Matrix;
027    import org.ujmp.core.calculation.DivideMatrix;
028    import org.ujmp.core.calculation.DivideMatrixCalculation;
029    import org.ujmp.core.calculation.DivideScalar;
030    import org.ujmp.core.calculation.DivideScalarCalculation;
031    import org.ujmp.core.calculation.MinusMatrix;
032    import org.ujmp.core.calculation.MinusMatrixCalculation;
033    import org.ujmp.core.calculation.MinusScalar;
034    import org.ujmp.core.calculation.MinusScalarCalculation;
035    import org.ujmp.core.calculation.Mtimes;
036    import org.ujmp.core.calculation.MtimesCalculation;
037    import org.ujmp.core.calculation.PlusMatrix;
038    import org.ujmp.core.calculation.PlusMatrixCalculation;
039    import org.ujmp.core.calculation.PlusScalar;
040    import org.ujmp.core.calculation.PlusScalarCalculation;
041    import org.ujmp.core.calculation.TimesMatrix;
042    import org.ujmp.core.calculation.TimesMatrixCalculation;
043    import org.ujmp.core.calculation.TimesScalar;
044    import org.ujmp.core.calculation.TimesScalarCalculation;
045    import org.ujmp.core.calculation.Transpose;
046    import org.ujmp.core.calculation.TransposeCalculation;
047    import org.ujmp.core.doublematrix.calculation.general.decomposition.Chol;
048    import org.ujmp.core.doublematrix.calculation.general.decomposition.Eig;
049    import org.ujmp.core.doublematrix.calculation.general.decomposition.Inv;
050    import org.ujmp.core.doublematrix.calculation.general.decomposition.InvSPD;
051    import org.ujmp.core.doublematrix.calculation.general.decomposition.InvSymm;
052    import org.ujmp.core.doublematrix.calculation.general.decomposition.LU;
053    import org.ujmp.core.doublematrix.calculation.general.decomposition.QR;
054    import org.ujmp.core.doublematrix.calculation.general.decomposition.SVD;
055    import org.ujmp.core.doublematrix.calculation.general.decomposition.Solve;
056    import org.ujmp.core.doublematrix.calculation.general.decomposition.SolveSPD;
057    import org.ujmp.core.doublematrix.calculation.general.decomposition.SolveSymm;
058    import org.ujmp.core.doublematrix.factory.DefaultDenseDoubleMatrix2DFactory;
059    import org.ujmp.core.doublematrix.factory.DenseDoubleMatrix2DFactory;
060    import org.ujmp.core.matrix.DenseMatrix2D;
061    
062    public interface DenseDoubleMatrix2D extends DoubleMatrix2D, DenseDoubleMatrix, DenseMatrix2D {
063    
064            public static DenseDoubleMatrix2DFactory factory = new DefaultDenseDoubleMatrix2DFactory();
065    
066            public static TransposeCalculation<DenseDoubleMatrix2D, DenseDoubleMatrix2D> transpose = Transpose.DENSEDOUBLEMATRIX2D;
067    
068            public static PlusMatrixCalculation<DenseDoubleMatrix2D, DenseDoubleMatrix2D, DenseDoubleMatrix2D> plusMatrix = PlusMatrix.DENSEDOUBLEMATRIX2D;
069    
070            public static MinusMatrixCalculation<DenseDoubleMatrix2D, DenseDoubleMatrix2D, DenseDoubleMatrix2D> minusMatrix = MinusMatrix.DENSEDOUBLEMATRIX2D;
071    
072            public static TimesMatrixCalculation<DenseDoubleMatrix2D, DenseDoubleMatrix2D, DenseDoubleMatrix2D> timesMatrix = TimesMatrix.DENSEDOUBLEMATRIX2D;
073    
074            public static DivideMatrixCalculation<DenseDoubleMatrix2D, DenseDoubleMatrix2D, DenseDoubleMatrix2D> divideMatrix = DivideMatrix.DENSEDOUBLEMATRIX2D;
075    
076            public static PlusScalarCalculation<DenseDoubleMatrix2D, DenseDoubleMatrix2D> plusScalar = PlusScalar.DENSEDOUBLEMATRIX2D;
077    
078            public static MinusScalarCalculation<DenseDoubleMatrix2D, DenseDoubleMatrix2D> minusScalar = MinusScalar.DENSEDOUBLEMATRIX2D;
079    
080            public static TimesScalarCalculation<DenseDoubleMatrix2D, DenseDoubleMatrix2D> timesScalar = TimesScalar.DENSEDOUBLEMATRIX2D;
081    
082            public static DivideScalarCalculation<DenseDoubleMatrix2D, DenseDoubleMatrix2D> divideScalar = DivideScalar.DENSEDOUBLEMATRIX2D;
083    
084            public static MtimesCalculation<DenseDoubleMatrix2D, DenseDoubleMatrix2D, DenseDoubleMatrix2D> mtimes = Mtimes.DENSEDOUBLEMATRIX2D;
085    
086            public static SVD<Matrix> svd = org.ujmp.core.doublematrix.calculation.general.decomposition.SVD.INSTANCE;
087    
088            public static LU<Matrix> lu = org.ujmp.core.doublematrix.calculation.general.decomposition.LU.INSTANCE;
089    
090            public static QR<Matrix> qr = org.ujmp.core.doublematrix.calculation.general.decomposition.QR.INSTANCE;
091    
092            public static Inv<Matrix> inv = Inv.INSTANCE;
093    
094            public static InvSymm<Matrix> invSymm = InvSymm.INSTANCE;
095    
096            public static InvSPD<Matrix> invSPD = InvSPD.INSTANCE;
097    
098            public static Solve<Matrix> solve = Solve.INSTANCE;
099    
100            public static SolveSymm<Matrix> solveSymm = SolveSymm.INSTANCE;
101    
102            public static SolveSPD<Matrix> solveSPD = SolveSPD.INSTANCE;
103    
104            public static Chol<Matrix> chol = Chol.INSTANCE;
105    
106            public static Eig<Matrix> eig = Eig.INSTANCE;
107    
108            public DenseDoubleMatrix2DFactory getFactory();
109    }