Как определить пользовательские типы 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?