diff --git a/teaching/COM303/2020/exams/final.tex b/teaching/COM303/2020/exams/final.tex
index 4200fb7..79c28fd 100644
--- a/teaching/COM303/2020/exams/final.tex
+++ b/teaching/COM303/2020/exams/final.tex
@@ -1,484 +1,484 @@
 \documentclass[a4paper,fleqn]{article}
 \usepackage[utf8]{inputenc}
 \usepackage[parfill]{parskip}
 \usepackage{cancel}
 \usepackage{defsDSPcourse}
 \usepackage{dspTricks}
 \usepackage{dspFunctions}
 \usepackage{dspBlocks}
 \usepackage{comment}
 \usepackage{pst-plot}
 \usepackage{enumitem}
 \usepackage{wrapfig}
 
 
 \makeatletter
 \def\dspLegendStyle(#1,#2)#3{%
   \rput[lt](#1,#2){{%
     \begin{tabular}{ll}
       \@dsplegendStyle#3 \@empty
     \end{tabular}}}}
 \def\@dsplegendStyle#1 #2 #3{%
    {\psline[#1](0,0.2)(2,0.2)\rule{2.5em}{0pt}} & #2\\ \space  % fbox here to have a visual test
    \ifx #3\@empty\else
     \expandafter\@dsplegendStyle
    \fi
    #3}
 \makeatother   
 
 \newif\ifanswers
 \answerstrue
 
 \begin{document}
 \newcounter{tmpc}
 
 \framebox[12cm][l]{\rule{0cm}{1cm}\LARGE }% STUDENT-NAME}
 \hfill
 \framebox[3cm][l]{\rule{0cm}{1cm}\LARGE } %SCIPER}
 \vspace{5em}
 
 \begin{center}%
   \sffamily
   {\LARGE \bfseries COM-303 - Signal Processing for Communications \\ Final Exam} \\
   \vspace{1em}
   {\large Saturday 22.08.2020, from 8h15 to 11h15, CE1515} \\
 %  {last name $\rightarrow$ room: [A to F] $\rightarrow$ \textbf{CM1120}, [A to F] $\rightarrow$ \textbf{CM1121}, [A to F] $\rightarrow$ \textbf{CM1221}}
   \vspace{1em}
 \end{center}
 
 \centerline{\rule{\textwidth}{.5pt}}
 \vspace{1em}
 {
 \LARGE \bfseries
 \begin{center}
   Verify that this exam has YOUR last name on top \\
   \vspace{1em}
   DO NOT OPEN THE EXAM UNTIL INSTRUCTED TO DO SO
 \end{center}
 }
 
 \vspace{1em}
 
 \centerline{\rule{\textwidth}{.5pt}}
 
 \vspace{1em}
 \begin{itemize}
   \item {\bf Write your name} on the top left corner of {\bf ALL the sheets you turn in}.
   \item There are 4 problems for a total of 100 points; the number of points is indicated for each problem. Read \textbf{all} the problem statements very carefully before you begin solving the exercises!
   \item Please \textbf{write your derivations clearly!}
   \item You can have two A4 sheets of \emph{handwritten} notes (front and back). Please \textbf{no photocopies, no books and no electronic devices}. Turn off your phone and store it in your bag.
   \vspace{1em}
   \item \textbf{When you are done, simply leave your solution at your place with this page on top and exit the classroom}. Do NOT bring the exam to the main desk.
 \end{itemize}
 \vspace{1em}
 \centerline{\rule{\textwidth}{.5pt}}
 \vspace{1em}
 
 
 \newpage
 
 
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    
 
 \begin{exercise}{(20 points)}
   Sketch the \textit{approximate} magnitude of the Fourier transform of the sequence
   \[
     x[n] = \begin{cases}
       \left(\frac{99}{100}\right)^n + \left(j\frac{99}{100}\right)^n & n \ge 0 \\
       0  & n < 0
       \end{cases}
   \]
 \ifanswers{\em\vspace{1em}\par{\bfseries Solution: }
   We can write 
   \[
     x[n] = \alpha^n u[n] + (j\alpha)^n u[n]
   \]
   with $\alpha = 0.99$. By linearity, therefore, 
   \[
     X(e^{j\omega}) = \frac{1}{1 - \alpha e^{-j\omega}} + \frac{1}{1 - j\alpha e^{-j\omega}}.
   \]
   
   To sketch the approximate magnitude of the DTFT first recall that $j = e^{j\frac{\pi}{2}}$, so that
   \[
     X(e^{j\omega}) = \frac{1}{1 - \alpha e^{-j\omega}} + \frac{1}{1 - \alpha e^{j\frac{\pi}{2}} e^{-j\omega}} = A(e^{j\omega}) + A(e^{j(\omega - \pi/2)})
   \]
   with
   \[
     A(e^{j\omega}) = \frac{1}{1 - \alpha e^{-j\omega}}.
   \]
   With $\alpha = 0.99$, $A(e^{j0}) = 100$ and $A(e^{j\pi/2}) = 1/1.99 \approx 0.5$. Since the decay is very fast we can write
   \[
     |X(e^{j\omega})| \approx |A(e^{j\omega})| + |A(e^{j(\omega - \pi/2)})|
   \]  
   that is, the DTFT magnitude will be approximately the superposition of two copies of $|A(e^{j\omega})|$, one centered in zero and the other in $\pi/2$. This is plotted with a black line in the figure below. 
   
   Note that the approximation is actually very good: in the figure the exact magnitude is plotted with gray dots and the curves are almost identical.
   
   \begin{center}
     \def\a{0.99 }
     \def\magA{ 180 mul cos \a -2 mul mul \a \a mul 1 add add sqrt 1 exch div }
-    \begin{dspPlot}[xtype=freq,xticks=4,ylabel={$|X(e^{j\omega})|$}]{-1,1}{0, 101}
-      \dspFunc{x \magA x 0.5 sub \magA add}
-      \dspFunc[linestyle=dotted, linecolor=gray]{x 180 mul dup 
+    \begin{dspPlot}[xtype=freq,xticks=4,yticks=25,ylabel={$|X(e^{j\omega})|$}]{-1,1}{0, 110}
+      \dspFunc[plotpoints=3000]{x \magA x 0.5 sub \magA add}
+      \dspFunc[plotpoints=3000,linestyle=dotted, linecolor=gray]{x 180 mul dup 
       cos \a mul /c exch def 
       sin \a mul /s exch def 
       /A 1 -2 c mul \a \a mul add add def
       /B 1 -2 s mul \a \a mul add add def
       1 c sub A div 1 s sub B div add dup mul
       c B div s A div sub dup mul
       add sqrt}
     \end{dspPlot}
   \end{center}
     
   \vspace{2em}
 }\else{\vspace{3em}}\fi
 \end{exercise}
 
 
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    
 \begin{exercise}{(20 points)}
   A simple discrete-time feedback loop with a single delay can be used to describe an elementary banking model where compound interest accrues yearly. Assume the following:
   \begin{itemize}
     \item you can only deposit (or withdraw) funds from your account on January 1st of each year; call the yearly deposit $x[n]$, with $n=0$ when you open the account;
     \item on December 31st each year, the bank looks at your total assets and adds $R$ percent of it to your account the next day; $R$ is the interest rate;
     \item let's assume for simplicity that you never take any money out, so your balance is always positive.
   \end{itemize}
   With these assumptions we can model $y[n]$, the amount of money in your account in year $n$, via the recursive equation
   \[
     y[n] = \alpha y[n-1] + x[n]
   \]
   where $\alpha = 1+R$.
   
   Compute the closed-form expression for $y[n]$ when $x[n] = \beta u[n]$, that is, when you deposit $\beta$ units of currency in your account every year.
 
 \ifanswers{\em\vspace{3em}\par{\bfseries Solution: }
   You can solve this problem in two ways:
   \begin{itemize}
     \item {\bf Using the z-transform:} 
   From 
   \[
     y[n] = \alpha y[n-1] + \beta u[n]
   \]
   we have
   \begin{align*}
     Y(z) &= \alpha z^{-1} Y(z) + \beta \frac{1}{1 - z^{-1}} \\
          &= \frac{\beta}{(1-\alpha z^{-1})(1 - z^{-1})}
   \end{align*}
   Using partial fraction expansion we can write
   \[
      Y(z) = \frac{A}{(1-\alpha z^{-1})} + \frac{B}{(1 - z^{-1})}
   \]
   with 
   \begin{align*}
     A+B &= \beta \\
     A + \alpha B &= 0
   \end{align*}
   This yields
   \[
      Y(z) = \frac{\alpha\beta / (\alpha -1)}{(1-\alpha z^{-1})} - \frac{\beta/(\alpha-1)}{(1 - z^{-1})}.
   \]
   The first term in the right-hand side is the $z$-transform of a causal exponential sequence with base $\alpha$ whereas the second term is the $z$-transform of the unit step and both terms are multiplied by scalars; therefore we have:
   \[
     y[n] = \frac{\beta}{\alpha - 1}\left( \alpha^{n+1} - 1 \right) u[n].
   \]  
     \item {\bf By induction:} With zero initial conditions, $y[n] = 0$ for $n < 0$; then
       \begin{align*}
         y[0] &= \alpha y[-1] + \beta = \beta \\
         y[1] &= \alpha y[0] + \beta  = \alpha\beta + \beta \\
         y[2] &= \alpha y[1] + \beta  = \alpha^2\beta + \alpha\beta + \beta \\
         \ldots \\
         y[n] &= \beta(\alpha^n + \ldots + 1) = \beta\sum_{k = 0}^{n} \alpha \\
            &= \beta \frac{\alpha^{n+1} - 1}{\alpha - 1}
       \end{align*}
   \end{itemize}
 
   \vspace{2em}
 }\else{\vspace{3em}}\fi
 \end{exercise}
 
 
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    
 \begin{exercise}{(30 points)}\label{coupled}
   Consider the causal system described by the following block diagram:
   
   \begin{center}
     \vspace{1em}
     \begin{dspBlocks}{1}{0.6}
   $x[n]~~~$ & \BDadd   & \BDdelay & \BDsplit &    & \BDadd & \BDdelay & \BDsplit & $~~~y[n]$ \\
             & \BDadd   &          &          &    &        &          & \BDsplit & \\
             &          &          &          &    &        &          &          & 
     \ncline{->}{1,1}{1,2}\ncline{->}{1,2}{1,3}
     \ncline{-}{1,3}{1,5}\ifanswers\taput{\color{gray}$w[n]$}\fi
     \ncline{->}{1,5}{1,6}\taput{$\beta$}
     \ncline{->}{1,6}{1,7}
     \ncline{->}{1,7}{1,9}
     \ncline{->}{2,4}{2,2}\taput{$\alpha$}\ncline{-}{2,8}{2,6}\taput{$\alpha$}
     \ncline{-}{3,2}{3,8}\taput{$-\beta$}
     \ncline{->}{2,2}{1,2}\ncline{->}{3,2}{2,2}
     \ncline{-}{1,8}{3,8}
     \ncline{-}{2,4}{1,4}
     \ncline{->}{2,6}{1,6}
     \end{dspBlocks}
     \vspace{1em}
   \end{center}
 
   \begin{enumerate}
     \item Compute its transfer function $H(z) = Y(z)/X(z)$.
     \item Assume now that 
       \begin{align*}
         \alpha &= r\cos\theta \\
         \beta &= r\sin\theta 
       \end{align*}
       for $0 < r < 1$ and $0 < \theta < \pi/2$. Describe the type of filter implemented by the block diagram for this choice of coefficients and sketch its pole-zero plot.
   \end{enumerate}
   
 
 \ifanswers{\em\vspace{3em}\par{\bfseries Solution: }
 
 \begin{enumerate}
  \item Consider the auxiliary signal $w[n]$, coming out of the first delay block. Using $z$-transforms we can write
  \begin{align*}
     W(z) &= z^{-1}(X(z) + \alpha W(z) - \beta Y(z)) \\
     Y(z) &= z^{-1}(\beta W(z) + \alpha Y(z))
  \end{align*} 
  From this
  \[
     W(z) = \frac{z^{-1}}{1-\alpha z^{-1}}\left( X(z) - \beta Y(z) \right)
  \]
  and, substituting back,
  \[
     Y(z) = \frac{\beta z^{-2}}{1-\alpha z^{-1}}X(z) - \frac{\beta^2 z^{-2}}{1-\alpha z^{-1}} Y(z) +\alpha z^{-1}Y(z)
  \]
  so that, finally, 
  \[
     H(z) = \frac{\beta z^{-2}}{1 - 2\alpha z^{-1} + (\alpha^2 + \beta^2)z^{-2}}.
  \]
  
  \item When $\alpha = r\cos\theta$ and $\beta = r\sin\theta$ the transfer function simplifies to 
  \[
     H(z) = \frac{r\sin\theta z^{-2}}{1 - 2 r\cos\theta z^{-1} + r^2 z^{-2}};
  \]
  except for the scalar factor $\beta = r\sin\theta$ and the delay $z^{-2}$, which do not affect the shape of the magnitude response, this is the transfer function of a simple \textbf{resonator} with a single pair of complex conjugate poles at $re^{\pm j\theta}$. Even if you do not remember the formula for the resonator, you can easily compute the poles of this filter by finding the roots of the denominator; for this multiply by $z^2$ and solve
  \[
     z^2 - 2 r\cos\theta z + r^2 z^2 = 0
  \]
  The solutions are
  \begin{align*}
     z_{1,2} &= (2r\cos\theta \pm \sqrt{4r^2(\cos^2\theta - 1)})/2 \\
       &= r(\cos\theta \pm \sqrt{-\sin^2\theta}) \\
       &= re^{\pm j\theta}
  \end{align*}
  
  The pole-zero plot is as follows:
 
   \begin{center} 
      \begin{dspPZPlot}[width=4cm,clabel={$1$},roc=0.9]{1.5}
        \dspPZ[label=none,lpos=180]{0.78, 0.45}
        \dspPZ[label=none,lpos=180]{0.78, -0.45}
        \psline[linewidth=0.8pt,linecolor=darkgray]{->}(0,0)(0.78, 0.45)
        \psarc[linewidth=0.8pt,linecolor=darkgray]{->}(0,0){0.7}{0}{30}
        \uput[0](0.4,0.2){$\theta$}
      \end{dspPZPlot}
   \end{center} 
 \end{enumerate}
 }\else{\vspace{2em}}\fi
 \end{exercise}
 
 
 
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    
 \begin{exercise}{(30 points)}
   
   In all digital architecture numbers are encoded and stored using a finite number of bits; because of this unavoidable \textit{finite precision}, care must be taken in the implementation of digital filters to prevent undesirable numerical effects that are not apparent in the basic theoretical derivation. 
   
   In this exercise we will study the effect of finite precision on the coefficients of a second order IIR filter that has a single pair of complex-conjugate poles at $p_{1,2} = re^{\pm j\theta}$. Assume the filter is implemented using a standard second-order section:
   
   \begin{center}      
     \begin{dspBlocks}{1.2}{0.4}
    $x[n]$~~~~ & \BDadd & \BDsplit & ~~~$y[n]$ \\%
               &        & \BDdelay &        &        \\%
               & \BDadd & \BDsplit &        &        \\%
               &        & \BDdelay &        &        \\%
               &        &          &        &
       \psset{arrows=->,linewidth=1.5pt}
       \ncline{1,1}{1,2}\ncline{1,2}{1,4}
       \ncline{-}{3,3}{3,2}\taput{$-a_1$} 
       \ncline{-}{5,3}{5,2}\taput{$-a_2$}
       \ncline{5,2}{3,2} \ncline{2,3}{4,3} \ncline{-}{4,3}{5,3}
       \ncline{1,3}{2,3}
       \ncline{3,2}{1,2} 
     \end{dspBlocks}
   \end{center}    
   
   \begin{enumerate}
     \item find the values of the coefficients $a_1$ and $a_2$ as a function of $r$ and $\theta$
   \end{enumerate}
     
   Assume that you want to design the filter so that $p_1$ is in the first quadrant of the complex plane. Clearly, when $a_{1,2}$ have infinite precision, you can place $p_1$ anywhere in the quadrant. 
   
   Consider however the case in which $a_{1,2}$ are expressed in signed fixed point notation using 3 bits. In practice this means that there are only seven possible values for each coefficient , namely $0$, $\pm 0.25$, $\pm 0.5$, and $\pm 0.75$.
   
   \begin{enumerate}[resume]
     \item sketch all the possible locations for $p_1$ on the first quadrant of the complex plane when this fixed-point representation is used for $a_{1,2}$; to do so, you may want to concentrate on the real part and the magnitude of the pole with respect to the value of the coefficients. You can use the first chart at the end of the exercise for the drawing and, if you don't have a calculator, know that $\sqrt{0.25} = 0.5$, $\sqrt{0.5} \approx 0.7$, and $\sqrt{0.75} \approx 0.87$.
   
     \item suppose you need to implement a filter with $p_1 = 0.9 e^{j\pi/10}$. What is the problem that you will encounter with the current fixed-point precision coefficients?
   \end{enumerate}
   
   Consider now implementing the filter using the structure shown in \textbf{Exercise~\ref{coupled}}, with $\alpha = r\cos\theta$ and $\beta = r\sin\theta$ both encoded in signed fixed point notation using 3 bits.
   
   \begin{enumerate}[resume]
     \item sketch all the possible locations for $p_1$ on the first quadrant of the complex plane in this new implementation. You can use the second chart at the end of the exercise for the drawing.
     \item is this implementation better when it comes to implementing the filter with $p_1 = 0.9 e^{j\pi/10}$?
     \item is this implementation more expensive computationally? Explain. 
   \end{enumerate}
   
   \ifanswers{}\else{
   \vspace{2em}
   \begin{center}
     \begin{tabular}{cc}      
       \psset{xAxisLabel=,yAxisLabel=,llx=-5mm,urx=1cm}
       \begin{psgraph}[axesstyle=frame,Dx=0.25,Dy=0.25,ticksize=4pt 0,subticks=4,tickstyle=inner](1,1){6cm}{6cm}
         \psarc[linecolor=gray](0,0){1}{0}{90}
       \end{psgraph}
       & 
       \psset{xAxisLabel=,yAxisLabel=,llx=-5mm,urx=1cm}
       \begin{psgraph}[axesstyle=frame,Dx=0.25,Dy=0.25,ticksize=4pt 0,subticks=4,tickstyle=inner](1,1){6cm}{6cm}
         \psarc[linecolor=gray](0,0){1}{0}{90}
       \end{psgraph}
     \end{tabular}      
     \vspace{2em}
   \end{center} 
 }\fi
 
 
 \ifanswers{\em\vspace{3em}\par{\bfseries Solution: }
 
 \begin{enumerate}
   \item The transfer function of the filter is 
   \begin{align*}
     H(z) &= \frac{1}{1 + a_1 z^{-1} + a_2 z^{-2}} \\
          &= \frac{1}{(1-p_1 z^{-1})(1-p_2 z^{-1})} =  \frac{1}{(1-re^{j\theta} z^{-1})(1-re^{-j\theta} z^{-1})} \\
          &= \frac{1}{1 - 2r\cos\theta z^{-1} + r^2 z^{-2}}
   \end{align*}
   so that the filter coefficients in the direct form implementation are 
   \begin{align*}
     a_1 &= -2r\cos\theta \\
     a_2 &= r^2
   \end{align*}
   
   \item To find all the possible locations in the first quadrant for $p_1$  you can proceed in two ways. 
   \begin{itemize}
     \item {\bf Option one: proceed geometrically:} simply note that:
       \begin{itemize}
         \item the real part of the pole is $\Re(p_1) = r\cos\theta = -a_1 / 2$
         \item the pole's magnitude is $|p_1| = r = \sqrt{a_2}$.
       \end{itemize}
       As a consequence, the only possible pole locations will be at the intersections between
       \begin{itemize} 
         \item vertical lines going through the real axis at the three possible positive values for $-a_1 / 2$ 
         \item circles centered in zero and with radius equal to one of the three possible values of $\sqrt{a_2}$. 
       \end{itemize}
       The resulting 12 possible pole locations are shown below; we do not consider the case $a_2 = 0$, for which the second-order system degenerates into a first-order one. 
       
       \hspace{1em}
       \begin{center}      
         \psset{xAxisLabel=,yAxisLabel=,llx=-5mm,urx=1cm}
         \begin{psgraph}[axesstyle=frame,Dx=0.25,Dy=0.25,ticksize=4pt 0,subticks=4,tickstyle=inner](1,1){6cm}{6cm}
           \psarc[linecolor=gray](0,0){1}{0}{90}
           \psline[linestyle=dashed](0.125,0)(0.125,1)
           \psline[linestyle=dashed](0.25,0)(0.25,1)
           \psline[linestyle=dashed](0.375,0)(0.375,1)
           \psarc[linestyle=dashed](0,0){0.5}{0}{90}
           \psarc[linestyle=dashed](0,0){0.7}{0}{90}
           \psarc[linestyle=dashed](0,0){0.86}{0}{90}
           \psdot[linewidth=3pt,linecolor=gray](-0.0, 0.7071067811865476)
           \psdot[linewidth=3pt,linecolor=gray](-0.0, 0.5)
           \psdot[linewidth=3pt,linecolor=gray](-0.0, 0.8660254037844386)
           \psdot[linewidth=3pt,linecolor=gray](0.25, 0.6614378277661477)
           \psdot[linewidth=3pt,linecolor=gray](0.25, 0.4330127018922193)
           \psdot[linewidth=3pt,linecolor=gray](0.25, 0.82915619758885)
           \psdot[linewidth=3pt,linecolor=gray](0.125, 0.6959705453537527)
           \psdot[linewidth=3pt,linecolor=gray](0.125, 0.4841229182759271)
           \psdot[linewidth=3pt,linecolor=gray](0.125, 0.8569568250501305)
           \psdot[linewidth=3pt,linecolor=gray](0.375, 0.5994789404140899)
           \psdot[linewidth=3pt,linecolor=gray](0.375, 0.33071891388307384)
           \psdot[linewidth=3pt,linecolor=gray](0.375, 0.7806247497997998)
           \rput*(0.856, 0.34){$0.9 e^{j\pi/10}$}\psdot[linewidth=2pt,linecolor=lightgray](0.856, 0.278)
         \end{psgraph}
       \end{center}      
       \hspace{1em} 
       \item {\bf Option two: proceed analytically:} although this is way more tedious, you can express the real and imaginary parts of the poles as a function of $a_{1,2}$. By setting
       \[
         1 + a_1 z^{-1} + a_2 z^{-2} = 0
       \]
       you can find that the pole in the first quadrant will have the following form:
       \[
         p_1 = -\frac{a_1}{2} + j\frac{\sqrt{4a_2 - a_1^2}}{2}.
       \]
       You can now build a table for all valid values of $a_1$ and $a_2$ and compute the approximate pole locations (again, we neglect the case $a_2 = 0$):
       
       \begin{tabular}{r||c|c|c}
             & 0.25          & 0.5          & 0.75         \\ \hline\hline
        0    & 0.5j          & 0.7j         & 0.87j        \\ \hline
       -0.5  & 0.125 + 0.48j & 0.125 + 0.7j & 0.25 + 0.86j \\ \hline
       -0.25 & 0.25 + 0.43j  & 0.25 + 0.66j & 0.25 + 0.82j \\ \hline
       -0.75 & 0.375 + 0.33j & 0.375 + 0.6j & 0.375 + 0.78j 
       \end{tabular}
     \end{itemize}
   \item Not only the pole at $0.9 e^{j\pi/10}$ cannot be implemented exactly, but the closest pole location is very far from the intended position. This shows the heavy limits of an architecture using fixed-point with a small number of bits per coefficient.
   
   \item If we use the structure in Exercise~\ref{coupled}, the real and imaginary parts of the poles are encoded directly in the filter coefficients. Therefore the pole locations will be distributed on a uniform grid like so
 
   \hspace{1em}  
   \begin{center}      
     \psset{xAxisLabel=,yAxisLabel=,llx=-5mm,urx=1cm}
     \begin{psgraph}[axesstyle=frame,Dx=0.25,Dy=0.25,ticksize=4pt 0,subticks=4,tickstyle=inner](1,1){6cm}{6cm}
       \psarc[linecolor=gray](0,0){1}{0}{90}
       \psline[linestyle=dashed](0.5,0)(0.5,1)
       \psline[linestyle=dashed](0.25,0)(0.25,1)
       \psline[linestyle=dashed](0.75,0)(0.75,1)
       \psline[linestyle=dashed](0, 0.5)(1,0.5)
       \psline[linestyle=dashed](0,0.25)(1,0.25)
       \psline[linestyle=dashed](0,0.75)(1,0.75)
       \psdot[linewidth=3pt,linecolor=gray](0, 0.5)
       \psdot[linewidth=3pt,linecolor=gray](0, 0.25)
       \psdot[linewidth=3pt,linecolor=gray](0, 0.75)
       \psdot[linewidth=3pt,linecolor=gray](0.5, 0.5)
       \psdot[linewidth=3pt,linecolor=gray](0.5, 0.25)
       \psdot[linewidth=3pt,linecolor=gray](0.5, 0.75)
       \psdot[linewidth=3pt,linecolor=gray](0.25, 0.5)
       \psdot[linewidth=3pt,linecolor=gray](0.25, 0.25)
       \psdot[linewidth=3pt,linecolor=gray](0.25, 0.75)
       \psdot[linewidth=3pt,linecolor=gray](0.75, 0.5)
       \psdot[linewidth=3pt,linecolor=gray](0.75, 0.25)
       \psdot[linewidth=3pt,linecolor=gray](0.75, 0.75)    
       \rput*(0.856, 0.34){$0.9 e^{j\pi/10}$}\psdot[linewidth=2pt,linecolor=lightgray](0.856, 0.278)
       \end{psgraph}
   \end{center}  
   \hspace{1em}    
   
   \item Although the pole at $0.9 e^{j\pi/10}$ still cannot be implemented exactly, there is now a reachable pole location that is a much closer approximation to the required value, so this implementation provides a much better result.
   
   \item The direct form implementation only requires two multiplications per output sample whereas the current implementation requires four, for a doubling of the computational cost.
 \end{enumerate}
 
   \vspace{2em}
 }\else{\vspace{3em}}\fi
 \end{exercise}
 
 \end{document}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    
 \begin{exercise}{(30 points)}
 
 \ifanswers{\em\vspace{3em}\par{\bfseries Solution: }
 
   \vspace{2em}
 }\else{}\fi
 \end{exercise}
 
 
 
diff --git a/writing/sp4comm.multipub/50-filters/00-lf-intro.tex b/writing/sp4comm.multipub/50-filters/00-lf-intro.tex
index 0e3b4e4..b5d12be 100644
--- a/writing/sp4comm.multipub/50-filters/00-lf-intro.tex
+++ b/writing/sp4comm.multipub/50-filters/00-lf-intro.tex
@@ -1,1244 +1,1062 @@
 %5a
 
 \chapter{Discrete-Time Filters}
 \label{ch:linearfilters}\label{ch:lf}
 
-The previous chapters gave us a thorough overview on both 
-the nature of discrete-time signals and on the tools used in 
-analyzing their properties. In the next few Chapters, we will 
-study the fundamental building block of any digital signal 
-processing system, that is, the linear filter. In the 
-discrete-time world, filters are nothing but procedures 
-which store and manipulate mathematically the numerical 
-samples appearing at their input and their output; in other 
-words, any discrete-time filter can be described 
-procedurally in the form of an algorithm. In the special 
-case of linear and time-invariant filters, such an algorithm 
-can be concisely described mathematically by a 
-constant-coefficient difference equation. 
+In the previous chapters we tackled discrete-time signals from an analytical point of view: we put in place a taxonomy and we described the tools used to unlock a frequency domain representation. We will now move on to the {\em processing} part of our journey and will start by introducing the most fundamental device for modifying the content of a discrete-time signal, namely, the linear time-invariant system. As we will see momentarily, LTI systems (or filters, for short) admit a full, explicit mathematical characterization of their properties -- a remarkable exception in the universe of all possible signal processing devices. Because of this, they occupy a fundamental position in the arsenal of the signal processing engineer. 
+
+In this chapter we will  begin by illustrating the fundamental properties of LTI systems and by introducing a pair of simple intuitive examples that we will use repeatedly in the rest of this book both for theoretical and for applied purposes. In the next two chapters, we will continue our exploration by looking at the algorithmic nature of practical discrete-time filters and at some of the established techniques that are used in filter design.
+
+%The previous chapters gave us a thorough overview on both 
+%the nature of discrete-time signals and on the tools used in 
+%analyzing their properties. In the next few Chapters, we will 
+%study the fundamental building block of any digital signal 
+%processing system, that is, the linear filter. In the 
+%discrete-time world, filters are nothing but procedures 
+%which store and manipulate mathematically the numerical 
+%samples appearing at their input and their output; in other 
+%words, any discrete-time filter can be described 
+%procedurally in the form of an algorithm. In the special 
+%case of linear and time-invariant filters, such an algorithm 
+%can be concisely described mathematically by a 
+%constant-coefficient difference equation. 
 
 
 \section{Linear Time-Invariant Systems}\index{system!LTI|(}
-In its most general form, a {\em discrete-time system} is a processing unit that accepts one or more discrete-time sequences as inputs and produces one or more discrete-time sequences as outputs. The inner workings of such a unit can be arbitrarily complex but a basic requirement here is that the system acts synchronously, that is, at each increment of the ``time'' index $n$ for the input sequences, a new set of results appears at the output. This is in contrast with {\em multirate}\/ systems, which we will study in Chapter~\ref{ch:mr}, where the amount of data at the input and the output is not in a one-to-one ratio.
+In its most general form, a {\em discrete-time system} is a processing unit that accepts one or more discrete-time sequences as inputs and produces one or more discrete-time sequences as outputs. The inner workings of such a device can be arbitrarily complex but a first basic requirement here is that the system acts synchronously, that is, at each increment of the ``time'' index $n$ for the input sequences, a new set of results appears at the outputs. This is in contrast with {\em multirate}\/ systems, which we will study in Chapter~\ref{ch:mr}, where the data rates at the input and at the output can differ.
 
-In rest of this chapter we will focus our attention on a special subset of discrete-time system, namely the class of single-input, single-output {\em linear and time-invariant} (LTI) systems; an equivalent name for these units is {\em discrete-time filters}\index{filter|mie}. A filter is an operator that transforms an input sequence into an output sequence:
+A special subset of discrete-time system, and the one we will focus on, is the class of single-input, single-output {\em linear and time-invariant} (LTI) systems, more commonly known as ``filters''. A discrete-time filter is an operator that transforms an input sequence into an output sequence:
 \begin{equation}
   \mathbf{y} = \mathcal{H}\mathbf{x};
 \end{equation}
-linearity and time-invariance imply that:
+linearity implies that for any signal $\mathbf{x}$ and $\mathbf{y}$ and any scalar $\alpha$ we have
 \begin{align}
-  \mathcal{H}(\mathbf{x + w}) &= \mathcal{H}\mathbf{x} + \mathcal{H}\mathbf{w} \\
-  \mathcal{H}(\mathcal{D}^k\mathbf{x}) &= \mathcal{D}^k(\mathcal{H}\mathbf{x}).
+  \mathcal{H}(\alpha\mathbf{x}) &= \alpha(\mathcal{H}\mathbf{x}) \\
+  \mathcal{H}(\mathbf{x + w}) &= \mathcal{H}\mathbf{x} + \mathcal{H}\mathbf{w}
 \end{align}
+whereas time-invariance implies that
+\begin{equation}
+  \mathcal{H}(\mathcal{D}^k\mathbf{x}) = \mathcal{D}^k(\mathcal{H}\mathbf{x})
+\end{equation}
 where $\mathcal{D}^k$ is the delay-by-$k$ operator\footnote{
   See Section~\ref{dt:notation} for a recap on the notation used for signal operators.
 }.
-In intuitive terms, linearity expresses the natural requirement that superposed inputs result in the superposition of the independent filtering of each component; an physical analogy would be that of the resonant body of a stringed instrument, where the response of plucking multiple strings should provide a sound that is the sum of the amplified version of each source. Similarly, time-invariance encodes the natural requirement that, regardless of when the system is ``turned on,'' its effects will be the same, only shifted in time. Again, this is the idealized behavior of most physical systems as well, once we neglect the change in performance due to aging of their internal components.
 
+In intuitive terms, linearity expresses the natural requirement that if we filter a source that is the combination of independent signals, the result is the superposition of what we obtain by filtering each signal independently; a physical analogy is that of, say, an amplifier connected to an electric guitar, where the sound obtained by plucking multiple strings at once is the sum of the sound of each string plucked independently. Similarly, time-invariance describes the natural requirement that, regardless of when the filter is ``switched on,'' its effects will remain the same, only shifted in time. Again, this is the idealized behavior of most physical systems such as an amplifier, once we neglect the slight changes due to the aging of the internal electronic components.
+
+Note that, as we mentioned earlier, the linearity and time invariance conditions are not always fulfilled or even desired in a processing system. A distorted electric guitar, for instance, which is the defining sound of over half a century of rock music, is achieved by processing the instrument with a highly nonlinear device. Nonlinear building blocks are used ubiquitously in communication system devices, as we will discover in the last chapter of this book; even the simplest of radio transmitters involves a time-variant operation (that is also nonlinear in the case of FM). Yet, the versatility and mathematical attractiveness of LTI systems make them an extremely fruitful case study among signal processing tools.   
+
+
+
+\subsection{Two Examples}\label{sec:lf:examples}
+
+To better understand the properties of LTI system that will be studied in the rest of the chapter, let us start with a practical example in which we want to denoise a discrete-time signal. Consider a sequence such as the one shown in Figure \ref{fig:lf:noisyUnfiltered} where a smooth ``envelope'' is corrupted by fast-varying perturbations that appear like little wiggles in the plot; we would like to smooth out the signal and recover its wiggle-free component.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{figure}[h]
+ 	\begin{dspPlot}[xticks=100,yticks=2,sidegap=0,xout=true]{-50,550}{-8, 8}
+   	\dspFuncFile[linecolor=ColorDT]{\localpath{data/filtering-example-1.txt}}
+  \end{dspPlot}
+  \caption{Portion of a discrete-time noisy signal.}\label{fig:lf:noisyUnfiltered}
+\end{figure}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\itempar{The Moving Average.}
+\label{sec:lf:MovingAverage}
+\index{moving average|(}
+An intuitive and basic approach to remove noise from data is to replace each sample by a 
+\emph{local average} of neighboring samples, which will work if the data is smooth and the noise is sufficiently independent of the data. We could for instance build a denoised sequence $\mathbf{y}$ algorithmically by computing each output sample as
+\begin{equation} \label{eq:lf:ma}
+    y[n] = \frac{1}{M}\sum_{k = 0}^{M-1} x[n-k],
+\end{equation}
+that is, by taking the average of $M$ input samples.  It is easy to verify numerically that the approach does work, and that the smoothing power of the system is dependent on $M$, as shown in Figure~\ref{fig:lf:noisyFIRFiltered}. Note that the algorithm in~(\ref{eq:lf:ma}) uses only the current and \textit{past} samples, so that it can work in ``on the fly'' by simply keeping track of the past $M-1$ input values; note also that, since the output depends only on a finite number of input samples, the algorithm exhibits so-called finite-memory effects, that is, input values farther in the past than $M$ samples do not influence the output anymore.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{figure}[p]
+ 	\begin{dspPlot}[xticks=100,yticks=2,sidegap=0,xout=true]{-50,550}{-8, 8}
+    \dspFuncFile[linecolor=ColorDT]{\localpath{data/filtering-example-2.1.txt}}
+    \rput[tr](500,7){$M=2$}
+  \end{dspPlot}
+  
+ 	\begin{dspPlot}[xticks=100,yticks=2,sidegap=0,xout=true]{-50,550}{-8, 8}
+   	\dspFuncFile[linecolor=ColorDT]{\localpath{data/filtering-example-2.2.txt}}
+    \rput[tr](500,7){$M=4$}
+  \end{dspPlot}
+
+ 	\begin{dspPlot}[xticks=100,yticks=2,sidegap=0,xout=true]{-50,550}{-8, 8}
+   	\dspFuncFile[linecolor=ColorDT]{\localpath{data/filtering-example-2.3.txt}}
+    \rput[tr](500,7){$M=12$}
+  \end{dspPlot}
+
+ 	\begin{dspPlot}[xticks=100,yticks=2,sidegap=0,xout=true]{-50,550}{-8, 8}
+   	\dspFuncFile[linecolor=ColorDT]{\localpath{data/filtering-example-2.4.txt}}
+    \rput[tr](500,7){$M=100$}
+  \end{dspPlot}
+
+  \caption{Effects of the moving average filter for different values of $M$.}\label{fig:lf:noisyFIRFiltered}
+\end{figure}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+Equation~(\ref{eq:lf:ma}) defines a linear, time-invariant transformation $\mathcal{H}$ called the \textit{moving average} (MA) filter; the LTI nature of the operation can be easily confirmed by writing the input-output relationship as 
+\begin{equation}
+  \mathcal{H}\mathbf{x} = \frac{1}{M}\sum_{k = 0}^{M-1} \mathcal{D}^k\mathbf{x}
+\end{equation}
+and noticing that it involves only sums, scalar multiplications (that is, linear operations) and delays (that is, time-invariant operations). Alternatively, we can verify the LTI properties explicitly like so:
+\[
+  (\mathcal{H}(\alpha \mathbf{x}))[n] = \frac{1}{M}\sum_{k = 0}^{M-1} \alpha x[n-k] = \alpha ((\mathcal{H}\mathbf{x})[n])
+\]
+\[
+  (\mathcal{H}(\mathbf{x + w}))[n] = \frac{1}{M}\sum_{k = 0}^{M-1} (x[n-k] + w[n-k]) = (\mathcal{H}\mathbf{x})[n] + (\mathcal{H}\mathbf{w})[n]
+\]
+\[
+  (\mathcal{H}(\mathcal{D}^m \mathbf{x}))[n] = \frac{1}{M}\sum_{k = 0}^{M-1} x[(n - m) - k] =  (\mathcal{H}\mathbf{x})[n-m]
+\]
+
+
+\itempar{The Leaky Integrator.}
+\label{sec:lf:leakyIntegrator}%
+\index{leaky integrator|(}\index{integrator!leaky}
+The moving average filter, while effective, has a computational cost that is linear in $M$, both in terms of number of operations per output sample and in terms of memory storage; since effective noise removal seems to require large values of $M$, we should be mindful of these costs. An alternative, and ``cheaper'', smoothing algorithm can be derived by writing out the formula for a moving average filter of length $M$
+\[
+    y_M[n] = \frac{1}{M}\sum_{k=0}^{M-1} x[n-k]
+\]
+and by observing that
+\begin{align*}
+    y_{M}[n] & = \frac{M-1}{M} \, y_{M-1}[n-1] + \frac{1}{M}\, x[n] \\
+             & =  \lambda y_{M-1}[n-1] + (1-\lambda ) x[n] 
+\end{align*}
+where we have defined $\lambda = (M-1)/M$. Now, as $M$ grows large, we can safely assume that the averages over $M-1$ and over $M$ points are going to be very similar; in other words, for $M$ large, we can say that $y_{M-1}[n] \approx y_{M}[n]$. This leads to the following \emph{recursive} algorithm 
+\begin{equation}\label{eq:lf:leaky}
+    y[n] = \lambda y[n-1] + (1-\lambda) x[n]
+\end{equation}
+in which the output is computed as a linear combination of the current input sample and the past \textit{output} sample and whose computational cost is fixed and very small (two multiplications and one addition). Before analyzing the structure and the implications of this new approach, we can easily verify numerically that it works; Figure~\ref{fig:lf:noisyIIRFiltered} shows the effects of the algorithm on the input sequence in Figure~\ref{fig:lf:noisyUnfiltered} for different values of $\lambda$ and we can notice that the smoothing power increases as $\lambda$ approaches unity.
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{figure}[p]
+ 	\begin{dspPlot}[xticks=100,yticks=2,sidegap=0,xout=true]{-50,550}{-8, 8}
+    \dspFuncFile[linecolor=ColorDT]{\localpath{data/filtering-example-3.1.txt}}
+    \rput[tr](500,7){$\lambda=0.2$}
+  \end{dspPlot}
+  
+ 	\begin{dspPlot}[xticks=100,yticks=2,sidegap=0,xout=true]{-50,550}{-8, 8}
+   	\dspFuncFile[linecolor=ColorDT]{\localpath{data/filtering-example-3.2.txt}}
+    \rput[tr](500,7){$\lambda=0.5$}
+  \end{dspPlot}
+
+ 	\begin{dspPlot}[xticks=100,yticks=2,sidegap=0,xout=true]{-50,550}{-8, 8}
+   	\dspFuncFile[linecolor=ColorDT]{\localpath{data/filtering-example-3.3.txt}}
+    \rput[tr](500,7){$\lambda=0.8$}
+  \end{dspPlot}
+
+ 	\begin{dspPlot}[xticks=100,yticks=2,sidegap=0,xout=true]{-50,550}{-8, 8}
+   	\dspFuncFile[linecolor=ColorDT]{\localpath{data/filtering-example-3.4.txt}}
+    \rput[tr](500,7){$\lambda=0.98$}
+  \end{dspPlot}
+
+  \caption{Effects of the leaky integrator for different values of $\lambda$.}\label{fig:lf:noisyIIRFiltered}
+\end{figure}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Equation~(\ref{eq:lf:leaky}) defines a linear, time-invariant transformation $\mathcal{H}$ called the \textit{leaky integrator}. The LTI nature of the algorithm is a bit trickier to show in this case because of the recursive nature of the filter; let's begin by asking ourselves how we are going to compute the output sequence if every output sample depends on its predecessor. Isn't this a classical chicken and egg situation? The way out of this impasse is to impose so-called \textit{zero initial conditions:} we assume there is a starting time $n_0$ at which we begin computing the output and that, for all $n < n_0$, both $y[n]$ and $x[n]$ are identically zero. With these initial conditions in place, we can first proceed to show that if $\mathbf{y} = \mathcal{H}\mathbf{x}$, then $\mathbf{y}$ is the \textit{unique} response of the system to $\mathbf{x}$. Indeed, we first observe that the equation
+\[
+  y[n] - \lambda y[n-1] - (1-\lambda)x[n] = 0
+\]
+is satisfied for all values of $n$. Assume now there were another sequence, distinct from $\mathbf{y}$, such that $\mathbf{w} = \mathcal{H}\mathbf{x}$; this implies that also
+\[
+  w[n] - \lambda w[n-1] - (1-\lambda)x[n] = 0
+\]
+is valid for all $n$ so that it must be
+\[
+  (y[n] - w[n]) = \lambda(y[n-1] - w[n-1]) \qquad \forall n.
+\]
+Because of zero initial conditions, there exists a time $n_0$ so that $y[n] = w[n] = 0$ for $n < n_0$ and therefore $y[n] = w[n]$ for all $n \ge n_0$ as well. 
+
+With this in place, and keeping $\mathbf{y} = \mathcal{H}\mathbf{x}$, consider now the response to a scaled input, $\mathbf{y}_1 = \mathcal{H}(\alpha \mathbf{x})$. We have
+\[
+  y_1[n] - \lambda y_1[n-1] - \alpha(1-\lambda)x[n] = 0 \qquad \forall n
+\]
+and, if we replace $y_1[n] = \alpha y[n]$ in the above expression, we can see that the equation is satisfied so that $\mathbf{y}_1 = \alpha \mathbf{y}$ is indeed the unique solution. With the same technique we can prove linearity with respect to the sum of two sequences and demonstrate time invariance.
+
+Finally, a word on the origin of the name ``Leaky Integrator''. We have seen in Section~\ref{sec:dt:operators} the discrete-time integration operator, defined as 
+\[
+    \left( \mathcal{S}\mathbf{x} \right)[n] = \sum_{m = -\infty}^{n} x[m];
+\]
+clearly the sequence $\mathbf{y} = \mathcal{S}\mathbf{x}$ can be computed recursively as 
+\[
+    y[n] = y[n-1] + x[n]
+\]
+where $y[n]$ represent the running total accumulated up to $n$. In the Leaky Integrator the factor $\lambda$ (which is usually close to one) acts as a ``leakage'' or ``forgetting'' factor for the running total, which is also incremented at each step not by the full value of the input sample but by a fraction $1-\lambda$ of it.
+
+
+
+, in the sense that it 
+approximates the behavior of an integrator with a leakage 
+(or forgetting) factor $\lambda$. 
+
+\begin{comment}
+
+
+
+\begin{comment}
 
 In digital filters, time-invariance implies that the input samples used to determine the output at time $n$ are at a fixed distance from $n$; visually, imagine to line up the input and output sequences and draw a pattern that connects each output sample to all the input samples used in its computation; in a time-invariant system, as you move along the time axis, the pattern is shifted but it never changes shape. For instance, here is the input-output pattern in a simple moving average filter whose output can be described by the equation $y[n] = (x[n-1] + x[n])/2$, and it is obvious that the shape remains the same for all values of $n$:
 
 \begin{center}
   \vspace{1ex}
   \footnotesize
   \begin{dspBlocks}{0.4}{1}
   $\ldots$ & $x[-4]$ & $x[-3]$ &$x[-2]$ & $x[-1]$ & $x[0]$ & $x[1]$ & $x[2]$ & $x[3]$ & $x[4]$ & $x[5]$ & $\ldots$ \\
   $\ldots$ & $y[-4]$ & $y[-3]$ &$y[-2]$ & $y[-1]$ & $y[0]$ & $y[1]$ & $y[2]$ & $y[3]$ & $y[4]$ & $y[5]$ & $\ldots$ 
   \psset{linecolor=ColorOne,linewidth=2pt}
   \ncangle[angleA=90,angleB=90,nodesepA=-1.2em,nodesepB=.2em,armB=1em]{->}{1,3}{2,3}
   \ncangle[angleA=90,angleB=90,nodesepA=-1.2em,nodesepB=.2em,armB=1em]{->}{1,2}{2,3}
   \psset{linecolor=ColorTwo}
   \ncangle[angleA=90,angleB=90,nodesepA=-1.2em,nodesepB=.2em,armB=1em]{->}{1,6}{2,6}
   \ncangle[angleA=90,angleB=90,nodesepA=-1.2em,nodesepB=.2em,armB=1em]{->}{1,5}{2,6}
   \psset{linecolor=ColorThree}
   \ncangle[angleA=90,angleB=90,nodesepA=-1.2em,nodesepB=.2em,armB=1em]{->}{1,9}{2,9}
   \ncangle[angleA=90,angleB=90,nodesepA=-1.2em,nodesepB=.2em,armB=1em]{->}{1,8}{2,9}
   \end{dspBlocks}
   \vspace{1ex}
 \end{center}
 
 By contrast, if we consider the transformation $y[n] = x[n] + x[2n]$, then the shape of the pattern changes at each step since the underlying operator is not time-invariant:
 
 \begin{center}
   \vspace{1ex}
   \footnotesize
   \begin{dspBlocks}{0.4}{1}
   $\ldots$ & $x[-4]$ & $x[-3]$ &$x[-2]$ & $x[-1]$ & $x[0]$ & $x[1]$ & $x[2]$ & $x[3]$ & $x[4]$ & $x[5]$ & $\ldots$ \\
   $\ldots$ & $y[-4]$ & $y[-3]$ &$y[-2]$ & $y[-1]$ & $y[0]$ & $y[1]$ & $y[2]$ & $y[3]$ & $y[4]$ & $y[5]$ & $\ldots$ 
   \psset{linecolor=ColorOne,linewidth=2pt}
   \ncangle[angleA=90,angleB=90,nodesepA=-1.2em,nodesepB=.2em,armB=1em]{->}{1,4}{2,4}
   \ncangle[angleA=90,angleB=90,nodesepA=-1.2em,nodesepB=.2em,armB=1em]{->}{1,2}{2,4}
   \psset{linecolor=ColorTwo}
   \ncangle[angleA=90,angleB=90,nodesepA=-1.2em,nodesepB=.2em,armB=1em]{->}{1,6}{2,6}
   %q\ncangle[angleA=90,angleB=90,nodesepA=-1.2em,nodesepB=.2em,armB=1em]{->}{1,5}{2,6}
   \psset{linecolor=ColorThree}
   \ncangle[angleA=90,angleB=90,nodesepA=-1.2em,nodesepB=.2em,armB=1em]{->}{1,7}{2,7}
   \ncangle[angleA=90,angleB=90,nodesepA=-1.2em,nodesepB=.2em,armB=1em]{->}{1,8}{2,7}
   \end{dspBlocks}
   \vspace{1em}
 \end{center}
 
 
-\begin{comment}
+
 can be seen as a ``black box'' accepting a number of 
 discrete-time sequences as inputs and producing another number of 
 discrete-time sequences at its output.
 In this %course
 book we are interested in studying the class of 
 {\em linear\linebreak time-invariant} (LTI) discrete-time systems with 
 a single input and a single output; a system of this type 
 %will be 
 is referred to as a {\em filter}. A 
 linear time-invariant system $\mathcal{H}$ can thus be 
 viewed as an operator which transforms an input sequence 
 into an output sequence: 
 \[
     y[n] = \mathcal{H} \bigl\{x[n] \bigr\}
 \]
 \eject
 
 %5.1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{figure}[h]
 \vskip-5mm
   \center\small
   \psset{unit=.4mm}
   \begin{pspicture}(0,0)(120,60)
     \rput[l](0,30){\rnode{input}{$x[n]$}}
     \rput(60,30){%
         \rnode{proc}{\psframebox[linewidth=1.5pt,framesep=10pt]%
         {$\mathcal{H}$}}}
     \rput[l](100,30){\rnode{output}{$y[n]$}}
     \ncline{->}{input}{proc}
     \ncline{->}{proc}{output}
   \end{pspicture}
 \vskip-7mm
   \caption{A single-input, single-output discrete-time 
   system (black-box view).} 
 \end{figure}
 
 \medskip 
 \medskip 
 
 \noindent
 Linearity is expressed by the equivalence\index{linearity}
 \begin{equation}\label{linsyslin}
     \mathcal{H} \bigl\{\alpha x_1[n] + \beta x_2[n] \bigr\} 
 = \alpha \mathcal{H} \bigl\{ x_1[n] \bigr\} 
 + \beta \mathcal{H} \bigl\{x_2[n] \bigr\}
 \end{equation}
 for any two sequences $x_1[n]$ and $x_2[n]$ and any two 
 scalars $\alpha, \beta \in \mathbb{C}$. Time-invariance is 
 expressed by \index{time-invariance} 
 \begin{equation}\label{linsystin}
     y[n] = \mathcal{H}\bigl\{x[n] \bigr\}\;
  \Longleftrightarrow  \;  \mathcal{H} \bigl\{x[n-n_0] \bigr\} = y[n-n_0]
 \end{equation}
 Linearity and time-invariance are very reasonable and 
 ``natural'' requirements for a signal processing system. 
 Imagine a recording system: linearity implies that a signal 
 obtained by recording a violin and a piano playing together 
 is the same as the sum of the signals obtained recording the 
 violin and the piano separately (but in the same recording 
 room). Multi-track recordings in music production are an 
 application of this concept. Time invariance basically means 
 that the system's behavior is independent of the time the 
 system is turned on. Again, to use a musical example, this 
 means that a given digital recording played back by a 
 digital player will sound the same, regardless of when 
 it is played. 
 
 Yet, simple %properties as they may be
 as these properties, linearity and time-invariance taken 
 together have an incredibly powerful consequence on a 
 system's behavior. Indeed, a linear time-invariant system 
 turns out to be \emph{completely} characterized by its 
 response to the input $x[n] = \delta[n]$. The sequence $h[n] 
 = \mathcal{H}\{\delta[n]\}$ is called the {\em impulse 
 response} of the system and $h[n]$ is all we need to know to 
 determine the system's output for \emph{any} other input 
 sequence. To see this, we know that for any sequence we can 
 always write the canonical orthonormal expansion (i.e.\ the 
 reproducing formula in (\ref{reproForm}))  %2.18
 \[
     x[n] = \sum_{k=-\infty}^{\infty} x[k]\, \delta[n-k]
 \]
 and therefore, if we let 
 $\mathcal{H}\bigl\{\delta[n] \bigr\} = h[n]$, 
 we can apply~(\ref{linsyslin}) and~(\ref{linsystin}) to 
 obtain\index{convolution|mie} 
 \begin{equation}\label{linsysconv}
     y[n] = \mathcal{H} \bigl\{x[n] \bigr\} 
 = \sum_{k=-\infty}^{\infty} x[k] h[n-k]
 \end{equation}\index{system!LTI|)}
 \eject
+\end{comment}
 
 
+\section{The Impulse Response}\label{sec:lf:FiltTDSec}
 
-\section{Filtering in the Time Domain}\label{FiltTDSec}
-\noindent
-The summation in (\ref{linsysconv}) is called the {\em 
-convolution} of sequences $x[n]$ and $h[n]$ and is denoted 
-by the operator ``$\ast$'' so that (\ref{linsysconv}) can be 
-shorthanded to 
+As we have just seen, filters can be described in terms of the algorithmic procedure by which each output sample is computed; while essential in order to implement a filter in practice, the algorithmic formulation does not shed much light on the properties of the resulting system, except in some simple elementary cases. In order to be able to describe the effects of a filter and, more importantly, in order to be able to design filters that meet specific requirements, we need  a different angle of attack.
+
+
+Simple as they are, the properties of linearity and time-invariance lead to an extremely powerful characterization of LTI systems: indeed, a filter turns out to be completely described by its response to the input signal $\boldsymbol{\delta}$. The sequence 
+\begin{equation}
+  \mathbf{h} = \mathcal{H}\boldsymbol{\delta}
+\end{equation} 
+is called the {\em impulse response} of the filter and it is all we need to know in order to determine the system's output for \emph{any} other input sequence. To see this, remember that we can always express a signal as a linear combination of the canonical basis vectors for the space of infinite-length sequences as in~(\ref{eq:vs:canonical_inf}):
 \[
-    y[n] = x[n] \ast h[n]
+    \mathbf{x} = \sum_{k=-\infty}^{\infty} x[k]\, \boldsymbol{\delta}_k;
 \]
-This is the general expression for a filtering operation in 
-the discrete-time domain. To indicate a specific value of 
-the convolution at a given time index $n_0$, we may use the 
-notation $y[n_0] = (x \ast h)[n_0]$ 
-
-\medskip 
-\subsection{The Convolution Operator}
-Clearly, for the convolution of two sequences to exist, the 
-sum in~(\ref{linsysconv}) must be finite and this is always 
-the case if both sequences are absolutely summa\-ble. As in 
-the case of the DTFT, absolute summability is just a 
-sufficient condition and the sum~(\ref{linsysconv}) can be 
-well defined in certain other cases as well. 
-
-\itempar{Basic Properties.}\label{SecLinSysBasic}
-The convolution operator is easily shown to be linear and 
-time-invariant (which is rather intuitive seeing as it 
-describes the behavior of an LTI system): 
+since $\boldsymbol{\delta}_k = \mathcal{D}^k\boldsymbol{\delta}$, we can use the linearity and time invariance properties to obtain
 \begin{align}
- & x[n] \ast \bigl(\alpha \cdot y[n] + \beta \cdot w[n] \bigr) 
-= \alpha \cdot x[n] \ast  y[n] + \beta \cdot x[n] \ast w[n]
-\label{eq:mb.94}
-%\end{equation}  \begin{equation}
-\\&
-  w[n] = x[n] \ast y[n] \; \Longleftrightarrow \; x[n] \ast y[n - k] = w[n - k]
-\label{eq:mb.95}
-\end{align}
+  \mathcal{H}\mathbf{x} &= \mathcal{H} \left(\sum_{k=-\infty}^{\infty} x[k]\,\mathcal{D}^k\boldsymbol{\delta} \right) \nonumber \\
+    &= \sum_{k=-\infty}^{\infty} \mathcal{H}\left(x[k]\, \mathcal{D}^k \boldsymbol{\delta}\right) \nonumber \\
+    &= \sum_{k=-\infty}^{\infty} x[k]\, \mathcal{D}^k \mathbf{h}. \label{eq:lf:conv1}
+\end{align} 
+In words, the filter's output is a linear combination of shifted copies of the impulse response, where the weighting coefficients correspond to the values of the input samples. Equation~(\ref{eq:lf:conv1}) can also be written in a form that highlights the value of the $n$-th output sample:
+\index{convolution|mie} \index{system!LTI|)}
+\begin{equation} \label{eq:lf:linsysconv}
+  (\mathcal{H}\mathbf{x})[n] = \sum_{k=-\infty}^{\infty} x[k] h[n-k]
+\end{equation}
+The above infinite sum is called the {\em convolution} of $\mathbf{x}$ and $\mathbf{h}$ and is denoted 
+by the operator ``$\ast$'' so that (\ref{eq:lf:linsysconv}) can be written compactly as
+\[
+    \mathcal{H}\mathbf{x} = \mathbf{x \ast h}.
+\]
+
+
+\subsection{The Convolution Operator} \label{SecLinSysBasic}
+
+Clearly, for the convolution of two sequences to exist, the sum in~(\ref{eq:lf:linsysconv}) must be finite and this is always the case if both sequences are \textit{absolutely} summable. As in the case of the DTFT, absolute summability is only a sufficient condition and the sum~(\ref{eq:lf:linsysconv}) can be well defined in certain other cases as well. 
+
+The convolution operator is easily shown to be linear and time-invariant (which is quite intuitive seeing as it describes the behavior of an LTI system): 
+\begin{equation}
+  \mathbf{x \ast (\alpha y + \beta w) = \alpha (x \ast y) + \beta (x \ast w)} \\
+\end{equation}
+\begin{equation}  
+  \mathbf{x} \ast \mathcal{D}^k  \mathbf{y} = \mathcal{D}^k (\mathbf{x \ast y})
+\end{equation}
 The convolution is also commutative:
 \begin{equation}\label{eq:mb.96}
-  x[n] \ast y[n] = y[n] \ast x[n]
+  \mathbf{x \ast y = y \ast x}
 \end{equation}
-which is easily shown via a change of variable in 
-(\ref{linsysconv}). Finally, in the case of square summable 
-sequences, it can be shown that the convolution is 
-associative: \index{convolution!associativity} 
+which is easily shown via a change of variable in (\ref{eq:lf:linsysconv}). Finally, in the case of square summable sequences, it can be shown that the convolution is associative: \index{convolution!associativity} 
 \begin{equation}\label{eq:mb.97}
-  \bigl(x[n] \ast h[n] \bigr) \ast w[n] = x[n] \ast 
-  \bigl(h[n] \ast w[n] \bigr)
+  \mathbf{(x \ast h ) \ast w = x \ast (h \ast w)}
 \end{equation}
-This last property describes the effect of connecting two 
-filters $\mathcal{H}$ and $\mathcal{W}$ in cascade and it 
-states that the resulting effect is that of a single filter 
-whose impulse response is the convolution of the two 
-original impulse responses. As a corollary, because of the 
-commutative property, the order of the two filters in the 
-cascade is completely irrelevant. More generally, a sequence 
-of filtering operations can be performed in any order. 
-\eject
+This last property describes the effect of connecting two filters $\mathcal{H}$ and $\mathcal{W}$ in cascade and it states that the resulting system is equivalent to a single filter whose impulse response is the convolution of the two original impulse responses. As a corollary, because of the commutative property, the result is independent on the order of the two filters in the cascade. More generally, a cascade of filtering operations produces the same result irrespective of the order in which the filters are applied. Note however that the associative property does not necessarily hold for sequences which are not square summable, as shown in Exercise~\ref{ex:lf:assoc}. 
+
+%A classic counterexample is the following: consider the three signals 
+%\begin{align*} %{ll}
+%  \mathbf{x} &= \mathbf{u}            \kern13mm  \qquad \quad \mbox{\em the unit step} \\
+%  \mathbf{h} &= \boldsymbol{\delta} - \boldsymbol{\delta}_1  \kern6mm \qquad \quad  \mbox{\em the first-difference operator} \\
+%  \mathbf{w} &= \mathbf{1}   \kern13mm \quad \qquad  \mbox{\em a constant signal}
+%\end{align*}
+%where clearly $\mathbf{x}$ and $\mathbf{w}$ are not in $\ell_2(\mathbb{Z})$; it is easy to verify that 
+%\begin{align*}
+%    \mathbf{x \ast (y \ast w)} &=  \mathbf{0} \\
+%    \mathbf{(x \ast y) \ast w}  &=  \mathbf{1}
+%\end{align*}
+
+
+\itempar{Two Views of the Convolution.} Equations~(\ref{eq:lf:conv1}) and~(\ref{eq:lf:linsysconv}) represent two descriptions of the same signal, namely the output of a filter with impulse response $\mathbf{h}$. In the first case, however, we are looking at the signal \textit{globally}, as the superposition of delayed and scaled impulse responses; this is illustrated in Figure~\ref{fig:fl:superpos} for a short finite-support input signal. 
+
+Equation~(\ref{eq:lf:linsysconv}), on the other hand, shows how to compute the convolution \textit{algorithmically}, one output point at a time. In words, the formula tells us that the $n$-th output sample is obtained by taking the sum of the product between the input and the \textit{time-reversed} impulse response shifted it by $n$; this is illustrated in Figure~\ref{fig:fl:timerev} for the same input signal as in Figure~\ref{fig:fl:superpos}. This algorithmic view...
 
-Please note that associativity does not necessarily hold for sequences 
-which are not square-summable. A classic counterexample is 
-the following: consider the three sequences 
-%\[
-\begin{align*} %{ll}
-x[n] &= u[n]  \quad\kern13mm  \quad \qquad \mbox{\em the unit step} \\
- y[n] &= \delta[n]-\delta[n-1]  \qquad \quad  \mbox{\em the first-difference operator} \\
-   w[n] &= 1  \kern22mm \quad \qquad  \mbox{\em a constant signal}
-\end{align*}
-where clearly $x[n]$, $w[n] \not\in \ell_2(\mathbb{Z})$. It is 
-easy to verify that 
-\begin{align*}
-    x[n] \ast (y[n] \ast w[n]) & =  0 \\
-    (x[n] \ast y[n]) \ast w[n] & =  1
-\end{align*}
 
 
 
 \itempar{Convolution and Inner Product.}\index{convolution!as inner product}
-It is %immediate to see 
-immediately obvious that, for two sequences $x[n]$ and 
-$h[n]$, 
-%it is
-we can write:
-\[
-    x[n] \ast h[n] = \bigl\langle h^*[n-k], x[k] \bigr\rangle
-\]
-that is, the value at index $n$ of the convolution of two 
-sequences is the inner product (in $\ell_2(\mathbb{Z})$) of the 
-first sequence -- conjugated,\footnote{Since we consider only 
-real impulse responses, the conjugation operator is in this 
-case redundant.}
- time-reversed and re-centered at $n$ -- 
-with the input sequence. The above expression describes the 
-output of a filtering operation as a series of ``localized'' 
-inner products; filtering, therefore, measures the 
-time-localized similarity (in the inner product sense, i.e.\ in 
-the sense of the correlation) between the input sequence and 
-a prototype sequence (the time-reversed impulse response). 
-
-In general, the convolution operator for a signal is defined 
-with respect to the inner product of its underlying Hilbert 
-space. For the space of $N$-periodic sequences, for 
-instance, the convolution is defined as 
-\begin{align}\label{periodicConv}
-    \tilde{x}[n] \ast \tilde{y}[n] &  = 
- \sum_{k = 0}^{N-1} \tilde{x}[k] \tilde{y}[n-k] \\
-    &  =  \sum_{k = 0}^{N-1} \tilde{x}[n-k] \tilde{y}[k]
+Equation~(\ref{eq:lf:linsysconv}) can also be rewritten as 
+\begin{equation}
+  \mathbf{(x \ast h)}[n] = \bigl\langle \mathcal{D}^n\,\mathcal{R}\, \mathbf{h}^*, \mathbf{x} \bigr\rangle,
+\end{equation}
+that is, the $n$-th output sample is computed as the inner product in $\ell_2(\mathbb{Z})$ between the 
+input sequence and the conjugated, time-reversed impulse response delayed by $n$. This has two interesting implications: the first is that we can interpret a filtering operation as a succession of ``localized'' 
+inner products; filtering, therefore, measures the time-localized similarity (that is, the correlation) between the input sequence and a ``template'' sequence (the time-reversed impulse response). 
+
+The second consequence is that, using this paradigm, we can define the convolution operator for all classes of signals in terms of the inner product of their underlying Hilbert space. For the space of $N$-periodic sequences, for instance, the convolution is defined as 
+\begin{align}\label{eq:lf:periodicConv}
+    (\tilde{\mathbf{x}} \ast \tilde{\mathbf{h}})[n] &= \bigl\langle \mathcal{D}^n\,\mathcal{R}\,\tilde{\mathbf{h}}^*, \tilde{\mathbf{x}} \bigr\rangle \nonumber \\
+    &= \sum_{k = 0}^{N-1} \tilde{x}[k] \tilde{y}[n-k] \\
+    &=  \sum_{k = 0}^{N-1} \tilde{x}[n-k] \tilde{y}[k]
 \end{align}
-which is consistent with the inner product definition 
-in~(\ref{periodicInnerProduct}).   %3.55
-We will also consider the convolution of DTFTs. In this 
-case, since we are in the space of $2\pi$-periodic functions 
-of a real variable, the convolution
-\pagebreak%
- is defined as\index{convolution!of DTFTs} 
+which is consistent with the inner product definition in~(\ref{eq:vs:periodicInnerProduct}). The same formula can be applied to length-$N$ sequences by considering all shifts as circular shifts.
+
+Later we will also consider the convolution of DTFTs; by the same token, given the definition of inner product in $L_2[-\pi, \pi]$ stated in~(\ref{eq:vs:DTFTInnerProduct}), we have 
 \begin{align}
-X(e^{j \omega}) * Y(e^{j \omega}) & = 
- \frac{1}{2\pi} \,\bigl\langle X^* (e^{j(\omega - \sigma)} ) 
- , Y(e^{j \sigma}) \bigr\rangle \\
-& =  
-\frac{1}{2\pi}\,  \int_{- \pi}^{\pi} 
-X(e^{j(\omega - \sigma)}) Y(e^{j \sigma}) \, d \sigma \label{eq:mb.110} \\
-& =  
-\frac{1}{2\pi} \, \int_{- \pi}^{\pi} X(e^{j\sigma}) 
-Y(e^{j(\omega - \sigma)} )
-\, d \sigma \label{DTFTconv}
-%\label{eq:mb.111}
+  (X \ast Y)(e^{j \omega}) &= \frac{1}{2\pi} \,\bigl\langle X^*(e^{j(\omega - \sigma)} ) 
+ , Y(e^{j\sigma}) \bigr\rangle \nonumber \\
+    &= \frac{1}{2\pi}\,  \int_{-\pi}^{\pi} X(e^{j(\omega - \sigma)}) Y(e^{j \sigma}) \, d \sigma \label{eq:mb.110} \\
+    &= \frac{1}{2\pi} \, \int_{- \pi}^{\pi} X(e^{j\sigma}) Y(e^{j(\omega - \sigma)} )\, d \sigma \label{eq:lf:DTFTconv}.
 \end{align}
-which is consistent with the inner product definition 
-in (\ref{l2piInnerProduct}).            %3.30
 
 
-\medskip 
-\subsection{Properties of the Impulse Response}\index{impulse response|(}
-As we said, an LTI system is completely described by its 
-impulse response, i.e.\/ by $h[n] = \mathcal{H}\bigl\{x[n]\}$. 
+\subsection{Filter Properties in the Time Domain}
+\index{impulse response|(}
+The time-domain properties of a filter derive from the structure of its impulse response. 
 
-\smallskip 
-\itempar{FIR vs IIR.}\index{FIR|mie}\index{IIR|mie}
-Since the impulse response is defined as the transformation 
-of the discrete-time delta and since the delta is an 
-infinite-length signal, \emph{the impulse response is always 
-an infinite-length signal}, i.e.\ a sequence. The nonzero 
-values of the impulse response are usually called {\em 
-taps}. %We can have two distinct cases
-Two distinct cases are possibles: 
+\itempar{FIR and IIR Filters.} \index{FIR|mie}\index{IIR|mie}
+The impulse response is defined in terms of the discrete-time delta sequence and therefore it is an infinite-length signal. The number of its nonzero values, themselves often called the {\em taps} of the filter, allow us to differentiate between two cases:
 \begin{itemize}
-  \item {\bf IIR filters:} when the number of taps is 
-  infinite.
-  \item {\bf FIR filters:} when the number of taps is finite 
-  (i.e.\ the impulse response is a finite-support sequence). 
+  \item Infinite Impulse Response ({\bf IIR}) filters, when the number is infinite; and
+  \item Finite Impulse Response ({\bf FIR}) filters, when the impulse response is a finite-support sequence. 
 \end{itemize}
-Note that in the case of FIR filters, the convolution 
-operator entails only a finite number of sums and products; 
-if $h[n] = 0$ for $n < N$ and $n \geq M$, we can invoke 
-commutativity and rewrite (\ref{linsysconv}) as 
+FIR filters involve by definition only a finite number of operations per output sample; indeed, assume $h[n]$ is nonzero only over the $[0, M-1]$ interval; we can invoke the commutative property of the convolution and rewrite~(\ref{eq:lf:linsysconv}) as
 \[
-    y[n] = \sum_{k=N}^{M-1} h[k]x[n-k]
+    (\mathcal{H}\mathbf{x})[n] = \sum_{k=0}^{M-1} h[k]x[n-k].
 \]
-Thus, convolution sums involving a finite-support impulse 
-response %. %therefore, 
-are\linebreak always well defined. 
+Conversely, IIR filters may or may not be computable, as we will see later.
+
 
-\smallskip 
 \itempar{Causality.}\index{causal!filter} 
-A system is called \emph{causal} if its output does not 
-depend on future values of the input. In practice, a causal 
-system is the only type of\linebreak ``real-time'' system we can 
-actually implement, since knowledge of the future is 
-normally not an option in real life. Yet, noncausal filters 
-maintain a practical interest since in some application 
-(usually called ``batch processing'') we may have access to 
-the entirety of a discrete-time signal, which has been 
-previously stored on some form of memory 
-support.\footnote{Clearly, to have a discrete-time signal 
-stored in memory, the signal must be a finite-support 
-sequence. If the support is sufficiently large, however, we 
-can consider the signal as a full-fledged sequence.}
- A 
-filter whose output depends exclusively on future values of 
-the input is called {\em anticausal}\index{anticausal!filter}. 
-
-
-For an LTI system, causality implies that the associated 
-impulse response is zero for negative indices; this is the 
-only way to remove all ``future'' terms in the convolution 
-sum (\ref{linsysconv}). Similarly, for anticausal systems, 
-the impulse response must be zero for all positive indices. 
-Clearly, between the strict causal and anticausal extremes, 
-we can have intermediate cases: consider for example a 
-filter $\mathcal{F}$ whose impulse response is zero for $n < 
--M$ with $M \in \mathbb{N}^+$. This filter is technically 
-noncausal, but only in a ``finite'' way. If we consider the 
-\emph{pure delay} filter $\mathcal{D}$, whose impulse 
-response is 
+A system is called \emph{causal} if its output does not depend on future values of the input and, in practice, a causal 
+system is the only type of ``real-time'' system that we can actually build. For an LTI system, causality is equivalent to having an impulse response that is right-sided, that is, equal to zero for negative values of the index; this is easily verified since in this case the sum in~(\ref{eq:lf:linsysconv}) becomes
 \[
-    d[n] = \delta[n-1]
+  (\mathcal{H}\mathbf{x})[n] = \sum_{k=-\infty}^{n} x[k] h[n-k]
 \]
-we can easily see that $\mathcal{F}$ can be made strictly 
-causal by cascading $M$ delays in front of it. Clearly, an 
-FIR filter is always causal up to a delay. 
-
-
-\itempar{Stability.}\label{biboStabCond} \index{stability}
-A system is called bounded-input bounded-output stable (BIBO 
-stable) if its output is bounded for all bounded input 
-sequences. Again, stability is a very natural requirement 
-for a filter, since it states that the output will not 
-``blow up'' when the input is reasonable. Linearity and 
-time-invariance do not guarantee stability (as anyone who 
-has ever used a hands-free phone has certainly experienced). 
-
-A bounded sequence $x[n]$ is one for which it is possible to 
-find a finite value $L \in \mathbb{R}^+$ so that $|x[n]| < L$ for 
-all $n$. A necessary and sufficient condition for an LTI 
-system $\mathcal{H}$ to be BIBO\index{BIBO} stable is that 
-its impulse response $h[n]$ be absolutely 
-summable.\index{stability criteria} The sufficiency of the 
-condition is proved as follows: if $x[n] < L$ for all~$n$, 
-then %it is
-we have 
+which only involves past values of the input. By extension, we call any right-sided sequence a causal sequence. 
+
+When a system is not causal we have three possibilities:
+\begin{enumerate}
+  \item the support of the impulse response extends to the negative indices but only over a finite interval, i.e., $h[n] = 0$ for $n < -|M|$. In this case the system is \textit{causal up to a delay} and it can be made causal in practice by shifting the impulse response to causality in exchange for a delayed output. Clearly, an FIR filter is always either causal or causal up to a delay. 
+  \item the support of the impulse response is \textit{anticausal}, i.e. $h[n] = 0$ for $n > 0$. Mostly these types of filters appear in textbook exercises since they have a set of properties that are complementary to causal filters, but have little practical applications\footnote{
+    Noncausal and anticausal filters maintain a practical interest since in ``batch processing'' applications we usually have access to the entirety of the input data, which has been previously stored on some form of memory support.}.
+  \item the support of the filter is infinite and two-sided. Filters in this family are not realizable in practice since they require an infinite number of operations per output sample; nevertheless, as we will see shortly, \textit{ideal filters} belong to this category and represent an abstract filtering paradigm that we will try to approximate in some filter design techniques.
+\end{enumerate}
+
+
+\itempar{Stability.}
+\label{biboStabCond} \index{stability}
+A natural requirement for a filter is that the output remains ``well behaved'' if the input is well behaved. In mathematical terms, we want the filter's output to remain bounded in magnitude if the input signal is itself bounded. This property is called BIBO stability (from ``bounded-input bounded-output'') and a necessary and sufficient condition for BIBO stability is that the impulse response be absolutely summable. \index{stability criteria}
+
+The sufficiency of the condition is proved as follows: if $|x[n]| < L$ for all values of~$n$, that is, if the input is bounded, then we have 
 \begin{align*}
-    \bigl|y[n] \bigr| &= \bigl|h[n] \ast x[n] \bigr| 
-%\\           &
-= \left| \sum_{k=-\infty}^{\infty} h[k]x[n-k] \right| \\
-           &\leq  \sum_{k=-\infty}^{\infty} \bigl|h[k]x[n-k] \bigr| 
-%\\           & 
-\leq  L\sum_{k=-\infty}^{\infty} \bigl|h[k] 
-           \bigr|
+    \bigl|(\mathcal{H}\mathbf{x})[n] \bigr| &= \left| \sum_{k=-\infty}^{\infty} h[k]x[n-k] \right| \\
+           &\leq  \sum_{k=-\infty}^{\infty} \bigl|h[k] x[n-k] \bigr| \\
+           &\leq  L\sum_{k=-\infty}^{\infty} \bigl|h[k] \bigr|
 \end{align*}
-and the last term is finite if $h[n]$ is absolutely 
-summable. Conversely, assume that $h[n]$ is not absolutely 
-summable and consider the signal 
-$$x[n] = \mbox{sign} \bigl(h[-n] \bigr) $$ %; 
-$x[n]$ is clearly bounded, since it takes values only 
-in $\{-1, 0, +1\}$, and yet 
+and the last term is finite if $h[n]$ is absolutely summable. To prove the necessity of the condition, we will proceed by contradiction: assume that $h[n]$ is not absolutely summable and consider the signal 
 \[
-    y[0] = (h \ast x)[0] = 
-\sum_{k=-\infty}^{\infty} h[k]x[-k] = 
-\sum_{k=-\infty}^{\infty} \bigl|h[k] \bigr| 
-= \infty
+  x[n] = \mbox{sign} \bigl(h[-n] \bigr);
+\] 
+$\mathbf{x}$ is clearly bounded since it takes values only over the set $\{-1, 0, +1\}$, and yet 
+\[
+    (\mathcal{H}\mathbf{x})[0] = \sum_{k=-\infty}^{\infty} h[k]x[-k] = \sum_{k=-\infty}^{\infty} \bigl|h[k] \bigr| = \infty
 \]
 
-Note that in the case of FIR filters, the convolution sum 
-only involves a finite number of terms. As a consequence, 
-\emph{FIR filters are always stable}\index{impulse response|)}.
+Note that in the case of FIR filters the convolution only involves a finite number of terms and, as a consequence, FIR filters are always stable.
+\index{impulse response|)}
 
-\medskip 
 
-\section{Filtering by Example -- Time Domain}\label{IntroFiltering}
-\noindent
-So far, we have described a filter from a very abstract 
-point of view, and we have shown that a filtering operation 
-corresponds to a convolution with a defining sequence called 
-the impulse response. We %will 
-now take a diametrically 
-opposite standpoint: %in that 
-we %will 
-introduce a very 
-practical problem and arrive at a solution which defines an 
-LTI system. Once we recognize that the solution is indeed a 
-discrete-time filter, we will be able to make use of the 
-theoretical %propertie
-results of the previous Sections in order, to analyze 
-its properties. 
-
-Consider a sequence like the one in 
-Figure \ref{noisyUnfiltered}; we are clearly in the 
-presence of a ``smooth'' signal corrupted by noise, which 
-appears as little wiggles in the plot. Our goal is 
-%try to remove said
-the removal of the
- noise, i.e.\ to smooth out the signal, in order 
-to improve its readability. 
-
-
-%%5.2 %%%%%%%%%%%%%%%%%%%%
-\begin{figure}[h]
-  \center\small
-  \begin{psDTplotb}[dx=100,dy=2]{-50}{550}{-8}{8}
-    \psDTplotFile{data/filtering-example-1.txt}
-  \end{psDTplotb}
-\vskip-7mm
-  \caption{Noisy signal.}\label{noisyUnfiltered}
-\end{figure}
 
 
-\medskip 
-\subsection{FIR Filtering}\label{MovingAverage}\index{moving average|(}
-An intuitive and basic approach to remove noise from data is 
-to replace each point of the sequence $x[n]$ by a 
-\emph{local average}, which can be obtained by taking the 
-average of the sample at $n$ and its $N-1$ predecessors. 
-Each point of the ``de-noised'' sequence can therefore be 
-computed as 
-\begin{equation}
-    y[n] = \frac{1}{N}\sum_{k = 0}^{N-1}x[n-k]
-\end{equation}
-\eject
+\subsection{Examples Revisited in the Time Domain}
 
-%% 5.3 %%%%%%%%
-\begin{figure}[H]
-  \center\small
-  \begin{tabular}{c}
-    \begin{psDTplotb}[dx=100,dy=2]{-50}{550}{-8}{8}
-      \psDTplotFile{data/filtering-example-2.1.txt}
-      \rput[tr](500,7){$N=2$}
-    \end{psDTplotb}
-    \\[-2mm]
-    \begin{psDTplotb}[dx=100,dy=2]{-50}{550}{-8}{8}
-      \psDTplotFile{data/filtering-example-2.2.txt}
-      \rput[tr](500,7){$N=4$}
-    \end{psDTplotb}
-  \end{tabular}
-\vskip-8mm
-  \caption{Moving averages for %different
-small values of  
- $N$.}\label{noisyFIRFiltered1}
-\end{figure}
-%%5.4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\begin{figure}[H]
-  \center\small
-  \begin{tabular}{c}
-    \begin{psDTplotb}[dx=100,dy=2]{-50}{550}{-8}{8}
-      \psDTplotFile{data/filtering-example-2.3.txt}
-      \rput[tr](500,7){$N=12$}
-    \end{psDTplotb}
-    \\[-2mm]
-    \begin{psDTplot}[dx=100,dy=2]{-50}{550}{-8}{8}
-      \psDTplotFile{data/filtering-example-2.4.txt}
-      \rput[tr](500,7){$N=100$}
-    \end{psDTplot}
-  \end{tabular}
-\vskip-8mm
-  \caption{Moving averages for %different 
-large values of 
-  $N$.}\label{noisyFIRFiltered}\index{moving average|)}
-\end{figure}
+Let's discuss the properties that we can infer from the impulse response when applied to the two examples we introduced in Section~\ref{sec:lf:examples}.
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\noindent
-This is easily recognized as a convolution sum, and we can 
-obtain the impulse response of the associated filter by 
-letting $x[n] = \delta[n]$; it is easy to see that 
-\begin{equation}\label{MAimpres}
-h[n] = \frac{1}{N} \sum_{k = 0}^{N-1}\delta[n-k] 
-= 
-%\left\{ \!    
-\begin{cases} %{ll}
-        \ds  \frac{1}{N} & \mbox{ for } 0 \leq n < N \\[2mm]
-        0     & \mbox{ for } n<0 \mbox{ and } n\geq N
+\itempar{Moving Average.} 
+The output of the MA filter is computed as 
+\[
+    (\mathcal{H}\mathbf{x})[n] = \frac{1}{M}\sum_{k = 0}^{M-1}x[n-k].
+\]
+This is easily recognized as a convolution and we can obtain the impulse response of the associated filter by letting $\mathbf{x} = \boldsymbol{\delta}$; we have
+\begin{equation}\label{eq:lf:MAimpres}
+  h[n] = \frac{1}{M} \sum_{k = 0}^{M-1}\delta[n-k] = \begin{cases} %{ll}
+        \displaystyle  \frac{1}{M} & \mbox{ for } 0 \leq n < M \\[2mm]
+        0     & \mbox{ for }  \mbox{ otherwise. } 
    \end{cases}
-%    \right.
 \end{equation}
-The impulse response, as it turns out, is a finite-support 
-sequence so the filter that we have just built, is an FIR filter; this 
-particular filter goes under the name of \emph{Moving 
-Average} (MA) filter. The ``smoothing power'' of this filter 
-is dependent on the number of samples we take into account 
-in the average or, in other words, on the length $N$ of its 
-impulse response. The filtered version of the original 
-sequence for %increasing 
-small and large values of $N$ is plotted in 
-Figures \ref{noisyFIRFiltered1} and \ref{noisyFIRFiltered}
-respectively. 
-Intuitively we can see that 
-as $N$ grows, more and more wiggles are removed. We will 
-soon see how to handle the ``smoothing power'' of a filter 
-in a precise, quantitative way.
-% One thing to notice right away, and which is a
-A general characteristic of FIR filters, 
-that should be immediately noticed 
-is that the value of the output does not depend on values of 
-the input which are more than $N$ steps away; FIR filters 
-%are therefore called \emph{memoryless} filters. 
-are therefore \textit{finite memory\/} filters.
-Another 
-%remark
-aspect that  we can mention 
-%right away 
-at this point concerns the 
-\emph{delay}\index{delay}\index{filter!delay} 
-introduced by the filter: 
-each output value is the average of a window of~$N$ input 
-values whose representative sample is the one falling in the 
-middle; 
-thus, there is %therefore 
-a delay of $N/2$ samples between 
-input and output, and the delay grows with~$N$. 
-
-
-\subsection{IIR Filtering}\label{leakyIntegrator}%
-\index{leaky integrator|(}\index{integrator!leaky}
-The moving average filter that we built in the previous Section 
-has an obvious drawback; the more we want to smooth the 
-signal, the more points we need to consider and, therefore, 
-the more computations we have to perform to obtain the 
-filtered value. Consider now the formula for the output of a 
-length-$M$ moving average filter:
-\begin{equation}
-    y_M[n] = \frac{1}{M}\sum_{k=0}^{M-1} x[n-k]
-\end{equation}
-We can easily see that
-\begin{align*}
-    y_{M}[n] 
-& =  \frac{M-1}{M} \, y_{M-1}[n-1] + \frac{1}{M}\, x[n] \\
-& =  \lambda y_{M-1}[n-1] + (1-\lambda ) x[n] 
-\end{align*}
-where we have defined $\lambda = (M-1)/M$. Now, as $M$ grows 
-larger, we can safely assume that if we compute the average 
-\pagebreak%
-over $M-1$ or over $M$ points,\linebreak
-%%%5.5 %%%%%
-\begin{figure}[h]
-\kern-4mm
-  \center\small
-  \begin{tabular}{c}
-    \begin{psDTplotb}[dx=100,dy=2]{-50}{550}{-8}{8}
-      \psDTplotFile{data/filtering-example-3.1.txt}
-      \rput[tr](500,7){$\lambda=0.2$}
-    \end{psDTplotb}
-   \\[-2mm]
-    \begin{psDTplotb}[dx=100,dy=2]{-50}{550}{-8}{8}
-      \psDTplotFile{data/filtering-example-3.2.txt}
-      \rput[tr](500,7){$\lambda=0.5$}
-    \end{psDTplotb}
-  \end{tabular}
-\vskip-8mm
-  \caption{Moving averages for different values
- of $\lambda$.}\label{noisyIIRFiltereda}
-\end{figure}
-%%%5.6 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\begin{figure}[H]
-  \center\small
-  \begin{tabular}{c}
-    \begin{psDTplotb}[dx=100,dy=2]{-50}{550}{-8}{8}
-      \psDTplotFile{data/filtering-example-3.3.txt}
-      \rput[tr](500,7){$\lambda=0.8$}
-    \end{psDTplotb}
-    \\[-2mm]
-    \begin{psDTplot}[dx=100,dy=2]{-50}{550}{-8}{8}
-      \psDTplotFile{data/filtering-example-3.4.txt}
-      \rput[tr](500,7){$\lambda=0.98$}
-    \end{psDTplot}
-  \end{tabular}
-\vskip-8mm
-  \caption{Leaky integrator outputs for %different 
-values of $\lambda$ close to one.}\label{noisyIIRFiltered}
-\end{figure}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+The impulse response is thus a causal finite-support sequence and so the Moving Average is a causal FIR filter; we can immediately rule out any stability problem since we know that all FIR filters are BIBO stable.
 
+Note that, in applying the Moving Average to an input sequence, we are replacing the sample at $n$ with an average that involves present and past samples. In reality however, when we average over a length-$M$ interval, the ``natural'' choice for the representative time index would be the interval's midpoint, that is, we should replace $x[n]$ by an average that includes $x[n]$ and an equal number of points before and after; that is, if $M = 2L+1$, we should use
+\[
+  (\mathcal{H}\mathbf{x})[n] = \frac{1}{M}\sum_{k = -L}^{L}x[n-k].
+\]
+The resulting filter is a noncausal FIR whose impulse response is centered in zero, although obviously it is causal up to a delay of $L$ samples. Figure~\ref{fig:lf:delayNoDelay} shows how the use of a zero-centered impulse response eliminates the increasing offset between input and output that we observed in Figure~\ref{fig:lf:noisyFIRFiltered}; of course, this can only be done for signals that are available ``offline''.
 
-\noindent
- the result is basically the 
-same: in other words, for $M$ large, we can say that $y_{M-
-1}[n] \approx y_{M}[n]$. This suggests a new way to compute 
-the smoothed version of a sequence in a \emph{recursive} 
-fashion: 
-\begin{equation}\label{leaky}
-    y[n] = \lambda y[n-1] + (1-\lambda) x[n]
-\end{equation}
-This %does not look anymore 
-no longer looks
-like a convolution sum; it is, 
-instead, an instance of a \emph{constant coefficient 
-difference equation}. We might wonder whether the 
-transformation realized by~(\ref{leaky}) is still linear and 
-time-invariant and, in this case, what its impulse response 
-is. The first problem that we face in addressing this 
-question stems from the recursive nature of~(\ref{leaky}): 
-each new output value depends on the previous output value. 
-We need to somehow define a starting value for $y[n]$ or, in 
-system theory parlance, we need to set the \emph{initial 
-conditions}. The choice which guarantees that the system 
-defined by~(\ref{leaky}) is linear and time-invariant 
-corresponds to %requiring 
-the requirement that the system response to a 
-sequence identically zero, be zero for all $n$; this 
-requirement is also known as \emph{zero initial 
-conditions},\index{zero initial conditions} since it 
-corresponds to setting $y[n] = 0$ for $n < N_0$ where $N_0$ 
-is some time in the past. 
-
-
-
-%\medskip 
-The linearity of (\ref{leaky}) can now be proved 
-in the following  %this 
-way : 
-assume that the output sequence for the system defined 
-by~(\ref{leaky}) is $y[n]$ when the input is $x[n]$. It is 
-immediately obvious % to see 
-that $y_1[n] = \alpha y[n]$ 
-satisfies~(\ref{leaky}) for an input equal to $\alpha x[n]$. 
-All we need to prove is that this is the only solution. 
-Assume this is not the case and call $y_2[n]$ the other 
-solution; we have 
-\begin{align*}
-    y_1[n] &  =  \lambda y_1[n-1] + (1-\lambda) \bigl(\alpha x[n] \bigr)  \\
-    y_2[n] &  =  \lambda y_2[n-1] + (1-\lambda) \bigl(\alpha x[n] \bigr)
-\end{align*}
-We can now subtract the second equation from the first. What 
-we %have
-find is that the sequence $y_1[n] - y_2[n]$ is the 
-system's response to the zero sequence, and therefore is 
-zero for all $n$. Linearity with respect to the sum and time 
-invariance can be proven in exactly the  same way. 
-
-Now that we know that~(\ref{leaky}) defines an LTI system, 
-we can try to compute its impulse response. Assuming zero 
-initial conditions and $x[n] = \delta[n]$, we have 
+
+\itempar{Leaky Integrator.}%
+\index{leaky integrator|(}\index{integrator!leaky}
+The Leaky Integrator is defined by the recursive equation
+\[
+  y[n] = \lambda y[n-1] + (1-\lambda) x[n]
+\]
+which, as we have proven in Section~\ref{sec:lf:leakyIntegrator}, implements an LTI system. In order to compute its impulse response we assume zero initial conditions and set $\mathbf{x} = \boldsymbol{\delta}$; we have 
 \begin{equation}
-\begin{aligned}
-y[n] & =  0 \quad\qquad  \mbox{for } n < 0  \\
-y[0] & =  1- \lambda   \\
-y[1] & =  (1-\lambda)\lambda   \\
-y[2] & =   (1-\lambda)\lambda^2   \\
-\vdots \kern2mm &   \\
-y[n] & =   (1-\lambda)\lambda^n 
-\end{aligned}
+  \begin{aligned}
+    y[n] & =  0 \quad\qquad  \mbox{for } n < 0  \\
+    y[0] & =  1- \lambda   \\
+    y[1] & =  (1-\lambda)\lambda   \\
+    y[2] & =   (1-\lambda)\lambda^2   \\
+    \vdots \kern2mm &   \\
+    y[n] & =   (1-\lambda)\lambda^n.
+  \end{aligned}
 \end{equation}
-\eject
-%%%%
-%%%5.7 %%%%%%%%%%%%%%
-\begin{figure}[h]
-  \center\small
-  \def\polepos{0.9 }
-  \begin{psDTplot}[dx=10,dy=0.05]{-15}{40}{0}{0.1}
-    %\psset{pslabelsep=30pt}
-    \psDTplotSignal{x 0 gt {1 \polepos sub \polepos x exp mul} {0} ifelse}
-  \end{psDTplot}
-\vskip-5mm
-  \caption{Impulse response (portion) of the leaky 
-  integrator for $\lambda=\polepos$.}\label{FigLeakyImpRes} 
-\end{figure}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\medskip \medskip 
-\noindent
-so that the impulse response (shown in Figure~\ref{FigLeakyImpRes}) is
+%
+%
+%%%%%
+%%%%5.7 %%%%%%%%%%%%%%
+%\begin{figure}[h]
+%  \center\small
+%  \def\polepos{0.9 }
+%  \begin{psDTplot}[dx=10,dy=0.05]{-15}{40}{0}{0.1}
+%    %\psset{pslabelsep=30pt}
+%    \psDTplotSignal{x 0 gt {1 \polepos sub \polepos x exp mul} {0} ifelse}
+%  \end{psDTplot}
+%\vskip-5mm
+%  \caption{Impulse response (portion) of the leaky 
+%  integrator for $\lambda=\polepos$.}\label{FigLeakyImpRes} 
+%\end{figure}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%\medskip \medskip 
+%\noindent
+The impulse response is therefore the causal sequence
 \begin{equation}
-h[n] = (1-\lambda)\, \lambda^n u[n]
+  h[n] = (1-\lambda)\, \lambda^n u[n]
 \end{equation}
-The impulse response clearly defines an IIR filter and 
-therefore the immediate question is whether the filter is 
-stable. Since a sufficient condition for stability is that 
-the impulse response is absolutely summable, we have 
+a portion of which is shown in Figure~\ref{FigLeakyImpRes}. The impulse response clearly indicates that the Leaky Integrator is an IIR filter and therefore the question of stability becomes nontrivial. We know that a sufficient condition is that the impulse response be absolutely summable; we have 
 \begin{equation}
-\sum_{n=-\infty}^{\infty} \bigl|h[n] \bigr| 
-= \lim_{n\rightarrow\infty} |1-\lambda|\frac{1-|\lambda|^{n+1}}{1-|\lambda|}
+  \sum_{n=-\infty}^{\infty} \bigl|h[n] \bigr| = \lim_{n\rightarrow\infty} |1-\lambda|\frac{1-|\lambda|^{n+1}}{1-|\lambda|}
 \end{equation}
-We can see that the above limit is finite for $|\lambda| < 
-1$ and so the system is BIBO stable for these values. The 
-value of $\lambda$ (which is, as we will see, the 
-\emph{pole} of the system) determines the smoothing power of 
-the filter (Fig. \ref{noisyIIRFiltereda}).
-As $ \lambda \rightarrow 1 $,  the
- input is 
-smoothed more and more as can be seen in 
-Figure~\ref{noisyIIRFiltered}, at a constant computational 
-cost. The system implemented by~(\ref{leaky}) is often 
-called a \emph{leaky integrator}, in the sense that it 
-approximates the behavior of an integrator with a leakage 
-(or forgetting) factor $\lambda$. The delay introduced  by 
-the leaky integrator is more difficult to analyze than for 
-the moving average but, again, it grows with the smoothing 
-power of the filter; we will soon see how to proceed in 
-order to quantify the delay introduced by IIR filters. 
+and the limit is finite only for $|\lambda| < 1$, which is the BIBO stability condition for the filter. Again, recall that the smoothing power of the Leaky Integrator increases as $\lambda$ gets closer to one although now we can see that we should not try to use larger values, which would cause and exponential growth of the output even in the presence of a bounded input; the computational cost, on the other hand, remains constant. The delay introduced  by the leaky integrator grows with the smoothing power of the filter but its quantification requires the tools that we will introduce in the next section. 
 
 
 
- 
-As we can infer from this simple analysis, IIR filters are 
-much more delicate entities than FIR filters; in the next 
-Chapters we will also discover that their design is also 
-much less straightforward and offers less flexibility. This 
-is why, in practice, FIR filters are the filters of 
-choice. IIR filters, however, and especially the simplest 
-ones such as the leaky integrator, are extremely attractive 
-when computational power is a scarce resource. 
-\index{leaky integrator|)}
+\begin{comment}
 
 \section{Filtering in the Frequency Domain}
 \noindent
 The above examples have introduced the notion of filtering 
 in an operational and intuitive way. In order to make more 
 precise statements on the characteristics of a discrete-time 
 filter we need to move to the frequency domain. 
 What does a filtering operation translate to in the 
 frequency domain? The fundamental result of this Section is 
 the convolution theorem for discrete-time signals: a 
 convolution in the discrete-time domain is equivalent to a 
 multiplication of Fourier transforms in the frequency 
 domain. This result opens up a very fruitful perspective on 
 filtering and filter design, together with alternative 
 approaches to the implementation of filtering devices, as we 
 will see momentarily. 
 
 \medskip  \smallskip 
 
 \subsection{LTI ``Eigenfunctions''}\index{eigenfunctions}
 Consider the case of a complex exponential sequence of 
 frequency $\omega_0$ as the input to a linear time-invariant 
 system $\mathcal{H}$; we have 
 \begin{align}
 \mathcal{H}\{e^{j\omega_0 n}\} 
 & =   \sum_{k=-\infty}^{\infty} e^{j\omega_0 k}h[n-k] \nonumber 
 \\& 
 =  \sum_{k=-\infty}^{\infty} h[k]\, e^{j\omega_0 (n-k)} \nonumber 
 \\& 
 =  e^{j\omega_0 n}\sum_{k=-\infty}^{\infty} h[k]\, e^{-j\omega_0 k} \nonumber \\
 & =  H(e^{j\omega_0})e^{j\omega_0 n}\label{eigenfunction}
 \end{align}
 where $H(e^{j\omega_0})$ (i.e.\ the DTFT of $h[n]$ at 
 $\omega = \omega_0$) is called the 
 \emph{frequency response}\index{filter!frequency response}\index{frequency response}
 of the filter at frequency $\omega_0$.
 The above result states the fundamental fact that 
 \emph{complex exponentials are %functions 
 eigensequences\footnote{In continuous time, complex exponential functions are
 \textit{eigenfunctions\/} of LTI system.
 In discrete time we use the slightly less standard term
 \textit{eigensequences\/} to indicate input signal whose 
 shape is not changed by a filtering operation.}  
 of linear-time 
 invariant systems}. %Some remarks: 
 We notice the following two properties:
 \begin{itemize}
 \item %If move to 
 Using the polar form, $H(e^{j\omega_0}) = 
 A_0\,e^{j\theta_0}$,
 %and the following formula applies: 
 and we can write:
 \[
     \mathcal{H}\{e^{j\omega_0 n}\} = A_0 \,e^{j(\omega_0 n + \theta_0)}
 \]
 i.e.\ the output oscillation is scaled in amplitude by 
 $A_0 = \bigl| H(e^{j\omega_0} \bigr|$, 
 the magnitude of the DTFT, and it is shifted in phase by 
 $\theta_0 = \measuredangle  H(e^{j\omega_0})$, the phase of 
 the DTFT.
 \eject 
 \item If the input to a linear time-invariant system is a 
 sinusoidal oscillation, the output %will 
 is always be a 
 sinusoidal oscillation %of 
 at the same frequency (or zero if 
 $H(e^{j\omega_0}) = 0$). In other words, linear 
 time-invariant systems cannot shift or duplicate 
 frequencies.\footnote{This strength is also a weakness in 
 some applications and that is why sometimes \emph{nonlinear 
 transformations} are necessary.} 
 \end{itemize}
 
 \medskip 
 \subsection{The Convolution and Modulation Theorems}\label{convtheosec}
 Consider two sequences $x[n]$ and $h[n]$, both absolutely 
 summable.  The discrete-time Fourier transform of the 
 convolution $y[n] = x[n] * h[n]$ is 
 \begin{equation}\label{eq:mb.105}\index{convolution!theorem|mie}
 Y(e^{j \omega}) = X(e^{j \omega}) H(e^{j \omega})
 \end{equation}
 The proof is as follows: if we take the DTFT of the 
 convolution sum, we have 
 \[
 Y(e^{j \omega}) = \sum_{n=-\infty}^{\infty} \sum_{k=-
 \infty}^{\infty} x[k]h[n-k] \, e^{-j\omega n} 
 \]
 and by interchanging the order of summation (which can be 
 done because of the absolute summability of both sequences) 
 and by splitting the complex exponential, we obtain 
 \[
 Y(e^{j \omega}) = \sum_{k=-\infty}^{\infty} x[k]\, e^{-j\omega k}
  \sum_{n=-\infty}^{\infty} h[n-k] \, e^{-j\omega (n-k)}
 \]
 from which the result immediately follows after a change of 
 variable. Before discussing the implications of the theorem, 
 we %went %need 
 to state and prove its dual, which is called the modulation 
 theorem. 
 
 Consider now the discrete-time sequences $x[n]$ and $w[n]$, 
 both absolutely summable, with discrete-time Fourier 
 transforms $X(e^{j \omega})$ and $W(e^{j \omega})$.  The 
 discrete-time Fourier transform of the product $y[n] = 
 x[n]w[n]$ is\index{modulation!theorem} 
 \begin{equation}\label{eq:mb.109}
 Y(e^{j \omega}) = X(e^{j \omega}) * W(e^{j \omega})
 \end{equation}
 where the DTFT convolution is via the convolution operator 
 for $2\pi$-periodic functions,  defined in~(\ref{DTFTconv}). 
 This is easily proven as follows: we %start from 
 begin with the DTFT 
 inversion formula of the DTFT convolution: 
 \begin{align*}
 &   \frac{1}{2\pi}  \int_{- \pi}^{\pi} (X \ast Y)(e^{j 
 \omega})\, e^{j \omega n}\, d \omega  \\
 &\qquad \quad =
  \frac{1}{2\pi}  \int_{- \pi}^{\pi} \frac{1}{2\pi}  \int_{- \pi}^{\pi} 
 X(e^{j(\omega - \sigma)}) Y(e^{j \sigma})\, e^{j \omega n}\, 
 d \sigma d \omega 
 %=
 \end{align*}
 and we split the last integral to obtain
 \begin{align*}
  &\left(\frac{1}{2\pi}  \int_{- \pi}^{\pi} X(e^{j(\omega - \sigma)}) 
 \, e^{j(\omega - \sigma)n} \, d \omega\right) 
 \left( \frac{1}{2\pi} \int_{- \pi}^{\pi}  Y(e^{j \sigma}) \,
 e^{j \sigma n} \,d \sigma \right)  
 \\
 &\qquad \quad = x[n]y[n]
 \end{align*}
 These fundamental results are summarized in Table~\ref{ModConvTable}.
 
 \medskip
 \begin{table}[h]
 \renewcommand{\arraystretch}{1.5}
 \begin{center}\small
 \caption{The convolution and modulation theorems.}\label{ModConvTable}
 \begin{tabular}{|c|c|}
 \hline
 \bf Time Domain & \bf Frequency Domain \\
 \hline
 $x[n] \ast y[n]$ & $X(e^{j \omega}) Y(e^{j \omega})$ \\
 \hline
 $x[n] y[n]$ & $X(e^{j \omega})\ast Y(e^{j \omega})$\\
 \hline
 \end{tabular}
 \end{center}
 \end{table}
 
 
 \medskip \medskip 
 
 
 \subsection{Properties of the Frequency Response}
 Since an LTI system is completely characterized by its 
 impulse response, it is also uniquely characterized by its 
 frequency response. The frequency response provides us with 
 a different perspective on the properties of a given filter, 
 which are embedded in the magnitude and the phase of the 
 response. 
 
 Just as the impulse response completely characterizes a 
 filter in the\linebreak discrete-time domain, its Fourier transform, 
 called the filter's \emph{frequency response}, completely 
 characterizes the filter in the frequency domain. The  
 properties of LTI systems are described in terms of their 
 DTFTs magnitude and phase, each of which controls different 
 features of the system's behavior. 
 
 
 \smallskip 
 \itempar{Magnitude.}\label{TypesOfFilters}%
 \index{frequency response!magnitude}\index{magnitude response}
 The most powerful intuition arising from the convolution 
 theorem is obtained by considering the magnitude of the 
 spectra involved in a filtering operation. Recall that a 
 Fourier spectrum represents the energy distribution of a 
 signal in frequency; by appropriately ``shaping'' the 
 magnitude spectrum of a filter's impulse response we can 
 easily boost, attenuate, and even completely eliminate, a 
 given part of the frequency content in the filtered input 
 sequence. According to the way the magnitude spectrum is 
 affected by the filter, we can classify filters into three 
 broad categories (here as before we assume that the impulse 
 response is real, and therefore the associated magnitude 
 spectrum is symmetric; %also
 in addition, the $2\pi$ periodicity of the 
 spectrum is implicitly understood): 
 \eject
 \begin{itemize}
 \item \textbf{Lowpass filters}\index{lowpass!filter},
  for which the magnitude of the transform is concentrated 
  around $\omega = 0$; these filters preserve the low-
  frequency energy of the input signals and attenuate or 
  eliminate the high-frequency components. 
 \item \textbf{Highpass filters}\index{highpass!filter}, for 
 which the magnitude of the transform is concentrated around 
 $\omega = \pm\pi$; these filters preserve the high-frequency 
 energy of the input signals and attenuate or eliminate the 
 low-frequency components. 
 \item \textbf{Bandpass filters}\index{bandpass!filter}, for 
 which the magnitude of the transform is concentrated around 
 $\omega = \pm\omega_p$; these filters preserve the energy of 
 the input signals around the frequency $\omega_p$ and 
 attenuate the signals elsewhere, notably around $\omega = 0$ 
 and $\omega = \pm\pi$. 
 \item \textbf{Allpass filters}\index{allpass filter},
  for which the magnitude of the transform is a 
  \emph{constant} over the entire $[-\pi, \pi]$ interval. 
  These filters do not affect their input's spectral 
  magnitude (except for a constant gain factor) and they are 
  designed entirely in terms of their phase response 
  (typically, to introduce, or compensate for, a delay). 
 \end{itemize}
 The frequency interval (or intervals) for which the 
 magnitude of the frequency response is zero (or practically 
 negligible) is called the \emph{stopband}\index{stopband}. 
 Conversely, the frequency interval (or intervals) for which 
 the magnitude is non-negligible is called the 
 \emph{passband}\index{passband}. 
 
 \itempar{Phase.}\label{filterPhaseDef}%
 \index{frequency response!phase}\index{phase response}
 The phase response of a filter has an equally important 
 effect on the output signal, even though its impact is less 
 intuitive. 
 
 By and large, the phase response acts as a generalized 
 delay\index{delay}.
 Consider Equation~(\ref{eigenfunction}) once more; we can 
 see that a single sinusoidal oscillation undergoes a phase 
 shift equal to the phase of the impulse response's Fourier 
 transform. A phase offset for a sinusoid is equivalent to a 
 delay in the time domain. This is immediately obvious in the case of
 % to see for 
 a trigonometric function defined on the real line since we can 
 always write 
 \[
     \cos(\omega t + \phi) = \cos \bigl(\omega (t-t_0) \bigr), 
 \qquad \quad t_0 = - \frac{\phi }{ \omega}
 \]
 For discrete-time sinusoids, it is not always possible to 
 express the phase offset in terms of an integer number of 
 samples (exactly for the same reasons for which a discrete-
 time sinusoid is not always periodic in its index $n$); yet 
 the effect is the same, in that a phase offset corresponds 
 to an implicit delay of the sinusoid. When the phase offset 
 for a complex exponential is not an integer multiple of its 
 frequency, we say that we are in the presence of a 
 \emph{fractional delay}.
 Now, since each sinusoidal component of the input signal may 
 be delayed by an arbitrary amount, the output signal will be 
 composed of sinusoids whose relative alignment may be very 
 different %than 
 from the original. Phase alignment determines the 
 shape of the signal in the time domain, as we have seen in 
 Section~\ref{PhaseDef}. A filter with unit magnitude across 
 the spectrum, which does not affect the amplitude of the 
 sinusoidal components, but whose phase response is not 
 linear, %will 
 can
 completely change the shape of a filtered 
 signal.\footnote{In all fairness, the phase response of a 
 system is not very important in most audio applications, 
 since the human ear is largely insensitive to phase. Phase 
 is however extremely important in data transmission 
 applications.} 
 
 \medskip 
 \itempar{Linear Phase.}\index{phase!linear|mie}\index{linear phase|mie}
 A very important type of phase response is \emph{linear 
 phase\/}:
 %which can be expressed as follow:
 \begin{equation}\label{LinearPhase}
 \measuredangle H(e^{j\omega}) = e^{-j\omega d}
 \end{equation}
 Consider a simple system which just delays \index{delay} its 
 input, i.e.\ $y[n] = x[n-D]$ with $D \in \mathbb{Z}$; this 
 is obviously an LTI system with impulse response $h[n] = 
 \delta[n-D]$ and frequency response $H(e^{j\omega}) = e^{-
 j\omega D }$. This means that, if the value $d$ 
 in~(\ref{LinearPhase}) is an integer, 
 (\ref{LinearPhase})~defines a pure delay system; since the 
 magnitude is constant and equal to one, this is an example 
 of an allpass filter. If $d$ is not an integer, 
 (\ref{LinearPhase})~still defines an allpass delay system 
 for which the delay is fractional, and we should interpret 
 its effect as explained in the previous 
 Section.\index{delay!fractional} \index{fractional delay} In 
 particular, if we think of the original signal in terms of 
 its Fourier reconstruction formula, the fractionally delayed 
 output is obtained by stepping forward the initial phase of 
 \emph{all} oscillators by a non-integer multiple of the 
 frequency. In the discrete-time domains, we %will then 
 have a 
 signal which takes values ``between'' the original samples 
 but, since the relative phase of any one oscillator, with 
 respect to the others, has remained the same as in the 
 original signal, the shape of the signal in the time domain 
 is unchanged. 
 
 For a general filter with linear phase we can always write
 \[
     H(e^{j\omega}) = \bigl| H(e^{j\omega}) \bigr| e^{-j\omega d}
 \]
 In other words, the net effect of the linear phase filter is that of a 
 cascade of two systems: a zero-phase filter which affects 
 only the spectral magnitude of the input and therefore 
 introduces no phase distortion, followed by a (possibly 
 fractional) delay system (which, again, introduces just a 
 delay but no phase distortion). 
 %\eject
 
 \medskip 
 \itempar{Group Delay.}
 When a filter does not have linear phase, it is important to 
 quantify the amount of phase distortion both in amount and 
 in location. Nonlinear phase is not always a problem; if a 
 filter's phase is nonlinear just in the stopband, for 
 instance, the actual phase distortion is negligible. The 
 concept of group delay is a measure of nonlinearity in the 
 phase; the idea is to express the phase response around any 
 given frequency $\omega_0$ using a first order Taylor 
 approximation. Define $\varphi(\omega) = \measuredangle 
 H(e^{j\omega})$ and approximate $\varphi(\omega)$ around 
 $\omega_0$ as $\varphi(\omega_0 + \tau) = \varphi(\omega_0) 
 + \tau\varphi'(\omega_0)$; we can write \index{group 
 delay|mie} 
 \begin{align}
 H\bigl(e^{j(\omega_0 + \tau)}\bigr) & =  
 \left| H\bigl(e^{j(\omega_0 + \tau)} \bigr) \right| 
 \,e^{j\varphi(\omega_0 + \tau)} \nonumber \\
 & \approx  \left( \left|H\bigl(e^{j(\omega_0 + \tau)} \bigr) \right|\, 
 e^{j\varphi(\omega_0)} \right) e^{j\varphi'(\omega_0)\tau}
 \end{align}
 so that, approximately, the frequency response of the filter 
 is linear phase for at least a \emph{group} of frequencies 
 around a given $\omega_0$. The delay for this group of 
 frequencies is the negative of the derivative of the phase, 
 from which the definition of group delay  is 
 \begin{equation}
     \mbox{grd} \bigl\{ H(e^{j\omega}) \bigr\} 
 = -\varphi'(\omega) = -\frac{d \measuredangle H(e^{j\omega})}{d\omega}
 \end{equation}
 For truly linear phase systems, the group delay is a 
 constant. Deviations from a constant value quantify the 
 amount of phase distortion introduced by a filter in terms 
 of the (possibly non-integer) number of samples by wich a frequency 
 component is delayed. 
 
 
 \medskip \medskip 
 \section{Filtering by Example -- Frequency Domain}
 \noindent
 Now that we know what to look for in a filter, we can 
 revisit the ``empirical'' de-noising filters introduced in 
 Section~\ref{IntroFiltering}. Both filters are realizable, 
 in the sense that they can be implemented with practical and 
 efficient algorithms, as we will study in the next Chapters. 
 Their frequency responses %will 
 allow us to qualify and 
 quantify precisely their smoothing properties, which we 
 previously described, in an intuitive fashion. 
 
 
 \smallskip 
 \itempar{Moving Average.}
 The frequency response of the moving average filter 
 (Sect.~\ref{MovingAverage}) can be shown to be\index{moving average} 
 \begin{equation}\label{MAfreqresp}
  H(e^{j\omega}) = \frac{1}{N} \,
 \frac{\sin(\omega N/2)}{\sin(\omega/2)}\, e^{-j\frac{N-1}{2}\omega}
 \end{equation}
 In the above expression,  it is %immediate necessary 
 easy to separate the magnitude and the phase, which are 
 plotted in Figure~\ref{MAResp}. %5.8 
 %Note that the phase is ``wrapped'' onto the interval $[-\pi, 
 %\pi]$, which is customary plotting practice (that is, 
 %the phase is plotted modulo a $2\pi$ interval of choice, 
 %which is usually the $[-\pi, \pi]$ interval).
 The group delay for the filter is the constant $(N-1)/2$, 
 which means that the filter delays its output by \mbox{$(N-
 1)/2$} 
 samples (i.e.\ there is a fractional delay for $N$ even). 
 This formalizes the intuition that the ``representative 
 sample'' for an averaging window 
 \pagebreak%
 of $N$ samples is the\linebreak
 %% 5.8 %%%%%%%%%%%%%
 \begin{figure}[H]
 \vskip-5mm
   \center\small
   \def\numZ{8 }
   \begin{tabular}{c}
     \begin{psDFplot}[dy=0.2,pifrac=4]{0}{1.1}
       \psDFplotFunction[linewidth=1.2pt]{x 2 div dup \numZ mul RadtoDeg sin exch RadtoDeg sin \numZ mul div abs}
       \DFylabel{Magnitude $|H(e^{j\omega})|$}
     \end{psDFplot}
     \\
     \begin{psDFplot}[dy=3.14,pifrac=4]{-3.5}{3.5}
       \psDFplotFunction[linewidth=1.2pt]{\numZ 1 sub -2 div x mul %
                     dup 3.14 div truncate abs 1 add cvi 2 idiv
                     x 0 gt {-6.28} {6.28} ifelse mul sub}
       \DFylabel{Phase (radians)}
     \end{psDFplot}
   \end{tabular}
 \vskip-5mm
   \caption{Magnitude and phase response of the moving 
   average filter for $N=\numZ$.}\label{MAResp} 
 \end{figure}
 %%%%%%%%%%
 
 
 \medskip 
  
 \noindent sample in the middle. If $N$ is even, this does not
 % coincide 
 correspond
 to a real sample but to a ``ghost'' sample in the middle. 
 
 \smallskip 
 \itempar{Leaky Integrator.}
 The frequency response of the leaky integrator in Section 
 \ref{leakyIntegrator} is\index{leaky integrator} 
 \begin{equation}
  H(e^{j\omega}) = \frac{1-\lambda}{1 - \lambda e^{-j\omega}}
 \end{equation}
 Magnitude and phase are, respectively,
 \begin{align}
  \bigl|H(e^{j\omega}) \bigr|^2 & = 
  \frac{(1-\lambda)^2}{1 + \lambda^2 - 2\lambda\cos(\omega)} \\
  \measuredangle H(e^{j\omega}) & =  
 \arctan \!\left[ -\frac{\lambda\sin(\omega)}{1-
 \lambda\cos(\omega)} \right]
 \end{align}
 and they are plotted in Figure~\ref{LeakyResp}. The group 
 delay, also plotted in Figure~\ref{LeakyResp}, %5.9 
 is obtained 
 by differentiating the phase response: 
 \begin{equation}
  \mbox{grd} \bigl\{H(e^{j\omega}) \bigr\} 
 = \frac{\lambda\cos(\omega) - \lambda^2}{1 + \lambda^2 - 2\lambda\cos(\omega)}
 \end{equation}
 %\noindent
 The group delay indicates that, for the frequencies for 
 which the magnitude is not very small, the delay increases 
 with the smoothing power of the filter. 
 
 Note that, according to the classification in 
 Section~\ref{TypesOfFilters}, both the moving average and 
 the leaky integrator are lowpass filters. 
 %5.9%%%%%%%%%%%%
 \begin{figure}[H]
 \vspace*{3mm}
   \center\small
   \def\pole{0.9 }
   \begin{tabular}{c}
     \begin{psDFplot}[dy=0.2,pifrac=3]{0}{1.1}
       \def\fresp{\pole 1 sub dup mul 1 \pole \pole mul add  x RadtoDeg cos 2 mul \pole mul sub div abs sqrt}
       \psDFplotFunction[linewidth=1.2pt]{\fresp}
       \DFylabel{Magnitude $|H(e^{j\omega})|$}
     \end{psDFplot}
     \\[2.5mm] 
     \begin{psDFplot}[dy=1,pifrac=3]{-2}{2}
       \psDFplotFunction[linewidth=1.2pt,fmax=0]{\pole x RadtoDeg sin mul -1 mul 1 \pole x RadtoDeg cos mul sub atan DegtoRad}
 
       \psDFplotFunction[linewidth=1.2pt,fmin=0]{\pole x RadtoDeg sin mul  1 \pole x RadtoDeg cos mul sub atan DegtoRad -1 mul}
       \DFylabel{Phase (radians)}
     \end{psDFplot}
     \\[2.5mm] 
     \begin{psDFplot}[dy=5,pifrac=3]{-1}{12}
       \DFylabel{Group delay (samples)}
       \psDFplotFunction[linewidth=1.2pt]{x RadtoDeg cos \pole mul \pole \pole mul
   2 copy exch 2 mul sub 1 add 3 1 roll exch sub exch div -1 mul}
     \end{psDFplot}
   \end{tabular}
 \vskip-3mm
   \caption{Magnitude and phase response of the leaky 
   integrator for $\lambda=0.9$.}\label{LeakyResp} 
 \end{figure}
 %%%%%%%%%%
 \eject
 
 \end{comment}
 
 
 
diff --git a/writing/sp4comm.multipub/50-filters/data/filtering-example-1.txt b/writing/sp4comm.multipub/50-filters/data/filtering-example-1.txt
new file mode 100644
index 0000000..cbb3df9
--- /dev/null
+++ b/writing/sp4comm.multipub/50-filters/data/filtering-example-1.txt
@@ -0,0 +1,602 @@
+-50.000000  -1.958149  
+-49.000000  -2.078339  
+-48.000000  -2.265369  
+-47.000000  -2.477059  
+-46.000000  -2.667753  
+-45.000000  -2.767787  
+-44.000000  -2.808315  
+-43.000000  -2.803968  
+-42.000000  -2.779954  
+-41.000000  -2.777578  
+-40.000000  -2.799067  
+-39.000000  -2.851765  
+-38.000000  -2.933050  
+-37.000000  -3.040970  
+-36.000000  -3.142445  
+-35.000000  -3.213972  
+-34.000000  -3.238792  
+-33.000000  -3.185576  
+-32.000000  -3.104751  
+-31.000000  -3.027846  
+-30.000000  -2.984988  
+-29.000000  -3.024980  
+-28.000000  -3.107473  
+-27.000000  -3.208962  
+-26.000000  -3.301050  
+-25.000000  -3.345186  
+-24.000000  -3.347860  
+-23.000000  -3.314082  
+-22.000000  -3.260238  
+-21.000000  -3.195618  
+-20.000000  -3.169664  
+-19.000000  -3.210388  
+-18.000000  -3.330311  
+-17.000000  -3.566902  
+-16.000000  -3.820482  
+-15.000000  -4.030240  
+-14.000000  -4.145957  
+-13.000000  -4.077527  
+-12.000000  -3.935166  
+-11.000000  -3.784407  
+-10.000000  -3.692377  
+-9.000000  -3.774410  
+-8.000000  -3.946178  
+-7.000000  -4.165024  
+-6.000000  -4.377688  
+-5.000000  -4.483533  
+-4.000000  -4.534736  
+-3.000000  -4.546599  
+-2.000000  -4.543427  
+-1.000000  -4.589338  
+0.000000  -4.639838  
+1.000000  -4.685557  
+2.000000  -4.717368  
+3.000000  -4.692413  
+4.000000  -4.674554  
+5.000000  -4.689289  
+6.000000  -4.753715  
+7.000000  -4.920924  
+8.000000  -5.095046  
+9.000000  -5.225776  
+10.000000  -5.272302  
+11.000000  -5.151411  
+12.000000  -4.975191  
+13.000000  -4.806844  
+14.000000  -4.706976  
+15.000000  -4.780760  
+16.000000  -4.933857  
+17.000000  -5.113546  
+18.000000  -5.258965  
+19.000000  -5.271298  
+20.000000  -5.196445  
+21.000000  -5.055329  
+22.000000  -4.885001  
+23.000000  -4.749476  
+24.000000  -4.655322  
+25.000000  -4.621114  
+26.000000  -4.653568  
+27.000000  -4.743653  
+28.000000  -4.880512  
+29.000000  -5.041821  
+30.000000  -5.201431  
+31.000000  -5.339896  
+32.000000  -5.428807  
+33.000000  -5.455704  
+34.000000  -5.421579  
+35.000000  -5.317909  
+36.000000  -5.206695  
+37.000000  -5.127994  
+38.000000  -5.112112  
+39.000000  -5.211143  
+40.000000  -5.351878  
+41.000000  -5.488145  
+42.000000  -5.573859  
+43.000000  -5.531424  
+44.000000  -5.419954  
+45.000000  -5.271032  
+46.000000  -5.123687  
+47.000000  -5.048617  
+48.000000  -5.012519  
+49.000000  -5.005891  
+50.000000  -5.011940  
+51.000000  -4.992974  
+52.000000  -4.966418  
+53.000000  -4.934389  
+54.000000  -4.902218  
+55.000000  -4.882307  
+56.000000  -4.869406  
+57.000000  -4.862182  
+58.000000  -4.856582  
+59.000000  -4.846911  
+60.000000  -4.824254  
+61.000000  -4.780430  
+62.000000  -4.709013  
+63.000000  -4.605347  
+64.000000  -4.473038  
+65.000000  -4.318516  
+66.000000  -4.151898  
+67.000000  -3.987049  
+68.000000  -3.834932  
+69.000000  -3.706836  
+70.000000  -3.611375  
+71.000000  -3.547954  
+72.000000  -3.523854  
+73.000000  -3.534738  
+74.000000  -3.569105  
+75.000000  -3.619435  
+76.000000  -3.647486  
+77.000000  -3.626704  
+78.000000  -3.537737  
+79.000000  -3.360140  
+80.000000  -3.121294  
+81.000000  -2.847035  
+82.000000  -2.569507  
+83.000000  -2.334854  
+84.000000  -2.147814  
+85.000000  -2.019451  
+86.000000  -1.952911  
+87.000000  -1.923132  
+88.000000  -1.952180  
+89.000000  -2.032178  
+90.000000  -2.144026  
+91.000000  -2.292978  
+92.000000  -2.386258  
+93.000000  -2.371588  
+94.000000  -2.215584  
+95.000000  -1.867271  
+96.000000  -1.428241  
+97.000000  -0.973676  
+98.000000  -0.581227  
+99.000000  -0.355236  
+100.000000  -0.261170  
+101.000000  -0.278319  
+102.000000  -0.364439  
+103.000000  -0.441509  
+104.000000  -0.498815  
+105.000000  -0.507214  
+106.000000  -0.448375  
+107.000000  -0.328566  
+108.000000  -0.133660  
+109.000000  0.125817  
+110.000000  0.428450  
+111.000000  0.759816  
+112.000000  1.064215  
+113.000000  1.305787  
+114.000000  1.461710  
+115.000000  1.501993  
+116.000000  1.481998  
+117.000000  1.443599  
+118.000000  1.429912  
+119.000000  1.504906  
+120.000000  1.637465  
+121.000000  1.811849  
+122.000000  2.003367  
+123.000000  2.163533  
+124.000000  2.307709  
+125.000000  2.434952  
+126.000000  2.549361  
+127.000000  2.665040  
+128.000000  2.775834  
+129.000000  2.882007  
+130.000000  2.982064  
+131.000000  3.080716  
+132.000000  3.163134  
+133.000000  3.224486  
+134.000000  3.265313  
+135.000000  3.273174  
+136.000000  3.293229  
+137.000000  3.351237  
+138.000000  3.466305  
+139.000000  3.670077  
+140.000000  3.914622  
+141.000000  4.167330  
+142.000000  4.394098  
+143.000000  4.550722  
+144.000000  4.651034  
+145.000000  4.705308  
+146.000000  4.734604  
+147.000000  4.761446  
+148.000000  4.816872  
+149.000000  4.920211  
+150.000000  5.076947  
+151.000000  5.303088  
+152.000000  5.530396  
+153.000000  5.712562  
+154.000000  5.810737  
+155.000000  5.767503  
+156.000000  5.644819  
+157.000000  5.485875  
+158.000000  5.340924  
+159.000000  5.280050  
+160.000000  5.291928  
+161.000000  5.372909  
+162.000000  5.503630  
+163.000000  5.654156  
+164.000000  5.792899  
+165.000000  5.892126  
+166.000000  5.935356  
+167.000000  5.900013  
+168.000000  5.834260  
+169.000000  5.773506  
+170.000000  5.751948  
+171.000000  5.820009  
+172.000000  5.941943  
+173.000000  6.094588  
+174.000000  6.246798  
+175.000000  6.351686  
+176.000000  6.410775  
+177.000000  6.419560  
+178.000000  6.383740  
+179.000000  6.315139  
+180.000000  6.235488  
+181.000000  6.164646  
+182.000000  6.117712  
+183.000000  6.117224  
+184.000000  6.135432  
+185.000000  6.154316  
+186.000000  6.155416  
+187.000000  6.103047  
+188.000000  6.027353  
+189.000000  5.942130  
+190.000000  5.862325  
+191.000000  5.824276  
+192.000000  5.792798  
+193.000000  5.754273  
+194.000000  5.696598  
+195.000000  5.581827  
+196.000000  5.462827  
+197.000000  5.363209  
+198.000000  5.301658  
+199.000000  5.332152  
+200.000000  5.375243  
+201.000000  5.393821  
+202.000000  5.359067  
+203.000000  5.196262  
+204.000000  5.019358  
+205.000000  4.887054  
+206.000000  4.848903  
+207.000000  5.004301  
+208.000000  5.224258  
+209.000000  5.434377  
+210.000000  5.560023  
+211.000000  5.473360  
+212.000000  5.271051  
+213.000000  5.002987  
+214.000000  4.730810  
+215.000000  4.571798  
+216.000000  4.465657  
+217.000000  4.397122  
+218.000000  4.342832  
+219.000000  4.233246  
+220.000000  4.132620  
+221.000000  4.062079  
+222.000000  4.040363  
+223.000000  4.115672  
+224.000000  4.220562  
+225.000000  4.319203  
+226.000000  4.377312  
+227.000000  4.339345  
+228.000000  4.249009  
+229.000000  4.130807  
+230.000000  4.014740  
+231.000000  3.946191  
+232.000000  3.912701  
+233.000000  3.909238  
+234.000000  3.921346  
+235.000000  3.933122  
+236.000000  3.918762  
+237.000000  3.861873  
+238.000000  3.756983  
+239.000000  3.582534  
+240.000000  3.405138  
+241.000000  3.264825  
+242.000000  3.192834  
+243.000000  3.253397  
+244.000000  3.356361  
+245.000000  3.450857  
+246.000000  3.489078  
+247.000000  3.374123  
+248.000000  3.204503  
+249.000000  3.027593  
+250.000000  2.889971  
+251.000000  2.897541  
+252.000000  2.937091  
+253.000000  2.957099  
+254.000000  2.909679  
+255.000000  2.689147  
+256.000000  2.420636  
+257.000000  2.168878  
+258.000000  1.997415  
+259.000000  2.023197  
+260.000000  2.141593  
+261.000000  2.298074  
+262.000000  2.430746  
+263.000000  2.426197  
+264.000000  2.353302  
+265.000000  2.238089  
+266.000000  2.115480  
+267.000000  2.062143  
+268.000000  2.026750  
+269.000000  1.993176  
+270.000000  1.941906  
+271.000000  1.831452  
+272.000000  1.698046  
+273.000000  1.560151  
+274.000000  1.440759  
+275.000000  1.371864  
+276.000000  1.354077  
+277.000000  1.390021  
+278.000000  1.473751  
+279.000000  1.591906  
+280.000000  1.725331  
+281.000000  1.852750  
+282.000000  1.954236  
+283.000000  2.011074  
+284.000000  2.020697  
+285.000000  1.984832  
+286.000000  1.912275  
+287.000000  1.821660  
+288.000000  1.722940  
+289.000000  1.631698  
+290.000000  1.562776  
+291.000000  1.519345  
+292.000000  1.523395  
+293.000000  1.580448  
+294.000000  1.686289  
+295.000000  1.843693  
+296.000000  2.002978  
+297.000000  2.130287  
+298.000000  2.198465  
+299.000000  2.170844  
+300.000000  2.086543  
+301.000000  1.974240  
+302.000000  1.867567  
+303.000000  1.820624  
+304.000000  1.816118  
+305.000000  1.850742  
+306.000000  1.914092  
+307.000000  1.966004  
+308.000000  2.034884  
+309.000000  2.120530  
+310.000000  2.217714  
+311.000000  2.355363  
+312.000000  2.451730  
+313.000000  2.470859  
+314.000000  2.393520  
+315.000000  2.161722  
+316.000000  1.906986  
+317.000000  1.706496  
+318.000000  1.625070  
+319.000000  1.773201  
+320.000000  2.022174  
+321.000000  2.292753  
+322.000000  2.500398  
+323.000000  2.513334  
+324.000000  2.403160  
+325.000000  2.207959  
+326.000000  1.986156  
+327.000000  1.832735  
+328.000000  1.747989  
+329.000000  1.747305  
+330.000000  1.826293  
+331.000000  1.964630  
+332.000000  2.125456  
+333.000000  2.268904  
+334.000000  2.359570  
+335.000000  2.356345  
+336.000000  2.281110  
+337.000000  2.152548  
+338.000000  1.998430  
+339.000000  1.862577  
+340.000000  1.747343  
+341.000000  1.661858  
+342.000000  1.607062  
+343.000000  1.572355  
+344.000000  1.553844  
+345.000000  1.540418  
+346.000000  1.520819  
+347.000000  1.488917  
+348.000000  1.435720  
+349.000000  1.360953  
+350.000000  1.270877  
+351.000000  1.169031  
+352.000000  1.083799  
+353.000000  1.033710  
+354.000000  1.030616  
+355.000000  1.083786  
+356.000000  1.169210  
+357.000000  1.261120  
+358.000000  1.328584  
+359.000000  1.348515  
+360.000000  1.288028  
+361.000000  1.134882  
+362.000000  0.895569  
+363.000000  0.565589  
+364.000000  0.235027  
+365.000000  -0.033505  
+366.000000  -0.189480  
+367.000000  -0.159485  
+368.000000  -0.023564  
+369.000000  0.163763  
+370.000000  0.340845  
+371.000000  0.407266  
+372.000000  0.405653  
+373.000000  0.349686  
+374.000000  0.264261  
+375.000000  0.208766  
+376.000000  0.150601  
+377.000000  0.083686  
+378.000000  -0.001762  
+379.000000  -0.127921  
+380.000000  -0.278677  
+381.000000  -0.446213  
+382.000000  -0.618663  
+383.000000  -0.788035  
+384.000000  -0.932038  
+385.000000  -1.038653  
+386.000000  -1.103892  
+387.000000  -1.108646  
+388.000000  -1.106717  
+389.000000  -1.128638  
+390.000000  -1.197681  
+391.000000  -1.369097  
+392.000000  -1.563102  
+393.000000  -1.739385  
+394.000000  -1.864456  
+395.000000  -1.857961  
+396.000000  -1.830440  
+397.000000  -1.838026  
+398.000000  -1.929568  
+399.000000  -2.202751  
+400.000000  -2.535742  
+401.000000  -2.858776  
+402.000000  -3.100836  
+403.000000  -3.147330  
+404.000000  -3.076502  
+405.000000  -2.931848  
+406.000000  -2.772145  
+407.000000  -2.692293  
+408.000000  -2.679274  
+409.000000  -2.739415  
+410.000000  -2.862878  
+411.000000  -3.022347  
+412.000000  -3.201164  
+413.000000  -3.377040  
+414.000000  -3.533710  
+415.000000  -3.650163  
+416.000000  -3.752651  
+417.000000  -3.859431  
+418.000000  -3.988705  
+419.000000  -4.167572  
+420.000000  -4.373065  
+421.000000  -4.587940  
+422.000000  -4.788978  
+423.000000  -4.951329  
+424.000000  -5.057726  
+425.000000  -5.099269  
+426.000000  -5.079760  
+427.000000  -5.000759  
+428.000000  -4.914847  
+429.000000  -4.862494  
+430.000000  -4.878410  
+431.000000  -5.006640  
+432.000000  -5.212840  
+433.000000  -5.470417  
+434.000000  -5.744093  
+435.000000  -5.976600  
+436.000000  -6.172520  
+437.000000  -6.322905  
+438.000000  -6.425883  
+439.000000  -6.503375  
+440.000000  -6.531861  
+441.000000  -6.511262  
+442.000000  -6.447942  
+443.000000  -6.334970  
+444.000000  -6.224510  
+445.000000  -6.147931  
+446.000000  -6.129075  
+447.000000  -6.205059  
+448.000000  -6.328537  
+449.000000  -6.468603  
+450.000000  -6.592732  
+451.000000  -6.643545  
+452.000000  -6.658141  
+453.000000  -6.651376  
+454.000000  -6.641319  
+455.000000  -6.672325  
+456.000000  -6.703660  
+457.000000  -6.719731  
+458.000000  -6.705963  
+459.000000  -6.639196  
+460.000000  -6.547829  
+461.000000  -6.454035  
+462.000000  -6.385558  
+463.000000  -6.358696  
+464.000000  -6.411207  
+465.000000  -6.555474  
+466.000000  -6.783388  
+467.000000  -7.105219  
+468.000000  -7.408999  
+469.000000  -7.620771  
+470.000000  -7.682775  
+471.000000  -7.512362  
+472.000000  -7.211604  
+473.000000  -6.854120  
+474.000000  -6.523043  
+475.000000  -6.341241  
+476.000000  -6.274836  
+477.000000  -6.313380  
+478.000000  -6.425520  
+479.000000  -6.536826  
+480.000000  -6.656284  
+481.000000  -6.763497  
+482.000000  -6.842694  
+483.000000  -6.904186  
+484.000000  -6.908465  
+485.000000  -6.845918  
+486.000000  -6.718620  
+487.000000  -6.519545  
+488.000000  -6.308795  
+489.000000  -6.127218  
+490.000000  -6.008517  
+491.000000  -5.993722  
+492.000000  -6.044911  
+493.000000  -6.130808  
+494.000000  -6.211673  
+495.000000  -6.239853  
+496.000000  -6.200861  
+497.000000  -6.085694  
+498.000000  -5.901951  
+499.000000  -5.651744  
+500.000000  -5.399227  
+501.000000  -5.187574  
+502.000000  -5.047522  
+503.000000  -5.040643  
+504.000000  -5.072355  
+505.000000  -5.088891  
+506.000000  -5.042743  
+507.000000  -4.840376  
+508.000000  -4.591884  
+509.000000  -4.357921  
+510.000000  -4.199048  
+511.000000  -4.215116  
+512.000000  -4.325322  
+513.000000  -4.481069  
+514.000000  -4.620359  
+515.000000  -4.656596  
+516.000000  -4.589830  
+517.000000  -4.415072  
+518.000000  -4.150544  
+519.000000  -3.824832  
+520.000000  -3.500547  
+521.000000  -3.231758  
+522.000000  -3.060357  
+523.000000  -3.037542  
+524.000000  -3.108462  
+525.000000  -3.229764  
+526.000000  -3.350070  
+527.000000  -3.390621  
+528.000000  -3.369974  
+529.000000  -3.289917  
+530.000000  -3.164003  
+531.000000  -3.031236  
+532.000000  -2.879919  
+533.000000  -2.716530  
+534.000000  -2.545706  
+535.000000  -2.363957  
+536.000000  -2.185119  
+537.000000  -2.015080  
+538.000000  -1.858279  
+539.000000  -1.718961  
+540.000000  -1.595302  
+541.000000  -1.485610  
+542.000000  -1.387296  
+543.000000  -1.296943  
+544.000000  -1.212669  
+545.000000  -1.132441  
+546.000000  -1.054607  
+547.000000  -0.977756  
+548.000000  -0.900419  
+549.000000  -0.820935  
+
+
diff --git a/writing/sp4comm.multipub/50-filters/data/filtering-example-2.1.txt b/writing/sp4comm.multipub/50-filters/data/filtering-example-2.1.txt
new file mode 100644
index 0000000..3a896a0
--- /dev/null
+++ b/writing/sp4comm.multipub/50-filters/data/filtering-example-2.1.txt
@@ -0,0 +1,601 @@
+-50.000000  -1.965021  
+-49.000000  -2.018244  
+-48.000000  -2.171854  
+-47.000000  -2.371214  
+-46.000000  -2.572406  
+-45.000000  -2.717770  
+-44.000000  -2.788051  
+-43.000000  -2.806141  
+-42.000000  -2.791961  
+-41.000000  -2.778766  
+-40.000000  -2.788323  
+-39.000000  -2.825416  
+-38.000000  -2.892408  
+-37.000000  -2.987010  
+-36.000000  -3.091707  
+-35.000000  -3.178208  
+-34.000000  -3.226382  
+-33.000000  -3.212184  
+-32.000000  -3.145163  
+-31.000000  -3.066299  
+-30.000000  -3.006417  
+-29.000000  -3.004984  
+-28.000000  -3.066226  
+-27.000000  -3.158218  
+-26.000000  -3.255006  
+-25.000000  -3.323118  
+-24.000000  -3.346523  
+-23.000000  -3.330971  
+-22.000000  -3.287160  
+-21.000000  -3.227928  
+-20.000000  -3.182641  
+-19.000000  -3.190026  
+-18.000000  -3.270349  
+-17.000000  -3.448606  
+-16.000000  -3.693692  
+-15.000000  -3.925361  
+-14.000000  -4.088098  
+-13.000000  -4.111742  
+-12.000000  -4.006347  
+-11.000000  -3.859787  
+-10.000000  -3.738392  
+-9.000000  -3.733394  
+-8.000000  -3.860294  
+-7.000000  -4.055601  
+-6.000000  -4.271356  
+-5.000000  -4.430611  
+-4.000000  -4.509135  
+-3.000000  -4.540667  
+-2.000000  -4.545013  
+-1.000000  -4.566383  
+0.000000  -4.614588  
+1.000000  -4.662698  
+2.000000  -4.701463  
+3.000000  -4.704890  
+4.000000  -4.683483  
+5.000000  -4.681921  
+6.000000  -4.721502  
+7.000000  -4.837319  
+8.000000  -5.007985  
+9.000000  -5.160411  
+10.000000  -5.249039  
+11.000000  -5.211856  
+12.000000  -5.063301  
+13.000000  -4.891017  
+14.000000  -4.756910  
+15.000000  -4.743868  
+16.000000  -4.857309  
+17.000000  -5.023702  
+18.000000  -5.186255  
+19.000000  -5.265131  
+20.000000  -5.233871  
+21.000000  -5.125887  
+22.000000  -4.970165  
+23.000000  -4.817239  
+24.000000  -4.702399  
+25.000000  -4.638218  
+26.000000  -4.637341  
+27.000000  -4.698611  
+28.000000  -4.812082  
+29.000000  -4.961166  
+30.000000  -5.121626  
+31.000000  -5.270664  
+32.000000  -5.384352  
+33.000000  -5.442256  
+34.000000  -5.438642  
+35.000000  -5.369744  
+36.000000  -5.262302  
+37.000000  -5.167345  
+38.000000  -5.120053  
+39.000000  -5.161628  
+40.000000  -5.281511  
+41.000000  -5.420012  
+42.000000  -5.531002  
+43.000000  -5.552641  
+44.000000  -5.475689  
+45.000000  -5.345493  
+46.000000  -5.197360  
+47.000000  -5.086152  
+48.000000  -5.030568  
+49.000000  -5.009205  
+50.000000  -5.008916  
+51.000000  -5.002457  
+52.000000  -4.979696  
+53.000000  -4.950403  
+54.000000  -4.918303  
+55.000000  -4.892262  
+56.000000  -4.875857  
+57.000000  -4.865794  
+58.000000  -4.859382  
+59.000000  -4.851747  
+60.000000  -4.835583  
+61.000000  -4.802342  
+62.000000  -4.744721  
+63.000000  -4.657180  
+64.000000  -4.539192  
+65.000000  -4.395777  
+66.000000  -4.235207  
+67.000000  -4.069474  
+68.000000  -3.910991  
+69.000000  -3.770884  
+70.000000  -3.659105  
+71.000000  -3.579664  
+72.000000  -3.535904  
+73.000000  -3.529296  
+74.000000  -3.551921  
+75.000000  -3.594270  
+76.000000  -3.633461  
+77.000000  -3.637095  
+78.000000  -3.582220  
+79.000000  -3.448938  
+80.000000  -3.240717  
+81.000000  -2.984165  
+82.000000  -2.708271  
+83.000000  -2.452180  
+84.000000  -2.241334  
+85.000000  -2.083633  
+86.000000  -1.986181  
+87.000000  -1.938021  
+88.000000  -1.937656  
+89.000000  -1.992179  
+90.000000  -2.088102  
+91.000000  -2.218502  
+92.000000  -2.339618  
+93.000000  -2.378923  
+94.000000  -2.293586  
+95.000000  -2.041428  
+96.000000  -1.647756  
+97.000000  -1.200959  
+98.000000  -0.777452  
+99.000000  -0.468232  
+100.000000  -0.308203  
+101.000000  -0.269744  
+102.000000  -0.321379  
+103.000000  -0.402974  
+104.000000  -0.470162  
+105.000000  -0.503015  
+106.000000  -0.477795  
+107.000000  -0.388471  
+108.000000  -0.231113  
+109.000000  -0.003922  
+110.000000  0.277133  
+111.000000  0.594133  
+112.000000  0.912015  
+113.000000  1.185001  
+114.000000  1.383749  
+115.000000  1.481852  
+116.000000  1.491996  
+117.000000  1.462799  
+118.000000  1.436756  
+119.000000  1.467409  
+120.000000  1.571185  
+121.000000  1.724657  
+122.000000  1.907608  
+123.000000  2.083450  
+124.000000  2.235621  
+125.000000  2.371331  
+126.000000  2.492156  
+127.000000  2.607201  
+128.000000  2.720437  
+129.000000  2.828920  
+130.000000  2.932035  
+131.000000  3.031390  
+132.000000  3.121925  
+133.000000  3.193810  
+134.000000  3.244899  
+135.000000  3.269243  
+136.000000  3.283201  
+137.000000  3.322233  
+138.000000  3.408771  
+139.000000  3.568191  
+140.000000  3.792349  
+141.000000  4.040976  
+142.000000  4.280714  
+143.000000  4.472410  
+144.000000  4.600878  
+145.000000  4.678171  
+146.000000  4.719956  
+147.000000  4.748025  
+148.000000  4.789159  
+149.000000  4.868542  
+150.000000  4.998579  
+151.000000  5.190017  
+152.000000  5.416742  
+153.000000  5.621479  
+154.000000  5.761649  
+155.000000  5.789120  
+156.000000  5.706161  
+157.000000  5.565347  
+158.000000  5.413399  
+159.000000  5.310487  
+160.000000  5.285989  
+161.000000  5.332419  
+162.000000  5.438269  
+163.000000  5.578893  
+164.000000  5.723528  
+165.000000  5.842513  
+166.000000  5.913741  
+167.000000  5.917684  
+168.000000  5.867136  
+169.000000  5.803883  
+170.000000  5.762727  
+171.000000  5.785978  
+172.000000  5.880976  
+173.000000  6.018266  
+174.000000  6.170693  
+175.000000  6.299242  
+176.000000  6.381230  
+177.000000  6.415167  
+178.000000  6.401650  
+179.000000  6.349439  
+180.000000  6.275313  
+181.000000  6.200067  
+182.000000  6.141179  
+183.000000  6.117468  
+184.000000  6.126328  
+185.000000  6.144874  
+186.000000  6.154866  
+187.000000  6.129231  
+188.000000  6.065200  
+189.000000  5.984742  
+190.000000  5.902227  
+191.000000  5.843300  
+192.000000  5.808537  
+193.000000  5.773536  
+194.000000  5.725436  
+195.000000  5.639212  
+196.000000  5.522327  
+197.000000  5.413018  
+198.000000  5.332434  
+199.000000  5.316905  
+200.000000  5.353697  
+201.000000  5.384532  
+202.000000  5.376444  
+203.000000  5.277664  
+204.000000  5.107810  
+205.000000  4.953206  
+206.000000  4.867979  
+207.000000  4.926602  
+208.000000  5.114279  
+209.000000  5.329317  
+210.000000  5.497200  
+211.000000  5.516691  
+212.000000  5.372205  
+213.000000  5.137019  
+214.000000  4.866898  
+215.000000  4.651304  
+216.000000  4.518728  
+217.000000  4.431389  
+218.000000  4.369977  
+219.000000  4.288039  
+220.000000  4.182933  
+221.000000  4.097350  
+222.000000  4.051221  
+223.000000  4.078017  
+224.000000  4.168117  
+225.000000  4.269882  
+226.000000  4.348257  
+227.000000  4.358329  
+228.000000  4.294177  
+229.000000  4.189908  
+230.000000  4.072773  
+231.000000  3.980465  
+232.000000  3.929446  
+233.000000  3.910970  
+234.000000  3.915292  
+235.000000  3.927234  
+236.000000  3.925942  
+237.000000  3.890317  
+238.000000  3.809428  
+239.000000  3.669758  
+240.000000  3.493836  
+241.000000  3.334982  
+242.000000  3.228829  
+243.000000  3.223115  
+244.000000  3.304879  
+245.000000  3.403609  
+246.000000  3.469967  
+247.000000  3.431600  
+248.000000  3.289313  
+249.000000  3.116048  
+250.000000  2.958782  
+251.000000  2.893756  
+252.000000  2.917316  
+253.000000  2.947095  
+254.000000  2.933389  
+255.000000  2.799413  
+256.000000  2.554892  
+257.000000  2.294757  
+258.000000  2.083146  
+259.000000  2.010306  
+260.000000  2.082395  
+261.000000  2.219833  
+262.000000  2.364410  
+263.000000  2.428472  
+264.000000  2.389750  
+265.000000  2.295696  
+266.000000  2.176784  
+267.000000  2.088811  
+268.000000  2.044446  
+269.000000  2.009963  
+270.000000  1.967541  
+271.000000  1.886679  
+272.000000  1.764749  
+273.000000  1.629099  
+274.000000  1.500455  
+275.000000  1.406312  
+276.000000  1.362970  
+277.000000  1.372049  
+278.000000  1.431886  
+279.000000  1.532828  
+280.000000  1.658618  
+281.000000  1.789041  
+282.000000  1.903493  
+283.000000  1.982655  
+284.000000  2.015886  
+285.000000  2.002765  
+286.000000  1.948553  
+287.000000  1.866968  
+288.000000  1.772300  
+289.000000  1.677319  
+290.000000  1.597237  
+291.000000  1.541060  
+292.000000  1.521370  
+293.000000  1.551921  
+294.000000  1.633368  
+295.000000  1.764991  
+296.000000  1.923336  
+297.000000  2.066633  
+298.000000  2.164376  
+299.000000  2.184655  
+300.000000  2.128694  
+301.000000  2.030392  
+302.000000  1.920904  
+303.000000  1.844095  
+304.000000  1.818371  
+305.000000  1.833430  
+306.000000  1.882417  
+307.000000  1.940048  
+308.000000  2.000444  
+309.000000  2.077707  
+310.000000  2.169122  
+311.000000  2.286539  
+312.000000  2.403546  
+313.000000  2.461295  
+314.000000  2.432190  
+315.000000  2.277621  
+316.000000  2.034354  
+317.000000  1.806741  
+318.000000  1.665783  
+319.000000  1.699136  
+320.000000  1.897687  
+321.000000  2.157463  
+322.000000  2.396576  
+323.000000  2.506866  
+324.000000  2.458247  
+325.000000  2.305560  
+326.000000  2.097057  
+327.000000  1.909446  
+328.000000  1.790362  
+329.000000  1.747647  
+330.000000  1.786799  
+331.000000  1.895462  
+332.000000  2.045043  
+333.000000  2.197180  
+334.000000  2.314237  
+335.000000  2.357958  
+336.000000  2.318728  
+337.000000  2.216829  
+338.000000  2.075489  
+339.000000  1.930504  
+340.000000  1.804960  
+341.000000  1.704601  
+342.000000  1.634460  
+343.000000  1.589708  
+344.000000  1.563099  
+345.000000  1.547131  
+346.000000  1.530619  
+347.000000  1.504868  
+348.000000  1.462318  
+349.000000  1.398336  
+350.000000  1.315915  
+351.000000  1.219954  
+352.000000  1.126415  
+353.000000  1.058755  
+354.000000  1.032163  
+355.000000  1.057201  
+356.000000  1.126498  
+357.000000  1.215165  
+358.000000  1.294852  
+359.000000  1.338550  
+360.000000  1.318272  
+361.000000  1.211455  
+362.000000  1.015225  
+363.000000  0.730579  
+364.000000  0.400308  
+365.000000  0.100761  
+366.000000  -0.111492  
+367.000000  -0.174482  
+368.000000  -0.091525  
+369.000000  0.070100  
+370.000000  0.252304  
+371.000000  0.374056  
+372.000000  0.406460  
+373.000000  0.377669  
+374.000000  0.306974  
+375.000000  0.236514  
+376.000000  0.179684  
+377.000000  0.117143  
+378.000000  0.040962  
+379.000000  -0.064842  
+380.000000  -0.203299  
+381.000000  -0.362445  
+382.000000  -0.532438  
+383.000000  -0.703349  
+384.000000  -0.860036  
+385.000000  -0.985346  
+386.000000  -1.071273  
+387.000000  -1.106269  
+388.000000  -1.107682  
+389.000000  -1.117677  
+390.000000  -1.163159  
+391.000000  -1.283389  
+392.000000  -1.466100  
+393.000000  -1.651244  
+394.000000  -1.801921  
+395.000000  -1.861209  
+396.000000  -1.844200  
+397.000000  -1.834233  
+398.000000  -1.883797  
+399.000000  -2.066160  
+400.000000  -2.369247  
+401.000000  -2.697259  
+402.000000  -2.979806  
+403.000000  -3.124083  
+404.000000  -3.111916  
+405.000000  -3.004175  
+406.000000  -2.851996  
+407.000000  -2.732219  
+408.000000  -2.685784  
+409.000000  -2.709345  
+410.000000  -2.801147  
+411.000000  -2.942613  
+412.000000  -3.111756  
+413.000000  -3.289102  
+414.000000  -3.455375  
+415.000000  -3.591937  
+416.000000  -3.701407  
+417.000000  -3.806041  
+418.000000  -3.924068  
+419.000000  -4.078138  
+420.000000  -4.270318  
+421.000000  -4.480503  
+422.000000  -4.688459  
+423.000000  -4.870153  
+424.000000  -5.004527  
+425.000000  -5.078497  
+426.000000  -5.089514  
+427.000000  -5.040260  
+428.000000  -4.957803  
+429.000000  -4.888671  
+430.000000  -4.870452  
+431.000000  -4.942525  
+432.000000  -5.109740  
+433.000000  -5.341629  
+434.000000  -5.607255  
+435.000000  -5.860347  
+436.000000  -6.074560  
+437.000000  -6.247713  
+438.000000  -6.374394  
+439.000000  -6.464629  
+440.000000  -6.517618  
+441.000000  -6.521562  
+442.000000  -6.479602  
+443.000000  -6.391456  
+444.000000  -6.279740  
+445.000000  -6.186220  
+446.000000  -6.138503  
+447.000000  -6.167067  
+448.000000  -6.266798  
+449.000000  -6.398570  
+450.000000  -6.530668  
+451.000000  -6.618138  
+452.000000  -6.650843  
+453.000000  -6.654758  
+454.000000  -6.646347  
+455.000000  -6.656822  
+456.000000  -6.687993  
+457.000000  -6.711695  
+458.000000  -6.712847  
+459.000000  -6.672580  
+460.000000  -6.593513  
+461.000000  -6.500932  
+462.000000  -6.419796  
+463.000000  -6.372127  
+464.000000  -6.384951  
+465.000000  -6.483340  
+466.000000  -6.669431  
+467.000000  -6.944304  
+468.000000  -7.257109  
+469.000000  -7.514885  
+470.000000  -7.651773  
+471.000000  -7.597568  
+472.000000  -7.361983  
+473.000000  -7.032862  
+474.000000  -6.688582  
+475.000000  -6.432142  
+476.000000  -6.308038  
+477.000000  -6.294108  
+478.000000  -6.369450  
+479.000000  -6.481173  
+480.000000  -6.596555  
+481.000000  -6.709891  
+482.000000  -6.803095  
+483.000000  -6.873440  
+484.000000  -6.906325  
+485.000000  -6.877192  
+486.000000  -6.782269  
+487.000000  -6.619083  
+488.000000  -6.414170  
+489.000000  -6.218007  
+490.000000  -6.067867  
+491.000000  -6.001120  
+492.000000  -6.019317  
+493.000000  -6.087860  
+494.000000  -6.171240  
+495.000000  -6.225763  
+496.000000  -6.220357  
+497.000000  -6.143278  
+498.000000  -5.993822  
+499.000000  -5.776847  
+500.000000  -5.525485  
+501.000000  -5.293400  
+502.000000  -5.117548  
+503.000000  -5.044083  
+504.000000  -5.056499  
+505.000000  -5.080623  
+506.000000  -5.065817  
+507.000000  -4.941559  
+508.000000  -4.716130  
+509.000000  -4.474902  
+510.000000  -4.278485  
+511.000000  -4.207082  
+512.000000  -4.270219  
+513.000000  -4.403196  
+514.000000  -4.550714  
+515.000000  -4.638478  
+516.000000  -4.623213  
+517.000000  -4.502451  
+518.000000  -4.282808  
+519.000000  -3.987688  
+520.000000  -3.662690  
+521.000000  -3.366152  
+522.000000  -3.146057  
+523.000000  -3.048950  
+524.000000  -3.073002  
+525.000000  -3.169113  
+526.000000  -3.289917  
+527.000000  -3.370345  
+528.000000  -3.380297  
+529.000000  -3.329945  
+530.000000  -3.226960  
+531.000000  -3.097619  
+532.000000  -2.955578  
+533.000000  -2.798225  
+534.000000  -2.631118  
+535.000000  -2.454832  
+536.000000  -2.274538  
+537.000000  -2.100100  
+538.000000  -1.936680  
+539.000000  -1.788620  
+540.000000  -1.657131  
+541.000000  -1.540456  
+542.000000  -1.436453  
+543.000000  -1.342120  
+544.000000  -1.254806  
+545.000000  -1.172555  
+546.000000  -1.093524  
+547.000000  -1.016182  
+548.000000  -0.939087  
+549.000000  -0.860677  
+
diff --git a/writing/sp4comm.multipub/50-filters/data/filtering-example-2.2.txt b/writing/sp4comm.multipub/50-filters/data/filtering-example-2.2.txt
new file mode 100644
index 0000000..598fb69
--- /dev/null
+++ b/writing/sp4comm.multipub/50-filters/data/filtering-example-2.2.txt
@@ -0,0 +1,601 @@
+-50.000000  -2.048076  
+-49.000000  -2.017900  
+-48.000000  -2.068437  
+-47.000000  -2.194729  
+-46.000000  -2.372130  
+-45.000000  -2.544492  
+-44.000000  -2.680229  
+-43.000000  -2.761956  
+-42.000000  -2.790006  
+-41.000000  -2.792453  
+-40.000000  -2.790142  
+-39.000000  -2.802091  
+-38.000000  -2.840365  
+-37.000000  -2.906213  
+-36.000000  -2.992057  
+-35.000000  -3.082609  
+-34.000000  -3.159044  
+-33.000000  -3.195196  
+-32.000000  -3.185773  
+-31.000000  -3.139241  
+-30.000000  -3.075790  
+-29.000000  -3.035641  
+-28.000000  -3.036322  
+-27.000000  -3.081601  
+-26.000000  -3.160616  
+-25.000000  -3.240668  
+-24.000000  -3.300764  
+-23.000000  -3.327044  
+-22.000000  -3.316841  
+-21.000000  -3.279449  
+-20.000000  -3.234900  
+-19.000000  -3.208977  
+-18.000000  -3.226495  
+-17.000000  -3.319316  
+-16.000000  -3.482021  
+-15.000000  -3.686984  
+-14.000000  -3.890895  
+-13.000000  -4.018551  
+-12.000000  -4.047223  
+-11.000000  -3.985764  
+-10.000000  -3.872369  
+-9.000000  -3.796590  
+-8.000000  -3.799343  
+-7.000000  -3.894497  
+-6.000000  -4.065825  
+-5.000000  -4.243106  
+-4.000000  -4.390245  
+-3.000000  -4.485639  
+-2.000000  -4.527074  
+-1.000000  -4.553525  
+0.000000  -4.579800  
+1.000000  -4.614540  
+2.000000  -4.658025  
+3.000000  -4.683794  
+4.000000  -4.692473  
+5.000000  -4.693406  
+6.000000  -4.702493  
+7.000000  -4.759620  
+8.000000  -4.864743  
+9.000000  -4.998865  
+10.000000  -5.128512  
+11.000000  -5.186134  
+12.000000  -5.156170  
+13.000000  -5.051437  
+14.000000  -4.910105  
+15.000000  -4.817443  
+16.000000  -4.807109  
+17.000000  -4.883785  
+18.000000  -5.021782  
+19.000000  -5.144416  
+20.000000  -5.210063  
+21.000000  -5.195509  
+22.000000  -5.102018  
+23.000000  -4.971563  
+24.000000  -4.836282  
+25.000000  -4.727728  
+26.000000  -4.669870  
+27.000000  -4.668414  
+28.000000  -4.724712  
+29.000000  -4.829888  
+30.000000  -4.966854  
+31.000000  -5.115915  
+32.000000  -5.252989  
+33.000000  -5.356460  
+34.000000  -5.411497  
+35.000000  -5.406000  
+36.000000  -5.350472  
+37.000000  -5.268544  
+38.000000  -5.191178  
+39.000000  -5.164486  
+40.000000  -5.200782  
+41.000000  -5.290820  
+42.000000  -5.406256  
+43.000000  -5.486326  
+44.000000  -5.503345  
+45.000000  -5.449067  
+46.000000  -5.336524  
+47.000000  -5.215823  
+48.000000  -5.113964  
+49.000000  -5.047679  
+50.000000  -5.019742  
+51.000000  -5.005831  
+52.000000  -4.994306  
+53.000000  -4.976430  
+54.000000  -4.949000  
+55.000000  -4.921333  
+56.000000  -4.897080  
+57.000000  -4.879028  
+58.000000  -4.867619  
+59.000000  -4.858770  
+60.000000  -4.847482  
+61.000000  -4.827044  
+62.000000  -4.790152  
+63.000000  -4.729761  
+64.000000  -4.641957  
+65.000000  -4.526478  
+66.000000  -4.387200  
+67.000000  -4.232625  
+68.000000  -4.073099  
+69.000000  -3.920179  
+70.000000  -3.785048  
+71.000000  -3.675274  
+72.000000  -3.597505  
+73.000000  -3.554480  
+74.000000  -3.543912  
+75.000000  -3.561783  
+76.000000  -3.592691  
+77.000000  -3.615682  
+78.000000  -3.607840  
+79.000000  -3.543016  
+80.000000  -3.411469  
+81.000000  -3.216551  
+82.000000  -2.974494  
+83.000000  -2.718172  
+84.000000  -2.474802  
+85.000000  -2.267907  
+86.000000  -2.113758  
+87.000000  -2.010827  
+88.000000  -1.961918  
+89.000000  -1.965100  
+90.000000  -2.012879  
+91.000000  -2.105341  
+92.000000  -2.213860  
+93.000000  -2.298713  
+94.000000  -2.316602  
+95.000000  -2.210175  
+96.000000  -1.970671  
+97.000000  -1.621193  
+98.000000  -1.212604  
+99.000000  -0.834595  
+100.000000  -0.542827  
+101.000000  -0.368988  
+102.000000  -0.314791  
+103.000000  -0.336359  
+104.000000  -0.395770  
+105.000000  -0.452994  
+106.000000  -0.473978  
+107.000000  -0.445743  
+108.000000  -0.354454  
+109.000000  -0.196196  
+110.000000  0.023010  
+111.000000  0.295106  
+112.000000  0.594574  
+113.000000  0.889567  
+114.000000  1.147882  
+115.000000  1.333426  
+116.000000  1.437872  
+117.000000  1.472325  
+118.000000  1.464376  
+119.000000  1.465104  
+120.000000  1.503970  
+121.000000  1.596033  
+122.000000  1.739397  
+123.000000  1.904054  
+124.000000  2.071615  
+125.000000  2.227391  
+126.000000  2.363889  
+127.000000  2.489266  
+128.000000  2.606297  
+129.000000  2.718060  
+130.000000  2.826236  
+131.000000  2.930155  
+132.000000  3.026980  
+133.000000  3.112600  
+134.000000  3.183412  
+135.000000  3.231527  
+136.000000  3.264050  
+137.000000  3.295738  
+138.000000  3.345986  
+139.000000  3.445212  
+140.000000  3.600560  
+141.000000  3.804584  
+142.000000  4.036532  
+143.000000  4.256693  
+144.000000  4.440796  
+145.000000  4.575290  
+146.000000  4.660417  
+147.000000  4.713098  
+148.000000  4.754558  
+149.000000  4.808283  
+150.000000  4.893869  
+151.000000  5.029280  
+152.000000  5.207661  
+153.000000  5.405748  
+154.000000  5.589196  
+155.000000  5.705300  
+156.000000  5.733905  
+157.000000  5.677233  
+158.000000  5.559780  
+159.000000  5.437917  
+160.000000  5.349694  
+161.000000  5.321453  
+162.000000  5.362129  
+163.000000  5.455656  
+164.000000  5.580899  
+165.000000  5.710703  
+166.000000  5.818634  
+167.000000  5.880099  
+168.000000  5.890439  
+169.000000  5.860784  
+170.000000  5.814932  
+171.000000  5.794931  
+172.000000  5.821852  
+173.000000  5.902122  
+174.000000  6.025834  
+175.000000  6.158754  
+176.000000  6.275961  
+177.000000  6.357204  
+178.000000  6.391440  
+179.000000  6.382303  
+180.000000  6.338482  
+181.000000  6.274753  
+182.000000  6.208246  
+183.000000  6.158768  
+184.000000  6.133754  
+185.000000  6.131171  
+186.000000  6.140597  
+187.000000  6.137053  
+188.000000  6.110033  
+189.000000  6.056986  
+190.000000  5.983714  
+191.000000  5.914021  
+192.000000  5.855382  
+193.000000  5.808418  
+194.000000  5.766986  
+195.000000  5.706374  
+196.000000  5.623881  
+197.000000  5.526115  
+198.000000  5.427380  
+199.000000  5.364961  
+200.000000  5.343065  
+201.000000  5.350718  
+202.000000  5.365070  
+203.000000  5.331098  
+204.000000  5.242127  
+205.000000  5.115435  
+206.000000  4.987894  
+207.000000  4.939904  
+208.000000  4.991129  
+209.000000  5.127960  
+210.000000  5.305740  
+211.000000  5.423004  
+212.000000  5.434703  
+213.000000  5.326855  
+214.000000  5.119552  
+215.000000  4.894161  
+216.000000  4.692813  
+217.000000  4.541347  
+218.000000  4.444352  
+219.000000  4.359714  
+220.000000  4.276455  
+221.000000  4.192694  
+222.000000  4.117077  
+223.000000  4.087683  
+224.000000  4.109669  
+225.000000  4.173950  
+226.000000  4.258187  
+227.000000  4.314106  
+228.000000  4.321217  
+229.000000  4.274119  
+230.000000  4.183475  
+231.000000  4.085187  
+232.000000  4.001110  
+233.000000  3.945718  
+234.000000  3.922369  
+235.000000  3.919102  
+236.000000  3.920617  
+237.000000  3.908776  
+238.000000  3.867685  
+239.000000  3.780038  
+240.000000  3.651632  
+241.000000  3.502370  
+242.000000  3.361333  
+243.000000  3.279048  
+244.000000  3.266854  
+245.000000  3.313362  
+246.000000  3.387423  
+247.000000  3.417605  
+248.000000  3.379640  
+249.000000  3.273824  
+250.000000  3.124047  
+251.000000  3.004902  
+252.000000  2.938049  
+253.000000  2.920425  
+254.000000  2.925352  
+255.000000  2.873254  
+256.000000  2.744140  
+257.000000  2.547085  
+258.000000  2.319019  
+259.000000  2.152531  
+260.000000  2.082771  
+261.000000  2.115069  
+262.000000  2.223402  
+263.000000  2.324152  
+264.000000  2.377080  
+265.000000  2.362084  
+266.000000  2.283267  
+267.000000  2.192253  
+268.000000  2.110615  
+269.000000  2.049387  
+270.000000  2.005994  
+271.000000  1.948321  
+272.000000  1.866145  
+273.000000  1.757889  
+274.000000  1.632602  
+275.000000  1.517705  
+276.000000  1.431713  
+277.000000  1.389180  
+278.000000  1.397428  
+279.000000  1.452439  
+280.000000  1.545252  
+281.000000  1.660935  
+282.000000  1.781056  
+283.000000  1.885848  
+284.000000  1.959689  
+285.000000  1.992710  
+286.000000  1.982220  
+287.000000  1.934866  
+288.000000  1.860427  
+289.000000  1.772143  
+290.000000  1.684768  
+291.000000  1.609190  
+292.000000  1.559303  
+293.000000  1.546491  
+294.000000  1.577369  
+295.000000  1.658456  
+296.000000  1.778352  
+297.000000  1.915812  
+298.000000  2.043856  
+299.000000  2.125644  
+300.000000  2.146535  
+301.000000  2.107523  
+302.000000  2.024799  
+303.000000  1.937244  
+304.000000  1.869637  
+305.000000  1.838763  
+306.000000  1.850394  
+307.000000  1.886739  
+308.000000  1.941430  
+309.000000  2.008877  
+310.000000  2.084783  
+311.000000  2.182123  
+312.000000  2.286334  
+313.000000  2.373917  
+314.000000  2.417868  
+315.000000  2.369458  
+316.000000  2.233272  
+317.000000  2.042181  
+318.000000  1.850069  
+319.000000  1.752938  
+320.000000  1.781735  
+321.000000  1.928299  
+322.000000  2.147131  
+323.000000  2.332165  
+324.000000  2.427412  
+325.000000  2.406213  
+326.000000  2.277652  
+327.000000  2.107503  
+328.000000  1.943710  
+329.000000  1.828546  
+330.000000  1.788581  
+331.000000  1.821554  
+332.000000  1.915921  
+333.000000  2.046321  
+334.000000  2.179640  
+335.000000  2.277569  
+336.000000  2.316482  
+337.000000  2.287393  
+338.000000  2.197108  
+339.000000  2.073666  
+340.000000  1.940225  
+341.000000  1.817552  
+342.000000  1.719710  
+343.000000  1.647155  
+344.000000  1.598780  
+345.000000  1.568420  
+346.000000  1.546859  
+347.000000  1.526000  
+348.000000  1.496469  
+349.000000  1.451602  
+350.000000  1.389117  
+351.000000  1.309145  
+352.000000  1.221165  
+353.000000  1.139354  
+354.000000  1.079289  
+355.000000  1.057978  
+356.000000  1.079331  
+357.000000  1.136183  
+358.000000  1.210675  
+359.000000  1.276857  
+360.000000  1.306562  
+361.000000  1.275002  
+362.000000  1.166748  
+363.000000  0.971017  
+364.000000  0.707767  
+365.000000  0.415670  
+366.000000  0.144408  
+367.000000  -0.036861  
+368.000000  -0.101509  
+369.000000  -0.052191  
+370.000000  0.080390  
+371.000000  0.222078  
+372.000000  0.329382  
+373.000000  0.375863  
+374.000000  0.356717  
+375.000000  0.307091  
+376.000000  0.243329  
+377.000000  0.176829  
+378.000000  0.110323  
+379.000000  0.026151  
+380.000000  -0.081169  
+381.000000  -0.213643  
+382.000000  -0.367869  
+383.000000  -0.532897  
+384.000000  -0.696237  
+385.000000  -0.844347  
+386.000000  -0.965655  
+387.000000  -1.045807  
+388.000000  -1.089477  
+389.000000  -1.111973  
+390.000000  -1.135420  
+391.000000  -1.200533  
+392.000000  -1.314630  
+393.000000  -1.467316  
+394.000000  -1.634010  
+395.000000  -1.756226  
+396.000000  -1.823061  
+397.000000  -1.847721  
+398.000000  -1.863999  
+399.000000  -1.950196  
+400.000000  -2.126522  
+401.000000  -2.381709  
+402.000000  -2.674526  
+403.000000  -2.910671  
+404.000000  -3.045861  
+405.000000  -3.064129  
+406.000000  -2.981956  
+407.000000  -2.868197  
+408.000000  -2.768890  
+409.000000  -2.720782  
+410.000000  -2.743465  
+411.000000  -2.825979  
+412.000000  -2.956451  
+413.000000  -3.115858  
+414.000000  -3.283565  
+415.000000  -3.440519  
+416.000000  -3.578391  
+417.000000  -3.698989  
+418.000000  -3.812738  
+419.000000  -3.942090  
+420.000000  -4.097193  
+421.000000  -4.279320  
+422.000000  -4.479389  
+423.000000  -4.675328  
+424.000000  -4.846493  
+425.000000  -4.974325  
+426.000000  -5.047021  
+427.000000  -5.059378  
+428.000000  -5.023659  
+429.000000  -4.964465  
+430.000000  -4.914128  
+431.000000  -4.915598  
+432.000000  -4.990096  
+433.000000  -5.142077  
+434.000000  -5.358498  
+435.000000  -5.600988  
+436.000000  -5.840908  
+437.000000  -6.054030  
+438.000000  -6.224477  
+439.000000  -6.356171  
+440.000000  -6.446006  
+441.000000  -6.493095  
+442.000000  -6.498610  
+443.000000  -6.456509  
+444.000000  -6.379671  
+445.000000  -6.288838  
+446.000000  -6.209122  
+447.000000  -6.176644  
+448.000000  -6.202650  
+449.000000  -6.282819  
+450.000000  -6.398733  
+451.000000  -6.508354  
+452.000000  -6.590755  
+453.000000  -6.636448  
+454.000000  -6.648595  
+455.000000  -6.655790  
+456.000000  -6.667170  
+457.000000  -6.684259  
+458.000000  -6.700420  
+459.000000  -6.692138  
+460.000000  -6.653180  
+461.000000  -6.586756  
+462.000000  -6.506655  
+463.000000  -6.436530  
+464.000000  -6.402374  
+465.000000  -6.427734  
+466.000000  -6.527191  
+467.000000  -6.713822  
+468.000000  -6.963270  
+469.000000  -7.229595  
+470.000000  -7.454441  
+471.000000  -7.556227  
+472.000000  -7.506878  
+473.000000  -7.315215  
+474.000000  -7.025283  
+475.000000  -6.732502  
+476.000000  -6.498310  
+477.000000  -6.363125  
+478.000000  -6.338744  
+479.000000  -6.387640  
+480.000000  -6.483002  
+481.000000  -6.595532  
+482.000000  -6.699825  
+483.000000  -6.791665  
+484.000000  -6.854710  
+485.000000  -6.875316  
+486.000000  -6.844297  
+487.000000  -6.748137  
+488.000000  -6.598220  
+489.000000  -6.418545  
+490.000000  -6.241019  
+491.000000  -6.109563  
+492.000000  -6.043592  
+493.000000  -6.044490  
+494.000000  -6.095279  
+495.000000  -6.156811  
+496.000000  -6.195799  
+497.000000  -6.184521  
+498.000000  -6.107090  
+499.000000  -5.960063  
+500.000000  -5.759654  
+501.000000  -5.535124  
+502.000000  -5.321517  
+503.000000  -5.168741  
+504.000000  -5.087024  
+505.000000  -5.062353  
+506.000000  -5.061158  
+507.000000  -5.011091  
+508.000000  -4.890974  
+509.000000  -4.708231  
+510.000000  -4.497307  
+511.000000  -4.340992  
+512.000000  -4.274352  
+513.000000  -4.305139  
+514.000000  -4.410467  
+515.000000  -4.520837  
+516.000000  -4.586964  
+517.000000  -4.570464  
+518.000000  -4.453011  
+519.000000  -4.245070  
+520.000000  -3.972749  
+521.000000  -3.676920  
+522.000000  -3.404373  
+523.000000  -3.207551  
+524.000000  -3.109530  
+525.000000  -3.109031  
+526.000000  -3.181460  
+527.000000  -3.269729  
+528.000000  -3.335107  
+529.000000  -3.350145  
+530.000000  -3.303629  
+531.000000  -3.213782  
+532.000000  -3.091269  
+533.000000  -2.947922  
+534.000000  -2.793348  
+535.000000  -2.626528  
+536.000000  -2.452828  
+537.000000  -2.277466  
+538.000000  -2.105609  
+539.000000  -1.944360  
+540.000000  -1.796905  
+541.000000  -1.664538  
+542.000000  -1.546792  
+543.000000  -1.441288  
+544.000000  -1.345630  
+545.000000  -1.257337  
+546.000000  -1.174165  
+547.000000  -1.094368  
+548.000000  -1.016306  
+549.000000  -0.938429  
+
diff --git a/writing/sp4comm.multipub/50-filters/data/filtering-example-2.3.txt b/writing/sp4comm.multipub/50-filters/data/filtering-example-2.3.txt
new file mode 100644
index 0000000..2400394
--- /dev/null
+++ b/writing/sp4comm.multipub/50-filters/data/filtering-example-2.3.txt
@@ -0,0 +1,602 @@
+-50.000000  -2.342642  
+-49.000000  -2.296739  
+-48.000000  -2.270310  
+-47.000000  -2.265675  
+-46.000000  -2.280725  
+-45.000000  -2.305032  
+-44.000000  -2.334288  
+-43.000000  -2.366716  
+-42.000000  -2.403404  
+-41.000000  -2.451615  
+-40.000000  -2.512936  
+-39.000000  -2.586259  
+-38.000000  -2.667500  
+-37.000000  -2.747720  
+-36.000000  -2.820809  
+-35.000000  -2.882219  
+-34.000000  -2.929805  
+-33.000000  -2.964621  
+-32.000000  -2.989324  
+-31.000000  -3.007980  
+-30.000000  -3.025067  
+-29.000000  -3.045683  
+-28.000000  -3.071384  
+-27.000000  -3.101150  
+-26.000000  -3.131817  
+-25.000000  -3.157168  
+-24.000000  -3.174286  
+-23.000000  -3.182629  
+-22.000000  -3.184416  
+-21.000000  -3.185253  
+-20.000000  -3.190662  
+-19.000000  -3.205874  
+-18.000000  -3.234651  
+-17.000000  -3.279811  
+-16.000000  -3.339228  
+-15.000000  -3.407668  
+-14.000000  -3.478077  
+-13.000000  -3.539106  
+-12.000000  -3.588048  
+-11.000000  -3.627242  
+-10.000000  -3.663253  
+-9.000000  -3.711486  
+-8.000000  -3.776195  
+-7.000000  -3.855748  
+-6.000000  -3.943030  
+-5.000000  -4.019416  
+-4.000000  -4.078937  
+-3.000000  -4.121967  
+-2.000000  -4.155089  
+-1.000000  -4.197740  
+0.000000  -4.256463  
+1.000000  -4.331559  
+2.000000  -4.416975  
+3.000000  -4.493475  
+4.000000  -4.554173  
+5.000000  -4.597862  
+6.000000  -4.629197  
+7.000000  -4.665646  
+8.000000  -4.712339  
+9.000000  -4.768937  
+10.000000  -4.829677  
+11.000000  -4.876516  
+12.000000  -4.904462  
+13.000000  -4.914569  
+14.000000  -4.913703  
+15.000000  -4.921066  
+16.000000  -4.942674  
+17.000000  -4.978029  
+18.000000  -5.020133  
+19.000000  -5.049331  
+20.000000  -5.057781  
+21.000000  -5.043577  
+22.000000  -5.011302  
+23.000000  -4.977807  
+24.000000  -4.951152  
+25.000000  -4.935674  
+26.000000  -4.931224  
+27.000000  -4.928131  
+28.000000  -4.923686  
+29.000000  -4.917709  
+30.000000  -4.912914  
+31.000000  -4.918631  
+32.000000  -4.937994  
+33.000000  -4.971359  
+34.000000  -5.016074  
+35.000000  -5.063443  
+36.000000  -5.109391  
+37.000000  -5.151631  
+38.000000  -5.189843  
+39.000000  -5.228800  
+40.000000  -5.268081  
+41.000000  -5.305275  
+42.000000  -5.336310  
+43.000000  -5.352271  
+44.000000  -5.351533  
+45.000000  -5.336144  
+46.000000  -5.311319  
+47.000000  -5.288878  
+48.000000  -5.272697  
+49.000000  -5.262522  
+50.000000  -5.254174  
+51.000000  -5.235993  
+52.000000  -5.203872  
+53.000000  -5.157725  
+54.000000  -5.101755  
+55.000000  -5.047662  
+56.000000  -5.001783  
+57.000000  -4.967712  
+58.000000  -4.945454  
+59.000000  -4.928645  
+60.000000  -4.912956  
+61.000000  -4.894168  
+62.000000  -4.868924  
+63.000000  -4.836621  
+64.000000  -4.795506  
+65.000000  -4.744184  
+66.000000  -4.681657  
+67.000000  -4.607052  
+68.000000  -4.520846  
+69.000000  -4.424567  
+70.000000  -4.320800  
+71.000000  -4.212553  
+72.000000  -4.104187  
+73.000000  -4.000379  
+74.000000  -3.905387  
+75.000000  -3.823227  
+76.000000  -3.754431  
+77.000000  -3.696780  
+78.000000  -3.645600  
+79.000000  -3.593358  
+80.000000  -3.533888  
+81.000000  -3.462238  
+82.000000  -3.375416  
+83.000000  -3.274324  
+84.000000  -3.159654  
+85.000000  -3.033380  
+86.000000  -2.898697  
+87.000000  -2.757339  
+88.000000  -2.616063  
+89.000000  -2.483186  
+90.000000  -2.367043  
+91.000000  -2.278113  
+92.000000  -2.216860  
+93.000000  -2.177240  
+94.000000  -2.147746  
+95.000000  -2.108781  
+96.000000  -2.048817  
+97.000000  -1.961669  
+98.000000  -1.847362  
+99.000000  -1.716704  
+100.000000  -1.575786  
+101.000000  -1.429631  
+102.000000  -1.281332  
+103.000000  -1.127043  
+104.000000  -0.969756  
+105.000000  -0.814392  
+106.000000  -0.667124  
+107.000000  -0.538899  
+108.000000  -0.431017  
+109.000000  -0.339393  
+110.000000  -0.255253  
+111.000000  -0.162332  
+112.000000  -0.051883  
+113.000000  0.080126  
+114.000000  0.232305  
+115.000000  0.394263  
+116.000000  0.559331  
+117.000000  0.721899  
+118.000000  0.878423  
+119.000000  1.031212  
+120.000000  1.178806  
+121.000000  1.319308  
+122.000000  1.450551  
+123.000000  1.567528  
+124.000000  1.671152  
+125.000000  1.765250  
+126.000000  1.855887  
+127.000000  1.952808  
+128.000000  2.060627  
+129.000000  2.180495  
+130.000000  2.309841  
+131.000000  2.441158  
+132.000000  2.568297  
+133.000000  2.686017  
+134.000000  2.791179  
+135.000000  2.883649  
+136.000000  2.965776  
+137.000000  3.042133  
+138.000000  3.118545  
+139.000000  3.202298  
+140.000000  3.297197  
+141.000000  3.404307  
+142.000000  3.521977  
+143.000000  3.644477  
+144.000000  3.768469  
+145.000000  3.891871  
+146.000000  4.014312  
+147.000000  4.138334  
+148.000000  4.265305  
+149.000000  4.396052  
+150.000000  4.530273  
+151.000000  4.666357  
+152.000000  4.801005  
+153.000000  4.929774  
+154.000000  5.047827  
+155.000000  5.149226  
+156.000000  5.232041  
+157.000000  5.297088  
+158.000000  5.347615  
+159.000000  5.390832  
+160.000000  5.430420  
+161.000000  5.468145  
+162.000000  5.503702  
+163.000000  5.532957  
+164.000000  5.554833  
+165.000000  5.569796  
+166.000000  5.580181  
+167.000000  5.591224  
+168.000000  5.607010  
+169.000000  5.630980  
+170.000000  5.665232  
+171.000000  5.710228  
+172.000000  5.764396  
+173.000000  5.824536  
+174.000000  5.886467  
+175.000000  5.944594  
+176.000000  5.996084  
+177.000000  6.040037  
+178.000000  6.077402  
+179.000000  6.111996  
+180.000000  6.145432  
+181.000000  6.178027  
+182.000000  6.208507  
+183.000000  6.233275  
+184.000000  6.249399  
+185.000000  6.254376  
+186.000000  6.246761  
+187.000000  6.226041  
+188.000000  6.194089  
+189.000000  6.154304  
+190.000000  6.110852  
+191.000000  6.069947  
+192.000000  6.033056  
+193.000000  5.998859  
+194.000000  5.963766  
+195.000000  5.919149  
+196.000000  5.863099  
+197.000000  5.797173  
+198.000000  5.726027  
+199.000000  5.661785  
+200.000000  5.607443  
+201.000000  5.561751  
+202.000000  5.519812  
+203.000000  5.467478  
+204.000000  5.403025  
+205.000000  5.330756  
+206.000000  5.260115  
+207.000000  5.211988  
+208.000000  5.192107  
+209.000000  5.198038  
+210.000000  5.219568  
+211.000000  5.231335  
+212.000000  5.222653  
+213.000000  5.190083  
+214.000000  5.137729  
+215.000000  5.085690  
+216.000000  5.039548  
+217.000000  4.998720  
+218.000000  4.956548  
+219.000000  4.892293  
+220.000000  4.801324  
+221.000000  4.686965  
+222.000000  4.560327  
+223.000000  4.447186  
+224.000000  4.359646  
+225.000000  4.302664  
+226.000000  4.273205  
+227.000000  4.253834  
+228.000000  4.235780  
+229.000000  4.213588  
+230.000000  4.186247  
+231.000000  4.162325  
+232.000000  4.143999  
+233.000000  4.131262  
+234.000000  4.121344  
+235.000000  4.106131  
+236.000000  4.080981  
+237.000000  4.042871  
+238.000000  3.991177  
+239.000000  3.928109  
+240.000000  3.857786  
+241.000000  3.785621  
+242.000000  3.717129  
+243.000000  3.659396  
+244.000000  3.613034  
+245.000000  3.574836  
+246.000000  3.538814  
+247.000000  3.492230  
+248.000000  3.432709  
+249.000000  3.363185  
+250.000000  3.290934  
+251.000000  3.233852  
+252.000000  3.194848  
+253.000000  3.169204  
+254.000000  3.145608  
+255.000000  3.098587  
+256.000000  3.020610  
+257.000000  2.913778  
+258.000000  2.789473  
+259.000000  2.676896  
+260.000000  2.588320  
+261.000000  2.527527  
+262.000000  2.489258  
+263.000000  2.449979  
+264.000000  2.401330  
+265.000000  2.341413  
+266.000000  2.275229  
+267.000000  2.222979  
+268.000000  2.190155  
+269.000000  2.175513  
+270.000000  2.170888  
+271.000000  2.154909  
+272.000000  2.117947  
+273.000000  2.056453  
+274.000000  1.973954  
+275.000000  1.886093  
+276.000000  1.802824  
+277.000000  1.732152  
+278.000000  1.678675  
+279.000000  1.639488  
+280.000000  1.614370  
+281.000000  1.602668  
+282.000000  1.603695  
+283.000000  1.618664  
+284.000000  1.645551  
+285.000000  1.680942  
+286.000000  1.720235  
+287.000000  1.757718  
+288.000000  1.788456  
+289.000000  1.808596  
+290.000000  1.816015  
+291.000000  1.809968  
+292.000000  1.793140  
+293.000000  1.770448  
+294.000000  1.748119  
+295.000000  1.734171  
+296.000000  1.732694  
+297.000000  1.744815  
+298.000000  1.768664  
+299.000000  1.797763  
+300.000000  1.828063  
+301.000000  1.856609  
+302.000000  1.882008  
+303.000000  1.907114  
+304.000000  1.931508  
+305.000000  1.954033  
+306.000000  1.973016  
+307.000000  1.983209  
+308.000000  1.985868  
+309.000000  1.985054  
+310.000000  1.986659  
+311.000000  2.002035  
+312.000000  2.032467  
+313.000000  2.073852  
+314.000000  2.117682  
+315.000000  2.146107  
+316.000000  2.153679  
+317.000000  2.141658  
+318.000000  2.117573  
+319.000000  2.101506  
+320.000000  2.100447  
+321.000000  2.114799  
+322.000000  2.138356  
+323.000000  2.151520  
+324.000000  2.147473  
+325.000000  2.125565  
+326.000000  2.091617  
+327.000000  2.064202  
+328.000000  2.050952  
+329.000000  2.054353  
+330.000000  2.071121  
+331.000000  2.087074  
+332.000000  2.095681  
+333.000000  2.093693  
+334.000000  2.081958  
+335.000000  2.068875  
+336.000000  2.058704  
+337.000000  2.054087  
+338.000000  2.055110  
+339.000000  2.057596  
+340.000000  2.057543  
+341.000000  2.050422  
+342.000000  2.032153  
+343.000000  1.999463  
+344.000000  1.951829  
+345.000000  1.891122  
+346.000000  1.821226  
+347.000000  1.748940  
+348.000000  1.678491  
+349.000000  1.612525  
+350.000000  1.551895  
+351.000000  1.494100  
+352.000000  1.438804  
+353.000000  1.386459  
+354.000000  1.338422  
+355.000000  1.297708  
+356.000000  1.265655  
+357.000000  1.242380  
+358.000000  1.226360  
+359.000000  1.214660  
+360.000000  1.202353  
+361.000000  1.183513  
+362.000000  1.152238  
+363.000000  1.101951  
+364.000000  1.031220  
+365.000000  0.942285  
+366.000000  0.840610  
+367.000000  0.737005  
+368.000000  0.637607  
+369.000000  0.546160  
+370.000000  0.463849  
+371.000000  0.385411  
+372.000000  0.311880  
+373.000000  0.246447  
+374.000000  0.193838  
+375.000000  0.164103  
+376.000000  0.157067  
+377.000000  0.166833  
+378.000000  0.182476  
+379.000000  0.185107  
+380.000000  0.163847  
+381.000000  0.113016  
+382.000000  0.033057  
+383.000000  -0.066552  
+384.000000  -0.178026  
+385.000000  -0.293721  
+386.000000  -0.407733  
+387.000000  -0.517518  
+388.000000  -0.622294  
+389.000000  -0.723321  
+390.000000  -0.822981  
+391.000000  -0.926413  
+392.000000  -1.033448  
+393.000000  -1.141212  
+394.000000  -1.245028  
+395.000000  -1.334189  
+396.000000  -1.409056  
+397.000000  -1.475670  
+398.000000  -1.544476  
+399.000000  -1.635652  
+400.000000  -1.754737  
+401.000000  -1.898915  
+402.000000  -2.057512  
+403.000000  -2.205698  
+404.000000  -2.331814  
+405.000000  -2.431186  
+406.000000  -2.506827  
+407.000000  -2.576355  
+408.000000  -2.647091  
+409.000000  -2.722207  
+410.000000  -2.799983  
+411.000000  -2.868282  
+412.000000  -2.923734  
+413.000000  -2.966923  
+414.000000  -3.002996  
+415.000000  -3.044898  
+416.000000  -3.101244  
+417.000000  -3.178543  
+418.000000  -3.279923  
+419.000000  -3.402863  
+420.000000  -3.544012  
+421.000000  -3.698056  
+422.000000  -3.858564  
+423.000000  -4.019312  
+424.000000  -4.174026  
+425.000000  -4.317545  
+426.000000  -4.446382  
+427.000000  -4.558932  
+428.000000  -4.655782  
+429.000000  -4.739370  
+430.000000  -4.813512  
+431.000000  -4.883435  
+432.000000  -4.953416  
+433.000000  -5.026956  
+434.000000  -5.106549  
+435.000000  -5.191988  
+436.000000  -5.284888  
+437.000000  -5.386857  
+438.000000  -5.499034  
+439.000000  -5.624252  
+440.000000  -5.759003  
+441.000000  -5.896401  
+442.000000  -6.027195  
+443.000000  -6.137889  
+444.000000  -6.222195  
+445.000000  -6.278654  
+446.000000  -6.310736  
+447.000000  -6.329774  
+448.000000  -6.342776  
+449.000000  -6.354917  
+450.000000  -6.368821  
+451.000000  -6.380502  
+452.000000  -6.391026  
+453.000000  -6.402702  
+454.000000  -6.418816  
+455.000000  -6.446929  
+456.000000  -6.486859  
+457.000000  -6.534509  
+458.000000  -6.582583  
+459.000000  -6.618761  
+460.000000  -6.637035  
+461.000000  -6.635821  
+462.000000  -6.618556  
+463.000000  -6.594819  
+464.000000  -6.574241  
+465.000000  -6.566249  
+466.000000  -6.578089  
+467.000000  -6.614163  
+468.000000  -6.672941  
+469.000000  -6.748028  
+470.000000  -6.829429  
+471.000000  -6.902193  
+472.000000  -6.957507  
+473.000000  -6.990848  
+474.000000  -7.002305  
+475.000000  -7.000850  
+476.000000  -6.989486  
+477.000000  -6.969312  
+478.000000  -6.939489  
+479.000000  -6.892123  
+480.000000  -6.829397  
+481.000000  -6.757957  
+482.000000  -6.687951  
+483.000000  -6.637269  
+484.000000  -6.612008  
+485.000000  -6.611324  
+486.000000  -6.627622  
+487.000000  -6.642481  
+488.000000  -6.645311  
+489.000000  -6.629797  
+490.000000  -6.595047  
+491.000000  -6.549788  
+492.000000  -6.498841  
+493.000000  -6.446117  
+494.000000  -6.393532  
+495.000000  -6.338171  
+496.000000  -6.279204  
+497.000000  -6.215852  
+498.000000  -6.147796  
+499.000000  -6.075479  
+500.000000  -5.999682  
+501.000000  -5.921378  
+502.000000  -5.841295  
+503.000000  -5.761872  
+504.000000  -5.680825  
+505.000000  -5.593999  
+506.000000  -5.496588  
+507.000000  -5.379965  
+508.000000  -5.245884  
+509.000000  -5.101903  
+510.000000  -4.959994  
+511.000000  -4.840275  
+512.000000  -4.750783  
+513.000000  -4.691908  
+514.000000  -4.656311  
+515.000000  -4.624307  
+516.000000  -4.584096  
+517.000000  -4.527945  
+518.000000  -4.453595  
+519.000000  -4.368966  
+520.000000  -4.278021  
+521.000000  -4.184174  
+522.000000  -4.089284  
+523.000000  -3.991152  
+524.000000  -3.889747  
+525.000000  -3.785472  
+526.000000  -3.679615  
+527.000000  -3.574117  
+528.000000  -3.472462  
+529.000000  -3.378699  
+530.000000  -3.296487  
+531.000000  -3.230354  
+532.000000  -3.178635  
+533.000000  -3.135700  
+534.000000  -3.092812  
+535.000000  -3.036680  
+536.000000  -2.959735  
+537.000000  -2.858511  
+538.000000  -2.734195  
+539.000000  -2.594890  
+540.000000  -2.447001  
+541.000000  -2.296642  
+542.000000  -2.148583  
+543.000000  -2.004059  
+544.000000  -1.865121  
+545.000000  -1.733114  
+546.000000  -1.608855  
+547.000000  -1.493339  
+548.000000  -1.386280  
+549.000000  -1.286768  
+
+
diff --git a/writing/sp4comm.multipub/50-filters/data/filtering-example-2.4.txt b/writing/sp4comm.multipub/50-filters/data/filtering-example-2.4.txt
new file mode 100644
index 0000000..6792d74
--- /dev/null
+++ b/writing/sp4comm.multipub/50-filters/data/filtering-example-2.4.txt
@@ -0,0 +1,602 @@
+-50.000000  -2.493243  
+-49.000000  -2.497061  
+-48.000000  -2.504039  
+-47.000000  -2.514135  
+-46.000000  -2.526460  
+-45.000000  -2.538925  
+-44.000000  -2.550209  
+-43.000000  -2.559484  
+-42.000000  -2.566593  
+-41.000000  -2.572434  
+-40.000000  -2.577786  
+-39.000000  -2.583484  
+-38.000000  -2.590202  
+-37.000000  -2.598271  
+-36.000000  -2.607674  
+-35.000000  -2.618035  
+-34.000000  -2.628719  
+-33.000000  -2.638757  
+-32.000000  -2.647658  
+-31.000000  -2.655296  
+-30.000000  -2.661924  
+-29.000000  -2.668392  
+-28.000000  -2.675236  
+-27.000000  -2.682830  
+-26.000000  -2.691304  
+-25.000000  -2.700361  
+-24.000000  -2.709771  
+-23.000000  -2.719270  
+-22.000000  -2.728636  
+-21.000000  -2.737744  
+-20.000000  -2.746586  
+-19.000000  -2.755267  
+-18.000000  -2.763977  
+-17.000000  -2.773062  
+-16.000000  -2.782634  
+-15.000000  -2.792673  
+-14.000000  -2.803040  
+-13.000000  -2.813322  
+-12.000000  -2.823464  
+-11.000000  -2.833585  
+-10.000000  -2.843963  
+-9.000000  -2.855237  
+-8.000000  -2.867599  
+-7.000000  -2.881021  
+-6.000000  -2.895274  
+-5.000000  -2.909687  
+-4.000000  -2.924089  
+-3.000000  -2.938560  
+-2.000000  -2.953411  
+-1.000000  -2.969453  
+0.000000  -2.986952  
+1.000000  -3.005898  
+2.000000  -3.026014  
+3.000000  -3.046441  
+4.000000  -3.066893  
+5.000000  -3.087342  
+6.000000  -3.108010  
+7.000000  -3.129730  
+8.000000  -3.152631  
+9.000000  -3.176531  
+10.000000  -3.200971  
+11.000000  -3.224850  
+12.000000  -3.247917  
+13.000000  -3.270361  
+14.000000  -3.292766  
+15.000000  -3.316433  
+16.000000  -3.341892  
+17.000000  -3.369214  
+18.000000  -3.397960  
+19.000000  -3.426923  
+20.000000  -3.455198  
+21.000000  -3.482030  
+22.000000  -3.506970  
+23.000000  -3.530101  
+24.000000  -3.551628  
+25.000000  -3.571988  
+26.000000  -3.591767  
+27.000000  -3.611525  
+28.000000  -3.631902  
+29.000000  -3.653433  
+30.000000  -3.676465  
+31.000000  -3.701267  
+32.000000  -3.727574  
+33.000000  -3.754821  
+34.000000  -3.782288  
+35.000000  -3.808895  
+36.000000  -3.834391  
+37.000000  -3.859033  
+38.000000  -3.883508  
+39.000000  -3.909328  
+40.000000  -3.937022  
+41.000000  -3.966576  
+42.000000  -3.997443  
+43.000000  -4.027997  
+44.000000  -4.057624  
+45.000000  -4.086186  
+46.000000  -4.114026  
+47.000000  -4.142521  
+48.000000  -4.172014  
+49.000000  -4.202354  
+50.000000  -4.232892  
+51.000000  -4.262039  
+52.000000  -4.289049  
+53.000000  -4.313622  
+54.000000  -4.335967  
+55.000000  -4.357112  
+56.000000  -4.377723  
+57.000000  -4.398305  
+58.000000  -4.419072  
+59.000000  -4.439765  
+60.000000  -4.460017  
+61.000000  -4.479304  
+62.000000  -4.497063  
+63.000000  -4.512707  
+64.000000  -4.526013  
+65.000000  -4.537058  
+66.000000  -4.546189  
+67.000000  -4.554204  
+68.000000  -4.561506  
+69.000000  -4.568296  
+70.000000  -4.574560  
+71.000000  -4.579789  
+72.000000  -4.583953  
+73.000000  -4.587211  
+74.000000  -4.589892  
+75.000000  -4.592634  
+76.000000  -4.595630  
+77.000000  -4.598756  
+78.000000  -4.601531  
+79.000000  -4.603177  
+80.000000  -4.602693  
+81.000000  -4.599059  
+82.000000  -4.591451  
+83.000000  -4.579131  
+84.000000  -4.562404  
+85.000000  -4.542296  
+86.000000  -4.520366  
+87.000000  -4.498822  
+88.000000  -4.478992  
+89.000000  -4.461470  
+90.000000  -4.445986  
+91.000000  -4.431172  
+92.000000  -4.415573  
+93.000000  -4.397638  
+94.000000  -4.376017  
+95.000000  -4.349855  
+96.000000  -4.318790  
+97.000000  -4.283061  
+98.000000  -4.243439  
+99.000000  -4.201098  
+100.000000  -4.157311  
+101.000000  -4.113239  
+102.000000  -4.069709  
+103.000000  -4.027200  
+104.000000  -3.985443  
+105.000000  -3.943622  
+106.000000  -3.900569  
+107.000000  -3.854645  
+108.000000  -3.805031  
+109.000000  -3.751515  
+110.000000  -3.694508  
+111.000000  -3.635396  
+112.000000  -3.575001  
+113.000000  -3.513875  
+114.000000  -3.452188  
+115.000000  -3.389361  
+116.000000  -3.325202  
+117.000000  -3.259631  
+118.000000  -3.192742  
+119.000000  -3.124980  
+120.000000  -3.056641  
+121.000000  -2.987969  
+122.000000  -2.919085  
+123.000000  -2.849955  
+124.000000  -2.780325  
+125.000000  -2.709764  
+126.000000  -2.637735  
+127.000000  -2.563648  
+128.000000  -2.487085  
+129.000000  -2.407846  
+130.000000  -2.326011  
+131.000000  -2.241805  
+132.000000  -2.155886  
+133.000000  -2.069084  
+134.000000  -1.982215  
+135.000000  -1.896304  
+136.000000  -1.811305  
+137.000000  -1.726513  
+138.000000  -1.640728  
+139.000000  -1.551916  
+140.000000  -1.459251  
+141.000000  -1.362697  
+142.000000  -1.263017  
+143.000000  -1.162196  
+144.000000  -1.061486  
+145.000000  -0.961722  
+146.000000  -0.863139  
+147.000000  -0.765039  
+148.000000  -0.666745  
+149.000000  -0.567484  
+150.000000  -0.466595  
+151.000000  -0.363634  
+152.000000  -0.258666  
+153.000000  -0.152197  
+154.000000  -0.045067  
+155.000000  0.061431  
+156.000000  0.166573  
+157.000000  0.270054  
+158.000000  0.372029  
+159.000000  0.473299  
+160.000000  0.574460  
+161.000000  0.675994  
+162.000000  0.778120  
+163.000000  0.880715  
+164.000000  0.983375  
+165.000000  1.085481  
+166.000000  1.186354  
+167.000000  1.285224  
+168.000000  1.381916  
+169.000000  1.476720  
+170.000000  1.570353  
+171.000000  1.664032  
+172.000000  1.758690  
+173.000000  1.854984  
+174.000000  1.953143  
+175.000000  2.052854  
+176.000000  2.153436  
+177.000000  2.253899  
+178.000000  2.353114  
+179.000000  2.449867  
+180.000000  2.543434  
+181.000000  2.633551  
+182.000000  2.720423  
+183.000000  2.804944  
+184.000000  2.887777  
+185.000000  2.969514  
+186.000000  3.050598  
+187.000000  3.130859  
+188.000000  3.210655  
+189.000000  3.290398  
+190.000000  3.370461  
+191.000000  3.451634  
+192.000000  3.533424  
+193.000000  3.614683  
+194.000000  3.693805  
+195.000000  3.768296  
+196.000000  3.837207  
+197.000000  3.900575  
+198.000000  3.959404  
+199.000000  4.016278  
+200.000000  4.072642  
+201.000000  4.129364  
+202.000000  4.186599  
+203.000000  4.242976  
+204.000000  4.298158  
+205.000000  4.352101  
+206.000000  4.405074  
+207.000000  4.458402  
+208.000000  4.511981  
+209.000000  4.565067  
+210.000000  4.616383  
+211.000000  4.663518  
+212.000000  4.705587  
+213.000000  4.742559  
+214.000000  4.775250  
+215.000000  4.805948  
+216.000000  4.835784  
+217.000000  4.865319  
+218.000000  4.894449  
+219.000000  4.921732  
+220.000000  4.946684  
+221.000000  4.969186  
+222.000000  4.989556  
+223.000000  5.009077  
+224.000000  5.028206  
+225.000000  5.047048  
+226.000000  5.065328  
+227.000000  5.082071  
+228.000000  5.096803  
+229.000000  5.109291  
+230.000000  5.119617  
+231.000000  5.128272  
+232.000000  5.135768  
+233.000000  5.142615  
+234.000000  5.149176  
+235.000000  5.155775  
+236.000000  5.162030  
+237.000000  5.167137  
+238.000000  5.170044  
+239.000000  5.169168  
+240.000000  5.164073  
+241.000000  5.155048  
+242.000000  5.143036  
+243.000000  5.130062  
+244.000000  5.117116  
+245.000000  5.104571  
+246.000000  5.092116  
+247.000000  5.078243  
+248.000000  5.062119  
+249.000000  5.043193  
+250.000000  5.021323  
+251.000000  4.997268  
+252.000000  4.971334  
+253.000000  4.943780  
+254.000000  4.914769  
+255.000000  4.883986  
+256.000000  4.851744  
+257.000000  4.818574  
+258.000000  4.785139  
+259.000000  4.752570  
+260.000000  4.721067  
+261.000000  4.690319  
+262.000000  4.659590  
+263.000000  4.627310  
+264.000000  4.592914  
+265.000000  4.556374  
+266.000000  4.518175  
+267.000000  4.479796  
+268.000000  4.441721  
+269.000000  4.403918  
+270.000000  4.365818  
+271.000000  4.325932  
+272.000000  4.283493  
+273.000000  4.238149  
+274.000000  4.190088  
+275.000000  4.140290  
+276.000000  4.089723  
+277.000000  4.039428  
+278.000000  3.990328  
+279.000000  3.943095  
+280.000000  3.897994  
+281.000000  3.854875  
+282.000000  3.813240  
+283.000000  3.772179  
+284.000000  3.731031  
+285.000000  3.689336  
+286.000000  3.646905  
+287.000000  3.604091  
+288.000000  3.561047  
+289.000000  3.517943  
+290.000000  3.474947  
+291.000000  3.431898  
+292.000000  3.389204  
+293.000000  3.347466  
+294.000000  3.307363  
+295.000000  3.269981  
+296.000000  3.235383  
+297.000000  3.203053  
+298.000000  3.172022  
+299.000000  3.140408  
+300.000000  3.107521  
+301.000000  3.073326  
+302.000000  3.038411  
+303.000000  3.004654  
+304.000000  2.972622  
+305.000000  2.942259  
+306.000000  2.912911  
+307.000000  2.882528  
+308.000000  2.850634  
+309.000000  2.817495  
+310.000000  2.784072  
+311.000000  2.752892  
+312.000000  2.724699  
+313.000000  2.699378  
+314.000000  2.676005  
+315.000000  2.651904  
+316.000000  2.626318  
+317.000000  2.599411  
+318.000000  2.572234  
+319.000000  2.547633  
+320.000000  2.526529  
+321.000000  2.508836  
+322.000000  2.493436  
+323.000000  2.477413  
+324.000000  2.459238  
+325.000000  2.438126  
+326.000000  2.414214  
+327.000000  2.389148  
+328.000000  2.364138  
+329.000000  2.340303  
+330.000000  2.318419  
+331.000000  2.298603  
+332.000000  2.280731  
+333.000000  2.264327  
+334.000000  2.248710  
+335.000000  2.232942  
+336.000000  2.216565  
+337.000000  2.199472  
+338.000000  2.181886  
+339.000000  2.164687  
+340.000000  2.148109  
+341.000000  2.132079  
+342.000000  2.116222  
+343.000000  2.099411  
+344.000000  2.081386  
+345.000000  2.062282  
+346.000000  2.042599  
+347.000000  2.023747  
+348.000000  2.006059  
+349.000000  1.989393  
+350.000000  1.973202  
+351.000000  1.955917  
+352.000000  1.937384  
+353.000000  1.918150  
+354.000000  1.899359  
+355.000000  1.883306  
+356.000000  1.870791  
+357.000000  1.861714  
+358.000000  1.855025  
+359.000000  1.848279  
+360.000000  1.839743  
+361.000000  1.828111  
+362.000000  1.812759  
+363.000000  1.794153  
+364.000000  1.772971  
+365.000000  1.750255  
+366.000000  1.727205  
+367.000000  1.704989  
+368.000000  1.684486  
+369.000000  1.666191  
+370.000000  1.650181  
+371.000000  1.635939  
+372.000000  1.623015  
+373.000000  1.610910  
+374.000000  1.599145  
+375.000000  1.587514  
+376.000000  1.575480  
+377.000000  1.562416  
+378.000000  1.547661  
+379.000000  1.530463  
+380.000000  1.510423  
+381.000000  1.487433  
+382.000000  1.461704  
+383.000000  1.433713  
+384.000000  1.404186  
+385.000000  1.373951  
+386.000000  1.343789  
+387.000000  1.314486  
+388.000000  1.286190  
+389.000000  1.258586  
+390.000000  1.230982  
+391.000000  1.202097  
+392.000000  1.171232  
+393.000000  1.138034  
+394.000000  1.102527  
+395.000000  1.065510  
+396.000000  1.027176  
+397.000000  0.987493  
+398.000000  0.946212  
+399.000000  0.902476  
+400.000000  0.856254  
+401.000000  0.807923  
+402.000000  0.758239  
+403.000000  0.708560  
+404.000000  0.659634  
+405.000000  0.611808  
+406.000000  0.564945  
+407.000000  0.518362  
+408.000000  0.471221  
+409.000000  0.422621  
+410.000000  0.371815  
+411.000000  0.318038  
+412.000000  0.261509  
+413.000000  0.203030  
+414.000000  0.143758  
+415.000000  0.085639  
+416.000000  0.029043  
+417.000000  -0.026616  
+418.000000  -0.082754  
+419.000000  -0.142162  
+420.000000  -0.206114  
+421.000000  -0.274921  
+422.000000  -0.347815  
+423.000000  -0.422462  
+424.000000  -0.497070  
+425.000000  -0.570143  
+426.000000  -0.640802  
+427.000000  -0.709137  
+428.000000  -0.775765  
+429.000000  -0.841863  
+430.000000  -0.908910  
+431.000000  -0.978623  
+432.000000  -1.052006  
+433.000000  -1.129399  
+434.000000  -1.210436  
+435.000000  -1.293765  
+436.000000  -1.378302  
+437.000000  -1.463056  
+438.000000  -1.547299  
+439.000000  -1.630959  
+440.000000  -1.713751  
+441.000000  -1.795482  
+442.000000  -1.876032  
+443.000000  -1.955105  
+444.000000  -2.032889  
+445.000000  -2.109772  
+446.000000  -2.186271  
+447.000000  -2.263211  
+448.000000  -2.340854  
+449.000000  -2.419149  
+450.000000  -2.497785  
+451.000000  -2.575911  
+452.000000  -2.653330  
+453.000000  -2.730181  
+454.000000  -2.806901  
+455.000000  -2.884462  
+456.000000  -2.963190  
+457.000000  -3.042999  
+458.000000  -3.123344  
+459.000000  -3.203221  
+460.000000  -3.281580  
+461.000000  -3.357469  
+462.000000  -3.430280  
+463.000000  -3.499523  
+464.000000  -3.565986  
+465.000000  -3.631205  
+466.000000  -3.697144  
+467.000000  -3.766602  
+468.000000  -3.840456  
+469.000000  -3.918301  
+470.000000  -3.998538  
+471.000000  -4.077734  
+472.000000  -4.153907  
+473.000000  -4.225945  
+474.000000  -4.293818  
+475.000000  -4.359318  
+476.000000  -4.423572  
+477.000000  -4.487543  
+478.000000  -4.551780  
+479.000000  -4.615869  
+480.000000  -4.679645  
+481.000000  -4.742818  
+482.000000  -4.805059  
+483.000000  -4.866220  
+484.000000  -4.925984  
+485.000000  -4.984057  
+486.000000  -5.040204  
+487.000000  -5.094313  
+488.000000  -5.146334  
+489.000000  -5.196320  
+490.000000  -5.244428  
+491.000000  -5.290674  
+492.000000  -5.335493  
+493.000000  -5.379407  
+494.000000  -5.422879  
+495.000000  -5.466698  
+496.000000  -5.510402  
+497.000000  -5.552879  
+498.000000  -5.592603  
+499.000000  -5.627093  
+500.000000  -5.655727  
+501.000000  -5.679015  
+502.000000  -5.698482  
+503.000000  -5.717415  
+504.000000  -5.737374  
+505.000000  -5.758944  
+506.000000  -5.781650  
+507.000000  -5.803131  
+508.000000  -5.822257  
+509.000000  -5.838442  
+510.000000  -5.851804  
+511.000000  -5.863732  
+512.000000  -5.874973  
+513.000000  -5.886014  
+514.000000  -5.896880  
+515.000000  -5.906944  
+516.000000  -5.915316  
+517.000000  -5.920873  
+518.000000  -5.922491  
+519.000000  -5.919064  
+520.000000  -5.910338  
+521.000000  -5.896777  
+522.000000  -5.879490  
+523.000000  -5.860352  
+524.000000  -5.840860  
+525.000000  -5.822165  
+526.000000  -5.804868  
+527.000000  -5.788767  
+528.000000  -5.773318  
+529.000000  -5.757592  
+530.000000  -5.740448  
+531.000000  -5.720694  
+532.000000  -5.697365  
+533.000000  -5.669826  
+534.000000  -5.637842  
+535.000000  -5.601716  
+536.000000  -5.561842  
+537.000000  -5.518763  
+538.000000  -5.473087  
+539.000000  -5.425243  
+540.000000  -5.375877  
+541.000000  -5.325621  
+542.000000  -5.275015  
+543.000000  -5.224634  
+544.000000  -5.174516  
+545.000000  -5.124361  
+546.000000  -5.073616  
+547.000000  -5.021343  
+548.000000  -4.967062  
+549.000000  -4.910585  
+
+
diff --git a/writing/sp4comm.multipub/50-filters/data/filtering-example-3.1.txt b/writing/sp4comm.multipub/50-filters/data/filtering-example-3.1.txt
new file mode 100644
index 0000000..0af2df9
--- /dev/null
+++ b/writing/sp4comm.multipub/50-filters/data/filtering-example-3.1.txt
@@ -0,0 +1,602 @@
+-50.000000  -1.965889  
+-49.000000  -2.055849  
+-48.000000  -2.223465  
+-47.000000  -2.426340  
+-46.000000  -2.619470  
+-45.000000  -2.738124  
+-44.000000  -2.794277  
+-43.000000  -2.802029  
+-42.000000  -2.784369  
+-41.000000  -2.778936  
+-40.000000  -2.795041  
+-39.000000  -2.840420  
+-38.000000  -2.914524  
+-37.000000  -3.015681  
+-36.000000  -3.117092  
+-35.000000  -3.194596  
+-34.000000  -3.229953  
+-33.000000  -3.194451  
+-32.000000  -3.122691  
+-31.000000  -3.046815  
+-30.000000  -2.997353  
+-29.000000  -3.019454  
+-28.000000  -3.089869  
+-27.000000  -3.185144  
+-26.000000  -3.277868  
+-25.000000  -3.331722  
+-24.000000  -3.344632  
+-23.000000  -3.320192  
+-22.000000  -3.272229  
+-21.000000  -3.210940  
+-20.000000  -3.177919  
+-19.000000  -3.203894  
+-18.000000  -3.305027  
+-17.000000  -3.514527  
+-16.000000  -3.759291  
+-15.000000  -3.976050  
+-14.000000  -4.111975  
+-13.000000  -4.084417  
+-12.000000  -3.965016  
+-11.000000  -3.820529  
+-10.000000  -3.718007  
+-9.000000  -3.763130  
+-8.000000  -3.909568  
+-7.000000  -4.113932  
+-6.000000  -4.324937  
+-5.000000  -4.451814  
+-4.000000  -4.518152  
+-3.000000  -4.540909  
+-2.000000  -4.542924  
+-1.000000  -4.580055  
+0.000000  -4.627881  
+1.000000  -4.674022  
+2.000000  -4.708699  
+3.000000  -4.695670  
+4.000000  -4.678777  
+5.000000  -4.687187  
+6.000000  -4.740409  
+7.000000  -4.884821  
+8.000000  -5.053001  
+9.000000  -5.191221  
+10.000000  -5.256086  
+11.000000  -5.172346  
+12.000000  -5.014622  
+13.000000  -4.848399  
+14.000000  -4.735261  
+15.000000  -4.771660  
+16.000000  -4.901418  
+17.000000  -5.071120  
+18.000000  -5.221396  
+19.000000  -5.261317  
+20.000000  -5.209419  
+21.000000  -5.086147  
+22.000000  -4.925231  
+23.000000  -4.784627  
+24.000000  -4.681183  
+25.000000  -4.633128  
+26.000000  -4.649480  
+27.000000  -4.724819  
+28.000000  -4.849373  
+29.000000  -5.003331  
+30.000000  -5.161811  
+31.000000  -5.304279  
+32.000000  -5.403902  
+33.000000  -5.445344  
+34.000000  -5.426332  
+35.000000  -5.339594  
+36.000000  -5.233275  
+37.000000  -5.149050  
+38.000000  -5.119500  
+39.000000  -5.192815  
+40.000000  -5.320065  
+41.000000  -5.454529  
+42.000000  -5.549993  
+43.000000  -5.535137  
+44.000000  -5.442991  
+45.000000  -5.305424  
+46.000000  -5.160035  
+47.000000  -5.070901  
+48.000000  -5.024196  
+49.000000  -5.009552  
+50.000000  -5.011463  
+51.000000  -4.996672  
+52.000000  -4.972469  
+53.000000  -4.942005  
+54.000000  -4.910175  
+55.000000  -4.887880  
+56.000000  -4.873101  
+57.000000  -4.864366  
+58.000000  -4.858139  
+59.000000  -4.849157  
+60.000000  -4.829234  
+61.000000  -4.790190  
+62.000000  -4.725248  
+63.000000  -4.629327  
+64.000000  -4.504295  
+65.000000  -4.355672  
+66.000000  -4.192653  
+67.000000  -4.028170  
+68.000000  -3.873580  
+69.000000  -3.740185  
+70.000000  -3.637137  
+71.000000  -3.565790  
+72.000000  -3.532241  
+73.000000  -3.534239  
+74.000000  -3.562131  
+75.000000  -3.607975  
+76.000000  -3.639583  
+77.000000  -3.629280  
+78.000000  -3.556045  
+79.000000  -3.399321  
+80.000000  -3.176900  
+81.000000  -2.913008  
+82.000000  -2.638207  
+83.000000  -2.395525  
+84.000000  -2.197356  
+85.000000  -2.055032  
+86.000000  -1.973335  
+87.000000  -1.933172  
+88.000000  -1.948379  
+89.000000  -2.015418  
+90.000000  -2.118304  
+91.000000  -2.258043  
+92.000000  -2.360615  
+93.000000  -2.369394  
+94.000000  -2.246346  
+95.000000  -1.943086  
+96.000000  -1.531210  
+97.000000  -1.085183  
+98.000000  -0.682019  
+99.000000  -0.420593  
+100.000000  -0.293055  
+101.000000  -0.281266  
+102.000000  -0.347804  
+103.000000  -0.422768  
+104.000000  -0.483606  
+105.000000  -0.502492  
+106.000000  -0.459199  
+107.000000  -0.354693  
+108.000000  -0.177867  
+109.000000  0.065080  
+110.000000  0.355776  
+111.000000  0.679008  
+112.000000  0.987173  
+113.000000  1.242064  
+114.000000  1.417781  
+115.000000  1.485151  
+116.000000  1.482629  
+117.000000  1.451405  
+118.000000  1.434211  
+119.000000  1.490767  
+120.000000  1.608125  
+121.000000  1.771104  
+122.000000  1.956915  
+123.000000  2.122210  
+124.000000  2.270609  
+125.000000  2.402084  
+126.000000  2.519905  
+127.000000  2.636013  
+128.000000  2.747870  
+129.000000  2.855179  
+130.000000  2.956687  
+131.000000  3.055910  
+132.000000  3.141689  
+133.000000  3.207926  
+134.000000  3.253836  
+135.000000  3.269306  
+136.000000  3.288444  
+137.000000  3.338679  
+138.000000  3.440780  
+139.000000  3.624218  
+140.000000  3.856541  
+141.000000  4.105173  
+142.000000  4.336313  
+143.000000  4.507840  
+144.000000  4.622395  
+145.000000  4.688726  
+146.000000  4.725428  
+147.000000  4.754243  
+148.000000  4.804346  
+149.000000  4.897038  
+150.000000  5.040965  
+151.000000  5.250663  
+152.000000  5.474450  
+153.000000  5.664940  
+154.000000  5.781577  
+155.000000  5.770318  
+156.000000  5.669919  
+157.000000  5.522684  
+158.000000  5.377276  
+159.000000  5.299495  
+160.000000  5.293442  
+161.000000  5.357016  
+162.000000  5.474307  
+163.000000  5.618186  
+164.000000  5.757957  
+165.000000  5.865292  
+166.000000  5.921343  
+167.000000  5.904279  
+168.000000  5.848264  
+169.000000  5.788458  
+170.000000  5.759250  
+171.000000  5.807857  
+172.000000  5.915126  
+173.000000  6.058696  
+174.000000  6.209177  
+175.000000  6.323184  
+176.000000  6.393257  
+177.000000  6.414299  
+178.000000  6.389852  
+179.000000  6.330082  
+180.000000  6.254406  
+181.000000  6.182598  
+182.000000  6.130690  
+183.000000  6.119917  
+184.000000  6.132329  
+185.000000  6.149919  
+186.000000  6.154316  
+187.000000  6.113301  
+188.000000  6.044543  
+189.000000  5.962613  
+190.000000  5.882382  
+191.000000  5.835897  
+192.000000  5.801418  
+193.000000  5.763702  
+194.000000  5.710019  
+195.000000  5.607465  
+196.000000  5.491755  
+197.000000  5.388918  
+198.000000  5.319110  
+199.000000  5.329543  
+200.000000  5.366103  
+201.000000  5.388277  
+202.000000  5.364909  
+203.000000  5.229991  
+204.000000  5.061484  
+205.000000  4.921940  
+206.000000  4.863510  
+207.000000  4.976143  
+208.000000  5.174635  
+209.000000  5.382428  
+210.000000  5.524504  
+211.000000  5.483589  
+212.000000  5.313558  
+213.000000  5.065101  
+214.000000  4.797668  
+215.000000  4.616972  
+216.000000  4.495920  
+217.000000  4.416881  
+218.000000  4.357642  
+219.000000  4.258125  
+220.000000  4.157721  
+221.000000  4.081208  
+222.000000  4.048532  
+223.000000  4.102244  
+224.000000  4.196898  
+225.000000  4.294742  
+226.000000  4.360798  
+227.000000  4.343636  
+228.000000  4.267935  
+229.000000  4.158233  
+230.000000  4.043438  
+231.000000  3.965640  
+232.000000  3.923289  
+233.000000  3.912049  
+234.000000  3.919487  
+235.000000  3.930395  
+236.000000  3.921089  
+237.000000  3.873716  
+238.000000  3.780329  
+239.000000  3.622093  
+240.000000  3.448529  
+241.000000  3.301566  
+242.000000  3.214580  
+243.000000  3.245633  
+244.000000  3.334215  
+245.000000  3.427529  
+246.000000  3.476768  
+247.000000  3.394652  
+248.000000  3.242533  
+249.000000  3.070581  
+250.000000  2.926093  
+251.000000  2.903251  
+252.000000  2.930323  
+253.000000  2.951744  
+254.000000  2.918092  
+255.000000  2.734936  
+256.000000  2.483496  
+257.000000  2.231802  
+258.000000  2.044292  
+259.000000  2.027416  
+260.000000  2.118757  
+261.000000  2.262210  
+262.000000  2.397039  
+263.000000  2.420366  
+264.000000  2.366715  
+265.000000  2.263814  
+266.000000  2.145146  
+267.000000  2.078743  
+268.000000  2.037148  
+269.000000  2.001970  
+270.000000  1.953919  
+271.000000  1.855946  
+272.000000  1.729626  
+273.000000  1.594046  
+274.000000  1.471417  
+275.000000  1.391774  
+276.000000  1.361616  
+277.000000  1.384340  
+278.000000  1.455869  
+279.000000  1.564698  
+280.000000  1.693205  
+281.000000  1.820841  
+282.000000  1.927557  
+283.000000  1.994371  
+284.000000  2.015432  
+285.000000  1.990952  
+286.000000  1.928010  
+287.000000  1.842930  
+288.000000  1.746938  
+289.000000  1.654746  
+290.000000  1.581170  
+291.000000  1.531710  
+292.000000  1.525058  
+293.000000  1.569370  
+294.000000  1.662905  
+295.000000  1.807536  
+296.000000  1.963890  
+297.000000  2.097007  
+298.000000  2.178173  
+299.000000  2.172310  
+300.000000  2.103696  
+301.000000  2.000132  
+302.000000  1.894080  
+303.000000  1.835315  
+304.000000  1.819958  
+305.000000  1.844585  
+306.000000  1.900190  
+307.000000  1.952841  
+308.000000  2.018475  
+309.000000  2.100119  
+310.000000  2.194195  
+311.000000  2.323130  
+312.000000  2.426010  
+313.000000  2.461889  
+314.000000  2.407194  
+315.000000  2.210817  
+316.000000  1.967752  
+317.000000  1.758747  
+318.000000  1.651805  
+319.000000  1.748922  
+320.000000  1.967523  
+321.000000  2.227707  
+322.000000  2.445860  
+323.000000  2.499840  
+324.000000  2.422496  
+325.000000  2.250867  
+326.000000  2.039098  
+327.000000  1.874008  
+328.000000  1.773192  
+329.000000  1.752482  
+330.000000  1.811531  
+331.000000  1.934010  
+332.000000  2.087167  
+333.000000  2.232557  
+334.000000  2.334167  
+335.000000  2.351910  
+336.000000  2.295270  
+337.000000  2.181092  
+338.000000  2.034963  
+339.000000  1.897054  
+340.000000  1.777285  
+341.000000  1.684944  
+342.000000  1.622639  
+343.000000  1.582411  
+344.000000  1.559558  
+345.000000  1.544246  
+346.000000  1.525505  
+347.000000  1.496234  
+348.000000  1.447823  
+349.000000  1.378327  
+350.000000  1.292367  
+351.000000  1.193698  
+352.000000  1.105779  
+353.000000  1.048124  
+354.000000  1.034118  
+355.000000  1.073852  
+356.000000  1.150138  
+357.000000  1.238924  
+358.000000  1.310652  
+359.000000  1.340942  
+360.000000  1.298611  
+361.000000  1.167628  
+362.000000  0.949980  
+363.000000  0.642468  
+364.000000  0.316515  
+365.000000  0.036499  
+366.000000  -0.144284  
+367.000000  -0.156445  
+368.000000  -0.050140  
+369.000000  0.120983  
+370.000000  0.296873  
+371.000000  0.385188  
+372.000000  0.401560  
+373.000000  0.360061  
+374.000000  0.283421  
+375.000000  0.223697  
+376.000000  0.165220  
+377.000000  0.099993  
+378.000000  0.018589  
+379.000000  -0.098619  
+380.000000  -0.242665  
+381.000000  -0.405503  
+382.000000  -0.576031  
+383.000000  -0.745634  
+384.000000  -0.894757  
+385.000000  -1.009874  
+386.000000  -1.085089  
+387.000000  -1.103935  
+388.000000  -1.106160  
+389.000000  -1.124142  
+390.000000  -1.182973  
+391.000000  -1.331873  
+392.000000  -1.516856  
+393.000000  -1.694879  
+394.000000  -1.830541  
+395.000000  -1.852477  
+396.000000  -1.834847  
+397.000000  -1.837390  
+398.000000  -1.911133  
+399.000000  -2.144427  
+400.000000  -2.457479  
+401.000000  -2.778517  
+402.000000  -3.036372  
+403.000000  -3.125138  
+404.000000  -3.086229  
+405.000000  -2.962724  
+406.000000  -2.810261  
+407.000000  -2.715887  
+408.000000  -2.686596  
+409.000000  -2.728851  
+410.000000  -2.836073  
+411.000000  -2.985093  
+412.000000  -3.157950  
+413.000000  -3.333222  
+414.000000  -3.493613  
+415.000000  -3.618853  
+416.000000  -3.725891  
+417.000000  -3.832723  
+418.000000  -3.957509  
+419.000000  -4.125559  
+420.000000  -4.323564  
+421.000000  -4.535065  
+422.000000  -4.738195  
+423.000000  -4.908702  
+424.000000  -5.027921  
+425.000000  -5.084999  
+426.000000  -5.080808  
+427.000000  -5.016769  
+428.000000  -4.935231  
+429.000000  -4.877042  
+430.000000  -4.878137  
+431.000000  -4.980940  
+432.000000  -5.166460  
+433.000000  -5.409626  
+434.000000  -5.677199  
+435.000000  -5.916720  
+436.000000  -6.121360  
+437.000000  -6.282596  
+438.000000  -6.397225  
+439.000000  -6.482145  
+440.000000  -6.521918  
+441.000000  -6.513393  
+442.000000  -6.461032  
+443.000000  -6.360183  
+444.000000  -6.251644  
+445.000000  -6.168673  
+446.000000  -6.136995  
+447.000000  -6.191446  
+448.000000  -6.301119  
+449.000000  -6.435107  
+450.000000  -6.561207  
+451.000000  -6.627077  
+452.000000  -6.651928  
+453.000000  -6.651486  
+454.000000  -6.643352  
+455.000000  -6.666531  
+456.000000  -6.696234  
+457.000000  -6.715032  
+458.000000  -6.707777  
+459.000000  -6.652912  
+460.000000  -6.568846  
+461.000000  -6.476997  
+462.000000  -6.403846  
+463.000000  -6.367726  
+464.000000  -6.402511  
+465.000000  -6.524881  
+466.000000  -6.731687  
+467.000000  -7.030513  
+468.000000  -7.333302  
+469.000000  -7.563277  
+470.000000  -7.658875  
+471.000000  -7.541665  
+472.000000  -7.277616  
+473.000000  -6.938820  
+474.000000  -6.606199  
+475.000000  -6.394233  
+476.000000  -6.298715  
+477.000000  -6.310447  
+478.000000  -6.402505  
+479.000000  -6.509962  
+480.000000  -6.627020  
+481.000000  -6.736201  
+482.000000  -6.821395  
+483.000000  -6.887628  
+484.000000  -6.904297  
+485.000000  -6.857594  
+486.000000  -6.746415  
+487.000000  -6.564919  
+488.000000  -6.360020  
+489.000000  -6.173779  
+490.000000  -6.041569  
+491.000000  -6.003292  
+492.000000  -6.036587  
+493.000000  -6.111964  
+494.000000  -6.191731  
+495.000000  -6.230229  
+496.000000  -6.206735  
+497.000000  -6.109902  
+498.000000  -5.943541  
+499.000000  -5.710104  
+500.000000  -5.461402  
+501.000000  -5.242340  
+502.000000  -5.086486  
+503.000000  -5.049812  
+504.000000  -5.067847  
+505.000000  -5.084682  
+506.000000  -5.051130  
+507.000000  -4.882527  
+508.000000  -4.650013  
+509.000000  -4.416339  
+510.000000  -4.242506  
+511.000000  -4.220594  
+512.000000  -4.304377  
+513.000000  -4.445730  
+514.000000  -4.585433  
+515.000000  -4.642364  
+516.000000  -4.600337  
+517.000000  -4.452125  
+518.000000  -4.210860  
+519.000000  -3.902038  
+520.000000  -3.580845  
+521.000000  -3.301575  
+522.000000  -3.108601  
+523.000000  -3.051754  
+524.000000  -3.097121  
+525.000000  -3.203235  
+526.000000  -3.320703  
+527.000000  -3.376637  
+528.000000  -3.371306  
+529.000000  -3.306195  
+530.000000  -3.192441  
+531.000000  -3.063477  
+532.000000  -2.916631  
+533.000000  -2.756550  
+534.000000  -2.587875  
+535.000000  -2.408741  
+536.000000  -2.229844  
+537.000000  -2.058033  
+538.000000  -1.898230  
+539.000000  -1.754815  
+540.000000  -1.627204  
+541.000000  -1.513929  
+542.000000  -1.412623  
+543.000000  -1.320079  
+544.000000  -1.234151  
+545.000000  -1.152783  
+546.000000  -1.074242  
+547.000000  -0.997053  
+548.000000  -0.919746  
+549.000000  -0.840697  
+
+
diff --git a/writing/sp4comm.multipub/50-filters/data/filtering-example-3.2.txt b/writing/sp4comm.multipub/50-filters/data/filtering-example-3.2.txt
new file mode 100644
index 0000000..9c596e7
--- /dev/null
+++ b/writing/sp4comm.multipub/50-filters/data/filtering-example-3.2.txt
@@ -0,0 +1,602 @@
+-50.000000  -2.016992  
+-49.000000  -2.047666  
+-48.000000  -2.156517  
+-47.000000  -2.316788  
+-46.000000  -2.492271  
+-45.000000  -2.630029  
+-44.000000  -2.719172  
+-43.000000  -2.761570  
+-42.000000  -2.770762  
+-41.000000  -2.774170  
+-40.000000  -2.786619  
+-39.000000  -2.819192  
+-38.000000  -2.876121  
+-37.000000  -2.958545  
+-36.000000  -3.050495  
+-35.000000  -3.132233  
+-34.000000  -3.185513  
+-33.000000  -3.185544  
+-32.000000  -3.145148  
+-31.000000  -3.086497  
+-30.000000  -3.035742  
+-29.000000  -3.030361  
+-28.000000  -3.068917  
+-27.000000  -3.138940  
+-26.000000  -3.219995  
+-25.000000  -3.282590  
+-24.000000  -3.315225  
+-23.000000  -3.314653  
+-22.000000  -3.287446  
+-21.000000  -3.241532  
+-20.000000  -3.205598  
+-19.000000  -3.207993  
+-18.000000  -3.269152  
+-17.000000  -3.418027  
+-16.000000  -3.619254  
+-15.000000  -3.824747  
+-14.000000  -3.985352  
+-13.000000  -4.031440  
+-12.000000  -3.983303  
+-11.000000  -3.883855  
+-10.000000  -3.788116  
+-9.000000  -3.781263  
+-8.000000  -3.863720  
+-7.000000  -4.014372  
+-6.000000  -4.196030  
+-5.000000  -4.339782  
+-4.000000  -4.437259  
+-3.000000  -4.491929  
+-2.000000  -4.517678  
+-1.000000  -4.553508  
+0.000000  -4.596673  
+1.000000  -4.641115  
+2.000000  -4.679242  
+3.000000  -4.685827  
+4.000000  -4.680190  
+5.000000  -4.684740  
+6.000000  -4.719227  
+7.000000  -4.820076  
+8.000000  -4.957561  
+9.000000  -5.091668  
+10.000000  -5.181985  
+11.000000  -5.166698  
+12.000000  -5.070944  
+13.000000  -4.938894  
+14.000000  -4.822935  
+15.000000  -4.801848  
+16.000000  -4.867852  
+17.000000  -4.990699  
+18.000000  -5.124832  
+19.000000  -5.198065  
+20.000000  -5.197255  
+21.000000  -5.126292  
+22.000000  -5.005647  
+23.000000  -4.877561  
+24.000000  -4.766442  
+25.000000  -4.693778  
+26.000000  -4.673673  
+27.000000  -4.708663  
+28.000000  -4.794587  
+29.000000  -4.918204  
+30.000000  -5.059818  
+31.000000  -5.199857  
+32.000000  -5.314332  
+33.000000  -5.385018  
+34.000000  -5.403299  
+35.000000  -5.360604  
+36.000000  -5.283650  
+37.000000  -5.205822  
+38.000000  -5.158967  
+39.000000  -5.185055  
+40.000000  -5.268467  
+41.000000  -5.378306  
+42.000000  -5.476082  
+43.000000  -5.503753  
+44.000000  -5.461854  
+45.000000  -5.366443  
+46.000000  -5.245065  
+47.000000  -5.146841  
+48.000000  -5.079680  
+49.000000  -5.042786  
+50.000000  -5.027363  
+51.000000  -5.010169  
+52.000000  -4.988293  
+53.000000  -4.961341  
+54.000000  -4.931780  
+55.000000  -4.907043  
+56.000000  -4.888225  
+57.000000  -4.875203  
+58.000000  -4.865893  
+59.000000  -4.856402  
+60.000000  -4.840328  
+61.000000  -4.810379  
+62.000000  -4.759696  
+63.000000  -4.682521  
+64.000000  -4.577779  
+65.000000  -4.448148  
+66.000000  -4.300023  
+67.000000  -4.143536  
+68.000000  -3.989234  
+69.000000  -3.848035  
+70.000000  -3.729705  
+71.000000  -3.638829  
+72.000000  -3.581342  
+73.000000  -3.558040  
+74.000000  -3.563572  
+75.000000  -3.591504  
+76.000000  -3.619495  
+77.000000  -3.623099  
+78.000000  -3.580418  
+79.000000  -3.470279  
+80.000000  -3.295787  
+81.000000  -3.071411  
+82.000000  -2.820459  
+83.000000  -2.577656  
+84.000000  -2.362735  
+85.000000  -2.191093  
+86.000000  -2.072002  
+87.000000  -1.997567  
+88.000000  -1.974874  
+89.000000  -2.003526  
+90.000000  -2.073776  
+91.000000  -2.183377  
+92.000000  -2.284818  
+93.000000  -2.328203  
+94.000000  -2.271894  
+95.000000  -2.069582  
+96.000000  -1.748912  
+97.000000  -1.361294  
+98.000000  -0.971261  
+99.000000  -0.663249  
+100.000000  -0.462209  
+101.000000  -0.370264  
+102.000000  -0.367351  
+103.000000  -0.404430  
+104.000000  -0.451623  
+105.000000  -0.479418  
+106.000000  -0.463897  
+107.000000  -0.396231  
+108.000000  -0.264946  
+109.000000  -0.069565  
+110.000000  0.179443  
+111.000000  0.469629  
+112.000000  0.766922  
+113.000000  1.036355  
+114.000000  1.249032  
+115.000000  1.375513  
+116.000000  1.428755  
+117.000000  1.436177  
+118.000000  1.433045  
+119.000000  1.468975  
+120.000000  1.553220  
+121.000000  1.682535  
+122.000000  1.842951  
+123.000000  2.003242  
+124.000000  2.155476  
+125.000000  2.295214  
+126.000000  2.422287  
+127.000000  2.543664  
+128.000000  2.659749  
+129.000000  2.770878  
+130.000000  2.876471  
+131.000000  2.978593  
+132.000000  3.070864  
+133.000000  3.147675  
+134.000000  3.206494  
+135.000000  3.239834  
+136.000000  3.266531  
+137.000000  3.308884  
+138.000000  3.387595  
+139.000000  3.528836  
+140.000000  3.721729  
+141.000000  3.944530  
+142.000000  4.169314  
+143.000000  4.360018  
+144.000000  4.505526  
+145.000000  4.605417  
+146.000000  4.670010  
+147.000000  4.715728  
+148.000000  4.766300  
+149.000000  4.843256  
+150.000000  4.960101  
+151.000000  5.131594  
+152.000000  5.330995  
+153.000000  5.521779  
+154.000000  5.666258  
+155.000000  5.716880  
+156.000000  5.680850  
+157.000000  5.583362  
+158.000000  5.462143  
+159.000000  5.371096  
+160.000000  5.331512  
+161.000000  5.352211  
+162.000000  5.427920  
+163.000000  5.541038  
+164.000000  5.666969  
+165.000000  5.779547  
+166.000000  5.857452  
+167.000000  5.878732  
+168.000000  5.856496  
+169.000000  5.815001  
+170.000000  5.783474  
+171.000000  5.801742  
+172.000000  5.871842  
+173.000000  5.983215  
+174.000000  6.115006  
+175.000000  6.233346  
+176.000000  6.322060  
+177.000000  6.370810  
+178.000000  6.377275  
+179.000000  6.346207  
+180.000000  6.290847  
+181.000000  6.227747  
+182.000000  6.172730  
+183.000000  6.144977  
+184.000000  6.140205  
+185.000000  6.147260  
+186.000000  6.151338  
+187.000000  6.127192  
+188.000000  6.077273  
+189.000000  6.009701  
+190.000000  5.936013  
+191.000000  5.880144  
+192.000000  5.836471  
+193.000000  5.795372  
+194.000000  5.745985  
+195.000000  5.663906  
+196.000000  5.563367  
+197.000000  5.463288  
+198.000000  5.382473  
+199.000000  5.357312  
+200.000000  5.366278  
+201.000000  5.380049  
+202.000000  5.369558  
+203.000000  5.282910  
+204.000000  5.151134  
+205.000000  5.019094  
+206.000000  4.933999  
+207.000000  4.969150  
+208.000000  5.096704  
+209.000000  5.265540  
+210.000000  5.412782  
+211.000000  5.443071  
+212.000000  5.357061  
+213.000000  5.180024  
+214.000000  4.955417  
+215.000000  4.763608  
+216.000000  4.614632  
+217.000000  4.505877  
+218.000000  4.424354  
+219.000000  4.328800  
+220.000000  4.230710  
+221.000000  4.146395  
+222.000000  4.093379  
+223.000000  4.104525  
+224.000000  4.162544  
+225.000000  4.240873  
+226.000000  4.309093  
+227.000000  4.324219  
+228.000000  4.286614  
+229.000000  4.208711  
+230.000000  4.111725  
+231.000000  4.028958  
+232.000000  3.970830  
+233.000000  3.940034  
+234.000000  3.930690  
+235.000000  3.931906  
+236.000000  3.925334  
+237.000000  3.893603  
+238.000000  3.825293  
+239.000000  3.703913  
+240.000000  3.554526  
+241.000000  3.409676  
+242.000000  3.301255  
+243.000000  3.277326  
+244.000000  3.316843  
+245.000000  3.383850  
+246.000000  3.436464  
+247.000000  3.405293  
+248.000000  3.304898  
+249.000000  3.166246  
+250.000000  3.028108  
+251.000000  2.962825  
+252.000000  2.949958  
+253.000000  2.953528  
+254.000000  2.931603  
+255.000000  2.810375  
+256.000000  2.615506  
+257.000000  2.392192  
+258.000000  2.194803  
+259.000000  2.109000  
+260.000000  2.125296  
+261.000000  2.211685  
+262.000000  2.321216  
+263.000000  2.373706  
+264.000000  2.363504  
+265.000000  2.300797  
+266.000000  2.208138  
+267.000000  2.135140  
+268.000000  2.080945  
+269.000000  2.037061  
+270.000000  1.989483  
+271.000000  1.910468  
+272.000000  1.804257  
+273.000000  1.682204  
+274.000000  1.561482  
+275.000000  1.466673  
+276.000000  1.410375  
+277.000000  1.400198  
+278.000000  1.436974  
+279.000000  1.514440  
+280.000000  1.619886  
+281.000000  1.736318  
+282.000000  1.845277  
+283.000000  1.928176  
+284.000000  1.974436  
+285.000000  1.979634  
+286.000000  1.945955  
+287.000000  1.883807  
+288.000000  1.803374  
+289.000000  1.717536  
+290.000000  1.640156  
+291.000000  1.579750  
+292.000000  1.551572  
+293.000000  1.566010  
+294.000000  1.626149  
+295.000000  1.734921  
+296.000000  1.868950  
+297.000000  1.999618  
+298.000000  2.099042  
+299.000000  2.134943  
+300.000000  2.110743  
+301.000000  2.042492  
+302.000000  1.955030  
+303.000000  1.887827  
+304.000000  1.851972  
+305.000000  1.851357  
+306.000000  1.882725  
+307.000000  1.924364  
+308.000000  1.979624  
+309.000000  2.050077  
+310.000000  2.133896  
+311.000000  2.244629  
+312.000000  2.348180  
+313.000000  2.409519  
+314.000000  2.401520  
+315.000000  2.281621  
+316.000000  2.094303  
+317.000000  1.900400  
+318.000000  1.762735  
+319.000000  1.767968  
+320.000000  1.895071  
+321.000000  2.093912  
+322.000000  2.297155  
+323.000000  2.405245  
+324.000000  2.404203  
+325.000000  2.306081  
+326.000000  2.146118  
+327.000000  1.989427  
+328.000000  1.868708  
+329.000000  1.808006  
+330.000000  1.817150  
+331.000000  1.890890  
+332.000000  2.008173  
+333.000000  2.138539  
+334.000000  2.249054  
+335.000000  2.302700  
+336.000000  2.291905  
+337.000000  2.222226  
+338.000000  2.110328  
+339.000000  1.986453  
+340.000000  1.866898  
+341.000000  1.764378  
+342.000000  1.685720  
+343.000000  1.629037  
+344.000000  1.591441  
+345.000000  1.565929  
+346.000000  1.543374  
+347.000000  1.516146  
+348.000000  1.475933  
+349.000000  1.418443  
+350.000000  1.344660  
+351.000000  1.256845  
+352.000000  1.170322  
+353.000000  1.102016  
+354.000000  1.066316  
+355.000000  1.075051  
+356.000000  1.122131  
+357.000000  1.191626  
+358.000000  1.260105  
+359.000000  1.304310  
+360.000000  1.296169  
+361.000000  1.215525  
+362.000000  1.055547  
+363.000000  0.810568  
+364.000000  0.522798  
+365.000000  0.244646  
+366.000000  0.027583  
+367.000000  -0.065951  
+368.000000  -0.044757  
+369.000000  0.059503  
+370.000000  0.200174  
+371.000000  0.303720  
+372.000000  0.354686  
+373.000000  0.352186  
+374.000000  0.308224  
+375.000000  0.258495  
+376.000000  0.204548  
+377.000000  0.144117  
+378.000000  0.071177  
+379.000000  -0.028372  
+380.000000  -0.153524  
+381.000000  -0.299869  
+382.000000  -0.459266  
+383.000000  -0.623650  
+384.000000  -0.777844  
+385.000000  -0.908249  
+386.000000  -1.006070  
+387.000000  -1.057358  
+388.000000  -1.082038  
+389.000000  -1.105338  
+390.000000  -1.151509  
+391.000000  -1.260303  
+392.000000  -1.411703  
+393.000000  -1.575544  
+394.000000  -1.720000  
+395.000000  -1.788980  
+396.000000  -1.809710  
+397.000000  -1.823868  
+398.000000  -1.876718  
+399.000000  -2.039735  
+400.000000  -2.287738  
+401.000000  -2.573257  
+402.000000  -2.837047  
+403.000000  -2.992188  
+404.000000  -3.034345  
+405.000000  -2.983097  
+406.000000  -2.877621  
+407.000000  -2.784957  
+408.000000  -2.732115  
+409.000000  -2.735765  
+410.000000  -2.799322  
+411.000000  -2.910835  
+412.000000  -3.055999  
+413.000000  -3.216520  
+414.000000  -3.375115  
+415.000000  -3.512639  
+416.000000  -3.632645  
+417.000000  -3.746038  
+418.000000  -3.867372  
+419.000000  -4.017472  
+420.000000  -4.195268  
+421.000000  -4.391604  
+422.000000  -4.590291  
+423.000000  -4.770810  
+424.000000  -4.914268  
+425.000000  -5.006768  
+426.000000  -5.043264  
+427.000000  -5.022012  
+428.000000  -4.968429  
+429.000000  -4.915462  
+430.000000  -4.896936  
+431.000000  -4.951788  
+432.000000  -5.082314  
+433.000000  -5.276366  
+434.000000  -5.510229  
+435.000000  -5.743415  
+436.000000  -5.957968  
+437.000000  -6.140436  
+438.000000  -6.283159  
+439.000000  -6.393267  
+440.000000  -6.462564  
+441.000000  -6.486913  
+442.000000  -6.467428  
+443.000000  -6.401199  
+444.000000  -6.312854  
+445.000000  -6.230392  
+446.000000  -6.179734  
+447.000000  -6.192396  
+448.000000  -6.260467  
+449.000000  -6.364535  
+450.000000  -6.478634  
+451.000000  -6.561089  
+452.000000  -6.609615  
+453.000000  -6.630495  
+454.000000  -6.635907  
+455.000000  -6.654116  
+456.000000  -6.678888  
+457.000000  -6.699309  
+458.000000  -6.702636  
+459.000000  -6.670916  
+460.000000  -6.609373  
+461.000000  -6.531704  
+462.000000  -6.458631  
+463.000000  -6.408663  
+464.000000  -6.409935  
+465.000000  -6.482705  
+466.000000  -6.633046  
+467.000000  -6.869133  
+468.000000  -7.139066  
+469.000000  -7.379919  
+470.000000  -7.531347  
+471.000000  -7.521854  
+472.000000  -7.366729  
+473.000000  -7.110425  
+474.000000  -6.816734  
+475.000000  -6.578988  
+476.000000  -6.426912  
+477.000000  -6.370146  
+478.000000  -6.397833  
+479.000000  -6.467329  
+480.000000  -6.561807  
+481.000000  -6.662652  
+482.000000  -6.752673  
+483.000000  -6.828429  
+484.000000  -6.868447  
+485.000000  -6.857183  
+486.000000  -6.787901  
+487.000000  -6.653723  
+488.000000  -6.481259  
+489.000000  -6.304239  
+490.000000  -6.156378  
+491.000000  -6.075050  
+492.000000  -6.059981  
+493.000000  -6.095394  
+494.000000  -6.153534  
+495.000000  -6.196694  
+496.000000  -6.198777  
+497.000000  -6.142236  
+498.000000  -6.022093  
+499.000000  -5.836919  
+500.000000  -5.618073  
+501.000000  -5.402823  
+502.000000  -5.225173  
+503.000000  -5.132908  
+504.000000  -5.102632  
+505.000000  -5.095761  
+506.000000  -5.069252  
+507.000000  -4.954814  
+508.000000  -4.773349  
+509.000000  -4.565635  
+510.000000  -4.382342  
+511.000000  -4.298729  
+512.000000  -4.312025  
+513.000000  -4.396547  
+514.000000  -4.508453  
+515.000000  -4.582525  
+516.000000  -4.586177  
+517.000000  -4.500625  
+518.000000  -4.325585  
+519.000000  -4.075208  
+520.000000  -3.787878  
+521.000000  -3.509818  
+522.000000  -3.285087  
+523.000000  -3.161315  
+524.000000  -3.134888  
+525.000000  -3.182326  
+526.000000  -3.266198  
+527.000000  -3.328409  
+528.000000  -3.349192  
+529.000000  -3.319554  
+530.000000  -3.241778  
+531.000000  -3.136507  
+532.000000  -3.008213  
+533.000000  -2.862372  
+534.000000  -2.704039  
+535.000000  -2.533998  
+536.000000  -2.359559  
+537.000000  -2.187320  
+538.000000  -2.022799  
+539.000000  -1.870880  
+540.000000  -1.733091  
+541.000000  -1.609351  
+542.000000  -1.498323  
+543.000000  -1.397633  
+544.000000  -1.305151  
+545.000000  -1.218796  
+546.000000  -1.136701  
+547.000000  -1.057229  
+548.000000  -0.978824  
+549.000000  -0.899879  
+
+
diff --git a/writing/sp4comm.multipub/50-filters/data/filtering-example-3.3.txt b/writing/sp4comm.multipub/50-filters/data/filtering-example-3.3.txt
new file mode 100644
index 0000000..e7c46fd
--- /dev/null
+++ b/writing/sp4comm.multipub/50-filters/data/filtering-example-3.3.txt
@@ -0,0 +1,602 @@
+-50.000000  -2.216095  
+-49.000000  -2.188544  
+-48.000000  -2.203909  
+-47.000000  -2.258539  
+-46.000000  -2.340382  
+-45.000000  -2.425863  
+-44.000000  -2.502353  
+-43.000000  -2.562676  
+-42.000000  -2.606132  
+-41.000000  -2.640421  
+-40.000000  -2.672150  
+-39.000000  -2.708073  
+-38.000000  -2.753069  
+-37.000000  -2.810649  
+-36.000000  -2.877008  
+-35.000000  -2.944401  
+-34.000000  -3.003279  
+-33.000000  -3.039738  
+-32.000000  -3.052741  
+-31.000000  -3.047762  
+-30.000000  -3.035207  
+-29.000000  -3.033162  
+-28.000000  -3.048024  
+-27.000000  -3.080212  
+-26.000000  -3.124379  
+-25.000000  -3.168540  
+-24.000000  -3.204404  
+-23.000000  -3.226340  
+-22.000000  -3.233119  
+-21.000000  -3.225619  
+-20.000000  -3.214428  
+-19.000000  -3.213620  
+-18.000000  -3.236958  
+-17.000000  -3.302947  
+-16.000000  -3.406454  
+-15.000000  -3.531211  
+-14.000000  -3.654160  
+-13.000000  -3.738834  
+-12.000000  -3.778100  
+-11.000000  -3.779362  
+-10.000000  -3.761965  
+-9.000000  -3.764454  
+-8.000000  -3.800799  
+-7.000000  -3.873644  
+-6.000000  -3.974453  
+-5.000000  -4.076269  
+-4.000000  -4.167962  
+-3.000000  -4.243689  
+-2.000000  -4.303637  
+-1.000000  -4.360777  
+0.000000  -4.416589  
+1.000000  -4.470383  
+2.000000  -4.519780  
+3.000000  -4.554307  
+4.000000  -4.578356  
+5.000000  -4.600543  
+6.000000  -4.631177  
+7.000000  -4.689126  
+8.000000  -4.770310  
+9.000000  -4.861403  
+10.000000  -4.943583  
+11.000000  -4.985149  
+12.000000  -4.983157  
+13.000000  -4.947894  
+14.000000  -4.899711  
+15.000000  -4.875921  
+16.000000  -4.887508  
+17.000000  -4.932716  
+18.000000  -4.997965  
+19.000000  -5.052632  
+20.000000  -5.081394  
+21.000000  -5.076181  
+22.000000  -5.037945  
+23.000000  -4.980252  
+24.000000  -4.915266  
+25.000000  -4.856435  
+26.000000  -4.815862  
+27.000000  -4.801420  
+28.000000  -4.817238  
+29.000000  -4.862155  
+30.000000  -4.930010  
+31.000000  -5.011987  
+32.000000  -5.095351  
+33.000000  -5.167422  
+34.000000  -5.218253  
+35.000000  -5.238185  
+36.000000  -5.231887  
+37.000000  -5.211108  
+38.000000  -5.191309  
+39.000000  -5.195276  
+40.000000  -5.226596  
+41.000000  -5.278906  
+42.000000  -5.337897  
+43.000000  -5.376602  
+44.000000  -5.385272  
+45.000000  -5.362424  
+46.000000  -5.314677  
+47.000000  -5.261465  
+48.000000  -5.211676  
+49.000000  -5.170519  
+50.000000  -5.138803  
+51.000000  -5.109637  
+52.000000  -5.080993  
+53.000000  -5.051673  
+54.000000  -5.021782  
+55.000000  -4.993887  
+56.000000  -4.968991  
+57.000000  -4.947629  
+58.000000  -4.929420  
+59.000000  -4.912918  
+60.000000  -4.895185  
+61.000000  -4.872234  
+62.000000  -4.839590  
+63.000000  -4.792741  
+64.000000  -4.728800  
+65.000000  -4.646743  
+66.000000  -4.547774  
+67.000000  -4.435629  
+68.000000  -4.315490  
+69.000000  -4.193759  
+70.000000  -4.077282  
+71.000000  -3.971417  
+72.000000  -3.881904  
+73.000000  -3.812471  
+74.000000  -3.763798  
+75.000000  -3.734925  
+76.000000  -3.717437  
+77.000000  -3.699290  
+78.000000  -3.666980  
+79.000000  -3.605612  
+80.000000  -3.508748  
+81.000000  -3.376406  
+82.000000  -3.215026  
+83.000000  -3.038991  
+84.000000  -2.860756  
+85.000000  -2.692495  
+86.000000  -2.544578  
+87.000000  -2.420289  
+88.000000  -2.326667  
+89.000000  -2.267769  
+90.000000  -2.243021  
+91.000000  -2.253012  
+92.000000  -2.279661  
+93.000000  -2.298047  
+94.000000  -2.281554  
+95.000000  -2.198698  
+96.000000  -2.044606  
+97.000000  -1.830420  
+98.000000  -1.580582  
+99.000000  -1.335513  
+100.000000  -1.120644  
+101.000000  -0.952179  
+102.000000  -0.834631  
+103.000000  -0.756007  
+104.000000  -0.704568  
+105.000000  -0.665097  
+106.000000  -0.621753  
+107.000000  -0.563116  
+108.000000  -0.477224  
+109.000000  -0.356616  
+110.000000  -0.199603  
+111.000000  -0.007719  
+112.000000  0.206668  
+113.000000  0.426491  
+114.000000  0.633535  
+115.000000  0.807227  
+116.000000  0.942181  
+117.000000  1.042465  
+118.000000  1.119954  
+119.000000  1.196944  
+120.000000  1.285049  
+121.000000  1.390409  
+122.000000  1.513000  
+123.000000  1.643107  
+124.000000  1.776027  
+125.000000  1.907812  
+126.000000  2.036122  
+127.000000  2.161906  
+128.000000  2.284691  
+129.000000  2.404154  
+130.000000  2.519736  
+131.000000  2.631932  
+132.000000  2.738173  
+133.000000  2.835435  
+134.000000  2.921411  
+135.000000  2.991763  
+136.000000  3.052056  
+137.000000  3.111893  
+138.000000  3.182775  
+139.000000  3.280236  
+140.000000  3.407113  
+141.000000  3.559156  
+142.000000  3.726145  
+143.000000  3.891060  
+144.000000  4.043055  
+145.000000  4.175505  
+146.000000  4.287325  
+147.000000  4.382149  
+148.000000  4.469094  
+149.000000  4.559317  
+150.000000  4.662843  
+151.000000  4.790892  
+152.000000  4.938793  
+153.000000  5.093547  
+154.000000  5.236985  
+155.000000  5.343088  
+156.000000  5.403435  
+157.000000  5.419923  
+158.000000  5.404123  
+159.000000  5.379308  
+160.000000  5.361832  
+161.000000  5.364048  
+162.000000  5.391964  
+163.000000  5.444402  
+164.000000  5.514102  
+165.000000  5.589707  
+166.000000  5.658837  
+167.000000  5.707072  
+168.000000  5.732509  
+169.000000  5.740709  
+170.000000  5.742957  
+171.000000  5.758367  
+172.000000  5.795082  
+173.000000  5.854983  
+174.000000  5.933346  
+175.000000  6.017014  
+176.000000  6.095766  
+177.000000  6.160525  
+178.000000  6.205168  
+179.000000  6.227162  
+180.000000  6.228827  
+181.000000  6.215991  
+182.000000  6.196335  
+183.000000  6.180513  
+184.000000  6.171497  
+185.000000  6.168061  
+186.000000  6.165532  
+187.000000  6.153035  
+188.000000  6.127898  
+189.000000  6.090745  
+190.000000  6.045061  
+191.000000  6.000904  
+192.000000  5.959283  
+193.000000  5.918281  
+194.000000  5.873944  
+195.000000  5.815521  
+196.000000  5.744982  
+197.000000  5.668627  
+198.000000  5.595234  
+199.000000  5.542617  
+200.000000  5.509142  
+201.000000  5.486078  
+202.000000  5.460676  
+203.000000  5.407793  
+204.000000  5.330106  
+205.000000  5.241496  
+206.000000  5.162977  
+207.000000  5.131242  
+208.000000  5.149845  
+209.000000  5.206751  
+210.000000  5.277406  
+211.000000  5.316597  
+212.000000  5.307487  
+213.000000  5.246587  
+214.000000  5.143432  
+215.000000  5.029105  
+216.000000  4.916415  
+217.000000  4.812557  
+218.000000  4.718612  
+219.000000  4.621539  
+220.000000  4.523755  
+221.000000  4.431420  
+222.000000  4.353208  
+223.000000  4.305701  
+224.000000  4.288673  
+225.000000  4.294779  
+226.000000  4.311286  
+227.000000  4.316898  
+228.000000  4.303320  
+229.000000  4.268817  
+230.000000  4.218002  
+231.000000  4.163640  
+232.000000  4.113452  
+233.000000  4.072609  
+234.000000  4.042357  
+235.000000  4.020510  
+236.000000  4.000160  
+237.000000  3.972503  
+238.000000  3.929399  
+239.000000  3.860026  
+240.000000  3.769048  
+241.000000  3.668204  
+242.000000  3.573130  
+243.000000  3.509183  
+244.000000  3.478619  
+245.000000  3.473066  
+246.000000  3.476269  
+247.000000  3.455839  
+248.000000  3.405572  
+249.000000  3.329976  
+250.000000  3.241975  
+251.000000  3.173088  
+252.000000  3.125889  
+253.000000  3.092131  
+254.000000  3.055640  
+255.000000  2.982342  
+256.000000  2.870001  
+257.000000  2.729776  
+258.000000  2.583304  
+259.000000  2.471282  
+260.000000  2.405344  
+261.000000  2.383890  
+262.000000  2.393261  
+263.000000  2.399849  
+264.000000  2.390539  
+265.000000  2.360049  
+266.000000  2.311135  
+267.000000  2.261337  
+268.000000  2.214419  
+269.000000  2.170171  
+270.000000  2.124518  
+271.000000  2.065905  
+272.000000  1.992333  
+273.000000  1.905897  
+274.000000  1.812869  
+275.000000  1.724668  
+276.000000  1.650550  
+277.000000  1.598444  
+278.000000  1.573505  
+279.000000  1.577185  
+280.000000  1.606815  
+281.000000  1.656002  
+282.000000  1.715649  
+283.000000  1.774734  
+284.000000  1.823926  
+285.000000  1.856108  
+286.000000  1.867341  
+287.000000  1.858205  
+288.000000  1.831152  
+289.000000  1.791261  
+290.000000  1.745564  
+291.000000  1.700320  
+292.000000  1.664935  
+293.000000  1.648038  
+294.000000  1.655688  
+295.000000  1.693289  
+296.000000  1.755227  
+297.000000  1.830239  
+298.000000  1.903884  
+299.000000  1.957276  
+300.000000  1.983129  
+301.000000  1.981352  
+302.000000  1.958595  
+303.000000  1.931001  
+304.000000  1.908024  
+305.000000  1.896568  
+306.000000  1.900073  
+307.000000  1.913259  
+308.000000  1.937584  
+309.000000  1.974173  
+310.000000  2.022881  
+311.000000  2.089378  
+312.000000  2.161848  
+313.000000  2.223650  
+314.000000  2.257624  
+315.000000  2.238444  
+316.000000  2.172152  
+317.000000  2.079021  
+318.000000  1.988231  
+319.000000  1.945225  
+320.000000  1.960615  
+321.000000  2.027042  
+322.000000  2.121713  
+323.000000  2.200038  
+324.000000  2.240662  
+325.000000  2.234122  
+326.000000  2.184528  
+327.000000  2.114170  
+328.000000  2.040934  
+329.000000  1.982208  
+330.000000  1.951025  
+331.000000  1.953746  
+332.000000  1.988088  
+333.000000  2.044251  
+334.000000  2.107315  
+335.000000  2.157121  
+336.000000  2.181919  
+337.000000  2.176045  
+338.000000  2.140522  
+339.000000  2.084933  
+340.000000  2.017415  
+341.000000  1.946304  
+342.000000  1.878455  
+343.000000  1.817235  
+344.000000  1.764557  
+345.000000  1.719729  
+346.000000  1.679947  
+347.000000  1.641741  
+348.000000  1.600537  
+349.000000  1.552620  
+350.000000  1.496271  
+351.000000  1.430823  
+352.000000  1.361418  
+353.000000  1.295877  
+354.000000  1.242825  
+355.000000  1.211017  
+356.000000  1.202656  
+357.000000  1.214349  
+358.000000  1.237196  
+359.000000  1.259460  
+360.000000  1.265173  
+361.000000  1.239115  
+362.000000  1.170406  
+363.000000  1.049442  
+364.000000  0.886559  
+365.000000  0.702546  
+366.000000  0.524141  
+367.000000  0.387416  
+368.000000  0.305220  
+369.000000  0.276929  
+370.000000  0.289712  
+371.000000  0.313223  
+372.000000  0.331709  
+373.000000  0.335304  
+374.000000  0.321096  
+375.000000  0.298630  
+376.000000  0.269024  
+377.000000  0.231956  
+378.000000  0.185213  
+379.000000  0.122586  
+380.000000  0.042333  
+381.000000  -0.055376  
+382.000000  -0.168033  
+383.000000  -0.292034  
+384.000000  -0.420035  
+385.000000  -0.543758  
+386.000000  -0.655785  
+387.000000  -0.746357  
+388.000000  -0.818429  
+389.000000  -0.880471  
+390.000000  -0.943913  
+391.000000  -1.028950  
+392.000000  -1.135780  
+393.000000  -1.256501  
+394.000000  -1.378092  
+395.000000  -1.474066  
+396.000000  -1.545341  
+397.000000  -1.603878  
+398.000000  -1.669016  
+399.000000  -1.775763  
+400.000000  -1.927759  
+401.000000  -2.113962  
+402.000000  -2.311337  
+403.000000  -2.478536  
+404.000000  -2.598129  
+405.000000  -2.664873  
+406.000000  -2.686327  
+407.000000  -2.687520  
+408.000000  -2.685871  
+409.000000  -2.696580  
+410.000000  -2.729840  
+411.000000  -2.788341  
+412.000000  -2.870906  
+413.000000  -2.972133  
+414.000000  -3.084448  
+415.000000  -3.197591  
+416.000000  -3.308603  
+417.000000  -3.418769  
+418.000000  -3.532756  
+419.000000  -3.659719  
+420.000000  -3.802388  
+421.000000  -3.959499  
+422.000000  -4.125394  
+423.000000  -4.290581  
+424.000000  -4.444010  
+425.000000  -4.575062  
+426.000000  -4.676002  
+427.000000  -4.740953  
+428.000000  -4.775732  
+429.000000  -4.793084  
+430.000000  -4.810150  
+431.000000  -4.849448  
+432.000000  -4.922126  
+433.000000  -5.031784  
+434.000000  -5.174246  
+435.000000  -5.334717  
+436.000000  -5.502278  
+437.000000  -5.666403  
+438.000000  -5.818299  
+439.000000  -5.955314  
+440.000000  -6.070624  
+441.000000  -6.158751  
+442.000000  -6.216589  
+443.000000  -6.240266  
+444.000000  -6.237114  
+445.000000  -6.219278  
+446.000000  -6.201237  
+447.000000  -6.202001  
+448.000000  -6.227309  
+449.000000  -6.275568  
+450.000000  -6.339000  
+451.000000  -6.399909  
+452.000000  -6.451556  
+453.000000  -6.491520  
+454.000000  -6.521479  
+455.000000  -6.551649  
+456.000000  -6.582051  
+457.000000  -6.609587  
+458.000000  -6.628862  
+459.000000  -6.630929  
+460.000000  -6.614309  
+461.000000  -6.582254  
+462.000000  -6.542915  
+463.000000  -6.506071  
+464.000000  -6.487098  
+465.000000  -6.500773  
+466.000000  -6.557296  
+467.000000  -6.666881  
+468.000000  -6.815305  
+469.000000  -6.976398  
+470.000000  -7.117673  
+471.000000  -7.196611  
+472.000000  -7.199610  
+473.000000  -7.130512  
+474.000000  -7.009018  
+475.000000  -6.875463  
+476.000000  -6.755337  
+477.000000  -6.666946  
+478.000000  -6.618661  
+479.000000  -6.602294  
+480.000000  -6.613092  
+481.000000  -6.643173  
+482.000000  -6.683077  
+483.000000  -6.727299  
+484.000000  -6.763532  
+485.000000  -6.780009  
+486.000000  -6.767731  
+487.000000  -6.718094  
+488.000000  -6.636234  
+489.000000  -6.534431  
+490.000000  -6.429248  
+491.000000  -6.342143  
+492.000000  -6.282697  
+493.000000  -6.252319  
+494.000000  -6.244190  
+495.000000  -6.243322  
+496.000000  -6.234830  
+497.000000  -6.205003  
+498.000000  -6.144393  
+499.000000  -6.045863  
+500.000000  -5.916536  
+501.000000  -5.770743  
+502.000000  -5.626099  
+503.000000  -5.509008  
+504.000000  -5.421677  
+505.000000  -5.355120  
+506.000000  -5.292645  
+507.000000  -5.202191  
+508.000000  -5.080130  
+509.000000  -4.935688  
+510.000000  -4.788360  
+511.000000  -4.673711  
+512.000000  -4.604033  
+513.000000  -4.579440  
+514.000000  -4.587624  
+515.000000  -4.601419  
+516.000000  -4.599101  
+517.000000  -4.562295  
+518.000000  -4.479945  
+519.000000  -4.348922  
+520.000000  -4.179247  
+521.000000  -3.989749  
+522.000000  -3.803871  
+523.000000  -3.650605  
+524.000000  -3.542177  
+525.000000  -3.479694  
+526.000000  -3.453769  
+527.000000  -3.441140  
+528.000000  -3.426906  
+529.000000  -3.399508  
+530.000000  -3.352407  
+531.000000  -3.288173  
+532.000000  -3.206522  
+533.000000  -3.108524  
+534.000000  -2.995960  
+535.000000  -2.869560  
+536.000000  -2.732672  
+537.000000  -2.589153  
+538.000000  -2.442979  
+539.000000  -2.298175  
+540.000000  -2.157600  
+541.000000  -2.023202  
+542.000000  -1.896021  
+543.000000  -1.776206  
+544.000000  -1.663498  
+545.000000  -1.557287  
+546.000000  -1.456751  
+547.000000  -1.360952  
+548.000000  -1.268845  
+549.000000  -1.179263  
+
+
diff --git a/writing/sp4comm.multipub/50-filters/data/filtering-example-3.4.txt b/writing/sp4comm.multipub/50-filters/data/filtering-example-3.4.txt
new file mode 100644
index 0000000..f9f59e7
--- /dev/null
+++ b/writing/sp4comm.multipub/50-filters/data/filtering-example-3.4.txt
@@ -0,0 +1,602 @@
+-50.000000  -2.007354  
+-49.000000  -2.008774  
+-48.000000  -2.013906  
+-47.000000  -2.023169  
+-46.000000  -2.036060  
+-45.000000  -2.050695  
+-44.000000  -2.065847  
+-43.000000  -2.080610  
+-42.000000  -2.094597  
+-41.000000  -2.108256  
+-40.000000  -2.122072  
+-39.000000  -2.136666  
+-38.000000  -2.152594  
+-37.000000  -2.170361  
+-36.000000  -2.189803  
+-35.000000  -2.210286  
+-34.000000  -2.230857  
+-33.000000  -2.249951  
+-32.000000  -2.267047  
+-31.000000  -2.282263  
+-30.000000  -2.296317  
+-29.000000  -2.310891  
+-28.000000  -2.326822  
+-27.000000  -2.344465  
+-26.000000  -2.363597  
+-25.000000  -2.383229  
+-24.000000  -2.402521  
+-23.000000  -2.420752  
+-22.000000  -2.437542  
+-21.000000  -2.452704  
+-20.000000  -2.467043  
+-19.000000  -2.481910  
+-18.000000  -2.498878  
+-17.000000  -2.520238  
+-16.000000  -2.546243  
+-15.000000  -2.575923  
+-14.000000  -2.607324  
+-13.000000  -2.636728  
+-12.000000  -2.662697  
+-11.000000  -2.685131  
+-10.000000  -2.705276  
+-9.000000  -2.726658  
+-8.000000  -2.751049  
+-7.000000  -2.779328  
+-6.000000  -2.811296  
+-5.000000  -2.844740  
+-4.000000  -2.878540  
+-3.000000  -2.911901  
+-2.000000  -2.944532  
+-1.000000  -2.977428  
+0.000000  -3.010676  
+1.000000  -3.044174  
+2.000000  -3.077638  
+3.000000  -3.109933  
+4.000000  -3.141226  
+5.000000  -3.172187  
+6.000000  -3.203817  
+7.000000  -3.238160  
+8.000000  -3.275297  
+9.000000  -3.314307  
+10.000000  -3.353467  
+11.000000  -3.389426  
+12.000000  -3.421141  
+13.000000  -3.448855  
+14.000000  -3.474017  
+15.000000  -3.500152  
+16.000000  -3.528826  
+17.000000  -3.560521  
+18.000000  -3.594490  
+19.000000  -3.628026  
+20.000000  -3.659394  
+21.000000  -3.687313  
+22.000000  -3.711267  
+23.000000  -3.732031  
+24.000000  -3.750497  
+25.000000  -3.767909  
+26.000000  -3.785622  
+27.000000  -3.804783  
+28.000000  -3.826297  
+29.000000  -3.850608  
+30.000000  -3.877624  
+31.000000  -3.906870  
+32.000000  -3.937309  
+33.000000  -3.967676  
+34.000000  -3.996755  
+35.000000  -4.023178  
+36.000000  -4.046848  
+37.000000  -4.068471  
+38.000000  -4.089344  
+39.000000  -4.111780  
+40.000000  -4.136582  
+41.000000  -4.163613  
+42.000000  -4.191818  
+43.000000  -4.218610  
+44.000000  -4.242637  
+45.000000  -4.263205  
+46.000000  -4.280414  
+47.000000  -4.295778  
+48.000000  -4.310113  
+49.000000  -4.324029  
+50.000000  -4.337787  
+51.000000  -4.350891  
+52.000000  -4.363201  
+53.000000  -4.374625  
+54.000000  -4.385177  
+55.000000  -4.395120  
+56.000000  -4.404605  
+57.000000  -4.413757  
+58.000000  -4.422613  
+59.000000  -4.431099  
+60.000000  -4.438962  
+61.000000  -4.445792  
+62.000000  -4.451056  
+63.000000  -4.454142  
+64.000000  -4.454520  
+65.000000  -4.451800  
+66.000000  -4.445802  
+67.000000  -4.436627  
+68.000000  -4.424593  
+69.000000  -4.410238  
+70.000000  -4.394260  
+71.000000  -4.377334  
+72.000000  -4.360265  
+73.000000  -4.343754  
+74.000000  -4.328261  
+75.000000  -4.314085  
+76.000000  -4.300753  
+77.000000  -4.287272  
+78.000000  -4.272281  
+79.000000  -4.254038  
+80.000000  -4.231383  
+81.000000  -4.203696  
+82.000000  -4.171013  
+83.000000  -4.134289  
+84.000000  -4.094560  
+85.000000  -4.053058  
+86.000000  -4.011055  
+87.000000  -3.969296  
+88.000000  -3.928954  
+89.000000  -3.891018  
+90.000000  -3.856079  
+91.000000  -3.824817  
+92.000000  -3.796045  
+93.000000  -3.767556  
+94.000000  -3.736517  
+95.000000  -3.699132  
+96.000000  -3.653714  
+97.000000  -3.600113  
+98.000000  -3.539736  
+99.000000  -3.476046  
+100.000000  -3.411748  
+101.000000  -3.349080  
+102.000000  -3.289387  
+103.000000  -3.232429  
+104.000000  -3.177757  
+105.000000  -3.124346  
+106.000000  -3.070827  
+107.000000  -3.015981  
+108.000000  -2.958335  
+109.000000  -2.896652  
+110.000000  -2.830150  
+111.000000  -2.758351  
+112.000000  -2.681899  
+113.000000  -2.602146  
+114.000000  -2.520868  
+115.000000  -2.440411  
+116.000000  -2.361963  
+117.000000  -2.285852  
+118.000000  -2.211536  
+119.000000  -2.137208  
+120.000000  -2.061714  
+121.000000  -1.984243  
+122.000000  -1.904491  
+123.000000  -1.823130  
+124.000000  -1.740513  
+125.000000  -1.657004  
+126.000000  -1.572877  
+127.000000  -1.488119  
+128.000000  -1.402839  
+129.000000  -1.317143  
+130.000000  -1.231158  
+131.000000  -1.144921  
+132.000000  -1.058760  
+133.000000  -0.973095  
+134.000000  -0.888327  
+135.000000  -0.805097  
+136.000000  -0.723130  
+137.000000  -0.641643  
+138.000000  -0.559484  
+139.000000  -0.474893  
+140.000000  -0.387102  
+141.000000  -0.296014  
+142.000000  -0.202212  
+143.000000  -0.107153  
+144.000000  -0.011989  
+145.000000  0.082357  
+146.000000  0.175402  
+147.000000  0.267123  
+148.000000  0.358118  
+149.000000  0.449360  
+150.000000  0.541911  
+151.000000  0.637135  
+152.000000  0.735000  
+153.000000  0.834551  
+154.000000  0.934075  
+155.000000  1.030744  
+156.000000  1.123025  
+157.000000  1.210282  
+158.000000  1.292895  
+159.000000  1.372638  
+160.000000  1.451024  
+161.000000  1.529461  
+162.000000  1.608945  
+163.000000  1.689849  
+164.000000  1.771910  
+165.000000  1.854314  
+166.000000  1.935935  
+167.000000  2.015217  
+168.000000  2.091598  
+169.000000  2.165236  
+170.000000  2.236970  
+171.000000  2.308631  
+172.000000  2.381297  
+173.000000  2.455563  
+174.000000  2.531388  
+175.000000  2.607794  
+176.000000  2.683853  
+177.000000  2.758567  
+178.000000  2.831071  
+179.000000  2.900752  
+180.000000  2.967447  
+181.000000  3.031391  
+182.000000  3.093117  
+183.000000  3.153599  
+184.000000  3.213236  
+185.000000  3.272058  
+186.000000  3.329725  
+187.000000  3.385191  
+188.000000  3.438034  
+189.000000  3.488116  
+190.000000  3.535601  
+191.000000  3.581374  
+192.000000  3.625603  
+193.000000  3.668176  
+194.000000  3.708744  
+195.000000  3.746206  
+196.000000  3.780538  
+197.000000  3.812192  
+198.000000  3.841981  
+199.000000  3.871785  
+200.000000  3.901854  
+201.000000  3.931693  
+202.000000  3.960241  
+203.000000  3.984961  
+204.000000  4.005649  
+205.000000  4.023277  
+206.000000  4.039790  
+207.000000  4.059080  
+208.000000  4.082383  
+209.000000  4.109423  
+210.000000  4.138435  
+211.000000  4.165134  
+212.000000  4.187252  
+213.000000  4.203567  
+214.000000  4.214112  
+215.000000  4.221265  
+216.000000  4.226153  
+217.000000  4.229573  
+218.000000  4.231838  
+219.000000  4.231866  
+220.000000  4.229881  
+221.000000  4.226525  
+222.000000  4.222802  
+223.000000  4.220659  
+224.000000  4.220657  
+225.000000  4.222628  
+226.000000  4.225722  
+227.000000  4.227994  
+228.000000  4.228415  
+229.000000  4.226462  
+230.000000  4.222228  
+231.000000  4.216707  
+232.000000  4.210627  
+233.000000  4.204599  
+234.000000  4.198934  
+235.000000  4.193618  
+236.000000  4.188121  
+237.000000  4.181596  
+238.000000  4.173104  
+239.000000  4.161292  
+240.000000  4.146169  
+241.000000  4.128542  
+242.000000  4.109828  
+243.000000  4.092700  
+244.000000  4.077973  
+245.000000  4.065430  
+246.000000  4.053903  
+247.000000  4.040308  
+248.000000  4.023592  
+249.000000  4.003672  
+250.000000  3.981398  
+251.000000  3.959721  
+252.000000  3.939268  
+253.000000  3.919625  
+254.000000  3.899426  
+255.000000  3.875220  
+256.000000  3.846128  
+257.000000  3.812583  
+258.000000  3.776280  
+259.000000  3.741218  
+260.000000  3.709226  
+261.000000  3.681003  
+262.000000  3.655998  
+263.000000  3.631402  
+264.000000  3.605840  
+265.000000  3.578485  
+266.000000  3.549225  
+267.000000  3.519483  
+268.000000  3.489628  
+269.000000  3.459699  
+270.000000  3.429343  
+271.000000  3.397386  
+272.000000  3.363399  
+273.000000  3.327334  
+274.000000  3.289602  
+275.000000  3.251248  
+276.000000  3.213304  
+277.000000  3.176838  
+278.000000  3.142777  
+279.000000  3.111759  
+280.000000  3.084031  
+281.000000  3.059405  
+282.000000  3.037302  
+283.000000  3.016777  
+284.000000  2.996856  
+285.000000  2.976615  
+286.000000  2.955328  
+287.000000  2.932655  
+288.000000  2.908461  
+289.000000  2.882925  
+290.000000  2.856522  
+291.000000  2.829779  
+292.000000  2.803651  
+293.000000  2.779187  
+294.000000  2.757329  
+295.000000  2.739056  
+296.000000  2.724335  
+297.000000  2.712454  
+298.000000  2.702174  
+299.000000  2.691548  
+300.000000  2.679447  
+301.000000  2.665343  
+302.000000  2.649388  
+303.000000  2.632812  
+304.000000  2.616479  
+305.000000  2.601164  
+306.000000  2.587422  
+307.000000  2.574994  
+308.000000  2.564192  
+309.000000  2.555319  
+310.000000  2.548567  
+311.000000  2.544702  
+312.000000  2.542843  
+313.000000  2.541403  
+314.000000  2.538446  
+315.000000  2.530911  
+316.000000  2.518433  
+317.000000  2.502194  
+318.000000  2.484651  
+319.000000  2.470422  
+320.000000  2.461457  
+321.000000  2.458083  
+322.000000  2.458930  
+323.000000  2.460018  
+324.000000  2.458881  
+325.000000  2.453862  
+326.000000  2.444508  
+327.000000  2.432273  
+328.000000  2.418587  
+329.000000  2.405161  
+330.000000  2.393584  
+331.000000  2.385005  
+332.000000  2.379814  
+333.000000  2.377596  
+334.000000  2.377235  
+335.000000  2.376817  
+336.000000  2.374903  
+337.000000  2.370456  
+338.000000  2.363016  
+339.000000  2.353007  
+340.000000  2.340894  
+341.000000  2.327313  
+342.000000  2.312908  
+343.000000  2.298097  
+344.000000  2.283212  
+345.000000  2.268356  
+346.000000  2.253405  
+347.000000  2.238115  
+348.000000  2.222067  
+349.000000  2.204845  
+350.000000  2.186166  
+351.000000  2.165823  
+352.000000  2.144183  
+353.000000  2.121973  
+354.000000  2.100146  
+355.000000  2.079819  
+356.000000  2.061607  
+357.000000  2.045597  
+358.000000  2.031257  
+359.000000  2.017602  
+360.000000  2.003010  
+361.000000  1.985648  
+362.000000  1.963846  
+363.000000  1.935881  
+364.000000  1.901864  
+365.000000  1.863157  
+366.000000  1.822104  
+367.000000  1.782472  
+368.000000  1.746351  
+369.000000  1.714700  
+370.000000  1.687223  
+371.000000  1.661623  
+372.000000  1.636504  
+373.000000  1.610768  
+374.000000  1.583838  
+375.000000  1.556336  
+376.000000  1.528221  
+377.000000  1.499331  
+378.000000  1.469309  
+379.000000  1.437364  
+380.000000  1.403043  
+381.000000  1.366058  
+382.000000  1.326364  
+383.000000  1.284076  
+384.000000  1.239754  
+385.000000  1.194185  
+386.000000  1.148224  
+387.000000  1.103086  
+388.000000  1.058890  
+389.000000  1.015140  
+390.000000  0.970883  
+391.000000  0.924084  
+392.000000  0.874340  
+393.000000  0.822066  
+394.000000  0.768335  
+395.000000  0.715809  
+396.000000  0.664884  
+397.000000  0.614826  
+398.000000  0.563938  
+399.000000  0.508604  
+400.000000  0.447717  
+401.000000  0.381588  
+402.000000  0.311939  
+403.000000  0.242754  
+404.000000  0.176369  
+405.000000  0.114204  
+406.000000  0.056477  
+407.000000  0.001502  
+408.000000  -0.052114  
+409.000000  -0.105860  
+410.000000  -0.161000  
+411.000000  -0.218227  
+412.000000  -0.277886  
+413.000000  -0.339869  
+414.000000  -0.403746  
+415.000000  -0.468674  
+416.000000  -0.534354  
+417.000000  -0.600855  
+418.000000  -0.668612  
+419.000000  -0.738591  
+420.000000  -0.811281  
+421.000000  -0.886814  
+422.000000  -0.964857  
+423.000000  -1.044587  
+424.000000  -1.124849  
+425.000000  -1.204338  
+426.000000  -1.281846  
+427.000000  -1.356225  
+428.000000  -1.427397  
+429.000000  -1.496099  
+430.000000  -1.563745  
+431.000000  -1.632603  
+432.000000  -1.704208  
+433.000000  -1.779532  
+434.000000  -1.858823  
+435.000000  -1.941179  
+436.000000  -2.025806  
+437.000000  -2.111748  
+438.000000  -2.198030  
+439.000000  -2.284137  
+440.000000  -2.369092  
+441.000000  -2.451935  
+442.000000  -2.531855  
+443.000000  -2.607917  
+444.000000  -2.680249  
+445.000000  -2.749603  
+446.000000  -2.817192  
+447.000000  -2.884950  
+448.000000  -2.953821  
+449.000000  -3.024117  
+450.000000  -3.095489  
+451.000000  -3.166451  
+452.000000  -3.236284  
+453.000000  -3.304586  
+454.000000  -3.371321  
+455.000000  -3.437341  
+456.000000  -3.502667  
+457.000000  -3.567009  
+458.000000  -3.629788  
+459.000000  -3.689976  
+460.000000  -3.747133  
+461.000000  -3.801271  
+462.000000  -3.852957  
+463.000000  -3.903071  
+464.000000  -3.953234  
+465.000000  -4.005279  
+466.000000  -4.060841  
+467.000000  -4.121729  
+468.000000  -4.187474  
+469.000000  -4.256140  
+470.000000  -4.324673  
+471.000000  -4.388427  
+472.000000  -4.444890  
+473.000000  -4.493075  
+474.000000  -4.533674  
+475.000000  -4.569825  
+476.000000  -4.603926  
+477.000000  -4.638115  
+478.000000  -4.673863  
+479.000000  -4.711122  
+480.000000  -4.750025  
+481.000000  -4.790295  
+482.000000  -4.831343  
+483.000000  -4.872800  
+484.000000  -4.913513  
+485.000000  -4.952161  
+486.000000  -4.987490  
+487.000000  -5.018131  
+488.000000  -5.043945  
+489.000000  -5.065610  
+490.000000  -5.084468  
+491.000000  -5.102653  
+492.000000  -5.121498  
+493.000000  -5.141685  
+494.000000  -5.163084  
+495.000000  -5.184620  
+496.000000  -5.204945  
+497.000000  -5.222560  
+498.000000  -5.236147  
+499.000000  -5.244459  
+500.000000  -5.247555  
+501.000000  -5.246355  
+502.000000  -5.242378  
+503.000000  -5.238344  
+504.000000  -5.235024  
+505.000000  -5.232101  
+506.000000  -5.228314  
+507.000000  -5.220555  
+508.000000  -5.207982  
+509.000000  -5.190981  
+510.000000  -5.171142  
+511.000000  -5.152022  
+512.000000  -5.135488  
+513.000000  -5.122399  
+514.000000  -5.112358  
+515.000000  -5.103243  
+516.000000  -5.092975  
+517.000000  -5.079417  
+518.000000  -5.060839  
+519.000000  -5.036119  
+520.000000  -5.005408  
+521.000000  -4.969935  
+522.000000  -4.931743  
+523.000000  -4.893859  
+524.000000  -4.858151  
+525.000000  -4.825584  
+526.000000  -4.796073  
+527.000000  -4.767964  
+528.000000  -4.740004  
+529.000000  -4.711003  
+530.000000  -4.680063  
+531.000000  -4.647086  
+532.000000  -4.611743  
+533.000000  -4.573839  
+534.000000  -4.533276  
+535.000000  -4.489889  
+536.000000  -4.443794  
+537.000000  -4.395220  
+538.000000  -4.344481  
+539.000000  -4.291971  
+540.000000  -4.238037  
+541.000000  -4.182989  
+542.000000  -4.127075  
+543.000000  -4.070472  
+544.000000  -4.013316  
+545.000000  -3.955699  
+546.000000  -3.897677  
+547.000000  -3.839278  
+548.000000  -3.780501  
+549.000000  -3.721310  
+
+
diff --git a/writing/sp4comm.multipub/50-filters/data/filtering-example-clean.txt b/writing/sp4comm.multipub/50-filters/data/filtering-example-clean.txt
new file mode 100644
index 0000000..f0d9b6a
--- /dev/null
+++ b/writing/sp4comm.multipub/50-filters/data/filtering-example-clean.txt
@@ -0,0 +1,3 @@
+-50 -2.598274 -49 -2.613778 -48 -2.630382 -47 -2.648087 -46 -2.666894 -45 -2.686802 -44 -2.707808 -43 -2.729908 -42 -2.753097 -41 -2.777366 -40 -2.802706 -39 -2.829107 -38 -2.856556 -37 -2.885039 -36 -2.914540 -35 -2.945043 -34 -2.976528 -33 -3.008976 -32 -3.042364 -31 -3.076669 -30 -3.111866 -29 -3.147929 -28 -3.184831 -27 -3.222541 -26 -3.261030 -25 -3.300265 -24 -3.340214 -23 -3.380841 -22 -3.422112 -21 -3.463988 -20 -3.506431 -19 -3.549403 -18 -3.592862 -17 -3.636767 -16 -3.681075 -15 -3.725742 -14 -3.770724 -13 -3.815974 -12 -3.861447 -11 -3.907095 -10 -3.952870 -9 -3.998722 -8 -4.044603 -7 -4.090461 -6 -4.136246 -5 -4.181907 -4 -4.227391 -3 -4.272646 -2 -4.317619 -1 -4.362258 0 -4.406507 1 -4.450314 2 -4.493624 3 -4.536384 4 -4.578540 5 -4.620036 6 -4.660819 7 -4.700834 8 -4.740028 9 -4.778346 10 -4.815735 11 -4.852141 12 -4.887512 13 -4.921794 14 -4.954936 15 -4.986885 16 -5.017590 17 -5.047002 18 -5.075069 19 -5.101742 20 -5.126974 21 -5.150715 22 -5.172920 23 -5.193542 24 -5.212536 25 -5.229858 26 -5.245465 27 -5.259314 28 -5.271366 29 -5.281581 30 -5.289919 31 -5.296343 32 -5.300819 33 -5.303310 34 -5.303784 35 -5.302208 36 -5.298553 37 -5.292790 38 -5.284890 39 -5.274828 40 -5.262579 41 -5.248121 42 -5.231433 43 -5.212494 44 -5.191288 45 -5.167797 46 -5.142008 47 -5.113907 48 -5.083484 49 -5.050729 50 -5.015635 51 -4.978197 52 -4.938409 53 -4.896271 54 -4.851783 55 -4.804944 56 -4.755760 57 -4.704236 58 -4.650378 59 -4.594195 60 -4.535699 61 -4.474902 62 -4.411818 63 -4.346464 64 -4.278857 65 -4.209019 66 -4.136970 67 -4.062734 68 -3.986336 69 -3.907803 70 -3.827165 71 -3.744451 72 -3.659693 73 -3.572927 74 -3.484186 75 -3.393508 76 -3.300932 77 -3.206497 78 -3.110247 79 -3.012224 80 -2.912472 81 -2.811039 82 -2.707971 83 -2.603318 84 -2.497130 85 -2.389458 86 -2.280356 87 -2.169877 88 -2.058076 89 -1.945011 90 -1.830737 91 -1.715315 92 -1.598802 93 -1.481260 94 -1.362749 95 -1.243332 96 -1.123071 97 -1.002031 98 -0.880275 99 -0.757868 100 -0.634875 101 -0.511364 102 -0.387399 103 -0.263048 104 -0.138379 105 -0.013458 106 0.111646 107 0.236865 108 0.362132 109 0.487377 110 0.612534 111 0.737533 112 0.862306 113 0.986786 114 1.110904 115 1.234593 116 1.357786 117 1.480416 118 1.602416 119 1.723720 120 1.844263 121 1.963980 122 2.082806 123 2.200678 124 2.317533 125 2.433309 126 2.547944 127 2.661379 128 2.773553 129 2.884408 130 2.993887 131 3.101934 132 3.208492 133 3.313509 134 3.416931 135 3.518706 136 3.618784 137 3.717116 138 3.813655 139 3.908354 140 4.001168 141 4.092053 142 4.180969 143 4.267875 144 4.352732 145 4.435503 146 4.516152 147 4.594646 148 4.670952 149 4.745040 150 4.816882 151 4.886449 152 4.953718 153 5.018664 154 5.081266 155 5.141504 156 5.199360 157 5.254817 158 5.307863 159 5.358483 160 5.406667 161 5.452407 162 5.495695 163 5.536526 164 5.574898 165 5.610809 166 5.644259 167 5.675250 168 5.703788 169 5.729877 170 5.753526 171 5.774743 172 5.793542 173 5.809934 174 5.823935 175 5.835561 176 5.844831 177 5.851765 178 5.856384 179 5.858713 180 5.858775 181 5.856598 182 5.852209 183 5.845639 184 5.836918 185 5.826079 186 5.813157 187 5.798186 188 5.781204 189 5.762249 190 5.741360 191 5.718578 192 5.693944 193 5.667502 194 5.639295 195 5.609370 196 5.577772 197 5.544548 198 5.509746 199 5.473416 200 5.435607 201 5.396370 202 5.355756 203 5.313817 204 5.270605 205 5.226175 206 5.180579 207 5.133872 208 5.086108 209 5.037343 210 4.987631 211 4.937028 212 4.885590 213 4.833373 214 4.780433 215 4.726826 216 4.672608 217 4.617834 218 4.562561 219 4.506844 220 4.450739 221 4.394302 222 4.337585 223 4.280645 224 4.223536 225 4.166310 226 4.109021 227 4.051721 228 3.994462 229 3.937296 230 3.880272 231 3.823440 232 3.766849 233 3.710547 234 3.654581 235 3.598997 236 3.543840 237 3.489154 238 3.434982 239 3.381366 240 3.328346 241 3.275963 242 3.224254 243 3.173256 244 3.123006 245 3.073536 246 3.024882 247 2.977073 248 2.930141 249 2.884115 250 2.839020 251 2.794885 252 2.751732 253 2.709585 254 2.668464 255 2.628391 256 2.589382 257 2.551455 258 2.514624 259 2.478902 260 2.444303 261 2.410834 262 2.378506 263 2.347325 264 2.317295 265 2.288421 266 2.260705 267 2.234146 268 2.208744 269 2.184495 270 2.161394 271 2.139436 272 2.118613 273 2.098915 274 2.080331 275 2.062848 276 2.046453 277 2.031130 278 2.016861 279 2.003628 280 1.991411 281 1.980189 282 1.969937 283 1.960633 284 1.952250 285 1.944761 286 1.938139 287 1.932352 288 1.927371 289 1.923164 290 1.919697 291 1.916936 292 1.914846 293 1.913390 294 1.912531 295 1.912230 296 1.912449 297 1.913146 298 1.914281 299 1.915813 300 1.917698 301 1.919894 302 1.922356 303 1.925040 304 1.927901 305 1.930894 306 1.933972 307 1.937090 308 1.940200 309 1.943255 310 1.946209 311 1.949013 312 1.951621 313 1.953984 314 1.956055 315 1.957787 316 1.959130 317 1.960039 318 1.960465 319 1.960362 320 1.959683 321 1.958381 322 1.956409 323 1.953724 324 1.950278 325 1.946028 326 1.940930 327 1.934939 328 1.928014 329 1.920112 330 1.911191 331 1.901213 332 1.890136 333 1.877922 334 1.864533 335 1.849934 336 1.834087 337 1.816960 338 1.798517 339 1.778727 340 1.757559 341 1.734983 342 1.710971 343 1.685495 344 1.658529 345 1.630049 346 1.600032 347 1.568456 348 1.535301 349 1.500549 350 1.464182 351 1.426184 352 1.386543 353 1.345244 354 1.302278 355 1.257636 356 1.211309 357 1.163292 358 1.113581 359 1.062173 360 1.009067 361 0.954265 362 0.897770 363 0.839584 364 0.779715 365 0.718171 366 0.654960 367 0.590095 368 0.523588 369 0.455454 370 0.385709 371 0.314372 372 0.241462 373 0.167001 374 0.091013 375 0.013521 376 -0.065447 377 -0.145863 378 -0.227697 379 -0.310918 380 -0.395494 381 -0.481389 382 -0.568568 383 -0.656993 384 -0.746625 385 -0.837424 386 -0.929347 387 -1.022353 388 -1.116396 389 -1.211430 390 -1.307408 391 -1.404283 392 -1.502004 393 -1.600520 394 -1.699781 395 -1.799732 396 -1.900321 397 -2.001492 398 -2.103189 399 -2.205356 400 -2.307936 401 -2.410869 402 -2.514096 403 -2.617558 404 -2.721195 405 -2.824945 406 -2.928747 407 -3.032537 408 -3.136255 409 -3.239837 410 -3.343219 411 -3.446338 412 -3.549130 413 -3.651532 414 -3.753478 415 -3.854905 416 -3.955749 417 -4.055945 418 -4.155429 419 -4.254138 420 -4.352007 421 -4.448973 422 -4.544974 423 -4.639946 424 -4.733826 425 -4.826554 426 -4.918067 427 -5.008306 428 -5.097209 429 -5.184718 430 -5.270773 431 -5.355318 432 -5.438294 433 -5.519646 434 -5.599319 435 -5.677259 436 -5.753411 437 -5.827725 438 -5.900149 439 -5.970633 440 -6.039130 441 -6.105591 442 -6.169971 443 -6.232225 444 -6.292310 445 -6.350184 446 -6.405807 447 -6.459140 448 -6.510145 449 -6.558788 450 -6.605033 451 -6.648848 452 -6.690202 453 -6.729066 454 -6.765413 455 -6.799217 456 -6.830453 457 -6.859100 458 -6.885136 459 -6.908545 460 -6.929308 461 -6.947410 462 -6.962839 463 -6.975583 464 -6.985634 465 -6.992982 466 -6.997624 467 -6.999555 468 -6.998773 469 -6.995278 470 -6.989074 471 -6.980163 472 -6.968551 473 -6.954246 474 -6.937258 475 -6.917598 476 -6.895280 477 -6.870318 478 -6.842731 479 -6.812536 480 -6.779754 481 -6.744408 482 -6.706523 483 -6.666123 484 -6.623238 485 -6.577896 486 -6.530128 487 -6.479968 488 -6.427450 489 -6.372609 490 -6.315484 491 -6.256113 492 -6.194537 493 -6.130798 494 -6.064940 495 -5.997007 496 -5.927046 497 -5.855103 498 -5.781229 499 -5.705473 500 -5.627885 501 -5.548519 502 -5.467427 503 -5.384665 504 -5.300287 505 -5.214350 506 -5.126911 507 -5.038028 508 -4.947761 509 -4.856168 510 -4.763310 511 -4.669248 512 -4.574044 513 -4.477759 514 -4.380457 515 -4.282200 516 -4.183051 517 -4.083075 518 -3.982335 519 -3.880895 520 -3.778819 521 -3.676173 522 -3.573019 523 -3.469424 524 -3.365451 525 -3.261164 526 -3.156627 527 -3.051904 528 -2.947059 529 -2.842155 530 -2.737254 531 -2.632419 532 -2.527712 533 -2.423194 534 -2.318925 535 -2.214966 536 -2.111376 537 -2.008213 538 -1.905535 539 -1.803400 540 -1.701862 541 -1.600977 542 -1.500800 543 -1.401383 544 -1.302778 545 -1.205036 546 -1.108206 547 -1.012338 548 -0.917478 549 -0.823672 
+
+
diff --git a/writing/sp4comm.multipub/sp4comm.tex b/writing/sp4comm.multipub/sp4comm.tex
index 714fcac..4cd3de9 100644
--- a/writing/sp4comm.multipub/sp4comm.tex
+++ b/writing/sp4comm.multipub/sp4comm.tex
@@ -1,165 +1,167 @@
 %% Test book for multipub 
 %%
-\documentclass[12pt,a4paper,fleqn]{book}
+\documentclass[13pt,a4paper,fleqn]{book}
 
 % include multipub package and declare desired format (PRINT | EPUB | KINDLE)
 % (note: cannot use package and option formalism because it breaks LateXML)
 \input{../multipub/toolbox/tex/multipub}
 \multipub{PRINT}
 
+%\usepackage[margin=30mm]{geometry}
+
 % packages included here must be common to all versions, i.e. they need
 % to have LateXML bindings available
 \usepackage{makeidx}
 \usepackage{amsmath, amssymb}
 \usepackage{graphicx}
 \usepackage{url}
 
 
 % now do target-specific includes and inits
 \begin{PRINT}
 	\include{styles/printlayout}	
 	\include{styles/color}	
 %	\include{styles/grayscale}	
 \end{PRINT}
 \begin{KINDLE}
 	\include{styles/printlayout}	
 \end{KINDLE}
 
 \begin{HTML}
   \include{styles/epublayout}
 \end{HTML}
 \begin{EPUB}
 	\include{styles/epublayout}
 \end{EPUB}
 
 
 % Here we can define some macros common to all versions. This, for instance,
 % produces numberless sections that still appear in headers and TOC
 \newcommand{\codasection}[1]{%
 	\section*{#1}%
 	\markright{#1}%
 	\addcontentsline{toc}{section}{#1}}
 	
 \newcommand{\itempar}[1]{\par\vspace{1em}\noindent{\sffamily\bfseries #1}\hspace{1ex}}
 \newcommand{\circonv}{\mbox{\,$\bigcirc$\hspace{-1.8ex}\scriptsize{N} \,}}
 \newcommand{\Real}[1]{\mbox{Re\{$#1$\}}}
 \newcommand{\Imag}[1]{\mbox{Im\{$#1$\}}}
 \newcommand{\ztrans}{\mbox{$z$-transform}}
 \newcommand{\expt}[1]{\mbox{E$\left[ #1 \right]$}}
 \newcommand{\proba}[1]{\mbox{P[$#1$]}}
 \renewcommand{\Re}{\operatorname{Re}}
 \renewcommand{\Im}{\operatorname{Im}}	
 
 \newcommand{\DFT}[1]{\mbox{DFT\big\{$#1$\big\}}}
 \newcommand{\DFS}[1]{\mbox{DFS\big\{$#1$\big\}}}
 \newcommand{\IDFT}[1]{\mbox{IDFT\big\{$#1$\big\}}}
 \newcommand{\DTFT}[1]{\mbox{DTFT\big\{$#1$\big\}}}
 
 \newcommand{\rect}{\operatorname{rect}}
 \newcommand{\sinc}{\operatorname{sinc}}
 
 \newcommand{\de}{\, \mathrm{d}}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 \setcounter{secnumdepth}{3}
 \makeindex
 
 
 
 %% OUPUT SELECTOR
 \newif\ifexercises
 \newif\ifanswers
 %% choose one
 %\exercisestrue\answersfalse % only exercises
 %\exercisesfalse\answerstrue % only solutions
 \exercisestrue\answerstrue % both
 
 
 
 \multipubbegin
 \begin{document}
 
 \title{Test Book for PDF and EPUB}
 \author{Paolo Prandoni}
 \date{}
 \maketitle
 
 \frontmatter
 \tableofcontents
 
 
 %\includefile{00-intro}{00-intro}
 
 \mainmatter
 
 %\includefile{20-signals}{10-dt-signals}
-\begincoda
+%\begincoda
 %\includefile{20-signals}{90-dt-examples}
 %\includefile{20-signals}{99-dt-exercises}
-\endcoda
-
-
+%\endcoda
+%
+%
 %\includefile{30-vectors}{00-vs-vectors}
-
-
-\includefile{40-fourier}{00-fa-intro}
-\includefile{40-fourier}{10-fa-DFT}
-\includefile{40-fourier}{12-fa-DFTtool}
-\includefile{40-fourier}{15-fa-DFS}
-\includefile{40-fourier}{20-fa-DTFT}
-\includefile{40-fourier}{30-fa-tables}
-\begincoda
-\includefile{40-fourier}{100-fa-realtrans}
-\endcoda
-
-%\includefile{50-filters}{00-lf-intro}
+%
+%
+%\includefile{40-fourier}{00-fa-intro}
+%\includefile{40-fourier}{10-fa-DFT}
+%\includefile{40-fourier}{12-fa-DFTtool}
+%\includefile{40-fourier}{15-fa-DFS}
+%\includefile{40-fourier}{20-fa-DTFT}
+%\includefile{40-fourier}{30-fa-tables}
 %\begincoda
+%\includefile{40-fourier}{100-fa-realtrans}
+%\endcoda
 
+\includefile{50-filters}{00-lf-intro}
+%\begincoda
 
+%
 %\includefile{60-ztrans}{10-zt-ztrans}
-\begincoda
+%\begincoda
 %\includefile{60-ztrans}{90-zt-examples}
 %\includefile{60-ztrans}{99-zt-exercises}
-\endcoda
-
-%\includefile{70-filterdesign}{00-fd-intro}
-
-
+%\endcoda
+%
+%%\includefile{70-filterdesign}{00-fd-intro}
+%
+%
 %\includefile{80-stochastic}{00-rn-intro}
 %\includefile{80-stochastic}{10-rn-spectral}
 %\includefile{80-stochastic}{20-rn-adaptive}
-\begincoda
+%\begincoda
 %\includefile{80-stochastic}{90-rn-examples}
 %\includefile{80-stochastic}{99-rn-exercises}
-\endcoda
-
-
+%\endcoda
+%
+%
 %\includefile{90-sampling}{00-is-intro}
 %\includefile{90-sampling}{10-is-interpolation}
 %\includefile{90-sampling}{20-is-sampling}
 %\includefile{90-sampling}{30-is-processing}
-\begincoda
+%\begincoda
 %\includefile{90-sampling}{90-is-examples}
 %\includefile{90-sampling}{99-is-exercises}
-\endcoda
-
-
-%\includefile{100-quantization}{00-qt-intro}
-
-
+%\endcoda
+%
+%
+%%\includefile{100-quantization}{00-qt-intro}
+%
+%
 %\includefile{110-multirate}{10-mr-multirate}
-\begincoda
+%\begincoda
 %\includefile{110-multirate}{90-mr-examples}
 %\includefile{110-multirate}{99-mr-exercises}
-\endcoda
-
-
+%\endcoda
+%
+%
 %\includefile{130-image}{00-ip-intro}
 %\includefile{130-image}{10-ip-improc}
 %\includefile{130-image}{20-ip-jpg}
-
-\backmatter
-\printindex
+%
+%\backmatter
+%\printindex
 
 \end{document}