@@ -129,6 +129,7 @@ function hessian_duality_cgc(
129129 graph = auxdata. graph
130130 nodes = graph. nodes
131131 kappa = auxdata. kappa
132+ inexact_algo = param. duality == 2
132133 beta = param. beta
133134 m1dbeta = - 1 / beta
134135 sigma = param. sigma
@@ -147,9 +148,12 @@ function hessian_duality_cgc(
147148 # Constant term: first part of Bprime
148149 cons = m1dbeta * n1dnum1 * numbetam1
149150 # # Constant in T'
150- # cons2 = numbetam1 / (numbetam1+nu*beta)
151- # New: constant in T' -> More accurate!
152- cons3 = m1dbeta * n1dnum1 * (numbetam1+ nu* beta) / (1 + beta)
151+ if inexact_algo
152+ cons2 = numbetam1 / (numbetam1+ nu* beta)
153+ else
154+ # New: constant in T' -> More accurate!
155+ cons3 = m1dbeta * n1dnum1 * (numbetam1+ nu* beta) / (1 + beta)
156+ end
153157
154158 # Precompute elements
155159 res = recover_allocation_duality_cgc (x, auxdata)
@@ -203,13 +207,19 @@ function hessian_duality_cgc(
203207 if jd == j
204208 KPprimeAB1 = m1dbeta * Pjn[j, nd]^ (- sigma) * PCj[j]^ (sigma- 1 )
205209 term += Qjkn[j, k, n] * (KPprimeAB1 - KPAprimeB1 + KPABprime1) # Derivative of Qjkn
206- # term += T * (((1+beta) * KPprimeAB1 + cons2 * KPABprime1) * G + Gprime) # T'G + TG'
207- term += T * ((1 + beta) * KPprimeAB1 * G + Gprime) # T'G (first part) + TG'
208- term += cons3 * Qjkn[j, k, nd] / PCj[j] * G # Second part of T'G
210+ if inexact_algo
211+ term += T * (((1 + beta) * KPprimeAB1 + cons2 * KPABprime1) * G + Gprime) # T'G + TG'
212+ else
213+ term += T * ((1 + beta) * KPprimeAB1 * G + Gprime) # T'G (first part) + TG'
214+ term += cons3 * Qjkn[j, k, nd] / PCj[j] * G # Second part of T'G
215+ end
209216 elseif jd == k
210217 term += Qjkn[j, k, n] * (KPAprimeB1 - KPABprime1) # Derivative of Qjkn
211- # term -= T * cons2 * KPABprime1 * G # T'G: second part [B'(k) has opposite sign]
212- term -= cons3 * Qjkn[j, k, nd] / PCj[j] * G # Second part of T'G
218+ if inexact_algo
219+ term -= T * cons2 * KPABprime1 * G # T'G: second part [B'(k) has opposite sign]
220+ else
221+ term -= cons3 * Qjkn[j, k, nd] / PCj[j] * G # Second part of T'G
222+ end
213223 end
214224 end
215225 if Qjkn[k, j, n] > 0 # Flows in the direction of j
0 commit comments