* Quantization bug fixed when using 9x7 DWT (comment keyword : quantizbug1)
* Multiplication bug fixed when dividing by 8192 (comment keyword : multbug1)
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
*/
|
||||
|
||||
#include "fix.h"
|
||||
#include <math.h> //Add Antonin : multbug1
|
||||
|
||||
#ifdef WIN32
|
||||
#define int64 __int64
|
||||
@@ -35,7 +36,19 @@
|
||||
/*
|
||||
* 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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user