package matrix; import lto.libinfo.Equivalents; public class MatrixOperations { @Equivalents("matrix.DefaultMatrix.eigenvalues,matrix.EigenDecompMatrix.eigenvalues") public static double[] eigenvalues(Matrix A) { if (A instanceof DefaultMatrix) return DefaultMatrix.eigenvalues((DefaultMatrix) A); else if (A instanceof EigenDecompMatrix) return EigenDecompMatrix.eigenvalues((EigenDecompMatrix) A); return DefaultMatrix.eigenvalues(new DefaultMatrix(A)); } @Equivalents("matrix.DefaultMatrix.multiply,matrix.EigenDecompMatrix.multiply") public static Matrix multiply(Matrix A, Matrix B) { if (A instanceof DefaultMatrix && B instanceof DefaultMatrix) return DefaultMatrix.multiply((DefaultMatrix) A, (DefaultMatrix) B); else if (A instanceof EigenDecompMatrix && B instanceof EigenDecompMatrix) return EigenDecompMatrix.multiply((EigenDecompMatrix) A, (EigenDecompMatrix) B); return DefaultMatrix.multiply(new DefaultMatrix(A), new DefaultMatrix(B)); } @Equivalents("matrix.DefaultMatrix.power,matrix.EigenDecompMatrix.power") public static Matrix power(Matrix A, int k) { if (A instanceof DefaultMatrix) return DefaultMatrix.power((DefaultMatrix) A, k); else if (A instanceof EigenDecompMatrix) return EigenDecompMatrix.power((EigenDecompMatrix) A, k); return DefaultMatrix.power(new DefaultMatrix(A), k); } }