// JavaScript continuas


  function resetalles()
     {resetnormal();
      resetgamma();
      resetexpo();
      resett();
      resetchi();
      resetf();
     }
 
  function resetnormal()
  {
     document.normalform.elements[0].value=0; 
     document.normalform.elements[1].value=1; 
     document.normalform.elements[2].value=0; 
     document.normalform.elements[5].value=0.5; 
     document.normalform.elements[4].value=""; 
     document.normalform.elements[7].value=""; 
     document.normalform.elements[10].value="0.0"; 
     document.normalform.elements[11].value="3.0"; 
     document.normalform.elements[12].value="0.1"; 

  }


  function resetgamma()
  {
     document.gammaform.elements[0].value=1; 
     document.gammaform.elements[1].value=1; 
     document.gammaform.elements[2].value=0; 
     document.gammaform.elements[5].value=0.5; 
     document.gammaform.elements[4].value=""; 
     document.gammaform.elements[7].value=""; 
     document.gammaform.elements[10].value="0.0"; 
     document.gammaform.elements[11].value="3.0"; 
     document.gammaform.elements[12].value="0.1"; 

     
  }
  function resetexpo()
  {
     document.expoform.elements[0].value=1; 
     document.expoform.elements[1].value=0; 
     document.expoform.elements[4].value=0.5; 
     document.expoform.elements[3].value=""; 
     document.expoform.elements[6].value=""; 

  }

  function resett()
  {
     document.tform.elements[0].value=1; 
     document.tform.elements[1].value=0; 
     document.tform.elements[4].value=0.5; 
     document.tform.elements[3].value=""; 
     document.tform.elements[6].value=""; 
     document.tform.elements[9].value="0.0"; 
     document.tform.elements[10].value="3.0"; 
     document.tform.elements[11].value="0.1"; 

     
  }

  function resetchi()
  {
     document.chiform.elements[0].value=1; 
     document.chiform.elements[1].value=0; 
     document.chiform.elements[4].value=0.5; 
     document.chiform.elements[3].value=""; 
     document.chiform.elements[6].value=""; 
     document.chiform.elements[9].value="0.0"; 
     document.chiform.elements[10].value="3.0"; 
     document.chiform.elements[11].value="0.1"; 
  }

  function resetf()
  {
     document.fform.elements[0].value=1; 
     document.fform.elements[1].value=1; 
     document.fform.elements[2].value=0; 
     document.fform.elements[5].value=0.5; 
     document.fform.elements[4].value=""; 
     document.fform.elements[7].value=""; 
     document.fform.elements[10].value="0.0"; 
     document.fform.elements[11].value="3.0"; 
     document.fform.elements[12].value="0.1"; 
  }

function tabelle_normal()
  {
    ntab=open("","normaltabelle","scrollbars=yes,toolbar=no,directories=no,menubar=yes");
    ntab.document.clear();
    ntab.document.write("<html><head><title>Distribucion Normal</title></head><body bgcolor=#FFFFFF>");
    ntab.document.write("<h5></a> ");
    ntab.document.write("<form><input type=button value='Cerrar' onclick='window.close()'></form>");
    ntab.document.write("<h2> Normal Distribucion </h2>");
    ntab.document.write("<p>Tabla probabilidad acumulada de una N("
+document.normalform.elements[0].value+","+document.normalform.elements[1].value+
")-</p>");
    ntab.document.write("<center>");
    var xu=eval(document.normalform.elements[10].value);
    var xo=eval(document.normalform.elements[11].value);
    var step=eval(document.normalform.elements[12].value);
    var x=xu;
    if (step>0)
    {
     if ((((xo-xu)/step)<=150)&&(xo>xu))
     {
    var iter=(xo-xu)/step;
    var spumbruch=Math.floor(iter/5.5+0.5);
    ntab.document.write("<table border=2 cellpadding=5 cellspacing=2 bordercolor=#0000FF>");
    var zaehl=0;
    while (x<=(xo+1E-7))
       {
       if (zaehl==0)
        {ntab.document.write("<tr><td valign=top><table cellpadding=0 cellspacing=10><tr><th> x </th><th> F(x)</th>");}
       if ((Math.floor(zaehl/spumbruch)*spumbruch==zaehl)&&zaehl>0)
        {ntab.document.write("</table><td valign=top><table cellpadding=0 cellspacing=10><tr><th align=left> x </th><th align=right> F(x)</th>");}
       ntab.document.write("<tr><td align=left>"+Math.floor(x*1000000+0.5)/1000000+"</td>");
       ntab.document.write("<td align=left>"+Math.floor(10000*normalv(x,document.normalform.elements[0].value,document.normalform.elements[1].value)+0.5)/10000+"</td>");
       x+=step;
       zaehl+=1;
        }
     ntab.document.write("</table></table>");
     }
     else ntab.document.write("Too many items (more than 150) or wrong interval!<br>");
     }
     else ntab.document.write("Step size negative!");
     ntab.document.write("</center></p><br>");
     ntab.document.writeln("</body></html>");
     ntab.document.close();
    }

