
apl>" <-APL2-------------------- sam321.txt ---------------------------->


apl>)run cap2/sample/graph.inc


apl>" <-APL2-------------------- graph.txt ----------------------------->


apl>" Legend describing various global values:


apl>"


apl>" World coordinates(wc) are those of the real data.


apl>" Graph coordinates(gc) are those of the graph.


apl>"


apl>" caption - Override to text for graph caption.  If null, a caption


apl>"           will be generated.  The graph function resets the global


apl>"           caption variable to null at the end of its processing.


apl>"


apl>" hk ------ Constant coefficient of input.  If xr=1 (see below) then


apl>"           hk becomes the constant imaginary coefficient for all


apl>"           values of x on the graph.  If xr=0, hk will be the constant


apl>"           real coefficient.


apl>"


apl>" htl ----- 0 = both, 1 = headers, 2 = trailers, 3 = neither.


apl>"


apl>" maxx ---- Maximum x axis value in world coordinates.


apl>"


apl>" maxy ---- Maximum y axis value in world coordinates.


apl>"


apl>" minx ---- Minimum x axis value in world coordinates.


apl>"


apl>" miny ---- Minimum y axis value in world coordinates.


apl>"


apl>" mgc ----- Vertical margin in graphic coordinates.


apl>"


apl>" n ------- Synonymous with hk (see above).  The x values to which


apl>"           the function is applied to obtain y values are derived


apl>"           by first creating xwc as a vector of integers uniformly


apl>"           distributed between minx and maxx inclusive.  Then, either


apl>"           'x#(nX0j1)+xwc' or 'x#n+0j1Xxwc' is evaluated.


apl>"


apl>" nlb ----- 1 = Label the curve with the n value.


apl>"


apl>" points -- Number of points to generate.


apl>"


apl>" xgc ----- Array of x values for data points in graph coordinates.


apl>"


apl>" xiv ----- x axis marker interval in world coordinates.


apl>"


apl>" xlin ---- Width of graph in inches.


apl>"


apl>" xpg ----- Divide xwc by xpg to get xgc.


apl>"


apl>" xpi ----- Array of three values for minx, maxx, and xiv, used when


apl>"           invoking the graph function and the array of x values


apl>"           spans -pi to +pi.


apl>"


apl>" xr ------ 1=vary real x coefficient, 0=vary imaginary coefficient,


apl>"           holding the other coefficient to the constant hk (see above.).


apl>"


apl>" xt ------ Used in a variety of places to temporarily generate


apl>"           graphics coordinates.


apl>"


apl>" xwc ----- Array of x values in world coordinates.


apl>"


apl>" yadj ---- Adjustment down to print text below a line.


apl>"


apl>" yabm ---- Maximum absolute value (|y) to appear on graph.


apl>"


apl>" ygc ----- Array of y values for data points in graph coordinates.


apl>"


apl>" ylin ---- Height of graph in inches.


apl>"


apl>" ymgn ---- Margin in inches at top and bottom of y axis.


apl>"


apl>" ypg ----- Divide ywc by ypg to get ygc.


apl>"


apl>" yt ------ Used in a variety of places to temporarily generate


apl>"           graphics coordinates.


apl>"


apl>" ywc ----- Array of y values for data points in world coordinates.


apl>"


apl>" Set global values. -------------------------------------------->


apl>"


apl>caption#'' " Empty caption causes one to be generated.


apl>i#11 " Circle function code to extract imag. coef. of complex number.


apl>points#200 " Number of data points to generate on graph.


apl>r#9 " Circle function code to extract real coef. of complex number.


apl>xlin#4.5 " Width of graph in inches.


apl>"  minx = -3.14159....


apl>"  |     maxx = 3.14159....


apl>"  |     |     xiv


apl>"  |     |     |


apl>"  V     V     V


apl>xpi#(O-1),(O1),O.25


apl>ylin#6 " Height of graph in inches.


apl>ymgn#.2 " Margin in inches at top and bottom of y axis.


apl>"


apl>" <----------------------------------------------------------------->


apl>" Generates the LaTeX \put statements for the data points to appear


apl>" on the graph.


apl>"


apl>Lex 'dodata'

1

apl>Gdodata


[1]       xgc#(xwc_minx)%xpg " xgc=x graphic coordinates for data points.


[2]       ygc#mgc+(ywc_miny)%ypg " ygc=y graphic coordinates for data points.


[3]       $bylabXI0=nlb " Branch if the curve is not to be labelled.


[4]       '%Label the curve'


[5]       xt#1Y(u=S/u#|ywc)/xgc " x coord where maximum/mininum occurs


[6]       yt#(_yadjX0>vs/ywc)+(vs#xt=xgc)/ygc " y coord of maximum/minimum


[7]       " Note: Calculation for yt works only if all minima occur below


[8]       " y axis, and all maxima occur above.


