[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#menu(howto/MenuBar)
* howto/C++言語 [#rdba3503]
#contents
** 一行メモ [#qf51cdc8]
- lapack 3.4.2 パッケージだと、lapackeが complex.hを使っ...
-- 補足:C++からfortranなどのサブルーチンを利用する方法は...
- lapackの dgesv_などで aや b, ipivの配列サイズが小さかっ...
#comment
* complex型を使ったCソースをC++でコンパイルする方法(Cか...
C++言語のcomplex型は、C言語の上位互換ではない。CからC++へ...
修正は下記のようにする。わりと単純で多くないようだ。
ISO C 1998 や ISO C 2011 のソースを ISO C++ 1998 や ISO C...
(注) 試行錯誤して、いいだろうと見つけた方法である。
+ ヘッダファイルの変更
#include <tgmath.h> //complex.hもインクルードされている
を
#include <complex>
に変更する。
//
+ complex型の定義・宣言の変更
double complex a;
を
std::complex<double> a;
に変更する。using std::complex; をすれば std::を略せる。
//
+ 追加
#define creal real
#define cimag imag
を追加する。creal, cimagは std::real, std::imagに変更...
この std::は何もしなくても略せる。
const std::complex<double> I(0.0,1.0);
を追加する。Iは無くなっているため。
//
+ ISO C++ 1998 のときにさらに追加
#define fabs(z) sqrt(real(z)*real(z)+imag(z)*imag(z))
fabsは無いので、real,imag,sqrtで計算する。2023/11/29
g++ 4.8.5の ISO C++ 1998はなんか怪しそうなので使わない方...
終了行:
#menu(howto/MenuBar)
* howto/C++言語 [#rdba3503]
#contents
** 一行メモ [#qf51cdc8]
- lapack 3.4.2 パッケージだと、lapackeが complex.hを使っ...
-- 補足:C++からfortranなどのサブルーチンを利用する方法は...
- lapackの dgesv_などで aや b, ipivの配列サイズが小さかっ...
#comment
* complex型を使ったCソースをC++でコンパイルする方法(Cか...
C++言語のcomplex型は、C言語の上位互換ではない。CからC++へ...
修正は下記のようにする。わりと単純で多くないようだ。
ISO C 1998 や ISO C 2011 のソースを ISO C++ 1998 や ISO C...
(注) 試行錯誤して、いいだろうと見つけた方法である。
+ ヘッダファイルの変更
#include <tgmath.h> //complex.hもインクルードされている
を
#include <complex>
に変更する。
//
+ complex型の定義・宣言の変更
double complex a;
を
std::complex<double> a;
に変更する。using std::complex; をすれば std::を略せる。
//
+ 追加
#define creal real
#define cimag imag
を追加する。creal, cimagは std::real, std::imagに変更...
この std::は何もしなくても略せる。
const std::complex<double> I(0.0,1.0);
を追加する。Iは無くなっているため。
//
+ ISO C++ 1998 のときにさらに追加
#define fabs(z) sqrt(real(z)*real(z)+imag(z)*imag(z))
fabsは無いので、real,imag,sqrtで計算する。2023/11/29
g++ 4.8.5の ISO C++ 1998はなんか怪しそうなので使わない方...
ページ名: