ner_tags: O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B-TextGarbage I-TextGarbage O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O
tokens: transform Fig. A.4 Illustration of the backward interpolation. Interpolation is performed for inertial knots (bottom line) on intervals between comoving knots (top line). Interpolation weights are indicated on sloped lines connecting corresponding knots between the frames. Linear interpolation is used for internal inertial knots that lie on the internal comoving intervals with l.h.s. (solid) and r.h.s. (dotted) weights. Weights are named with respect to the comoving frame so that the line slopes are opposite to those in the forward interpolation. Constant extrapolation with unity weights is used for inertial knots exactly matching comoving knots , or for inertial knots that lie on the or intervals. Both end cases are given in gray color. Once has been fully accumulated, we compute the comoving profile ratio and keep it in memory for all frequency knots simultaneously. This makes the backward transform much easier than the forward one, because we can employ a standard interpolation. The backward transform can be directly evaluated because it is just an interpolation from the comoving frame to the inertial frame (see green notations in Fig. A.2 ): As follows from Fig. A.4 , each depends on either one or two comoving knots . It depends on two knots if the inertial knot lies on the comoving interval , where both and are internal knots (), that is, . In this case we do linear interpolation: For the backward transform, knots and weights are always denoted by and with no superscript to tell them from knots and weights for the forward transform. It depends on one knot if the inertial knot matches the comoving knot , that is, . It also depends on one knot if the inertial knot lies on intervals before or after , which means or , because we use constant extrapolation. Therefore, in those three cases: Appendix A.2: General interpolation One can perform the searches and interpolations described in Sects. A.1.4 – A.1.5 on the fly. This does not require any additional storage, and can be used for a frequency grid of arbitrary spacing, but the algorithm is slow. We call this algorithm general interpolation. Appendix A.2.1: General forward transform We search for all comoving knots that lie on the intervals and , that is, whose comoving frequencies are either between and , or between and . We take the current inertial knot and its left neighbor and right neighbor . We use and to keep the neighbors within the frequency grid range . For these knots we compute their frequencies in the comoving frame, which we denote by Therefore, the comoving knots related to the inertial knot are those whose frequencies belong to the or intervals. The knots lie either on the left or on the right side of , and they might fall outside the frequency coverage of the line. We thus have four different cases to test for and apply Eqs. ( A.15 )–(A.16). Algorithm 1 shows the forward transform in detail. Appendix A.2.2: General backward transform Algorithm 2 gives the backward transform,