scs 0.4.0 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/LICENSE.txt +1 -1
- data/README.md +1 -1
- data/lib/scs/ffi.rb +2 -2
- data/lib/scs/version.rb +1 -1
- data/lib/scs.rb +3 -3
- data/vendor/scs/CITATION.cff +2 -2
- data/vendor/scs/CMakeLists.txt +305 -171
- data/vendor/scs/Makefile +44 -19
- data/vendor/scs/README.md +1 -1
- data/vendor/scs/include/glbopts.h +34 -14
- data/vendor/scs/include/linsys.h +8 -8
- data/vendor/scs/include/scs.h +6 -2
- data/vendor/scs/include/scs_blas.h +4 -0
- data/vendor/scs/include/scs_types.h +3 -1
- data/vendor/scs/include/scs_work.h +9 -8
- data/vendor/scs/include/util.h +1 -1
- data/vendor/scs/linsys/cpu/direct/private.c +32 -153
- data/vendor/scs/linsys/cpu/direct/private.h +6 -6
- data/vendor/scs/linsys/cpu/indirect/private.c +9 -22
- data/vendor/scs/linsys/cpu/indirect/private.h +4 -2
- data/vendor/scs/linsys/csparse.c +140 -12
- data/vendor/scs/linsys/csparse.h +10 -17
- data/vendor/scs/linsys/gpu/gpu.c +4 -4
- data/vendor/scs/linsys/gpu/gpu.h +1 -1
- data/vendor/scs/linsys/gpu/indirect/private.c +15 -26
- data/vendor/scs/linsys/mkl/direct/private.c +182 -0
- data/vendor/scs/linsys/mkl/direct/private.h +38 -0
- data/vendor/scs/linsys/scs_matrix.c +11 -5
- data/vendor/scs/scs.mk +40 -27
- data/vendor/scs/src/cones.c +17 -161
- data/vendor/scs/src/exp_cone.c +399 -0
- data/vendor/scs/src/linalg.c +17 -3
- data/vendor/scs/src/normalize.c +4 -2
- data/vendor/scs/src/rw.c +107 -38
- data/vendor/scs/src/scs.c +103 -69
- data/vendor/scs/src/util.c +12 -3
- data/vendor/scs/test/minunit.h +2 -1
- data/vendor/scs/test/problem_utils.h +2 -1
- data/vendor/scs/test/problems/hs21_tiny_qp.h +1 -1
- data/vendor/scs/test/problems/hs21_tiny_qp_rw.h +8 -3
- data/vendor/scs/test/problems/max_ent +0 -0
- data/vendor/scs/test/problems/max_ent.h +8 -0
- data/vendor/scs/test/problems/mpc_bug.h +19 -0
- data/vendor/scs/test/problems/mpc_bug1 +0 -0
- data/vendor/scs/test/problems/mpc_bug2 +0 -0
- data/vendor/scs/test/problems/mpc_bug3 +0 -0
- data/vendor/scs/test/problems/random_prob.h +2 -43
- data/vendor/scs/test/problems/rob_gauss_cov_est.h +7 -2
- data/vendor/scs/test/problems/test_exp_cone.h +84 -0
- data/vendor/scs/test/problems/test_prob_from_data_file.h +73 -0
- data/vendor/scs/test/run_from_file.c +7 -1
- data/vendor/scs/test/run_tests.c +25 -9
- metadata +14 -3
data/vendor/scs/test/minunit.h
CHANGED
@@ -8,11 +8,13 @@
|
|
8
8
|
return message; \
|
9
9
|
} \
|
10
10
|
} while (0)
|
11
|
+
|
11
12
|
#define mu_assert(message, test) \
|
12
13
|
do { \
|
13
14
|
if (!(test)) \
|
14
15
|
return message; \
|
15
16
|
} while (0)
|
17
|
+
|
16
18
|
#define mu_run_test(test) _mu_run_test(#test, test)
|
17
19
|
|
18
20
|
#define _mu_run_test(name, test) \
|
@@ -21,7 +23,6 @@
|
|
21
23
|
scs_printf("Running test: %s\n", name); \
|
22
24
|
const char *message = test(); \
|
23
25
|
tests_run++; \
|
24
|
-
scs_printf("*********************************************************\n"); \
|
25
26
|
if (message) \
|
26
27
|
return message; \
|
27
28
|
} while (0)
|
@@ -190,6 +190,7 @@ const char *verify_solution_correct(ScsData *d, ScsCone *k, ScsSettings *stgs,
|
|
190
190
|
|
191
191
|
/************** OPTIMALITY ****************/
|
192
192
|
|
193
|
+
/* TODO: the MAX expansion computes these norms many times */
|
193
194
|
grl = MAX(MAX(ABS(xt_p_x), ABS(ctx)), ABS(bty));
|
194
195
|
prl = MAX(MAX(NORM(b, m), NORM(s, m)), NORM(ax, m));
|
195
196
|
drl = MAX(MAX(NORM(c, n), NORM(px, n)), NORM(aty, n));
|
@@ -215,7 +216,7 @@ const char *verify_solution_correct(ScsData *d, ScsCone *k, ScsSettings *stgs,
|
|
215
216
|
1e-9 * (1 + ABS(dobj)));
|
216
217
|
/* slightly looser tol */
|
217
218
|
mu_assert_less("Complementary slackness ERROR", ABS(sty),
|
218
|
-
|
219
|
+
5e-8 * MAX(NORM(s, m), NORM(y, m)));
|
219
220
|
mu_assert_less("s cone dist ERROR", ABS(sdist), 1e-5);
|
220
221
|
mu_assert_less("y cone dist ERROR", ABS(ydist), 1e-5);
|
221
222
|
|
@@ -68,7 +68,7 @@ static const char *hs21_tiny_qp(void) {
|
|
68
68
|
scs_set_default_settings(stgs);
|
69
69
|
stgs->eps_abs = 1e-6;
|
70
70
|
stgs->eps_rel = 1e-6;
|
71
|
-
stgs->eps_infeas =
|
71
|
+
stgs->eps_infeas = 0.; /* disable due to gpu test finding cert */
|
72
72
|
|
73
73
|
exitflag = scs(d, k, stgs, sol, &info);
|
74
74
|
|
@@ -16,7 +16,7 @@ static const char *hs21_tiny_qp_rw(void) {
|
|
16
16
|
ScsInfo info = {0};
|
17
17
|
scs_int exitflag;
|
18
18
|
scs_float perr, derr;
|
19
|
-
scs_int success;
|
19
|
+
scs_int success, read_status;
|
20
20
|
const char *fail;
|
21
21
|
|
22
22
|
/* data */
|
@@ -70,7 +70,7 @@ static const char *hs21_tiny_qp_rw(void) {
|
|
70
70
|
scs_set_default_settings(stgs);
|
71
71
|
stgs->eps_abs = 1e-6;
|
72
72
|
stgs->eps_rel = 1e-6;
|
73
|
-
stgs->eps_infeas =
|
73
|
+
stgs->eps_infeas = 0.; /* disable due to gpu test finding cert */
|
74
74
|
|
75
75
|
stgs->write_data_filename = "hs21_tiny_qp";
|
76
76
|
stgs->max_iters = 1;
|
@@ -84,7 +84,12 @@ static const char *hs21_tiny_qp_rw(void) {
|
|
84
84
|
scs_free(stgs);
|
85
85
|
scs_free(d);
|
86
86
|
|
87
|
-
SCS(read_data)("hs21_tiny_qp", &d, &k, &stgs);
|
87
|
+
read_status = SCS(read_data)("hs21_tiny_qp", &d, &k, &stgs);
|
88
|
+
|
89
|
+
if (read_status < 0) {
|
90
|
+
return "Data read failure, exit.\n";
|
91
|
+
}
|
92
|
+
|
88
93
|
stgs->max_iters = 1000;
|
89
94
|
/* solve with read data */
|
90
95
|
exitflag = scs(d, k, stgs, sol, &info);
|
Binary file
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#include "glbopts.h"
|
2
|
+
#include "problems/test_prob_from_data_file.h"
|
3
|
+
#include "scs.h"
|
4
|
+
|
5
|
+
static const char *mpc_bug(void) {
|
6
|
+
const char *fail;
|
7
|
+
scs_float OPT1 = -0.473957794500; /* from scs */
|
8
|
+
scs_float OPT2 = -0.029336830816; /* from scs */
|
9
|
+
scs_float OPT3 = -0.002215217478; /* from scs */
|
10
|
+
fail = _test_prob_from_data("test/problems/mpc_bug1", OPT1);
|
11
|
+
if (fail) {
|
12
|
+
return fail;
|
13
|
+
}
|
14
|
+
fail = _test_prob_from_data("test/problems/mpc_bug2", OPT2);
|
15
|
+
if (fail) {
|
16
|
+
return fail;
|
17
|
+
}
|
18
|
+
return _test_prob_from_data("test/problems/mpc_bug3", OPT3);
|
19
|
+
}
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,49 +1,8 @@
|
|
1
1
|
#include "glbopts.h"
|
2
|
-
#include "
|
3
|
-
#include "problem_utils.h"
|
4
|
-
#include "rw.h"
|
2
|
+
#include "problems/test_prob_from_data_file.h"
|
5
3
|
#include "scs.h"
|
6
|
-
#include "util.h"
|
7
4
|
|
8
5
|
static const char *random_prob(void) {
|
9
|
-
scs_int read_status;
|
10
|
-
ScsData *d;
|
11
|
-
ScsCone *k;
|
12
|
-
ScsSettings *stgs;
|
13
|
-
ScsSolution *sol;
|
14
|
-
ScsInfo info = {0};
|
15
|
-
scs_int exitflag;
|
16
|
-
scs_float perr, derr;
|
17
|
-
scs_int success;
|
18
|
-
const char *fail;
|
19
|
-
|
20
6
|
scs_float OPT = 5.751458006385587;
|
21
|
-
|
22
|
-
read_status = SCS(read_data)("test/problems/random_prob", &d, &k, &stgs);
|
23
|
-
|
24
|
-
if (read_status < 0) {
|
25
|
-
return "Data read failure, exit.\n";
|
26
|
-
}
|
27
|
-
|
28
|
-
stgs->eps_abs = 1e-6;
|
29
|
-
stgs->eps_rel = 1e-6;
|
30
|
-
|
31
|
-
sol = (ScsSolution *)scs_calloc(1, sizeof(ScsSolution));
|
32
|
-
exitflag = scs(d, k, stgs, sol, &info);
|
33
|
-
|
34
|
-
perr = SCS(dot)(d->c, sol->x, d->n) - OPT;
|
35
|
-
derr = -SCS(dot)(d->b, sol->y, d->m) - OPT;
|
36
|
-
scs_printf("primal obj error %4e\n", perr);
|
37
|
-
scs_printf("dual obj error %4e\n", derr);
|
38
|
-
|
39
|
-
success = ABS(perr) < 1e-4 && ABS(derr) < 1e-4 && exitflag == SCS_SOLVED;
|
40
|
-
|
41
|
-
mu_assert("random_prob: SCS failed to produce SCS_SOLVED", success);
|
42
|
-
fail = verify_solution_correct(d, k, stgs, &info, sol, exitflag);
|
43
|
-
SCS(free_data)(d);
|
44
|
-
SCS(free_cone)(k);
|
45
|
-
SCS(free_sol)(sol);
|
46
|
-
scs_free(stgs);
|
47
|
-
|
48
|
-
return fail;
|
7
|
+
return _test_prob_from_data("test/problems/random_prob", OPT);
|
49
8
|
}
|
@@ -15,7 +15,7 @@ static const char *rob_gauss_cov_est(void) {
|
|
15
15
|
ScsInfo info = {0};
|
16
16
|
scs_int exitflag;
|
17
17
|
scs_float perr, derr;
|
18
|
-
scs_int success;
|
18
|
+
scs_int success, read_status;
|
19
19
|
const char *fail;
|
20
20
|
|
21
21
|
/* data */
|
@@ -200,7 +200,12 @@ static const char *rob_gauss_cov_est(void) {
|
|
200
200
|
scs_free(stgs);
|
201
201
|
scs_free(d);
|
202
202
|
|
203
|
-
SCS(read_data)("rob_gauss_cov_est", &d, &k, &stgs);
|
203
|
+
read_status = SCS(read_data)("rob_gauss_cov_est", &d, &k, &stgs);
|
204
|
+
|
205
|
+
if (read_status < 0) {
|
206
|
+
return "Data read failure, exit.\n";
|
207
|
+
}
|
208
|
+
|
204
209
|
stgs->max_iters = 1000;
|
205
210
|
/* solve with read data */
|
206
211
|
exitflag = scs(d, k, stgs, sol, &info);
|
@@ -0,0 +1,84 @@
|
|
1
|
+
#include "glbopts.h"
|
2
|
+
#include "linalg.h"
|
3
|
+
#include "minunit.h"
|
4
|
+
#include "scs.h"
|
5
|
+
|
6
|
+
/* Forward declare exponential cone projection routine.
|
7
|
+
* Implemented in exp_cone.c.
|
8
|
+
*/
|
9
|
+
scs_float SCS(proj_pd_exp_cone)(scs_float *v0, scs_int primal);
|
10
|
+
|
11
|
+
static scs_int _run_exp_cone_test(scs_float *v0, scs_float *vp_true,
|
12
|
+
scs_float *vd_true) {
|
13
|
+
scs_int success = 1;
|
14
|
+
scs_float vp[3], vd[3];
|
15
|
+
const scs_float TOL = 1e-6;
|
16
|
+
|
17
|
+
memcpy(vp, v0, 3 * sizeof(scs_float));
|
18
|
+
memcpy(vd, v0, 3 * sizeof(scs_float));
|
19
|
+
|
20
|
+
/* inefficient, but just for testing */
|
21
|
+
SCS(proj_pd_exp_cone)(vp, 1);
|
22
|
+
SCS(proj_pd_exp_cone)(vd, 0);
|
23
|
+
|
24
|
+
scs_printf("*******************************\n");
|
25
|
+
scs_printf("v0: (%f, %f, %f)\n", v0[0], v0[1], v0[2]);
|
26
|
+
scs_printf("vp: (%f, %f, %f)\n", vp[0], vp[1], vp[2]);
|
27
|
+
scs_printf("vp_true: (%f, %f, %f)\n", vp_true[0], vp_true[1], vp_true[2]);
|
28
|
+
scs_printf("vd: (%f, %f, %f)\n", vd[0], vd[1], vd[2]);
|
29
|
+
scs_printf("vd_true: (%f, %f, %f)\n", vd_true[0], vd_true[1], vd_true[2]);
|
30
|
+
|
31
|
+
success &= (SCS(norm_diff)(vp, vp_true, 3) <= TOL);
|
32
|
+
success &= (SCS(norm_diff)(vd, vd_true, 3) <= TOL);
|
33
|
+
/* Moreau decomposition holds only for polar */
|
34
|
+
/*
|
35
|
+
success &= (SCS(dot)(vp, vd, 3) <= TOL);
|
36
|
+
success &= (ABS(v0[0] - vp[0] + vd[0]) <= TOL);
|
37
|
+
success &= (ABS(v0[1] - vp[1] + vd[1]) <= TOL);
|
38
|
+
success &= (ABS(v0[2] - vp[2] + vd[2]) <= TOL);
|
39
|
+
*/
|
40
|
+
|
41
|
+
if (!success) {
|
42
|
+
scs_printf("Failed.\n");
|
43
|
+
}
|
44
|
+
|
45
|
+
return success;
|
46
|
+
}
|
47
|
+
|
48
|
+
static const char *test_exp_cone(void) {
|
49
|
+
scs_int success = 1;
|
50
|
+
scs_int i;
|
51
|
+
/* test points */
|
52
|
+
scs_float v0[6][3] = {
|
53
|
+
{1, 2, 3},
|
54
|
+
{0.14814832, 1.04294573, 0.67905585},
|
55
|
+
{-0.78301134, 1.82790084, -1.05417044},
|
56
|
+
{1.3282585, -0.43277314, 1.7468072},
|
57
|
+
{0.67905585, 0.14814832, 1.04294573},
|
58
|
+
{0.50210027, 0.12314491, -1.77568921},
|
59
|
+
};
|
60
|
+
/* primal projections */
|
61
|
+
scs_float vp[6][3] = {
|
62
|
+
{0.8899428, 1.94041881, 3.06957226},
|
63
|
+
{-0.02001571, 0.8709169, 0.85112944},
|
64
|
+
{-1.17415616, 0.9567094, 0.280399},
|
65
|
+
{0.53160512, 0.2804836, 1.86652094},
|
66
|
+
{0.38322814, 0.27086569, 1.11482228},
|
67
|
+
{0., 0., 0.},
|
68
|
+
};
|
69
|
+
/* dual projections */
|
70
|
+
scs_float vd[6][3] = {
|
71
|
+
{-0., 2., 3.},
|
72
|
+
{-0., 1.04294573, 0.67905585},
|
73
|
+
{-0.68541419, 1.85424082, 0.01685653},
|
74
|
+
{-0.02277033, -0.12164823, 1.75085347},
|
75
|
+
{-0., 0.14814832, 1.04294573},
|
76
|
+
{-0., 0.12314491, -0.},
|
77
|
+
};
|
78
|
+
|
79
|
+
for (i = 0; i < 6; ++i) {
|
80
|
+
success &= _run_exp_cone_test(v0[i], vp[i], vd[i]);
|
81
|
+
}
|
82
|
+
mu_assert("test_exp_cone: Failure", success);
|
83
|
+
return 0;
|
84
|
+
}
|
@@ -0,0 +1,73 @@
|
|
1
|
+
#ifndef _SCS_FILE_TEST_CHASSIS
|
2
|
+
#define _SCS_FILE_TEST_CHASSIS
|
3
|
+
|
4
|
+
#include "glbopts.h"
|
5
|
+
#include "minunit.h"
|
6
|
+
#include "problem_utils.h"
|
7
|
+
#include "rw.h"
|
8
|
+
#include "scs.h"
|
9
|
+
#include "util.h"
|
10
|
+
|
11
|
+
static const char *_test_prob_from_data(const char *file, scs_float OPT) {
|
12
|
+
scs_int read_status;
|
13
|
+
ScsData *d;
|
14
|
+
ScsCone *k;
|
15
|
+
ScsSettings *stgs;
|
16
|
+
ScsSolution *sol;
|
17
|
+
ScsInfo info = {0};
|
18
|
+
scs_int exitflag;
|
19
|
+
scs_float perr, derr;
|
20
|
+
scs_int success;
|
21
|
+
const char *fail;
|
22
|
+
scs_float xt_p_x;
|
23
|
+
scs_float *px = SCS_NULL;
|
24
|
+
|
25
|
+
read_status = SCS(read_data)(file, &d, &k, &stgs);
|
26
|
+
|
27
|
+
if (read_status < 0) {
|
28
|
+
return "Data read failure, exit.\n";
|
29
|
+
}
|
30
|
+
|
31
|
+
stgs->eps_abs = 1e-6;
|
32
|
+
stgs->eps_rel = 1e-6;
|
33
|
+
/* Force verbosity for the test */
|
34
|
+
stgs->verbose = 1;
|
35
|
+
|
36
|
+
sol = (ScsSolution *)scs_calloc(1, sizeof(ScsSolution));
|
37
|
+
exitflag = scs(d, k, stgs, sol, &info);
|
38
|
+
|
39
|
+
if (d->P) {
|
40
|
+
/* px = Px */
|
41
|
+
px = (scs_float *)scs_calloc(d->n, sizeof(scs_float));
|
42
|
+
memset(px, 0, d->n * sizeof(scs_float));
|
43
|
+
SCS(accum_by_p)(d->P, sol->x, px);
|
44
|
+
xt_p_x = SCS(dot)(px, sol->x, d->n);
|
45
|
+
} else {
|
46
|
+
xt_p_x = 0.;
|
47
|
+
}
|
48
|
+
|
49
|
+
perr = 0.5 * xt_p_x + SCS(dot)(d->c, sol->x, d->n) - OPT;
|
50
|
+
derr = -0.5 * xt_p_x - SCS(dot)(d->b, sol->y, d->m) - OPT;
|
51
|
+
scs_printf("primal obj error %4e\n", perr);
|
52
|
+
scs_printf("dual obj error %4e\n", derr);
|
53
|
+
|
54
|
+
success = ABS(perr) < 1e-4 && ABS(derr) < 1e-4 && exitflag == SCS_SOLVED;
|
55
|
+
if (!success) {
|
56
|
+
scs_printf("%s: FAILED\n", file);
|
57
|
+
}
|
58
|
+
mu_assert(file, success);
|
59
|
+
fail = verify_solution_correct(d, k, stgs, &info, sol, exitflag);
|
60
|
+
SCS(free_data)(d);
|
61
|
+
SCS(free_cone)(k);
|
62
|
+
SCS(free_sol)(sol);
|
63
|
+
scs_free(stgs);
|
64
|
+
if (px) {
|
65
|
+
scs_free(px);
|
66
|
+
}
|
67
|
+
if (fail) {
|
68
|
+
scs_printf("%s: FAILED\n", file);
|
69
|
+
}
|
70
|
+
return fail;
|
71
|
+
}
|
72
|
+
|
73
|
+
#endif
|
@@ -60,7 +60,7 @@ int main(int argc, char **argv) {
|
|
60
60
|
}
|
61
61
|
for (i = 2; i < argc; i += 2) {
|
62
62
|
if (argc < i + 2) {
|
63
|
-
scs_printf("Incorrect number of arguments supplied
|
63
|
+
scs_printf("Incorrect number of arguments supplied.\n");
|
64
64
|
|
65
65
|
SCS(free_data)(d);
|
66
66
|
SCS(free_cone)(k);
|
@@ -78,6 +78,12 @@ int main(int argc, char **argv) {
|
|
78
78
|
return -1;
|
79
79
|
}
|
80
80
|
}
|
81
|
+
if (!stgs->verbose) {
|
82
|
+
scs_printf(
|
83
|
+
"File data set `verbose` to 0, SCS will not output information. Add "
|
84
|
+
"`verbose 1` to call to override.\n");
|
85
|
+
}
|
86
|
+
scs_printf("Solving problem.\n");
|
81
87
|
sol = (ScsSolution *)scs_calloc(1, sizeof(ScsSolution));
|
82
88
|
scs(d, k, stgs, sol, &info);
|
83
89
|
|
data/vendor/scs/test/run_tests.c
CHANGED
@@ -8,34 +8,47 @@
|
|
8
8
|
/* Include Tests */
|
9
9
|
#include "problems/degenerate.h"
|
10
10
|
#include "problems/hs21_tiny_qp.h"
|
11
|
-
#include "problems/hs21_tiny_qp_rw.h"
|
12
11
|
#include "problems/infeasible_tiny_qp.h"
|
13
12
|
#include "problems/qafiro_tiny_qp.h"
|
14
13
|
#include "problems/small_lp.h"
|
15
14
|
#include "problems/small_qp.h"
|
16
|
-
#include "problems/
|
15
|
+
#include "problems/test_exp_cone.h"
|
17
16
|
#include "problems/unbounded_tiny_qp.h"
|
18
17
|
|
18
|
+
int tests_run = 0;
|
19
|
+
|
20
|
+
/* decrement tests_run since mu_unit will increment it, so this cancels */
|
19
21
|
#define _SKIP(problem) \
|
20
22
|
char *problem(void) { \
|
21
23
|
scs_printf("skipped\n"); \
|
24
|
+
tests_run--; \
|
22
25
|
return 0; \
|
23
26
|
}
|
24
27
|
|
25
|
-
#
|
26
|
-
#include "problems/
|
28
|
+
#if NO_VALIDATE == 0
|
29
|
+
#include "problems/test_validation.h"
|
27
30
|
#else
|
28
|
-
_SKIP(
|
31
|
+
_SKIP(test_validation)
|
29
32
|
#endif
|
30
33
|
|
31
|
-
/*
|
32
|
-
#if defined(USE_LAPACK) &&
|
34
|
+
/* solve SDPs, requires blas / lapack */
|
35
|
+
#if defined(USE_LAPACK) && NO_READ_WRITE == 0
|
33
36
|
#include "problems/random_prob.h"
|
37
|
+
#include "problems/rob_gauss_cov_est.h"
|
34
38
|
#else
|
39
|
+
_SKIP(rob_gauss_cov_est)
|
35
40
|
_SKIP(random_prob)
|
36
41
|
#endif
|
37
42
|
|
38
|
-
|
43
|
+
#if NO_READ_WRITE == 0 /* reads / writes */
|
44
|
+
#include "problems/hs21_tiny_qp_rw.h"
|
45
|
+
#include "problems/max_ent.h"
|
46
|
+
#include "problems/mpc_bug.h"
|
47
|
+
#else
|
48
|
+
_SKIP(hs21_tiny_qp_rw)
|
49
|
+
_SKIP(max_ent)
|
50
|
+
_SKIP(mpc_bug)
|
51
|
+
#endif
|
39
52
|
|
40
53
|
static const char *all_tests(void) {
|
41
54
|
mu_run_test(test_validation);
|
@@ -49,13 +62,16 @@ static const char *all_tests(void) {
|
|
49
62
|
mu_run_test(infeasible_tiny_qp);
|
50
63
|
mu_run_test(unbounded_tiny_qp);
|
51
64
|
mu_run_test(random_prob);
|
65
|
+
mu_run_test(max_ent);
|
66
|
+
mu_run_test(mpc_bug);
|
67
|
+
mu_run_test(test_exp_cone);
|
52
68
|
return 0;
|
53
69
|
}
|
54
|
-
|
55
70
|
int main(void) {
|
56
71
|
const char *result = all_tests();
|
57
72
|
if (result != 0) {
|
58
73
|
scs_printf("%s\n", result);
|
74
|
+
scs_printf("TEST FAILED!\n");
|
59
75
|
} else {
|
60
76
|
scs_printf("ALL TESTS PASSED\n");
|
61
77
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email: andrew@ankane.org
|
@@ -79,12 +79,15 @@ files:
|
|
79
79
|
- vendor/scs/linsys/gpu/gpu.h
|
80
80
|
- vendor/scs/linsys/gpu/indirect/private.c
|
81
81
|
- vendor/scs/linsys/gpu/indirect/private.h
|
82
|
+
- vendor/scs/linsys/mkl/direct/private.c
|
83
|
+
- vendor/scs/linsys/mkl/direct/private.h
|
82
84
|
- vendor/scs/linsys/scs_matrix.c
|
83
85
|
- vendor/scs/linsys/scs_matrix.h
|
84
86
|
- vendor/scs/scs.mk
|
85
87
|
- vendor/scs/src/aa.c
|
86
88
|
- vendor/scs/src/cones.c
|
87
89
|
- vendor/scs/src/ctrlc.c
|
90
|
+
- vendor/scs/src/exp_cone.c
|
88
91
|
- vendor/scs/src/linalg.c
|
89
92
|
- vendor/scs/src/normalize.c
|
90
93
|
- vendor/scs/src/rw.c
|
@@ -97,12 +100,20 @@ files:
|
|
97
100
|
- vendor/scs/test/problems/hs21_tiny_qp.h
|
98
101
|
- vendor/scs/test/problems/hs21_tiny_qp_rw.h
|
99
102
|
- vendor/scs/test/problems/infeasible_tiny_qp.h
|
103
|
+
- vendor/scs/test/problems/max_ent
|
104
|
+
- vendor/scs/test/problems/max_ent.h
|
105
|
+
- vendor/scs/test/problems/mpc_bug.h
|
106
|
+
- vendor/scs/test/problems/mpc_bug1
|
107
|
+
- vendor/scs/test/problems/mpc_bug2
|
108
|
+
- vendor/scs/test/problems/mpc_bug3
|
100
109
|
- vendor/scs/test/problems/qafiro_tiny_qp.h
|
101
110
|
- vendor/scs/test/problems/random_prob
|
102
111
|
- vendor/scs/test/problems/random_prob.h
|
103
112
|
- vendor/scs/test/problems/rob_gauss_cov_est.h
|
104
113
|
- vendor/scs/test/problems/small_lp.h
|
105
114
|
- vendor/scs/test/problems/small_qp.h
|
115
|
+
- vendor/scs/test/problems/test_exp_cone.h
|
116
|
+
- vendor/scs/test/problems/test_prob_from_data_file.h
|
106
117
|
- vendor/scs/test/problems/test_validation.h
|
107
118
|
- vendor/scs/test/problems/unbounded_tiny_qp.h
|
108
119
|
- vendor/scs/test/random_socp_prob.c
|
@@ -128,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
139
|
- !ruby/object:Gem::Version
|
129
140
|
version: '0'
|
130
141
|
requirements: []
|
131
|
-
rubygems_version: 3.
|
142
|
+
rubygems_version: 3.5.11
|
132
143
|
signing_key:
|
133
144
|
specification_version: 4
|
134
145
|
summary: SCS - the splitting conic solver - for Ruby
|