ident_zero_x
This can sometimes be used to create more efficient sparsity patterns.
If you do not see a way to do this, you can just ignore it.
This argument has size equal to the number of arguments to this
atomic function; i.e. the size of
ax
.
If
ident_zero_x[j]
is true, the argument
ax[j]
is a constant parameter that is identically zero.
An identically zero value times any other value can be treated
as being identically zero.
select_x
This argument has size equal to the number of arguments to this
atomic function; i.e. the size of
ax
.
It specifies which domain components are included in
the calculation of
pattern_out
.
If
select_x[j]
is false, then there will be no indices
k
such that either of the following hold:
pattern_out.row()[k] == j pattern_out.col()[k] == j
.
select_y
This argument has size equal to the number of results to this
atomic function; i.e. the size of
ay
.
It specifies which range component functions @(@
g_i (x)
@)@ are included in
of
pattern_out
.
pattern_out
This input value of
pattern_out
does not matter.
Upon return it is the union,
with respect to
i
such that
select_y[i]
is true,
of the sparsity pattern for Hessian of @(@
g_i (x)
@)@.
To be specific, there are non-negative indices
r
,
c
, and
k
such that
pattern_out.row()[k] == r pattern_out.col()[k] == c
if and only if
there exists an index
i
such that,
select_y[i]
is true,
select_x[r]
is true,
select_x[c]
is true,
and
@[@
\partial_{x(r)} \partial_{x(c)} g_i(x)
@]@
is possibly non-zero.
Note that the sparsity pattern should be symmetric.
ok
If this calculation succeeded,
ok
is true.
Otherwise it is false.