Panduan lengkap (clone β install β compile β run) untuk proyek C++ yang memakai AdvAnPix
mpreal(C++ wrapper untuk MPFR) untuk menghitung akar kuadrat dengan presisi tinggi.
Program bisa dipakai pada terminal dengan menginstall kode dan dependensi, atau dipakai di website. Namun program pada website menggunakan Python yang kode bisa dilihat pada app.py. Website bisa diakses disini
Program akan berjalan lebih cepat jika menggunakan C++
Untuk menggunakan program dengan C++ adalah sebagai berikut
Program ini mengimplementasikan perhitungan akar kuadrat presisi-tinggi menggunakan metode Newton/Heron dan metode reciprocal-sqrt, memakai header mpreal.h (AdvAnPix) yang membungkus pustaka C MPFR, yang sendiri bergantung pada GMP untuk aritmetika bilangan besar.
File sumber utama:
Perhitungan.cpp
- Compiler C++ yang mendukung C++17 (
g++disarankan). - GNU MP (GMP) β pustaka aritmetika presisi besar (
libgmp/gmp). - GNU MPFR β pustaka floating-point presisi-arbitrary (
libmpfr). - mpreal.h β header C++ satu-file dari AdvAnPix (wrapper MPFR).
- (Opsional) Boost.Multiprecision jika ingin kompilasi dengan
-DUSE_BOOST. - (Opsional)
pkg-configuntuk memudahkan pengaturan flag kompilasi.
Di Windows, paket MSYS2/MinGW menyediakan binari dan header GMP/MPFR yang paling mudah dipakai.
- Clone repo Anda (ganti URL dengan repo Anda):
git clone https://github.com/muhammadIdhamMaarif/sqrt.git
cd sqrt- Ambil
mpreal.h(opsi A atau B):
- Opsi A β submodule (recommended):
# di dalam folder project
git submodule add https://github.com/advanpix/mpreal.git third_party/mpreal
git submodule update --init --recursive
# atau: wget/curl raw header lalu taruh di ./include/- Opsi B β ambil header langsung:
mkdir -p include
curl -L -o include/mpreal.h \
https://raw.githubusercontent.com/advanpix/mpreal/master/mpreal.h- Install dependensi sistem (lihat bagian selanjutnya untuk per-OS).
- Compile (contoh di bagian
Compile examples). - Jalankan (contoh di bagian
Run examples).
Pilih bagian yang sesuai sistem operasi Anda.
sudo apt update
sudo apt install -y build-essential g++ git pkg-config \
libgmp-dev libmpfr-dev
# opsional (Boost):
sudo apt install -y libboost-all-dev- Paket inti:
libgmp-dev,libmpfr-dev(mengandung header & library untuk link).
sudo dnf install -y @development-tools git pkgconfig \
gmp-devel mpfr-devel libmpc-devel
# opsional Boost
sudo dnf install -y boost-devel# pastikan Homebrew terinstall
brew update
brew install gcc gmp mpfr pkg-config
# opsional Boost
brew install boostJika Anda memakai Xcode toolchain, pastikan
xcode-select --installsudah dijalankan untuk mendapatkangcc/clangtoolchain.
- Install MSYS2 dari https://www.msys2.org/ dan jalankan
MSYS2 MinGW 64-bitshell (atauUCRT64sesuai kebutuhan). - Update paket dan install toolchain:
pacman -Syu
# restart MSYS2 shell jika diminta, lalu:
pacman -S --needed base-devel mingw-w64-x86_64-toolchain \
mingw-w64-x86_64-gmp mingw-w64-x86_64-mpfr mingw-w64-x86_64-pkg-config
# opsional Boost:
pacman -S mingw-w64-x86_64-boostGunakan MinGW-w64 shell (mingw64) untuk compile 64-bit; gunakan
MINGW64prompt.
- Letakkan
mpreal.hdiinclude/(proyek) atau gunakan submodulethird_party/mpreal. - Pastikan
#include "mpreal.h"ditemukan oleh compiler (-Iincludejika perlu).
Contoh file sumber:
mpreal_sqrt_newton.cpp. Ganti nama file sesuai repo Anda.
# Linux / macOS
g++ -O2 -std=c++17 -I./include mpreal_sqrt_newton.cpp $(pkg-config --cflags --libs mpfr) -o mpreal_sqrtpkg-config --cflags --libs mpfr akan menambahkan flag include/library sesuai instalasi MPFR/GMP (tersedia di MPFR β₯ 4.0).
# jika header mpreal ada di ./include
g++ -O2 -std=c++17 -I./include mpreal_sqrt_newton.cpp -lmpfr -lgmp -o mpreal_sqrtJika linker tidak menemukan library, tambahkan
-L/path/to/libsesuai lokasi (contoh:-L/usr/local/lib).
# di MSYS2 MinGW64 shell
g++ -O2 -std=c++17 -I/mingw64/include mpreal_sqrt_newton.cpp -L/mingw64/lib -lmpfr -lgmp -o sqrt.exe- Jika Anda ingin meng-compile bagian
#ifdef USE_BOOST, tambahkan macro-DUSE_BOOSTdan pastikan Boost headers/lib terinstall:
g++ -O2 -std=c++17 -DUSE_BOOST -I./include mpreal_sqrt_newton.cpp \
$(pkg-config --cflags --libs mpfr) -o mpreal_sqrt_boost# default
./mpreal_sqrt
# contoh: akar kuadrat 2 dengan 200 digit presisi dan 10 iterasi
./mpreal_sqrt --number 2 --prec-digits 200 --iterations 10
# pakai inisialisasi manual:
./mpreal_sqrt --number 123456789 --prec-digits 150 --init-mode manual --init-value 1.0
# simpan tabel iterasi ke CSV
./mpreal_sqrt --number 2 --prec-digits 200 --iterations 20 --save-csv iterations.csvPerhatikan opsi CLI (lihat kode utama parse_args) β tersedia --number, --prec-digits, --iterations, --init-mode, --init-value, --method, --save-csv.
Makefile minimal:
CXX = g++
CXXFLAGS = -O2 -std=c++17 -I./include
LDFLAGS = -lmpfr -lgmp
SRC = mpreal_sqrt_newton.cpp
OUT = mpreal_sqrt
all:
$(CXX) $(CXXFLAGS) $(SRC) $(LDFLAGS) -o $(OUT)
clean:
rm -f $(OUT)Jika pkg-config tersedia, ubah LDFLAGS menjadi $(shell pkg-config --cflags --libs mpfr).
- Header
mpreal.htidak ditemukan: pastikan-I./includemenunjuk ke folder yang berisimpreal.h, atau letakkan header di lokasi sistem (/usr/local/include). - Linker error: undefined reference to mpfr_*: library MPFR/GMP tidak ter-link. Tambahkan
-lmpfr -lgmpdan/atau-Lke folder library. - Versi MPFR baru menyebabkan error dengan
mpreal.h: ada isu kompatibilitas bila MPFR mengubah internal API; cek issue GitHubadvanpix/mprealdan pertimbangkan menggunakan versi MPFR yang stabil atau patch padampreal.h(issue terkait dilaporkan pada repo). - Windows: tidak ada binari GMP/MPFR: gunakan MSYS2/Mingw-w64 yang menyediakan paket
mingw-w64-x86_64-gmpdanmingw-w64-x86_64-mpfr.
- Program menyetel
mpfr::mpreal::set_default_prec(bits)berdasarkan--prec-digits; bit precision dihitung dari digit decimal secara kasar. - Program juga membangun referensi high-precision dengan menaikkan presisi sementara untuk perbandingan.
- Jika Anda ingin distribusi yang lebih portable, pertimbangkan membundel header
mpreal.hdan menulisconfigure/CMakeatauvcpkg/conanrecipe.
mpreal.h(AdvAnPix) β wrapper C++ untuk MPFR (lihat repo advanpix/mpreal).- MPFR & GMP β proyek GNU.
Periksa lisensi masing-masing pustaka jika Anda akan mendistribusikan binari. advanpix/mpreal di-publish dengan lisensi GPL-3.0 (lihat repo).
Kirim pesan (atau paste error output) ke help@idhamadam.com. saya bantu interpretasi error link/compile. Selamat mencoba! π