2つの64ビットfloat( QDライブラリdd_realのdouble-doubleクラス)を使用して128ビットfloatをエミュレートするカスタムfloatデータ型があります。C++からndarrayをpythonにエクスポートしたいと思います。64ビットフロートの場合はこれを行う方法をすでに知っていますが、ダブルダブルの場合はどういうわけか独自のカスタムdtypeを指定する必要があります。どうやってするか?
注:numpyには独自の128ビットfloat(np.float128)がありますが、残念ながら、これlong doubleはC / C ++にマップされます。これは、128ビットに格納された80ビットfloatにすぎません(すべてのプラットフォームで)。
実際、numpyがnp.float128をエクスポートするのとまったく同じ方法でこれを実行できるはずです(これがどのように行われるかはわかりません)がdd_real、C++側で.の代わりに使用する唯一の違いがありlong doubleます。
これが役に立ったら、私はすでにC ++タイプdd_realをPythonにエクスポートしましたが、boost::pythonこれはどういうわけか再利用できるかもしれません。
これまでのところ、私は以下を研究することができました
dtypesのnumpyドキュメントは、カスタムdtypesをエクスポートする方法についてC-APIを参照して いますが、そのドキュメントは、新しいdtypesを作成する方法ではなく、既存のdtypesを説明しているだけです。
stackoverflowを閲覧しているときにこの
dd_real例を見つけましたが、これはもっと簡単なのではないかと思います。また、dtypeが実際に生成される場所もわかりません。たぶん、Python__init__でのみnp.typeDict['quaternion'] = np.dtype(quaternion)。ndarrayを生成したいときにC++でそのdtypeを使用するにはどうすればよいですか?