<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hi,</p>
    <p>For real argument, we could easily interface std::riemann_zeta :<br>
    </p>
    <p><a class="moz-txt-link-freetext"
href="https://en.cppreference.com/w/cpp/numeric/special_functions/riemann_zeta">https://en.cppreference.com/w/cpp/numeric/special_functions/riemann_zeta</a></p>
    <p>If you have a compiler (under windows you can install the minGW
      atoms module), you can run the following script:</p>
    <pre style="font-style: normal; font-size: 16px;"><span style="color:rgb(0,0,0);">code</span><span style="color:rgb(92,92,92);">=</span><span style="color:rgb(74,85,219);">[</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">#define __STDCPP_WANT_MATH_SPEC_FUNCS__ 1                                                               </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">#include </span><span style="color:rgb(188,143,143);"><</span><span style="color:rgb(188,143,143);">cmath</span><span style="color:rgb(188,143,143);">></span><span style="color:rgb(188,143,143);">                                                                                        </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">#include ""double.hxx""                                                                                 </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">#include ""function.hxx""                                                                               </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">extern ""C""                                                                                            </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">{                                                                                                       </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">#include ""Scierror.h""                                                                                 </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">#include ""localization.h""                                                                             </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">}                                                                                                       </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">/* ==================================================================== */                              </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">types::Function::ReturnValue sci_zeta(types::typed_list </span><span style="color:rgb(188,143,143);">&</span><span style="color:rgb(188,143,143);">in, int _iRetCount, types::typed_list </span><span style="color:rgb(188,143,143);">&</span><span style="color:rgb(188,143,143);">out)    </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">{                                                                                                       </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">    types::Double* pDblOut;                                                                             </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">    types::Double* pDblIn;                                                                              </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">    if (in.size() != 1)                                                                                 </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">    {                                                                                                   </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">        Scierror(77, _(""%s: Wrong number of input argument(s): %d expected.\n""), ""zeta"", 1);        </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">        return types::Function::Error;                                                                  </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">    }                                                                                                   </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">    if (_iRetCount </span><span style="color:rgb(188,143,143);">></span><span style="color:rgb(188,143,143);"> 1)                                                                                 </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">    {                                                                                                   </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">        Scierror(78, _(""%s: Wrong number of output argument(s): %d expected</span><span style="color:rgb(188,143,143);">.</span><span style="color:rgb(188,143,143);">""), ""zeta"", 1);         </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">        return types::Function::Error;                                                                  </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">    }                                                                                                   </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">    if (in[0]-</span><span style="color:rgb(188,143,143);">></span><span style="color:rgb(188,143,143);">isDouble() == false || in[0]-</span><span style="color:rgb(188,143,143);">></span><span style="color:rgb(188,143,143);">getAs</span><span style="color:rgb(188,143,143);"><</span><span style="color:rgb(188,143,143);">types::Double</span><span style="color:rgb(188,143,143);">></span><span style="color:rgb(188,143,143);">()-</span><span style="color:rgb(188,143,143);">></span><span style="color:rgb(188,143,143);">isComplex())                       </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">    {                                                                                                   </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">            Scierror(999, _(""%s: Wrong type for input argument #%d: real expected.\n""), ""zeta"", 1); </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">            return types::Function::Error;                                                              </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">    }                                                                                                   </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">    pDblIn = in[0]-</span><span style="color:rgb(188,143,143);">></span><span style="color:rgb(188,143,143);">getAs</span><span style="color:rgb(188,143,143);"><</span><span style="color:rgb(188,143,143);">types::Double</span><span style="color:rgb(188,143,143);">></span><span style="color:rgb(188,143,143);">();                                                             </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">    pDblOut = pDblIn-</span><span style="color:rgb(188,143,143);">></span><span style="color:rgb(188,143,143);">clone();                                                                          </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">    for (int i = 0 ; i </span><span style="color:rgb(188,143,143);"><</span><span style="color:rgb(188,143,143);"> pDblIn-</span><span style="color:rgb(188,143,143);">></span><span style="color:rgb(188,143,143);">getSize() ; ++i)                                                       </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">    {                                                                                                   </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">        pDblOut-</span><span style="color:rgb(188,143,143);">></span><span style="color:rgb(188,143,143);">set(i,std::riemann_zeta(pDblIn-</span><span style="color:rgb(188,143,143);">></span><span style="color:rgb(188,143,143);">get(i)));                                              </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">    }                                                                                                   </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">    out.push_back(pDblOut);                                                                             </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">    return types::Function::OK;                                                                         </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">}                                                                                                       </span><span style="color:rgb(188,143,143);">"</span>
<span style="color:rgb(74,85,219);">]</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(50,185,185);">ulink</span>
<span style="color:rgb(0,0,0);">files</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(174,92,176);text-decoration:underline;">fullfile</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(218,112,214);">TMPDIR</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">sci_zeta.cpp</span><span style="color:rgb(188,143,143);">"</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(50,185,185);">mputl</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">code</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(0,0,0);">files</span><span style="color:rgb(74,85,219);">)</span>
<span style="color:rgb(50,185,185);">ilib_verbose</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">1</span><span style="color:rgb(74,85,219);">)</span>
<span style="color:rgb(174,92,176);text-decoration:underline;">ilib_build</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">zeta</span><span style="color:rgb(188,143,143);">"</span><span style="color:rgb(0,0,0);">,</span> <span style="color:rgb(74,85,219);">[</span><span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">zeta</span><span style="color:rgb(188,143,143);">"</span> <span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">sci_zeta</span><span style="color:rgb(188,143,143);">"</span> <span style="color:rgb(188,143,143);">"</span><span style="color:rgb(188,143,143);">cppsci</span><span style="color:rgb(188,143,143);">"</span><span style="color:rgb(74,85,219);">]</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(0,0,0);">files</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(74,85,219);">[</span><span style="color:rgb(74,85,219);">]</span><span style="color:rgb(74,85,219);">)</span>
<span style="color:rgb(50,185,185);">exec</span> <span style="color:rgb(188,143,143);">loader.sce</span>

