You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
812 B
36 lines
812 B
#include "AP_Math.h" |
|
#include <float.h> |
|
|
|
// a varient of asin() that checks the input ranges and ensures a |
|
// valid angle as output. If nan is given as input then zero is |
|
// returned. |
|
float safe_asin(float v) |
|
{ |
|
if (isnan(v)) { |
|
return 0.0f; |
|
} |
|
if (v >= 1.0f) { |
|
return M_PI/2; |
|
} |
|
if (v <= -1.0f) { |
|
return -M_PI/2; |
|
} |
|
return asinf(v); |
|
} |
|
|
|
// a varient of sqrt() that checks the input ranges and ensures a |
|
// valid value as output. If a negative number is given then 0 is |
|
// returned. The reasoning is that a negative number for sqrt() in our |
|
// code is usually caused by small numerical rounding errors, so the |
|
// real input should have been zero |
|
float safe_sqrt(float v) |
|
{ |
|
float ret = sqrtf(v); |
|
if (isnan(ret)) { |
|
return 0; |
|
} |
|
return ret; |
|
} |
|
|
|
|
|
|
|
|