Sylvester's sequence: Difference between revisions

m
→‎mpfr version: made it work on pwa/p2js
m (→‎mpfr version: made it work on pwa/p2js)
Line 304:
=== mpfr version ===
Note the (minimal) precision settings of 698 and 211 were found by trial and error (ie larger values gain nothing but smaller ones lose accuracy).
<!--<lang Phix>(notonlinephixonline)-->
<span style="color: #008080;">includewith</span> <span style="color: #7060A8008080;">mpfr</span><span style="color: #0000FF;">.</span><span style="color: #000000;">ejavascript_semantics</span>
<span style="color: #7060A8;">mpzrequires</span> <span style="color: #000000;">n</span> <span style="color: #0000FF;">=(</span> <span style="color: #7060A8008000;">mpz_init</span><span style="color: #0000FF;1.0.0">(</span><span style="color: #000000;">2</span><span style="color: #0000FF;">),</span> <span style="color: #000000000080;">nm1</span> <span font-style="color: #0000FFitalic;">=</span>-- <span(mpfr_set_default_prec[ision] style="color:has #7060A8;">mpz_init</span><spanbeen style="color: #0000FF;">(renamed)</span>
-- (and mpfr_sprintf() replaced with mpfr_get_fixed())</span>
<span style="color: #7060A8;">mpfr_set_default_prec</span><span style="color: #0000FF;">(</span><span style="color: #000000;">698</span><span style="color: #0000FF;">)</span>
<span style="color: #7060A8008080;">mpfrinclude</span> <span style="color: #0000FF004080;">{</span><span style="color: #000000;">rnmpfr</span><span style="color: #0000FF;">,.</span> <span style="color: #000000;">tmp</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">mpfr_inits</span><span style="color: #0000FF;">(</span><span style="color: #000000;">2</span><span style="color: #0000FF;">)e</span>
<span style="color: #004080;">mpz</span> <span style="color: #000000;">n</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">mpz_init</span><span style="color: #0000FF;">(</span><span style="color: #000000;">2</span><span style="color: #0000FF;">),</span> <span style="color: #000000;">nm1</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">mpz_init</span><span style="color: #0000FF;">()</span>
<span style="color: #7060A8;">mpfr_set_default_precmpfr_set_default_precision</span><span style="color: #0000FF;">(</span><span style="color: #000000;">698720</span><span style="color: #0000FF;">)</span>
<span style="color: #004080;">mpfr</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">rn</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">tmp</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">mpfr_inits</span><span style="color: #0000FF;">(</span><span style="color: #000000;">2</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">10</span> <span style="color: #008080;">do</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">></span><span style="color: #000000;">1</span> <span style="color: #008080;">then</span>
Line 316 ⟶ 319:
<span style="color: #008080;">end</span> <span style="color: #008080;">if</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;">"%d: %s\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">i</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">mpz_get_str</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n</span><span style="color: #0000FF;">)})</span>
<span style="color: #0000007060A8;">mpfr_set_z</span><span style="color: #0000FF;">(</span><span style="color: #000000;">tmp</span><span style="color: #0000FF;">,</span><span style="color: #000000;">n</span><span style="color: #0000FF;">)</span>
<span style="color: #0000007060A8;">mpfr_si_div</span><span style="color: #0000FF;">(</span><span style="color: #000000;">tmp</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">tmp</span><span style="color: #0000FF;">)</span>
<span style="color: #0000007060A8;">mpfr_add</span><span style="color: #0000FF;">(</span><span style="color: #000000;">rn</span><span style="color: #0000FF;">,</span><span style="color: #000000;">rn</span><span style="color: #0000FF;">,</span><span style="color: #000000;">tmp</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;">"sum of reciprocals: %s\n"</span><span style="color: #0000FF;">,{</span><span style="color: #7060A8;">shorten</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">mpfr_sprintfmpfr_get_fixed</span><span style="color: #0000FF;">(</span><span style="color: #008000000000;">"%.211Rf"rn</span><span style="color: #0000FF;">,</span><span style="color: #000000;">rn211</span><span style="color: #0000FF;">))})</span>
<!--</lang>-->
{{out}}
7,806

edits