タグ

ブックマーク / pepshiso.hatenadiary.org (3)

  • Boostの数学関数 - pepshisoの日記

    この記事はBoost Advent Calendar 2011の参加記事です。 Boostの数学ライブラリの一部を紹介したいと思います。 複素関数としての逆三角関数・逆双曲線関数C99の逆三角関数・逆双曲線関数を移植したものです。C++11に追加されたので、そのうち新規には使われなくなるかもしれませんが……。 逆三角関数・逆双曲線関数は多価関数なのでどういった分枝を取るかが問題になります。分枝についてBoostのドキュメントに書かれていないので明記しておきます。 arccos #include <boost/math/complex/acos.hpp> template <typename T> std::complex<T> acos(const std::complex<T>& z); 上で、実関数としてのと一致し、で連続となるように分枝をとります。 arcsin #include <

    Boostの数学関数 - pepshisoの日記
  • C++11の数学関数 - pepshisoの日記

    この記事はC++11 Advent Calendar 2011の参加記事です。(書きかけ) C++11には、C99の数学関数や浮動小数点数を扱う関数が追加されました。追加された関数のうち便利なものをいくつか紹介したいと思います。 C99との相違点今回紹介する関数はC99由来のものですが、C++11への追加に際して変更があります。1つ目の変更は関数の名前です。Cでは関数のオーバーロードができないので、float用、double用、long double用の関数が別の名前を使わなければならないのに対し、C++では同じ名前で使えます。例えばC99のガンマ関数は float tgammaf(float); double tgamma(double); long double tgammal(long double); のようにfloat, long doubleのものには接尾辞が付いてしまいます。

    C++11の数学関数 - pepshisoの日記
  • GCCでBoostをC++11用にビルドする - pepshisoの日記

    BoostにはC++11対応がなされており、ヘッダーオンリーライブラリなら g++ -std=c++0x source.cc とするだけで使うことができます。*1しかし、ビルドが必要なライブラリの場合には落とし穴があります。ライブラリを、bjamを使って通常の手順で生成した場合、-std=c++0x無しでコンパイルされてしまいます。これではリンクエラーになってしまいます。*2 この問題に関する日語情報が見つからなかったので解決法を書いておきます。*3 解決法は非常に簡単です。user-config.jamというファイルを書いてホームディレクトリに置き、Boostをビルドするだけです。user-config.jamは次の形式に従って書いてください: using gcc : バージョン : g++のコマンド名 : <cxxflags>-std=c++0x ; 例えばGCCのバージョンが4.6

    GCCでBoostをC++11用にビルドする - pepshisoの日記
  • 1