stepcompress: Optimize safe_sqrt() code
Optimize the code by putting the uncommon case out-of-line. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
5a1ec817d4
commit
fd7cb99f47
|
@ -256,16 +256,21 @@ check_line(struct stepcompress *sc, struct step_move move)
|
||||||
* Step compress interface
|
* Step compress interface
|
||||||
****************************************************************/
|
****************************************************************/
|
||||||
|
|
||||||
|
#define likely(x) __builtin_expect(!!(x), 1)
|
||||||
|
|
||||||
// Wrapper around sqrt() to handle small negative numbers
|
// Wrapper around sqrt() to handle small negative numbers
|
||||||
static inline double
|
static double
|
||||||
safe_sqrt(double v)
|
_safe_sqrt(double v)
|
||||||
{
|
{
|
||||||
if (v < 0. && v > -0.001)
|
if (v > -0.001)
|
||||||
// Due to floating point truncation, it's possible to get a
|
// Due to floating point truncation, it's possible to get a
|
||||||
// small negative number - treat it as zero.
|
// small negative number - treat it as zero.
|
||||||
return 0.;
|
return 0.;
|
||||||
return sqrt(v);
|
return sqrt(v);
|
||||||
}
|
}
|
||||||
|
static inline double safe_sqrt(double v) {
|
||||||
|
return likely(v >= 0.) ? sqrt(v) : _safe_sqrt(v);
|
||||||
|
}
|
||||||
|
|
||||||
// Allocate a new 'stepcompress' object
|
// Allocate a new 'stepcompress' object
|
||||||
struct stepcompress *
|
struct stepcompress *
|
||||||
|
|
Loading…
Reference in New Issue