/// <summary>
        /// Normalizes the supplied matrix so that the sum of all entries sums to 1. MODIFIES SOURCE!
        /// </summary>
        /// <returns>this</returns>
        public static Matrix <double> NormalizeToSum1(this Matrix <double> matrixWillBeModified)
        {
            var sum = matrixWillBeModified.Norm(x => x, KahanSum.Zero, (s, x) => s + x);

            if (sum.Value != 0.0)
            {
                double scale = 1.0 / sum.Value;
                matrixWillBeModified.Apply(x => scale * x);
            }
            return(matrixWillBeModified);
        }
        /// <summary>
        /// Normalizes the supplied matrix so that the sum of all entries sums to 1. MODIFIES SOURCE!
        /// </summary>
        /// <returns>this</returns>
        public static Matrix <float> NormalizeToSum1(this Matrix <float> matrixWillBeModified)
        {
            var sum = matrixWillBeModified.Norm(x => x, 0.0, (s, x) => s + (double)x);

            if (sum != 0.0)
            {
                double scale = 1.0 / sum;
                matrixWillBeModified.Apply(x => (float)(scale * x));
            }
            return(matrixWillBeModified);
        }