Metallic ratios: Difference between revisions

Line 581:
1.6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911374847540880753868917521266338622235369317931800607667263544333890865959395829056383226613199282902678806752087668925017116962070322210432162695486262963136144
Reached after 615 iterations: 615th/614th element.</pre>
 
=={{header|Phix}}==
{{trans|Go}}
{{libheader|mpfr}}
<lang Phix>include mpfr.e
constant names = {"Platinum", "Golden", "Silver", "Bronze", "Copper",
"Nickel", "Aluminium", "Iron", "Tin", "Lead"}
procedure lucas(integer b)
printf(1,"Lucas sequence for %s ratio, where b = %d:\n", {names[b+1], b})
atom x0 = 1, x1 = 1, x2
printf(1,"First 15 elements: %d, %d", {x0, x1})
for i=1 to 13 do
x2 = b*x1 + x0
printf(1,", %d", x2)
x0 = x1
x1 = x2
end for
printf(1,"\n")
end procedure
procedure metallic(integer b, dp)
mpz {x0, x1, x2, bb} = mpz_inits(4,{1,1,0,b})
mpfr ratio = mpfr_init(1,-(dp+2))
integer iterations = 0
string fmt = sprintf("%%.%dRf",dp),
prev = mpfr_sprintf(fmt,ratio)
while true do
iterations += 1
mpz_mul(x2,bb,x1)
mpz_add(x2,x2,x0)
mpfr_set_z(ratio,x2)
mpfr_div_z(ratio,ratio,x1)
string this = mpfr_sprintf(fmt,ratio)
if prev == this then
string plural = iff(iterations=1?"":"s")
this = shorten(this)
printf(1,"Value to %d dp after %2d iteration%s: %s\n\n", {dp, iterations, plural, this})
exit
end if
prev = this
mpz_set(x0,x1)
mpz_set(x1,x2)
end while
end procedure
procedure main()
for b=0 to 9 do
lucas(b)
metallic(b, 32)
end for
printf(1,"Golden ratio, where b = 1:\n")
metallic(1, 256)
end procedure
main()</lang>
{{out}}
The final 258 digits includes the "1.", and dp+2 was needed on ratio to exactly match the Go (etc) output.
<pre style="height:45ex">
Lucas sequence for Platinum ratio, where b = 0:
First 15 elements: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
Value to 32 dp after 1 iteration: 1.00000000000000000000000000000000
 
Lucas sequence for Golden ratio, where b = 1:
First 15 elements: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610
Value to 32 dp after 78 iterations: 1.61803398874989484820458683436564
 
Lucas sequence for Silver ratio, where b = 2:
First 15 elements: 1, 1, 3, 7, 17, 41, 99, 239, 577, 1393, 3363, 8119, 19601, 47321, 114243
Value to 32 dp after 44 iterations: 2.41421356237309504880168872420970
 
Lucas sequence for Bronze ratio, where b = 3:
First 15 elements: 1, 1, 4, 13, 43, 142, 469, 1549, 5116, 16897, 55807, 184318, 608761, 2010601, 6640564
Value to 32 dp after 34 iterations: 3.30277563773199464655961063373525
 
Lucas sequence for Copper ratio, where b = 4:
First 15 elements: 1, 1, 5, 21, 89, 377, 1597, 6765, 28657, 121393, 514229, 2178309, 9227465, 39088169, 165580141
Value to 32 dp after 28 iterations: 4.23606797749978969640917366873128
 
Lucas sequence for Nickel ratio, where b = 5:
First 15 elements: 1, 1, 6, 31, 161, 836, 4341, 22541, 117046, 607771, 3155901, 16387276, 85092281, 441848681, 2294335686
Value to 32 dp after 25 iterations: 5.19258240356725201562535524577016
 
Lucas sequence for Aluminium ratio, where b = 6:
First 15 elements: 1, 1, 7, 43, 265, 1633, 10063, 62011, 382129, 2354785, 14510839, 89419819, 551029753, 3395598337, 20924619775
Value to 32 dp after 23 iterations: 6.16227766016837933199889354443272
 
Lucas sequence for Iron ratio, where b = 7:
First 15 elements: 1, 1, 8, 57, 407, 2906, 20749, 148149, 1057792, 7552693, 53926643, 385039194, 2749201001, 19629446201, 140155324408
Value to 32 dp after 22 iterations: 7.14005494464025913554865124576352
 
Lucas sequence for Tin ratio, where b = 8:
First 15 elements: 1, 1, 9, 73, 593, 4817, 39129, 317849, 2581921, 20973217, 170367657, 1383914473, 11241683441, 91317382001, 741780739449
Value to 32 dp after 20 iterations: 8.12310562561766054982140985597408
 
Lucas sequence for Lead ratio, where b = 9:
First 15 elements: 1, 1, 10, 91, 829, 7552, 68797, 626725, 5709322, 52010623, 473804929, 4316254984, 39320099785, 358197153049, 3263094477226
Value to 32 dp after 20 iterations: 9.10977222864644365500113714088140
 
Golden ratio, where b = 1:
Value to 256 dp after 615 iterations: 1.61803398874989484...2695486262963136144 (258 digits)
</pre>
 
=={{header|REXX}}==
7,818

edits