Homeに戻る  一覧に戻る 

SIMATH-4.6


SIMATH-4.6をbuildする[2003.01.26]

数論用ツールとして、既にpari/gp, asir, KASHを使っている。 今回は、JANT研究集会で紹介されたことがあるツールSIMATHをbuildしてみる。 現在、SIMATHは、東京都立大学理学部の中村 憲教授のグループによって、開発(64bit化など)/保守されている。
  1. SIMATH-4.6.tar.gzを展開する。
    $ tar zxf SIMATH-4.6.tar.gz
    
  2. ./configureする。SIMATHのインストールディレクトリは、/usr/local/simathとする。
    $ cd SIMATH-4.6
    $ ./configure --prefix=/usr/local
    
  3. ./smconfig.hの MAX_BLOCK_NUMBER(1BLOCK=128KB,デフォルト値64)をメモリ容量に合わせて調整する。

  4. ./Makefile.flagsおよびMakefileを必要に応じて編集する。
    Makefile.flagsで、CFLAGS="-m486 -O2"とCFLAGS_BIN="-m486 -O2"を指定する。
    各Makefileで、GNU makeを使うために、makeを$(MAKE)に修正する。
         ./packages/SMif/Makefile
         ./packages/Makefile
         ./simcalc/Makefile
         ./sources/Makefile
         ./Makefile
    

  5. GNU make(gmake)を指定して、makeする。
    $ MAKE=gmake gmake
    
  6. installする。
    $ sudo bash
    # MAKE=gmake gmake install
    
    上書きインストールする場合は、gmake SIMATH_installとする。
    # MAKE=gmake gmake SIMATH_install
    
  7. /usr/local/bin上にbinaryのsymbolic linkを作成する。
    # MAKE=gmake gmake links
    # exit
    
  8. make cleanする。
    $ MAKE=gmake gmake clean
    $ cd ~
    
SIMATHを起動するには、SMとする。 また、SIMath Calculatorを起動するには、simcalcとする。
simcalcで、100!と楕円曲線 y^2=x^3-25x のMordel-Weil群の基底とねじれ点群を計算してみると、以下のようになる。
bash-2.05a$ simcalc

            *****                                            ****
            *****                                            ****
                                                             ****
*********** ***** ***************** *********** ***********  ****  ***********
*********** ***** ***************** *********** ***********  ****  ***********
***          ****  ****  ****  **** ****   ****         ***  ****  ****   ****
***********  ****  ****  ****  **** ****        ***********  ****  ****
***********  ****  ****  ****  **** ****        ***********  ****  ****
        ***  ****  ****  ****  **** ****   **** ***     ***  ****  ****   ****
*********** ***** ***** ***** ***** *********** ************ ***** ***********
*********** ***** ***** ***** ***** *********** ************ ***** ***********

                                                      version 4.5, 15 Mar 2000

Type "?help" for more information.

Type "?helpfunc" for more information about functions in simcalc.

Type "?NEW" for information about new functions in simcalc.

> 100!
      simcalc in free(): warning: junk pointer, too high to make sense.
         @ = 93326215443944152681699238856266700490715968264381621468592963895
 21759999322991560894146397615651828625369792082722375825118521091686400000000
 0000000000000000
>  E=EC(0,0,0,-25,0)
                   simcalc in free(): warning: junk pointer, too high to make sense.
         E = EC(-25, 0)
> basismwg(E)
               basis :  PT(-4, 6, 1)
simcalc in free(): warning: junk pointer, too high to make sense.
         @ = 1
> tors(E,3)
             structure:      Z/2Z x Z/2Z
  generators:     PT(0, 0, 1)
                  PT(5, 0, 1)
  torsion points: PT(5, 0, 1)
                  PT(0, 0, 1)
                  PT(-5, 0, 1)
                  PT(0, 1, 0)
simcalc in free(): warning: junk pointer, too high to make sense.
         @ = 4
>      
 
                                    B Y E
 
 


***   # GCs: 8        GC time: 0.02 s   # collected cells: 455166       ***
***   # blocks: 1     block size: 65535 # free cells:      14743        ***
***   total CPU time: 3.43 s                                            ***
bash-2.05a$ 

SIMATHを起動すると、以下のようになる。
bash-2.05a$ SM




                         **************************           
                         *                        *           
                         *      S I M A T H       *           
                         *                        *           
                         **************************           



                      Version 4.6 started at 21:26:46



 no source library
 current object library: /usr/local/simath/lib/libexample.a
 current file name:      gcd


   (N)AME:     (e,E)dit     (p)re        (o)bj        (c)omp       (C)comp 
   object:     (a)r name    (d)ir        ar(+)obj     ar(-)obj     (r)anlib
  USR-SRC:     (A)R NAME    (D)IR        AR(*)SRC     AR(_)SRC     (S)ELECT
   SM-SRC:     E(X)TRACT    (~,@,.)                                        
          (!)  ($)  (?)     (P)RINT      (H)ELP       (R)UN        (Q)UIT  
 < Q


                    SM terminated at 21:27:07


bash-2.05a$ 

参考文献




Last Update: 2005.06.12
H.Nakao

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