How to avoid overflow in expr. A * B - C * D
Posted
by
Ir0nm
on Stack Overflow
See other posts from Stack Overflow
or by Ir0nm
Published on 2012-11-05T17:16:08Z
Indexed on
2012/11/07
11:00 UTC
Read the original article
Hit count: 318
I need to compute an expression which looks like:
A*B - C*D
, where their types are: signed long long int A, B, C, D;
Each number can be really big (not overflowing its type). While A*B
could cause overflow, at same time expression A*B - C*D
can be really small. How can I compute it correctly?
For example: MAX * MAX - (MAX - 1) * (MAX + 1) == 1
, where MAX = LLONG_MAX - n
and n - some natural number.
© Stack Overflow or respective owner