<span style="color:rgb(50,185,185);">tic</span>
<span style="color:rgb(50,185,185);">disp</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(50,185,185);">zeta</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">0.5</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(74,85,219);">)</span>
<span style="color:rgb(50,185,185);">disp</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(50,185,185);">toc</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(74,85,219);">)</span></pre>
    <p><br>
    </p>
    <div class="moz-cite-prefix">Le 22/05/2022 à 08:31, Lester Anderson
      a écrit :<br>
    </div>
    <blockquote type="cite"
cite="mid:CAE3taFC_ZyaAVHwhWRk8ecAyTQgTg1Lx3-cAFj7knK4UTAU9Vg@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">Hi all,
        <div><br>
        </div>
        <div>After a lot of trial and error, I have managed to get a set
          of functions to compute the approximations of Riemann's Zeta
          for negative and positive real values; values of n > 1e6
          seem to give better results:</div>
        <div><br>
        </div>
        <div>
          <pre style="font-family:Arial"><span style="color:rgb(176,24,19)">function</span> <span style="color:rgb(131,67,16)">zs</span><span style="color:rgb(92,92,92)">=</span><span style="color:rgb(0,0,0);text-decoration-line:underline">zeta_s</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(131,67,16)">z</span><span style="color:rgb(0,0,0)">, </span><span style="color:rgb(131,67,16)">n</span><span style="color:rgb(74,85,219)">)</span>
    <span style="color:rgb(100,174,100)">// Summation loop</span>
    <span style="color:rgb(131,67,16)">zs</span><span style="color:rgb(92,92,92)">=</span><span style="color:rgb(188,143,143)">1</span><span style="color:rgb(0,0,0)">;</span>
    <span style="color:rgb(160,32,240)">if</span> <span style="color:rgb(131,67,16)">z</span> <span style="color:rgb(92,92,92)">==</span> <span style="color:rgb(188,143,143)">0</span> 
       <span style="color:rgb(131,67,16)">zs</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(92,92,92)">-</span><span style="color:rgb(188,143,143)">0.5</span>
    <span style="color:rgb(160,32,240)">elseif</span> <span style="color:rgb(131,67,16)">z</span> <span style="color:rgb(92,92,92)">==</span> <span style="color:rgb(188,143,143)">1</span>
       <span style="color:rgb(131,67,16)">zs</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(218,112,214)">%inf</span>
    <span style="color:rgb(160,32,240)">else</span>
        <span style="color:rgb(160,32,240)">for</span> <span style="color:rgb(0,0,0)">i</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(188,143,143)">2</span><span style="color:rgb(255,170,0)">:</span> <span style="color:rgb(131,67,16)">n</span><span style="color:rgb(92,92,92)">-</span><span style="color:rgb(188,143,143)">1</span>
            <span style="color:rgb(131,67,16)">zs</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(131,67,16)">zs</span> <span style="color:rgb(92,92,92)">+</span> <span style="color:rgb(0,0,0)">i</span><span style="color:rgb(92,92,92)">.^</span><span style="color:rgb(92,92,92)">-</span><span style="color:rgb(131,67,16)">z</span><span style="color:rgb(0,0,0)">;</span>
        <span style="color:rgb(160,32,240)">end</span>
    <span style="color:rgb(160,32,240)">end</span>
