DoubleArray.cs

using System;

using System.Collections.Generic;

using System.Text;

 

namespace FFT

{

    public static class DoubleArray

    {

        public static void Set(this double[] array, double value)

        {

            for (int index = 0; index < array.Length; index++)

            {

                array[index] = value;

            }

        }

 

        public static void Scale(this double[] array, double value)

        {

            for (int index = 0; index < array.Length; index++)

            {

                array[index] *= value;

            }

        }

 

        public static double Sum(this double[] array)

        {

            double sum = 0.0;

            for (int index = 0; index < array.Length; index++)

            {

                sum += array[index];

            }

 

            return sum;

        }

 

        public static double Product(this double[] array, double[] other)

        {

            double sum = 0.0;

            for (int index = 0; index < array.Length; index++)

            {

                sum += array[index] * other[index];

            }

 

            return sum;

        }

 

        public static double[] Even(this double[] array)

        {

            double[] even = new double[array.Length / 2 + array.Length % 2];

            for (int index = 0; index < array.Length; index += 2)

            {

                even[index / 2] = array[index];

            }

            return even;

        }

 

        public static double[] Odd(this double[] array)

        {

            double[] odd = new double[array.Length / 2];

            for (int index = 1; index < array.Length; index += 2)

            {

                odd[index / 2] = array[index];

            }

            return odd;

        }

 

        public static double[] Add(this double[] array, double[] other)

        {

            double[] result = new double[array.Length];

            for (int index = 0; index < array.Length; index++)

            {

                result[index] = array[index] + other[index];

            }

 

            return result;

        }

 

        public static double[] Multiply(this double[] array, double[] other)

        {

            double[] result = new double[array.Length];

            for (int index = 0; index < array.Length; index++)

            {

                result[index] = array[index] * other[index];

            }

 

            return result;

        }

    }

}