README.txt |
|
LICENSE.txt |
|
|
|
kv/ |
このdirectory以下が本体 |
|
|
kv/convert.hpp |
数値型のプログラミングのため全体的に使われている |
kv/constants.hpp |
定数の定義 |
|
|
kv/interval.hpp |
区間演算 |
kv/rdouble.hpp |
内部にdoubleを持つ区間演算で精度保証するために必要な追加ファイル(実体はrdouble-hwround.hpp or rdouble-nohwround.hpp or rdouble-avx512.hpp ) |
kv/rdouble-hwround.hpp |
内部にdoubleを持つ区間演算を丸めモード変更で実現 |
kv/rdouble-nohwround.hpp |
内部にdoubleを持つ区間演算を丸めモード変更を使わずに実現(-DKV_NOHWROUNDで有効に) |
kv/rdouble-avx512.hpp |
内部にdoubleを持つ区間演算をAVX-512の丸め方向指定付き命令で実現 |
kv/conv-double.hpp |
doubleと文字列の間の丸め指定付き変換。単体でも使用可能。 |
kv/hwround.hpp |
丸めモード変更 |
kv/interval-vector.hpp |
区間ベクトル、区間行列のための関数群 |
|
|
kv/dd.hpp |
4倍精度計算 |
kv/rdd.hpp |
内部にddを持つ区間演算で精度保証するために必要な追加ファイル(実体はrdd-hwround.hpp or rdd-nohwround.hpp or rdd-avx512.hpp) |
kv/rdd-hwround.hpp |
内部にddを持つ区間演算を丸めモード変更で実現 |
kv/rdd-nohwround.hpp |
内部にddを持つ区間演算を丸めモード変更を使わずに実現(-DKV_NOHWROUNDで有効に) |
kv/rdd-avx512.hpp |
内部にddを持つ区間演算をAVX-512の丸め方向指定付き命令で実現 |
kv/conv-dd.hpp |
ddと文字列の間の丸め指定付き変換。単体でも使用可能。 |
kv/fpu53.hpp |
Intel CPUのFPUの計算精度を53bitにセットする (version 0.4.54で使用しなくなった) |
|
|
kv/rfloat64x.hpp |
内部にIntel 80bit浮動小数点数 (_Float64x) を持つ区間演算を実現 |
kv/ddx.hpp |
Intel 80bit浮動小数点数 (_Float64x) を2つ繋げた全長160bit、指数部15bit、仮数部128bitの計算 |
kv/rddx.hpp |
内部にddx型を持つ区間演算を実現 |
kv/conv-float64x.hpp |
_Float64xと文字列の間の丸め指定付き変換 |
kv/conv-ddx.hpp |
ddxと文字列の間の丸め指定付き変換 |
|
|
kv/mpfr.hpp |
mpfrのラッパー |
kv/rmpfr.hpp |
内部にmpfrを持つ区間演算を実現するのに必要な追加ファイル |
|
|
kv/interval-conv.hpp |
(廃止予定。interval-converter.hppを使って下さい。) interval<double>, interval<dd>, interval<mpfr>の間の相互変換。double, dd, mpfrの間の丸め方向付き相互変換 |
kv/interval-converter.hpp |
interval<double>, interval<dd>, interval<mpfr>, interval<_Float64x>, interval<ddx>の間の相互変換。double, dd, mpfr, _float64x, ddxの間の丸め方向付き相互変換 |
|
|
kv/complex.hpp |
複素数演算 |
|
|
kv/autodif.hpp |
自動微分 |
|
|
kv/affine.hpp |
affine arithmetic |
|
|
kv/psa.hpp |
ベキ級数演算 |
|
|
kv/kraw-approx.hpp |
近似解を元にした非線形方程式に対するKrawczyk法 |
kv/make-candidate.hpp |
候補者集合の生成のための小さな関数 |
|
|
kv/allsol.hpp |
非線形方程式の全解探索 |
kv/allsol-simple.hpp |
allsol.hppの機能を削ってsimpleにしたもの |
kv/allsol-affine.hpp |
Affineを使った全解探索 (十分テストされていない) |
|
|
kv/ode.hpp |
常微分方程式の精度保証 (psaを使った1step法、あるいはそれを繋いだもの) |
kv/ode-autodif.hpp |
ode.hppで初期値をautodif型にしたもの。初期値に関する微分が出来る。 |
kv/ode-maffine.hpp |
ode.hppをaffineで接続したもの。 |
kv/ode-param.hpp |
odeを解くためのいろいろなパラメータを定義したもの |
|
|
kv/ode-maffine2.hpp |
ode-maffineの高速版。初期値に関する微分ができない。 |
kv/ode-affine.hpp |
psaによる1step法で内部にまでaffineを使ったもの。高性能なはずだが遅い。 |
kv/ode-affine-wrapper.hpp |
ode-affine.hppを少し簡略化したもの。 |
kv/ode-qr.hpp |
psa法による1step法を、QR分解で接続したもの。 |
kv/ode-lohner.hpp |
Lohnerによる1step法を実装したもの。初期値に関する微分が出来るversionも含む。十分テストされていない。 |
kv/ode-qr-lohner.hpp |
Lohnerによる1step法をQR分解で接続したもの。 |
kv/ode-callback.hpp |
ode-*.hppでのcallback関数のためのbaseクラス |
kv/odescale.hpp |
odeのscalingに関する実験。 |
kv/ode-nv.hpp |
単なるTaylor展開によるode。精度保証しない。 |
kv/ode-autodif-nv.hpp |
ode-nv.hppの初期値をautodif型にしたもの。初期値に関する微分が出来る。精度保証しない。 |
kv/rk.hpp |
単なる4次のルンゲクッタ法。精度保証しない。 |
kv/rkf45.hpp |
RKF45。精度保証しない。 |
|
|
kv/strobomap.hpp |
ode solverを使って、いわゆるストロボマップを定義。これとkraw-approxやallsolを組み合わせられる。 |
kv/poincaremap.hpp |
ode solverを使ってポアンカレマップを定義。これとkraw-approxやallsolを組み合わせられる。 |
|
|
kv/defint.hpp |
精度保証付き数値積分 |
kv/defint-newtoncotes.hpp |
複合Newton-Cotes公式による精度保証付き数値積分 |
kv/defint-singular.hpp |
端点に特異性を持つ関数の精度保証付き数値積分 |
kv/doubleintegral.hpp |
精度保証付き二重積分。三角形領域も。 |
kv/double-newtoncotes.hpp |
複合Newton-Cotes公式による精度保証付き二重積分 |
kv/doubleint-curvededge.hpp |
複合Newton-Cotes公式による曲がった辺を持つ長方形領域での精度保証付き二重積分 |
kv/doubleint-singular.hpp |
辺及び一点に特異性を持つ関数の精度保証付き二重積分 |
|
|
kv/lobachevsky.hpp |
Lobachevsky関数の精度保証。まだまだ試作段階。 |
kv/gamma.hpp |
gamma, digamma, trigamma, lgamma関数の精度保証。まだまだ試作段階。 |
kv/beta.hpp |
beta関数の精度保証。まだまだ試作段階。 |
kv/hypergeom.hpp |
ガウスの超幾何関数の精度保証。まだまだ試作段階。 |
kv/airy.hpp |
Airy関数の精度保証。まだまだ試作段階。 |
kv/bessel.hpp |
第1種Bessel関数の精度保証。まだまだ試作段階。 |
kv/geoseries.hpp |
公比が区間である等比級数の和を求める関数 |
|
|
kv/matrix-inversion.hpp |
(近似)逆行列。ublasの単なるラッパー。他にもいろいろあるがundocumented。 |
kv/qr.hpp |
(近似)QR分解。単なるグラムシュミットの直交化。 |
kv/vleq.hpp |
線形方程式の精度保証。何の工夫もない基本的なもの。 |
kv/eig.hpp |
非対称実行列の固有値と固有ベクトルを(近似的に)計算するeig関数と、非対称実行列の固有値を精度保証付きで計算するveig関数。高安 亮紀氏の提供による。 |
kv/lp.hpp |
線形計画問題を解く単体法の精度保証。十分テストされていない。 |
kv/optimize.hpp |
最適化問題を解く。十分テストされていない。 |
kv/kkt.hpp |
目的関数、不等式制約、等式制約からKKT方程式を作成する。 |
kv/newton.hpp |
単なるNewton法。精度保証しない。十分テストされていない。 |
kv/dka.hpp |
精度保証しないDurand Kerner Aberth法を行うdka関数と、Smithの定理を用いて精度保証するvdka関数。十分テストされてない。 |
kv/cardano-ferrari.hpp |
3/4次の多項式の解をCardano/Ferrariの方法で直接区間演算で計算する。実用性はともかく、面白そうなので作ってみた。 |
kv/highderiv.hpp |
ベキ級数演算を用いて、与えられた1変数関数の高階微分を計算する。 |
|
|
kv/matplotlib.hpp |
python+matplotlibの呼び出しによる簡易グラフィックス |
kv/psa-plot.hpp |
psa型をmatplotlibで描画。 |
kv/jointrange.hpp |
affine arithmeticのjoint rangeをmatplotlibで描画。 |
|
|
kv/all.hpp |
kv以下の全ファイルをまとめてinclude。コンパイル時間がかかるのでお勧めしない。 |
|
|
test/ |
以下はテスト用。kv以下の対応するファイルのテスト。呼び出し方のサンプルでもある。 |
|
なるべく機能を網羅することを意図しているが、現時点では必ずしも網羅しているわけでは無い。 |
|
|
test/test-interval.cc |
区間演算のテスト |
test/test-interval-mult.cc |
区間演算の乗算のテスト |
test/test-rounding.cc |
加減乗除と平方根で丸めの向きがちゃんと変わっているかどうかの簡易テスト |
test/test-nohwround.cc |
-DKV_NOHWROUNDで用いられる丸め変更のエミュレートが正しく動くかどうかのテスト |
test/test-fma.cc |
fma命令が正しく動いているかどうかの簡易テスト |
test/test-dd.cc |
ddのテスト |
test/test-idd.cc |
ddを両端に持つ区間演算のテスト |
test/test-ifloat64x.cc |
_Float64xを両端に持つ区間演算のテスト |
test/test-ddx.cc |
_Float64xを2つくっつけたddx型のテスト |
test/test-iddx.cc |
ddxを両端に持つ区間演算のテスト |
test/test-mpfr.cc |
mpfrのテスト |
test/test-impfr.cc |
mpfrを両端に持つ区間演算のテスト |
|
|
test/test-interval-conv.cc |
(廃止予定) interval-conv.hppのテスト |
test/test-interval-converter.cc |
interval-converter.hppのテスト |
|
|
test/test-complex.cc |
複素数のテスト |
|
|
test/test-autodif.cc |
自動微分のテスト |
test/test-affine.cc |
affine arithmeticのテスト |
test/test-affine-reduce.cc |
affine arithmeticのダミー変数を減らす関数epsilon_reduceのテスト |
test/test-affine-reduce2.cc |
affine arithmeticのダミー変数を減らす関数epsilon_reduce2のテスト |
test/test-affinemult.cc |
affine arithmeticの乗算のテスト |
test/test-psa.cc |
ベキ級数演算のテスト。 |
test/test-psa-history.cc |
ベキ級数演算のhistory機能のテスト。 |
|
|
test/test-kraw-approx.cc |
近似解を元にした非線形方程式に対するKrawczyk法のテスト |
|
|
test/test-allsol.cc |
非線形方程式の全解探索のテスト |
test/test-allsol-simple.cc |
単純化した非線形方程式の全解探索のテスト |
test/test-allsol-affine.cc |
allsol-affine.hppのテスト |
test/test-allsol-rest.cc |
重解があった場合など存在非存在が言えない区間が残った場合、それを返してもらう例 |
test/test-allsol-infinity.cc |
非線形方程式の無限領域における全解探索のテスト |
test/test-complexeq.cc |
非線形方程式を複素領域で解く場合のサンプル |
|
|
test/test-ode.cc |
ode.hppのテスト |
test/test-ode-autodif.cc |
ode-autodif.hppのテスト |
test/test-ode-maffine.cc |
ode-maffine.hppのテスト |
test/test-ode-callback.cc |
ode-maffineに対してcallback関数を指定し、解きながら何かさせる場合のサンプル |
test/test-ode-stop.cc |
callback関数を利用して常微分方程式の計算を途中で中止するサンプル |
|
|
test/test-ode-maffine2.cc |
ode-maffine2.hppのテスト |
test/test-ode-affine.cc |
ode-affine.hpp, ode-affine-wrapper.hppのテスト |
test/test-ode-qr.cc |
ode-qr.hppのテスト |
test/test-ode-lohner.cc |
ode-lohner.hppのテスト |
test/test-ode-qr-lohner.cc |
ode-qr-lohner.hppのテスト |
test/test-odescale.cc |
odescale.hppのテスト |
test/test-ode-nv.cc |
ode-nv.hppのテスト |
test/test-ode-autodif-nv.cc |
ode-autodif-nv.hppのテスト |
test/test-rk.cc |
rk.hppのテスト |
test/test-rkf45.cc |
rkf45.hppのテスト |
|
|
test/test-strobomap.cc |
strobomap.hppのテスト |
test/test-bvp.cc |
strobomapを使って2点境界値問題を解かせるサンプル |
test/test-poincaremap.cc |
poincaremap.hppのテスト |
|
|
test/test-defint.cc |
defint.hppのテスト |
test/test-defint-byode.cc |
数値積分をODEの一種と見なし、ODE Solverで数値積分を計算 |
test/test-doubleintegral.cc |
doubleintegral.hppのテスト |
test/test-defint-singular.cc |
defint-singular.hppのテスト |
test/test-doubleint-singular.cc |
doubleint-singular.hppのテスト |
test/test-lobachevsky.cc |
lobachevsky.hppのテスト |
test/test-gamma.cc |
gamma.hppのテスト |
test/test-beta.cc |
beta.hppのテスト |
test/test-hypergeom.cc |
hypergeom.hppのテスト |
test/test-airy.cc |
airy.hppのテスト |
test/test-bessel.cc |
bessel.hppのテスト |
test/test-geoseries.cc |
geoseries.hppのテスト |
|
|
test/test-invert.cc |
matrix-inversion.hppのテスト |
test/test-qr.cc |
qr.hppのテスト |
test/test-vleq.cc |
vleq.hppのテスト |
test/test-eig.cc |
eig.hppのテスト |
test/test-lp.cc |
lp.hppのテスト |
test/test-optimize.cc |
optimize.hppのテスト |
test/test-optimize-nd.cc |
optimize.hppの微分を使わない最適化関数のテスト |
test/test-kkt.cc |
kkt.hppのテスト |
test/test-newton.cc |
newton.hppのテスト |
test/test-dka.cc |
dka.hppのテスト |
test/test-cardano-ferrari.cc |
cardano-ferrari.hppのテスト |
test/highderiv.cc |
highderiv.hppのテスト |
|
|
test/test-matplotlib.cc |
matplotlib.hppのテスト |
test/test-psa-plot.cc |
psa-plot.hppのテスト |
test/test-ode-plot.cc |
psa-plot.hppとodeのcallbackを使ってodeの軌道を計算しながら表示。 |
test/test-jointrange.cc |
jointrange.hppのテスト |
|
|
|
|
example/ |
以下は過去にいろいろな問題を解かせたときのファイル群。作者もよく覚えていない。 |
|
|
|
以下は非線形方程式の全解探索のexample |
example/allsolexample.hpp |
全解探索のテスト問題いろいろ |
example/allsolexample.cc |
allsolexample.hppを実行 |
example/burkardt-non.hpp |
http://people.sc.fsu.edu/~jburkardt/f_src/test_nonlin/test_nonlin.htmlにあった例題 |
example/test-burkardt-non.cc |
burkardt-non.hppを実行 |
example/coprin.hpp |
http://www-sop.inria.fr/coprin/logiciels/ALIAS/Benches/benches.htmlにあった例題 |
example/test-coprin.cc |
coprin.hppを実行 |
example/test-nishi.cc |
西先生による、5つの解を持つ2-transistor回路の例 |
example/test-kanz.cc |
神澤他: "有限ステップで停止する非線形方程式のすべての解を精度保証付きで求めるアルゴリズム"の例題を解く |
example/zeros-legendre.cc |
ルジャンドル関数のゼロ点をいくつかの方法で求める |
|
|
|
以下はODEのexample |
example/ivp-example.hpp |
|
example/ivp-example.cc |
|
example/burkardt-ode.hpp |
|
example/test-burkardt-ode.cc |
|
example/test-kubota.cc |
|
example/test-kepler.cc |
|
example/test-duffing.cc |
|
example/test-3body.cc |
三体問題 |
example/test-oga.cc |
|
example/test-neher.cc |
|
example/test-ueda.cc |
|
example/neumaier-ex2.cc |
|
example/doublependulum.cc |
二重振り子 |
example/test-vdp.cc |
|
example/test-oregonator.cc |
|
example/rober.cc |
Robertson problem |
example/test-parametric.cc |
パラメータを含むODEをパラメータを未知関数に変換して解く例 |
|
|
example/lorenz-periodic.cc |
ポアンカレマップを用いてローレンツ方程式の周期解を求める |
example/rossler-periodic.cc |
ポアンカレマップを用いてレスラー方程式の周期解を求める |
example/craik-periodic.cc |
|
|
|
|
以下は数値積分のexample |
example/burkardt-int.hpp |
|
example/test-burkardt-int.cc |
|
example/defint-example.cc |
数値積分の例題集 |
example/defint-singular-example.cc |
端点特異性を持つ数値積分の例題集 |
example/defint-ooura.cc |
大浦先生のDEパッケージFAQにあった数値積分の例題 |
|
|
|
その他 |
example/test-evalrange.cc |
ある5変数関数の像をinterval, affine, mvfで計算 |
example/hessian.cc |
autodifを使ってHessianを計算させる例 |