home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1989-01-22 | 5.2 KB | 105 lines |
- 10 PRINT CHR$(26): PRINT "YZHT-S BY A. KATZ, TSC V1.2 2/17/86
- 20 REM COMPLEX ARITHMATIC SUBROUTEENS
- 30 DIM SR(2,2), SX(2,2), SM(2,2), SA(2,2), R(2,2), X(2,2)
- 40 DIM M(2,2), A(2,2): PI=4*ATN(1): DG=180/PI: Z0=50
- 50 DEF FNMR(AR,AX,BR,BX)=AR*BR-AX*BX
- 60 DEF FNMX(AR,AX,BR,BX)=AR*BX+AX*BR
- 70 DEF FNDR(AR,AX,BR,BX)=(AR*BR+AX*BX)/(BR^2+BX^2)
- 80 DEF FNDX(AR,AX,BR,BX)=(AX*BR-AR*BX)/(BR^2+BX^2)
- 90 DEF FNMG(AR,AX)=SQR(AR^2+AX^2)
- 100 DEF FNAG(AR,AX)=DG*(ATN(AX/AR)-(SGN(AR)-1)*PI/2)
- 120 DEF FNR(MG,AG)=MG*COS(AG/DG)
- 130 DEF FNX(MG,AG)=MG*SIN(AG/DG)
- 140 REM PARAMERER CONVERSION PROGRAM
- 150 PRINT: PRINT "PROGRAM FOR CALCULATING S FROM T, Z, Y, AND H PARAMETERS"
- 160 PRINT: INPUT "CALCULATE S FROM (T, Z, Y OR H)"; A$
- 170 IF A$="END" THEN END
- 180 PRINT: IF A$="Z" OR A$="Y" OR A$="H" OR A$="T" THEN 190 ELSE 160
- 190 PRINT "ANGLES IN DEGREES": PRINT
- 200 INPUT "VALUES IN 'POL' OR 'RECT' OR 'FILE' FORM"; Q$: PRINT
- 210 IF Q$="POL" THEN 240 ELSE IF Q$="RECT" THEN 300 ELSE IF Q$="FILE" THEN 220 ELSE 200
- 220 PRINT: INPUT "PARAMETER FILE NAME"; F$: F$=F$+"."+A$
- 230 OPEN "I",#1,F$: FOR I=1 TO 2: FOR J=1 TO 2: INPUT#1,R(I,J),X(I,J),M(I,J),A(I,J): NEXT J: NEXT I: CLOSE#1: GOTO 360
- 240 FOR I=1 TO 2: FOR J=1 TO 2
- 250 PRINT "MAG OF "; A$; "("; I; ","; J; ")=";: INPUT M(I,J)
- 260 PRINT "ANG OF "; A$; "("; I; ","; J; ")=";: INPUT A(I,J)
- 270 R(I,J)=FNR(M(I,J),A(I,J)): PRINT "REAL "; A$; "("; I; ","; J; ")="; R(I,J)
- 280 X(I,J)=FNX(M(I,J),A(I,J)): PRINT "IMAG. "; A$; "("; I; ","; J; ")="; X(I,J)
- 290 PRINT: NEXT: NEXT: GOTO 360
- 300 FOR I=1 TO 2: FOR J=1 TO 2
- 310 PRINT "REAL OF "; A$; "("; I; ","; J; ")=";: INPUT R(I,J)
- 320 PRINT "IMG OF "; A$; "("; I; ","; J; ")=";: INPUT X(I,J)
- 330 M(I,J)=FNMG(R(I,J),X(I,J)): PRINT "MAG "; A$; "("; I; ","; J; ")="; M(I,J)
- 340 A(I,J)=FNAG(R(I,J),X(I,J)): PRINT "ANGLE "; A$; "("; I; ","; J; ")="; A(I,J)
- 350 PRINT: NEXT: NEXT
- 360 IF A$="T" THEN 840 ELSE IF A$="H" THEN 390 ELSE IF A$="Y" THEN SF=Z0 ELSE SF=1/Z0
- 370 FOR I=1 TO 2: FOR J=1 TO 2: R(I,J)=SF*R(I,J): X(I,J)=SF*X(I,J)
- 380 NEXT: NEXT: GOTO 400
- 390 R(1,1)=R(1,1)/Z0: R(2,2)=Z0*R(2,2): X(1,1)=X(1,1)/Z0: X(2,2)=X(2,2)*Z0
- 400 IF A$="Z" THEN 420 ELSE IF A$="Y" THEN 560 ELSE IF A$="H" THEN 700 ELSE 160
- 410 REM Z PARAMETER CALC
- 420 NR=FNMR((-1+R(1,1)),X(1,1),(1+R(2,2)),X(2,2))-FNMR(R(1,2),X(1,2),R(2,1),X(2,1))
- 430 NX=FNMX((-1+R(1,1)),X(1,1),(1+R(2,2)),X(2,2))-FNMX(R(1,2),X(1,2),R(2,1),X(2,1))
- 440 DR=FNMR((1+R(1,1)),X(1,1),(1+R(2,2)),X(2,2))-FNMR(R(1,2),X(1,2),R(2,1),X(2,1))
- 450 DX=FNMX((1+R(1,1)),X(1,1),(1+R(2,2)),X(2,2))-FNMX(R(1,2),X(1,2),R(2,1),X(2,1))
- 460 SR(1,1)=FNDR(NR,NX,DR,DX): SX(1,1)=FNDX(NR,NX,DR,DX)
- 470 NR=2*R(1,2): NX=2*X(1,2)
- 480 SR(1,2)=FNDR(NR,NX,DR,DX): SX(1,2)=FNDX(NR,NX,DR,DX)
- 490 NR=2*R(2,1): NX=2*X(2,1)
- 500 SR(2,1)=FNDR(NR,NX,DR,DX): SX(2,1)=FNDX(NR,NX,DR,DX)
- 510 NR=FNMR((1+R(1,1)),X(1,1),(-1+R(2,2)),X(2,2))-FNMR(R(1,2),X(1,2),R(2,1),X(2,1))
- 520 NX=FNMX((1+R(1,1)),X(1,1),(-1+R(2,2)),X(2,2))-FNMX(R(1,2),X(1,2),R(2,1),X(2,1))
- 530 SR(2,2)=FNDR(NR,NX,DR,DX): SX(2,2)=FNDX(NR,NX,DR,DX)
- 540 GOSUB 960: GOTO 160
- 550 REM Y PARAMETER CALC
- 560 NR=FNMR((1+R(2,2)),X(2,2),(1-R(1,1)),-X(1,1))+FNMR(R(1,2),X(1,2),R(2,1),X(2,1))
- 570 NX=FNMX((1+R(2,2)),X(2,2),(1-R(1,1)),-X(1,1))+FNMX(R(1,2),X(1,2),R(2,1),X(2,1))
- 580 DR=FNMR((1+R(1,1)),X(1,1),(1+R(2,2)),X(2,2))-FNMR(R(1,2),X(1,2),R(2,1),X(2,1))
- 590 DX=FNMX((1+R(1,1)),X(1,1),(1+R(2,2)),X(2,2))-FNMX(R(1,2),X(1,2),R(2,1),X(2,1))
- 600 SR(1,1)=FNDR(NR,NX,DR,DX): SX(1,1)=FNDX(NR,NX,DR,DX)
- 610 NR=-2*R(1,2): NX=-2*X(1,2)
- 620 SR(1,2)=FNDR(NR,NX,DR,DX): SX(1,2)=FNDX(NR,NX,DR,DX)
- 630 NR=-2*R(2,1): NX=-2*X(2,1)
- 640 SR(2,1)=FNDR(NR,NX,DR,DX): SX(2,1)=FNDX(NR,NX,DR,DX)
- 650 NR=FNMR((1+R(1,1)),X(1,1),(1-R(2,2)),-X(2,2))+FNMR(R(1,2),X(1,2),R(2,1),X(2,1))
- 660 NX=FNMX((1+R(1,1)),X(1,1),(1-R(2,2)),-X(2,2))+FNMX(R(1,2),X(1,2),R(2,1),X(2,1))
- 670 SR(2,2)=FNDR(NR,NX,DR,DX): SX(2,2)=FNDX(NR,NX,DR,DX)
- 680 GOSUB 960: GOTO 160
- 690 REM H PARAMETER CALC
- 700 NR=FNMR((-1+R(1,1)),X(1,1),(1+R(2,2)),X(2,2))-FNMR(R(1,2),X(1,2),R(2,1),X(2,1))
- 710 NX=FNMX((-1+R(1,1)),X(1,1),(1+R(2,2)),X(2,2))-FNMX(R(1,2),X(1,2),R(2,1),X(2,1))
- 720 DR=FNMR((1+R(1,1)),X(1,1),(1+R(2,2)),X(2,2))-FNMR(R(1,2),X(1,2),R(2,1),X(2,1))
- 730 DX=FNMX((1+R(1,1)),X(1,1),(1+R(2,2)),X(2,2))-FNMX(R(1,2),X(1,2),R(2,1),X(2,1))
- 740 SR(1,1)=FNDR(NR,NX,DR,DX): SX(1,1)=FNDX(NR,NX,DR,DX)
- 750 NR=2*R(1,2): NX=2*X(1,2)
- 760 SR(1,2)=FNDR(NR,NX,DR,DX): SX(1,2)=FNDX(NR,NX,DR,DX)
- 770 NR=-2*R(2,1): NX=-2*X(2,1)
- 780 SR(2,1)=FNDR(NR,NX,DR,DX): SX(2,1)=FNDX(NR,NX,DR,DX)
- 790 NR=FNMR((1-R(2,2)),-X(2,2),(1+R(1,1)),X(1,1))+FNMR(R(1,2),X(1,2),R(2,1),X(2,1))
- 800 NX=FNMX((1-R(2,2)),-X(2,2),(1+R(1,1)),X(1,1))+FNMX(R(1,2),X(1,2),R(2,1),X(2,1))
- 810 SR(2,2)=FNDR(NR,NX,DR,DX): SX(2,2)=FNDX(NR,NX,DR,DX)
- 820 GOSUB 960: GOTO 160
- 830 REM T PARAMETER CALC
- 840 SR(1,1)=FNDR(R(1,2),X(1,2),R(2,2),X(2,2))
- 850 SX(1,1)=FNDX(R(1,2),X(1,2),R(2,2),X(2,2))
- 860 NR=FNMR(R(1,1),X(1,1),R(2,2),X(2,2))-FNMR(R(1,2),X(1,2),R(2,1),X(2,1))
- 870 NX=FNMX(R(1,1),X(1,1),R(2,2),X(2,2))-FNMX(R(1,2),X(1,2),R(2,1),X(2,1))
- 880 SR(1,2)=FNDR(NR,NX,R(2,2),X(2,2))
- 890 SX(1,2)=FNDX(NR,NX,R(2,2),X(2,2))
- 900 SR(2,1)=FNDR(1,0,R(2,2),X(2,2))
- 910 SX(2,1)=FNDX(1,0,R(2,2),X(2,2))
- 920 SR(2,2)=-FNDR(R(2,1),X(2,1),R(2,2),X(2,2))
- 930 SX(2,2)=-FNDX(R(2,1),X(2,1),R(2,2),X(2,2))
- 940 GOSUB 960: GOTO 160
- 950 REM OUTPUT SUBROUTEEN
- 960 FOR I=1 TO 2: FOR J=1 TO 2: PRINT
- 970 PRINT "REAL S("; I; ","; J; ")="; SR(I,J)
- 980 PRINT "IMG S("; I; ","; J; ")="; SX(I,J)
- 990 SM(I,J)=FNMG(SR(I,J),SX(I,J)): SA(I,J)=FNAG(SR(I,J),SX(I,J))
- 1000 PRINT "MAG S("; I; ","; J; ")="; SM(I,J)
- 1010 PRINT "ANG S("; I; ","; J; ")="; SA(I,J): NEXT: NEXT
- 1020 PRINT: INPUT "WANT TO SAVE FILE (Y OR N)"; Q$
- 1030 IF Q$="N" THEN RETURN ELSE IF Q$="END" THEN END
- 1040 INPUT "FILE NAME"; F$: F$=F$+".S": OPEN "O",#1,F$
- 1050 FOR I=1 TO 2: FOR J=1 TO 2: PRINT#1,SR(I,J),SX(I,J),SM(I,J),SA(I,J): NEXT J: NEXT I: CLOSE #1: RETURN
-