scs 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/LICENSE.txt +1 -1
- data/README.md +1 -1
- data/lib/scs/ffi.rb +2 -2
- data/lib/scs/version.rb +1 -1
- data/lib/scs.rb +3 -3
- data/vendor/scs/CITATION.cff +2 -2
- data/vendor/scs/CMakeLists.txt +305 -171
- data/vendor/scs/Makefile +44 -19
- data/vendor/scs/README.md +1 -1
- data/vendor/scs/include/glbopts.h +34 -14
- data/vendor/scs/include/linsys.h +8 -8
- data/vendor/scs/include/scs.h +6 -2
- data/vendor/scs/include/scs_blas.h +4 -0
- data/vendor/scs/include/scs_types.h +3 -1
- data/vendor/scs/include/scs_work.h +9 -8
- data/vendor/scs/include/util.h +1 -1
- data/vendor/scs/linsys/cpu/direct/private.c +32 -153
- data/vendor/scs/linsys/cpu/direct/private.h +6 -6
- data/vendor/scs/linsys/cpu/indirect/private.c +9 -22
- data/vendor/scs/linsys/cpu/indirect/private.h +4 -2
- data/vendor/scs/linsys/csparse.c +140 -12
- data/vendor/scs/linsys/csparse.h +10 -17
- data/vendor/scs/linsys/gpu/gpu.c +4 -4
- data/vendor/scs/linsys/gpu/gpu.h +1 -1
- data/vendor/scs/linsys/gpu/indirect/private.c +15 -26
- data/vendor/scs/linsys/mkl/direct/private.c +182 -0
- data/vendor/scs/linsys/mkl/direct/private.h +38 -0
- data/vendor/scs/linsys/scs_matrix.c +11 -5
- data/vendor/scs/scs.mk +40 -27
- data/vendor/scs/src/cones.c +17 -161
- data/vendor/scs/src/exp_cone.c +399 -0
- data/vendor/scs/src/linalg.c +17 -3
- data/vendor/scs/src/normalize.c +4 -2
- data/vendor/scs/src/rw.c +107 -38
- data/vendor/scs/src/scs.c +103 -69
- data/vendor/scs/src/util.c +12 -3
- data/vendor/scs/test/minunit.h +2 -1
- data/vendor/scs/test/problem_utils.h +2 -1
- data/vendor/scs/test/problems/hs21_tiny_qp.h +1 -1
- data/vendor/scs/test/problems/hs21_tiny_qp_rw.h +8 -3
- data/vendor/scs/test/problems/max_ent +0 -0
- data/vendor/scs/test/problems/max_ent.h +8 -0
- data/vendor/scs/test/problems/mpc_bug.h +19 -0
- data/vendor/scs/test/problems/mpc_bug1 +0 -0
- data/vendor/scs/test/problems/mpc_bug2 +0 -0
- data/vendor/scs/test/problems/mpc_bug3 +0 -0
- data/vendor/scs/test/problems/random_prob.h +2 -43
- data/vendor/scs/test/problems/rob_gauss_cov_est.h +7 -2
- data/vendor/scs/test/problems/test_exp_cone.h +84 -0
- data/vendor/scs/test/problems/test_prob_from_data_file.h +73 -0
- data/vendor/scs/test/run_from_file.c +7 -1
- data/vendor/scs/test/run_tests.c +25 -9
- metadata +14 -3
data/vendor/scs/Makefile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# MAKEFILE for scs
|
2
2
|
include scs.mk
|
3
3
|
|
4
|
-
SCS_OBJECTS = src/util.o src/cones.o src/aa.o src/rw.o src/linalg.o src/ctrlc.o src/scs_version.o src/normalize.o
|
4
|
+
SCS_OBJECTS = src/util.o src/cones.o src/exp_cone.o src/aa.o src/rw.o src/linalg.o src/ctrlc.o src/scs_version.o src/normalize.o
|
5
5
|
SCS_O = src/scs.o
|
6
6
|
SCS_INDIR_O = src/scs_indir.o
|
7
7
|
|
@@ -19,7 +19,7 @@ TARGETS = $(OUT)/demo_socp_indirect $(OUT)/demo_socp_direct $(OUT)/run_from_file
|
|
19
19
|
default: $(TARGETS) $(OUT)/libscsdir.a $(OUT)/libscsindir.a $(OUT)/libscsdir.$(SHARED) $(OUT)/libscsindir.$(SHARED)
|
20
20
|
@echo "****************************************************************************************"
|
21
21
|
@echo "Successfully compiled scs, copyright Brendan O'Donoghue 2012."
|
22
|
-
@echo "To test,
|
22
|
+
@echo "To test, run 'make test' and then '$(OUT)/run_tests_direct'."
|
23
23
|
@echo "**********************************************************************************"
|
24
24
|
ifneq ($(USE_LAPACK), 0)
|
25
25
|
@echo "Compiled with blas and lapack, can solve LPs, SOCPs, SDPs, ECPs, and PCPs"
|
@@ -41,6 +41,7 @@ $(SCS_INDIR_O): src/scs.c $(INC_FILES)
|
|
41
41
|
|
42
42
|
src/util.o : src/util.c $(INC_FILES)
|
43
43
|
src/cones.o : src/cones.c $(INC_FILES)
|
44
|
+
src/exp_cone.o : src/exp_cone.c $(INC_FILES)
|
44
45
|
src/aa.o : src/aa.c $(INC_FILES)
|
45
46
|
src/rw.o : src/rw.c $(INC_FILES)
|
46
47
|
src/linalg.o: src/linalg.c $(INC_FILES)
|
@@ -49,6 +50,7 @@ src/scs_version.o: src/scs_version.c $(INC_FILES)
|
|
49
50
|
|
50
51
|
$(DIRSRC)/private.o: $(DIRSRC)/private.c $(DIRSRC)/private.h
|
51
52
|
$(INDIRSRC)/indirect/private.o: $(INDIRSRC)/private.c $(INDIRSRC)/private.h
|
53
|
+
$(MKLSRC)/private.o: $(MKLSRC)/private.c $(MKLSRC)/private.h
|
52
54
|
$(LINSYS)/scs_matrix.o: $(LINSYS)/scs_matrix.c $(LINSYS)/scs_matrix.h
|
53
55
|
$(LINSYS)/csparse.o: $(LINSYS)/csparse.c $(LINSYS)/csparse.h
|
54
56
|
|
@@ -62,45 +64,68 @@ $(OUT)/libscsindir.a: $(SCS_INDIR_O) $(SCS_OBJECTS) $(INDIRSRC)/private.o $(LINS
|
|
62
64
|
$(ARCHIVE) $@ $^
|
63
65
|
- $(RANLIB) $@
|
64
66
|
|
67
|
+
$(OUT)/libscsmkl.a: $(SCS_O) $(SCS_OBJECTS) $(MKLSRC)/private.o $(LINSYS)/scs_matrix.o $(LINSYS)/csparse.o
|
68
|
+
mkdir -p $(OUT)
|
69
|
+
$(ARCHIVE) $@ $^
|
70
|
+
- $(RANLIB) $@
|
71
|
+
|
65
72
|
$(OUT)/libscsdir.$(SHARED): $(SCS_O) $(SCS_OBJECTS) $(DIRSRC)/private.o $(AMD_OBJS) $(LDL_OBJS) $(LINSYS)/scs_matrix.o $(LINSYS)/csparse.o
|
66
73
|
mkdir -p $(OUT)
|
67
|
-
$(CC) $(CFLAGS) -shared -Wl,$(SONAME),$(@:$(OUT)/%=%) -o $@ $^ $(LDFLAGS)
|
74
|
+
$(CC) $(CFLAGS) -shared -Wl,$(SONAME),$(@:$(OUT)/%=%) -o $@ $^ $(LDFLAGS) $(BLASLDFLAGS)
|
68
75
|
|
69
76
|
$(OUT)/libscsindir.$(SHARED): $(SCS_INDIR_O) $(SCS_OBJECTS) $(INDIRSRC)/private.o $(LINSYS)/scs_matrix.o $(LINSYS)/csparse.o
|
70
77
|
mkdir -p $(OUT)
|
71
|
-
$(CC) $(CFLAGS) -shared -Wl,$(SONAME),$(@:$(OUT)/%=%) -o $@ $^ $(LDFLAGS)
|
78
|
+
$(CC) $(CFLAGS) -shared -Wl,$(SONAME),$(@:$(OUT)/%=%) -o $@ $^ $(LDFLAGS) $(BLASLDFLAGS)
|
79
|
+
|
80
|
+
$(OUT)/libscsmkl.$(SHARED): $(SCS_O) $(SCS_OBJECTS) $(MKLSRC)/private.o $(LINSYS)/scs_matrix.o $(LINSYS)/csparse.o
|
81
|
+
mkdir -p $(OUT)
|
82
|
+
$(CC) $(CFLAGS) -shared -Wl,$(SONAME),$(@:$(OUT)/%=%) -o $@ $^ $(LDFLAGS) $(MKLFLAGS)
|
72
83
|
|
73
84
|
$(OUT)/demo_socp_direct: test/random_socp_prob.c $(OUT)/libscsdir.a
|
74
|
-
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
85
|
+
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(BLASLDFLAGS)
|
75
86
|
|
76
87
|
$(OUT)/demo_socp_indirect: test/random_socp_prob.c $(OUT)/libscsindir.a
|
77
|
-
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
88
|
+
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(BLASLDFLAGS)
|
89
|
+
|
90
|
+
$(OUT)/demo_socp_mkl: test/random_socp_prob.c $(OUT)/libscsmkl.a
|
91
|
+
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(MKLFLAGS)
|
78
92
|
|
79
93
|
$(OUT)/run_from_file_direct: test/run_from_file.c $(OUT)/libscsdir.a
|
80
|
-
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
94
|
+
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(BLASLDFLAGS)
|
81
95
|
|
82
96
|
$(OUT)/run_from_file_indirect: test/run_from_file.c $(OUT)/libscsindir.a
|
83
|
-
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
97
|
+
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(BLASLDFLAGS)
|
84
98
|
|
85
99
|
$(OUT)/run_from_file_gpu_indirect: test/run_from_file.c $(OUT)/libscsgpuindir.a
|
86
|
-
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(CULDFLAGS)
|
100
|
+
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(BLASLDFLAGS) $(CULDFLAGS)
|
87
101
|
|
88
102
|
# basic testing
|
89
103
|
.PHONY: test
|
90
104
|
test: $(OUT)/run_tests_indirect $(OUT)/run_tests_direct
|
91
105
|
$(OUT)/run_tests_indirect: test/run_tests.c $(OUT)/libscsindir.a
|
92
|
-
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) -Itest
|
106
|
+
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(BLASLDFLAGS) -Itest
|
93
107
|
$(OUT)/run_tests_direct: test/run_tests.c $(OUT)/libscsdir.a
|
94
|
-
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) -Itest
|
108
|
+
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(BLASLDFLAGS) -Itest
|
109
|
+
$(OUT)/run_tests_mkl: test/run_tests.c $(OUT)/libscsmkl.a
|
110
|
+
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(MKLFLAGS) -Itest
|
111
|
+
|
95
112
|
|
96
113
|
.PHONY: test_gpu
|
97
114
|
test_gpu: $(OUT)/run_tests_gpu_indirect # $(OUT)/run_tests_gpu_direct
|
98
115
|
|
116
|
+
.PHONY: mkl
|
117
|
+
mkl: mklroot $(OUT)/libscsmkl.a $(OUT)/libscsmkl.$(SHARED) $(OUT)/run_tests_mkl $(OUT)/demo_socp_mkl
|
118
|
+
mklroot:
|
119
|
+
ifndef MKLROOT
|
120
|
+
$(error MKLROOT is undefined, set MKLROOT to the MKL install location)
|
121
|
+
endif
|
122
|
+
|
123
|
+
|
99
124
|
$(OUT)/run_tests_gpu_indirect: test/run_tests.c $(OUT)/libscsgpuindir.a
|
100
|
-
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(CULDFLAGS) -Itest
|
125
|
+
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(BLASLDFLAGS) $(CULDFLAGS) -Itest
|
101
126
|
|
102
127
|
# $(OUT)/run_tests_gpu_direct: test/run_tests.c $(OUT)/libscsgpudir.a
|
103
|
-
# $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(CULDFLAGS) -Itest
|
128
|
+
# $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(BLASLDFLAGS) $(CULDFLAGS) -Itest
|
104
129
|
|
105
130
|
# REQUIRES GPU AND CUDA INSTALLED
|
106
131
|
gpu: gpu_indirect # gpu_direct
|
@@ -119,16 +144,16 @@ $(GPUINDIR)/private.o: $(GPUINDIR)/private.c
|
|
119
144
|
|
120
145
|
# $(OUT)/libscsgpudir.$(SHARED): $(SCS_O) $(SCS_OBJECTS) $(GPUDIR)/private.o $(AMD_OBJS) $(LINSYS)/scs_matrix.o $(LINSYS)/gpu/gpu.o
|
121
146
|
# mkdir -p $(OUT)
|
122
|
-
# $(CC) $(CFLAGS) -shared -Wl,$(SONAME),$(@:$(OUT)/%=%) -o $@ $^ $(LDFLAGS) $(CULDFLAGS)
|
147
|
+
# $(CC) $(CFLAGS) -shared -Wl,$(SONAME),$(@:$(OUT)/%=%) -o $@ $^ $(LDFLAGS) $(BLASLDFLAGS) $(CULDFLAGS)
|
123
148
|
|
124
149
|
# $(OUT)/libscsgpudir.a: $(SCS_INDIR_O) $(SCS_OBJECTS) $(GPUDIR)/private.o $(AMD_OBJS) $(LINSYS)/scs_matrix.o $(LINSYS)/gpu/gpu.o
|
125
150
|
# mkdir -p $(OUT)
|
126
151
|
# $(ARCHIVE) $@ $^
|
127
152
|
# - $(RANLIB) $@
|
128
153
|
|
129
|
-
$(OUT)/libscsgpuindir.$(SHARED): $(
|
154
|
+
$(OUT)/libscsgpuindir.$(SHARED): $(SCS_INDIR_O) $(SCS_OBJECTS) $(GPUINDIR)/private.o $(LINSYS)/scs_matrix.o $(LINSYS)/csparse.o $(LINSYS)/gpu/gpu.o
|
130
155
|
mkdir -p $(OUT)
|
131
|
-
$(CC) $(CFLAGS) -shared -Wl,$(SONAME),$(@:$(OUT)/%=%) -o $@ $^ $(LDFLAGS) $(CULDFLAGS)
|
156
|
+
$(CC) $(CFLAGS) -shared -Wl,$(SONAME),$(@:$(OUT)/%=%) -o $@ $^ $(LDFLAGS) $(BLASLDFLAGS) $(CULDFLAGS)
|
132
157
|
|
133
158
|
$(OUT)/libscsgpuindir.a: $(SCS_INDIR_O) $(SCS_OBJECTS) $(GPUINDIR)/private.o $(LINSYS)/scs_matrix.o $(LINSYS)/csparse.o $(LINSYS)/gpu/gpu.o
|
134
159
|
mkdir -p $(OUT)
|
@@ -136,14 +161,14 @@ $(OUT)/libscsgpuindir.a: $(SCS_INDIR_O) $(SCS_OBJECTS) $(GPUINDIR)/private.o $(L
|
|
136
161
|
- $(RANLIB) $@
|
137
162
|
|
138
163
|
# $(OUT)/demo_socp_gpu_direct: test/random_socp_prob.c $(OUT)/libscsgpudir.a
|
139
|
-
# $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(CULDFLAGS)
|
164
|
+
# $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(BLASLDFLAGS) $(CULDFLAGS)
|
140
165
|
|
141
166
|
$(OUT)/demo_socp_gpu_indirect: test/random_socp_prob.c $(OUT)/libscsgpuindir.a
|
142
|
-
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(CULDFLAGS)
|
167
|
+
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(BLASLDFLAGS) $(CULDFLAGS)
|
143
168
|
|
144
169
|
.PHONY: clean purge
|
145
170
|
clean:
|
146
|
-
@rm -rf $(TARGETS) $(SCS_O) $(SCS_INDIR_O) $(SCS_OBJECTS) $(AMD_OBJS) $(LDL_OBJS) $(LINSYS)/*.o $(DIRSRC)/*.o $(INDIRSRC)/*.o $(GPUDIR)/*.o $(GPUINDIR)/*.o $(LINSYS)/gpu/*.o
|
171
|
+
@rm -rf $(TARGETS) $(SCS_O) $(SCS_INDIR_O) $(SCS_OBJECTS) $(AMD_OBJS) $(LDL_OBJS) $(LINSYS)/*.o $(DIRSRC)/*.o $(INDIRSRC)/*.o $(MKLSRC)/*.o $(GPUDIR)/*.o $(GPUINDIR)/*.o $(LINSYS)/gpu/*.o
|
147
172
|
@rm -rf $(OUT)/*.dSYM
|
148
173
|
@rm -rf matlab/*.mex*
|
149
174
|
@rm -rf .idea
|
data/vendor/scs/README.md
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
SCS (`splitting conic solver`) is a numerical optimization package for solving
|
11
|
-
large-scale convex cone problems. The current version is `3.2.
|
11
|
+
large-scale convex cone problems. The current version is `3.2.6`.
|
12
12
|
|
13
13
|
The full documentation is available [here](https://www.cvxgrp.org/scs/).
|
14
14
|
|
@@ -12,16 +12,17 @@ extern "C" {
|
|
12
12
|
#define SCS(x) _scs_##x
|
13
13
|
#endif
|
14
14
|
|
15
|
-
/* SCS VERSION NUMBER ----------------------------------------------
|
15
|
+
/* SCS VERSION NUMBER ---------------------------------------------- */
|
16
16
|
/* string literals automatically null-terminated */
|
17
|
-
#define SCS_VERSION ("3.2.
|
17
|
+
#define SCS_VERSION ("3.2.6")
|
18
18
|
|
19
19
|
/* verbosity level */
|
20
20
|
#ifndef VERBOSITY
|
21
21
|
#define VERBOSITY (0)
|
22
22
|
#endif
|
23
23
|
|
24
|
-
/* DEFAULT SOLVER PARAMETERS AND SETTINGS --------------------------
|
24
|
+
/* DEFAULT SOLVER PARAMETERS AND SETTINGS -------------------------- */
|
25
|
+
/* If you update any of these you must update the documentation manually */
|
25
26
|
#define MAX_ITERS (100000)
|
26
27
|
#define EPS_REL (1E-4)
|
27
28
|
#define EPS_ABS (1E-4)
|
@@ -38,15 +39,15 @@ extern "C" {
|
|
38
39
|
#define WRITE_DATA_FILENAME (0)
|
39
40
|
#define LOG_CSV_FILENAME (0)
|
40
41
|
#define TIME_LIMIT_SECS (0.)
|
41
|
-
|
42
|
-
|
42
|
+
/* Tolerance to check negativity condition for infeasibility */
|
43
|
+
#define INFEAS_NEGATIVITY_TOL (1e-9)
|
44
|
+
/* redefine printfs as needed */
|
45
|
+
#if NO_PRINTING > 0 /* Disable all printing */
|
46
|
+
#define scs_printf(...) /* No-op */
|
47
|
+
#else
|
43
48
|
#ifdef MATLAB_MEX_FILE
|
44
49
|
#include "mex.h"
|
45
50
|
#define scs_printf mexPrintf
|
46
|
-
#define scs_free mxFree
|
47
|
-
#define scs_malloc mxMalloc
|
48
|
-
#define scs_calloc mxCalloc
|
49
|
-
#define scs_realloc mxRealloc
|
50
51
|
#elif defined PYTHON
|
51
52
|
#include <Python.h>
|
52
53
|
/* see:
|
@@ -58,6 +59,27 @@ extern "C" {
|
|
58
59
|
PySys_WriteStdout(__VA_ARGS__); \
|
59
60
|
PyGILState_Release(gilstate); \
|
60
61
|
}
|
62
|
+
#elif defined R_LANG
|
63
|
+
#include <R_ext/Print.h> /* Rprintf etc */
|
64
|
+
#include <stdio.h>
|
65
|
+
#include <stdlib.h>
|
66
|
+
#define scs_printf Rprintf
|
67
|
+
#else
|
68
|
+
#include <stdio.h>
|
69
|
+
#include <stdlib.h>
|
70
|
+
#define scs_printf printf
|
71
|
+
#endif
|
72
|
+
#endif
|
73
|
+
|
74
|
+
/* redefine memory allocators as needed */
|
75
|
+
#ifdef MATLAB_MEX_FILE
|
76
|
+
#include "mex.h"
|
77
|
+
#define scs_free mxFree
|
78
|
+
#define scs_malloc mxMalloc
|
79
|
+
#define scs_calloc mxCalloc
|
80
|
+
#define scs_realloc mxRealloc
|
81
|
+
#elif defined PYTHON
|
82
|
+
#include <Python.h>
|
61
83
|
#if PY_MAJOR_VERSION >= 3
|
62
84
|
#define scs_free PyMem_RawFree
|
63
85
|
#define scs_malloc PyMem_RawMalloc
|
@@ -74,10 +96,8 @@ static inline void *scs_calloc(size_t count, size_t size) {
|
|
74
96
|
}
|
75
97
|
#endif
|
76
98
|
#elif defined R_LANG
|
77
|
-
#include <R_ext/Print.h> /* Rprintf etc */
|
78
99
|
#include <stdio.h>
|
79
100
|
#include <stdlib.h>
|
80
|
-
#define scs_printf Rprintf
|
81
101
|
#define scs_free free
|
82
102
|
#define scs_malloc malloc
|
83
103
|
#define scs_calloc calloc
|
@@ -85,7 +105,6 @@ static inline void *scs_calloc(size_t count, size_t size) {
|
|
85
105
|
#else
|
86
106
|
#include <stdio.h>
|
87
107
|
#include <stdlib.h>
|
88
|
-
#define scs_printf printf
|
89
108
|
#define scs_free free
|
90
109
|
#define scs_malloc malloc
|
91
110
|
#define scs_calloc calloc
|
@@ -144,8 +163,9 @@ static inline void *scs_calloc(size_t count, size_t size) {
|
|
144
163
|
/* how many iterations between heuristic residual rescaling */
|
145
164
|
#define RESCALING_MIN_ITERS (100)
|
146
165
|
|
147
|
-
#define
|
148
|
-
#define SAFEDIV_POS(X, Y)
|
166
|
+
#define _DIV_EPS_TOL (1E-18)
|
167
|
+
#define SAFEDIV_POS(X, Y) \
|
168
|
+
((Y) < _DIV_EPS_TOL ? ((X) / _DIV_EPS_TOL) : (X) / (Y))
|
149
169
|
|
150
170
|
#if VERBOSITY > 0
|
151
171
|
#define PRINT_INTERVAL (1)
|
data/vendor/scs/include/linsys.h
CHANGED
@@ -23,15 +23,15 @@ extern "C" {
|
|
23
23
|
* @return Linear system solver workspace.
|
24
24
|
*
|
25
25
|
*/
|
26
|
-
ScsLinSysWork *
|
27
|
-
|
26
|
+
ScsLinSysWork *scs_init_lin_sys_work(const ScsMatrix *A, const ScsMatrix *P,
|
27
|
+
const scs_float *diag_r);
|
28
28
|
|
29
29
|
/**
|
30
30
|
* Frees `ScsLinSysWork` structure and associated allocated memory.
|
31
31
|
*
|
32
32
|
* @param w Linear system private workspace.
|
33
33
|
*/
|
34
|
-
void
|
34
|
+
void scs_free_lin_sys_work(ScsLinSysWork *w);
|
35
35
|
|
36
36
|
/**
|
37
37
|
* Solves the linear system as required by SCS at each iteration:
|
@@ -48,11 +48,11 @@ void SCS(free_lin_sys_work)(ScsLinSysWork *w);
|
|
48
48
|
* @param b Right hand side, contains solution at the end.
|
49
49
|
* @param s Contains warm-start (may be NULL).
|
50
50
|
* @param tol Tolerance required for the system solve.
|
51
|
-
* @return status
|
51
|
+
* @return status != 0 indicates failure.
|
52
52
|
*
|
53
53
|
*/
|
54
|
-
scs_int
|
55
|
-
|
54
|
+
scs_int scs_solve_lin_sys(ScsLinSysWork *w, scs_float *b, const scs_float *s,
|
55
|
+
scs_float tol);
|
56
56
|
/**
|
57
57
|
* Update the linsys workspace when `R` is changed. For example, a
|
58
58
|
* direct method for solving the linear system might need to update the
|
@@ -62,14 +62,14 @@ scs_int SCS(solve_lin_sys)(ScsLinSysWork *w, scs_float *b, const scs_float *s,
|
|
62
62
|
* @param new_diag_r Updated `diag_r`, diagonal entries of R.
|
63
63
|
*
|
64
64
|
*/
|
65
|
-
void
|
65
|
+
void scs_update_lin_sys_diag_r(ScsLinSysWork *w, const scs_float *new_diag_r);
|
66
66
|
|
67
67
|
/**
|
68
68
|
* Name of the linear solver.
|
69
69
|
*
|
70
70
|
* @return name of method.
|
71
71
|
*/
|
72
|
-
const char *
|
72
|
+
const char *scs_get_lin_sys_method(void);
|
73
73
|
|
74
74
|
#ifdef __cplusplus
|
75
75
|
}
|
data/vendor/scs/include/scs.h
CHANGED
@@ -1,5 +1,9 @@
|
|
1
|
-
/*
|
2
|
-
|
1
|
+
/*
|
2
|
+
* Public header containing the outward facing SCS API. It includes all the
|
3
|
+
* input/output data structs and the API functions. Make sure this file and
|
4
|
+
* `scs_types.h` are somewhere appropriate and then use `#include "scs.h"` to
|
5
|
+
* access the SCS public API.
|
6
|
+
*/
|
3
7
|
|
4
8
|
#ifndef SCS_H_GUARD
|
5
9
|
#define SCS_H_GUARD
|
@@ -17,8 +17,10 @@ extern "C" {
|
|
17
17
|
/* single or double precision */
|
18
18
|
#ifndef SFLOAT
|
19
19
|
#define BLAS(x) d##x
|
20
|
+
#define BLASI(x) id##x
|
20
21
|
#else
|
21
22
|
#define BLAS(x) s##x
|
23
|
+
#define BLASI(x) is##x
|
22
24
|
#endif
|
23
25
|
#else
|
24
26
|
/* this extra indirection is needed for BLASSUFFIX to work correctly as a
|
@@ -28,8 +30,10 @@ extern "C" {
|
|
28
30
|
/* single or double precision */
|
29
31
|
#ifndef SFLOAT
|
30
32
|
#define BLAS(x) stitch__(d, x, BLASSUFFIX)
|
33
|
+
#define BLASI(x) stitch__(id, x, BLASSUFFIX)
|
31
34
|
#else
|
32
35
|
#define BLAS(x) stitch__(s, x, BLASSUFFIX)
|
36
|
+
#define BLASI(x) stitch__(is, x, BLASSUFFIX)
|
33
37
|
#endif
|
34
38
|
#endif
|
35
39
|
|
@@ -1,5 +1,7 @@
|
|
1
1
|
/*
|
2
|
-
*
|
2
|
+
* Pulic header including definitions of primitive types used in SCS.
|
3
|
+
* Make sure this file and `scs.h` are somewhere appropriate and then use
|
4
|
+
* `#include "scs.h"` to access the SCS public API.
|
3
5
|
*/
|
4
6
|
|
5
7
|
#ifndef SCS_TYPES_H_GUARD
|
@@ -54,14 +54,15 @@ struct SCS_WORK {
|
|
54
54
|
scs_float *g; /* g = (I + M)^{-1} h */
|
55
55
|
scs_float *lin_sys_warm_start; /* linear system warm-start (indirect only) */
|
56
56
|
scs_float *diag_r; /* vector of R matrix diagonals (affects cone proj) */
|
57
|
-
scs_float *b_orig, *c_orig;
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
57
|
+
scs_float *b_orig, *c_orig; /* original unnormalized b and c vectors */
|
58
|
+
scs_float nm_b_orig, nm_c_orig; /* unnormalized NORM(b), NORM(c) */
|
59
|
+
AaWork *accel; /* struct for acceleration workspace */
|
60
|
+
ScsData *d; /* Problem data deep copy NORMALIZED */
|
61
|
+
ScsCone *k; /* Problem cone deep copy */
|
62
|
+
ScsSettings *stgs; /* contains solver settings specified by user */
|
63
|
+
ScsLinSysWork *p; /* struct populated by linear system solver */
|
64
|
+
ScsScaling *scal; /* contains the re-scaling data */
|
65
|
+
ScsConeWork *cone_work; /* workspace for the cone projection step */
|
65
66
|
/* normalized and unnormalized residuals */
|
66
67
|
ScsResiduals *r_orig, *r_normalized;
|
67
68
|
/* track x,y,s as alg progresses, tau *not* divided out */
|
data/vendor/scs/include/util.h
CHANGED
@@ -11,7 +11,7 @@ extern "C" {
|
|
11
11
|
#include <stdlib.h>
|
12
12
|
|
13
13
|
/* timing code courtesy of A. Domahidi */
|
14
|
-
#if (defined
|
14
|
+
#if (defined NO_TIMER)
|
15
15
|
typedef void *SCS(timer);
|
16
16
|
#elif (defined _WIN32 || defined _WIN64 || defined _WINDLL)
|
17
17
|
/* Use Windows QueryPerformanceCounter for timing */
|