Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Biblioteka dla dużych liczb

Ostatnio zmodyfikowano 2019-02-11 18:25
Autor Wiadomość
AstroCode
Temat założony przez niniejszego użytkownika
Biblioteka dla dużych liczb
» 2019-02-08 19:07:41
Witam.
Jestem bardzo początkujący. Tworze program który musi przeliczyć iloczyny dużych liczb przekraczających zakres dostępnych zmiennych.
Zauważyłem ,że mnożenie znacznie przekłamuje wynik. Poczytałem o dodatkowych bibliotekach które dają możliwość obsługi bardzo dużych liczb np. biginteger. Próbowałem sam to doinstalować ale szczerze mówiąc pogubiłem się. Jak ktoś ma namiary na jakąś dobrą instrukcję jak to zrobić lub sam potrafi mi to wyjaśnić będę bardzo wdzięczny.
Korzystam z code::block.
P-173924
mateczek
» 2019-02-08 20:06:44
Najprościej to Linux.
A pod Windows polecam msys2, Biblioteka co się nadają to "gmplib"  (a i w bibliotece boost są też wielkie liczby).
https://youtu.be/RyKheK3xc08 Tutaj na filmie pokazywałem z msys2 i sfml. Ale jeśli interesuje cię gmplib to jest ona instalowana domyślnie z msys2 po zainstalowaniu msysa te trzy polecenia załatwiają sprawę.


pacman -Syuu
//zamykamy terminal po pierwszej aktualizacji i komędę aktualizacji wykonujemy ponownie
pacman -Syuu

//instalacja kompilatorów
pacman -S mingw-w64-x86_64-toolchain



przykładowy program
C/C++
int
main( void )
{
    mpz_class a, b, c;
   
    a = 1234;
    b = "-5678";
    c = a + b;
    cout << "sum is " << c << "\n";
    cout << "absolute value is " << abs( c ) << "\n";
   
    return 0;
}
kompilacja z konsoli prostego programu testowego z wykorzystaniem biblioteki w konsoli msys
g++ myprog.cpp -lgmpxx -lgmp

gdzie myprog.cpp to nazwa programu cpp
P-173925
AstroCode
Temat założony przez niniejszego użytkownika
» 2019-02-10 23:06:00
Wszystko zainstalowałem. Poczytałem o tych bibliotekach i boost by była idealna.
Tylko dalej nie wiem jak to zaimplementować w code::block.
Kombinuje od 2 dni i 0 efektu. Mógłbym prosić o dalsze wskazówki?
P-173931
mateczek
» 2019-02-11 18:25:41
instalowałeś msysa2??

działa ci z konsoli kompilacja przykładowego programu??
g++ myprog.cpp -lgmpxx -lgmp

W code-blocksie wystarczy tylko ustawić ścieżkę do kompilatora https://youtu.be/RyKheK3xc08​?t=351 Jest to 5 minuta 51 sekunda filmu.
A do opcji inkera ustawić tą końcówkę
-lgmpxx -lgmp
 https://zapodaj.net​/d287eec708409.png.html np jak na tym zdjęciu.

PS. Z ciekawostek to:
A jak chcesz boosta to w msys2 instaluje się go komendą (64 bity)


pacman -S mingw-w64-x86_64-boost

przydatne polecenie msys2
pacman -Ss boost
 wyszuka wszystkie pakiety z boost w nazwie.

jak widać dwa pre-kompilowane pakiety boost w wersji 32 i 64 bity są dostępne w repozytorium
https://zapodaj.net/images​/8c010fb347d80.png

Poniżej jest przykładowy program z boost int 128  do opcji inkera nie trzeba nic dodawać
https://www.boost.org/doc/libs​/1_58_0/libs/multiprecision/doc​/html/boost_multiprecision/tut​/ints/cpp_int.html

PSS no i nie zawsze potrzebne są wielkie liczby. Czasami da się inaczej przeprowadzić obliczenia i trzymać wynik w mniejszych.
P-173932
« 1 »
  Strona 1 z 1