scs 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/scs/ffi.rb +2 -0
- data/lib/scs/version.rb +1 -1
- data/vendor/scs/CITATION.cff +2 -2
- data/vendor/scs/CMakeLists.txt +136 -6
- data/vendor/scs/Makefile +53 -3
- data/vendor/scs/README.md +1 -1
- data/vendor/scs/include/cones.h +47 -2
- data/vendor/scs/include/glbopts.h +1 -1
- data/vendor/scs/include/scs.h +29 -0
- data/vendor/scs/include/scs_blas.h +4 -0
- data/vendor/scs/include/scs_types.h +3 -1
- data/vendor/scs/include/util_spectral_cones.h +45 -0
- data/vendor/scs/linsys/cpu/direct/private.c +3 -3
- data/vendor/scs/linsys/cpu/direct/private.h +2 -1
- data/vendor/scs/linsys/csparse.c +1 -1
- data/vendor/scs/linsys/cudss/direct/private.c +279 -0
- data/vendor/scs/linsys/cudss/direct/private.h +63 -0
- data/vendor/scs/linsys/external/qdldl/qdldl_types.h +1 -1
- data/vendor/scs/linsys/gpu/indirect/private.c +14 -21
- data/vendor/scs/scs.mk +17 -2
- data/vendor/scs/src/aa.c +8 -12
- data/vendor/scs/src/cones.c +783 -12
- data/vendor/scs/src/rw.c +15 -1
- data/vendor/scs/src/scs.c +4 -0
- data/vendor/scs/src/spectral_cones/logdeterminant/log_cone_IPM.c +660 -0
- data/vendor/scs/src/spectral_cones/logdeterminant/log_cone_Newton.c +279 -0
- data/vendor/scs/src/spectral_cones/logdeterminant/log_cone_wrapper.c +205 -0
- data/vendor/scs/src/spectral_cones/logdeterminant/logdet_cone.c +143 -0
- data/vendor/scs/src/spectral_cones/nuclear/ell1_cone.c +221 -0
- data/vendor/scs/src/spectral_cones/nuclear/nuclear_cone.c +99 -0
- data/vendor/scs/src/spectral_cones/sum-largest/sum_largest_cone.c +196 -0
- data/vendor/scs/src/spectral_cones/sum-largest/sum_largest_eval_cone.c +140 -0
- data/vendor/scs/src/spectral_cones/util_spectral_cones.c +52 -0
- data/vendor/scs/test/problems/complex_PSD.h +83 -0
- data/vendor/scs/test/rng.h +4 -4
- data/vendor/scs/test/run_tests.c +25 -0
- data/vendor/scs/test/spectral_cones_problems/exp_design.h +141 -0
- data/vendor/scs/test/spectral_cones_problems/graph_partitioning.h +275 -0
- data/vendor/scs/test/spectral_cones_problems/robust_pca.h +253 -0
- data/vendor/scs/test/spectral_cones_problems/several_logdet_cones.h +222 -0
- data/vendor/scs/test/spectral_cones_problems/several_nuc_cone.h +285 -0
- data/vendor/scs/test/spectral_cones_problems/several_sum_largest.h +420 -0
- metadata +21 -2
@@ -0,0 +1,285 @@
|
|
1
|
+
#include "glbopts.h"
|
2
|
+
#include "linalg.h"
|
3
|
+
#include "minunit.h"
|
4
|
+
#include "problem_utils.h"
|
5
|
+
#include "rw.h"
|
6
|
+
#include "scs.h"
|
7
|
+
#include "scs_matrix.h"
|
8
|
+
#include "util.h"
|
9
|
+
|
10
|
+
// for SpectralSCS
|
11
|
+
static const char *several_nuc_cone(void) {
|
12
|
+
ScsCone *k = (ScsCone *)scs_calloc(1, sizeof(ScsCone));
|
13
|
+
ScsData *d = (ScsData *)scs_calloc(1, sizeof(ScsData));
|
14
|
+
ScsSettings *stgs = (ScsSettings *)scs_calloc(1, sizeof(ScsSettings));
|
15
|
+
ScsSolution *sol = (ScsSolution *)scs_calloc(1, sizeof(ScsSolution));
|
16
|
+
ScsInfo info = {0};
|
17
|
+
scs_int exitflag;
|
18
|
+
scs_float perr, derr;
|
19
|
+
scs_int success;
|
20
|
+
const char *fail;
|
21
|
+
|
22
|
+
/* data */
|
23
|
+
scs_float Ax[] = {
|
24
|
+
1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1.,
|
25
|
+
1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1.,
|
26
|
+
1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1.,
|
27
|
+
1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1.,
|
28
|
+
1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1.,
|
29
|
+
1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1.,
|
30
|
+
1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1.,
|
31
|
+
1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1.,
|
32
|
+
1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1.,
|
33
|
+
1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1.,
|
34
|
+
1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1.,
|
35
|
+
1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1., 1., -1., -1.,
|
36
|
+
1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1.,
|
37
|
+
1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1.,
|
38
|
+
1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1.,
|
39
|
+
1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1.,
|
40
|
+
1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1.,
|
41
|
+
1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1.,
|
42
|
+
1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1.,
|
43
|
+
1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1.,
|
44
|
+
1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1.,
|
45
|
+
1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1.,
|
46
|
+
1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1.,
|
47
|
+
1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1., 1., 1., -1.,
|
48
|
+
-1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1.,
|
49
|
+
-1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1.,
|
50
|
+
1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1.,
|
51
|
+
-1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1.,
|
52
|
+
1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1.,
|
53
|
+
-1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1.,
|
54
|
+
1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1.,
|
55
|
+
-1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1.,
|
56
|
+
1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1.,
|
57
|
+
-1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1.,
|
58
|
+
1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1.,
|
59
|
+
-1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1.,
|
60
|
+
1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1.,
|
61
|
+
-1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1.,
|
62
|
+
1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1.,
|
63
|
+
-1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1., 1., -1.,
|
64
|
+
1., -1.};
|
65
|
+
scs_int Ai[] = {
|
66
|
+
60, 61, 121, 60, 62, 122, 60, 63, 123, 60, 64, 124, 60, 65, 125,
|
67
|
+
60, 66, 126, 60, 67, 127, 60, 68, 128, 60, 69, 129, 60, 70, 130,
|
68
|
+
60, 71, 131, 60, 72, 132, 60, 73, 133, 60, 74, 134, 60, 75, 135,
|
69
|
+
60, 76, 136, 60, 77, 137, 60, 78, 138, 60, 79, 139, 60, 80, 140,
|
70
|
+
60, 81, 141, 60, 82, 142, 60, 83, 143, 60, 84, 144, 60, 85, 145,
|
71
|
+
60, 86, 146, 60, 87, 147, 60, 88, 148, 60, 89, 149, 60, 90, 150,
|
72
|
+
60, 91, 151, 60, 92, 152, 60, 93, 153, 60, 94, 154, 60, 95, 155,
|
73
|
+
60, 96, 156, 60, 97, 157, 60, 98, 158, 60, 99, 159, 60, 100, 160,
|
74
|
+
60, 101, 161, 60, 102, 162, 60, 103, 163, 60, 104, 164, 60, 105, 165,
|
75
|
+
60, 106, 166, 60, 107, 167, 60, 108, 168, 60, 109, 169, 60, 110, 170,
|
76
|
+
60, 111, 171, 60, 112, 172, 60, 113, 173, 60, 114, 174, 60, 115, 175,
|
77
|
+
60, 116, 176, 60, 117, 177, 60, 118, 178, 60, 119, 179, 60, 120, 180,
|
78
|
+
0, 61, 121, 1, 62, 122, 2, 63, 123, 3, 64, 124, 4, 65, 125,
|
79
|
+
5, 66, 126, 6, 67, 127, 7, 68, 128, 8, 69, 129, 9, 70, 130,
|
80
|
+
10, 71, 131, 11, 72, 132, 12, 73, 133, 13, 74, 134, 14, 75, 135,
|
81
|
+
15, 76, 136, 16, 77, 137, 17, 78, 138, 18, 79, 139, 19, 80, 140,
|
82
|
+
20, 81, 141, 21, 82, 142, 22, 83, 143, 23, 84, 144, 24, 85, 145,
|
83
|
+
25, 86, 146, 26, 87, 147, 27, 88, 148, 28, 89, 149, 29, 90, 150,
|
84
|
+
30, 91, 151, 31, 92, 152, 32, 93, 153, 33, 94, 154, 34, 95, 155,
|
85
|
+
35, 96, 156, 36, 97, 157, 37, 98, 158, 38, 99, 159, 39, 100, 160,
|
86
|
+
40, 101, 161, 41, 102, 162, 42, 103, 163, 43, 104, 164, 44, 105, 165,
|
87
|
+
45, 106, 166, 46, 107, 167, 47, 108, 168, 48, 109, 169, 49, 110, 170,
|
88
|
+
50, 111, 171, 51, 112, 172, 52, 113, 173, 53, 114, 174, 54, 115, 175,
|
89
|
+
55, 116, 176, 56, 117, 177, 57, 118, 178, 58, 119, 179, 59, 120, 180,
|
90
|
+
181, 242, 0, 182, 1, 183, 2, 184, 3, 185, 4, 186, 5, 187, 6,
|
91
|
+
188, 7, 189, 8, 190, 9, 191, 10, 192, 11, 193, 12, 194, 13, 195,
|
92
|
+
14, 196, 15, 197, 16, 198, 17, 199, 18, 200, 19, 201, 20, 202, 21,
|
93
|
+
203, 22, 204, 23, 205, 24, 206, 25, 207, 26, 208, 27, 209, 28, 210,
|
94
|
+
29, 211, 30, 212, 31, 213, 32, 214, 33, 215, 34, 216, 35, 217, 36,
|
95
|
+
218, 37, 219, 38, 220, 39, 221, 40, 222, 41, 223, 42, 224, 43, 225,
|
96
|
+
44, 226, 45, 227, 46, 228, 47, 229, 48, 230, 49, 231, 50, 232, 51,
|
97
|
+
233, 52, 234, 53, 235, 54, 236, 55, 237, 56, 238, 57, 239, 58, 240,
|
98
|
+
59, 241, 0, 243, 1, 244, 2, 245, 3, 246, 4, 247, 5, 248, 6,
|
99
|
+
249, 7, 250, 8, 251, 9, 252, 10, 253, 11, 254, 12, 255, 13, 256,
|
100
|
+
14, 257, 15, 258, 16, 259, 17, 260, 18, 261, 19, 262, 20, 263, 21,
|
101
|
+
264, 22, 265, 23, 266, 24, 267, 25, 268, 26, 269, 27, 270, 28, 271,
|
102
|
+
29, 272, 30, 273, 31, 274, 32, 275, 33, 276, 34, 277, 35, 278, 36,
|
103
|
+
279, 37, 280, 38, 281, 39, 282, 40, 283, 41, 284, 42, 285, 43, 286,
|
104
|
+
44, 287, 45, 288, 46, 289, 47, 290, 48, 291, 49, 292, 50, 293, 51,
|
105
|
+
294, 52, 295, 53, 296, 54, 297, 55, 298, 56, 299, 57, 300, 58, 301,
|
106
|
+
59, 302};
|
107
|
+
scs_int Ap[] = {
|
108
|
+
0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42,
|
109
|
+
45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87,
|
110
|
+
90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132,
|
111
|
+
135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177,
|
112
|
+
180, 183, 186, 189, 192, 195, 198, 201, 204, 207, 210, 213, 216, 219, 222,
|
113
|
+
225, 228, 231, 234, 237, 240, 243, 246, 249, 252, 255, 258, 261, 264, 267,
|
114
|
+
270, 273, 276, 279, 282, 285, 288, 291, 294, 297, 300, 303, 306, 309, 312,
|
115
|
+
315, 318, 321, 324, 327, 330, 333, 336, 339, 342, 345, 348, 351, 354, 357,
|
116
|
+
360, 361, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386,
|
117
|
+
388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416,
|
118
|
+
418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446,
|
119
|
+
448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476,
|
120
|
+
478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506,
|
121
|
+
508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536,
|
122
|
+
538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566,
|
123
|
+
568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596,
|
124
|
+
598, 600, 602};
|
125
|
+
|
126
|
+
scs_float b[] = {
|
127
|
+
1.00346258, 1.058972, 1.3338978, 0.95502671, 0.76639009, 0.61628772,
|
128
|
+
1.42111113, 1.03841293, 0.44615864, 0.85861969, 0.90243625, 0.72213324,
|
129
|
+
0.94699689, 0.81716838, 1.01510945, 0.13007678, 1.198153, 0.95044553,
|
130
|
+
0.4949946, 1.07831368, 1.32720261, 1.07903274, 1.68375286, 1.27474549,
|
131
|
+
1.18000824, 0.61398833, 1.82853889, 1.27952122, 0.75345835, 1.20492083,
|
132
|
+
1.2038308, 1.03174759, 1.68585985, 1.11247234, 1.00162586, 0.62169897,
|
133
|
+
1.69182118, 1.29236728, 0.59968048, 1.17087666, 0.39423923, 0.29843035,
|
134
|
+
0.53155946, 0.40310646, 0.3583775, 0.18407451, 0.53328188, 0.34513123,
|
135
|
+
0.26243805, 0.37141265, 0.72923936, 0.60496262, 0.78424416, 0.6510247,
|
136
|
+
0.76451821, 0.16999683, 0.98700998, 0.79590066, 0.37119843, 0.86498628,
|
137
|
+
0.58937813, 0., 0., 0., 0., 0.,
|
138
|
+
0., 0., 0., 0., 0., 0.,
|
139
|
+
0., 0., 0., 0., 0., 0.,
|
140
|
+
0., 0., 0., 0., 0., 0.,
|
141
|
+
0., 0., 0., 0., 0., 0.,
|
142
|
+
0., 0., 0., 0., 0., 0.,
|
143
|
+
0., 0., 0., 0., 0., 0.,
|
144
|
+
0., 0., 0., 0., 0., 0.,
|
145
|
+
0., 0., 0., 0., 0., 0.,
|
146
|
+
0., 0., 0., 0., 0., 0.,
|
147
|
+
0., 0., 0., 0., 0., 0.,
|
148
|
+
0., 0., 0., 0., 0., 0.,
|
149
|
+
0., 0., 0., 0., 0., 0.,
|
150
|
+
0., 0., 0., 0., 0., 0.,
|
151
|
+
0., 0., 0., 0., 0., 0.,
|
152
|
+
0., 0., 0., 0., 0., 0.,
|
153
|
+
0., 0., 0., 0., 0., 0.,
|
154
|
+
0., 0., 0., 0., 0., 0.,
|
155
|
+
0., 0., 0., 0., 0., 0.,
|
156
|
+
0., 0., 0., 0., 0., 0.,
|
157
|
+
0., 0., 0., 0., 0., 0.,
|
158
|
+
0., 0., 0., 0., 0., 0.,
|
159
|
+
0., 0., 0., 0., 0., 0.,
|
160
|
+
0., 0., 0., 0., 0., 0.,
|
161
|
+
0., 0., 0., 0., 0., 0.,
|
162
|
+
0., 0., 0., 0., 0., 0.,
|
163
|
+
0., 0., 0., 0., 0., 0.,
|
164
|
+
0., 0., 0., 0., 0., 0.,
|
165
|
+
0., 0., 0., 0., 0., 0.,
|
166
|
+
0., 0., 0., 0., 0., 0.,
|
167
|
+
0., 0., 0., 0., 0., 0.,
|
168
|
+
0., 0., 0., 0., 0., 0.,
|
169
|
+
0., 0., 0., 0., 0., 0.,
|
170
|
+
0., 0., 0., 0., 0., 0.,
|
171
|
+
0., 0., 0., 0., 0., 0.,
|
172
|
+
0., 0., 0., 0., 0., 0.,
|
173
|
+
0., 0., 0., 0., 0., 0.,
|
174
|
+
0., 0., 0., 0., 0., 0.,
|
175
|
+
0., 0., 0., 0., 0., 0.,
|
176
|
+
0., 0., 0., 0., 0., 0.,
|
177
|
+
0., 0., 0.};
|
178
|
+
scs_float c[] = {
|
179
|
+
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
|
180
|
+
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
|
181
|
+
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
|
182
|
+
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
|
183
|
+
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
|
184
|
+
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
|
185
|
+
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 0., 0., 0., 0.,
|
186
|
+
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
|
187
|
+
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
|
188
|
+
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
|
189
|
+
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
|
190
|
+
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
|
191
|
+
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
|
192
|
+
0., 0., 0., 0., 0., 0., 0., 0.};
|
193
|
+
scs_int m = 303;
|
194
|
+
scs_int n = 242;
|
195
|
+
|
196
|
+
scs_int z = 60;
|
197
|
+
scs_int l = 121;
|
198
|
+
scs_int *q = SCS_NULL;
|
199
|
+
scs_int qsize = 0;
|
200
|
+
scs_int *s = SCS_NULL;
|
201
|
+
scs_int ssize = 0;
|
202
|
+
scs_int ep = 0;
|
203
|
+
scs_int ed = 0;
|
204
|
+
scs_float *p = SCS_NULL;
|
205
|
+
scs_int psize = 0;
|
206
|
+
scs_int *d_array = SCS_NULL;
|
207
|
+
scs_int dsize = 0;
|
208
|
+
scs_int nuc_m[] = {10, 10};
|
209
|
+
scs_int nuc_n[] = {6, 6};
|
210
|
+
scs_int nucsize = 2;
|
211
|
+
scs_int *ell1 = SCS_NULL;
|
212
|
+
scs_int ell1_size = 0;
|
213
|
+
scs_int *sl_n = SCS_NULL;
|
214
|
+
scs_int *sl_k = SCS_NULL;
|
215
|
+
scs_int sl_size = 0;
|
216
|
+
|
217
|
+
// computed using mosek (the input of Ax is truncated, and mosek solved
|
218
|
+
// the problem with the non-truncated data)
|
219
|
+
scs_float opt = 8.046737935264606;
|
220
|
+
/* end data */
|
221
|
+
|
222
|
+
d->m = m;
|
223
|
+
d->n = n;
|
224
|
+
d->b = b;
|
225
|
+
d->c = c;
|
226
|
+
|
227
|
+
d->A = (ScsMatrix *)scs_calloc(1, sizeof(ScsMatrix));
|
228
|
+
|
229
|
+
d->A->m = m;
|
230
|
+
d->A->n = n;
|
231
|
+
d->A->x = Ax;
|
232
|
+
d->A->i = Ai;
|
233
|
+
d->A->p = Ap;
|
234
|
+
|
235
|
+
k->z = z;
|
236
|
+
k->l = l;
|
237
|
+
k->q = q;
|
238
|
+
k->qsize = qsize;
|
239
|
+
k->s = s;
|
240
|
+
k->ssize = ssize;
|
241
|
+
k->ep = ep;
|
242
|
+
k->ed = ed;
|
243
|
+
k->p = p;
|
244
|
+
k->psize = psize;
|
245
|
+
k->d = d_array;
|
246
|
+
k->dsize = dsize;
|
247
|
+
k->nuc_m = nuc_m;
|
248
|
+
k->nuc_n = nuc_n;
|
249
|
+
k->nucsize = nucsize;
|
250
|
+
k->ell1 = ell1;
|
251
|
+
k->ell1_size = ell1_size;
|
252
|
+
k->sl_n = sl_n;
|
253
|
+
k->sl_k = sl_k;
|
254
|
+
k->sl_size = sl_size;
|
255
|
+
|
256
|
+
scs_set_default_settings(stgs);
|
257
|
+
stgs->eps_abs = 1e-7;
|
258
|
+
stgs->eps_rel = 1e-7;
|
259
|
+
stgs->eps_infeas = 1e-9;
|
260
|
+
|
261
|
+
exitflag = scs(d, k, stgs, sol, &info);
|
262
|
+
|
263
|
+
perr = SCS(dot)(d->c, sol->x, d->n) - opt;
|
264
|
+
derr = -SCS(dot)(d->b, sol->y, d->m) - opt;
|
265
|
+
|
266
|
+
scs_printf("primal obj error %4e\n", perr);
|
267
|
+
scs_printf("dual obj error %4e\n", derr);
|
268
|
+
|
269
|
+
success = ABS(perr) < 1e-4 && ABS(derr) < 1e-4 && exitflag == SCS_SOLVED;
|
270
|
+
|
271
|
+
mu_assert("robust_pca: SCS failed to produce outputflag SCS_SOLVED", success);
|
272
|
+
|
273
|
+
fail = verify_solution_correct(d, k, stgs, &info, sol, exitflag);
|
274
|
+
if (fail)
|
275
|
+
return fail;
|
276
|
+
|
277
|
+
/* kill data */
|
278
|
+
scs_free(d->A);
|
279
|
+
scs_free(k);
|
280
|
+
scs_free(stgs);
|
281
|
+
scs_free(d);
|
282
|
+
SCS(free_sol)(sol);
|
283
|
+
|
284
|
+
return fail;
|
285
|
+
}
|