|
|
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.