Boost

【C++】Boost Multiprecisionで実現する多倍長浮動小数点数の高精度計算技法

BoostライブラリのMultiprecisionモジュールは、C++で多倍長浮動小数点数を手軽に活用できるツールです。 標準のdoubleでは実現しにくい高精度な計算を容易にするため、例えば仮数部100桁の型を利用して\( \sqrt{2

続きを読む »
Boost

【C++】Boost.Multiprecisionで実現する多倍長整数演算と安全な計算手法

Boost.MultiprecisionはC++で大きな整数計算を容易にするためのライブラリです。 組み込みの整数型では扱いきれない巨大な数値を、柔軟なcpp_int型や固定精度型で計算できるため、複雑な数値演算にも活用できるメリットがあり

続きを読む »
Boost

【C++】Boostのis_base_ofを使った基底クラス継承判定の基本と実践

boost::is_base_of<親, 子>::valueを使うとコンパイル時に親クラスかどうかがbool値で得られます。 直接・間接継承に対応し、仮想継承の判定にはboost::is_virtual_base_ofが利用でき

続きを読む »
Boost

【C++】Boost.Mathで正確に四捨五入する方法:roundとiround・lroundの使い分け

Boost.Mathのround関数は浮動小数点や高精度な数値型での四捨五入をサポートし、round(x)で最も近い整数に丸めます。 戻り値は入力型を維持するので、整数型として扱いたい場合はiround(x)やlround(x)を使うと安全

続きを読む »
Boost

【C++】Boostのtrim_rightで文字列右端のスペースを削除する方法

C++のBoost String Algorithmsライブラリでは、boost::algorithm::trim_rightを使うと文字列の右端にある空白を簡単に削除できます。 削除対象はデフォルトの空白以外にタブなどを指定でき、さまざま

続きを読む »
Boost

【C++】Boostライブラリを利用した文字列前後のスペース削除テクニック

C++でBoostライブラリを使い、文字列の先頭と末尾にある不要な空白を手軽に除去できる方法です。 boost::algorithm::trimで元の文字列を直接加工する方法や、trim_copyを利用してオリジナルを保持しながら新たな文字

続きを読む »
Boost

【C++】Boostライブラリを使った二項分布の確率計算と数値解析手法

C++でBoostライブラリを利用すると、二項分布の処理が容易になるです。 boost::math::binomial_distributionを用い、試行回数nと成功確率pを設定することで、各成功回数に対する確率質量関数や

続きを読む »
Boost

【C++】Boostライブラリで活用する不完全ガンマ関数の使い方と実装例

C++のBoostライブラリ内で利用できる不完全ガンマ関数は、累積分布関数 P(a,x) と生存関数 Q(a,x) を求める機能です。 ヘッダーファイル「boost/math/special_functions/gamm

続きを読む »
Boost

【C++】Boost.Randomで範囲指定一様分布乱数を手軽に生成

Boostライブラリのboost::random::mt19937とboost::random::uniform_int_distributionまたはuniform_real_distributionを組み合わせるだけで、指定した範囲\(

続きを読む »
Boost

【C++】Boostライブラリによるワイブル分布乱数生成の実装方法

Boostの boost::random::weibull_distribution を利用すると、C++でワイブル分布に基づく乱数が手軽に生成でき、シミュレーションや確率モデル作成に役立ちます。 形状パラメータと尺度パ

続きを読む »
Boost

【C++】Boost.Logによるログ出力方法とファイル管理・フォーマット設定

C++のBoost.LogではBOOST_LOG_TRIVIALマクロでログを出力し、boost::log::add_file_logでファイル出力やフォーマット、ローテーションを設定できます。 add_common_attributesを

続きを読む »
Boost

【C++】Boostライブラリで実現するポアソン分布の乱数生成手法

C++のBoostライブラリが提供するポアソン分布は、平均発生回数λに基づいて離散的な値を生成できる仕組みです。 乱数生成器と連携させることで、実世界の事象の発生回数に近い数値が手軽に取得でき、数理シミュレーションな

続きを読む »
Boost

【C++】Boost.Mathでベータ関数を高速・高精度に計算する方法

Boost.Mathのboost::math::beta(x,y)は、B(x,y)=Γ(x),Γ(y)/Γ(x+y)を高速に計算でき、柔軟な精度指定や例外処理をサポートしているので、C

続きを読む »
Boost

【C++】Boost Mathライブラリでベータ分布を活用する方法

Boost Math Library内のboost::math::beta_distributionクラスは、ベータ分布を手軽に利用できる機能です。 ベータ分布は0以上1以下で定義され、形状パラメータαβ

続きを読む »
Boost

【C++】Boost.Mathのfisher_fでフィッシャーF分布のPDF・CDF・逆累積分布を簡単に計算

C++のBoost.Mathライブラリにあるboost::math::fisher_fは、分子自由度df1と分母自由度df2を指定するだけでフィッシャーのF分布のPDFや累積分布、逆累積分布を計算できます。 pdf(dist,x)で確率密度

続きを読む »
Boost

【C++】Boost Filesystemで実現するフォルダ削除の効率的な手法

Boost.Filesystemを使えばC++でフォルダを再帰的に削除できる便利な方法です。 fs::remove_allを利用することで、ディレクトリ内のファイルやサブフォルダもまとめて削除でき、例外処理を取り入れるとエラー発生時にも安心

続きを読む »
Boost

【C++】Boost Filesystemを利用したフォルダ作成の基本手順

C++でBoostライブラリのboost::filesystemを使うと、シンプルにフォルダ作成ができます。 create_directory関数で指定パスにフォルダを作り、try-catchでエラー処理を行うことができるため、開発がスムー

続きを読む »
Boost

【C++】Boostファイルシステムを活用した正確なファイル名取得方法

C++でファイル名を取得する場合、Boostライブラリのboost::filesystemが利用できます。 ファイルパスからfilename()によって拡張子を含む名前、stem()によって拡張子を除いた名前をシンプルなコードで抽出できるた

続きを読む »
Boost

【C++】Boost.Filesystemでファイル移動を簡単に実装する方法

Boost.Filesystemのrename関数を使うと、ファイルやディレクトリをパスを指定して簡単に移動できます。 移動先に同名ファイルがあると例外が発生するため、事前に存在チェックを行うのが望ましいです。 C++17以降はstd::f

続きを読む »
Back to top button