shithub: opus

Download patch

ref: 8b2ec5760776ef44ca772c3f25a46cc417bfb217
parent: 32f66877d438744c08476c1e7d04623cb5cffcea
author: Siarhei Volkau <lis8215@gmail.com>
date: Tue Sep 2 18:54:46 EDT 2025

prevent double precision multiplication for RES2FLOAT and INT24TORES

Due to incorrect constant definition compiler performs conversion
with double precision which, I think, is unnecessary here.

Signed-off-by: Siarhei Volkau <lis8215@gmail.com>
Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>

--- a/celt/arch.h
+++ b/celt/arch.h
@@ -152,7 +152,7 @@
 #define SIG2RES(a)      PSHR32(a, SIG_SHIFT-RES_SHIFT)
 #define RES2INT16(a)    SAT16(PSHR32(a, RES_SHIFT))
 #define RES2INT24(a)    (a)
-#define RES2FLOAT(a)    ((1.f/32768.f/256.)*(a))
+#define RES2FLOAT(a)    ((1.f/32768.f/256.f)*(a))
 #define INT16TORES(a)   SHL32(EXTEND32(a), RES_SHIFT)
 #define INT24TORES(a)   (a)
 #define ADD_RES(a, b)   ADD32(a, b)
@@ -374,7 +374,7 @@
 #define RES2INT24(a)    float2int(32768.f*256.f*(a))
 #define RES2FLOAT(a)    (a)
 #define INT16TORES(a)   ((a)*(1/CELT_SIG_SCALE))
-#define INT24TORES(a)   ((1.f/32768.f/256.)*(a))
+#define INT24TORES(a)   ((1.f/32768.f/256.f)*(a))
 #define ADD_RES(a, b)   ADD32(a, b)
 #define FLOAT2RES(a)    (a)
 #define RES2SIG(a)      (CELT_SIG_SCALE*(a))
--