You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Jeff Hain (JIRA)" <ji...@apache.org> on 2010/09/01 22:45:53 UTC

[jira] Issue Comment Edited: (MATH-375) Elementary functions in JDK are slower than necessary and not as accurate as they could be.

    [ https://issues.apache.org/jira/browse/MATH-375?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12905210#action_12905210 ] 

Jeff Hain edited comment on MATH-375 at 9/1/10 4:44 PM:
--------------------------------------------------------

Hello.

William, I've also contracted the fast-math disease some time ago, which ended up into some FastMath class as well (http://sourceforge.net/projects/jafama).
Though, your form seems more severe, since you felt the need to stay within about +-0.5 ULP :)

Anyway, I did run my "FastMath" tests on your class, and found some troubles with special cases, especially +-Infinity, NaN, or huge values:
see "test_fastmath_wr.zip" attachment, which contains test code, and a log of their run.

Also, running your tests, I had this exception:
-19.731458173549257	2.696103718050787E-9	2.6961037180507868E-9	1.534029657343928E-16	0.5025524399680612
Exception in thread "main" java.lang.RuntimeException: exp() had errors in excess of 0.502 ULP
	at FastMathWRTest.testExpAccuracy(FastMathWRTest.java:458)
	at FastMathWRTest.main(FastMathWRTest.java:18)

May it help you improve your treatments!

Regards,

Jeff


      was (Author: jeff):
    Hello.

William, I've also contracted the fast-math disease some time ago, which ended up into some FastMath class as well (http://sourceforge.net/projects/jafama).
Though, your form seems more severe, since you felt the need to stay within +-0.5 ULP, whereas my treatments are a bit more sloppy :)

Anyway, I did run my "FastMath" tests on your class, and found some troubles with special cases, especially +-Infinity, NaN, or huge values:
see "test_fastmath_wr.zip" attachment, which contains test code, and a log of their run.

Also, running your tests, I had this exception:
-19.731458173549257	2.696103718050787E-9	2.6961037180507868E-9	1.534029657343928E-16	0.5025524399680612
Exception in thread "main" java.lang.RuntimeException: exp() had errors in excess of 0.502 ULP
	at FastMathWRTest.testExpAccuracy(FastMathWRTest.java:458)
	at FastMathWRTest.main(FastMathWRTest.java:18)

May it help you improve your treatments!

Regards,

Jeff

  
> Elementary functions in JDK are slower than necessary and not as accurate as they could be.
> -------------------------------------------------------------------------------------------
>
>                 Key: MATH-375
>                 URL: https://issues.apache.org/jira/browse/MATH-375
>             Project: Commons Math
>          Issue Type: New Feature
>         Environment: JDK 1.4 - 1.6
>            Reporter: William Rossi
>             Fix For: 2.2
>
>         Attachments: atanpatch.txt.gz, FastMath.tar.gz, test_fastmath_wr.zip
>
>
> I would like to contribute improved versions on exp(), log(), pow(), etc.  to the project.  Please refer to this discussion thread http://markmail.org/message/zyeoguw6gwtofm62.
> I have developed over the past year a set of elementary functions similar to those in java.lang.Math, but with the following characteristics:
> * Higher performance.
> * Better accuracy.  Results are accurate to slightly more that +/- 0.5 ULP.
> * Pure Java.  The standard Math class is impleneted via JNI, and thus takes a performance hit.
> Note that some functions such as exp are nearly twice as fast in my implementation.   I've seen it 3 times faster on different processors.   The preformance varies by the relative speed of calculation vs memory lookups.
> The functions are implemented as tables of values in extra precision (approx 70 bits), and then interpolated with a minimax polynomial.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.