(FILECREATED " 6-Jun-86 17:16:12" {QV}<PEDERSEN>LISP>QUANTFNCTS.;1 25260  

      changes to:  (FNS QTDIS QGAMM QNORMS QBETA)

      previous date: "24-Feb-86 17:43:16" {QV}<PEDERSEN>LISP>DINDEQUANTFNS.;1)


(* 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)                                  (* jop: " 6-Jun-86 15:34")
    (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 \IEEE.SHORT.MACHEPS))
		    (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)                                  (* jop: " 6-Jun-86 15:35")
    (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 (MAKE-ARRAY 19 (QUOTE :ELEMENT-TYPE)
									    (QUOTE FLOAT)
									    (QUOTE 
										:INITIAL-CONTENTS)
									    (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)
								      \IEEE.SHORT.LEAST.NORMAL))
				      (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)                                      (* jop: " 6-Jun-86 15:24")
    (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 (MAKE-ARRAY 3 (QUOTE :ELEMENT-TYPE)
							 (QUOTE FLOAT)
							 (QUOTE :INITIAL-CONTENTS)
							 (QUOTE (.010328 .802853 2.515517]
		[Coefficients2 (CONSTANT (MAKE-ARRAY 4 (QUOTE :ELEMENT-TYPE)
							 (QUOTE FLOAT)
							 (QUOTE :INITIAL-CONTENTS)
							 (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 2)
							     (HORNER Eta Coefficients2 3]
	       (if WhichWay
		   then FinalResult
		 else (FMINUS FinalResult])

(QTDIS
  [LAMBDA (Probability DegreesOfFreedom)                     (* jop: " 6-Jun-86 15:57")
    (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))
			     \IEEE.SHORT.LEAST.NORMAL)
		    then (SQRT (FDIFFERENCE (FQUOTIENT 2.0 (FTIMES ModifiedProbability
									     (FDIFFERENCE 2.0 
									      ModifiedProbability)))
						  2.0))
		  elseif (LEQ (ABS (FDIFFERENCE DegreesOfFreedom 1.0))
				  \IEEE.SHORT.LEAST.NORMAL)
		    then (LET ((A (FTIMES ModifiedProbability 1.570796)))
			        (FQUOTIENT (COS A T)
					     (SIN A 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 (453 25159 (QBETA 463 . 6657) (QCAUC 6659 . 7313) (QCHIS 7315 . 8057) (QEXPT 8059 . 8660
) (QFDIS 8662 . 9805) (QGAMM 9807 . 16821) (QLNORM 16823 . 17556) (QLOGI 17558 . 18318) (QNORM 18320
 . 19037) (QNORMS 19039 . 20160) (QTDIS 20162 . 24375) (QUNIF 24377 . 25157)))))
STOP