octave-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Octave-bug-tracker] [bug #58795] ode15i and ode15s fail for Windows 32b


From: Markus Mützel
Subject: [Octave-bug-tracker] [bug #58795] ode15i and ode15s fail for Windows 32bit
Date: Thu, 30 Jul 2020 09:43:35 -0400 (EDT)
User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 Edg/84.0.522.44

Update of bug #58795 (project octave):

                 Summary: ode15i and ode15s fail if sunindextype and
octave_idx_type are incompatible => ode15i and ode15s fail for Windows 32bit

    _______________________________________________________

Follow-up Comment #26:

There is the following condition in "suitesparse.mk":

ifeq ($(ENABLE_FORTRAN_INT64),yes)
  ifeq ($(MXE_WINDOWS_BUILD),yes)
    $(PKG)_CPPFLAGS += -DLONGBLAS='long long'
  else
    $(PKG)_CPPFLAGS += -DLONGBLAS='long'
  endif
endif


On Windows (minus maybe cygwin), 'long long' is the "smallest" integer type
that is 64bit. 'long' is 64bit on Linux. But ENABLE_FORTRAN_INT64 is 'no' by
default. And you explicitly disabled it in your test.

I don't see another switch that sets the size of an indexing variable in
suitesparse.mk. But maybe it uses different types depending on whether it is
configured for a 32bit or 64bit executable target.

And indeed in SuiteSparse_config.h, there is the following stanza:

#ifndef SuiteSparse_long

#ifdef _WIN64

#define SuiteSparse_long __int64
#define SuiteSparse_long_max _I64_MAX
#define SuiteSparse_long_idd "I64d"

#else

#define SuiteSparse_long long
#define SuiteSparse_long_max LONG_MAX
#define SuiteSparse_long_idd "ld"

#endif
#define SuiteSparse_long_id "%" SuiteSparse_long_idd
#endif


If I'm reading this right, it defines SuiteSparse_long to the 32bit "long" for
Windows 32bit targets (where _WIN64 isn't defined).
That looks like a bug in SuiteSparse to me. Probably, it should be "#ifdef
_WIN32" (which is defined for Windows 32bit and 64bit targets).

That still seems to be defined the same in the current SuiteSparse version:
https://github.com/DrTimothyAldenDavis/SuiteSparse/blob/master/SuiteSparse_config/SuiteSparse_config.h#L54

I opened an issue upstream here:
https://github.com/DrTimothyAldenDavis/SuiteSparse/issues/55#issue-668736312


    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?58795>

_______________________________________________
  Message sent via Savannah
  https://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]