MathOverflow is a question and answer site for professional mathematicians. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

The Weierstrass preparation theorem for formal power series rings guarantees that if a given formal series $f(z) = \sum a_k z^k \in R[[z]]$ where $R$ is a complete local ring with maximal ideal $M$ has $a_k \in M$ for $k < n$ and $a_n \in R^* = M^c$, then

$$ f = (z^n + b_{n-1}z^{n-1} + \cdots + b_0)u $$ where $b_k \in M$ and $u$ is a unit in $R[[z]]$.

I need an explicit algorithm for calculating this Weierstrass polynomial (or distinguished polynomial) for a given $f$. In my case the coefficient ring is $R = \mathbb Z_3[[x]]$, formal power series over the 3-adics. So any algorithm would have to be robust enough to handle these coefficients.

Does anyone know of such an algorithm for a math software package?

share|cite|improve this question
Just a comment, since I don't know and don't have the time to check: maybe you want to look at the documentation of the constructor WEIER in FriCAS whether this is what you want. If so, the file weier.spad.pamphlet in the FriCAS distribution ( contains the source. Don't hesitate to ask on – Martin Rubey Oct 18 '10 at 7:22
I don't think either MAGMA or SAGE have such functionality built in. But it should be trivial to code in any package which handles power series with not-necessarily-field coefficients. Look at Manin's proof in Ch.5 sec.2 of Lang's "Cyclotomic Field", (p.130 of the combined edition), which gives an explicit formula. – Tony Scholl Oct 18 '10 at 14:23
It seems that Manin's method suggests an algoriithm to approximate the unit power series (that I called "u" above) to any finite degree of precision. But being interested in the polynomial I would need to calculate u exactly so that I could find f*(u^-1). The package WEIER seems to only work for field coefficients, though I had trouble executing it. Entreaties to the FriCAS development group haven't produced a response. – R. Nendorf Nov 8 '10 at 18:37

Here's an algorithm that I use. Let's call $S$ the degree-$n$ shift operation, sending $\sum c_kz^k$ to $\sum c_{n+k}z^k$, in other words the quotient when you divide a power series by $z^n$. Step 0: divide $f$ by $Sf$, giving you a power series $f_1$ such that $Sf_1\equiv 1$ modulo $M$. Step $i$, for $i > 0$: repeat. At each stage, you get a power series $f_i$ for which $Sf_i\equiv 1 $ modulo $M^i$. For a quicker variant of Step $i$ (for $i > 0$), instead multiply by $2-Sf_i$. It works because you've constructed a convergent infinite product.

share|cite|improve this answer
Dear Prof. Lubin, I would also like to thank you for this answer. I am now using this in a small computational project I'm working on. Though, I was wondering, in the "quicker variant", is the rate of convergence faster, or is it just quicker because multiplication is quicker than division? – Dror Speiser Mar 8 '12 at 0:29

If you're still interested in the answer to this...I also needed an explicit algorithm for calculating associated Weierstrass polynomials and provide two such algorithms in, Algorithms 5.2 and 5.4. The first one is simplest and is based on Manin's method and a result by Sumida.

share|cite|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.