Sorry for the typos in the previous e-mail; I was typing it from memory, without paying too much attention to detail (bad, I know). Below is an actual SBCL session.
-Sumant
---START---
* (require :gsll)
; loading system definition from /usr/share/common-lisp/systems/cffi-grovel.asd ; into #<PACKAGE "ASDF2"> ; registering #<SYSTEM CFFI-GROVEL {10035FEE21}> as CFFI-GROVEL ; loading system definition from /usr/share/common-lisp/systems/alexandria.asd ; into #<PACKAGE "ASDF2"> ; registering #<SYSTEM :ALEXANDRIA {1002D20101}> as ALEXANDRIA ; loading system definition from /usr/share/common-lisp/systems/cffi.asd into ; #<PACKAGE "ASDF2"> ; registering #<SYSTEM CFFI {10032F20A1}> as CFFI ; loading system definition from /usr/share/common-lisp/systems/babel.asd into ; #<PACKAGE "ASDF2"> ; registering #<SYSTEM BABEL {10035DC9B1}> as BABEL ; loading system definition from ; /usr/share/common-lisp/systems/trivial-features.asd into #<PACKAGE "ASDF2"> ; registering #<SYSTEM TRIVIAL-FEATURES {1002C48101}> as TRIVIAL-FEATURES ; loading system definition from ; /usr/share/common-lisp/systems/cl-utilities.asd into #<PACKAGE "ASDF0"> ; registering #<SYSTEM CL-UTILITIES {10035EB831}> as CL-UTILITIES ; loading system definition from ; /usr/share/common-lisp/systems/trivial-garbage.asd into #<PACKAGE "ASDF0"> ; registering #<SYSTEM TRIVIAL-GARBAGE {10031C11B1}> as TRIVIAL-GARBAGE ; registering #<SYSTEM TRIVIAL-GARBAGE-TESTS {1003481DF1}> as ; TRIVIAL-GARBAGE-TESTS ; loading system definition from /home/soemraws/.sbcl/systems/grid.asd into ; #<PACKAGE "ASDF0"> ; registering #<SYSTEM GRID {1003741ED1}> as GRID ; loading system definition from /home/soemraws/.sbcl/systems/c-array.asd into ; #<PACKAGE "ASDF0"> ; registering #<SYSTEM C-ARRAY {1003A56591}> as C-ARRAY ("SB-ROTATE-BYTE") * (defparameter *data* (gsll:make-marray 'double-float :dimensions '(2 2) :initial-contents '((1 2) (3 4))))
*DATA* * (grid:row *data* 0)
#<GSLL:VECTOR-DOUBLE-FLOAT #(1.0d0 2.0d0)> * (grid:row *data* 1)
#<GSLL:VECTOR-DOUBLE-FLOAT #(3.0d0 4.0d0)> * (grid:column *data* 0)
debugger invoked on a GSLL:INVALID-ARGUMENT in thread #<THREAD "initial thread" RUNNING {1002ACB011}>: Invalid argument; vector length n must be positive integer in init_source.c at line 90
Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name): 0: [ABORT] Exit debugger, returning to top level.
(GSLL::SIGNAL-GSL-ERROR 4 "vector length n must be positive integer" "init_source.c" 90) 0] 0
* (defparameter *data* (gsll:make-marray 'double-float :dimensions '(2 2) :initial-contents '((1 2) (3 4))))
*DATA* * (grid:column *data* 0)
#<GSLL:VECTOR-DOUBLE-FLOAT #(1.0d0 3.0d0)> * (grid:column *data* 1)
#<GSLL:VECTOR-DOUBLE-FLOAT #(2.0d0 4.0d0)> * (grid:row *data* 0)
debugger invoked on a GSLL:INVALID-ARGUMENT in thread #<THREAD "initial thread" RUNNING {1002ACB011}>: Invalid argument; vector length n must be positive integer in init_source.c at line 90
Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name): 0: [ABORT] Exit debugger, returning to top level.
(GSLL::SIGNAL-GSL-ERROR 4 "vector length n must be positive integer" "init_source.c" 90) 0] 0
*
----END----
On Tue, May 04, 2010 at 12:04:00PM +0200, Sumant Oemrawsingh wrote:
Lately, I've been playing around a bit with GSL and slicing etc using GSD. I found that grid:row and grid:column don't work as expected:
(defparameter *data* (make-marray double-float :inital-contents '((1 2) (3 4)))
; vector (1,3), works fine (grid:column *data* 0)
; vector (2,4), works fine (grid:column *data* 1)
; Errors (grid:row *data* 0) ; Invalid argument; vector length n must be positive integer in init_source.c at line 90
; Same error (grid:row *data* 1) ; Invalid argument; vector length n must be positive integer in init_source.c at line 90
Now, if I rerun the defparameter, and run the grid:row functions first, they succeed, but the grid:column functions afterwards fail. I don't quite understand, because *data* is not modified by these functions.
At the moment, I'm too lazy^H^H^H^Hbusy to look into the source code and discover the source of the problem on my own. Maybe I'm just doing it wrong, though. Any help is appreciated.