diff --git a/libavcodec/dcadec.c b/libavcodec/dcadec.c
index 0727857bb63cd74cc468cb52df7b97c4063df9a5..e988e944642af73cd744aee18471dff5b5c1409a 100644
--- a/libavcodec/dcadec.c
+++ b/libavcodec/dcadec.c
@@ -1699,7 +1699,7 @@ static float dca_dmix_code(unsigned code)
 {
     int sign = (code >> 8) - 1;
     code &= 0xff;
-    return ldexpf((dca_dmixtable[code] ^ sign) - sign, -15);
+    return ((dca_dmixtable[code] ^ sign) - sign) * (1.0 / (1U << 15));
 }
 
 /**