Next: , Previous: , Up: Top   [Index]


Appendix A GMPライブラリ制作者たち

Torbjörn Granlundは最初のGMPライブラリを作り上げ,現在もメイン開発者として頑張っています。 特に開発者を明記していないコードは全てTorbjörnが書いたものです。 GMP開発にあたっては 個人開発者や複数の組織が貢献を行ってきましたので,以下,時系列順に記しておきます。

Gunnar Sjödin と Hans Riesel はGMPの初期バージョンの開発に際して直面した数学的諸問題 解決に助力を行ってくれました。

Richard StallmanはGMPのインターフェースデザインに関して助言を行い,本マニュアルの 初期バージョンを改良してくれました。

Brian Beuning と Doug Lea はGMPの初期バージョンのテストを手伝い,クリエイティブな助言を してくれました。

カナダにあるヨーク大学のJohn Amanatidesは mpz_probab_prime_p関数を提供してくれました。

Paul ZimmermannはREDCベースの mpz_powm コード, Schönhage-Strassen FFT 乗算コード,Karatsuba 平方根コードを開発しました。また,GMP 4.2の Toom3コードを改良してくれました。また,GMP 2の開発を後押しし,多倍長パッケージとの比較 を行ってくれました。ECMNET projectを組織し,GMP 3の最適化に関して協力にバックアップして くれました。加えて,Torbjörnと共同でGMP 4.3のn乗根コードを新しく開発しました。

Ken Weber (ケント州立大学, Universidade Federal do Rio Grande do Sul) は,現在では廃止されたバージョンのmpz_gcd, mpz_divexact, mpn_gcd, mpn_bdivmodの開発に貢献しました。これらは一部,CNPq (Brazil) grant 301314194-2の援助によってなされたものです。

Cygnus SupportのPer BothnerはGMPのCygnus用の設定を手伝ってくれました。 また,価値ある助言と,中間リリースに際しては大量のテストを行ってくれました。

Joachim HollmanはGMP Version 2のmpf関数群と,mpz関数群の再設計を行いました。

Bennet Yeeはmpz_jacobimpz_legendreの初期バージョン開発に際して貢献を行いました。

Andreas Schwabはmpn/m68k/lshift.Smpn/m68k/rshift.S (現在は.asmファイルに変更)の開発に際して貢献を行いました。

Robert Harley(Inria, France と David Seal of ARM, England)は2進数内のビット数カウント方法 の改良法を示唆してくれました。また,GMP 3におけるKaratsuba乗算や3-way Toom-Cook乗算関数の最適化も 行ってくれました。ARM用アセンブラコードの開発にも貢献しています。

ストックホルム大学数学科のTorsten Ekedahlは,GMPの開発の節目節目で重要な示唆を行ってくれました。 彼の数学的専門性に基づく助言によっていくつかのアルゴリズムが改良できました。

Linus Nordbergは,autoconfを用いた新しい設定システムを構築し,新しい乱数関数 を開発しました。

Kevin Rydeの働きは多岐に渡っています。列挙すると,x86コードの最適化, m4アセンブラマクロ, パラメータのチューニング, 速度測定, 設定システム, インライン関数化, 除算可能性テスト,ビットスキャン方法,Jacobi記号計算,Fibonacci数列関数とLucas 数関数, printf関数とscanf関数の開発,perlインターフェース,デモ用数式パーサ, 本マニュアルにおけるアルゴリズムの章執筆, gmpasm-mode.elの開発,そして それ以外の雑多な改良一切合切,です。

Kent BoortzはMac OS 9に移植してくれました。

Steve Rootは,最適化したAlpha 21264のアセンブラコードの開発を手伝ってくれました。

Gerardo Ballabioはgmpxx.h C++ クラスインターフェースと,C++ istream 入力ルーチンを開発しました。

Jason Moxhamはmpz_fac_uiを書き直してくれました。

Pedro GimenoはMersenne Twisterを実装し,その他の乱数生成に関しても改良を行ってくれました。

Niels Möllerは準2乗GCD, 拡張GCDとjacobi記号関数コード, 2乗Hensel除算コード, GMP 4.3の新しい分割統治除算コード(Torbjörnと共同)の開発を行いました。 更に,GMP 4.3における新しいToom-Cook乗算コードの開発に助力し,GMP 5.0におけるToom-Cookアルゴリズム における値評価を簡略化するヘルパー関数を実装しました。 mpn_mulmod_bnm1関数も書き起こしています。また,GMP簡易利用のためのmini-gmpパッケージのメイン 開発者でもあります。

Alberto ZanoniとMarco Bodratoは不均衡乗算の方法について助言を行ってくれました。 また,Toom-Cook乗算における最適な値評価と補間方法を発見してくれました。

Marco BodratoはGMP 4.3における新しいToom-Cook乗算のコード開発に助力を行い, GMP 5.0の新しいToom-Cook乗算や2乗コードの開発を行ってくれました。 現在でも使用されているmpn_mulmod_bnm1関数,mpn_mullo_n関数,mpn_sqrlo関数のメイン作成者でもあります。 また,mpn_invert関数やmpn_invertappr関数も開発し,整数平方根の性能を向上させました。 現在でも使用されている組み合わせ 関数である,2項係数,階数,多段階数,素数階乗計算の著者でもあります。

David Harveyは内部関数であるmpn_bdiv_dbm1の開発に助言を行い,Toom-Cook乗算 に関連する除算を実装してくれました。また,アセンブラコードを高速化し,特にAMD64用のmpn_mul_basecase 関数を高速化しました。内部乗算関数であるmpn_mulmid_basecase, mpn_toom42_mulmid, mpn_mulmid_nや関連するヘルパールーチンも開発しました。

Martin Boij はmpn_perfect_power_pを開発しました。

Marc Glisseはgmpxx.hを改良してくれました。列挙すると,一時利用メモリ領域の削減(高速化に寄与), numeric_limitscommon_typeの特殊化, C++11 の利用(移動コンストラクタ,明示的ブール型変換, UDL), mpq_classからmpz_classへの変換の明示化, 引数が小さいコンパイル時定数である時の演算子の最適化, ヒープ割り当てをスタック割り当てに置き換え,です。 また,C++ストリームにおけるeofビット操作のバグ取りや,mpq/aors.cにおける不要な 除算除去を行ってくれました。

David S MillerはSPARC T3 とT4のアセンブラコードを開発しました。

Mark Sofroniouはmul_fft.cのデータ型を整理し,超巨大なオペランドにも対応できるようにしてくれました。

Ulrich Weigand はGMPをpowerpc64le ABIに移植してくれました。

(このリストは時系列順になっており,貢献の重要度によるものではありません。 リストに掲載されていない貢献者がいた場合は,その旨 gmp-devel@gmplib.orgにメールして下さい。)

GNU MP 2の浮動小数点演算関数の開発に当たっては,ESPRIT-BRA (Basic Research Activities) 6846 project POSSO (POlynomial System SOlving)の援助を受けました。

GMP 2, 3, 4.0の開発に当たっては, IDA Center for Computing Sciencesの援助を受けました。

GMP 4.3, 5.0, 5.1の開発に当たっては,スウェーデン戦略研究財団の援助を受けました。

Hans ThorsenはGMPのテスト環境としてSGIシステムを提供してくれました。感謝致します。