I am trying to write a program to solve a quadratic equation whose coefficients\' values do not exceed 100 by absolute value and it is guaranteed that if any roots exist, they a
It's not a bug. Here:
(-b - std::sqrt(d)) / (2 * a)
The result of the expression is a double
. But result of 2 * a
is an int
and it's eventually converted to a double
. It is possible that 2 * a
overflows if a
is too large before it's converted to double
. But since the eventual result is already a double
, you could cast 2
or a
to double
as well and avoid the risk of overflow once and for all. So the compiler is telling you that the Right ThingTM to do is:
(-b - std::sqrt(d)) / (2.0 * a)
It won't overflow (result of (2.0 * a)
is a double
) and it's probably already what you want.