<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div class="moz-cite-prefix">Hello Lester,</div>
<div class="moz-cite-prefix"><br>
<br>
</div>
<div class="moz-cite-prefix">Le 29/12/2021 à 09:00, Lester Anderson
a écrit :<br>
</div>
<blockquote type="cite"
cite="mid:CAE3taFBPOF_pw=kwyTUaSwFFk812i+vgNyDkn=nmZy4r7Hv+8A@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">Hello,
<div><br>
</div>
<div>A quick query. Have adapted existing Matlab code for Scilan
to calculate Bernoulli numbers using an explicit formula (<a
href="http://www.bernoulli.org" moz-do-not-send="true">www.bernoulli.org</a>).
</div>
</div>
</blockquote>
<br>
Not so explicit. Could you please provide the formula, before
implementing it in Scilab language?<br>
The following is a "vectorized" version of your code, likely with
the same mistake:<br>
<pre style="font-family:Monospaced;font-style:normal;font-size:13.0;"><span style="color:rgb(0,0,0);">B</span><span style="color:rgb(92,92,92);">=</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(160,32,240);">for</span> <span style="color:rgb(0,0,0);">m</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(188,143,143);">0</span><span style="color:rgb(255,170,0);">:</span><span style="color:rgb(188,143,143);">20</span>
<span style="color:rgb(0,0,0);">Sum</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);">;</span>
<span style="color:rgb(160,32,240);">for</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);">0</span><span style="color:rgb(255,170,0);">:</span><span style="color:rgb(0,0,0);">m</span>
<span style="color:rgb(0,0,0);">v</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(188,143,143);">0</span><span style="color:rgb(255,170,0);">:</span><span style="color:rgb(0,0,0);">k</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">Sum</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(0,0,0);">Sum</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(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(0,0,0);">v</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(92,92,92);">.*</span><span style="color:rgb(0,0,0);">nchoosek</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">k</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(0,0,0);">v</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);">v</span><span style="color:rgb(92,92,92);">.^</span><span style="color:rgb(0,0,0);">m</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(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(0,0,0);">B</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">m</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(0,0,0);">Sum</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(160,32,240);">end</span></pre>
<p>A working implementation based on the recurrent formula
<math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow></mrow></semantics></math><font
face="monospace"><math
xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>
B</mi><mi>m</mi></msub><mo>=</mo><mfrac><mrow><mo>−</mo><mn>1</mn></mrow><mrow><mi>m</mi><mo>+</mo><mn>1</mn></mrow></mfrac><munderover><mo>∑</mo><mrow><mi>k</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>m</mi><mo>−</mo><mn>1</mn></mrow></munderover><mrow><mo>(</mo><mfrac
linethickness="0px"><mrow><mi>m</mi><mo>+</mo><mn>1</mn></mrow><mi>k</mi></mfrac><mo>)</mo></mrow><msub><mi>B</mi><mi>k</mi></msub></mrow></semantics></math></font><br>
</p>
<p>could be:</p>
<pre style="font-family:Monospaced;font-style:normal;font-size:13.0;"><span style="color:rgb(0,0,0);">mMax</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(188,143,143);">20</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">B</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(50,185,185);">zeros</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(0,0,0);">mMax</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">B</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(188,143,143);">1</span><span style="color:rgb(255,170,0);">:</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(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);">1</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(0,0,0);">;</span>
<span style="color:rgb(160,32,240);">for</span> <span style="color:rgb(0,0,0);">m</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(188,143,143);">2</span><span style="color:rgb(255,170,0);">:</span><span style="color:rgb(0,0,0);">mMax</span>
<span style="color:rgb(0,0,0);">B</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(0,0,0);">m</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(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(0,0,0);">nchoosek</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">m</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(188,143,143);">0</span><span style="color:rgb(255,170,0);">:</span><span style="color:rgb(0,0,0);">m</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(0,0,0);">B</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(188,143,143);">1</span><span style="color:rgb(255,170,0);">:</span><span style="color:rgb(0,0,0);">m</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(74,85,219);">(</span><span style="color:rgb(0,0,0);">m</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(0,0,0);">;</span>
<span style="color:rgb(160,32,240);">end</span><font face="monospace">
--> B</font><font face="monospace">
ans =</font><font face="monospace">
column 1 to 13</font><font face="monospace">
1. -0.5 0.1666667 0. -0.0333333 0. 0.0238095 0. -0.0333333 0. 0.0757576 0. -0.2531136</font>
</pre>
<font face="monospace"><br>
column 14 to 21<br>
0. 1.1666667 0. -7.0921569 0. 54.971178 0.
-529.12424<br>
</font><br>
<p>To fasten the loop, the call to nchoosek() could be replaced with
the 3 last rows of Pascal's triangle.<br>
<br>
Regards<br>
Samuel<br>
</p>
</body>
</html>