/// <summary>
        /// Multiply an scalar
        /// </summary>
        /// <param name="array">source</param>
        /// <param name="value">value to multiply</param>
        /// <returns></returns>
        public static HypArrayBase <double> Multiply(this HypArrayBase <double> array, double value)
        {
            var outArray = array.Copy();

            Parallel.For(0, array.Data.Length, i =>
            {
                outArray.Data[i] *= value;
            });
            return(outArray);
        }
        /// <summary>
        /// Substract an array
        /// </summary>
        /// <param name="array">source</param>
        /// <param name="array2">other array</param>
        /// <returns></returns>
        public static HypArrayBase <double> Substract(this HypArrayBase <double> array, HypArrayBase <double> array2)
        {
            var outArray = array.Copy();

            Parallel.For(0, array.Data.Length, i =>
            {
                outArray.Data[i] -= array.Data[i];
            });
            return(outArray);
        }
        /// <summary>
        /// Divide by an array
        /// </summary>
        /// <param name="array">source</param>
        /// <param name="array2">other array</param>
        /// <returns></returns>
        public static HypArrayBase <int> Divide(this HypArrayBase <int> array, HypArrayBase <int> array2)
        {
            var outArray = array.Copy();

            Parallel.For(0, array.Data.Length, i =>
            {
                outArray.Data[i] /= array.Data[i];
            });
            return(outArray);
        }
        /// <summary>
        /// Substracts an scalar
        /// </summary>
        /// <param name="array">source</param>
        /// <param name="value">value to substract</param>
        /// <returns></returns>
        public static HypArrayBase <int> Substract(this HypArrayBase <int> array, int value)
        {
            var outArray = array.Copy();

            Parallel.For(0, array.Data.Length, i =>
            {
                outArray.Data[i] -= value;
            });
            return(outArray);
        }
        /// <summary>
        /// Divide by an scalar
        /// </summary>
        /// <param name="array">source</param>
        /// <param name="value">value to multiply</param>
        /// <returns></returns>
        public static HypArrayBase <float> Divide(this HypArrayBase <float> array, float value)
        {
            var outArray = array.Copy();

            Parallel.For(0, array.Data.Length, i =>
            {
                outArray.Data[i] /= value;
            });
            return(outArray);
        }
        /// <summary>
        /// Multiply an array
        /// </summary>
        /// <param name="array">source</param>
        /// <param name="array2">other array</param>
        /// <returns></returns>
        public static HypArrayBase <float> Multiply(this HypArrayBase <float> array, HypArrayBase <float> array2)
        {
            var outArray = array.Copy();

            Parallel.For(0, array.Data.Length, i =>
            {
                outArray.Data[i] *= array.Data[i];
            });
            return(outArray);
        }