# HG changeset patch # User Jaroslav Tulach # Date 1359487016 -3600 # Node ID 3223b1897b717c811355bf62a2c9f9b717de11b9 # Parent 4ff4e27465e0fe66586b6602cd601850bd833f7e Basic support for IEEEreminder diff -r 4ff4e27465e0 -r 3223b1897b71 emul/mini/src/main/java/java/lang/Math.java --- a/emul/mini/src/main/java/java/lang/Math.java Mon Jan 28 16:26:52 2013 +0100 +++ b/emul/mini/src/main/java/java/lang/Math.java Tue Jan 29 20:16:56 2013 +0100 @@ -397,9 +397,9 @@ * @return the remainder when {@code f1} is divided by * {@code f2}. */ -// public static double IEEEremainder(double f1, double f2) { -// return f1 % f2; -// } + public static double IEEEremainder(double f1, double f2) { + return f1 - (f2 * Math.round(f1 / f2)); + } /** * Returns the {@code double} value that is closest in value diff -r 4ff4e27465e0 -r 3223b1897b71 vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java Mon Jan 28 16:26:52 2013 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java Tue Jan 29 20:16:56 2013 +0100 @@ -146,6 +146,22 @@ ); } + @Test public void ieeeReminder1() throws Exception { + assertExec( + "Same result 1", + Math.class, "IEEEremainder__DDD", + Math.IEEEremainder(10.0, 4.5), 10.0, 4.5 + ); + } + + @Test public void ieeeReminder2() throws Exception { + assertExec( + "Same result 1", + Math.class, "IEEEremainder__DDD", + Math.IEEEremainder(Integer.MAX_VALUE, -4.5), Integer.MAX_VALUE, -4.5 + ); + } + @Test public void divAndRound() throws Exception { assertExec( "Should be rounded to one",