Function: zetamult
Section: transcendental
C-Name: zetamult0
Prototype: GDGp
Help: zetamult(s, {T}): multiple zeta value at integral s = [s1,...,sk];
 if given, T is the output of zetamultinit.
Doc: For $s$ a vector of positive integers such that $s[1] \geq 2$,
 returns the multiple zeta value (MZV)
 $$\zeta(s_1,\dots, s_k) = \sum_{n_1>\dots>n_k>0} n_1^{-s_1}\dots n_k^{-s_k}.$$
 \bprog
 ? zetamult([2,1]) - zeta(3) \\ Euler's identity
 %1 = 0.E-38
 @eprog\noindent
 If the bit precision is $B$, this function runs in time $\tilde{O}(k B^2)$.

 If $T$ is provided, it must be the output of \kbd{zetamultinit}$(w)$ for
 some $w \geq s_1 + \dots + s_k$ and will provide a small speed up,
 usually about 10\%.
 \bprog
 ? T = zetamultinit(20); s = [2,1,1,1,1,1,1,1,1];
 ? for(i=1,10^3, zetamult(s))
 time = 373 ms.
 ? for(i=1,10^3, zetamult(s, T)) \\ faster
 time = 279 ms.
 ? zetamult(vector(10,i,2), T)
 %4 = 1.7165384749821433018378232207719985786 E-10
 ? zetamult(vector(11,i,2), T) \\ overshoot
  ***   at top-level: zetamult(vector(11,i
  ***                 ^--------------------
  *** zetamult: domain error in zetamult: weight > 20
 @eprog

 In addition to the above format (\kbd{avec}), the function
 also accepts an internal binary format \kbd{evec} (each $s_i$ is replaced
 by $s_i$ bits, all of them 0 but the last one), and an \kbd{index} format
 (if $e$ is the positive integer attached the \kbd{evec} vector of
 bits, the index is the integer $e + 2^{k-2}$). The function
 \kbd{zetamultconvert} allows to pass from one format to the other; the
 function \kbd{zetamultall} computes simultaneously all MZVs of weight
 $\sum_{i\leq k} s_i$ up to $n$.

Variant: Also available is \fun{GEN}{zetamult}{GEN avec, long prec}.
