Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        public override Exp Simplify()
        {
            Exp _A_Simp = _A.Simplify();
            Exp _B_Simp = _B.Simplify();

            return((_A_Simp.IsConst()) ?
                   (_B_Simp.IsConst()) ? new Cst(_A.ToValue().ToFloat() - _B.ToValue().ToFloat()) : _A_Simp - _B_Simp
                        : (_B_Simp.IsConst()) ? _A_Simp - _A_Simp : _A_Simp - _B_Simp);
        }
Example #4
0
        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));
        }
Example #5
0
        public override bool IsConst()
        {
            Exp _A_Simp = _A.Simplify();
            Exp _B_Simp = _B.Simplify();

            return(_A_Simp.IsConst() && _B_Simp.IsConst());
        }
Example #6
0
        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());
        }
Example #7
0
        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));
        }
Example #8
0
        public override bool IsNull()
        {
            Exp _A_Simp = _A.Simplify();

            return(_A_Simp.IsConst() && _A_Simp.ToValue().ToFloat() == 1.0f);
        }