function tabelle_gamma()
  {
    ntab=open("","gammatabelle","scrollbars=yes,toolbar=no,directories=no,menubar=yes");
    ntab.document.clear();
    ntab.document.write("<html><head><title>Gamma Distribucion</title></head><body bgcolor=#FFFFFF>");
 ntab.document.write("<h5></a> </h5>");
    ntab.document.write("<form><input type=button value='Cerrar' onclick='window.close()'></form>");
    ntab.document.write("<h2>Gamma Distribucion</h2>");
    ntab.document.write("<p>Tabla de probabilidad acumualada F(x) de una Gamma("
    +document.gammaform.elements[0].value+","+document.gammaform.elements[1].value+
    ").</p>");
    ntab.document.write("<center>");
    xu=eval(document.gammaform.elements[10].value);
    xo=eval(document.gammaform.elements[11].value);
    step=eval(document.gammaform.elements[12].value);
    var x=xu;
    if (step>0)
    {
     if ((((xo-xu)/step)<=150)&&(xo>xu))
     {
    var iter=(xo-xu)/step;
    spumbruch=Math.floor(iter/5.5+0.5);
    ntab.document.write("<table border=2 cellpadding=5 cellspacing=2 bordercolor=#0000FF>");
    var zaehl=0;
    while (x<=(xo+1E-7))
       {
       if (zaehl==0)
        {ntab.document.write("<tr><td valign=top><table cellpadding=0 cellspacing=10><tr><th> x </th><th> F(x)</th>");}
       if ((Math.floor(zaehl/spumbruch)*spumbruch==zaehl)&&zaehl>0)
        {ntab.document.write("</table><td valign=top><table cellpadding=0 cellspacing=10><tr><th align=left> x </th><th align=right> F(x)</th>");}
       ntab.document.write("<tr><td align=left>"+Math.floor(x*1000000+0.5)/1000000+"</td>");
       ntab.document.write("<td align=left>"+Math.floor(10000*gammav(x,document.gammaform.elements[0].value,document.gammaform.elements[1].value)+0.5)/10000+"</td>");
       x+=step;
       zaehl+=1;
        }
     ntab.document.write("</table></table>");
     }
     else ntab.document.write("Too many items (more than 150) or wrong interval!<br>");
     }
     else ntab.document.write("Step size negative!");
     ntab.document.write("</center></p><br>");
     ntab.document.writeln("</body></html>");
     ntab.document.close();
    }

function tabelle_t()
  {
    ntab=open("","ttabelle","scrollbars=yes,toolbar=no,directories=no,menubar=yes");
    ntab.document.clear();
    ntab.document.write("<html><head><title>t- Distribucion</title></head><body bgcolor=#FFFFFF>");
  ntab.document.write("<h5></a></h5>");
    ntab.document.write("<form><input type=button value='Cerrar' onclick='window.close()'></form>");
    ntab.document.write("<h2>t- Distribucion </h2>");
    ntab.document.write("<p>Tabla de probabilidad acumulada de una t-distribucion con "
   +document.tform.elements[0].value+" grados de libertad</p>");
    ntab.document.write("<center>");
    xu=eval(document.tform.elements[9].value);
    xo=eval(document.tform.elements[10].value);
    step=eval(document.tform.elements[11].value);
    var x=xu;
    if (step>0)
    {
     if ((((xo-xu)/step)<=150)&&(xo>xu))
     {
    var iter=(xo-xu)/step;
     spumbruch=Math.floor(iter/5.5+0.5);
    ntab.document.write("<table border=2 cellpadding=5 cellspacing=2 bordercolor=#0000FF>");
    var zaehl=0;
    while (x<=(xo+1E-7))
       {
       if (zaehl==0)
        {ntab.document.write("<tr><td valign=top><table cellpadding=0 cellspacing=10><tr><th> x </th><th> F(x)</th>");}
       if ((Math.floor(zaehl/spumbruch)*spumbruch==zaehl)&&zaehl>0)
        {ntab.document.write("</table><td valign=top><table cellpadding=0 cellspacing=10><tr><th align=left> x </th><th align=right> F(x)</th>");}
       ntab.document.write("<tr><td align=left>"+Math.floor(x*1000000+0.5)/1000000+"</td>");
       ntab.document.write("<td align=left>"+Math.floor(10000*tv(x,document.tform.elements[0].value)+0.5)/10000+"</td>");
       x+=step;
       zaehl+=1;
        }
     ntab.document.write("</table></table>");
     }
     else ntab.document.write("Too many items (more than 150) or wrong interval!<br>");
     }
     else ntab.document.write("Step size negative!");
     ntab.document.write("</center></p><br>");
     ntab.document.writeln("</body></html>");
     ntab.document.close();
    }

