Complex number with logic operators : Logic Operator Overload : Operator Overload C# Examples


C# Examples » Operator Overload » Logic Operator Overload »

 

Complex number with logic operators









    
using  System;

public  struct  Complex  :  IComparable,  IEquatable<Complex>,  IComparable<Complex>{
        public  Complex(  double  real,  double  img  )  {
                this.real  =  real;
                this.img  =  img;
        }

        public  override  bool  Equals(  object  other  )  {
                bool  result  =  false;
                if(  other  is  Complex  )  {
                        result  =  Equals(  (Complex)  other  );
                }
                return  result;
        }

        public  bool  Equals(  Complex  that  )  {
                return  (this.real  ==  that.real  &&  this.img  ==  that.img);
        }

        public  override  int  GetHashCode()  {
                return  (int)  this.Magnitude;
        }

        public  int  CompareTo(  Complex  that  )  {
                int  result;
                if(  Equals(  that  )  )  {
                        result  =  0;
                }  else  if(  this.Magnitude  >  that.Magnitude  )  {
                        result  =  1;
                }  else  {
                        result  =  -1;
                }

                return  result;
        }

        int  IComparable.CompareTo(  object  other  )  {
                if(  !(other  is  Complex)  )  {
                        throw  new  ArgumentException(  "Bad  Comparison"  );
                }

                return  CompareTo(  (Complex)  other  );
        }

        public  override  string  ToString()  {
                return  String.Format(  "({0},  {1})",  real,  img  );
        }

        public  double  Magnitude  {
                get  {
                        return  Math.Sqrt(  Math.Pow(this.real,  2)  +  Math.Pow(this.img,  2)  );
                }
        }

        public  static  bool  operator==(  Complex  lhs,  Complex  rhs  )  {
                return  lhs.Equals(  rhs  );
        }

        public  static  bool  operator!=(  Complex  lhs,  Complex  rhs  )  {
                return  !lhs.Equals(  rhs  );
        }

        public  static  bool  operator<(  Complex  lhs,  Complex  rhs  )  {
                return  lhs.CompareTo(  rhs  )  <  0;
        }

        public  static  bool  operator>(  Complex  lhs,  Complex  rhs  )  {
                return  lhs.CompareTo(  rhs  )  >  0;
        }

        public  static  bool  operator<=(  Complex  lhs,  Complex  rhs  )  {
                return  lhs.CompareTo(  rhs  )  <=  0;
        }

        public  static  bool  operator>=(  Complex  lhs,  Complex  rhs  )  {
                return  lhs.CompareTo(  rhs  )  >=  0;
        }

        private  double  real;
        private  double  img;
}

public  class  MainClass
{
        static  void  Main()  {
                Complex  cpx1  =  new  Complex(  1.0,  3.0  );
                Complex  cpx2  =  new  Complex(  1.0,  2.0  );

                Console.WriteLine(  "cpx1  =  {0},  cpx1.Magnitude  =  {1}",  cpx1,  cpx1.Magnitude  );
                Console.WriteLine(  "cpx2  =  {0},  cpx2.Magnitude  =  {1}\n",  cpx2,  cpx2.Magnitude  );
                Console.WriteLine(  "cpx1  ==  cpx2  ?  {0}",  cpx1  ==  cpx2  );
                Console.WriteLine(  "cpx1  !=  cpx2  ?  {0}",  cpx1  !=  cpx2  );
                Console.WriteLine(  "cpx1  <    cpx2  ?  {0}",  cpx1  <  cpx2  );
                Console.WriteLine(  "cpx1  >    cpx2  ?  {0}",  cpx1  >  cpx2  );
                Console.WriteLine(  "cpx1  <=  cpx2  ?  {0}",  cpx1  <=  cpx2  );
                Console.WriteLine(  "cpx1  >=  cpx2  ?  {0}",  cpx1  >=  cpx2  );
        }
}
    
   
  
   



Output

cpx1 = (1, 3), cpx1.Magnitude = 3.16227766016838
cpx2 = (1, 2), cpx2.Magnitude = 2.23606797749979

cpx1 == cpx2 ? False
cpx1 != cpx2 ? True
cpx1   cpx2 ? True
cpx1 = cpx2 ? True


HTML code for linking to this page:

    Related in same category :
Follow Navioo On Twitter

C# Examples

 Navioo Operator Overload
» Logic Operator Overload