1#ifndef CPPAD_CG_LANGUAGE_DOT_ARRAYS_INCLUDED
2#define CPPAD_CG_LANGUAGE_DOT_ARRAYS_INCLUDED
24 CPPADCG_ASSERT_KNOWN(array.getArguments().size() > 0,
"Invalid number of arguments for array creation operation")
25 const std::vector<Argument<Base> >&
args = array.getArguments();
29 _ss << "array[" <<
args.size() << "]";
30 std::
string name = printNodeDeclaration(array, _ss);
34 size_t newI = printArrayCreationUsingLoop(name, array,
i,
nullptr);
41 printEdge(
aName, name, std::to_string(
i));
55 const std::vector<size_t>&
info = array.getInfo();
56 CPPADCG_ASSERT_KNOWN(!
info.empty(),
"Invalid number of information elements for sparse array creation operation")
58 const std::vector<Argument<Base> >&
args = array.getArguments();
64 _ss << "sparse[" <<
info[0] << "]";
65 std::
string name = printNodeDeclaration(array, _ss);
72 size_t newI = printArrayCreationUsingLoop(name, array,
i, &
info[
i]);
79 printEdge(
aName, name, std::to_string(
info[
i + 1]));
94 const size_t* indexes) {
106 const Base& value = *
args[
starti].getParameter();
108 if (
args[
i].getParameter() ==
nullptr ||
109 *
args[
i].getParameter() != value) {
113 if (indexes !=
nullptr &&
i -
starti != indexes[
i] - indexes[
starti])
125 if (indexes !=
nullptr)
136 CPPADCG_ASSERT_KNOWN(
op.getArguments().size() == 2,
"Invalid number of arguments for array element operation")
140 std::
string name = makeNodeName(
op);
143 _ss << "[" <<
op.getInfo()[0] << "]";
144 printEdges(name,
op, std::
vector<std::
string>{}, std::vector<std::string>{_ss.str()});
size_t printArrayCreationUsingLoop(const std::string &arrayName, const OperationNode< Base > &array, size_t startj, const size_t *indexes)
const std::vector< Argument< Base > > & getArguments() const
bool GreaterThanZero(const cg::CG< Base > &x)