Function: ellperiods
Section: elliptic_curves
C-Name: ellperiods
Prototype: GD0,L,p
Help: ellperiods(w, {flag = 0}): w describes a complex period lattice ([w1,w2]
 or an ellinit structure). Returns normalized periods [W1,W2] generating the
 same lattice such that tau := W1/W2 satisfies Im(tau) > 0 and lies in the
 standard fundamental domain for SL2. If flag is 1, the return value is
 [[W1,W2], [e1,e2]], where e1, e2 are the quasi-periods attached to
 [W1,W2], satisfying e2 W1 - e1 W2 = 2*I*Pi.
Doc: Let $w$ describe a complex period lattice ($w = [w_1,w_2]$
 or an \kbd{ellinit} structure). Returns normalized periods $[W_1,W_2]$ generating
 the same lattice such that $\tau := W_1/W_2$ has positive imaginary part
 and lies in the standard fundamental domain for $\text{SL}_2(\Z)$.

 If $\fl = 1$, the function returns $[[W_1,W_2], [\eta_1,\eta_2]]$, where
 $\eta_1$ and $\eta_2$ are the quasi-periods attached to
 $[W_1,W_2]$, satisfying $\eta_2 W_1 - \eta_1 W_2 = 2 i \pi$.

 The output of this function is meant to be used as the first argument
 given to ellwp, ellzeta, ellsigma or elleisnum. Quasi-periods are
 needed by ellzeta and ellsigma only.

 \bprog
 ? L = ellperiods([1,I],1);
 ? [w1,w2] = L[1]; [e1,e2] = L[2];
 ? e2*w1 - e1*w2
 %3 = 6.2831853071795864769252867665590057684*I
 ? ellzeta(L, 1/2 + 2*I)
 %4 = 1.5707963... - 6.283185307...*I
 ? ellzeta([1,I], 1/2 + 2*I) \\ same but less efficient
 %4 = 1.5707963... - 6.283185307...*I
 @eprog
