scs 0.4.0 → 0.4.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 +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
|