ソースコード一覧
sangi ソースコードのファイル構成と各ファイルの概要。
凡例:
ディレクトリ /
ファイル
— 概要
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 ファイル