QPALM main
Proximal Augmented Lagrangian method for Quadratic Programs
Loading...
Searching...
No Matches
types.h
Go to the documentation of this file.
1/**
2 * @file types.h
3 * @author Ben Hermans
4 * @brief Internal data structures used in QPALM.
5 * @details See data structures tab.
6 */
7
8#ifndef QPALM_TYPES_H
9# define QPALM_TYPES_H
10
11#ifdef __cplusplus
12#include <atomic>
13using std::atomic_bool;
14#else
15#include <stdatomic.h>
16#endif
17
18# ifdef __cplusplus
19extern "C" {
20# endif
21
22#include <qpalm/global_opts.h>
23
24#include <ladel.h>
25typedef ladel_work solver_common;
26typedef ladel_sparse_matrix solver_sparse;
27typedef ladel_double solver_dense;
28typedef ladel_factor solver_factor;
29typedef ladel_symbolics solver_symbolics;
30
31/**
32 * Array to sort in linesearch
33 */
34typedef struct array_element {
35 c_float x; ///< value of the element
36 size_t i; ///< index
38
39
40/// @addtogroup solver-grp
41/// @{
42
43/******************
44* Internal types *
45******************/
46
47/**
48 * Solution structure
49 */
50typedef struct {
51 c_float *x; ///< primal solution
52 c_float *y; ///< dual solution
54
55/// @}
56
57/**
58 * QPALM Timer for statistics
59 */
60typedef struct QPALM_TIMER QPALMTimer;
61
62/// @addtogroup solver-grp
63/// @{
64
65/**
66 * Problem scaling matrices stored as vectors
67 */
68typedef struct {
69 c_float *D; ///< primal variable scaling
70 c_float *Dinv; ///< primal variable rescaling
71 c_float *E; ///< dual variable scaling
72 c_float *Einv; ///< dual variable rescaling
73 c_float c; ///< objective scaling
74 c_float cinv; ///< objective rescaling
76
77
78/**
79 * Solver return information
80 */
81typedef struct {
82 c_int iter; ///< number of iterations taken
83 c_int iter_out; ///< number of outer iterations (i.e. dual updates)
84 char status[32]; ///< status string, e.g. 'solved'
85 c_int status_val; ///< status as c_int, defined in constants.h
86
87 c_float pri_res_norm; ///< norm of primal residual
88 c_float dua_res_norm; ///< norm of dual residual
89 c_float dua2_res_norm; ///< norm of intermediate dual residual (minus proximal term)
90
91 c_float objective; ///< objective function value
92 c_float dual_objective; ///< dual objective function value (= NaN if enable_dual_termination is false)
93
94 #ifdef QPALM_TIMING
95 c_float setup_time; ///< time taken for setup phase (seconds)
96 c_float solve_time; ///< time taken for solve phase (seconds)
97 c_float run_time; ///< total time (seconds)
98 #endif
99
100} QPALMInfo;
101
102/**********************************
103* Main structures and Data Types *
104**********************************/
105
106/**
107 * Data structure
108 */
109typedef struct {
110 size_t n; ///< number of variables n
111 size_t m; ///< number of constraints m
112 solver_sparse *Q; ///< sparse quadratic part of the cost Q (size n x n)
113 solver_sparse *A; ///< sparse linear constraints matrix A (size m x n)
114 c_float *q; ///< dense array for linear part of cost function (size n)
115 c_float c; ///< constant part of cost
116 c_float *bmin; ///< dense array for lower bounds (size m)
117 c_float *bmax; ///< dense array for upper bounds (size m)
118} QPALMData;
119
120
121/**
122 * Settings struct
123 */
124typedef struct {
125 c_int max_iter; ///< maximum number of iterations @details @note Assumption: @f$>0@f$
126 c_int inner_max_iter; ///< maximum number of iterations per subproblem @details @note Assumption: @f$>0@f$
127 c_float eps_abs; ///< absolute convergence tolerance @details @note Assumption: @f$>=0@f$, either eps_abs or eps_rel must be @f$>0@f$
128 c_float eps_rel; ///< relative convergence tolerance @details @note Assumption: @f$>=0@f$, either eps_abs or eps_rel must be @f$>0@f$
129 c_float eps_abs_in; ///< intermediate absolute convergence tolerance @details @note Assumption: @f$>=0@f$, either eps_abs_in or eps_rel_in must be @f$>0@f$
130 c_float eps_rel_in; ///< intermediate relative convergence tolerance @details @note Assumption: @f$>=0@f$, either eps_abs_in or eps_rel_in must be @f$>0@f$
131 c_float rho; ///< tolerance scaling factor @details @note Assumption: @f$0<\rho<1@f$
132 c_float eps_prim_inf; ///< primal infeasibility tolerance @details @note Assumption: @f$>=0@f$
133 c_float eps_dual_inf; ///< dual infeasibility tolerance @details @note Assumption: @f$>=0@f$
134 c_float theta; ///< penalty update criterion parameter @details @note Assumption: @f$<=1@f$
135 c_float delta; ///< penalty update factor @details @note Assumption: @f$>1@f$
136 c_float sigma_max; ///< penalty factor cap @details @note Assumption: @f$>0@f$
137 c_float sigma_init; ///< initial penalty parameter (guideline) @note Assumption: @f$>0@f$
138 c_int proximal; ///< boolean, use proximal method of multipliers or not @details @note Assumption: @f$\in \{0,1\}@f$
139 c_float gamma_init; ///< initial proximal penalty parameter @details @note Assumption: @f$>0@f$
140 c_float gamma_upd; ///< proximal penalty update factor @details @note Assumption: @f$>=1@f$
141 c_float gamma_max; ///< proximal penalty parameter cap @details @note Assumption: @f$>=\gamma_\textrm{init}@f$
142 c_int scaling; ///< scaling iterations, if 0 then scaling is disabled @details @note Assumption: @f$>=0@f$
143 c_int nonconvex; ///< boolean, indicates whether the QP is nonconvex @details @note Assumption: @f$\in \{0,1\}@f$
144 c_int verbose; ///< boolean, write out progress @details @note Assumption:@f$\in \{0,1\}@f$
145 c_int print_iter; ///< frequency of printing @details @note Assumption: @f$>0@f$
146 c_int warm_start; ///< boolean, warm start @details @note Assumption: @f$\in \{0,1\}@f$
147 c_int reset_newton_iter; ///< frequency of performing a complete Cholesky factorization @details @note Assumption: @f$>0@f$
148 c_int enable_dual_termination; ///< boolean, enable termination based on dual objective (useful in branch and bound) @details @note Assumption: @f$\in \{0,1\}@f$
149 c_float dual_objective_limit; ///< termination value for the dual objective (useful in branch and bound) @details @note Assumption: none
150 c_float time_limit; ///< time limit @details @note Assumption: @f$>0@f$
151 c_int ordering; ///< ordering method for factorization
152 c_int factorization_method; ///< factorize KKT or Schur complement
153 c_int max_rank_update; ///< maximum rank for the sparse factorization update
154 c_float max_rank_update_fraction; ///< maximum rank (relative to n+m) for the factorization update
156
157/// @}
158
159/**
160 * Variables for linear system solving
161 */
162typedef struct {
163 c_int factorization_method; ///< factorize KKT or Schur complement
164 solver_sparse *kkt; ///< KKT matrix
165 solver_sparse *kkt_full; ///< KKT matrix if all constraints would be active
167 c_int *first_row_A; ///< row index of the first element in each column of A'
168 c_float *first_elem_A; ///< value of the first element in each column of A'
169 solver_factor *LD; ///< LD factor (part of LDL' factorization)
170 solver_symbolics *sym; ///< symbolics for kkt (only used in LADEL)
171 solver_factor *LD_Q; ///< LD factor of Q (useful in computing dual objective)
172 solver_symbolics *sym_Q; ///< symbolics for Q (only used in LADEL)
173 solver_dense *E_temp; ///< temporary constraints scaling vectors
174 solver_dense *D_temp; ///< temporary primal variable scaling vectors
175 solver_dense *neg_dphi; ///< -gradient of the Lagrangian
176 solver_dense *rhs_kkt; ///< [-dphi; zeros(m,1)]
177 solver_dense *sol_kkt; ///< sol_kkt = kkt \\ rhs_kkt
178 solver_dense *d; ///< primal update step
179 solver_dense *Ad; ///< A * d
180 solver_dense *Qd; ///< Q * d
181 solver_dense *yh; ///< candidate dual update
182 solver_dense *Atyh; ///< A' * yh
183 c_int first_factorization; ///< boolean, indicate we have not factorized previously
184 c_int reset_newton; ///< boolean, after sigma is updated perform a new factorization
185 c_int *active_constraints; ///< index set of active constraints
186 c_int *active_constraints_old; ///< index set of active constraints in the previous iteration
187 c_int nb_active_constraints; ///< number of active constraints
188 c_int *enter; ///< index set of entering constraints
189 c_int nb_enter; ///< number of entering constraints
190 c_int *leave; ///< index set of leaving constraints
191 c_int nb_leave; ///< number of leaving constraints
192 solver_dense *At_scale; ///< running vector of sqrt(sigma), used to scale At_sqrt_sigma
193 solver_sparse *At_sqrt_sigma; ///< A' * sqrt(sigma)
195
196
197/**
198 * QPALM Workspace
199 *
200 * The workspace is the main data structure and is given as a pointer to (almost) all QPALM functions.
201 * It contains pointers to the settings, the data, return info, solution variables and intermediate
202 * workspace variables.
203 */
204typedef struct {
205 QPALMData *data; ///< problem data to work on (possibly scaled)
206
207 /**
208 * @name Iterates
209 * @{
210 */
211 c_float *x; ///< primal iterate
212 c_float *y; ///< dual iterate
213 c_float *Ax; ///< scaled A * x
214 c_float *Qx; ///< scaled Q * x
215 c_float *Aty; ///< A' * y (useful for saving one mat_tpose_vec)
216 c_float *x_prev; ///< previous primal iterate
217 c_int initialized; ///< flag whether the iterates were initialized or not
218 /** @} */
219
220 /**
221 * @name Workspace variables
222 * @{
223 */
224 c_float *temp_m; ///< placeholder for vector of size m
225 c_float *temp_n; ///< placeholder for vector of size n
226 c_float *sigma; ///< penalty vector
227 c_float *sigma_inv; ///< 1./sigma
228 c_float sqrt_sigma_max; ///< sqrt(sigma_max)
229 c_int nb_sigma_changed; ///< number of sigma-components that changed in an outer iteration (relevant for factorization update)
230 c_float gamma; ///< proximal penalty factor
231 c_int gamma_maxed; ///< flag to indicate whether gamma has been maximized when the primal residual was low
232 c_float *Axys; ///< Ax + y./sigma
233 c_float *z; ///< projection of Axys onto the constraint set [bmin, bmax]
234 c_float *pri_res; ///< primal residual
235 c_float *pri_res_in; ///< intermediate primal residual
236 c_float *yh; ///< candidate dual update
237 c_float *Atyh; ///< A' * yh
238 c_float *df; ///< gradient of the primal objective (+proximal term)
239 c_float *x0; ///< record of the primal iterate during the last dual update
240 c_float *xx0; ///< x - x0
241 c_float *dphi; ///< gradient of the Lagrangian
242 c_float *neg_dphi; ///< -dphi, required as the rhs in SCHUR
243 c_float *dphi_prev; ///< previous gradient of the Lagrangian
244 c_float *d; ///< primal update step
245
246 /** @} */
247
248 /**
249 * @name Linesearch variables
250 * @{
251 */
252 c_float tau; ///< stepsize
253 c_float *Qd; ///< Q * d
254 c_float *Ad; ///< A * d
255 c_float *sqrt_sigma; ///< elementwise sqrt(sigma)
256 c_float sqrt_delta; ///< sqrt(penalty update factor)
257 c_float eta; ///< linesearch parameter
258 c_float beta; ///< linesearch parameter
259 c_float *delta; ///< linesearch parameter
260 c_float *alpha; ///< linesearch parameter
261 c_float *temp_2m; ///< placeholder for vector of size 2m
262 c_float *delta2; ///< delta .* delta
263 c_float *delta_alpha; ///< delta .* alpha
264 array_element *s; ///< alpha ./ delta
265 c_int *index_L; ///< index set L (where s>0)
266 c_int *index_P; ///< index set P (where delta>0)
267 c_int *index_J; ///< index set J (L xor P)
268
269 /** @} */
270
271 /**
272 * @name Termination criteria variables
273 * @{
274 */
275 c_float eps_pri; ///< primal tolerance
276 c_float eps_dua; ///< dual tolerance
277 c_float eps_dua_in; ///< intermediate dual tolerance
278 c_float eps_abs_in; ///< intermediate absolute tolerance
279 c_float eps_rel_in; ///< intermediate relative tolerance
280 /** @} */
281
282 /**
283 * @name Primal infeasibility variables
284 * @{
285 */
286 c_float *delta_y; ///< difference of consecutive dual iterates
287 c_float *Atdelta_y; ///< A' * delta_y
288
289 /** @} */
290
291 /**
292 * @name Dual infeasibility variables
293 * @{
294 */
295 c_float *delta_x; ///< difference of consecutive primal iterates
296 c_float *Qdelta_x; ///< Q * delta_x
297 c_float *Adelta_x; ///< A * delta_x
298
299 /** @} */
300
301 /**
302 * @name Temporary vectors used in scaling
303 * @{
304 */
305
306 c_float *D_temp; ///< temporary primal variable scaling vectors
307 c_float *E_temp; ///< temporary constraints scaling vectors
308
309
310 /** @} */
311 QPALMSolver *solver; ///< linsys variables
312 QPALMSettings *settings; ///< problem settings
313 QPALMScaling *scaling; ///< scaling vectors
314 QPALMSolution *solution; ///< problem solution
315 QPALMInfo *info; ///< solver information
316
317 # ifdef QPALM_TIMING
318 QPALMTimer *timer; ///< timer object
319 # endif // ifdef QPALM_TIMING
320
321 atomic_bool cancel; ///< Cancel the solver (from other thread or signal)
322
324
325
326# ifdef __cplusplus
327}
328# endif
329
330#endif // ifndef QPALM_TYPES_H
Custom memory allocation, print and utility functions, and data types for floats and ints.
ladel_int c_int
type for integer numbers
Definition global_opts.h:42
ladel_double c_float
type for floating point numbers
Definition global_opts.h:41
Data structure.
Definition types.h:109
size_t m
number of constraints m
Definition types.h:111
c_float * bmin
dense array for lower bounds (size m)
Definition types.h:116
c_float c
constant part of cost
Definition types.h:115
size_t n
number of variables n
Definition types.h:110
c_float * q
dense array for linear part of cost function (size n)
Definition types.h:114
solver_sparse * A
sparse linear constraints matrix A (size m x n)
Definition types.h:113
c_float * bmax
dense array for upper bounds (size m)
Definition types.h:117
solver_sparse * Q
sparse quadratic part of the cost Q (size n x n)
Definition types.h:112
Solver return information.
Definition types.h:81
c_float run_time
total time (seconds)
Definition types.h:97
c_int iter_out
number of outer iterations (i.e. dual updates)
Definition types.h:83
c_float pri_res_norm
norm of primal residual
Definition types.h:87
c_float dual_objective
dual objective function value (= NaN if enable_dual_termination is false)
Definition types.h:92
c_int iter
number of iterations taken
Definition types.h:82
c_float solve_time
time taken for solve phase (seconds)
Definition types.h:96
c_float dua2_res_norm
norm of intermediate dual residual (minus proximal term)
Definition types.h:89
c_float objective
objective function value
Definition types.h:91
c_int status_val
status as c_int, defined in constants.h
Definition types.h:85
c_float setup_time
time taken for setup phase (seconds)
Definition types.h:95
c_float dua_res_norm
norm of dual residual
Definition types.h:88
Problem scaling matrices stored as vectors.
Definition types.h:68
c_float * Dinv
primal variable rescaling
Definition types.h:70
c_float c
objective scaling
Definition types.h:73
c_float * E
dual variable scaling
Definition types.h:71
c_float * Einv
dual variable rescaling
Definition types.h:72
c_float cinv
objective rescaling
Definition types.h:74
c_float * D
primal variable scaling
Definition types.h:69
Settings struct.
Definition types.h:124
c_float gamma_upd
proximal penalty update factor
Definition types.h:140
c_float sigma_max
penalty factor cap
Definition types.h:136
c_float eps_abs_in
intermediate absolute convergence tolerance
Definition types.h:129
c_float gamma_max
proximal penalty parameter cap
Definition types.h:141
c_int proximal
boolean, use proximal method of multipliers or not
Definition types.h:138
c_float delta
penalty update factor
Definition types.h:135
c_int warm_start
boolean, warm start
Definition types.h:146
c_float sigma_init
initial penalty parameter (guideline)
Definition types.h:137
c_float eps_dual_inf
dual infeasibility tolerance
Definition types.h:133
c_int reset_newton_iter
frequency of performing a complete Cholesky factorization
Definition types.h:147
c_float dual_objective_limit
termination value for the dual objective (useful in branch and bound)
Definition types.h:149
c_float eps_rel_in
intermediate relative convergence tolerance
Definition types.h:130
c_float rho
tolerance scaling factor
Definition types.h:131
c_float time_limit
time limit
Definition types.h:150
c_float theta
penalty update criterion parameter
Definition types.h:134
c_int max_rank_update
maximum rank for the sparse factorization update
Definition types.h:153
c_int enable_dual_termination
boolean, enable termination based on dual objective (useful in branch and bound)
Definition types.h:148
c_float max_rank_update_fraction
maximum rank (relative to n+m) for the factorization update
Definition types.h:154
c_float gamma_init
initial proximal penalty parameter
Definition types.h:139
c_float eps_prim_inf
primal infeasibility tolerance
Definition types.h:132
c_int inner_max_iter
maximum number of iterations per subproblem
Definition types.h:126
c_float eps_rel
relative convergence tolerance
Definition types.h:128
c_int verbose
boolean, write out progress
Definition types.h:144
c_int max_iter
maximum number of iterations
Definition types.h:125
c_int scaling
scaling iterations, if 0 then scaling is disabled
Definition types.h:142
c_int nonconvex
boolean, indicates whether the QP is nonconvex
Definition types.h:143
c_float eps_abs
absolute convergence tolerance
Definition types.h:127
c_int ordering
ordering method for factorization
Definition types.h:151
c_int factorization_method
factorize KKT or Schur complement
Definition types.h:152
c_int print_iter
frequency of printing
Definition types.h:145
Solution structure.
Definition types.h:50
c_float * y
dual solution
Definition types.h:52
c_float * x
primal solution
Definition types.h:51
Variables for linear system solving.
Definition types.h:162
solver_dense * E_temp
temporary constraints scaling vectors
Definition types.h:173
solver_dense * neg_dphi
-gradient of the Lagrangian
Definition types.h:175
solver_dense * D_temp
temporary primal variable scaling vectors
Definition types.h:174
solver_dense * Ad
A * d.
Definition types.h:179
solver_sparse * At_sqrt_sigma
A' * sqrt(sigma)
Definition types.h:193
c_int * first_row_A
row index of the first element in each column of A'
Definition types.h:167
c_int * active_constraints
index set of active constraints
Definition types.h:185
solver_dense * yh
candidate dual update
Definition types.h:181
c_int reset_newton
boolean, after sigma is updated perform a new factorization
Definition types.h:184
solver_dense * d
primal update step
Definition types.h:178
c_int * leave
index set of leaving constraints
Definition types.h:190
solver_dense * rhs_kkt
[-dphi; zeros(m,1)]
Definition types.h:176
solver_factor * LD
LD factor (part of LDL' factorization)
Definition types.h:169
c_int factorization_method
factorize KKT or Schur complement
Definition types.h:163
c_int * enter
index set of entering constraints
Definition types.h:188
solver_sparse * At
A'.
Definition types.h:166
c_int * active_constraints_old
index set of active constraints in the previous iteration
Definition types.h:186
c_int first_factorization
boolean, indicate we have not factorized previously
Definition types.h:183
solver_dense * At_scale
running vector of sqrt(sigma), used to scale At_sqrt_sigma
Definition types.h:192
solver_dense * Atyh
A' * yh.
Definition types.h:182
solver_dense * Qd
Q * d.
Definition types.h:180
solver_dense * sol_kkt
sol_kkt = kkt \ rhs_kkt
Definition types.h:177
solver_factor * LD_Q
LD factor of Q (useful in computing dual objective)
Definition types.h:171
c_float * first_elem_A
value of the first element in each column of A'
Definition types.h:168
c_int nb_leave
number of leaving constraints
Definition types.h:191
c_int nb_active_constraints
number of active constraints
Definition types.h:187
solver_symbolics * sym_Q
symbolics for Q (only used in LADEL)
Definition types.h:172
solver_symbolics * sym
symbolics for kkt (only used in LADEL)
Definition types.h:170
solver_sparse * kkt_full
KKT matrix if all constraints would be active.
Definition types.h:165
solver_sparse * kkt
KKT matrix.
Definition types.h:164
c_int nb_enter
number of entering constraints
Definition types.h:189
QPALM Workspace.
Definition types.h:204
c_float * delta_y
difference of consecutive dual iterates
Definition types.h:286
c_float eta
linesearch parameter
Definition types.h:257
c_float * x
primal iterate
Definition types.h:211
c_float * y
dual iterate
Definition types.h:212
c_float * yh
candidate dual update
Definition types.h:236
QPALMScaling * scaling
scaling vectors
Definition types.h:313
c_float * delta
linesearch parameter
Definition types.h:259
c_int nb_sigma_changed
number of sigma-components that changed in an outer iteration (relevant for factorization update)
Definition types.h:229
c_int initialized
flag whether the iterates were initialized or not
Definition types.h:217
c_float * D_temp
temporary primal variable scaling vectors
Definition types.h:306
c_float * delta2
delta .* delta
Definition types.h:262
c_float eps_pri
primal tolerance
Definition types.h:275
c_float * Ax
scaled A * x
Definition types.h:213
QPALMInfo * info
solver information
Definition types.h:315
c_float * z
projection of Axys onto the constraint set [bmin, bmax]
Definition types.h:233
c_float * pri_res_in
intermediate primal residual
Definition types.h:235
c_int * index_J
index set J (L xor P)
Definition types.h:267
c_float * temp_m
placeholder for vector of size m
Definition types.h:224
QPALMSolution * solution
problem solution
Definition types.h:314
c_int * index_P
index set P (where delta>0)
Definition types.h:266
c_float * pri_res
primal residual
Definition types.h:234
c_float tau
stepsize
Definition types.h:252
c_float * sqrt_sigma
elementwise sqrt(sigma)
Definition types.h:255
c_float * sigma
penalty vector
Definition types.h:226
array_element * s
alpha ./ delta
Definition types.h:264
c_float eps_dua
dual tolerance
Definition types.h:276
c_float beta
linesearch parameter
Definition types.h:258
c_float * delta_alpha
delta .* alpha
Definition types.h:263
c_float * x_prev
previous primal iterate
Definition types.h:216
c_float * Adelta_x
A * delta_x.
Definition types.h:297
c_float * neg_dphi
-dphi, required as the rhs in SCHUR
Definition types.h:242
c_float * Axys
Ax + y./sigma.
Definition types.h:232
c_float * Qdelta_x
Q * delta_x.
Definition types.h:296
c_int gamma_maxed
flag to indicate whether gamma has been maximized when the primal residual was low
Definition types.h:231
c_float sqrt_sigma_max
sqrt(sigma_max)
Definition types.h:228
c_float * delta_x
difference of consecutive primal iterates
Definition types.h:295
QPALMTimer * timer
timer object
Definition types.h:318
c_float * Qx
scaled Q * x
Definition types.h:214
c_float * dphi_prev
previous gradient of the Lagrangian
Definition types.h:243
c_float eps_rel_in
intermediate relative tolerance
Definition types.h:279
QPALMSettings * settings
problem settings
Definition types.h:312
c_float * x0
record of the primal iterate during the last dual update
Definition types.h:239
c_float * sigma_inv
1./sigma
Definition types.h:227
c_float eps_dua_in
intermediate dual tolerance
Definition types.h:277
c_float gamma
proximal penalty factor
Definition types.h:230
c_float * dphi
gradient of the Lagrangian
Definition types.h:241
c_float * E_temp
temporary constraints scaling vectors
Definition types.h:307
c_float * df
gradient of the primal objective (+proximal term)
Definition types.h:238
atomic_bool cancel
Cancel the solver (from other thread or signal)
Definition types.h:321
c_float * alpha
linesearch parameter
Definition types.h:260
QPALMSolver * solver
linsys variables
Definition types.h:311
c_float sqrt_delta
sqrt(penalty update factor)
Definition types.h:256
c_float * xx0
x - x0
Definition types.h:240
c_float * Atdelta_y
A' * delta_y.
Definition types.h:287
c_float * temp_2m
placeholder for vector of size 2m
Definition types.h:261
c_float * Ad
A * d.
Definition types.h:254
c_float * Aty
A' * y (useful for saving one mat_tpose_vec)
Definition types.h:215
c_float eps_abs_in
intermediate absolute tolerance
Definition types.h:278
QPALMData * data
problem data to work on (possibly scaled)
Definition types.h:205
c_int * index_L
index set L (where s>0)
Definition types.h:265
c_float * Qd
Q * d.
Definition types.h:253
c_float * temp_n
placeholder for vector of size n
Definition types.h:225
c_float * d
primal update step
Definition types.h:244
c_float * Atyh
A' * yh.
Definition types.h:237
Array to sort in linesearch.
Definition types.h:34
size_t i
index
Definition types.h:36
c_float x
value of the element
Definition types.h:35
ladel_work solver_common
Definition types.h:25
ladel_double solver_dense
Definition types.h:27
ladel_symbolics solver_symbolics
Definition types.h:29
ladel_sparse_matrix solver_sparse
Definition types.h:26
struct QPALM_TIMER QPALMTimer
QPALM Timer for statistics.
Definition types.h:60
ladel_factor solver_factor
Definition types.h:28