scs 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/README.md +42 -13
  4. data/lib/scs/ffi.rb +1 -7
  5. data/lib/scs/matrix.rb +72 -0
  6. data/lib/scs/solver.rb +19 -26
  7. data/lib/scs/version.rb +1 -1
  8. data/lib/scs.rb +1 -0
  9. data/vendor/scs/CITATION.cff +1 -1
  10. data/vendor/scs/CMakeLists.txt +55 -7
  11. data/vendor/scs/Makefile +9 -9
  12. data/vendor/scs/README.md +4 -1
  13. data/vendor/scs/include/aa.h +1 -1
  14. data/vendor/scs/include/cones.h +17 -12
  15. data/vendor/scs/include/glbopts.h +27 -66
  16. data/vendor/scs/include/linalg.h +2 -1
  17. data/vendor/scs/include/linsys.h +13 -13
  18. data/vendor/scs/include/normalize.h +7 -5
  19. data/vendor/scs/include/rw.h +3 -3
  20. data/vendor/scs/include/scs.h +85 -106
  21. data/vendor/scs/include/scs_types.h +34 -0
  22. data/vendor/scs/include/scs_work.h +80 -0
  23. data/vendor/scs/include/util.h +3 -1
  24. data/vendor/scs/linsys/cpu/direct/private.c +86 -73
  25. data/vendor/scs/linsys/cpu/direct/private.h +2 -2
  26. data/vendor/scs/linsys/cpu/indirect/private.c +42 -33
  27. data/vendor/scs/linsys/cpu/indirect/private.h +1 -2
  28. data/vendor/scs/linsys/csparse.c +3 -3
  29. data/vendor/scs/linsys/external/amd/LICENSE.txt +0 -897
  30. data/vendor/scs/linsys/external/amd/SuiteSparse_config.c +9 -7
  31. data/vendor/scs/linsys/external/amd/SuiteSparse_config.h +1 -1
  32. data/vendor/scs/linsys/external/amd/amd_order.c +5 -5
  33. data/vendor/scs/linsys/gpu/gpu.h +8 -11
  34. data/vendor/scs/linsys/gpu/indirect/private.c +72 -49
  35. data/vendor/scs/linsys/gpu/indirect/private.h +14 -13
  36. data/vendor/scs/linsys/scs_matrix.c +55 -104
  37. data/vendor/scs/linsys/scs_matrix.h +5 -4
  38. data/vendor/scs/scs.mk +1 -5
  39. data/vendor/scs/src/aa.c +13 -8
  40. data/vendor/scs/src/cones.c +197 -108
  41. data/vendor/scs/src/linalg.c +25 -0
  42. data/vendor/scs/src/normalize.c +75 -26
  43. data/vendor/scs/src/rw.c +74 -30
  44. data/vendor/scs/src/scs.c +300 -264
  45. data/vendor/scs/src/scs_version.c +8 -6
  46. data/vendor/scs/src/util.c +27 -13
  47. data/vendor/scs/test/minunit.h +6 -1
  48. data/vendor/scs/test/problem_utils.h +28 -35
  49. data/vendor/scs/test/problems/degenerate.h +2 -1
  50. data/vendor/scs/test/problems/hs21_tiny_qp.h +2 -1
  51. data/vendor/scs/test/problems/hs21_tiny_qp_rw.h +6 -2
  52. data/vendor/scs/test/problems/infeasible_tiny_qp.h +2 -1
  53. data/vendor/scs/test/problems/qafiro_tiny_qp.h +5 -4
  54. data/vendor/scs/test/problems/random_prob.h +6 -2
  55. data/vendor/scs/test/problems/rob_gauss_cov_est.h +9 -2
  56. data/vendor/scs/test/problems/small_lp.h +7 -2
  57. data/vendor/scs/test/problems/small_qp.h +387 -0
  58. data/vendor/scs/test/problems/{test_fails.h → test_validation.h} +7 -4
  59. data/vendor/scs/test/problems/unbounded_tiny_qp.h +4 -4
  60. data/vendor/scs/test/random_socp_prob.c +4 -2
  61. data/vendor/scs/test/run_from_file.c +16 -4
  62. data/vendor/scs/test/run_tests.c +23 -14
  63. metadata +10 -35
  64. data/vendor/scs/linsys/cpu/direct/private.o +0 -0
  65. data/vendor/scs/linsys/cpu/indirect/private.o +0 -0
  66. data/vendor/scs/linsys/csparse.o +0 -0
  67. data/vendor/scs/linsys/external/amd/SuiteSparse_config.o +0 -0
  68. data/vendor/scs/linsys/external/amd/amd_1.o +0 -0
  69. data/vendor/scs/linsys/external/amd/amd_2.o +0 -0
  70. data/vendor/scs/linsys/external/amd/amd_aat.o +0 -0
  71. data/vendor/scs/linsys/external/amd/amd_control.o +0 -0
  72. data/vendor/scs/linsys/external/amd/amd_defaults.o +0 -0
  73. data/vendor/scs/linsys/external/amd/amd_dump.o +0 -0
  74. data/vendor/scs/linsys/external/amd/amd_global.o +0 -0
  75. data/vendor/scs/linsys/external/amd/amd_info.o +0 -0
  76. data/vendor/scs/linsys/external/amd/amd_order.o +0 -0
  77. data/vendor/scs/linsys/external/amd/amd_post_tree.o +0 -0
  78. data/vendor/scs/linsys/external/amd/amd_postorder.o +0 -0
  79. data/vendor/scs/linsys/external/amd/amd_preprocess.o +0 -0
  80. data/vendor/scs/linsys/external/amd/amd_valid.o +0 -0
  81. data/vendor/scs/linsys/external/qdldl/qdldl.o +0 -0
  82. data/vendor/scs/linsys/scs_matrix.o +0 -0
  83. data/vendor/scs/src/aa.o +0 -0
  84. data/vendor/scs/src/cones.o +0 -0
  85. data/vendor/scs/src/ctrlc.o +0 -0
  86. data/vendor/scs/src/linalg.o +0 -0
  87. data/vendor/scs/src/normalize.o +0 -0
  88. data/vendor/scs/src/rw.o +0 -0
  89. data/vendor/scs/src/scs.o +0 -0
  90. data/vendor/scs/src/scs_indir.o +0 -0
  91. data/vendor/scs/src/scs_version.o +0 -0
  92. data/vendor/scs/src/util.o +0 -0
@@ -0,0 +1,387 @@
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 c[] = {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 = c;
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
+ ScsWork *w = scs_init(d, k, stgs);
336
+ exitflag = scs_solve(w, sol, &info, 0);
337
+ success = exitflag == SCS_SOLVED;
338
+
339
+ mu_assert("small_qp: SCS failed to produce outputflag SCS_SOLVED", success);
340
+ fail = verify_solution_correct(d, k, stgs, &info, sol, exitflag);
341
+ if (fail)
342
+ return fail;
343
+
344
+ /* test updating c */
345
+ d->c[0] = 1.0; /* set to new value */
346
+ scs_update(w, SCS_NULL, d->c);
347
+ exitflag = scs_solve(w, sol, &info, 1);
348
+ success = exitflag == SCS_SOLVED;
349
+
350
+ mu_assert("small_qp: SCS failed to produce outputflag SCS_SOLVED", success);
351
+ fail = verify_solution_correct(d, k, stgs, &info, sol, exitflag);
352
+ if (fail)
353
+ return fail;
354
+
355
+ /* test updating b */
356
+ d->b[0] = 4.0; /* set to new value */
357
+ scs_update(w, d->b, SCS_NULL);
358
+ exitflag = scs_solve(w, sol, &info, 1);
359
+ success = exitflag == SCS_SOLVED;
360
+
361
+ mu_assert("small_qp: SCS failed to produce outputflag SCS_SOLVED", success);
362
+ fail = verify_solution_correct(d, k, stgs, &info, sol, exitflag);
363
+ if (fail)
364
+ return fail;
365
+
366
+ /* revert back to original data */
367
+ d->c[0] = 0.0; /* revert to original value */
368
+ d->b[0] = 1.0; /* revert to original value */
369
+ scs_update(w, d->b, d->c);
370
+ exitflag = scs_solve(w, sol, &info, 1);
371
+ success = exitflag == SCS_SOLVED;
372
+
373
+ mu_assert("small_qp: SCS failed to produce outputflag SCS_SOLVED", success);
374
+ fail = verify_solution_correct(d, k, stgs, &info, sol, exitflag);
375
+
376
+ scs_finish(w);
377
+
378
+ scs_free(d->A);
379
+ scs_free(d->P);
380
+ scs_free(d->b);
381
+ scs_free(k);
382
+ scs_free(d);
383
+ scs_free(stgs);
384
+ SCS(free_sol)(sol);
385
+
386
+ return fail;
387
+ }
@@ -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;
@@ -36,8 +36,11 @@ static const char *test_fails(void) {
36
36
 
37
37
  mu_assert("test_fails: SCS failed to produce outputflag SCS_FAILED",
38
38
  exitflag == SCS_FAILED);
39
- SCS(free_data)(d, k, stgs);
39
+ SCS(free_data)(d);
40
+ SCS(free_cone)(k);
40
41
  SCS(free_sol)(sol);
41
42
  SCS(free_sol)(opt_sol);
43
+ scs_free(stgs);
44
+
42
45
  return 0;
43
46
  }
