.. _tools: ツール ====== 概要 ---- 精度保証に直接関係しない関数や、\ プログラムの生成を補助する関数などが含まれる。\ ``tools``\ ディレクトリにはMATLAB以外の言語で書かれたツールが、\ ``+tools``\ ディレクトリにはMATLABで書かれた関数が入っている。 toolsディレクトリ ----------------- .. object:: get-vs-path.bat Visual Studioがインストールされている場所を探すバッチファイル。\ 複数のバージョンがインストールされている場合は一番新しいものを探し、\ Visual Studioが見つかればインストールされている場所を標準出力に書き出す。\ 見つからなかった場合は何も出力しない。\ 書き出されたパスに存在するはずの\ ``vcvarsall.bat``\ を実行することで\ Visual C++のコンパイラ\ ``cl.exe``\ が使えるようになる。 .. object:: MATLAB2C++ コマンドライン引数にMATLABの式を与えると、\ その式を構文解析してC++の式に変換するプログラム。\ 変換できなかった場合は\ ``1``\ を返す。\ 変換できた場合はBoost.uBLASを使うことを前提とした式を標準出力に出力する。 MATLABの式としては間違っているものも変換できてしまう場合があるが、\ MATLABの式として正しい式は全て変換できるはず。 .. object:: ReduceAffine :func:`tools.reduce_affine`\ が中で実行するプログラム。 +toolsディレクトリ ------------------ .. function:: tools.build_tools([compiler]) ``tools``\ ディレクトリ内のプログラムをコンパイルする。\ :func:`make_kv_maffine2`\ や\ :func:`make_kv_qr_lohner`\ が内部でこの関数を呼び出すので、自分でこの関数を呼び出す必要はない。\ 引数\ ``compiler``\ が省略された場合は、\ :func:`tools.detect_compiler`\ を使ってコンパイラを探す。 .. function:: tools.decomp_double(d) 倍精度の浮動小数点数\ ``d``\ を符号(\ ``-1``\ か\ ``1``\ )、\ 指数部、仮数部に分解する。 .. function:: tools.detect_compiler() コンピュータ内のコンパイラを探し、\ 見つかったコンパイラと対応する\ :ref:`compilers`\ を返す。\ (Visual C++、)Clang、GCCの順で探す。\ 見つからない場合はエラーを発生させる。 .. function:: tools.get_last_affine(name) :func:`kv_maffine2`\ の戻り値の\ ``affine``\ と同じものを返す。\ .. function:: tools.get_latest_result(name) :func:`kv_maffine2`\ や\ :func:`kv_qr_lohner`\ で実行したプログラムの\ 最新の実行結果を返す。\ :func:`kv_maffine2`\ の戻り値の\ ``data``\ と同じ構造。 .. function:: tools.plot_affine(x, y[, z] [, 'PropertyName', propertyvalue...]) Affine多項式をプロットする。\ :ref:`kv_maffine2()の利用例 `\ に呼び出しの例がある。\ ``[]``\ で囲われた引数は省略可能である。 * x - :math:`x`\ を表すAffine多項式。\ :func:`kv_maffine2`\ の戻り値の\ ``affine``\ の各列と同じ構造のベクトルを渡せば良い。 * y - xと同様。 * z - xと同様。省略すると2次元でプロットし、zを渡すと3次元でプロットする。 * 'PropertyName', propertyvalue - 次の3つのうち指定したいプロパティの名前とその値を組にして渡す。 * 'FaceColor' - 2次元でプロットするときは内部の色、\ 3次元でプロットするときは面の色を指定する。\ 詳細は\ `MATLABのドキュメント `_\ にある。 * 'EdgeColor' - 線の色を指定する。\ 詳細は\ `MATLABのドキュメント `_\ にある。 * 'EpsilonLimit' - ダミー変数を指定した数まで減らしてからプロットする。\ このプロパティを指定しない場合はダミー変数を\ 減らさずにプロットしようとする。\ 3次元でプロットする場合、このプロパティを指定しないと\ 描画が終わらないことがある\ (自宅の環境ではダミー変数が18個以上あるとプロットが終わらなくなる)。 .. function:: tools.prepare([compiler]) プログラムの生成の準備を行う。\ :func:`make_kv_maffine2`\ や\ :func:`make_kv_qr_lohner`\ が内部で呼び出す。 * kvのバージョンチェックとダウンロード * :func:`tools.build_tools`\ の実行 .. function:: tools.reduce_affine(affine, limit) ``affine``\ に渡されたAffine多項式のダミー変数の数を\ ``limit``\ 個まで減らす。\ ``affine``\ の構造は\ :func:`kv_maffine2`\ の戻り値の\ ``affine``\ と同じ。