MathUtils.equals(double, double) does not work properly for floats.
There is no equals(float,float) so float parameters are automatically promoted to double. However, that is not necessarily appropriate, given that the ULP for a double is much smaller than the ULP for a float.
This is not a bug, but expected behaviour. But I certainly agree that it does not hurt to mention the conversion issue for the unwary.
However, shouldn't there be emphasis, in the user guide, that CM is a "double" precision library? A quick poll of the code gives the following numbers:
Occurrences of the string "float ": 41 (roughly half of which were introduced with this patch)
Occurrences of the string "double ": 4061
Also, I'm curious as to what use case you were having that requires comparing float numbers.
Finally if we want to help users avoid such pitfalls, I think that we should consider refactoring MathUtils so that similar methods that should behave differently for different types are in different classes (exactly as with classes Float and Double). Thus, we should create MathUtilsDouble (or assume that the current MathUtils is for double utilities) and MathUtilsFloat.