]> AND Private Git Repository - ThesisAhmed.git/commitdiff
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
adding the second chapter
authorafanfakh <afanfakh@fanfakh.afanfakh>
Fri, 15 Apr 2016 09:28:01 +0000 (11:28 +0200)
committerafanfakh <afanfakh@fanfakh.afanfakh>
Fri, 15 Apr 2016 09:28:01 +0000 (11:28 +0200)
19 files changed:
CHAPITRE_02.tex
fig/ch2/bt.eps [new file with mode: 0755]
fig/ch2/bt_pre-eps-converted-to.pdf [new file with mode: 0644]
fig/ch2/bt_pre.eps [new file with mode: 0755]
fig/ch2/cg.eps [new file with mode: 0755]
fig/ch2/cg_per.eps [new file with mode: 0755]
fig/ch2/classC.eps [new file with mode: 0644]
fig/ch2/commtasks.pdf [new file with mode: 0644]
fig/ch2/compt.pdf [new file with mode: 0644]
fig/ch2/energy_con.eps [new file with mode: 0644]
fig/ch2/ep.eps [new file with mode: 0755]
fig/ch2/file.eps [new file with mode: 0755]
fig/ch2/file3.eps [new file with mode: 0755]
fig/ch2/ft.eps [new file with mode: 0755]
fig/ch2/lu.eps [new file with mode: 0755]
fig/ch2/lu_pre.eps [new file with mode: 0755]
fig/ch2/mg_pre.eps [new file with mode: 0755]
fig/ch2/sp.eps [new file with mode: 0755]
my_reference.bib

index 9bff5235caafdc91a23be723489b41f68c9b31ef..2443000ba475ceab8c0e1e1929de2cfe374edd17 100644 (file)
@@ -4,6 +4,735 @@
 %%                          %%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 %%                          %%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
