  UltimateKalman is a flexible linear Kalman filter and smoother implemented in
three popular programming languages: MATLAB, C, and Java. UltimateKalman is a
slight simplification and slight generalization of an elegant Kalman filter and
smoother that was proposed in 1977 by Paige and Saunders. Their algorithm
appears to be numerically superior and more flexible than other Kalman filters
and smoothers, but curiously has never been implemented or used before.
UltimateKalman is flexible: it can easily handle time-dependent problems,
problems with state vectors whose dimensions vary from step to step, problems
with varying number of observations in different steps (or no observations at
all in some steps), and problems in which the expectation of the initial state
is unknown. The programming interface of UltimateKalman is broken into simple
building blocks that can be used to construct filters, single or multi-step
predictors, multi-step or whole-track smoothers, and combinations. The paper
describes the algorithm and its implementation as well as with a test suite of
examples and tests.
