Data update
This commit is contained in:
parent
29a5eea0d4
commit
5c1bb7bfa9
2011 changed files with 35081 additions and 3229 deletions
48
Task/Pi/UNIX-Shell/pi.sh
Normal file
48
Task/Pi/UNIX-Shell/pi.sh
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
base=10;
|
||||
|
||||
gen_pi_digits(){
|
||||
base_places=$1 yield=$2
|
||||
|
||||
((nine=base - 1));
|
||||
local nines=0 predigit=0; # first predigit is_a 0 #
|
||||
declare -a digits; # [base_places*10 over 3]#long# ; # we need 3 times the digits to calculate #
|
||||
lwb_digits=1;
|
||||
((upb_digits=base_places*10 / 3));
|
||||
for((place=lwb_digits; place<=upb_digits; place++)); do digits[$place]=2; done; # start with 2s #
|
||||
for((place=1; place<=base_places + 1; place++)); do
|
||||
digit=0;
|
||||
for((i=upb_digits; i>=lwb_digits; i--)); do # work backwards #
|
||||
((x=base*digits[i] + digit*i));
|
||||
((digits[i]=x%(2*i-1)));
|
||||
((digit=x/(2*i-1)))
|
||||
done;
|
||||
((digits[lwb_digits]=digit % base)); ((digit/=base));
|
||||
# nines := #
|
||||
if((digit == nine)); then
|
||||
((nines=nines + 1))
|
||||
else
|
||||
if((digit == base)); then
|
||||
((out=predigit+1));
|
||||
$yield $out; predigit=0;
|
||||
for((repeats=1; repeats<=nines; repeats++)); do $yield 0; done
|
||||
else
|
||||
if((place != 1)); then $yield $predigit; fi; predigit=$digit;
|
||||
for((repeats=1; repeats<=nines; repeats++)); do $yield $nine; done
|
||||
fi;
|
||||
nines=0
|
||||
fi
|
||||
done;
|
||||
$yield $predigit
|
||||
};
|
||||
|
||||
print_digit(){
|
||||
echo -n $1
|
||||
}
|
||||
# feynman_point=762; # feynman_point + 4 is a good test case
|
||||
# the 33rd decimal place is a shorter tricky test case #
|
||||
target="3.1415926.......................502";
|
||||
((test_decimal_places=${#target}-2)); # upb
|
||||
|
||||
# iterate throught the digits as they are being found #
|
||||
gen_pi_digits $test_decimal_places print_digit
|
||||
echo # (new_line)
|
||||
Loading…
Add table
Add a link
Reference in a new issue