FreeBASIC マニュアルのトップに戻る

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

ホームページのトップに戻る

表示-非営利-継承