@@ -194,15 +194,25 @@ function jac_structure!(
194194) where {T}
195195 @lencheck nlp. meta. nnzj rows cols
196196 lin_ind = 1 : (nlp. meta. lin_nnzj)
197- nlp. meta. nlin > 0 && jac_lin_structure! (nlp, view (rows, lin_ind), view (cols, lin_ind))
198- for i in lin_ind
199- rows[i] += count (x < nlp. meta. lin[rows[i]] for x in nlp. meta. nln)
197+ if nlp. meta. nlin > 0
198+ if nlp. meta. nnln == 0
199+ jac_lin_structure! (nlp, rows, cols)
200+ else
201+ jac_lin_structure! (nlp, view (rows, lin_ind), view (cols, lin_ind))
202+ for i in lin_ind
203+ rows[i] += count (x < nlp. meta. lin[rows[i]] for x in nlp. meta. nln)
204+ end
205+ end
200206 end
201207 if nlp. meta. nnln > 0
202- nln_ind = (nlp. meta. lin_nnzj + 1 ): (nlp. meta. lin_nnzj + nlp. meta. nln_nnzj)
203- jac_nln_structure! (nlp, view (rows, nln_ind), view (cols, nln_ind))
204- for i in nln_ind
205- rows[i] += count (x < nlp. meta. nln[rows[i]] for x in nlp. meta. lin)
208+ if nlp. meta. nlin == 0
209+ jac_nln_structure! (nlp, rows, cols)
210+ else
211+ nln_ind = (nlp. meta. lin_nnzj + 1 ): (nlp. meta. lin_nnzj + nlp. meta. nln_nnzj)
212+ jac_nln_structure! (nlp, view (rows, nln_ind), view (cols, nln_ind))
213+ for i in nln_ind
214+ rows[i] += count (x < nlp. meta. nln[rows[i]] for x in nlp. meta. lin)
215+ end
206216 end
207217 end
208218 return rows, cols
@@ -254,10 +264,22 @@ function jac_coord!(nlp::AbstractNLPModel, x::AbstractVector, vals::AbstractVect
254264 @lencheck nlp. meta. nvar x
255265 @lencheck nlp. meta. nnzj vals
256266 increment! (nlp, :neval_jac )
257- lin_ind = 1 : (nlp. meta. lin_nnzj)
258- nlp. meta. nlin > 0 && jac_lin_coord! (nlp, x, view (vals, lin_ind))
259- nln_ind = (nlp. meta. lin_nnzj + 1 ): (nlp. meta. lin_nnzj + nlp. meta. nln_nnzj)
260- nlp. meta. nnln > 0 && jac_nln_coord! (nlp, x, view (vals, nln_ind))
267+ if nlp. meta. nlin > 0
268+ if nlp. meta. nnln == 0
269+ jac_lin_coord! (nlp, x, vals)
270+ else
271+ lin_ind = 1 : (nlp. meta. lin_nnzj)
272+ jac_lin_coord! (nlp, x, view (vals, lin_ind))
273+ end
274+ end
275+ if nlp. meta. nnln > 0
276+ if nlp. meta. nlin == 0
277+ jac_nln_coord! (nlp, x, vals)
278+ else
279+ nln_ind = (nlp. meta. lin_nnzj + 1 ): (nlp. meta. lin_nnzj + nlp. meta. nln_nnzj)
280+ jac_nln_coord! (nlp, x, view (vals, nln_ind))
281+ end
282+ end
261283 return vals
262284end
263285
@@ -505,9 +527,9 @@ function jtprod!(nlp::AbstractNLPModel, x::AbstractVector, v::AbstractVector, Jt
505527 @lencheck nlp. meta. ncon v
506528 increment! (nlp, :neval_jtprod )
507529 if nlp. meta. nnln == 0
508- jtprod_lin! (nlp, x, v, Jtv)
530+ (nlp . meta . nlin > 0 ) && jtprod_lin! (nlp, x, v, Jtv)
509531 elseif nlp. meta. nlin == 0
510- jtprod_nln! (nlp, x, v, Jtv)
532+ (nlp . meta . nnln > 0 ) && jtprod_nln! (nlp, x, v, Jtv)
511533 elseif nlp. meta. nlin >= nlp. meta. nnln
512534 jtprod_lin! (nlp, x, view (v, nlp. meta. lin), Jtv)
513535 if nlp. meta. nnln > 0
0 commit comments