Karim BELABAS on Thu, 17 Apr 2003 15:54:14 +0200 (MEST)


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

Re: point notation


On 17 Apr 2003, Markus Endres wrote:
> I'm going to write a routine called GrInit which initialize a group ring
> K[G] (like nfinit or bnfinit) in some way, returns something like the
> wedderburn decomposition, K-irreducible characters, the maximal order
> and something more.
>
> now, I want to use the point notation as in nfinit/bnfinit. that means,
> I want a possibility to call my results like K.disc in K=nfinit(pol), as
> example: KG=GrInit(...); KG.Kchi; which returns the characters
>
> This point notation would be very useful for me. Is there any
> possibility to write such a 'point notation' by my own?

(11:25) gp > x.Kchi = x[2] \\ definition
(11:25) gp > [1,2,3].Kchi
%1 = 2

It's paragraph 2.6.4 in User's manual (stable branch. It's 2.6.5 in CVS).

See my "Contributed GP scripts" page for some examples, especially

  http://www.math.u-psud.fr/~belabas/pari/scripts/modsym.gp

Caveats:
1) this might work better (i.e faster, possibly more reliable) on the
_unstable_ branch (i.e from CVS).

2) for trivial accessors like the above, member functions are about twice
slower than direct access (that's still about 10^6 accesses per second on a
1GHz machine).

OTOH, member functions are much _faster_ than general user functions, in
particular argument passing is much more efficient [ user functions
copy their arguments, member functions don't. Allowing passing arguments as
pointers has been discussed, but is not implemented yet ]

  ? D(nf) = nf[3]
  ? nf.D  = nf[3]
  ? nf = nfinit(x^10-2);
  ? for (i=1,10000, D(nf));
  time = 1,990 ms.            \\ 10000 useless copies ...
  ? for (i=1,10000, nf.D);
  time = 20 ms.

Hope this helps,

    Karim.
-- 
Karim Belabas                     Tel: (+33) (0)1 69 15 57 48
Dép. de Mathématiques, Bât. 425   Fax: (+33) (0)1 69 15 60 19
Université Paris-Sud              http://www.math.u-psud.fr/~belabas/
F-91405 Orsay (France)            http://www.parigp-home.de/  [PARI/GP]