/*
 * matrix_operations.java
 *
 * Created on 26 de julio de 2002, 11:49 PM
 */

/**
 *
 * @author  Juan Martín Barrios Vargas
* @version Java SDK 1.3.1
 */
public class matrix_operations {

    /** Creates new matrix_operations */
    
    // Create plus method
    public static matrix plus(matrix a, matrix b) {
        matrix result = new matrix (a.n);
        for (int i = 0; i < a.n; i++) {
            for (int j = 0; j < a.n; j++) {
                result.x[i][j] = a.x[i][j] + b.x[i][j];
            }
        }
        return result;
    }
    // End plus method
    
    // Create minus method
    public static matrix minus(matrix a, matrix b) {
        matrix result = new matrix (a.n);
        for (int i = 0; i < a.n; i++) {
            for (int j = 0; j < a.n; j++) {
                result.x[i][j] = a.x[i][j] - b.x[i][j];
            }
        }
        return result;
    }
    // End of minus method
    
    // Create multiplication method
    public static matrix multiplication(matrix a, matrix b) {
        matrix result = new matrix (a.n);
        for (int i = 0; i < a.n; i++) {
            for (int j = 0; j < a.n; j++) {
                result.x[i][j] = a.x[i][j] * b.x[j][i];
            }
        }
        return result;
    }
    // End of multiplication method
    
    // Create transpouse method
    public static matrix transpouse (matrix a) {
        matrix result = new matrix (a.n);
        for (int i = 0; i < a.n; i++) {
            for (int j = 0; j < a.n; j++) {
                result.x[i][j] = a.x[j][i];
            }
        }
        return result;
    }
    // End of transpouse method
    
    // Create escalar_multiplication method
    public static matrix escalar_multiplication(matrix a, double alfa) {
        matrix result = new matrix (a.n);
        for (int i = 0; i < a.n; i++) {
            for (int j = 0; j < a.n; j++) {
                result.x[i][j] = a.x[i][j] * alfa;
            }
        }
        return result;
    }
    //End of escalar_multiplication method
    
    // Create trace method
    public static double trace (matrix a) {
        double result = 0;
        for (int i = 0; i < a.n; i++) {
            result = result + a.x[i][i];
        }
        return result;
    }
    // End trace method

}
