HPP modules/valuecomplex.hpp CPP modules/valuecomplex.cpp TEX modules/valuecomplex.tex MODULE complex modules/valuecomplex.hlp TYPES COMPLEX valuecomplex END BINARYFUNCTIONS complex COMPLEX * * valuecomplex(a,b) add COMPLEX COMPLEX COMPLEX (a+b) add COMPLEX COMPLEX * (a+valuecomplex(vb)) add COMPLEX * COMPLEX (valuecomplex(va)+b) sub COMPLEX COMPLEX COMPLEX (a-b) sub COMPLEX * COMPLEX (valuecomplex(va)-b) sub COMPLEX COMPLEX * (a-valuecomplex(vb)) mul COMPLEX COMPLEX COMPLEX (a*b) mul COMPLEX * COMPLEX (valuecomplex(va)*b) mul COMPLEX COMPLEX * (a*valuecomplex(vb)) div COMPLEX COMPLEX COMPLEX (a/b) div COMPLEX * COMPLEX (valuecomplex(va)/b) div COMPLEX COMPLEX * (a/valuecomplex(vb)) cell VALUE COMPLEX INTEGER b==1?a.real():(b==2?a.imag():value()) eq INTEGER COMPLEX COMPLEX (a==b) eq INTEGER * COMPLEX (valuecomplex(va)==b) eq INTEGER COMPLEX * (a==valuecomplex(vb)) neq INTEGER COMPLEX COMPLEX (a!=b) neq INTEGER * COMPLEX (valuecomplex(va)!=b) neq INTEGER COMPLEX * (a!=valuecomplex(vb)) pow COMPLEX COMPLEX COMPLEX (pow(a,b)) pow COMPLEX * COMPLEX (pow(valuecomplex(va),b)) pow COMPLEX COMPLEX * (pow(a,valuecomplex(vb))) pow VALUE DOUBLE DOUBLE (b==.5?sqrt(value(a)):(a<0&&b!=int(b))?value(pow(valuecomplex(va),valuecomplex(vb))):value(pow(a,b))) pow VALUE INTEGER DOUBLE (b==.5?sqrt(value(a)):(a<0&&b!=int(b))?value(pow(valuecomplex(va),valuecomplex(vb))):value(pow(a,b))) END UNARYFUNCTIONS re VALUE COMPLEX a.real() im VALUE COMPLEX a.imag() re MATRIX MATRIX a.foreach(re) im MATRIX MATRIX a.foreach(im) neg COMPLEX COMPLEX (-a) transpose COMPLEX COMPLEX (valuecomplex(a.real(),-a.imag())) conjugate COMPLEX COMPLEX (valuecomplex(a.real(),-a.imag())) conjugate MATRIX MATRIX conjugate_matrix(a) output STRING COMPLEX output(a) abs VALUE COMPLEX (abs(a)) abs MATRIX MATRIX a.foreach(abs) arg VALUE COMPLEX (arg(a)) arg MATRIX MATRIX a.foreach(arg) exp COMPLEX COMPLEX (exp(a)) log COMPLEX COMPLEX (log(a)) sqr COMPLEX COMPLEX (sqr(a)) sqrt COMPLEX COMPLEX (sqrt(a)) sqrt VALUE DOUBLE (a>=0?(sqrt(a)==int(sqrt(a))?value(int(sqrt(a))):value(sqrt(a))):(sqrt(-a)==int(sqrt(-a))?value(valuecomplex(0,1)*int(sqrt(-a))):value(valuecomplex(0,1)*sqrt(-a)))) sqrt VALUE INTEGER (a>=0?(sqrt(a)==int(sqrt(a))?value(int(sqrt(a))):value(sqrt(a))):(sqrt(-a)==int(sqrt(-a))?value(valuecomplex(0,1)*int(sqrt(-a))):value(valuecomplex(0,1)*sqrt(-a)))) sin COMPLEX COMPLEX (sin(a)) cos COMPLEX COMPLEX (cos(a)) tan COMPLEX COMPLEX (tan(a)) cot COMPLEX COMPLEX (cot(a)) sinh COMPLEX COMPLEX (sinh(a)) cosh COMPLEX COMPLEX (cosh(a)) tanh COMPLEX COMPLEX (tanh(a)) coth COMPLEX COMPLEX (coth(a)) asin COMPLEX COMPLEX (asin(a)) acos COMPLEX COMPLEX (acos(a)) atan COMPLEX COMPLEX (atan(a)) acot COMPLEX COMPLEX (acot(a)) asinh COMPLEX COMPLEX (asinh(a)) acosh COMPLEX COMPLEX (acosh(a)) atanh COMPLEX COMPLEX (atanh(a)) acoth COMPLEX COMPLEX (acoth(a)) END