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

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

[Octave-bug-tracker] [bug #57435] Test suite crashes on Windows on spars


From: Rik
Subject: [Octave-bug-tracker] [bug #57435] Test suite crashes on Windows on sparse.tst
Date: Sat, 21 Dec 2019 17:45:07 -0500 (EST)
User-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko

Follow-up Comment #20, bug #57435 (project octave):

Regarding sparse matrix representation, Octave uses a compressed column format
(not simple row, column, value triplets).  There is some information about it
in section 22.1.1 "Storage of Sparse Matrices" in the Octave manual.

In this case, the values you show for the column indices look correct to me
for Octave's internal representation.

I had also noticed the fact that we are using SUITESPARSE_ASSIGN_FPTR to
assign function handles to variables within SuiteSparse.  The code in
symbfact.cc is


  cholmod_common Common;
  cholmod_common *cm = &Common;
  CHOLMOD_NAME(start) (cm);

  double spu = octave_sparse_params::get_key ("spumoni");
  if (spu == 0.0)
    {
      cm->print = -1;
      SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function, nullptr);
    }
  else
    {
      cm->print = static_cast<int> (spu) + 2;
      SUITESPARSE_ASSIGN_FPTR (printf_func, cm->print_function,
&SparseCholPrint);
    }

  cm->error_handler = &SparseCholError;
  SUITESPARSE_ASSIGN_FPTR2 (divcomplex_func, cm->complex_divide, divcomplex);
  SUITESPARSE_ASSIGN_FPTR2 (hypot_func, cm->hypotenuse, hypot);


When I looked at this I assumed that because cm was a local variable any
changes to the options structure would be confined to this function and
disappear when the variable Common went out of scope.

But, you quoted the expansion of the macros


#  if (SUITESPARSE_VERSION >= SUITESPARSE_VER_CODE (4, 3))
#    define SUITESPARSE_NAME(name) SuiteSparse_ ## name
#    define SUITESPARSE_ASSIGN_FPTR(f_name, f_var, f_assign)
(SuiteSparse_config.f_name = f_assign)
#    define SUITESPARSE_ASSIGN_FPTR2(f_name, f_var, f_assign)
(SuiteSparse_config.f_name = SUITESPARSE_NAME (f_assign))
#  else
#    define SUITESPARSE_ASSIGN_FPTR(f_name, f_var, f_assign) (f_var =
f_assign)
#    define SUITESPARSE_ASSIGN_FPTR2(f_name, f_var, f_assign) (f_var =
CHOLMOD_NAME (f_assign))
#  endif


which shows that the middle argument isn't even used when SuiteSparse >= 4.3.

This could still be an error in SuiteSparse.  I just checked the version I am
using in Linux and it is 5.1.2.  Can you try moving all the way up to a 5.X
series of SuiteSparse and see if the problem still persists?



    _______________________________________________________

Reply to this item at:

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

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




reply via email to

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