Karim Belabas on Wed, 10 Dec 2014 18:12:42 +0100


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: extremal case of component extraction


* Bill Allombert [2013-05-20 17:08]:
> In PARI 2.6.0 we have:
> 
> ? [1,2][2..-2]
>   ***   at top-level: [1,2][2..-2]
>   ***                 ^------------
>   *** _[_.._]: inconsistent dimensions in _[..].
> 
> ? [1,2][2..1]
>   ***   at top-level: [1,2][2..1]
>   ***                 ^-----------
>   *** _[_.._]: inconsistent dimensions in _[..].
> 
> I think a case could be made to return [] in both case.
> 
> On the other hand
> 
> ? [1,2][3..1]
> 
> should probably fail.

OK. In v[a..b], assume a and b encode indices ia and ib, that is
  * ia = a if a > 0,
  * ia = #v+1 + a if a < 0.
  
Then v[a..b] would

- fail with e_DIM if either ia or ib is outside [1,#v]
- else return [] if ia > ib
- else return [v[ia], ..., v[ib]].

And similarly for matrices.

    K.B.

P.S. In the above correspondence a --> ia, I didn't state what a = 0
encodes: it's undefined. It *should* raise an exception but the
implementation currently uses

  v[0..b]

as an alias for

  v[^b]   \\ remove index=b entry

And 

  v[a..0]

as an alias for

  [v[a]]

I'm not sure about the reason for the final one...

--
Karim Belabas, IMB (UMR 5251)  Tel: (+33) (0)5 40 00 26 17
Universite de Bordeaux         Fax: (+33) (0)5 40 00 69 50
351, cours de la Liberation    http://www.math.u-bordeaux1.fr/~kbelabas/
F-33405 Talence (France)       http://pari.math.u-bordeaux1.fr/  [PARI/GP]
`