bugGNU Octave - Bugs: bug #59088, Failing java.lang.Float BIST test...

 
 

bug #59088: Failing java.lang.Float BIST test in ov-java.cc

Submitter:  Philip Nienhuis <philipnienhuis>
Submitted:  Wed 09 Sep 2020 05:50:50 PM UTC
   
 
Category:  Libraries Severity:  3 - Normal
Priority:  5 - Normal Item Group:  Unexpected Error or Warning
Status:  Duplicate Assigned to:  None
Originator Name:  Philip Nienhuis Open/Closed:  * Closed
Release:  * dev Operating System:  * Any
Fixed Release:  None Planned Release:  None
* Mandatory Fields

Add a New Comment Rich Markup
   

Thu 10 Sep 2020 05:36:46 AM UTC, comment #2: 

Thanks, ISTR some messages but for some reason my seach for ov-java.cc didn't turn them up; PEBCAK I fear.
I'll post further in bug #51804

Philip Nienhuis <philipnienhuis>
Group Member
Wed 09 Sep 2020 08:41:51 PM UTC, comment #1: 

Looks like a duplicate of bug #53728 and bug #57619 which were closed as a duplicates of bug #51804.

Closing as duplicate, too. But please re-open if you think this is something different.

Markus Mützel <mmuetzel>
Group administrator
Wed 09 Sep 2020 05:50:50 PM UTC, original submission:  

Running __run_test_suite__.m in dev Octave (hg id eb35003c3851) on a Win10 system with Java 10 I see the following failing test in fntests.log:

>>>>> processing L:\philip\devel\octdev\mxe\mxe_64w_20200818D\dist\octave7\mingw64\share\octave\7.0.0\etc\tests\libinterp\octave-value\ov-java.cc-tst
***** testif HAVE_JAVA; usejava ("jvm")
 n = javaObject ("java.lang.Float", 1.35);
 assert (n.compareTo (1.0), 1);
 assert (n.compareTo (1.35), 0);
 assert (n.compareTo (10), -1);
 assert (n.doubleValue (), 1.35, 1e7);
!!!!! test failed
[java] java.lang.ClassCastException: class java.lang.Double cannot be cast to class java.lang.Float (java.lang.Double and java.lang.Float are in module java.base of loader 'bootstrap')


This is probably due to Java 10 being stricter than Java 8 (on my Linux build systems: OpenJDK Runtime Environment, build 1.8.0_262-b10); the "compareTo()" method now only accepts arguments of equal type. So for said test it can only compare variable "n" to a Java float value, or an Octave single.

Even though I initially wrote the test (8b5bc5e5f74b) I'm unsure what it was meant to check exactly. Assuming it is meant to check that javaObject can actually produce a Java float with numeric value 1.35, the following (admittedly fairly convoluted) code seems to work better:

n = javaObject ("java.lang.Float", 1.35);
n.compareTo (single (javaObject ("java.lang.Integer", 1).floatValue ()))    #  1
n.compareTo (single (javaObject ("java.lang.Double", 1.35).floatValue ()))  #  0
n.compareTo (single (javaObject ("java.lang.Double", 10).floatValue ()))    # -1


Patch along those lines attached.

Note that I got this with dev Octave, but I expect it to also fail on stable Octave (6.0.90) with Java 10 as ov-java.cc is essentially the same w.r.t. numerics processing for stable and dev Octave.

FWIW, the above code won't run on Matlab as that complains about "Undefined variable 'javaObject' or class 'javaObject'". Maybe Octave's boxing/unboxing works differently or Matlab's parser gets confused.
In Octave the "cast" to single is required because in ov-java.cc all numeric scalar Java types are converted to Octave doubles; and an ensuing ".floatValue ()" method produces a scalar numeric Java value as well:

>> class (javaObject ("java.lang.Double", 10).floatValue ())
ans = double


Philip Nienhuis <philipnienhuis>
Group Member

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

Attached Files

 

Carbon-Copy List
  • -email is unavailable- added by mmuetzel (Posted a comment)
  • -email is unavailable- added by philipnienhuis (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only group members can vote.

     

    Follow 6 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2020-09-09 mmuetzel StatusPatch Submitted Duplicate
        Open/ClosedOpen Closed
        Dependencies- Depends on bugs #57619
        Dependencies- Depends on bugs #53728
        Dependencies- Depends on bugs #51804
    2020-09-09 philipnienhuis Attached File- Added ov-java_cc_float-BIST.patch, #49772

    Back to the top

    Powered by Savane 3.13-4448.
    Corresponding source code