<span style="color:rgb(176,24,19)">endfunction</span>

<span style="color:rgb(176,24,19)">function</span> <span style="color:rgb(131,67,16)">zfn</span><span style="color:rgb(92,92,92)">=</span><span style="color:rgb(0,0,0);text-decoration-line:underline">zeta_functional_eqn</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(131,67,16)">s</span><span style="color:rgb(74,85,219)">)</span>
<span style="color:rgb(100,174,100)">// Riemann</span><span style="color:rgb(100,174,100)">'</span><span style="color:rgb(100,174,100)">s functional equation</span>
<span style="color:rgb(100,174,100)">// Analytic continuation for negative values</span>
    <span style="color:rgb(131,67,16)">zfn</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(188,143,143)">2.</span><span style="color:rgb(92,92,92)">^</span><span style="color:rgb(131,67,16)">s</span> <span style="color:rgb(92,92,92)">.*</span> <span style="color:rgb(218,112,214)">%pi</span><span style="color:rgb(92,92,92)">.^</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(131,67,16)">s</span> <span style="color:rgb(92,92,92)">-</span> <span style="color:rgb(188,143,143)">1</span><span style="color:rgb(74,85,219)">)</span> <span style="color:rgb(92,92,92)">.*</span> <span style="color:rgb(50,185,185)">sin</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(218,112,214)">%pi</span><span style="color:rgb(92,92,92)">.*</span><span style="color:rgb(131,67,16)">s</span><span style="color:rgb(92,92,92)">./</span><span style="color:rgb(188,143,143)">2</span><span style="color:rgb(74,85,219)">)</span> <span style="color:rgb(92,92,92)">.*</span> <span style="color:rgb(50,185,185)">gamma</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(188,143,143)">1</span> <span style="color:rgb(92,92,92)">-</span> <span style="color:rgb(131,67,16)">s</span><span style="color:rgb(74,85,219)">)</span> <span style="color:rgb(92,92,92)">.*</span> <span style="color:rgb(0,0,0);text-decoration-line:underline">zeta_s</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(188,143,143)">1</span> <span style="color:rgb(92,92,92)">-</span> <span style="color:rgb(131,67,16)">s</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(0,0,0)">n</span><span style="color:rgb(74,85,219)">)</span>
<span style="color:rgb(176,24,19)">endfunction</span></pre>
          For even values of s < -20 the values of Zeta(s) increase
          in value and are not as close to zero as expected e.g.
          zeta_functional_eqn(-40) gives 7.5221382. At small even values
          e.g. -10, the result is of the order of ~1e-18 (close enough
          to zero). Any ideas why the even zeta values increase or how
          to reduce that response? </div>
        <div><br>
        </div>
        <div>The solution over the critical strip (zero to one) is not
          so efficient unless n is very large( > 1e8), and there
          seems to be a performance issue when using a for-loop compared
          to vectorisation. Vectorised n speeds things up quite a bit.</div>
        <div><br>
        </div>
        <div>
          <pre style="font-family:Arial"><span style="color:rgb(176,24,19)">function</span> <span style="color:rgb(131,67,16)">zs2</span><span style="color:rgb(92,92,92)">=</span><span style="color:rgb(0,0,0);text-decoration-line:underline">zeta_0_1</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(131,67,16)">s</span><span style="color:rgb(0,0,0)">, </span><span style="color:rgb(131,67,16)">n</span><span style="color:rgb(74,85,219)">)</span>
