#12103: Use MeatAxe as an optional back end for dense matrices over `GF(p^n)`, p
odd, n>1, `p^n<255`
-------------------------------------+-------------------------------------
       Reporter:  SimonKing          |        Owner:  jason, was
           Type:  defect             |       Status:  needs_work
       Priority:  major              |    Milestone:  sage-6.4
      Component:  packages:          |   Resolution:
  experimental                       |    Merged in:
       Keywords:  linear algebra,    |    Reviewers:
  MeatAxe                            |  Work issues:
        Authors:  Simon King         |       Commit:
Report Upstream:  None of the above  |  191477e697d5fb02c0e6bf7f8b80850e1092d4f6
  - read trac for reasoning.         |     Stopgaps:
         Branch:                     |
  u/SimonKing/meataxe                |
   Dependencies:  #19240             |
-------------------------------------+-------------------------------------

Comment (by SimonKing):

 I think there is a very severe problem: Error handling.

 I thought that meataxe would set an error and then return an error value,
 for example in matinv.c in the function zmatinv:
 {{{
 #!C
         if (f1 == FF_ZERO)
         {
             MTX_ERROR1("%E",MTX_ERR_DIV0);
             return -1;
         }
 }}}
 which should propage to the function !MatInverse:
 {{{
 #!C
     if (zmatinv(tmp,dest->Data) != 0)
     {
         MatFree(dest);
         return NULL;
     }
     return dest;
 }}}

 And in my wrapper, I also test for the error return value:
 {{{
 #!python
         sig_on()
         OUT.Data = MatInverse(self.Data)
         sig_off()
         if OUT.Data != NULL:
             return OUT
         raise ArithmeticError("This matrix is not invertible")
 }}}

 However, it doesn't work. I get an immediate crash of Sage without any
 traceback:
 {{{
 sage: M = MatrixSpace(GF(27,'x'),5).random_element(density=0.4)
 sage: M.rank()
 4
 sage: ~M
 matinv.c(50):Division by zero
 }}}

 Hence, I need to study how meataxe manages to crash everything, even
 though it pretends to handle errors.

--
Ticket URL: <http://trac.sagemath.org/ticket/12103#comment:115>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to