aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavutil/softfloat.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/libavutil/softfloat.h b/libavutil/softfloat.h
index fc083e559b..8647e6a4fc 100644
--- a/libavutil/softfloat.h
+++ b/libavutil/softfloat.h
@@ -104,8 +104,10 @@ static inline av_const int av_cmp_sf(SoftFloat a, SoftFloat b){
static inline av_const SoftFloat av_add_sf(SoftFloat a, SoftFloat b){
int t= a.exp - b.exp;
- if(t<0) return av_normalize1_sf((SoftFloat){b.exp, b.mant + (a.mant >> (-t))});
- else return av_normalize1_sf((SoftFloat){a.exp, a.mant + (b.mant >> t )});
+ if (t <-31) return b;
+ else if (t < 0) return av_normalize1_sf((SoftFloat){b.exp, b.mant + (a.mant >> (-t))});
+ else if (t < 32) return av_normalize1_sf((SoftFloat){a.exp, a.mant + (b.mant >> t )});
+ else return a;
}
static inline av_const SoftFloat av_sub_sf(SoftFloat a, SoftFloat b){