<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>