[9]       pcon,(xt,',',[1.5]yt),`Z'){n\#',(Fhk),'}'


[10]      bylab:'%Draw the data points'


[11]      pcon,((xgc#-1U1Uxgc),',',[1.5](ygc#-1U1Uygc)),circon


[12]      G


apl>" <----------------------------------------------------------------->


apl>" Generate xwc and ywc, the arrays of x/y coordinates for the data


apl>" points to appear on the graph.


apl>"


apl>Lex 'genxy'

1

apl>Ggenxy


[1]       xwc#minx+(xlwc#maxx_minx)X(-1+Ipoints+1)%points


[2]       $varyrealXIxr


[3]       x#hk+0j1Xxwc " real part is constant, imaginary varies.


[4]       $calcy " Branch to compute values of y for data points.


[5]       varyreal:x#(hkX0j1)+xwc " Imaginary is constant, real varies.


[6]       calcy:ywc#eOCfun " Compute values of y for data points


[7]       ywcm#yabm>|ywc " Mask of keepers, magnitudes of y < yabm.


[8]       xwc#ywcm/xwc " Pick the keepers.


[9]       ywc#ywcm/ywc " Pick the keepers.


[10]      G


apl>"


apl>" <----------------------------------------------------------------->


apl>" Main graph routine.


apl>"


apl>Lex 'graph'

1

apl>Gfun graph a


[1]       "Graphs the imaginary or real coefficient of result of fun.


[2]       " fun = expression to evaluate.


[3]       (htl nlb xr e yabm minx maxx xiv hk yiv yca)#a


[4]       genxy " Generate the data points.


[5]       $dataXIhtl>1 " Branch if htl greater than 1.


[6]       scale " Calculate global scaling values.


[7]       headers " Generate LaTeX figure headers.


[8]       data:dodata " Process and graph data points.


[9]       trailers " Generate Latex figure trailers, maybe.


[10]      G


apl>"


apl>" <----------------------------------------------------------------->


apl>" Generates the LaTeX statements to begin the graph.


apl>"


apl>Lex 'headers'

1

apl>Gheaders


[1]       '\begin{figure}[tbh]'


[2]       $gencapXI0=Rcaption " Branch if no caption override.


[3]       '\caption{',caption,'}'


[4]       $begin


[5]       gencap:$realcapXI(xr=1)&hk=0 " Branch if x data are not complex.


[6]       $ncaptionXInlb=0 " Branch if curves are not labelled with n value.


[7]       '\caption{Graph of y\#',(Fe),'O',fun,'+nX0j1}'


[8]       $begin


[9]       ncaption:$cplxcapXIxr " Branch if varying real coefficient.


[10]      '\caption{Graph of y\#',(Fe),'O',(-1Ufun),(Fhk),'+xX0j1}'


[11]      $begin


[12]      cplxcap:'\caption{Graph of y\#',(Fe),'O',fun,'+(n\#',(Fhk),')X0j1}'


[13]      $begin


[14]      realcap:'\caption{Graph of y\#',fun,'}'


[15]      begin:'\begin{center}'


[16]      '\setlength{\unitlength}{',(Flin),'in}'


[17]      '\begin{picture}(',(Fxlin%lin),',',(Fylin%lin),')'


[18]      '%Draw a frame around the picture'


[19]      ' \put(0,0){\line(1,0){',(Fxlgc),'}}% bottom'


[20]      ' \put(0,0){\line(0,1){',(Fylgc),'}}% left'


[21]      ' \put(0,',(Fylgc),'){\line(1,0){',(Fxlgc),'}}% top'


[22]      ' \put(',(Fxlgc),',0){\line(0,1){',(Fylgc),'}}% right'


[23]      '%Draw the x axis'


[24]      ' \put(0,',(Fxax),'){\line(1,0){',(Fxlgc),'}}%x axis'


[25]      xt#xoff%xpg


[26]      pcon,((xt,[1.5]','),xax),circon " Draw the x axis markers.


[27]      xt#xt_xpgX.1Xxmk<0


[28]      yt#xax+((.05%lin)Xxax=mgc)_yadjXxax>mgc


[29]      $dopaxXIpix


[30]      '%Draw the x axis marker values'


[31]      pcon,xt,',',yt,econ,xmk,[1.5]scon


[32]      $doyax


[33]      dopax:'%Draw the x axis marker values in pi'


[34]      picon#(`Z'\frac{') ,`1 '\pi}{4}' '\pi}{2}' '3\pi}{4}'


[35]      picon#('-',`1`Rpicon),'0',picon


[36]      pcon,xt,',',yt,econ,picon,[1.5]scon


[37]      doyax:'%Draw the y axis'


[38]      $putymkXI(yax=0)


[39]      ' \put(',(Fyax),',0){\line(0,1){',(Fylgc),'}}%y axis'


[40]      putymk:'%Draw the y axis markers'


[41]      ymask#ymk^=0


[42]      yt#ymask/mgc+(ymk_miny)%ypg


[43]      pcon,yax,',',yt,[1.5]circon


[44]      '%Draw the y axis marker values'


[45]      xt#yax+.05%lin


[46]      yt#yt_ypgX.1X(ymask/ymk)<0


[47]      pcon,xt,',',yt,econ,(ymask/ymk),[1.5]scon


[48]      G


apl>"


apl>" <----------------------------------------------------------------->


apl>" Calculates a variety of values needed to produce the graph.


apl>"


apl>Lex 'scale'

1

apl>Gscale


[1]       $byyXIyca " Branch if ylwc, maxy, miny are precalculated.


[2]       ylwc#(maxy#S/ywc)_miny#D/ywc


[3]       byy:ylap#ylin_2Xymgn " ylap=height allowed for data points.


[4]       lin#(xlin%xlwc)Dylap%ylwc " unitlength in inches.


[5]       yadj#.14%lin " y graphic coordinate adjustment to print text below line.


[6]       mgc#ymgn%lin " Margin in graph coordinates.


[7]       xpg#xlwc%xlgc#xlin%lin " Divide xwc by xpg to get gc.


[8]       ypg#ylwc%(_2Xymgn%lin)+ylgc#ylin%lin " Divide ywc by ypg to get gc.


[9]       xax#(yz#(minyK0)&maxyZ0)Xmgc+(|miny)%ypg " xaxis in graph coordinates.


[10]      yax#(xz#(minx<0)&maxx>0)X(|minx)%xpg " yaxis in graph coordinates.


[11]      $piaxisXIpix#(minx=O-1)&maxx=O1 " branch if pi units on x axis.


[12]      xic#(yax=0)+Dxlwc%xiv


[13]      $doyiv


[14]      piaxis:xic#Dxlwc%xiv#O.25


[15]      doyiv:$doyicXIyiv^=0


[16]      yiv#10*D10@ylwc


[17]      doyic:yic#yic+0=2|yic#Dylwc%yiv


[18]      xoff#(I-1+xic)Xxiv " Offset from minx in world coord. of x markers.


[19]      yoff#(_yiv)+(Iyic)Xyiv " Offset from miny in world coord. of y markers.


[20]      $yoffplusXIminy>0


[21]      ymk#yoff+miny+yiv||miny


[22]      $yoffdone


[23]      yoffplus:ymk#yoff+miny_yiv|miny " y for y axis markers in world coord.


[24]      yoffdone:xmk#minx+xoff " x for x axis markers in world coord.


[25]      circon#`Z'){\circle*{',(F.0205%lin),'}}'


