(FILECREATED "24-Feb-86 17:43:16" {DSK}<LISPFILES>QUANTFNCTS.;2 24113  

      previous date: "22-Feb-86 17:52:38" 
{MITFS1-E40:SLOAN% SCHOOL:MASSINSTTECH}<EDAN% KABATCHNIK>QUANTFNCTS.;11)


(* Copyright (c) 1986 by Massachusetts Institute of Technology. All rights reserved.)

(PRETTYCOMPRINT QUANTFNCTSCOMS)

(RPAQQ QUANTFNCTSCOMS ((FNS QBETA QCAUC QCHIS QEXPT QFDIS QGAMM QLNORM QLOGI QNORM QNORMS QTDIS QUNIF)
		       ))
(DEFINEQ

(QBETA
  [LAMBDA (Probability A B)                                  (* SCP "24-Feb-86 17:33")
    (SETQ Probability (FLOAT Probability))
    (SETQ A (if (NULL A)
		then 1.0
	      else (FLOAT A)))
    (SETQ B (if (NULL B)
		then 1.0
	      else (FLOAT B)))
    (if (OR (LEQ Probability 0.0)
	    (GEQ Probability 1.0))
	then (ERROR "ERROR in function QBETA - Probability must lie between 0 and 1.")
      elseif (LEQ A 0.0)
	then (ERROR "ERROR in function QBETA - A must be positive.")
      elseif (LEQ B 0.0)
	then (ERROR "ERROR in function QBETA - B must be positive.")
      elseif (AND (FEQP A 1.0)
		  (FEQP B 1.0))
	then Probability
      else (LET* [(Finished NIL)
	      (XM (FPLUS A B))
	      (AGoodGuess (FPLUS [FTIMES (QNORMS Probability)
					 (SQRT (FQUOTIENT (FTIMES A B)
							  (FTIMES XM XM (FPLUS XM 1.0]
				 (FQUOTIENT A XM)))
	      (MachinePrecisionValueTimes10 (FTIMES 10.0 MachinePrecisionValue))
	      (GoodSituation (if (OR (FLESSP Probability .05)
				     (FGREATERP Probability .95)
				     (FLESSP AGoodGuess MachinePrecisionValueTimes10)
				     (FGREATERP AGoodGuess (FDIFFERENCE 1.0 
								     MachinePrecisionValueTimes10)))
				 then NIL
			       else T))
	      (QuantileLeft (if GoodSituation
				then AGoodGuess
			      else 0.0))
	      (ProbabilityLeft (if GoodSituation
				   then (PBETA QuantileLeft A B)
				 else 0.0))
	      (QuantileRight (if GoodSituation
				 then AGoodGuess
			       else 1.0))
	      (ProbabilityRight (if GoodSituation
				    then (PBETA QuantileLeft A B)
				  else 1.0))
	      (LeftOrRight (if (FLESSP Probability .05)
			       then NIL
			     elseif (FGREATERP Probability .95)
			       then T
			     elseif (FLESSP AGoodGuess MachinePrecisionValueTimes10)
			       then NIL
			     elseif (FGREATERP AGoodGuess (FDIFFERENCE 1.0 
								     MachinePrecisionValueTimes10))
			       then T
			     else (FGREATERP ProbabilityLeft Probability]
	     [if LeftOrRight
		 then [do (SETQ QuantileLeft (FMAX (FDIFFERENCE QuantileRight .05)
						   0.0))
			  (if (LEQ QuantileLeft 0.0)
			      then (SETQ ProbabilityLeft 0.0)
			    else (SETQ ProbabilityLeft (PBETA QuantileLeft A B))
				 (if (FEQP ProbabilityLeft Probability)
				     then (SETQ Finished QuantileLeft))
				 (if (GEQ ProbabilityLeft Probability)
				     then (SETQ QuantileRight QuantileLeft)
					  (SETQ ProbabilityRight ProbabilityLeft)))
			 repeatuntil (OR (LEQ QuantileLeft 0.0)
					 (FLESSP ProbabilityLeft Probability)
					 (NOT (NOT Finished]
	       else (do (SETQ QuantileRight (FMIN (FPLUS QuantileLeft .05)
						  1.0))
			(if (GEQ QuantileRight 1.0)
			    then (SETQ ProbabilityRight 1.0)
			  else (SETQ ProbabilityRight (PBETA QuantileRight A B))
			       (if (FEQP ProbabilityRight Probability)
				   then (SETQ Finished QuantileRight))
			       (if (LEQ ProbabilityRight Probability)
				   then (SETQ QuantileLeft QuantileRight)
					(SETQ ProbabilityLeft ProbabilityRight)))
		       repeatuntil (OR (GEQ QuantileRight 1.0)
				       (FGREATERP ProbabilityRight Probability)
				       (NOT (NOT Finished]
	     (if (NOT (NOT Finished))
		 then Finished
	       else (LET (AssumedQuantile ProbabilityAtAssumedQuantile ProbabilityDifference)
		      (for I from 1 to 6
			 do (SETQ AssumedQuantile (FTIMES .5 (FPLUS QuantileLeft QuantileRight)))
			    (SETQ ProbabilityAtAssumedQuantile (PBETA AssumedQuantile A B))
			    (SETQ ProbabilityDifference (FDIFFERENCE ProbabilityAtAssumedQuantile 
								     Probability))
			    (if (FLESSP (ABS ProbabilityDifference)
					MachinePrecisionValueTimes10)
				then (SETQ Finished AssumedQuantile)
			      elseif (FGREATERP ProbabilityDifference 0.0)
				then (SETQ QuantileRight AssumedQuantile)
				     (SETQ ProbabilityRight ProbabilityAtAssumedQuantile)
			      else (SETQ QuantileLeft AssumedQuantile)
				   (SETQ ProbabilityLeft ProbabilityAtAssumedQuantile))
			 repeatuntil (NOT (NOT Finished)))
		      [if (NOT (NOT Finished))
			  then Finished
			else (for I from 1 to 6
				do [SETQ AssumedQuantile (FPLUS QuantileLeft
								(FQUOTIENT (FTIMES (FDIFFERENCE
										     Probability 
										  ProbabilityLeft)
										   (FDIFFERENCE
										     QuantileRight 
										     QuantileLeft))
									   (FDIFFERENCE 
										 ProbabilityRight 
										  ProbabilityLeft]
				   (SETQ ProbabilityAtAssumedQuantile (PBETA AssumedQuantile A B))
				   (SETQ ProbabilityDifference (FDIFFERENCE 
								     ProbabilityAtAssumedQuantile 
									    Probability))
				   (if (FLESSP (ABS ProbabilityDifference)
					       MachinePrecisionValueTimes10)
				       then (SETQ Finished AssumedQuantile)
				     elseif (FGREATERP ProbabilityDifference 0.0)
				       then (SETQ QuantileRight AssumedQuantile)
					    (SETQ ProbabilityRight ProbabilityAtAssumedQuantile)
				     else (SETQ QuantileLeft AssumedQuantile)
					  (SETQ ProbabilityLeft ProbabilityAtAssumedQuantile))
				repeatuntil (NOT (NOT Finished]
		      (if (NOT (NOT Finished))
			  then Finished
			else AssumedQuantile])

(QCAUC
  [LAMBDA (Probability Location Scale)                       (* enk "20-Feb-86 14:41")
    (SETQ Probability (FLOAT Probability))
    (SETQ Location (if (NULL Location)
		       then 0.0
		     else (FLOAT Location)))
    (SETQ Scale (if (NULL Scale)
		    then 1.0
		  else (FLOAT Scale)))
    (if (OR (LEQ Probability 0.0)
	    (GEQ Probability 1.0))
	then (ERROR "ERROR in function QCAUC - Probability must lie between 0 and 1.")
      else (FPLUS Location (FTIMES Scale (TAN (FTIMES 3.141593 (FPLUS Probability -.5))
					      T])

(QCHIS
  [LAMBDA (Probability DegreesOfFreedom)                     (* enk "20-Feb-86 14:32")
    (SETQ Probability (FLOAT Probability))
    (SETQ DegreesOfFreedom (if (NULL DegreesOfFreedom)
			       then 1.0
			     else (FLOAT DegreesOfFreedom)))
    (if (OR (FLESSP Probability 0.0)
	    (GEQ Probability 1.0))
	then (ERROR "ERROR in function QCHIS - Probability must lie between 0 and 1.")
      elseif (LEQ DegreesOfFreedom 0.0)
	then (ERROR "ERROR in function QEXPT - DegreesOfFreedom must be positive.")
      elseif (FEQP Probability 0.0)
	then 0.0
      else (FTIMES 2.0 (QGAMM Probability (FQUOTIENT DegreesOfFreedom 2.0])

(QEXPT
  [LAMBDA (Probability Mu)                                   (* enk "13-Feb-86 17:41")
    (SETQ Probability (FLOAT Probability))
    (SETQ Mu (if (NULL Mu)
		 then 1.0
	       else (FLOAT Mu)))
    (if (OR (FLESSP Probability 0.0)
	    (GEQ Probability 1.0))
	then (ERROR "ERROR in function QEXPT - Probability must lie between 0 and 1.")
      elseif (LEQ Mu 0.0)
	then (ERROR "ERROR in function QEXPT - Mu must be positive.")
      else (FMINUS (FTIMES Mu (LOG (FDIFFERENCE 1.0 Probability])

(QFDIS
  [LAMBDA (Probability NumeratorDF DenominatorDF)            (* enk "22-Feb-86 16:48")
    (SETQ Probability (FLOAT Probability))
    (SETQ NumeratorDF (if (NULL NumeratorDF)
			  then 1.0
			else (FLOAT NumeratorDF)))
    (SETQ DenominatorDF (if (NULL DenominatorDF)
			    then 1.0
			  else (FLOAT DenominatorDF)))
    (if (OR (FLESSP Probability 0.0)
	    (GEQ Probability 1.0))
	then (ERROR "ERROR in function QFDIS - Probability must lie between 0 and 1.")
      elseif (LEQ NumeratorDF 0.0)
	then (ERROR "ERROR in function QFDIS - NumeratorDF must be positive.")
      elseif (LEQ DenominatorDF 0.0)
	then (ERROR "ERROR in function QFDIS - DenominatorDF must be positive.")
      elseif (FEQP Probability 0.0)
	then 0.0
      elseif (LET [(TemporaryResult (QBETA Probability (FQUOTIENT NumeratorDF 2.0)
					   (FQUOTIENT DenominatorDF 2.0]
	       (FTIMES (FQUOTIENT DenominatorDF NumeratorDF)
		       (FQUOTIENT TemporaryResult (FDIFFERENCE 1.0 TemporaryResult])

(QGAMM
  [LAMBDA (Probability Eta)                                  (* enk "20-Feb-86 14:36")
    (SETQ Probability (FLOAT Probability))
    (SETQ Eta (if (NULL Eta)
		  then 1.0
		else (FLOAT Eta)))
    (if (OR (FLESSP Probability 0.0)
	    (GEQ Probability 1.0))
	then (ERROR "ERROR in function QGAMM - Probability must lie between 0 and 1.")
      elseif (LEQ Eta 0.0)
	then (ERROR "ERROR in function QGAMM - Eta must be positive.")
      elseif (FEQP Probability 0.0)
	then 0.0
      else
       (if (FEQP Eta .5)
	   then (LET [(A (QNORMS (FTIMES .5 (FDIFFERENCE 1.0 Probability]
		  (FTIMES A A .5))
	 elseif (FEQP Eta 1.0)
	   then (FMINUS (LOG (FDIFFERENCE 1.0 Probability)))
	 else
	  (LET [(TemporaryResult
	       (if (FLESSP Eta .5)
		   then (LET* ((A (FQUOTIENT 1.0 (FTIMES 9.0 Eta)))
			   [B (FPLUS 1.0 (FMINUS A)
				     (FTIMES (QNORMS Probability)
					     (SQRT A]
			   (C (FTIMES B B B Eta 2.0))
			   (D (if (LEQ C 0.0)
				  then (EXPT Probability (FTIMES 9.0 A))
				else C)))
			  (if (LEQ D 0.0)
			      then .0001
			    else D))
		 else
		  (LET* [(A (FQUOTIENT .5 Eta))
		     (B (FTIMES (SQRT A)
				(QNORMS Probability)))
		     (C
		       (LET [(Coefficients (CONSTANT (MAKEARRAY (QUOTE 19)
								(QUOTE ELEMENTTYPE)
								(QUOTE FLONUM)
								(QUOTE INITIALCONTENTS)
								(QUOTE (.01264616 -.01425296 
										  .001400483 
										  -.00588609 
										  -.01091214 
										  -.002304527 
										  .003135411 
										  -.0002728484 
										  -.009699682 
										  .01316872 
										  .002618914 
										  -.2222222 
										  .00005406674 
										  .00003483789 
										  -.0007274761 
										  .003292181 
										  -.008729714 
										  .4714045 1.0]
			 (FPLUS
			   (FTIMES
			     (FPLUS
			       (FTIMES (FPLUS (FTIMES (FPLUS (AREF Coefficients 0)
							     (FTIMES (AREF Coefficients 1)
								     B))
						      A)
					      (FPLUS (FTIMES
						       (FPLUS (FTIMES (FPLUS (AREF Coefficients 2)
									     (FTIMES (AREF 
										     Coefficients 3)
										     B))
								      B)
							      (AREF Coefficients 4))
						       B)
						     (AREF Coefficients 5)))
				       A)
			       (FPLUS
				 (FTIMES
				   (FPLUS
				     (FTIMES (FPLUS (FTIMES (FPLUS (FTIMES
								     (FPLUS (AREF Coefficients 6)
									    (FTIMES (AREF 
										     Coefficients 7)
										    B))
								     B)
								   (AREF Coefficients 8))
							    B)
						    (AREF Coefficients 9))
					     B)
				     (AREF Coefficients 10))
				   B)
				 (AREF Coefficients 11)))
			     A)
			   (FTIMES
			     (FPLUS
			       (FTIMES
				 (FPLUS
				   (FTIMES (FPLUS (FTIMES (FPLUS (FTIMES (FPLUS (FTIMES (AREF 
										     Coefficients 12)
											B)
										(AREF Coefficients 13)
										)
									 B)
								 (AREF Coefficients 14))
							  B)
						  (AREF Coefficients 15))
					   B)
				   (AREF Coefficients 16))
				 B B)
			       (AREF Coefficients 17))
			     B)
			   (AREF Coefficients 18]
		    (FTIMES C C C Eta]
	    (if (OR (GEQ Eta 30.0)
		    (AND (GEQ Eta 15.0)
			 (FGREATERP Probability .49)
			 (FLESSP Probability .99))
		    (AND (FGREATERP Eta (FDIFFERENCE 25.2 (FTIMES Probability 20.8)))
			 (GEQ Probability .01)
			 (LEQ Probability .99)))
		then TemporaryResult
	      else (LET* ((PgammAtTemporaryResult (PGAMM TemporaryResult Eta))
		      (ProbabilityDifference (FDIFFERENCE Probability PgammAtTemporaryResult))
		      (AbsoluteProbabilityDifference (ABS ProbabilityDifference))
		      (OldAbsoluteNewtonRaphsonCorrection MIN.FLOAT)
		      (OldTemporaryResult TemporaryResult)
		      NewtonRaphsonCorrection AbsoluteNewtonRaphsonCorrection)
		     (for I from 1 to 50
			do [if (AND (GEQ AbsoluteProbabilityDifference PgammAtTemporaryResult)
				    (NOT (IEQP I 1)))
			       then (SETQ NewtonRaphsonCorrection (FMINUS (FQUOTIENT 
									  NewtonRaphsonCorrection 2.0)
									  ))
			     else (SETQ NewtonRaphsonCorrection
				    (FPLUS (LOG AbsoluteProbabilityDifference)
					   (FMINUS (FTIMES (FDIFFERENCE Eta 1.0)
							   (LOG TemporaryResult)))
					   TemporaryResult
					   (GAMLOG Eta)))
				  (SETQ NewtonRaphsonCorrection (if (MINUSP ProbabilityDifference)
								    then (FMINUS (ANTILOG 
									  NewtonRaphsonCorrection))
								  else (ANTILOG 
									  NewtonRaphsonCorrection)))
				  (if (NOT (EQ (if (MINUSP ProbabilityDifference)
						   then T
						 else NIL)
					       (if (MINUSP NewtonRaphsonCorrection)
						   then T
						 else NIL)))
				      then (SETQ NewtonRaphsonCorrection
					     (if (MINUSP ProbabilityDifference)
						 then (FMINUS (FQUOTIENT 
								  AbsoluteNewtonRaphsonCorrection 2.0)
							      )
					       else (FQUOTIENT AbsoluteNewtonRaphsonCorrection 2.0]
			   (SETQ AbsoluteNewtonRaphsonCorrection (ABS NewtonRaphsonCorrection))
			   (SETQ OldAbsoluteNewtonRaphsonCorrection AbsoluteNewtonRaphsonCorrection)
			   (SETQ PgammAtTemporaryResult AbsoluteProbabilityDifference)
			   (SETQ TemporaryResult (FMAX (FPLUS TemporaryResult NewtonRaphsonCorrection)
						       Small))
			   (SETQ OldTemporaryResult TemporaryResult)
			   (SETQ PgammAtTemporaryResult (PGAMM TemporaryResult Eta))
			   (SETQ ProbabilityDifference (FDIFFERENCE Probability 
								    PgammAtTemporaryResult))
			   (SETQ AbsoluteProbabilityDifference (ABS ProbabilityDifference))
			repeatwhile (AND (FGREATERP AbsoluteProbabilityDifference 1.0E-8)
					 (FGREATERP OldAbsoluteNewtonRaphsonCorrection
						    (FTIMES OldTemporaryResult 1.0E-6)))
			finally (RETURN OldTemporaryResult])

(QLNORM
  [LAMBDA (Probability Location Scale)                       (* SCP "12-Feb-86 17:03")
    (SETQ Probability (FLOAT Probability))
    (SETQ Location (if (NULL Location)
		       then 0.0
		     else (FLOAT Location)))
    (SETQ Scale (if (NULL Scale)
		    then 1.0
		  else (FLOAT Scale)))
    (if (OR (LEQ Probability 0.0)
	    (GEQ Probability 1.0))
	then (ERROR "ERROR in function QLNORM - Probability must lie between 0 and 1.")
      elseif (LEQ Scale 0.0)
	then (ERROR "ERROR in function QLNORM - Scale must be positive.")
      else (ANTILOG (FPLUS Location (FTIMES Scale (QNORMS Probability])

(QLOGI
  [LAMBDA (Probability Location Scale)                       (* SCP "12-Feb-86 16:51")
    (SETQ Probability (FLOAT Probability))
    (SETQ Location (if (NULL Location)
		       then 0.0
		     else (FLOAT Location)))
    (SETQ Scale (if (NULL Scale)
		    then 1.0
		  else (FLOAT Scale)))
    (if (LEQ Scale 0.0)
	then (ERROR "ERROR in function QLOGI - Scale must be positive.")
      elseif (OR (LEQ Probability 0.0)
		 (GEQ Probability 1.0))
	then (ERROR "ERROR in function QLOGI - Probability must lie between 0 and 1.")
      else (FPLUS Location (FTIMES Scale (LOG (FQUOTIENT Probability (FDIFFERENCE 1.0 Probability])

(QNORM
  [LAMBDA (Probability Location Scale)                       (* SCP "12-Feb-86 16:56")
    (SETQ Probability (FLOAT Probability))
    (SETQ Location (if (NULL Location)
		       then 0.0
		     else (FLOAT Location)))
    (SETQ Scale (if (NULL Scale)
		    then 1.0
		  else (FLOAT Scale)))
    (if (OR (LEQ Probability 0.0)
	    (GEQ Probability 1.0))
	then (ERROR "ERROR in function QNORM - Probability must lie between 0 and 1.")
      elseif (LEQ Scale 0.0)
	then (ERROR "ERROR in function QNORM - Scale must be positive.")
      else (FPLUS Location (FTIMES Scale (QNORMS Probability])

(QNORMS
  [LAMBDA (Probability)                                      (* SCP "12-Feb-86 19:50")
    (SETQ Probability (FLOAT Probability))
    (COND
      ((OR (LEQ Probability 0.0)
	   (GEQ Probability 1.0))
	(ERROR "ERROR in function QNORMS - Probability must be between 0 and 1."))
      (T (LET* [[Coefficients1 (CONSTANT (MAKEARRAY (QUOTE 3)
						    (QUOTE ELEMENTTYPE)
						    (QUOTE FLONUM)
						    (QUOTE INITIALCONTENTS)
						    (QUOTE (.010328 .802853 2.515517]
	    [Coefficients2 (CONSTANT (MAKEARRAY (QUOTE 4)
						(QUOTE ELEMENTTYPE)
						(QUOTE FLONUM)
						(QUOTE INITIALCONTENTS)
						(QUOTE (.001308 .189269 1.432788 1.0]
	    (WhichWay (FGREATERP Probability .5))
	    [Eta (SQRT (FTIMES -2.0 (LOG (if WhichWay
					     then (FDIFFERENCE 1.0 Probability)
					   else Probability]
	    (FinalResult (FDIFFERENCE Eta (FQUOTIENT (HORNER Eta Coefficients1 0 2)
						     (HORNER Eta Coefficients2 0 3]
	   (if WhichWay
	       then FinalResult
	     else (FMINUS FinalResult])

(QTDIS
  [LAMBDA (Probability DegreesOfFreedom)                     (* enk "22-Feb-86 17:49")
    (SETQ Probability (FLOAT Probability))
    (SETQ DegreesOfFreedom (if (NULL DegreesOfFreedom)
			       then 1.0
			     else (FLOAT DegreesOfFreedom)))
    (if (OR (LEQ Probability 0.0)
	    (GEQ Probability 1.0))
	then (ERROR "ERROR in function QTDIS - Probability must lie between 0 and 1.")
      elseif (FLESSP DegreesOfFreedom 1.0)
	then (ERROR "ERROR in function QTDIS - DegreesOfFreedom must be greater/equal to 1.")
      else
       (LET* [[ModifiedProbability (if (FLESSP Probability .5)
				       then (FTIMES 2.0 Probability)
				     else (FTIMES 2.0 (FDIFFERENCE 1.0 Probability]
	  (FinalResult
	    (if (LEQ (ABS (FDIFFERENCE DegreesOfFreedom 2.0))
		     Small)
		then (SQRT (FDIFFERENCE (FQUOTIENT 2.0 (FTIMES ModifiedProbability (FDIFFERENCE
								 2.0 ModifiedProbability)))
					2.0))
	      elseif (LEQ (ABS (FDIFFERENCE DegreesOfFreedom 1.0))
			  Small)
		then (FQUOTIENT 1.0 (TAN (FTIMES ModifiedProbability 1.570796)
					 T))
	      else
	       (LET* [(A (FQUOTIENT 1.0 (FDIFFERENCE DegreesOfFreedom .5)))
		  (B (FQUOTIENT 48.0 (FTIMES A A)))
		  (C (FPLUS (FTIMES (FDIFFERENCE (FTIMES (FDIFFERENCE (FQUOTIENT (FTIMES 20700.0 A)
										 B)
								      98.0)
							 A)
						 16.0)
				    A)
			    96.36))
		  (D (FTIMES (FPLUS (FQUOTIENT (FDIFFERENCE (FQUOTIENT 94.5 (FPLUS B C))
							    3.0)
					       B)
				    1.0)
			     (SQRT (FTIMES A 1.570796))
			     DegreesOfFreedom))
		  (E (EXPT (FTIMES D ModifiedProbability)
			   (FQUOTIENT 2.0 DegreesOfFreedom)))
		  (TemporaryResult
		    (if (LEQ E (FPLUS A .05))
			then
			 (LET ((DegreesOfFreedomPlus2 (FPLUS DegreesOfFreedom 2.0)))
			   (FPLUS
			     (FTIMES (FDIFFERENCE
				       (FTIMES (FPLUS (FQUOTIENT 1.0
								 (FTIMES (FPLUS (FQUOTIENT
										  (FPLUS 
										 DegreesOfFreedom 6.0)
										  (FTIMES 
										 DegreesOfFreedom E))
										(FTIMES -.089 D)
										-.8220001)
									 DegreesOfFreedomPlus2 3.0))
						      (FQUOTIENT .5 (FPLUS DegreesOfFreedom 4.0)))
					       E)
				       1.0)
				     (FQUOTIENT (FPLUS DegreesOfFreedom 1.0)
						DegreesOfFreedomPlus2))
			     (FQUOTIENT 1.0 E)))
		      else
		       (LET* ((F (QNORMS (FTIMES ModifiedProbability .5)))
			  (G (FTIMES F F))
			  (H (FPLUS (FTIMES (FDIFFERENCE (FTIMES (FDIFFERENCE
								   (FTIMES (FDIFFERENCE (FTIMES
											  .05 D F)
											5.0)
									   F)
								   7.0)
								 F)
							 2.0)
					    F)
				    B
				    (if (FLESSP DegreesOfFreedom .5)
					then (FPLUS C (FTIMES .3 (FDIFFERENCE DegreesOfFreedom 4.5)
							      (FPLUS F .6)))
				      else C)))
			  (I
			    (FTIMES
			      (FPLUS
				(FQUOTIENT
				  (FDIFFERENCE
				    (FDIFFERENCE
				      (FQUOTIENT (FPLUS (FTIMES (FPLUS (FTIMES (FPLUS (FTIMES .4 G)
										      6.3)
									       G)
								       36.0)
								G)
							94.5)
						 H)
				      G)
				    3.0)
				  B)
				1.0)
			      F))
			  (J (FTIMES A I I)))
			 (if (LEQ J .002)
			     then (FPLUS (FTIMES .5 J J)
					 J)
			   else (FDIFFERENCE (ANTILOG J)
					     1.0]
		 (SQRT (FTIMES DegreesOfFreedom TemporaryResult]
	 (if (FLESSP Probability .5)
	     then (FMINUS FinalResult)
	   else FinalResult])

(QUNIF
  [LAMBDA (Probability BoundLow BoundHigh)                   (* enk "13-Feb-86 17:46")
    (SETQ Probability (FLOAT Probability))
    (SETQ BoundLow (if (NULL BoundLow)
		       then 0.0
		     else (FLOAT BoundLow)))
    (SETQ BoundHigh (if (NULL BoundHigh)
			then 1.0
		      else (FLOAT BoundHigh)))
    (if (OR (FLESSP Probability 0.0)
	    (FGREATERP Probability 1.0))
	then (ERROR "ERROR in function QUNIF - Probability must lie between 0 and 1.")
      elseif (LEQ BoundHigh BoundLow)
	then (ERROR "ERROR in function QUNIF - No effective calculation range.")
      else (FPLUS (FTIMES Probability (FDIFFERENCE BoundHigh BoundLow))
		  BoundLow])
)
(PUTPROPS QUANTFNCTS COPYRIGHT ("Massachusetts Institute of Technology" 1986))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (436 24012 (QBETA 446 . 6354) (QCAUC 6356 . 7010) (QCHIS 7012 . 7754) (QEXPT 7756 . 8357
) (QFDIS 8359 . 9502) (QGAMM 9504 . 15989) (QLNORM 15991 . 16724) (QLOGI 16726 . 17486) (QNORM 17488
 . 18205) (QNORMS 18207 . 19368) (QTDIS 19370 . 23228) (QUNIF 23230 . 24010)))))
STOP