From 0a7836859090d28bb9e337ff3d1145dc9a7bf2b6 Mon Sep 17 00:00:00 2001 From: Mark Whitehorn Date: Fri, 19 Apr 2019 09:12:00 -0600 Subject: [PATCH] Plane: avoid arithmetic exception in powf --- ArduPlane/tailsitter.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ArduPlane/tailsitter.cpp b/ArduPlane/tailsitter.cpp index fe22dbb5ed..d9bc9db8b3 100644 --- a/ArduPlane/tailsitter.cpp +++ b/ArduPlane/tailsitter.cpp @@ -131,7 +131,10 @@ void QuadPlane::tailsitter_output(void) int32_t pitch_error_cd = (plane.nav_pitch_cd - ahrs_view->pitch_sensor) * 0.5; float extra_pitch = constrain_float(pitch_error_cd, -SERVO_MAX, SERVO_MAX) / SERVO_MAX; float extra_sign = extra_pitch > 0?1:-1; - float extra_elevator = extra_sign * powf(fabsf(extra_pitch), tailsitter.vectored_hover_power) * SERVO_MAX; + float extra_elevator = 0; + if (!is_zero(extra_pitch)) { + extra_elevator = extra_sign * powf(fabsf(extra_pitch), tailsitter.vectored_hover_power) * SERVO_MAX; + } tilt_left = extra_elevator + tilt_left * tailsitter.vectored_hover_gain; tilt_right = extra_elevator + tilt_right * tailsitter.vectored_hover_gain; if (fabsf(tilt_left) >= SERVO_MAX || fabsf(tilt_right) >= SERVO_MAX) {