[26]      scon#`Z'$}'


[27]      econ#`Z'){$'


[28]      pcon#`Z' \put('


[29]      G


apl>"


apl>" <----------------------------------------------------------------->


apl>" Generates the LaTeX statements to finish the graph.


apl>"


apl>Lex 'trailers'

1

apl>Gtrailers


[1]       $epicXIhtl=0 " Branch if both headers and trailers.


[2]       $eojckXInlb " Branch if graph already labelled.


[3]       pcon,(1Yxgc+xpgX.1),',',(1Yygc),'){',fun,'}' " Label the graph.


[4]       eojck:$eojXI(htl=1)+htl=3 " br if headers only, or neither.


[5]       epic:'\end{picture}'


[6]       '\end{center}'


[7]       eoj:'%Finis.'


[8]       caption#'' " Reset global caption


[9]       G


apl>"            htl: 0=both, 1=headers, 2=trailers, 3=neither.


apl>"            | nlb 1 = Label the curve.


apl>"            | | xr = 1=vary real x coeff, 0=vary imaginary coeff.


apl>"            | | | e = i(11) or r(9) to select coefficient to graph.


apl>"            | | | | yabm = maximum |y printed on graph.


apl>"            | | | | |   minx = minimum value of x.


apl>"            | | | | |   |   maxx = maximum value of x.


apl>"            | | | | |   |   |  xiv = x axis marker interval.


apl>"            | | | | |   |   |  | hk = Constant coefficient of input.


apl>"            | | | | |   |   |  | |     yiv = y axis marker interval, or 0.


apl>"            | | | | |   |   |  | |     |   yca = ylwc, maxy, miny are precalculated.


apl>"            | | | | |   |   |  | |     |   |


apl>"            V V V V V   V   V  V V     V   V


apl>ylwc#(maxy#2)_miny#-2


apl> '7Ox' graph 1,1,1,i,2  ,-5 ,5 ,1,1   , .5 ,1 " tanhdaty.tex