function tabelle_chi()
  {
    ntab=open("","chitabelle","scrollbars=yes,toolbar=no,directories=no,menubar=yes");
    ntab.document.clear();
    ntab.document.write("<html><head><title>Chi-Cuadrado-Distribucion</title></head><body bgcolor=#FFFFFF>");
  ntab.document.write("<h5></a></h5>");
    ntab.document.write("<form><input type=button value='Cerrar' onclick='window.close()'></form>");
    ntab.document.write("<h2>Chi-Cuadrado-Distribucion</h2>");
    ntab.document.write("<p>Tabla de probabilidad acumulada  F(x) of a Chi-Cuadrado-distribucion con  "
   +document.chiform.elements[0].value+" grados de libertad</p>");
    ntab.document.write("<center>");
    var xu=eval(document.chiform.elements[9].value);
    var xo=eval(document.chiform.elements[10].value);
    var step=eval(document.chiform.elements[11].value);
    var x=xu;
    if (step>0)
    {
     if ((((xo-xu)/step)<=150)&&(xo>xu))
     {
    var iter=(xo-xu)/step;
    var spumbruch=Math.floor(iter/5.5+0.5);

    ntab.document.write("<table border=2 cellpadding=5 cellspacing=2 bordercolor=#0000FF>");
    var zaehl=0;
    while (x<=(xo+1E-7))
       {
       if (zaehl==0)
        {ntab.document.write("<tr><td valign=top><table cellpadding=0 cellspacing=10><tr><th> x </th><th> F(x)</th>");}
       if ((Math.floor(zaehl/spumbruch)*spumbruch==zaehl)&&zaehl>0)
        {ntab.document.write("</table><td valign=top><table cellpadding=0 cellspacing=10><tr><th align=left> x </th><th align=right> F(x)</th>");}
       ntab.document.write("<tr><td align=left>"+Math.floor(x*1000000+0.5)/1000000+"</td>");
       ntab.document.write("<td align=left>"+Math.floor(10000*chiv(x,document.chiform.elements[0].value)+0.5)/10000+"</td>");
       x+=step;
       zaehl+=1;
        }
     ntab.document.write("</table></table>");
     }
     else ntab.document.write("Too many items (more than 150) or wrong interval!<br>");
     }
     else ntab.document.write("Step size negative!");
     ntab.document.write("</center></p><br>");
     ntab.document.writeln("</body></html>");
     ntab.document.close();
    }

