scs 0.2.2 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/LICENSE.txt +18 -18
  4. data/README.md +19 -14
  5. data/lib/scs/ffi.rb +31 -20
  6. data/lib/scs/solver.rb +32 -9
  7. data/lib/scs/version.rb +1 -1
  8. data/vendor/scs/CITATION.cff +39 -0
  9. data/vendor/scs/CMakeLists.txt +320 -0
  10. data/vendor/scs/Makefile +32 -23
  11. data/vendor/scs/README.md +9 -218
  12. data/vendor/scs/include/aa.h +67 -23
  13. data/vendor/scs/include/cones.h +22 -19
  14. data/vendor/scs/include/glbopts.h +107 -79
  15. data/vendor/scs/include/linalg.h +3 -4
  16. data/vendor/scs/include/linsys.h +58 -44
  17. data/vendor/scs/include/normalize.h +6 -5
  18. data/vendor/scs/include/rw.h +8 -2
  19. data/vendor/scs/include/scs.h +257 -141
  20. data/vendor/scs/include/scs_types.h +34 -0
  21. data/vendor/scs/include/scs_work.h +83 -0
  22. data/vendor/scs/include/util.h +3 -15
  23. data/vendor/scs/linsys/cpu/direct/private.c +241 -232
  24. data/vendor/scs/linsys/cpu/direct/private.h +13 -7
  25. data/vendor/scs/linsys/cpu/indirect/private.c +194 -118
  26. data/vendor/scs/linsys/cpu/indirect/private.h +7 -4
  27. data/vendor/scs/linsys/csparse.c +87 -0
  28. data/vendor/scs/linsys/csparse.h +34 -0
  29. data/vendor/scs/linsys/external/amd/SuiteSparse_config.c +6 -6
  30. data/vendor/scs/linsys/external/amd/SuiteSparse_config.h +6 -1
  31. data/vendor/scs/linsys/external/amd/amd_internal.h +1 -1
  32. data/vendor/scs/linsys/external/amd/amd_order.c +5 -5
  33. data/vendor/scs/linsys/external/qdldl/changes +2 -0
  34. data/vendor/scs/linsys/external/qdldl/qdldl.c +29 -46
  35. data/vendor/scs/linsys/external/qdldl/qdldl.h +33 -41
  36. data/vendor/scs/linsys/external/qdldl/qdldl_types.h +11 -3
  37. data/vendor/scs/linsys/gpu/gpu.c +58 -21
  38. data/vendor/scs/linsys/gpu/gpu.h +70 -35
  39. data/vendor/scs/linsys/gpu/indirect/private.c +394 -157
  40. data/vendor/scs/linsys/gpu/indirect/private.h +27 -12
  41. data/vendor/scs/linsys/scs_matrix.c +478 -0
  42. data/vendor/scs/linsys/scs_matrix.h +70 -0
  43. data/vendor/scs/scs.mk +14 -10
  44. data/vendor/scs/src/aa.c +394 -110
  45. data/vendor/scs/src/cones.c +497 -359
  46. data/vendor/scs/src/ctrlc.c +15 -5
  47. data/vendor/scs/src/linalg.c +107 -26
  48. data/vendor/scs/src/normalize.c +30 -72
  49. data/vendor/scs/src/rw.c +202 -27
  50. data/vendor/scs/src/scs.c +769 -571
  51. data/vendor/scs/src/scs_version.c +11 -3
  52. data/vendor/scs/src/util.c +37 -106
  53. data/vendor/scs/test/minunit.h +22 -8
  54. data/vendor/scs/test/problem_utils.h +180 -25
  55. data/vendor/scs/test/problems/degenerate.h +130 -0
  56. data/vendor/scs/test/problems/hs21_tiny_qp.h +124 -0
  57. data/vendor/scs/test/problems/hs21_tiny_qp_rw.h +116 -0
  58. data/vendor/scs/test/problems/infeasible_tiny_qp.h +100 -0
  59. data/vendor/scs/test/problems/qafiro_tiny_qp.h +199 -0
  60. data/vendor/scs/test/problems/random_prob +0 -0
  61. data/vendor/scs/test/problems/random_prob.h +45 -0
  62. data/vendor/scs/test/problems/rob_gauss_cov_est.h +188 -31
  63. data/vendor/scs/test/problems/small_lp.h +14 -13
  64. data/vendor/scs/test/problems/small_qp.h +352 -0
  65. data/vendor/scs/test/problems/test_validation.h +43 -0
  66. data/vendor/scs/test/problems/unbounded_tiny_qp.h +82 -0
  67. data/vendor/scs/test/random_socp_prob.c +54 -53
  68. data/vendor/scs/test/rng.h +109 -0
  69. data/vendor/scs/test/run_from_file.c +20 -11
  70. data/vendor/scs/test/run_tests.c +35 -2
  71. metadata +29 -98
  72. data/vendor/scs/linsys/amatrix.c +0 -305
  73. data/vendor/scs/linsys/amatrix.h +0 -36
  74. data/vendor/scs/linsys/amatrix.o +0 -0
  75. data/vendor/scs/linsys/cpu/direct/private.o +0 -0
  76. data/vendor/scs/linsys/cpu/indirect/private.o +0 -0
  77. data/vendor/scs/linsys/external/amd/SuiteSparse_config.o +0 -0
  78. data/vendor/scs/linsys/external/amd/amd_1.o +0 -0
  79. data/vendor/scs/linsys/external/amd/amd_2.o +0 -0
  80. data/vendor/scs/linsys/external/amd/amd_aat.o +0 -0
  81. data/vendor/scs/linsys/external/amd/amd_control.o +0 -0
  82. data/vendor/scs/linsys/external/amd/amd_defaults.o +0 -0
  83. data/vendor/scs/linsys/external/amd/amd_dump.o +0 -0
  84. data/vendor/scs/linsys/external/amd/amd_global.o +0 -0
  85. data/vendor/scs/linsys/external/amd/amd_info.o +0 -0
  86. data/vendor/scs/linsys/external/amd/amd_order.o +0 -0
  87. data/vendor/scs/linsys/external/amd/amd_post_tree.o +0 -0
  88. data/vendor/scs/linsys/external/amd/amd_postorder.o +0 -0
  89. data/vendor/scs/linsys/external/amd/amd_preprocess.o +0 -0
  90. data/vendor/scs/linsys/external/amd/amd_valid.o +0 -0
  91. data/vendor/scs/linsys/external/qdldl/qdldl.o +0 -0
  92. data/vendor/scs/src/aa.o +0 -0
  93. data/vendor/scs/src/cones.o +0 -0
  94. data/vendor/scs/src/ctrlc.o +0 -0
  95. data/vendor/scs/src/linalg.o +0 -0
  96. data/vendor/scs/src/normalize.o +0 -0
  97. data/vendor/scs/src/rw.o +0 -0
  98. data/vendor/scs/src/scs.o +0 -0
  99. data/vendor/scs/src/scs_version.o +0 -0
  100. data/vendor/scs/src/util.o +0 -0
  101. data/vendor/scs/test/data/small_random_socp +0 -0
  102. data/vendor/scs/test/problems/small_random_socp.h +0 -33
  103. data/vendor/scs/test/run_tests +0 -2
