Skip to content

Commit

Permalink
Change IsFinite() to static from extension
Browse files Browse the repository at this point in the history
Signed-off-by: Lamont Granquist <lamont@scriptkiddie.org>
  • Loading branch information
lamont-granquist committed Nov 16, 2023
1 parent 4b468e2 commit a3a9ff8
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 14 deletions.
11 changes: 5 additions & 6 deletions MechJeb2/MechJebLib/Control/PIDLoop.cs
Expand Up @@ -3,7 +3,6 @@
* SPDX-License-Identifier: LicenseRef-PD-hp OR Unlicense OR CC0-1.0 OR 0BSD OR MIT-0 OR MIT OR LGPL-2.1+
*/

using MechJebLib.Utils;
using static MechJebLib.Utils.Statics;
using static System.Math;

Expand Down Expand Up @@ -40,7 +39,7 @@ public class PIDLoop
public double Update(double reference, double measured)
{
// lowpass filter the input
measured = Statics.IsFinite(_m1) ? _m1 + SmoothIn * (measured - _m1) : measured;
measured = IsFinite(_m1) ? _m1 + SmoothIn * (measured - _m1) : measured;

double delta = reference - measured;

Expand All @@ -50,7 +49,7 @@ public double Update(double reference, double measured)
delta -= Sign(delta) * Deadband;

// clegg filtering on zero-crossing to remove integral windup
if (Statics.IsFinite(_delta1) && Clegg && ((delta < 0 && _delta1 > 0) || (delta > 0 && _delta1 < 0)))
if (IsFinite(_delta1) && Clegg && ((delta < 0 && _delta1 > 0) || (delta > 0 && _delta1 < 0)))
_d1 = _d2 = 0;

double ep = B * delta;
Expand All @@ -66,9 +65,9 @@ public double Update(double reference, double measured)
double b2 = (4 * Kp * ep + 4 * Kd * ed * N - 2 * Ki * ei * Ts - 2 * Kp * ep * N * Ts + Ki * ei * N * Ts * Ts) / a0;

// if we have NaN values saved into internal state that needs to be cleared here or it won't reset
if (!Statics.IsFinite(_d1))
if (!IsFinite(_d1))
_d1 = 0;
if (!Statics.IsFinite(_d2))
if (!IsFinite(_d2))
_d2 = 0;

// transposed direct form 2
Expand All @@ -78,7 +77,7 @@ public double Update(double reference, double measured)
_d2 = b2 - a2 * u0;

// low pass filter the output
_o1 = Statics.IsFinite(_o1) ? _o1 + SmoothOut * (u0 - _o1) : u0;
_o1 = IsFinite(_o1) ? _o1 + SmoothOut * (u0 - _o1) : u0;

_m1 = measured;
_delta1 = delta;
Expand Down
12 changes: 6 additions & 6 deletions MechJeb2/MechJebLib/Utils/Check.cs
Expand Up @@ -55,7 +55,7 @@ internal FailedCheck(string msg) : base(msg)
*/

[Conditional("DEBUG")]
public static void Finite(double d) => DoCheck(d.IsFinite());
public static void Finite(double d) => DoCheck(IsFinite(d));

[Conditional("DEBUG")]
public static void Positive(double d) => DoCheck(d > 0);
Expand All @@ -64,7 +64,7 @@ internal FailedCheck(string msg) : base(msg)
public static void PositiveFinite(double d)
{
DoCheck(d > 0);
DoCheck(d.IsFinite());
DoCheck(IsFinite(d));
}

[Conditional("DEBUG")]
Expand All @@ -74,7 +74,7 @@ public static void PositiveFinite(double d)
public static void NonNegativeFinite(double d)
{
DoCheck(d >= 0);
DoCheck(d.IsFinite());
DoCheck(IsFinite(d));
}

[Conditional("DEBUG")]
Expand All @@ -84,7 +84,7 @@ public static void NonNegativeFinite(double d)
public static void NegativeFinite(double d)
{
DoCheck(d < 0);
DoCheck(d.IsFinite());
DoCheck(IsFinite(d));
}

[Conditional("DEBUG")]
Expand All @@ -94,7 +94,7 @@ public static void NegativeFinite(double d)
public static void NonPositiveFinite(double d)
{
DoCheck(d <= 0);
DoCheck(d.IsFinite());
DoCheck(IsFinite(d));
}

[Conditional("DEBUG")]
Expand All @@ -107,7 +107,7 @@ public static void NonPositiveFinite(double d)
public static void NonZeroFinite(double d)
{
DoCheck(d != 0);
DoCheck(d.IsFinite());
DoCheck(IsFinite(d));
}

/*
Expand Down
2 changes: 1 addition & 1 deletion MechJeb2/MechJebLib/Utils/Statics.cs
Expand Up @@ -210,7 +210,7 @@ public static double ClampPi(double x)
/// <param name="x">Value</param>
/// <returns>True if the value is finite</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool IsFinite(this double x) => !double.IsNaN(x) && !double.IsInfinity(x);
public static bool IsFinite(double x) => !double.IsNaN(x) && !double.IsInfinity(x);

/// <summary>
/// Helper to check if a vector is finite in all its compoenents (not NaN or Ininity).
Expand Down
2 changes: 1 addition & 1 deletion MechJebLibTest/AssertionExtensions.cs
Expand Up @@ -83,7 +83,7 @@ public static void ShouldBeZero(this V3 actual, double epsilon = EPS)

public static void ShouldBePositive(this double actual)
{
if (!actual.IsFinite())
if (!IsFinite(actual))
throw new XunitException($"{actual} must be finite");

if (actual <= 0)
Expand Down

0 comments on commit a3a9ff8

Please sign in to comment.