<span style="color:rgb(131,67,16)">zs2</span><span style="color:rgb(92,92,92)">=</span><span style="color:rgb(188,143,143)">0</span>
<span style="color:rgb(160,32,240)">for</span> <span style="color:rgb(0,0,0)">i</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(188,143,143)">1</span><span style="color:rgb(255,170,0)">:</span> <span style="color:rgb(131,67,16)">n</span>
         <span style="color:rgb(131,67,16)">zs2</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(131,67,16)">zs2</span> <span style="color:rgb(92,92,92)">+</span> <span style="color:rgb(74,85,219)">(</span><span style="color:rgb(92,92,92)">-</span><span style="color:rgb(188,143,143)">1</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(92,92,92)">.^</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(0,0,0)">i</span> <span style="color:rgb(92,92,92)">+</span> <span style="color:rgb(188,143,143)">1</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(92,92,92)">./</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(0,0,0)">i</span><span style="color:rgb(92,92,92)">.^</span><span style="color:rgb(131,67,16)">s</span> <span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(160,32,240)">end</span>
         <span style="color:rgb(131,67,16)">zs2</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(188,143,143)">1.</span><span style="color:rgb(92,92,92)">/</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(188,143,143)">1</span> <span style="color:rgb(92,92,92)">-</span> <span style="color:rgb(188,143,143)">2.</span><span style="color:rgb(92,92,92)">^</span><span style="color:rgb(74,85,219)">(</span> <span style="color:rgb(188,143,143)">1</span><span style="color:rgb(92,92,92)">-</span><span style="color:rgb(131,67,16)">s</span> <span style="color:rgb(74,85,219)">)</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(92,92,92)">.*</span><span style="color:rgb(131,67,16)">zs2</span><span style="color:rgb(0,0,0)">;</span>    
<span style="color:rgb(176,24,19)">endfunction</span>

<span style="color:rgb(176,24,19)">function</span> <span style="color:rgb(131,67,16)">zs1</span><span style="color:rgb(92,92,92)">=</span><span style="color:rgb(0,0,0);text-decoration-line:underline">zeta_0_1</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(131,67,16)">s</span><span style="color:rgb(0,0,0)">, </span><span style="color:rgb(131,67,16)">n</span><span style="color:rgb(74,85,219)">)</span>
<span style="color:rgb(100,174,100)">// Vectorised version    </span>
<span style="color:rgb(131,67,16)">zs1</span><span style="color:rgb(92,92,92)">=</span><span style="color:rgb(188,143,143)">0</span>
<span style="color:rgb(0,0,0)">k</span><span style="color:rgb(92,92,92)">=</span><span style="color:rgb(50,185,185)">linspace</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(188,143,143)">1</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(131,67,16)">n</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(131,67,16)">n</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
          <span style="color:rgb(131,67,16)">zs1</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(50,185,185)">sum</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(92,92,92)">-</span><span style="color:rgb(188,143,143)">1</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(92,92,92)">.^</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(0,0,0)">k</span><span style="color:rgb(92,92,92)">+</span> <span style="color:rgb(188,143,143)">1</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(92,92,92)">./</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(0,0,0)">k</span><span style="color:rgb(92,92,92)">.^</span><span style="color:rgb(131,67,16)">s</span> <span style="color:rgb(74,85,219)">)</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(0,0,0)">;</span>
          <span style="color:rgb(131,67,16)">zs1</span> <span style="color:rgb(92,92,92)">=</span> <span style="color:rgb(188,143,143)">1.</span><span style="color:rgb(92,92,92)">/</span><span style="color:rgb(74,85,219)">(</span><span style="color:rgb(188,143,143)">1</span> <span style="color:rgb(92,92,92)">-</span> <span style="color:rgb(188,143,143)">2.</span><span style="color:rgb(92,92,92)">^</span><span style="color:rgb(74,85,219)">(</span> <span style="color:rgb(188,143,143)">1</span><span style="color:rgb(92,92,92)">-</span><span style="color:rgb(131,67,16)">s</span> <span style="color:rgb(74,85,219)">)</span><span style="color:rgb(74,85,219)">)</span><span style="color:rgb(92,92,92)">.*</span><span style="color:rgb(131,67,16)">zs1</span><span style="color:rgb(0,0,0)">;</span>
<span style="color:rgb(176,24,19)">endfunction</span></pre>
          For example, calculating the approximation of Zeta(0.5) using
          a for-loop takes ~150s to give a value of -1.4602337981325388
          (quite close), whereas the vectorised version does the
          computation in under 20s, both tested using n=1e8. Can the
          functions be optimised to improve speed and accuracy?</div>
        <div><br>
        </div>
        <div>Using Scilab 6.1.1 on Windows 10 (16 Gb RAM).</div>
        <div><br>
        </div>
        <div>Thanks</div>
        <div>Lester</div>
         </div>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:users@lists.scilab.org">users@lists.scilab.org</a>
<a class="moz-txt-link-freetext" href="http://lists.scilab.org/mailman/listinfo/users">http://lists.scilab.org/mailman/listinfo/users</a>
</pre>
    </blockquote>
    <pre class="moz-signature" cols="72">-- 
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
<a class="moz-txt-link-freetext" href="http://www.utc.fr/~mottelet">http://www.utc.fr/~mottelet</a>
</pre>
  </body>
</html>