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/codegen/index.rst b/docs/codegen/index.rst
new file mode 100644
index 0000000..d9ebdc1
--- /dev/null
+++ b/docs/codegen/index.rst
@@ -0,0 +1,46 @@
+Code generation
+===============
+
+OSQP can generate tailored C code that compiles into a fast and reliable solver
+for the given family of QP problems in which the problem data, but not its
+dimensions, change between problem instances.
+
+
+The generated code is:
+
+.. glossary::
+
+      Malloc-free
+          It does not perform any dynamic memory allocation.
+
+      Library-free
+          It is not linked to any external library.
+
+      Division-free
+          There are no division required in the ADMM algorithm
+
+
+We make a distinction between two cases depending on which of the data are to be
+treated as parameters.
+
+.. glossary::
+
+    Vectors as parameters
+        Vectors :math:`q`, :math:`l` and :math:`u` can change between problem instances.
+        This corresponds to the compiler flag :code:`EMBEDDED=1`.
+        :math:`\rho` adaptation is not enabled. 
+        The generated code is division-free and has a very small footprint.
+
+    Matrices as parameters
+        Both vectors :math:`q`, :math:`l`, :math:`u` and values in matrices
+        :math:`P` and :math:`A` can change between problem instances.
+        This corresponds to the compiler flag :code:`EMBEDDED=2`.
+        :math:`\rho` adaptation is enabled but the frequency does not rely on any timing. 
+        We assume that the sparsity patterns of :math:`P` and :math:`A` are fixed.
+
+
+.. toctree::
+   :maxdepth: 1
+   :glob:
+
+   *