LoginSignup
0
0

More than 5 years have passed since last update.

SBCLでMPFR

Last updated at Posted at 2017-11-11

爆死したCBCTF2017の供養も兼ねて、sbclのcontribにあったMPFRの使い方をメモ。

Common modulus2で3乗根の計算をすればいいことまでは分かったけど、そもそも計算の仕方が分からずに死んだ。
終わったあとに再び探しまわったら、sbclのcontribの中にMPFRのモジュールがあったので使い方を調べた。
日本語の情報がなかったのでメモしておく。

使い方

(require 'sb-mpfr)

(setf mpfr-f (sb-mpfr:coerce 27 'sb-mpfr:mpfr-float))
(sb-mpfr:coerce (sb-mpfr:k-root mpfr-f 3) 'integer) ;; => 3

こんな感じで使える。
サンプルでやってることは、27の3乗根をとって、整数に変換するというだけの処理。

要点は、最初にsb-mpfrをインポートしないといけないということと、数値をsb-mpfrモジュール中のcoercempfr-floatに変換する必要があることである。

他にも精度を任意に変えられたりするので、多倍長整数の演算をするときにも精度を保ちつつ計算できる。
lisp組み込みの関数だと時々変換できなくて計算できなかったりするので非常に助かる。

0
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0