C/C++言語で有限体(ガロア体)ライブラリを教えて!
こういった悩みにお答えします.
本記事の信頼性
- リアルタイムシステムの研究歴12年.
- 東大教員の時に,英語でOS(Linuxカーネル)の授業.
- 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校(UNC)コンピュータサイエンス学部で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発.
- プログラミング歴15年以上,習得している言語: C/C++,Python,Solidity/Vyper,Java,Ruby,Go,Rust,D,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
- 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」をGitHubにオープンソースとして公開.
- 2020年1月~現在はアメリカのノースカロライナ州チャペルヒルにあるGuarantee Happiness LLCのCTOとしてECサイト開発やWeb/SNSマーケティングの業務.2022年6月~現在はアメリカのノースカロライナ州チャペルヒルにあるJapanese Tar Heel, Inc.のCEO兼CTO.
- 最近は自然言語処理AIとイーサリアムに関する有益な情報発信に従事.
- (AI全般を含む)自然言語処理AIの論文の日本語訳や,AIチャットボット(ChatGPT,Auto-GPT,Gemini(旧Bard)など)の記事を50本以上執筆.アメリカのサンフランシスコ(広義のシリコンバレー)の会社でプロンプトエンジニア・マネージャー・Quality Assurance(QA)の業務委託の経験あり.
- (スマートコントラクトのプログラミングを含む)イーサリアムや仮想通貨全般の記事を200本以上執筆.イギリスのロンドンの会社で仮想通貨の英語の記事を日本語に翻訳する業務委託の経験あり.
こういった私から学べます.
C言語を独学で習得することは難しいです.
私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.
私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!
独学が難しいあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!
目次
有限体(ガロア体)
有限体(ガロア体)とは,代数学において,有限個の元からなる体(四則演算が定義され,閉じている有限集合)のことです.
有限体の解説は,こちらの動画がわかりやすいです.
また,有限体は,仮想通貨で利用されている暗号理論の技術です.
仮想通貨イーサリアムを知りたいあなたはこちらからどうぞ.
【C/C++言語】おすすめの有限体ライブラリ
C/C++言語でおすすめの有限体ライブラリを紹介します.
C言語:MPFQ
MPFQは,C言語の有限体ライブラリです.
MPFQの目的は,速度と使いやすさの両立です.
MPFQの主な対象は,素数のガロア体である\(\mathbb{F}_{2^n}\)と\(\mathbb{F}_{p}\)(\(p\)が素数)です.
1 |
$ git clone https://gitlab.inria.fr/mpfq/mpfq |
C言語:PARI/GP
PARI/GPは,幅広く使われている計算機代数システムで,整数論(因数分解,代数的数理論,楕円曲線等) における計算を高速に行なえるよう設計されているC言語の有限体ライブラリです.
また,行列,多項式,冪級数,代数的数などの数学的観念の計算のための便利な数多くの機能が含まれています.
PARIは,高速計算用のC言語のライブラリとして利用可能です.
PARI/GPはこちらからダウンロードできます.
C言語:moepgf
moepgfは,GF(2),GF(4),GF(16),GF(256)の高性能演算を提供するC言語の有限体ライブラリです.
※GF(X)はX元体で,例えばGF(2)は2元体になります.
GF(2),GF(4),GF(16),GF(256)を対象に,SSE/AVX/NEON SIMD拡張を用いた高性能な演算が可能です.
1 |
$ git clone https://github.com/moepinet/libmoepgf |
C++言語:libff
libffは,有限体および楕円曲線用のC++言語の有限体ライブラリです.
libffは,SCIPR Labという簡潔な完全性とプライバシーを提供する暗号証明システムの実用化を目指す研究者による複数機関にわたる学術共同体により開発されました.
SCIPR Labは,多くの論文を発表し,暗号理論のライブラリをオープンソースとして公開しています.
1 |
$ git clone https://github.com/scipr-lab/libff |
C++言語:FFLAS-FFPACK
FFLAS-FFPACKは,有限体または整数環上の密行列および疎行列を用いた線形代数のための基本ルーチン群を提供するC++言語の有限体ライブラリです.
有限体に関しては汎用的であり,様々な大きさのフィールドと実装に対応できます.
1 |
$ git clone https://github.com/linbox-team/fflas-ffpack |
C++言語:Givaro
Givaroは,算術・代数計算のためのC++言語の有限体ライブラリです.
Givaroの特徴は,多くの数学的実体の基本的な演算を実装していることです.
具体的には,素数体,外延体,有限体,有限環,多項式,代数的数,任意精度整数,有理数(GMPのC++ラッパー) ,ベクトル,行列(密,疎,構造),一変量多項式(したがって再帰的多変量)等の基本的代数的オブジェクトを操作するデータ構造およびテンプレートクラスを提供しています.
1 |
$ git clone https://github.com/linbox-team/givaro |
まとめ
C/C++言語でおすすめの有限体(ガロア体)ライブラリを紹介しました.
あなたに合う有限体ライブラリを見つけましょう!
C言語を独学で習得することは難しいです.
私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.
私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!
独学が難しいあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!