1 | namespace HeuristicLab.Problems.DataAnalysis.Symbolic {
|
---|
2 | public static class Algebraic {
|
---|
3 | public static T Abs<T>(this T a) where T : IAlgebraicType<T> { a.AssignAbs(a.Clone()); return a; }
|
---|
4 | public static T Neg<T>(this T a) where T : IAlgebraicType<T> { a.AssignNeg(a.Clone()); return a; }
|
---|
5 | public static T Inv<T>(this T a) where T : IAlgebraicType<T> { a.AssignInv(a.Clone()); return a; }
|
---|
6 | public static T Log<T>(this T a) where T : IAlgebraicType<T> { a.AssignLog(a.Clone()); return a; }
|
---|
7 | public static T Exp<T>(this T a) where T : IAlgebraicType<T> { a.AssignExp(a.Clone()); return a; }
|
---|
8 | public static T Sin<T>(this T a) where T : IAlgebraicType<T> { a.AssignSin(a.Clone()); return a; }
|
---|
9 | public static T Cos<T>(this T a) where T : IAlgebraicType<T> { a.AssignCos(a.Clone()); return a; }
|
---|
10 | public static T Sgn<T>(this T a) where T : IAlgebraicType<T> { a.AssignSgn(a.Clone()); return a; }
|
---|
11 | public static T IntPower<T>(this T a, int p) where T : IAlgebraicType<T> { a.AssignIntPower(a.Clone(), p); return a; }
|
---|
12 | public static T IntRoot<T>(this T a, int r) where T : IAlgebraicType<T> { a.AssignIntRoot(a.Clone(), r); return a; }
|
---|
13 |
|
---|
14 | internal static T Min<T>(T a, T b) where T : IAlgebraicType<T> { return a.Clone().AssignMin(b); }
|
---|
15 | internal static T Max<T>(T a, T b) where T : IAlgebraicType<T> { return a.Clone().AssignMax(b); }
|
---|
16 |
|
---|
17 | // public static T Max<T>(T a, T b) where T : IAlgebraicType<T> {
|
---|
18 | // // ((a + b) + abs(b - a)) / 2
|
---|
19 | // return a.Clone().Add(b).Add(b.Clone().Sub(a).Abs()).Scale(1.0 / 2.0);
|
---|
20 | // }
|
---|
21 | // public static T Min<T>(T a, T b) where T : IAlgebraicType<T> {
|
---|
22 | // // ((a + b) - abs(a - b)) / 2
|
---|
23 | // return a.Clone().Add(b).Sub(a.Clone().Sub(b).Abs()).Scale(1.0 / 2.0);
|
---|
24 | // }
|
---|
25 | }
|
---|
26 | } |
---|