27#include "neml2/misc/assertions.h"
28#include "neml2/tensors/shape_utils.h"
38#define neml_assert_broadcastable_dbg(...) ::neml2::neml_assert_broadcastable(__VA_ARGS__)
40#define neml_assert_broadcastable_dbg(...) ((void)0)
50#define neml_assert_dynamic_broadcastable_dbg(...) \
51 ::neml2::neml_assert_dynamic_broadcastable(__VA_ARGS__)
53#define neml_assert_dynamic_broadcastable_dbg(...) ((void)0)
63#define neml_assert_intmd_broadcastable_dbg(...) \
64 ::neml2::neml_assert_intmd_broadcastable(__VA_ARGS__)
66#define neml_assert_intmd_broadcastable_dbg(...) ((void)0)
76#define neml_assert_batch_broadcastable_dbg(...) \
77 ::neml2::neml_assert_batch_broadcastable(__VA_ARGS__)
79#define neml_assert_batch_broadcastable_dbg(...) ((void)0)
89#define neml_assert_base_broadcastable_dbg(...) ::neml2::neml_assert_base_broadcastable(__VA_ARGS__)
91#define neml_assert_base_broadcastable_dbg(...) ((void)0)
101#define neml_assert_static_broadcastable_dbg(...) \
102 ::neml2::neml_assert_static_broadcastable(__VA_ARGS__)
104#define neml_assert_static_broadcastable_dbg(...) ((void)0)
122 " operands are not broadcastable. The dynamic shapes are ",
123 tensors.dynamic_sizes()...,
124 ", the intermediate shapes are ",
125 tensors.intmd_sizes()...,
126 ", and the base shapes are ",
127 tensors.base_sizes()...);
137 " operands are not dynamic-broadcastable. The dynamic shapes are ",
138 tensors.dynamic_sizes()...);
148 " operands are not intermediate-broadcastable. The intermediate shapes are ",
149 tensors.intmd_sizes()...);
159 " operands are not batch-broadcastable. The dynamic shapes are ",
160 tensors.dynamic_sizes()...,
161 ", and the intermediate shapes are ",
162 tensors.intmd_sizes()...);
172 " operands are not base-broadcastable. The base shapes are ",
173 tensors.base_sizes()...);
183 " operands are not static-broadcastable. The intermediate shapes are ",
184 tensors.intmd_sizes()...,
185 ", and the base shapes are ",
186 tensors.base_sizes()...);
bool intmd_broadcastable(const T &... tensors)
Definition shape_utils.h:242
bool dynamic_broadcastable(const T &... tensors)
Definition shape_utils.h:235
bool broadcastable(const T &... tensors)
Definition shape_utils.h:227
bool base_broadcastable(const T &... tensors)
Definition shape_utils.h:249
Definition DiagnosticsInterface.h:31
void neml_assert_batch_broadcastable(const T &...)
void neml_assert_dynamic_broadcastable(const T &...)
void neml_assert_broadcastable(const T &...)
void neml_assert_intmd_broadcastable(const T &...)
void neml_assert_static_broadcastable(const T &...)
void neml_assert_base_broadcastable(const T &...)
void neml_assert(bool assertion, Args &&... args)
Definition assertions.h:47