AP_Math: use /2 in place of *0.5f

MdB says:

dividing by 2 is actually optimal. It's type correct for all usage, and the compiler generates the multiplication if it's float, and sticks with divide for integers

Godbolt indicates on any optimization level (O1-O3, and Os) that the compiler will correctly optimize the / 2 into a float multiplication if using a float, but if using integer types in the template it will stick with the / 2 which is faster then doing the conversions to/from float.
This commit is contained in:
Peter Barker 2019-04-05 09:31:02 +11:00 committed by Tom Pittenger
parent 31daaf9933
commit ce53ae63ae

View File

@ -48,7 +48,7 @@ void MatrixN<T,N>::force_symmetry(void)
{
for (uint8_t i = 0; i < N; i++) {
for (uint8_t j = 0; j < (i - 1); j++) {
v[i][j] = (v[i][j] + v[j][i]) * 0.5f;
v[i][j] = (v[i][j] + v[j][i]) / 2;
v[j][i] = v[i][j];
}
}