diff --git a/libavcodec/dcadec.c b/libavcodec/dcadec.c
index 868e3b67b93ecb535eacfcc915998a18e9f61ea3..684294e8bf9d4af16214634f6a02a765a739122f 100644
--- a/libavcodec/dcadec.c
+++ b/libavcodec/dcadec.c
@@ -2107,7 +2107,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) * pow(2, -15);
 }
 
 /**