commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Luc Maisonobe <Luc.Maison...@free.fr>
Subject [math] removing the two asserts in MathUtils.equals(double, double, int) and MathUtils.equals(float, float, int)
Date Sun, 10 Apr 2011 14:56:59 GMT
Hello,

In the MathUtils class, there are a few assert statements. Most of them
are commented out, except the two following ones:

    public static boolean equals(float x, float y, int maxUlps) {
        // Check that "maxUlps" is non-negative and small enough so that
        // NaN won't compare as equal to anything (except another NaN).
        assert maxUlps > 0 && maxUlps < NAN_GAP;

        ...
    }

    public static boolean equals(double x, double y, int maxUlps) {
        // Check that "maxUlps" is non-negative and small enough so that
        // NaN won't compare as equal to anything (except another NaN).
        assert maxUlps > 0 && maxUlps < NAN_GAP;

        ...
    }

Since asserts are often not enabled, these assers are no-op. They also
are somewhat misleading since setting maxUlps to 0 is in fact possible
and produces in correct results: it means we do an exact comparison and
should be allowed.

I propose to change the  "maxUlps > 0" into "maxUlps >= 0" and either

 1) comment out the corresponding asserts (just as the other ones in
    the file are commented out)
 2) replace the asserts by a real test and throw a
    MathIllegalArgumentException
 3) remove the asserts without replacement

I would prefer choice 1.

What do you think ?

Luc

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Mime
View raw message