Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
31
Task/Nth-root/Jq/nth-root-1.jq
Normal file
31
Task/Nth-root/Jq/nth-root-1.jq
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
# An iterative algorithm for finding: self ^ (1/n) to the given
|
||||
# absolute precision if "precision" > 0, or to within the precision
|
||||
# allowed by IEEE 754 64-bit numbers.
|
||||
|
||||
# The following implementation handles underflow caused by poor estimates.
|
||||
def iterative_nth_root(n; precision):
|
||||
def abs: if . < 0 then -. else . end;
|
||||
def sq: .*.;
|
||||
def pow(p): . as $in | reduce range(0;p) as $i (1; . * $in);
|
||||
def _iterate: # state: [A, x1, x2, prevdelta]
|
||||
.[0] as $A | .[1] as $x1 | .[2] as $x2 | .[3] as $prevdelta
|
||||
| ( $x2 | pow(n-1)) as $power
|
||||
| if $power <= 2.155094094640383e-309
|
||||
then [$A, $x1, ($x1 + $x2)/2, n] | _iterate
|
||||
else (((n-1)*$x2 + ($A/$power))/n) as $x1
|
||||
| (($x1 - $x2)|abs) as $delta
|
||||
| if (precision == 0 and $delta == $prevdelta and $delta < 1e-15)
|
||||
or (precision > 0 and $delta <= precision) or $delta == 0 then $x1
|
||||
else [$A, $x2, $x1, $delta] | _iterate
|
||||
end
|
||||
end
|
||||
;
|
||||
if n == 1 then .
|
||||
elif . == 0 then 0
|
||||
elif . < 0 then error("iterative_nth_root: input \(.) < 0")
|
||||
elif n != (n|floor) then error("iterative_nth_root: argument \(n) is not an integer")
|
||||
elif n == 0 then error("iterative_nth_root(0): domain error")
|
||||
elif n < 0 then 1/iterative_nth_root(-n; precision)
|
||||
else [., ., (./n), n, 0] | _iterate
|
||||
end
|
||||
;
|
||||
10
Task/Nth-root/Jq/nth-root-2.jq
Normal file
10
Task/Nth-root/Jq/nth-root-2.jq
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
def demo(x):
|
||||
def nth_root(n): log / n | exp;
|
||||
def lpad(n): tostring | (n - length) * " " + .;
|
||||
. as $in
|
||||
| "\(x)^(1/\(lpad(5))): \(x|nth_root($in)|lpad(18)) vs \(x|iterative_nth_root($in; 1e-10)|lpad(18)) vs \(x|iterative_nth_root($in; 0))"
|
||||
;
|
||||
|
||||
# 5^m for various values of n:
|
||||
"5^(1/ n): builtin precision=1e-10 precision=0",
|
||||
( (1,-5,-3,-1,1,3,5,1000,10000) | demo(5))
|
||||
11
Task/Nth-root/Jq/nth-root-3.jq
Normal file
11
Task/Nth-root/Jq/nth-root-3.jq
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
$ jq -n -r -f nth_root_machine_precision.jq
|
||||
5^(1/ n): builtin precision=1e-10 precision=0
|
||||
5^(1/ 1): 4.999999999999999 vs 5 vs 5
|
||||
5^(1/ -5): 0.7247796636776955 vs 0.7247796636776956 vs 0.7247796636776955
|
||||
5^(1/ -3): 0.5848035476425733 vs 0.5848035476425731 vs 0.5848035476425731
|
||||
5^(1/ -1): 0.2 vs 0.2 vs 0.2
|
||||
5^(1/ 1): 4.999999999999999 vs 5 vs 5
|
||||
5^(1/ 3): 1.709975946676697 vs 1.709975946676697 vs 1.709975946676697
|
||||
5^(1/ 5): 1.3797296614612147 vs 1.3797296614612147 vs 1.379729661461215
|
||||
5^(1/ 1000): 1.0016107337527294 vs 1.0016107337527294 vs 1.0016107337527294
|
||||
5^(1/10000): 1.0001609567433902 vs 1.0001609567433902 vs 1.0001609567433902
|
||||
Loading…
Add table
Add a link
Reference in a new issue