Does the JVM only support a proper subset of IEEE 754's required features?
According to the following links:
http://sonic.net/~jddarcy/Borneo/
开发者_运维技巧http://www.cs.berkeley.edu/~wkahan/JAVAhurt.pdf
Java only supports a proper subset of IEEE 754 standards. Does this mean this is the case for all JVM languages? (Is problem solvable at the bytecode level?) If I want to leverage hardware which support these features, is there a way to do this on Oracle's JVM? If not, does a fork exist that does?
Yes, this is the case for all JVM languages. The global flags just aren't there. No, there's no way to fix this.
More importantly, no, you shouldn't. While Prof Kahan may be an expert on numerical computing, he's not on software engineering. Nor is he able to predict the future. Global FP state is a very bad idea in todays multi-core world. For compliance, you have to artificially fuse the FP state of each thread into a single global state, and then you cannot reliably deal with individual errors anymore so you just have to bail out. Just great.
If you want to leverage hardware specific features which the JVM does not use, you are likely to need to use C or assembly and call this via JNI. Most of your code can still be in Java, but it doesn't have to solve everything.
Note: if you are doing this for performance reason you have to be careful that your "improvement" is not actually slower (sometimes much slower)
精彩评论