mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-23 16:25:26 +03:00
Replace ABS(float) with fabsf(float)
Disregarding loads and stores, fabfs() compiles to a single vabs.f32 instruction, which completes in 1 cycle. ABS(float), however, compiles to vcmpe.f32, a branch and vneg.f32, which needs 2 cycles + branching. The compiler is not able to perform this transformation because (f < 0 ? -f : f) doesn't always yield the absolute value for floats (e.g. ABS(-0) will yield -0).
This commit is contained in:
parent
b0d285d66d
commit
0f4e74cd04
10 changed files with 14 additions and 14 deletions
|
@ -532,7 +532,7 @@ void accUpdate(void)
|
|||
}
|
||||
|
||||
// Before filtering check for clipping and vibration levels
|
||||
if (ABS(acc.accADCf[X]) > ACC_CLIPPING_THRESHOLD_G || ABS(acc.accADCf[Y]) > ACC_CLIPPING_THRESHOLD_G || ABS(acc.accADCf[Z]) > ACC_CLIPPING_THRESHOLD_G) {
|
||||
if (fabsf(acc.accADCf[X]) > ACC_CLIPPING_THRESHOLD_G || fabsf(acc.accADCf[Y]) > ACC_CLIPPING_THRESHOLD_G || fabsf(acc.accADCf[Z]) > ACC_CLIPPING_THRESHOLD_G) {
|
||||
acc.accClipCount++;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue