Beispiel #1
0
        internal static double Dot(DoubleArrayVector x, SparseBoolVector 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])
                {
                    j++;
                    sum += x.values[i++];
                }
                else
                {
                    if (i > y.indices[j])
                    {
                        ++j;
                    }
                    else
                    {
                        ++i;
                    }
                }
            }
            return(sum);
        }
Beispiel #2
0
        internal static double Dot(FloatArrayVector x, DoubleArrayVector y)
        {
            double sum = 0;

            for (int i = 0; i < x.Length; i++)
            {
                sum += x.values[i] * y.values[i];
            }
            return(sum);
        }
Beispiel #3
0
        internal static double SumSquaredDiffs(FloatArrayVector x, DoubleArrayVector y)
        {
            double sum = 0;

            for (int i = 0; i < x.Length; i++)
            {
                double d = x.values[i] - y.values[i];
                sum += d * d;
            }
            return(sum);
        }
        internal static double Dot(BoolArrayVector x, DoubleArrayVector y)
        {
            double sum = 0;

            for (int i = 0; i < x.Length; i++)
            {
                if (x.values[i])
                {
                    sum += y.values[i];
                }
            }
            return(sum);
        }
        internal static double SumSquaredDiffs(BoolArrayVector x, DoubleArrayVector 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);
        }
Beispiel #6
0
        internal static double SumSquaredDiffs(DoubleArrayVector x, SparseBoolVector 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 = x.values[i++] - 1;
                    j++;
                    sum += d * d;
                }
                else if (i > y.indices[j])
                {
                    sum += 1;
                    ++j;
                }
                else
                {
                    sum += x.values[i] * x.values[i];
                    ++i;
                }
            }
            while (i < xlen)
            {
                sum += x.values[i] * x.values[i];
                ++i;
            }
            while (j < ylen)
            {
                sum += 1;
                ++j;
            }
            return(sum);
        }