X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libopenjpeg%2Ffix.c;h=12ef6a7e66cccc0fb1c68fa0bf9186ed429bfe69;hb=cf4f8be5f030575af56240f810d17bbf6d216f9e;hp=5d7f2b67669e2c717ba146a119f1caf00a8ed93b;hpb=ec9bd9f6a455a83da8c2c77f5b2628b416cca18f;p=openjpeg.git diff --git a/libopenjpeg/fix.c b/libopenjpeg/fix.c index 5d7f2b67..12ef6a7e 100644 --- a/libopenjpeg/fix.c +++ b/libopenjpeg/fix.c @@ -25,6 +25,7 @@ */ #include "fix.h" +#include //Add Antonin : multbug1 #ifdef WIN32 #define int64 __int64 @@ -35,7 +36,28 @@ /* * Multiply two fixed-precision rational numbers. */ + +//int fix_mul(int a, int b) +//{ +// return (int) ((int64) a * (int64) b >> 13); +//} + + +//Mod Antonin : multbug1 +/* int fix_mul(int a, int b) { - return (int) ((int64) a * (int64) b >> 13); + double tmp= (double) ((int64) a * (int64) b); + int64 v = (int64) ((fabs(tmp/8192.0)>=floor(fabs(tmp/8192.0))+0.5)?fabs(tmp/8192.0)+1.0:fabs(tmp/8192.0)); + v = (tmp<0)?-v:v; + return (int) v; } +*/ +//doM + +int fix_mul(int a, int b) // Luke Lee optimized : 11/16/2004 +{ + int64 temp = (int64) a * (int64) b >> 12; + return (int) ((temp >> 1) + (temp & 1)) ; +} +