scs 0.4.0 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/LICENSE.txt +1 -1
  4. data/README.md +1 -1
  5. data/lib/scs/ffi.rb +2 -2
  6. data/lib/scs/version.rb +1 -1
  7. data/lib/scs.rb +3 -3
  8. data/vendor/scs/CITATION.cff +2 -2
  9. data/vendor/scs/CMakeLists.txt +305 -171
  10. data/vendor/scs/Makefile +44 -19
  11. data/vendor/scs/README.md +1 -1
  12. data/vendor/scs/include/glbopts.h +34 -14
  13. data/vendor/scs/include/linsys.h +8 -8
  14. data/vendor/scs/include/scs.h +6 -2
  15. data/vendor/scs/include/scs_blas.h +4 -0
  16. data/vendor/scs/include/scs_types.h +3 -1
  17. data/vendor/scs/include/scs_work.h +9 -8
  18. data/vendor/scs/include/util.h +1 -1
  19. data/vendor/scs/linsys/cpu/direct/private.c +32 -153
  20. data/vendor/scs/linsys/cpu/direct/private.h +6 -6
  21. data/vendor/scs/linsys/cpu/indirect/private.c +9 -22
  22. data/vendor/scs/linsys/cpu/indirect/private.h +4 -2
  23. data/vendor/scs/linsys/csparse.c +140 -12
  24. data/vendor/scs/linsys/csparse.h +10 -17
  25. data/vendor/scs/linsys/gpu/gpu.c +4 -4
  26. data/vendor/scs/linsys/gpu/gpu.h +1 -1
  27. data/vendor/scs/linsys/gpu/indirect/private.c +15 -26
  28. data/vendor/scs/linsys/mkl/direct/private.c +182 -0
  29. data/vendor/scs/linsys/mkl/direct/private.h +38 -0
  30. data/vendor/scs/linsys/scs_matrix.c +11 -5
  31. data/vendor/scs/scs.mk +40 -27
  32. data/vendor/scs/src/cones.c +17 -161
  33. data/vendor/scs/src/exp_cone.c +399 -0
  34. data/vendor/scs/src/linalg.c +17 -3
  35. data/vendor/scs/src/normalize.c +4 -2
  36. data/vendor/scs/src/rw.c +107 -38
  37. data/vendor/scs/src/scs.c +103 -69
  38. data/vendor/scs/src/util.c +12 -3
  39. data/vendor/scs/test/minunit.h +2 -1
  40. data/vendor/scs/test/problem_utils.h +2 -1
  41. data/vendor/scs/test/problems/hs21_tiny_qp.h +1 -1
  42. data/vendor/scs/test/problems/hs21_tiny_qp_rw.h +8 -3
  43. data/vendor/scs/test/problems/max_ent +0 -0
  44. data/vendor/scs/test/problems/max_ent.h +8 -0
  45. data/vendor/scs/test/problems/mpc_bug.h +19 -0
  46. data/vendor/scs/test/problems/mpc_bug1 +0 -0
  47. data/vendor/scs/test/problems/mpc_bug2 +0 -0
  48. data/vendor/scs/test/problems/mpc_bug3 +0 -0
  49. data/vendor/scs/test/problems/random_prob.h +2 -43
  50. data/vendor/scs/test/problems/rob_gauss_cov_est.h +7 -2
  51. data/vendor/scs/test/problems/test_exp_cone.h +84 -0
  52. data/vendor/scs/test/problems/test_prob_from_data_file.h +73 -0
  53. data/vendor/scs/test/run_from_file.c +7 -1
  54. data/vendor/scs/test/run_tests.c +25 -9
  55. metadata +14 -3
@@ -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
- 1e-8 * MAX(NORM(s, m), NORM(y, m)));
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 = 1e-9;
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 = 1e-9;
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,8 @@
1
+ #include "glbopts.h"
2
+ #include "problems/test_prob_from_data_file.h"
3
+ #include "scs.h"
4
+
5
+ static const char *max_ent(void) {
6
+ scs_float OPT = -6.067087663361563; /* from ecos */
7
+ return _test_prob_from_data("test/problems/max_ent", OPT);
8
+ }
@@ -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 "minunit.h"
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\n.");
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
 
@@ -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/test_validation.h"
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
- #ifdef USE_LAPACK /* solve SDPs, requires blas / lapack */
26
- #include "problems/rob_gauss_cov_est.h"
28
+ #if NO_VALIDATE == 0
29
+ #include "problems/test_validation.h"
27
30
  #else
28
- _SKIP(rob_gauss_cov_est)
31
+ _SKIP(test_validation)
29
32
  #endif
30
33
 
31
- /* TODO: this reads a file written with 32bit ints */
32
- #if defined(USE_LAPACK) && !defined(DLONG)
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
- int tests_run = 0;
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.0
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: 2022-07-07 00:00:00.000000000 Z
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.3.7
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