Some reshape operators are affine, should they be in this SRFI? Bradley Lucier (04 May 2020 03:59 UTC)
|
Re: Some reshape operators are affine, should they be in this SRFI?
John Cowan
(04 May 2020 14:14 UTC)
|
array-ref and array-set! (was Re: Some reshape operators are affine, should they be in this SRFI?)
Bradley Lucier
(04 May 2020 18:39 UTC)
|
Re: array-ref and array-set! (was Re: Some reshape operators are affine, should they be in this SRFI?)
John Cowan
(04 May 2020 21:21 UTC)
|
Re: array-ref and array-set! (was Re: Some reshape operators are affine, should they be in this SRFI?)
Bradley Lucier
(05 May 2020 02:11 UTC)
|
Re: array-ref and array-set! (was Re: Some reshape operators are affine, should they be in this SRFI?)
John Cowan
(05 May 2020 02:33 UTC)
|
Re: Some reshape operators are affine, should they be in this SRFI?
Bradley Lucier
(04 May 2020 21:25 UTC)
|
Some reshape operators are affine, should they be in this SRFI? Bradley Lucier 04 May 2020 03:59 UTC
I haven't put reshape operators into the SRFI because, in general, they are not affine, so they don't compose with the other existing array transformations. But there is one important class of reshape operators that *are* affine, where one maps the elements of a d-dimensional array lexicographically to a one-dimensional array with the same volume. (The inverse transform, for example, is not affine.) In all my years of working with this library I've never had a need for these, and I didn't even think of their existence until tonight. (I don't know why, the basic mapping of indices to the linearly accessed body of a specialized array is of this form, but there it is.) Reshape operators cannot in general be computed from the other array transformations, except by specifying the appropriate transformation directly in specialized-array-share. That's one argument for putting them in the SRFI. On the other hand, they are a bit clumsy to implement for non-specialized arrays, but I suppose it's not too bad. It would basically be building an affine transformation over the indexing of a general array, if I'm making any sense. I already discussed that possibility in the SRFI and rejected it in favor, e.g., of permuting the arguments of an array-getter directly for array permutations. But for reshape operators I don't see any simpler way, off hand, than just computing and saving the indexer function from the new multi-dimensional array to the existing one-dimensional array. Any thoughts? If this is an important array transform, I wouldn't want to leave it out, but adding it would delay this SRFI a bit more. Brad