@@ -1,6 +1,7 @@
1
1
  #include "glbopts.h"
2
2
  #include "linalg.h"
3
3
  #include "minunit.h"
4
+ #include "problem_utils.h"
4
5
  #include "scs.h"
5
6
  #include "scs_matrix.h"
6
7
  #include "util.h"
@@ -60,7 +61,7 @@ static const char *unbounded_tiny_qp(void) {
60
61
 
61
62
  k->l = l;
62
63
 
63
- SCS(set_default_settings)(stgs);
64
+ scs_set_default_settings(stgs);
64
65
  stgs->eps_abs = 1e-6;
65
66
  stgs->eps_rel = 1e-6;
66
67
  stgs->eps_infeas = 1e-7;
@@ -73,10 +74,9 @@ static const char *unbounded_tiny_qp(void) {
73
74
  fail = verify_solution_correct(d, k, stgs, &info, sol, exitflag);
74
75
 
75
76
  SCS(free_sol)(sol);
76
- scs_free(d->A);
77
- scs_free(d->P);
78
- scs_free(k);
77
+ SCS(free_cone)(k);
79
78
  scs_free(stgs);
79
+ scs_free(d->A);
80
80
  scs_free(d);
81
81
  return fail;
82
82
  }
@@ -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
 
@@ -164,9 +164,11 @@ int main(int argc, char **argv) {
164
164
  scs_printf("scs dua obj = %4f\n", -SCS(dot)(d->b, sol->y, d->m));
165
165
  }
166
166
 
167
- SCS(free_data)(d, k, stgs);
167
+ SCS(free_data)(d);
168
+ SCS(free_cone)(k);
168
169
  SCS(free_sol)(sol);
169
170
  SCS(free_sol)(opt_sol);
171
+ scs_free(stgs);
170
172
 
171
173
  return 0;
172
174
  }
@@ -61,18 +61,30 @@ int main(int argc, char **argv) {
61
61
  for (i = 2; i < argc; i += 2) {
62
62
  if (argc < i + 2) {
63
63
  scs_printf("Incorrect number of arguments supplied\n.");
64
- SCS(free_data)(d, k, stgs);
64
+
65
+ SCS(free_data)(d);
66
+ SCS(free_cone)(k);
67
+ scs_free(stgs);
68
+
65
69
  return -1;
66
70
  }
67
71
  if (override_setting(stgs, argv[i], argv[i + 1]) < 0) {
68
72
  scs_printf("Unrecognized setting %s\n", argv[i]);
69
- SCS(free_data)(d, k, stgs);
73
+
74
+ SCS(free_data)(d);
75
+ SCS(free_cone)(k);
76
+ scs_free(stgs);
77
+
70
78
  return -1;
71
79
  }
72
80
  }
73
- sol = scs_calloc(1, sizeof(ScsSolution));
81
+ sol = (ScsSolution *)scs_calloc(1, sizeof(ScsSolution));
74
82
  scs(d, k, stgs, sol, &info);
75
- SCS(free_data)(d, k, stgs);
83
+
84
+ SCS(free_data)(d);
85
+ SCS(free_cone)(k);
76
86
  SCS(free_sol)(sol);
87
+ scs_free(stgs);
88
+
77
89
  return 0;
78
90
  }
@@ -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
  }