Fix docs of supported sparse backends for mixed_precision_solves option

- Also adds documentation of mixed precision solves to Sphinx docs.
- Fix reference to Sphinx theme used (RTD not better).
- Fix NOTE syntax in use_explicit_schur_complement Sphinx docs.

Change-Id: I7bdac0f07eb737f49b05e3fcaa3eebd087355d2d
diff --git a/docs/source/installation.rst b/docs/source/installation.rst
index 7f49783..a924d95 100644
--- a/docs/source/installation.rst
+++ b/docs/source/installation.rst
@@ -701,8 +701,8 @@
 
 #. ``BUILD_DOCUMENTATION [Default: OFF]``: Use this to enable building
    the documentation, requires `Sphinx <http://sphinx-doc.org/>`_ and
-   the `sphinx-better-theme
-   <https://pypi.python.org/pypi/sphinx-better-theme>`_ package
+   the `sphinx-rtd-theme
+   <https://pypi.org/project/sphinx-rtd-theme/>`_ package
    available from the Python package index. In addition, ``make
    ceres_docs`` can be used to build only the documentation.
 
diff --git a/docs/source/nnls_solving.rst b/docs/source/nnls_solving.rst
index 5ee0b03..3c8ecbb 100644
--- a/docs/source/nnls_solving.rst
+++ b/docs/source/nnls_solving.rst
@@ -1408,7 +1408,7 @@
    computed Schur complement. This can improve the performance of the
    ``ITERATIVE_SCHUR`` solver significantly.
 
-   .. NOTE:
+   .. NOTE::
 
      This option can only be used with the ``SCHUR_JACOBI``
      preconditioner.
@@ -1453,6 +1453,36 @@
 
    This setting only affects the `SPARSE_NORMAL_CHOLESKY` solver.
 
+.. member:: bool Solver::Options::use_mixed_precision_solves
+
+   Default: ``false``
+
+   .. NOTE::
+
+     This feature is EXPERIMENTAL and under development, use at your
+     own risk!
+
+   If true, the Gauss-Newton matrix is computed in *double* precision, but
+   its factorization is computed in **single** precision. This can result in
+   significant time and memory savings at the cost of some accuracy in the
+   Gauss-Newton step. Iterative refinement is used to recover some
+   of this accuracy back.
+
+   If ``use_mixed_precision_solves`` is true, we recommend setting
+   ``max_num_refinement_iterations`` to 2-3.
+
+   This option is currently only available if
+   ``sparse_linear_algebra_library_type`` is ``EIGEN_SPARSE`` or
+   ``ACCELERATE_SPARSE``, and ``linear_solver_type`` is
+   ``SPARSE_NORMAL_CHOLESKY`` or ``SPARSE_SCHUR``.
+
+.. member:: int Solver::Options::max_num_refinement_iterations
+
+   Default: ``0``
+
+   Number steps of the iterative refinement process to run when
+   computing the Gauss-Newton step, see ``use_mixed_precision_solves``.
+
 .. member:: int Solver::Options::min_linear_solver_iterations
 
    Default: ``0``
diff --git a/include/ceres/solver.h b/include/ceres/solver.h
index 61b8dd5..74fb300 100644
--- a/include/ceres/solver.h
+++ b/include/ceres/solver.h
@@ -536,8 +536,9 @@
     // max_num_refinement_iterations to 2-3.
     //
     // NOTE2: The following two options are currently only applicable
-    // if sparse_linear_algebra_library_type is EIGEN_SPARSE and
-    // linear_solver_type is SPARSE_NORMAL_CHOLESKY, or SPARSE_SCHUR.
+    // if sparse_linear_algebra_library_type is EIGEN_SPARSE or
+    // ACCELERATE_SPARSE, and linear_solver_type is SPARSE_NORMAL_CHOLESKY
+    // or SPARSE_SCHUR.
     bool use_mixed_precision_solves = false;
 
     // Number steps of the iterative refinement process to run when