RosettaCodeData/Task/Arithmetic-Complex/ERRE/arithmetic-complex.erre

49 lines
916 B
Plaintext

PROGRAM COMPLEX_ARITH
TYPE COMPLEX=(REAL#,IMAG#)
DIM X:COMPLEX,Y:COMPLEX,Z:COMPLEX
!
! complex arithmetic routines
!
DIM A:COMPLEX,B:COMPLEX,C:COMPLEX
PROCEDURE ADD(A.,B.->C.)
C.REAL#=A.REAL#+B.REAL#
C.IMAG#=A.IMAG#+B.IMAG#
END PROCEDURE
PROCEDURE INV(A.->B.)
LOCAL DENOM#
DENOM#=A.REAL#^2+A.IMAG#^2
B.REAL#=A.REAL#/DENOM#
B.IMAG#=-A.IMAG#/DENOM#
END PROCEDURE
PROCEDURE MULT(A.,B.->C.)
C.REAL#=A.REAL#*B.REAL#-A.IMAG#*B.IMAG#
C.IMAG#=A.REAL#*B.IMAG#+A.IMAG#*B.REAL#
END PROCEDURE
PROCEDURE NEG(A.->B.)
B.REAL#=-A.REAL#
B.IMAG#=-A.IMAG#
END PROCEDURE
BEGIN
PRINT(CHR$(12);) !CLS
X.REAL#=1
X.IMAG#=1
Y.REAL#=2
Y.IMAG#=2
ADD(X.,Y.->Z.)
PRINT(Z.REAL#;" + ";Z.IMAG#;"i")
MULT(X.,Y.->Z.)
PRINT(Z.REAL#;" + ";Z.IMAG#;"i")
INV(X.->Z.)
PRINT(Z.REAL#;" + ";Z.IMAG#;"i")
NEG(X.->Z.)
PRINT(Z.REAL#;" + ";Z.IMAG#;"i")
END PROGRAM