\begin{figure}[tbh]
\caption{Graph of y\#11O7Ox+nX0j1}
\begin{center}
\setlength{\unitlength}{ .45in}
\begin{picture}(10,13.33333)
%Draw a frame around the picture
 \put(0,0){\line(1,0){10}}% bottom
 \put(0,0){\line(0,1){13.33333}}% left
 \put(0,13.33333){\line(1,0){10}}% top
 \put(10,0){\line(0,1){13.33333}}% right
%Draw the x axis
 \put(0,6.666667){\line(1,0){10}}%x axis
  \put( 1 , 6.666667 ){\circle*{ .04555556}} 
  \put( 2 , 6.666667 ){\circle*{ .04555556}} 
  \put( 3 , 6.666667 ){\circle*{ .04555556}} 
  \put( 4 , 6.666667 ){\circle*{ .04555556}} 
  \put( 5 , 6.666667 ){\circle*{ .04555556}} 
  \put( 6 , 6.666667 ){\circle*{ .04555556}} 
  \put( 7 , 6.666667 ){\circle*{ .04555556}} 
  \put( 8 , 6.666667 ){\circle*{ .04555556}} 
  \put( 9 , 6.666667 ){\circle*{ .04555556}} 
%Draw the x axis marker values
  \put(  .9 , 6.355556 ){$ -4 $} 
  \put( 1.9 , 6.355556 ){$ -3 $} 
  \put( 2.9 , 6.355556 ){$ -2 $} 
  \put( 3.9 , 6.355556 ){$ -1 $} 
  \put(   5 , 6.355556 ){$  0 $} 
  \put(   6 , 6.355556 ){$  1 $} 
  \put(   7 , 6.355556 ){$  2 $} 
  \put(   8 , 6.355556 ){$  3 $} 
  \put(   9 , 6.355556 ){$  4 $} 
%Draw the y axis
 \put(5,0){\line(0,1){13.33333}}%y axis
%Draw the y axis markers
  \put( 5 ,  .44444444 ){\circle*{ .04555556}} 
  \put( 5 ,          2 ){\circle*{ .04555556}} 
  \put( 5 ,   3.555556 ){\circle*{ .04555556}} 
  \put( 5 ,   5.111111 ){\circle*{ .04555556}} 
  \put( 5 ,   8.222222 ){\circle*{ .04555556}} 
  \put( 5 ,    9.77778 ){\circle*{ .04555556}} 
  \put( 5 ,   11.33333 ){\circle*{ .04555556}} 
  \put( 5 ,   12.88889 ){\circle*{ .04555556}} 
%Draw the y axis marker values
  \put( 5.111111 ,  .41230159 ){$   -2 $} 
  \put( 5.111111 ,   1.967857 ){$ -1.5 $} 
  \put( 5.111111 ,   3.523413 ){$   -1 $} 
  \put( 5.111111 ,   5.078968 ){$ -0.5 $} 
  \put( 5.111111 ,   8.222222 ){$   .5 $} 
  \put( 5.111111 ,    9.77778 ){$    1 $} 
  \put( 5.111111 ,   11.33333 ){$  1.5 $} 
  \put( 5.111111 ,   12.88889 ){$    2 $} 
%Label the curve
  \put( 5 , 11.51194   ){n\#1} 
%Draw the data points
  \put(   .05 ,  6.66695   ){\circle*{ .04555556}} 
  \put(    .1 ,  6.66698   ){\circle*{ .04555556}} 
  \put(   .15 , 6.667013   ){\circle*{ .04555556}} 
  \put(    .2 , 6.667050   ){\circle*{ .04555556}} 
  \put(   .25 ,  6.66709   ){\circle*{ .04555556}} 
  \put(    .3 , 6.667135   ){\circle*{ .04555556}} 
  \put(   .35 , 6.667184   ){\circle*{ .04555556}} 
  \put(    .4 , 6.667238   ){\circle*{ .04555556}} 
  \put(   .45 , 6.667299   ){\circle*{ .04555556}} 
  \put(    .5 , 6.667365   ){\circle*{ .04555556}} 
  \put(   .55 , 6.667438   ){\circle*{ .04555556}} 
  \put(    .6 , 6.667520   ){\circle*{ .04555556}} 
  \put(   .65 , 6.667609   ){\circle*{ .04555556}} 
  \put(    .7 , 6.667708   ){\circle*{ .04555556}} 
  \put(   .75 , 6.667818   ){\circle*{ .04555556}} 
  \put(    .8 , 6.667939   ){\circle*{ .04555556}} 
  \put(   .85 , 6.668073   ){\circle*{ .04555556}} 
  \put(    .9 , 6.668221   ){\circle*{ .04555556}} 
  \put(   .95 , 6.668384   ){\circle*{ .04555556}} 
  \put(     1 , 6.668565   ){\circle*{ .04555556}} 
  \put(  1.05 , 6.668765   ){\circle*{ .04555556}} 
  \put(   1.1 , 6.668986   ){\circle*{ .04555556}} 
  \put(  1.15 , 6.669230   ){\circle*{ .04555556}} 
  \put(   1.2 , 6.669499   ){\circle*{ .04555556}} 
  \put(  1.25 , 6.669797   ){\circle*{ .04555556}} 
  \put(   1.3 , 6.670127   ){\circle*{ .04555556}} 
  \put(  1.35 , 6.670491   ){\circle*{ .04555556}} 
  \put(   1.4 , 6.670893   ){\circle*{ .04555556}} 
  \put(  1.45 , 6.671338   ){\circle*{ .04555556}} 
  \put(   1.5 , 6.671830   ){\circle*{ .04555556}} 
  \put(  1.55 , 6.672373   ){\circle*{ .04555556}} 
  \put(   1.6 , 6.672974   ){\circle*{ .04555556}} 
  \put(  1.65 , 6.673638   ){\circle*{ .04555556}} 
  \put(   1.7 , 6.674372   ){\circle*{ .04555556}} 
  \put(  1.75 , 6.675184   ){\circle*{ .04555556}} 
  \put(   1.8 ,  6.67608   ){\circle*{ .04555556}} 
  \put(  1.85 , 6.677072   ){\circle*{ .04555556}} 
  \put(   1.9 , 6.678168   ){\circle*{ .04555556}} 
  \put(  1.95 ,  6.67938   ){\circle*{ .04555556}} 
  \put(     2 ,  6.68072   ){\circle*{ .04555556}} 
  \put(  2.05 , 6.682201   ){\circle*{ .04555556}} 
  \put(   2.1 , 6.683839   ){\circle*{ .04555556}} 
  \put(  2.15 ,  6.68565   ){\circle*{ .04555556}} 
  \put(   2.2 , 6.687653   ){\circle*{ .04555556}} 
  \put(  2.25 , 6.689868   ){\circle*{ .04555556}} 
  \put(   2.3 , 6.692317   ){\circle*{ .04555556}} 
  \put(  2.35 , 6.695025   ){\circle*{ .04555556}} 
  \put(   2.4 , 6.698022   ){\circle*{ .04555556}} 
  \put(  2.45 , 6.701336   ){\circle*{ .04555556}} 
  \put(   2.5 , 6.705002   ){\circle*{ .04555556}} 
  \put(  2.55 , 6.709059   ){\circle*{ .04555556}} 
  \put(   2.6 , 6.713547   ){\circle*{ .04555556}} 
  \put(  2.65 , 6.718515   ){\circle*{ .04555556}} 
  \put(   2.7 , 6.724012   ){\circle*{ .04555556}} 
  \put(  2.75 , 6.730098   ){\circle*{ .04555556}} 
  \put(   2.8 , 6.736836   ){\circle*{ .04555556}} 
  \put(  2.85 , 6.744298   ){\circle*{ .04555556}} 
  \put(   2.9 , 6.752562   ){\circle*{ .04555556}} 
  \put(  2.95 , 6.761717   ){\circle*{ .04555556}} 
  \put(     3 , 6.771862   ){\circle*{ .04555556}} 
  \put(  3.05 , 6.783106   ){\circle*{ .04555556}} 
  \put(   3.1 , 6.795573   ){\circle*{ .04555556}} 
  \put(  3.15 , 6.809398   ){\circle*{ .04555556}} 
  \put(   3.2 , 6.824737   ){\circle*{ .04555556}} 
  \put(  3.25 ,  6.84176   ){\circle*{ .04555556}} 
  \put(   3.3 ,  6.86066   ){\circle*{ .04555556}} 
  \put(  3.35 , 6.881653   ){\circle*{ .04555556}} 
  \put(   3.4 , 6.904982   ){\circle*{ .04555556}} 
  \put(  3.45 ,  6.93092   ){\circle*{ .04555556}} 
  \put(   3.5 , 6.959774   ){\circle*{ .04555556}} 
  \put(  3.55 , 6.991889   ){\circle*{ .04555556}} 
  \put(   3.6 , 7.027656   ){\circle*{ .04555556}} 
  \put(  3.65 , 7.067516   ){\circle*{ .04555556}} 
  \put(   3.7 , 7.111966   ){\circle*{ .04555556}} 
  \put(  3.75 , 7.161568   ){\circle*{ .04555556}} 
  \put(   3.8 , 7.216956   ){\circle*{ .04555556}} 
  \put(  3.85 , 7.278846   ){\circle*{ .04555556}} 
  \put(   3.9 , 7.348046   ){\circle*{ .04555556}} 
  \put(  3.95 , 7.425465   ){\circle*{ .04555556}} 
  \put(     4 , 7.512119   ){\circle*{ .04555556}} 
  \put(  4.05 , 7.609144   ){\circle*{ .04555556}} 
  \put(   4.1 , 7.717793   ){\circle*{ .04555556}} 
  \put(  4.15 , 7.839439   ){\circle*{ .04555556}} 
  \put(   4.2 , 7.975556   ){\circle*{ .04555556}} 
  \put(  4.25 ,  8.12769   ){\circle*{ .04555556}} 
  \put(   4.3 , 8.297405   ){\circle*{ .04555556}} 
  \put(  4.35 , 8.486183   ){\circle*{ .04555556}} 
  \put(   4.4 , 8.695285   ){\circle*{ .04555556}} 
  \put(  4.45 , 8.925521   ){\circle*{ .04555556}} 
  \put(   4.5 , 9.176952   ){\circle*{ .04555556}} 
  \put(  4.55 , 9.448470   ){\circle*{ .04555556}} 
  \put(   4.6 , 9.73729    ){\circle*{ .04555556}} 
  \put(  4.65 , 10.03836   ){\circle*{ .04555556}} 
  \put(   4.7 , 10.34385   ){\circle*{ .04555556}} 
  \put(  4.75 , 10.64279   ){\circle*{ .04555556}} 
  \put(   4.8 , 10.92117   ){\circle*{ .04555556}} 
  \put(  4.85 , 11.16279   ){\circle*{ .04555556}} 
  \put(   4.9 , 11.35094   ){\circle*{ .04555556}} 
  \put(  4.95 , 11.47076   ){\circle*{ .04555556}} 
  \put(     5 , 11.51194   ){\circle*{ .04555556}} 
  \put(  5.05 , 11.47076   ){\circle*{ .04555556}} 
  \put(   5.1 , 11.35094   ){\circle*{ .04555556}} 
  \put(  5.15 , 11.16279   ){\circle*{ .04555556}} 
  \put(   5.2 , 10.92117   ){\circle*{ .04555556}} 
  \put(  5.25 , 10.64279   ){\circle*{ .04555556}} 
  \put(   5.3 , 10.34385   ){\circle*{ .04555556}} 
  \put(  5.35 , 10.03836   ){\circle*{ .04555556}} 
  \put(   5.4 , 9.73729    ){\circle*{ .04555556}} 
  \put(  5.45 , 9.448470   ){\circle*{ .04555556}} 
  \put(   5.5 , 9.176952   ){\circle*{ .04555556}} 
  \put(  5.55 , 8.925521   ){\circle*{ .04555556}} 
  \put(   5.6 , 8.695285   ){\circle*{ .04555556}} 
  \put(  5.65 , 8.486183   ){\circle*{ .04555556}} 
  \put(   5.7 , 8.297405   ){\circle*{ .04555556}} 
  \put(  5.75 ,  8.12769   ){\circle*{ .04555556}} 
  \put(   5.8 , 7.975556   ){\circle*{ .04555556}} 
  \put(  5.85 , 7.839439   ){\circle*{ .04555556}} 
  \put(   5.9 , 7.717793   ){\circle*{ .04555556}} 
  \put(  5.95 , 7.609144   ){\circle*{ .04555556}} 
  \put(     6 , 7.512119   ){\circle*{ .04555556}} 
  \put(  6.05 , 7.425465   ){\circle*{ .04555556}} 
  \put(   6.1 , 7.348046   ){\circle*{ .04555556}} 
  \put(  6.15 , 7.278846   ){\circle*{ .04555556}} 
  \put(   6.2 , 7.216956   ){\circle*{ .04555556}} 
  \put(  6.25 , 7.161568   ){\circle*{ .04555556}} 
  \put(   6.3 , 7.111966   ){\circle*{ .04555556}} 
  \put(  6.35 , 7.067516   ){\circle*{ .04555556}} 
  \put(   6.4 , 7.027656   ){\circle*{ .04555556}} 
  \put(  6.45 , 6.991889   ){\circle*{ .04555556}} 
  \put(   6.5 , 6.959774   ){\circle*{ .04555556}} 
  \put(  6.55 ,  6.93092   ){\circle*{ .04555556}} 
  \put(   6.6 , 6.904982   ){\circle*{ .04555556}} 
  \put(  6.65 , 6.881653   ){\circle*{ .04555556}} 
  \put(   6.7 ,  6.86066   ){\circle*{ .04555556}} 
  \put(  6.75 ,  6.84176   ){\circle*{ .04555556}} 
  \put(   6.8 , 6.824737   ){\circle*{ .04555556}} 
  \put(  6.85 , 6.809398   ){\circle*{ .04555556}} 
  \put(   6.9 , 6.795573   ){\circle*{ .04555556}} 
  \put(  6.95 , 6.783106   ){\circle*{ .04555556}} 
  \put(     7 , 6.771862   ){\circle*{ .04555556}} 
  \put(  7.05 , 6.761717   ){\circle*{ .04555556}} 
  \put(   7.1 , 6.752562   ){\circle*{ .04555556}} 
  \put(  7.15 , 6.744298   ){\circle*{ .04555556}} 
  \put(   7.2 , 6.736836   ){\circle*{ .04555556}} 
  \put(  7.25 , 6.730098   ){\circle*{ .04555556}} 
  \put(   7.3 , 6.724012   ){\circle*{ .04555556}} 
  \put(  7.35 , 6.718515   ){\circle*{ .04555556}} 
  \put(   7.4 , 6.713547   ){\circle*{ .04555556}} 
  \put(  7.45 , 6.709059   ){\circle*{ .04555556}} 
  \put(   7.5 , 6.705002   ){\circle*{ .04555556}} 
  \put(  7.55 , 6.701336   ){\circle*{ .04555556}} 
  \put(   7.6 , 6.698022   ){\circle*{ .04555556}} 
  \put(  7.65 , 6.695025   ){\circle*{ .04555556}} 
  \put(   7.7 , 6.692317   ){\circle*{ .04555556}} 
  \put(  7.75 , 6.689868   ){\circle*{ .04555556}} 
  \put(   7.8 , 6.687653   ){\circle*{ .04555556}} 
  \put(  7.85 ,  6.68565   ){\circle*{ .04555556}} 
  \put(   7.9 , 6.683839   ){\circle*{ .04555556}} 
  \put(  7.95 , 6.682201   ){\circle*{ .04555556}} 
  \put(     8 ,  6.68072   ){\circle*{ .04555556}} 
  \put(  8.05 ,  6.67938   ){\circle*{ .04555556}} 
  \put(   8.1 , 6.678168   ){\circle*{ .04555556}} 
  \put(  8.15 , 6.677072   ){\circle*{ .04555556}} 
  \put(   8.2 ,  6.67608   ){\circle*{ .04555556}} 
  \put(  8.25 , 6.675184   ){\circle*{ .04555556}} 
  \put(   8.3 , 6.674372   ){\circle*{ .04555556}} 
  \put(  8.35 , 6.673638   ){\circle*{ .04555556}} 
  \put(   8.4 , 6.672974   ){\circle*{ .04555556}} 
  \put(  8.45 , 6.672373   ){\circle*{ .04555556}} 
  \put(   8.5 , 6.671830   ){\circle*{ .04555556}} 
  \put(  8.55 , 6.671338   ){\circle*{ .04555556}} 
  \put(   8.6 , 6.670893   ){\circle*{ .04555556}} 
  \put(  8.65 , 6.670491   ){\circle*{ .04555556}} 
  \put(   8.7 , 6.670127   ){\circle*{ .04555556}} 
  \put(  8.75 , 6.669797   ){\circle*{ .04555556}} 
  \put(   8.8 , 6.669499   ){\circle*{ .04555556}} 
  \put(  8.85 , 6.669230   ){\circle*{ .04555556}} 
  \put(   8.9 , 6.668986   ){\circle*{ .04555556}} 
  \put(  8.95 , 6.668765   ){\circle*{ .04555556}} 
  \put(     9 , 6.668565   ){\circle*{ .04555556}} 
  \put(  9.05 , 6.668384   ){\circle*{ .04555556}} 
  \put(   9.1 , 6.668221   ){\circle*{ .04555556}} 
  \put(  9.15 , 6.668073   ){\circle*{ .04555556}} 
  \put(   9.2 , 6.667939   ){\circle*{ .04555556}} 
  \put(  9.25 , 6.667818   ){\circle*{ .04555556}} 
  \put(   9.3 , 6.667708   ){\circle*{ .04555556}} 
  \put(  9.35 , 6.667609   ){\circle*{ .04555556}} 
  \put(   9.4 , 6.667520   ){\circle*{ .04555556}} 
  \put(  9.45 , 6.667438   ){\circle*{ .04555556}} 
  \put(   9.5 , 6.667365   ){\circle*{ .04555556}} 
  \put(  9.55 , 6.667299   ){\circle*{ .04555556}} 
  \put(   9.6 , 6.667238   ){\circle*{ .04555556}} 
  \put(  9.65 , 6.667184   ){\circle*{ .04555556}} 
  \put(   9.7 , 6.667135   ){\circle*{ .04555556}} 
  \put(  9.75 ,  6.66709   ){\circle*{ .04555556}} 
  \put(   9.8 , 6.667050   ){\circle*{ .04555556}} 
  \put(  9.85 , 6.667013   ){\circle*{ .04555556}} 
  \put(   9.9 ,  6.66698   ){\circle*{ .04555556}} 
  \put(  9.95 ,  6.66695   ){\circle*{ .04555556}} 
%Finis.

apl> '7Ox' graph 2,1,1,i,2  ,-5 ,5 ,1,2   , .5 ,1 " tanhdaty.tex

%Label the curve
  \put( 4.85 , .34450795    ){n\#2} 
%Draw the data points
  \put(   .05 ,  6.66643   ){\circle*{ .04555556}} 
  \put(    .1 , 6.666406   ){\circle*{ .04555556}} 
  \put(   .15 , 6.666378   ){\circle*{ .04555556}} 
  \put(    .2 , 6.666348   ){\circle*{ .04555556}} 
  \put(   .25 , 6.666314   ){\circle*{ .04555556}} 
  \put(    .3 , 6.666277   ){\circle*{ .04555556}} 
  \put(   .35 , 6.666236   ){\circle*{ .04555556}} 
  \put(    .4 ,  6.66619   ){\circle*{ .04555556}} 
  \put(   .45 ,  6.66614   ){\circle*{ .04555556}} 
  \put(    .5 , 6.666085   ){\circle*{ .04555556}} 
  \put(   .55 , 6.666024   ){\circle*{ .04555556}} 
  \put(    .6 , 6.665957   ){\circle*{ .04555556}} 
  \put(   .65 , 6.665882   ){\circle*{ .04555556}} 
  \put(    .7 , 6.665800   ){\circle*{ .04555556}} 
  \put(   .75 , 6.665708   ){\circle*{ .04555556}} 
  \put(    .8 , 6.665607   ){\circle*{ .04555556}} 
  \put(   .85 , 6.665496   ){\circle*{ .04555556}} 
  \put(    .9 , 6.665373   ){\circle*{ .04555556}} 
  \put(   .95 , 6.665237   ){\circle*{ .04555556}} 
  \put(     1 , 6.665086   ){\circle*{ .04555556}} 
  \put(  1.05 ,  6.66492   ){\circle*{ .04555556}} 
  \put(   1.1 , 6.664736   ){\circle*{ .04555556}} 
  \put(  1.15 , 6.664533   ){\circle*{ .04555556}} 
  \put(   1.2 , 6.664309   ){\circle*{ .04555556}} 
  \put(  1.25 ,  6.66406   ){\circle*{ .04555556}} 
  \put(   1.3 , 6.663786   ){\circle*{ .04555556}} 
  \put(  1.35 , 6.663483   ){\circle*{ .04555556}} 
  \put(   1.4 , 6.663148   ){\circle*{ .04555556}} 
  \put(  1.45 , 6.662777   ){\circle*{ .04555556}} 
  \put(   1.5 , 6.662367   ){\circle*{ .04555556}} 
  \put(  1.55 , 6.661915   ){\circle*{ .04555556}} 
  \put(   1.6 , 6.661414   ){\circle*{ .04555556}} 
  \put(  1.65 , 6.660861   ){\circle*{ .04555556}} 
  \put(   1.7 , 6.660249   ){\circle*{ .04555556}} 
  \put(  1.75 , 6.659573   ){\circle*{ .04555556}} 
  \put(   1.8 , 6.658825   ){\circle*{ .04555556}} 
  \put(  1.85 , 6.657999   ){\circle*{ .04555556}} 
  \put(   1.9 , 6.657085   ){\circle*{ .04555556}} 
  \put(  1.95 , 6.656074   ){\circle*{ .04555556}} 
  \put(     2 , 6.654956   ){\circle*{ .04555556}} 
  \put(  2.05 ,  6.65372   ){\circle*{ .04555556}} 
  \put(   2.1 , 6.652353   ){\circle*{ .04555556}} 
  \put(  2.15 , 6.650841   ){\circle*{ .04555556}} 
  \put(   2.2 , 6.649169   ){\circle*{ .04555556}} 
  \put(  2.25 , 6.647319   ){\circle*{ .04555556}} 
  \put(   2.3 , 6.645272   ){\circle*{ .04555556}} 
  \put(  2.35 , 6.643007   ){\circle*{ .04555556}} 
  \put(   2.4 , 6.640501   ){\circle*{ .04555556}} 
  \put(  2.45 , 6.637728   ){\circle*{ .04555556}} 
  \put(   2.5 , 6.634657   ){\circle*{ .04555556}} 
  \put(  2.55 , 6.631258   ){\circle*{ .04555556}} 
  \put(   2.6 , 6.627494   ){\circle*{ .04555556}} 
  \put(  2.65 , 6.623325   ){\circle*{ .04555556}} 
  \put(   2.7 , 6.618707   ){\circle*{ .04555556}} 
  \put(  2.75 ,  6.61359   ){\circle*{ .04555556}} 
  \put(   2.8 , 6.607919   ){\circle*{ .04555556}} 
  \put(  2.85 ,  6.60163   ){\circle*{ .04555556}} 
  \put(   2.9 , 6.594657   ){\circle*{ .04555556}} 
  \put(  2.95 ,  6.58692   ){\circle*{ .04555556}} 
  \put(     3 , 6.578333   ){\circle*{ .04555556}} 
  \put(  3.05 , 6.568798   ){\circle*{ .04555556}} 
  \put(   3.1 , 6.558205   ){\circle*{ .04555556}} 
  \put(  3.15 , 6.546431   ){\circle*{ .04555556}} 
  \put(   3.2 , 6.533336   ){\circle*{ .04555556}} 
  \put(  3.25 , 6.518764   ){\circle*{ .04555556}} 
  \put(   3.3 , 6.502534   ){\circle*{ .04555556}} 
  \put(  3.35 , 6.484446   ){\circle*{ .04555556}} 
  \put(   3.4 , 6.464269   ){\circle*{ .04555556}} 
  \put(  3.45 ,  6.44174   ){\circle*{ .04555556}} 
  \put(   3.5 , 6.416561   ){\circle*{ .04555556}} 
  \put(  3.55 , 6.388388   ){\circle*{ .04555556}} 
  \put(   3.6 , 6.356827   ){\circle*{ .04555556}} 
  \put(  3.65 , 6.321424   ){\circle*{ .04555556}} 
  \put(   3.7 , 6.281653   ){\circle*{ .04555556}} 
  \put(  3.75 , 6.236908   ){\circle*{ .04555556}} 
  \put(   3.8 ,  6.18648   ){\circle*{ .04555556}} 
  \put(  3.85 , 6.129549   ){\circle*{ .04555556}} 
  \put(   3.9 , 6.065150   ){\circle*{ .04555556}} 
  \put(  3.95 , 5.992155   ){\circle*{ .04555556}} 
  \put(     4 , 5.909241   ){\circle*{ .04555556}} 
  \put(  4.05 , 5.814850   ){\circle*{ .04555556}} 
  \put(   4.1 , 5.707147   ){\circle*{ .04555556}} 
  \put(  4.15 , 5.583976   ){\circle*{ .04555556}} 
  \put(   4.2 , 5.442802   ){\circle*{ .04555556}} 
  \put(  4.25 , 5.280663   ){\circle*{ .04555556}} 
  \put(   4.3 , 5.094124   ){\circle*{ .04555556}} 
  \put(  4.35 , 4.879261   ){\circle*{ .04555556}} 
  \put(   4.4 , 4.631686   ){\circle*{ .04555556}} 
  \put(  4.45 , 4.346680   ){\circle*{ .04555556}} 
  \put(   4.5 ,  4.01949   ){\circle*{ .04555556}} 
  \put(  4.55 , 3.645923   ){\circle*{ .04555556}} 
  \put(   4.6 , 3.223370   ){\circle*{ .04555556}} 
  \put(  4.65 , 2.752457   ){\circle*{ .04555556}} 
  \put(   4.7 , 2.239436   ){\circle*{ .04555556}} 
  \put(  4.75 , 1.699189   ){\circle*{ .04555556}} 
  \put(   4.8 , 1.158154   ){\circle*{ .04555556}} 
  \put(  4.85 , .655619    ){\circle*{ .04555556}} 
  \put(  5.15 , .655619    ){\circle*{ .04555556}} 
  \put(   5.2 , 1.158154   ){\circle*{ .04555556}} 
  \put(  5.25 , 1.699189   ){\circle*{ .04555556}} 
  \put(   5.3 , 2.239436   ){\circle*{ .04555556}} 
  \put(  5.35 , 2.752457   ){\circle*{ .04555556}} 
  \put(   5.4 , 3.223370   ){\circle*{ .04555556}} 
  \put(  5.45 , 3.645923   ){\circle*{ .04555556}} 
  \put(   5.5 ,  4.01949   ){\circle*{ .04555556}} 
  \put(  5.55 , 4.346680   ){\circle*{ .04555556}} 
  \put(   5.6 , 4.631686   ){\circle*{ .04555556}} 
  \put(  5.65 , 4.879261   ){\circle*{ .04555556}} 
  \put(   5.7 , 5.094124   ){\circle*{ .04555556}} 
  \put(  5.75 , 5.280663   ){\circle*{ .04555556}} 
  \put(   5.8 , 5.442802   ){\circle*{ .04555556}} 
  \put(  5.85 , 5.583976   ){\circle*{ .04555556}} 
  \put(   5.9 , 5.707147   ){\circle*{ .04555556}} 
  \put(  5.95 , 5.814850   ){\circle*{ .04555556}} 
  \put(     6 , 5.909241   ){\circle*{ .04555556}} 
  \put(  6.05 , 5.992155   ){\circle*{ .04555556}} 
  \put(   6.1 , 6.065150   ){\circle*{ .04555556}} 
  \put(  6.15 , 6.129549   ){\circle*{ .04555556}} 
  \put(   6.2 ,  6.18648   ){\circle*{ .04555556}} 
  \put(  6.25 , 6.236908   ){\circle*{ .04555556}} 
  \put(   6.3 , 6.281653   ){\circle*{ .04555556}} 
  \put(  6.35 , 6.321424   ){\circle*{ .04555556}} 
  \put(   6.4 , 6.356827   ){\circle*{ .04555556}} 
  \put(  6.45 , 6.388388   ){\circle*{ .04555556}} 
  \put(   6.5 , 6.416561   ){\circle*{ .04555556}} 
  \put(  6.55 ,  6.44174   ){\circle*{ .04555556}} 
  \put(   6.6 , 6.464269   ){\circle*{ .04555556}} 
  \put(  6.65 , 6.484446   ){\circle*{ .04555556}} 
  \put(   6.7 , 6.502534   ){\circle*{ .04555556}} 
  \put(  6.75 , 6.518764   ){\circle*{ .04555556}} 
  \put(   6.8 , 6.533336   ){\circle*{ .04555556}} 
  \put(  6.85 , 6.546431   ){\circle*{ .04555556}} 
  \put(   6.9 , 6.558205   ){\circle*{ .04555556}} 
  \put(  6.95 , 6.568798   ){\circle*{ .04555556}} 
  \put(     7 , 6.578333   ){\circle*{ .04555556}} 
  \put(  7.05 ,  6.58692   ){\circle*{ .04555556}} 
  \put(   7.1 , 6.594657   ){\circle*{ .04555556}} 
  \put(  7.15 ,  6.60163   ){\circle*{ .04555556}} 
  \put(   7.2 , 6.607919   ){\circle*{ .04555556}} 
  \put(  7.25 ,  6.61359   ){\circle*{ .04555556}} 
  \put(   7.3 , 6.618707   ){\circle*{ .04555556}} 
  \put(  7.35 , 6.623325   ){\circle*{ .04555556}} 
  \put(   7.4 , 6.627494   ){\circle*{ .04555556}} 
  \put(  7.45 , 6.631258   ){\circle*{ .04555556}} 
  \put(   7.5 , 6.634657   ){\circle*{ .04555556}} 
  \put(  7.55 , 6.637728   ){\circle*{ .04555556}} 
  \put(   7.6 , 6.640501   ){\circle*{ .04555556}} 
  \put(  7.65 , 6.643007   ){\circle*{ .04555556}} 
  \put(   7.7 , 6.645272   ){\circle*{ .04555556}} 
  \put(  7.75 , 6.647319   ){\circle*{ .04555556}} 
  \put(   7.8 , 6.649169   ){\circle*{ .04555556}} 
  \put(  7.85 , 6.650841   ){\circle*{ .04555556}} 
  \put(   7.9 , 6.652353   ){\circle*{ .04555556}} 
  \put(  7.95 ,  6.65372   ){\circle*{ .04555556}} 
  \put(     8 , 6.654956   ){\circle*{ .04555556}} 
  \put(  8.05 , 6.656074   ){\circle*{ .04555556}} 
  \put(   8.1 , 6.657085   ){\circle*{ .04555556}} 
  \put(  8.15 , 6.657999   ){\circle*{ .04555556}} 
  \put(   8.2 , 6.658825   ){\circle*{ .04555556}} 
  \put(  8.25 , 6.659573   ){\circle*{ .04555556}} 
  \put(   8.3 , 6.660249   ){\circle*{ .04555556}} 
  \put(  8.35 , 6.660861   ){\circle*{ .04555556}} 
  \put(   8.4 , 6.661414   ){\circle*{ .04555556}} 
  \put(  8.45 , 6.661915   ){\circle*{ .04555556}} 
  \put(   8.5 , 6.662367   ){\circle*{ .04555556}} 
  \put(  8.55 , 6.662777   ){\circle*{ .04555556}} 
  \put(   8.6 , 6.663148   ){\circle*{ .04555556}} 
  \put(  8.65 , 6.663483   ){\circle*{ .04555556}} 
  \put(   8.7 , 6.663786   ){\circle*{ .04555556}} 
  \put(  8.75 ,  6.66406   ){\circle*{ .04555556}} 
  \put(   8.8 , 6.664309   ){\circle*{ .04555556}} 
  \put(  8.85 , 6.664533   ){\circle*{ .04555556}} 
  \put(   8.9 , 6.664736   ){\circle*{ .04555556}} 
  \put(  8.95 ,  6.66492   ){\circle*{ .04555556}} 
  \put(     9 , 6.665086   ){\circle*{ .04555556}} 
  \put(  9.05 , 6.665237   ){\circle*{ .04555556}} 
  \put(   9.1 , 6.665373   ){\circle*{ .04555556}} 
  \put(  9.15 , 6.665496   ){\circle*{ .04555556}} 
  \put(   9.2 , 6.665607   ){\circle*{ .04555556}} 
  \put(  9.25 , 6.665708   ){\circle*{ .04555556}} 
  \put(   9.3 , 6.665800   ){\circle*{ .04555556}} 
  \put(  9.35 , 6.665882   ){\circle*{ .04555556}} 
  \put(   9.4 , 6.665957   ){\circle*{ .04555556}} 
  \put(  9.45 , 6.666024   ){\circle*{ .04555556}} 
  \put(   9.5 , 6.666085   ){\circle*{ .04555556}} 
  \put(  9.55 ,  6.66614   ){\circle*{ .04555556}} 
  \put(   9.6 ,  6.66619   ){\circle*{ .04555556}} 
  \put(  9.65 , 6.666236   ){\circle*{ .04555556}} 
  \put(   9.7 , 6.666277   ){\circle*{ .04555556}} 
  \put(  9.75 , 6.666314   ){\circle*{ .04555556}} 
  \put(   9.8 , 6.666348   ){\circle*{ .04555556}} 
  \put(  9.85 , 6.666378   ){\circle*{ .04555556}} 
  \put(   9.9 , 6.666406   ){\circle*{ .04555556}} 
  \put(  9.95 ,  6.66643   ){\circle*{ .04555556}} 
\end{picture}
\end{center}
%Finis.

apl>)off

