Ejemplo n.º 1
0
 public static Complex64 Plus(Complex64 x)
 {
     return +x;
 }
Ejemplo n.º 2
0
        public Complex64 Power(Complex64 y)
        {
            double c = y.real;
            double d = y.imag;
            int power = (int)c;

            if (power == c && power >= 0 && d == .0)
            {
                Complex64 result = One;
                if (power == 0) return result;
                Complex64 factor = this;
                while (power != 0)
                {
                    if ((power & 1) != 0)
                    {
                        result = result * factor;
                    }
                    factor = factor * factor;
                    power >>= 1;
                }
                return result;
            }
            else if (IsZero)
            {
                return y.IsZero ? One : Zero;
            }
            else
            {
                double a = real;
                double b = imag;
                double powers = a * a + b * b;
                double arg = System.Math.Atan2(b, a);
                double mul = System.Math.Pow(powers, c / 2) * System.Math.Exp(-d * arg);
                double common = c * arg + .5 * d * System.Math.Log(powers);
                return new Complex64(mul * System.Math.Cos(common), mul * System.Math.Sin(common));
            }
        }
Ejemplo n.º 3
0
 public static Complex64 Negate(Complex64 x)
 {
     return -x;
 }
Ejemplo n.º 4
0
 public static Complex64 Divide(Complex64 x, Complex64 y)
 {
     return x / y;
 }
Ejemplo n.º 5
0
 public static Complex64 Multiply(Complex64 x, Complex64 y)
 {
     return x * y;
 }
Ejemplo n.º 6
0
 public static Complex64 Subtract(Complex64 x, Complex64 y)
 {
     return x - y;
 }
Ejemplo n.º 7
0
 public static Complex64 Add(Complex64 x, Complex64 y)
 {
     return x + y;
 }