scs 0.3.1 → 0.3.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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/README.md +8 -8
  4. data/lib/scs/ffi.rb +1 -7
  5. data/lib/scs/version.rb +1 -1
  6. data/vendor/scs/CITATION.cff +1 -1
  7. data/vendor/scs/CMakeLists.txt +55 -7
  8. data/vendor/scs/Makefile +9 -9
  9. data/vendor/scs/README.md +2 -1
  10. data/vendor/scs/include/aa.h +1 -1
  11. data/vendor/scs/include/cones.h +14 -11
  12. data/vendor/scs/include/glbopts.h +26 -64
  13. data/vendor/scs/include/linalg.h +2 -1
  14. data/vendor/scs/include/linsys.h +13 -13
  15. data/vendor/scs/include/normalize.h +6 -5
  16. data/vendor/scs/include/scs.h +43 -87
  17. data/vendor/scs/include/scs_types.h +34 -0
  18. data/vendor/scs/include/scs_work.h +83 -0
  19. data/vendor/scs/linsys/cpu/direct/private.c +86 -73
  20. data/vendor/scs/linsys/cpu/direct/private.h +2 -2
  21. data/vendor/scs/linsys/cpu/indirect/private.c +42 -33
  22. data/vendor/scs/linsys/cpu/indirect/private.h +1 -2
  23. data/vendor/scs/linsys/csparse.c +3 -3
  24. data/vendor/scs/linsys/external/amd/SuiteSparse_config.c +6 -6
  25. data/vendor/scs/linsys/external/amd/SuiteSparse_config.h +6 -1
  26. data/vendor/scs/linsys/external/amd/amd_order.c +5 -5
  27. data/vendor/scs/linsys/gpu/gpu.h +8 -11
  28. data/vendor/scs/linsys/gpu/indirect/private.c +72 -49
  29. data/vendor/scs/linsys/gpu/indirect/private.h +14 -13
  30. data/vendor/scs/linsys/scs_matrix.c +26 -46
  31. data/vendor/scs/linsys/scs_matrix.h +4 -4
  32. data/vendor/scs/scs.mk +1 -1
  33. data/vendor/scs/src/aa.c +13 -4
  34. data/vendor/scs/src/cones.c +143 -92
  35. data/vendor/scs/src/linalg.c +25 -0
  36. data/vendor/scs/src/normalize.c +26 -26
  37. data/vendor/scs/src/rw.c +48 -12
  38. data/vendor/scs/src/scs.c +104 -110
  39. data/vendor/scs/src/scs_version.c +8 -6
  40. data/vendor/scs/src/util.c +1 -1
  41. data/vendor/scs/test/minunit.h +6 -1
  42. data/vendor/scs/test/problem_utils.h +28 -35
  43. data/vendor/scs/test/problems/degenerate.h +1 -1
  44. data/vendor/scs/test/problems/hs21_tiny_qp.h +1 -1
  45. data/vendor/scs/test/problems/hs21_tiny_qp_rw.h +1 -1
  46. data/vendor/scs/test/problems/infeasible_tiny_qp.h +1 -1
  47. data/vendor/scs/test/problems/qafiro_tiny_qp.h +3 -3
  48. data/vendor/scs/test/problems/random_prob.h +1 -1
  49. data/vendor/scs/test/problems/rob_gauss_cov_est.h +1 -1
  50. data/vendor/scs/test/problems/small_lp.h +3 -1
  51. data/vendor/scs/test/problems/small_qp.h +352 -0
  52. data/vendor/scs/test/problems/{test_fails.h → test_validation.h} +3 -3
  53. data/vendor/scs/test/problems/unbounded_tiny_qp.h +1 -1
  54. data/vendor/scs/test/random_socp_prob.c +1 -1
  55. data/vendor/scs/test/run_from_file.c +1 -1
  56. data/vendor/scs/test/run_tests.c +23 -14
  57. metadata +8 -5
