@@ -311,7 +311,7 @@ function NLPModels.jprod_nln!(
311311 increment! (nlp, :neval_jprod_nln )
312312 if nlp. quadcon. nquad > 0
313313 for i = 1 : (nlp. quadcon. nquad)
314- # Jv[i] = (Aᵢ * x + bᵢ)ᵀ * v
314+ # Jv[i] + = (Aᵢ * x + bᵢ)ᵀ * v
315315 qcon = nlp. quadcon. constraints[i]
316316 Jv[i] = coo_sym_dot (qcon. A. rows, qcon. A. cols, qcon. A. vals, x, v) + dot (qcon. b, v)
317317 end
@@ -333,19 +333,17 @@ function NLPModels.jprod!(
333333 if nlp. meta. nlin > 0
334334 jprod_lin! (nlp, nlp. lincon. jacobian. rows, nlp. lincon. jacobian. cols, nlp. lincon. jacobian. vals, v, Jv)
335335 end
336- if nlp. meta. nnln > 0
337- if nlp. quadcon. nquad > 0
338- for i = 1 : (nlp. quadcon. nquad)
339- # Jv[i] = (Aᵢ * x + bᵢ)ᵀ * v
340- qcon = nlp. quadcon. constraints[i]
341- Jv[nlp. meta. nlin + i] = coo_sym_dot (qcon. A. rows, qcon. A. cols, qcon. A. vals, x, v) + dot (qcon. b, v)
342- end
343- end
344- if nlp. meta. nnln > nlp. quadcon. nquad
345- ind_nnln = (nlp. meta. nlin + nlp. quadcon. nquad + 1 ): (nlp. meta. ncon)
346- MOI. eval_constraint_jacobian_product (nlp. eval, view (Jv, ind_nnln), x, v)
336+ if nlp. quadcon. nquad > 0
337+ for i = 1 : (nlp. quadcon. nquad)
338+ # Jv[i] = (Aᵢ * x + bᵢ)ᵀ * v
339+ qcon = nlp. quadcon. constraints[i]
340+ Jv[nlp. meta. nlin + i] = coo_sym_dot (qcon. A. rows, qcon. A. cols, qcon. A. vals, x, v) + dot (qcon. b, v)
347341 end
348342 end
343+ if nlp. meta. nnln > nlp. quadcon. nquad
344+ ind_nnln = (nlp. meta. nlin + nlp. quadcon. nquad + 1 ): (nlp. meta. ncon)
345+ MOI. eval_constraint_jacobian_product (nlp. eval, view (Jv, ind_nnln), x, v)
346+ end
349347 return Jv
350348end
351349
@@ -378,7 +376,7 @@ function NLPModels.jtprod_nln!(
378376 ind_nnln = (nlp. quadcon. nquad + 1 ): (nlp. meta. nnln)
379377 MOI. eval_constraint_jacobian_transpose_product (nlp. eval, Jtv, x, view (v, ind_nnln))
380378 end
381- (nlp. meta . nnln == nlp . quadcon. nquad) && (Jtv .= 0.0 )
379+ (nlp. quadcon. nquad > 0 ) && (Jtv .= 0.0 )
382380 if nlp. quadcon. nquad > 0
383381 for i = 1 : (nlp. quadcon. nquad)
384382 # Jtv += v[i] * (Aᵢ * x + bᵢ)
@@ -401,10 +399,11 @@ function NLPModels.jtprod!(
401399 ind_nnln = (nlp. quadcon. nquad + 1 ): (nlp. meta. nnln)
402400 MOI. eval_constraint_jacobian_transpose_product (nlp. eval, Jtv, x, view (v, ind_nnln))
403401 end
402+ (nlp. quadcon. nquad > 0 || nlp. meta. nlin > 0 ) && (Jtv .= 0.0 )
404403 if nlp. meta. nlin > 0
405- jtprod_lin! (nlp, nlp. lincon. jacobian. rows, nlp. lincon. jacobian. cols, nlp. lincon. jacobian. vals, v, Jtv)
404+ transpose = true
405+ coo_unsym_add_mul! (transpose, nlp. lincon. jacobian. rows, nlp. lincon. jacobian. cols, nlp. lincon. jacobian. vals, v, Jtv, 1.0 )
406406 end
407- (nlp. meta. nnln == nlp. quadcon. nquad) && (Jtv .= 0.0 )
408407 if nlp. quadcon. nquad > 0
409408 for i = 1 : (nlp. quadcon. nquad)
410409 # Jtv += v[i] * (Aᵢ * x + bᵢ)
0 commit comments