@@ -1,47 +1,141 @@
1
- #include "amatrix.h"
2
1
  #include "glbopts.h"
3
2
  #include "linalg.h"
4
3
  #include "minunit.h"
5
4
  #include "scs.h"
5
+ #include "scs_matrix.h"
6
6
  #include "util.h"
7
7
 
8
- static scs_float Ax[] = {-1.0, -0.25035003149, -0.214684983694, -0.0013696512491, -1.0, -1.0, 0.0941450010301, -0.0929840802212, 0.0143905024814, -1.0, -1.41421356237, -1.0, 0.0941450010301, -0.0929840802212, 0.0143905024814, 1.0, -1.0, -0.0354035554388, -0.0402731435884, -0.151196563215, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.41421356237, 1.0, -1.41421356237, 1.0, -1.41421356237, 1.0, -1.0, 1.0, -1.41421356237, 1.0, -1.41421356237, 1.0, -1.0, 1.0, 1.0, -1.41421356237, 1.0, -1.0, -1.0, -1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0};
9
- static scs_int Ai[] = {11, 15, 16, 17, 36, 12, 15, 16, 17, 18, 37, 13, 15, 16, 17, 18, 14, 15, 16, 17, 38, 15, 19, 16, 20, 17, 21, 19, 20, 21, 25, 19, 20, 21, 19, 22, 20, 23, 21, 24, 3, 26, 4, 5, 27, 7, 28, 9, 29, 6, 30, 8, 31, 10, 32, 11, 33, 12, 13, 34, 14, 35, 1, 7, 0, 8, 9, 2, 10, 1, 3, 41, 2, 6, 44, 25, 39, 25, 42};
10
- static scs_int Ap[] = {0, 5, 11, 16, 21, 23, 25, 27, 31, 34, 36, 38, 40, 42, 45, 47, 49, 51, 53, 55, 57, 60, 62, 64, 66, 67, 69, 72, 75, 77, 79};
11
- static scs_float b[] = {-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, 1.0, -0.0, -0.0, 1.0, -0.0};
12
- static scs_float c[] ={0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
13
-
14
- static scs_int m = 45;
15
- static scs_int n = 30;
16
-
17
- static scs_int f = 19;
18
- static scs_int l = 7;
19
- static scs_int *q = SCS_NULL;
20
- static scs_int qsize = 0;
21
- static scs_int s[] = {4, 2};
22
- static scs_int ssize = 2;
23
- static scs_int ep = 2;
24
- static scs_int ed = 0;
25
- static scs_float *p = SCS_NULL;
26
- static scs_int psize = 0;
27
-
28
- static scs_float opt = -4.8912;
29
-
30
8
  static const char *rob_gauss_cov_est(void) {
31
9
  ScsCone *k = (ScsCone *)scs_calloc(1, sizeof(ScsCone));
32
10
  ScsData *d = (ScsData *)scs_calloc(1, sizeof(ScsData));
11
+ ScsSettings *stgs = (ScsSettings *)scs_calloc(1, sizeof(ScsSettings));
33
12
  ScsSolution *sol = (ScsSolution *)scs_calloc(1, sizeof(ScsSolution));
34
13
  ScsInfo info = {0};
35
14
  scs_int exitflag;
36
15
  scs_float perr, derr;
37
16
  scs_int success;
17
+ const char *fail;
18
+
19
+ /* data */
20
+ scs_float Ax[] = {-1.0,
21
+ -0.25035003149,
22
+ -0.214684983694,
23
+ -0.0013696512491,
24
+ -1.0,
25
+ -1.0,
26
+ 0.0941450010301,
27
+ -0.0929840802212,
28
+ 0.0143905024814,
29
+ -1.0,
30
+ -1.41421356237,
31
+ -1.0,
32
+ 0.0941450010301,
33
+ -0.0929840802212,
34
+ 0.0143905024814,
35
+ 1.0,
36
+ -1.0,
37
+ -0.0354035554388,
38
+ -0.0402731435884,
39
+ -0.151196563215,
40
+ -1.0,
41
+ 1.0,
42
+ 1.0,
43
+ 1.0,
44
+ 1.0,
45
+ 1.0,
46
+ 1.0,
47
+ 1.0,
48
+ 1.0,
49
+ 1.0,
50
+ -1.0,
51
+ -1.0,
52
+ -1.0,
53
+ -1.0,
54
+ -1.0,
55
+ -1.0,
56
+ -1.0,
57
+ -1.0,
58
+ -1.0,
59
+ -1.0,
60
+ 1.0,
61
+ -1.0,
62
+ 1.0,
63
+ 1.0,
64
+ -1.41421356237,
65
+ 1.0,
66
+ -1.41421356237,
67
+ 1.0,
68
+ -1.41421356237,
69
+ 1.0,
70
+ -1.0,
71
+ 1.0,
72
+ -1.41421356237,
73
+ 1.0,
74
+ -1.41421356237,
75
+ 1.0,
76
+ -1.0,
77
+ 1.0,
78
+ 1.0,
79
+ -1.41421356237,
80
+ 1.0,
81
+ -1.0,
82
+ -1.0,
83
+ -1.0,
84
+ 1.0,
85
+ -1.0,
86
+ -1.0,
87
+ -1.0,
88
+ -1.0,
89
+ 1.0,
90
+ -1.0,
91
+ -1.0,
92
+ 1.0,
93
+ -1.0,
94
+ -1.0,
95
+ -1.0,
96
+ -1.0,
97
+ -1.0,
98
+ -1.0};
99
+ scs_int Ai[] = {11, 15, 16, 17, 36, 12, 15, 16, 17, 18, 37, 13, 15, 16,
100
+ 17, 18, 14, 15, 16, 17, 38, 15, 19, 16, 20, 17, 21, 19,
101
+ 20, 21, 25, 19, 20, 21, 19, 22, 20, 23, 21, 24, 3, 26,
102
+ 4, 5, 27, 7, 28, 9, 29, 6, 30, 8, 31, 10, 32, 11,
103
+ 33, 12, 13, 34, 14, 35, 1, 7, 0, 8, 9, 2, 10, 1,
104
+ 3, 41, 2, 6, 44, 25, 39, 25, 42};
105
+ scs_int Ap[] = {0, 5, 11, 16, 21, 23, 25, 27, 31, 34, 36,
106
+ 38, 40, 42, 45, 47, 49, 51, 53, 55, 57, 60,
107
+ 62, 64, 66, 67, 69, 72, 75, 77, 79};
108
+ scs_float b[] = {-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0,
109
+ -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0,
110
+ -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0,
111
+ -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0,
112
+ -0.0, -0.0, -0.0, -0.0, 1.0, -0.0, -0.0, 1.0, -0.0};
113
+ scs_float c[] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0,
114
+ 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
115
+ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
116
+
117
+ scs_int m = 45;
118
+ scs_int n = 30;
119
+
120
+ scs_int z = 19;
121
+ scs_int l = 7;
122
+ scs_int *q = SCS_NULL;
123
+ scs_int qsize = 0;
124
+ scs_int s[] = {4, 2};
125
+ scs_int ssize = 2;
126
+ scs_int ep = 2;
127
+ scs_int ed = 0;
128
+ scs_float *p = SCS_NULL;
129
+ scs_int psize = 0;
130
+
131
+ scs_float opt = -4.8912;
132
+ /* end data */
38
133
 
39
134
  d->m = m;
40
135
  d->n = n;
41
136
  d->b = b;
42
137
  d->c = c;
43
138
 
44
- d->stgs = (ScsSettings *)scs_calloc(1, sizeof(ScsSettings));
45
139
  d->A = (ScsMatrix *)scs_calloc(1, sizeof(ScsMatrix));
46
140
 
47
141
  d->A->m = m;
@@ -50,7 +144,7 @@ static const char *rob_gauss_cov_est(void) {
50
144
  d->A->i = Ai;
51
145
  d->A->p = Ap;
52
146
 
53
- k->f = f;
147
+ k->z = z;
54
148
  k->l = l;
55
149
  k->q = q;
56
150
  k->qsize = qsize;
@@ -61,9 +155,12 @@ static const char *rob_gauss_cov_est(void) {
61
155
  k->p = p;
62
156
  k->psize = psize;
63
157
 
64
- SCS(set_default_settings)(d);
158
+ scs_set_default_settings(stgs);
159
+ stgs->eps_abs = 1e-6;
160
+ stgs->eps_rel = 1e-6;
161
+ stgs->eps_infeas = 1e-9;
65
162
 
66
- exitflag = scs(d, k, sol, &info);
163
+ exitflag = scs(d, k, stgs, sol, &info);
67
164
 
68
165
  perr = SCS(dot)(d->c, sol->x, d->n) - opt;
69
166
  derr = -SCS(dot)(d->b, sol->y, d->m) - opt;
@@ -73,13 +170,73 @@ static const char *rob_gauss_cov_est(void) {
73
170
 
74
171
  success = ABS(perr) < 1e-4 && ABS(derr) < 1e-4 && exitflag == SCS_SOLVED;
75
172
 
76
- SCS(free_sol)(sol);
173
+ mu_assert("rob_gauss_cov_est: SCS failed to produce outputflag SCS_SOLVED",
174
+ success);
175
+ fail = verify_solution_correct(d, k, stgs, &info, sol, exitflag);
176
+
177
+ /* test warm-starting */
178
+ stgs->warm_start = 1;
179
+ exitflag = scs(d, k, stgs, sol, &info);
180
+ /* 100 iters should be enough if warm-started */
181
+ mu_assert("rob_gauss_cov_est: warm-start failure", info.iter <= 100);
182
+ success = ABS(perr) < 1e-4 && ABS(derr) < 1e-4 && exitflag == SCS_SOLVED;
183
+
184
+ mu_assert("rob_gauss_cov_est: SCS failed to produce outputflag SCS_SOLVED",
185
+ success);
186
+
187
+ /* test read / write */
188
+ stgs->write_data_filename = "rob_gauss_cov_est";
189
+ stgs->max_iters = 1;
190
+
191
+ exitflag = scs(d, k, stgs, sol, &info);
192
+
193
+ /* kill data */
77
194
  scs_free(d->A);
78
195
  scs_free(k);
79
- scs_free(d->stgs);
196
+ scs_free(stgs);
80
197
  scs_free(d);
81
198
 
82
- mu_assert("rob_gauss_cov_est: SCS failed to produce outputflag SCS_SOLVED",
199
+ SCS(read_data)("rob_gauss_cov_est", &d, &k, &stgs);
200
+ stgs->max_iters = 1000;
201
+ /* solve with read data */
202
+ exitflag = scs(d, k, stgs, sol, &info);
203
+
204
+ perr = info.pobj - opt;
205
+ derr = info.dobj - opt;
206
+
207
+ scs_printf("primal obj error %4e\n", perr);
208
+ scs_printf("dual obj error %4e\n", derr);
209
+
210
+ success = ABS(perr) < 1e-4 && ABS(derr) < 1e-4 && exitflag == SCS_SOLVED;
211
+
212
+ mu_assert("rob_gauss_cov_est_rw: SCS failed to produce outputflag SCS_SOLVED",
83
213
  success);
84
- return 0;
214
+ fail = verify_solution_correct(d, k, stgs, &info, sol, exitflag);
215
+
216
+ /* test other settings */
217
+ stgs->warm_start = 0;
218
+ stgs->normalize = 0;
219
+ stgs->adaptive_scale = 0;
220
+ stgs->acceleration_lookback = 10;
221
+ stgs->acceleration_interval = 10;
222
+ stgs->write_data_filename = SCS_NULL;
223
+ stgs->max_iters = 1000;
224
+ stgs->log_csv_filename = "rob_gauss_cov_est.csv";
225
+
226
+ exitflag = scs(d, k, stgs, sol, &info);
227
+
228
+ perr = info.pobj - opt;
229
+ derr = info.dobj - opt;
230
+
231
+ scs_printf("primal obj error %4e\n", perr);
232
+ scs_printf("dual obj error %4e\n", derr);
233
+
234
+ success = ABS(perr) < 1e-4 && ABS(derr) < 1e-4 && exitflag == SCS_SOLVED;
235
+
236
+ mu_assert("rob_gauss_cov_est_rw: SCS failed to produce outputflag SCS_SOLVED",
237
+ success);
238
+
239
+ SCS(free_sol)(sol);
240
+ SCS(free_data)(d, k, stgs);
241
+ return fail;
85
242
  }
@@ -7,6 +7,7 @@
7
7
  static const char *small_lp(void) {
8
8
  ScsCone *k = (ScsCone *)scs_calloc(1, sizeof(ScsCone));
9
9
  ScsData *d = (ScsData *)scs_calloc(1, sizeof(ScsData));
10
+ ScsSettings *stgs = (ScsSettings *)scs_calloc(1, sizeof(ScsSettings));
10
11
  ScsSolution *sol = (ScsSolution *)scs_calloc(1, sizeof(ScsSolution));
11
12
  ScsSolution *opt_sol = (ScsSolution *)scs_calloc(1, sizeof(ScsSolution));
12
13
  ScsInfo info = {0};
@@ -19,32 +20,32 @@ static const char *small_lp(void) {
19
20
  scs_int exitflag;
20
21
  scs_float perr, derr;
21
22
  scs_int success;
23
+ const char *fail;
22
24
 
23
- d->stgs = (ScsSettings *)scs_calloc(1, sizeof(ScsSettings));
24
- k->f = (scs_int)floor(m * p_f);
25
- k->l = m - k->f;
26
-
27
- srand(seed);
25
+ k->z = (scs_int)floor(m * p_f);
26
+ k->l = m - k->z;
28
27
 
29
28
  d->m = m;
30
29
  d->n = n;
31
- gen_random_prob_data(nnz, col_nnz, d, k, opt_sol);
32
- SCS(set_default_settings)(d);
30
+ gen_random_prob_data(nnz, col_nnz, d, k, opt_sol, seed);
31
+ scs_set_default_settings(stgs);
32
+ stgs->eps_abs = 1e-5;
33
+ stgs->eps_rel = 1e-5;
33
34
 
34
- /* this test fails with the default choice of 10 */
35
- d->stgs->acceleration_lookback = 20;
35
+ exitflag = scs(d, k, stgs, sol, &info);
36
36
 
37
- exitflag = scs(d, k, sol, &info);
38
37
  perr = SCS(dot)(d->c, sol->x, d->n) - SCS(dot)(d->c, opt_sol->x, d->n);
39
38
  derr = -SCS(dot)(d->b, sol->y, d->m) + SCS(dot)(d->b, opt_sol->y, d->m);
39
+ scs_printf("true obj %4e\n", SCS(dot)(d->c, opt_sol->x, d->n));
40
40
  scs_printf("primal obj error %4e\n", perr);
41
41
  scs_printf("dual obj error %4e\n", derr);
42
42
 
43
43
  success = ABS(perr) < 1e-4 && ABS(derr) < 1e-4 && exitflag == SCS_SOLVED;
44
44
 
45
- SCS(free_data)(d, k);
45
+ mu_assert("small_lp: SCS failed to produce outputflag SCS_SOLVED", success);
46
+ fail = verify_solution_correct(d, k, stgs, &info, sol, exitflag);
47
+ SCS(free_data)(d, k, stgs);
46
48
  SCS(free_sol)(sol);
47
49
  SCS(free_sol)(opt_sol);
48
- mu_assert("small_lp: SCS failed to produce outputflag SCS_SOLVED", success);
49
- return 0;
50
+ return fail;
50
51
  }
@@ -0,0 +1,352 @@
1
+ #include "glbopts.h"
2
+ #include "minunit.h"
3
+ #include "problem_utils.h"
4
+ #include "scs.h"
5
+ #include "util.h"
6
+
7
+ scs_float P_x[] = {
8
+ 10.74980, 1.07498, 41.62331, 0.11891, 5.80636, 0.58064, 3.13259,
9
+ 0.31326, 41.62331, 41.62331, 41.62331, 41.62331, 41.62331, 41.62331,
10
+ 0.11891, 11.49095, 1.14910, 3.13259, 0.31326, 41.62331, 41.62331,
11
+ 41.62331, 41.62331, 41.62331, 41.62331, 0.11891, 11.49095, 1.14910,
12
+ 3.13259, 0.31326, 41.62331, 41.62331, 41.62331, 41.62331, 41.62331,
13
+ 41.62331, 0.11891, 11.49095, 1.14910, 50.00000, 41.62331, 41.62331,
14
+ 41.62331, 41.62331, 10.40583, 10.74980, 10.74980, 1.07498, 1.07498,
15
+ 50.00000, 3.13259, 3.13259, 0.31326, 0.31326, 50.00000, 41.62331,
16
+ 41.62331, 50.00000, 41.62331, 41.62331, 41.62331, 25.00000, 5.80636,
17
+ 0.58064, 41.62331, 41.62331, 41.62331, 41.62331, 41.62331, 41.62331,
18
+ 50.00000, 3.13259, 3.13259, 0.31326, 0.31326, 50.00000, 41.62331,
19
+ 41.62331, 50.00000, 41.62331, 41.62331, 41.62331, 25.00000, 5.80636,
20
+ 0.58064, 41.62331, 41.62331, 41.62331, 41.62331, 41.62331, 41.62331,
21
+ 50.00000, 3.13259, 3.13259, 0.31326, 0.31326, 50.00000, 41.62331,
22
+ 41.62331, 50.00000, 41.62331, 41.62331, 41.62331, 25.00000, 5.80636,
23
+ 0.58064, 41.62331, 41.62331, 41.62331, 41.62331, 41.62331, 41.62331,
24
+ 41.62331, 0.19531, 10.40583, 10.40583, 0.19531, 41.62331, 41.62331,
25
+ 0.19531, 41.62331, 41.62331, 0.19531, 41.62331, 41.62331, 0.19531,
26
+ 41.62331, 41.62331, 0.19531, 41.62331, 41.62331, 0.19531, 41.62331,
27
+ 41.62331};
28
+ scs_int P_i[] = {
29
+ 1, 2, 4, 5, 6, 7, 9, 10, 12, 14, 16, 18, 20, 22, 23,
30
+ 24, 25, 27, 28, 30, 32, 34, 36, 38, 40, 41, 42, 43, 45, 46,
31
+ 48, 50, 52, 54, 56, 58, 59, 60, 61, 62, 63, 65, 67, 69, 71,
32
+ 1, 73, 2, 74, 75, 9, 76, 10, 77, 78, 12, 79, 80, 14, 81,
33
+ 83, 84, 85, 86, 88, 90, 92, 94, 20, 96, 97, 27, 98, 28, 99,
34
+ 100, 30, 101, 102, 32, 103, 105, 106, 107, 108, 110, 112, 114, 116, 38,
35
+ 118, 119, 45, 120, 46, 121, 122, 48, 123, 124, 50, 125, 127, 128, 129,
36
+ 130, 132, 134, 136, 63, 138, 56, 140, 141, 71, 142, 143, 16, 144, 145,
37
+ 22, 146, 147, 34, 148, 149, 40, 150, 151, 52, 152, 153, 58, 154};
38
+ scs_int P_p[] = {
39
+ 0, 0, 1, 2, 2, 3, 4, 5, 6, 6, 7, 8, 8, 9, 9,
40
+ 10, 10, 11, 11, 12, 12, 13, 13, 14, 15, 16, 17, 17, 18, 19,
41
+ 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 26, 27, 28,
42
+ 28, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36,
43
+ 37, 38, 39, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 47,
44
+ 49, 50, 52, 54, 55, 57, 58, 60, 60, 61, 62, 63, 64, 64, 65,
45
+ 65, 66, 66, 67, 67, 68, 68, 70, 71, 73, 75, 76, 78, 79, 81,
46
+ 81, 82, 83, 84, 85, 85, 86, 86, 87, 87, 88, 88, 89, 89, 91,
47
+ 92, 94, 96, 97, 99, 100, 102, 102, 103, 104, 105, 106, 106, 107, 107,
48
+ 108, 108, 109, 109, 111, 111, 113, 114, 116, 117, 119, 120, 122, 123, 125,
49
+ 126, 128, 129, 131, 132, 134};
50
+ scs_float A_x[] = {
51
+ 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000,
52
+ 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000,
53
+ 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000,
54
+ 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000,
55
+ 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
56
+ 1.00000, -1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
57
+ -1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000,
58
+ 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000,
59
+ 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000,
60
+ 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000,
61
+ 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
62
+ 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000,
63
+ 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000,
64
+ 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000,
65
+ 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000,
66
+ 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000,
67
+ 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
68
+ 1.00000, -1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
69
+ -1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
70
+ 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
71
+ 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000,
72
+ 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000,
73
+ 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
74
+ 1.00000, -1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
75
+ -1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000,
76
+ 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000,
77
+ 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
78
+ -1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000,
79
+ 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000,
80
+ 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000,
81
+ 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000,
82
+ 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
83
+ 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000,
84
+ 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000,
85
+ 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000,
86
+ 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000,
87
+ 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000,
88
+ 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000,
89
+ 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000,
90
+ 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000,
91
+ 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
92
+ 1.00000, -1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
93
+ -1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
94
+ 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
95
+ 1.00000, -1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
96
+ -1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000,
97
+ 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
98
+ 1.00000, -1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
99
+ -1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000,
100
+ 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000,
101
+ 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000,
102
+ 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000,
103
+ 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000,
104
+ 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000,
105
+ 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000,
106
+ 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
107
+ 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000,
108
+ 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000,
109
+ 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
110
+ 1.00000, -1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
111
+ -1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000,
112
+ 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000,
113
+ 1.00000, 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000,
114
+ 1.00000, 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000,
115
+ 1.00000, 1.00000, -1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
116
+ 1.00000, -1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
117
+ -1.00000, 1.00000, 1.00000};
118
+ scs_int A_i[] = {
119
+ 0, 3, 34, 96, 96, 197, 96, 166, 177, 1, 3, 34, 97, 97, 199,
120
+ 2, 3, 34, 98, 98, 200, 98, 167, 179, 4, 9, 34, 99, 99, 201,
121
+ 99, 168, 180, 5, 9, 34, 100, 100, 203, 6, 9, 34, 101, 101, 205,
122
+ 7, 9, 34, 102, 102, 207, 8, 9, 34, 103, 103, 209, 10, 13, 34,
123
+ 104, 104, 216, 11, 13, 34, 105, 105, 218, 12, 13, 34, 106, 106, 220,
124
+ 106, 170, 183, 14, 19, 34, 107, 107, 221, 107, 171, 184, 15, 19, 34,
125
+ 108, 108, 223, 16, 19, 34, 109, 109, 225, 17, 19, 34, 110, 110, 227,
126
+ 18, 19, 34, 111, 111, 229, 20, 23, 34, 112, 112, 236, 21, 23, 34,
127
+ 113, 113, 238, 22, 23, 34, 114, 114, 240, 114, 173, 187, 24, 29, 34,
128
+ 115, 115, 241, 115, 174, 188, 25, 29, 34, 116, 116, 243, 26, 29, 34,
129
+ 117, 117, 245, 27, 29, 34, 118, 118, 247, 28, 29, 34, 119, 119, 249,
130
+ 30, 33, 34, 120, 120, 257, 31, 33, 34, 121, 121, 259, 32, 33, 34,
131
+ 122, 122, 261, 122, 176, 191, 35, 36, 37, 123, 123, 255, 38, 43, 80,
132
+ 124, 124, 192, 39, 43, 80, 125, 125, 193, 40, 43, 80, 126, 126, 194,
133
+ 41, 43, 80, 127, 127, 195, 42, 43, 80, 128, 128, 198, 128, 166, 178,
134
+ 44, 49, 80, 129, 129, 202, 129, 168, 181, 45, 49, 80, 130, 130, 204,
135
+ 46, 49, 80, 131, 131, 206, 47, 49, 80, 132, 132, 210, 48, 49, 80,
136
+ 133, 133, 211, 133, 169, 182, 50, 55, 80, 134, 134, 212, 51, 55, 80,
137
+ 135, 135, 213, 52, 55, 80, 136, 136, 214, 53, 55, 80, 137, 137, 215,
138
+ 54, 55, 80, 138, 138, 217, 56, 61, 80, 139, 139, 222, 139, 171, 185,
139
+ 57, 61, 80, 140, 140, 224, 58, 61, 80, 141, 141, 226, 59, 61, 80,
140
+ 142, 142, 230, 60, 61, 80, 143, 143, 231, 143, 172, 186, 62, 67, 80,
141
+ 144, 144, 232, 63, 67, 80, 145, 145, 233, 64, 67, 80, 146, 146, 234,
142
+ 65, 67, 80, 147, 147, 235, 66, 67, 80, 148, 148, 237, 68, 73, 80,
143
+ 149, 149, 242, 149, 174, 189, 69, 73, 80, 150, 150, 244, 70, 73, 80,
144
+ 151, 151, 246, 71, 73, 80, 152, 152, 250, 72, 73, 80, 153, 153, 251,
145
+ 153, 175, 190, 74, 79, 80, 154, 154, 252, 75, 79, 80, 155, 155, 253,
146
+ 76, 79, 80, 156, 156, 254, 77, 79, 80, 157, 157, 256, 78, 79, 80,
147
+ 158, 158, 258, 81, 82, 95, 159, 159, 196, 83, 84, 95, 160, 160, 208,
148
+ 85, 86, 95, 161, 161, 219, 87, 88, 95, 162, 162, 228, 89, 90, 95,
149
+ 163, 163, 239, 91, 92, 95, 164, 164, 248, 93, 94, 95, 165, 165, 260};
150
+ scs_int A_p[] = {
151
+ 0, 4, 6, 9, 13, 15, 19, 21, 24, 28, 30, 33, 37, 39, 43,
152
+ 45, 49, 51, 55, 57, 61, 63, 67, 69, 73, 75, 78, 82, 84, 87,
153
+ 91, 93, 97, 99, 103, 105, 109, 111, 115, 117, 121, 123, 127, 129, 132,
154
+ 136, 138, 141, 145, 147, 151, 153, 157, 159, 163, 165, 169, 171, 175, 177,
155
+ 181, 183, 186, 190, 192, 196, 198, 202, 204, 208, 210, 214, 216, 220, 222,
156
+ 225, 229, 231, 234, 238, 240, 244, 246, 250, 252, 256, 258, 261, 265, 267,
157
+ 271, 273, 277, 279, 283, 285, 289, 291, 295, 297, 300, 304, 306, 310, 312,
158
+ 316, 318, 322, 324, 327, 331, 333, 337, 339, 343, 345, 349, 351, 355, 357,
159
+ 361, 363, 366, 370, 372, 376, 378, 382, 384, 388, 390, 393, 397, 399, 403,
160
+ 405, 409, 411, 415, 417, 421, 423, 427, 429, 433, 435, 439, 441, 445, 447,
161
+ 451, 453, 457, 459, 463, 465};
162
+ scs_int n = 155;
163
+ scs_int m = 262;
164
+ scs_float l[] = {
165
+ 30.00000, 30.00000, 59.00000, 119.00000, 30.00000, 30.00000,
166
+ 30.00000, 30.00000, 30.00000, 150.00000, 30.00000, 30.00000,
167
+ 59.00000, 119.00000, 30.00000, 30.00000, 30.00000, 30.00000,
168
+ 30.00000, 150.00000, 30.00000, 30.00000, 59.00000, 119.00000,
169
+ 30.00000, 30.00000, 30.00000, 30.00000, 30.00000, 150.00000,
170
+ 30.00000, 30.00000, 59.00000, 119.00000, 926.00000, 31.00000,
171
+ 31.00000, 31.00000, 30.00000, 30.00000, 30.00000, 30.00000,
172
+ 30.00000, 150.00000, 31.00000, 31.00000, 31.00000, 30.00000,
173
+ 28.00000, 151.00000, 30.00000, 30.00000, 30.00000, 30.00000,
174
+ 30.00000, 150.00000, 31.00000, 31.00000, 31.00000, 30.00000,
175
+ 28.00000, 151.00000, 30.00000, 30.00000, 30.00000, 30.00000,
176
+ 30.00000, 150.00000, 31.00000, 31.00000, 31.00000, 30.00000,
177
+ 28.00000, 151.00000, 30.00000, 30.00000, 30.00000, 30.00000,
178
+ 30.00000, 150.00000, 1053.00000, 16.00000, 16.00000, 16.00000,
179
+ 16.00000, 16.00000, 16.00000, 16.00000, 16.00000, 16.00000,
180
+ 16.00000, 16.00000, 16.00000, 16.00000, 16.00000, 112.00000,
181
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
182
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
183
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
184
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
185
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
186
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
187
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
188
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
189
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
190
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
191
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
192
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
193
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
194
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
195
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
196
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
197
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
198
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
199
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
200
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
201
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
202
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
203
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
204
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
205
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
206
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
207
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
208
+ 0.00000, 0.00000, 0.00000, 0.00000};
209
+ scs_float u[] = {
210
+ 30.00000, 30.00000, 59.00000, 119.00000, 30.00000, 30.00000,
211
+ 30.00000, 30.00000, 30.00000, 150.00000, 30.00000, 30.00000,
212
+ 59.00000, 119.00000, 30.00000, 30.00000, 30.00000, 30.00000,
213
+ 30.00000, 150.00000, 30.00000, 30.00000, 59.00000, 119.00000,
214
+ 30.00000, 30.00000, 30.00000, 30.00000, 30.00000, 150.00000,
215
+ 30.00000, 30.00000, 59.00000, 119.00000, 926.00000, 31.00000,
216
+ 31.00000, 31.00000, 30.00000, 30.00000, 30.00000, 30.00000,
217
+ 30.00000, 150.00000, 31.00000, 31.00000, 31.00000, 30.00000,
218
+ 28.00000, 151.00000, 30.00000, 30.00000, 30.00000, 30.00000,
219
+ 30.00000, 150.00000, 31.00000, 31.00000, 31.00000, 30.00000,
220
+ 28.00000, 151.00000, 30.00000, 30.00000, 30.00000, 30.00000,
221
+ 30.00000, 150.00000, 31.00000, 31.00000, 31.00000, 30.00000,
222
+ 28.00000, 151.00000, 30.00000, 30.00000, 30.00000, 30.00000,
223
+ 30.00000, 150.00000, 1053.00000, 36.00000, 17.00000, 36.00000,
224
+ 17.00000, 36.00000, 17.00000, 36.00000, 17.00000, 36.00000,
225
+ 17.00000, 36.00000, 17.00000, 36.00000, 17.00000, 112.00000,
226
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
227
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
228
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
229
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
230
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
231
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
232
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
233
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
234
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
235
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
236
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
237
+ 0.00000, 0.00000, 0.00000, 0.00000, 30.00000, 28.00000,
238
+ 54.00000, 52.00000, 28.00000, 54.00000, 52.00000, 28.00000,
239
+ 52.00000, 52.00000, 28.00000, 96.00000, 96.00000, 96.00000,
240
+ 96.00000, 96.00000, 96.00000, 96.00000, 96.00000, 96.00000,
241
+ 96.00000, 96.00000, 96.00000, 96.00000, 96.00000, 96.00000,
242
+ 96.00000, 96.00000, 96.00000, 96.00000, 96.00000, 96.00000,
243
+ 96.00000, 96.00000, 96.00000, 96.00000, 96.00000, 96.00000,
244
+ 96.00000, 96.00000, 96.00000, 96.00000, 96.00000, 96.00000,
245
+ 96.00000, 96.00000, 96.00000, 96.00000, 96.00000, 96.00000,
246
+ 96.00000, 96.00000, 96.00000, 96.00000, 96.00000, 96.00000,
247
+ 96.00000, 96.00000, 96.00000, 96.00000, 96.00000, 96.00000,
248
+ 96.00000, 96.00000, 96.00000, 96.00000, 96.00000, 96.00000,
249
+ 96.00000, 96.00000, 96.00000, 96.00000, 96.00000, 96.00000,
250
+ 96.00000, 96.00000, 96.00000, 96.00000, 96.00000, 96.00000,
251
+ 96.00000, 96.00000, 96.00000, 96.00000, 96.00000, 96.00000,
252
+ 96.00000, 96.00000, 96.00000, 96.00000, 96.00000, 96.00000,
253
+ 96.00000, 96.00000, 96.00000, 96.00000};
254
+ scs_float q[] = {0.00000, 0.00000, -35.02643, 0.00000, 0.00000,
255
+ -3.56718, 0.00000, -17.41907, 0.00000, 0.00000,
256
+ -17.64691, 0.00000, 0.00000, 0.00000, 0.00000,
257
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
258
+ 0.00000, 0.00000, 0.00000, -3.56718, 0.00000,
259
+ -32.17466, 0.00000, 0.00000, -17.64691, 0.00000,
260
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
261
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
262
+ 0.00000, -3.56718, 0.00000, -32.17466, 0.00000,
263
+ 0.00000, -17.07260, 0.00000, 0.00000, 0.00000,
264
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
265
+ 0.00000, 0.00000, 0.00000, 0.00000, -3.56718,
266
+ 0.00000, -32.17466, -1600.00000, 0.00000, 0.00000,
267
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
268
+ 0.00000, 0.00000, 0.00000, 0.00000, -35.02643,
269
+ -1500.00000, 0.00000, -17.64691, -1500.00000, 0.00000,
270
+ -1500.00000, 0.00000, 0.00000, 0.00000, -750.00000,
271
+ 0.00000, -31.69304, 0.00000, 0.00000, 0.00000,
272
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
273
+ 0.00000, 0.00000, -1500.00000, 0.00000, -17.64691,
274
+ -1500.00000, 0.00000, -1500.00000, 0.00000, 0.00000,
275
+ 0.00000, -750.00000, 0.00000, -31.69304, 0.00000,
276
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
277
+ 0.00000, 0.00000, 0.00000, 0.00000, -1500.00000,
278
+ 0.00000, -17.07260, -1500.00000, 0.00000, -1500.00000,
279
+ 0.00000, 0.00000, 0.00000, -750.00000, 0.00000,
280
+ -31.69304, 0.00000, 0.00000, 0.00000, 0.00000,
281
+ 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
282
+ 0.00000, -3.90625, 0.00000, -3.90625, 0.00000,
283
+ -3.90625, 0.00000, -3.90625, 0.00000, -3.90625,
284
+ 0.00000, -3.90625, 0.00000, -3.90625, 0.00000};
285
+ scs_int A_nnz = 465;
286
+
287
+ static const char *small_qp(void) {
288
+ ScsCone *k = (ScsCone *)scs_calloc(1, sizeof(ScsCone));
289
+ ScsData *d = (ScsData *)scs_calloc(1, sizeof(ScsData));
290
+ ScsSettings *stgs = (ScsSettings *)scs_calloc(1, sizeof(ScsSettings));
291
+ ScsSolution *sol = (ScsSolution *)scs_calloc(1, sizeof(ScsSolution));
292
+ ScsInfo info = {0};
293
+ scs_int success, exitflag;
294
+ scs_int j;
295
+ const char *fail;
296
+
297
+ d->m = m + 1; /* t var in box cone */
298
+ d->n = n;
299
+ d->b = (scs_float *)scs_calloc(m + 1, sizeof(scs_float));
300
+ d->b[0] = 1; /* t var in box cone */
301
+ d->c = q;
302
+
303
+ d->A = (ScsMatrix *)scs_calloc(1, sizeof(ScsMatrix));
304
+ d->A->m = m + 1; /* t var in box cone */
305
+ d->A->n = n;
306
+ d->A->x = A_x;
307
+ d->A->i = A_i;
308
+ d->A->p = A_p;
309
+
310
+ /* Ax + s = b, s \in box, need to negate A */
311
+ for (j = 0; j < A_nnz; ++j) {
312
+ d->A->x[j] *= -1;
313
+ }
314
+ /* need to add row of all zeros to top of A */
315
+ for (j = 0; j < A_nnz; ++j) {
316
+ d->A->i[j] += 1;
317
+ }
318
+
319
+ d->P = (ScsMatrix *)scs_calloc(1, sizeof(ScsMatrix));
320
+ d->P->m = n;
321
+ d->P->n = n;
322
+ d->P->x = P_x;
323
+ d->P->i = P_i;
324
+ d->P->p = P_p;
325
+
326
+ k->bu = u;
327
+ k->bl = l;
328
+ k->bsize = m + 1; /* t var in box cone */
329
+
330
+ scs_set_default_settings(stgs);
331
+ stgs->eps_abs = 1e-6;
332
+ stgs->eps_rel = 1e-6;
333
+ stgs->eps_infeas = 1e-10;
334
+
335
+ exitflag = scs(d, k, stgs, sol, &info);
336
+ success = exitflag == SCS_SOLVED;
337
+
338
+ mu_assert("small_qp: SCS failed to produce outputflag SCS_SOLVED", success);
339
+ fail = verify_solution_correct(d, k, stgs, &info, sol, exitflag);
340
+
341
+ scs_free(d->A);
342
+ scs_free(d->P);
343
+ scs_free(d->b);
344
+ scs_free(k);
345
+ scs_free(d);
346
+ scs_free(stgs);
347
+ scs_free(sol->x);
348
+ scs_free(sol->y);
349
+ scs_free(sol->s);
350
+ scs_free(sol);
351
+ return fail;
352
+ }