| Karim.Belabas on Fri, 2 Feb 2001 16:28:48 +0100 (MET) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: gp and strings |
On Thu, 1 Feb 2001, Nils-Peter Skoruppa wrote:
> does anybody know of a method to
> convert the string "pari" into ["p", "a", "r", "i"]
> (from within gp, of course).
You can apply the attached patch, then use
(16:26) gp > Vec("pari")
%1 = ["p", "a", "r", "i"]
Note that the reverse operation is already there:
(16:26) gp > concat(%)
%2 = "pari"
I'll probably make it the default behaviour. I can't see any use for the
former one (returned ["pari"]), and this one is quite fun (besides giving
access to substrings of PARI strings which wasn't possible without invoking
external programs).
Karim.
--
Karim Belabas email: Karim.Belabas@math.u-psud.fr
Dep. de Mathematiques, Bat. 425
Universite Paris-Sud Tel: (00 33) 1 69 15 57 48
F-91405 Orsay (France) Fax: (00 33) 1 69 15 60 19
--
PARI/GP Home Page: http://www.parigp-home.de/
Index: src/basemath/gen3.c
===================================================================
RCS file: /home/megrez/cvsroot/pari/src/basemath/gen3.c,v
retrieving revision 1.22
diff -c -r1.22 gen3.c
*** src/basemath/gen3.c 2000/11/03 21:00:22 1.22
--- src/basemath/gen3.c 2001/02/02 15:22:32
***************
*** 1962,1970 ****
if (!x) return cgetg(1,t_VEC);
tx = typ(x);
! if (is_scalar_t(tx) || is_rfrac_t(tx) || tx==t_STR)
{
y=cgetg(2,t_VEC); y[1]=lcopy(x);
return y;
}
if (is_graphicvec_t(tx))
--- 1962,1983 ----
if (!x) return cgetg(1,t_VEC);
tx = typ(x);
! if (is_scalar_t(tx) || is_rfrac_t(tx))
{
y=cgetg(2,t_VEC); y[1]=lcopy(x);
+ return y;
+ }
+ if (tx == t_STR)
+ {
+ char *s = GSTR(x);
+ char t[2];
+ lx = strlen(s); t[1] = 0;
+ y = cgetg(lx+1, t_VEC);
+ for (i=0; i<lx; i++)
+ {
+ t[0] = s[i];
+ y[i+1] = (long)strtoGENstr(t,0);
+ }
return y;
}
if (is_graphicvec_t(tx))