Re: help with gross array hack needed
Raymond Toy <[email protected]> Wed, 08 Dec 2004 07:43:31 -0500
| Newsgroups | gmane.lisp.matlisp.user,gmane.lisp.cmucl.general |
|---|---|
| Message-ID | <[email protected]> |
>>>>> "rif" == rif <[email protected]> writes: rif> Is there any way, in CMUCL, using some implementation-specific rif> construct, to create an "aliased array"? Suppose I create a rif> double-float array of size 10: rif> (make-array 10 :element-type 'double-float) rif> I know I can take it's address, with #'system:vector-sap. rif> What I want to do is manipulate that address and somehow "invert" rif> vector-sap to create a new double-float array whose first element is rif> (for example) the third element of the original array. rif> I need this because I need to pass matlisp a subset of an array. More rif> specifically, I want to allocate an n by n+1 array, so that I can rif> store half of each of two n by n symmetric arrays in n(n+1) space rif> rather than 2n^2 space. This is a common technique for using rif> BLAS/LAPACK, but to get at it, I need to be able to give a Fortran rif> matlisp routine a way to get at the square n by n matrix that "starts rif> with the second column" of the n by n+1 matrix, and the way the rif> interface is defined, it wants actual arrays, not pointers. If I can rif> somehow create the appropriate array, I don't have to go mucking about rif> in the internals of matlisp's def-fortran-routine and so forth. Marc has already mentioned displaced arrays. This should work, but depends on what you are really trying to do. What matlisp function are you trying to call? Ray ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/