March 2014 update
This commit is contained in:
parent
09687c4926
commit
a25938f123
1846 changed files with 21876 additions and 5203 deletions
|
|
@ -1,18 +1,51 @@
|
|||
sub Γ($x) {
|
||||
1 / <
|
||||
0.00000_00000_00000_00002 -0.00000_00000_00000_00023 0.00000_00000_00000_00141
|
||||
0.00000_00000_00000_00119 -0.00000_00000_00000_11813 0.00000_00000_00001_22678
|
||||
-0.00000_00000_00005_34812 -0.00000_00000_00020_58326 0.00000_00000_00510_03703
|
||||
-0.00000_00000_03696_80562 0.00000_00000_07782_26344 0.00000_00001_04342_67117
|
||||
-0.00000_00011_81274_57049 0.00000_00050_02007_64447 0.00000_00061_16095_10448
|
||||
-0.00000_02056_33841_69776 0.00000_11330_27231_98170 -0.00000_12504_93482_14267
|
||||
-0.00002_01348_54780_78824 0.00012_80502_82388_11619 -0.00021_52416_74114_95097
|
||||
-0.00116_51675_91859_06511 0.00721_89432_46663_09954 -0.00962_19715_27876_97356
|
||||
-0.04219_77345_55544_33675 0.16653_86113_82291_48950 -0.04200_26350_34095_23553
|
||||
-0.65587_80715_20253_88108 0.57721_56649_01532_86061 1.00000_00000_00000_00000
|
||||
>.reduce: * *($x-1) + *
|
||||
sub Γ(\z, :$method = 'lanczos') {
|
||||
given $method {
|
||||
when 'lanczos' {
|
||||
constant g = 9;
|
||||
z < .5 ?? pi/ sin(pi * z) / Γ(1 - z, :$method) !!
|
||||
sqrt(2*pi) *
|
||||
(z + g - 1/2)**(z - 1/2) *
|
||||
exp(-(z + g - 1/2)) *
|
||||
[+] <
|
||||
1.000000000000000174663
|
||||
5716.400188274341379136
|
||||
-14815.30426768413909044
|
||||
14291.49277657478554025
|
||||
-6348.160217641458813289
|
||||
1301.608286058321874105
|
||||
-108.1767053514369634679
|
||||
2.605696505611755827729
|
||||
-0.7423452510201416151527e-2
|
||||
0.5384136432509564062961e-7
|
||||
-0.4023533141268236372067e-8
|
||||
> Z* 1, map 1/(z + *), 0..*
|
||||
}
|
||||
when 'stirling' {
|
||||
z < 10 ?? Γ(z + 1, :$method) / z !!
|
||||
sqrt(2*pi*z)*(z/e + 1/(12*z*e))**z / z
|
||||
}
|
||||
when 'taylor' {
|
||||
z > 3/2 ?? (z - 1)*Γ(z - 1, :$method) !!
|
||||
z < 1/2 ?? Γ(z + 1, :$method)/z !!
|
||||
1 / <
|
||||
0.00000_00000_00000_00002 -0.00000_00000_00000_00023 0.00000_00000_00000_00141
|
||||
0.00000_00000_00000_00119 -0.00000_00000_00000_11813 0.00000_00000_00001_22678
|
||||
-0.00000_00000_00005_34812 -0.00000_00000_00020_58326 0.00000_00000_00510_03703
|
||||
-0.00000_00000_03696_80562 0.00000_00000_07782_26344 0.00000_00001_04342_67117
|
||||
-0.00000_00011_81274_57049 0.00000_00050_02007_64447 0.00000_00061_16095_10448
|
||||
-0.00000_02056_33841_69776 0.00000_11330_27231_98170 -0.00000_12504_93482_14267
|
||||
-0.00002_01348_54780_78824 0.00012_80502_82388_11619 -0.00021_52416_74114_95097
|
||||
-0.00116_51675_91859_06511 0.00721_89432_46663_09954 -0.00962_19715_27876_97356
|
||||
-0.04219_77345_55544_33675 0.16653_86113_82291_48950 -0.04200_26350_34095_23553
|
||||
-0.65587_80715_20253_88108 0.57721_56649_01532_86061 1.00000_00000_00000_00000
|
||||
>.reduce: * *(z-1) + *
|
||||
}
|
||||
default { die "unknow method '$method'" }
|
||||
}
|
||||
}
|
||||
|
||||
for 1/3, 2/3 ... 10/3 {
|
||||
printf "Γ(%.5f) ≈ %.14f\n", $_, Γ($_);
|
||||
|
||||
for <lanczos taylor stirling> -> $method {
|
||||
# a bug in fmt forces us to round numbers before displaying them
|
||||
say "{$method.fmt("%10s")}: ",
|
||||
map { Γ($_, :$method).round(1e-12).fmt("%.12f") }, (1/3, 2/3 ... 10/3);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue