diff options
Diffstat (limited to 'include/linux/math.h')
| -rw-r--r-- | include/linux/math.h | 22 | 
1 files changed, 11 insertions, 11 deletions
diff --git a/include/linux/math.h b/include/linux/math.h index 439b8f0b9ebd..2d388650c556 100644 --- a/include/linux/math.h +++ b/include/linux/math.h @@ -118,17 +118,17 @@ __STRUCT_FRACT(s32)  __STRUCT_FRACT(u32)  #undef __STRUCT_FRACT -/* - * Multiplies an integer by a fraction, while avoiding unnecessary - * overflow or loss of precision. - */ -#define mult_frac(x, numer, denom)(			\ -{							\ -	typeof(x) quot = (x) / (denom);			\ -	typeof(x) rem  = (x) % (denom);			\ -	(quot * (numer)) + ((rem * (numer)) / (denom));	\ -}							\ -) +/* Calculate "x * n / d" without unnecessary overflow or loss of precision. */ +#define mult_frac(x, n, d)	\ +({				\ +	typeof(x) x_ = (x);	\ +	typeof(n) n_ = (n);	\ +	typeof(d) d_ = (d);	\ +				\ +	typeof(x_) q = x_ / d_;	\ +	typeof(x_) r = x_ % d_;	\ +	q * n_ + r * n_ / d_;	\ +})  #define sector_div(a, b) do_div(a, b)  | 
