From c6c6e44978d8020ec39dbdd3933bb94f9d75aaeb Mon Sep 17 00:00:00 2001 From: Gary Frost <frost.gary@gmail.com> Date: Thu, 3 Nov 2011 15:45:36 +0000 Subject: [PATCH] Committed patch from kenneth@hexad.dk which added support for NAN and INFINITY mappings between Java and OpenCL --- CREDITS.txt | 1 + .../src/java/com/amd/aparapi/BlockWriter.java | 37 ++++++++++++++++--- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/CREDITS.txt b/CREDITS.txt index 8187186f..f2756caf 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -5,6 +5,7 @@ We discourage including attribution as comments in the code, instead we intend t Aparapi Contributors. Thanks to all. Witold Bolt provided patch for issue #5. Added and tested Mac OS support. Oct 12th 2011 +kenneth@hexad.dk provided patch for issue #11 (correcting conversion of Java Nan and Infinity values to OpenCL equiv). Oct 28th 2011 diff --git a/com.amd.aparapi/src/java/com/amd/aparapi/BlockWriter.java b/com.amd.aparapi/src/java/com/amd/aparapi/BlockWriter.java index e46728b7..d37ea95b 100644 --- a/com.amd.aparapi/src/java/com/amd/aparapi/BlockWriter.java +++ b/com.amd.aparapi/src/java/com/amd/aparapi/BlockWriter.java @@ -442,12 +442,39 @@ abstract class BlockWriter{ } else if (_instruction instanceof Constant<?>) { Constant<?> constantInstruction = (Constant<?>) _instruction; Object value = constantInstruction.getValue(); - write(value.toString()); + if (value instanceof Float) { - write("f"); - } - if (value instanceof Long) { - write("L"); + + Float f = (Float) value; + if (f.isNaN()) { + write("NAN"); + } else if (f.isInfinite()) { + if (f < 0){ + write("-"); + } + write("INFINITY"); + } else { + write(value.toString()); + write("f"); + } + } else if (value instanceof Double) { + + Double d = (Double) value; + if (d.isNaN()) { + write("NAN"); + } else if (d.isInfinite()) { + if (d < 0){ + write("-"); + } + write("INFINITY"); + } else { + write(value.toString()); + } + } else { + write(value.toString()); + if (value instanceof Long) { + write("L"); + } } } else if (_instruction instanceof AccessLocalVariable) { -- GitLab