Skip to content

Latest commit

 

History

History
65 lines (52 loc) · 1.9 KB

File metadata and controls

65 lines (52 loc) · 1.9 KB

multipliable

  • [meta exposition-only]
  • [mathjax enable]
  • linalg[meta header]
  • function template[meta id-type]
  • std::linalg[meta namespace]
  • cpp26[meta cpp]
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)
}
  • in-vector[link inout-vector.md]
  • in-matrix[link inout-matrix.md]

概要

テンプレートパラメータに指定されたベクトルや行列が掛けられるかを静的要素数で判定する、説明専用の関数である。

戻り値

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

関連項目

参照