Czy istnieje biblioteka kompilacji (metaprogramming szablonu) dla arytmetyki arbitralnej precyzji w C++?C++ biblioteka czasu kompilacji biblioteki
Potrzebuję tego, aby pomóc w ustalaniu arytmetycznych i binarnych skalowań w moim programie dla mikrokontrolerów AVR. Na przykład, gdy pomnożone zostaną dwie liczby z własnymi granicami, binary będą używane do obliczenia granic wyniku i przesunięcia punktu ułamkowego na wejściach i/lub wyjściach, stosownie do potrzeb. Ale granice wyniku mogą nie być reprezentowane w standardowych typach liczb całkowitych.
Co masz na myśli przez "metaprogramowanie szablonów"? Biblioteki typu "BigInteger" praktycznie zawsze korzystają z dynamicznego przydzielania pamięci. W przeciwnym razie możesz po prostu użyć większego typu (tzn. Podpisanego int64 do pomnożenia dwóch podpisanych int32). – DarkWanderer
@DarkWanderer Mam na myśli, dobrze, metaprogramowanie szablonów. Ten link powinien dać ci wyobrażenie, jak binarne mogą być implementowane w czasie kompilacji: http://alpmestan.wordpress.com/2009/12/03/functional-compile-time-templates-based-type-lists-in-c/ . Zasadniczo, binarny czas kompilacji byłby typem (rekursywnym), a kompilator zajmowałby się przydzielaniem pamięci. –
@DarkWanderer Duży typ całkowity jest niewystarczający - mój problem polega na radzeniu sobie z granicami typów w czasie kompilacji, i muszę mieć kontrole-czeki sprawdzające coś wzdłuż linii "A + B INT64_MIN ". Skompilowane czasy pozwalają na zapisanie ich "bezpośrednio" bez obawy o przepełnienie liczby całkowitej. –