<!--<syntaxhighlight lang="phix">(phixonline)-->
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">monomial_to_bernstein_degree2m_to_bern2</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">monomial_coefficients</span><span style="color: #0000FF;">)</span>
<span style="color: #004080;">atom</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">a0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">a1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">a2</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">monomial_coefficients</span><span style="color: #0000FF;">,</span>
<span style="color: #008080;">return</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">a0a01</span> <span style="color: #0000FF;">,=</span> <span style="color: #000000;">a0</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">((</span><span style="color: #000000;">1a1</span><span style="color: #0000FF;">/</span><span style="color: #000000;">2</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">a1</span><span style="color: #0000FF;">),</span> <span style="color: #000000;">a0</span> <span style="color: #0000FF;">+</span> <span style="color: #000000;">a1</span> <span style="color: #0000FF;">+</span> <span style="color: #000000;">a2</span><span style="color: #0000FF;">}</span>
<span style="color: #000000;"> pbern3a02</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;"> monomial_to_bernstein_degree3a0</span> <span style="color: #0000FF;"> (+</span> <span style="color: #000000;"> pmono3a1</span> <span style="color: #0000FF;"> ),+</span> <span style="color: #000000;">a2</span> ▼
<span style="color: # 004080008080;"> atomreturn</span> <span style="color: #0000FF;">{</span><span style="color: #000000;"> b0a0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;"> b1a01</span><span style="color: #0000FF;">,</span> <span style="color: #000000;"> b2a02</span><span style="color: #0000FF;">} </span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">bernstein_coefficients</span> ▼
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">evaluate_bernstein_degree2m_to_bern3</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">bernstein_coefficients</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">atom</span> <span style="color: #000000;">tmonomial_coefficients</span><span style="color: #0000FF;">)</span>
<span style="color: #004080;">atom</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">b0a0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">b1a1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">b2a2</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">a3</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">bernstein_coefficientsmonomial_coefficients</span><span style="color: #0000FF;">,</span>
<span style="color: # 008080000000;"> constanta01</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;"> pbern3aa0</span> <span style="color: #0000FF;"> =+</span> <span style="color: #000000;"> bernstein_degree2_to_degree3a1</span><span style="color: #0000FF;"> (/</span><span style="color: #000000;"> pbern23</span><span style="color: #0000FF;"> ),</span> ▼
<span style="color: #000080;font-style:italic;">-- de Casteljau’s algorithm.</span> ▼
<span style="color: #004080000000;">atoma02</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">sa0</span> <span style="color: #0000FF;">+</span> <span style="color: #000000;">a1</span><span style="color: #0000FF;">/</span><span style="color: #000000;">13</span><span style="color: #0000FF;">*</span><span style="color: #000000;">2</span> <span style="color: #0000FF;">-+</span> <span style="color: #000000;">ta2</span><span style="color: #0000FF;">/</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span>
<span style="color: #000000;">b01a03</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">sa0</span> <span style="color: #0000FF;">*+</span> <span style="color: #000000;">b0a1</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF000000;">(a2</span><span style="color: #000000;">t</span> <span style="color: #0000FF;">*+</span> <span style="color: #000000;">b1</span><span style="color: #0000FF;">),a3</span>
<span style="color: #000000008080;">b12return</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">({</span><span style="color: #000000;">sa0</span> <span style="color: #0000FF;">*,</span> <span style="color: #000000;">b1a01</span><span style="color: #0000FF;">),</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">ta02</span> <span style="color: #0000FF;">*,</span> <span style="color: #000000;">b2a03</span><span style="color: #0000FF;">),}</span>
<span style="color: #000000;">b012</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">s</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">b01</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">t</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">b12</span><span style="color: #0000FF;">)</span> ▼
<span style="color: #008080;">return</span> <span style="color: #000000;">b012</span> ▼
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">monomial_to_bernstein_degree3bern2_to_bern3</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">monomial_coefficientsbernstein_coefficients</span><span style="color: #0000FF;">)</span>
<span style="color: #004080;">atom</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">a0b0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">a1b1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">a2b2</span><span style="color: #0000FF;">,}</span> <span style="color: #0000000000FF;">a3</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF000000;">=bernstein_coefficients</span> <span style="color: #0000000000FF;">monomial_coefficients,</span>
<span style="color: #008080000000;">returnb01</span> <span style="color: #0000FF;">{=</span> <span style="color: #000000;">a0b0</span><span style="color: #0000FF;">,/</span> <span style="color: #000000;">a03</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">((</span><span style="color: #000000;">1b1</span><span style="color: #0000FF;">/*</span><span style="color: #000000;">32</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">a13</span><span style="color: #0000FF;">),</span>
<span style="color: #000000;">a0b12</span> <span style="color: #0000FF;">+=</span> <span style="color: #0000FF;">((</span><span style="color: #000000;">2</span><span style="color: #0000FF;">/</span> <span style="color: #000000;">3b1</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">a12</span><span style="color: #0000FF;">)/</span> <span style="color: #0000FF000000;">+3</span> <span style="color: #0000FF;">((+</span> <span style="color: #000000;">1b2</span><span style="color: #0000FF;">/</span><span style="color: #000000;">3</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">a2</span><span style="color: #0000FF;">),</span>
<span style="color: #008080;">return</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">a0b0</span> <span style="color: #0000FF;">+,</span> <span style="color: #000000;">a1b01</span> <span style="color: #0000FF;">+,</span> <span style="color: #000000;">a2b12</span> <span style="color: #0000FF;">+,</span> <span style="color: #000000;">a3b2</span><span style="color: #0000FF;">}</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">evaluate_bernstein_degree3eval_bern2</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">bernstein_coefficients</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">atom</span> <span style="color: #000000;">t</span><span style="color: #0000FF;">)</span>
▲ <span style="color: #000080;font-style:italic;"> --// using de Casteljau’s algorithm .</span>
<span style="color: #004080;">atom</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">b0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">b1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">b2</span><span style="color: #0000FF;">,}</span> <span style="color: #0000000000FF;">b3</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF000000;">=bernstein_coefficients</span> <span style="color: #0000000000FF;">bernstein_coefficients,</span>
<span style="color: #000080;font-style:italic;">// de Casteljau’s algorithm.</span> ▼
<span style="color: #004080;">atom</span> <span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">1</span> <span style="color: #0000FF;">-</span> <span style="color: #000000;">t</span><span style="color: #0000FF;">,</span>
<span style="color: #000080;font-style:italic;">/ */ Horner’sfirst rule. */mid-points</span> ▼
<span style="color: #000000;">b01</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">s</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">b0</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">t</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">b1</span><span style="color: #0000FF;">),</span> ▼
<span style="color: #000000;">b12b01</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">s</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">b1</span><span style="color: #0000FF;">)b0</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">t</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">b2b1</span><span style="color: #0000FF;">),</span>
<span style="color: #000000;">b23b12</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">s</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">b2</span><span style="color: #0000FF;">)b1</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">t</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">b3b2</span><span style="color: #0000FF;">),</span>
<span style="color: #000080;font-style:italic;"> --/ * Horner’s/ rule.second mid- -*/point is on the curve</span> ▼
<span style="color: #000000;">b012</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">s</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">b01</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">t</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">b12</span><span style="color: #0000FF;">),</span> ▼
<span style="color: #000000;">b123b012</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">s</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">b12</span><span style="color: #0000FF;">)b01</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">t</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">b23</span><span style="color: #0000FF;">),b12</span>
▲ <span style="color: #008080;">return</span> <span style="color: #000000;">b012</span>
<span style="color: #000000;">b0123</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">s</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">b012</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">t</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">b123</span><span style="color: #0000FF;">)</span> ▼
<span style="color: #008080;">return</span> <span style="color: #000000;">b0123</span> ▼
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">bernstein_degree2_to_degree3eval_bern3</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">bernstein_coefficients</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">atom</span> <span style="color: #000000;">t</span><span style="color: #0000FF;">)</span>
▲ <span style="color: #000080;font-style:italic;">// using de Casteljau’s algorithm .</span>
▲ <span style="color: #004080;">atom</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">b0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">b1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">b2</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">bernstein_coefficients</span>
<span style="color: #008080004080;">returnatom</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">b0</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">((</span><span style="color: #000000;">1b1</span><span style="color: #0000FF;">/</span><span style="color: #000000;">3</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">*,</span> <span style="color: #000000;">b0b2</span><span style="color: #0000FF;">),</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">((</span><span style="color: #000000;">2b3</span><span style="color: #0000FF;">/}</span><span style="color: #000000;">3</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">b1bernstein_coefficients</span><span style="color: #0000FF;">),</span>
<span style="color: #0000FF;">((</span><span style="color: #000000;">2s</span><span style="color: #0000FF;">/</span><span style="color: #000000;">3</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">b1</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">((</span><span style="color: #000000;">1</span><span style="color: #0000FF;">/-</span><span style="color: #000000;">3t</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">b2</span><span style="color: #0000FF;">),</span> <span style="color: #000000;">b2</span><span style="color: #0000FF;">}</span>
<span style="color: #000080;font-style:italic;">// first mid-points</span>
<span style="color: #000000;">b01</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">*</span><span style="color: #000000;">b0</span> <span style="color: #0000FF;">+</span> <span style="color: #000000;">t</span><span style="color: #0000FF;">*</span><span style="color: #000000;">b1</span><span style="color: #0000FF;">,</span>
<span style="color: # 7060A8000000;"> printfb12</span> <span style="color: #0000FF;"> (=</span> <span style="color: #000000;"> 1s</span><span style="color: #0000FF;"> ,*</span><span style="color: # 008000000000;"> " mono %v --> bern %v\n"b1</span> <span style="color: #0000FF;"> ,+</span> <span style="color: #0000FF;">{</span><span style="color: #000000;"> pmono3t</span><span style="color: #0000FF;"> ,*</span><span style="color: #000000;"> pbern3b2</span><span style="color: #0000FF;"> }),</span> ▼
<span style="color: # 7060A8000000;"> printfb23</span> <span style="color: #0000FF;"> (=</span> <span style="color: #000000;"> 1s</span><span style="color: #0000FF;"> ,*</span><span style="color: # 008000000000;"> " mono %v --> bern %v\n"b2</span> <span style="color: #0000FF;"> ,+</span> <span style="color: #0000FF;">{</span><span style="color: #000000;"> qmono3t</span><span style="color: #0000FF;"> ,*</span><span style="color: #000000;"> qbern3b3</span><span style="color: #0000FF;"> }),</span> ▼
<span style="color: #000080;font-style:italic;">// second mid-points</span>
▲ <span style="color: #000000;"> b0123b012</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">s</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;"> b012</span><span style="color: #0000FF;">)b01</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">t</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;"> b123b12</span><span style="color: #0000FF;"> ),</span>
<span style="color: # 7060A8000000;"> printfb123</span> <span style="color: #0000FF;"> (=</span> <span style="color: #000000;"> 1s</span><span style="color: #0000FF;"> ,*</span><span style="color: # 008000000000;"> " mono %v --> bern %v\n"b12</span> <span style="color: #0000FF;"> ,+</span> <span style="color: #0000FF;">{</span><span style="color: #000000;"> rmono3t</span><span style="color: #0000FF;"> ,*</span><span style="color: #000000;"> rbern3b23</span><span style="color: #0000FF;"> }),</span> ▼
<span style="color: #000080;font-style:italic;">// third mid-point is on the curve</span>
<span style="color: # 7060A8000000;"> printfb0123</span> <span style="color: #0000FF;"> (=</span> <span style="color: #000000;"> 1s</span><span style="color: #0000FF;"> ,*</span><span style="color: # 008000000000;"> " bern %v --> bern %v\n"b012</span> <span style="color: #0000FF;"> ,+</span> <span style="color: #0000FF;">{</span><span style="color: #000000;"> pbern2t</span><span style="color: #0000FF;"> ,*</span><span style="color: #000000;"> pbern3a</span><span style="color: #0000FF;">})b123</span> ▼
▲ <span style="color: #008080;">return</span> <span style="color: #000000;">b0123</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">evaluate_monomial_degree2eval_m2</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">monomial_coefficients</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">atom</span> <span style="color: #000000;">t</span><span style="color: #0000FF;">)</span>
<span style="color: #004080;">atom</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">a0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">a1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">a2</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">monomial_coefficients</span>
▲ <span style="color: # 000000008080;"> b012return</span> <span style="color: # 0000FF000000;"> =a0</span> <span style="color: #0000FF;"> (+</span> <span style="color: #000000;"> st</span> <span style="color: #0000FF;">* (</span> <span style="color: #000000;"> b01a1</span> <span style="color: #0000FF;"> )+</span> <span style="color: # 0000FF000000;"> +t</span> <span style="color: #0000FF;"> (*</span><span style="color: #000000;"> ta2</span> <span style="color: #0000FF;"> *)</span> <span style="color: # 000000000080; ">b12</span><span font-style ="color: #0000FFitalic;"> )-- Horner’s rule</span>
▲ <span style="color: #000080;font-style:italic;">/* Horner’s rule. */</span>
<span style="color: #008080;">return</span> <span style="color: #000000;">a0</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">t</span> <span style="color: #0000FF;">*</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">a1</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">t</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">a2</span><span style="color: #0000FF;">)))</span> ▼
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">evaluate_monomial_degree3eval_m3</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">monomial_coefficients</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">atom</span> <span style="color: #000000;">t</span><span style="color: #0000FF;">)</span>
<span style="color: #004080;">atom</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">a0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">a1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">a2</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">a3</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">monomial_coefficients</span>
▲ <span style="color: #008080;">return</span> <span style="color: #000000;">a0</span> <span style="color: #0000FF;">+</span> <span style="color: #000000;">t</span><span style="color: #0000FF;"> *(</span><span style="color: #000000;"> ta1</span> <span style="color: #0000FF;"> *+</span> <span style="color: # 0000FF000000;"> (t</span><span style="color: # 0000000000FF;"> a1*(</span> <span style="color: # 0000FF000000;"> +a2</span> <span style="color: #0000FF;"> (+</span> <span style="color: #000000;">t</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;"> a2a3</span><span style="color: #0000FF;">)) )</span> <span style="color: #000080;font-style:italic;">-- Horner’s rule</span>
▲ <span style="color: #000080;font-style:italic;">--/* Horner’s rule. --*/</span>
<span style="color: #008080;">return</span> <span style="color: #000000;">a0</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">t</span> <span style="color: #0000FF;">*</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">a1</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">t</span> <span style="color: #0000FF;">*</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">a2</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">t</span> <span style="color: #0000FF;">*</span> <span style="color: #000000;">a3</span><span style="color: #0000FF;">)))))</span> ▼
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">constant</span> <span style="color: #000000;">pmono2pm2</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">},</span> <span style="color: #000080;font-style:italic;">-- p(x) = 1</span>
<span style="color: #000000;">qmono2pm3</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">20</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">30</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">},</span> <span style="color: #000080;font-style:italic;">-- q(x)ditto =in 1degree + 2x + 3x²3)</span>
<span style="color: #000000;">pbern2qm2</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">monomial_to_bernstein_degree21</span><span style="color: #0000FF;">(,</span> <span style="color: #000000;">pmono22</span><span style="color: #0000FF;">),</span> <span style="color: #000000;">3</span><span style="color: #0000FF;">},</span> <span style="color: #000080;font-style:italic;">-- q(x) = 1 + 2x + 3x²</span>
<span style="color: #000000;">qbern2qm3</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">monomial_to_bernstein_degree21</span><span style="color: #0000FF;">(,</span> <span style="color: #000000;">qmono22</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">3</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">},</span> <span style="color: #000080;font-style:italic;">-- (ditto in degree 3)</span>
<span style="color: #7060A8000000;">printfrm3</span> <span style="color: #0000FF;">(=</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #008000000000;">2</span><span style="Subprogramcolor: (1)#0000FF;">,</span> examples<span style="color:\n #000000;">3</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">4</span><span style="color: #0000FF;">},</span> <span style="color: #000080;font-style:italic;">-- r(x) = 1 + 2x + 3x² + 4x³</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" mono %v --> bern %v\n"</span><span style="color: #0000FF000000;">,pb2</span> <span style="color: #0000FF;">{=</span> <span style="color: #000000;">pmono2m_to_bern2</span><span style="color: #0000FF;">,(</span><span style="color: #000000;">pbern2pm2</span><span style="color: #0000FF;">}),</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" mono %v --> bern %v\n"</span><span style="color: #0000FF000000;">,pb3</span> <span style="color: #0000FF;">{=</span> <span style="color: #000000;">qmono2m_to_bern3</span><span style="color: #0000FF;">,(</span><span style="color: #000000;">qbern2pm3</span><span style="color: #0000FF;">}),</span>
<span style="color: #000000;"> qbern3qb2</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;"> monomial_to_bernstein_degree3m_to_bern2</span><span style="color: #0000FF;">(</span><span style="color: #000000;"> qmono3qm2</span><span style="color: #0000FF;">),</span> ▼
<span style="color: #000000;"> rbern3qb3</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;"> monomial_to_bernstein_degree3m_to_bern3</span><span style="color: #0000FF;">(</span><span style="color: #000000;"> rmono3qm3</span><span style="color: #0000FF;">) ,</span> ▼
<span style="color: #000000;"> qbern3arb3</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;"> bernstein_degree2_to_degree3m_to_bern3</span><span style="color: #0000FF;">(</span><span style="color: #000000;"> qbern2rm3</span><span style="color: #0000FF;">)</span> ▼
▲ <span style="color: # 0080807060A8;"> returnprintf</span> <span style="color: #000000;">a0</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">(</span><span style="color: #000000;"> t1</span> <span style="color: #0000FF;"> *,</span> <span style="color: # 0000FF008000;"> (</span><span style=" color: #000000;">a1</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">m_to_bern2( </span><span%v) style="color: #000000--> ">t</span> <span style=%v\n" color: #0000FF;">*</span> <span style="color: #0000FF;"> (</span><span style="color: #000000;">a2,</span> <span style="color: #0000FF;"> +</span> <span style="color: #0000FF;">({</span><span style="color: #000000;"> tpm2</span> <span style="color: #0000FF;"> *,</span> <span style="color: #000000;"> a3pb2</span><span style="color: #0000FF;"> ))))})</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" bern m_to_bern2(%v ) --> bern %v\n"</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">{</span><span style="color: #000000;"> qbern2qm2</span><span style="color: #0000FF;">,</span><span style="color: #000000;"> qbern3aqb2</span><span style="color: #0000FF;">})</span> ▼
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" m_to_bern3(%v) --> %v\n"</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">pm3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">pb3</span><span style="color: #0000FF;">})</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" m_to_bern3(%v) --> %v\n"</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">qm3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">qb3</span><span style="color: #0000FF;">})</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" m_to_bern3(%v) --> %v\n"</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">rm3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">rb3</span><span style="color: #0000FF;">})</span>
▲ <span style="color: # 0000007060A8;"> b01printf</span> <span style="color: #0000FF;"> =(</span> <span style="color: # 0000FF000000;"> (1</span><span style="color: # 0000000000FF;"> s,</span> <span style="color: # 0000FF008000;"> *" bern2_to_bern3(%v) --> %v\n"</span> <span style="color: # 0000000000FF;"> b0,</span> <span style="color: #0000FF;"> ){</span> <span style="color: # 0000FF000000;"> +pb2</span> <span style="color: #0000FF;"> (,</span><span style="color: #000000;"> tbern2_to_bern3</span> <span style="color: #0000FF;"> *(</span> <span style="color: #000000;"> b1pb2</span><span style="color: #0000FF;">) ,})</span>
▲ <span style="color: # 0000007060A8;"> b012printf</span> <span style="color: #0000FF;"> =(</span> <span style="color: # 0000FF000000;"> (1</span><span style="color: # 0000000000FF;"> s,</span> <span style="color: # 0000FF008000;"> *" bern2_to_bern3(%v) --> %v\n"</span> <span style="color: # 0000000000FF;"> b01,</span> <span style="color: #0000FF;"> ){</span> <span style="color: # 0000FF000000;"> +qb2</span> <span style="color: #0000FF;"> (,</span><span style="color: #000000;"> tbern2_to_bern3</span> <span style="color: #0000FF;"> *(</span> <span style="color: #000000;"> b12qb2</span><span style="color: #0000FF;">) ,})</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"SubprogramEvaluating bernstein degree (2) examples:\n"</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">x</span> <span style="color: #008080;">in</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">0.25</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">7.50</span><span style="color: #0000FF;">}</span> <span style="color: #008080;">do</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" p(%g.2f) = %g8g (mono: %g)\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">x</span><span style="color: #0000FF;">,</span><span style="color: #000000;">evaluate_bernstein_degree2eval_bern2</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pbern2pb2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">),</span><span style="color: #000000;">eval_m2</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pm2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">)})</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" q(%.2f) = %8g (mono: %g)\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">x</span><span style="color: #0000FF;">,</span><span style="color: #000000;">eval_bern2</span><span style="color: #0000FF;">(</span><span style="color: #000000;">qb2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">),</span><span style="color: #000000;">evaluate_monomial_degree2eval_m2</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pmono2qm2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">),})</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" q(%g) = %g (mono %g)\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">x</span><span style="color: #0000FF;">,</span><span style="color: #000000;">evaluate_bernstein_degree2</span><span style="color: #0000FF;">(</span><span style="color: #000000;">qbern2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">),</span>
<span style="color: #000000;">evaluate_monomial_degree2</span><span style="color: #0000FF;">(</span><span style="color: #000000;">qmono2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">)})</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #0080807060A8;">constantprintf</span> <span style="color: #000000;">pmono3</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #000000008000;">0</span><span style="color:Evaluating #0000FF;">,</span>bernstein <spandegree style="color:3 #000000;">0</span><span style="colorexamples: #0000FF;\n">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">},</span> <span style="color: #000080;font-style:italic;">-- p(x) = 1</span>
▲ <span style="color: #000000;">qmono3</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">2</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">3</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">},</span> <span style="color: #000080;font-style:italic;">-- q(x) = 1 + 2x + 3x²</span>
<span style="color: #000000;">rmono3</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">2</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">3</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">4</span><span style="color: #0000FF;">},</span> <span style="color: #000080;font-style:italic;">-- r(x) = 1 + 2x + 3x² + 4x³</span>
▲ <span style="color: #000000;">pbern3</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">monomial_to_bernstein_degree3</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pmono3</span><span style="color: #0000FF;">),</span>
▲ <span style="color: #000000;">qbern3</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">monomial_to_bernstein_degree3</span><span style="color: #0000FF;">(</span><span style="color: #000000;">qmono3</span><span style="color: #0000FF;">),</span>
▲ <span style="color: #000000;">rbern3</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">monomial_to_bernstein_degree3</span><span style="color: #0000FF;">(</span><span style="color: #000000;">rmono3</span><span style="color: #0000FF;">)</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Subprogram (3) examples:\n"</span><span style="color: #0000FF;">)</span>
▲ <span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" mono %v --> bern %v\n"</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">pmono3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">pbern3</span><span style="color: #0000FF;">})</span>
▲ <span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" mono %v --> bern %v\n"</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">qmono3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">qbern3</span><span style="color: #0000FF;">})</span>
▲ <span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" mono %v --> bern %v\n"</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">rmono3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">rbern3</span><span style="color: #0000FF;">})</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Subprogram (4) examples:\n"</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">x</span> <span style="color: #008080;">in</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">0.25</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">7.50</span><span style="color: #0000FF;">}</span> <span style="color: #008080;">do</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" p(%g.2f) = %g8g (mono: %g)\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">x</span><span style="color: #0000FF;">,</span><span style="color: #000000;">evaluate_bernstein_degree3eval_bern3</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pbern3pb3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">),</span><span style="color: #000000;">eval_m3</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pm3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">)})</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" q(%.2f) = %8g (mono: %g)\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">x</span><span style="color: #0000FF;">,</span><span style="color: #000000;">eval_bern3</span><span style="color: #0000FF;">(</span><span style="color: #000000;">qb3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">),</span><span style="color: #000000;">evaluate_monomial_degree3eval_m3</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pmono3qm3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">)})</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" qr(%g.2f) = %g8g (mono: %g)\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">x</span><span style="color: #0000FF;">,</span><span style="color: #000000;">evaluate_bernstein_degree3eval_bern3</span><span style="color: #0000FF;">(</span><span style="color: #000000;">qbern3rb3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">),</span><span style="color: #000000;">eval_m3</span><span style="color: #0000FF;">(</span><span style="color: #000000;">rm3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">)})</span>
<span style="color: #000000;">evaluate_monomial_degree3</span><span style="color: #0000FF;">(</span><span style="color: #000000;">qmono3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">)})</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" r(%g) = %g (mono %g)\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">x</span><span style="color: #0000FF;">,</span><span style="color: #000000;">evaluate_bernstein_degree3</span><span style="color: #0000FF;">(</span><span style="color: #000000;">rbern3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">),</span>
<span style="color: #000000;">evaluate_monomial_degree3</span><span style="color: #0000FF;">(</span><span style="color: #000000;">rmono3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">)})</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Subprogram (5) examples:\n"</span><span style="color: #0000FF;">)</span>
▲ <span style="color: #008080;">constant</span> <span style="color: #000000;">pbern3a</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">bernstein_degree2_to_degree3</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pbern2</span><span style="color: #0000FF;">),</span>
▲ <span style="color: #000000;">qbern3a</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">bernstein_degree2_to_degree3</span><span style="color: #0000FF;">(</span><span style="color: #000000;">qbern2</span><span style="color: #0000FF;">)</span>
▲ <span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" bern %v --> bern %v\n"</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">pbern2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">pbern3a</span><span style="color: #0000FF;">})</span>
▲ <span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" bern %v --> bern %v\n"</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">qbern2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">qbern3a</span><span style="color: #0000FF;">})</span>
<!--</syntaxhighlight>-->
{{out}}
<pre>
mono m_to_bern2({1 ,0,0,0} ) --> bern { 1,1,1,1} ▼
Subprogram (1) examples:
mono m_to_bern2({1,02,03}) --> bern {1,12,16}
mono m_to_bern3({1,20,30,0}) --> bern {1,21,61,1}
mono m_to_bern3({1,2,3,0} ) --> bern {1,1.666666667,3.333333333,6} ▼
Subprogram (2) examples:
mono m_to_bern3({1,2,3,4} ) --> bern {1,1.666666667,3.333333333,10} ▼
bern bern2_to_bern3({1,1,1} ) --> bern {1,1,1,1} ▼
q(0.25) = 1.6875 (mono 1.6875) ▼
bern bern2_to_bern3({1,2,6} ) --> bern {1,1.666666667,3.333333333,6} ▼
Evaluating bernstein degree 2 examples:
q(7.5) = 184.75 (mono 184.75) ▼
Subprogram (3) examples:
▲ q(0.25) = 1.6875 (mono : 1.6875)
▲ mono {1,0,0,0} --> bern {1,1,1,1}
▲ mono {1,2,3,0} --> bern {1,1.666666667,3.333333333,6}
▲ q(7. 550) = 184.75 (mono : 184.75)
▲ mono {1,2,3,4} --> bern {1,1.666666667,3.333333333,10}
SubprogramEvaluating (4)bernstein degree 3 examples:
p(0.25) = 1 (mono: 1)
q(0.25) = 1.6875 (mono: 1.6875)
r(0.25) = 1.75 (mono: 1.75)
p(7.550) = 1 (mono: 1)
q(7.550) = 184.75 (mono: 184.75)
r(7.550) = 1872.25 (mono: 1872.25)
Subprogram (5) examples:
▲ bern {1,1,1} --> bern {1,1,1,1}
▲ bern {1,2,6} --> bern {1,1.666666667,3.333333333,6}
</pre>
|