Anonymous user
Arithmetic/Complex: Difference between revisions
→{{header|Action!}}
(Added solution for Action!) |
|||
Line 60:
<lang Action!>INCLUDE "D2:REAL.ACT" ;from the Action! Tool Kit
DEFINE R_="+0"
DEFINE I_="+6"
TYPE Complex=[CARD cr1,cr2,cr3,ci1,ci2,ci3]
BYTE FUNC Positive(REAL POINTER x)
Line 72 ⟶ 74:
PROC PrintComplex(Complex POINTER x)
PrintR(x
IF Positive(x
Put('+)
FI
PrintR(x
RETURN
Line 95 ⟶ 97:
PROC ComplexAdd(Complex POINTER x,y,res)
RealAdd(x
RealAdd(x
RETURN
PROC ComplexSub(Complex POINTER x,y,res)
RealSub(x
RealSub(x
RETURN
Line 107 ⟶ 109:
REAL tmp1,tmp2
RealMult(x
RealMult(x
RealSub(tmp1,tmp2,res
RealMult(x
RealMult(x
RealAdd(tmp1,tmp2,res
RETURN
Line 119 ⟶ 121:
REAL tmp1,tmp2,tmp3,tmp4
RealMult(x
RealMult(x
RealAdd(tmp1,tmp2,tmp3) ;tmp3=x.r*y.r+x.i*y.i
RealMult(y
RealMult(y
RealAdd(tmp1,tmp2,tmp4) ;tmp4=y.r^2+y.i^2
RealDiv(tmp3,tmp4,res
RealMult(x
RealMult(x
RealSub(tmp1,tmp2,tmp3) ;tmp3=x.i*y.r-x.r*y.i
RealDiv(tmp3,tmp4,res
RETURN
Line 136 ⟶ 138:
REAL neg
ValR("-1",neg) ;neg=-1
RealMult(x
RealMult(x
RETURN
Line 144 ⟶ 146:
REAL tmp1,tmp2,tmp3
RealMult(x
RealMult(x
RealAdd(tmp1,tmp2,tmp3) ;tmp3=x.r^2+x.i^2
RealDiv(x
ValR("-1",tmp1) ;tmp1=-1
RealMult(x
RealDiv(tmp2,tmp3,res
RETURN
Line 157 ⟶ 159:
REAL neg
ValR("-1",neg) ;neg=-1
RealAssign(x
RealMult(x
RETURN
PROC Main()
Complex x,y,res
▲ IntToReal(5,x.r) IntToReal(3,x.i)
▲ IntToReal(4,y.r) ValR("-3",y.i)
Put(125) PutE() ;clear screen
|