Matrix Inverse for Complex Cause SIGSEGV

2000-08-14
2000-08-16
  • The following has just been submitted to "BUGS"

    The following causes a SIGSEGV:
    * (setf c (M:make-complex-matrix #((4 0) (0 1))))
    #<MATLISP:COMPLEX-MATRIX  2 x 2
              4.0000                  0.0000          
              0.0000                  1.0000           >
    * (m:m/ C)
    Invoking debugger...
    Error in function UNIX::SIGSEGV-HANDLER: Segment Violation....

    However, this works...
    * (setf r (M:make-real-matrix #((4 0) (0 1))))
    #<MATLISP:REAL-MATRIX  2 x 2
        4.0000      0.0000    
        0.0000      1.0000     >
    * (m:m/ R)
    #<MATLISP:REAL-MATRIX  2 x 2
       0.25000      0.0000    
        0.0000      1.0000     >

     
    • Tunc Simsek
      Tunc Simsek
      2000-08-15

      I'm not getting that fault.  I think this may have something to do
      with those inline's in your previous thread.  I took out the inline
      declarations from ffi-cmu.lisp and all my problems were gone,
      have you tried that:

      * edit ffi-cmu.lisp and remove inline declarations
      * recompile

      Mind you, this solution worked for me but makes no sense whatsoever.

      Tunc

       
      • Tunc,

          Got it!  Thanks.  The procedure I used is as follows (Note the * items are steps that should be added into the installation process.)

          1.  Started with clean version of 1.0b
          2.  Added start.lisp changes that you posted earlier
          3.  Removed "inline" statements from src/ffi-cmu.lisp
        * 4.  Editted Makefile to point to CMU lisp executable on my system
          5.  Ran "make cmu"
        * 6.  Editted the resulting "matlisp" shell script to at the four character "$@"
               to the end of the line (this is to allow any use specified arguments to
               be passed on.

        Result....complex inversion and scaling are working as expected.

        tnx again

        mike