scs 0.5.6 → 0.6.0

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 (95) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/LICENSE.txt +1 -1
  4. data/lib/scs/ffi.rb +18 -0
  5. data/lib/scs/version.rb +1 -1
  6. data/vendor/scs/CITATION.cff +2 -3
  7. data/vendor/scs/CLAUDE.md +115 -0
  8. data/vendor/scs/CMakeLists.txt +330 -201
  9. data/vendor/scs/CONTRIBUTING.md +49 -0
  10. data/vendor/scs/Makefile +90 -43
  11. data/vendor/scs/README.md +96 -2
  12. data/vendor/scs/include/aa.h +59 -11
  13. data/vendor/scs/include/aa_stats.h +47 -0
  14. data/vendor/scs/include/cones.h +16 -7
  15. data/vendor/scs/include/glbopts.h +113 -26
  16. data/vendor/scs/include/linalg.h +5 -1
  17. data/vendor/scs/include/linsys.h +1 -2
  18. data/vendor/scs/include/normalize.h +6 -2
  19. data/vendor/scs/include/rw.h +9 -3
  20. data/vendor/scs/include/scs.h +17 -1
  21. data/vendor/scs/include/scs_blas.h +8 -0
  22. data/vendor/scs/include/scs_types.h +2 -2
  23. data/vendor/scs/include/scs_work.h +22 -1
  24. data/vendor/scs/include/util.h +3 -6
  25. data/vendor/scs/include/util_spectral_cones.h +3 -3
  26. data/vendor/scs/linsys/accelerate/direct/private.c +126 -0
  27. data/vendor/scs/linsys/accelerate/direct/private.h +34 -0
  28. data/vendor/scs/linsys/cpu/dense/private.c +250 -0
  29. data/vendor/scs/linsys/cpu/dense/private.h +31 -0
  30. data/vendor/scs/linsys/cpu/direct/private.c +86 -44
  31. data/vendor/scs/linsys/cpu/indirect/private.c +647 -113
  32. data/vendor/scs/linsys/cpu/indirect/private.h +28 -0
  33. data/vendor/scs/linsys/csparse.c +9 -3
  34. data/vendor/scs/linsys/csparse.h +4 -2
  35. data/vendor/scs/linsys/cudss/direct/private.c +77 -43
  36. data/vendor/scs/linsys/cudss/direct/private.h +33 -7
  37. data/vendor/scs/linsys/gpu/indirect/private.c +6 -2
  38. data/vendor/scs/linsys/mkl/direct/private.c +63 -31
  39. data/vendor/scs/linsys/mkl/direct/private.h +0 -1
  40. data/vendor/scs/linsys/scs_matrix.c +291 -165
  41. data/vendor/scs/linsys/scs_matrix.h +7 -9
  42. data/vendor/scs/scs.mk +35 -13
  43. data/vendor/scs/src/aa.c +673 -166
  44. data/vendor/scs/src/cones.c +545 -223
  45. data/vendor/scs/src/ctrlc.c +59 -16
  46. data/vendor/scs/src/exp_cone.c +70 -50
  47. data/vendor/scs/src/linalg.c +21 -2
  48. data/vendor/scs/src/normalize.c +24 -26
  49. data/vendor/scs/src/rw.c +596 -124
  50. data/vendor/scs/src/scs.c +990 -513
  51. data/vendor/scs/src/spectral_cones/logdeterminant/log_cone_IPM.c +240 -187
  52. data/vendor/scs/src/spectral_cones/logdeterminant/log_cone_Newton.c +108 -85
  53. data/vendor/scs/src/spectral_cones/logdeterminant/log_cone_wrapper.c +62 -63
  54. data/vendor/scs/src/spectral_cones/logdeterminant/logdet_cone.c +85 -78
  55. data/vendor/scs/src/spectral_cones/nuclear/ell1_cone.c +92 -97
  56. data/vendor/scs/src/spectral_cones/nuclear/nuclear_cone.c +39 -28
  57. data/vendor/scs/src/spectral_cones/sum-largest/sum_largest_cone.c +59 -40
  58. data/vendor/scs/src/spectral_cones/sum-largest/sum_largest_eval_cone.c +37 -29
  59. data/vendor/scs/src/spectral_cones/util_spectral_cones.c +12 -6
  60. data/vendor/scs/src/util.c +37 -7
  61. data/vendor/scs/test/mkl_interface_mismatch.c +97 -0
  62. data/vendor/scs/test/packaging/CMakeLists.txt +21 -0
  63. data/vendor/scs/test/packaging/consume.c +50 -0
  64. data/vendor/scs/test/problem_utils.h +9 -2
  65. data/vendor/scs/test/problems/dense_qp.h +64 -0
  66. data/vendor/scs/test/problems/hs21_tiny_qp.h +6 -2
  67. data/vendor/scs/test/problems/hs21_tiny_qp_rw.h +10 -2
  68. data/vendor/scs/test/problems/infeasible_lp.h +66 -0
  69. data/vendor/scs/test/problems/infeasible_socp.h +75 -0
  70. data/vendor/scs/test/problems/lp_update.h +110 -0
  71. data/vendor/scs/test/problems/qafiro_tiny_qp.h +3 -1
  72. data/vendor/scs/test/problems/rob_gauss_cov_est.h +6 -3
  73. data/vendor/scs/test/problems/small_qp.h +5 -0
  74. data/vendor/scs/test/problems/test_box_cone.h +92 -0
  75. data/vendor/scs/test/problems/test_dual_exp_cone.h +96 -0
  76. data/vendor/scs/test/problems/test_inaccurate.h +212 -0
  77. data/vendor/scs/test/problems/test_mixed_cones.h +113 -0
  78. data/vendor/scs/test/problems/test_normalize_roundtrip.h +279 -0
  79. data/vendor/scs/test/problems/test_power_cone.h +414 -0
  80. data/vendor/scs/test/problems/test_psd_metric.h +109 -0
  81. data/vendor/scs/test/problems/test_psd_n1.h +84 -0
  82. data/vendor/scs/test/problems/test_root_plus.h +191 -0
  83. data/vendor/scs/test/problems/test_rw_settings.h +112 -0
  84. data/vendor/scs/test/problems/test_soc_sizes.h +393 -0
  85. data/vendor/scs/test/problems/test_solver_options.h +558 -0
  86. data/vendor/scs/test/problems/test_validation.h +263 -24
  87. data/vendor/scs/test/problems/test_zero_cone.h +81 -0
  88. data/vendor/scs/test/problems/unbounded_lp.h +66 -0
  89. data/vendor/scs/test/problems/unbounded_socp.h +71 -0
  90. data/vendor/scs/test/run_from_file.c +6 -0
  91. data/vendor/scs/test/run_tests.c +71 -0
  92. data/vendor/scs/test/rw_settings.c +7 -0
  93. data/vendor/scs/test/spectral_cones_problems/test_ell1_and_nuc.h +128 -0
  94. data/vendor/scs/test/spectral_cones_problems/test_ell1_cone.h +115 -0
  95. metadata +35 -3
