8998  REM HP CONTRIBUTED LIBRARY, 2/75
8999  DIM A[16],B[16],C[16],Y$[72],Z$[72],D$[10]
9000  MAT A=CON
9001  D$="0123456789"
9002  GOSUB 9071
9003  MAT B=A
9004  Y$=Z$
9005  GOSUB 9071
9006  MAT C=A
9007  B=ABS(B[1])
9008  C=ABS(C[1])
9009  A1=0
9010  IF B[1]*C[1]<0 THEN 9020
9011  FOR A=2 TO B MAX C
9012  A2=A1+B[A]*(A <= B)+C[A]*(A <= C)
9013  A1=(A2>999)
9014  A[A]=A2-1000*A1
9015  NEXT A
9016  IF  NOT A1 THEN 9018
9017  A[A]=1
9018  A[1]=(A-( NOT A1))*SGN(B[1])
9019  GOTO 9037
9020  A3=1
9021  GOTO SGN(B-C)+2 OF 9027,9022,9028
9022  FOR A=B TO 2 STEP -1
9023  GOTO SGN(B[A]-C[A])+2 OF 9027,9024,9028
9024  NEXT A
9025  A[1]=1
9026  GOTO 9037
9027  A3=-1
9028  FOR A=2 TO B MAX C
9029  A2=A1+(B[A]*(B >= A)-C[A]*(C >= A))*A3
9030  A1=-(A2<0)
9031  A[A]=A2-1000*A1
9032  NEXT A
9033  FOR A=A-1 TO 2 STEP -1
9034  IF A[A]>0 THEN 9036
9035  NEXT A
9036  A[1]=A*A3*SGN(B[1])
9037  Z$=""
9038  A=ABS(A[1])
9039  A1=(A[1]<0)+4*(A-3 MAX 0)+1+(D>0)+D-(A >= 4)*(2+(A[A]<100)+(A[A]<10))
9040  IF A[1] >= 0 THEN 9042
9041  Z$[1,1]="-"
9042  A2=3
9043  IF A >= 4 THEN 9046
9044  Z$[LEN(Z$)+1,LEN(Z$)+1]="0"
9045  GOTO 9047
9046  GOSUB 9060
9047  A1=0
9048  FOR A=A-1 TO 4 STEP -1
9049  GOSUB 9060
9050  NEXT A
9051  IF D=0 THEN 9059
9052  Z$[LEN(Z$)+1,LEN(Z$)+1]="."
9053  A2=D MIN 3
9054  A=3
9055  GOSUB 9060
9056  A2=(D-3) MIN 3
9057  A=2
9058  GOSUB 9060
9059  RETURN 
9060  A3=A[A]*(A <= ABS(A[1]))
9061  A4=INT(A3/100)
9062  A5=INT((A3-100*A4)/10)
9063  A6=A3-100*A4-10*A5
9064  IF A4=0 AND A1 OR A2<1 THEN 9066
9065  Z$[LEN(Z$)+1,LEN(Z$)+1]=D$[A4+1,A4+1]
9066  IF A3<10 AND A1 OR A2<2 THEN 9068
9067  Z$[LEN(Z$)+1,LEN(Z$)+1]=D$[A5+1,A5+1]
9068  IF A2<3 THEN 9070
9069  Z$[LEN(Z$)+1,LEN(Z$)+1]=D$[A6+1,A6+1]
9070  RETURN 
9071  A9=1
9072  A3=A[2]=A[3]=0
9073  A[1]=3
9074  FOR A1=1 TO LEN(Y$)
9075  IF Y$[A1,A1] <> " " THEN 9079
9076  NEXT A1
9077  Y$="0"
9078  GOTO 9074
9079  IF Y$[A1,A1] <> "-" THEN 9083
9080  A9=-1
9081  A1=A1+1
9082  GOTO 9079
9083  IF Y$[A1,A1] <> " " THEN 9086
9084  Y$=Y$[A1]
9085  GOTO 9120
9086  IF A3=.1 THEN 9081
9087  IF Y$[A1,A1]>"5" THEN 9093
9088  IF Y$[A1,A1]>"2" THEN 9091
9089  A2=1
9090  GOTO 9095
9091  A2=4
9092  GOTO 9095
9093  IF Y$[A1,A1]>"8" THEN 9099
9094  A2=7
9095  FOR A2=A2 TO A2+2
9096  IF Y$[A1,A1]=D$[A2,A2] THEN 9104
9097  NEXT A2
9098  GOTO 9100
9099  A2=10
9100  IF Y$[A1,A1]="9" THEN 9104
9101  IF Y$[A1,A1] <> "." THEN 9081
9102  A3=100000.
9103  GOTO 9081
9104  A2=A2-1
9105  IF A3=0 THEN 9111
9106  A4=INT(A3/1000)
9107  A[3]=A[3]+A2*A4
9108  A[2]=A[2]+A2*(A3-1000*A4)
9109  A3=A3/10
9110  GOTO 9081
9111  FOR A4=4 TO A[1]
9112  A5=10*A[A4]+A2
9113  A2=INT(A5/1000)
9114  A[A4]=A5-1000*A2
9115  NEXT A4
9116  IF A2=0 THEN 9081
9117  A[1]=A[1]+1
9118  A[A[1]]=A2
9119  GOTO 9081
9120  IF A[A[1]] THEN 9123
9121  A[1]=A[1]-1
9122  GOTO 9120
9123  A[1]=A[1]*A9
9124  RETURN 
9999  END 
