public CosFunc(Term inner)
     : base(inner, values => Math.Cos(inner.Evaluate(values)))
 {
     Inner.Parent = this;
 }
 public ExpFunc(Term inner)
     : base(inner, values => Math.Exp(inner.Evaluate(values)))
 {
     Inner.Parent = this;
 }
 public static Func Sin(Term x)
 {
     return new SinFunc(x);
 }
 public static Func Sqrt(Term x)
 {
     return new SqrtFunc(x);
 }
 public SqrtFunc(Term inner)
     : base(inner, values => Math.Sqrt(inner.Evaluate(values)))
 {
     Inner.Parent = this;
 }
 public static Func Pow(Term x, Term y)
 {
     return new PowFunc(x, y);
 }
 public static Func Ln(Term x)
 {
     return new LnFunc(x);
 }
 public static Func Exp(Term x)
 {
     return new ExpFunc(x);
 }
 public PowFunc(Term left, Term right)
     : base(left, right, values => Math.Pow(left.Evaluate(values), right.Evaluate(values)))
 {
     Left.Parent = this;
     Right.Parent = this;
 }
 public static Func Cos(Term x)
 {
     return new CosFunc(x);
 }
 public LnFunc(Term inner)
     : base(inner, values => Math.Log(inner.Evaluate(values)))
 {
     Inner.Parent = this;
 }