|
|
1.1 root 1: # COMPLEX(2)
2: #
3: # Complex arithmetic
4: #
5: # Ralph E. Griswold
6: #
7: # Last modified 7/27/83
8: #
9:
10: record complex(rpart,ipart)
11:
12: procedure strcpx(s)
13: i := upto('+-',s,2)
14: return complex(+s[1:i],+s[i:-1])
15: end
16:
17: procedure cpxstr(x)
18: if x.ipart < 0 then return x.rpart || x.ipart || "i"
19: else return x.rpart || "+" || x.ipart || "i"
20: end
21:
22: procedure cpxadd(x1,x2)
23: return complex(x1.rpart + x2.rpart,x1.ipart + x2.ipart)
24: end
25:
26: procedure cpxsub(x1,x2)
27: return complex(x1.rpart - x2.rpart,x1.ipart - x2.ipart)
28: end
29:
30: procedure cpxmul(x1,x2)
31: return complex(x1.rpart * x2.rpart - x1.ipart * x2.ipart,
32: x1.rpart * x2.ipart + x1.ipart * x2.rpart)
33: end
34:
35: procedure cpxdiv(x1,x2)
36: denom := x2.rpart ^ 2 + x2.ipart ^ 2
37: return complex((x1.rpart * x2.rpart + x1.ipart * x2.ipart) /
38: denom,(x1.ipart * x2.rpart - x1.rpart * x2.ipart) /
39: denom)
40: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.