rts
===

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


Functions
---------

.. autoapisummary::

   smolgp.solvers.integrated.parallel.rts.ParallelIntegratedRTSSmoother
   smolgp.solvers.integrated.parallel.rts.make_associative_params
   smolgp.solvers.integrated.parallel.rts._combine_per_pair
   smolgp.solvers.integrated.parallel.rts.parallel_integrated_rts_smoother


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

.. py:function:: ParallelIntegratedRTSSmoother(kernel, t_states, stateid, instid, kalman_results)

   Wrapper for Parallel RTS smoother

   :param kernel: StateSpaceModel kernel
   :param t_states: time coordinates of the states
   :param stateid: exposure start/end indicators
   :param instid: instrument IDs
   :param kalman_results: output from Kalman filter:
                          m_pred, P_pred, m_filter, P_filter

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


.. py:function:: make_associative_params(Phi_aug, Q_aug, RESET, t_states, stateid, instid, m_pred, P_pred, m_filter, P_filter)

   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_integrated_rts_smoother(asso_params)

   Jax implementation of the parallel RTS smoother algorithm
   for integrated measurements.

   See Section 4B of Sarkka & Garcia-Fernandez (2020) for
   a detailed description of the algorithm and notation,
   and Section 3.2.4 of Rubenzahl & Hattori et al. (2025)
   for the integrated case.

   Total runtime (span) complexity is O(N/T + logT) where N is the
   number of time steps and T is the number of parallel threads.


