diff --git a/ifcs2018_processing.tex b/ifcs2018_processing.tex index 535bfea..293df9e 100644 --- a/ifcs2018_processing.tex +++ b/ifcs2018_processing.tex @@ -15,7 +15,7 @@ to oscillator metrology} \author{\IEEEauthorblockN{A. Hugeat\IEEEauthorrefmark{1}\IEEEauthorrefmark{2}, J. Bernard\IEEEauthorrefmark{2}, G. Goavec-M\'erou\IEEEauthorrefmark{1}, -P.-Y. Bourgeois\IEEEauthorrefmark{1}, J.-M Friedt\IEEEauthorrefmark{1}} +P.-Y. Bourgeois\IEEEauthorrefmark{1}, J.-M. Friedt\IEEEauthorrefmark{1}} \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 \\ Email: \{pyb2,jmfriedt\}@femto-st.fr} @@ -80,11 +80,23 @@ We select FIR filter for their unconditional stability and ease of design. A FIR 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}$$ -As opposed to an implementation on a general purpose processor in which word size is defined by the +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 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. +Ideally the coefficient are expressed as floating point value but this notation isn't a efficient way to +work with FPGA. Instead we prefer convert this floating point values into integer values. However this +conversion result in some precision loss. Actually as show figure \ref{float_vs_int}, we see that we aren't +need too coefficients or too sample size. If we have lot of coefficients but a small sample size, +the first and last are equal to zero. But if we have too sample size for few coefficients that not improve the quality. + +\begin{figure}[h!tb] +\includegraphics[width=\linewidth]{images/float-vs-integer.pdf} +\caption{Illistration of coefficients choice impact} +\label{float_vs_int} +\end{figure} + \section{Filter optimization} A basic approach for implementing the FIR filter is to compute the transfer function of @@ -206,4 +218,3 @@ fruitful discussions. \bibliographystyle{IEEEtran} \bibliography{references} \end{document} - diff --git a/images/float-vs-integer.eps b/images/float-vs-integer.eps new file mode 100644 index 0000000..c6b3cf9 --- /dev/null +++ b/images/float-vs-integer.eps @@ -0,0 +1,1570 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: /tmp/figure.eps +%%Creator: gnuplot 5.2 patchlevel 2 +%%CreationDate: Fri May 18 14:10:42 2018 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 626 482 +%%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 true def +/Blacktext false def +/Solid false def +/Dashlength 2 def +/Landscape false def +/Level1 true def +/Level3 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 -66 def +/dl1 { + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength userlinewidth gnulinewidth div mul 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 626 50 lineto 626 482 lineto 50 482 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 5.1 (Oct 2015) +% +%/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 textshow grestore} {textshow} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} 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 +% Classic Line colors (version 5.0) +/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 dash patterns (version 5.0) +/LTB {BL [] LCb DL} def +/LTw {PL [] 1 setgray} def +/LTb {PL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [2 dl1 3 dl2] LC1 DL} def +/LT2 {PL [1 dl1 1.5 dl2] LC2 DL} def +/LT3 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC3 DL} def +/LT4 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [4 dl1 2 dl2] LC5 DL} def +/LT6 {PL [1.5 dl1 1.5 dl2 1.5 dl1 1.5 dl2 1.5 dl1 6 dl2] LC6 DL} def +/LT7 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC8 DL} def +/SL {[] 0 setdash} 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 +dup 2 lt + {/InterpretLevel1 true def + /InterpretLevel3 false def} + {/InterpretLevel1 Level1 def + 2 gt + {/InterpretLevel3 Level3 def} + {/InterpretLevel3 false def} + ifelse } + 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 +% +/Metrics {ExtendTextBox Gswidth} def +/Lwidth {currentpoint stroke M 0 vshift R Metrics} def +/Rwidth {currentpoint stroke M dup stringwidth pop neg vshift R Metrics} def +/Cwidth {currentpoint stroke M dup stringwidth pop -2 div vshift R Metrics} def +/GLwidth {currentpoint stroke M 0 vshift R {ExtendTextBox} forall} def +/GRwidth {currentpoint stroke M dup Gwidth vshift R {ExtendTextBox} forall} def +/GCwidth {currentpoint stroke M dup Gwidth 2 div vshift R {ExtendTextBox} forall} def +/GLwidth2 {0 Gwidth AddGlyphWidth} def +/GRwidth2 {Gwidth -1 mul 0 AddGlyphWidth} def +/GCwidth2 {Gwidth 2 div dup -1 mul AddGlyphWidth} def +/AddGlyphWidth { dup TBx2 gt {userdict /TBx2 3 -1 roll put} {pop} ifelse + dup TBx1 lt {userdict /TBx1 3 -1 roll put} {pop} ifelse } 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 {textshow} {Metrics 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 Gswidth pop -2 div + dup 0 R} {dup 6 get Gswidth pop -2 div 0 R 6 get + textshow 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 +Level1 SuppressPDFMark or +{} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (/tmp/figure.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 5.2 patchlevel 2) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Fri May 18 14:10:42 2018) + /DOCINFO pdfmark +end +} ifelse +% +% Support for boxed text - Ethan A Merritt Sep 2016 +% +/InitTextBox { userdict /TBy2 3 -1 roll put userdict /TBx2 3 -1 roll put + userdict /TBy1 3 -1 roll put userdict /TBx1 3 -1 roll put + /Boxing true def } def +/ExtendTextBox { dup type /stringtype eq + { Boxing { gsave dup false charpath pathbbox + dup TBy2 gt {userdict /TBy2 3 -1 roll put} {pop} ifelse + dup TBx2 gt {userdict /TBx2 3 -1 roll put} {pop} ifelse + dup TBy1 lt {userdict /TBy1 3 -1 roll put} {pop} ifelse + dup TBx1 lt {userdict /TBx1 3 -1 roll put} {pop} ifelse + grestore } if } + {} ifelse} def +/PopTextBox { newpath TBx1 TBxmargin sub TBy1 TBymargin sub M + TBx1 TBxmargin sub TBy2 TBymargin add L + TBx2 TBxmargin add TBy2 TBymargin add L + TBx2 TBxmargin add TBy1 TBymargin sub L closepath } def +/DrawTextBox { PopTextBox stroke /Boxing false def} def +/FillTextBox { gsave PopTextBox fill grestore /Boxing false def} def +0 0 0 0 InitTextBox +/TBxmargin 20 def +/TBymargin 20 def +/Boxing false def +/textshow { ExtendTextBox Gshow } def +% +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +(Helvetica) findfont 200 scalefont setfont +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 +gsave % colour palette begin +/maxcolors 64 def +/HSV2RGB { exch dup 0.0 eq {pop exch pop dup dup} % achromatic gray + { /HSVs exch def /HSVv exch def 6.0 mul dup floor dup 3 1 roll sub + /HSVf exch def /HSVi exch cvi def /HSVp HSVv 1.0 HSVs sub mul def + /HSVq HSVv 1.0 HSVs HSVf mul sub mul def + /HSVt HSVv 1.0 HSVs 1.0 HSVf sub mul sub mul def + /HSVi HSVi 6 mod def 0 HSVi eq {HSVv HSVt HSVp} + {1 HSVi eq {HSVq HSVv HSVp}{2 HSVi eq {HSVp HSVv HSVt} + {3 HSVi eq {HSVp HSVq HSVv}{4 HSVi eq {HSVt HSVp HSVv} + {HSVv HSVp HSVq} ifelse} ifelse} ifelse} ifelse} ifelse + } ifelse} def +/Constrain { + dup 0 lt {0 exch pop}{dup 1 gt {1 exch pop} if} ifelse} def +/YIQ2RGB { + 3 copy -1.702 mul exch -1.105 mul add add Constrain 4 1 roll + 3 copy -0.647 mul exch -0.272 mul add add Constrain 5 1 roll + 0.621 mul exch -0.956 mul add add Constrain 3 1 roll } def +/CMY2RGB { 1 exch sub exch 1 exch sub 3 2 roll 1 exch sub 3 1 roll exch } def +/XYZ2RGB { 3 copy -0.9017 mul exch -0.1187 mul add exch 0.0585 mul exch add + Constrain 4 1 roll 3 copy -0.0279 mul exch 1.999 mul add exch + -0.9844 mul add Constrain 5 1 roll -0.2891 mul exch -0.5338 mul add + exch 1.91 mul exch add Constrain 3 1 roll} def +/SelectSpace {ColorSpace (HSV) eq {HSV2RGB}{ColorSpace (XYZ) eq { + XYZ2RGB}{ColorSpace (CMY) eq {CMY2RGB}{ColorSpace (YIQ) eq {YIQ2RGB} + if} ifelse} ifelse} ifelse} def +/InterpolatedColor true def +/grayindex {/gidx 0 def + {GrayA gidx get grayv ge {exit} if /gidx gidx 1 add def} loop} def +/dgdx {grayv GrayA gidx get sub GrayA gidx 1 sub get + GrayA gidx get sub div} def +/redvalue {RedA gidx get RedA gidx 1 sub get + RedA gidx get sub dgdxval mul add} def +/greenvalue {GreenA gidx get GreenA gidx 1 sub get + GreenA gidx get sub dgdxval mul add} def +/bluevalue {BlueA gidx get BlueA gidx 1 sub get + BlueA gidx get sub dgdxval mul add} def +/interpolate { + grayindex grayv GrayA gidx get sub abs 1e-5 le + {RedA gidx get GreenA gidx get BlueA gidx get} + {/dgdxval dgdx def redvalue greenvalue bluevalue} ifelse} def +/GrayA [0 .0159 .0317 .0476 .0635 .0794 .0952 .1111 .127 .1429 .1587 .1746 + .1905 .2063 .2222 .2381 .254 .2698 .2857 .3016 .3175 .3333 .3492 .3651 + .381 .3968 .4127 .4286 .4444 .4603 .4762 .4921 .5079 .5238 .5397 .5556 + .5714 .5873 .6032 .619 .6349 .6508 .6667 .6825 .6984 .7143 .7302 .746 + .7619 .7778 .7937 .8095 .8254 .8413 .8571 .873 .8889 .9048 .9206 .9365 + .9524 .9683 .9841 1 ] def +/RedA [.267 .2727 .2771 .2804 .2824 .2832 .2828 .2812 .2785 .2747 .27 .2644 + .258 .2511 .2437 .2361 .2283 .2204 .2127 .2051 .1977 .1906 .1838 .1773 + .171 .1648 .1588 .153 .1471 .1414 .1358 .1306 .1259 .1222 .1199 .1196 .122 + .1277 .1368 .1496 .166 .1855 .208 .2331 .2605 .29 .3213 .3544 .3889 .4249 + .4622 .5008 .5403 .5809 .6222 .6641 .7064 .7489 .7913 .8333 .8747 .9153 + .9548 .9932 ] def +/GreenA [.0049 .0258 .0509 .0742 .096 .1169 .1374 .1575 .1773 .197 .2163 + .2354 .2542 .2726 .2906 .3083 .3256 .3425 .3591 .3754 .3913 .4071 .4226 + .4379 .4531 .4681 .4831 .4981 .513 .5279 .5428 .5577 .5726 .5875 .6024 + .6173 .6321 .6469 .6616 .6761 .6905 .7047 .7187 .7324 .7458 .7588 .7715 + .7837 .7955 .8067 .8173 .8274 .8369 .8457 .8538 .8613 .8682 .8745 .8803 + .8858 .8909 .896 .901 .9062 ] def +/BlueA [.3294 .3534 .3762 .3979 .4183 .4372 .4546 .4704 .4847 .4973 .5083 + .5177 .5258 .5325 .5381 .5427 .5463 .5493 .5516 .5535 .555 .5561 .557 + .5576 .558 .5581 .5581 .5577 .557 .5559 .5543 .5522 .5494 .546 .5418 .5368 + .5308 .5239 .516 .5069 .4968 .4854 .4729 .4591 .4441 .4278 .4103 .3915 + .3714 .3501 .3275 .3038 .2789 .253 .2262 .1989 .1715 .145 .1213 .1033 + .0954 .1005 .1179 .1439 ] def +/pm3dround {maxcolors 0 gt {dup 1 ge + {pop 1} {maxcolors mul floor maxcolors 1 sub div} ifelse} if} def +/pm3dGamma 1.0 1.5 Gamma mul div def +/ColorSpace (RGB) def +Color InterpolatedColor or { % COLOUR vs. GRAY map + InterpolatedColor { %% Interpolation vs. RGB-Formula + /g {stroke pm3dround /grayv exch def interpolate + SelectSpace setrgbcolor} bind def + }{ + /g {stroke pm3dround dup cF7 Constrain exch dup cF5 Constrain exch cF15 Constrain + SelectSpace setrgbcolor} bind def + } ifelse +}{ + /g {stroke pm3dround pm3dGamma exp setgray} bind def +} ifelse +1.000 UL +LTb +1.00 1.00 1.00 C 1.000 1497 5067 8926 2923 BoxColFill +1.000 UL +LTb +0.00 0.00 0.00 C 1497 5410 M +88 0 V +stroke +0.15 0.15 0.15 C 1377 5410 M +[ [(Helvetica) 200.0 0.0 true true 0 (-0.003)] +] -66.7 MRshow +1.000 UL +LTb +0.00 0.00 0.00 C 1497 5783 M +88 0 V +stroke +0.15 0.15 0.15 C 1377 5783 M +[ [(Helvetica) 200.0 0.0 true true 0 (-0.002)] +] -66.7 MRshow +1.000 UL +LTb +0.00 0.00 0.00 C 1497 6157 M +88 0 V +stroke +0.15 0.15 0.15 C 1377 6157 M +[ [(Helvetica) 200.0 0.0 true true 0 (-0.001)] +] -66.7 MRshow +1.000 UL +LTb +0.00 0.00 0.00 C 1497 6530 M +88 0 V +stroke +0.15 0.15 0.15 C 1377 6530 M +[ [(Helvetica) 200.0 0.0 true true 0 (0)] +] -66.7 MRshow +1.000 UL +LTb +0.00 0.00 0.00 C 1497 6903 M +88 0 V +stroke +0.15 0.15 0.15 C 1377 6903 M +[ [(Helvetica) 200.0 0.0 true true 0 (0.001)] +] -66.7 MRshow +1.000 UL +LTb +0.00 0.00 0.00 C 1497 7277 M +88 0 V +stroke +0.15 0.15 0.15 C 1377 7277 M +[ [(Helvetica) 200.0 0.0 true true 0 (0.002)] +] -66.7 MRshow +1.000 UL +LTb +0.00 0.00 0.00 C 1497 7650 M +88 0 V +stroke +0.15 0.15 0.15 C 1377 7650 M +[ [(Helvetica) 200.0 0.0 true true 0 (0.003)] +] -66.7 MRshow +1.000 UL +LTb +0.00 0.00 0.00 C 3206 5067 M +0 88 V +stroke +0.15 0.15 0.15 C 3206 4867 M +[ [(Helvetica) 200.0 0.0 true true 0 (50)] +] -66.7 MCshow +1.000 UL +LTb +0.00 0.00 0.00 C 4949 5067 M +0 88 V +stroke +0.15 0.15 0.15 C 4949 4867 M +[ [(Helvetica) 200.0 0.0 true true 0 (100)] +] -66.7 MCshow +1.000 UL +LTb +0.00 0.00 0.00 C 6693 5067 M +0 88 V +stroke +0.15 0.15 0.15 C 6693 4867 M +[ [(Helvetica) 200.0 0.0 true true 0 (150)] +] -66.7 MCshow +1.000 UL +LTb +0.00 0.00 0.00 C 8436 5067 M +0 88 V +stroke +0.15 0.15 0.15 C 8436 4867 M +[ [(Helvetica) 200.0 0.0 true true 0 (200)] +] -66.7 MCshow +1.000 UL +LTb +0.00 0.00 0.00 C 10180 5067 M +0 88 V +stroke +0.15 0.15 0.15 C 10180 4867 M +[ [(Helvetica) 200.0 0.0 true true 0 (250)] +] -66.7 MCshow +1.000 UL +LTb +0.00 0.00 0.00 C 1.000 UP +1.000 UL +LTb +0.00 0.00 0.00 C 0.15 0.15 0.15 C 457 6529 M +currentpoint gsave translate 90 rotate 0 0 moveto +[ [(Helvetica) 220.0 0.0 true true 0 (Normalized difference between floating value and integer value)] +] -73.3 MCshow +grestore +LTb +0.15 0.15 0.15 C 5960 4567 M +[ [(Helvetica) 220.0 0.0 true true 0 (Number of sample)] +] -73.3 MCshow +LTb +0.00 0.00 0.00 C 5960 8311 M +[ [(:Bold) 220.0 0.0 true true 0 (Difference between floating coefficients and integer coefficients)] +] -73.3 MCshow +LTb +1.000 UL +LTb +LCb setrgbcolor +1617 5130 N +0 1215 V +2331 0 V +0 -1215 V +-2331 0 V +Z stroke +% Begin plot #1 +2.000 UP +0.500 UL +LTb +0.00 0.45 0.74 C 0.00 0.00 0.00 C 2328 6142 M +[ [(Helvetica) 180.0 0.0 true true 0 (Integer 8 bits)] +] -60.0 MLshow +2.000 UP +0.500 UL +LTb +0.00 0.45 0.74 C 1725 6142 M +495 0 V +-723 388 R +35 0 V +35 0 V +35 0 V +34 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 1 V +35 -1 V +35 -1 V +34 1 V +35 2 V +35 -2 V +35 -3 V +35 3 V +35 5 V +35 -5 V +35 -8 V +34 9 V +35 12 V +35 -14 V +35 -18 V +35 21 V +35 26 V +35 -31 V +35 -37 V +34 44 V +35 51 V +35 -61 V +35 -70 V +35 84 V +35 95 V +35 -115 V +34 -125 V +35 153 V +35 164 V +35 -202 V +35 -211 V +35 263 V +35 268 V +35 -337 V +34 -338 V +35 428 V +35 421 V +35 -539 V +35 -517 V +35 669 V +35 631 V +35 -824 V +34 -760 V +35 1004 V +35 906 V +35 -1212 V +35 -1069 V +35 1448 V +35 1252 V +35 -1717 V +34 1489 V +35 -922 V +35 -1274 V +35 587 V +35 1048 V +35 -223 V +35 -808 V +34 -175 V +35 563 V +35 601 V +35 -314 V +35 -1053 V +35 68 V +35 1527 V +35 168 V +34 -2018 V +35 -387 V +35 2519 V +35 -2359 V +35 -82 V +35 2200 V +35 -2362 V +35 852 V +34 1885 V +35 -909 V +35 -1437 V +35 899 V +35 1030 V +35 -807 V +35 -681 V +35 623 V +34 402 V +35 -332 V +35 -210 V +35 -79 V +35 122 V +35 624 V +35 -156 V +34 -1318 V +35 330 V +35 -761 V +35 2273 V +35 -282 V +35 -1753 V +35 1529 V +35 1023 V +34 -64 V +35 -54 V +35 -1138 V +35 -1195 V +35 2033 V +35 -166 V +35 385 V +35 -1814 V +34 -339 V +35 1363 V +35 938 V +35 -1595 V +35 461 V +35 -127 V +35 -351 V +35 293 V +34 439 V +35 -607 V +35 -441 V +35 781 V +35 260 V +35 -716 V +35 1124 V +35 -874 V +34 874 V +35 -1124 V +35 716 V +35 -260 V +35 -781 V +35 441 V +35 607 V +34 -439 V +35 -293 V +35 351 V +35 127 V +35 -461 V +35 1595 V +35 -938 V +35 -1363 V +34 339 V +35 1814 V +35 -385 V +35 166 V +35 -2033 V +35 1195 V +35 1138 V +35 54 V +34 64 V +35 -1023 V +35 -1529 V +35 1753 V +35 282 V +35 -2273 V +35 761 V +35 -330 V +34 1318 V +35 156 V +35 -624 V +35 -122 V +35 79 V +35 210 V +35 332 V +34 -402 V +35 -623 V +35 681 V +35 807 V +35 -1030 V +35 -899 V +35 1437 V +35 909 V +34 -1885 V +35 -852 V +35 2362 V +35 -2200 V +35 82 V +35 2359 V +35 -2519 V +35 387 V +34 2018 V +35 -168 V +35 -1527 V +35 -68 V +35 1053 V +35 314 V +35 -601 V +35 -563 V +34 175 V +35 808 V +35 223 V +35 -1048 V +35 -587 V +35 1274 V +35 922 V +34 -1489 V +35 1717 V +35 -1252 V +35 -1448 V +35 1069 V +35 1212 V +35 -906 V +35 -1004 V +34 760 V +35 824 V +35 -631 V +35 -669 V +35 517 V +35 539 V +35 -421 V +35 -428 V +34 338 V +35 337 V +35 -268 V +35 -263 V +35 211 V +35 202 V +35 -164 V +35 -153 V +34 125 V +35 115 V +35 -95 V +35 -84 V +35 70 V +35 61 V +35 -51 V +34 -44 V +35 37 V +35 31 V +35 -26 V +35 -21 V +35 18 V +35 14 V +35 -12 V +34 -9 V +35 8 V +35 5 V +35 -5 V +35 -3 V +35 3 V +35 2 V +35 -2 V +34 -1 V +35 1 V +35 1 V +stroke 10110 6531 M +35 -1 V +35 0 V +35 0 V +35 0 V +35 0 V +34 0 V +35 0 V +35 0 V +35 0 V +1973 6142 Pnt +% End plot #1 +% Begin plot #2 +2.000 UP +0.500 UL +LTb +0.85 0.33 0.10 C 0.00 0.00 0.00 C 2328 5737 M +[ [(Helvetica) 180.0 0.0 true true 0 (Integer 12 bits)] +] -60.0 MLshow +2.000 UP +0.500 UL +LTb +0.85 0.33 0.10 C 1725 5737 M +495 0 V +-723 793 R +35 0 V +35 0 V +35 0 V +34 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 1 V +35 -1 V +35 -1 V +34 1 V +35 2 V +35 -2 V +35 -3 V +35 3 V +35 5 V +35 -5 V +35 -8 V +34 9 V +35 12 V +35 -14 V +35 -18 V +35 21 V +35 26 V +35 -31 V +35 -37 V +34 44 V +35 51 V +35 -61 V +35 -70 V +35 84 V +35 -88 V +35 68 V +34 57 V +35 -29 V +35 -19 V +35 -19 V +35 -29 V +35 81 V +35 -96 V +35 27 V +34 26 V +35 64 V +35 -126 V +35 8 V +35 30 V +35 122 V +35 -99 V +35 88 V +34 -30 V +35 -90 V +35 -6 V +35 65 V +35 24 V +35 -10 V +35 -25 V +35 -76 V +34 9 V +35 12 V +35 23 V +35 19 V +35 -68 V +35 164 V +35 -58 V +34 -14 V +35 -6 V +35 75 V +35 -110 V +35 20 V +35 47 V +35 -93 V +35 7 V +34 -33 V +35 139 V +35 -14 V +35 -127 V +35 57 V +35 -30 V +35 72 V +35 -38 V +34 -3 V +35 -19 V +35 87 V +35 8 V +35 -128 V +35 83 V +35 -69 V +35 97 V +34 -27 V +35 10 V +35 37 V +35 -56 V +35 57 V +35 -127 V +35 91 V +34 -20 V +35 83 V +35 -32 V +35 -54 V +35 83 V +35 -155 V +35 69 V +35 -28 V +34 97 V +35 -96 V +35 -1 V +35 124 V +35 -37 V +35 -5 V +35 -98 V +35 31 V +34 -60 V +35 87 V +35 -49 V +35 24 V +35 -54 V +35 120 V +35 25 V +35 3 V +34 -2 V +35 -70 V +35 -75 V +35 137 V +35 21 V +35 -16 V +35 -49 V +35 -23 V +34 23 V +35 49 V +35 16 V +35 -21 V +35 -137 V +35 75 V +35 70 V +34 2 V +35 -3 V +35 -25 V +35 -120 V +35 54 V +35 -24 V +35 49 V +35 -87 V +34 60 V +35 -31 V +35 98 V +35 5 V +35 37 V +35 -124 V +35 1 V +35 96 V +34 -97 V +35 28 V +35 -69 V +35 155 V +35 -83 V +35 54 V +35 32 V +35 -83 V +34 20 V +35 -91 V +35 127 V +35 -57 V +35 56 V +35 -37 V +35 -10 V +34 27 V +35 -97 V +35 69 V +35 -83 V +35 128 V +35 -8 V +35 -87 V +35 19 V +34 3 V +35 38 V +35 -72 V +35 30 V +35 -57 V +35 127 V +35 14 V +35 -139 V +34 33 V +35 -7 V +35 93 V +35 -47 V +35 -20 V +35 110 V +35 -75 V +35 6 V +34 14 V +35 58 V +35 -164 V +35 68 V +35 -19 V +35 -23 V +35 -12 V +34 -9 V +35 76 V +35 25 V +35 10 V +35 -24 V +35 -65 V +35 6 V +35 90 V +34 30 V +35 -88 V +35 99 V +35 -122 V +35 -30 V +35 -8 V +35 126 V +35 -64 V +34 -26 V +35 -27 V +35 96 V +35 -81 V +35 29 V +35 19 V +35 19 V +35 29 V +34 -57 V +35 -68 V +35 88 V +35 -84 V +35 70 V +35 61 V +35 -51 V +34 -44 V +35 37 V +35 31 V +35 -26 V +35 -21 V +35 18 V +35 14 V +35 -12 V +34 -9 V +35 8 V +35 5 V +35 -5 V +35 -3 V +35 3 V +35 2 V +35 -2 V +34 -1 V +35 1 V +35 1 V +stroke 10110 6531 M +35 -1 V +35 0 V +35 0 V +35 0 V +35 0 V +34 0 V +35 0 V +35 0 V +35 0 V +1973 5737 Pnt +% End plot #2 +% Begin plot #3 +2.000 UP +0.500 UL +LTb +0.93 0.69 0.13 C 0.00 0.00 0.00 C 2328 5332 M +[ [(Helvetica) 180.0 0.0 true true 0 (Integer 16 bits)] +] -60.0 MLshow +2.000 UP +0.500 UL +LTb +0.93 0.69 0.13 C 1725 5332 M +495 0 V +1497 6530 M +35 0 V +35 0 V +35 0 V +34 0 V +35 0 V +35 0 V +35 0 V +35 0 V +35 1 V +35 -1 V +35 -1 V +34 1 V +35 2 V +35 -2 V +35 -3 V +35 3 V +35 5 V +35 -5 V +35 3 V +34 -2 V +35 1 V +35 -3 V +35 5 V +35 -2 V +35 3 V +35 -8 V +35 -2 V +34 9 V +35 -6 V +35 7 V +35 -1 V +35 -7 V +35 3 V +35 0 V +34 0 V +35 5 V +35 -7 V +35 3 V +35 -6 V +35 0 V +35 7 V +35 -7 V +34 4 V +35 -5 V +35 11 V +35 -3 V +35 -5 V +35 9 V +35 -8 V +35 8 V +34 -8 V +35 1 V +35 6 V +35 -4 V +35 1 V +35 2 V +35 -1 V +35 3 V +34 -4 V +35 2 V +35 1 V +35 -5 V +35 -1 V +35 6 V +35 1 V +34 -4 V +35 -8 V +35 9 V +35 -6 V +35 6 V +35 0 V +35 1 V +35 -3 V +34 -2 V +35 1 V +35 0 V +35 0 V +35 -2 V +35 1 V +35 -4 V +35 10 V +34 -7 V +35 2 V +35 -1 V +35 -1 V +35 5 V +35 1 V +35 -8 V +35 8 V +34 -9 V +35 9 V +35 -4 V +35 1 V +35 -3 V +35 -3 V +35 4 V +34 3 V +35 0 V +35 2 V +35 -6 V +35 4 V +35 1 V +35 2 V +35 -2 V +34 -8 V +35 4 V +35 1 V +35 1 V +35 -6 V +35 5 V +35 -3 V +35 -2 V +34 3 V +35 7 V +35 -7 V +35 -1 V +35 5 V +35 -2 V +35 3 V +35 -3 V +34 5 V +35 -2 V +35 -7 V +35 5 V +35 -4 V +35 4 V +35 3 V +35 -4 V +34 4 V +35 -3 V +35 -4 V +35 4 V +35 -5 V +35 7 V +35 2 V +34 -5 V +35 3 V +35 -3 V +35 2 V +35 -5 V +35 1 V +35 7 V +35 -7 V +34 -3 V +35 2 V +35 3 V +35 -5 V +35 6 V +35 -1 V +35 -1 V +35 -4 V +34 8 V +35 2 V +35 -2 V +35 -1 V +35 -4 V +35 6 V +35 -2 V +35 0 V +34 -3 V +35 -4 V +35 3 V +35 3 V +35 -1 V +35 4 V +35 -9 V +34 9 V +35 -8 V +35 8 V +35 -1 V +35 -5 V +35 1 V +35 1 V +35 -2 V +34 7 V +35 -10 V +35 4 V +35 -1 V +35 2 V +35 0 V +35 0 V +35 -1 V +34 2 V +35 3 V +35 -1 V +35 0 V +35 -6 V +35 6 V +35 -9 V +35 8 V +34 4 V +35 -1 V +35 -6 V +35 1 V +35 5 V +35 -1 V +35 -2 V +34 4 V +35 -3 V +35 1 V +35 -2 V +35 -1 V +35 4 V +35 -6 V +35 -1 V +34 8 V +35 -8 V +35 8 V +35 -9 V +35 5 V +35 3 V +35 -11 V +35 5 V +34 -4 V +35 7 V +35 -7 V +35 0 V +35 6 V +35 -3 V +35 7 V +35 -5 V +34 0 V +35 0 V +35 -3 V +35 7 V +35 1 V +35 -7 V +35 6 V +34 -9 V +35 2 V +35 8 V +35 -3 V +35 2 V +35 -5 V +35 3 V +35 -1 V +34 2 V +35 -3 V +35 5 V +35 -5 V +35 -3 V +35 3 V +35 2 V +35 -2 V +34 -1 V +35 1 V +35 1 V +stroke 10110 6531 M +35 -1 V +35 0 V +35 0 V +35 0 V +35 0 V +34 0 V +35 0 V +35 0 V +35 0 V +1973 5332 Pnt +% End plot #3 +2.000 UL +LTb +LCb setrgbcolor +1.000 UP +0.500 UL +[] 0 setdash +PL 0.15 0.15 0.15 C 1497 5067 M +8927 0 V +stroke +[] 0 setdash +0.15 0.15 0.15 C 1497 5067 M +0 2924 V +stroke +1.000 UL +LTb +0.00 0.00 0.00 C grestore % colour palette end +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: :Bold Helvetica diff --git a/images/float-vs-integer.pdf b/images/float-vs-integer.pdf new file mode 100644 index 0000000000000000000000000000000000000000..656a8ce3f25e56c9f3c1b46b5bbbfa69050ec8e9 GIT binary patch literal 9383 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 literal 0 HcmV?d00001