Как определить пользовательские типы numpy типа float (C-API)

У меня есть пользовательский тип данных с плавающей запятой, который эмулирует 128-битные операции с использованием двух 64-битных операций с плавающей запятой (класс double-doubledd_real изБиблиотека QD). Из C ++ я хочу экспортировать ndarray в python. Я уже знаю, как сделать это для 64-битных операций с плавающей запятой, но для двойных-двойных мне как-то нужно указать свой собственный тип dtype. Как это сделать?

Примечание: numpy имеет свой собственный 128-битный float (np.float128), к сожалению, это соответствуетlong double в C / C ++, который является просто 80-битным плавающей точкой, хранящейся в 128-битной (на всех моих платформах).

На самом деле, нужно уметь делать это точно так же, как это делает numpy экспорт np.float128 (я просто не знаю, как это сделать), с той лишь разницей, что он используетdd_real на стороне C ++ вместоlong double.

Если это поможет, я уже экспортировал тип C ++dd_real использовать Pythonboost::python может быть, это можно использовать как-нибудь.

До сих пор я смог исследовать следующее

Numpy документация дляdtypes относится кC-API, для того, как экспортировать пользовательские dtypes, но этот документ как-то объясняет только существующие dtypes, а не как создавать новые.

когдапросмотр StackOverflow я нашелэто пример, но мне интересно, если дляdd_real это может быть проще. Я также не вижу, где на самом деле генерируется dtype. Возможно только в питоне__ в этом__ черезnp.typeDict['quaternion'] = np.dtype(quaternion), Как использовать этот dtype в C ++, когда я хочу сгенерировать ndarray?

Ответы на вопрос(1)

Ваш ответ на вопрос