FreeBASIC ExtLibgmp
目次→その他→ライブラリ・ヘッダー索引→gmp, The GNU Multiple Precision Arithmetic Library←オリジナル・サイト
目次→FreeBASIC のハッキング→FreeBASIC でのハッキングのための情報→外部ライブラリ索引→gmp, The GNU Multiple Precision Arithmetic Library←オリジナル・サイト
gmp, The GNU Multiple Precision Arithmetic Library
符号付き整数、有理数、浮動小数点数で、任意の精度の算術を行うことができる、フリーのライブラリです。
ウエブ・サイト: https://www.gmplib.org∞
利用できる環境: Win32, Linux
include するヘッダー: gmp.bi
ヘッダー・バージョン: 4.1.4
多倍長整数演算ライブラリ (GNU MP)(シニアエンジニアの庵)
http://sehermitage.web.fc2.com/etc/gmp.html
GMP の概要を分かり易くまとめられています。
次に、以下を読むと、よく分かります。
GMP利用の流れ
http://www.k-techlabo.org/blog2/?p=398
GMPの仕組み
http://lv4.hateblo.jp/entry/2014/01/22/224027
GMP(GNU Multi-Precision Library)の使い方1 変数編
GMP(GNU Multi-Precision Library)の使い方2 四則演算編
GMP(GNU Multi-Precision Library)の使い方3 その他演算編
GNU MP
http://www.nurs.or.jp/~sho/gmp/
主要な関数の解説があります。
GNU MP Library 説明書の抜粋解説
http://www7b.biglobe.ne.jp/~river_r/alcan/3.html
多倍長演算ライブラリ(GNU MP) Version 6.1.2マニュアル
https://na-inet.jp/na/gmp_ja/
注意:コンパイル時に、下記のエラーが表示される場合:
FreeBASIC\bin\win32\ld.exe: cannot find -l***
これは、linker のエラーで、***.dll.a (または ***.a または lib***.a または ***.dll)が見つからないからです。
https://sourceforge.net/projects/fbc/files/Older%20versions/0.90.1/Binaries%20-%20Windows/Libraries/
から該当ファイル(FB-win32-gmp-5.1.1.zip)をダウンロードして fbc の /lib/win32 に ****.a ファイルをコピーします。
gmp 6.2.0 and mpfr 4.0.2 gmp 6.1.2 and mpfr 3.1.5 ←最新版の関連ファイルをダウンロードできます。
プログラム例は、下記も参照下さい。
GMP ライブラリを使ったユーザ定義型と活用例
GMP ライブラリを使ったユーザ定義関数と活用例
GMP ライブラリを利用して階乗を計算
GMP の素因数分解関数
例:
#include once
"gmp.bi"
Dim As mpz_ptr BigNum =
Allocate(SizeOf(__mpz_struct
))
mpz_init_set_si(BigNum,
2)
mpz_pow_ui(BigNum, BigNum,
65536)
Print "2^65536 = ";
Dim As ZString Ptr s =
mpz_get_str(0,
10, BigNum
)
Print *s;
Deallocate(s
)
Print
mpz_clear(BigNum
)
Deallocate(BigNum
)
Sleep
解説:
値を保持するオブジェクトには mpz_t(整数型),mpq_t(有理数型),mpf_t(浮動小数点数型)の3つがあります。
mpz_ptr
mpz_ptr は、mpz_t(整数型)のポインタです。
mpz_init_set_si
構文 mpz_init_set_si (mpz_t rop, long int op)
mpz_t(整数型)のオブジェクト rop を初期化して rop に op を代入します。
mpz_pow_ui
構文 mpz_pow_ui (mpz_t rop, mpz_t base, unsigned long int exp)
base の n 乗 を rop に代入します。
mpz_get_str
文字列への変換
構文 char * mpz_get_str (char *str, int base, mpz_t op)
mpz_t(整数型)のオブジェクト op を、基数 base の数字列(NULL 終端文字列) char *str に変換します。
(2 <= base <= 36)
str が NULL ならば,必要なメモリ領域が確保されます。
結果の文字列へのポインタが返ります。
mpz_clear
メモリを解放
構文 mpz_clear (mpz_t x)
変数 x の使用していたメモリ領域を解放します。
mpz_clear() を使って mpz_init() でアロケートしたメモリーを解放します。
ページ歴史:2020-12-31 13:56:40
日本語翻訳:WATANABE Makoto、原文著作者:SirMud