function tabelle_f()
  {
    ntab=open("","ftabelle","scrollbars=yes,toolbar=no,directories=no,menubar=yes");
    ntab.document.clear();
    ntab.document.write("<html><head><title>F-Distribucion</title></head><body bgcolor=#FFFFFF>");
 ntab.document.write("<h5></a></h5>");
    ntab.document.write("<form><input type=button value='Cerrar' onclick='window.close()'></form>");
    ntab.document.write("<h2>F- Distribucion</h2>");
    ntab.document.write("<p>Tabla de probabilidad acumulada F(x) de una F("
    +document.fform.elements[0].value+","+document.fform.elements[1].value+").</p>");
    ntab.document.write("<center>");
    var xu=eval(document.fform.elements[10].value);
    var xo=eval(document.fform.elements[11].value);
    var step=eval(document.fform.elements[12].value);
    var x=xu;
    if (step>0)
    {
     if ((((xo-xu)/step)<=150)&&(xo>xu))
     {
    var iter=(xo-xu)/step;
    var spumbruch=Math.floor(iter/5.5+0.5);

    ntab.document.write("<table border=2 cellpadding=5 cellspacing=2 bordercolor=#0000FF>");
    var zaehl=0;
    while (x<=(xo+1E-7))
       {
       if (zaehl==0)
        {ntab.document.write("<tr><td valign=top><table cellpadding=0 cellspacing=10><tr><th> x </th><th> F(x)</th>");}
       if ((Math.floor(zaehl/spumbruch)*spumbruch==zaehl)&&zaehl>0)
        {ntab.document.write("</table><td valign=top><table cellpadding=0 cellspacing=10><tr><th align=left> x </th><th align=right> F(x)</th>");}
       ntab.document.write("<tr><td align=left>"+Math.floor(x*1000000+0.5)/1000000+"</td>");
       ntab.document.write("<td align=left>"+Math.floor(10000*fv(x,document.gammaform.elements[0].value,document.gammaform.elements[1].value)+0.5)/10000+"</td>");
       x+=step;
       zaehl+=1;
        }
     ntab.document.write("</table></table>");
     }
     else ntab.document.write("Too many items (more than 150) or wrong interval!<br>");
     }
     else ntab.document.write("Step size negative!");
     ntab.document.write("</center></p><br>");
     ntab.document.writeln("</body></html>");
     ntab.document.close();
    }





  function normalv(xwert,muewert,sigmawert)
 {           x=eval(xwert);
             mue=eval(muewert);
             sigma=eval(sigmawert);   
             if (eval(sigma)<=0) return "Error: Sigma<=0 !";
             if (eval(sigma)>0)
             {  
             var  LTONE = 8;
             var  CON = 1.28;
             var  A1 = 0.398942280444;
	     var  A2 = 0.399903438504;
	     var  A3 = 5.75885480458;
	     var  A4 = 29.8213557808;
	     var  A5 = 2.62433121679;
	     var  A6 = 48.6959930692;
	     var  A7 = 5.92885724438;

	     var  B1 = 0.398942280385;
	     var  B2 = 0.8052E-8;
	     var  B3 = 1.00000615302;
	     var  B4 = 3.98064794E-4;
	     var  B5 = 1.98615381364;
	     var  B6 = 0.151679116635;
	     var  B7 = 5.29330324926;
	     var  B8 = 4.8385912808;
	     var  B9 = 15.1508972451;
	     var  B10= 0.742380924027;
	     var  B11= 30.789933034;
	     var  B12= 3.99019417011;

	var  UTZERO;
        var  Z;
        var  YY;
        var  ALNORM;
        var  DYN;
	var  UP;
	UTZERO = Math.pow(-2 * (Math.log(1.E-300)+1),0.5) - 0.3;
		UP= 0;
		Z = eval((x - mue)/sigma);
		if (Z < 0)
                      { UP = 1;
                        Z = -Z;
                      }
		if ((Z > LTONE) && ((UP==1)|| (Z > UTZERO)))
			ALNORM = 0;
                if ((Z <= LTONE) || ((UP!=1)|| (Z <= UTZERO)))
		      {	yy = 0.5 * Z * Z;
			if (Z <=  CON)
                        { 
                        ALNORM = 0.5 - Z * (A1 - A2 * yy/(yy + A3 - A4/(yy + A5 + A6/(yy + A7))));
			}
			if (Z>CON)
                   	{
                       ALNORM = Math.exp(-yy) * B1;
         		dummy = (Z + B4 + B5/(Z - B6 + B7/(Z + B8 - B9/(Z + B10 + B11/(Z +B12)))));
			ALNORM = ALNORM / (Z - B2 + B3/dummy);
			}
		      }
				
		if (UP==0) DYN = 1-ALNORM;
                if (UP!=0) DYN = ALNORM;
                return DYN 
                }
                }

  function invnormalv(ywert,muewert,sigmawert)
  { 	
       y=eval(ywert);
       mue=eval(muewert);
       sigma=eval(sigmawert);   
       if (eval(sigma)<=0) return "Error: Sigma<=0 !";
       if (eval(sigma)>0)
        {
        var   A0 =   2.50662823884;
	var   A1 = -18.61500062529;
	var   A2 =  41.39119773534;
        var   A3 = -25.44106049637;
        var   B1 =  -8.47351093090;
	var   B2 =  23.08336743743;
	var   B3 = -21.06224101826;
        var   B4 =   3.13082909833;
        var   C0 =  -2.78718931138;
        var   C1 =  -2.29796479134;
	var   C2 =   4.85014127135;
        var   C3 =   2.32121276858;
        var   D1 =   3.54388924762;
	var   D2 =   1.63706781897;
	var P;
        var Q;
        var R;
        var PPND;
        var DXN;				

		P = eval(y);
                if ((P<=0) || (P>=1)) return "Error F(x)!";
                if ((P>0) && (P<1)) 
                {
		Q = P - 0.5;
		if (Math.abs(Q) <= 0.42) 
			{
                        R = Q * Q;
			PPND = Q * (((A3*R + A2)*R + A1)*R + A0) / ((((B4*R + B3)*R + B2)*R + B1)*R + 1);
			DXN = PPND;
                        }
		if (Math.abs(Q)>0.42)
                        {
			R = eval(y);
			if (Q > 0)  R = 1 - eval(y);
			R = Math.pow(-Math.log(R),0.5);
			PPND = (((C3*R+C2)*R+C1)*R+C0) / ((D2*R+D1)*R+1);
			if (Q < 0) PPND = -PPND;
			DXN = PPND;
                        }
		return  (DXN *eval(sigma) + eval(mue));
                };
        }}    
 

  function gammav(xwert,alpha,beta)
  {
    var a=eval(alpha);
    var alpha2=a;
    var b=eval(beta);
    var beta2=b;
    var x=eval(xwert);
    if ((a>0) &&(b>0) &&(x>0))
    { 
     if (x>(20*alpha2*beta2)) return 1;
     if (x<=(20*alpha2*beta2))
      {
      var g=gammln(alpha2);
      var lg=logincgammafunction(alpha2,x/beta2);
      var dummy=Math.exp(lg-g);
      return dummy;
      }
     }
      if ((a>0) &&(b>0) &&(x<=0)) return 0;
      if ((a<=0) ||(b<=0)) return "Error: a and b not positive!";
      } 
  
  function invgammav(ywert,alpha,beta)
     {
      var y=eval(ywert);
      var a=eval(alpha);
      var b=eval(beta);
      var xneu=0;
      var yneu=0;
      var schleife=0;
      if ((a<=0) ||(b<=0)) return "Error: a and b not positive!";
      if ((a>0) &&(b>0))
      {
      if ((y<=0) || (y>=1)) return "Error F(x)!";
      if ((y>0)&&(y<1))
      { 
      var xu=0.000000;
      var xo=1;
      var yu=gammav(xu,a,b);
      var yo=gammav(xo,a,b);
      while ((yo<y) &&(xo<a*b*20))
       {xo*=2;
        yo=gammav(xo,a,b);
       }
      xneu=(xu+xo)/2;
      yneu=gammav(xneu,a,b);
      while ((Math.abs(yneu-y)>=1E-7)&&(schleife<200))
         { if (yneu>y) xo=xneu;
           if (yneu<=y) xu=xneu;
           xneu=(xu+xo)/2;
           yneu=gammav(xneu,a,b);
           ++schleife;
         }
      if(schleife>=200) return "Keine Konvergenz";
      if (schleife<200) return xneu;
      }
      }
      }
  


  function gammafunction(alpha)
  {  var a = alpha; 
     var g = 1;
     if (a>0)
     {while (a <= 10)
      {g*=a;
       a++;
      }
     var t=eval(1+(0.0833333+(0.00347222-0.002681327/a)/a)/a);
     var ga=Math.exp(-a+(a-0.5)*Math.log(a)+0.918939)*t/g;
     return ga;}
     if (a<=0)
     {return "Error: Alpha negative!"}
  }


     function incgammafunction(alpha,x)
  {  var t=1;
     var s=1 ;
     var l=0;
     t*=((1+l)/(1+alpha+l))*(x/(l+1));
     s+=t;
     while (Math.abs(t/s)>1E-7)
      {l++;
       t*=((1+l)/(1+alpha+l))*(x/(l+1));
       s+=t;
      }
    var incgam=s*Math.exp(-x)*(Math.pow(x,alpha))/alpha;
    return incgam;
 }   

     function logincgammafunction(alphawert,xwert)
  {  var x=eval(xwert);
     var alpha=eval(alphawert);
     var t=1;
     var s=1 ;
     var l=0;
     t*=((1+l)/(1+alpha+l))*(x/(l+1));
     s+=t;
     while ((Math.abs(t/s)>1E-7))
      {l++;
       t*=((1+l)/(1+alpha+l))*(x/(l+1));
       s+=t;
      }
    var logincgam=Math.log(s)-x+alpha*Math.log(x)-Math.log(alpha);
    return logincgam;

 }   
    function expov(xwert,lambda)
  { var la=eval(lambda);
    var x=eval(xwert);
    if (la<=0) return "Error: Lambda negative!";
    if ((la>0)&&(x<=0)) return 0;
    if ((la>0)&&(x>0))
    { var ergeb=1-Math.exp(-la*x);
      return ergeb;
    }
  }

    function invexpov(ywert,lambda)
  { var y=eval(ywert);
    var la=eval(lambda);
    if (la<=0) return "Errorr: Lambda negative!";
    if ((la>0) && ((y<=0)||(y>=1))) return "Error F(x)!";
    if ((la>0) && ((y>0)&&(y<1))) 
     {  var ergeb=-Math.log(1-y)/la;
        return ergeb}
   }

     function tv(xwert,fgrad)
    { var weiter=true;
      var x=eval(xwert);
      var fg=Math.round(eval(fgrad));
     
      if (fg<=0) return "Error: D of F <= 0 !";
      if (fg>0) 
      {

      if (fg>2000)
      {
       weiter=window.confirm("This can last! Continue?"); 
      } 
      if(weiter==true)
      {
      document.tform.elements[0].value=fg;
      var k3=0;
      var c3=0;
      var a3 = x/Math.pow(fg,0.5);
      var b3 = 1 + Math.pow(a3,2);
      var y  = 0.5;
		if (Math.abs(Math.floor(fg/2)*2-fg)<1E-6)
                        {
		        c3 = a3/(2*Math.pow(b3,0.5));
			k3 = 0;
			}
                if (Math.abs(Math.floor(fg/2)*2-fg)>=1E-6)  		
			{
                        c3 = a3/(b3*Math.PI);
			y  += Math.atan(a3)/Math.PI;
			k3 = 1;
                         }
		if (fg > 1)
                        {k3+=2;
                         y+=c3;
                         c3*=(k3-1)/(k3*b3);
			while (k3<fg)
                        {
                  		k3+=2;
				y  +=c3;
				c3 *= (k3-1)/(k3*b3);
                        }
                        }
                return y;
                }
      }
     if (weiter==false)
        {return "Abbruch!"}
     }










     
     function invtv(ywert,fgrad)
     {
	var x=0;
        var a4=0;
        var b4=0;
        var c4=0;
        var d4=0;
        var e4=0;
        var k4=0;
        var yt=0;
        var xn=0;
        var schleife=0;
        var y=eval(ywert);
        var fg=Math.round(eval(fgrad));
        if  (fg<1) return "Error: D of F <= 0 !";
        if (fg>=1)
	if  ((y >= 1)||(y<=0))  return "Error F(x)!";
        if  ((y>0)&&(y<1)) 
                {
                 if (fg>2000) return invnormalv(y,0,1);
                 if (fg<=2000) 
                 {
                 if (fg == 1)	{x = Math.tan(Math.PI * (y-0.5));
                                 return x}
		 if (fg!=1)
                    {   c4 = Math.pow(fg,0.5);
			if (Math.abs(Math.floor(fg/2)*2-fg)<1E-5)
                            {
			    c4 *= 2;
			    k4 = 2;
			    }
                        if (Math.abs(Math.floor(fg/2)*2-fg)>=1E-5)
		            {
			    c4 *=Math.PI;
			    k4 = 1;
			    }
			if (fg >= 3)
			    {while (k4 <= (fg - 2))
                               {c4 *= k4 /(k4+1);
				k4+= 2;
				}
                            }  
			xn = invnormalv(y,0,1);
			a4 = xn*xn;
			x = xn + (a4+1) * xn/(4*fg);
			x +=((5 * a4 + 16) * a4 + 3) * xn/(96 * fg * fg);
			x +=(((3 * a4 + 19) * a4 + 17) * a4 - 15) * xn/(384 *fg * fg * fg); 
			b4 = ((((79 * a4 + 776) * a4 + 1482) * a4 - 1920) * a4 - 945) * xn;
			x += b4/(92160 * Math.pow(fg,4));
              		e4 = y;
                        yt=tv(x,Math.round(fg));
                      	d4 = (yt - e4) * c4 * Math.pow((1 + x * x / fg),(fg+1)/2);
			x -= d4;  
                        var schleife=0;
				while ((Math.abs(d4)>1E-8) &&(schleife<100))
                                     {
					yt = tv(x,Math.round(fg));
					d4 = (yt - e4) * c4 * Math.pow((1 + x * x / fg),(fg+1)/2);
					x -= d4;
                                        ++schleife;
                                     }
			if (schleife>=100) return "Nicht konvergiert!"
                        if (schleife<100) return x;
                        }
                    
         }      
        }
        }

















     function chiv(xwert,n)
     {var dummy1=eval(n)/2;
      var x=eval(xwert);
      var dummy3=gammav(xwert,dummy1,2);
      return dummy3}

     function invchiv(ywert,n)
     {var dummy1=eval(n)/2;
      var y=eval(ywert);
      var dummy3=invgammav(ywert,dummy1,2);
      return dummy3}
   
     function fv(xwert,n1wert,n2wert)
    { var x=eval(xwert);
      if (x<0) x=0;
      var n1=Math.round(eval(n1wert));
      var n2=Math.round(eval(n2wert));
      document.fform.elements[0].value=n1;
      document.fform.elements[1].value=n2;
     if (n1<1) return "Error n1";
     if (n2<1) return "Error n2";
     var xbeta=n2/(n2+n1*x);
     var dummy=1-betai(n2/2,n1/2,xbeta);
     if (dummy>1) return "Keine Konvergenz!"
     if (dummy<=1)return dummy;
     }    

     function lnbeta(r1,r2)
       {return (gammln(r1)+gammln(r2)-gammln(r1+r2));}
         
     function gammln(xx)
    { var stp= 2.50662827465;
        var  x = xx-1.0;
        var  tmp = x+5.5;
         tmp = (x+0.5)*Math.log(tmp)-tmp;
      var  ser = 1.0+76.18009173/(x+1.0)-86.50532033/(x+2.0)+24.01409822/(x+3.0)
            -1.231739516/(x+4.0)+0.120858003e-2/(x+5.0)-0.536382e-5/(x+6.0);
     var dummy= tmp+Math.log(stp*ser);
     return dummy;
     } 

     function betai(awert,bwert,xwert)
     {  var bt;
        var btwert;
        var a=eval(awert);
        var b=eval(bwert);
        var x=eval(xwert);
        if ((x<0)||(x>1)) return 0;
        if (x==0) return 0;
        if (x==1) return 1;
        if ((x>0)&&(x<1))
         {
          bt=Math.exp(-lnbeta(a,b)+a*Math.log(x)+b*Math.log(1-x));
          if (x<((a+1)/(a+b+2)))
            {btwert= betacf(x,a,b)/a;
             bt*= btwert;
            }
          if (x>=((a+1)/(a+b+2)))
            {btwert=betacf(1-x,b,a)/b;
             bt=1-bt*btwert;
            }
         if (btwert<0) return -111111;
         if (btwert>=0) return bt;
         }          
     }

     	function betacf(x,a,b)
        {var itmax = 5000;
        var epsilon=3E-7;
	var tem;
        var qap;
        var qam;
        var qab;
        var d;
        var bz;
        var bpp;
        var bp;
        var bm=1;
        var az=1;
        var app;
        var am=1;
        var aold;
        var ap;
        var m=1;
		qab = a+b;
		qap = a+1.0;
		qam = a-1.0;
		bz = 1.0 - qab * x / qap;
                var abbruch=0;
		while ((m<=itmax)&&(abbruch!=1))
			{
                        tem = m + m;
			d= m * (b - m) * x / ((qam + tem) * (a + tem));
			ap = az + d * am;
			bp = bz + d * bm;
			d = -(a + m) * (qab+m) * x / ((a + tem) * (qap + tem));
			app = ap + d * az;
			bpp = bp + d * bz;
			aold = az;
			am = ap / bpp;
			bm = bp / bpp;
			az = app / bpp;
			bz = 1;
			if (Math.abs(az - aold) < (epsilon * Math.abs(az)))  abbruch=1;
                        m+=1; 
                        }
		if (Math.abs(abbruch-1)<1E-5) return az;
                if (Math.abs(abbruch)<1E-5) return -111111;
	}



    	function betainv(alpha,p,q)
        {
	var const1 = 2.30753;
	var const2 = 0.27061;
	var const3 = 0.99229;
	var const4 = 0.04481;
        var epsilon=3E-12;
        var schluss;
	var a;
        var adj;
        var beta;var g; var h; var pp;var prev; var qq;
        var r; var s; var sq; var t; var tx; var w; var y;
        var  yprev; var x; var inde;
		x = alpha;
		if ((alpha <= 0)|| (alpha >= 1)) return "Error!";
                if ((alpha>0)&&(alpha<1))
                {
		if (alpha>=0.5) inde=1;
                if (alpha<0.5) inde=0;
		if (Math.abs(inde-1)<1E-7)
                   { 
			a= 1 - alpha;  pp = q;  qq = p; 
                   }
                if (Math.abs(inde)<1E-7)
                  {
			a = alpha;  pp = p;  qq = q;
		  }

	     r = -2*Math.log(a);
	     r = Math.pow(r,0.5);
             y = r - (const1 + const2 * r) / (1 + (const3 + const4 * r) * r);

             if ((pp > 1)&& (qq > 1)) 
                {	r = (y * y - 3) / 6;
			s = 1 / (pp + pp - 1);
			t = 1 / (qq + qq - 1);
			h = 2 / (s + t);
			w = y * Math.pow((h + r),0.5) / h - (t - s) * (r + 5/6 - 2 / (3 * h));
			x = pp / (pp + qq * Math.exp(w + w)); 
                } 
             if ((pp<=1) ||(qq<=1))
               {	r = pp + qq;  t = 1 / (9 * qq);
			t = r * Math.pow(1 - t + y * Math.pow(t,0.5),3);
                 if (t <= 0) 
 	         {x = 1 - Math.exp((Math.log((1 - a) * qq)+lnbeta(p,q))/qq);} 
                 if (t>0)
                 {t = (4 * pp + r - 2) / t;
                    if (t<=1) 
			x = Math.exp((Math.log(a * pp) + lnbeta(p,q)) / pp);
                    if (t>1)
			x = 1 - 2 / (t + 1);
                  }
                } 
		r = 1 - pp;  t = 1 - qq;  yprev = 0;  sq = 1;  prev = 1;
		if (x < 0.0001) x = 0.0001;
		if (x > 0.9999) x = 0.9999;
                var kont1=1;
                var kont2=1;
                var kont3=1;
                var kont4=1; 
                var kont5=1;
                schluss=0;
                var zaehl=0;  
              while ((schluss<1E-7)&&(zaehl<100)) 
               {
                if ((kont1>0.99999)&&(zaehl<100))
                {
               y = betai(pp,qq,x);
		y = (y - a) * Math.exp(lnbeta(p,q) + r * Math.log(x) +
                                     t * Math.log(1 - x));
		if ((y * yprev) <= 0) prev = sq;
		g = 1;
                }

              if ((kont2>0.99999)&&(zaehl<100))
                {
		adj = g * y;  sq = adj * adj;
                zaehl+=1; 
		if (sq >= prev)  
                 {kont3=0;
                  kont4=1;}
                }
		if ((kont3>0.9999)&&(zaehl<100))
                {
                tx = x - adj;
		if ((tx >= 0) && (tx <= 1)) 
                         {
                          kont4=0;
                          kont5=1}
                }
 
                if ((kont4>0.9999)&&(zaehl<100))
		{g = g / 3;
                 kont1=0;
                 kont2=1;
                 kont3=0;
                 kont4=0;
                 kont5=0;
                 zaehl+=1;
                }
            
                if ((kont5>0.9999)&&(zaehl<100))
                {  
		if (prev <= epsilon)  schluss=1;
		if ((y * y) <= epsilon)  schluss=1;
		if ((tx == 0) || (tx == 1)) 
                {  kont1=0;
                   kont2=0;
                   kont3=0;
                   kont4=1;
                   kont5=1;
                   zaehl+=1;
                }
		if (tx == x)  schluss=1;
		x = tx;
		yprev = y;
                zaehl++;
                kont5=1;
		}
                }
 
		if (Math.abs(1-inde)<1E-7)  x = 1 - x;
                if (zaehl<100) return x;
                if (zaehl>=100) return -111111;
                }
}


     function invfv(ywert,n1wert,n2wert)
      { var y=eval(ywert);
      if ((y<=0)||(y>=1)) return "Error F(x)";
      var n1=Math.round(eval(n1wert));
      var n2=Math.round(eval(n2wert));
      document.fform.elements[0].value=n1;
      document.fform.elements[1].value=n2;
     if (n1<1) return "Error n1";
     if (n2<1) return "Error n2";
     var xbeta=betainv(y,n1/2,n2/2);
     if (xbeta<0) return "Keine Konvergenz!"
     if (xbeta>=0) 
      {
    var dummy=n2/2*xbeta/(n1/2*(1-xbeta));
     return dummy;
      }
     }