namespace std::linalg {
constexpr bool multipliable(
const in-matrix auto& in_mat,
const in-vector auto& in_vec,
const in-vector auto& out_vec)
{
return out_vec.extent(0) == in_mat.extent(0) &&
in_mat.extent(1) == in_vec.extent(0);
} // (1)
constexpr bool multipliable(
const in-vector auto& in_vec,
const in-matrix auto& in_mat,
const in-vector auto& out_vec)
{
return out_vec.extent(0) == in_mat.extent(1) &&
in_mat.extent(0) == in_vec.extent(0);
} // (2)
constexpr bool multipliable(
const in-matrix auto& in_mat1,
const in-matrix auto& in_mat2,
const in-matrix auto& out_mat)
{
return out_mat.extent(0) == in_mat1.extent(0) &&
out_mat.extent(1) == in_mat2.extent(1) &&
in1_mat.extent(1) == in_mat2.extent(0);
} // (3)
}
概要
テンプレートパラメータに指定されたベクトルや行列が掛けられるかを静的要素数で判定する、説明専用の関数である。
戻り値
InMat型の変数をA, InVec型の変数をx, OutVec型の変数をyとする。
- (1): $y \leftarrow Ax$ が可能なら
true、そうでないならfalse - (2): $y^t \leftarrow x^t A$ が可能なら
true、そうでないならfalse - (3):
InMat1型の変数をA,InMat2型の変数をB,OutMat型の変数Cとすると、$C \leftarrow AB$ が可能ならtrue、そうでないならfalse
バージョン
言語
- C++26