Windows XPにおけるGMPのセットアップ作業のメモ

これは古い記事です。より新しい情報は以下のページにあります:

Windows XPにおけるGMPのセットアップ作業のメモ 2012年3月版


Windows XPにおけるGMPのセットアップ作業の手順を自分のためにメモ。

GMP(GNU Multiple Precision Arithmetic Library)とは、C言語において多倍長計算を行うためのライブラリです。

MinGWの入手とインストール

MinGW(+MSYS)がインストールされたWindows XP環境において、GMPを利用することができます。Windows XPにおけるMinGW(+MSYS)のセットアップ手順については以下の記事をお読みください:

Windows XPにおけるC言語およびC++のセットアップ作業のメモ

インストーラを利用すると、デフォルトでC:\MinGWにインストールされます。以下、それを前提に話を進めます。

GMPの入手とインストール

GMPの公式サイト:

The GNU MP Bignum Library

から、gmp-5.0.1.tar.bz2をダウンロードします。これを例えばC:\tempの中に置きます(tempフォルダは新規作成します)。

コマンドプロンプトを起動し、以下のようにコマンドを入力します:

> cd c:\temp

> bzip2 -d gmp-5.0.1.tar.bz2

> tar xf gmp-5.0.1.tar

> cd gmp-5.0.1

> bash ./configure -prefix=/mingw/
(出力内容は省略)
(処理の終了まで時間がかかります)

> make
(出力内容は省略)
(処理の終了まで時間がかかります)

> make install
(出力内容は省略)

サンプルプログラム

/* arithmetic_op.c */

#include <stdio.h>
#include <gmp.h>

#define BASE 10  /* 基数(10進数) */

int main(void)
{
    mpz_t a, b, c[5];
    const char* op[] = {"+", "-", "*", "/", "%"};
    int i;

    /* 変数の初期化 */
    mpz_inits(a, b, NULL);  /* 最後の引数はNULL */
    for(i = 0; i < 5; i++) {
      mpz_init(c[i]);
    }

    /* 数値の変数への代入 */
    mpz_set_str(a, "82148086513282306647", BASE);
    mpz_set_str(b, "14159265358979323846", BASE);

    mpz_add(c[0], a, b);  /* 和の計算 */
    mpz_sub(c[1], a, b);  /* 差の計算 */
    mpz_mul(c[2], a, b);  /* 積の計算 */
    mpz_div(c[3], a, b);  /* 商の計算 */
    mpz_mod(c[4], a, b);  /* 剰余の計算 */

    /* 計算結果の出力 */
    for (i = 0; i < 5; i++) {
      mpz_out_str(stdout, BASE, a);
      printf(" %s ", op[i]);
      mpz_out_str(stdout, BASE, b);
      printf("\n = ");
      mpz_out_str(stdout, BASE, c[i]); 
      printf("\n");
    }

    /* 解放 */
    mpz_clears(a, b, NULL);  /* 最後の引数はNULL */
    for(i = 0; i < 5; i++) {
      mpz_clear(c[i]);
    }

    return 0;
}

コンパイル方法

コマンドプロンプトを起動し、以下のコマンドを実行:

> gcc arithmetic_op.c -o arithmetic_op -l gmp

すると、実行ファイル(arithmetic_op.exe)ができあがります。それを実行すると、以下のようになります:

> arithmetic_op
82148086513282306647 + 14159265358979323846
 = 96307351872261630493
82148086513282306647 - 14159265358979323846
 = 67988821154302982801
82148086513282306647 * 14159265358979323846
 = 1163156555673954751406928593255291404362
82148086513282306647 / 14159265358979323846
 = 5
82148086513282306647 % 14159265358979323846
 = 11351759718385687417

参考URL

GNU MP Manual

【theme : プログラミング
【genre : コンピュータ

プロフィール

よしいず

Author:よしいず
MATHEMATICS.PDFというウェブサイトを運営しています。

管理の都合上、トラックバックとコメントはオフにしてあります。ブログ経験者なら分かっていただけると思いますが、スパム(アダルトやその他の宣伝)ばかりなのが現実です。

リンクは自由です。当サイトの記事に対する間違いの指摘・意見・感想などを述べた記事からのリンクは歓迎です。ただし、ブログ記事アップ直後はミスが多く、頻繁に修正します。場合によっては削除する可能性もあります。その際、何も断りもなく修正・削除しますがご了承ください。内容を参考にする場合には投稿後一週間ほど様子を見てからにしてください(笑)。

記事の間違いを指摘するときは、その具体的箇所、理由(仕様に反するなど)・根拠(参考にした文献など)、代替案(同じ結果を得るための正しいやり方)も教えてください。そうしないと、(指摘される側および第三者はその時点では無知の状態なので、)どこが間違いなのか分かりませんし、本当に間違っているのかどうかが判断・検証できません。実際、間違いだと指摘されたことが結局は正しかったというケースもありますので。

このブログのタイトル一覧

リンク
月別アーカイブ
カテゴリ
最新記事
検索フォーム
RSSリンクの表示