+ /// Disables highlighting in the console output.
+ void disableHighLighting(void);
+
+ static short debug_lvl;
+
+ /** Converts from degrees Kelvin to degrees Fahrenheit.
+ * @param kelvin The temperature in degrees Kelvin.
+ * @return The temperature in Fahrenheit. */
+ static double KelvinToFahrenheit (double kelvin) {
+ return 1.8*kelvin - 459.4;
+ }
+
+ /** Converts from degrees Celsius to degrees Rankine.
+ * @param celsius The temperature in degrees Celsius.
+ * @return The temperature in Rankine. */
+ static double CelsiusToRankine (double celsius) {
+ return celsius * 1.8 + 491.67;
+ }
+
+ /** Converts from degrees Rankine to degrees Celsius.
+ * @param rankine The temperature in degrees Rankine.
+ * @return The temperature in Celsius. */
+ static double RankineToCelsius (double rankine) {
+ return (rankine - 491.67)/1.8;
+ }
+
+ /** Converts from degrees Kelvin to degrees Rankine.
+ * @param kelvin The temperature in degrees Kelvin.
+ * @return The temperature in Rankine. */
+ static double KelvinToRankine (double kelvin) {
+ return kelvin * 1.8;
+ }
+
+ /** Converts from degrees Rankine to degrees Kelvin.
+ * @param rankine The temperature in degrees Rankine.
+ * @return The temperature in Kelvin. */
+ static double RankineToKelvin (double rankine) {
+ return rankine/1.8;
+ }
+
+ /** Converts from degrees Fahrenheit to degrees Celsius.
+ * @param fahrenheit The temperature in degrees Fahrenheit.
+ * @return The temperature in Celsius. */
+ static double FahrenheitToCelsius (double fahrenheit) {
+ return (fahrenheit - 32.0)/1.8;
+ }
+
+ /** Converts from degrees Celsius to degrees Fahrenheit.
+ * @param celsius The temperature in degrees Celsius.
+ * @return The temperature in Fahrenheit. */
+ static double CelsiusToFahrenheit (double celsius) {
+ return celsius * 1.8 + 32.0;
+ }
+
+ /** Converts from degrees Celsius to degrees Kelvin
+ * @param celsius The temperature in degrees Celsius.
+ * @return The temperature in Kelvin. */
+ static double CelsiusToKelvin (double celsius) {
+ return celsius + 273.15;
+ }
+
+ /** Converts from degrees Kelvin to degrees Celsius
+ * @param celsius The temperature in degrees Kelvin.
+ * @return The temperature in Celsius. */
+ static double KelvinToCelsius (double kelvin) {
+ return kelvin - 273.15;
+ }
+
+ /** Finite precision comparison.
+ @param a first value to compare
+ @param b second value to compare
+ @return if the two values can be considered equal up to roundoff */
+ static bool EqualToRoundoff(double a, double b) {
+ double eps = 2.0*DBL_EPSILON;
+ return fabs(a - b) <= eps*max(fabs(a), fabs(b));
+ }
+
+ /** Finite precision comparison.
+ @param a first value to compare
+ @param b second value to compare
+ @return if the two values can be considered equal up to roundoff */
+ static bool EqualToRoundoff(float a, float b) {
+ float eps = 2.0*FLT_EPSILON;
+ return fabs(a - b) <= eps*max(fabs(a), fabs(b));
+ }
+
+ /** Finite precision comparison.
+ @param a first value to compare
+ @param b second value to compare
+ @return if the two values can be considered equal up to roundoff */
+ static bool EqualToRoundoff(float a, double b) {
+ return EqualToRoundoff(a, (float)b);
+ }
+
+ /** Finite precision comparison.
+ @param a first value to compare
+ @param b second value to compare
+ @return if the two values can be considered equal up to roundoff */
+ static bool EqualToRoundoff(double a, float b) {
+ return EqualToRoundoff((float)a, b);
+ }
+
+ /** Constrain a value between a minimum and a maximum value.
+ */
+ static double Constrain(double min, double value, double max) {
+ return value<min?(min):(value>max?(max):(value));
+ }
+