と物理の数式通りに記述することが可能になる。 複素数やベクトルの演算が自然に行えるようにあらゆる演算子を定義すると 大変便利である。しかしこれには、実行効率の大幅な低下という物理計算に とっては致命的な罠が潜んでいる。 この罠をある程度克服した複素数、ベクトルの定義付きヘッダーファイルを 本書では提供する。これらを利用するには単に #include "" すれば 良い。コンパイルの際には最適化optionを付けること。 コンパイラによってはwarningが大量に発せられるが無視して構わない。Complex a, b, c; c = a + b;
gcc -o main -O4 main.cc
代入演算子(単純、複合)
Complex = Complex Complex += Complex Complex -= Complex Complex *= double Complex *= Complex Complex /= double Complex /= Complex
算術演算子(単項、2項)
- Complex
+ Complex
Complex + Complex
Complex - Complex
Complex * double
double * Complex
Complex * Complex
Complex / double
double / Complex
Complex / Complex
関数
// return complex conjugate
Complex conj( Complex& )
// return absolute value
double abs( Complex& )
// return square of absolute value
double abs2( Complex& )
// return argument value
double arg( Complex& )
// return complex exponential
Complex exp( Complex& )
代入演算子(単純、複合)
Vector2 = Vector2 Vector2 += Vector2 Vector2 -= Vector2 Vector2 *= double Vector2 /= double
算術演算子(単項、2項)
- Vector2
+ Vector2
Vector2 + Vector2
Vector2 - Vector2
Vector2 * double
Vector2 / double
double * Vector2
Vector2 * Vector2 //内積
Vector2 % Vector2 //外積
Vector2 % double //外積
method
// turn this vector by given angle
Vector2::turn( double )
関数
// return absolute value
double abs( Vector2& )
// return square of absolute value
double abs2( Vector2& )
ただし外積は2次元では本来定義されない演算であるが、
Vector2 % Vector2 では外積の結果のベクトルの z 成分を
返し、 Vector2 % double では double を z 軸に平行で z
成分がそれであるベクトルとして外積を計算して返す。