Last active
January 4, 2023 22:07
-
-
Save hodzanassredin/fcc527a20a9baa2957d3f5dcbbf474bc to your computer and use it in GitHub Desktop.
Complex number in component pascal
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
MODULE QuantumComplex; | |
IMPORT Log, Math; | |
TYPE | |
Complex = RECORD | |
r,i:REAL | |
END; | |
PROCEDURE (VAR c: Complex) Init*(r,i:REAL), NEW; | |
BEGIN | |
c.r := r; | |
c.i := i; | |
END Init; | |
PROCEDURE (IN c: Complex) Log*(), NEW; | |
BEGIN | |
Log.Real(c.r);Log.Real(c.i); | |
END Log; | |
PROCEDURE Add*(a,b: Complex;OUT c: Complex); | |
BEGIN | |
c.r := a.r + b.r; | |
c.i := a.i + b.i; | |
END Add; | |
PROCEDURE Sub*(a,b: Complex;OUT c: Complex); | |
BEGIN | |
c.r := a.r - b.r; | |
c.i := a.i - b.i; | |
END Sub; | |
PROCEDURE MulReal(a: Complex; b: REAL; OUT c: Complex); | |
BEGIN | |
c.r := a.r * b; | |
c.i := a.i * b; | |
END MulReal; | |
PROCEDURE Mul*(a,b: Complex;OUT c: Complex); | |
BEGIN | |
c.r := a.r * b.r - a.i * b.i; | |
c.i := a.r * b.i + a.i * b.r; | |
END Mul; | |
PROCEDURE (IN c: Complex) Phase*() :REAL, NEW ; | |
BEGIN | |
RETURN Math.ArcTan2(c.i,c.r); | |
END Phase; | |
PROCEDURE (IN c: Complex) Abs*() :REAL, NEW ; | |
BEGIN | |
RETURN Math.Sqrt(Math.IntPower(c.r,2)+Math.IntPower(c.i,2)); | |
END Abs; | |
PROCEDURE Do*; | |
VAR | |
a,b,c: Complex; | |
BEGIN | |
Log.String("Init a");a.Init(1,2);a.Log();Log.Ln; | |
Log.String("Init b");b.Init(2,2);b.Log();Log.Ln; | |
Log.String("Init c");c.Init(0,0);c.Log();Log.Ln; | |
Log.String("Add");Add(a,b,c);c.Log();Log.Ln; | |
Log.String("Sub");Sub(a,b,c);c.Log();Log.Ln; | |
Log.String("MulReal");MulReal(a, 2.5, c);c.Log();Log.Ln; | |
Log.String("Mul");Mul(a,b,c);c.Log();Log.Ln; | |
Log.String("Phase");Log.Real(c.Phase());Log.Ln; | |
Log.String("Mod");Log.Real(c.Abs());Log.Ln; | |
END Do; | |
END QuantumComplex. | |
QuantumComplex.Do |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment