Open michaldo opened 6 years ago
I checked the code and I found the same issue as described above. Please use double maxValue = Double.NEGATIVE_INFINITY otherwise condition is never satisfied when it should be if (value > maxValue) maxValue = value;
Thanks for the observation. I changed the code.
While testing your code, I found that having double maxValue = Double.NEGATIVE_INFINITY throws off the whole calculation. Using Double.MIN_VALUE should fix things. Well, it runs perfect using MIN_VALUE anyway.
A standard pattern is used for maximum calculation:
But
Double.MIN_VALUE
in Java is not minimal double but minimal positive value. See https://stackoverflow.com/questions/3884793/why-is-double-min-value-in-not-negative for details.Especially, if each
value
considered in for-loop is 0, calculated maximum isDouble.MIN_VALUE
, becauseDouble.MIN_VALUE
> 0.However, replacing
Double.MIN_VALUE
withDouble.NEGATIVE_INFINITY
cause wrong calculation. In such casemaxQ(8)
isDouble.NEGATIVE_INFINITY
and whole calculation fails.Summary: maximum calculation is implemented wrong or at least misleading. It hard to me to propose a solution because it is not clear to me what is expected to be
maxQ(8)