Re: [eigen] On a flexible API for submatrices, slicing, indexing, masking, etc.

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]




On Sat, Dec 31, 2016 at 12:30 AM, Yuanchen Zhu <yuanchen.zhu@xxxxxxxxx> wrote:
- you kept "span" (one less character?), but I think "range" is more intuitive (minor)

There are several advantages: 

- Yes one fewer character! Shorter without adding confusion is always better.

- Consistency with Armadillo (minor advantage).

- The word "range" is overloaded much more than span. There's boost::range, the WIP range v3, and the "range-based" for loops. These big shots can have different conventions, some times [first, last) (range-based for), some times [begin, end) (boost's irange). For span, the only conflict is gsl::span right now (which should really be named array_view anyway, akin to std::string_view. It also takes in (base_ptr, length), so it's categorically different from our use).

Just thought of two more points:

1. The word "range" in the C++ context​ often means iterator ranges. Iterators copies the pointer usage,  you can ++ until it equals the end of the range, and more importantly you can dereference them. The range we are discussing are range of indices. It might be a good idea to distance away from the (iterator) range connotation.

2. If we really want to be nerdy, mathematician has precise definition of spans, as in  "linear span" and "convex span". Convex span is sort of exactly what we mean when we write span(first, last). So there you go... 

Not really, a convex span is related to the convex-hull of a set, and a linear span is the subspace defined by a set of vectors v_1,..,v_n. It can also be defined as the range of the function f(x_1,..x_n)=sum_i x_i v_i. 

The mathematical notion that is equivalent to what we call range or span here is simply an 'arithmetic progression', also called an 'arithmetic sequence'. So if we really want to avoid confusions/collision with other "range" and "span" in the C++ standard (the span in GSL is likely to be adopted soon), we could think about a contraction like "aseq"?

gael



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/