From b3b58b81768039befe0269b8734192f54516741a Mon Sep 17 00:00:00 2001
From: "Omega Hereon [J.L.]" <joe.heimdallr@gmail.com>
Date: Mon, 18 Apr 2016 18:38:52 +0000
Subject: [PATCH] Fix instances of error: isnan was not declared in this scope
 with GCC5.3/Ubuntu 16.04 In all but these 3 files isnan is glm::isnan

---
 libraries/animation/src/SwingTwistConstraint.cpp | 2 +-
 libraries/shared/src/PIDController.cpp           | 4 ++--
 libraries/shared/src/SettingHandle.cpp           | 6 +++---
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/libraries/animation/src/SwingTwistConstraint.cpp b/libraries/animation/src/SwingTwistConstraint.cpp
index 3d0e4e7c5f..12d7e618e5 100644
--- a/libraries/animation/src/SwingTwistConstraint.cpp
+++ b/libraries/animation/src/SwingTwistConstraint.cpp
@@ -388,7 +388,7 @@ void SwingTwistConstraint::dynamicallyAdjustLimits(const glm::quat& rotation) {
         glm::vec3 swungY = swingRotation * Vectors::UNIT_Y;
         glm::vec3 swingAxis = glm::cross(Vectors::UNIT_Y, swungY);
         float theta = atan2f(-swingAxis.z, swingAxis.x);
-        if (isnan(theta)) {
+        if (glm::isnan(theta)) {
             // atan2f() will only return NaN if either of its arguments is NaN, which can only
             // happen if we've been given a bad rotation.  Since a NaN value here could potentially
             // cause a crash (we use the value of theta to compute indices into a std::vector)
diff --git a/libraries/shared/src/PIDController.cpp b/libraries/shared/src/PIDController.cpp
index 78aa31e4c7..0d1d267dea 100644
--- a/libraries/shared/src/PIDController.cpp
+++ b/libraries/shared/src/PIDController.cpp
@@ -34,7 +34,7 @@ float PIDController::update(float measuredValue, float dt, bool resetAccumulator
     if (getIsLogging()) {  // if logging/reporting
         updateHistory(measuredValue, dt, error, accumulatedError, changeInError, p, i, d, computedValue);
     }
-    Q_ASSERT(!isnan(computedValue));
+    Q_ASSERT(!glm::isnan(computedValue));
     
     // update state for next time
     _lastError = error;
@@ -75,4 +75,4 @@ void PIDController::reportHistory() {
     qCDebug(shared) << "Limits: setpoint" << getMeasuredValueSetpoint() << "accumulate" << getAccumulatedValueLowLimit() << getAccumulatedValueHighLimit() <<
         "controlled" << getControlledValueLowLimit() << getControlledValueHighLimit() <<
         "kp/ki/kd" << getKP() << getKI() << getKD();
-}
\ No newline at end of file
+}
diff --git a/libraries/shared/src/SettingHandle.cpp b/libraries/shared/src/SettingHandle.cpp
index 4a2c0cf04b..951d004318 100644
--- a/libraries/shared/src/SettingHandle.cpp
+++ b/libraries/shared/src/SettingHandle.cpp
@@ -18,7 +18,7 @@ void Settings::getFloatValueIfValid(const QString& name, float& floatValue) {
     const QVariant badDefaultValue = NAN;
     bool ok = true;
     float tempFloat = value(name, badDefaultValue).toFloat(&ok);
-    if (ok && !isnan(tempFloat)) {
+    if (ok && !glm::isnan(tempFloat)) {
         floatValue = tempFloat;
     }
 }
@@ -47,7 +47,7 @@ void Settings::getVec3ValueIfValid(const QString& name, glm::vec3& vecValue) {
         float x = value(QString("x"), badDefaultValue).toFloat(&ok);
         float y = value(QString("y"), badDefaultValue).toFloat(&ok);
         float z = value(QString("z"), badDefaultValue).toFloat(&ok);
-        if (ok && (!isnan(x) && !isnan(y) && !isnan(z))) {
+        if (ok && (!glm::isnan(x) && !glm::isnan(y) && !glm::isnan(z))) {
             vecValue = glm::vec3(x, y, z);
         }
     }
@@ -74,7 +74,7 @@ void Settings::getQuatValueIfValid(const QString& name, glm::quat& quatValue) {
         float y = value(QString("y"), badDefaultValue).toFloat(&ok);
         float z = value(QString("z"), badDefaultValue).toFloat(&ok);
         float w = value(QString("w"), badDefaultValue).toFloat(&ok);
-        if (ok && (!isnan(x) && !isnan(y) && !isnan(z) && !isnan(w))) {
+        if (ok && (!glm::isnan(x) && !glm::isnan(y) && !glm::isnan(z) && !glm::isnan(w))) {
             quatValue = glm::quat(w, x, y, z);
         }
     }