タグ付けされた質問 「complex」

2
計算科学者が独自のバージョンのstd :: complexを実装する必要があるのはなぜですか?
ような計算科学における良好知らC ++ライブラリの多くの固有、Trilinos、及びdeal.IIは、標準C ++テンプレートヘッダライブラリオブジェクトを使用し、std::complex<>複雑な浮動小数点数を表現します。 ジャックPoulsonのでは答えデフォルトコンストラクタについての質問に、彼は彼が彼の独自の実装を持っていることを指摘std::complexしてエレメンタル「いくつかの理由のために」。それらの理由は何ですか?このアプローチの長所と短所は何ですか?

2
科学計算における複雑な算術演算の危険性
複素内積二つの異なる定義が規則によって決定した:ˉ U Tの VまたはU T ˉ V。BLASで、cdotu、zdotu、およびcdotc、zdotcのルーチンを見つけました。前の2つのルーチンは実際にu T v(偽の内積!)を計算し、最後の2つのルーチンは内積の最初のベクトルを共役させます。また、いずれかの定義によって(共役U又はV)、⟨ U 、V ⟩ = ¯ ⟨ V 、U ⟩⟨ U 、V ⟩⟨u,v⟩\langle u,v\rangleあなたは¯Tvu¯Tv\bar{u}^TvあなたはTv¯uTv¯u^T\bar{v}あなたはTvuTvu^Tvあなたはuuvvv⟨ U 、V ⟩ = ⟨ V 、U ⟩¯¯¯¯¯¯¯¯¯¯¯⟨u,v⟩=⟨v,u⟩¯\langle u,v\rangle=\overline{\langle v,u\rangle}活用して!さらに、コメントで指摘されているように、多値の複雑な関数の主要な値を選択することは、慣習に依存する可能性があります。 私の質問は次のとおりです。この複雑さは科学計算での複雑な算術演算の使用に対して真の危険を引き起こしますか?この問題は、複素数を常に実部と虚部に分割し、実算のみを使用することを提案するdeal.iiの著者によって強調されています。しかし、分割アプローチが便利だとは思いませんでした。たとえば、時間調和マックスウェル方程式のPMLについて考えます。 FreeFem ++およびlibmeshを除くほとんどのオープンソースFEMソフトウェアでは、複素数を使用することの心配が一般的であるようです。ただし、2つの例外についても、複雑な算術演算は実際よりもテストされていません。 私の最後の質問は、複素数の使用を常に避けなければならないのかということです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.