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)); }