예제 #1
0
 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;
 }
예제 #2
0
 //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;
 }