Function: lfuncheckfeq
Section: l_functions
C-Name: lfuncheckfeq_bitprec
Prototype: lGDGb
Help: lfuncheckfeq(L,{t}): given an L-function (Lmath, Ldata or Linit),
 check whether the functional equation is satisfied. If the function has
 poles, the polar part must be specified. The program returns a bit accuracy
 which should be a large negative value close to the current bit accuracy.
 If t is given, it checks the functional equation for the theta function
 at t and 1/t.

Doc: Given the data associated to an $L$-function (\kbd{Lmath}, \kbd{Ldata}
 or \kbd{Linit}), check whether the functional equation is satisfied.
 This is most useful for an \kbd{Ldata} constructed ``by hand'', via
 \kbd{lfuncreate}, to detect mistakes.

 If the function has poles, the polar part must be specified. The routine
 returns a bit accuracy $b$ such that $|w - \hat{w}| < 2^{b}$, where $w$ is
 the root number contained in \kbd{data}, and $\hat{w}$ is a computed value
 derived from $\overline{\theta}(t)$ and $\theta(1/t)$ at some $t\neq 0$ and
 the assumed functional equation. Of course, a large negative value of the
 order of \kbd{realbitprecision} is expected.

 If $t$ is given, it should be close to the unit disc for efficiency and
 such that $\overline{\theta}(t) \neq 0$. We then check the functional
 equation at that $t$.
 \bprog
 ? \pb 128       \\ 128 bits of accuracy
 ? default(realbitprecision)
 %1 = 128
 ? L = lfuncreate(1);  \\ Riemann zeta
 ? lfuncheckfeq(L)
 %3 = -124
 @eprog\noindent i.e. the given data is consistent to within 4 bits for the
 particular check consisting of estimating the root number from all other
 given quantities. Checking away from the unit disc will either fail with
 a precision error, or give disappointing results (if $\theta(1/t)$ is
 large it will be computed with a large absolute error)
 \bprog
 ? lfuncheckfeq(L, 2+I)
 %4 = -115
 ? lfuncheckfeq(L,10)
  ***   at top-level: lfuncheckfeq(L,10)
  ***                 ^------------------
  *** lfuncheckfeq: precision too low in lfuncheckfeq.
 @eprog
