[Gsll-devel] announcement: affi (affine indexing)
Liam Healy
lhealy at common-lisp.net
Tue May 20 22:07:14 UTC 2008
Tamas,
Very interesting. Does this map onto the GSL notion of views in any way,
even conceptually? I know we discussed this before, I'm just wondering
if a restricted set of affine indices could be used with GSL.
Liam
On Sun, May 18, 2008 at 12:30 PM, Tamas K Papp <tpapp at princeton.edu> wrote:
> Hi everyone,
>
> I finally got around to writing my affine indexing package, called
> affi. It is ASDF-installable, and has a tutorial.
>
> Highlights:
>
> - an affine index class that allows the implementation of array
> slices, index permutations, reverse indexing, all provided via
> convenience functions
> - an iterator driver for iter
> - support for column-major affine indexes too (make-affi-cm)
>
> - map-subarray, a convenience function for mapping arrays, which is
> also a proof of concept (you can do all kinds of fancy operations
> using iter, for example)
>
> Examples (when the target is nil, a new array is created):
>
> AFFI> *m* ;; the original array
> #2A((0 1 2 3) (4 5 6 7) (8 9 10 11))
> AFFI> (map-subarray *m* nil :permutation '(1 0)) ;; transpose
> #2A((0 4 8) (1 5 9) (2 6 10) (3 7 11))
> AFFI> (map-subarray *m* nil :source-range '(all 1)) ;; 2nd column
> #(1 5 9)
> AFFI> (map-subarray *m* nil :source-range '(all 1) :drop-which nil)
> #2A((1) (5) (9))
> AFFI> (map-subarray *m* nil :source-range '((1 2) rev))
> #2A((7 6 5 4) (11 10 9 8))
>
> The package is enough for my present purposes, but I am happy to
> include new features if you can think of them. Presently it is not
> super-optimized, I will do that once the interface stabilizes (it is
> not slow of course).
>
> Note that this package is orthogonal to the ffa package, neither
> depends on the other. So even if you don't like ffa, you can still
> benefit from fancy array slicing.
>
> I would appreciate comments and suggestions,
>
> Tamas
>
> _______________________________________________
> Gsll-devel mailing list
> Gsll-devel at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/gsll-devel
>
More information about the gsll-devel
mailing list