Squashed 'third_party/osqp/' content from commit 33454b3e23

Change-Id: I056df0582ca06664e86554c341a94c47ab932001
git-subtree-dir: third_party/osqp
git-subtree-split: 33454b3e236f1f44193bfbbb6b8c8e71f8f04e9a
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/docs/interfaces/solver_settings.rst b/docs/interfaces/solver_settings.rst
new file mode 100644
index 0000000..ba3abc8
--- /dev/null
+++ b/docs/interfaces/solver_settings.rst
@@ -0,0 +1,73 @@
+.. _solver_settings :
+
+Solver settings
+---------------
+
+The solver settings are displayed in the following table. The settings marked with * can be changed without running the setup method again.
+
+.. tabularcolumns:: |p{4.5cm}|p{3.5cm}|p{6.5cm}|L|
+
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| Argument                       | Description                                                 | Allowed values                                               | Default value   |
++================================+=============================================================+==============================================================+=================+
+| :code:`rho` *                  | ADMM rho step                                               | 0 < :code:`rho`                                              | 0.1             |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`sigma`                  | ADMM sigma step                                             | 0 < :code:`sigma`                                            | 1e-06           |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`max_iter` *             | Maximum number of iterations                                | 0 < :code:`max_iter` (integer)                               | 4000            |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`eps_abs` *              | Absolute tolerance                                          | 0 <= :code:`eps_abs`                                         | 1e-03           |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`eps_rel` *              | Relative tolerance                                          | 0 <= :code:`eps_rel`                                         | 1e-03           |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`eps_prim_inf` *         | Primal infeasibility tolerance                              | 0 <= :code:`eps_prim_inf`                                    | 1e-04           |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`eps_dual_inf` *         | Dual infeasibility tolerance                                | 0 <= :code:`eps_dual_inf`                                    | 1e-04           |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`alpha` *                | ADMM overrelaxation parameter                               | 0 < :code:`alpha` < 2                                        | 1.6             |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`linsys_solver`          | Linear systems solver type                                  | See :ref:`linear_system_solvers_setting`                     | qdldl           |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`delta` *                | Polishing regularization parameter                          | 0 < :code:`delta`                                            | 1e-06           |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`polish` *               | Perform polishing                                           | True/False                                                   | False           |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`polish_refine_iter` *   | Refinement iterations in polish                             | 0 < :code:`polish_refine_iter` (integer)                     | 3               |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`verbose` *              | Print output                                                | True/False                                                   | True            |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`scaled_termination` *   | Scaled termination conditions                               | True/False                                                   | False           |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`check_termination` *    | Check termination interval                                  | 0 (disabled) or 0 < :code:`check_termination` (integer)      | 25              |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`warm_start` *           | Perform warm starting                                       | True/False                                                   | True            |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`scaling`                | Number of scaling iterations                                | 0 (disabled) or 0 < :code:`scaling` (integer)                | 10              |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`adaptive_rho`           | Adaptive rho                                                | True/False                                                   | True            |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`adaptive_rho_interval`  | Adaptive rho interval                                       | 0 (automatic) or 0 < :code:`adaptive_rho_interval` (integer) | 0               |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`adaptive_rho_tolerance` | Tolerance for adapting rho                                  | 1 <= :code:`adaptive_rho_tolerance`                          | 5               |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`adaptive_rho_fraction`  | Adaptive rho interval as fraction of setup time (auto mode) | 0 < :code:`adaptive_rho_fraction`                            | 0.4             |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+| :code:`time_limit` *           | Run time limit in seconds                                   | 0 (disabled) or 0 <= :code:`time_limit`                      | 0               |
++--------------------------------+-------------------------------------------------------------+--------------------------------------------------------------+-----------------+
+
+The boolean values :code:`True/False` are defined as :code:`1/0` in the C interfaces.
+
+
+.. The infinity values correspond to:
+..
+.. +----------+--------------------+
+.. | Language | Value              |
+.. +==========+====================+
+.. | C        | :code:`OSQP_INFTY` |
+.. +----------+--------------------+
+.. | Python   | :code:`numpy.inf`  |
+.. +----------+--------------------+
+.. | Matlab   | :code:`Inf`        |
+.. +----------+--------------------+
+.. | Julia    | :code:`Inf`        |
+.. +----------+--------------------+