ツール

概要

精度保証に直接関係しない関数や、プログラムの生成を補助する関数などが含まれる。toolsディレクトリにはMATLAB以外の言語で書かれたツールが、+toolsディレクトリにはMATLABで書かれた関数が入っている。

toolsディレクトリ

get-vs-path.bat

Visual Studioがインストールされている場所を探すバッチファイル。複数のバージョンがインストールされている場合は一番新しいものを探し、Visual Studioが見つかればインストールされている場所を標準出力に書き出す。見つからなかった場合は何も出力しない。書き出されたパスに存在するはずのvcvarsall.batを実行することでVisual C++のコンパイラcl.exeが使えるようになる。

MATLAB2C++

コマンドライン引数にMATLABの式を与えると、その式を構文解析してC++の式に変換するプログラム。変換できなかった場合は1を返す。変換できた場合はBoost.uBLASを使うことを前提とした式を標準出力に出力する。

MATLABの式としては間違っているものも変換できてしまう場合があるが、MATLABの式として正しい式は全て変換できるはず。

ReduceAffine

tools.reduce_affine()が中で実行するプログラム。

+toolsディレクトリ

tools.build_tools([compiler])

toolsディレクトリ内のプログラムをコンパイルする。make_kv_maffine2()make_kv_qr_lohner()が内部でこの関数を呼び出すので、自分でこの関数を呼び出す必要はない。引数compilerが省略された場合は、tools.detect_compiler()を使ってコンパイラを探す。

tools.decomp_double(d)

倍精度の浮動小数点数dを符号(-11)、指数部、仮数部に分解する。

tools.detect_compiler()

コンピュータ内のコンパイラを探し、見つかったコンパイラと対応するコンパイラをラップした関数を返す。(Visual C++、)Clang、GCCの順で探す。見つからない場合はエラーを発生させる。

tools.get_last_affine(name)

kv_maffine2()の戻り値のaffineと同じものを返す。

tools.get_latest_result(name)

kv_maffine2()kv_qr_lohner()で実行したプログラムの最新の実行結果を返す。kv_maffine2()の戻り値のdataと同じ構造。

tools.plot_affine(x, y[, z] [, 'PropertyName', propertyvalue...])

Affine多項式をプロットする。kv_maffine2()の利用例に呼び出しの例がある。[]で囲われた引数は省略可能である。

  • x - \(x\)を表すAffine多項式。kv_maffine2()の戻り値のaffineの各列と同じ構造のベクトルを渡せば良い。
  • y - xと同様。
  • z - xと同様。省略すると2次元でプロットし、zを渡すと3次元でプロットする。
  • ‘PropertyName’, propertyvalue - 次の3つのうち指定したいプロパティの名前とその値を組にして渡す。
    • ‘FaceColor’ - 2次元でプロットするときは内部の色、3次元でプロットするときは面の色を指定する。詳細はMATLABのドキュメントにある。
    • ‘EdgeColor’ - 線の色を指定する。詳細はMATLABのドキュメントにある。
    • ‘EpsilonLimit’ - ダミー変数を指定した数まで減らしてからプロットする。このプロパティを指定しない場合はダミー変数を減らさずにプロットしようとする。3次元でプロットする場合、このプロパティを指定しないと描画が終わらないことがある(自宅の環境ではダミー変数が18個以上あるとプロットが終わらなくなる)。
tools.prepare([compiler])

プログラムの生成の準備を行う。make_kv_maffine2()make_kv_qr_lohner()が内部で呼び出す。

tools.reduce_affine(affine, limit)

affineに渡されたAffine多項式のダミー変数の数をlimit個まで減らす。affineの構造はkv_maffine2()の戻り値のaffineと同じ。