2つの64ビット浮動小数点を使用する128ビット浮動小数点数をエミュレートするカスタム浮動小数点データ型があります(QD libraryのdouble doubleクラスdd_real
)。 C++からは、ndarrayをPythonにエクスポートしたいと思います。私はすでに64ビット浮動小数点数のためにこれを行う方法を知っていますが、倍精度浮動小数点型のために私は何とか自分のカスタムdtypeを指定する必要があります。どうやってするか?カスタムフロート型numpy型(C-API)を定義する方法
注:numpyのは、独自の128ビットの浮動小数点数(np.float128)残念ながら、これは単なる(私のプラットフォームのすべての)128ビットに保存されている80ビットフロートであるC/C++でlong double
にマップしています。
実際、numpyがnp.float128をエクスポートするのと全く同じ方法でこれを行うことができます(私はちょうどその方法がわかりません)。唯一の違いはC++側でdd_real
ですlong double
の代わりに
これが役に立ちましたら、boost::python
を使用して、すでにC++のタイプdd_real
をPythonにエクスポートしています。これは何とか再利用できます。
これまでのところ、私は、次の
dtypesためのnumpyのドキュメントは、カスタムdtypesをエクスポートする方法についてはC-APIを指しますが、その文書は何とかだけでなく、どのように既存のdtypesを説明を研究することができました新しいものを作成する。
browsing stackoverflow私はthis例を見つけましたが、これは
dd_real
の方が簡単かもしれません。私はまた、dtypeが実際に生成される場所を見ません。たぶんpython __ init__からnp.typeDict['quaternion'] = np.dtype(quaternion)
経由でのみです。 ndarrayを生成したいときに、そのdtypeをC++でどのように使うのですか?
C++で 'np.dtype(...)'と同等のものは何ですか? –
タプルでリストを構築し、 'PyArray_DescrConverter'を呼び出します。しかし、おそらく二倍の配列をエクスポートし、Python側でそれを行うほうが簡単でしょう。 –
私はC++からndarrayを構築する必要があり、そのためにはC++でdtypeが必要です。 –