Tôi có kiểu dữ liệu float tùy chỉnh mô phỏng nổi 128bit sử dụng hai float nổi 64bit (double double double class dd_real
từ QD library). Từ C + +, tôi muốn export một ndarray vào python. Tôi đã biết làm thế nào để làm điều này cho nổi 64bit, nhưng đối với đôi tăng gấp đôi tôi bằng cách nào đó cần phải xác định dtype tùy chỉnh của riêng tôi. Làm thế nào để làm điều đó?Làm thế nào để xác định kiểu tùy chỉnh kiểu float (C-API)
Lưu ý: numpy có phao 128bit (np.float128) của nó không may này ánh xạ tới long double
trong C/C++ mà chỉ đơn thuần là một 80bit-float được lưu trữ trong 128bit (trên tất cả các nền tảng của tôi).
Thực tế, người ta có thể làm điều này một cách chính xác giống như cách xuất khẩu np.float128 (Tôi không biết cách thực hiện), với sự khác biệt duy nhất là sử dụng dd_real
ở phía C++ thay vì long double
.
Nếu điều này giúp, tôi đã xuất loại C++ dd_real
thành python sử dụng boost::python
có thể điều này có thể được sử dụng lại bằng cách nào đó.
Cho đến nay tôi đã có thể nghiên cứu sau
Các tài liệu NumPy cho dtypes đề cập đến C-API cho cách xuất dtypes tùy chỉnh, nhưng tài liệu nào đó mà chỉ giải thích dtypes hiện không làm thế nào để tạo những cái mới.
Khi browsing stackoverflow Tôi tìm thấy this ví dụ, nhưng tôi tự hỏi nếu cho
dd_real
điều này có thể đơn giản hơn. Tôi cũng không thấy nơi dtype thực sự được tạo ra. Có thể chỉ trong python __ init__ quanp.typeDict['quaternion'] = np.dtype(quaternion)
. Làm thế nào để sử dụng dtype trong C + + khi tôi muốn tạo ra một ndarray?
tương đương với 'np.dtype (...)' trong C++ là gì? –
Xây dựng danh sách với các bộ dữ liệu và gọi 'PyArray_DescrConverter'. Nhưng có lẽ dễ dàng hơn khi xuất một mảng đôi và làm điều đó ở phía Python. –
Vâng tôi cần phải xây dựng một ndarray từ C + + và cho rằng tôi cần dtype trong C + +. –