var ITMAX=100
var EPS=3.0e-7
var FPMIN=1.0e-30
var ACUMULADA=0
var ENTRECAUDAS=1
/* ******* CLASS RESULTADO ***************
Encapsula o resultado das chamadas às funções.
Objetos instanciados dessa classe possuem uma
propriedade "erro" (inicialmente false). Caso
a propriedade "erro" seja true, haverá outra
propriedade "valor" contendo a mensagem de erro.
Caso não haja erro haverá uma propriedade "valor",
contendo o resultado principal da função. Dependendo
da função poderão existir outras propriedades.
O método "msg(mensagem)" coloca uma mensagem de erro
no objeto, e faz com que a propriedade "erro" seja
true. Retorna uma instância do próprio objeto.
O método "val(valor)" coloca um valor na propriedade
"valor" e retorna a instância do próprio objeto.
*/
function Resultado(){
this.erro=false
this.msg = function msg(mensagem){
this.erro=true
this.valor=mensagem
return this
}// method pass
this.val = function val(valor){
this.valor=valor
return this
}// method val
}// class Resultado
/* ********* FUNCTION GAMMLN(n) *******************
Calcula o logaritmo natural da função gama de n
*/
function gammln(n) {
var c = new Array(7)
c[0]=1.000000000190015
c[1]=76.18009172947146
c[2]=-86.50532032941677
c[3]=24.01409824083091
c[4]=-1.231739572450155
c[5]=0.00120865097386617
c[6]=-0.000005395239384953
var tmp = 0.0
var soma = 0.0
var y = 0.0
tmp = n+5.5
tmp = tmp-(n+0.5)*Math.log(tmp)
y = n+1
soma = c[0]
for(var j=1; j<=6; j++, y++) soma += c[j]/y
return -tmp+Math.log(2.5066282746310005*soma/n)
} //function gammln