public iNumber Deduct(iNumber Value) { double Re = _re - ((Complex)Value)._re; double Im = _im - ((Complex)Value)._im; return(new Complex(Re, Im)); }
public iNumber Mul(iNumber Value) { double Re = _re * ((Complex)Value)._re - _im * ((Complex)Value)._im; double Im = _im * ((Complex)Value)._re + ((Complex)Value)._im * _re; return(new Complex(Re, Im)); }
/*public iNumber InitNull() * { * * if (strCalculate[strCalculate.Length - 1] == '/') * strCalculate += "1"; * return new Frac("0/1", 10); * * }*/ public void Total() { if (!_isTotal) { if (_proc.GetState() == Operation.None) { return; } iNumber n = Init(); n = Convert(n, _proc.GetLop().GetType()); if (n == null) { Debug.WriteLine("4"); throw new FormatException("Can't continue"); } _proc.SetRop(n); _proc.RunOprtn(); strHistory += _proc.GetRop().GetNumberString() + "=" + _proc.GetLop().GetNumberString(); strCalculate = _proc.GetLop().GetNumberString(); _isTotal = true; _isUsing = true; _bufOprt = _proc.GetState(); _proc.SetState(Operation.None); return; } else { _proc.SetState(_bufOprt); _proc.RunOprtn(); _proc.SetState(Operation.None); strHistory += "=" + _proc.GetLop().GetNumberString(); strCalculate = _proc.GetLop().GetNumberString(); } }
public iNumber Add(iNumber Value) { double Re = _re + ((Complex)Value)._re; double Im = _im + ((Complex)Value)._im; return(new Complex(Re, Im)); }
public iNumber Divide(iNumber Value) { if (((Complex)Value)._re == 0 && ((Complex)Value)._im == 0) { throw new DivideByZeroException(); } double den = (Math.Pow(((Complex)Value)._re, 2) + Math.Pow(((Complex)Value)._im, 2)); double Re = (_re * ((Complex)Value)._re + _im * ((Complex)Value)._im) / den; double Im = (((Complex)Value)._re * _im - _re * ((Complex)Value)._im) / den; return(new Complex(Re, Im)); }
public bool Equal(iNumber Value) { if (_im != ((Complex)Value)._im) { return(false); } if (_re != ((Complex)Value)._re) { return(false); } return(true); }
public void MDeduct() { iNumber n = Init(); if (_mem.Get() is Complex) { if (n is Complex) { _mem.Deduct(n); } } }
public void MAdd() { iNumber n = Init(); if (_mem.Get() is Complex) { if (n is Complex) { _mem.Sum(n); } } }
private iNumber Convert(iNumber Value, Type Dest) { if (Value.GetType() == Dest) { return(Value); } if (Dest == typeof(Complex)) { SetTypeCalc(TypeCalc.Complex); return(Init()); } return(null); }
public void Compute(Operation _operation) { if (_isTotal) { strHistory = ""; _isTotal = false; } if (_proc.GetState() == Operation.None) { iNumber n = Init(); _proc.SetLop(n); _proc.SetRop(_proc.GetLop()); _proc.SetState(_operation); } else { iNumber n = Init(); n = Convert(n, _proc.GetLop().GetType()); if (n == null) { Debug.WriteLine("3"); throw new FormatException("Can't continue"); } _proc.SetRop(n); _proc.RunOprtn(); _proc.SetState(_operation); } _isUsing = true; strHistory += _proc.GetRop().GetNumberString(); strCalculate = _proc.GetLop().GetNumberString(); switch (_operation) { case Operation.Add: strHistory += "+"; break; case Operation.Deduct: strHistory += "-"; break; case Operation.Division: strHistory += "/"; break; case Operation.Mul: strHistory += "*"; break; } }