diff --git a/flight/libraries/WorldMagModel.c b/flight/libraries/WorldMagModel.c index 2ed952ec2..af50c8a19 100644 --- a/flight/libraries/WorldMagModel.c +++ b/flight/libraries/WorldMagModel.c @@ -834,7 +834,7 @@ int WMM_PcupHigh(float *Pcup, float *dPcup, float x, uint16_t nMax) * Note: OP code change to avoid floating point equality test. * Was: if (fabs(x) == 1.0) */ - if (fabs(x) - 1.0f < 1e-9f) + if (fabsf(x) - 1.0f < 1e-9f) { FREE(PreSqr); FREE(f2); diff --git a/flight/modules/Attitude/revolution/attitude.c b/flight/modules/Attitude/revolution/attitude.c index 082856e1f..7c8427ddd 100644 --- a/flight/modules/Attitude/revolution/attitude.c +++ b/flight/modules/Attitude/revolution/attitude.c @@ -439,7 +439,7 @@ static int32_t updateAttitudeComplementary(bool first_run) // If quaternion has become inappropriately short or is nan reinit. // THIS SHOULD NEVER ACTUALLY HAPPEN - if((fabs(qmag) < 1.0e-3f) || isnan(qmag)) { + if((fabsf(qmag) < 1.0e-3f) || isnan(qmag)) { q[0] = 1; q[1] = 0; q[2] = 0; diff --git a/flight/modules/CameraStab/camerastab.c b/flight/modules/CameraStab/camerastab.c index 7aed45983..48f7a308f 100644 --- a/flight/modules/CameraStab/camerastab.c +++ b/flight/modules/CameraStab/camerastab.c @@ -180,7 +180,7 @@ static void attitudeUpdated(UAVObjEvent* ev) break; case CAMERASTABSETTINGS_STABILIZATIONMODE_AXISLOCK: input_rate = accessory.AccessoryVal * cameraStab.InputRate[i]; - if (fabs(input_rate) > cameraStab.MaxAxisLockRate) + if (fabsf(input_rate) > cameraStab.MaxAxisLockRate) csd->inputs[i] = bound(csd->inputs[i] + input_rate * 0.001f * dT_millis, cameraStab.InputRange[i]); break; default: @@ -328,7 +328,7 @@ void applyFeedForward(uint8_t index, float dT_millis, float *attitude, CameraSta float delta = *attitude - csd->ffLastAttitudeFiltered[index]; float maxDelta = (float)cameraStab->MaxAccel * 0.001f * dT_millis; - if (fabs(delta) > maxDelta) { + if (fabsf(delta) > maxDelta) { // we are accelerating too hard *attitude = csd->ffLastAttitudeFiltered[index] + ((delta > 0.0f) ? maxDelta : -maxDelta); } diff --git a/flight/modules/FixedWingPathFollower/fixedwingpathfollower.c b/flight/modules/FixedWingPathFollower/fixedwingpathfollower.c index 1624d5246..6c67a18bc 100644 --- a/flight/modules/FixedWingPathFollower/fixedwingpathfollower.c +++ b/flight/modules/FixedWingPathFollower/fixedwingpathfollower.c @@ -315,7 +315,7 @@ static void updatePathVelocity() if (angle1>180.0f) angle1-=360.0f; if (angle2<-180.0f) angle2+=360.0f; if (angle2>180.0f) angle2-=360.0f; - if (fabs(angle1)>=90.0f && fabs(angle2)>=90.0f) { + if (fabsf(angle1)>=90.0f && fabsf(angle2)>=90.0f) { error_speed=0; } diff --git a/flight/modules/ManualControl/manualcontrol.c b/flight/modules/ManualControl/manualcontrol.c index 1ae5ae6d8..b49039bf7 100644 --- a/flight/modules/ManualControl/manualcontrol.c +++ b/flight/modules/ManualControl/manualcontrol.c @@ -1110,7 +1110,7 @@ bool validInputRange(int16_t min, int16_t max, uint16_t value) */ static void applyDeadband(float *value, float deadband) { - if (fabs(*value) < deadband) + if (fabsf(*value) < deadband) *value = 0.0f; else if (*value > 0.0f) *value -= deadband; diff --git a/flight/modules/Osd/osdgen/osdgen.c b/flight/modules/Osd/osdgen/osdgen.c index 89bf1e492..e2d20341e 100644 --- a/flight/modules/Osd/osdgen/osdgen.c +++ b/flight/modules/Osd/osdgen/osdgen.c @@ -2124,15 +2124,17 @@ void updateGraphics() char temp[50] = { 0 }; memset(temp, ' ', 40); - sprintf(temp, "Lat:%11.7f", gpsData.Latitude / 10000000.0f); + // Note: cast to double required due to -Wdouble-promotion compiler option is + // being used, and there is no way in C to pass a float to a variadic function like sprintf() + sprintf(temp, "Lat:%11.7f", (double)(gpsData.Latitude / 10000000.0f)); write_string(temp, APPLY_HDEADBAND(20), APPLY_VDEADBAND(GRAPHICS_BOTTOM-30), 0, 0, TEXT_VA_BOTTOM, TEXT_HA_LEFT, 0, 3); - sprintf(temp, "Lon:%11.7f", gpsData.Longitude / 10000000.0f); + sprintf(temp, "Lon:%11.7f", (double)(gpsData.Longitude / 10000000.0f)); write_string(temp, APPLY_HDEADBAND(20), APPLY_VDEADBAND(GRAPHICS_BOTTOM-10), 0, 0, TEXT_VA_BOTTOM, TEXT_HA_LEFT, 0, 3); sprintf(temp, "Sat:%d", (int) gpsData.Satellites); write_string(temp, APPLY_HDEADBAND(GRAPHICS_RIGHT-40), APPLY_VDEADBAND(30), 0, 0, TEXT_VA_TOP, TEXT_HA_RIGHT, 0, 2); /* Print ADC voltage FLIGHT*/ - sprintf(temp, "V:%5.2fV", (PIOS_ADC_PinGet(2) * 3 * 6.1f / 4096)); + sprintf(temp, "V:%5.2fV", (double)(PIOS_ADC_PinGet(2) * 3 * 6.1f / 4096)); write_string(temp, APPLY_HDEADBAND(20), APPLY_VDEADBAND(20), 0, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 3); if (gpsData.Heading > 180) @@ -2183,9 +2185,9 @@ void updateGraphics() char temp[50] = { 0 }; memset(temp, ' ', 40); - sprintf(temp, "Lat:%11.7f", gpsData.Latitude / 10000000.0f); + sprintf(temp, "Lat:%11.7f", (double)(gpsData.Latitude / 10000000.0f)); write_string(temp, APPLY_HDEADBAND(5), APPLY_VDEADBAND(5), 0, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 2); - sprintf(temp, "Lon:%11.7f", gpsData.Longitude / 10000000.0f); + sprintf(temp, "Lon:%11.7f", (double)(gpsData.Longitude / 10000000.0f)); write_string(temp, APPLY_HDEADBAND(5), APPLY_VDEADBAND(15), 0, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 2); sprintf(temp, "Fix:%d", (int) gpsData.Status); write_string(temp, APPLY_HDEADBAND(5), APPLY_VDEADBAND(25), 0, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 2); @@ -2204,19 +2206,19 @@ void updateGraphics() /* Print ADC voltage */ //sprintf(temp,"Rssi:%4dV",(int)(PIOS_ADC_PinGet(4)*3000/4096)); //write_string(temp, (GRAPHICS_WIDTH_REAL - 2),15, 0, 0, TEXT_VA_TOP, TEXT_HA_RIGHT, 0, 2); - sprintf(temp, "Rssi:%4.2fV", (PIOS_ADC_PinGet(5) * 3.0f / 4096.0f)); + sprintf(temp, "Rssi:%4.2fV", (double)(PIOS_ADC_PinGet(5) * 3.0f / 4096.0f)); write_string(temp, APPLY_HDEADBAND((GRAPHICS_RIGHT - 8)), APPLY_VDEADBAND(15), 0, 0, TEXT_VA_TOP, TEXT_HA_RIGHT, 0, 2); /* Print CPU temperature */ - sprintf(temp, "Temp:%4.2fC", (PIOS_ADC_PinGet(3) * 0.29296875f - 264)); + sprintf(temp, "Temp:%4.2fC", (double)(PIOS_ADC_PinGet(3) * 0.29296875f - 264)); write_string(temp, APPLY_HDEADBAND((GRAPHICS_RIGHT - 8)), APPLY_VDEADBAND(25), 0, 0, TEXT_VA_TOP, TEXT_HA_RIGHT, 0, 2); /* Print ADC voltage FLIGHT*/ - sprintf(temp, "FltV:%4.2fV", (PIOS_ADC_PinGet(2) * 3.0f * 6.1f / 4096.0f)); + sprintf(temp, "FltV:%4.2fV", (double)(PIOS_ADC_PinGet(2) * 3.0f * 6.1f / 4096.0f)); write_string(temp, APPLY_HDEADBAND((GRAPHICS_RIGHT - 8)), APPLY_VDEADBAND(35), 0, 0, TEXT_VA_TOP, TEXT_HA_RIGHT, 0, 2); /* Print ADC voltage VIDEO*/ - sprintf(temp, "VidV:%4.2fV", (PIOS_ADC_PinGet(4) * 3.0f * 6.1f / 4096.0f)); + sprintf(temp, "VidV:%4.2fV", (double)(PIOS_ADC_PinGet(4) * 3.0f * 6.1f / 4096.0f)); write_string(temp, APPLY_HDEADBAND((GRAPHICS_RIGHT - 8)), APPLY_VDEADBAND(45), 0, 0, TEXT_VA_TOP, TEXT_HA_RIGHT, 0, 2); /* Print ADC voltage RSSI */ diff --git a/make/common-defs.mk b/make/common-defs.mk index edff1e005..10b205634 100644 --- a/make/common-defs.mk +++ b/make/common-defs.mk @@ -124,7 +124,7 @@ CFLAGS += -g$(DEBUGF) CFLAGS += -mapcs-frame CFLAGS += -fomit-frame-pointer CFLAGS += -Wall -CFLAGS += -Wfloat-equal -Wunsuffixed-float-constants +CFLAGS += -Wfloat-equal -Wunsuffixed-float-constants -Wdouble-promotion CFLAGS += -Werror CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -I. CFLAGS += -Wa,-adhlns=$(addprefix $(OUTDIR)/, $(notdir $(addsuffix .lst, $(basename $<))))