1  REM ****  HP BASIC PROGRAM LIBRARY  ******************************
2  REM
3  REM       GWBULL: SUBJECTIVE PROBABILITY - RANDOM VALUES
4  REM
5  REM       37551 REV A
6  REM
7  REM ****  CONTRIBUTED PROGRAM  ***********************************
9000  REM WIEBULL FITTING PROGRAM
9010  Z=0
9020  S1=S2=.01*ABS(Z[N0]-Z[1])
9030  N1=C1=0
9040  R0=-1.E+10
9050  REM  CHECK FOR REFLECTION
9060  IF ABS(M0-Z[1])>ABS(M0-Z[N0]) THEN 9100
9070  S0=Z[1]-S1
9080  F0=1
9090  GOTO 9150
9100  S0=Z[N0]+S1
9110  F0=-1
9120  FOR I=1 TO N0
9130  P[I]=1-P[I]
9140  NEXT I
9150  FOR I=1 TO N0
9160  Q[I]=P[I]*(1-P[I])
9170  C1=C1+(P[I]^2)/Q[I]
9180  NEXT I
9190  REM  BEGIN ORIGIN ITERATION
9200  M1=M0-S0
9210  FOR I=1 TO N0
9220  V[I]=ABS((Z[I]-S0)/M1)
9230  NEXT I
9240  N1=N1+1
9250  GOSUB 9430
9260  IF Z<1 THEN 9290
9270  PRINT "ORG";N1;N2,S0,S1,S2
9280  PRINT "   ";L0,R1,R0
9290  IF R1<R0 THEN 9370
9300  R0=R1
9310  L4=L0
9320  S0=S0-S1*F0
9330  S1=S1+S2
9340  S2=S1-S2
9350  IF N1<11 THEN 9200
9360  REM END ORIGIN ITERATION
9370  S0=S0+S2*F0
9380  L0=L4
9390  M0=(M0-S0)*F0
9400  F0=F0/M0
9410  RETURN 
9420  REM   BEGIN LAMBDA ESTIMATION
9430  L2=.2
9440  R1=-1.E+10
9450  L0=R2=N2=0
9460  L1=.1
9470  GOTO 9510
9480  L1=.2
9490  R1=C2
9500  REM BEGIN LAMBDA ITERATION
9510  L3=L1+1
9520  C3=0
9530  FOR I=1 TO N0
9540  C2=EXP(L3*LOG(V[I]))*(L1/L3)
9550  C3=C3+((P[I]-1+EXP(-C2))^2)/Q[I]
9560  NEXT I
9570  N2=N2+1
9580  IF Z<2 THEN 9610
9590  PRINT "LAM";N2;L0,L2,L1
9600  PRINT "   ";1-C3/C1,R1
9610  C2=1-C3/C1
9620  IF L1=.1 THEN 9480
9630  IF C2<R1 THEN 9730
9640  R1=C2
9650  IF R2>0 THEN 9700
9660  L0=L2
9670  L1=L1+L2
9680  L2=L1-L2
9690  GOTO 9720
9700  L0=L1
9710  L1=L1+L2
9720  IF N2<25 THEN 9510
9730  IF R2>0 THEN 9810
9740  IF L2=L0 THEN 9760
9750  L2=L2-L0
9760  L2=L0=R2=L2/4
9770  L1=L0+L2/2
9780  R1=-1.E+10
9790  L0=L1
9800  GOTO 9510
9810  RETURN 
9820  REM  END OF ESTIMATION ROUTINE
9830  REM BEGIN RV GEN
9840  R0=RND(R1)
9850  IF R0=0 THEN 9840
9860  IF R0=1 THEN 9840
9870  R0=(-(L0+1)/L0)*LOG(1-R0)
9880  R1=EXP(LOG(R0)/(L0+1))
9890  R2=LOG(L0)+L0*LOG(R1)-(L0/(L0+1))*EXP((L0+1)*LOG(P1))
9900  R2=EXP(R2)
9910  R0=R1/F0+S0
9920  RETURN 
