c_complex.pc
来自「Delphi脚本控件」· PC 代码 · 共 105 行
PC
105 行
structure Complex {
double re, im;
static Complex i = (0.0, 1.0);
// "+"
Complex operator + (Complex x, Complex y) {
Complex result = (x.re + y.re, x.im + y.im);
return result;
}
Complex operator + (Complex x, double y) {
Complex result = (x.re + y, x.im);
return result;
}
Complex operator + (double x, Complex y) {
Complex result = (x + y.re, y.im);
return result;
}
// "-"
Complex operator - (Complex x, Complex y) {
Complex result = (x.re - y.re, x.im - y.im);
return result;
}
Complex operator - (Complex x, double y) {
Complex result = (x.re - y, x.im);
return result;
}
Complex operator - (double x, Complex y) {
Complex result = (x - y.re, - y.im);
return result;
}
// unary "-"
Complex operator - (Complex x) {
Complex result = (-x.re, -x.im);
return result;
}
// "*"
Complex operator * (Complex x, Complex y) {
Complex result = (x.re * y.re - x.im * y.im, x.re * y.im + y.re * x.im);
return result;
}
Complex operator * (Complex x, double y) {
Complex result = (x.re * y, x.im * y);
return result;
}
Complex operator * (double x, Complex y) {
Complex result = (y.re * x, y.im * x);
return result;
}
// "/"
Complex operator / (Complex x, Complex y) {
Complex result;
double d;
d = y.re * y.re + y.im * y.im;
result.re = (x.re * y.re + x.im * y.im) / d;
result.im = (x.im * y.re - x.re * y.im) / d;
return result;
}
Complex operator / (Complex x, double y) {
Complex result;
result.re = x.re / y;
result.im = x.im / y;
return result;
}
Complex operator / (double x, Complex y) {
Complex result;
double d;
d = y.re * y.re + y.im * y.im;
result.re = x * y.re / d;
result.im = - x * y.im / d;
return result;
}
// "=="
bool operator == (Complex x, Complex y) {
return (x.re == y.re) && (x.im == y.im);
}
bool operator == (Complex x, double y) {
return (x.re == y) && (x.im == 0.0);
}
bool operator == (double x, Complex y) {
return (x == y.re) && (0.0 == y.im);
}
// "!="
bool operator != (Complex x, Complex y) {
return (x.re != y.re) || (x.im != y.im);
}
bool operator != (Complex x, double y) {
return (x.re != y) || (x.im != 0.0);
}
bool operator != (double x, Complex y) {
return (x != y.re) || (0.0 != y.im);
}
}
Complex x, y, z;
println Complex.i.re;
x.re = 16.3;
x.im = 7.5;
y.re = 106.7;
y.im = 13.4;
z = x + y;
println z.re;
println z.im;
println x == y;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?