Commit 190924a53b2b870cf0480ee3f7ca865eaab512df

Authored by Arthur HUGEAT
1 parent 7fcf1da2aa
Exists in master

ajout des choix de coeff.

Showing 3 changed files with 1584 additions and 3 deletions Inline Diff

ifcs2018_processing.tex
\documentclass[a4paper,conference]{IEEEtran/IEEEtran} 1 1 \documentclass[a4paper,conference]{IEEEtran/IEEEtran}
\usepackage{graphicx,color,hyperref} 2 2 \usepackage{graphicx,color,hyperref}
\usepackage{amsfonts} 3 3 \usepackage{amsfonts}
\usepackage{url} 4 4 \usepackage{url}
\usepackage[normalem]{ulem} 5 5 \usepackage[normalem]{ulem}
\graphicspath{{/home/jmfriedt/gpr/170324_avalanche/}{/home/jmfriedt/gpr/1705_homemade/}} 6 6 \graphicspath{{/home/jmfriedt/gpr/170324_avalanche/}{/home/jmfriedt/gpr/1705_homemade/}}
% correct bad hyphenation here 7 7 % correct bad hyphenation here
\hyphenation{op-tical net-works semi-conduc-tor} 8 8 \hyphenation{op-tical net-works semi-conduc-tor}
\textheight=26cm 9 9 \textheight=26cm
\setlength{\footskip}{30pt} 10 10 \setlength{\footskip}{30pt}
\pagenumbering{gobble} 11 11 \pagenumbering{gobble}
\begin{document} 12 12 \begin{document}
\title{Filter optimization for real time digital processing of radiofrequency signals: application 13 13 \title{Filter optimization for real time digital processing of radiofrequency signals: application
to oscillator metrology} 14 14 to oscillator metrology}
15 15
\author{\IEEEauthorblockN{A. Hugeat\IEEEauthorrefmark{1}\IEEEauthorrefmark{2}, J. Bernard\IEEEauthorrefmark{2}, 16 16 \author{\IEEEauthorblockN{A. Hugeat\IEEEauthorrefmark{1}\IEEEauthorrefmark{2}, J. Bernard\IEEEauthorrefmark{2},
G. Goavec-M\'erou\IEEEauthorrefmark{1}, 17 17 G. Goavec-M\'erou\IEEEauthorrefmark{1},
P.-Y. Bourgeois\IEEEauthorrefmark{1}, J.-M Friedt\IEEEauthorrefmark{1}} 18 18 P.-Y. Bourgeois\IEEEauthorrefmark{1}, J.-M. Friedt\IEEEauthorrefmark{1}}
\IEEEauthorblockA{\IEEEauthorrefmark{1}FEMTO-ST, Time \& Frequency department, Besan\c con, France } 19 19 \IEEEauthorblockA{\IEEEauthorrefmark{1}FEMTO-ST, Time \& Frequency department, Besan\c con, France }
\IEEEauthorblockA{\IEEEauthorrefmark{2}FEMTO-ST, Computer Science department DISC, Besan\c con, France \\ 20 20 \IEEEauthorblockA{\IEEEauthorrefmark{2}FEMTO-ST, Computer Science department DISC, Besan\c con, France \\
Email: \{pyb2,jmfriedt\}@femto-st.fr} 21 21 Email: \{pyb2,jmfriedt\}@femto-st.fr}
} 22 22 }
\maketitle 23 23 \maketitle
\thispagestyle{plain} 24 24 \thispagestyle{plain}
\pagestyle{plain} 25 25 \pagestyle{plain}
26 26
\begin{abstract} 27 27 \begin{abstract}
Software Defined Radio (SDR) provides stability, flexibility and reconfigurability to 28 28 Software Defined Radio (SDR) provides stability, flexibility and reconfigurability to
radiofrequency signal processing. Applied to oscillator characterization in the context 29 29 radiofrequency signal processing. Applied to oscillator characterization in the context
of ultrastable clocks, stringent filtering requirements are defined by spurious signal or 30 30 of ultrastable clocks, stringent filtering requirements are defined by spurious signal or
noise rejection needs. Since real time radiofrequency processing must be performed in a 31 31 noise rejection needs. Since real time radiofrequency processing must be performed in a
Field Programmable Array to meet timing constraints, we investigate optimization strategies 32 32 Field Programmable Array to meet timing constraints, we investigate optimization strategies
to design filters meeting rejection characteristics while limiting the hardware resources 33 33 to design filters meeting rejection characteristics while limiting the hardware resources
required and keeping timing constraints within the targeted measurement bandwidths. 34 34 required and keeping timing constraints within the targeted measurement bandwidths.
\end{abstract} 35 35 \end{abstract}
36 36
\begin{IEEEkeywords} 37 37 \begin{IEEEkeywords}
Software Defined Radio, Mixed-Integer Linear Programming, Finite Impulse Response filter 38 38 Software Defined Radio, Mixed-Integer Linear Programming, Finite Impulse Response filter
\end{IEEEkeywords} 39 39 \end{IEEEkeywords}
40 40
\section{Digital signal processing of ultrastable clock signals} 41 41 \section{Digital signal processing of ultrastable clock signals}
42 42
Analog oscillator phase noise characteristics are classically performed by downconverting 43 43 Analog oscillator phase noise characteristics are classically performed by downconverting
the radiofrequency signal using a saturated mixer to bring the radiofrequency signal to baseband, 44 44 the radiofrequency signal using a saturated mixer to bring the radiofrequency signal to baseband,
followed by a Fourier analysis of the beat signal to analyze phase fluctuations close to carrier. In 45 45 followed by a Fourier analysis of the beat signal to analyze phase fluctuations close to carrier. In
a fully digital approach, the radiofrequency signal is digitized and numerically downconverted by 46 46 a fully digital approach, the radiofrequency signal is digitized and numerically downconverted by
multiplying the samples with a local numerically controlled oscillator (Fig. \ref{schema}) \cite{rsi}. 47 47 multiplying the samples with a local numerically controlled oscillator (Fig. \ref{schema}) \cite{rsi}.
48 48
\begin{figure}[h!tb] 49 49 \begin{figure}[h!tb]
\begin{center} 50 50 \begin{center}
\includegraphics[width=.8\linewidth]{images/schema} 51 51 \includegraphics[width=.8\linewidth]{images/schema}
\end{center} 52 52 \end{center}
\caption{Fully digital oscillator phase noise characterization: the Device Under Test 53 53 \caption{Fully digital oscillator phase noise characterization: the Device Under Test
(DUT) signal is sampled by the radiofrequency grade Analog to Digital Converter (ADC) and 54 54 (DUT) signal is sampled by the radiofrequency grade Analog to Digital Converter (ADC) and
downconverted by mixing with a Numerically Controlled Oscillator (NCO). Unwanted signals 55 55 downconverted by mixing with a Numerically Controlled Oscillator (NCO). Unwanted signals
and noise aliases are rejected by a Low Pass Filter (LPF) implemented as a cascade of Finite 56 56 and noise aliases are rejected by a Low Pass Filter (LPF) implemented as a cascade of Finite
Impulse Response (FIR) filters. The signal is then decimated before a Fourier analysis displays 57 57 Impulse Response (FIR) filters. The signal is then decimated before a Fourier analysis displays
the spectral characteristics of the phase fluctuations.} 58 58 the spectral characteristics of the phase fluctuations.}
\label{schema} 59 59 \label{schema}
\end{figure} 60 60 \end{figure}
61 61
As with the analog mixer, 62 62 As with the analog mixer,
the non-linear behavior of the downconverter introduces noise or spurious signal aliasing as 63 63 the non-linear behavior of the downconverter introduces noise or spurious signal aliasing as
well as the generation of the frequency sum signal in addition to the frequency difference. 64 64 well as the generation of the frequency sum signal in addition to the frequency difference.
These unwanted spectral characteristics must be rejected before decimating the data stream 65 65 These unwanted spectral characteristics must be rejected before decimating the data stream
for the phase noise spectral characterization. The characteristics introduced between the downconverter 66 66 for the phase noise spectral characterization. The characteristics introduced between the downconverter
and the decimation processing blocks are core characteristics of an oscillator characterization 67 67 and the decimation processing blocks are core characteristics of an oscillator characterization
system, and must reject out-of-band signals below the targeted phase noise -- typically in the 68 68 system, and must reject out-of-band signals below the targeted phase noise -- typically in the
sub -170~dBc/Hz for ultrastable oscillator we aim at characterizing. The filter blocks will 69 69 sub -170~dBc/Hz for ultrastable oscillator we aim at characterizing. The filter blocks will
use most resources of the Field Programmable Gate Array (FPGA) used to process the radiofrequency 70 70 use most resources of the Field Programmable Gate Array (FPGA) used to process the radiofrequency
datastream: optimizing the performance of the filter while reducing the needed resources is 71 71 datastream: optimizing the performance of the filter while reducing the needed resources is
hence tackled in a systematic approach using optimization techniques. Most significantly, we 72 72 hence tackled in a systematic approach using optimization techniques. Most significantly, we
tackle the issue by attempting to cascade multiple Finite Impulse Response (FIR) filters with 73 73 tackle the issue by attempting to cascade multiple Finite Impulse Response (FIR) filters with
tunable number of coefficients and tunable number of bits representing the coefficients and the 74 74 tunable number of coefficients and tunable number of bits representing the coefficients and the
data being processed. 75 75 data being processed.
76 76
\section{Finite impulse response filter} 77 77 \section{Finite impulse response filter}
78 78
We select FIR filter for their unconditional stability and ease of design. A FIR filter is defined 79 79 We select FIR filter for their unconditional stability and ease of design. A FIR filter is defined
by a set of weights $b_k$ applied to the inputs $x_k$ through a convolution to generate the outputs $y_k$ 80 80 by a set of weights $b_k$ applied to the inputs $x_k$ through a convolution to generate the outputs $y_k$
$$y_n=\sum_{k=0}^N b_k x_{n-k}$$ 81 81 $$y_n=\sum_{k=0}^N b_k x_{n-k}$$
82 82
As opposed to an implementation on a general purpose processor in which word size is defined by the 83 83 As opposed to an implementation on a general purpose processor in which word size is defined by the
processor architecture, implementing such a filter on an FPGA offer more degrees of freedom since 84 84 processor architecture, implementing such a filter on an FPGA offer more degrees of freedom since
not only the coefficient values and number of taps must be defined, but also the number of bits defining 85 85 not only the coefficient values and number of taps must be defined, but also the number of bits defining
the coefficients and the sample size. 86 86 the coefficients and the sample size.
87
88 Ideally the coefficient are expressed as floating point value but this notation isn't a efficient way to
89 work with FPGA. Instead we prefer convert this floating point values into integer values. However this
90 conversion result in some precision loss. Actually as show figure \ref{float_vs_int}, we see that we aren't
91 need too coefficients or too sample size. If we have lot of coefficients but a small sample size,
92 the first and last are equal to zero. But if we have too sample size for few coefficients that not improve the quality.
93
94 \begin{figure}[h!tb]
95 \includegraphics[width=\linewidth]{images/float-vs-integer.pdf}
96 \caption{Illistration of coefficients choice impact}
97 \label{float_vs_int}
98 \end{figure}
87 99
\section{Filter optimization} 88 100 \section{Filter optimization}
89 101
A basic approach for implementing the FIR filter is to compute the transfer function of 90 102 A basic approach for implementing the FIR filter is to compute the transfer function of
a monolithic filter: this single filter defines all coefficients with the same resolution 91 103 a monolithic filter: this single filter defines all coefficients with the same resolution
(number of bits) and processes data represented with their own resolution. Meeting the 92 104 (number of bits) and processes data represented with their own resolution. Meeting the
filter shape requires a large number of coefficients, limited by resources of the FPGA since 93 105 filter shape requires a large number of coefficients, limited by resources of the FPGA since
this filter must process data stream at the radiofrequency sampling rate after the mixer. 94 106 this filter must process data stream at the radiofrequency sampling rate after the mixer.
95 107
An optimization problem \cite{leung2004handbook} aims at improving one or many 96 108 An optimization problem \cite{leung2004handbook} aims at improving one or many
performance criteria within a constrained resource environment. Amongst the tools 97 109 performance criteria within a constrained resource environment. Amongst the tools
developed to meet this aim, Mixed-Integer Linear Programming (MILP) provides the framework to 98 110 developed to meet this aim, Mixed-Integer Linear Programming (MILP) provides the framework to
provide a formal definition of the stated problem and search for an optimal use of available 99 111 provide a formal definition of the stated problem and search for an optimal use of available
resources \cite{yu2007design, kodek1980design}. 100 112 resources \cite{yu2007design, kodek1980design}.
101 113
The degrees of freedom when addressing the problem of replacing the single monolithic 102 114 The degrees of freedom when addressing the problem of replacing the single monolithic
FIR with a cascade of optimized filters are the number of coefficients $N_i$ of each filter $i$, 103 115 FIR with a cascade of optimized filters are the number of coefficients $N_i$ of each filter $i$,
the number of bits $c_i$ representing the coefficients and the number of bits $d_i$ representing 104 116 the number of bits $c_i$ representing the coefficients and the number of bits $d_i$ representing
the data fed to the filter. Because each FIR in the chain is fed the output of the previous stage, 105 117 the data fed to the filter. Because each FIR in the chain is fed the output of the previous stage,
the optimization of the complete processing chain within a constrained resource environment is not 106 118 the optimization of the complete processing chain within a constrained resource environment is not
trivial. The resource occupation of a FIR filter is considered as $c_i+d_i+\log_2(N_i)$ which is 107 119 trivial. The resource occupation of a FIR filter is considered as $c_i+d_i+\log_2(N_i)$ which is
the number of bits needed in a worst case condition to represent the output of the FIR. 108 120 the number of bits needed in a worst case condition to represent the output of the FIR.
109 121
110 122
\begin{figure}[h!tb] 111 123 \begin{figure}[h!tb]
\includegraphics[width=\linewidth]{images/noise-rejection.pdf} 112 124 \includegraphics[width=\linewidth]{images/noise-rejection.pdf}
\caption{Rejection as a function of number of coefficients and number of bits} 113 125 \caption{Rejection as a function of number of coefficients and number of bits}
\label{noise-rejection} 114 126 \label{noise-rejection}
\end{figure} 115 127 \end{figure}
116 128
The objective function maximizes the noise rejection while keeping resource occupation below 117 129 The objective function maximizes the noise rejection while keeping resource occupation below
a user-defined threshold. The MILP solver is allowed to choose the number of successive 118 130 a user-defined threshold. The MILP solver is allowed to choose the number of successive
filters, within an upper bound. The last problem is to model the noise rejection. Since filter 119 131 filters, within an upper bound. The last problem is to model the noise rejection. Since filter
noise rejection capability is not modeled with linear equation, a look-up-table is generated 120 132 noise rejection capability is not modeled with linear equation, a look-up-table is generated
for multiple filter configurations in which the $c_i$, $d_i$ and $N_i$ parameters are varied: for each 121 133 for multiple filter configurations in which the $c_i$, $d_i$ and $N_i$ parameters are varied: for each
one of these conditions, the low-pass filter rejection defined as the mean power between 122 134 one of these conditions, the low-pass filter rejection defined as the mean power between
half the Nyquist frequency and the Nyquist frequency is stored as computed by the frequency response 123 135 half the Nyquist frequency and the Nyquist frequency is stored as computed by the frequency response
of the digital filter (Fig. \ref{noise-rejection}). 124 136 of the digital filter (Fig. \ref{noise-rejection}).
125 137
Linear program formalism for solving the problem is well documented: an objective function is 126 138 Linear program formalism for solving the problem is well documented: an objective function is
defined which is linearly dependent on the parameters to be optimized. Constraints are expressed 127 139 defined which is linearly dependent on the parameters to be optimized. Constraints are expressed
as linear equation and solved using one of the available solvers, in our case GLPK\cite{glpk}. 128 140 as linear equation and solved using one of the available solvers, in our case GLPK\cite{glpk}.
129 141
The MILP solver provides a solution to the problem by selecting a series of small FIR with 130 142 The MILP solver provides a solution to the problem by selecting a series of small FIR with
increasing number of bits representing data and coefficients as well as an increasing number 131 143 increasing number of bits representing data and coefficients as well as an increasing number
of coefficients, instead of a single monolithic filter. Fig. \ref{compare-fir} exhibits the 132 144 of coefficients, instead of a single monolithic filter. Fig. \ref{compare-fir} exhibits the
performance comparison between one solution and a monolithic FIR when selecting a cutoff 133 145 performance comparison between one solution and a monolithic FIR when selecting a cutoff
frequency of half the Nyquist frequency: a series of 5 FIR and a series of 10 FIR with the 134 146 frequency of half the Nyquist frequency: a series of 5 FIR and a series of 10 FIR with the
same space usage are provided as selected by the MILP solver. The FIR cascade provides improved 135 147 same space usage are provided as selected by the MILP solver. The FIR cascade provides improved
rejection than the monolithic FIR at the expense of a lower cutoff frequency which remains to 136 148 rejection than the monolithic FIR at the expense of a lower cutoff frequency which remains to
be tuned or compensated for. 137 149 be tuned or compensated for.
138 150
\begin{figure}[h!tb] 139 151 \begin{figure}[h!tb]
% \includegraphics[width=\linewidth]{images/compare-fir.pdf} 140 152 % \includegraphics[width=\linewidth]{images/compare-fir.pdf}
\includegraphics[width=\linewidth]{images/fir-mono-vs-fir-series-200dB.pdf} 141 153 \includegraphics[width=\linewidth]{images/fir-mono-vs-fir-series-200dB.pdf}
\caption{Comparison of the rejection capability between a series of FIR and a monolithic FIR 142 154 \caption{Comparison of the rejection capability between a series of FIR and a monolithic FIR
with a cutoff frequency set at half the Nyquist frequency.} 143 155 with a cutoff frequency set at half the Nyquist frequency.}
\label{compare-fir} 144 156 \label{compare-fir}
\end{figure} 145 157 \end{figure}
146 158
The resource occupation when synthesizing such FIR on a Xilinx FPGA is summarized as Tab. \ref{t1}. 147 159 The resource occupation when synthesizing such FIR on a Xilinx FPGA is summarized as Tab. \ref{t1}.
148 160
\begin{table}[h!tb] 149 161 \begin{table}[h!tb]
\caption{Resource occupation on a Xilinx Zynq-7000 series FPGA when synthesizing the FIR cascade 150 162 \caption{Resource occupation on a Xilinx Zynq-7000 series FPGA when synthesizing the FIR cascade
identified as optimal by the MILP solver within a finite resource criterion. The last line refers 151 163 identified as optimal by the MILP solver within a finite resource criterion. The last line refers
to available resources on a Zynq-7010 as found on the Redpitaya board. The rejection is the mean 152 164 to available resources on a Zynq-7010 as found on the Redpitaya board. The rejection is the mean
value from 0.6 to 1 Nyquist frequency.} 153 165 value from 0.6 to 1 Nyquist frequency.}
\begin{center} 154 166 \begin{center}
\begin{tabular}{|c|cccc|}\hline 155 167 \begin{tabular}{|c|cccc|}\hline
FIR & BlockRAM & LookUpTables & DSP & rejection (dB)\\\hline\hline 156 168 FIR & BlockRAM & LookUpTables & DSP & rejection (dB)\\\hline\hline
1 (monolithic) & 1 & 4064 & 40 & -72 \\ 157 169 1 (monolithic) & 1 & 4064 & 40 & -72 \\
5 & 5 & 12332 & 0 & -217 \\ 158 170 5 & 5 & 12332 & 0 & -217 \\
10 & 10 & 12717 & 0 & -251 \\\hline\hline 159 171 10 & 10 & 12717 & 0 & -251 \\\hline\hline
Zynq 7010 & 60 & 17600 & 80 & \\\hline 160 172 Zynq 7010 & 60 & 17600 & 80 & \\\hline
\end{tabular} 161 173 \end{tabular}
\end{center} 162 174 \end{center}
%\vspace{-0.7cm} 163 175 %\vspace{-0.7cm}
\label{t1} 164 176 \label{t1}
\end{table} 165 177 \end{table}
166 178
\section{Filter coefficient selection} 167 179 \section{Filter coefficient selection}
168 180
The coefficients of a single monolithic filter are computed as the impulse response 169 181 The coefficients of a single monolithic filter are computed as the impulse response
of the filter transfer function, and practically approximated by a multitude of methods 170 182 of the filter transfer function, and practically approximated by a multitude of methods
including least square optimization (Matlab's {\tt firls} function), Hamming or Kaiser windowing 171 183 including least square optimization (Matlab's {\tt firls} function), Hamming or Kaiser windowing
(Matlab's {\tt fir1} function). Cascading filters opens a new optimization opportunity by 172 184 (Matlab's {\tt fir1} function). Cascading filters opens a new optimization opportunity by
selecting various coefficient sets depending on the number of coefficients. Fig. \ref{2} 173 185 selecting various coefficient sets depending on the number of coefficients. Fig. \ref{2}
illustrates that for a number of coefficients ranging from 8 to 47, {\tt fir1} provides a better 174 186 illustrates that for a number of coefficients ranging from 8 to 47, {\tt fir1} provides a better
rejection than {\tt firls}: since the linear solver increases the number of coefficients along 175 187 rejection than {\tt firls}: since the linear solver increases the number of coefficients along
the processing chain, the type of selected filter also changes depending on the number of coefficients 176 188 the processing chain, the type of selected filter also changes depending on the number of coefficients
and evolves along the processing chain. 177 189 and evolves along the processing chain.
178 190
\begin{figure}[h!tb] 179 191 \begin{figure}[h!tb]
\includegraphics[width=\linewidth]{images/fir1-vs-firls} 180 192 \includegraphics[width=\linewidth]{images/fir1-vs-firls}
images/float-vs-integer.eps
File was created 1 %!PS-Adobe-2.0 EPSF-2.0
2 %%Title: /tmp/figure.eps
3 %%Creator: gnuplot 5.2 patchlevel 2
4 %%CreationDate: Fri May 18 14:10:42 2018
5 %%DocumentFonts: (atend)
6 %%BoundingBox: 50 50 626 482
7 %%EndComments
8 %%BeginProlog
9 /gnudict 256 dict def
10 gnudict begin
11 %
12 % The following true/false flags may be edited by hand if desired.
13 % The unit line width and grayscale image gamma correction may also be changed.
14 %
15 /Color true def
16 /Blacktext false def
17 /Solid false def
18 /Dashlength 2 def
19 /Landscape false def
20 /Level1 true def
21 /Level3 false def
22 /Rounded false def
23 /ClipToBoundingBox false def
24 /SuppressPDFMark false def
25 /TransparentPatterns false def
26 /gnulinewidth 5.000 def
27 /userlinewidth gnulinewidth def
28 /Gamma 1.0 def
29 /BackgroundColor {1.000 1.000 1.000} def
30 %
31 /vshift -66 def
32 /dl1 {
33 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul
34 Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
35 } def
36 /dl2 {
37 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul
38 Rounded { currentlinewidth 0.75 mul add } if
39 } def
40 /hpt_ 31.5 def
41 /vpt_ 31.5 def
42 /hpt hpt_ def
43 /vpt vpt_ def
44 /doclip {
45 ClipToBoundingBox {
46 newpath 50 50 moveto 626 50 lineto 626 482 lineto 50 482 lineto closepath
47 clip
48 } if
49 } def
50 %
51 % Gnuplot Prolog Version 5.1 (Oct 2015)
52 %
53 %/SuppressPDFMark true def
54 %
55 /M {moveto} bind def
56 /L {lineto} bind def
57 /R {rmoveto} bind def
58 /V {rlineto} bind def
59 /N {newpath moveto} bind def
60 /Z {closepath} bind def
61 /C {setrgbcolor} bind def
62 /f {rlineto fill} bind def
63 /g {setgray} bind def
64 /Gshow {show} def % May be redefined later in the file to support UTF-8
65 /vpt2 vpt 2 mul def
66 /hpt2 hpt 2 mul def
67 /Lshow {currentpoint stroke M 0 vshift R
68 Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def
69 /Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
70 Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def
71 /Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R
72 Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def
73 /UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
74 /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
75 /DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
76 {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
77 /BL {stroke userlinewidth 2 mul setlinewidth
78 Rounded {1 setlinejoin 1 setlinecap} if} def
79 /AL {stroke userlinewidth 2 div setlinewidth
80 Rounded {1 setlinejoin 1 setlinecap} if} def
81 /UL {dup gnulinewidth mul /userlinewidth exch def
82 dup 1 lt {pop 1} if 10 mul /udl exch def} def
83 /PL {stroke userlinewidth setlinewidth
84 Rounded {1 setlinejoin 1 setlinecap} if} def
85 3.8 setmiterlimit
86 % Classic Line colors (version 5.0)
87 /LCw {1 1 1} def
88 /LCb {0 0 0} def
89 /LCa {0 0 0} def
90 /LC0 {1 0 0} def
91 /LC1 {0 1 0} def
92 /LC2 {0 0 1} def
93 /LC3 {1 0 1} def
94 /LC4 {0 1 1} def
95 /LC5 {1 1 0} def
96 /LC6 {0 0 0} def
97 /LC7 {1 0.3 0} def
98 /LC8 {0.5 0.5 0.5} def
99 % Default dash patterns (version 5.0)
100 /LTB {BL [] LCb DL} def
101 /LTw {PL [] 1 setgray} def
102 /LTb {PL [] LCb DL} def
103 /LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
104 /LT0 {PL [] LC0 DL} def
105 /LT1 {PL [2 dl1 3 dl2] LC1 DL} def
106 /LT2 {PL [1 dl1 1.5 dl2] LC2 DL} def
107 /LT3 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC3 DL} def
108 /LT4 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
109 /LT5 {PL [4 dl1 2 dl2] LC5 DL} def
110 /LT6 {PL [1.5 dl1 1.5 dl2 1.5 dl1 1.5 dl2 1.5 dl1 6 dl2] LC6 DL} def
111 /LT7 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC7 DL} def
112 /LT8 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC8 DL} def
113 /SL {[] 0 setdash} def
114 /Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
115 /Dia {stroke [] 0 setdash 2 copy vpt add M
116 hpt neg vpt neg V hpt vpt neg V
117 hpt vpt V hpt neg vpt V closepath stroke
118 Pnt} def
119 /Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
120 currentpoint stroke M
121 hpt neg vpt neg R hpt2 0 V stroke
122 } def
123 /Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
124 0 vpt2 neg V hpt2 0 V 0 vpt2 V
125 hpt2 neg 0 V closepath stroke
126 Pnt} def
127 /Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
128 hpt2 vpt2 neg V currentpoint stroke M
129 hpt2 neg 0 R hpt2 vpt2 V stroke} def
130 /TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
131 hpt neg vpt -1.62 mul V
132 hpt 2 mul 0 V
133 hpt neg vpt 1.62 mul V closepath stroke
134 Pnt} def
135 /Star {2 copy Pls Crs} def
136 /BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
137 0 vpt2 neg V hpt2 0 V 0 vpt2 V
138 hpt2 neg 0 V closepath fill} def
139 /TriUF {stroke [] 0 setdash vpt 1.12 mul add M
140 hpt neg vpt -1.62 mul V
141 hpt 2 mul 0 V
142 hpt neg vpt 1.62 mul V closepath fill} def
143 /TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
144 hpt neg vpt 1.62 mul V
145 hpt 2 mul 0 V
146 hpt neg vpt -1.62 mul V closepath stroke
147 Pnt} def
148 /TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
149 hpt neg vpt 1.62 mul V
150 hpt 2 mul 0 V
151 hpt neg vpt -1.62 mul V closepath fill} def
152 /DiaF {stroke [] 0 setdash vpt add M
153 hpt neg vpt neg V hpt vpt neg V
154 hpt vpt V hpt neg vpt V closepath fill} def
155 /Pent {stroke [] 0 setdash 2 copy gsave
156 translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
157 closepath stroke grestore Pnt} def
158 /PentF {stroke [] 0 setdash gsave
159 translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
160 closepath fill grestore} def
161 /Circle {stroke [] 0 setdash 2 copy
162 hpt 0 360 arc stroke Pnt} def
163 /CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
164 /C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
165 /C1 {BL [] 0 setdash 2 copy moveto
166 2 copy vpt 0 90 arc closepath fill
167 vpt 0 360 arc closepath} bind def
168 /C2 {BL [] 0 setdash 2 copy moveto
169 2 copy vpt 90 180 arc closepath fill
170 vpt 0 360 arc closepath} bind def
171 /C3 {BL [] 0 setdash 2 copy moveto
172 2 copy vpt 0 180 arc closepath fill
173 vpt 0 360 arc closepath} bind def
174 /C4 {BL [] 0 setdash 2 copy moveto
175 2 copy vpt 180 270 arc closepath fill
176 vpt 0 360 arc closepath} bind def
177 /C5 {BL [] 0 setdash 2 copy moveto
178 2 copy vpt 0 90 arc
179 2 copy moveto
180 2 copy vpt 180 270 arc closepath fill
181 vpt 0 360 arc} bind def
182 /C6 {BL [] 0 setdash 2 copy moveto
183 2 copy vpt 90 270 arc closepath fill
184 vpt 0 360 arc closepath} bind def
185 /C7 {BL [] 0 setdash 2 copy moveto
186 2 copy vpt 0 270 arc closepath fill
187 vpt 0 360 arc closepath} bind def
188 /C8 {BL [] 0 setdash 2 copy moveto
189 2 copy vpt 270 360 arc closepath fill
190 vpt 0 360 arc closepath} bind def
191 /C9 {BL [] 0 setdash 2 copy moveto
192 2 copy vpt 270 450 arc closepath fill
193 vpt 0 360 arc closepath} bind def
194 /C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
195 2 copy moveto
196 2 copy vpt 90 180 arc closepath fill
197 vpt 0 360 arc closepath} bind def
198 /C11 {BL [] 0 setdash 2 copy moveto
199 2 copy vpt 0 180 arc closepath fill
200 2 copy moveto
201 2 copy vpt 270 360 arc closepath fill
202 vpt 0 360 arc closepath} bind def
203 /C12 {BL [] 0 setdash 2 copy moveto
204 2 copy vpt 180 360 arc closepath fill
205 vpt 0 360 arc closepath} bind def
206 /C13 {BL [] 0 setdash 2 copy moveto
207 2 copy vpt 0 90 arc closepath fill
208 2 copy moveto
209 2 copy vpt 180 360 arc closepath fill
210 vpt 0 360 arc closepath} bind def
211 /C14 {BL [] 0 setdash 2 copy moveto
212 2 copy vpt 90 360 arc closepath fill
213 vpt 0 360 arc} bind def
214 /C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
215 vpt 0 360 arc closepath} bind def
216 /Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
217 neg 0 rlineto closepath} bind def
218 /Square {dup Rec} bind def
219 /Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
220 /S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
221 /S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
222 /S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
223 /S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
224 /S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
225 /S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
226 exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
227 /S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
228 /S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
229 2 copy vpt Square fill Bsquare} bind def
230 /S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
231 /S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
232 /S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
233 Bsquare} bind def
234 /S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
235 Bsquare} bind def
236 /S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
237 /S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
238 2 copy vpt Square fill Bsquare} bind def
239 /S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
240 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
241 /S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
242 /D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
243 /D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
244 /D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
245 /D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
246 /D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
247 /D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
248 /D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
249 /D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
250 /D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
251 /D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
252 /D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
253 /D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
254 /D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
255 /D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
256 /D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
257 /D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
258 /DiaE {stroke [] 0 setdash vpt add M
259 hpt neg vpt neg V hpt vpt neg V
260 hpt vpt V hpt neg vpt V closepath stroke} def
261 /BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
262 0 vpt2 neg V hpt2 0 V 0 vpt2 V
263 hpt2 neg 0 V closepath stroke} def
264 /TriUE {stroke [] 0 setdash vpt 1.12 mul add M
265 hpt neg vpt -1.62 mul V
266 hpt 2 mul 0 V
267 hpt neg vpt 1.62 mul V closepath stroke} def
268 /TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
269 hpt neg vpt 1.62 mul V
270 hpt 2 mul 0 V
271 hpt neg vpt -1.62 mul V closepath stroke} def
272 /PentE {stroke [] 0 setdash gsave
273 translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
274 closepath stroke grestore} def
275 /CircE {stroke [] 0 setdash
276 hpt 0 360 arc stroke} def
277 /Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
278 /DiaW {stroke [] 0 setdash vpt add M
279 hpt neg vpt neg V hpt vpt neg V
280 hpt vpt V hpt neg vpt V Opaque stroke} def
281 /BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
282 0 vpt2 neg V hpt2 0 V 0 vpt2 V
283 hpt2 neg 0 V Opaque stroke} def
284 /TriUW {stroke [] 0 setdash vpt 1.12 mul add M
285 hpt neg vpt -1.62 mul V
286 hpt 2 mul 0 V
287 hpt neg vpt 1.62 mul V Opaque stroke} def
288 /TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
289 hpt neg vpt 1.62 mul V
290 hpt 2 mul 0 V
291 hpt neg vpt -1.62 mul V Opaque stroke} def
292 /PentW {stroke [] 0 setdash gsave
293 translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
294 Opaque stroke grestore} def
295 /CircW {stroke [] 0 setdash
296 hpt 0 360 arc Opaque stroke} def
297 /BoxFill {gsave Rec 1 setgray fill grestore} def
298 /Density {
299 /Fillden exch def
300 currentrgbcolor
301 /ColB exch def /ColG exch def /ColR exch def
302 /ColR ColR Fillden mul Fillden sub 1 add def
303 /ColG ColG Fillden mul Fillden sub 1 add def
304 /ColB ColB Fillden mul Fillden sub 1 add def
305 ColR ColG ColB setrgbcolor} def
306 /BoxColFill {gsave Rec PolyFill} def
307 /PolyFill {gsave Density fill grestore grestore} def
308 /h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
309 %
310 % PostScript Level 1 Pattern Fill routine for rectangles
311 % Usage: x y w h s a XX PatternFill
312 % x,y = lower left corner of box to be filled
313 % w,h = width and height of box
314 % a = angle in degrees between lines and x-axis
315 % XX = 0/1 for no/yes cross-hatch
316 %
317 /PatternFill {gsave /PFa [ 9 2 roll ] def
318 PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
319 PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
320 TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
321 clip
322 currentlinewidth 0.5 mul setlinewidth
323 /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
324 0 0 M PFa 5 get rotate PFs -2 div dup translate
325 0 1 PFs PFa 4 get div 1 add floor cvi
326 {PFa 4 get mul 0 M 0 PFs V} for
327 0 PFa 6 get ne {
328 0 1 PFs PFa 4 get div 1 add floor cvi
329 {PFa 4 get mul 0 2 1 roll M PFs 0 V} for
330 } if
331 stroke grestore} def
332 %
333 /languagelevel where
334 {pop languagelevel} {1} ifelse
335 dup 2 lt
336 {/InterpretLevel1 true def
337 /InterpretLevel3 false def}
338 {/InterpretLevel1 Level1 def
339 2 gt
340 {/InterpretLevel3 Level3 def}
341 {/InterpretLevel3 false def}
342 ifelse }
343 ifelse
344 %
345 % PostScript level 2 pattern fill definitions
346 %
347 /Level2PatternFill {
348 /Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
349 bind def
350 /KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
351 << Tile8x8
352 /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke}
353 >> matrix makepattern
354 /Pat1 exch def
355 << Tile8x8
356 /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
357 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
358 >> matrix makepattern
359 /Pat2 exch def
360 << Tile8x8
361 /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
362 8 8 L 8 0 L 0 0 L fill}
363 >> matrix makepattern
364 /Pat3 exch def
365 << Tile8x8
366 /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
367 0 12 M 12 0 L stroke}
368 >> matrix makepattern
369 /Pat4 exch def
370 << Tile8x8
371 /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
372 0 -4 M 12 8 L stroke}
373 >> matrix makepattern
374 /Pat5 exch def
375 << Tile8x8
376 /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
377 0 12 M 8 -4 L 4 12 M 10 0 L stroke}
378 >> matrix makepattern
379 /Pat6 exch def
380 << Tile8x8
381 /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
382 0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
383 >> matrix makepattern
384 /Pat7 exch def
385 << Tile8x8
386 /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
387 12 0 M -4 8 L 12 4 M 0 10 L stroke}
388 >> matrix makepattern
389 /Pat8 exch def
390 << Tile8x8
391 /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
392 -4 0 M 12 8 L -4 4 M 8 10 L stroke}
393 >> matrix makepattern
394 /Pat9 exch def
395 /Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
396 /Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
397 /Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
398 /Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
399 /Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
400 /Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
401 /Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
402 } def
403 %
404 %
405 %End of PostScript Level 2 code
406 %
407 /PatternBgnd {
408 TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
409 } def
410 %
411 % Substitute for Level 2 pattern fill codes with
412 % grayscale if Level 2 support is not selected.
413 %
414 /Level1PatternFill {
415 /Pattern1 {0.250 Density} bind def
416 /Pattern2 {0.500 Density} bind def
417 /Pattern3 {0.750 Density} bind def
418 /Pattern4 {0.125 Density} bind def
419 /Pattern5 {0.375 Density} bind def
420 /Pattern6 {0.625 Density} bind def
421 /Pattern7 {0.875 Density} bind def
422 } def
423 %
424 % Now test for support of Level 2 code
425 %
426 Level1 {Level1PatternFill} {Level2PatternFill} ifelse
427 %
428 /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
429 dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
430 currentdict end definefont pop
431 %
432 /Metrics {ExtendTextBox Gswidth} def
433 /Lwidth {currentpoint stroke M 0 vshift R Metrics} def
434 /Rwidth {currentpoint stroke M dup stringwidth pop neg vshift R Metrics} def
435 /Cwidth {currentpoint stroke M dup stringwidth pop -2 div vshift R Metrics} def
436 /GLwidth {currentpoint stroke M 0 vshift R {ExtendTextBox} forall} def
437 /GRwidth {currentpoint stroke M dup Gwidth vshift R {ExtendTextBox} forall} def
438 /GCwidth {currentpoint stroke M dup Gwidth 2 div vshift R {ExtendTextBox} forall} def
439 /GLwidth2 {0 Gwidth AddGlyphWidth} def
440 /GRwidth2 {Gwidth -1 mul 0 AddGlyphWidth} def
441 /GCwidth2 {Gwidth 2 div dup -1 mul AddGlyphWidth} def
442 /AddGlyphWidth { dup TBx2 gt {userdict /TBx2 3 -1 roll put} {pop} ifelse
443 dup TBx1 lt {userdict /TBx1 3 -1 roll put} {pop} ifelse } def
444 /MFshow {
445 { dup 5 get 3 ge
446 { 5 get 3 eq {gsave} {grestore} ifelse }
447 {dup dup 0 get findfont exch 1 get scalefont setfont
448 [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6
449 get exch 4 get {textshow} {Metrics pop 0 R} ifelse }if dup 5 get 0 eq
450 {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5
451 get 1 eq {dup 2 get exch dup 3 get exch 6 get Gswidth pop -2 div
452 dup 0 R} {dup 6 get Gswidth pop -2 div 0 R 6 get
453 textshow 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop
454 pop aload pop M} ifelse }ifelse }ifelse }
455 ifelse }
456 forall} def
457 /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def
458 /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse }
459 {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont
460 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def
461 /MLshow { currentpoint stroke M
462 0 exch R
463 Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
464 /MRshow { currentpoint stroke M
465 exch dup MFwidth neg 3 -1 roll R
466 Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
467 /MCshow { currentpoint stroke M
468 exch dup MFwidth -2 div 3 -1 roll R
469 Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
470 /XYsave { [( ) 1 2 true false 3 ()] } bind def
471 /XYrestore { [( ) 1 2 true false 4 ()] } bind def
472 Level1 SuppressPDFMark or
473 {} {
474 /SDict 10 dict def
475 systemdict /pdfmark known not {
476 userdict /pdfmark systemdict /cleartomark get put
477 } if
478 SDict begin [
479 /Title (/tmp/figure.eps)
480 /Subject (gnuplot plot)
481 /Creator (gnuplot 5.2 patchlevel 2)
482 % /Producer (gnuplot)
483 % /Keywords ()
484 /CreationDate (Fri May 18 14:10:42 2018)
485 /DOCINFO pdfmark
486 end
487 } ifelse
488 %
489 % Support for boxed text - Ethan A Merritt Sep 2016
490 %
491 /InitTextBox { userdict /TBy2 3 -1 roll put userdict /TBx2 3 -1 roll put
492 userdict /TBy1 3 -1 roll put userdict /TBx1 3 -1 roll put
493 /Boxing true def } def
494 /ExtendTextBox { dup type /stringtype eq
495 { Boxing { gsave dup false charpath pathbbox
496 dup TBy2 gt {userdict /TBy2 3 -1 roll put} {pop} ifelse
497 dup TBx2 gt {userdict /TBx2 3 -1 roll put} {pop} ifelse
498 dup TBy1 lt {userdict /TBy1 3 -1 roll put} {pop} ifelse
499 dup TBx1 lt {userdict /TBx1 3 -1 roll put} {pop} ifelse
500 grestore } if }
501 {} ifelse} def
502 /PopTextBox { newpath TBx1 TBxmargin sub TBy1 TBymargin sub M
503 TBx1 TBxmargin sub TBy2 TBymargin add L
504 TBx2 TBxmargin add TBy2 TBymargin add L
505 TBx2 TBxmargin add TBy1 TBymargin sub L closepath } def
506 /DrawTextBox { PopTextBox stroke /Boxing false def} def
507 /FillTextBox { gsave PopTextBox fill grestore /Boxing false def} def
508 0 0 0 0 InitTextBox
509 /TBxmargin 20 def
510 /TBymargin 20 def
511 /Boxing false def
512 /textshow { ExtendTextBox Gshow } def
513 %
514 end
515 %%EndProlog
516 %%Page: 1 1
517 gnudict begin
518 gsave
519 doclip
520 50 50 translate
521 0.050 0.050 scale
522 0 setgray
523 newpath
524 (Helvetica) findfont 200 scalefont setfont
525 BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 0 0 11520.00 8640.00 BoxColFill} if
526 gsave % colour palette begin
527 /maxcolors 64 def
528 /HSV2RGB { exch dup 0.0 eq {pop exch pop dup dup} % achromatic gray
529 { /HSVs exch def /HSVv exch def 6.0 mul dup floor dup 3 1 roll sub
530 /HSVf exch def /HSVi exch cvi def /HSVp HSVv 1.0 HSVs sub mul def
531 /HSVq HSVv 1.0 HSVs HSVf mul sub mul def
532 /HSVt HSVv 1.0 HSVs 1.0 HSVf sub mul sub mul def
533 /HSVi HSVi 6 mod def 0 HSVi eq {HSVv HSVt HSVp}
534 {1 HSVi eq {HSVq HSVv HSVp}{2 HSVi eq {HSVp HSVv HSVt}
535 {3 HSVi eq {HSVp HSVq HSVv}{4 HSVi eq {HSVt HSVp HSVv}
536 {HSVv HSVp HSVq} ifelse} ifelse} ifelse} ifelse} ifelse
537 } ifelse} def
538 /Constrain {
539 dup 0 lt {0 exch pop}{dup 1 gt {1 exch pop} if} ifelse} def
540 /YIQ2RGB {
541 3 copy -1.702 mul exch -1.105 mul add add Constrain 4 1 roll
542 3 copy -0.647 mul exch -0.272 mul add add Constrain 5 1 roll
543 0.621 mul exch -0.956 mul add add Constrain 3 1 roll } def
544 /CMY2RGB { 1 exch sub exch 1 exch sub 3 2 roll 1 exch sub 3 1 roll exch } def
545 /XYZ2RGB { 3 copy -0.9017 mul exch -0.1187 mul add exch 0.0585 mul exch add
546 Constrain 4 1 roll 3 copy -0.0279 mul exch 1.999 mul add exch
547 -0.9844 mul add Constrain 5 1 roll -0.2891 mul exch -0.5338 mul add
548 exch 1.91 mul exch add Constrain 3 1 roll} def
549 /SelectSpace {ColorSpace (HSV) eq {HSV2RGB}{ColorSpace (XYZ) eq {
550 XYZ2RGB}{ColorSpace (CMY) eq {CMY2RGB}{ColorSpace (YIQ) eq {YIQ2RGB}
551 if} ifelse} ifelse} ifelse} def
552 /InterpolatedColor true def
553 /grayindex {/gidx 0 def
554 {GrayA gidx get grayv ge {exit} if /gidx gidx 1 add def} loop} def
555 /dgdx {grayv GrayA gidx get sub GrayA gidx 1 sub get
556 GrayA gidx get sub div} def
557 /redvalue {RedA gidx get RedA gidx 1 sub get
558 RedA gidx get sub dgdxval mul add} def
559 /greenvalue {GreenA gidx get GreenA gidx 1 sub get
560 GreenA gidx get sub dgdxval mul add} def
561 /bluevalue {BlueA gidx get BlueA gidx 1 sub get
562 BlueA gidx get sub dgdxval mul add} def
563 /interpolate {
564 grayindex grayv GrayA gidx get sub abs 1e-5 le
565 {RedA gidx get GreenA gidx get BlueA gidx get}
566 {/dgdxval dgdx def redvalue greenvalue bluevalue} ifelse} def
567 /GrayA [0 .0159 .0317 .0476 .0635 .0794 .0952 .1111 .127 .1429 .1587 .1746
568 .1905 .2063 .2222 .2381 .254 .2698 .2857 .3016 .3175 .3333 .3492 .3651
569 .381 .3968 .4127 .4286 .4444 .4603 .4762 .4921 .5079 .5238 .5397 .5556
570 .5714 .5873 .6032 .619 .6349 .6508 .6667 .6825 .6984 .7143 .7302 .746
571 .7619 .7778 .7937 .8095 .8254 .8413 .8571 .873 .8889 .9048 .9206 .9365
572 .9524 .9683 .9841 1 ] def
573 /RedA [.267 .2727 .2771 .2804 .2824 .2832 .2828 .2812 .2785 .2747 .27 .2644
574 .258 .2511 .2437 .2361 .2283 .2204 .2127 .2051 .1977 .1906 .1838 .1773
575 .171 .1648 .1588 .153 .1471 .1414 .1358 .1306 .1259 .1222 .1199 .1196 .122
576 .1277 .1368 .1496 .166 .1855 .208 .2331 .2605 .29 .3213 .3544 .3889 .4249
577 .4622 .5008 .5403 .5809 .6222 .6641 .7064 .7489 .7913 .8333 .8747 .9153
578 .9548 .9932 ] def
579 /GreenA [.0049 .0258 .0509 .0742 .096 .1169 .1374 .1575 .1773 .197 .2163
580 .2354 .2542 .2726 .2906 .3083 .3256 .3425 .3591 .3754 .3913 .4071 .4226
581 .4379 .4531 .4681 .4831 .4981 .513 .5279 .5428 .5577 .5726 .5875 .6024
582 .6173 .6321 .6469 .6616 .6761 .6905 .7047 .7187 .7324 .7458 .7588 .7715
583 .7837 .7955 .8067 .8173 .8274 .8369 .8457 .8538 .8613 .8682 .8745 .8803
584 .8858 .8909 .896 .901 .9062 ] def
585 /BlueA [.3294 .3534 .3762 .3979 .4183 .4372 .4546 .4704 .4847 .4973 .5083
586 .5177 .5258 .5325 .5381 .5427 .5463 .5493 .5516 .5535 .555 .5561 .557
587 .5576 .558 .5581 .5581 .5577 .557 .5559 .5543 .5522 .5494 .546 .5418 .5368
588 .5308 .5239 .516 .5069 .4968 .4854 .4729 .4591 .4441 .4278 .4103 .3915
589 .3714 .3501 .3275 .3038 .2789 .253 .2262 .1989 .1715 .145 .1213 .1033
590 .0954 .1005 .1179 .1439 ] def
591 /pm3dround {maxcolors 0 gt {dup 1 ge
592 {pop 1} {maxcolors mul floor maxcolors 1 sub div} ifelse} if} def
593 /pm3dGamma 1.0 1.5 Gamma mul div def
594 /ColorSpace (RGB) def
595 Color InterpolatedColor or { % COLOUR vs. GRAY map
596 InterpolatedColor { %% Interpolation vs. RGB-Formula
597 /g {stroke pm3dround /grayv exch def interpolate
598 SelectSpace setrgbcolor} bind def
599 }{
600 /g {stroke pm3dround dup cF7 Constrain exch dup cF5 Constrain exch cF15 Constrain
601 SelectSpace setrgbcolor} bind def
602 } ifelse
603 }{
604 /g {stroke pm3dround pm3dGamma exp setgray} bind def
605 } ifelse
606 1.000 UL
607 LTb
608 1.00 1.00 1.00 C 1.000 1497 5067 8926 2923 BoxColFill
609 1.000 UL
610 LTb
611 0.00 0.00 0.00 C 1497 5410 M
612 88 0 V
613 stroke
614 0.15 0.15 0.15 C 1377 5410 M
615 [ [(Helvetica) 200.0 0.0 true true 0 (-0.003)]
616 ] -66.7 MRshow
617 1.000 UL
618 LTb
619 0.00 0.00 0.00 C 1497 5783 M
620 88 0 V
621 stroke
622 0.15 0.15 0.15 C 1377 5783 M
623 [ [(Helvetica) 200.0 0.0 true true 0 (-0.002)]
624 ] -66.7 MRshow
625 1.000 UL
626 LTb
627 0.00 0.00 0.00 C 1497 6157 M
628 88 0 V
629 stroke
630 0.15 0.15 0.15 C 1377 6157 M
631 [ [(Helvetica) 200.0 0.0 true true 0 (-0.001)]
632 ] -66.7 MRshow
633 1.000 UL
634 LTb
635 0.00 0.00 0.00 C 1497 6530 M
636 88 0 V
637 stroke
638 0.15 0.15 0.15 C 1377 6530 M
639 [ [(Helvetica) 200.0 0.0 true true 0 (0)]
640 ] -66.7 MRshow
641 1.000 UL
642 LTb
643 0.00 0.00 0.00 C 1497 6903 M
644 88 0 V
645 stroke
646 0.15 0.15 0.15 C 1377 6903 M
647 [ [(Helvetica) 200.0 0.0 true true 0 (0.001)]
648 ] -66.7 MRshow
649 1.000 UL
650 LTb
651 0.00 0.00 0.00 C 1497 7277 M
652 88 0 V
653 stroke
654 0.15 0.15 0.15 C 1377 7277 M
655 [ [(Helvetica) 200.0 0.0 true true 0 (0.002)]
656 ] -66.7 MRshow
657 1.000 UL
658 LTb
659 0.00 0.00 0.00 C 1497 7650 M
660 88 0 V
661 stroke
662 0.15 0.15 0.15 C 1377 7650 M
663 [ [(Helvetica) 200.0 0.0 true true 0 (0.003)]
664 ] -66.7 MRshow
665 1.000 UL
666 LTb
667 0.00 0.00 0.00 C 3206 5067 M
668 0 88 V
669 stroke
670 0.15 0.15 0.15 C 3206 4867 M
671 [ [(Helvetica) 200.0 0.0 true true 0 (50)]
672 ] -66.7 MCshow
673 1.000 UL
674 LTb
675 0.00 0.00 0.00 C 4949 5067 M
676 0 88 V
677 stroke
678 0.15 0.15 0.15 C 4949 4867 M
679 [ [(Helvetica) 200.0 0.0 true true 0 (100)]
680 ] -66.7 MCshow
681 1.000 UL
682 LTb
683 0.00 0.00 0.00 C 6693 5067 M
684 0 88 V
685 stroke
686 0.15 0.15 0.15 C 6693 4867 M
687 [ [(Helvetica) 200.0 0.0 true true 0 (150)]
688 ] -66.7 MCshow
689 1.000 UL
690 LTb
691 0.00 0.00 0.00 C 8436 5067 M
692 0 88 V
693 stroke
694 0.15 0.15 0.15 C 8436 4867 M
695 [ [(Helvetica) 200.0 0.0 true true 0 (200)]
696 ] -66.7 MCshow
697 1.000 UL
698 LTb
699 0.00 0.00 0.00 C 10180 5067 M
700 0 88 V
701 stroke
702 0.15 0.15 0.15 C 10180 4867 M
703 [ [(Helvetica) 200.0 0.0 true true 0 (250)]
704 ] -66.7 MCshow
705 1.000 UL
706 LTb
707 0.00 0.00 0.00 C 1.000 UP
708 1.000 UL
709 LTb
710 0.00 0.00 0.00 C 0.15 0.15 0.15 C 457 6529 M
711 currentpoint gsave translate 90 rotate 0 0 moveto
712 [ [(Helvetica) 220.0 0.0 true true 0 (Normalized difference between floating value and integer value)]
713 ] -73.3 MCshow
714 grestore
715 LTb
716 0.15 0.15 0.15 C 5960 4567 M
717 [ [(Helvetica) 220.0 0.0 true true 0 (Number of sample)]
718 ] -73.3 MCshow
719 LTb
720 0.00 0.00 0.00 C 5960 8311 M
721 [ [(:Bold) 220.0 0.0 true true 0 (Difference between floating coefficients and integer coefficients)]
722 ] -73.3 MCshow
723 LTb
724 1.000 UL
725 LTb
726 LCb setrgbcolor
727 1617 5130 N
728 0 1215 V
729 2331 0 V
730 0 -1215 V
731 -2331 0 V
732 Z stroke
733 % Begin plot #1
734 2.000 UP
735 0.500 UL
736 LTb
737 0.00 0.45 0.74 C 0.00 0.00 0.00 C 2328 6142 M
738 [ [(Helvetica) 180.0 0.0 true true 0 (Integer 8 bits)]
739 ] -60.0 MLshow
740 2.000 UP
741 0.500 UL
742 LTb
743 0.00 0.45 0.74 C 1725 6142 M
744 495 0 V
745 -723 388 R
746 35 0 V
747 35 0 V
748 35 0 V
749 34 0 V
750 35 0 V
751 35 0 V
752 35 0 V
753 35 0 V
754 35 1 V
755 35 -1 V
756 35 -1 V
757 34 1 V
758 35 2 V
759 35 -2 V
760 35 -3 V
761 35 3 V
762 35 5 V
763 35 -5 V
764 35 -8 V
765 34 9 V
766 35 12 V
767 35 -14 V
768 35 -18 V
769 35 21 V
770 35 26 V
771 35 -31 V
772 35 -37 V
773 34 44 V
774 35 51 V
775 35 -61 V
776 35 -70 V
777 35 84 V
778 35 95 V
779 35 -115 V
780 34 -125 V
781 35 153 V
782 35 164 V
783 35 -202 V
784 35 -211 V
785 35 263 V
786 35 268 V
787 35 -337 V
788 34 -338 V
789 35 428 V
790 35 421 V
791 35 -539 V
792 35 -517 V
793 35 669 V
794 35 631 V
795 35 -824 V
796 34 -760 V
797 35 1004 V
798 35 906 V
799 35 -1212 V
800 35 -1069 V
801 35 1448 V
802 35 1252 V
803 35 -1717 V
804 34 1489 V
805 35 -922 V
806 35 -1274 V
807 35 587 V
808 35 1048 V
809 35 -223 V
810 35 -808 V
811 34 -175 V
812 35 563 V
813 35 601 V
814 35 -314 V
815 35 -1053 V
816 35 68 V
817 35 1527 V
818 35 168 V
819 34 -2018 V
820 35 -387 V
821 35 2519 V
822 35 -2359 V
823 35 -82 V
824 35 2200 V
825 35 -2362 V
826 35 852 V
827 34 1885 V
828 35 -909 V
829 35 -1437 V
830 35 899 V
831 35 1030 V
832 35 -807 V
833 35 -681 V
834 35 623 V
835 34 402 V
836 35 -332 V
837 35 -210 V
838 35 -79 V
839 35 122 V
840 35 624 V
841 35 -156 V
842 34 -1318 V
843 35 330 V
844 35 -761 V
845 35 2273 V
846 35 -282 V
847 35 -1753 V
848 35 1529 V
849 35 1023 V
850 34 -64 V
851 35 -54 V
852 35 -1138 V
853 35 -1195 V
854 35 2033 V
855 35 -166 V
856 35 385 V
857 35 -1814 V
858 34 -339 V
859 35 1363 V
860 35 938 V
861 35 -1595 V
862 35 461 V
863 35 -127 V
864 35 -351 V
865 35 293 V
866 34 439 V
867 35 -607 V
868 35 -441 V
869 35 781 V
870 35 260 V
871 35 -716 V
872 35 1124 V
873 35 -874 V
874 34 874 V
875 35 -1124 V
876 35 716 V
877 35 -260 V
878 35 -781 V
879 35 441 V
880 35 607 V
881 34 -439 V
882 35 -293 V
883 35 351 V
884 35 127 V
885 35 -461 V
886 35 1595 V
887 35 -938 V
888 35 -1363 V
889 34 339 V
890 35 1814 V
891 35 -385 V
892 35 166 V
893 35 -2033 V
894 35 1195 V
895 35 1138 V
896 35 54 V
897 34 64 V
898 35 -1023 V
899 35 -1529 V
900 35 1753 V
901 35 282 V
902 35 -2273 V
903 35 761 V
904 35 -330 V
905 34 1318 V
906 35 156 V
907 35 -624 V
908 35 -122 V
909 35 79 V
910 35 210 V
911 35 332 V
912 34 -402 V
913 35 -623 V
914 35 681 V
915 35 807 V
916 35 -1030 V
917 35 -899 V
918 35 1437 V
919 35 909 V
920 34 -1885 V
921 35 -852 V
922 35 2362 V
923 35 -2200 V
924 35 82 V
925 35 2359 V
926 35 -2519 V
927 35 387 V
928 34 2018 V
929 35 -168 V
930 35 -1527 V
931 35 -68 V
932 35 1053 V
933 35 314 V
934 35 -601 V
935 35 -563 V
936 34 175 V
937 35 808 V
938 35 223 V
939 35 -1048 V
940 35 -587 V
941 35 1274 V
942 35 922 V
943 34 -1489 V
944 35 1717 V
945 35 -1252 V
946 35 -1448 V
947 35 1069 V
948 35 1212 V
949 35 -906 V
950 35 -1004 V
951 34 760 V
952 35 824 V
953 35 -631 V
954 35 -669 V
955 35 517 V
956 35 539 V
957 35 -421 V
958 35 -428 V
959 34 338 V
960 35 337 V
961 35 -268 V
962 35 -263 V
963 35 211 V
964 35 202 V
965 35 -164 V
966 35 -153 V
967 34 125 V
968 35 115 V
969 35 -95 V
970 35 -84 V
971 35 70 V
972 35 61 V
973 35 -51 V
974 34 -44 V
975 35 37 V
976 35 31 V
977 35 -26 V
978 35 -21 V
979 35 18 V
980 35 14 V
981 35 -12 V
982 34 -9 V
983 35 8 V
984 35 5 V
985 35 -5 V
986 35 -3 V
987 35 3 V
988 35 2 V
989 35 -2 V
990 34 -1 V
991 35 1 V
992 35 1 V
993 stroke 10110 6531 M
994 35 -1 V
995 35 0 V
996 35 0 V
997 35 0 V
998 35 0 V
999 34 0 V
1000 35 0 V
1001 35 0 V
1002 35 0 V
1003 1973 6142 Pnt
1004 % End plot #1
1005 % Begin plot #2
1006 2.000 UP
1007 0.500 UL
1008 LTb
1009 0.85 0.33 0.10 C 0.00 0.00 0.00 C 2328 5737 M
1010 [ [(Helvetica) 180.0 0.0 true true 0 (Integer 12 bits)]
1011 ] -60.0 MLshow
1012 2.000 UP
1013 0.500 UL
1014 LTb
1015 0.85 0.33 0.10 C 1725 5737 M
1016 495 0 V
1017 -723 793 R
1018 35 0 V
1019 35 0 V
1020 35 0 V
1021 34 0 V
1022 35 0 V
1023 35 0 V
1024 35 0 V
1025 35 0 V
1026 35 1 V
1027 35 -1 V
1028 35 -1 V
1029 34 1 V
1030 35 2 V
1031 35 -2 V
1032 35 -3 V
1033 35 3 V
1034 35 5 V
1035 35 -5 V
1036 35 -8 V
1037 34 9 V
1038 35 12 V
1039 35 -14 V
1040 35 -18 V
1041 35 21 V
1042 35 26 V
1043 35 -31 V
1044 35 -37 V
1045 34 44 V
1046 35 51 V
1047 35 -61 V
1048 35 -70 V
1049 35 84 V
1050 35 -88 V
1051 35 68 V
1052 34 57 V
1053 35 -29 V
1054 35 -19 V
1055 35 -19 V
1056 35 -29 V
1057 35 81 V
1058 35 -96 V
1059 35 27 V
1060 34 26 V
1061 35 64 V
1062 35 -126 V
1063 35 8 V
1064 35 30 V
1065 35 122 V
1066 35 -99 V
1067 35 88 V
1068 34 -30 V
1069 35 -90 V
1070 35 -6 V
1071 35 65 V
1072 35 24 V
1073 35 -10 V
1074 35 -25 V
1075 35 -76 V
1076 34 9 V
1077 35 12 V
1078 35 23 V
1079 35 19 V
1080 35 -68 V
1081 35 164 V
1082 35 -58 V
1083 34 -14 V
1084 35 -6 V
1085 35 75 V
1086 35 -110 V
1087 35 20 V
1088 35 47 V
1089 35 -93 V
1090 35 7 V
1091 34 -33 V
1092 35 139 V
1093 35 -14 V
1094 35 -127 V
1095 35 57 V
1096 35 -30 V
1097 35 72 V
1098 35 -38 V
1099 34 -3 V
1100 35 -19 V
1101 35 87 V
1102 35 8 V
1103 35 -128 V
1104 35 83 V
1105 35 -69 V
1106 35 97 V
1107 34 -27 V
1108 35 10 V
1109 35 37 V
1110 35 -56 V
1111 35 57 V
1112 35 -127 V
1113 35 91 V
1114 34 -20 V
1115 35 83 V
1116 35 -32 V
1117 35 -54 V
1118 35 83 V
1119 35 -155 V
1120 35 69 V
1121 35 -28 V
1122 34 97 V
1123 35 -96 V
1124 35 -1 V
1125 35 124 V
1126 35 -37 V
1127 35 -5 V
1128 35 -98 V
1129 35 31 V
1130 34 -60 V
1131 35 87 V
1132 35 -49 V
1133 35 24 V
1134 35 -54 V
1135 35 120 V
1136 35 25 V
1137 35 3 V
1138 34 -2 V
1139 35 -70 V
1140 35 -75 V
1141 35 137 V
1142 35 21 V
1143 35 -16 V
1144 35 -49 V
1145 35 -23 V
1146 34 23 V
1147 35 49 V
1148 35 16 V
1149 35 -21 V
1150 35 -137 V
1151 35 75 V
1152 35 70 V
1153 34 2 V
1154 35 -3 V
1155 35 -25 V
1156 35 -120 V
1157 35 54 V
1158 35 -24 V
1159 35 49 V
1160 35 -87 V
1161 34 60 V
1162 35 -31 V
1163 35 98 V
1164 35 5 V
1165 35 37 V
1166 35 -124 V
1167 35 1 V
1168 35 96 V
1169 34 -97 V
1170 35 28 V
1171 35 -69 V
1172 35 155 V
1173 35 -83 V
1174 35 54 V
1175 35 32 V
1176 35 -83 V
1177 34 20 V
1178 35 -91 V
1179 35 127 V
1180 35 -57 V
1181 35 56 V
1182 35 -37 V
1183 35 -10 V
1184 34 27 V
1185 35 -97 V
1186 35 69 V
1187 35 -83 V
1188 35 128 V
1189 35 -8 V
1190 35 -87 V
1191 35 19 V
1192 34 3 V
1193 35 38 V
1194 35 -72 V
1195 35 30 V
1196 35 -57 V
1197 35 127 V
1198 35 14 V
1199 35 -139 V
1200 34 33 V
1201 35 -7 V
1202 35 93 V
1203 35 -47 V
1204 35 -20 V
1205 35 110 V
1206 35 -75 V
1207 35 6 V
1208 34 14 V
1209 35 58 V
1210 35 -164 V
1211 35 68 V
1212 35 -19 V
1213 35 -23 V
1214 35 -12 V
1215 34 -9 V
1216 35 76 V
1217 35 25 V
1218 35 10 V
1219 35 -24 V
1220 35 -65 V
1221 35 6 V
1222 35 90 V
1223 34 30 V
1224 35 -88 V
1225 35 99 V
1226 35 -122 V
1227 35 -30 V
1228 35 -8 V
1229 35 126 V
1230 35 -64 V
1231 34 -26 V
1232 35 -27 V
1233 35 96 V
1234 35 -81 V
1235 35 29 V
1236 35 19 V
1237 35 19 V
1238 35 29 V
1239 34 -57 V
1240 35 -68 V
1241 35 88 V
1242 35 -84 V
1243 35 70 V
1244 35 61 V
1245 35 -51 V
1246 34 -44 V
1247 35 37 V
1248 35 31 V
1249 35 -26 V
1250 35 -21 V
1251 35 18 V
1252 35 14 V
1253 35 -12 V
1254 34 -9 V
1255 35 8 V
1256 35 5 V
1257 35 -5 V
1258 35 -3 V
1259 35 3 V
1260 35 2 V
1261 35 -2 V
1262 34 -1 V
1263 35 1 V
1264 35 1 V
1265 stroke 10110 6531 M
1266 35 -1 V
1267 35 0 V
1268 35 0 V
1269 35 0 V
1270 35 0 V
1271 34 0 V
1272 35 0 V
1273 35 0 V
1274 35 0 V
1275 1973 5737 Pnt
1276 % End plot #2
1277 % Begin plot #3
1278 2.000 UP
1279 0.500 UL
1280 LTb
1281 0.93 0.69 0.13 C 0.00 0.00 0.00 C 2328 5332 M
1282 [ [(Helvetica) 180.0 0.0 true true 0 (Integer 16 bits)]
1283 ] -60.0 MLshow
1284 2.000 UP
1285 0.500 UL
1286 LTb
1287 0.93 0.69 0.13 C 1725 5332 M
1288 495 0 V
1289 1497 6530 M
1290 35 0 V
1291 35 0 V
1292 35 0 V
1293 34 0 V
1294 35 0 V
1295 35 0 V
1296 35 0 V
1297 35 0 V
1298 35 1 V
1299 35 -1 V
1300 35 -1 V
1301 34 1 V
1302 35 2 V
1303 35 -2 V
1304 35 -3 V
1305 35 3 V
1306 35 5 V
1307 35 -5 V
1308 35 3 V
1309 34 -2 V
1310 35 1 V
1311 35 -3 V
1312 35 5 V
1313 35 -2 V
1314 35 3 V
1315 35 -8 V
1316 35 -2 V
1317 34 9 V
1318 35 -6 V
1319 35 7 V
1320 35 -1 V
1321 35 -7 V
1322 35 3 V
1323 35 0 V
1324 34 0 V
1325 35 5 V
1326 35 -7 V
1327 35 3 V
1328 35 -6 V
1329 35 0 V
1330 35 7 V
1331 35 -7 V
1332 34 4 V
1333 35 -5 V
1334 35 11 V
1335 35 -3 V
1336 35 -5 V
1337 35 9 V
1338 35 -8 V
1339 35 8 V
1340 34 -8 V
1341 35 1 V
1342 35 6 V
1343 35 -4 V
1344 35 1 V
1345 35 2 V
1346 35 -1 V
1347 35 3 V
1348 34 -4 V
1349 35 2 V
1350 35 1 V
1351 35 -5 V
1352 35 -1 V
1353 35 6 V
1354 35 1 V
1355 34 -4 V
1356 35 -8 V
1357 35 9 V
1358 35 -6 V
1359 35 6 V
1360 35 0 V
1361 35 1 V
1362 35 -3 V
1363 34 -2 V
1364 35 1 V
1365 35 0 V
1366 35 0 V
1367 35 -2 V
1368 35 1 V
1369 35 -4 V
1370 35 10 V
1371 34 -7 V
1372 35 2 V
1373 35 -1 V
1374 35 -1 V
1375 35 5 V
1376 35 1 V
1377 35 -8 V
1378 35 8 V
1379 34 -9 V
1380 35 9 V
1381 35 -4 V
1382 35 1 V
1383 35 -3 V
1384 35 -3 V
1385 35 4 V
1386 34 3 V
1387 35 0 V
1388 35 2 V
1389 35 -6 V
1390 35 4 V
1391 35 1 V
1392 35 2 V
1393 35 -2 V
1394 34 -8 V
1395 35 4 V
1396 35 1 V
1397 35 1 V
1398 35 -6 V
1399 35 5 V
1400 35 -3 V
1401 35 -2 V
1402 34 3 V
1403 35 7 V
1404 35 -7 V
1405 35 -1 V
1406 35 5 V
1407 35 -2 V
1408 35 3 V
1409 35 -3 V
1410 34 5 V
1411 35 -2 V
1412 35 -7 V
1413 35 5 V
1414 35 -4 V
1415 35 4 V
1416 35 3 V
1417 35 -4 V
1418 34 4 V
1419 35 -3 V
1420 35 -4 V
1421 35 4 V
1422 35 -5 V
1423 35 7 V
1424 35 2 V
1425 34 -5 V
1426 35 3 V
1427 35 -3 V
1428 35 2 V
1429 35 -5 V
1430 35 1 V
1431 35 7 V
1432 35 -7 V
1433 34 -3 V
1434 35 2 V
1435 35 3 V
1436 35 -5 V
1437 35 6 V
1438 35 -1 V
1439 35 -1 V
1440 35 -4 V
1441 34 8 V
1442 35 2 V
1443 35 -2 V
1444 35 -1 V
1445 35 -4 V
1446 35 6 V
1447 35 -2 V
1448 35 0 V
1449 34 -3 V
1450 35 -4 V
1451 35 3 V
1452 35 3 V
1453 35 -1 V
1454 35 4 V
1455 35 -9 V
1456 34 9 V
1457 35 -8 V
1458 35 8 V
1459 35 -1 V
1460 35 -5 V
1461 35 1 V
1462 35 1 V
1463 35 -2 V
1464 34 7 V
1465 35 -10 V
1466 35 4 V
1467 35 -1 V
1468 35 2 V
1469 35 0 V
1470 35 0 V
1471 35 -1 V
1472 34 2 V
1473 35 3 V
1474 35 -1 V
1475 35 0 V
1476 35 -6 V
1477 35 6 V
1478 35 -9 V
1479 35 8 V
1480 34 4 V
1481 35 -1 V
1482 35 -6 V
1483 35 1 V
1484 35 5 V
1485 35 -1 V
1486 35 -2 V
1487 34 4 V
1488 35 -3 V
1489 35 1 V
1490 35 -2 V
1491 35 -1 V
1492 35 4 V
1493 35 -6 V
1494 35 -1 V
1495 34 8 V
1496 35 -8 V
1497 35 8 V
1498 35 -9 V
1499 35 5 V
1500 35 3 V
1501 35 -11 V
1502 35 5 V
1503 34 -4 V
1504 35 7 V
1505 35 -7 V
1506 35 0 V
1507 35 6 V
1508 35 -3 V
1509 35 7 V
1510 35 -5 V
1511 34 0 V
1512 35 0 V
1513 35 -3 V
1514 35 7 V
1515 35 1 V
1516 35 -7 V
1517 35 6 V
1518 34 -9 V
1519 35 2 V
1520 35 8 V
1521 35 -3 V
1522 35 2 V
1523 35 -5 V
1524 35 3 V
1525 35 -1 V
1526 34 2 V
1527 35 -3 V
1528 35 5 V
1529 35 -5 V
1530 35 -3 V
1531 35 3 V
1532 35 2 V
1533 35 -2 V
1534 34 -1 V
1535 35 1 V
1536 35 1 V
1537 stroke 10110 6531 M
1538 35 -1 V
1539 35 0 V
1540 35 0 V
1541 35 0 V
1542 35 0 V
1543 34 0 V
1544 35 0 V
1545 35 0 V
1546 35 0 V
1547 1973 5332 Pnt
1548 % End plot #3
1549 2.000 UL
1550 LTb
1551 LCb setrgbcolor
1552 1.000 UP
1553 0.500 UL
1554 [] 0 setdash
1555 PL 0.15 0.15 0.15 C 1497 5067 M
1556 8927 0 V
1557 stroke
1558 [] 0 setdash
1559 0.15 0.15 0.15 C 1497 5067 M
1560 0 2924 V
1561 stroke
1562 1.000 UL
1563 LTb
1564 0.00 0.00 0.00 C grestore % colour palette end
1565 stroke
1566 grestore
1567 end
1568 showpage
1569 %%Trailer
1570 %%DocumentFonts: :Bold Helvetica
images/float-vs-integer.pdf
No preview for this file type