@@ -0,0 +1,128 @@
1
+ #include "glbopts.h"
2
+ #include "linalg.h"
3
+ #include "minunit.h"
4
+ #include "problem_utils.h"
5
+ #include "scs.h"
6
+ #include "scs_matrix.h"
7
+ #include "util.h"
8
+
9
+ /*
10
+ * Combined ell1 + nuclear norm test.
11
+ * Two independent blocks sharing one SCS call to exercise cone ordering.
12
+ *
13
+ * Block 1 (ell1):
14
+ * minimize t_ell s.t. a1 + a2 = 1, (t_ell, a1, a2) in ell1(2)
15
+ * Optimal: t_ell = 1
16
+ *
17
+ * Block 2 (nuclear norm):
18
+ * minimize t_nuc s.t. M = [[0.6, 0], [0.8, 0]], (t_nuc, M) in nuc(2,2)
19
+ * M has singular values {1, 0}, so optimal t_nuc = 1
20
+ *
21
+ * Variables (n=8): t_ell, a1, a2, t_nuc, M_11, M_21, M_12, M_22
22
+ * Objective: minimize t_ell + t_nuc, optimal = 2.0
23
+ *
24
+ * Cone ordering: z=5, nuc(2,2)=5 rows, ell1(2)=3 rows, total m=13
25
+ */
26
+ static const char *test_ell1_and_nuc(void) {
27
+ ScsCone *k = (ScsCone *)scs_calloc(1, sizeof(ScsCone));
28
+ ScsData *d = (ScsData *)scs_calloc(1, sizeof(ScsData));
29
+ ScsSettings *stgs = (ScsSettings *)scs_calloc(1, sizeof(ScsSettings));
30
+ ScsSolution *sol = (ScsSolution *)scs_calloc(1, sizeof(ScsSolution));
31
+ ScsInfo info = {0};
32
+ scs_int exitflag;
33
+ scs_float perr, derr;
34
+ scs_int success;
35
+
36
+ /* A matrix (13 x 8, CSC):
37
+ * Row 0: [0, 1, 1, 0, 0, 0, 0, 0] z: a1 + a2 = 1
38
+ * Row 1: [0, 0, 0, 0, 1, 0, 0, 0] z: M_11 = 0.6
39
+ * Row 2: [0, 0, 0, 0, 0, 1, 0, 0] z: M_21 = 0.8
40
+ * Row 3: [0, 0, 0, 0, 0, 0, 1, 0] z: M_12 = 0
41
+ * Row 4: [0, 0, 0, 0, 0, 0, 0, 1] z: M_22 = 0
42
+ * Row 5: [0, 0, 0,-1, 0, 0, 0, 0] nuc: t_nuc
43
+ * Row 6: [0, 0, 0, 0,-1, 0, 0, 0] nuc: M_11
44
+ * Row 7: [0, 0, 0, 0, 0,-1, 0, 0] nuc: M_21
45
+ * Row 8: [0, 0, 0, 0, 0, 0,-1, 0] nuc: M_12
46
+ * Row 9: [0, 0, 0, 0, 0, 0, 0,-1] nuc: M_22
47
+ * Row 10: [-1,0, 0, 0, 0, 0, 0, 0] ell1: t_ell
48
+ * Row 11: [0,-1, 0, 0, 0, 0, 0, 0] ell1: a1
49
+ * Row 12: [0, 0,-1, 0, 0, 0, 0, 0] ell1: a2
50
+ */
51
+ scs_float Ax[] = {-1., 1., -1., 1., -1., -1., 1., -1., 1., -1.,
52
+ 1., -1., 1., -1.};
53
+ scs_int Ai[] = {10, 0, 11, 0, 12, 5, 1, 6, 2, 7, 3, 8, 4, 9};
54
+ scs_int Ap[] = {0, 1, 3, 5, 6, 8, 10, 12, 14};
55
+ scs_float b[] = {1., 0.6, 0.8, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
56
+ scs_float c[] = {1., 0., 0., 1., 0., 0., 0., 0.};
57
+
58
+ scs_int m = 13;
59
+ scs_int n = 8;
60
+
61
+ scs_int nuc_m[] = {2};
62
+ scs_int nuc_n[] = {2};
63
+ scs_int nucsize = 1;
64
+ scs_int ell1[] = {2};
65
+ scs_int ell1_size = 1;
66
+
67
+ scs_int *d_array = SCS_NULL;
68
+ scs_int dsize = 0;
69
+ scs_int *sl_n = SCS_NULL;
70
+ scs_int *sl_k = SCS_NULL;
71
+ scs_int sl_size = 0;
72
+
73
+ scs_float opt = 2.0;
74
+
75
+ d->m = m;
76
+ d->n = n;
77
+ d->b = b;
78
+ d->c = c;
79
+
80
+ d->A = (ScsMatrix *)scs_calloc(1, sizeof(ScsMatrix));
81
+ d->A->m = m;
82
+ d->A->n = n;
83
+ d->A->x = Ax;
84
+ d->A->i = Ai;
85
+ d->A->p = Ap;
86
+
87
+ k->z = 5;
88
+ k->d = d_array;
89
+ k->dsize = dsize;
90
+ k->nuc_m = nuc_m;
91
+ k->nuc_n = nuc_n;
92
+ k->nucsize = nucsize;
93
+ k->ell1 = ell1;
94
+ k->ell1_size = ell1_size;
95
+ k->sl_n = sl_n;
96
+ k->sl_k = sl_k;
97
+ k->sl_size = sl_size;
98
+
99
+ scs_set_default_settings(stgs);
100
+ stgs->eps_abs = 1e-9;
101
+ stgs->eps_rel = 1e-9;
102
+ stgs->eps_infeas = 1e-9;
103
+
104
+ exitflag = scs(d, k, stgs, sol, &info);
105
+
106
+ perr = SCS(dot)(d->c, sol->x, d->n) - opt;
107
+ derr = -SCS(dot)(d->b, sol->y, d->m) - opt;
108
+
109
+ scs_printf("primal obj error %4e\n", perr);
110
+ scs_printf("dual obj error %4e\n", derr);
111
+
112
+ success = ABS(perr) < 1e-4 && ABS(derr) < 1e-4 && exitflag == SCS_SOLVED;
113
+
114
+ mu_assert("test_ell1_and_nuc: SCS failed to produce outputflag SCS_SOLVED",
115
+ success);
116
+
117
+ mu_assert("test_ell1_and_nuc: primal feas error", ABS(info.res_pri) < 1e-6);
118
+ mu_assert("test_ell1_and_nuc: dual feas error", ABS(info.res_dual) < 1e-6);
119
+ mu_assert("test_ell1_and_nuc: duality gap error", ABS(info.gap) < 1e-6);
120
+
121
+ scs_free(d->A);
122
+ scs_free(k);
123
+ scs_free(stgs);
124
+ scs_free(d);
125
+ SCS(free_sol)(sol);
126
+
127
+ return 0;
128
+ }
@@ -0,0 +1,115 @@
1
+ #include "glbopts.h"
2
+ #include "linalg.h"
3
+ #include "minunit.h"
4
+ #include "problem_utils.h"
5
+ #include "scs.h"
6
+ #include "scs_matrix.h"
7
+ #include "util.h"
8
+
9
+ /*
10
+ * Basis pursuit: minimize ||x||_1 subject to Ax = b
11
+ *
12
+ * Conic form:
13
+ * minimize t
14
+ * subject to:
15
+ * x1 + 2*x2 = 1 (equality)
16
+ * x2 + x3 = 1 (equality)
17
+ * (t, x1, x2, x3) in ell1(3)
18
+ *
19
+ * Optimal: x = (0, 0.5, 0.5), t = 1.0
20
+ */
21
+ static const char *test_ell1_cone(void) {
22
+ ScsCone *k = (ScsCone *)scs_calloc(1, sizeof(ScsCone));
23
+ ScsData *d = (ScsData *)scs_calloc(1, sizeof(ScsData));
24
+ ScsSettings *stgs = (ScsSettings *)scs_calloc(1, sizeof(ScsSettings));
25
+ ScsSolution *sol = (ScsSolution *)scs_calloc(1, sizeof(ScsSolution));
26
+ ScsInfo info = {0};
27
+ scs_int exitflag;
28
+ scs_float perr, derr;
29
+ scs_int success;
30
+
31
+ /* A matrix (6 x 4, CSC):
32
+ * Row 0: [0, 1, 2, 0] (zero)
33
+ * Row 1: [0, 0, 1, 1] (zero)
34
+ * Row 2: [-1, 0, 0, 0] (ell1 t)
35
+ * Row 3: [0, -1, 0, 0] (ell1 x1)
36
+ * Row 4: [0, 0, -1, 0] (ell1 x2)
37
+ * Row 5: [0, 0, 0, -1] (ell1 x3)
38
+ */
39
+ scs_float Ax[] = {-1., 1., -1., 2., 1., -1., 1., -1.};
40
+ scs_int Ai[] = {2, 0, 3, 0, 1, 4, 1, 5};
41
+ scs_int Ap[] = {0, 1, 3, 6, 8};
42
+ scs_float b[] = {1., 1., 0., 0., 0., 0.};
43
+ scs_float c[] = {1., 0., 0., 0.};
44
+
45
+ scs_int m = 6;
46
+ scs_int n = 4;
47
+
48
+ scs_int ell1[] = {3};
49
+ scs_int ell1_size = 1;
50
+
51
+ scs_int *d_array = SCS_NULL;
52
+ scs_int dsize = 0;
53
+ scs_int *nuc_m = SCS_NULL;
54
+ scs_int *nuc_n = SCS_NULL;
55
+ scs_int nucsize = 0;
56
+ scs_int *sl_n = SCS_NULL;
57
+ scs_int *sl_k = SCS_NULL;
58
+ scs_int sl_size = 0;
59
+
60
+ scs_float opt = 1.0;
61
+
62
+ d->m = m;
63
+ d->n = n;
64
+ d->b = b;
65
+ d->c = c;
66
+
67
+ d->A = (ScsMatrix *)scs_calloc(1, sizeof(ScsMatrix));
68
+ d->A->m = m;
69
+ d->A->n = n;
70
+ d->A->x = Ax;
71
+ d->A->i = Ai;
72
+ d->A->p = Ap;
73
+
74
+ k->z = 2;
75
+ k->d = d_array;
76
+ k->dsize = dsize;
77
+ k->nuc_m = nuc_m;
78
+ k->nuc_n = nuc_n;
79
+ k->nucsize = nucsize;
80
+ k->ell1 = ell1;
81
+ k->ell1_size = ell1_size;
82
+ k->sl_n = sl_n;
83
+ k->sl_k = sl_k;
84
+ k->sl_size = sl_size;
85
+
86
+ scs_set_default_settings(stgs);
87
+ stgs->eps_abs = 1e-9;
88
+ stgs->eps_rel = 1e-9;
89
+ stgs->eps_infeas = 1e-9;
90
+
91
+ exitflag = scs(d, k, stgs, sol, &info);
92
+
93
+ perr = SCS(dot)(d->c, sol->x, d->n) - opt;
94
+ derr = -SCS(dot)(d->b, sol->y, d->m) - opt;
95
+
96
+ scs_printf("primal obj error %4e\n", perr);
97
+ scs_printf("dual obj error %4e\n", derr);
98
+
99
+ success = ABS(perr) < 1e-4 && ABS(derr) < 1e-4 && exitflag == SCS_SOLVED;
100
+
101
+ mu_assert("test_ell1_cone: SCS failed to produce outputflag SCS_SOLVED",
102
+ success);
103
+
104
+ mu_assert("test_ell1_cone: primal feas error", ABS(info.res_pri) < 1e-6);
105
+ mu_assert("test_ell1_cone: dual feas error", ABS(info.res_dual) < 1e-6);
106
+ mu_assert("test_ell1_cone: duality gap error", ABS(info.gap) < 1e-6);
107
+
108
+ scs_free(d->A);
109
+ scs_free(k);
110
+ scs_free(stgs);
111
+ scs_free(d);
112
+ SCS(free_sol)(sol);
113
+
114
+ return 0;
115
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.6
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
@@ -39,11 +39,14 @@ files:
39
39
  - lib/scs/solver.rb
40
40
  - lib/scs/version.rb
41
41
  - vendor/scs/CITATION.cff
42
+ - vendor/scs/CLAUDE.md
42
43
  - vendor/scs/CMakeLists.txt
44
+ - vendor/scs/CONTRIBUTING.md
43
45
  - vendor/scs/LICENSE.txt
44
46
  - vendor/scs/Makefile
45
47
  - vendor/scs/README.md
46
48
  - vendor/scs/include/aa.h
49
+ - vendor/scs/include/aa_stats.h
47
50
  - vendor/scs/include/cones.h
48
51
  - vendor/scs/include/ctrlc.h
49
52
  - vendor/scs/include/glbopts.h
@@ -57,6 +60,10 @@ files:
57
60
  - vendor/scs/include/scs_work.h
58
61
  - vendor/scs/include/util.h
59
62
  - vendor/scs/include/util_spectral_cones.h
63
+ - vendor/scs/linsys/accelerate/direct/private.c
64
+ - vendor/scs/linsys/accelerate/direct/private.h
65
+ - vendor/scs/linsys/cpu/dense/private.c
66
+ - vendor/scs/linsys/cpu/dense/private.h
60
67
  - vendor/scs/linsys/cpu/direct/private.c
61
68
  - vendor/scs/linsys/cpu/direct/private.h
62
69
  - vendor/scs/linsys/cpu/indirect/private.c
@@ -119,12 +126,19 @@ files:
119
126
  - vendor/scs/src/spectral_cones/util_spectral_cones.c
120
127
  - vendor/scs/src/util.c
121
128
  - vendor/scs/test/minunit.h
129
+ - vendor/scs/test/mkl_interface_mismatch.c
130
+ - vendor/scs/test/packaging/CMakeLists.txt
131
+ - vendor/scs/test/packaging/consume.c
122
132
  - vendor/scs/test/problem_utils.h
123
133
  - vendor/scs/test/problems/complex_PSD.h
124
134
  - vendor/scs/test/problems/degenerate.h
135
+ - vendor/scs/test/problems/dense_qp.h
125
136
  - vendor/scs/test/problems/hs21_tiny_qp.h
126
137
  - vendor/scs/test/problems/hs21_tiny_qp_rw.h
138
+ - vendor/scs/test/problems/infeasible_lp.h
139
+ - vendor/scs/test/problems/infeasible_socp.h
127
140
  - vendor/scs/test/problems/infeasible_tiny_qp.h
141
+ - vendor/scs/test/problems/lp_update.h
128
142
  - vendor/scs/test/problems/max_ent
129
143
  - vendor/scs/test/problems/max_ent.h
130
144
  - vendor/scs/test/problems/mpc_bug.h
@@ -138,20 +152,38 @@ files:
138
152
  - vendor/scs/test/problems/sd_and_complex_sd.h
139
153
  - vendor/scs/test/problems/small_lp.h
140
154
  - vendor/scs/test/problems/small_qp.h
155
+ - vendor/scs/test/problems/test_box_cone.h
156
+ - vendor/scs/test/problems/test_dual_exp_cone.h
141
157
  - vendor/scs/test/problems/test_exp_cone.h
158
+ - vendor/scs/test/problems/test_inaccurate.h
159
+ - vendor/scs/test/problems/test_mixed_cones.h
160
+ - vendor/scs/test/problems/test_normalize_roundtrip.h
161
+ - vendor/scs/test/problems/test_power_cone.h
142
162
  - vendor/scs/test/problems/test_prob_from_data_file.h
163
+ - vendor/scs/test/problems/test_psd_metric.h
164
+ - vendor/scs/test/problems/test_psd_n1.h
165
+ - vendor/scs/test/problems/test_root_plus.h
166
+ - vendor/scs/test/problems/test_rw_settings.h
167
+ - vendor/scs/test/problems/test_soc_sizes.h
168
+ - vendor/scs/test/problems/test_solver_options.h
143
169
  - vendor/scs/test/problems/test_validation.h
170
+ - vendor/scs/test/problems/test_zero_cone.h
171
+ - vendor/scs/test/problems/unbounded_lp.h
172
+ - vendor/scs/test/problems/unbounded_socp.h
144
173
  - vendor/scs/test/problems/unbounded_tiny_qp.h
145
174
  - vendor/scs/test/random_socp_prob.c
146
175
  - vendor/scs/test/rng.h
147
176
  - vendor/scs/test/run_from_file.c
148
177
  - vendor/scs/test/run_tests.c
178
+ - vendor/scs/test/rw_settings.c
149
179
  - vendor/scs/test/spectral_cones_problems/exp_design.h
150
180
  - vendor/scs/test/spectral_cones_problems/graph_partitioning.h
151
181
  - vendor/scs/test/spectral_cones_problems/robust_pca.h
152
182
  - vendor/scs/test/spectral_cones_problems/several_logdet_cones.h
153
183
  - vendor/scs/test/spectral_cones_problems/several_nuc_cone.h
154
184
  - vendor/scs/test/spectral_cones_problems/several_sum_largest.h
185
+ - vendor/scs/test/spectral_cones_problems/test_ell1_and_nuc.h
186
+ - vendor/scs/test/spectral_cones_problems/test_ell1_cone.h
155
187
  homepage: https://github.com/ankane/scs-ruby
156
188
  licenses:
157
189
  - MIT
@@ -163,14 +195,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
163
195
  requirements:
164
196
  - - ">="
165
197
  - !ruby/object:Gem::Version
166
- version: '3.1'
198
+ version: '3.3'
167
199
  required_rubygems_version: !ruby/object:Gem::Requirement
168
200
  requirements:
169
201
  - - ">="
170
202
  - !ruby/object:Gem::Version
171
203
  version: '0'
172
204
  requirements: []
173
- rubygems_version: 4.0.3
205
+ rubygems_version: 4.0.16
174
206
  specification_version: 4
175
207
  summary: SCS - the splitting conic solver - for Ruby
176
208
  test_files: []