public SymbolicVariable Power(double power)
        {
            if (Math.Floor(power) == power)
            {
                return(Power((int)power));
            }

            SymbolicVariable p = this.Clone();

            if (p.IsOneTerm)
            {
                // raise the coeffecient and symbol
                if (!string.IsNullOrEmpty(p.Symbol))
                {
                    p.SymbolPower = power;
                }
                p.Coeffecient = Math.Pow(p.Coeffecient, power);
            }
            else
            {
                if (power == 0.5)
                {
                    // return sqrt function of the multi term

                    return(new SymbolicVariable("Sqrt(" + p.ToString() + ")"));
                }
                else if (power > 0 && power < 1)
                {
                    // I don't have solution for this now
                    throw new SymbolicException("I don't have solution for this type of power " + p.ToString() + "^ (" + power.ToString() + ")");
                }
                else
                {
                    // multi term that we can't raise it to the double
                    return(p.RaiseToSymbolicPower(new SymbolicVariable(power.ToString())));
                }
            }

            return(p);
        }
 public static SymbolicVariable Pow(SymbolicVariable a, double power)
 {
     return(a.RaiseToSymbolicPower(new SymbolicVariable(power.ToString())));
 }
 /// <summary>
 /// Power of symbolic variable.
 /// </summary>
 /// <param name="a"></param>
 /// <param name="b"></param>
 /// <returns></returns>
 public static SymbolicVariable SymbolicPower(SymbolicVariable a, SymbolicVariable b)
 {
     return(a.RaiseToSymbolicPower(b));
 }