Jump to page: 1 2
Thread overview
N-dimensional slices is ready for comments!
Jun 15, 2015
Ilya Yaroshenko
Jun 15, 2015
Manu
Jun 15, 2015
Denis Shelomovskij
Jun 15, 2015
Denis Shelomovskij
Jun 16, 2015
Ilya Yaroshenko
Jun 19, 2015
jmh530
Jun 19, 2015
Ilya Yaroshenko
Jun 19, 2015
Vlad Levenfeld
Jun 19, 2015
Vlad Levenfeld
Jun 20, 2015
Ilya Yaroshenko
Jul 11, 2015
Vlad Levenfeld
Jun 21, 2015
jmh530
June 15, 2015
Hi All,

PR and Examples: https://github.com/D-Programming-Language/phobos/pull/3397
DUB http://code.dlang.org/packages/dip80-ndslice

N-dimensional slices is real world example where `static foreach` would be useful.
Corresponding lines was marked with //TODO: static foreach

Best regards,
Ilya

June 15, 2015
Is awesome!
Incidentally, I've been needing static foreach a lot the last few days too.

On 15 June 2015 at 18:40, Ilya Yaroshenko via Digitalmars-d-announce <digitalmars-d-announce@puremagic.com> wrote:
> Hi All,
>
> PR and Examples: https://github.com/D-Programming-Language/phobos/pull/3397 DUB http://code.dlang.org/packages/dip80-ndslice
>
> N-dimensional slices is real world example where `static foreach` would be
> useful.
> Corresponding lines was marked with //TODO: static foreach
>
> Best regards,
> Ilya
>
June 15, 2015
15.06.2015 11:40, Ilya Yaroshenko пишет:
> Hi All,
>
> PR and Examples: https://github.com/D-Programming-Language/phobos/pull/3397
> DUB http://code.dlang.org/packages/dip80-ndslice
>
> N-dimensional slices is real world example where `static foreach` would
> be useful.
> Corresponding lines was marked with //TODO: static foreach
>
> Best regards,
> Ilya
>

http://forum.dlang.org/post/l315jb$avg$1@digitalmars.com

-- 
Денис В. Шеломовский
Denis V. Shelomovskij
June 15, 2015
16.06.2015 1:11, Denis Shelomovskij пишет:
> 15.06.2015 11:40, Ilya Yaroshenko пишет:
>> Hi All,
>>
>> PR and Examples:
>> https://github.com/D-Programming-Language/phobos/pull/3397
>> DUB http://code.dlang.org/packages/dip80-ndslice
>>
>> N-dimensional slices is real world example where `static foreach` would
>> be useful.
>> Corresponding lines was marked with //TODO: static foreach
>>
>> Best regards,
>> Ilya
>>
>
> http://forum.dlang.org/post/l315jb$avg$1@digitalmars.com
>

Sorry, this was the last one:
"Finally full multidimensional arrays support in D"
http://forum.dlang.org/thread/lg7c0t$jmg$1@digitalmars.com

-- 
Денис В. Шеломовский
Denis V. Shelomovskij
June 16, 2015
On Monday, 15 June 2015 at 22:17:12 UTC, Denis Shelomovskij wrote:
> 16.06.2015 1:11, Denis Shelomovskij пишет:
>> 15.06.2015 11:40, Ilya Yaroshenko пишет:
>>> Hi All,
>>>
>>> PR and Examples:
>>> https://github.com/D-Programming-Language/phobos/pull/3397
>>> DUB http://code.dlang.org/packages/dip80-ndslice
>>>
>>> N-dimensional slices is real world example where `static foreach` would
>>> be useful.
>>> Corresponding lines was marked with //TODO: static foreach
>>>
>>> Best regards,
>>> Ilya
>>>
>>
>> http://forum.dlang.org/post/l315jb$avg$1@digitalmars.com
>>
>
> Sorry, this was the last one:
> "Finally full multidimensional arrays support in D"
> http://forum.dlang.org/thread/lg7c0t$jmg$1@digitalmars.com


Thanks! I will ask you to do review after few additions :)
June 19, 2015
On Monday, 15 June 2015 at 08:40:31 UTC, Ilya Yaroshenko wrote:
> Hi All,
>
> PR and Examples: https://github.com/D-Programming-Language/phobos/pull/3397
> DUB http://code.dlang.org/packages/dip80-ndslice
>
> N-dimensional slices is real world example where `static foreach` would be useful.
> Corresponding lines was marked with //TODO: static foreach
>
> Best regards,
> Ilya

The operator overloading and slicing mechanics look great, but I'm probably more excited about the future work you have listed.

Some thoughts:
The top line of ndslice.d says it is for "creating n-dimensional random access ranges". I was able to get the example for operator overloading working for dynamic arrays, but it doesn't seem to work for static. Hopefully this work can be extended. In addition, hopefully the future work on foreach byElement will be able to work on static arrays in addition to dynamic.

My second point seems to be related to a discussion on the github page about accessing N-dimensional arrays by index. Basically there are some circumstances where it is convenient to loop by index on an N-dimensional array.

Finally, I have been trying to do something like
auto A = 4.iota.sliced(2, 2).array;
auto B = to!(float[][])(A);
without any luck. Seems to work though for one-dimensional arraays. I think instead you have to do something like
auto A = iota(0.0f, 4.0f, 1).sliced(2, 2).array;
June 19, 2015
On Friday, 19 June 2015 at 01:46:05 UTC, jmh530 wrote:
> On Monday, 15 June 2015 at 08:40:31 UTC, Ilya Yaroshenko wrote:
>> Hi All,
>>
>> PR and Examples: https://github.com/D-Programming-Language/phobos/pull/3397
>> DUB http://code.dlang.org/packages/dip80-ndslice
>>
>> N-dimensional slices is real world example where `static foreach` would be useful.
>> Corresponding lines was marked with //TODO: static foreach
>>
>> Best regards,
>> Ilya
>
> The operator overloading and slicing mechanics look great, but I'm probably more excited about the future work you have listed.
>
> Some thoughts:
> The top line of ndslice.d says it is for "creating n-dimensional random access ranges". I was able to get the example for operator overloading working for dynamic arrays, but it doesn't seem to work for static. Hopefully this work can be extended. In addition, hopefully the future work on foreach byElement will be able to work on static arrays in addition to dynamic.
>

