Como definir tipos tipográficos personalizados do tipo float (C-API)

Eu tenho um tipo de dados float personalizado que emula floats de 128 bits usando dois floats de 64 bits (a classe double-doubledd_real deBiblioteca QD). De C ++ eu quero exportar um ndarray para python. Eu já sei como fazer isso para floats de 64 bits, mas para double-doubles eu de alguma forma preciso especificar meu próprio dtype customizado. Como fazer isso?

Nota: numpy tem sua própria float de 128 bits (np.float128) infelizmente isso mapeia paralong double em C / C ++, que é meramente um 80bit-float armazenado em 128 bits (em todas as minhas plataformas).

De fato, um deve ser capaz de fazer isso exatamente da mesma maneira que o numpy exporta np.float128 (eu simplesmente não sei como isso é feito), com a única diferença que ele usadd_real no lado C ++ em vez delong double.

Se isso ajudar, eu já exportei o tipo C ++dd_real para python usandoboost::python talvez isso possa ser reutilizado de alguma forma.

Até agora eu pude pesquisar o seguinte

A documentação numpy paradtypes refere-se aC-API como exportar dtipos personalizados, mas esse documento de alguma forma apenas explica os dtypes existentes e não como criar novos.

Quandonavegando stackoverflow eu encontreiisto exemplo, mas gostaria de saber sedd_real isso poderia ser mais simples. Eu também não vejo onde o dtype é realmente gerado. Talvez apenas em python__ nisso__ através danp.typeDict['quaternion'] = np.dtype(quaternion). Como usar esse dtype em C ++ quando eu quero gerar um ndarray?

questionAnswers(1)

yourAnswerToTheQuestion