public override Exp Simplify() { Exp _A_Simp = _A.Simplify(); Exp _B_Simp = _B.Simplify(); if (_A_Simp.IsConst()) { if (_A_Simp.IsNull()) { return(0); } if (_B_Simp.IsConst()) { if (_B_Simp.IsNull()) { return(new Value(float.NaN)); } return(_A_Simp.ToValue().ToFloat() / _B_Simp.ToValue().ToFloat()); } return(_A_Simp / _B_Simp); } if (_B_Simp.IsConst()) { if (_B_Simp.IsNull()) { return(new Value(float.NaN)); } if (_B_Simp.ToValue().ToFloat() == 1.0f) { return(_A_Simp); } return(_A_Simp / _B_Simp); } return(_A_Simp / _B_Simp); }
public override bool IsNull() { Exp _A_Simp = _A.Simplify(); Exp _B_Simp = _B.Simplify(); return(_A_Simp.IsNull() || _B_Simp.IsNull()); }
public override Exp Simplify() { Exp _A_Simp = _A.Simplify(); if (_A_Simp.IsConst()) { if (_A_Simp.IsNull()) { return(new Cst(float.NegativeInfinity)); } if (_A_Simp.ToValue().ToFloat() == 1.0f) { return(0.0f); } if (_A_Simp.ToValue().ToString() == "℮") { return(1.0f); } if (_A_Simp.ToValue().ToFloat() > 0.0f) { return((float)Math.Log(_A_Simp.ToValue().ToFloat(), Math.E)); } } return(new Ln(_A_Simp)); }
public override Exp Simplify() { Exp _A_Simp = _A.Simplify(); Exp _B_Simp = _B.Simplify(); if (_A_Simp.IsConst()) { if (_B_Simp.IsConst()) { return(_A_Simp.ToValue().ToFloat() + _B_Simp.ToValue().ToFloat()); } if (_A_Simp.IsNull()) { return(_B_Simp); } return(_A_Simp + _B_Simp); } if (_B_Simp.IsConst()) { if (_B_Simp.IsNull()) { return(_A_Simp); } return(_A_Simp + _B_Simp); } return(_A_Simp + _B_Simp); }
public override bool IsConst() { Exp _A_Simp = _A.Simplify(); Exp _B_Simp = _B.Simplify(); if (_A_Simp.IsNull() || _B_Simp.IsNull()) { return(true); } return(_A_Simp.IsConst() && _B_Simp.IsConst()); }
public override Exp Simplify() { Exp _A_Simp = _A.Simplify(); Exp _B_Simp = _B.Simplify(); if (_A_Simp.IsConst()) { if (_A_Simp.IsNull()) { return(0); } if (_B_Simp.IsConst()) { if (_B_Simp.IsNull()) { return(1); } return((float)System.Math.Pow(_A_Simp.ToValue().ToFloat(), _B_Simp.ToValue().ToFloat())); } if (_A_Simp.ToValue().ToFloat() == 1.0f) { return(1.0f); } return(new Pow(_A_Simp, _B_Simp)); } if (_B_Simp.IsConst()) { if (_B_Simp.IsNull()) { return(1); } if (_B_Simp.ToValue().ToFloat() == 1.0f) { return(_A_Simp); } return(new Pow(_A_Simp, _B_Simp)); } return(new Pow(_A_Simp, _B_Simp)); }