diff options
Diffstat (limited to 'libFDK/include/scale.h')
| -rw-r--r-- | libFDK/include/scale.h | 10 | 
1 files changed, 9 insertions, 1 deletions
| diff --git a/libFDK/include/scale.h b/libFDK/include/scale.h index fcb6c48..d60ed2c 100644 --- a/libFDK/include/scale.h +++ b/libFDK/include/scale.h @@ -148,12 +148,20 @@ FIXP_DBL scaleValueSaturate(  {    if(scalefactor > 0) {      if (fNorm(value) < scalefactor && value != (FIXP_DBL)0) { -      return (FIXP_DBL)MAXVAL_DBL; +      if (value > (FIXP_DBL)0) { +        return (FIXP_DBL)MAXVAL_DBL; +      } else { +        return (FIXP_DBL)MINVAL_DBL; +      }      } else {        return (value<<scalefactor);      }    } else { +    if (-(DFRACT_BITS-1) > scalefactor) { +      return (FIXP_DBL)0; +    } else {      return (value>>(-scalefactor)); +    }    }  }  #endif | 
