Jump to content

Metallic ratios: Difference between revisions

/* {{header|jq}}
(/* {{header|jq}})
Line 851:
Golden ratio, where b = 1:
Value to 256 decimal places after 615 iterations : 1.6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911374847540880753868917521266338622235369317931800607667263544333890865959395829056383226613199282902678806752087668925017116962070322210432162695486262963136144
</pre>
 
=={{header|jq}}==
'''Works with gojq, the Go implementation of jq'''
{{trans|Wren}}
The "Rational" module used here is available at [[Arithmetic/Rational#jq]].
Note that in the version of this module used to produce the output shown below,
the function `r_to_decimal/1` does not perform rounding of the last digit, and
so these results should be correspondingly interpreted.
 
The accuracy of the following program in some cases depends on unbounded-precision integer
arithmetic, which the C implementation of jq does not support.
<syntaxhighlight lang="jq">
include "rational" {search: "."}; the defs at [[Arithmetic/Rational#jq]]
 
def names:
["Platinum", "Golden", "Silver", "Bronze", "Copper","Nickel", "Aluminium", "Iron", "Tin", "Lead"];
 
def lucas($b):
[1,1] | recurse( [last, first + $b*last] ) | first;
 
def lucas($b; $n):
"Lucas sequence for \(names[$b]) ratio, where b = \($b):",
"First \(n) elements: ",
[limit($n; lucas($b))];
 
# dp = integer (degrees of precision)
def metallic(b; dp):
{ x0: 1,
x1: 1,
x2: 0,
ratio: r(1; 1),
iters: 0 }
| .prev = (.ratio|r_to_decimal(dp)) # a string
| until(.emit;
.iters += 1
| .x2 = .b * .x1 + .x0
| .ratio = r(.x2; .x1)
| .curr = (.ratio|r_to_decimal(dp)) # a string
| if .prev == .curr
then (if (.iters == 1) then " " else "s" end) as $plural
| .emit = "Value to \(dp) dp after \(.iters) iteration\($plural): \(.curr)\n"
else .prev = .curr
| .x0 = .x1
| .x1 = .x2
end )
| .emit;
 
(range( 0;10) | lucas(.; 15), metallic(.; 32)),
 
"Golden ratio, where b = 1:", metallic(1; 256)
</syntaxhighlight>
Invocation: gojq -nrcf metallic-ratios.jq
{{output}}
<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 dp after 1 iteration : 1
 
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 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 dp 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 dp 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 dp 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 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.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 dp 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 dp 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 dp after 19 iterations: 9.10977222864644365500113714088139
 
Golden ratio, where b = 1:
Value to 256 dp after 614 iterations: 1.6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911374847540880753868917521266338622235369317931800607667263544333890865959395829056383226613199282902678806752087668925017116962070322210432162695486262963136144
</pre>
 
2,492

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.