All, Is there a switch I can set to get rid of the arithmetic overflow in the following example?

%output=pdf

\setupcolors[state=start]

\definecolor[gridlines][s=0.7]

\startMPinclusions

color gridlines; gridlines:=\MPcolor{gridlines};

vardef create_grid (expr l,r,h,b,t,v,wid,ht)=
  save ux, uy; numeric ux, uy;
  (r-l)*ux=wid; (t-b)*uy=ht;
  for k=b step v until t:
    draw (l*ux,k*uy)--(r*ux,k*uy) withcolor \MPcolor{gridlines};
  endfor;
  for k=l step h until r:
    draw (k*ux,b*uy)--(k*ux,t*uy) withcolor \MPcolor{gridlines};
  endfor;
enddef;

vardef create_axes (expr l,r,b,t,wid,ht,blbl) (text xlbl,ylbl) =
  save ux, uy; numeric ux, uy;
  (r-l)*ux=wid; (t-b)*uy=ht;
  textextoffset:=3pt;
  drawdblarrow (1.05*l*ux,0)--(1.05*r*ux,0);
  draw textext.rt(xlbl) shifted (1.05*r*ux,0);
  if blbl:draw textext.bot(decimal r) shifted (r*ux,0); fi;
  drawdblarrow (0,1.05*b*uy)--(0,1.05*t*uy);
  draw textext.top(ylbl) shifted (0,1.05*t*uy);
  if blbl: draw textext.lft(decimal t) shifted (0,t*uy); fi;
enddef;

vardef drawfcn (expr ind,dep,l,r,b,t,wid,ht,n) text txt =
  save x, dx, ux, uy; numeric x, dx, ux, uy;
  dx:=(r-l)/n;
  (r-l)*ux=wid; (t-b)*uy=ht;
  save cpath; path cpath; cpath:=(l,b)--(r,b)--(r,t)--(l,t)--cycle;
  save p; path p; hide (x:=l;) p:=(scantokens(ind),scantokens(dep));
  for xx:=l step dx until r:
    hide (x:=xx;) p:=p--(scantokens(ind),scantokens(dep));
  endfor;
  hide(x:=r;) p:=p--(scantokens(ind),scantokens(dep));
  p:=p cutbefore cpath;
  p:=reverse p;
  p:=p cutbefore cpath;
  p:=p xyscaled (ux,uy);
  drawdblarrow p txt;
enddef;

\stopMPinclusions

\starttext


\startMPpage %figure library name: x2

%initialize window parameters
numeric xmin, xmax, xscl, ymin, ymax, yscl;
xmin:=-10;
xmax:=10;
xscl:=1;
ymin:=-10;
ymax:=10;
yscl:=1;

%initialize number of points
numeric num_points;
num_points:=100;

%initialize dimensions of image
numeric width, height;
width=1.5in;
height=1.5in;

%create the grid
create_grid(xmin,xmax,xscl,ymin,ymax,yscl,width,height);

boolean lbl_scl; lbl_scl:=true;

%create the axes
create_axes(xmin,xmax,ymin,ymax,width,height,lbl_scl)("$x$")("$y$");

%draw the function
drawfcn("x","x*x",xmin,xmax,ymin,ymax,width,height,100)
withcolor blue ;

\stopMPpage

\startMPpage %figure library name: x4

%initialize window parameters
numeric xmin, xmax, xscl, ymin, ymax, yscl;
xmin:=-10;
xmax:=10;
xscl:=1;
ymin:=-10;
ymax:=10;
yscl:=1;

%initialize number of points
numeric num_points;
num_points:=100;

%initialize dimensions of image
numeric width, height;
width=1.5in;
height=1.5in;

%create the grid
create_grid(xmin,xmax,xscl,ymin,ymax,yscl,width,height);

boolean lbl_scl; lbl_scl:=true;

%create the axes
create_axes(xmin,xmax,ymin,ymax,width,height,lbl_scl)("$x$")("$y$");

%draw the function
drawfcn("x","x**4",xmin,xmax,ymin,ymax,width,height,100)
withcolor blue ;

\stopMPpage

\startMPpage %figure library name: x6

%initialize window parameters
numeric xmin, xmax, xscl, ymin, ymax, yscl;
xmin:=-10;
xmax:=10;
xscl:=1;
ymin:=-10;
ymax:=10;
yscl:=1;

%initialize number of points
numeric num_points;
num_points:=100;

%initialize dimensions of image
numeric width, height;
width=1.5in;
height=1.5in;

%create the grid
create_grid(xmin,xmax,xscl,ymin,ymax,yscl,width,height);

boolean lbl_scl; lbl_scl:=true;

%create the axes
create_axes(xmin,xmax,ymin,ymax,width,height,lbl_scl)("$x$")("$y$");

%draw the function
drawfcn("x","x**6",xmin,xmax,ymin,ymax,width,height,100)
withcolor blue ;

\stopMPpage

\stoptext

%%% Local Variables:
%%% mode: conTeXt-en
%%% End:


_______________________________________________
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context

Reply via email to