+\newcommand{\AG}[2][inline]{%
+  \todo[color=green!50,#1]{\sffamily\textbf{AG:} #2}\xspace}
+\newcommand{\JC}[2][inline]{%
+  \todo[color=red!10,#1]{\sffamily\textbf{JC:} #2}\xspace}
 
 
+\newcommand{\Xsub}[2]{{\ensuremath{#1_\mathit{#2}}}}
 
 
-\chapter{Energy Optimization of homogeneous platforms}
+%% used to put some subscripts lower, and make them more legible
+\newcommand{\fxheight}[1]{\ifx#1\relax\relax\else\rule{0pt}{1.52ex}#1\fi}
+
+\newcommand{\Tcomp}[1][]{\Xsub{T}{comp}_{#1}}
+\renewcommand*\npunitcommand[1]{\text{#1}}
+
+
+\chapter{Energy optimization of homogeneous platform}
+\label{ch2}
+
+\section{Introduction}
+\label{ch2:1}
+
+Dynamic Voltage and Frequency Scaling (DVFS) can be applied to modern CPUs. This technique is 
+usually used to reduce the energy consumed by a CPU while computing. Indeed,
+power consumption by a processor at a given time is exponentially related to its frequency. 
+Thus, decreasing the frequency reduces the power consumed by the CPU. However, it can also 
+significantly affect the performance of the executed program if it is compute bound and 
+if a low CPU frequency is selected. The performance degradation ratio can even be higher 
+than the saved energy ratio. Therefore, the chosen frequency scaling factor must give the best possible
+trade-off between energy reduction and performance. This chapter presents an algorithm 
+that predicts the energy consumed with each frequency gear and selects the one that gives 
+the best ratio between energy consumption reduction and performance. Furthermore, the main
+objective of HPC systems is to execute as fast as possible the application. Therefore, our 
+algorithm selects the scaling factor online with very small overhead.  The proposed algorithm 
+takes into account both the computation and communication times of the Message passing 
+programs (MPI) to choose the frequency scaling factor. 
+This algorithm has the ability to predict both energy consumption and execution time over 
+all available scaling factors.  The prediction achieved depends on some computing time information,
+gathered at the beginning of the runtime.  We apply this algorithm to seven MPI
+benchmarks.  These MPI programs are the NAS parallel benchmarks (NPB v3.3)
+developed by NASA~\cite{ref65}.  Our experiments are executed using the simulator
+SimGrid/SMPI v3.10~\cite{ref66} over an homogeneous
+distributed memory architecture. 
+
+Mainly there are two tasks in this chapter, the first one is showed the results of the proposed frequency scaling selection algorithm  using the energy model of the Rauber and Rünger \cite{ref47}. Furthermore, the proposed algorithm  is compared with Rauber and Rünger's method.  The comparison results show that our algorithm gives better energy-time trade-off. In the second task,  a new energy model  that takes into account both the communication and computation times of the MPI programs running over homogeneous cluster is developed.
+It  also shows the new results obtained using the new energy model and comparing them with the ones use Rauber and Rünger energy model.  
+
+
+This chapter is organized as follows:  Section~\ref{ch2:2} explains the execution
+of parallel tasks and the sources of slack times.  It also presents an energy
+model for homogeneous platforms from other authors.  Section~\ref{ch2:3} describes how the
+performance of MPI programs can be predicted.  Section~\ref{ch2:4} presents
+the energy-performance objective function that maximizes the reduction of energy
+consumption while minimizing the degradation of the program's performance.
+Section~\ref{ch2:5} details the proposed energy-performance algorithm.
+Section~\ref{ch2:6} verifies the accuracy of the performance prediction model
+and presents the results of the proposed algorithm.  It also shows the
+comparison results between our method and other existing method.  
+Section~\ref{ch2:7} describes the new proposed energy consumption model for 
+homogeneous platforms. Section~\ref{ch2:8} presents the experimental results 
+of using the new energy model. Finally,  section~\ref{ch2:9} summarizes this chapter.
+
+
+\section{Related works}
+\label{sec.relwork}
+
+
+In this section, some heuristics to compute the scaling factor are presented and
+classified into two categories: offline and online methods.
+
+\subsection{Offline scaling factor selection methods}
+
+The offline scaling factor selection methods are executed before the runtime of
+the program.  They return static scaling factor values to the processors
+participating in the execution of the parallel program.  On the one hand, the
+scaling factor values could be computed based on information retrieved by
+analyzing the code of the program and the computing system that will execute it.
+In~\cite{ref56}, Azevedo et al. detect during compilation the dependency points
+between tasks in a multi-task program.  This information is then used to lower
+the frequency of some processors in order to eliminate slack times.  A slack
+time is the period of time during which a processor that has already finished
+its computation, has to wait for a set of processors to finish their
+computations and send their results to the waiting processor in order to
+continue its task that is dependent on the results of computations being
+executed on other processors.  Freeh et al. showed in~\cite{ref53} that the
+communication times of MPI programs do not change when the frequency is scaled
+down.  On the other hand, some offline scaling factor selection methods use the
+information gathered from previous full or partial executions of the program. 
+The whole program or, a part of it,  is usually executed over all the available frequency
+gears and the execution time and the energy consumed with each frequency
+gear are measured.  Then a heuristic or an exact method uses the retrieved
+information to compute the values of the scaling factor for the processors.
+In~\cite{ref57}, Xie et al. use an exact exponential breadth-first search algorithm
+to compute the scaling factor values that give the optimal energy reduction
+while respecting a deadline for a sequential program.  They also present a
+linear heuristic that approximates the optimal solution.  In~\cite{ref58} , Rountree
+et al. use a linear programming algorithm, while in~\cite{ref59,ref60}, Cochran et
+al. use a multi-logistic regression algorithm for the same goal.  The main
+drawback of these methods is that they all require executing the
+whole program or, a part of it, on all frequency gears for each new instance of 
+the same program.
+
+\subsection{Online scaling factor selection methods}
+
+The online scaling factor selection methods are executed during the runtime of
+the program.  They are usually integrated into iterative programs where the same
+block of instructions is executed many times.  During the first few iterations,
+a lot of information is measured such as the execution time, the energy consumed
+using a multimeter, the slack times, \dots{} Then a method will exploit these
+measurements to compute the scaling factor values for each processor.  This
+operation, measurements and computing new scaling factor, can be repeated as
+much as needed if the iterations are not regular.  Kimura, Peraza, Yu-Liang et
+al.~\cite{ref61,ref55,ref62} used varied heuristics to select the appropriate scaling
+factor values to eliminate the slack times during runtime.  However, as seen
+in~\cite{ref63,ref64}, machine learning methods can take a lot of time to converge
+when the number of available gears is big.  To reduce the impact of slack times,
+in~\cite{ref54}, Lim et al. developed an algorithm that detects the communication
+sections and changes the frequency during these sections only.  This approach
+might change the frequency of each processor many times per iteration if an
+iteration contains more than one communication section.  In~\cite{ref53}, Rauber and
+Rünger used an analytical model that can predict the consumed energy and the
+execution time for every frequency gear after measuring the consumed energy and
+the execution time with the highest frequency gear.  These predictions may be
+used to choose the optimal gear for each processor executing the parallel
+program to reduce energy consumption.  To maintain the performance of the
+parallel program , they set the processor with the biggest load to the highest
+gear and then compute the scaling factor values for the rest of the processors.
+Although this model was built for parallel architectures, it can be adapted to
+distributed architectures by taking into account the communication times.  The
+primary contribution of this chapter is to present a new online scaling factor
+selection method which has the following characteristics:
+\begin{enumerate}
+\item It is based on both  Rauber and Rünger and the new developed energy models to predict the energy consumption of the application with different frequency gears. 
+\item It selects the frequency scaling factor for simultaneously optimizing
+  energy reduction and maintaining performance.
+\item It is well adapted to distributed architectures because it takes into
+  account the communication time.
+\item It is well adapted to distributed applications with imbalanced tasks.
+\item It has a very small footprint when compared to other methods
+  (e.g.,~\cite{ref64}) and does not require profiling or training as
+  in~\cite{ref59,ref60}.
+\end{enumerate}
+
+
+\section{Execution and energy of parallel tasks on homogeneous platform}
+\label{ch2:2}
+
+\subsection{Parallel tasks execution on homogeneous platform}
+\label{ch2:2:1}
+A homogeneous cluster consists in identical nodes in terms of hardware and
+software.  Each node has its own memory and at least one processor which can be
+a multi-core.  The nodes are connected via a high bandwidth network.  Tasks
+executed on this model can be either synchronous or asynchronous.  In this chapter
+we consider execution of the synchronous tasks on distributed homogeneous
+platform.  These tasks can exchange the data via synchronous message passing.
+
+
+
+\begin{figure}[h!]
+\centering
+\centering
+\includegraphics[scale=0.73]{fig/ch2/commtasks} 
+\includegraphics[scale=0.73]{fig/ch2/compt}\\ ~ ~ ~ ~ ~  ~(a) ~ ~  ~ ~ ~  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~(b)
+\caption{Parallel tasks execution on homogeneous platform (a) imbalanced communications and (b) imbalanced  
+computations}
+\label{fig:homo}
+\end{figure}
+
+Therefore, the execution time of a task consists in the computation time and the
+communication time.  Moreover, the synchronous communications between tasks can
+lead to slack times while tasks wait at the synchronization barrier for other
+tasks to finish their tasks (see figure~\ref{fig:homo}(a)).  The imbalanced
+communications happen when nodes have to send/receive different amounts of data
+or they communicate with different numbers of nodes.  Other sources of slack
+times are imbalanced computations.  This happens when processing different
+amounts of data on each processor (see figure~\ref{fig:homo}(b)).  In this case the
+fastest tasks have to wait at the synchronization barrier for the slowest ones
+to begin the next task.  In both cases the overall execution time of the program
+is the execution time of the slowest task as in EQ~(\ref{eq:T1}).
+\begin{equation}
+  \label{eq:T1}
+  \textit{Program Time} = \max_{i=1,2,\dots,N} T_i
+\end{equation}
+where $T_i$ is the execution time of task $i$ and all the tasks are executed
+concurrently on different processors.
+
+\subsection{Energy model for homogeneous platform}
+\label{ch2:2:2}
+
+The total energy consumption model for a parallel homogeneous
+platform, as presented by Rauber and Rünger~\cite{ref47}, can be written as a
+function of the scaling factor $S$, as in EQ~\ref{eq:energy}.
+Moreover, the scaling factor $S_1$ is the scaling factor which should be the
+highest because they are proportional to the time values $T_i$.  Therefore, the scaling
+factors of the others tasks $S_i$ are computed as in EQ~\ref{eq:si}.
+
+\begin{equation}
+  \label{eq:si}
+  S_i = S \cdot \frac{T_1}{T_i}
+      = \frac{F_{max}}{F_{new}} \cdot \frac{T_1}{T_i}
+\end{equation}
+
+We compare our algorithm with Rauber and Rünger's scaling factor selection
+method which uses the same energy model.  In their method, the optimal scaling factor is
+computed by minimizing the derivation of EQ~(\ref{eq:energy}) which produces
+EQ~(\ref{eq:sopt}).
+
+\begin{equation}
+  \label{eq:sopt}
+  S_\textit{opt} = \sqrt[3]{\frac{2}{N} \cdot \frac{P_\textit{dyn}}{P_\textit{static}} \cdot
+    \left( 1 + \sum_{i=2}^{N} \frac{T_i^3}{T_1^3} \right) }
+\end{equation}
+
+This model is computed the frequency scaling factor which optimizes the energy consumption of the parallel
+program into minimal level.
+
+\section{Performance evaluation of MPI programs}
+\label{ch2:3}
+
+The execution time of a parallel synchronous iterative application is equal
+to the execution time of the slowest task as in figure~(\ref{fig:homo}).  
+If there is no communication and the application is not data bounded, the execution time of a
+parallel program is linearly proportional to the operational frequency and any
+DVFS operation for energy reduction increases the execution time of the parallel
+program.  Therefore, the scaling factor $S$ is linearly proportional to the
+execution time.  However, in most MPI applications the processes exchange
+data.  During these communications the processors involved remain idle until the
+communications are finished.  For that reason, any change in the frequency has no
+impact on the time of communication~\cite{ref53}.  The communication time for a
+task is the summation of periods of time that begin with an MPI call for sending
+or receiving a message till the message is synchronously sent or received.  To
+be able to predict the execution time of MPI program, the communication time and
+the computation time for the slowest task must be measured before scaling.  These
+times are used to predict the execution time for any MPI program as a function
+of the new scaling factor as in EQ~(\ref{eq:tnew}).
+\begin{equation}
+  \label{eq:tnew}
+ \textit  T_\textit{new} = T_\textit{Max Comp Old} \cdot S + T_{\textit{Min Comm Old}}
+\end{equation}
+In this chapter, this prediction method is used to select the best scaling factor
+for each processor as presented in the next section.
+
+
+
+\section{Performance and energy reduction trade-off}
+\label{ch2:4}
+This section presents our method for choosing the optimal scaling factor that
+gives the best tradeoff between energy reduction and performance. This method
+takes into account the execution times for both computation and communication to
+compute the scaling factor.  Since the energy consumption and the performance
+are not measured using the same metric, a normalized value of both measurements
+can be used to compare them.  The normalized energy is the ratio between the
+consumed energy with scaled frequency and the consumed energy without scaled
+frequency:
+
+\begin{equation}
+  \label{eq:enorm}
+  E_\textit{Norm} = \frac{ E_\textit{Reduced}}{E_\textit{Original}} 
+         = \frac{P_\textit{dyn} \cdot S_1^{-2} \cdot
+               \left( T_1 + \sum_{i=2}^{N}\frac{T_i^3}{T_1^2}\right) +
+               P_\textit{static} \cdot T_1 \cdot S_1 \cdot N  }{
+              P_\textit{dyn} \cdot \left(T_1+\sum_{i=2}^{N}\frac{T_i^3}{T_1^2}\right) +
+              P_\textit{static} \cdot T_1 \cdot N }
+\end{equation}
+In the same way we can normalize the performance as follows:
+\begin{equation}
+  \label{eq:pnorm}
+  T_\textit{Norm} = \frac{T_\textit{New}}{T_\textit{Old}}
+          = \frac{T_\textit{Max Comp Old} \cdot S +
+           T_\textit{Min Comm Old}}{T_\textit{Max Comp Old} +
+           T_\textit{Min Comm Old}}
+\end{equation}
+
+The relation between the execution time and the consumed energy of a program is nonlinear and complex. In consequences,  the relation between the consumed energy and the scaling factor is also nonlinear, for more details refer to~\cite{ref53}. Therefore, the resulting normalized energy consumption curve and execution time curve, for different scaling factors, do not have the same direction see Figure~\ref{fig:rel}(b).  To tackle this problem and optimize both terms,  we inverse the equation of the normalized execution time (normalized performance) as follows:
+
+\begin{equation}
+  \label{eq:pnorm_en}
+   P_\textit{Norm} = \frac{ T_\textit{old}}{ T_\textit{new}}
+               = \frac{T_\textit{max Comp Old} +
+                 T_\textit{min Comm Old}}{T_\textit{max Comp Old} \cdot S +
+                 T_\textit{min Comm Old}}
+\end{equation}
+
+\begin{figure}[h!]
+\centering
+\centering
+\includegraphics[scale=1]{fig/ch2/file}\\~ ~ ~ ~ ~(a) \\
+
+\includegraphics[scale=1]{fig/ch2/file3}\\~ ~ ~ ~ ~(b)
+
+\caption{The energy and performance relation (a) Converted relation and (b) Real relation}
+\label{fig:rel}
+\end{figure}
+
+Then, we can model our objective function as finding the maximum distance
+between the energy curve EQ~\ref{eq:enorm} and the inverse of the execution time (performance)
+curve EQ~\ref{eq:pnorm_en} over all available scaling factors.  This
+represents the minimum energy consumption with minimum execution time (better
+performance) at the same time, see Figure~\ref{fig:rel}(a).  Then
+our objective function has the following form:
+
+\begin{equation}
+  \label{eq:max1}
+   MaxDist = \max_{j=1,2,\dots,F}
+      (\overbrace{P_\textit{norm}(S_j)}^{\text{Maximize}} -
+       \overbrace{E_\textit{norm}(S_j)}^{\text{Minimize}} )
+\end{equation}
+where $F$ is the number of available frequencies. Then we can select the optimal
+scaling factor that satisfies EQ~\ref{eq:max1}.  Our objective function can
+work with any energy model or static power values stored in a data file.
+Moreover, this function works in optimal way when the energy curve has a convex
+form over the available frequency scaling factors as shown in~\cite{ref48,ref47,ref64}.
+
+\section{Optimal scaling factor for performance and energy}
+\label{ch2:5}
+
+Algorithm~\ref{EPSA} computes the optimal scaling factor according to the
+objective function described above.
+
+\begin{algorithm}[!t]
+  \caption{Scaling factor selection algorithm for homogeneous cluster}
+  \label{EPSA}
+  \begin{algorithmic}[1]
+    \State  Initialize the variable $Dist=0$
+    \State Set dynamic and static power values.
+    \State Set $P_{states}$ to the number of available frequencies.
+    \State Set the variable $F_{new}$ to max. frequency,  $F_{new} = F_{max} $
+    \State Set the variable $F_{diff}$ to the difference between two successive
+           frequencies.
+    \For {$j:=1$   to   $P_{states} $}
+      \State $F_{new}=F_{new} - F_{diff} $
+      \State $S = \frac{F_\textit{max}}{F_\textit{new}}$
+      \State $S_i = S \cdot \frac{T_1}{T_i}
+                  = \frac{F_\textit{max}}{F_\textit{new}} \cdot \frac{T_1}{T_i}$
+             for $i=1,\dots,N$
+      \State $E_\textit{Norm} =
+          \frac{P_\textit{dyn} \cdot S_1^{-2} \cdot
+                  \left( T_1 + \sum_{i=2}^{N}\frac{T_i^3}{T_1^2}\right) +
+                  P_\textit{static} \cdot T_1 \cdot S_1 \cdot N }{
+                P_\textit{dyn} \cdot
+                  \left(T_1+\sum_{i=2}^{N}\frac{T_i^3}{T_1^2}\right) +
+                  P_\textit{static} \cdot T_1 \cdot N }$
+      \State $P_{Norm}= \frac{T_{old}}{T_{new}}$
+      \If{$(P_{Norm}-E_{Norm} > Dist)$}
+        \State $S_{opt} = S$
+        \State $Dist = P_{Norm} - E_{Norm}$
+      \EndIf
+    \EndFor
+    \State  Return $S_{opt}$
+  \end{algorithmic}
+\end{algorithm}
+
+
+
+The proposed algorithm works online during the execution time of the MPI
+program.  It selects the optimal scaling factor after gathering the computation
+and communication times from the program after one iteration.  Then the program
+changes the new frequencies of the CPUs according to the computed scaling
+factors. In our experiments over a homogeneous cluster described in
+Section~\ref{ch2:6}, this algorithm has a small execution time. It takes
+\np[$\mu$s]{1.52} on average for 4 nodes and \np[$\mu$s]{6.65} on average for 32
+nodes.  The algorithm complexity is $O(F\cdot N)$, where $F$ is the number of
+available frequencies and $N$ is the number of computing nodes.  The algorithm
+is called just once during the execution of the program.  The DVFS algorithm
+~\ref{dvfs} shows where and when the algorithm is called in the MPI
+program.
+
+
+
+\begin{algorithm}[!t]
+  \caption{DVFS algorithm of homogeneous cluster}
+  \label{dvfs}
+  \begin{algorithmic}[1]
+    \For {$k:=1$ to \textit{some iterations}}
+      \State Computations section.
+      \State Communications section.
+      \If {$(k=1)$}
+        \State Gather all times of computation and  communication from each node.
+        \State Call algorithm~\ref{EPSA} with these times.
+        \State Compute the new frequency from the returned optimal scaling factor.
+        \State Set the new frequency to the CPU.
+      \EndIf
+    \EndFor
+  \end{algorithmic}
+\end{algorithm}
+
+
+After obtaining the optimal scaling factor, the program calculates the new
+frequency $F_i$ for each task proportionally to its time value $T_i$.  By
+substitution of EQ~(\ref{eq:s}) in EQ~(\ref{eq:si}), we can calculate the new
+frequency $F_i$ as follows:
+\begin{equation}
+  \label{eq:fi}
+  F_i = \frac{F_\textit{max} \cdot T_i}{S_\textit{opt} \cdot T_\textit{max}}
+\end{equation}
+According to this equation all the nodes may have the same frequency value if
+they have balanced workloads, otherwise, they take different frequencies when
+having imbalanced workloads.  Thus, EQ~(\ref{eq:fi}) adapts the frequency of the
+CPU to the nodes' workloads to maintain the performance of the program.
+
+\section{Experimental results}
+\label{ch2:6}
+Our experiments are executed on the simulator SimGrid/SMPI v3.10.  We configure
+the simulator to use a homogeneous cluster with one core per node.  The detailed
+characteristics of our platform file are shown in
+table~(\ref{table:platform-homo}).  Each node in the cluster has 18 frequency values
+from  2.5 GHz to 800 MHz with 100 MHz  difference between each
+two successive frequencies.  The simulated network link is 1 GB Ethernet
+(TCP/IP).  The backbone of the cluster simulates a high performance switch.
+
+\begin{table}[!t]
+  \caption{Platform file parameters}
+  % title of Table
+  \centering
+  \begin{tabular}{|*{7}{l|}}
+    \hline
+    Max      & Min      & Backbone        & Backbone         & Link         & Link            & Sharing \\
+    Freq.    & Freq.    & Bandwidth       & Latency          & Bandwidth    & Latency         & Policy  \\
+    \hline
+    2.5      & 800       & 2.25  GBps     & 0.5  $\mu$s      & 1 GBps       &  50 $\mu$s      & Full    \\
+    GHz      & MHz      &                 &                  &              &                 & Duplex  \\
+    \hline
+  \end{tabular}
+  \label{table:platform-homo}
+\end{table}
+\subsection{Performance prediction verification}
+\label{ch2:6:1}
+In this section, the precision of the proposed performance prediction method 
+based on EQ~(\ref{eq:tnew}) is evaluated by applying it to the NAS benchmarks.  
+The NAS programs are executed with the class B option to compare the real execution 
+time with the predicted execution time.  Each program runs offline with all available
+scaling factors on 8 or 9 nodes (depending on the benchmark) to produce real
+execution time values.  These scaling factors are computed by dividing the
+maximum frequency by the new one see EQ~(\ref{eq:s}).
+\begin{figure*}[h!]
+  \centering 
+  \centering 
+  \centering
+  \includegraphics[width=.49\textwidth]{fig/ch2/cg_per}
+  \includegraphics[width=.49\textwidth]{fig/ch2/mg_pre}
+  \includegraphics[width=.49\textwidth]{fig/ch2/bt_pre}
+  \includegraphics[width=.49\textwidth]{fig/ch2/lu_pre}
+  \caption{Comparing predicted to real execution time}
+  \label{fig:pred}
+\end{figure*}
+%see Figure~\ref{fig:pred}
+In our cluster there are 18 available frequency states for each processor.  This
+leads to 18 run states for each program.  We use seven MPI programs of the NAS
+parallel benchmarks: CG, MG, EP, FT, BT, LU and SP.~Figure~(\ref{fig:pred})
+presents plots of the real execution times compared to the simulated ones.  The maximum
+normalized error between these two execution times varies between 0.0073 to
+0.031 dependent on the executed benchmark.  The smallest prediction error
+was for CG and the worst one was for LU.
+
+
+\subsection{The experimental results for the scaling algorithm }
+\label{ch2:6:2}
+The proposed algorithm was applied to seven MPI programs of the NAS benchmarks
+(EP, CG, MG, FT, BT, LU and SP) which were run with three classes (A, B and C).
+For each instance the benchmarks were executed on a number of processors
+proportional to the size of the class.  Each class represents the problem size
+ascending from  class A to C.  Additionally, depending on some speed up
+points for each class we run the classes A, B and C on 4, 8 or 9 and 16 nodes
+respectively.  Depending on EQ~(\ref{eq:energy}), we measure the energy
+consumption for all the NAS MPI programs while assuming that the dynamic power with
+the highest frequency is equal to 20 W and the power static is equal to
+4 W for all experiments.  These power values were also used by Rauber and
+Rünger in~\cite{ref47}.  The results showed that the algorithm selected different
+scaling factors for each program depending on the communication features of the
+program as in the plots~(\ref{fig:nas}).  These plots illustrate that there are
+different distances between the normalized energy and the normalized 
+performance curves, because there are different communication features for each
+benchmark.  When there are little or no communications, the 
+performance curve is very close to the energy curve.  Then the distance between
+the two curves is very small.  This leads to small energy savings.  The opposite
+happens when there are a lot of communication, the distance between the two
+curves is big.  This leads to more energy savings (e.g. CG and FT), see
+table~(\ref{table:factors results}).  All discovered frequency scaling factors
+optimize both the energy and the performance simultaneously for all NAS
+benchmarks.  In table~(\ref{table:factors results}), we record all optimal
+scaling factors results for each benchmark running class C.  These scaling
+factors give the maximum energy saving percentage and the minimum performance
+degradation percentage at the same time from all available scaling factors.
+\begin{figure*}[h!]
+  \centering
+  \includegraphics[width=.49\textwidth]{fig/ch2/ep}
+  \includegraphics[width=.49\textwidth]{fig/ch2/cg}
+  \includegraphics[width=.49\textwidth]{fig/ch2/sp}
+  \includegraphics[width=.49\textwidth]{fig/ch2/lu}
+  \includegraphics[width=.49\textwidth]{fig/ch2/bt}
+  \includegraphics[width=.49\textwidth]{fig/ch2/ft}
+  \caption{Optimal scaling factors for the predicted energy and performance of NAS benchmarks}
+  \label{fig:nas}
+\end{figure*}
+\begin{table}[htb]
+  \caption{The scaling factors results}
+  % title of Table
+  \centering
+  \begin{tabular}{|l|*{4}{r|}}
+    \hline
+    Program & Optimal        & Energy    & Performance    & Energy-Perf. \\
+    Name    & Scaling Factor & Saving \% & Degradation \% & Distance     \\
+    \hline
+    CG      & 1.56           & 39.23     & 14.88          & 24.35 \\
+    \hline
+    MG      & 1.47           & 34.97     & 21.70          & 13.27 \\
+    \hline
+    EP      & 1.04           & 22.14     & 20.73          &  1.41 \\
+    \hline
+    LU      & 1.38           & 35.83     & 22.49          & 13.34 \\
+    \hline
+    BT      & 1.31           & 29.60     & 21.28          &  8.32 \\
+    \hline
+    SP      & 1.38           & 33.48     & 21.36          & 12.12 \\
+    \hline
+    FT      & 1.47           & 34.72     & 19.00          & 15.72 \\
+    \hline
+  \end{tabular}
+  \label{table:factors results}
+  % is used to refer this table in the text
+\end{table}
+
+As shown in table~(\ref{table:factors results}), when the optimal scaling
+factor has a big value we can gain more energy savings  as in CG and
+FT benchmarks.  The opposite happens when the optimal scaling factor has a  small value as in BT and EP benchmarks.  Our algorithm selects a big scaling factor value when the
+communication and  other slacks times are big and smaller ones in opposite
+cases.  In EP there are no communication inside the iterations.  This leads our
+algorithm to select smaller scaling factor values (inducing smaller energy
+savings).
+
+
+\subsection{Results comparison}
+\label{ch2:6:3}
+In this section, we compare our scaling factor selection method with Rauber and
+Rünger methods~\cite{ref47}.  They had two scenarios, the first is to reduce energy
+to the optimal level without considering the performance as in
+EQ~(\ref{eq:sopt}).  We refer to this scenario as $R_{E}$.  The second scenario
+is similar to the first except setting the slower task to the maximum frequency
+(when the scale $S=1$) to keep the performance from degradation as mush as
+possible.  We refer to this scenario as $R_{E-P}$.  While we refer to our
+algorithm as EPSA (Energy to Performance Scaling Algorithm).  The comparison is
+made in table ~\ref{table:compareC}.  This table shows the results of our method and
+Rauber and Rünger scenarios for all the NAS benchmarks programs for class C.
+
+\begin{table}[h!]
+  \caption{Comparing results for the NAS class C}
+  % title of Table
+  \centering
+  \begin{tabular}{|l|l|*{4}{r|}}
+    \hline
+    Method    & Program & Factor & Energy    & Performance    & Energy-Perf. \\
+    Name      & Name    & Value  & Saving \% & Degradation \% & Distance     \\
+    \hline
+    % \rowcolor[gray]{0.85}
+    $EPSA$    & CG      & 1.56   & 39.23     & 14.88          &  24.35 \\ \hline
+    $R_{E-P}$ & CG      & 2.15   & 45.36     & 25.89          &  19.47 \\ \hline
+    $R_{E}$   & CG      & 2.15   & 45.36     & 26.70          &  18.66 \\ \hline
+
+    $EPSA$    & MG      & 1.47   & 34.97     & 21.69          &  13.27 \\ \hline
+    $R_{E-P}$ & MG      & 2.15   & 43.65     & 40.45          &   3.20 \\ \hline
+    $R_{E}$   & MG      & 2.15   & 43.64     & 41.38          &   2.26 \\ \hline
+
+    $EPSA$    & EP      & 1.04   & 22.14     & 20.73          &   1.41 \\ \hline
+    $R_{E-P}$ & EP      & 1.92   & 39.40     & 56.33          & -16.93 \\ \hline
+    $R_{E}$   & EP      & 1.92   & 38.10     & 56.35          & -18.25 \\ \hline
+
+    $EPSA$    & LU      & 1.38   & 35.83     & 22.49          &  13.34 \\ \hline
+    $R_{E-P}$ & LU      & 2.15   & 44.97     & 41.00          &   3.97 \\ \hline
+    $R_{E}$   & LU      & 2.15   & 44.97     & 41.80          &   3.17 \\ \hline
+
+    $EPSA$    & BT      & 1.31   & 29.60     & 21.28          &   8.32 \\ \hline
+    $R_{E-P}$ & BT      & 2.13   & 45.60     & 49.84          &  -4.24 \\ \hline
+    $R_{E}$   & BT      & 2.13   & 44.90     & 55.16          & -10.26 \\ \hline
+
+    $EPSA$    & SP      & 1.38   & 33.48     & 21.35          &  12.12 \\ \hline
+    $R_{E-P}$ & SP      & 2.10   & 45.69     & 43.60          &   2.09 \\ \hline
+    $R_{E}$   & SP      & 2.10   & 45.75     & 44.10          &   1.65 \\ \hline
+
+    $EPSA$    & FT      & 1.47   & 34.72     & 19.00          &  15.72 \\ \hline
+    $R_{E-P}$ & FT      & 2.04   & 39.40     & 37.10          &   2.30 \\ \hline
+    $R_{E}$   & FT      & 2.04   & 39.35     & 37.70          &   1.65 \\ \hline
+  \end{tabular}
+  \label{table:compareC}
+  % is used to refer this table in the text
+\end{table}
+
+
+\begin{figure*}[h!]
+  \centering
+ % \includegraphics[width=.6\textwidth]{fig/ch2/classA.eps}
+  % \includegraphics[width=.6\textwidth]{fig/ch2/classB.eps}
+  \includegraphics[width=.7\textwidth]{fig/ch2/classC.eps}
+  \caption{Comparing our method to Rauber and Rünger's methods}
+  \label{fig:compare}
+\end{figure*}
+
+
+
+As shown in the table~\ref{table:compareC}, the ($R_{E-P}$) method outperforms the ($R_{E}$)
+method in terms of performance and energy reduction.  The ($R_{E-P}$) method
+also gives better energy savings than our method.  However, although our scaling
+factor is not optimal for energy reduction, the results in these tables prove
+that our algorithm returns the best scaling factor that satisfy our objective
+method: the largest distance between energy reduction and performance
+degradation. Figure~\ref{fig:compare}  illustrates even better the distance between the energy reduction and performance degradation. The negative values mean that one of
+the two objectives (energy or performance) have been degraded more than 
+other.  The positive trade-offs with the highest values lead to maximum energy
+savings while keeping the performance degradation as low as possible.  Our
+algorithm always gives the highest positive energy to performance trade-offs
+while Rauber and Rünger's method, ($R_{E-P}$), gives sometimes negative
+trade-offs such as in BT and EP.
+
+
+\section{The new energy model for homogeneous cluster}
+\label{ch2:7}
+As mentioned in chapter \ref{ch1} section \ref{ch1:3}, the power consumed by a processor is divided 
+into two power metrics: the static and the dynamic power. The  first power metrics  is
+consumed as long as the computing unit is on, while the other one is consumed when the processor is 
+doing the computations. Consequentially, the energy consumed by an individual processor
+to execute a given program can be computed as follows:
+
+
+\begin{equation}
+  \label{eq:eind1}
+   E_\textit{ind} =  P_\textit{dyn} \cdot T_{Comp} + P_\textit{static} \cdot T
+\end{equation}
+
+where $T$ is the execution time of the program, $T_{Comp}$ is the computation
+time and $T_{Comp} \leq T$.  $T_{Comp}$ may be equal to $T$ if there is no
+communication, no slack time and no synchronization.
+
+Applying DVFS operation leads to a new frequency state, which is represented by the frequency scaling factor $S$ computed as in the equation \ref{eq:s}. According to the Rauber and Rünger energy model \ref{eq:energy}, the dynamic energy is consumed during the overall program's execution time. This assumption is not precise because the CPU is only consumed the dynamic power during computation time. Moreover, the CPU involved remain idle during the communication times and only consumed the static power, see \cite{ref53}. Also, we have conducted some experiments over a real homogeneous cluster by running some MPI programs of the NAS  benchmarks. The results prove that  there is no effect of changing the frequency on the communication times of these programs.  Therefore, the frequency scaling factor $S$ can be increased the computation times  propositionally, while not effecting the communication times. This assumption is acceptable according the used performance prediction model \ref{eq:tnew}. This model is evaluated and its prediction accuracy is showed in section \ref{ch2:6:1}. Therefore, the new dynamic energy is the dynamic power multiplied by the new time of computation and is given by the following equation:
+
+\begin{equation}
+  \label{eq:Edyn_new}
+   Ed_{New} = Pd_{Old} \cdot S^{-3} \cdot (T_{comp} \cdot S)= S^{-2} \cdot Pd_{Old} \cdot  T_{comp}
+\end{equation}
+
+The static power is related to the power leakage of the CPU and is consumed
+during computation and even when idle. As in~\cite{ref47,ref46},
+the static power of a processor is considered as constant during idle and
+computation periods, and for all its available frequencies.  The static energy
+is the static power multiplied by the execution time of the program.  According
+to the execution time model in (\ref{eq:tnew}), the execution time of the
+program is the sum of the computation and the communication times. The
+computation time is linearly related to the frequency scaling factor, while this
+scaling factor does not affect the communication time.  Then, the static energy of a
+processor after scaling its frequency is computed as follows:
+\begin{equation}
+  \label{eq:Estatic_new}
+  Es = P_{static} \cdot (T_{comp} \cdot S  + T_{comm})
+\end{equation}
+
+In particular, in the homogeneous cluster all the computing nodes have the same computing power and thus they have similar frequencies gears. The execution time of the MPI application is the execution time of the slowest task as shown in section \ref{ch2:2:1}. Therefore, the frequency scaling factor $S$ of the slowest task can be used to modelize the  energy consumption of the parallel tasks execution.
+The dynamic energy consumed by $N$  parallel tasks  is the summation of all the dynamic energies of  all tasks during the computation time $\Tcomp[i]$  of  each task. The static energy of each task is the static power consumed during the execution time of the slower task because they are synchronised together.
+Therefore, the energy consumption model of $N$ parallel task executed  synchronously over a homogeneous platforms is represented in \ref{eq:e-new}. 
+
+\begin{equation}
+  \label{eq:e-new}
+ E_{new} = \sum_{i=1}^{N} {(S^{-2} \cdot Pd \cdot  \Tcomp[i])}  + 
+  ( Ps \cdot  ( T_\textit{Max Comp Old} \cdot S + T_{\textit{Min Comm Old}} ) )  \cdot N
+\end{equation}
+According to this model, the frequency scaling factor $S$ reducing the energy consumption of the homogeneous architecture by a factor of $S^{-2}$ and increases the execution time by a factor of  $S$.
+This model can be used to predict the energy consumption of the message passing synchronous iterative applications depending on the gathered computation and communication times from the first iteration.
+Furthermore, it can be used to measured the energy consumption of the iterative application by multiplying the energy consumed of all tasks in  one iteration  by the number of the iterations. 
+
+Consequently, this model is used in the prediction process of the energy consumption by the 
+algorithm \ref{EPSA} to selects the optimal frequency scaling factor. By the same way in the last section, the new frequency $F_i$ can be computed as in \ref{eq:fi} depending on the new selected frequency scaling factor. 
+In the next section, the algorithm \ref{EPSA} is reimplemented using this new energy model \ref{eq:e-new}  to select new frequency scaling factors and thus a new results are obtained. 
+
+\section{The experimental results using the new energy model}
+\label{ch2:8}
+
+This section presents results of applying the frequency selection algorithm \ref{EPSA} using 
+the new proposed energy model \ref{eq:e-new}. The algorithm is applied to NAS parallel benchmarks class 
+C running on 16  computing nodes using the SimGrid simulator. Same values are used for the static and dynamic powers values as in section \ref{ch2:6:2}. Two measured energy consumptions of the NAS benchmarks class C using the new energy model and Rauber and Rünger's model are presented in the figure \ref{fig:energy_con}. The energy consumptions of both models are computed using similar parameters:  frequency scaling factors, dynamic and static powers values. As shown in this figure,  the majority  of the benchmarks  have smaller computed energies values using the new model compare to those use  Rauber and Rünger's model.
+Indeed, there are two reasons explaining these differences in the energy consumptions. The first one is related to the dynamic power consumption, where the new energy model ensures that this power metric is consumed only during the computation time, while  the other model assumes to consume the dynamic power during both computation and communication times and thus more dynamic energy consumption is given.
+The second one is related to the execution time,  that is only its computation times is increased with the 
+scaling factor value in the new energy model, while other energy model indicates that both  the 
+computation and communication times are increased with scaling factor and hence more static energy consumption is given.  Therefore, the MPI programs that have big communication times, they  have bigger measured energy consumption values using  Rauber and Rünger's model  compare to the new model as in CG, SP, LU and FT benchmarks. Whereas, if the MPI programs have very small communication times, their computed energy values have very small differences  such as in  MG and BT benchmarks, or they are identical such as in EP benchmark where there is no communication and no idle times. 
+
+
+\begin{figure*}[h!]
+  \centering
+  \includegraphics[width=.7\textwidth]{fig/ch2/energy_con.eps}
+  \caption{Comparing the energy consumptions measured using the new and Rauber energy  models}
+  \label{fig:energy_con}
+\end{figure*}
+\begin{table}[h!]
+\centering
+\begin{tabular}{|l|l|l|l|l|l|l|}
+\hline
+\multicolumn{1}{|c|}{\multirow{2}{*}{\begin{tabular}[c]{@{}c@{}}Method\\ Name\end{tabular}}} & \multicolumn{3}{c|}{Rauber  Energy Model Results}                                                                                                                                            & \multicolumn{3}{c|}{New Energy Model Results}                                                                                                                                                \\ \cline{2-7} 
+\multicolumn{1}{|c|}{}                                                                          & \begin{tabular}[c]{@{}l@{}}Scaling\\ Factors\end{tabular} & \begin{tabular}[c]{@{}l@{}}Energy \\ Saving\%\end{tabular} & \begin{tabular}[c]{@{}l@{}}Performance\\ Degradation\%\end{tabular} & \begin{tabular}[c]{@{}l@{}}Scaling\\ Factors\end{tabular} & \begin{tabular}[c]{@{}l@{}}Energy \\ Saving\%\end{tabular} & \begin{tabular}[c]{@{}l@{}}Performance\\ Degradation\%\end{tabular} \\ \hline
+
+CG      & 1.56      & 39.23       & 14.88       & 1.47       & 30.20       & 13.56     \\ \hline
+MG      & 1.47      & 34.97       & 21.69       & 1.38       & 30.04       & 16.48      \\ \hline
+EP      & 1.04      & 22.14       & 20.73       & 1.04       & 22.14       & 20.73       \\ \hline
+LU      & 1.38      & 35.83       & 22.49       & 1.31       & 29.15       & 18.03       \\ \hline
+BT      & 1.31      & 29.60       & 21.53       & 1.31       & 28.75       & 21.55        \\ \hline
+SP      & 1.38      & 33.48       & 21.35       & 1.31       & 28.93       & 14.83        \\ \hline
+FT      & 1.47      & 34.72       & 19.00       & 1.38       & 29.94       & 17.43        \\ \hline
+\end{tabular}
+\caption{The Results of NAS Parallel Benchmarks running on 16 nodes}
+\label{table:new-res}
+\end{table}
+
+Table \ref{table:new-res} shows  results of energy saving and performance degradation percentages of applying the frequency selecting algorithm  using the new propose energy model. It also presents the new selected frequency scaling factor values and comparing them to ones use Rauber and Rünger's model. It indicates  that the new selected frequency scaling factors are smaller compared to those selected using  other model because the predicted energies by the new energy model are smaller.
+Consequentially, less energy savings and performance degradation percentages are produced according to 
+these smaller frequency scaling factors selected using the new energy model, such as in  CG, MG, LU, SP and FT benchmarks. While in BT and EP benchmarks where a very small or no communication times, similar scaling factors are selected because the predicted energies by the two models are approximately equivalent. 
+On the other hand, the scaling factor selection algorithm can work with any energy model and  it selects proportionally the scaling factor values depending on the predicted energies values. 
+
+As a results,  the new proposed energy model is more accurate than Rauber and Rünger's energy
+model, because  it takes into consideration both the communication and idle times in addition to
+the computation times of  MPI programs running over homogeneous clusters. 
+
+\section{Conclusion}
+\label{ch2:9}
+In this chapter, a new online scaling factor selection method
+that optimizes simultaneously the energy and performance of a distributed 
+application running on a homogeneous cluster have been presented .  It uses the computation and
+communication times measured at the first iteration to predict the energy
+consumption and the performance of the parallel application at every available
+frequency.  Then, it selects the scaling factor that gives the best trade-off
+between energy reduction and performance which is the maximum distance between
+the energy and the performance curves.  To evaluate this method, we
+have applied it to the NAS benchmarks and it was compared to Rauber and Rünger
+methods while being executed on the SimGrid simulator.  The results showed that
+our method, outperforms Rauber and Rünger's methods in terms of energy-performance
+ratio. Finally, this chapter presents a new energy consumption model for the parallel
+synchronous iterative methods running on homogeneous clusters. This model takes into consideration 
+both  the computation and communication times and them relation with the frequency scaling 
+factor. The results obtained using the new energy model have shown selecting different frequency scaling factors than using other energy model and thus different experimental results have been produced. 
diff --git a/fig/ch2/bt.eps b/fig/ch2/bt.eps
new file mode 100755 (executable)
index 0000000..0487747
--- /dev/null
@@ -0,0 +1,726 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: bt.eps
+%%Creator: gnuplot 4.6 patchlevel 0
+%%CreationDate: Tue May 27 14:43:24 2014
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 320 239
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color false def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/SuppressPDFMark false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+/BackgroundColor {-1.000 -1.000 -1.000} def
+%
+/vshift -46 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 320 50 lineto 320 239 lineto 50 239 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.4 (August 2010)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+       dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc
+       2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 450 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+       2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 360 arc closepath fill
+       vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+       neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+       exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+       Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+       Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%      x,y = lower left corner of box to be filled
+%      w,h = width and height of box
+%        a = angle in degrees between lines and x-axis
+%       XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  gsave 1 setgray fill grestore clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+       0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+       {/InterpretLevel1 true def}
+       {/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+       bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+       0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+       8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+       0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+       0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+       0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+       0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+       12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+       -4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+Level1 SuppressPDFMark or 
+{} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title (bt.eps)
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.6 patchlevel 0)
+  /Author (afanfakh)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Tue May 27 14:43:24 2014)
+  /DOCINFO pdfmark
+end
+} ifelse
+end
+%%EndProlog
+%%Page: 1 1
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Helvetica) findfont 140 scalefont setfont
+BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 0 0 5400.00 3780.00 BoxColFill} if
+1.000 UL
+LTb
+686 448 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+602 448 M
+( 0.3) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 799 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+602 799 M
+( 0.4) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 1151 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 0.5) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 1502 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 0.6) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 1854 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 0.7) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 2205 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 0.8) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 2557 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 0.9) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 2908 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 1) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 3260 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 1.1) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 3611 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 1.2) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+686 308 M
+( 1) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+1700 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+0 -3240 R
+( 1.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+2714 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+0 -3240 R
+( 2) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+3728 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+0 -3240 R
+( 2.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+4741 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+0 -3240 R
+( 3) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+1.000 UL
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+112 2029 M
+currentpoint gsave translate -270 rotate 0 0 M
+(Normalized energy and performance) Cshow
+grestore
+/Helvetica findfont 140 scalefont setfont
+LTb
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+2916 98 M
+(Frequency scaling factors) Cshow
+/Helvetica findfont 140 scalefont setfont
+LTb
+1.000 UP
+/Helvetica findfont 190 scalefont setfont
+1416 659 M
+(Optimal scaling factor=1.315) Lshow
+/Helvetica findfont 140 scalefont setfont
+/Helvetica findfont 180 scalefont setfont
+889 3470 M
+(BT Class C) Lshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LT1
+0.00 0.00 0.00 C 1293 587 M
+32 -121 V
+32 121 V
+-32 1513 R
+0 -1634 V
+stroke
+gsave [] 0 setdash
+1293 587 M
+32 -121 V
+32 121 V
+stroke
+grestore
+1.000 UL
+LTb
+% Begin plot #1
+1.000 UL
+LT0
+0.00 0.00 1.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+4496 3443 M
+(Normalized performance) Rshow
+/Helvetica findfont 140 scalefont setfont
+LT0
+0.00 0.00 1.00 C 4580 3443 M
+399 0 V
+686 2908 M
+84 -157 V
+92 -129 V
+963 2494 L
+109 -130 V
+121 -131 V
+133 -132 V
+149 -133 V
+165 -134 V
+187 -135 V
+211 -136 V
+241 -137 V
+279 -138 V
+325 -139 V
+384 -140 V
+3728 868 L
+4291 726 L
+4995 582 L
+% End plot #1
+% Begin plot #2
+stroke
+LT1
+1.00 0.00 0.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+4496 3233 M
+(Normalized energy) Rshow
+/Helvetica findfont 140 scalefont setfont
+LT1
+1.00 0.00 0.00 C 4580 3233 M
+399 0 V
+686 2908 M
+84 -250 V
+92 -188 V
+963 2293 L
+109 -165 V
+121 -152 V
+133 -140 V
+149 -126 V
+165 -111 V
+187 -97 V
+211 -80 V
+241 -62 V
+279 -41 V
+325 -19 V
+384 8 V
+461 39 V
+563 79 V
+704 130 V
+% End plot #2
+stroke
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+1.000 UP
+1.000 UL
+LTb
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
diff --git a/fig/ch2/bt_pre-eps-converted-to.pdf b/fig/ch2/bt_pre-eps-converted-to.pdf
new file mode 100644 (file)
index 0000000..8c88c77
Binary files /dev/null and b/fig/ch2/bt_pre-eps-converted-to.pdf differ
diff --git a/fig/ch2/bt_pre.eps b/fig/ch2/bt_pre.eps
new file mode 100755 (executable)
index 0000000..5874666
--- /dev/null
@@ -0,0 +1,773 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: bt_pre.eps
+%%Creator: gnuplot 4.6 patchlevel 6
+%%CreationDate: Mon Mar 14 10:24:25 2016
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 320 239
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color false def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/SuppressPDFMark false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+/BackgroundColor {-1.000 -1.000 -1.000} def
+%
+/vshift -46 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 320 50 lineto 320 239 lineto 50 239 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.6 (September 2012)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+       dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc
+       2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 450 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+       2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 360 arc closepath fill
+       vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+       neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+       exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+       Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+       Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%      x,y = lower left corner of box to be filled
+%      w,h = width and height of box
+%        a = angle in degrees between lines and x-axis
+%       XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+  clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+       0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+       {/InterpretLevel1 true def}
+       {/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+       bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+       0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+       8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+       0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+       0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+       0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+       0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+       12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+       -4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+Level1 SuppressPDFMark or 
+{} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title (bt_pre.eps)
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.6 patchlevel 6)
+  /Author (afanfakh)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Mon Mar 14 10:24:25 2016)
+  /DOCINFO pdfmark
+end
+} ifelse
+end
+%%EndProlog
+%%Page: 1 1
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Helvetica) findfont 140 scalefont setfont
+BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 0 0 5400.00 3780.00 BoxColFill} if
+1.000 UL
+LTb
+686 448 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+602 448 M
+( 1) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 764 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+602 764 M
+( 1.2) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1081 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.4) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1397 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.6) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1713 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.8) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2029 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 2) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2346 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 2.2) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2662 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 2.4) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2978 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 2.6) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 3295 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 2.8) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 3611 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 3) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+686 308 M
+( 1) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+1578 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 1.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+2470 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 2) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+3363 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 2.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+4255 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 3) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+5147 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 3.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+1.000 UL
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+112 2029 M
+currentpoint gsave translate -270 rotate 0 0 M
+(Normalized execution time) Cshow
+grestore
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LTb
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+2916 98 M
+(Frequency scaling factors) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LTb
+1.000 UP
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+864 3342 M
+(BT Class B) Lshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+% Begin plot #1
+1.000 UL
+LT0
+0.00 0.00 1.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+/vshift -63 def
+4496 3443 M
+(Normalized predicted time) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LT0
+0.00 0.00 1.00 C 4580 3443 M
+399 0 V
+686 448 M
+74 49 V
+81 53 V
+88 58 V
+97 64 V
+106 70 V
+117 77 V
+131 86 V
+146 96 V
+164 108 V
+186 122 V
+212 140 V
+245 162 V
+286 188 V
+338 223 V
+406 267 V
+495 326 V
+620 408 V
+% End plot #1
+% Begin plot #2
+1.000 UP
+stroke
+LT1
+1.00 0.00 0.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+/vshift -63 def
+4496 3233 M
+(Normalized real time) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LT1
+1.00 0.00 0.00 C 686 448 BoxF
+760 489 BoxF
+841 601 BoxF
+929 605 BoxF
+1026 715 BoxF
+1132 749 BoxF
+1249 898 BoxF
+1380 992 BoxF
+1526 1030 BoxF
+1690 1093 BoxF
+1876 1296 BoxF
+2088 1423 BoxF
+2333 1612 BoxF
+2619 1727 BoxF
+2957 1915 BoxF
+3363 2136 BoxF
+3858 2405 BoxF
+4478 2816 BoxF
+4779 3233 BoxF
+% End plot #2
+1.000 UL
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+1.000 UP
+1.000 UL
+LTb
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
diff --git a/fig/ch2/cg.eps b/fig/ch2/cg.eps
new file mode 100755 (executable)
index 0000000..a1fbc3d
--- /dev/null
@@ -0,0 +1,851 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: cg.eps
+%%Creator: gnuplot 4.6 patchlevel 6
+%%CreationDate: Mon Mar 14 10:01:53 2016
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 320 239
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color false def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/SuppressPDFMark false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+/BackgroundColor {-1.000 -1.000 -1.000} def
+%
+/vshift -46 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 320 50 lineto 320 239 lineto 50 239 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.6 (September 2012)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+       dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc
+       2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 450 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+       2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 360 arc closepath fill
+       vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+       neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+       exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+       Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+       Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%      x,y = lower left corner of box to be filled
+%      w,h = width and height of box
+%        a = angle in degrees between lines and x-axis
+%       XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+  clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+       0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+       {/InterpretLevel1 true def}
+       {/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+       bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+       0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+       8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+       0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+       0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+       0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+       0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+       12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+       -4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+Level1 SuppressPDFMark or 
+{} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title (cg.eps)
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.6 patchlevel 6)
+  /Author (afanfakh)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Mon Mar 14 10:01:53 2016)
+  /DOCINFO pdfmark
+end
+} ifelse
+end
+%%EndProlog
+%%Page: 1 1
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Helvetica) findfont 140 scalefont setfont
+BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 0 0 5400.00 3780.00 BoxColFill} if
+1.000 UL
+LTb
+686 448 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+602 448 M
+( 0.3) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 799 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+602 799 M
+( 0.4) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1151 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.5) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1502 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.6) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1854 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.7) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2205 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.8) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2557 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.9) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2908 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 3260 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.1) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 3611 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.2) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+686 308 M
+( 1) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+1700 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 1.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+2714 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 2) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+3728 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 2.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+4741 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 3) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+1.000 UL
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+112 2029 M
+currentpoint gsave translate -270 rotate 0 0 M
+(Normalized energy and performance) Cshow
+grestore
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LTb
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+2916 98 M
+(Frequency scaling factors) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LTb
+1.000 UP
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+1903 659 M
+(Optimal scaling factor=1.56) Lshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+/Helvetica findfont 180 scalefont setfont
+/vshift -60 def
+889 3470 M
+(CG Class C) Lshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LT1
+0.00 0.00 0.00 C 1790 587 M
+32 -121 V
+32 121 V
+-32 1713 R
+0 -1834 V
+stroke
+gsave [] 0 setdash
+1790 587 M
+32 -121 V
+32 121 V
+stroke
+grestore
+1.000 UL
+LTb
+% Begin plot #1
+1.000 UL
+LT0
+0.00 0.00 1.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+/vshift -63 def
+4496 3443 M
+(Normalized performance) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LT0
+0.00 0.00 1.00 C 4580 3443 M
+399 0 V
+686 2908 M
+84 -53 V
+92 -56 V
+101 -60 V
+109 -62 V
+121 -66 V
+133 -71 V
+149 -74 V
+165 -79 V
+187 -84 V
+211 -90 V
+241 -96 V
+279 -104 V
+325 -111 V
+384 -119 V
+461 -129 V
+563 -140 V
+704 -153 V
+% End plot #1
+% Begin plot #2
+stroke
+LT1
+1.00 0.00 0.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+/vshift -63 def
+4496 3233 M
+(Normalized energy) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LT1
+1.00 0.00 0.00 C 4580 3233 M
+399 0 V
+686 2908 M
+15 -36 V
+14 -36 V
+15 -36 V
+16 -34 V
+15 -35 V
+16 -34 V
+16 -33 V
+16 -33 V
+16 -33 V
+17 -32 V
+17 -32 V
+17 -32 V
+18 -31 V
+17 -31 V
+18 -30 V
+18 -30 V
+19 -30 V
+19 -29 V
+19 -29 V
+19 -29 V
+20 -28 V
+20 -28 V
+21 -27 V
+20 -27 V
+22 -27 V
+21 -27 V
+22 -26 V
+22 -25 V
+23 -26 V
+23 -25 V
+23 -24 V
+24 -24 V
+24 -24 V
+25 -24 V
+25 -23 V
+26 -22 V
+26 -22 V
+26 -22 V
+27 -22 V
+28 -21 V
+28 -20 V
+28 -21 V
+30 -19 V
+29 -20 V
+31 -19 V
+31 -18 V
+31 -18 V
+32 -18 V
+33 -17 V
+34 -17 V
+34 -16 V
+35 -16 V
+36 -15 V
+36 -15 V
+37 -14 V
+38 -14 V
+39 -13 V
+40 -13 V
+41 -12 V
+41 -12 V
+43 -11 V
+43 -11 V
+44 -10 V
+46 -10 V
+47 -9 V
+47 -8 V
+49 -8 V
+50 -7 V
+51 -7 V
+53 -6 V
+54 -5 V
+55 -5 V
+56 -4 V
+58 -4 V
+60 -2 V
+61 -2 V
+63 -1 V
+64 -1 V
+66 0 V
+68 1 V
+70 2 V
+72 3 V
+73 4 V
+76 4 V
+78 5 V
+80 6 V
+83 8 V
+85 8 V
+87 9 V
+90 10 V
+93 11 V
+96 12 V
+98 13 V
+102 15 V
+105 16 V
+108 17 V
+112 18 V
+115 19 V
+119 21 V
+% End plot #2
+stroke
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+1.000 UP
+1.000 UL
+LTb
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
diff --git a/fig/ch2/cg_per.eps b/fig/ch2/cg_per.eps
new file mode 100755 (executable)
index 0000000..5cde366
--- /dev/null
@@ -0,0 +1,703 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: cg_per.eps
+%%Creator: gnuplot 4.6 patchlevel 6
+%%CreationDate: Mon Mar 14 10:23:57 2016
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 320 239
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color false def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/SuppressPDFMark false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+/BackgroundColor {-1.000 -1.000 -1.000} def
+%
+/vshift -46 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 320 50 lineto 320 239 lineto 50 239 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.6 (September 2012)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+       dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc
+       2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 450 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+       2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 360 arc closepath fill
+       vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+       neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+       exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+       Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+       Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%      x,y = lower left corner of box to be filled
+%      w,h = width and height of box
+%        a = angle in degrees between lines and x-axis
+%       XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+  clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+       0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+       {/InterpretLevel1 true def}
+       {/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+       bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+       0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+       8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+       0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+       0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+       0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+       0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+       12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+       -4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+Level1 SuppressPDFMark or 
+{} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title (cg_per.eps)
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.6 patchlevel 6)
+  /Author (afanfakh)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Mon Mar 14 10:23:57 2016)
+  /DOCINFO pdfmark
+end
+} ifelse
+end
+%%EndProlog
+%%Page: 1 1
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Helvetica) findfont 140 scalefont setfont
+BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 0 0 5400.00 3780.00 BoxColFill} if
+1.000 UL
+LTb
+686 448 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+602 448 M
+( 1) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1151 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.2) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1854 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.4) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2557 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.6) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 3260 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.8) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+686 308 M
+( 1) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+1578 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 1.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+2470 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 2) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+3363 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 2.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+4255 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 3) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+5147 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 3.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+1.000 UL
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+112 2029 M
+currentpoint gsave translate -270 rotate 0 0 M
+(Normalized execution time) Cshow
+grestore
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LTb
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+2916 98 M
+(Frequency scaling factors) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LTb
+1.000 UP
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+864 3330 M
+(CG Class B) Lshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+864 1010 M
+(            ) Lshow
+1.000 UL
+LTb
+% Begin plot #1
+1.000 UL
+LT0
+0.00 0.00 1.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+/vshift -63 def
+4496 3443 M
+(Normalized predicted time) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LT0
+0.00 0.00 1.00 C 4580 3443 M
+399 0 V
+686 448 M
+74 47 V
+81 51 V
+88 56 V
+97 62 V
+106 67 V
+117 75 V
+131 82 V
+146 93 V
+164 104 V
+186 118 V
+212 135 V
+245 155 V
+286 182 V
+338 214 V
+406 257 V
+495 315 V
+620 428 V
+% End plot #1
+% Begin plot #2
+1.000 UP
+stroke
+LT1
+1.00 0.00 0.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+/vshift -63 def
+4496 3233 M
+(Normalized real time) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LT1
+1.00 0.00 0.00 C 686 448 BoxF
+760 513 BoxF
+841 539 BoxF
+929 592 BoxF
+1026 651 BoxF
+1132 713 BoxF
+1249 831 BoxF
+1380 920 BoxF
+1526 975 BoxF
+1690 1108 BoxF
+1876 1188 BoxF
+2088 1343 BoxF
+2333 1504 BoxF
+2619 1662 BoxF
+2957 1900 BoxF
+3363 2156 BoxF
+3858 2428 BoxF
+4478 2928 BoxF
+4779 3233 BoxF
+% End plot #2
+1.000 UL
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+1.000 UP
+1.000 UL
+LTb
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
diff --git a/fig/ch2/classC.eps b/fig/ch2/classC.eps
new file mode 100644 (file)
index 0000000..afd6b25
--- /dev/null
@@ -0,0 +1,1119 @@
+%!PS-Adobe-2.0
+%%Creator: gnuplot 4.6 patchlevel 6
+%%CreationDate: Thu Mar 10 14:16:48 2016
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 554 410
+%%Orientation: Portrait
+%%Pages: (atend)
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color false def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/SuppressPDFMark false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+/BackgroundColor {-1.000 -1.000 -1.000} def
+%
+/vshift -36 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 554 50 lineto 554 410 lineto 50 410 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.6 (September 2012)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+       dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc
+       2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 450 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+       2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 360 arc closepath fill
+       vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+       neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+       exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+       Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+       Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%      x,y = lower left corner of box to be filled
+%      w,h = width and height of box
+%        a = angle in degrees between lines and x-axis
+%       XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+  clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+       0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+       {/InterpretLevel1 true def}
+       {/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+       bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+       0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+       8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+       0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+       0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+       0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+       0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+       12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+       -4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+%
+% Encoding for ISO-8859-1 (also called Latin1)
+%
+/reencodeISO {
+dup dup findfont dup length dict begin
+{ 1 index /FID ne { def }{ pop pop } ifelse } forall
+currentdict /CharStrings known {
+       CharStrings /Idieresis known {
+               /Encoding ISOLatin1Encoding def } if
+} if
+currentdict end definefont
+} def
+/ISOLatin1Encoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
+/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
+/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
+/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
+/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
+/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
+/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
+/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
+/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
+/guillemotright/onequarter/onehalf/threequarters/questiondown
+/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
+/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
+/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
+/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
+/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
+/yacute/thorn/ydieresis
+] def
+/MFshow {
+   { dup 5 get 3 ge
+     { 5 get 3 eq {gsave} {grestore} ifelse }
+     {dup dup 0 get findfont exch 1 get scalefont setfont
+     [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6
+     get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq
+     {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5
+     get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div
+     dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get
+     show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop
+     pop aload pop M} ifelse }ifelse }ifelse }
+     ifelse }
+   forall} def
+/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def
+/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse }
+ {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont
+     6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def
+/MLshow { currentpoint stroke M
+  0 exch R
+  Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
+/MRshow { currentpoint stroke M
+  exch dup MFwidth neg 3 -1 roll R
+  Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
+/MCshow { currentpoint stroke M
+  exch dup MFwidth -2 div 3 -1 roll R
+  Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
+/XYsave    { [( ) 1 2 true false 3 ()] } bind def
+/XYrestore { [( ) 1 2 true false 4 ()] } bind def
+/Helvetica reencodeISO def
+Level1 SuppressPDFMark or 
+{} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title ()
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.6 patchlevel 6)
+  /Author (afanfakh)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Thu Mar 10 14:16:48 2016)
+  /DOCINFO pdfmark
+end
+} ifelse
+end
+%%EndProlog
+%%Page: 1 1
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.100 0.100 scale
+0 setgray
+newpath
+(Helvetica) findfont 110 scalefont setfont
+BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {gsave BackgroundColor C clippath fill grestore} if
+1.000 UL
+LTb
+539 220 M
+63 0 V
+4239 0 R
+-63 0 V
+stroke
+473 220 M
+[ [(Helvetica) 150.0 0.0 true true 0 (-20)]
+] -50.0 MRshow
+1.000 UL
+LTb
+539 285 M
+31 0 V
+4271 0 R
+-31 0 V
+539 350 M
+31 0 V
+4271 0 R
+-31 0 V
+539 415 M
+31 0 V
+4271 0 R
+-31 0 V
+539 480 M
+31 0 V
+4271 0 R
+-31 0 V
+539 545 M
+31 0 V
+4271 0 R
+-31 0 V
+539 610 M
+31 0 V
+4271 0 R
+-31 0 V
+539 675 M
+31 0 V
+4271 0 R
+-31 0 V
+539 740 M
+31 0 V
+4271 0 R
+-31 0 V
+539 805 M
+31 0 V
+4271 0 R
+-31 0 V
+539 870 M
+63 0 V
+4239 0 R
+-63 0 V
+stroke
+473 870 M
+[ [(Helvetica) 150.0 0.0 true true 0 (-10)]
+] -50.0 MRshow
+1.000 UL
+LTb
+539 935 M
+31 0 V
+4271 0 R
+-31 0 V
+539 1000 M
+31 0 V
+4271 0 R
+-31 0 V
+539 1064 M
+31 0 V
+4271 0 R
+-31 0 V
+539 1129 M
+31 0 V
+4271 0 R
+-31 0 V
+539 1194 M
+31 0 V
+4271 0 R
+-31 0 V
+539 1259 M
+31 0 V
+4271 0 R
+-31 0 V
+539 1324 M
+31 0 V
+4271 0 R
+-31 0 V
+539 1389 M
+31 0 V
+4271 0 R
+-31 0 V
+539 1454 M
+31 0 V
+4271 0 R
+-31 0 V
+539 1519 M
+63 0 V
+4239 0 R
+-63 0 V
+stroke
+473 1519 M
+[ [(Helvetica) 150.0 0.0 true true 0 ( 0)]
+] -50.0 MRshow
+1.000 UL
+LTb
+539 1584 M
+31 0 V
+4271 0 R
+-31 0 V
+539 1649 M
+31 0 V
+4271 0 R
+-31 0 V
+539 1714 M
+31 0 V
+4271 0 R
+-31 0 V
+539 1779 M
+31 0 V
+4271 0 R
+-31 0 V
+539 1844 M
+31 0 V
+4271 0 R
+-31 0 V
+539 1909 M
+31 0 V
+4271 0 R
+-31 0 V
+539 1974 M
+31 0 V
+4271 0 R
+-31 0 V
+539 2039 M
+31 0 V
+4271 0 R
+-31 0 V
+539 2104 M
+31 0 V
+4271 0 R
+-31 0 V
+539 2169 M
+63 0 V
+4239 0 R
+-63 0 V
+stroke
+473 2169 M
+[ [(Helvetica) 150.0 0.0 true true 0 ( 10)]
+] -50.0 MRshow
+1.000 UL
+LTb
+539 2234 M
+31 0 V
+4271 0 R
+-31 0 V
+539 2299 M
+31 0 V
+4271 0 R
+-31 0 V
+539 2364 M
+31 0 V
+4271 0 R
+-31 0 V
+539 2429 M
+31 0 V
+4271 0 R
+-31 0 V
+539 2494 M
+31 0 V
+4271 0 R
+-31 0 V
+539 2559 M
+31 0 V
+4271 0 R
+-31 0 V
+539 2624 M
+31 0 V
+4271 0 R
+-31 0 V
+539 2688 M
+31 0 V
+4271 0 R
+-31 0 V
+539 2753 M
+31 0 V
+4271 0 R
+-31 0 V
+539 2818 M
+63 0 V
+4239 0 R
+-63 0 V
+stroke
+473 2818 M
+[ [(Helvetica) 150.0 0.0 true true 0 ( 20)]
+] -50.0 MRshow
+1.000 UL
+LTb
+539 2883 M
+31 0 V
+4271 0 R
+-31 0 V
+539 2948 M
+31 0 V
+4271 0 R
+-31 0 V
+539 3013 M
+31 0 V
+4271 0 R
+-31 0 V
+539 3078 M
+31 0 V
+4271 0 R
+-31 0 V
+539 3143 M
+31 0 V
+4271 0 R
+-31 0 V
+539 3208 M
+31 0 V
+4271 0 R
+-31 0 V
+539 3273 M
+31 0 V
+4271 0 R
+-31 0 V
+539 3338 M
+31 0 V
+4271 0 R
+-31 0 V
+539 3403 M
+31 0 V
+4271 0 R
+-31 0 V
+539 3468 M
+63 0 V
+4239 0 R
+-63 0 V
+stroke
+473 3468 M
+[ [(Helvetica) 150.0 0.0 true true 0 ( 30)]
+] -50.0 MRshow
+1.000 UL
+LTb
+1077 220 M
+0 63 V
+0 3185 R
+0 -63 V
+stroke
+1077 110 M
+[ [(Helvetica) 150.0 0.0 true true 0 (EP)]
+] -50.0 MCshow
+1.000 UL
+LTb
+1615 220 M
+0 63 V
+0 3185 R
+0 -63 V
+stroke
+1615 110 M
+[ [(Helvetica) 150.0 0.0 true true 0 (CG)]
+] -50.0 MCshow
+1.000 UL
+LTb
+2152 220 M
+0 63 V
+0 3185 R
+0 -63 V
+stroke
+2152 110 M
+[ [(Helvetica) 150.0 0.0 true true 0 (MG)]
+] -50.0 MCshow
+1.000 UL
+LTb
+2690 220 M
+0 63 V
+0 3185 R
+0 -63 V
+stroke
+2690 110 M
+[ [(Helvetica) 150.0 0.0 true true 0 (BT)]
+] -50.0 MCshow
+1.000 UL
+LTb
+3228 220 M
+0 63 V
+0 3185 R
+0 -63 V
+stroke
+3228 110 M
+[ [(Helvetica) 150.0 0.0 true true 0 (LU)]
+] -50.0 MCshow
+1.000 UL
+LTb
+3766 220 M
+0 63 V
+0 3185 R
+0 -63 V
+stroke
+3766 110 M
+[ [(Helvetica) 150.0 0.0 true true 0 (SP)]
+] -50.0 MCshow
+1.000 UL
+LTb
+4303 220 M
+0 63 V
+0 3185 R
+0 -63 V
+stroke
+4303 110 M
+[ [(Helvetica) 150.0 0.0 true true 0 (FT)]
+] -50.0 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+539 3468 N
+539 220 L
+4302 0 V
+0 3248 V
+-4302 0 V
+Z stroke
+LCb setrgbcolor
+88 1844 M
+currentpoint gsave translate -270 rotate 0 0 moveto
+[ [(Helvetica) 180.0 0.0 true true 0 (Energy to performance distance )]
+] -60.0 MCshow
+grestore
+LTb
+1.000 UP
+1.000 UL
+LT1
+539 1519 M
+4302 0 V
+stroke
+LTb
+% Begin plot #1
+1.000 UL
+LT0
+0.69 0.77 0.87 C LCb setrgbcolor
+3844 3300 M
+[ [(Helvetica) 130.0 0.0 true true 0 (Rauber E)]
+] -43.3 MRshow
+LT0
+0.69 0.77 0.87 C 1.000 3910 3265 327 71 BoxColFill
+LCa setrgbcolor
+3910 3265 N
+327 0 V
+0 70 V
+-327 0 V
+0 -70 V
+Z stroke
+LT0
+0.69 0.77 0.87 C 0.69 0.77 0.87 C 1.000 882 334 122 1186 BoxColFill
+LCa setrgbcolor
+882 1519 N
+882 334 L
+121 0 V
+0 1185 V
+-121 0 V
+Z stroke
+LT0
+0.69 0.77 0.87 C 0.69 0.77 0.87 C 1.000 1420 1519 122 1213 BoxColFill
+LCa setrgbcolor
+1420 1519 N
+0 1212 V
+121 0 V
+0 -1212 V
+-121 0 V
+Z stroke
+LT0
+0.69 0.77 0.87 C 0.69 0.77 0.87 C 1.000 1957 1519 122 148 BoxColFill
+LCa setrgbcolor
+1957 1519 N
+0 147 V
+121 0 V
+0 -147 V
+-121 0 V
+Z stroke
+LT0
+0.69 0.77 0.87 C 0.69 0.77 0.87 C 1.000 2495 816 122 704 BoxColFill
+LCa setrgbcolor
+2495 1519 N
+0 -703 V
+121 0 V
+0 703 V
+-121 0 V
+Z stroke
+LT0
+0.69 0.77 0.87 C 0.69 0.77 0.87 C 1.000 3033 1519 122 256 BoxColFill
+LCa setrgbcolor
+3033 1519 N
+0 255 V
+121 0 V
+0 -255 V
+-121 0 V
+Z stroke
+LT0
+0.69 0.77 0.87 C 0.69 0.77 0.87 C 1.000 3571 1519 122 108 BoxColFill
+LCa setrgbcolor
+3571 1519 N
+0 107 V
+121 0 V
+0 -107 V
+-121 0 V
+Z stroke
+LT0
+0.69 0.77 0.87 C 0.69 0.77 0.87 C 1.000 4108 1519 122 108 BoxColFill
+LCa setrgbcolor
+4108 1519 N
+0 107 V
+121 0 V
+0 -107 V
+-121 0 V
+Z stroke
+LT0
+0.69 0.77 0.87 C % End plot #1
+% Begin plot #2
+1.000 UL
+LT1
+0.94 0.50 0.50 C LCb setrgbcolor
+3844 3157 M
+[ [(Helvetica) 130.0 0.0 true true 0 (Rauber E-P)]
+] -43.3 MRshow
+LT1
+0.94 0.50 0.50 C 1.000 3910 3122 327 71 BoxColFill
+LCa setrgbcolor
+3910 3122 N
+327 0 V
+0 70 V
+-327 0 V
+0 -70 V
+Z stroke
+LT1
+0.94 0.50 0.50 C 0.94 0.50 0.50 C 1.000 1016 419 122 1101 BoxColFill
+LCa setrgbcolor
+1016 1519 N
+0 -1100 V
+121 0 V
+0 1100 V
+-121 0 V
+Z stroke
+LT1
+0.94 0.50 0.50 C 0.94 0.50 0.50 C 1.000 1554 1519 122 1266 BoxColFill
+LCa setrgbcolor
+1554 1519 N
+0 1265 V
+121 0 V
+0 -1265 V
+-121 0 V
+Z stroke
+LT1
+0.94 0.50 0.50 C 0.94 0.50 0.50 C 1.000 2092 1519 122 209 BoxColFill
+LCa setrgbcolor
+2092 1519 N
+0 208 V
+121 0 V
+0 -208 V
+-121 0 V
+Z stroke
+LT1
+0.94 0.50 0.50 C 0.94 0.50 0.50 C 1.000 2630 1243 121 277 BoxColFill
+LCa setrgbcolor
+2630 1519 N
+0 -276 V
+120 0 V
+0 276 V
+-120 0 V
+Z stroke
+LT1
+0.94 0.50 0.50 C 0.94 0.50 0.50 C 1.000 3167 1519 122 220 BoxColFill
+LCa setrgbcolor
+3167 1519 N
+0 219 V
+121 0 V
+0 -219 V
+-121 0 V
+Z stroke
+LT1
+0.94 0.50 0.50 C 0.94 0.50 0.50 C 1.000 3705 1519 122 137 BoxColFill
+LCa setrgbcolor
+3705 1519 N
+0 136 V
+121 0 V
+0 -136 V
+-121 0 V
+Z stroke
+LT1
+0.94 0.50 0.50 C 0.94 0.50 0.50 C 1.000 4243 1519 122 149 BoxColFill
+LCa setrgbcolor
+4243 1519 N
+0 148 V
+121 0 V
+0 -148 V
+-121 0 V
+Z stroke
+LT1
+0.94 0.50 0.50 C % End plot #2
+% Begin plot #3
+1.000 UL
+LT2
+0.10 0.10 0.44 C LCb setrgbcolor
+3844 3014 M
+[ [(Helvetica) 130.0 0.0 true true 0 (EPSA)]
+] -43.3 MRshow
+LT2
+0.10 0.10 0.44 C 1.000 3910 2979 327 71 BoxColFill
+LCa setrgbcolor
+3910 2979 N
+327 0 V
+0 70 V
+-327 0 V
+0 -70 V
+Z stroke
+LT2
+0.10 0.10 0.44 C 0.10 0.10 0.44 C 1.000 1151 1519 122 93 BoxColFill
+LCa setrgbcolor
+1151 1519 N
+0 92 V
+121 0 V
+0 -92 V
+-121 0 V
+Z stroke
+LT2
+0.10 0.10 0.44 C 0.10 0.10 0.44 C 1.000 1688 1519 122 1518 BoxColFill
+LCa setrgbcolor
+1688 1519 N
+0 1517 V
+121 0 V
+0 -1517 V
+-121 0 V
+Z stroke
+LT2
+0.10 0.10 0.44 C 0.10 0.10 0.44 C 1.000 2226 1519 122 863 BoxColFill
+LCa setrgbcolor
+2226 1519 N
+0 862 V
+121 0 V
+0 -862 V
+-121 0 V
+Z stroke
+LT2
+0.10 0.10 0.44 C 0.10 0.10 0.44 C 1.000 2764 1519 122 542 BoxColFill
+LCa setrgbcolor
+2764 1519 N
+0 541 V
+121 0 V
+0 -541 V
+-121 0 V
+Z stroke
+LT2
+0.10 0.10 0.44 C 0.10 0.10 0.44 C 1.000 3302 1519 122 867 BoxColFill
+LCa setrgbcolor
+3302 1519 N
+0 866 V
+121 0 V
+0 -866 V
+-121 0 V
+Z stroke
+LT2
+0.10 0.10 0.44 C 0.10 0.10 0.44 C 1.000 3839 1519 122 788 BoxColFill
+LCa setrgbcolor
+3839 1519 N
+0 787 V
+121 0 V
+0 -787 V
+-121 0 V
+Z stroke
+LT2
+0.10 0.10 0.44 C 0.10 0.10 0.44 C 1.000 4377 1519 122 1022 BoxColFill
+LCa setrgbcolor
+4377 1519 N
+0 1021 V
+121 0 V
+0 -1021 V
+-121 0 V
+Z stroke
+LT2
+0.10 0.10 0.44 C % End plot #3
+1.000 UL
+LTb
+539 3468 N
+539 220 L
+4302 0 V
+0 3248 V
+-4302 0 V
+Z stroke
+1.000 UP
+1.000 UL
+LTb
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
+%%Pages: 1
diff --git a/fig/ch2/commtasks.pdf b/fig/ch2/commtasks.pdf
new file mode 100644 (file)
index 0000000..03a4ab4
Binary files /dev/null and b/fig/ch2/commtasks.pdf differ
diff --git a/fig/ch2/compt.pdf b/fig/ch2/compt.pdf
new file mode 100644 (file)
index 0000000..38bdc61
Binary files /dev/null and b/fig/ch2/compt.pdf differ
diff --git a/fig/ch2/energy_con.eps b/fig/ch2/energy_con.eps
new file mode 100644 (file)
index 0000000..228853c
--- /dev/null
@@ -0,0 +1,969 @@
+%!PS-Adobe-2.0
+%%Creator: gnuplot 4.6 patchlevel 6
+%%CreationDate: Thu Mar 10 15:51:24 2016
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 554 410
+%%Orientation: Portrait
+%%Pages: (atend)
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color false def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/SuppressPDFMark false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+/BackgroundColor {-1.000 -1.000 -1.000} def
+%
+/vshift -36 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 554 50 lineto 554 410 lineto 50 410 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.6 (September 2012)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+       dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc
+       2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 450 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+       2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 360 arc closepath fill
+       vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+       neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+       exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+       Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+       Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%      x,y = lower left corner of box to be filled
+%      w,h = width and height of box
+%        a = angle in degrees between lines and x-axis
+%       XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+  clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+       0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+       {/InterpretLevel1 true def}
+       {/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+       bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+       0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+       8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+       0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+       0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+       0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+       0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+       12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+       -4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+%
+% Encoding for ISO-8859-1 (also called Latin1)
+%
+/reencodeISO {
+dup dup findfont dup length dict begin
+{ 1 index /FID ne { def }{ pop pop } ifelse } forall
+currentdict /CharStrings known {
+       CharStrings /Idieresis known {
+               /Encoding ISOLatin1Encoding def } if
+} if
+currentdict end definefont
+} def
+/ISOLatin1Encoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
+/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
+/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
+/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
+/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
+/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
+/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
+/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
+/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
+/guillemotright/onequarter/onehalf/threequarters/questiondown
+/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
+/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
+/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
+/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
+/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
+/yacute/thorn/ydieresis
+] def
+/MFshow {
+   { dup 5 get 3 ge
+     { 5 get 3 eq {gsave} {grestore} ifelse }
+     {dup dup 0 get findfont exch 1 get scalefont setfont
+     [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6
+     get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq
+     {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5
+     get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div
+     dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get
+     show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop
+     pop aload pop M} ifelse }ifelse }ifelse }
+     ifelse }
+   forall} def
+/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def
+/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse }
+ {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont
+     6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def
+/MLshow { currentpoint stroke M
+  0 exch R
+  Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
+/MRshow { currentpoint stroke M
+  exch dup MFwidth neg 3 -1 roll R
+  Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
+/MCshow { currentpoint stroke M
+  exch dup MFwidth -2 div 3 -1 roll R
+  Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
+/XYsave    { [( ) 1 2 true false 3 ()] } bind def
+/XYrestore { [( ) 1 2 true false 4 ()] } bind def
+/Helvetica reencodeISO def
+Level1 SuppressPDFMark or 
+{} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title ()
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.6 patchlevel 6)
+  /Author (afanfakh)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Thu Mar 10 15:51:24 2016)
+  /DOCINFO pdfmark
+end
+} ifelse
+end
+%%EndProlog
+%%Page: 1 1
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.100 0.100 scale
+0 setgray
+newpath
+(Helvetica) findfont 110 scalefont setfont
+BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {gsave BackgroundColor C clippath fill grestore} if
+1.000 UL
+LTb
+737 429 M
+63 0 V
+4041 0 R
+-63 0 V
+stroke
+671 429 M
+[ [(Helvetica) 150.0 0.0 true true 0 ( 0)]
+] -50.0 MRshow
+1.000 UL
+LTb
+737 487 M
+31 0 V
+4073 0 R
+-31 0 V
+737 546 M
+31 0 V
+4073 0 R
+-31 0 V
+737 604 M
+31 0 V
+4073 0 R
+-31 0 V
+737 663 M
+31 0 V
+4073 0 R
+-31 0 V
+737 721 M
+63 0 V
+4041 0 R
+-63 0 V
+stroke
+671 721 M
+[ [(Helvetica) 150.0 0.0 true true 0 ( 2500)]
+] -50.0 MRshow
+1.000 UL
+LTb
+737 780 M
+31 0 V
+4073 0 R
+-31 0 V
+737 838 M
+31 0 V
+4073 0 R
+-31 0 V
+737 897 M
+31 0 V
+4073 0 R
+-31 0 V
+737 955 M
+31 0 V
+4073 0 R
+-31 0 V
+737 1013 M
+63 0 V
+4041 0 R
+-63 0 V
+stroke
+671 1013 M
+[ [(Helvetica) 150.0 0.0 true true 0 ( 5000)]
+] -50.0 MRshow
+1.000 UL
+LTb
+737 1072 M
+31 0 V
+4073 0 R
+-31 0 V
+737 1130 M
+31 0 V
+4073 0 R
+-31 0 V
+737 1189 M
+31 0 V
+4073 0 R
+-31 0 V
+737 1247 M
+31 0 V
+4073 0 R
+-31 0 V
+737 1306 M
+63 0 V
+4041 0 R
+-63 0 V
+stroke
+671 1306 M
+[ [(Helvetica) 150.0 0.0 true true 0 ( 7500)]
+] -50.0 MRshow
+1.000 UL
+LTb
+737 1364 M
+31 0 V
+4073 0 R
+-31 0 V
+737 1423 M
+31 0 V
+4073 0 R
+-31 0 V
+737 1481 M
+31 0 V
+4073 0 R
+-31 0 V
+737 1539 M
+31 0 V
+4073 0 R
+-31 0 V
+737 1598 M
+63 0 V
+4041 0 R
+-63 0 V
+stroke
+671 1598 M
+[ [(Helvetica) 150.0 0.0 true true 0 ( 10000)]
+] -50.0 MRshow
+1.000 UL
+LTb
+737 1656 M
+31 0 V
+4073 0 R
+-31 0 V
+737 1715 M
+31 0 V
+4073 0 R
+-31 0 V
+737 1773 M
+31 0 V
+4073 0 R
+-31 0 V
+737 1832 M
+31 0 V
+4073 0 R
+-31 0 V
+737 1890 M
+63 0 V
+4041 0 R
+-63 0 V
+stroke
+671 1890 M
+[ [(Helvetica) 150.0 0.0 true true 0 ( 12500)]
+] -50.0 MRshow
+1.000 UL
+LTb
+737 1949 M
+31 0 V
+4073 0 R
+-31 0 V
+737 2007 M
+31 0 V
+4073 0 R
+-31 0 V
+737 2065 M
+31 0 V
+4073 0 R
+-31 0 V
+737 2124 M
+31 0 V
+4073 0 R
+-31 0 V
+737 2182 M
+63 0 V
+4041 0 R
+-63 0 V
+stroke
+671 2182 M
+[ [(Helvetica) 150.0 0.0 true true 0 ( 15000)]
+] -50.0 MRshow
+1.000 UL
+LTb
+737 2241 M
+31 0 V
+4073 0 R
+-31 0 V
+737 2299 M
+31 0 V
+4073 0 R
+-31 0 V
+737 2358 M
+31 0 V
+4073 0 R
+-31 0 V
+737 2416 M
+31 0 V
+4073 0 R
+-31 0 V
+737 2474 M
+63 0 V
+4041 0 R
+-63 0 V
+stroke
+671 2474 M
+[ [(Helvetica) 150.0 0.0 true true 0 ( 17500)]
+] -50.0 MRshow
+1.000 UL
+LTb
+737 2533 M
+31 0 V
+4073 0 R
+-31 0 V
+737 2591 M
+31 0 V
+4073 0 R
+-31 0 V
+737 2650 M
+31 0 V
+4073 0 R
+-31 0 V
+737 2708 M
+31 0 V
+4073 0 R
+-31 0 V
+737 2767 M
+63 0 V
+4041 0 R
+-63 0 V
+stroke
+671 2767 M
+[ [(Helvetica) 150.0 0.0 true true 0 ( 20000)]
+] -50.0 MRshow
+1.000 UL
+LTb
+737 2825 M
+31 0 V
+4073 0 R
+-31 0 V
+737 2884 M
+31 0 V
+4073 0 R
+-31 0 V
+737 2942 M
+31 0 V
+4073 0 R
+-31 0 V
+737 3000 M
+31 0 V
+4073 0 R
+-31 0 V
+737 3059 M
+63 0 V
+4041 0 R
+-63 0 V
+stroke
+671 3059 M
+[ [(Helvetica) 150.0 0.0 true true 0 ( 22500)]
+] -50.0 MRshow
+1.000 UL
+LTb
+737 3117 M
+31 0 V
+4073 0 R
+-31 0 V
+737 3176 M
+31 0 V
+4073 0 R
+-31 0 V
+737 3234 M
+31 0 V
+4073 0 R
+-31 0 V
+737 3293 M
+31 0 V
+4073 0 R
+-31 0 V
+737 3351 M
+63 0 V
+4041 0 R
+-63 0 V
+stroke
+671 3351 M
+[ [(Helvetica) 150.0 0.0 true true 0 ( 25000)]
+] -50.0 MRshow
+1.000 UL
+LTb
+737 3410 M
+31 0 V
+4073 0 R
+-31 0 V
+737 3468 M
+31 0 V
+4073 0 R
+-31 0 V
+737 429 M
+0 63 V
+0 2976 R
+0 -63 V
+stroke
+737 319 M
+[ [(Helvetica) 150.0 0.0 true true 0 (CG)]
+] -50.0 MCshow
+1.000 UL
+LTb
+1421 429 M
+0 63 V
+0 2976 R
+0 -63 V
+stroke
+1421 319 M
+[ [(Helvetica) 150.0 0.0 true true 0 (MG)]
+] -50.0 MCshow
+1.000 UL
+LTb
+2105 429 M
+0 63 V
+0 2976 R
+0 -63 V
+stroke
+2105 319 M
+[ [(Helvetica) 150.0 0.0 true true 0 (EP)]
+] -50.0 MCshow
+1.000 UL
+LTb
+2789 429 M
+0 63 V
+0 2976 R
+0 -63 V
+stroke
+2789 319 M
+[ [(Helvetica) 150.0 0.0 true true 0 (LU)]
+] -50.0 MCshow
+1.000 UL
+LTb
+3473 429 M
+0 63 V
+0 2976 R
+0 -63 V
+stroke
+3473 319 M
+[ [(Helvetica) 150.0 0.0 true true 0 (BT)]
+] -50.0 MCshow
+1.000 UL
+LTb
+4157 429 M
+0 63 V
+0 2976 R
+0 -63 V
+stroke
+4157 319 M
+[ [(Helvetica) 150.0 0.0 true true 0 (SP)]
+] -50.0 MCshow
+1.000 UL
+LTb
+4841 429 M
+0 63 V
+0 2976 R
+0 -63 V
+stroke
+4841 319 M
+[ [(Helvetica) 150.0 0.0 true true 0 (FT)]
+] -50.0 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+737 3468 N
+737 429 L
+4104 0 V
+0 3039 V
+-4104 0 V
+Z stroke
+LCb setrgbcolor
+88 1948 M
+currentpoint gsave translate -270 rotate 0 0 moveto
+[ [(Helvetica) 180.0 0.0 true true 0 (Energy consumption [J])]
+] -60.0 MCshow
+grestore
+LTb
+LCb setrgbcolor
+2789 77 M
+[ [(Helvetica) 180.0 0.0 true true 0 (NAS Parallel Benchmarks)]
+] -60.0 MCshow
+LTb
+1.000 UP
+1.000 UL
+LTb
+% Begin plot #1
+1.000 UP
+2.000 UL
+LT0
+0.00 0.00 0.47 C LCb setrgbcolor
+2193 3280 M
+[ [(Helvetica) 140.0 0.0 true true 0 (Rauber energy model)]
+] -46.7 MRshow
+LT0
+0.00 0.00 0.47 C 2259 3280 M
+327 0 V
+737 1517 M
+1421 588 L
+2105 462 L
+684 2592 V
+684 93 V
+684 -670 V
+4841 1364 L
+737 1517 Circle
+1421 588 Circle
+2105 462 Circle
+2789 3054 Circle
+3473 3147 Circle
+4157 2477 Circle
+4841 1364 Circle
+2422 3280 Circle
+% End plot #1
+% Begin plot #2
+1.000 UP
+2.000 UL
+LT1
+1.00 0.00 0.00 C LCb setrgbcolor
+2193 3137 M
+[ [(Helvetica) 140.0 0.0 true true 0 (New energy model)]
+] -46.7 MRshow
+LT1
+1.00 0.00 0.00 C 2259 3137 M
+327 0 V
+737 1081 M
+1421 540 L
+684 -78 V
+684 2434 V
+684 195 V
+684 -901 V
+4841 959 L
+737 1081 TriU
+1421 540 TriU
+2105 462 TriU
+2789 2896 TriU
+3473 3091 TriU
+4157 2190 TriU
+4841 959 TriU
+2422 3137 TriU
+% End plot #2
+1.000 UL
+LTb
+737 3468 N
+737 429 L
+4104 0 V
+0 3039 V
+-4104 0 V
+Z stroke
+1.000 UP
+1.000 UL
+LTb
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
+%%Pages: 1
diff --git a/fig/ch2/ep.eps b/fig/ch2/ep.eps
new file mode 100755 (executable)
index 0000000..e1d29f4
--- /dev/null
@@ -0,0 +1,686 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: ep.eps
+%%Creator: gnuplot 4.6 patchlevel 0
+%%CreationDate: Wed May 28 14:37:24 2014
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 320 239
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color false def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/SuppressPDFMark false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+/BackgroundColor {-1.000 -1.000 -1.000} def
+%
+/vshift -46 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 320 50 lineto 320 239 lineto 50 239 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.4 (August 2010)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+       dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc
+       2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 450 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+       2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 360 arc closepath fill
+       vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+       neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+       exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+       Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+       Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%      x,y = lower left corner of box to be filled
+%      w,h = width and height of box
+%        a = angle in degrees between lines and x-axis
+%       XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  gsave 1 setgray fill grestore clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+       0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+       {/InterpretLevel1 true def}
+       {/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+       bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+       0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+       8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+       0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+       0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+       0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+       0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+       12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+       -4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+Level1 SuppressPDFMark or 
+{} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title (ep.eps)
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.6 patchlevel 0)
+  /Author (afanfakh)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Wed May 28 14:37:24 2014)
+  /DOCINFO pdfmark
+end
+} ifelse
+end
+%%EndProlog
+%%Page: 1 1
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Helvetica) findfont 140 scalefont setfont
+BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 0 0 5400.00 3780.00 BoxColFill} if
+1.000 UL
+LTb
+686 736 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+602 736 M
+( 0.2) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 1311 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 0.4) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 1886 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 0.6) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 2461 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 0.8) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 3036 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 1) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 3611 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 1.2) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+1083 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+0 -3240 R
+( 1) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+2007 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+0 -3240 R
+( 1.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+2930 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+0 -3240 R
+( 2) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+3854 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+0 -3240 R
+( 2.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+4778 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+0 -3240 R
+( 3) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+1.000 UL
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+112 2029 M
+currentpoint gsave translate -270 rotate 0 0 M
+(Normalized energy and performance) Cshow
+grestore
+/Helvetica findfont 140 scalefont setfont
+LTb
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+2916 98 M
+(Frequency scaling factors) Cshow
+/Helvetica findfont 140 scalefont setfont
+LTb
+1.000 UP
+/Helvetica findfont 200 scalefont setfont
+1231 621 M
+(Optimal scaling factor=1.04) Lshow
+/Helvetica findfont 140 scalefont setfont
+/Helvetica findfont 180 scalefont setfont
+806 3438 M
+(EP Class C) Lshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LT1
+0.00 0.00 0.00 C 1125 598 M
+32 -121 V
+32 121 V
+-32 1812 R
+0 -1933 V
+stroke
+gsave [] 0 setdash
+1125 598 M
+32 -121 V
+32 121 V
+stroke
+grestore
+1.000 UL
+LTb
+% Begin plot #1
+1.000 UL
+LT0
+0.00 0.00 1.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+4496 3443 M
+(Normalized performance) Rshow
+/Helvetica findfont 140 scalefont setfont
+LT0
+0.00 0.00 1.00 C 4580 3443 M
+399 0 V
+695 3036 M
+465 -626 V
+84 -94 V
+91 -94 V
+100 -93 V
+110 -94 V
+121 -94 V
+136 -94 V
+150 -93 V
+170 -94 V
+193 -94 V
+220 -93 V
+253 -94 V
+296 -94 V
+350 -94 V
+420 -93 V
+513 -94 V
+641 -94 V
+% End plot #1
+% Begin plot #2
+stroke
+LT1
+1.00 0.00 0.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+4496 3233 M
+(Normalized energy) Rshow
+/Helvetica findfont 140 scalefont setfont
+LT1
+1.00 0.00 0.00 C 4580 3233 M
+399 0 V
+695 3036 M
+465 -690 V
+84 -77 V
+91 -68 V
+100 -60 V
+110 -51 V
+121 -41 V
+136 -30 V
+150 -19 V
+170 -7 V
+193 8 V
+220 24 V
+253 44 V
+296 66 V
+350 94 V
+420 128 V
+513 172 V
+641 232 V
+% End plot #2
+stroke
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+1.000 UP
+1.000 UL
+LTb
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
diff --git a/fig/ch2/file.eps b/fig/ch2/file.eps
new file mode 100755 (executable)
index 0000000..8370db2
--- /dev/null
@@ -0,0 +1,728 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: file.eps
+%%Creator: gnuplot 4.6 patchlevel 0
+%%CreationDate: Tue May 27 14:45:17 2014
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 320 239
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color false def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/SuppressPDFMark false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+/BackgroundColor {-1.000 -1.000 -1.000} def
+%
+/vshift -46 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 320 50 lineto 320 239 lineto 50 239 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.4 (August 2010)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+       dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc
+       2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 450 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+       2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 360 arc closepath fill
+       vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+       neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+       exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+       Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+       Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%      x,y = lower left corner of box to be filled
+%      w,h = width and height of box
+%        a = angle in degrees between lines and x-axis
+%       XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  gsave 1 setgray fill grestore clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+       0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+       {/InterpretLevel1 true def}
+       {/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+       bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+       0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+       8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+       0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+       0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+       0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+       0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+       12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+       -4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+Level1 SuppressPDFMark or 
+{} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title (file.eps)
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.6 patchlevel 0)
+  /Author (afanfakh)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Tue May 27 14:45:17 2014)
+  /DOCINFO pdfmark
+end
+} ifelse
+end
+%%EndProlog
+%%Page: 1 1
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Helvetica) findfont 140 scalefont setfont
+BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 0 0 5400.00 3780.00 BoxColFill} if
+1.000 UL
+LTb
+686 448 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+602 448 M
+( 0.4) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 843 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+602 843 M
+( 0.5) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 1239 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 0.6) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 1634 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 0.7) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 2029 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 0.8) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 2425 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 0.9) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 2820 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 1) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 3216 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 1.1) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 3611 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 1.2) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+686 308 M
+( 1) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+1700 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+0 -3240 R
+( 1.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+2714 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+0 -3240 R
+( 2) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+3728 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+0 -3240 R
+( 2.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+4741 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+0 -3240 R
+( 3) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+1.000 UL
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+112 2029 M
+currentpoint gsave translate -270 rotate 0 0 M
+(Normalized energy and performance) Cshow
+grestore
+/Helvetica findfont 140 scalefont setfont
+LTb
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+2916 98 M
+(Frequency scaling factors) Cshow
+/Helvetica findfont 140 scalefont setfont
+LTb
+1.000 UP
+/Helvetica findfont 200 scalefont setfont
+1700 646 M
+(Optimal scaling factor) Lshow
+/Helvetica findfont 140 scalefont setfont
+/Helvetica findfont 180 scalefont setfont
+889 3453 M
+(              ) Lshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+1639 1342 M
+0 585 V
+0 4 R
+0 -593 V
+stroke
+LT1
+0.00 0.00 0.00 C 1607 609 M
+32 -121 V
+32 121 V
+-32 733 R
+0 -854 V
+stroke
+gsave [] 0 setdash
+1607 609 M
+32 -121 V
+32 121 V
+stroke
+grestore
+1.000 UL
+LT0
+1538 1931 M
+213 0 V
+1538 1342 M
+213 0 V
+stroke
+LTb
+% Begin plot #1
+1.000 UL
+LT0
+0.00 0.00 1.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+4496 3443 M
+(Normalized performance) Rshow
+/Helvetica findfont 140 scalefont setfont
+LT0
+0.00 0.00 1.00 C 4580 3443 M
+399 0 V
+686 2820 M
+84 -99 V
+92 -102 V
+963 2513 L
+109 -109 V
+121 -112 V
+133 -116 V
+149 -121 V
+165 -124 V
+187 -129 V
+211 -134 V
+241 -139 V
+279 -143 V
+325 -150 V
+384 -155 V
+3728 920 L
+4291 752 L
+4995 577 L
+% End plot #1
+% Begin plot #2
+stroke
+LT1
+1.00 0.00 0.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+4496 3233 M
+(Normalized energy) Rshow
+/Helvetica findfont 140 scalefont setfont
+LT1
+1.00 0.00 0.00 C 4580 3233 M
+399 0 V
+686 2820 M
+84 -293 V
+92 -211 V
+963 2118 L
+109 -185 V
+121 -170 V
+133 -156 V
+149 -141 V
+165 -125 V
+187 -107 V
+211 -90 V
+241 -68 V
+279 -47 V
+325 -20 V
+384 9 V
+461 45 V
+563 90 V
+704 146 V
+% End plot #2
+stroke
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+1.000 UP
+1.000 UL
+LTb
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
diff --git a/fig/ch2/file3.eps b/fig/ch2/file3.eps
new file mode 100755 (executable)
index 0000000..966085d
--- /dev/null
@@ -0,0 +1,662 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: file3.eps
+%%Creator: gnuplot 4.6 patchlevel 0
+%%CreationDate: Tue May 27 14:48:00 2014
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 320 239
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color false def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/SuppressPDFMark false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+/BackgroundColor {-1.000 -1.000 -1.000} def
+%
+/vshift -46 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 320 50 lineto 320 239 lineto 50 239 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.4 (August 2010)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+       dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc
+       2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 450 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+       2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 360 arc closepath fill
+       vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+       neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+       exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+       Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+       Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%      x,y = lower left corner of box to be filled
+%      w,h = width and height of box
+%        a = angle in degrees between lines and x-axis
+%       XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  gsave 1 setgray fill grestore clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+       0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+       {/InterpretLevel1 true def}
+       {/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+       bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+       0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+       8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+       0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+       0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+       0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+       0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+       12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+       -4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+Level1 SuppressPDFMark or 
+{} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title (file3.eps)
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.6 patchlevel 0)
+  /Author (afanfakh)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Tue May 27 14:48:00 2014)
+  /DOCINFO pdfmark
+end
+} ifelse
+end
+%%EndProlog
+%%Page: 1 1
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Helvetica) findfont 140 scalefont setfont
+BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 0 0 5400.00 3780.00 BoxColFill} if
+1.000 UL
+LTb
+686 813 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+602 813 M
+( 0.5) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 1421 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 1) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 2030 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 1.5) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 2638 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 2) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 3246 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+-4482 0 R
+( 2.5) Rshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+686 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+686 308 M
+( 1) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+1700 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+0 -3240 R
+( 1.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+2714 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+0 -3240 R
+( 2) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+3728 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+0 -3240 R
+( 2.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+4741 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+0 -3240 R
+( 3) Cshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+1.000 UL
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+112 2029 M
+currentpoint gsave translate -270 rotate 0 0 M
+(Normalized energy and execution time) Cshow
+grestore
+/Helvetica findfont 140 scalefont setfont
+LTb
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+2916 98 M
+(Frequency scaling factors) Cshow
+/Helvetica findfont 140 scalefont setfont
+LTb
+1.000 UP
+/Helvetica findfont 200 scalefont setfont
+1700 752 M
+() Lshow
+/Helvetica findfont 140 scalefont setfont
+/Helvetica findfont 180 scalefont setfont
+889 1616 M
+(              ) Lshow
+/Helvetica findfont 140 scalefont setfont
+1.000 UL
+LTb
+% Begin plot #1
+1.000 UL
+LT0
+0.00 0.00 1.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+4496 3443 M
+(Normalized execution time) Rshow
+/Helvetica findfont 140 scalefont setfont
+LT0
+0.00 0.00 1.00 C 4580 3443 M
+399 0 V
+686 1421 M
+84 32 V
+92 33 V
+101 38 V
+109 40 V
+121 45 V
+133 49 V
+149 55 V
+165 61 V
+187 69 V
+211 79 V
+241 89 V
+279 103 V
+325 120 V
+384 142 V
+461 171 V
+563 209 V
+704 260 V
+% End plot #1
+% Begin plot #2
+stroke
+LT1
+1.00 0.00 0.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+4496 3233 M
+(Normalized energy) Rshow
+/Helvetica findfont 140 scalefont setfont
+LT1
+1.00 0.00 0.00 C 4580 3233 M
+399 0 V
+686 1421 M
+84 -90 V
+92 -65 V
+101 -61 V
+109 -57 V
+121 -52 V
+133 -48 V
+149 -43 V
+165 -39 V
+187 -33 V
+211 -27 V
+241 -22 V
+279 -14 V
+325 -6 V
+384 3 V
+461 14 V
+563 27 V
+704 45 V
+% End plot #2
+stroke
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+1.000 UP
+1.000 UL
+LTb
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
diff --git a/fig/ch2/ft.eps b/fig/ch2/ft.eps
new file mode 100755 (executable)
index 0000000..163d788
--- /dev/null
@@ -0,0 +1,769 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: ft.eps
+%%Creator: gnuplot 4.6 patchlevel 6
+%%CreationDate: Mon Mar 14 10:00:30 2016
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 320 239
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color false def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/SuppressPDFMark false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+/BackgroundColor {-1.000 -1.000 -1.000} def
+%
+/vshift -46 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 320 50 lineto 320 239 lineto 50 239 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.6 (September 2012)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+       dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc
+       2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 450 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+       2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 360 arc closepath fill
+       vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+       neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+       exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+       Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+       Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%      x,y = lower left corner of box to be filled
+%      w,h = width and height of box
+%        a = angle in degrees between lines and x-axis
+%       XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+  clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+       0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+       {/InterpretLevel1 true def}
+       {/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+       bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+       0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+       8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+       0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+       0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+       0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+       0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+       12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+       -4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+Level1 SuppressPDFMark or 
+{} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title (ft.eps)
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.6 patchlevel 6)
+  /Author (afanfakh)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Mon Mar 14 10:00:30 2016)
+  /DOCINFO pdfmark
+end
+} ifelse
+end
+%%EndProlog
+%%Page: 1 1
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Helvetica) findfont 140 scalefont setfont
+BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 0 0 5400.00 3780.00 BoxColFill} if
+1.000 UL
+LTb
+686 448 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+602 448 M
+( 0.3) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 799 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+602 799 M
+( 0.4) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1151 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.5) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1502 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.6) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1854 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.7) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2205 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.8) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2557 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.9) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2908 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 3260 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.1) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 3611 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.2) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+686 308 M
+( 1) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+1700 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 1.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+2714 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 2) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+3728 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 2.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+4741 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 3) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+1.000 UL
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+112 2029 M
+currentpoint gsave translate -270 rotate 0 0 M
+(Normalized energy and performance) Cshow
+grestore
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LTb
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+2916 98 M
+(Frequency scaling factors) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LTb
+1.000 UP
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+1740 659 M
+(Optimal scaling factor=1.47) Lshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+/Helvetica findfont 180 scalefont setfont
+/vshift -60 def
+889 3470 M
+(FT Class C) Lshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LT1
+0.00 0.00 0.00 C 1607 587 M
+32 -121 V
+32 121 V
+-32 1636 R
+0 -1757 V
+stroke
+gsave [] 0 setdash
+1607 587 M
+32 -121 V
+32 121 V
+stroke
+grestore
+1.000 UL
+LTb
+% Begin plot #1
+1.000 UL
+LT0
+0.00 0.00 1.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+/vshift -63 def
+4496 3443 M
+(Normalized performance) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LT0
+0.00 0.00 1.00 C 4580 3443 M
+399 0 V
+686 2908 M
+84 -73 V
+92 -77 V
+101 -79 V
+109 -83 V
+121 -87 V
+133 -90 V
+149 -95 V
+165 -98 V
+187 -104 V
+211 -108 V
+241 -114 V
+279 -120 V
+325 -126 V
+384 -133 V
+461 -140 V
+563 -148 V
+704 -156 V
+% End plot #1
+% Begin plot #2
+stroke
+LT1
+1.00 0.00 0.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+/vshift -63 def
+4496 3233 M
+(Normalized energy) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LT1
+1.00 0.00 0.00 C 4580 3233 M
+399 0 V
+686 2908 M
+84 -285 V
+92 -183 V
+963 2268 L
+109 -160 V
+121 -148 V
+133 -135 V
+149 -122 V
+165 -107 V
+187 -92 V
+211 -75 V
+241 -58 V
+279 -37 V
+325 -14 V
+384 13 V
+461 45 V
+563 86 V
+704 136 V
+% End plot #2
+stroke
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+1.000 UP
+1.000 UL
+LTb
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
diff --git a/fig/ch2/lu.eps b/fig/ch2/lu.eps
new file mode 100755 (executable)
index 0000000..6885ff8
--- /dev/null
@@ -0,0 +1,769 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: lu.eps
+%%Creator: gnuplot 4.6 patchlevel 6
+%%CreationDate: Mon Mar 14 10:01:01 2016
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 320 239
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color false def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/SuppressPDFMark false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+/BackgroundColor {-1.000 -1.000 -1.000} def
+%
+/vshift -46 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 320 50 lineto 320 239 lineto 50 239 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.6 (September 2012)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+       dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc
+       2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 450 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+       2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 360 arc closepath fill
+       vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+       neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+       exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+       Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+       Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%      x,y = lower left corner of box to be filled
+%      w,h = width and height of box
+%        a = angle in degrees between lines and x-axis
+%       XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+  clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+       0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+       {/InterpretLevel1 true def}
+       {/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+       bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+       0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+       8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+       0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+       0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+       0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+       0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+       12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+       -4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+Level1 SuppressPDFMark or 
+{} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title (lu.eps)
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.6 patchlevel 6)
+  /Author (afanfakh)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Mon Mar 14 10:01:01 2016)
+  /DOCINFO pdfmark
+end
+} ifelse
+end
+%%EndProlog
+%%Page: 1 1
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Helvetica) findfont 140 scalefont setfont
+BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 0 0 5400.00 3780.00 BoxColFill} if
+1.000 UL
+LTb
+686 448 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+602 448 M
+( 0.3) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 799 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+602 799 M
+( 0.4) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1151 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.5) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1502 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.6) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1854 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.7) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2205 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.8) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2557 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.9) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2908 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 3260 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.1) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 3611 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.2) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+686 308 M
+( 1) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+1700 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 1.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+2714 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 2) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+3728 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 2.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+4741 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 3) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+1.000 UL
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+112 2029 M
+currentpoint gsave translate -270 rotate 0 0 M
+(Normalized energy and performance) Cshow
+grestore
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LTb
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+2916 98 M
+(Frequency scaling factors) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LTb
+1.000 UP
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+1700 659 M
+(Optimal scaling factor=1.47) Lshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+/Helvetica findfont 180 scalefont setfont
+/vshift -60 def
+889 3470 M
+(LU Class C) Lshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LT1
+0.00 0.00 0.00 C 1607 587 M
+32 -121 V
+32 121 V
+-32 1578 R
+0 -1699 V
+stroke
+gsave [] 0 setdash
+1607 587 M
+32 -121 V
+32 121 V
+stroke
+grestore
+1.000 UL
+LTb
+% Begin plot #1
+1.000 UL
+LT0
+0.00 0.00 1.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+/vshift -63 def
+4496 3443 M
+(Normalized performance) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LT0
+0.00 0.00 1.00 C 4580 3443 M
+399 0 V
+686 2908 M
+84 -81 V
+92 -85 V
+101 -87 V
+109 -91 V
+121 -94 V
+133 -98 V
+149 -101 V
+165 -106 V
+187 -110 V
+211 -114 V
+241 -120 V
+279 -124 V
+325 -130 V
+384 -136 V
+461 -142 V
+563 -149 V
+4995 983 L
+% End plot #1
+% Begin plot #2
+stroke
+LT1
+1.00 0.00 0.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+/vshift -63 def
+4496 3233 M
+(Normalized energy) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LT1
+1.00 0.00 0.00 C 4580 3233 M
+399 0 V
+686 2908 M
+84 -281 V
+92 -185 V
+963 2269 L
+109 -162 V
+121 -149 V
+133 -137 V
+149 -123 V
+165 -109 V
+187 -94 V
+211 -77 V
+241 -59 V
+279 -39 V
+325 -16 V
+384 10 V
+461 43 V
+563 82 V
+704 133 V
+% End plot #2
+stroke
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+1.000 UP
+1.000 UL
+LTb
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
diff --git a/fig/ch2/lu_pre.eps b/fig/ch2/lu_pre.eps
new file mode 100755 (executable)
index 0000000..325b268
--- /dev/null
@@ -0,0 +1,715 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: lu_pre.eps
+%%Creator: gnuplot 4.6 patchlevel 6
+%%CreationDate: Mon Mar 14 10:18:58 2016
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 320 239
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color false def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/SuppressPDFMark false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+/BackgroundColor {-1.000 -1.000 -1.000} def
+%
+/vshift -46 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 320 50 lineto 320 239 lineto 50 239 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.6 (September 2012)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+       dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc
+       2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 450 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+       2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 360 arc closepath fill
+       vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+       neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+       exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+       Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+       Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%      x,y = lower left corner of box to be filled
+%      w,h = width and height of box
+%        a = angle in degrees between lines and x-axis
+%       XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+  clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+       0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+       {/InterpretLevel1 true def}
+       {/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+       bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+       0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+       8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+       0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+       0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+       0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+       0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+       12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+       -4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+Level1 SuppressPDFMark or 
+{} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title (lu_pre.eps)
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.6 patchlevel 6)
+  /Author (afanfakh)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Mon Mar 14 10:18:58 2016)
+  /DOCINFO pdfmark
+end
+} ifelse
+end
+%%EndProlog
+%%Page: 1 1
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Helvetica) findfont 140 scalefont setfont
+BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 0 0 5400.00 3780.00 BoxColFill} if
+1.000 UL
+LTb
+686 781 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+602 781 M
+( 1.2) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1280 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.5) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1780 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.8) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2279 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 2.1) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2779 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 2.4) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 3278 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 2.7) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+686 308 M
+( 1) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+1578 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 1.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+2470 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 2) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+3363 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 2.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+4255 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 3) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+5147 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 3.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+1.000 UL
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+112 2029 M
+currentpoint gsave translate -270 rotate 0 0 M
+(Normalized execution time) Cshow
+grestore
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LTb
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+2916 98 M
+(Frequency scaling factors) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LTb
+1.000 UP
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+864 3361 M
+(LU Class B) Lshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+864 714 M
+(            ) Lshow
+1.000 UL
+LTb
+% Begin plot #1
+1.000 UL
+LT0
+0.00 0.00 1.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+/vshift -63 def
+4496 3443 M
+(Normalized predicted time) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LT0
+0.00 0.00 1.00 C 4580 3443 M
+399 0 V
+686 448 M
+74 52 V
+81 56 V
+88 61 V
+97 67 V
+106 73 V
+117 82 V
+131 90 V
+146 101 V
+164 114 V
+186 129 V
+212 147 V
+245 170 V
+286 198 V
+338 234 V
+406 281 V
+495 344 V
+620 430 V
+% End plot #1
+% Begin plot #2
+1.000 UP
+stroke
+LT1
+1.00 0.00 0.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+/vshift -63 def
+4496 3233 M
+(Normalized real time) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LT1
+1.00 0.00 0.00 C 686 448 BoxF
+760 491 BoxF
+841 610 BoxF
+929 613 BoxF
+1026 729 BoxF
+1132 765 BoxF
+1249 922 BoxF
+1380 1020 BoxF
+1526 1060 BoxF
+1690 1127 BoxF
+1876 1340 BoxF
+2088 1474 BoxF
+2333 1673 BoxF
+2619 1795 BoxF
+2957 1993 BoxF
+3363 2225 BoxF
+3858 2508 BoxF
+4478 2924 BoxF
+4779 3233 BoxF
+% End plot #2
+1.000 UL
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+1.000 UP
+1.000 UL
+LTb
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
diff --git a/fig/ch2/mg_pre.eps b/fig/ch2/mg_pre.eps
new file mode 100755 (executable)
index 0000000..93f69f6
--- /dev/null
@@ -0,0 +1,725 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: mg_pre.eps
+%%Creator: gnuplot 4.6 patchlevel 6
+%%CreationDate: Mon Mar 14 10:14:57 2016
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 320 239
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color false def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/SuppressPDFMark false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+/BackgroundColor {-1.000 -1.000 -1.000} def
+%
+/vshift -46 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 320 50 lineto 320 239 lineto 50 239 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.6 (September 2012)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+       dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc
+       2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 450 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+       2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 360 arc closepath fill
+       vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+       neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+       exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+       Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+       Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%      x,y = lower left corner of box to be filled
+%      w,h = width and height of box
+%        a = angle in degrees between lines and x-axis
+%       XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+  clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+       0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+       {/InterpretLevel1 true def}
+       {/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+       bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+       0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+       8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+       0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+       0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+       0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+       0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+       12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+       -4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+Level1 SuppressPDFMark or 
+{} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title (mg_pre.eps)
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.6 patchlevel 6)
+  /Author (afanfakh)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Mon Mar 14 10:14:57 2016)
+  /DOCINFO pdfmark
+end
+} ifelse
+end
+%%EndProlog
+%%Page: 1 1
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Helvetica) findfont 140 scalefont setfont
+BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 0 0 5400.00 3780.00 BoxColFill} if
+1.000 UL
+LTb
+686 448 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+602 448 M
+( 1) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 935 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+602 935 M
+( 1.2) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1421 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.4) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1908 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.6) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2394 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.8) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2881 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 2) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 3368 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 2.2) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+686 308 M
+( 1) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+1578 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 1.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+2470 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 2) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+3363 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 2.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+4255 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 3) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+5147 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 3.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+1.000 UL
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+112 2029 M
+currentpoint gsave translate -270 rotate 0 0 M
+(Normalized execution time) Cshow
+grestore
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LTb
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+2916 98 M
+(Frequency scaling factors) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LTb
+1.000 UP
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+864 3368 M
+(MG Class B) Lshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+% Begin plot #1
+1.000 UL
+LT0
+0.00 0.00 1.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+/vshift -63 def
+4496 3443 M
+(Normalized predicted time) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LT0
+0.00 0.00 1.00 C 4580 3443 M
+399 0 V
+686 448 M
+74 50 V
+81 53 V
+88 60 V
+97 62 V
+106 76 V
+117 79 V
+131 79 V
+146 93 V
+164 119 V
+186 125 V
+212 155 V
+245 157 V
+286 193 V
+338 221 V
+406 244 V
+495 325 V
+620 391 V
+% End plot #1
+% Begin plot #2
+1.000 UP
+stroke
+LT1
+1.00 0.00 0.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+/vshift -63 def
+4496 3233 M
+(Normalized real time) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LT1
+1.00 0.00 0.00 C 686 448 BoxF
+760 539 BoxF
+841 590 BoxF
+929 631 BoxF
+1026 702 BoxF
+1132 783 BoxF
+1249 848 BoxF
+1380 926 BoxF
+1526 1041 BoxF
+1690 1134 BoxF
+1876 1279 BoxF
+2088 1416 BoxF
+2333 1581 BoxF
+2619 1797 BoxF
+2957 2013 BoxF
+3363 2176 BoxF
+3858 2516 BoxF
+4478 2936 BoxF
+4779 3233 BoxF
+% End plot #2
+1.000 UL
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+1.000 UP
+1.000 UL
+LTb
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
diff --git a/fig/ch2/sp.eps b/fig/ch2/sp.eps
new file mode 100755 (executable)
index 0000000..ab84717
--- /dev/null
@@ -0,0 +1,769 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: sp.eps
+%%Creator: gnuplot 4.6 patchlevel 6
+%%CreationDate: Mon Mar 14 09:56:04 2016
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 320 239
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color false def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/SuppressPDFMark false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+/BackgroundColor {-1.000 -1.000 -1.000} def
+%
+/vshift -46 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 320 50 lineto 320 239 lineto 50 239 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.6 (September 2012)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+       dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc
+       2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 450 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+       2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 360 arc closepath fill
+       vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+       neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+       exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+       Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+       Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%      x,y = lower left corner of box to be filled
+%      w,h = width and height of box
+%        a = angle in degrees between lines and x-axis
+%       XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+  clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+       0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+       {/InterpretLevel1 true def}
+       {/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+       bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+       0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+       8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+       0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+       0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+       0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+       0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+       12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+       -4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+Level1 SuppressPDFMark or 
+{} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title (sp.eps)
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.6 patchlevel 6)
+  /Author (afanfakh)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Mon Mar 14 09:56:04 2016)
+  /DOCINFO pdfmark
+end
+} ifelse
+end
+%%EndProlog
+%%Page: 1 1
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Helvetica) findfont 140 scalefont setfont
+BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 0 0 5400.00 3780.00 BoxColFill} if
+1.000 UL
+LTb
+686 448 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+602 448 M
+( 0.3) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 799 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+602 799 M
+( 0.4) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1151 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.5) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1502 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.6) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 1854 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.7) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2205 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.8) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2557 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 0.9) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 2908 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 3260 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.1) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 3611 M
+63 0 V
+4398 0 R
+-63 0 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+-4482 0 R
+( 1.2) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+686 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+686 308 M
+( 1) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+1700 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 1.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+2714 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 2) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+3728 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 2.5) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+4741 448 M
+0 63 V
+0 3100 R
+0 -63 V
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+0 -3240 R
+( 3) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LTb
+1.000 UL
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+112 2029 M
+currentpoint gsave translate -270 rotate 0 0 M
+(Normalized energy and performance) Cshow
+grestore
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LTb
+LCb setrgbcolor
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+2916 98 M
+(Frequency scaling factors) Cshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LTb
+1.000 UP
+/Helvetica findfont 200 scalefont setfont
+/vshift -66 def
+1558 659 M
+(Optimal scaling factor=1.388) Lshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+/Helvetica findfont 180 scalefont setfont
+/vshift -60 def
+889 3470 M
+(SP Class C) Lshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+1.000 UL
+LT1
+0.00 0.00 0.00 C 1441 587 M
+32 -121 V
+32 121 V
+-32 1734 R
+0 -1855 V
+stroke
+gsave [] 0 setdash
+1441 587 M
+32 -121 V
+32 121 V
+stroke
+grestore
+1.000 UL
+LTb
+% Begin plot #1
+1.000 UL
+LT0
+0.00 0.00 1.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+/vshift -63 def
+4496 3443 M
+(Normalized performance) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LT0
+0.00 0.00 1.00 C 4580 3443 M
+399 0 V
+686 2908 M
+84 -73 V
+92 -77 V
+101 -79 V
+109 -83 V
+121 -87 V
+133 -90 V
+149 -95 V
+165 -98 V
+187 -104 V
+211 -108 V
+241 -114 V
+279 -120 V
+325 -126 V
+384 -133 V
+461 -140 V
+563 -148 V
+704 -156 V
+% End plot #1
+% Begin plot #2
+stroke
+LT1
+1.00 0.00 0.00 C LCb setrgbcolor
+/Helvetica findfont 190 scalefont setfont
+/vshift -63 def
+4496 3233 M
+(Normalized energy) Rshow
+/Helvetica findfont 140 scalefont setfont
+/vshift -46 def
+LT1
+1.00 0.00 0.00 C 4580 3233 M
+399 0 V
+686 2908 M
+84 -285 V
+92 -183 V
+963 2268 L
+109 -160 V
+121 -148 V
+133 -135 V
+149 -122 V
+165 -107 V
+187 -92 V
+211 -75 V
+241 -58 V
+279 -37 V
+325 -14 V
+384 13 V
+461 45 V
+563 86 V
+704 136 V
+% End plot #2
+stroke
+LTb
+686 3611 N
+686 448 L
+4461 0 V
+0 3163 V
+-4461 0 V
+Z stroke
+1.000 UP
+1.000 UL
+LTb
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
index 1acfde3691768f436892aed38a1851d37bbe32e6..beeb323633c3e77bade35310c0c280e8de61f3af 100644 (file)
@@ -1,420 +1,4 @@
 
 
-
-
-
-@inproceedings{4,
- author = {Jejurikar, Ravindra and Pereira, Cristiano and Gupta, Rajesh},
- title = {Leakage Aware Dynamic Voltage Scaling for Real-time Embedded Systems},
- booktitle = {Proceedings of the 41 st Annual Design Automation Conference},
- series = {DAC '04},
- year = {2004},
- isbn = {1-58113-828-8},
- location = {San Diego, CA, USA},
- pages = {275--280},
- numpages = {6},
- doi = {10.1145/996566.996650},
- acmid = {996650},
- publisher = {ACM},
- address = {New York, NY, USA},
- keywords = {EDF scheduling, critical speed, leakage power, low power scheduling, procrastication, real-time systems}
-} 
-
-
-
-@MISC{5,
-    author = {Vishal Gupta and Hyesoon Kim and    Karsten Schwan and Memory B},
- title = {A Power-Performance Analysis of Memory-intensive Parallel Applications on a Manycore Platform},
-year = {2013}
-}
-
-@article{6,
-  author    = {Nikzad Babaii Rizvandi and
-               Albert Y. Zomaya},
-  title     = {A Primarily Survey on Energy Efficiency in Cloud and Distributed
-               Computing Systems},
-  journal   = {CoRR},
-  volume    = {abs/1210.4690},
-  year      = {2012}
-}
-
-@techreport{7,
-    author    = "Jee Whan Choi and Richard Vuduc",
-    title     = "A roofline model of energy",
-    institution = "Georgia Institute of Technology",
-    TTtype     = "", 
-    TTnumber   = "",
-    TTaddress  = "",
-    year      = {2012}
-    
-}
-
-
-
-
-@INPROCEEDINGS{10,
-author={Kessler, C.W. and Melot, N. and Eitschberger, P. and Keller, J.},
-booktitle={Power and Timing Modeling, Optimization and Simulation (PATMOS), 2013 23rd International Workshop on},
-title={Crown scheduling: Energy-efficient resource allocation, mapping and discrete frequency scaling for collections of malleable streaming tasks},
-year={2013},
-month={Sept},
-pages={215-222},
-keywords={cores;microprocessor chips;optimisation;power consumption;resource allocation;scaling circuits;scheduling;ILP;crown scheduling;data flows;discrete voltage-frequency scaling;dynamic discrete frequency scaling;dynamic rescaling;energy-efficient resource allocation;energy-optimal code;integer linear programming;malleable streaming tasks;many-core processor;mapping;optimization;pipelined task graph;power consumption;processor cores;streaming task collections;Dynamic scheduling;Optimization;Processor scheduling;Radio spectrum management;Resource management;Schedules},
-doi={10.1109/PATMOS.2013.6662176}
-}
-
-
-
-@article{12,
- author = {Lively, Charles and Xingfu Wu and Taylor, Valerie and Moore, Shirley and Chang, Hung-Ching and Cameron, Kirk},
- title = {Energy and Performance Characteristics of Different Parallel Implementations of Scientific Applications on Multicore Systems},
- journal = {Int. J. High Perform. Comput. Appl.},
- issue_date = {August    2011},
- volume = {25},
- number = {3},
- month = aug,
- year = {2011},
- issn = {1094-3420},
- pages = {342--350},
- numpages = {9},
- doi = {10.1177/1094342011414749},
- acmid = {2020813},
- publisher = {Sage Publications, Inc.},
- address = {Thousand Oaks, CA, USA},
- keywords = {MPI, energy consumption, frequency scaling, hybrid MPI/OpenMP, multicore system, performance characteristics, scientific applications}
-} 
-
-@ARTICLE{13,  
- author = {Lizhe Wang a,b, Samee U. Khan c , Dan Chen a , Joanna Kołodziej d , Rajiv Ranjan e , Cheng-zhong Xu f ,Albert Zomaya},  
- title = {Energy-aware parallel task scheduling in a cluster},  
- journal = {Future Generation Computer Systems},
- volume = {29},
- number = {7},
- pages =  {1661–1670},   
- year = {2013}  
-
- }
-
-@INPROCEEDINGS{14,
-author={Huang, S. and Feng, W.},
-booktitle={Cluster Computing and the Grid, 2009. CCGRID '09. 9th IEEE/ACM International Symposium on},
-title={Energy-Efficient Cluster Computing via Accurate Workload Characterization},
-year={2009},
-month={May},
-pages={68-75},
-keywords={parallel processing;power aware computing;workstation clusters;cluster computer;eco-friendly daemon;energy consumption reduction;energy-efficient cluster computing;power consumption reduction;processor stall cycles;workload characterization;Application software;Clustering algorithms;Energy consumption;Energy efficiency;Frequency;Grid computing;Hardware;High performance computing;Runtime;Voltage},
-doi={10.1109/CCGRID.2009.88}
-}
-
-
-
-@inproceedings{16,
- author = {Zong, Ziliang and Qin, Xiao and Ruan, Xiaojun and Bellam, Kiranmai and Nijim, Mais and Alghamdi, Mohamed},
- title = {Energy-Efficient Scheduling for Parallel Applications Running on Heterogeneous Clusters},
- booktitle = {Proceedings of the 2007 International Conference on Parallel Processing},
- series = {ICPP '07},
- year = {2007},
- isbn = {0-7695-2933-X},
- pages = {19--},
- doi = {10.1109/ICPP.2007.39},
- acmid = {1306033},
- publisher = {IEEE Computer Society},
- address = {Washington, DC, USA}
-} 
-
-
-
-@INPROCEEDINGS{18,
-author={Dong Li and De Supinski, B.R. and Schulz, M. and Cameron, K. and Nikolopoulos, D.S.},
-booktitle={Parallel Distributed Processing (IPDPS), 2010 IEEE International Symposium on},
-title={Hybrid MPI/OpenMP power-aware computing},
-year={2010},
-month={April},
-pages={1-12},
-keywords={message passing;parallel algorithms;power aware computing;HPC environment;dynamic concurrency throttling;dynamic voltage-and-frequency scaling;high performance computing;hybrid MPI-OpenMP computing;hybrid programming models;large-scale distributed systems;message passing interface;parallel programs;power-aware computing;power-aware performance prediction model;Concurrent computing;Discrete cosine transforms;Dynamic programming;Dynamic voltage scaling;Frequency;Heuristic algorithms;Large-scale systems;Multicore processing;Power system modeling;Predictive models;MPI;OpenMP;performance modeling;power-aware high -performance computing},
-doi={10.1109/IPDPS.2010.5470463},
-ISSN={1530-2075}
-}
-
-
-
-
-
-@inproceedings{20,
- author = {Springer, Robert and Lowenthal, David K. and Rountree, Barry and Freeh, Vincent W.},
- title = {Minimizing Execution Time in {MPI} Programs on an Energy-constrained, Power-scalable Cluster},
- booktitle = {Proceedings of the Eleventh ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming},
- series = {PPoPP '06},
- year = {2006},
- isbn = {1-59593-189-9},
- location = {New York, New York, USA},
- pages = {230--238},
- numpages = {9},
- doi = {10.1145/1122971.1123006},
- acmid = {1123006},
- publisher = {ACM},
- address = {New York, NY, USA},
- keywords = {MPI, energy, modeling, power, prediction}
-} 
-
-@inproceedings{21,
-  added-at = {2011-12-01T00:00:00.000+0100},
-  author = {Rauber, Thomas and Rünger, Gudula},
-  booktitle = {SpringSim (CNS)},
-  crossref = {conf/springsim/2011-3},
-  editor = {Abhari, Abdolreza},
-  pages = {11-18},
-  publisher = {SCS/ACM},
-  title = {Modeling the energy consumption for concurrent executions of parallel tasks},
-  year = {2011}
-}
-
-@inproceedings{22,
- author = {Ge, Rong and Feng, Xizhou and Cameron, Kirk W.},
- title = {Performance-constrained Distributed DVS Scheduling for Scientific Applications on Power-aware Clusters},
- booktitle = {Proceedings of the 2005 ACM/IEEE Conference on Supercomputing},
- series = {SC '05},
- year = {2005},
- isbn = {1-59593-061-2},
- pages = {34--},
- doi = {10.1109/SC.2005.57},
- acmid = {1105799},
- publisher = {IEEE Computer Society},
- address = {Washington, DC, USA}
-} 
-
-
-@inproceedings{23,
- author = {Feng, Xizhou and Ge, Rong and Cameron, Kirk W.},
- title = {Power and Energy Profiling of Scientific Applications on Distributed Systems},
- booktitle = {Proceedings of the 19th IEEE International Parallel and Distributed Processing Symposium (IPDPS'05) - Papers - Volume 01},
- series = {IPDPS '05},
- year = {2005},
- isbn = {0-7695-2312-9},
- pages = {34--},
- doi = {10.1109/IPDPS.2005.346},
- acmid = {1054376},
- publisher = {IEEE Computer Society},
- address = {Washington, DC, USA}
-} 
-
-@inproceedings{24,
-  added-at = {2009-11-27T00:00:00.000+0100},
-  author = {Chen, Yen-Jun and Hsu, Ching-Hsien and Li, Kuan-Ching and Chang, Hsi-Ya and Wang, Shuen-Tai},
-  booktitle = {Infoscale},
-  crossref = {conf/infoscale/2009},
-  date = {2009-11-27},
-  description = {dblp},
-  editor = {Mueller, Peter and Cao, Jian-Nong and Wang, Cho-Li},
-  ee = {http://dx.doi.org/10.1007/978-3-642-10485-5_8},
-  interhash = {d191ac30e6c4bd27288ffdf9e6d0e815},
-  intrahash = {4601b8a777bdf956bb48fa611b7556f5},
-  isbn = {978-3-642-10484-8},
-  keywords = {dblp},
-  pages = {108-120},
-  publisher = {Springer},
-  series = {Lecture Notes of the Institute for Computer Sciences, Social Informatics and Telecommunications Engineering},
-  timestamp = {2009-11-27T00:00:00.000+0100},
-  title = {Power Consumption Optimization of {MPI} Programs on Multi-core Clusters.},
-  volume = {18},
-  year = {2009}
-}
-
-@inproceedings{25,
- author = {Laurenzano, Michael A. and Meswani, Mitesh and Carrington, Laura and Snavely, Allan and Tikir, Mustafa M. and Poole, Stephen},
- title = {Reducing Energy Usage with Memory and Computation-aware Dynamic Frequency Scaling},
- booktitle = {Proceedings of the 17th International Conference on Parallel Processing - Volume Part I},
- series = {Euro-Par'11},
- year = {2011},
- isbn = {978-3-642-23399-9},
- location = {Bordeaux, France},
- pages = {79--90},
- numpages = {12},
- acmid = {2033356},
- publisher = {Springer-Verlag},
- address = {Berlin, Heidelberg},
- keywords = {benchmarking, dynamic voltage frequency scaling, energy optimization, high performance computing, memory latency}
-} 
-
-
-
-@article{27,
- author = {Dhiman, Gaurav and Rosing, Tajana \v{S}imunic},
- title = {System-level Power Management Using Online Learning},
- journal = {Trans. Comp.-Aided Des. Integ. Cir. Sys.},
- issue_date = {May 2009},
- volume = {28},
- number = {5},
- month = may,
- year = {2009},
- issn = {0278-0070},
- pages = {676--689},
- numpages = {14},
- doi = {10.1109/TCAD.2009.2015740},
- acmid = {1656937},
- publisher = {IEEE Press},
- address = {Piscataway, NJ, USA},
- keywords = {Dynamic voltage frequency scaling, dynamic voltage frequency scaling, energy-performance trade-off, online learning, power management}
-} 
-
-@INPROCEEDINGS{28,
-author={Yongpan Liu and Huazhong Yang and Dick, R.P. and Hui Wang and Li Shang},
-booktitle={Quality Electronic Design, 2007. ISQED '07. 8th International Symposium on},
-title={Thermal vs Energy Optimization for {DVFS}-Enabled Processors in Embedded Systems},
-year={2007},
-month={March},
-pages={204-209},
-keywords={circuit optimisation;embedded systems;integrated circuit design;low-power electronics;microprocessor chips;nonlinear programming;thermal management (packaging);DVFS-enabled processors;application peak temperature;cooling costs;dynamic voltage voltage;embedded systems;energy consumption;frequency scaling;nonlinear programming;power optimization;run-time thermal emergencies;system thermal profile;thermal optimization;thermal-constrained energy optimization;Cooling;Cost function;Design optimization;Dynamic voltage scaling;Embedded system;Energy consumption;Frequency;Power system planning;Runtime;Temperature},
-doi={10.1109/ISQED.2007.158}
-}
-
-
-
-@INPROCEEDINGS{30,
-author={Lizhe Wang and von Laszewski, G. and Dayal, J. and Fugang Wang},
-booktitle={Cluster, Cloud and Grid Computing (CCGrid), 2010 10th IEEE/ACM International Conference on},
-title={Towards Energy Aware Scheduling for Precedence Constrained Parallel Tasks in a Cluster with {DVFS}},
-year={2010},
-month={May},
-pages={368-377},
-keywords={environmental factors;parallel processing;power aware computing;scheduling;workstation clusters;dynamic voltage frequency scaling technique;energy aware scheduling heuristics;green service level agreement;high end computing;precedence constrained parallel tasks;Computational modeling;Concurrent computing;Costs;Dynamic voltage scaling;Energy consumption;Frequency;Grid computing;High performance computing;Power engineering computing;Processor scheduling;Cluster Computing;Green Computing;Task Scheduling},
-doi={10.1109/CCGRID.2010.19}
-}
-
-@article{31,
-author = {Yu-Liang Chou and Shaoshan Liu and Eui-Young Chung and Jean-Luc Gaudiot},
-title = {An Energy and Performance Efficient {DVFS} Scheme for Irregular Parallel Divide-and-Conquer Algorithms on the {Intel SCC}},
-journal ={IEEE Computer Architecture Letters},
-volume = {99},
-number = {RapidPosts},
-issn = {1556-6056},
-year = {2013},
-pages = {1},
-doi = {http://doi.ieeecomputersociety.org/10.1109/L-CA.2013.1},
-publisher = {IEEE Computer Society},
-address = {Los Alamitos, CA, USA}
-}
-
-@article{32,
-title = "Energy-aware simulation with \{DVFS\} ",
-journal = "Simulation Modelling Practice and Theory ",
-volume = "39",
-number = "0",
-pages = "76 - 91",
-year = "2013",
-note = "S.I.Energy efficiency in grids and clouds ",
-issn = "1569-190X",
-doi = "http://dx.doi.org/10.1016/j.simpat.2013.04.007",
-author = {Tom Guérout and Thierry Monteil and Georges Da Costa and Rodrigo Neves Calheiros and Rajkumar Buyya and Mihai Alexandru}
-
-}
-
-@INPROCEEDINGS{33,
-author={Kappiah, N. and Freeh, Vincent W. and Lowenthal, D.K.},
-booktitle={Supercomputing, 2005. Proceedings of the ACM/IEEE SC 2005 Conference},
-title={Just In Time Dynamic Voltage Scaling: Exploiting Inter-Node Slack to Save Energy in {MPI} Programs},
-year={2005},
-month={Nov},
-pages={33-33},
-keywords={Computer science;Dynamic voltage scaling;Energy consumption;Energy efficiency;Frequency;Gears;Jitter;Microprocessors;Performance loss;Permission},
-doi={10.1109/SC.2005.39}
-}
-
-
-
-@article{35,
-title = "Adaptive energy-efficient scheduling algorithm for parallel tasks on homogeneous clusters ",
-journal = "Journal of Network and Computer Applications ",
-volume = "",
-number = "0",
-pages = " - ",
-year = "2013",
-note = "",
-issn = "1084-8045",
-doi = "http://dx.doi.org/10.1016/j.jnca.2013.10.009",
-author = {Wei Liu and Wei Du and Jing Chen and Wei Wang and GuoSun Zeng}
-
-}
-
-
-
-
-
-@inproceedings{38,
- author = {Cochran, Ryan and Hankendi, Can and Coskun, Ayse K. and Reda, Sherief},
- title = {Pack \& Cap: Adaptive {DVFS} and Thread Packing Under Power Caps},
- booktitle = {Proceedings of the 44th Annual IEEE/ACM International Symposium on Microarchitecture},
- series = {MICRO-44},
- year = {2011},
- isbn = {978-1-4503-1053-6},
- location = {Porto Alegre, Brazil},
- pages = {175--185},
- numpages = {11},
- doi = {10.1145/2155620.2155641},
- acmid = {2155641},
- publisher = {ACM},
- address = {NY, USA}
-} 
-
-
-
-@inproceedings{40,
- author = {Azevedo, A. and Issenin, I. and Cornea, R. and Gupta, R. and Dutt, N. and Veidenbaum, A. and Nicolau, A.},
- title = {Profile-Based Dynamic Voltage Scheduling Using Program Checkpoints},
- booktitle = {Proceedings of the Conference on Design, Automation and Test in Europe},
- series = {DATE '02},
- year = {2002},
- isbn = {0-7695-1471-5},
- pages = {168-175},
- acmid = {874373},
- publisher = {IEEE Computer Society},
- address = {Washington, DC, USA}
-} 
-
-@inproceedings{41,
- author = {Miftakhutdinov, Rustam and Ebrahimi, Eiman and Patt, Yale N.},
- title = {Predicting Performance Impact of {DVFS} for Realistic Memory Systems},
- booktitle = {Proceedings of the 2012 45th Annual IEEE/ACM International Symposium on Microarchitecture},
- series = {MICRO-45},
- year = {2012},
- isbn = {978-0-7695-4924-8},
- location = {Vancouver, B.C., CANADA},
- pages = {155--165},
- numpages = {11},
- doi = {10.1109/MICRO.2012.23},
- acmid = {2457493},
- publisher = {IEEE Computer Society},
- address = {Washington, DC, USA}
-} 
-
-@ARTICLE{42,
-author={Dhiman, G. and Rosing, T.S.},
-journal={Computer-Aided Design of Integrated Circuits and Systems, IEEE Transactions on},
-title={System-Level Power Management Using Online Learning},
-year={2009},
-month={May},
-volume={28},
-number={5},
-pages={676-689},
-keywords={power aware computing;DPM policies;Intel PXA27x core;device leakage characteristics;dynamic power management;dynamic voltage-frequency scaling problems;hard disk drive;online learning;system-level power management;workload characterization;Dynamic voltage frequency scaling;energy-performance trade-off;online learning;power management},
-doi={10.1109/TCAD.2009.2015740},
-ISSN={0278-0070}
-}
-
-@MISC{43,
-  title =        {{TOP500 Supercomputers Sites.} [online], http://www.top500.org },
-}
-
-@MISC{SimGrid.org,
-  title =        {{SimGrid: Versatile Simulation of Distributed Systems.} 
-      [online], http://simgrid.org},
-}
-
-
-
-
-
-
 @book{ref1,
  author = {El-Rewini, Hesham and Abd-El-Barr, Mostafa},
  title = {Advanced Computer Architecture and Parallel Processing (Wiley Series on Parallel and Distributed Computing)},
 @book{ref1,
  author = {El-Rewini, Hesham and Abd-El-Barr, Mostafa},
  title = {Advanced Computer Architecture and Parallel Processing (Wiley Series on Parallel and Distributed Computing)},
@@ -1236,4 +820,255 @@ year={2014}
  numpages = {8},
  publisher = {IEEE Computer Society Press},
  address = {Los Alamitos, CA, USA}
  numpages = {8},
  publisher = {IEEE Computer Society Press},
  address = {Los Alamitos, CA, USA}
-} 
\ No newline at end of file
+} 
+
+
+@article{ref79,
+year={2014},
+issn={0920-8542},
+journal={The Journal of Supercomputing},
+volume={70},
+number={3},
+title={Energy measurement, modeling, and prediction for processors with frequency scaling},
+publisher={Springer US},
+author={Rauber, Thomas and Rünger, Gudula and Schwind, Michael and Xu, Haibin and Melzner, Simon},
+pages={1451-1476}
+}
+
+
+@article{ref80,
+year={2015},
+journal={Human-centric Computing and Information Sciences},
+eid={28},
+volume={5},
+number={1},
+title={An energy-delay product study on chip multi-processors for variable stage pipelining},
+publisher={Springer Berlin Heidelberg},
+author={Saravanan, Vijayalakshmi and Anpalagan, Alagan and Woungang, Isaac}
+}
+
+
+@INPROCEEDINGS{ref81,
+author={Jian Chen and John, L.K.},
+booktitle={Workload Characterization, 2008. IISWC 2008. IEEE International Symposium on},
+title={Energy-aware application scheduling on a heterogeneous multi-core system},
+year={2008},
+pages={5-13},
+month={Sept}
+}
+
+@incollection{ref82,
+year={2006},
+isbn={978-3-540-68039-0},
+booktitle={High Performance Computing - HiPC 2006},
+volume={4297},
+editor={Robert, Yves and Parashar, Manish and Badrinath, Ramamurthy and Prasanna, ViktorK.},
+title={Exploring Energy-Performance Trade-Offs for Heterogeneous Interconnect Clustered VLIW Processors},
+publisher={Springer Berlin Heidelberg},
+author={Nagpal, Rahul and Srikant, Y.N.},
+pages={497-508}
+}
+
+@inproceedings{ref83,
+  TITLE = {{Energy aware clouds scheduling using anti-load balancing algorithm : EACAB}},
+  AUTHOR = {Thiam, Cheikhou and Da Costa, Georges and Pierson, Jean-Marc},
+  BOOKTITLE = {{3rd International Conference on Smart Grids and Green IT Systems (SMARTGREENS 2014)}},
+  ADDRESS = {Barcelona, Spain},
+  PAGES = {pp. 82-89},
+  YEAR = {2014},
+  MONTH = {April}
+  }
+
+
+@INPROCEEDINGS{ref84,
+author={Da Costa, G. and Gelas, J.-P. and Georgiou, Y. and Lefevre, L. and Orgerie, A.-C. and Pierson, J. and Richard, O. and Sharma, K.},
+booktitle={Parallel Distributed Processing, 2009. IPDPS 2009. IEEE International Symposium on},
+title={The GREEN-NET framework: Energy efficiency in large scale distributed systems},
+year={2009},
+pages={1-8},
+month={May}
+}
+
+@INPROCEEDINGS{ref85,
+author={Orgerie, A.-C. and Lefevre, L. and Gelas, J.-P.},
+booktitle={Parallel and Distributed Systems, 2008. ICPADS '08. 14th IEEE International Conference on},
+title={Save Watts in Your Grid: Green Strategies for Energy-Aware Framework in Large Scale Distributed Systems},
+year={2008},
+pages={171-178},
+ISSN={1521-9097},
+month={Dec}
+}
+
+
+@inproceedings{ref86,
+ author = {Da Costa, Georges and de Assun\c{c}\~{a}o, Marcos Dias and Gelas, Jean-Patrick and Georgiou, Yiannis and Lef\`{e}vre, Laurent and Orgerie, Anne-C{\'e}cile and Pierson, Jean-Marc and Richard, Olivier and Sayah, Amal},
+ title = {Multi-facet Approach to Reduce Energy Consumption in Clouds and Grids: The GREEN-NET Framework},
+ booktitle = {Proceedings of the 1st International Conference on Energy-Efficient Computing and Networking},
+ year = {2010},
+ isbn = {978-1-4503-0042-1},
+ location = {Passau, Germany},
+ pages = {95--104},
+ numpages = {10},
+ publisher = {ACM},
+ address = {New York, NY, USA}
+} 
+@INPROCEEDINGS{ref87,
+author={Cocana-Fernandez, A. and Sanchez, L. and Ranilla, J.},
+booktitle={Fuzzy Systems (FUZZ-IEEE), 2015 IEEE International Conference on},
+title={A software tool to efficiently manage the energy consumption of HPC clusters},
+year={2015},
+pages={1-8},
+month={Aug}
+}
+
+
+
+
+
+@article{ref88,
+ author = {Beloglazov, Anton and Buyya, Rajkumar},
+ title = {Optimal Online Deterministic Algorithms and Adaptive Heuristics for Energy and Performance Efficient  Dynamic Consolidation of Virtual Machines in Cloud Data Centers},
+ journal = {Concurrency and Computation:Practice and Experience},
+ issue_date = {September 2012},
+ volume = {24},
+ number = {13},
+ month = sep,
+ year = {2012},
+ issn = {1532-0626},
+ pages = {1397--1420},
+ numpages = {24},
+ publisher = {John Wiley and Sons Ltd.},
+ address = {Chichester, UK}
+} 
+
+@ARTICLE{ref89,
+author={Ziliang Zong and Manzanares, A. and Xiaojun Ruan and Xiao Qin},
+journal={Computers, IEEE Transactions on},
+title={EAD and PEBD: Two Energy-Aware Duplication Scheduling Algorithms for Parallel Tasks on Homogeneous Clusters},
+year={2011},
+volume={60},
+number={3},
+pages={360-374},
+month={March}
+}
+
+
+@INPROCEEDINGS{ref90,
+author={Pietri, I. and Sakellariou, R.},
+booktitle={Parallel Processing Workshops (ICCPW), 2014 43rd International Conference on},
+title={Energy-Aware Workflow Scheduling Using Frequency Scaling},
+year={2014},
+pages={104-113},
+month={Sept}
+}
+
+@article{ref91,
+  author    = {Amina Guermouche and
+               Nicolas Triquenaux and
+               Beno{\^{\i}}t Pradelle and
+               William Jalby},
+  title     = {Minimizing Energy Consumption of {MPI} Programs in Realistic Environment},
+  journal   = {Computing Research Repository },
+  year      = {2015}
+}
+
+@INPROCEEDINGS{ref92,
+author={Hsu, C.-H. and Wu-chun Feng},
+booktitle={Supercomputing, 2005. Proceedings of the ACM/IEEE SC 2005 Conference},
+title={A Power-Aware Run-Time System for High-Performance Computing},
+year={2005},
+pages={1-9},
+month={Nov}
+}
+
+
+@article{ref93,
+  author    = {Yifan Zhu and
+               Frank Mueller},
+  title     = {Exploiting synchronous and asynchronous {DVS} for feedback {EDF} scheduling
+               on an embedded platform},
+  journal   = {ACM Transactions on Embedded Computing},
+  volume    = {7},
+  number    = {1},
+  year      = {2007}
+}
+
+
+
+@article{ref94,
+year={2013},
+issn={0920-8542},
+journal={The Journal of Supercomputing},
+volume={63},
+number={3},
+title={Designing energy efficient communication runtime systems: a view from PGAS models},
+publisher={Springer US},
+keywords={Communication runtime system; DVFS; Energy efficiency; InfiniBand},
+author={Vishnu, Abhinav and Song, Shuaiwen and Marquez, Andres and Barker, Kevin and Kerbyson, Darren and Cameron, Kirk and Balaji, Pavan},
+pages={691-709}
+}
+
+@phdthesis {ref95,
+    author    = "Hartwig Anzt",
+    title     = "Asynchronous and Multiprecision Linear Solvers",
+    school    = "Karlsruher Institut für Technologie",
+    address  = " Bade-Wurtemberg,Germany",
+    year      = "2012",
+    pages    = {183}
+   
+}
+
+@article{ref96,
+year={2010},
+journal={The Journal of Convergence},
+volume={1},
+number={1},
+title={An Energy Conservation DVFS Algorithm for the Android Operating System},
+publisher={FTAR},
+author={Wen-Yew Liang, Po-Ting Lai, Che Wun Chiou},
+pages={93-100}
+}
+
+@article{ref97,
+  title={Multi-splittings of matrices and parallel solution of linear systems},
+  author={O'Leary, Dianne P. and White, Robert E.},
+  journal={SIAM Journal on Algebraic Discrete Methods},
+  volume={6},
+  number={4},
+  pages={630--640},
+  year={1985},
+  publisher={SIAM}
+}
+
+
+@book{ref98,
+inhal = {no},
+domainehal = {INFO:INFO_DC, INFO:INFO_CR, INFO:INFO_MO},
+equipe = {and},
+classement = {OS},
+author = {Bahi, Jacques and Contassot-Vivier, Sylvain and Couturier, Rapha\"el},
+title = {Parallel Iterative Algorithms: from sequential to grid computing},
+publisher = {Chapman and Hall/CRC},
+series = {Numerical Analysis and Scientific Computating},
+volume = 1,
+year = {2007}
+}
+
+@INPROCEEDINGS{ref99,
+author={Ramamonjisoa, C.E. and Ziane Khodja, L. and Laiymani, D. and Giersch, A. and Couturier, R.},
+booktitle={High Performance Computing and Communications, 2014 IEEE 6th Intl Symp on Cyberspace Safety and Security, 2014 IEEE 11th Intl Conf on Embedded Software and Syst (HPCC,CSS,ICESS), 2014 IEEE Intl Conf on},
+title={Simulation of Asynchronous Iterative Algorithms Using SimGrid},
+year={2014},
+month={Aug},
+pages={890-895}
+}
+
+@INPROCEEDINGS{ref100,
+author={Baldassin, A. and de Carvalho, J.P.L. and Garcia, L.A.G. and Azevedo, R.},
+booktitle={Computer Architecture and High Performance Computing (SBAC-PAD), 2012 IEEE 24th International Symposium on},
+title={Energy-Performance Tradeoffs in Software Transactional Memory},
+year={2012},
+pages={147-154},
+ISSN={1550-6533},
+month={Oct}
+}