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の詳細については、ここでは省略する。
- LiDIA-2.1pre7.tar.gzを展開する。
$ tar zxf LiDIA-2.1pre7.tar.gz
- LiDIA-2.1pre7.patch1.gzを当てる。
$ mv LiDIA-2.1pre7 LiDIA
$ zcat LiDIA-2.1pre7.patch1.gz | patch
- ./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
- Makefileを必要に応じて編集する。
- makeする。
$ gmake
- installする。
$ sudo bash
# gmake install
- make cleanする。
$ gmake clean
$ cd ~
■mwrank3をbuildする。
- mwrank3.tar.gzを展開する。
$ tar zxf mwrank3.tar.gz
- configureする。LiDIAライブラリを使用し、pure mode(LiDIA bigint, bigrational, bigfloatを使う)を選択する。
$ cd rankdist
$ ./configure --prefix=/usr/gnu
- 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
- buildする。
$ gmake progs
- installする。
$ sudo bash
# cp mwrank /usr/gnu/bin/mwrank3
# exit
- 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よりも遅くなっているようである。
参考文献
- [1]Joseph H.Silverman, John Tate(著), 足立 恒雄, 木田 雅成, 小松 啓一, 田谷 久雄(訳), "楕円曲線論入門", シュプリンガー・フェアラーク東京, 1995, ISBN4-431-70683-6, {3900円}.
- [2]Joseph H. Silverman, "The Arithmetic of Elliptic Curves", GTM 106, Springer-Verlag New York Inc., 1986, ISBN0-387-96203-4.
Last Update: 2005.06.12 |
H.Nakao |