Complex number class : Complex « Data Types « C# / C Sharp






Complex number class

  
//http://extensionlibrary.codeplex.com/
//The MIT License (MIT)

using System;
using System.Collections.Generic;
using System.Text;

namespace ExtensionLibrary.Mathematics
{
    /// <summary>
    ///
    /// </summary>
    public class Complex
    {
        #region Fields

        private double imag;

        private double real;

        #endregion

        #region Properties

        public double Imag
        {
            get { return imag; }
            set { imag = value; }
        }

        public double Real
        {
            get { return real; }
            set { real = value; }
        }

        #endregion

        #region Constructors

        public Complex()
        {
            imag = 0.0;
            real = 0.0;
        }

        public Complex(double imag, double real)
        {
            this.imag = imag;
            this.real = real;
        }

        #endregion

        #region Methods

        public static Complex Add(Complex c1, Complex c2)
        {
            return new Complex(c1.imag + c2.imag, c1.real + c2.real);
        }

        public static Complex Substract(Complex c1, Complex c2)
        {
            return new Complex(c1.imag - c2.imag, c1.real - c2.real);
        }

        public static Complex Multiple(Complex c1, Complex c2)
        {
            throw new NotImplementedException();            
        }

        public static Complex Divide(Complex c1, Complex c2)
        {
            throw new NotImplementedException();
        }

        public static Complex Negative(Complex c)
        {
            return new Complex(-c.imag, -c.real);
        }

        public static Complex Sin(Complex c)
        {
            throw new NotImplementedException();
        }

        public static Complex Cos(Complex c)
        {
            throw new NotImplementedException();
        }

        public static Complex Tan(Complex c)
        {
            throw new NotImplementedException();
        }

        public static Complex Sinh(Complex c)
        {
            throw new NotImplementedException();
        }

        public static Complex Cosh(Complex c)
        {
            throw new NotImplementedException();
        }

        public static Complex Tanh(Complex c)
        {
            throw new NotImplementedException();
        }

        public static Complex Sqrt(Complex c)
        {
            throw new NotImplementedException();
        }

        public static Complex Exp(Complex c)
        {
            throw new NotImplementedException();            
        }

        public static Complex Pow(Complex x, Complex y)
        {
            throw new NotImplementedException();
        }

        #endregion

        public override string ToString()
        {
            if (double.IsNaN(real) || double.IsNaN(imag))
            {
                return double.NaN.ToString();
            }

            if (double.IsNegativeInfinity(real) || double.IsNegativeInfinity(imag))
            {
                return double.NegativeInfinity.ToString();
            }

            if (double.IsPositiveInfinity(real) || double.IsPositiveInfinity(imag))
            {
                return double.NegativeInfinity.ToString();
            }

            if (imag == 0.0)
            {
                return real.ToString();
            }
            
            if (real == 0.0)
            {
                return imag == 0.0 ? "0" : string.Format("{0}i", imag);
            }

            return string.Format("{0} + {1}i", real, imag);
        }
    }
}

   
    
  








Related examples in the same category

1.A Complex Number ClassA Complex Number Class
2.Class to do math on complex numbers.
3.Initializes a new instance of the Complex structure using the specified real and imaginary values.
4.Complex Structure represents a complex number.
5.Assign a Double to a complex number
6.Cast a Decimal to a complex number
7.Assign the return value of a method to a Complex variable
8.Assign the value returned by an operator to a Complex variable
9.Instantiate a complex number from its polar coordinates
10.Complex.Exp
11.Complex.Sqrt
12.Divide and multiply
13.Gets the absolute value (or magnitude) of a complex number.
14.Returns the angle that is the arc cosine of the specified complex number.
15.Adds two complex numbers and returns the result.
16.Adds two complex numbers.
17.Returns the angle that is the arc sine of the specified complex number.
18.Returns the angle that is the arc tangent of the specified complex number.
19.Computes the conjugate of a complex number and returns the result.
20.Divides one complex number by another and returns the result.
21.Returns a value that indicates whether the current instance and a specified complex number have the same value.
22.Returns e raised to the power specified by a complex number.
23.Creates a complex number from a point's polar coordinates.
24.Gets the imaginary component of the current Complex object.
25.Returns a new Complex instance with a real number equal to zero and an imaginary number equal to one.
26.Returns the product of two complex numbers.
27.Returns the additive inverse of a specified complex number.
28.Returns a new Complex instance with a real number equal to one and an imaginary number equal to zero.
29.Returns a specified complex number raised to a power specified by a double-precision floating-point number.
30.Returns the multiplicative inverse of a complex number.
31.Subtracts one complex number from another and returns the result.
32.Converts current complex number to string in Cartesian form by using the specified culture-specific formatting information.
33.Converts current complex number to string in Cartesian form by using the specified format for its real and imaginary parts.
34.Converts complex number to string representation in Cartesian form by using the specified format and culture-specific format information for its real and imaginary parts.
35.Converts the value of the current complex number to its equivalent string representation in Cartesian form.
36.Returns a new Complex instance with a real number equal to zero and an imaginary number equal to zero.