home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
OL.LZH
/
PROCS.LZH
/
COMPLEX.ICN
< prev
next >
Wrap
Text File
|
1991-07-13
|
2KB
|
71 lines
############################################################################
#
# Name: complex.icn
#
# Title: Perform complex arithmetic
#
# Author: Ralph E. Griswold
#
# Date: June 10, 1988
#
############################################################################
#
# The following procedures perform operations on complex numbers.
#
# complex(r,i) create complex number with real part r and
# imaginary part i
#
# cpxadd(x1,x2) add complex numbers x1 and x2
#
# cpxdiv(x1,x2) divide complex number x1 by complex number x2
#
# cpxmul(x1,x2) multiply complex number x1 by complex number
# x2
#
# cpxsub(x1,x2) subtract complex number x2 from complex
# number x1
#
# cpxstr(x) convert complex number x to string represen-
# tation
#
# strcpx(s) convert string representation s of complex
# number to complex number
#
############################################################################
record complex(rpart,ipart)
procedure strcpx(s)
local i
i := upto('+-',s,2)
return complex(+s[1:i],+s[i:-1])
end
procedure cpxstr(x)
if x.ipart < 0 then return x.rpart || x.ipart || "i"
else return x.rpart || "+" || x.ipart || "i"
end
procedure cpxadd(x1,x2)
return complex(x1.rpart + x2.rpart,x1.ipart + x2.ipart)
end
procedure cpxsub(x1,x2)
return complex(x1.rpart - x2.rpart,x1.ipart - x2.ipart)
end
procedure cpxmul(x1,x2)
return complex(x1.rpart * x2.rpart - x1.ipart * x2.ipart,
x1.rpart * x2.ipart + x1.ipart * x2.rpart)
end
procedure cpxdiv(x1,x2)
local denom
denom := x2.rpart ^ 2 + x2.ipart ^ 2
return complex((x1.rpart * x2.rpart + x1.ipart * x2.ipart) /
denom,(x1.ipart * x2.rpart - x1.rpart * x2.ipart) /
denom)
end