Running the tests with diagnostic options enabled, I see the following: Running org.apache.commons.math4.analysis.integration.gauss.HermiteParametricTest Compiled method (c2) 25704 794 org.apache.commons.math4.util.FastMath::pow (635 bytes) total in heap [0xf37f3ac8,0xf37f4bc0] = 4344 relocation [0xf37f3b90,0xf37f3ca0] = 272 constants [0xf37f3ca0,0xf37f3d20] = 128 main code [0xf37f3d20,0xf37f42c0] = 1440 stub code [0xf37f42c0,0xf37f4318] = 88 oops [0xf37f4318,0xf37f4324] = 12 scopes data [0xf37f4324,0xf37f45cc] = 680 scopes pcs [0xf37f45cc,0xf37f4afc] = 1328 dependencies [0xf37f4afc,0xf37f4b00] = 4 handler table [0xf37f4b00,0xf37f4bc0] = 192 Could not load hsdis-i386.so; library not loadable; PrintAssembly is disabled OopMapSet contains 8 OopMaps #0 OopMap{off=484} #1 OopMap{off=500} #2 OopMap{ebp=Oop off=596} #3 OopMap{off=808} #4 OopMap{off=924} #5 OopMap{off=964} #6 OopMap{off=1088} #7 OopMap{off=1208}
later on the method is recompiled (reduced in size): Running org.apache.commons.math4.analysis.differentiation.DerivativeStructureTest Compiled method (c2) 40169 941 org.apache.commons.math4.util.FastMath::pow (257 bytes) total in heap [0xf37b6148,0xf37b6708] = 1472 relocation [0xf37b6210,0xf37b6230] = 32 constants [0xf37b6240,0xf37b6260] = 32 main code [0xf37b6260,0xf37b6420] = 448 stub code [0xf37b6420,0xf37b6430] = 16 oops [0xf37b6430,0xf37b6434] = 4 scopes data [0xf37b6434,0xf37b6524] = 240 scopes pcs [0xf37b6524,0xf37b6704] = 480 dependencies [0xf37b6704,0xf37b6708] = 4 OopMapSet contains 1 OopMaps #0 OopMap{off=389} afterwards the failing tests run: Tests run: 53, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.034 sec <<< FAILURE! - in org.apache.commons.math4.util.FastMathStrictComparisonTest test1[37](org.apache.commons.math4.util.FastMathStrictComparisonTest) Time elapsed: 0.005 sec <<< FAILURE! java.lang.AssertionError: double pow(-0.0, -Infinity) expected Infinity actual 0.0 entries [1, 4] at org.junit.Assert.fail(Assert.java:88) at org.apache.commons.math4.util.FastMathStrictComparisonTest.reportFailedResults(FastMathStrictComparisonTest.java:158) at org.apache.commons.math4.util.FastMathStrictComparisonTest.callMethods(FastMathStrictComparisonTest.java:182) at org.apache.commons.math4.util.FastMathStrictComparisonTest.setupMethodCall(FastMathStrictComparisonTest.java:204) at org.apache.commons.math4.util.FastMathStrictComparisonTest.test1(FastMathStrictComparisonTest.java:92) On Wed, Feb 25, 2015 at 10:40 AM, Thomas Neidhart <thomas.neidh...@gmail.com > wrote: > I wonder if in this case the problem is related to branch prediction or > instruction re-ordering. > > The FastMath.pow() method has a lot of ifs to handle special cases, but > they are all independent and and handled in sequence. No results are > calculated or stored in them, so the JVM might wrongly assume that it can > safely re-order them in a more efficient way. > > I will try to express the special cases using if / else instead and run a > test to see if this changes the result. > > > On Wed, Feb 25, 2015 at 3:09 AM, sebb <seb...@gmail.com> wrote: > >> Might be worth running a version of the test with JIT disabled. >> This will make the test much longer so I suggest first seeing if the >> tests fail on their own, and then disable JIT. >> You could experiment with the additional Jenkins Math job I set up for >> the H10 tests: >> >> https://builds.apache.org/job/Commons%20Math%20H10/ >> >> On 24 February 2015 at 19:56, Thomas Neidhart <thomas.neidh...@gmail.com> >> wrote: >> > Hi, >> > >> > after switching to Java 1.7 there seems to be another problem with >> > FastMath, see the two test failures below when running on jenkins. >> > >> > Can somebody reproduce it on a 64 bit machine (I just have a 32 bit >> > laptop at home)? >> > >> > Test setup: Java 7 latest (1.7.0_75?), maven 3.1.1. >> > >> > Tests run: 65, Failures: 1, Errors: 0, Skipped: 1, Time elapsed: 13.332 >> > sec <<< FAILURE! - in org.apache.commons.math4.util.FastMathTest >> > testPowSpecialCases(org.apache.commons.math4.util.FastMathTest) Time >> > elapsed: 0.007 sec <<< FAILURE! >> > java.lang.AssertionError: pow(0.5, Infinity) should be 0.0 >> > expected:<0.0> but was:<Infinity> >> > at org.junit.Assert.fail(Assert.java:88) >> > at org.junit.Assert.failNotEquals(Assert.java:743) >> > at org.junit.Assert.assertEquals(Assert.java:494) >> > at >> > >> org.apache.commons.math4.util.FastMathTest.testPowSpecialCases(FastMathTest.java:372) >> > >> > Running org.apache.commons.math4.util.FastMathStrictComparisonTest >> > Tests run: 53, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.037 >> > sec <<< FAILURE! - in >> > org.apache.commons.math4.util.FastMathStrictComparisonTest >> > test1[37](org.apache.commons.math4.util.FastMathStrictComparisonTest) >> > Time elapsed: 0 sec <<< FAILURE! >> > java.lang.AssertionError: double pow(-0.0, NaN) expected NaN actual >> > -Infinity entries [1, 3] >> > at org.junit.Assert.fail(Assert.java:88) >> > at >> > >> org.apache.commons.math4.util.FastMathStrictComparisonTest.reportFailedResults(FastMathStrictComparisonTest.java:158) >> > at >> > >> org.apache.commons.math4.util.FastMathStrictComparisonTest.callMethods(FastMathStrictComparisonTest.java:182) >> > at >> > >> org.apache.commons.math4.util.FastMathStrictComparisonTest.setupMethodCall(FastMathStrictComparisonTest.java:204) >> > at >> > >> org.apache.commons.math4.util.FastMathStrictComparisonTest.test1(FastMathStrictComparisonTest.java:92) >> > >> > Thomas >> > >> > --------------------------------------------------------------------- >> > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >> > For additional commands, e-mail: dev-h...@commons.apache.org >> > >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >> For additional commands, e-mail: dev-h...@commons.apache.org >> >> >