Integer roots: Difference between revisions

Added Wren
m (Phix/mpfr)
(Added Wren)
Line 1,102:
Integer 7th Root of 2, (actually 2 * 10 ^ 4004):
110408951367381233764950538762334472132532660078012416551453246414210632288038098071659828988630200514689715906557993125396921468043085579651064805838808196163919864392215583814551234397476339507890664685902921180613942144056283519219500774011043913929222338953790376732070503206390380988494445707084527925240582730725486467967183681658942999591682242459036160190261150569028438652686935172086652456800484770182207006433466758082204482396098451455092224240860882545144206285044829838431779372151867676523068340672781132725205233485925077681104722131036524174667129439905032</pre>
 
=={{header|Wren}}==
Wren doesn't have arbitrary precision numerics and so can't do the third example in the task description. We therefore do the third C/C++ example instead.
<lang ecmascript>var intRoot = Fn.new { |x, n|
if (!(x is Num && x.isInteger && x >= 0)) {
Fiber.abort("First argument must be a non-negative integer.")
}
if (!(n is Num && x.isInteger && x >= 1)) {
Fiber.abort("Second argument must be a positive integer.")
}
return x.pow(1/n).floor
}
 
var a = [ [8, 3], [9, 3], [2e18, 2] ]
for (e in a) {
var x = e[0]
var n = e[1]
System.print("%(x) ^ (1/%(n)) = %(intRoot.call(x, n))")
}</lang>
 
{{out}}
<pre>
8 ^ (1/3) = 2
9 ^ (1/3) = 2
2e+18 ^ (1/2) = 1414213562
</pre>
 
=={{header|zkl}}==
9,476

edits