You can slice fixed size arrays:


auto myFun()
{
     float[4096] data;
     auto tensor = data[].sliced(256, 16);
     ///use tensor
}

> My second point seems to be related to a discussion on the github page about accessing N-dimensional arrays by index. Basically there are some circumstances where it is convenient to loop by index on an N-dimensional array.
>

Denis had the same concept already implemented in his `unstd` library.
So, ndslice is going to have it too.

> Finally, I have been trying to do something like
> auto A = 4.iota.sliced(2, 2).array;
> auto B = to!(float[][])(A);
> without any luck. Seems to work though for one-dimensional arraays. I think instead you have to do something like
> auto A = iota(0.0f, 4.0f, 1).sliced(2, 2).array;

Thanks!
I will add this kind of functionality:

auto A = 4.iota.sliced(2, 2);
auto B = cast(float[][]) A;

import std.conv;
auto C = A.to!(float[][]); //calls opCast


June 19, 2015
On Friday, 19 June 2015 at 10:13:42 UTC, Ilya Yaroshenko wrote:
> On Friday, 19 June 2015 at 01:46:05 UTC, jmh530 wrote:
>> On Monday, 15 June 2015 at 08:40:31 UTC, Ilya Yaroshenko wrote:
>>> Hi All,
>>>
>>> PR and Examples: https://github.com/D-Programming-Language/phobos/pull/3397
>>> DUB http://code.dlang.org/packages/dip80-ndslice
>>>
>>> N-dimensional slices is real world example where `static foreach` would be useful.
>>> Corresponding lines was marked with //TODO: static foreach
>>>
>>> Best regards,
>>> Ilya
>>
>> The operator overloading and slicing mechanics look great, but I'm probably more excited about the future work you have listed.
>>
>> Some thoughts:
>> The top line of ndslice.d says it is for "creating n-dimensional random access ranges". I was able to get the example for operator overloading working for dynamic arrays, but it doesn't seem to work for static. Hopefully this work can be extended. In addition, hopefully the future work on foreach byElement will be able to work on static arrays in addition to dynamic.
>>
>
> You can slice fixed size arrays:
>
>
> auto myFun()
> {
>      float[4096] data;
>      auto tensor = data[].sliced(256, 16);
>      ///use tensor
> }
>
>> My second point seems to be related to a discussion on the github page about accessing N-dimensional arrays by index. Basically there are some circumstances where it is convenient to loop by index on an N-dimensional array.
>>
>
> Denis had the same concept already implemented in his `unstd` library.
> So, ndslice is going to have it too.
>
>> Finally, I have been trying to do something like
>> auto A = 4.iota.sliced(2, 2).array;
>> auto B = to!(float[][])(A);
>> without any luck. Seems to work though for one-dimensional arraays. I think instead you have to do something like
>> auto A = iota(0.0f, 4.0f, 1).sliced(2, 2).array;
>
> Thanks!
> I will add this kind of functionality:
>
> auto A = 4.iota.sliced(2, 2);
> auto B = cast(float[][]) A;
>
> import std.conv;
> auto C = A.to!(float[][]); //calls opCast

https://github.com/evenex/autodata

N-dimensional slicing, range ops (map, zip, repeat, cycle, etc) lifted to n-dimensions, n-dim specific ops like extrusion, n-dim to d-dim of n-1-dim, flattening for lexicographic traversal, support for non-integer indices. I posted this awhile ago but no one took notice. But if this is happening here now, feel free to crib anything that you think might look useful, as I'd hate to think all of this prior work went to waste.
June 19, 2015
On Friday, 19 June 2015 at 21:43:59 UTC, Vlad Levenfeld wrote:
> https://github.com/evenex/autodata
>
> N-dimensional slicing, range ops (map, zip, repeat, cycle, etc) lifted to n-dimensions, n-dim specific ops like extrusion, n-dim to d-dim of n-1-dim, flattening for lexicographic traversal, support for non-integer indices. I posted this awhile ago but no one took notice. But if this is happening here now, feel free to crib anything that you think might look useful, as I'd hate to think all of this prior work went to waste.

and the dub package: http://code.dlang.org/packages/autodata
June 20, 2015
On Friday, 19 June 2015 at 21:45:18 UTC, Vlad Levenfeld wrote:
> On Friday, 19 June 2015 at 21:43:59 UTC, Vlad Levenfeld wrote:
>> https://github.com/evenex/autodata
>>
>> N-dimensional slicing, range ops (map, zip, repeat, cycle, etc) lifted to n-dimensions, n-dim specific ops like extrusion, n-dim to d-dim of n-1-dim, flattening for lexicographic traversal, support for non-integer indices. I posted this awhile ago but no one took notice. But if this is happening here now, feel free to crib anything that you think might look useful, as I'd hate to think all of this prior work went to waste.
>
> and the dub package: http://code.dlang.org/packages/autodata

autodata is hard to understand without HTML documentation.
Automated documentation based on https://github.com/kiith-sa/harbored-mod
can be found at
http://ddocs.org/autodata/~master/index.html,  and it is empty. You may want to read http://dlang.org/ddoc.html

Regards,
Ilya
« First   ‹ Prev
1 2