1) 値を保持するオブジェクトの宣言
値を保持するオブジェクトには mpz_t(整数型),mpq_t(有理数型),mpf_t(浮動小数点数型)の3つがあり,必要に応じてそれらの型のオブジェクトを宣言します.
例.有理数型のオブジェクトの宣言: mpq_t a, b, c;
2) オブジェクトの初期化
GMPのオブジェクトは計算に使用する前(値を格納する前)に初期化処理をする必要があります.
例.有理数型オブジェクトの初期化:
mpq_init(a);
mpq_init(b);
mpq_init(c);
同様に mpz_init, mpf_init 関数があります.
3) オブジェクトへの値の格納(代入)
■ mpz_t(整数)オブジェクト x への値の格納
mpz_set_ui( mpz_t x, unsigned long v ) : 符号なしlong型のvを代入
mpz_set_si( mpz_t x, long v ) : long型のvを代入
mpz_set_str( mpz_t x, const char *v, inv base ) :
base進法の基数で表現された文字列としての整数vを解釈して代入
■ mpq_t(有理数)オブジェクト x への値の格納
mpq_set_ui( mpz_t x, unsigned long v1, unsigned long v2 ) :
符号なしlong型で表現された有理数 v1/v2 を代入
mpq_set_si( mpz_t x, long v1, unsigned long v2 ) :
同じく v1/v2 を代入
mpq_set_d( mpz_t x, double v ) : double型の v を代入
mpq_set_str( mpz_t x, const char *v, inv base ) :
base進法の基数で表現された文字列としての有理数vを解釈して代入
同様に mpf_t 型のオブジェクトにも値を格納する関数があります.
4) 計算処理
■ 加算: r = v1 + v2
mpz_add(r,v1,v2), mpq_add(r,v1,v2), mpf_add(r,v1,v2)
■ 減算: r = v1 – v2
mpz_sub(r,v1,v2), mpq_sub(r,v1,v2), mpf_sub(r,v1,v2)
■ 乗算: r = v1 * v2
mpz_mul(r,v1,v2), mpq_mul(r,v1,v2), mpf_mul(r,v1,v2)
■ 除算: r = v1 / v2
mpz_div(r,v1,v2), mpq_div(r,v1,v2), mpf_div(r,v1,v2)
その他…
5) 出力(変換)
■ 文字列への変換
例.mpz_t(整数型)のオブジェクト x を char *s に変換する
mpz_get_str( char *s, int base, mpz_t x )
同様に mpq_t, mpf_t 型のオブジェクトを文字列に変換することができます.
その他にも,long, unsigned long, double 型に変換する関数もあります.