Speedup und reduced memory usage for Noise Reduction, Issue 2557 #132

This commit is contained in:
Ingo
2015-01-16 13:01:28 +01:00
parent 6af0133661
commit 09a07513f0
16 changed files with 952 additions and 962 deletions

View File

@@ -1212,26 +1212,40 @@ __inline float xexpf(float d) {
}
__inline float xmul2f(float d) {
if (*(int*)&d & 0x7FFFFFFF) { // if f==0 do nothing
*(int*)&d += 1 << 23; // add 1 to the exponent
}
return d;
union {
float floatval;
int intval;
} uflint;
uflint.floatval = d;
if (uflint.intval & 0x7FFFFFFF) { // if f==0 do nothing
uflint.intval += 1 << 23; // add 1 to the exponent
}
return uflint.floatval;
}
__inline float xdiv2f(float d) {
if (*(int*)&d & 0x7FFFFFFF) { // if f==0 do nothing
*(int*)&d -= 1 << 23; // sub 1 from the exponent
union {
float floatval;
int intval;
} uflint;
uflint.floatval = d;
if (uflint.intval & 0x7FFFFFFF) { // if f==0 do nothing
uflint.intval -= 1 << 23; // sub 1 from the exponent
}
return d;
return uflint.floatval;
}
__inline float xdivf( float d, int n){
if (*(int*)&d & 0x7FFFFFFF) { // if f==0 do nothing
*(int*)&d -= n << 23; // add n to the exponent
union {
float floatval;
int intval;
} uflint;
uflint.floatval = d;
if (uflint.intval & 0x7FFFFFFF) { // if f==0 do nothing
uflint.intval -= n << 23; // add n to the exponent
}
return d;
return uflint.floatval;
}