@@ -64,7 +64,7 @@ static const char *hs21_tiny_qp(void) {
64
64
  k->bl = bl;
65
65
  k->bu = bu;
66
66
 
67
- SCS(set_default_settings)(stgs);
67
+ scs_set_default_settings(stgs);
68
68
  stgs->eps_abs = 1e-6;
69
69
  stgs->eps_rel = 1e-6;
70
70
  stgs->eps_infeas = 1e-9;
@@ -66,7 +66,7 @@ static const char *hs21_tiny_qp_rw(void) {
66
66
  k->bl = bl;
67
67
  k->bu = bu;
68
68
 
69
- SCS(set_default_settings)(stgs);
69
+ scs_set_default_settings(stgs);
70
70
  stgs->eps_abs = 1e-6;
71
71
  stgs->eps_rel = 1e-6;
72
72
  stgs->eps_infeas = 1e-9;
@@ -78,7 +78,7 @@ static const char *infeasible_tiny_qp(void) {
78
78
 
79
79
  k->l = l;
80
80
 
81
- SCS(set_default_settings)(stgs);
81
+ scs_set_default_settings(stgs);
82
82
  stgs->eps_abs = 1e-6;
83
83
  stgs->eps_rel = 1e-6;
84
84
  stgs->eps_infeas = 1e-9;
@@ -118,9 +118,9 @@ static const char *qafiro_tiny_qp(void) {
118
118
  k->bu = bu;
119
119
  k->z = z;
120
120
 
121
- SCS(set_default_settings)(stgs);
122
- stgs->eps_abs = 1e-6;
123
- stgs->eps_rel = 1e-6;
121
+ scs_set_default_settings(stgs);
122
+ stgs->eps_abs = 1e-7;
123
+ stgs->eps_rel = 1e-7;
124
124
  stgs->eps_infeas = 1e-9;
125
125
 
126
126
  exitflag = scs(d, k, stgs, sol, &info);
@@ -27,7 +27,7 @@ static const char *random_prob(void) {
27
27
  stgs->eps_abs = 1e-6;
28
28
  stgs->eps_rel = 1e-6;
29
29
 
30
- sol = scs_calloc(1, sizeof(ScsSolution));
30
+ sol = (ScsSolution *)scs_calloc(1, sizeof(ScsSolution));
31
31
  exitflag = scs(d, k, stgs, sol, &info);
32
32
 
33
33
  perr = SCS(dot)(d->c, sol->x, d->n) - OPT;
@@ -155,7 +155,7 @@ static const char *rob_gauss_cov_est(void) {
155
155
  k->p = p;
156
156
  k->psize = psize;
157
157
 
158
- SCS(set_default_settings)(stgs);
158
+ scs_set_default_settings(stgs);
159
159
  stgs->eps_abs = 1e-6;
160
160
  stgs->eps_rel = 1e-6;
161
161
  stgs->eps_infeas = 1e-9;
@@ -28,13 +28,15 @@ static const char *small_lp(void) {
28
28
  d->m = m;
29
29
  d->n = n;
30
30
  gen_random_prob_data(nnz, col_nnz, d, k, opt_sol, seed);
31
- SCS(set_default_settings)(stgs);
31
+ scs_set_default_settings(stgs);
32
32
  stgs->eps_abs = 1e-5;
33
33
  stgs->eps_rel = 1e-5;
34
34
 
35
35
  exitflag = scs(d, k, stgs, sol, &info);
36
+
36
37
  perr = SCS(dot)(d->c, sol->x, d->n) - SCS(dot)(d->c, opt_sol->x, d->n);
37
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));
38
40
  scs_printf("primal obj error %4e\n", perr);
39
41
  scs_printf("dual obj error %4e\n", derr);
40
42
 
@@ -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
+ }
@@ -4,8 +4,8 @@
4
4
  #include "scs.h"
5
5
  #include "util.h"
6
6
 
7
- static const char *test_fails(void) {
8
- scs_printf("Testing that SCS handles bad inputs correctly:");
7
+ static const char *test_validation(void) {
8
+ scs_printf("Testing that SCS handles bad inputs correctly:\n");
9
9
 
10
10
  ScsCone *k = (ScsCone *)scs_calloc(1, sizeof(ScsCone));
11
11
  ScsData *d = (ScsData *)scs_calloc(1, sizeof(ScsData));
@@ -27,7 +27,7 @@ static const char *test_fails(void) {
27
27
  d->m = m;
28
28
  d->n = n;
29
29
  gen_random_prob_data(nnz, col_nnz, d, k, opt_sol, seed);
30
- SCS(set_default_settings)(stgs);
30
+ scs_set_default_settings(stgs);
31
31
 
32
32
  /* TODO test more failure modes */
33
33
  stgs->eps_abs = -1;
@@ -60,7 +60,7 @@ static const char *unbounded_tiny_qp(void) {
60
60
 
61
61
  k->l = l;
62
62
 
63
- SCS(set_default_settings)(stgs);
63
+ scs_set_default_settings(stgs);
64
64
  stgs->eps_abs = 1e-6;
65
65
  stgs->eps_rel = 1e-6;
66
66
  stgs->eps_infeas = 1e-7;
@@ -146,7 +146,7 @@ int main(int argc, char **argv) {
146
146
  d->m = m;
147
147
  d->n = n;
148
148
  gen_random_prob_data(nnz, col_nnz, d, k, opt_sol, seed);
149
- SCS(set_default_settings)(stgs);
149
+ scs_set_default_settings(stgs);
150
150
 
151
151
  /* stgs->write_data_filename = "random_socp_prob"; */
152
152
 
@@ -70,7 +70,7 @@ int main(int argc, char **argv) {
70
70
  return -1;
71
71
  }
72
72
  }
73
- sol = scs_calloc(1, sizeof(ScsSolution));
73
+ sol = (ScsSolution *)scs_calloc(1, sizeof(ScsSolution));
74
74
  scs(d, k, stgs, sol, &info);
75
75
  SCS(free_data)(d, k, stgs);
76
76
  SCS(free_sol)(sol);
@@ -11,34 +11,43 @@
11
11
  #include "problems/hs21_tiny_qp_rw.h"
12
12
  #include "problems/infeasible_tiny_qp.h"
13
13
  #include "problems/qafiro_tiny_qp.h"
14
- #include "problems/random_prob.h"
15
- #include "problems/rob_gauss_cov_est.h"
16
14
  #include "problems/small_lp.h"
17
- #include "problems/test_fails.h"
15
+ #include "problems/small_qp.h"
16
+ #include "problems/test_validation.h"
18
17
  #include "problems/unbounded_tiny_qp.h"
19
18
 
19
+ #define _SKIP(problem) \
20
+ char *problem(void) { \
21
+ scs_printf("skipped\n"); \
22
+ return 0; \
23
+ }
24
+
25
+ #ifdef USE_LAPACK /* solve SDPs, requires blas / lapack */
26
+ #include "problems/rob_gauss_cov_est.h"
27
+ #else
28
+ _SKIP(rob_gauss_cov_est)
29
+ #endif
30
+
31
+ /* TODO: this reads a file written with 32bit ints */
32
+ #if defined(USE_LAPACK) && !defined(DLONG)
33
+ #include "problems/random_prob.h"
34
+ #else
35
+ _SKIP(random_prob)
36
+ #endif
37
+
20
38
  int tests_run = 0;
21
39
 
22
40
  static const char *all_tests(void) {
23
- scs_printf("test_fails\n");
24
- mu_run_test(test_fails);
25
- scs_printf("degenerate\n");
41
+ mu_run_test(test_validation);
26
42
  mu_run_test(degenerate);
27
- scs_printf("small_lp\n");
28
43
  mu_run_test(small_lp);
29
- scs_printf("rob_gauss_cov_est\n");
44
+ mu_run_test(small_qp);
30
45
  mu_run_test(rob_gauss_cov_est);
31
- scs_printf("hs21_tiny_qp\n");
32
46
  mu_run_test(hs21_tiny_qp);
33
- scs_printf("hs21_tiny_qp_rw\n");
34
47
  mu_run_test(hs21_tiny_qp_rw);
35
- scs_printf("qafiro_tiny_qp\n");
36
48
  mu_run_test(qafiro_tiny_qp);
37
- scs_printf("infeasible_tiny_qp\n");
38
49
  mu_run_test(infeasible_tiny_qp);
39
- scs_printf("unbounded_tiny_qp\n");
40
50
  mu_run_test(unbounded_tiny_qp);
41
- scs_printf("random_prob\n");
42
51
  mu_run_test(random_prob);
43
52
  return 0;
44
53
  }
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.3.1
4
+ version: 0.3.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: 2021-10-08 00:00:00.000000000 Z
11
+ date: 2022-01-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: andrew@ankane.org
@@ -40,6 +40,8 @@ files:
40
40
  - vendor/scs/include/rw.h
41
41
  - vendor/scs/include/scs.h
42
42
  - vendor/scs/include/scs_blas.h
43
+ - vendor/scs/include/scs_types.h
44
+ - vendor/scs/include/scs_work.h
43
45
  - vendor/scs/include/util.h
44
46
  - vendor/scs/linsys/cpu/direct/private.c
45
47
  - vendor/scs/linsys/cpu/direct/private.h
@@ -99,13 +101,14 @@ files:
99
101
  - vendor/scs/test/problems/random_prob.h
100
102
  - vendor/scs/test/problems/rob_gauss_cov_est.h
101
103
  - vendor/scs/test/problems/small_lp.h
102
- - vendor/scs/test/problems/test_fails.h
104
+ - vendor/scs/test/problems/small_qp.h
105
+ - vendor/scs/test/problems/test_validation.h
103
106
  - vendor/scs/test/problems/unbounded_tiny_qp.h
104
107
  - vendor/scs/test/random_socp_prob.c
105
108
  - vendor/scs/test/rng.h
106
109
  - vendor/scs/test/run_from_file.c
107
110
  - vendor/scs/test/run_tests.c
108
- homepage: https://github.com/ankane/scs
111
+ homepage: https://github.com/ankane/scs-ruby
109
112
  licenses:
110
113
  - MIT
111
114
  metadata: {}
@@ -124,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
127
  - !ruby/object:Gem::Version
125
128
  version: '0'
126
129
  requirements: []
127
- rubygems_version: 3.2.22
130
+ rubygems_version: 3.3.3
128
131
  signing_key:
129
132
  specification_version: 4
130
133
  summary: SCS - the splitting conic solver - for Ruby