準・究極の選択

MathematicaのCFormを使うと、
べき乗はPower、複素数はComplexといった感じで出力されますが、
私のCの環境ではPowerはpow、Complexはcomplex<double>に直さないと動きません。
CFormの出力がpowやcomplex<double>になるようにするにはどのような設定or操作をすればよいでしょうか?

現在、応急処置として
CForm[expr]/. {Power -> pow, ArcTan -> atan2, Sin -> sin, Cos -> cos}
としていますが、
このような操作でも正しい式が出力されているのでしょうか?
また、上記の操作ではComplexだけはなぜか書き換えできませんでした。

A 回答 (1件)

StringReplace[ToString[CForm[expr]], "Complex" -> "complex<double>"]



では流石に乱暴すぎでしょうか。

Power等は、mdefs.h(mathematica同梱)をインクルードすると使えます。
ただし、Complexは含まれていません。

ちなみに、私はmdefs.hを使わずに、自前のマクロで置き換えています。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!