Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
135
Task/Arithmetic-Complex/Action-/arithmetic-complex.action
Normal file
135
Task/Arithmetic-Complex/Action-/arithmetic-complex.action
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
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)
|
||||
BYTE ARRAY tmp
|
||||
|
||||
tmp=x
|
||||
IF (tmp(0)&$80)=$00 THEN
|
||||
RETURN (1)
|
||||
FI
|
||||
RETURN (0)
|
||||
|
||||
PROC PrintComplex(Complex POINTER x)
|
||||
PrintR(x R_)
|
||||
IF Positive(x I_) THEN
|
||||
Put('+)
|
||||
FI
|
||||
PrintR(x I_) Put('i)
|
||||
RETURN
|
||||
|
||||
PROC PrintComplexXYZ(Complex POINTER x,y,z CHAR ARRAY s)
|
||||
Print("(") PrintComplex(x)
|
||||
Print(") ") Print(s)
|
||||
Print(" (") PrintComplex(y)
|
||||
Print(") = ") PrintComplex(z)
|
||||
PutE()
|
||||
RETURN
|
||||
|
||||
PROC PrintComplexXY(Complex POINTER x,y CHAR ARRAY s)
|
||||
Print(s)
|
||||
Print("(") PrintComplex(x)
|
||||
Print(") = ") PrintComplex(y)
|
||||
PutE()
|
||||
RETURN
|
||||
|
||||
PROC ComplexAdd(Complex POINTER x,y,res)
|
||||
RealAdd(x R_,y R_,res R_) ;res.r=x.r+y.r
|
||||
RealAdd(x I_,y I_,res I_) ;res.i=x.i+y.i
|
||||
RETURN
|
||||
|
||||
PROC ComplexSub(Complex POINTER x,y,res)
|
||||
RealSub(x R_,y R_,res R_) ;res.r=x.r-y.r
|
||||
RealSub(x I_,y I_,res I_) ;res.i=x.i-y.i
|
||||
RETURN
|
||||
|
||||
PROC ComplexMult(Complex POINTER x,y,res)
|
||||
REAL tmp1,tmp2
|
||||
|
||||
RealMult(x R_,y R_,tmp1) ;tmp1=x.r*y.r
|
||||
RealMult(x I_,y I_,tmp2) ;tmp2=x.i*y.i
|
||||
RealSub(tmp1,tmp2,res R_) ;res.r=x.r*y.r-x.i*y.i
|
||||
|
||||
RealMult(x R_,y I_,tmp1) ;tmp1=x.r*y.i
|
||||
RealMult(x I_,y R_,tmp2) ;tmp2=x.i*y.r
|
||||
RealAdd(tmp1,tmp2,res I_) ;res.i=x.r*y.i+x.i*y.r
|
||||
RETURN
|
||||
|
||||
PROC ComplexDiv(Complex POINTER x,y,res)
|
||||
REAL tmp1,tmp2,tmp3,tmp4
|
||||
|
||||
RealMult(x R_,y R_,tmp1) ;tmp1=x.r*y.r
|
||||
RealMult(x I_,y I_,tmp2) ;tmp2=x.i*y.i
|
||||
RealAdd(tmp1,tmp2,tmp3) ;tmp3=x.r*y.r+x.i*y.i
|
||||
RealMult(y R_,y R_,tmp1) ;tmp1=y.r^2
|
||||
RealMult(y I_,y I_,tmp2) ;tmp2=y.i^2
|
||||
RealAdd(tmp1,tmp2,tmp4) ;tmp4=y.r^2+y.i^2
|
||||
RealDiv(tmp3,tmp4,res R_) ;res.r=(x.r*y.r+x.i*y.i)/(y.r^2+y.i^2)
|
||||
|
||||
RealMult(x I_,y R_,tmp1) ;tmp1=x.i*y.r
|
||||
RealMult(x R_,y I_,tmp2) ;tmp2=x.r*y.i
|
||||
RealSub(tmp1,tmp2,tmp3) ;tmp3=x.i*y.r-x.r*y.i
|
||||
RealDiv(tmp3,tmp4,res I_) ;res.i=(x.i*y.r-x.r*y.i)/(y.r^2+y.i^2)
|
||||
RETURN
|
||||
|
||||
PROC ComplexNeg(Complex POINTER x,res)
|
||||
REAL neg
|
||||
|
||||
ValR("-1",neg) ;neg=-1
|
||||
RealMult(x R_,neg,res R_) ;res.r=-x.r
|
||||
RealMult(x I_,neg,res I_) ;res.r=-x.r
|
||||
RETURN
|
||||
|
||||
PROC ComplexInv(Complex POINTER x,res)
|
||||
REAL tmp1,tmp2,tmp3
|
||||
|
||||
RealMult(x R_,x R_,tmp1) ;tmp1=x.r^2
|
||||
RealMult(x I_,x I_,tmp2) ;tmp2=x.i^2
|
||||
RealAdd(tmp1,tmp2,tmp3) ;tmp3=x.r^2+x.i^2
|
||||
RealDiv(x R_,tmp3,res R_) ;res.r=x.r/(x.r^2+x.i^2)
|
||||
|
||||
ValR("-1",tmp1) ;tmp1=-1
|
||||
RealMult(x I_,tmp1,tmp2) ;tmp2=-x.i
|
||||
RealDiv(tmp2,tmp3,res I_) ;res.i=-x.i/(x.r^2+x.i^2)
|
||||
RETURN
|
||||
|
||||
PROC ComplexConj(Complex POINTER x,res)
|
||||
REAL neg
|
||||
|
||||
ValR("-1",neg) ;neg=-1
|
||||
RealAssign(x R_,res R_) ;res.r=x.r
|
||||
RealMult(x I_,neg,res I_) ;res.i=-x.i
|
||||
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
|
||||
|
||||
ComplexAdd(x,y,res)
|
||||
PrintComplexXYZ(x,y,res,"+")
|
||||
|
||||
ComplexSub(x,y,res)
|
||||
PrintComplexXYZ(x,y,res,"-")
|
||||
|
||||
ComplexMult(x,y,res)
|
||||
PrintComplexXYZ(x,y,res,"*")
|
||||
|
||||
ComplexDiv(x,y,res)
|
||||
PrintComplexXYZ(x,y,res,"/")
|
||||
|
||||
ComplexNeg(y,res)
|
||||
PrintComplexXY(y,res," -")
|
||||
|
||||
ComplexInv(y,res)
|
||||
PrintComplexXY(y,res," 1 / ")
|
||||
|
||||
ComplexConj(y,res)
|
||||
PrintComplexXY(y,res," conj")
|
||||
RETURN
|
||||
Loading…
Add table
Add a link
Reference in a new issue