7

Có thư viện biên dịch thời gian nào (lập trình meta mẫu) cho số học chính xác tùy ý trong C++ không?Thư viện bignum thời gian biên dịch C++

Tôi cần điều này để trợ giúp với số học điểm cố định và tỷ lệ nhị phân trong chương trình của tôi cho vi điều khiển AVR. Ví dụ, khi hai số với mỗi giới hạn riêng của chúng được nhân lên, các bignums sẽ được sử dụng để tính toán các giới hạn của kết quả, và di chuyển điểm thập phân trong các đầu vào và/hoặc đầu ra khi thích hợp. Nhưng các giới hạn của kết quả có thể không được thể hiện trong các loại số nguyên chuẩn.

+0

Ý bạn là gì bởi "lập trình meta lập trình mẫu"? Thư viện kiểu "BigInteger" thực tế luôn sử dụng phân bổ bộ nhớ động. Nếu không, bạn chỉ có thể sử dụng một loại lớn hơn (tức là int64 đã ký để nhân hai int32 đã ký) – DarkWanderer

+2

@DarkWanderer Ý tôi là, tốt, lập trình meta mẫu. Liên kết này sẽ cung cấp cho bạn một số ý tưởng về cách thức các bignums có thể được thực hiện tại thời gian biên dịch: http://alpmestan.wordpress.com/2009/12/03/functional-compile-time-templates-based-type-lists-in-c/ . Về bản chất, một bignum thời gian biên dịch sẽ là một kiểu (đệ quy), và trình biên dịch sẽ xử lý việc cấp phát bộ nhớ. –

+0

@DarkWanderer Một loại số nguyên lớn là không đủ - vấn đề của tôi là xử lý các giới hạn của các loại tại thời gian biên dịch, và tôi cần phải kiểm tra thời gian biên dịch một cái gì đó dọc theo dòng "A + B INT64_MIN ". Biên dịch thời gian biên dịch sẽ cho phép các văn bản này được viết "trực tiếp" mà không phải lo lắng về số nguyên tràn. –

Trả lời

1

Có thể Boost.Multiprecision là những gì bạn đang tìm kiếm.

+0

Tài liệu chỉ định "Tuy nhiên, bạn sẽ không thể thực hiện phép tính số học trên các loại như vậy". –

Các vấn đề liên quan