src/java.base/share/classes/java/lang/StrictMath.java

Print this page
rev 10702 : 4477961: java.lang.Math.toDegrees(double) could be optimized
Summary: Change toDegrees() and toRadians() to multiplication by a compile-time constant.
Reviewed-by: mduigou, shade

*** 96,105 **** --- 96,117 ---- * diameter. */ public static final double PI = 3.14159265358979323846; /** + * Constant by which to multiply an angular value in degrees to obtain an + * angular value in radians. + */ + private static final double DEGREES_TO_RADIANS = 0.017453292519943295; + + /** + * Constant by which to multiply an angular value in radians to obtain an + * angular value in degrees. + */ + + private static final double RADIANS_TO_DEGREES = 57.29577951308232; + /** * Returns the trigonometric sine of an angle. Special cases: * <ul><li>If the argument is NaN or an infinity, then the * result is NaN. * <li>If the argument is zero, then the result is a zero with the * same sign as the argument.</ul>
*** 177,187 **** * in radians. */ public static strictfp double toRadians(double angdeg) { // Do not delegate to Math.toRadians(angdeg) because // this method has the strictfp modifier. ! return angdeg / 180.0 * PI; } /** * Converts an angle measured in radians to an approximately * equivalent angle measured in degrees. The conversion from --- 189,199 ---- * in radians. */ public static strictfp double toRadians(double angdeg) { // Do not delegate to Math.toRadians(angdeg) because // this method has the strictfp modifier. ! return angdeg * DEGREES_TO_RADIANS; } /** * Converts an angle measured in radians to an approximately * equivalent angle measured in degrees. The conversion from
*** 194,204 **** * in degrees. */ public static strictfp double toDegrees(double angrad) { // Do not delegate to Math.toDegrees(angrad) because // this method has the strictfp modifier. ! return angrad * 180.0 / PI; } /** * Returns Euler's number <i>e</i> raised to the power of a * {@code double} value. Special cases: --- 206,216 ---- * in degrees. */ public static strictfp double toDegrees(double angrad) { // Do not delegate to Math.toDegrees(angrad) because // this method has the strictfp modifier. ! return angrad * RADIANS_TO_DEGREES; } /** * Returns Euler's number <i>e</i> raised to the power of a * {@code double} value. Special cases: