У меня есть пользовательский тип данных float, который эмулирует 128-битные поплавки с использованием двух 64-битных поплавков (двойной двойной класс dd_real
из QD library). Из С++ я хочу экспортировать ndarray в python. Я уже знаю, как это сделать для 64-битных поплавков, но для double-doubles мне как-то нужно указать свой собственный dtype. Как это сделать?
Примечание: numpy имеет свой собственный 128-битный float (np.float128), к сожалению, это сопоставляется с long double
в C/С++, который является просто 80-битным поплавком, хранящимся на 128 бит (на всех моих платформах).
Фактически, нужно иметь возможность сделать это точно так же, как numpy export np.float128 (я просто не знаю, как это делается), с той лишь разницей, что он использует dd_real
на С++ вместо long double
.
Если это помогает, я уже экспортировал С++-тип dd_real
в python с помощью boost::python
, возможно, это может быть каким-то образом использовано.
До сих пор я мог исследовать следующие
-
Документация numpy для dtypes относится к C-API для того, чтобы экспортировать пользовательские типы dtypes, но этот документ каким-то образом объясняет существующие типы dtypes не как создавать новые.
-
Когда просматривал stackoverflow, я нашел этот пример, но я интересно, если для
dd_real
это может быть проще. Я также не вижу, где dtype фактически генерируется. Возможно, только в python __ init__ черезnp.typeDict['quaternion'] = np.dtype(quaternion)
. Как использовать этот dtype в С++, когда я хочу сгенерировать ndarray?