Karim Belabas on Tue, 28 Aug 2007 10:17:35 +0200


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

Re: polsym() reverse


* Max Alekseyev [2007-08-15 03:24]:
> Does there exist a function that is reverse to polsym(), i.e., that
> reconstructs the polynomial from given vector of the symmetric powers
> of its roots?

I don't think there's a public one ( there are at least 3 private ones buried
in various code modules ). 

> I believe that such function should exist but I could not find it so far.
>
> If not, does anybody have an implementation of such a function?

Here's one:

  PolFromPowerSums(S) =
  { local( n = S[1], a = vector(n+1) );
    a[1] = 1;
    for (k = 2, n, a[k+1] = sum(i = 1, k, S[i+1]*a[k+1-i]) / -k);
    Pol(a)
  }

1) is defined up to a multiplicative constant, so assumes the result is monic.

2) assumes the base ring has characteristic 0 or > n.

3) assumes #S >= Degree(Pol), otherwise we do not have enough information.
Should trigger a nice error message if #S <= S[1].

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

I can add a trivial GP function implementing the above. How should I
name it ? The above doesn't quite fit our current naming scheme:-)

'polsym' was not a great choice; 'powersums' would have been clearer/easier
to find. When I read 'polsym', I think about symmetric functions of the roots,
hence about the opposite construction ...

Cheers,

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