41 atomic_base<
CGB>(name) {
42 CPPADCG_ASSERT_KNOWN(!name.empty(),
"The atomic function name cannot be empty")
47 template <
class ADVector>
51 this->atomic_base<CGB>::operator()(
ax,
ay,
id);
54 virtual ~BaseAbstractAtomicFun() =
default;
58 static inline void appendAsArguments(
typename std::vector<Arg>::iterator begin,
60 std::vector<Arg> arguments(
tx.size());
61 typename std::vector<Arg>::iterator
it = begin;
62 for (
size_t i = 0;
i < arguments.size();
i++, ++
it) {
63 if (
tx[
i].isParameter()) {
64 *
it = Arg(
tx[
i].getValue());
66 *
it = Arg(*
tx[
i].getOperationNode());
74 std::vector<size_t>
info;
83 CPPADCG_ASSERT_UNKNOWN(
k <=
p)
84 size_t n =
tx.size() / (
p + 1);
86 for (
size_t i = 0;
i <
n;
i++) {
103 return handler.makeNode(CGOpCode::SparseArrayCreation,{size}, {});
111 CPPADCG_ASSERT_UNKNOWN(
k <
p1)
112 size_t n =
py.size() /
p1;
121 for (
size_t i = 0;
i <
n;
i++) {
122 if (!
py[
i *
p1 +
k].isIdenticalZero()) {
132 for (
size_t i = 0;
i <
tx.size();
i++) {
133 if (!
tx[
i].isParameter()) {
141 for (
size_t i = 0;
i <
tx.size();
i++) {
142 if (!
tx[
i].isValueDefined()) {