rts
===

.. py:module:: smolgp.solvers.parallel.rts


Functions
---------

.. autoapisummary::

   smolgp.solvers.parallel.rts.ParallelRTSSmoother
   smolgp.solvers.parallel.rts.make_associative_params
   smolgp.solvers.parallel.rts._combine_per_pair
   smolgp.solvers.parallel.rts.parallel_rts_smoother


Module Contents
---------------

.. py:function:: ParallelRTSSmoother(kernel, X, kalman_results)

   Wrapper for Parallel RTS smoother

   :param kernel: StateSpaceModel kernel
   :param X: input coordinates
   :param kalman_results: output from Kalman filter
                          these are the filtered state means (b) and covariances (C)

   :returns: g: smoothed means
             L: smoothed covariances
   :rtype: E


.. py:function:: make_associative_params(Phi, Q, t, mu, P)

   Generate the associative parameters needed for parallel RTS

   See eqns in Section 4B of Sarkka & Garcia-Fernandez (2020)


.. py:function:: _combine_per_pair(left, right)

.. py:function:: parallel_rts_smoother(asso_params)

   Jax implementation of the parallel RTS smoother algorithm

   See Section 4B of Sarkka & Garcia-Fernandez (2020) for
   a detailed description of the algorithm and notation.

   Total runtime (span) complexity is ~O(logN) where N is the number
   of time steps.


