ソースコード一覧

sangi ソースコードのファイル構成と各ファイルの概要。

ZIP でまとめてダウンロード

凡例: ディレクトリ / ファイル — 概要
sangi/
├── CMakeLists.txt— トップレベル CMake 設定
├── LICENSE— LGPL-3.0 ライセンス
├── README.md— プロジェクト概要
│
├── examples/— サンプルプログラム
│   ├── CMakeLists.txt— サンプル用ビルド設定
│   ├── example_int.cpp— Int API サンプル
│   ├── example_int_demo.cpp— Int デモ (Fibonacci, RSA, メルセンヌ素数, 階乗, GCD)
│   ├── example_float.cpp— Float API サンプル
│   ├── example_float_demo.cpp— Float デモ (定数100桁, π100万桁, Ramanujan, Machin公式)
│   ├── example_rational.cpp— Rational API サンプル
│   ├── example_rational_demo.cpp— Rational デモ (浮動小数点の罠, 連分数, Bernoulli数, Stern-Brocot)
│   ├── example_complex.cpp— Complex API サンプル (基本演算, マンデルブロ, 多倍長 Complex<Float>)
│   ├── example_vector.cpp— Vector API サンプル
│   ├── example_vector_demo.cpp— Vector デモ (PageRank, 3D反射, コサイン類似度)
│   ├── example_matrix.cpp— Matrix API サンプル
│   ├── example_matrix_demo.cpp— Matrix デモ (3 シナリオで機能紹介)
│   ├── example_linalg.cpp— LinAlg API サンプル (分解, 固有値, 反復法)
│   ├── example_polynomial.cpp— Polynomial API サンプル (四則演算, 微分・積分, GCD, 直交多項式)
│   ├── example_polynomial_factorization.cpp— 多項式因数分解 (Yun + 有理根 + Kronecker)
│   ├── example_roots.cpp— 求根 API サンプル (Brent, Newton, 多項式の全複素根)
│   ├── example_optimization.cpp— 最適化 API サンプル (Rosenbrock BFGS, 曲線フィッティング, 線形計画)
│   ├── example_fft.cpp— FFT API サンプル (複素/実数 FFT, 畳み込み, 振幅スペクトル)
│   ├── example_precision_showdown.cpp— 多倍長精度デモ (double vs Float 精度比較)
│   ├── example_mp.cpp— 多倍長演算 総合サンプル (Int + Float + Rational)
│   │
│   ├── example_doc_int_samples.cpp— api/Int.html 掲載コードの検証ハーネス
│   ├── example_doc_float_samples.cpp— api/Float.html 掲載コードの検証ハーネス
│   ├── example_doc_rational_samples.cpp— api/Rational.html 掲載コードの検証ハーネス
│   ├── example_doc_complex_samples.cpp— api/Complex.html 掲載コードの検証ハーネス
│   ├── example_doc_vector_samples.cpp— api/Vector.html 掲載コードの検証ハーネス
│   ├── example_doc_matrix_samples.cpp— api/Matrix.html 掲載コードの検証ハーネス
│   ├── example_doc_linalg_samples.cpp— api/LinAlg.html 掲載コードの検証ハーネス
│   ├── example_doc_polynomial_samples.cpp— api/Polynomial.html 掲載コードの検証ハーネス
│   ├── example_doc_roots_samples.cpp— api/Roots.html 掲載コードの検証ハーネス
│   ├── example_doc_optimization_samples.cpp— api/Optimization.html 掲載コードの検証ハーネス
│   ├── example_doc_fft_samples.cpp— api/FFT.html 掲載コードの検証ハーネス
│   ├── example_doc_tensor_samples.cpp— api/Tensor.html 掲載コードの検証ハーネス
│   └── example_doc_concepts_samples.cpp— api/Concepts.html 掲載コードの検証ハーネス
│
├── include/— 公開ヘッダー
│   └── math/
│       ├── concepts/
│       │   └── algebraic_concepts.hpp— 50+ 代数的 concepts (Ring, Field, VectorSpace 等)
│       │
│       ├── fft/— FFT (NTT 乗算が依存)
│       │   ├── fft.hpp— FFT インターフェース (Complex FFT)
│       │   ├── fft2d.hpp— 2D FFT
│       │   ├── fft3d.hpp— 3D FFT
│       │   ├── fft_batch.hpp— バッチ FFT
│       │   ├── fft_simd.hpp— SIMD 高速化 FFT
│       │   ├── fft_utils.hpp— FFT ユーティリティ
│       │   └── ntt.hpp— NTT (数論変換) 公開 API
│       │
│       ├── roots/— 求根アルゴリズム
│       │   ├── root_finding.hpp— 求根 統合ヘッダー
│       │   ├── root_finding_base.hpp— 共通基盤 (RootResult, 停止条件)
│       │   ├── root_finding_1d.hpp— 1 次元求根 (二分法, Brent, Newton, secant, TOMS748)
│       │   ├── root_finding_nd.hpp— 多次元求根 (Newton, Broyden)
│       │   └── polynomial_roots.hpp— 多項式全複素根 (Jenkins-Traub, Laguerre, Aberth-Ehrlich)
│       │
│       ├── linalg/— 線形代数 (分解, ソルバー, 固有値)
│       │   ├── decomposition.hpp— 行列分解 (LU, QR, Cholesky, SVD)
│       │   ├── solvers.hpp— 連立方程式ソルバー (直接法)
│       │   ├── iterative_solvers.hpp— 反復法ソルバー (CG, GMRES, BiCGSTAB)
│       │   ├── eigenvalues.hpp— 固有値・固有ベクトル (QR 法, べき乗法)
│       │   ├── matrix_functions.hpp— 行列関数 (exp, log, sqrt, norm)
│       │   ├── sylvester.hpp— Sylvester 方程式 A·X + X·B = C ソルバ
│       │   ├── HNF.hpp— Hermite 標準形 (HNF)
│       │   ├── RationalMatrix.hpp— 有理数行列 (共通分母方式, Bareiss 行列式, Dixon 厳密解)
│       │   ├── dixon_solve.hpp— Dixon p-進持ち上げによる整数線形系の厳密解
│       │   ├── blas.hpp— BLAS レベル 1/2/3 操作
│       │   ├── sparse_lu.hpp— 疎行列 LU 分解
│       │   ├── sparse_qr.hpp— 疎行列 QR 分解
│       │   ├── simplicial_cholesky.hpp— 疎行列 Cholesky 分解 (simplicial)
│       │   ├── sparse_ordering.hpp— 疎行列の充填低減順序付け (AMD)
│       │   ├── RandomizedSVD.hpp— ランダム化 SVD (大規模低ランク近似)
│       │   ├── vector_space_utilities.hpp— ベクトル空間ユーティリティ (基底, 直交化)
│       │   ├── balance.hpp— 行列バランス (固有値計算前処理, dgebal 相当)
│       │   ├── balance_sparse.hpp— 疎行列バランス (Osborne 法)
│       │   ├── static_dims.hpp— 静的サイズ行列の次元ヘルパ
│       │   └── linalg.hpp— 線形代数アンブレラ (全コンポーネント一括 include)
│       │
│       ├── optimization/— 最適化 (1次元/多次元、線形計画、凸最適化)
│       │   ├── optimization_base.hpp— 共通型 (OptimizationOptions, OptimizationResult, LineSearchParams)
│       │   ├── optimization_1d.hpp— 1次元最小化宣言 (Golden Section, Brent)
│       │   ├── optimization_1d_impl.hpp— 1次元最小化実装
│       │   ├── optimization_nd.hpp— 多次元最小化宣言 (BFGS, L-BFGS, Nelder-Mead, CMA-ES, jSO 等)
│       │   ├── optimization_nd_impl.hpp— 多次元最小化実装
│       │   ├── linear_programming.hpp— 線形計画宣言 (シンプレックス法)
│       │   ├── linear_programming_impl.hpp— 線形計画実装
│       │   ├── ConvexOptimization.hpp— 凸最適化宣言 (FISTA, ADMM)
│       │   ├── ConvexOptimization_impl.hpp— 凸最適化実装
│       │   ├── SimulatedAnnealing.hpp— 焼きなまし法 (汎用版)
│       │   └── robust_lp.hpp— ロバスト線形計画 (不確実性下の LP)
│       │
│       ├── random/— 乱数・確率分布 (Random)
│       │   ├── random.hpp— 確率分布と乱数エンジン (統合ヘッダー)
│       │   ├── distributions.hpp— 各種確率分布
│       │   ├── distributions_extra.hpp— 非心分布・追加の連続分布
│       │   ├── normal.hpp— 正規分布の高速サンプリング
│       │   ├── quasi_random.hpp— 準乱数列 (低食い違い列)
│       │   └── random_sampling.hpp— 標準/多倍長 両対応のサンプリング
│       │
│       ├── approx/— 近似
│       │   └── approximation.hpp— 関数近似 (回帰, Chebyshev, Padé, 連分数, 有理補間)
│       │
│       ├── interpolation/— 補間
│       │   ├── Interpolation.hpp— 補間 (Lagrange, Newton, 三次スプライン, PCHIP, 重心式)
│       │   └── BSpline.hpp— B-スプライン基底・補間・回帰 (De Boor 法)
│       │
│       ├── special/— 特殊関数
│       │   ├── airy.hpp— エアリー関数 Ai, Bi とその導関数
│       │   ├── anger_weber.hpp— アンガー関数 Jν, ウェーバー関数 Eν
│       │   ├── bessel.hpp— ベッセル関数 Jν, Yν, Iν, Kν, 球ベッセル, ハンケル
│       │   ├── clausen.hpp— クラウゼン関数 Cl₂, 一般化 Cl_n / Sl_n
│       │   ├── coulomb.hpp— クーロン波動関数 F_L, G_L, 規格化定数 C_L
│       │   ├── coupling.hpp— 角運動量結合係数 (Wigner 3-j/6-j/9-j, Clebsch-Gordan)
│       │   ├── dawson.hpp— ドーソン関数 F(x)
│       │   ├── debye.hpp— デバイ関数 D_n(x) (固体物理)
│       │   ├── elliptic.hpp— 楕円積分 (Carlson/Legendre 形), Jacobi 楕円関数
│       │   ├── error_function.hpp— 誤差関数族 (erf, erfc, erfcx, erfi, erfInv)
│       │   ├── exponential_integral.hpp— 指数積分 Ei, 三角積分 Si/Ci, 二重対数
│       │   ├── factorial_utils.hpp— 階乗系ユーティリティ (二重階乗, Pochhammer, 二項係数)
│       │   ├── fermi_dirac.hpp— フェルミ・ディラック積分 F_s(x)
│       │   ├── fresnel.hpp— フレネル積分 S(x), C(x)
│       │   ├── gamma.hpp— ガンマ関数族 (Γ, lnΓ, ディガンマ 等)
│       │   ├── hypergeometric.hpp— 超幾何関数 ₁F₁, ₂F₁, ₀F₁
│       │   ├── hypergeometric_pq.hpp— 一般 ₚFq 超幾何関数, Meijer G 関数
│       │   ├── kelvin.hpp— ケルビン関数 ber, bei, ker, kei (0 次)
│       │   ├── lambert_w.hpp— ランベルト W 関数 W₀, W₋₁
│       │   ├── legendre.hpp— ルジャンドル多項式, 球面調和関数, Jacobi 多項式
│       │   ├── lerch.hpp— レルヒ超越 Φ(z,s,a) (多重対数/Hurwitz 統合)
│       │   ├── mittag_leffler.hpp— ミッタク・レフラー関数 E_α, E_{α,β}
│       │   ├── orthogonal_classical.hpp— 古典直交多項式 (Hermite, Laguerre, Chebyshev)
│       │   ├── owens_t.hpp— オーエン T 関数 T(h, a)
│       │   ├── special.hpp— 特殊関数モジュール統合ヘッダー
│       │   ├── special_common.hpp— 特殊関数テンプレート共通基盤
│       │   ├── spheroidal.hpp— 回転楕円体波動関数 (角度関数・固有値)
│       │   ├── struve.hpp— シュトルーベ関数 H_ν, 変形 L_ν
│       │   ├── theta.hpp— ヤコビ テータ関数 θ₁〜θ₄
│       │   ├── transport.hpp— 輸送関数 J_n, シンクロトロン関数 F, G
│       │   ├── weierstrass.hpp— ワイエルシュトラス楕円関数 ℘, ζ_W, σ_W
│       │   └── zeta.hpp— リーマン/フルヴィッツ ゼータ, ディリクレ η
│       │
│       └── core/
│           ├── basic_types.hpp— 基本型定義 (word_t, dword_t 等)
│           ├── common.hpp— 共通ユーティリティ
│           ├── endian_utils.hpp— エンディアン変換
│           ├── numeric_state.hpp— NaN/Infinity 状態管理
│           ├── traits.hpp— 型特性 (統合ヘッダー)
│           ├── traits_part1.hpp— 型特性 Part 1 (numeric_traits)
│           ├── traits_part2.hpp— 型特性 Part 2 (PacketTraits 等)
│           ├── power.hpp— 汎用べき乗 (pow テンプレート)
│           ├── generic_math.hpp— 標準/多倍長 両対応の数学定数ヘルパ
│           ├── expr_templates.hpp— 式テンプレート基盤 (VecExpr, 演算子)
│           ├── simd_traits.hpp— SIMD パケット型特性 (AVX2/SSE)
│           ├── vector.hpp— Vector, StaticVector, VectorMap クラス
│           ├── BaseVector.hpp— ベクトル共通基底クラス (Vector の親)
│           │
│           ├── vector/— Vector 実装詳細
│           │   ├── vector_base.hpp— Vector 基底クラス
│           │   ├── vector_operations.hpp— Vector 演算 (dot, cross, norm 等)
│           │   ├── vector_storage.hpp— Vector ストレージ
│           │   └── vector_view.hpp— VectorView / ConstVectorView ビュークラス
│           │
│           ├── matrix.hpp— Matrix クラス (密行列, 演算子, 転置, ブロック操作)
│           ├── BaseMatrix.hpp— 行列共通基底クラス (Matrix/StaticMatrix の親)
│           ├── Tensor.hpp— Tensor クラス (任意階数テンソル)
│           ├── Polynomial.hpp— Polynomial<T> クラス (Horner, 除算, GCD, 直交多項式)
│           ├── Polynomial_factorization.hpp— 多項式因数分解 (Yun + 有理根 + Kronecker), 終結式, 判別式
│           ├── RationalFunction.hpp— 有理関数 P(x)/Q(x) クラス
│           ├── RationalFunction_partialFractions.hpp— 部分分数分解 (Heaviside 法)
│           ├── FactoredInteger.hpp— 因子・冪指数ペアの表現 (factorize の戻り値型)
│           ├── Complex.hpp— Complex<T> クラス (多倍長対応複素数)
│           ├── Quaternion.hpp— Quaternion<T> クラス (四元数)
│           ├── sparse_matrix.hpp— SparseMatrix クラス (CSR/CSC 疎行列)
│           ├── sparse_matrix_algorithms.hpp— 疎行列アルゴリズム (SpMV, 変換)
│           ├── convergence_criteria.hpp— 収束判定基準 (反復法用)
│           ├── computation_policy.hpp— 計算ポリシー (精度・並列制御)
│           │
│           ├── computation/— 計算バックエンド
│           │   ├── simd_backend.hpp— SIMD バックエンド (AVX2/SSE ディスパッチ)
│           │   └── mkl_backend.hpp— MKL バックエンド (BLAS/LAPACK ラッパ + 非 MKL 時 stub)
│           │
│           ├── modular/— 剰余演算 (NTT が依存)
│           │   ├── ModularInt.hpp— 剰余整数型 ModularInt<P>
│           │   ├── ModularIntTraits.hpp— ModularInt 型特性
│           │   └── CRT.hpp— 中国剰余定理 (CRT)
│           │
│           └── mp/— 多倍長演算
│               ├── error.hpp— エラー型 (NumericError 列挙)
│               ├── FFT.hpp— FFT インターフェース
│               ├── ThreadPool.hpp— NTT 並列化用スレッドプール
│               │
│               ├── Int.hpp— Int クラス (統合ヘッダー)
│               ├── Int/— Int 実装詳細
│               │   ├── IntBase.hpp— Int コア: コンストラクタ, 比較, ビット操作
│               │   ├── IntTraits.hpp— Int 型特性・定数
│               │   ├── IntSpecialStates.hpp— NaN/Infinity ファクトリ・判定
│               │   ├── IntOps.hpp— 算術演算 (add, sub, abs, negate)
│               │   ├── IntMultiplication.hpp— 乗算 (Basecase, Karatsuba, Toom-3/4/6/8, NTT)
│               │   ├── IntDivision.hpp— 除算 (Schoolbook, Burnikel-Ziegler)
│               │   ├── IntGCD.hpp— GCD/LCM (Binary GCD), 拡張ユークリッド
│               │   ├── IntModular.hpp— 冪剰余 (Montgomery), モジュラ逆元
│               │   ├── IntPrime.hpp— 素数判定 (Miller-Rabin), nextPrime, Pollard rho
│               │   ├── IntSqrt.hpp— 整数平方根, n乗根, isSquare, isPerfectPower
│               │   ├── IntCombinatorics.hpp— 階乗, 二重階乗, 二項係数, Fibonacci, Lucas
│               │   ├── IntIO.hpp— 入出力 (toString, fromString, std::format)
│               │   ├── IntFactorTable.hpp— 小さい素数テーブル (篩法用)
│               │   ├── IntRandom.hpp— 乱数生成 (一様分布, 範囲指定)
│               │   ├── IntNumberTheory.hpp— 数論関数 (Euler φ, Möbius μ, Jacobi, Legendre 等)
│               │   ├── IntFactorization.hpp— 素因数分解 (Trial, Pollard rho, ECM 等)
│               │   ├── IntSequence.hpp— 数論的数列 (Bernoulli, Stirling 等)
│               │   ├── MpnOps.hpp— mpn レベル演算 (リム配列の加減乗除)
│               │   ├── PrimeNtt.hpp— 素数 NTT (AVX2 バタフライ, Montgomery)
│               │   ├── SmallPrimeNtt.hpp— 小素数 NTT
│               │   ├── DoubleFft.hpp— double 精度 FFT 乗算
│               │   ├── GoldilocksNtt.hpp— Goldilocks 素数 NTT
│               │   ├── SboWords.hpp— Small Buffer Optimization (SBO) ワード配列
│               │   ├── ScratchArena.hpp— スクラッチメモリアリーナ
│               │   ├── UInt128.hpp— 128-bit 符号なし整数 (MSVC/GCC 対応)
│               │   └── compiler_intrinsics.hpp— コンパイラ intrinsic 互換層 (MSVC/GCC)
│               │
│               ├── Float.hpp— Float クラス (多倍長浮動小数点)
│               ├── Float/
│               │   └── FloatMath.hpp— Float 数学関数宣言 (exp, log, sin, cos 等)
│               ├── FloatOps.hpp— Float 3引数演算 (バッファ再利用)
│               │
│               ├── Rational.hpp— Rational クラス (統合ヘッダー)
│               └── Rational/— 有理数
│                   ├── RationalBase.hpp— Rational 本体: 四則演算, 比較, 変換
│                   ├── RationalConstants.hpp— Bernoulli 数, Stirling 係数
│                   └── RationalTraits.hpp— Rational 型特性
│
├── lib/
│   └── CMakeLists.txt— ライブラリビルド設定 (sangi_int, sangi_float, sangi_rational)
│
└── src/— 実装ファイル
    └── math/
        ├── core/
        │   ├── matrix.cpp— Matrix<T> 明示的インスタンス化 (float, double)
        │   ├── vector.cpp— Vector<T> 明示的インスタンス化 (float, double)
        │   │
        │   └── mp/— 多倍長演算
        │       ├── Int/
        │       │   ├── IntBase.cpp— Int コア実装 (コンストラクタ, ビット操作)
        │       │   ├── IntOperators.cpp— 演算子オーバーロード (+, -, *, /, %, <<, >>)
        │       │   ├── IntOps.cpp— 算術演算の実装
        │       │   ├── IntGCD.cpp— GCD/LCM/拡張ユークリッド実装
        │       │   ├── IntModular.cpp— Montgomery 冪剰余・逆元実装
        │       │   ├── IntPrime.cpp— Miller-Rabin, nextPrime, Pollard rho 実装
        │       │   ├── IntAPRCL.cpp— APR-CL 決定的素数証明 (isProvablePrime)
        │       │   ├── IntSqrt.cpp— 平方根 (Newton法), n乗根, isPerfectPower
        │       │   ├── IntCombinatorics.cpp— 階乗 (篩法), Fibonacci (高速倍加), Lucas
        │       │   ├── IntIO.cpp— 文字列変換・入出力実装
        │       │   ├── IntFactorTable.cpp— 素数テーブル生成
        │       │   ├── IntSpecialStates.cpp— NaN/Infinity 特殊状態実装
        │       │   ├── IntFactorization.cpp— 素因数分解 (試し割り, ECM ディスパッチ)
        │       │   ├── mpn_x64.asm— x64 アセンブリ (MULX/ADCX/ADOX mpn プリミティブ)
        │       │   ├── mpn_x64_add.asm— x64 加減算 (addmul_1, submul_1)
        │       │   ├── mpn_x64_div.asm— x64 除算 (divmod_1)
        │       │   ├── mpn_x64_mont.asm— x64 Montgomery 乗算 (512-bit 特化カーネル)
        │       │   ├── mpn_x64_mul.asm— x64 乗算 (mul_basecase)
        │       │   └── mpn_x64_mod1.asm— x64 1リム剰余 (preinv, mod_1_1 相当)
        │       │
        │       ├── Float/
        │       │   ├── Float.cpp— Float 実装 (演算子, toDecimalString, 丸め)
        │       │   └── FloatMath.cpp— 数学関数実装 (exp, log, sin, cos, π, e 等)
        │       │
        │       └── Rational/
        │           ├── Rational.cpp— Rational 実装 (I/O, 変換)
        │           └── RationalConstants.cpp— Bernoulli 数・Stirling 係数の実装
        │
        └── fft/— FFT 実装
            ├── fft.cpp— FFT/RealFFT/FFTEngine 明示的インスタンス化 (float, double)
            ├── fft_batch_stub.cpp— バッチ FFT スタブ
            └── fft_batch_avx2.asm— x64 バッチ FFT カーネル (AVX2)
ファイル数: ヘッダー 121 + ソース 21 + アセンブリ 7 + サンプル 32 + CMake 3 + その他 2 = 計 186 ファイル