Homeに戻る  一覧に戻る 

mwrank 3


Cremonaのmwrank3をbuildする[2003.02.16]

楕円曲線の有理点を求めるときに、常用しているCremonaのmwrankの新しい版mwrank3を入手できたので、buildする。

■最初に、LiDIAライブラリ2.1pre7をbuildする。
NetBSD-1.6の標準のGNU C/C++ Compilerは、
bash-2.05a$ /usr/bin/gcc -v
Using builtin specs.
gcc version 2.95.3 20010315 (release) (NetBSD nb3)
である。このgcc 2.95.3でLiDIA 2.1pre7をbuildすると、コンパイルエラーが発生するが解消できなかったので、最新のgcc 3.2.1をbuild/installして使うことにした。
bash-2.05a$ /usr/gnu/bin/gcc -v
Reading specs from /usr/gnu/lib/gcc-lib/i386-unknown-netbsdelf1.6/3.2.1/specs
Configured with: ./configure --prefix=/usr/gnu --disable-nls --enable-languages=c,c++
Thread model: single
gcc version 3.2.1
また、多倍長演算ライブラリは、GNU GMP-4.1.2を使用する。
gcc-3.2.1とGMP-4.1.2のbuildの詳細については、ここでは省略する。

  1. LiDIA-2.1pre7.tar.gzを展開する。
    $ tar zxf LiDIA-2.1pre7.tar.gz
    
  2. LiDIA-2.1pre7.patch1.gzを当てる。
    $ mv LiDIA-2.1pre7 LiDIA
    $ zcat LiDIA-2.1pre7.patch1.gz | patch
    
  3. ./configureする。インストールデリクトリは、/usr/localとする。また、exceptionを禁止するオプションを指定する。
    $ cd LiDIA
    $ CFLAGS="-mcpu=i586 -O2" CXXFLAGS="-mcpu=i586 -O2" ./configure --prefix=/usr/local --with-extra-includes=/usr/gnu/include --with-extra-libs=/usr/gnu/lib --with-arithmetic=gmp --disable-exceptions
    
  4. Makefileを必要に応じて編集する。

  5. makeする。
    $ gmake
    
  6. installする。
    $ sudo bash
    # gmake install
    
  7. make cleanする。
    $ gmake clean
    $ cd ~
    

■mwrank3をbuildする。
  1. mwrank3.tar.gzを展開する。
    $ tar zxf mwrank3.tar.gz
    
  2. configureする。LiDIAライブラリを使用し、pure mode(LiDIA bigint, bigrational, bigfloatを使う)を選択する。
    $ cd rankdist
    $ ./configure --prefix=/usr/gnu
    
  3. Makefileを必要に応じて修正する。
    ### Optimisation flags
    #OPTFLAG = -O3
    OPTFLAG = -mcpu=i586 -O3 -I/usr/gnu/include
    
    ###
    # If using LiDIA, set these to the right paths for your installation
    # (if not the standard /usr/local/lib and /usr/local/include)
    #
    
    #LIDIALIBDIR = .#/usr/local/lib
    #LIDIAINCDIR = .#/usr/local/include
    LIDIALIBDIR = /usr/local/lib
    LIDIAINCDIR = /usr/local/include
    
    ###
    # Mode 1: use LiDIA's arithmetic (bigints AND bigfloats)
    # instead of GNU libg++ or NTL
    
    ifeq ($(COMPILE),1)
    LIDIA = 1
    LIDIACFLAGS = -DLiDIA_ALL -I$(LIDIAINCDIR)
    #LIDIALFLAGS = -lLiDIA -L$(LIDIALIBDIR) -lgmp
    LIDIALFLAGS = -lLiDIA -L$(LIDIALIBDIR) -L/usr/gnu/lib -lgmp
    endif
    
  4. buildする。
    $ gmake progs
    
  5. installする。
    $ sudo bash
    # cp mwrank /usr/gnu/bin/mwrank3
    # exit
    
  6. make cleanする。
    $ gmake clean
    

■楕円曲線 E: y^2=x^3-49xの有理点を計算してみる。

mwrank3で計算すると、このように、EのMordell-Weil群の生成元(-63/16,735/64)が求まり、rank(E(Q)) = 1であることが分かる。
よって、7は合同数である。

この例に関しては、旧版のmwrank-2.8よりも遅くなっているようである。

参考文献




Last Update: 2005.06.12
H.Nakao

Homeに戻る[Homeに戻る]  一覧に戻る[一覧2003に戻る]