Metallic ratios: Difference between revisions

Line 959:
Golden ration, where b = 1:
Value after 615 iterations: 1.6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911374847540880753868917521266338622235369317931800607667263544333890865959395829056383226613199282902678806752087668925017116962070322210432162695486262963136144</pre>
 
=={{header|Nim}}==
{{libheader|bignum}}
<lang Nim>import strformat
import bignum
 
type Metal {.pure.} = enum platinum, golden, silver, bronze, copper, nickel, aluminium, iron, tin, lead
 
iterator sequence(b: int): Int =
## Yield the successive terms if a “Lucas” sequence.
## The first two terms are ignored.
var x, y = newInt(1)
while true:
x += b * y
swap x, y
yield y
 
 
template plural(n: int): string =
if n >= 2: "s" else: ""
 
 
proc computeRatio(b: Natural; digits: Positive) =
## Compute the ratio for the given "n" with the required number of digits.
 
let M = 10^culong(digits)
 
var niter = 0 # Number of iterations.
var prevN = newInt(1) # Previous value of "n".
var ratio = M # Current value of ratio.
 
for n in sequence(b):
inc niter
let nextRatio = n * M div prevN
if nextRatio == ratio: break
prevN = n.clone
ratio = nextRatio
 
var str = $ratio
str.insert(".", 1)
echo &"Value to {digits} decimal places after {niter} iteration{plural(niter)}: ", str
 
 
when isMainModule:
 
for b in 0..9:
echo &"“Lucas” sequence for {Metal(b)} ratio where b = {b}:"
stdout.write "First 15 elements: 1 1"
var count = 2
for n in sequence(b):
stdout.write ' ', n
inc count
if count == 15: break
echo ""
computeRatio(b, 32)
echo ""
 
echo "Golden ratio where b = 1:"
computeRatio(1, 256)</lang>
 
{{out}}
<pre>“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 decimal places 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 decimal places after 79 iterations: 1.61803398874989484820458683436563
 
“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 decimal places after 45 iterations: 2.41421356237309504880168872420969
 
“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 decimal places after 33 iterations: 3.30277563773199464655961063373524
 
“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 decimal places after 28 iterations: 4.23606797749978969640917366873127
 
“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 decimal places 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 decimal places after 23 iterations: 6.16227766016837933199889354443271
 
“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 decimal places after 21 iterations: 7.14005494464025913554865124576351
 
“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 decimal places after 20 iterations: 8.12310562561766054982140985597407
 
“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 decimal places after 19 iterations: 9.10977222864644365500113714088139
 
Golden ratio where b = 1:
Value to 256 decimal places after 614 iterations: 1.6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911374847540880753868917521266338622235369317931800607667263544333890865959395829056383226613199282902678806752087668925017116962070322210432162695486262963136144</pre>
 
=={{header|Perl}}==
Anonymous user