public static ss_matrix operator -(ss_matrix TEMP1, ss_matrix TEMP2) { //Addition mathematical rules: rows and cols value is same if (TEMP1.rownumber != TEMP2.rownumber || TEMP1.colnumber != TEMP2.colnumber) {//handle only part of null matrix situation string message = "Operation fail: can not use '-' operator for matrix (" + TEMP1.rownumber + " x " + TEMP1.colnumber + ") and matrix (" + TEMP2.rownumber + " x " + TEMP2.colnumber + ")"; throw new System.Exception(message); } if (TEMP1 == null || TEMP2 == null) {//this protect when all of them is null return null; } ss_matrix TEMP3 = new ss_matrix(TEMP1.rownumber, TEMP1.colnumber); for (int i = 0; i < TEMP1.rownumber; i++) { for (int j = 0; j < TEMP1.colnumber; j++) { TEMP3[i, j] = TEMP1[i, j] - TEMP2[i, j]; } } return TEMP3; }
//sor-oszlop elteres kivetel, null refderencia kivetel public static ss_matrix operator *(ss_matrix TEMP1, ss_matrix TEMP2) { //Multiplication mathematical rules, first's cols vaule equal the secund's rows value if (TEMP1 == null || TEMP2 == null) {//if one of them is null, than solution is null (it is better choose like than at +/- operator) return null; } if( TEMP1.colnumber != TEMP2.rownumber) { string message = "Operation fail: can not use '*' operator for matrix (" + TEMP1.rownumber + " x " + TEMP1.colnumber + ") and matrix (" + TEMP2.rownumber + " x " + TEMP2.colnumber + ")"; throw new System.Exception(message); } ss_matrix TEMP3 = new ss_matrix(TEMP1.rownumber, TEMP2.colnumber); for (int i = 0; i < TEMP1.rownumber; i++) { for (int j = 0; j < TEMP2.colnumber; j++) { for (int k = 0; k < TEMP1.colnumber; k++) { TEMP3[i, j] += TEMP1[i, k] * TEMP2[k, j]; } } } return TEMP3; }