Ejemplo n.º 1
0
 internal DualVector3(DualNumber x, DualNumber y, DualNumber z) : this()
 {
     this.x = x; this.y = y; this.z = z;
 }
Ejemplo n.º 2
0
 internal DualVector3(Vector3 value, Vector3 derivative) : this()
 {
     x = new DualNumber(value.x, derivative.x);
     y = new DualNumber(value.y, derivative.y);
     z = new DualNumber(value.z, derivative.z);
 }
Ejemplo n.º 3
0
 internal DualVector3(Vector3 value, int whichIndexIsVariable = -1) : this()
 {
     x = new DualNumber(value.x, whichIndexIsVariable == 0 ? 1f : 0f);
     y = new DualNumber(value.y, whichIndexIsVariable == 1 ? 1f : 0f);
     z = new DualNumber(value.z, whichIndexIsVariable == 2 ? 1f : 0f);
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Calculates an absolute value of dual number
 /// </summary>
 public static DualNumber Abs(DualNumber value)
 {
     return(new DualNumber(SMath.Abs(value.Value), value.Derivative * SMath.Sign(value.Value)));
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Turns an autodiff function to a normal function, assuming that the argument is actually variable
 /// </summary>
 /// <param name="fn">Autodiff function, such as AutoDiff.Math.Log</param>
 /// <returns>A function that takes a float and calculates f(x) and f'(x)</returns>
 public static Func <float, DualNumber> Parameterize(Func <DualNumber, DualNumber> fn)
 {
     return(value => fn(DualNumber.Variable(value)));
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Calculates a square of dual number
 /// </summary>
 public static DualNumber Squared(this DualNumber value)
 {
     return(new DualNumber((float)SMath.Pow(value.Value, 2f), value.Derivative * 2f * value.Value));
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Calculates a power of dual number
 /// </summary>
 public static DualNumber Pow(DualNumber value, float power)
 {
     return(new DualNumber((float)SMath.Pow(value.Value, power), value.Derivative * power * (float)SMath.Pow(value.Value, power - 1f)));
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Calculates a natural logarithm of dual number
 /// </summary>
 public static DualNumber Log(DualNumber value)
 {
     return(new DualNumber((float)SMath.Log(value.Value), value.Derivative / value.Value));
 }
Ejemplo n.º 9
0
 /// <summary>
 /// Calculates an exponent of dual number
 /// </summary>
 public static DualNumber Exp(DualNumber value)
 {
     return(new DualNumber((float)SMath.Exp(value.Value), value.Derivative * (float)SMath.Exp(value.Value)));
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Calculates a cosine of dual number
 /// </summary>
 public static DualNumber Cos(DualNumber value)
 {
     return(new DualNumber((float)SMath.Cos(value.Value), -value.Derivative * (float)SMath.Sin(value.Value)));
 }