Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
26
Task/Gamma-function/Scala/gamma-function.scala
Normal file
26
Task/Gamma-function/Scala/gamma-function.scala
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import java.util.Locale._
|
||||
|
||||
object Gamma {
|
||||
def stGamma(x:Double):Double=math.sqrt(2*math.Pi/x)*math.pow((x/math.E), x)
|
||||
|
||||
def laGamma(x:Double):Double={
|
||||
val p=Seq(676.5203681218851, -1259.1392167224028, 771.32342877765313,
|
||||
-176.61502916214059, 12.507343278686905, -0.13857109526572012,
|
||||
9.9843695780195716e-6, 1.5056327351493116e-7)
|
||||
|
||||
if(x < 0.5) {
|
||||
math.Pi/(math.sin(math.Pi*x)*laGamma(1-x))
|
||||
} else {
|
||||
val x2=x-1
|
||||
val t=x2+7+0.5
|
||||
val a=p.zipWithIndex.foldLeft(0.99999999999980993)((r,v) => r+v._1/(x2+v._2+1))
|
||||
math.sqrt(2*math.Pi)*math.pow(t, x2+0.5)*math.exp(-t)*a
|
||||
}
|
||||
}
|
||||
|
||||
def main(args: Array[String]): Unit = {
|
||||
println("Gamma Stirling Lanczos")
|
||||
for(x <- 0.1 to 2.0 by 0.1)
|
||||
println("%.1f -> %.16f %.16f".formatLocal(ENGLISH, x, stGamma(x), laGamma(x)))
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue