internal static double SumSquaredDiffs(BoolArrayVector x, SparseFloatVector y)
 {
     double sum = 0;
     int xlen = x.Length;
     int ylen = y.indices.Length;
     int i = 0;
     int j = 0;
     while (i < xlen && j < ylen){
         if (i == y.indices[j]){
             double d = y.values[j++];
             if (x.values[i++]){
                 d -= 1;
             }
             sum += d*d;
         } else if (i > y.indices[j]){
             sum += y.values[j]*y.values[j];
             ++j;
         } else{
             if (x.values[i]){
                 sum += 1;
             }
             ++i;
         }
     }
     while (i < xlen){
         if (x.values[i]){
             sum += 1;
         }
         ++i;
     }
     while (j < ylen){
         sum += y.values[j]*y.values[j];
         ++j;
     }
     return sum;
 }
 internal static double Dot(BoolArrayVector x, SparseFloatVector y)
 {
     double sum = 0;
     int xlen = x.Length;
     int ylen = y.indices.Length;
     int i = 0;
     int j = 0;
     while (i < xlen && j < ylen){
         if (i == y.indices[j]){
             if (x.values[i]){
                 sum += y.values[j];
             }
             i++;
             j++;
         } else{
             if (i > y.indices[j]){
                 ++j;
             } else{
                 ++i;
             }
         }
     }
     return sum;
 }
示例#3
0
 internal static double SumSquaredDiffs(BoolArrayVector x, BoolArrayVector y)
 {
     double sum = 0;
     for (int i = 0; i < x.Length; i++){
         if (x.values[i] != y.values[i]){
             sum ++;
         }
     }
     return sum;
 }
示例#4
0
 internal static double SumSquaredDiffs(BoolArrayVector x, FloatArrayVector y)
 {
     double sum = 0;
     for (int i = 0; i < x.Length; i++){
         double d = y.values[i];
         if (x.values[i]){
             d -= 1;
         }
         sum += d*d;
     }
     return sum;
 }
示例#5
0
 internal static double Dot(BoolArrayVector x, FloatArrayVector y)
 {
     double sum = 0;
     for (int i = 0; i < x.Length; i++){
         if (x.values[i]){
             sum += y.values[i];
         }
     }
     return sum;
 }