と物理の数式通りに記述することが可能になる。 複素数やベクトルの演算が自然に行えるようにあらゆる演算子を定義すると 大変便利である。しかしこれには、実行効率の大幅な低下という物理計算に とっては致命的な罠が潜んでいる。 この罠をある程度克服した複素数、ベクトルの定義付きヘッダーファイルを 本書では提供する。これらを利用するには単に #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 )
関数
ただし外積は2次元では本来定義されない演算であるが、 Vector2 % Vector2 では外積の結果のベクトルの z 成分を 返し、 Vector2 % double では double を z 軸に平行で z 成分がそれであるベクトルとして外積を計算して返す。// return absolute value double abs( Vector2& ) // return square of absolute value double abs2( Vector2& )