summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/runtime.cc
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-05-18 23:33:08 +0000
committerKarl Berry <karl@freefriends.org>2009-05-18 23:33:08 +0000
commit0a3a4a0193ef03921995cac67f8c91c6e352d059 (patch)
tree4fd204ddd01ff808c75e91ce290a9b28a1e90696 /Build/source/utils/asymptote/runtime.cc
parent7c769b8e95cd5bd87da30c618e5198d6d12461e1 (diff)
asymptote 1.73
git-svn-id: svn://tug.org/texlive/trunk@13217 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/asymptote/runtime.cc')
-rw-r--r--Build/source/utils/asymptote/runtime.cc4678
1 files changed, 2394 insertions, 2284 deletions
diff --git a/Build/source/utils/asymptote/runtime.cc b/Build/source/utils/asymptote/runtime.cc
index 90b78b7302c..4881fd8368e 100644
--- a/Build/source/utils/asymptote/runtime.cc
+++ b/Build/source/utils/asymptote/runtime.cc
@@ -22,6 +22,8 @@
#line 63 "runtime.in"
#include <cfloat>
+#include <iostream>
+#include <fstream>
#include <time.h>
#include <sys/times.h>
#include <locale.h>
@@ -826,13 +828,15 @@ void unused(void *)
{
}
-pair readpair(stringstream& s, bool tex)
+static const double twelvepercent=0.12;
+static const double tenpercent=0.1;
+
+pair readpair(stringstream& s, double hscale=1.0, double vscale=1.0)
{
- static const double f=12.0/100.0;
double x,y;
s >> y;
s >> x;
- return tex ? pair(f*x,-f*y) : pair(x,y);
+ return pair(hscale*x,vscale*y);
}
// Ignore unclosed begingroups but not spurious endgroups.
@@ -848,7 +852,8 @@ string ASYo="/ASYo {( ) print 12 string cvs print} bind def";
string pathforall="{(M) print ASYo ASYo} {(L) print ASYo ASYo} {(C) print ASYo ASYo ASYo ASYo ASYo ASYo} {(c) print} pathforall";
string currentpoint="print currentpoint ASYo ASYo ";
-array *readpath(const string& psname, bool tex, bool keep)
+array *readpath(const string& psname, bool keep,
+ double hscale=1.0, double vscale=1.0)
{
array *P=new array(0);
ostringstream pipe;
@@ -856,9 +861,9 @@ array *readpath(const string& psname, bool tex, bool keep)
<< "' -q -dNOPAUSE -dBATCH";
if(safe) pipe << " -dSAFER";
#ifdef __CYGWIN__
- string null="NUL";
+ const string null="NUL";
#else
- string null="/dev/null";
+ const string null="/dev/null";
#endif
pipe << " -sDEVICE=epswrite -sOutputFile="+null+" '" << psname << "'";
iopipestream gs(pipe.str().c_str(),"gs","Ghostscript");
@@ -905,13 +910,13 @@ array *readpath(const string& psname, bool tex, bool keep)
}
active=false;
cyclic=false;
- node.pre=node.point=readpair(buf,tex)-offset;
+ node.pre=node.point=readpair(buf,hscale,vscale)-offset;
node.straight=false;
break;
}
case 'L':
{
- pair point=readpair(buf,tex)-offset;
+ pair point=readpair(buf,hscale,vscale)-offset;
pair delta=(point-node.point)*third;
node.post=node.point+delta;
node.straight=true;
@@ -923,9 +928,9 @@ array *readpath(const string& psname, bool tex, bool keep)
}
case 'C':
{
- pair point=readpair(buf,tex)-offset;
- pair pre=readpair(buf,tex)-offset;
- node.post=readpair(buf,tex)-offset;
+ pair point=readpair(buf,hscale,vscale)-offset;
+ pair pre=readpair(buf,hscale,vscale)-offset;
+ node.post=readpair(buf,hscale,vscale)-offset;
node.straight=false;
nodes.push_back(node);
active=true;
@@ -940,7 +945,7 @@ array *readpath(const string& psname, bool tex, bool keep)
}
case 'Z':
{
- offset=readpair(buf,tex);
+ offset=readpair(buf,hscale,vscale);
break;
}
}
@@ -979,6 +984,20 @@ pair gamma(pair z)
return root2pi*pow(t,z+0.5)*exp(-t)*x;
}
+void cannotread(const string& s)
+{
+ ostringstream buf;
+ buf << "Cannot read from " << s << endl;
+ error(buf);
+}
+
+void cannotwrite(const string& s)
+{
+ ostringstream buf;
+ buf << "Cannot write to " << s << endl;
+ error(buf);
+}
+
// Autogenerated routines:
@@ -986,45 +1005,45 @@ pair gamma(pair z)
namespace run {
// Initializers
-#line 1026 "runtime.in"
+#line 1045 "runtime.in"
void IntZero(stack *Stack)
{
-#line 1027 "runtime.in"
+#line 1046 "runtime.in"
{Stack->push<Int>(0); return;}
}
-#line 1032 "runtime.in"
+#line 1051 "runtime.in"
void realZero(stack *Stack)
{
-#line 1033 "runtime.in"
+#line 1052 "runtime.in"
{Stack->push<real>(0.0); return;}
}
-#line 1037 "runtime.in"
+#line 1056 "runtime.in"
void boolFalse(stack *Stack)
{
-#line 1038 "runtime.in"
+#line 1057 "runtime.in"
{Stack->push<bool>(false); return;}
}
-#line 1042 "runtime.in"
+#line 1061 "runtime.in"
void pushNullArray(stack *Stack)
{
-#line 1043 "runtime.in"
+#line 1062 "runtime.in"
{Stack->push<array*>(0); return;}
}
-#line 1047 "runtime.in"
+#line 1066 "runtime.in"
void pushNullRecord(stack *Stack)
{
-#line 1048 "runtime.in"
+#line 1067 "runtime.in"
{Stack->push<frame*>(0); return;}
}
-#line 1052 "runtime.in"
+#line 1071 "runtime.in"
void pushNullFunction(stack *Stack)
{
-#line 1053 "runtime.in"
+#line 1072 "runtime.in"
{Stack->push(nullfunc::instance()); return;}
}
@@ -1033,183 +1052,183 @@ void pushNullFunction(stack *Stack)
// Put the default value token on the stack (in place of an argument when
// making a function call).
-#line 1062 "runtime.in"
+#line 1081 "runtime.in"
void pushDefault(stack *Stack)
{
-#line 1063 "runtime.in"
+#line 1082 "runtime.in"
{Stack->push(def); return;}
}
// Test if the value on the stack is the default value token.
-#line 1069 "runtime.in"
+#line 1088 "runtime.in"
void isDefault(stack *Stack)
{
item i=vm::pop(Stack);
-#line 1070 "runtime.in"
+#line 1089 "runtime.in"
{Stack->push<bool>(isdefault(i)); return;}
}
// Logical operations
-#line 1076 "runtime.in"
+#line 1095 "runtime.in"
// bool !(bool b);
void gen8(stack *Stack)
{
bool b=vm::pop<bool>(Stack);
-#line 1077 "runtime.in"
+#line 1096 "runtime.in"
{Stack->push<bool>(!b); return;}
}
-#line 1082 "runtime.in"
+#line 1101 "runtime.in"
void boolMemEq(stack *Stack)
{
frame * b=vm::pop<frame *>(Stack);
frame * a=vm::pop<frame *>(Stack);
-#line 1083 "runtime.in"
+#line 1102 "runtime.in"
{Stack->push<bool>(a == b); return;}
}
-#line 1087 "runtime.in"
+#line 1106 "runtime.in"
void boolMemNeq(stack *Stack)
{
frame * b=vm::pop<frame *>(Stack);
frame * a=vm::pop<frame *>(Stack);
-#line 1088 "runtime.in"
+#line 1107 "runtime.in"
{Stack->push<bool>(a != b); return;}
}
-#line 1092 "runtime.in"
+#line 1111 "runtime.in"
void boolFuncEq(stack *Stack)
{
callable * b=vm::pop<callable *>(Stack);
callable * a=vm::pop<callable *>(Stack);
-#line 1093 "runtime.in"
+#line 1112 "runtime.in"
{Stack->push<bool>(a->compare(b)); return;}
}
-#line 1097 "runtime.in"
+#line 1116 "runtime.in"
void boolFuncNeq(stack *Stack)
{
callable * b=vm::pop<callable *>(Stack);
callable * a=vm::pop<callable *>(Stack);
-#line 1098 "runtime.in"
+#line 1117 "runtime.in"
{Stack->push<bool>(!(a->compare(b))); return;}
}
// Bit operations
-#line 1104 "runtime.in"
+#line 1123 "runtime.in"
// Int AND(Int a, Int b);
void gen13(stack *Stack)
{
Int b=vm::pop<Int>(Stack);
Int a=vm::pop<Int>(Stack);
-#line 1105 "runtime.in"
+#line 1124 "runtime.in"
{Stack->push<Int>(a & b); return;}
}
-#line 1110 "runtime.in"
+#line 1129 "runtime.in"
// Int OR(Int a, Int b);
void gen14(stack *Stack)
{
Int b=vm::pop<Int>(Stack);
Int a=vm::pop<Int>(Stack);
-#line 1111 "runtime.in"
+#line 1130 "runtime.in"
{Stack->push<Int>(a | b); return;}
}
-#line 1115 "runtime.in"
+#line 1134 "runtime.in"
// Int XOR(Int a, Int b);
void gen15(stack *Stack)
{
Int b=vm::pop<Int>(Stack);
Int a=vm::pop<Int>(Stack);
-#line 1116 "runtime.in"
+#line 1135 "runtime.in"
{Stack->push<Int>(a ^ b); return;}
}
-#line 1120 "runtime.in"
+#line 1139 "runtime.in"
// Int NOT(Int a);
void gen16(stack *Stack)
{
Int a=vm::pop<Int>(Stack);
-#line 1121 "runtime.in"
+#line 1140 "runtime.in"
{Stack->push<Int>(~a); return;}
}
// Casts
-#line 1127 "runtime.in"
+#line 1146 "runtime.in"
void pairToGuide(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
-#line 1128 "runtime.in"
+#line 1147 "runtime.in"
{Stack->push<guide*>(new pairguide(z)); return;}
}
-#line 1133 "runtime.in"
+#line 1152 "runtime.in"
void pathToGuide(stack *Stack)
{
path p=vm::pop<path>(Stack);
-#line 1134 "runtime.in"
+#line 1153 "runtime.in"
{Stack->push<guide*>(new pathguide(p)); return;}
}
-#line 1138 "runtime.in"
+#line 1157 "runtime.in"
void guideToPath(stack *Stack)
{
guide * g=vm::pop<guide *>(Stack);
-#line 1139 "runtime.in"
+#line 1158 "runtime.in"
{Stack->push<path>(g->solve()); return;}
}
// Picture operations
-#line 1145 "runtime.in"
+#line 1164 "runtime.in"
void newPicture(stack *Stack)
{
-#line 1146 "runtime.in"
+#line 1165 "runtime.in"
{Stack->push<picture*>(new picture()); return;}
}
-#line 1151 "runtime.in"
+#line 1170 "runtime.in"
// bool empty(picture *f);
void gen21(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 1152 "runtime.in"
+#line 1171 "runtime.in"
{Stack->push<bool>(f->null()); return;}
}
-#line 1156 "runtime.in"
+#line 1175 "runtime.in"
// void erase(picture *f);
void gen22(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 1157 "runtime.in"
+#line 1176 "runtime.in"
f->nodes.clear();
}
-#line 1161 "runtime.in"
+#line 1180 "runtime.in"
// pair min(picture *f);
void gen23(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 1162 "runtime.in"
+#line 1181 "runtime.in"
{Stack->push<pair>(f->bounds().Min()); return;}
}
-#line 1166 "runtime.in"
+#line 1185 "runtime.in"
// pair max(picture *f);
void gen24(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 1167 "runtime.in"
+#line 1186 "runtime.in"
{Stack->push<pair>(f->bounds().Max()); return;}
}
-#line 1171 "runtime.in"
+#line 1190 "runtime.in"
// void label(picture *f, string *s, string *size, transform t, pair position, pair align, pen p);
void gen25(stack *Stack)
{
@@ -1220,26 +1239,26 @@ void gen25(stack *Stack)
string * size=vm::pop<string *>(Stack);
string * s=vm::pop<string *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1173 "runtime.in"
+#line 1192 "runtime.in"
f->append(new drawLabel(*s,*size,t,position,align,p));
}
-#line 1177 "runtime.in"
+#line 1196 "runtime.in"
// bool labels(picture *f);
void gen26(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 1178 "runtime.in"
+#line 1197 "runtime.in"
{Stack->push<bool>(f->havelabels()); return;}
}
-#line 1182 "runtime.in"
+#line 1201 "runtime.in"
// patharray* _texpath(string *s, pen p=CURRENTPEN);
void gen27(stack *Stack)
{
pen p=vm::pop<pen>(Stack,CURRENTPEN);
string * s=vm::pop<string *>(Stack);
-#line 1183 "runtime.in"
+#line 1202 "runtime.in"
array *P=new array(0);
if(s->empty()) {Stack->push<patharray*>(P); return;}
@@ -1302,16 +1321,96 @@ void gen27(stack *Stack)
unlink(auxname(prefix,"log").c_str());
unlink(dviname.c_str());
}
- {Stack->push<patharray*>(readpath(psname,true,keep)); return;}
+ {Stack->push<patharray*>(readpath(psname,keep,twelvepercent,-twelvepercent)); return;}
}
-#line 1249 "runtime.in"
-// patharray* _strokepath(path g, pen p=CURRENTPEN);
+#line 1268 "runtime.in"
+// patharray* textpath(string *s, pen p=CURRENTPEN);
void gen28(stack *Stack)
{
pen p=vm::pop<pen>(Stack,CURRENTPEN);
+ string * s=vm::pop<string *>(Stack);
+#line 1269 "runtime.in"
+ array *P=new array(0);
+ if(s->empty()) {Stack->push<patharray*>(P); return;}
+
+ int status=0;
+ string prefix=outname();
+ spaceToUnderscore(prefix);
+ string outputname=auxname(prefix,getSetting<string>("textoutputtype"));
+
+ string textname=auxname(prefix,getSetting<string>("textextension"));
+ std::ofstream text(textname.c_str());
+
+ if(!text) cannotwrite(textname);
+
+ text << getSetting<string>("textprologue");
+ text << p.Font() << endl;
+ text << *s;
+ text << getSetting<string>("textepilogue");
+ text.close();
+
+ ostringstream cmd;
+ string textcommand=getSetting<string>("textcommand");
+ cmd << textcommand << " '" << textname << "' '"
+ << outputname << "'";
+ bool quiet=verbose <= 2;
+ status=System(cmd,quiet ? 1 : 0);
+
+ string epsname=auxname(prefix,"eps");
+
+ if(status == 0) {
+ ostringstream cmd;
+ cmd << "'" << getSetting<string>("gs")
+ << "' -q -dNOCACHE -dNOPAUSE -dBATCH";
+ if(safe) cmd << " -dSAFER";
+ cmd << " -sDEVICE=epswrite -sOutputFile='" << epsname << "' '"
+ << outputname << "'";
+ status=System(cmd,0,true,"gs");
+ }
+
+ if(status != 0)
+ error("textpath failed");
+
+ string psname=auxname(prefix+"_","ps");
+ std::ifstream eps(epsname.c_str());
+ std::ofstream ps(psname.c_str());
+
+ if(!eps) cannotread(epsname);
+ if(!ps) cannotwrite(psname);
+
+ ps << ASYo << endl
+ << "/ASY1 true def" << endl
+ << "/fill {ASY1 {(Z) " << currentpoint << "/ASY1 false def} if "
+ << pathforall << " (M) " << currentpoint
+ << "currentpoint newpath moveto } bind def" << endl
+ << "/stroke {ASY1 {(Z) " << currentpoint
+ << "/ASY1 false def} if strokepath "
+ << pathforall << " (M) " << currentpoint
+ << "currentpoint newpath moveto } bind def" << endl;
+ string line;
+ while(getline(eps,line))
+ ps << line << endl;
+ ps << "(E) print" << endl;
+ eps.close();
+ ps.close();
+
+ bool keep=getSetting<bool>("keep");
+ if(!keep) { // Delete temporary files.
+ unlink(textname.c_str());
+ unlink(outputname.c_str());
+ unlink(epsname.c_str());
+ }
+ {Stack->push<patharray*>(readpath(psname,keep,tenpercent,tenpercent)); return;}
+}
+
+#line 1343 "runtime.in"
+// patharray* _strokepath(path g, pen p=CURRENTPEN);
+void gen29(stack *Stack)
+{
+ pen p=vm::pop<pen>(Stack,CURRENTPEN);
path g=vm::pop<path>(Stack);
-#line 1250 "runtime.in"
+#line 1344 "runtime.in"
array *P=new array(0);
if(g.size() == 0) {Stack->push<patharray*>(P); return;}
@@ -1319,7 +1418,7 @@ void gen28(stack *Stack)
spaceToUnderscore(prefix);
string psname=auxname(prefix,"ps");
bbox b;
- psfile ps(psname, false);
+ psfile ps(psname,false);
ps.prologue(b);
ps.verbatimline(ASYo);
ps.verbatimline("/stroke {(Z) "+currentpoint+pathforall+"} bind def");
@@ -1331,36 +1430,36 @@ void gen28(stack *Stack)
ps.verbatimline("(M) "+currentpoint+"(E) print");
ps.epilogue();
ps.close();
- {Stack->push<patharray*>(readpath(psname,false,getSetting<bool>("keep"))); return;}
+ {Stack->push<patharray*>(readpath(psname,getSetting<bool>("keep"))); return;}
}
-#line 1273 "runtime.in"
+#line 1367 "runtime.in"
// void _draw(picture *f, path g, pen p);
-void gen29(stack *Stack)
+void gen30(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
path g=vm::pop<path>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1274 "runtime.in"
+#line 1368 "runtime.in"
f->append(new drawPath(g,p));
}
-#line 1278 "runtime.in"
+#line 1372 "runtime.in"
// void fill(picture *f, patharray *g, pen p=CURRENTPEN, bool copy=true);
-void gen30(stack *Stack)
+void gen31(stack *Stack)
{
bool copy=vm::pop<bool>(Stack,true);
pen p=vm::pop<pen>(Stack,CURRENTPEN);
patharray * g=vm::pop<patharray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1279 "runtime.in"
+#line 1373 "runtime.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
f->append(new drawFill(*copyarray(g),false,p));
}
-#line 1284 "runtime.in"
+#line 1378 "runtime.in"
// void latticeshade(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, penarray2 *p, bool copy=true);
-void gen31(stack *Stack)
+void gen32(stack *Stack)
{
bool copy=vm::pop<bool>(Stack,true);
penarray2 * p=vm::pop<penarray2 *>(Stack);
@@ -1368,14 +1467,14 @@ void gen31(stack *Stack)
bool stroke=vm::pop<bool>(Stack,false);
patharray * g=vm::pop<patharray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1286 "runtime.in"
+#line 1380 "runtime.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
f->append(new drawLatticeShade(*copyarray(g),stroke,fillrule,*copyarray(p)));
}
-#line 1291 "runtime.in"
+#line 1385 "runtime.in"
// void axialshade(picture *f, patharray *g, bool stroke=false, pen pena, pair a, pen penb, pair b, bool copy=true);
-void gen32(stack *Stack)
+void gen33(stack *Stack)
{
bool copy=vm::pop<bool>(Stack,true);
pair b=vm::pop<pair>(Stack);
@@ -1385,14 +1484,14 @@ void gen32(stack *Stack)
bool stroke=vm::pop<bool>(Stack,false);
patharray * g=vm::pop<patharray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1293 "runtime.in"
+#line 1387 "runtime.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
f->append(new drawAxialShade(*copyarray(g),stroke,pena,a,penb,b));
}
-#line 1298 "runtime.in"
+#line 1392 "runtime.in"
// void radialshade(picture *f, patharray *g, bool stroke=false, pen pena, pair a, real ra, pen penb, pair b, real rb, bool copy=true);
-void gen33(stack *Stack)
+void gen34(stack *Stack)
{
bool copy=vm::pop<bool>(Stack,true);
real rb=vm::pop<real>(Stack);
@@ -1404,14 +1503,14 @@ void gen33(stack *Stack)
bool stroke=vm::pop<bool>(Stack,false);
patharray * g=vm::pop<patharray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1300 "runtime.in"
+#line 1394 "runtime.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
f->append(new drawRadialShade(*copyarray(g),stroke,pena,a,ra,penb,b,rb));
}
-#line 1305 "runtime.in"
+#line 1399 "runtime.in"
// void gouraudshade(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, penarray *p, pairarray *z, Intarray *edges, bool copy=true);
-void gen34(stack *Stack)
+void gen35(stack *Stack)
{
bool copy=vm::pop<bool>(Stack,true);
Intarray * edges=vm::pop<Intarray *>(Stack);
@@ -1421,7 +1520,7 @@ void gen34(stack *Stack)
bool stroke=vm::pop<bool>(Stack,false);
patharray * g=vm::pop<patharray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1308 "runtime.in"
+#line 1402 "runtime.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
checkArrays(p,z);
checkArrays(z,edges);
@@ -1429,9 +1528,9 @@ void gen34(stack *Stack)
*copyarray(z),*copyarray(edges)));
}
-#line 1316 "runtime.in"
+#line 1410 "runtime.in"
// void gouraudshade(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, penarray *p, Intarray *edges, bool copy=true);
-void gen35(stack *Stack)
+void gen36(stack *Stack)
{
bool copy=vm::pop<bool>(Stack,true);
Intarray * edges=vm::pop<Intarray *>(Stack);
@@ -1440,7 +1539,7 @@ void gen35(stack *Stack)
bool stroke=vm::pop<bool>(Stack,false);
patharray * g=vm::pop<patharray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1319 "runtime.in"
+#line 1413 "runtime.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
size_t n=checkArrays(p,edges);
size_t m=checkArray(g);
@@ -1461,9 +1560,9 @@ void gen35(stack *Stack)
*z,*copyarray(edges)));
}
-#line 1340 "runtime.in"
+#line 1434 "runtime.in"
// void tensorshade(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, penarray2 *p, patharray *b=NULL, pairarray2 *z=emptyarray, bool copy=true);
-void gen36(stack *Stack)
+void gen37(stack *Stack)
{
bool copy=vm::pop<bool>(Stack,true);
pairarray2 * z=vm::pop<pairarray2 *>(Stack,emptyarray);
@@ -1473,7 +1572,7 @@ void gen36(stack *Stack)
bool stroke=vm::pop<bool>(Stack,false);
patharray * g=vm::pop<patharray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1343 "runtime.in"
+#line 1437 "runtime.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
array *(*copyarray2)(array *a)=copy ? copyArray2: nop;
if(b == NULL) b=g;
@@ -1485,9 +1584,9 @@ void gen36(stack *Stack)
*copyarray(b),*copyarray2(z)));
}
-#line 1355 "runtime.in"
+#line 1449 "runtime.in"
// void functionshade(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, string shader=emptystring, bool copy=true);
-void gen37(stack *Stack)
+void gen38(stack *Stack)
{
bool copy=vm::pop<bool>(Stack,true);
string shader=vm::pop<string>(Stack,emptystring);
@@ -1495,176 +1594,176 @@ void gen37(stack *Stack)
bool stroke=vm::pop<bool>(Stack,false);
patharray * g=vm::pop<patharray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1358 "runtime.in"
+#line 1452 "runtime.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
f->append(new drawFunctionShade(*copyarray(g),stroke,fillrule,shader));
}
// Clip a picture to a superpath using the given fill rule.
// Subsequent additions to the picture will not be affected by the clipping.
-#line 1365 "runtime.in"
+#line 1459 "runtime.in"
// void clip(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, bool copy=true);
-void gen38(stack *Stack)
+void gen39(stack *Stack)
{
bool copy=vm::pop<bool>(Stack,true);
pen fillrule=vm::pop<pen>(Stack,CURRENTPEN);
bool stroke=vm::pop<bool>(Stack,false);
patharray * g=vm::pop<patharray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1367 "runtime.in"
+#line 1461 "runtime.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
drawClipBegin *begin=new drawClipBegin(*copyarray(g),stroke,fillrule,true);
f->enclose(begin,new drawClipEnd(true,begin));
}
-#line 1373 "runtime.in"
+#line 1467 "runtime.in"
// void beginclip(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, bool copy=true);
-void gen39(stack *Stack)
+void gen40(stack *Stack)
{
bool copy=vm::pop<bool>(Stack,true);
pen fillrule=vm::pop<pen>(Stack,CURRENTPEN);
bool stroke=vm::pop<bool>(Stack,false);
patharray * g=vm::pop<patharray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1375 "runtime.in"
+#line 1469 "runtime.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
f->append(new drawClipBegin(*copyarray(g),stroke,fillrule,false));
}
-#line 1380 "runtime.in"
+#line 1474 "runtime.in"
// void endclip(picture *f);
-void gen40(stack *Stack)
+void gen41(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 1381 "runtime.in"
+#line 1475 "runtime.in"
f->append(new drawClipEnd(false));
}
-#line 1385 "runtime.in"
+#line 1479 "runtime.in"
// void gsave(picture *f);
-void gen41(stack *Stack)
+void gen42(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 1386 "runtime.in"
+#line 1480 "runtime.in"
f->append(new drawGsave());
}
-#line 1390 "runtime.in"
+#line 1484 "runtime.in"
// void grestore(picture *f);
-void gen42(stack *Stack)
+void gen43(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 1391 "runtime.in"
+#line 1485 "runtime.in"
f->append(new drawGrestore());
}
-#line 1395 "runtime.in"
+#line 1489 "runtime.in"
// void begingroup(picture *f);
-void gen43(stack *Stack)
+void gen44(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 1396 "runtime.in"
+#line 1490 "runtime.in"
f->append(new drawBegin());
}
-#line 1400 "runtime.in"
+#line 1494 "runtime.in"
// void endgroup(picture *f);
-void gen44(stack *Stack)
+void gen45(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 1401 "runtime.in"
+#line 1495 "runtime.in"
f->append(new drawEnd());
}
-#line 1405 "runtime.in"
+#line 1499 "runtime.in"
// void add(picture *dest, picture *src);
-void gen45(stack *Stack)
+void gen46(stack *Stack)
{
picture * src=vm::pop<picture *>(Stack);
picture * dest=vm::pop<picture *>(Stack);
-#line 1406 "runtime.in"
+#line 1500 "runtime.in"
dest->add(*src);
}
-#line 1410 "runtime.in"
+#line 1504 "runtime.in"
// void prepend(picture *dest, picture *src);
-void gen46(stack *Stack)
+void gen47(stack *Stack)
{
picture * src=vm::pop<picture *>(Stack);
picture * dest=vm::pop<picture *>(Stack);
-#line 1411 "runtime.in"
+#line 1505 "runtime.in"
dest->prepend(*src);
}
-#line 1415 "runtime.in"
+#line 1509 "runtime.in"
// void postscript(picture *f, string s);
-void gen47(stack *Stack)
+void gen48(stack *Stack)
{
string s=vm::pop<string>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1416 "runtime.in"
+#line 1510 "runtime.in"
f->append(new drawVerbatim(PostScript,s));
}
-#line 1420 "runtime.in"
+#line 1514 "runtime.in"
// void tex(picture *f, string s);
-void gen48(stack *Stack)
+void gen49(stack *Stack)
{
string s=vm::pop<string>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1421 "runtime.in"
+#line 1515 "runtime.in"
f->append(new drawVerbatim(TeX,s));
}
-#line 1425 "runtime.in"
+#line 1519 "runtime.in"
// void postscript(picture *f, string s, pair min, pair max);
-void gen49(stack *Stack)
+void gen50(stack *Stack)
{
pair max=vm::pop<pair>(Stack);
pair min=vm::pop<pair>(Stack);
string s=vm::pop<string>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1426 "runtime.in"
+#line 1520 "runtime.in"
f->append(new drawVerbatim(PostScript,s,min,max));
}
-#line 1430 "runtime.in"
+#line 1524 "runtime.in"
// void tex(picture *f, string s, pair min, pair max);
-void gen50(stack *Stack)
+void gen51(stack *Stack)
{
pair max=vm::pop<pair>(Stack);
pair min=vm::pop<pair>(Stack);
string s=vm::pop<string>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1431 "runtime.in"
+#line 1525 "runtime.in"
f->append(new drawVerbatim(TeX,s,min,max));
}
-#line 1435 "runtime.in"
+#line 1529 "runtime.in"
// void texpreamble(string s);
-void gen51(stack *Stack)
+void gen52(stack *Stack)
{
string s=vm::pop<string>(Stack);
-#line 1436 "runtime.in"
+#line 1530 "runtime.in"
string t=s+"\n";
processDataStruct &pd=processData();
pd.TeXpipepreamble.push_back(t);
pd.TeXpreamble.push_back(t);
}
-#line 1443 "runtime.in"
+#line 1537 "runtime.in"
// void deletepreamble();
-void gen52(stack *)
+void gen53(stack *)
{
-#line 1444 "runtime.in"
+#line 1538 "runtime.in"
if(getSetting<bool>("inlinetex")) {
unlink(auxname(outname(),"pre").c_str());
}
}
-#line 1450 "runtime.in"
+#line 1544 "runtime.in"
// void _labelpath(picture *f, string s, string size, path g, string justify, pair offset, pen p);
-void gen53(stack *Stack)
+void gen54(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
pair offset=vm::pop<pair>(Stack);
@@ -1673,42 +1772,42 @@ void gen53(stack *Stack)
string size=vm::pop<string>(Stack);
string s=vm::pop<string>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1452 "runtime.in"
+#line 1546 "runtime.in"
f->append(new drawLabelPath(s,size,g,justify,offset,p));
}
-#line 1456 "runtime.in"
+#line 1550 "runtime.in"
// void texreset();
-void gen54(stack *)
+void gen55(stack *)
{
-#line 1457 "runtime.in"
+#line 1551 "runtime.in"
processDataStruct &pd=processData();
pd.TeXpipepreamble.clear();
pd.TeXpreamble.clear();
pd.tex.pipeclose();
}
-#line 1464 "runtime.in"
+#line 1558 "runtime.in"
// void layer(picture *f);
-void gen55(stack *Stack)
+void gen56(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 1465 "runtime.in"
+#line 1559 "runtime.in"
f->append(new drawLayer());
}
-#line 1469 "runtime.in"
+#line 1563 "runtime.in"
// void newpage(picture *f);
-void gen56(stack *Stack)
+void gen57(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 1470 "runtime.in"
+#line 1564 "runtime.in"
f->append(new drawNewPage());
}
-#line 1474 "runtime.in"
+#line 1568 "runtime.in"
// void _image(picture *f, realarray2 *data, pair initial, pair final, penarray *palette=NULL, transform t=identity, bool copy=true, bool antialias=false);
-void gen57(stack *Stack)
+void gen58(stack *Stack)
{
bool antialias=vm::pop<bool>(Stack,false);
bool copy=vm::pop<bool>(Stack,true);
@@ -1718,16 +1817,16 @@ void gen57(stack *Stack)
pair initial=vm::pop<pair>(Stack);
realarray2 * data=vm::pop<realarray2 *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1477 "runtime.in"
+#line 1571 "runtime.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
array *(*copyarray2)(array *a)=copy ? copyArray2: nop;
f->append(new drawImage(*copyarray2(data),*copyarray(palette),
t*matrix(initial,final),antialias));
}
-#line 1484 "runtime.in"
+#line 1578 "runtime.in"
// void _image(picture *f, penarray2 *data, pair initial, pair final, transform t=identity, bool copy=true, bool antialias=false);
-void gen58(stack *Stack)
+void gen59(stack *Stack)
{
bool antialias=vm::pop<bool>(Stack,false);
bool copy=vm::pop<bool>(Stack,true);
@@ -1736,38 +1835,38 @@ void gen58(stack *Stack)
pair initial=vm::pop<pair>(Stack);
penarray2 * data=vm::pop<penarray2 *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 1486 "runtime.in"
+#line 1580 "runtime.in"
array *(*copyarray2)(array *a)=copy ? copyArray2: nop;
f->append(new drawImage(*copyarray2(data),t*matrix(initial,final),antialias));
}
-#line 1491 "runtime.in"
+#line 1585 "runtime.in"
// string nativeformat();
-void gen59(stack *Stack)
+void gen60(stack *Stack)
{
-#line 1492 "runtime.in"
+#line 1586 "runtime.in"
{Stack->push<string>(nativeformat()); return;}
}
-#line 1496 "runtime.in"
+#line 1590 "runtime.in"
// bool latex();
-void gen60(stack *Stack)
+void gen61(stack *Stack)
{
-#line 1497 "runtime.in"
+#line 1591 "runtime.in"
{Stack->push<bool>(latex(getSetting<string>("tex"))); return;}
}
-#line 1501 "runtime.in"
+#line 1595 "runtime.in"
// bool pdf();
-void gen61(stack *Stack)
+void gen62(stack *Stack)
{
-#line 1502 "runtime.in"
+#line 1596 "runtime.in"
{Stack->push<bool>(pdf(getSetting<string>("tex"))); return;}
}
-#line 1506 "runtime.in"
+#line 1600 "runtime.in"
// void shipout(string prefix=emptystring, picture *f, picture *preamble=NULL, string format=emptystring, bool wait=false, bool view=true, callableTransform *xform);
-void gen62(stack *Stack)
+void gen63(stack *Stack)
{
callableTransform * xform=vm::pop<callableTransform *>(Stack);
bool view=vm::pop<bool>(Stack,true);
@@ -1776,7 +1875,7 @@ void gen62(stack *Stack)
picture * preamble=vm::pop<picture *>(Stack,NULL);
picture * f=vm::pop<picture *>(Stack);
string prefix=vm::pop<string>(Stack,emptystring);
-#line 1509 "runtime.in"
+#line 1603 "runtime.in"
if(prefix.empty()) prefix=outname();
picture *result=new picture;
@@ -1819,9 +1918,9 @@ void gen62(stack *Stack)
result->shipout(preamble,prefix,format,0.0,wait,view);
}
-#line 1552 "runtime.in"
-// void shipout3(string prefix, picture *f, string format=emptystring, real width, real height, real angle, triple m, triple M, realarray2 *t, triplearray *lights, realarray2 *diffuse, realarray2 *ambient, realarray2 *specular, bool viewportlighting, bool view=true);
-void gen63(stack *Stack)
+#line 1646 "runtime.in"
+// void shipout3(string prefix, picture *f, string format=emptystring, real width, real height, real angle, triple m, triple M, realarray2 *t, realarray *background, triplearray *lights, realarray2 *diffuse, realarray2 *ambient, realarray2 *specular, bool viewportlighting, bool view=true);
+void gen64(stack *Stack)
{
bool view=vm::pop<bool>(Stack,true);
bool viewportlighting=vm::pop<bool>(Stack);
@@ -1829,6 +1928,7 @@ void gen63(stack *Stack)
realarray2 * ambient=vm::pop<realarray2 *>(Stack);
realarray2 * diffuse=vm::pop<realarray2 *>(Stack);
triplearray * lights=vm::pop<triplearray *>(Stack);
+ realarray * background=vm::pop<realarray *>(Stack);
realarray2 * t=vm::pop<realarray2 *>(Stack);
triple M=vm::pop<triple>(Stack);
triple m=vm::pop<triple>(Stack);
@@ -1838,36 +1938,36 @@ void gen63(stack *Stack)
string format=vm::pop<string>(Stack,emptystring);
picture * f=vm::pop<picture *>(Stack);
string prefix=vm::pop<string>(Stack);
-#line 1557 "runtime.in"
+#line 1651 "runtime.in"
size_t n=checkArrays(lights,diffuse);
checkEqual(n,checkArray(ambient));
checkEqual(n,checkArray(specular));
- f->shipout3(prefix,format,width,height,angle,m,M,copyArray2C(t,true,4),n,
- copyTripleArrayC(lights),copyArray2C(diffuse,false,4),
- copyArray2C(ambient,false,4),copyArray2C(specular,false,4),
- viewportlighting,view);
+ f->shipout3(prefix,format,width,height,angle,m,M,copyArray2C(t,true,4),
+ copyArrayC(background),n,copyTripleArrayC(lights),
+ copyArray2C(diffuse,false,4),copyArray2C(ambient,false,4),
+ copyArray2C(specular,false,4),viewportlighting,view);
}
-#line 1568 "runtime.in"
+#line 1662 "runtime.in"
// void shipout3(string prefix, picture *f);
-void gen64(stack *Stack)
+void gen65(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
string prefix=vm::pop<string>(Stack);
-#line 1569 "runtime.in"
+#line 1663 "runtime.in"
f->shipout3(prefix);
}
-#line 1573 "runtime.in"
+#line 1667 "runtime.in"
// void deconstruct(picture *f, picture *preamble=NULL, real magnification=1, callableTransform *xform);
-void gen65(stack *Stack)
+void gen66(stack *Stack)
{
callableTransform * xform=vm::pop<callableTransform *>(Stack);
real magnification=vm::pop<real>(Stack,1);
picture * preamble=vm::pop<picture *>(Stack,NULL);
picture * f=vm::pop<picture *>(Stack);
-#line 1575 "runtime.in"
+#line 1669 "runtime.in"
unsigned level=0;
unsigned n=0;
@@ -1998,214 +2098,214 @@ void gen65(stack *Stack)
}
}
-#line 1706 "runtime.in"
+#line 1800 "runtime.in"
// void purge(Int divisor=0);
-void gen66(stack *Stack)
+void gen67(stack *Stack)
{
Int divisor=vm::pop<Int>(Stack,0);
-#line 1707 "runtime.in"
+#line 1801 "runtime.in"
purge(divisor);
}
// Pen operations
-#line 1713 "runtime.in"
+#line 1807 "runtime.in"
void newPen(stack *Stack)
{
-#line 1714 "runtime.in"
+#line 1808 "runtime.in"
{Stack->push<pen>(pen()); return;}
}
-#line 1719 "runtime.in"
+#line 1813 "runtime.in"
// bool ==(pen a, pen b);
-void gen68(stack *Stack)
+void gen69(stack *Stack)
{
pen b=vm::pop<pen>(Stack);
pen a=vm::pop<pen>(Stack);
-#line 1720 "runtime.in"
+#line 1814 "runtime.in"
{Stack->push<bool>(a == b); return;}
}
-#line 1724 "runtime.in"
+#line 1818 "runtime.in"
// bool !=(pen a, pen b);
-void gen69(stack *Stack)
+void gen70(stack *Stack)
{
pen b=vm::pop<pen>(Stack);
pen a=vm::pop<pen>(Stack);
-#line 1725 "runtime.in"
+#line 1819 "runtime.in"
{Stack->push<bool>(a != b); return;}
}
-#line 1729 "runtime.in"
+#line 1823 "runtime.in"
// pen +(pen a, pen b);
-void gen70(stack *Stack)
+void gen71(stack *Stack)
{
pen b=vm::pop<pen>(Stack);
pen a=vm::pop<pen>(Stack);
-#line 1730 "runtime.in"
+#line 1824 "runtime.in"
{Stack->push<pen>(a+b); return;}
}
-#line 1734 "runtime.in"
+#line 1828 "runtime.in"
// pen *(real a, pen b);
-void gen71(stack *Stack)
+void gen72(stack *Stack)
{
pen b=vm::pop<pen>(Stack);
real a=vm::pop<real>(Stack);
-#line 1735 "runtime.in"
+#line 1829 "runtime.in"
{Stack->push<pen>(a*b); return;}
}
-#line 1739 "runtime.in"
+#line 1833 "runtime.in"
// pen *(pen a, real b);
-void gen72(stack *Stack)
+void gen73(stack *Stack)
{
real b=vm::pop<real>(Stack);
pen a=vm::pop<pen>(Stack);
-#line 1740 "runtime.in"
+#line 1834 "runtime.in"
{Stack->push<pen>(b*a); return;}
}
-#line 1744 "runtime.in"
+#line 1838 "runtime.in"
// pair max(pen p);
-void gen73(stack *Stack)
+void gen74(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 1745 "runtime.in"
+#line 1839 "runtime.in"
{Stack->push<pair>(p.bounds().Max()); return;}
}
-#line 1749 "runtime.in"
+#line 1843 "runtime.in"
// pair min(pen p);
-void gen74(stack *Stack)
+void gen75(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 1750 "runtime.in"
+#line 1844 "runtime.in"
{Stack->push<pair>(p.bounds().Min()); return;}
}
// Reset the meaning of pen default attributes.
-#line 1755 "runtime.in"
+#line 1849 "runtime.in"
// void resetdefaultpen();
-void gen75(stack *)
+void gen76(stack *)
{
-#line 1756 "runtime.in"
+#line 1850 "runtime.in"
processData().defaultpen=camp::pen::initialpen();
}
-#line 1760 "runtime.in"
+#line 1854 "runtime.in"
// void defaultpen(pen p);
-void gen76(stack *Stack)
+void gen77(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 1761 "runtime.in"
+#line 1855 "runtime.in"
processData().defaultpen=pen(resolvepen,p);
}
-#line 1765 "runtime.in"
+#line 1859 "runtime.in"
// pen defaultpen();
-void gen77(stack *Stack)
+void gen78(stack *Stack)
{
-#line 1766 "runtime.in"
+#line 1860 "runtime.in"
{Stack->push<pen>(processData().defaultpen); return;}
}
-#line 1770 "runtime.in"
+#line 1864 "runtime.in"
// bool invisible(pen p);
-void gen78(stack *Stack)
+void gen79(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 1771 "runtime.in"
+#line 1865 "runtime.in"
{Stack->push<bool>(p.invisible()); return;}
}
-#line 1775 "runtime.in"
+#line 1869 "runtime.in"
// pen invisible();
-void gen79(stack *Stack)
+void gen80(stack *Stack)
{
-#line 1776 "runtime.in"
+#line 1870 "runtime.in"
{Stack->push<pen>(pen(invisiblepen)); return;}
}
-#line 1780 "runtime.in"
+#line 1874 "runtime.in"
// pen gray(pen p);
-void gen80(stack *Stack)
+void gen81(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 1781 "runtime.in"
+#line 1875 "runtime.in"
p.togrey();
{Stack->push<pen>(p); return;}
}
-#line 1786 "runtime.in"
+#line 1880 "runtime.in"
// pen rgb(pen p);
-void gen81(stack *Stack)
+void gen82(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 1787 "runtime.in"
+#line 1881 "runtime.in"
p.torgb();
{Stack->push<pen>(p); return;}
}
-#line 1792 "runtime.in"
+#line 1886 "runtime.in"
// pen cmyk(pen p);
-void gen82(stack *Stack)
+void gen83(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 1793 "runtime.in"
+#line 1887 "runtime.in"
p.tocmyk();
{Stack->push<pen>(p); return;}
}
-#line 1798 "runtime.in"
+#line 1892 "runtime.in"
// pen interp(pen a, pen b, real t);
-void gen83(stack *Stack)
+void gen84(stack *Stack)
{
real t=vm::pop<real>(Stack);
pen b=vm::pop<pen>(Stack);
pen a=vm::pop<pen>(Stack);
-#line 1799 "runtime.in"
+#line 1893 "runtime.in"
{Stack->push<pen>(interpolate(a,b,t)); return;}
}
-#line 1803 "runtime.in"
+#line 1897 "runtime.in"
// pen rgb(real r, real g, real b);
-void gen84(stack *Stack)
+void gen85(stack *Stack)
{
real b=vm::pop<real>(Stack);
real g=vm::pop<real>(Stack);
real r=vm::pop<real>(Stack);
-#line 1804 "runtime.in"
+#line 1898 "runtime.in"
{Stack->push<pen>(pen(r,g,b)); return;}
}
-#line 1808 "runtime.in"
+#line 1902 "runtime.in"
// pen cmyk(real c, real m, real y, real k);
-void gen85(stack *Stack)
+void gen86(stack *Stack)
{
real k=vm::pop<real>(Stack);
real y=vm::pop<real>(Stack);
real m=vm::pop<real>(Stack);
real c=vm::pop<real>(Stack);
-#line 1809 "runtime.in"
+#line 1903 "runtime.in"
{Stack->push<pen>(pen(c,m,y,k)); return;}
}
-#line 1813 "runtime.in"
+#line 1907 "runtime.in"
// pen gray(real gray);
-void gen86(stack *Stack)
+void gen87(stack *Stack)
{
real gray=vm::pop<real>(Stack);
-#line 1814 "runtime.in"
+#line 1908 "runtime.in"
{Stack->push<pen>(pen(gray)); return;}
}
-#line 1818 "runtime.in"
+#line 1912 "runtime.in"
// realarray* colors(pen p);
-void gen87(stack *Stack)
+void gen88(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 1819 "runtime.in"
+#line 1913 "runtime.in"
size_t n=ColorComponents[p.colorspace()];
array *a=new array(n);
@@ -2232,60 +2332,60 @@ void gen87(stack *Stack)
{Stack->push<realarray*>(a); return;}
}
-#line 1846 "runtime.in"
+#line 1940 "runtime.in"
// string colorspace(pen p);
-void gen88(stack *Stack)
+void gen89(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 1847 "runtime.in"
+#line 1941 "runtime.in"
string s=ColorDeviceSuffix[p.colorspace()];
std::transform(s.begin(),s.end(),s.begin(),tolower);
{Stack->push<string>(s); return;}
}
-#line 1853 "runtime.in"
+#line 1947 "runtime.in"
// pen pattern(string *s);
-void gen89(stack *Stack)
+void gen90(stack *Stack)
{
string * s=vm::pop<string *>(Stack);
-#line 1854 "runtime.in"
+#line 1948 "runtime.in"
{Stack->push<pen>(pen(setpattern,*s)); return;}
}
-#line 1858 "runtime.in"
+#line 1952 "runtime.in"
// string pattern(pen p);
-void gen90(stack *Stack)
+void gen91(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 1859 "runtime.in"
+#line 1953 "runtime.in"
{Stack->push<string>(p.fillpattern()); return;}
}
-#line 1863 "runtime.in"
+#line 1957 "runtime.in"
// pen fillrule(Int n);
-void gen91(stack *Stack)
+void gen92(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
-#line 1864 "runtime.in"
+#line 1958 "runtime.in"
{Stack->push<pen>(pen(n >= 0 && n < nFill ? (FillRule) n : DEFFILL)); return;}
}
-#line 1868 "runtime.in"
+#line 1962 "runtime.in"
// Int fillrule(pen p);
-void gen92(stack *Stack)
+void gen93(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 1869 "runtime.in"
+#line 1963 "runtime.in"
{Stack->push<Int>(p.Fillrule()); return;}
}
-#line 1873 "runtime.in"
+#line 1967 "runtime.in"
// pen opacity(real opacity=1.0, string blend=defaulttransparency);
-void gen93(stack *Stack)
+void gen94(stack *Stack)
{
string blend=vm::pop<string>(Stack,defaulttransparency);
real opacity=vm::pop<real>(Stack,1.0);
-#line 1874 "runtime.in"
+#line 1968 "runtime.in"
for(Int i=0; i < nBlendMode; ++i)
if(blend == BlendMode[i]) {Stack->push<pen>(pen(Transparency(blend,opacity))); return;}
@@ -2294,357 +2394,357 @@ void gen93(stack *Stack)
error(buf);
}
-#line 1883 "runtime.in"
+#line 1977 "runtime.in"
// real opacity(pen p);
-void gen94(stack *Stack)
+void gen95(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 1884 "runtime.in"
+#line 1978 "runtime.in"
{Stack->push<real>(p.opacity()); return;}
}
-#line 1888 "runtime.in"
+#line 1982 "runtime.in"
// string blend(pen p);
-void gen95(stack *Stack)
+void gen96(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 1889 "runtime.in"
+#line 1983 "runtime.in"
{Stack->push<string>(p.blend()); return;}
}
-#line 1893 "runtime.in"
+#line 1987 "runtime.in"
// pen linetype(string *s, real offset=0, bool scale=true, bool adjust=true);
-void gen96(stack *Stack)
+void gen97(stack *Stack)
{
bool adjust=vm::pop<bool>(Stack,true);
bool scale=vm::pop<bool>(Stack,true);
real offset=vm::pop<real>(Stack,0);
string * s=vm::pop<string *>(Stack);
-#line 1894 "runtime.in"
+#line 1988 "runtime.in"
{Stack->push<pen>(pen(LineType(*s,offset,scale,adjust))); return;}
}
-#line 1898 "runtime.in"
+#line 1992 "runtime.in"
// string linetype(pen p=CURRENTPEN);
-void gen97(stack *Stack)
+void gen98(stack *Stack)
{
pen p=vm::pop<pen>(Stack,CURRENTPEN);
-#line 1899 "runtime.in"
+#line 1993 "runtime.in"
{Stack->push<string>(p.stroke()); return;}
}
-#line 1903 "runtime.in"
+#line 1997 "runtime.in"
// real offset(pen p);
-void gen98(stack *Stack)
+void gen99(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 1904 "runtime.in"
+#line 1998 "runtime.in"
{Stack->push<real>(p.linetype().offset); return;}
}
-#line 1908 "runtime.in"
+#line 2002 "runtime.in"
// bool scale(pen p);
-void gen99(stack *Stack)
+void gen100(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 1909 "runtime.in"
+#line 2003 "runtime.in"
{Stack->push<bool>(p.linetype().scale); return;}
}
-#line 1913 "runtime.in"
+#line 2007 "runtime.in"
// bool adjust(pen p);
-void gen100(stack *Stack)
+void gen101(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 1914 "runtime.in"
+#line 2008 "runtime.in"
{Stack->push<bool>(p.linetype().adjust); return;}
}
-#line 1918 "runtime.in"
+#line 2012 "runtime.in"
// pen adjust(pen p, real arclength, bool cyclic);
-void gen101(stack *Stack)
+void gen102(stack *Stack)
{
bool cyclic=vm::pop<bool>(Stack);
real arclength=vm::pop<real>(Stack);
pen p=vm::pop<pen>(Stack);
-#line 1919 "runtime.in"
+#line 2013 "runtime.in"
{Stack->push<pen>(adjustdash(p,arclength,cyclic)); return;}
}
-#line 1923 "runtime.in"
+#line 2017 "runtime.in"
// pen linecap(Int n);
-void gen102(stack *Stack)
+void gen103(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
-#line 1924 "runtime.in"
+#line 2018 "runtime.in"
{Stack->push<pen>(pen(setlinecap,n >= 0 && n < nCap ? n : DEFCAP)); return;}
}
-#line 1928 "runtime.in"
+#line 2022 "runtime.in"
// Int linecap(pen p=CURRENTPEN);
-void gen103(stack *Stack)
+void gen104(stack *Stack)
{
pen p=vm::pop<pen>(Stack,CURRENTPEN);
-#line 1929 "runtime.in"
+#line 2023 "runtime.in"
{Stack->push<Int>(p.cap()); return;}
}
-#line 1933 "runtime.in"
+#line 2027 "runtime.in"
// pen linejoin(Int n);
-void gen104(stack *Stack)
+void gen105(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
-#line 1934 "runtime.in"
+#line 2028 "runtime.in"
{Stack->push<pen>(pen(setlinejoin,n >= 0 && n < nJoin ? n : DEFJOIN)); return;}
}
-#line 1938 "runtime.in"
+#line 2032 "runtime.in"
// Int linejoin(pen p=CURRENTPEN);
-void gen105(stack *Stack)
+void gen106(stack *Stack)
{
pen p=vm::pop<pen>(Stack,CURRENTPEN);
-#line 1939 "runtime.in"
+#line 2033 "runtime.in"
{Stack->push<Int>(p.join()); return;}
}
-#line 1943 "runtime.in"
+#line 2037 "runtime.in"
// pen miterlimit(real x);
-void gen106(stack *Stack)
+void gen107(stack *Stack)
{
real x=vm::pop<real>(Stack);
-#line 1944 "runtime.in"
+#line 2038 "runtime.in"
{Stack->push<pen>(pen(setmiterlimit,x >= 1.0 ? x : DEFJOIN)); return;}
}
-#line 1948 "runtime.in"
+#line 2042 "runtime.in"
// real miterlimit(pen p=CURRENTPEN);
-void gen107(stack *Stack)
+void gen108(stack *Stack)
{
pen p=vm::pop<pen>(Stack,CURRENTPEN);
-#line 1949 "runtime.in"
+#line 2043 "runtime.in"
{Stack->push<real>(p.miter()); return;}
}
-#line 1953 "runtime.in"
+#line 2047 "runtime.in"
// pen linewidth(real x);
-void gen108(stack *Stack)
+void gen109(stack *Stack)
{
real x=vm::pop<real>(Stack);
-#line 1954 "runtime.in"
+#line 2048 "runtime.in"
{Stack->push<pen>(pen(setlinewidth,x >= 0.0 ? x : DEFWIDTH)); return;}
}
-#line 1958 "runtime.in"
+#line 2052 "runtime.in"
// real linewidth(pen p=CURRENTPEN);
-void gen109(stack *Stack)
+void gen110(stack *Stack)
{
pen p=vm::pop<pen>(Stack,CURRENTPEN);
-#line 1959 "runtime.in"
+#line 2053 "runtime.in"
{Stack->push<real>(p.width()); return;}
}
-#line 1963 "runtime.in"
+#line 2057 "runtime.in"
// pen fontcommand(string *s);
-void gen110(stack *Stack)
+void gen111(stack *Stack)
{
string * s=vm::pop<string *>(Stack);
-#line 1964 "runtime.in"
+#line 2058 "runtime.in"
{Stack->push<pen>(pen(setfont,*s)); return;}
}
-#line 1968 "runtime.in"
+#line 2062 "runtime.in"
// string font(pen p=CURRENTPEN);
-void gen111(stack *Stack)
+void gen112(stack *Stack)
{
pen p=vm::pop<pen>(Stack,CURRENTPEN);
-#line 1969 "runtime.in"
+#line 2063 "runtime.in"
{Stack->push<string>(p.Font()); return;}
}
-#line 1973 "runtime.in"
+#line 2067 "runtime.in"
// pen fontsize(real size, real lineskip);
-void gen112(stack *Stack)
+void gen113(stack *Stack)
{
real lineskip=vm::pop<real>(Stack);
real size=vm::pop<real>(Stack);
-#line 1974 "runtime.in"
+#line 2068 "runtime.in"
{Stack->push<pen>(pen(setfontsize,size > 0.0 ? size : 0.0,
lineskip > 0.0 ? lineskip : 0.0)); return;}
}
-#line 1979 "runtime.in"
+#line 2073 "runtime.in"
// real fontsize(pen p=CURRENTPEN);
-void gen113(stack *Stack)
+void gen114(stack *Stack)
{
pen p=vm::pop<pen>(Stack,CURRENTPEN);
-#line 1980 "runtime.in"
+#line 2074 "runtime.in"
{Stack->push<real>(p.size()); return;}
}
-#line 1984 "runtime.in"
+#line 2078 "runtime.in"
// real lineskip(pen p=CURRENTPEN);
-void gen114(stack *Stack)
+void gen115(stack *Stack)
{
pen p=vm::pop<pen>(Stack,CURRENTPEN);
-#line 1985 "runtime.in"
+#line 2079 "runtime.in"
{Stack->push<real>(p.Lineskip()); return;}
}
-#line 1989 "runtime.in"
+#line 2083 "runtime.in"
// pen overwrite(Int n);
-void gen115(stack *Stack)
+void gen116(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
-#line 1990 "runtime.in"
+#line 2084 "runtime.in"
{Stack->push<pen>(pen(setoverwrite,n >= 0 && n < nOverwrite ? (overwrite_t) n :
DEFWRITE)); return;}
}
-#line 1995 "runtime.in"
+#line 2089 "runtime.in"
// Int overwrite(pen p=CURRENTPEN);
-void gen116(stack *Stack)
+void gen117(stack *Stack)
{
pen p=vm::pop<pen>(Stack,CURRENTPEN);
-#line 1996 "runtime.in"
+#line 2090 "runtime.in"
{Stack->push<Int>(p.Overwrite()); return;}
}
-#line 2000 "runtime.in"
+#line 2094 "runtime.in"
// pen basealign(Int n);
-void gen117(stack *Stack)
+void gen118(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
-#line 2001 "runtime.in"
+#line 2095 "runtime.in"
{Stack->push<pen>(pen(n >= 0 && n < nBaseLine ? (BaseLine) n : DEFBASE)); return;}
}
-#line 2005 "runtime.in"
+#line 2099 "runtime.in"
// Int basealign(pen p=CURRENTPEN);
-void gen118(stack *Stack)
+void gen119(stack *Stack)
{
pen p=vm::pop<pen>(Stack,CURRENTPEN);
-#line 2006 "runtime.in"
+#line 2100 "runtime.in"
{Stack->push<Int>(p.Baseline()); return;}
}
-#line 2010 "runtime.in"
+#line 2104 "runtime.in"
// transform transform(pen p);
-void gen119(stack *Stack)
+void gen120(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 2011 "runtime.in"
+#line 2105 "runtime.in"
{Stack->push<transform>(p.getTransform()); return;}
}
-#line 2015 "runtime.in"
+#line 2109 "runtime.in"
// path nib(pen p);
-void gen120(stack *Stack)
+void gen121(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 2016 "runtime.in"
+#line 2110 "runtime.in"
{Stack->push<path>(p.Path()); return;}
}
-#line 2020 "runtime.in"
+#line 2114 "runtime.in"
// pen makepen(path p);
-void gen121(stack *Stack)
+void gen122(stack *Stack)
{
path p=vm::pop<path>(Stack);
-#line 2021 "runtime.in"
+#line 2115 "runtime.in"
{Stack->push<pen>(pen(p)); return;}
}
-#line 2025 "runtime.in"
+#line 2119 "runtime.in"
// pen colorless(pen p);
-void gen122(stack *Stack)
+void gen123(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
-#line 2026 "runtime.in"
+#line 2120 "runtime.in"
p.colorless();
{Stack->push<pen>(p); return;}
}
// Interactive mode
-#line 2032 "runtime.in"
+#line 2126 "runtime.in"
// bool interactive();
-void gen123(stack *Stack)
+void gen124(stack *Stack)
{
-#line 2033 "runtime.in"
+#line 2127 "runtime.in"
{Stack->push<bool>(interact::interactive); return;}
}
-#line 2038 "runtime.in"
+#line 2132 "runtime.in"
// bool uptodate();
-void gen124(stack *Stack)
+void gen125(stack *Stack)
{
-#line 2039 "runtime.in"
+#line 2133 "runtime.in"
{Stack->push<bool>(interact::uptodate); return;}
}
// System commands
-#line 2045 "runtime.in"
+#line 2139 "runtime.in"
// Int system(string s);
-void gen125(stack *Stack)
+void gen126(stack *Stack)
{
string s=vm::pop<string>(Stack);
-#line 2046 "runtime.in"
+#line 2140 "runtime.in"
if(safe) error("system() call disabled; override with option -nosafe");
if(s.empty()) {Stack->push<Int>(0); return;}
else {Stack->push<Int>(System(s.c_str())); return;}
}
-#line 2053 "runtime.in"
+#line 2147 "runtime.in"
// bool view();
-void gen126(stack *Stack)
+void gen127(stack *Stack)
{
-#line 2054 "runtime.in"
+#line 2148 "runtime.in"
{Stack->push<bool>(view()); return;}
}
-#line 2058 "runtime.in"
+#line 2152 "runtime.in"
// string asydir();
-void gen127(stack *Stack)
+void gen128(stack *Stack)
{
-#line 2059 "runtime.in"
+#line 2153 "runtime.in"
{Stack->push<string>(systemDir); return;}
}
-#line 2063 "runtime.in"
+#line 2157 "runtime.in"
// string locale(string s=emptystring);
-void gen128(stack *Stack)
+void gen129(stack *Stack)
{
string s=vm::pop<string>(Stack,emptystring);
-#line 2064 "runtime.in"
+#line 2158 "runtime.in"
char *L=setlocale(LC_ALL,s.empty() ? NULL : s.c_str());
{Stack->push<string>(L != NULL ? string(L) : ""); return;}
}
-#line 2069 "runtime.in"
+#line 2163 "runtime.in"
// void abort(string s=emptystring);
-void gen129(stack *Stack)
+void gen130(stack *Stack)
{
string s=vm::pop<string>(Stack,emptystring);
-#line 2070 "runtime.in"
+#line 2164 "runtime.in"
if(s.empty()) throw handled_error();
error(s.c_str());
}
-#line 2075 "runtime.in"
+#line 2169 "runtime.in"
// void exit();
-void gen130(stack *)
+void gen131(stack *)
{
-#line 2076 "runtime.in"
+#line 2170 "runtime.in"
throw quit();
}
-#line 2080 "runtime.in"
+#line 2174 "runtime.in"
// void assert(bool b, string s=emptystring);
-void gen131(stack *Stack)
+void gen132(stack *Stack)
{
string s=vm::pop<string>(Stack,emptystring);
bool b=vm::pop<bool>(Stack);
-#line 2081 "runtime.in"
+#line 2175 "runtime.in"
flush(cout);
if(!b) {
ostringstream buf;
@@ -2654,34 +2754,34 @@ void gen131(stack *Stack)
}
}
-#line 2091 "runtime.in"
+#line 2185 "runtime.in"
// void sleep(Int seconds);
-void gen132(stack *Stack)
+void gen133(stack *Stack)
{
Int seconds=vm::pop<Int>(Stack);
-#line 2092 "runtime.in"
+#line 2186 "runtime.in"
if(seconds <= 0) return;
sleep(seconds);
}
-#line 2097 "runtime.in"
+#line 2191 "runtime.in"
// void usleep(Int microseconds);
-void gen133(stack *Stack)
+void gen134(stack *Stack)
{
Int microseconds=vm::pop<Int>(Stack);
-#line 2098 "runtime.in"
+#line 2192 "runtime.in"
if(microseconds <= 0) return;
usleep((unsigned long) microseconds);
}
-#line 2103 "runtime.in"
+#line 2197 "runtime.in"
// void _eval(string *s, bool embedded, bool interactiveWrite=false);
-void gen134(stack *Stack)
+void gen135(stack *Stack)
{
bool interactiveWrite=vm::pop<bool>(Stack,false);
bool embedded=vm::pop<bool>(Stack);
string * s=vm::pop<string *>(Stack);
-#line 2104 "runtime.in"
+#line 2198 "runtime.in"
if (embedded) {
trans::coenv *e=Stack->getEnvironment();
vm::interactiveStack *is=dynamic_cast<vm::interactiveStack *>(Stack);
@@ -2695,13 +2795,13 @@ void gen134(stack *Stack)
}
}
-#line 2118 "runtime.in"
+#line 2212 "runtime.in"
// void _eval(runnable *s, bool embedded);
-void gen135(stack *Stack)
+void gen136(stack *Stack)
{
bool embedded=vm::pop<bool>(Stack);
runnable * s=vm::pop<runnable *>(Stack);
-#line 2119 "runtime.in"
+#line 2213 "runtime.in"
absyntax::block *ast=new absyntax::block(s->getPos(), false);
ast->add(s);
@@ -2718,42 +2818,42 @@ void gen135(stack *Stack)
}
}
-#line 2136 "runtime.in"
+#line 2230 "runtime.in"
// string location();
-void gen136(stack *Stack)
+void gen137(stack *Stack)
{
-#line 2137 "runtime.in"
+#line 2231 "runtime.in"
ostringstream buf;
buf << getPos();
{Stack->push<string>(buf.str()); return;}
}
// Wrapper for the stack::load() method.
-#line 2143 "runtime.in"
+#line 2237 "runtime.in"
void loadModule(stack *Stack)
{
string * index=vm::pop<string *>(Stack);
-#line 2144 "runtime.in"
+#line 2238 "runtime.in"
Stack->load(*index);
}
-#line 2148 "runtime.in"
+#line 2242 "runtime.in"
// string cd(string s=emptystring);
-void gen138(stack *Stack)
+void gen139(stack *Stack)
{
string s=vm::pop<string>(Stack,emptystring);
-#line 2149 "runtime.in"
+#line 2243 "runtime.in"
if(!s.empty() && !globalwrite()) writeDisabled();
{Stack->push<string>(setPath(s.c_str())); return;}
}
-#line 2154 "runtime.in"
+#line 2248 "runtime.in"
// void list(string *s, bool imports=false);
-void gen139(stack *Stack)
+void gen140(stack *Stack)
{
bool imports=vm::pop<bool>(Stack,false);
string * s=vm::pop<string *>(Stack);
-#line 2155 "runtime.in"
+#line 2249 "runtime.in"
if(*s == "-") return;
trans::genv ge;
symbol *name=symbol::trans(*s);
@@ -2763,144 +2863,144 @@ void gen139(stack *Stack)
// Path operations
-#line 2165 "runtime.in"
+#line 2259 "runtime.in"
void nullPath(stack *Stack)
{
-#line 2166 "runtime.in"
+#line 2260 "runtime.in"
{Stack->push<path>(nullpath); return;}
}
-#line 2171 "runtime.in"
+#line 2265 "runtime.in"
// bool ==(path a, path b);
-void gen141(stack *Stack)
+void gen142(stack *Stack)
{
path b=vm::pop<path>(Stack);
path a=vm::pop<path>(Stack);
-#line 2172 "runtime.in"
+#line 2266 "runtime.in"
{Stack->push<bool>(a == b); return;}
}
-#line 2176 "runtime.in"
+#line 2270 "runtime.in"
// bool !=(path a, path b);
-void gen142(stack *Stack)
+void gen143(stack *Stack)
{
path b=vm::pop<path>(Stack);
path a=vm::pop<path>(Stack);
-#line 2177 "runtime.in"
+#line 2271 "runtime.in"
{Stack->push<bool>(!(a == b)); return;}
}
-#line 2181 "runtime.in"
+#line 2275 "runtime.in"
// pair point(path p, Int t);
-void gen143(stack *Stack)
+void gen144(stack *Stack)
{
Int t=vm::pop<Int>(Stack);
path p=vm::pop<path>(Stack);
-#line 2182 "runtime.in"
+#line 2276 "runtime.in"
{Stack->push<pair>(p.point((Int) t)); return;}
}
-#line 2186 "runtime.in"
+#line 2280 "runtime.in"
// pair point(path p, real t);
-void gen144(stack *Stack)
+void gen145(stack *Stack)
{
real t=vm::pop<real>(Stack);
path p=vm::pop<path>(Stack);
-#line 2187 "runtime.in"
+#line 2281 "runtime.in"
{Stack->push<pair>(p.point(t)); return;}
}
-#line 2191 "runtime.in"
+#line 2285 "runtime.in"
// pair precontrol(path p, Int t);
-void gen145(stack *Stack)
+void gen146(stack *Stack)
{
Int t=vm::pop<Int>(Stack);
path p=vm::pop<path>(Stack);
-#line 2192 "runtime.in"
+#line 2286 "runtime.in"
{Stack->push<pair>(p.precontrol((Int) t)); return;}
}
-#line 2196 "runtime.in"
+#line 2290 "runtime.in"
// pair precontrol(path p, real t);
-void gen146(stack *Stack)
+void gen147(stack *Stack)
{
real t=vm::pop<real>(Stack);
path p=vm::pop<path>(Stack);
-#line 2197 "runtime.in"
+#line 2291 "runtime.in"
{Stack->push<pair>(p.precontrol(t)); return;}
}
-#line 2201 "runtime.in"
+#line 2295 "runtime.in"
// pair postcontrol(path p, Int t);
-void gen147(stack *Stack)
+void gen148(stack *Stack)
{
Int t=vm::pop<Int>(Stack);
path p=vm::pop<path>(Stack);
-#line 2202 "runtime.in"
+#line 2296 "runtime.in"
{Stack->push<pair>(p.postcontrol((Int) t)); return;}
}
-#line 2206 "runtime.in"
+#line 2300 "runtime.in"
// pair postcontrol(path p, real t);
-void gen148(stack *Stack)
+void gen149(stack *Stack)
{
real t=vm::pop<real>(Stack);
path p=vm::pop<path>(Stack);
-#line 2207 "runtime.in"
+#line 2301 "runtime.in"
{Stack->push<pair>(p.postcontrol(t)); return;}
}
-#line 2211 "runtime.in"
+#line 2305 "runtime.in"
// pair dir(path p, Int t, Int sign=0, bool normalize=true);
-void gen149(stack *Stack)
+void gen150(stack *Stack)
{
bool normalize=vm::pop<bool>(Stack,true);
Int sign=vm::pop<Int>(Stack,0);
Int t=vm::pop<Int>(Stack);
path p=vm::pop<path>(Stack);
-#line 2212 "runtime.in"
+#line 2306 "runtime.in"
{Stack->push<pair>(p.dir(t,sign,normalize)); return;}
}
-#line 2216 "runtime.in"
+#line 2310 "runtime.in"
// pair dir(path p, real t, bool normalize=true);
-void gen150(stack *Stack)
+void gen151(stack *Stack)
{
bool normalize=vm::pop<bool>(Stack,true);
real t=vm::pop<real>(Stack);
path p=vm::pop<path>(Stack);
-#line 2217 "runtime.in"
+#line 2311 "runtime.in"
{Stack->push<pair>(p.dir(t,normalize)); return;}
}
-#line 2221 "runtime.in"
+#line 2315 "runtime.in"
// pair accel(path p, Int t, Int sign=0);
-void gen151(stack *Stack)
+void gen152(stack *Stack)
{
Int sign=vm::pop<Int>(Stack,0);
Int t=vm::pop<Int>(Stack);
path p=vm::pop<path>(Stack);
-#line 2222 "runtime.in"
+#line 2316 "runtime.in"
{Stack->push<pair>(p.accel(t,sign)); return;}
}
-#line 2226 "runtime.in"
+#line 2320 "runtime.in"
// pair accel(path p, real t);
-void gen152(stack *Stack)
+void gen153(stack *Stack)
{
real t=vm::pop<real>(Stack);
path p=vm::pop<path>(Stack);
-#line 2227 "runtime.in"
+#line 2321 "runtime.in"
{Stack->push<pair>(p.accel(t)); return;}
}
-#line 2231 "runtime.in"
+#line 2325 "runtime.in"
// real radius(path p, real t);
-void gen153(stack *Stack)
+void gen154(stack *Stack)
{
real t=vm::pop<real>(Stack);
path p=vm::pop<path>(Stack);
-#line 2232 "runtime.in"
+#line 2326 "runtime.in"
pair v=p.dir(t,false);
pair a=p.accel(t);
real d=dot(a,v);
@@ -2911,40 +3011,40 @@ void gen153(stack *Stack)
{Stack->push<real>(denom > 0 ? r/sqrt(denom) : 0.0); return;}
}
-#line 2243 "runtime.in"
+#line 2337 "runtime.in"
// path reverse(path p);
-void gen154(stack *Stack)
+void gen155(stack *Stack)
{
path p=vm::pop<path>(Stack);
-#line 2244 "runtime.in"
+#line 2338 "runtime.in"
{Stack->push<path>(p.reverse()); return;}
}
-#line 2248 "runtime.in"
+#line 2342 "runtime.in"
// path subpath(path p, Int a, Int b);
-void gen155(stack *Stack)
+void gen156(stack *Stack)
{
Int b=vm::pop<Int>(Stack);
Int a=vm::pop<Int>(Stack);
path p=vm::pop<path>(Stack);
-#line 2249 "runtime.in"
+#line 2343 "runtime.in"
{Stack->push<path>(p.subpath((Int) a, (Int) b)); return;}
}
-#line 2253 "runtime.in"
+#line 2347 "runtime.in"
// path subpath(path p, real a, real b);
-void gen156(stack *Stack)
+void gen157(stack *Stack)
{
real b=vm::pop<real>(Stack);
real a=vm::pop<real>(Stack);
path p=vm::pop<path>(Stack);
-#line 2254 "runtime.in"
+#line 2348 "runtime.in"
{Stack->push<path>(p.subpath(a,b)); return;}
}
-#line 2258 "runtime.in"
+#line 2352 "runtime.in"
// path nurb(pair z0, pair z1, pair z2, pair z3, real w0, real w1, real w2, real w3, Int m);
-void gen157(stack *Stack)
+void gen158(stack *Stack)
{
Int m=vm::pop<Int>(Stack);
real w3=vm::pop<real>(Stack);
@@ -2955,93 +3055,93 @@ void gen157(stack *Stack)
pair z2=vm::pop<pair>(Stack);
pair z1=vm::pop<pair>(Stack);
pair z0=vm::pop<pair>(Stack);
-#line 2260 "runtime.in"
+#line 2354 "runtime.in"
{Stack->push<path>(nurb(z0,z1,z2,z3,w0,w1,w2,w3,m)); return;}
}
-#line 2264 "runtime.in"
+#line 2358 "runtime.in"
// Int length(path p);
-void gen158(stack *Stack)
+void gen159(stack *Stack)
{
path p=vm::pop<path>(Stack);
-#line 2265 "runtime.in"
+#line 2359 "runtime.in"
{Stack->push<Int>(p.length()); return;}
}
-#line 2269 "runtime.in"
+#line 2363 "runtime.in"
// bool cyclic(path p);
-void gen159(stack *Stack)
+void gen160(stack *Stack)
{
path p=vm::pop<path>(Stack);
-#line 2270 "runtime.in"
+#line 2364 "runtime.in"
{Stack->push<bool>(p.cyclic()); return;}
}
-#line 2274 "runtime.in"
+#line 2368 "runtime.in"
// bool straight(path p, Int t);
-void gen160(stack *Stack)
+void gen161(stack *Stack)
{
Int t=vm::pop<Int>(Stack);
path p=vm::pop<path>(Stack);
-#line 2275 "runtime.in"
+#line 2369 "runtime.in"
{Stack->push<bool>(p.straight(t)); return;}
}
-#line 2279 "runtime.in"
+#line 2373 "runtime.in"
// path unstraighten(path p);
-void gen161(stack *Stack)
+void gen162(stack *Stack)
{
path p=vm::pop<path>(Stack);
-#line 2280 "runtime.in"
+#line 2374 "runtime.in"
{Stack->push<path>(p.unstraighten()); return;}
}
-#line 2284 "runtime.in"
+#line 2378 "runtime.in"
// bool piecewisestraight(path p);
-void gen162(stack *Stack)
+void gen163(stack *Stack)
{
path p=vm::pop<path>(Stack);
-#line 2285 "runtime.in"
+#line 2379 "runtime.in"
{Stack->push<bool>(p.piecewisestraight()); return;}
}
-#line 2289 "runtime.in"
+#line 2383 "runtime.in"
// real arclength(path p);
-void gen163(stack *Stack)
+void gen164(stack *Stack)
{
path p=vm::pop<path>(Stack);
-#line 2290 "runtime.in"
+#line 2384 "runtime.in"
{Stack->push<real>(p.arclength()); return;}
}
-#line 2294 "runtime.in"
+#line 2388 "runtime.in"
// real arctime(path p, real dval);
-void gen164(stack *Stack)
+void gen165(stack *Stack)
{
real dval=vm::pop<real>(Stack);
path p=vm::pop<path>(Stack);
-#line 2295 "runtime.in"
+#line 2389 "runtime.in"
{Stack->push<real>(p.arctime(dval)); return;}
}
-#line 2299 "runtime.in"
+#line 2393 "runtime.in"
// real dirtime(path p, pair z);
-void gen165(stack *Stack)
+void gen166(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
path p=vm::pop<path>(Stack);
-#line 2300 "runtime.in"
+#line 2394 "runtime.in"
{Stack->push<real>(p.directiontime(z)); return;}
}
-#line 2304 "runtime.in"
+#line 2398 "runtime.in"
// realarray* intersect(path p, path q, real fuzz=-1);
-void gen166(stack *Stack)
+void gen167(stack *Stack)
{
real fuzz=vm::pop<real>(Stack,-1);
path q=vm::pop<path>(Stack);
path p=vm::pop<path>(Stack);
-#line 2305 "runtime.in"
+#line 2399 "runtime.in"
bool exact=fuzz <= 0.0;
if(fuzz < 0)
fuzz=BigFuzz*::max(::max(length(p.max()),length(p.min())),
@@ -3057,14 +3157,14 @@ void gen166(stack *Stack)
{Stack->push<realarray*>(new array(0)); return;}
}
-#line 2321 "runtime.in"
+#line 2415 "runtime.in"
// realarray2* intersections(path p, path q, real fuzz=-1);
-void gen167(stack *Stack)
+void gen168(stack *Stack)
{
real fuzz=vm::pop<real>(Stack,-1);
path q=vm::pop<path>(Stack);
path p=vm::pop<path>(Stack);
-#line 2322 "runtime.in"
+#line 2416 "runtime.in"
bool exact=fuzz <= 0.0;
if(fuzz < 0.0)
fuzz=BigFuzz*::max(::max(length(p.max()),length(p.min())),
@@ -3094,15 +3194,15 @@ void gen167(stack *Stack)
{Stack->push<realarray2*>(V); return;}
}
-#line 2352 "runtime.in"
+#line 2446 "runtime.in"
// realarray* intersections(path p, explicit pair a, explicit pair b, real fuzz=-1);
-void gen168(stack *Stack)
+void gen169(stack *Stack)
{
real fuzz=vm::pop<real>(Stack,-1);
pair b=vm::pop<pair>(Stack);
pair a=vm::pop<pair>(Stack);
path p=vm::pop<path>(Stack);
-#line 2353 "runtime.in"
+#line 2447 "runtime.in"
if(fuzz < 0)
fuzz=BigFuzz*::max(::max(length(p.max()),length(p.min())),
::max(length(a),length(b)));
@@ -3118,15 +3218,15 @@ void gen168(stack *Stack)
// Return the intersection point of the extensions of the line segments
// PQ and pq.
-#line 2369 "runtime.in"
+#line 2463 "runtime.in"
// pair extension(pair P, pair Q, pair p, pair q);
-void gen169(stack *Stack)
+void gen170(stack *Stack)
{
pair q=vm::pop<pair>(Stack);
pair p=vm::pop<pair>(Stack);
pair Q=vm::pop<pair>(Stack);
pair P=vm::pop<pair>(Stack);
-#line 2370 "runtime.in"
+#line 2464 "runtime.in"
pair ac=P-Q;
pair bd=q-p;
real det=ac.getx()*bd.gety()-ac.gety()*bd.getx();
@@ -3134,49 +3234,49 @@ void gen169(stack *Stack)
{Stack->push<pair>(P+((p.getx()-P.getx())*bd.gety()-(p.gety()-P.gety())*bd.getx())*ac/det); return;}
}
-#line 2378 "runtime.in"
+#line 2472 "runtime.in"
// Int size(path p);
-void gen170(stack *Stack)
+void gen171(stack *Stack)
{
path p=vm::pop<path>(Stack);
-#line 2379 "runtime.in"
+#line 2473 "runtime.in"
{Stack->push<Int>(p.size()); return;}
}
-#line 2383 "runtime.in"
+#line 2477 "runtime.in"
// path &(path p, path q);
-void gen171(stack *Stack)
+void gen172(stack *Stack)
{
path q=vm::pop<path>(Stack);
path p=vm::pop<path>(Stack);
-#line 2384 "runtime.in"
+#line 2478 "runtime.in"
{Stack->push<path>(camp::concat(p,q)); return;}
}
-#line 2388 "runtime.in"
+#line 2482 "runtime.in"
// pair min(path p);
-void gen172(stack *Stack)
+void gen173(stack *Stack)
{
path p=vm::pop<path>(Stack);
-#line 2389 "runtime.in"
+#line 2483 "runtime.in"
{Stack->push<pair>(p.min()); return;}
}
-#line 2393 "runtime.in"
+#line 2487 "runtime.in"
// pair max(path p);
-void gen173(stack *Stack)
+void gen174(stack *Stack)
{
path p=vm::pop<path>(Stack);
-#line 2394 "runtime.in"
+#line 2488 "runtime.in"
{Stack->push<pair>(p.max()); return;}
}
-#line 2398 "runtime.in"
+#line 2492 "runtime.in"
// realarray* mintimes(path p);
-void gen174(stack *Stack)
+void gen175(stack *Stack)
{
path p=vm::pop<path>(Stack);
-#line 2399 "runtime.in"
+#line 2493 "runtime.in"
array *V=new array(2);
pair z=p.mintimes();
(*V)[0]=z.getx();
@@ -3184,12 +3284,12 @@ void gen174(stack *Stack)
{Stack->push<realarray*>(V); return;}
}
-#line 2407 "runtime.in"
+#line 2501 "runtime.in"
// realarray* maxtimes(path p);
-void gen175(stack *Stack)
+void gen176(stack *Stack)
{
path p=vm::pop<path>(Stack);
-#line 2408 "runtime.in"
+#line 2502 "runtime.in"
array *V=new array(2);
pair z=p.maxtimes();
(*V)[0]=z.getx();
@@ -3197,90 +3297,90 @@ void gen175(stack *Stack)
{Stack->push<realarray*>(V); return;}
}
-#line 2416 "runtime.in"
+#line 2510 "runtime.in"
// real relativedistance(real theta, real phi, real t, bool atleast);
-void gen176(stack *Stack)
+void gen177(stack *Stack)
{
bool atleast=vm::pop<bool>(Stack);
real t=vm::pop<real>(Stack);
real phi=vm::pop<real>(Stack);
real theta=vm::pop<real>(Stack);
-#line 2417 "runtime.in"
+#line 2511 "runtime.in"
{Stack->push<real>(camp::velocity(theta,phi,tension(t,atleast))); return;}
}
-#line 2421 "runtime.in"
+#line 2515 "runtime.in"
// Int windingnumber(patharray *p, pair z);
-void gen177(stack *Stack)
+void gen178(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
patharray * p=vm::pop<patharray *>(Stack);
-#line 2422 "runtime.in"
+#line 2516 "runtime.in"
{Stack->push<Int>(windingnumber(p,z)); return;}
}
-#line 2426 "runtime.in"
+#line 2520 "runtime.in"
// bool inside(explicit patharray *g, pair z, pen fillrule=CURRENTPEN);
-void gen178(stack *Stack)
+void gen179(stack *Stack)
{
pen fillrule=vm::pop<pen>(Stack,CURRENTPEN);
pair z=vm::pop<pair>(Stack);
patharray * g=vm::pop<patharray *>(Stack);
-#line 2427 "runtime.in"
+#line 2521 "runtime.in"
{Stack->push<bool>(fillrule.inside(windingnumber(g,z))); return;}
}
-#line 2431 "runtime.in"
+#line 2525 "runtime.in"
// bool inside(path g, pair z, pen fillrule=CURRENTPEN);
-void gen179(stack *Stack)
+void gen180(stack *Stack)
{
pen fillrule=vm::pop<pen>(Stack,CURRENTPEN);
pair z=vm::pop<pair>(Stack);
path g=vm::pop<path>(Stack);
-#line 2432 "runtime.in"
+#line 2526 "runtime.in"
{Stack->push<bool>(fillrule.inside(g.windingnumber(z))); return;}
}
// Determine the side of a--b that c lies on
// (negative=left, zero=on line, positive=right).
-#line 2438 "runtime.in"
+#line 2532 "runtime.in"
// real side(pair a, pair b, pair c);
-void gen180(stack *Stack)
+void gen181(stack *Stack)
{
pair c=vm::pop<pair>(Stack);
pair b=vm::pop<pair>(Stack);
pair a=vm::pop<pair>(Stack);
-#line 2439 "runtime.in"
+#line 2533 "runtime.in"
{Stack->push<real>(orient2d(a,b,c)); return;}
}
// Determine the side of the counterclockwise circle through a,b,c that d
// lies on (negative=inside, 0=on circle, positive=right).
-#line 2445 "runtime.in"
+#line 2539 "runtime.in"
// real incircle(pair a, pair b, pair c, pair d);
-void gen181(stack *Stack)
+void gen182(stack *Stack)
{
pair d=vm::pop<pair>(Stack);
pair c=vm::pop<pair>(Stack);
pair b=vm::pop<pair>(Stack);
pair a=vm::pop<pair>(Stack);
-#line 2446 "runtime.in"
+#line 2540 "runtime.in"
{Stack->push<real>(incircle(a.getx(),a.gety(),b.getx(),b.gety(),c.getx(),c.gety(),
d.getx(),d.gety())); return;}
}
// Path3 operations
-#line 2453 "runtime.in"
+#line 2547 "runtime.in"
// path3 path3(triplearray *pre, triplearray *point, triplearray *post, boolarray *straight, bool cyclic);
-void gen182(stack *Stack)
+void gen183(stack *Stack)
{
bool cyclic=vm::pop<bool>(Stack);
boolarray * straight=vm::pop<boolarray *>(Stack);
triplearray * post=vm::pop<triplearray *>(Stack);
triplearray * point=vm::pop<triplearray *>(Stack);
triplearray * pre=vm::pop<triplearray *>(Stack);
-#line 2455 "runtime.in"
+#line 2549 "runtime.in"
size_t n=checkArrays(pre,point);
checkEqual(n,checkArray(post));
checkEqual(n,checkArray(straight));
@@ -3295,144 +3395,144 @@ void gen182(stack *Stack)
{Stack->push<path3>(path3(nodes,(Int) n,cyclic)); return;}
}
-#line 2471 "runtime.in"
+#line 2565 "runtime.in"
void nullPath3(stack *Stack)
{
-#line 2472 "runtime.in"
+#line 2566 "runtime.in"
{Stack->push<path3>(nullpath3); return;}
}
-#line 2476 "runtime.in"
+#line 2570 "runtime.in"
// bool ==(path3 a, path3 b);
-void gen184(stack *Stack)
+void gen185(stack *Stack)
{
path3 b=vm::pop<path3>(Stack);
path3 a=vm::pop<path3>(Stack);
-#line 2477 "runtime.in"
+#line 2571 "runtime.in"
{Stack->push<bool>(a == b); return;}
}
-#line 2481 "runtime.in"
+#line 2575 "runtime.in"
// bool !=(path3 a, path3 b);
-void gen185(stack *Stack)
+void gen186(stack *Stack)
{
path3 b=vm::pop<path3>(Stack);
path3 a=vm::pop<path3>(Stack);
-#line 2482 "runtime.in"
+#line 2576 "runtime.in"
{Stack->push<bool>(!(a == b)); return;}
}
-#line 2486 "runtime.in"
+#line 2580 "runtime.in"
// triple point(path3 p, Int t);
-void gen186(stack *Stack)
+void gen187(stack *Stack)
{
Int t=vm::pop<Int>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2487 "runtime.in"
+#line 2581 "runtime.in"
{Stack->push<triple>(p.point((Int) t)); return;}
}
-#line 2491 "runtime.in"
+#line 2585 "runtime.in"
// triple point(path3 p, real t);
-void gen187(stack *Stack)
+void gen188(stack *Stack)
{
real t=vm::pop<real>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2492 "runtime.in"
+#line 2586 "runtime.in"
{Stack->push<triple>(p.point(t)); return;}
}
-#line 2496 "runtime.in"
+#line 2590 "runtime.in"
// triple precontrol(path3 p, Int t);
-void gen188(stack *Stack)
+void gen189(stack *Stack)
{
Int t=vm::pop<Int>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2497 "runtime.in"
+#line 2591 "runtime.in"
{Stack->push<triple>(p.precontrol((Int) t)); return;}
}
-#line 2501 "runtime.in"
+#line 2595 "runtime.in"
// triple precontrol(path3 p, real t);
-void gen189(stack *Stack)
+void gen190(stack *Stack)
{
real t=vm::pop<real>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2502 "runtime.in"
+#line 2596 "runtime.in"
{Stack->push<triple>(p.precontrol(t)); return;}
}
-#line 2506 "runtime.in"
+#line 2600 "runtime.in"
// triple postcontrol(path3 p, Int t);
-void gen190(stack *Stack)
+void gen191(stack *Stack)
{
Int t=vm::pop<Int>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2507 "runtime.in"
+#line 2601 "runtime.in"
{Stack->push<triple>(p.postcontrol((Int) t)); return;}
}
-#line 2511 "runtime.in"
+#line 2605 "runtime.in"
// triple postcontrol(path3 p, real t);
-void gen191(stack *Stack)
+void gen192(stack *Stack)
{
real t=vm::pop<real>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2512 "runtime.in"
+#line 2606 "runtime.in"
{Stack->push<triple>(p.postcontrol(t)); return;}
}
-#line 2516 "runtime.in"
+#line 2610 "runtime.in"
// triple dir(path3 p, Int t, Int sign=0, bool normalize=true);
-void gen192(stack *Stack)
+void gen193(stack *Stack)
{
bool normalize=vm::pop<bool>(Stack,true);
Int sign=vm::pop<Int>(Stack,0);
Int t=vm::pop<Int>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2517 "runtime.in"
+#line 2611 "runtime.in"
{Stack->push<triple>(p.dir(t,sign,normalize)); return;}
}
-#line 2521 "runtime.in"
+#line 2615 "runtime.in"
// triple dir(path3 p, real t, bool normalize=true);
-void gen193(stack *Stack)
+void gen194(stack *Stack)
{
bool normalize=vm::pop<bool>(Stack,true);
real t=vm::pop<real>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2522 "runtime.in"
+#line 2616 "runtime.in"
{Stack->push<triple>(p.dir(t,normalize)); return;}
}
-#line 2526 "runtime.in"
+#line 2620 "runtime.in"
// triple accel(path3 p, Int t, Int sign=0);
-void gen194(stack *Stack)
+void gen195(stack *Stack)
{
Int sign=vm::pop<Int>(Stack,0);
Int t=vm::pop<Int>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2527 "runtime.in"
+#line 2621 "runtime.in"
{Stack->push<triple>(p.accel(t,sign)); return;}
}
-#line 2531 "runtime.in"
+#line 2625 "runtime.in"
// triple accel(path3 p, real t);
-void gen195(stack *Stack)
+void gen196(stack *Stack)
{
real t=vm::pop<real>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2532 "runtime.in"
+#line 2626 "runtime.in"
{Stack->push<triple>(p.accel(t)); return;}
}
-#line 2536 "runtime.in"
+#line 2630 "runtime.in"
// real radius(path3 p, real t);
-void gen196(stack *Stack)
+void gen197(stack *Stack)
{
real t=vm::pop<real>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2537 "runtime.in"
+#line 2631 "runtime.in"
triple v=p.dir(t,false);
triple a=p.accel(t);
real d=dot(a,v);
@@ -3443,16 +3543,16 @@ void gen196(stack *Stack)
{Stack->push<real>(denom > 0 ? r/sqrt(denom) : 0.0); return;}
}
-#line 2548 "runtime.in"
+#line 2642 "runtime.in"
// real radius(triple z0, triple c0, triple c1, triple z1, real t);
-void gen197(stack *Stack)
+void gen198(stack *Stack)
{
real t=vm::pop<real>(Stack);
triple z1=vm::pop<triple>(Stack);
triple c1=vm::pop<triple>(Stack);
triple c0=vm::pop<triple>(Stack);
triple z0=vm::pop<triple>(Stack);
-#line 2549 "runtime.in"
+#line 2643 "runtime.in"
triple v=(3.0*(z1-z0)+9.0*(c0-c1))*t*t+(6.0*(z0+c1)-12.0*c0)*t+3.0*(c0-z0);
triple a=6.0*(z1-z0+3.0*(c0-c1))*t+6.0*(z0+c1)-12.0*c0;
real d=dot(a,v);
@@ -3463,85 +3563,85 @@ void gen197(stack *Stack)
{Stack->push<real>(denom > 0 ? r/sqrt(denom) : 0.0); return;}
}
-#line 2560 "runtime.in"
+#line 2654 "runtime.in"
// path3 reverse(path3 p);
-void gen198(stack *Stack)
+void gen199(stack *Stack)
{
path3 p=vm::pop<path3>(Stack);
-#line 2561 "runtime.in"
+#line 2655 "runtime.in"
{Stack->push<path3>(p.reverse()); return;}
}
-#line 2565 "runtime.in"
+#line 2659 "runtime.in"
// path3 subpath(path3 p, Int a, Int b);
-void gen199(stack *Stack)
+void gen200(stack *Stack)
{
Int b=vm::pop<Int>(Stack);
Int a=vm::pop<Int>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2566 "runtime.in"
+#line 2660 "runtime.in"
{Stack->push<path3>(p.subpath((Int) a, (Int) b)); return;}
}
-#line 2570 "runtime.in"
+#line 2664 "runtime.in"
// path3 subpath(path3 p, real a, real b);
-void gen200(stack *Stack)
+void gen201(stack *Stack)
{
real b=vm::pop<real>(Stack);
real a=vm::pop<real>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2571 "runtime.in"
+#line 2665 "runtime.in"
{Stack->push<path3>(p.subpath(a,b)); return;}
}
-#line 2575 "runtime.in"
+#line 2669 "runtime.in"
// Int length(path3 p);
-void gen201(stack *Stack)
+void gen202(stack *Stack)
{
path3 p=vm::pop<path3>(Stack);
-#line 2576 "runtime.in"
+#line 2670 "runtime.in"
{Stack->push<Int>(p.length()); return;}
}
-#line 2580 "runtime.in"
+#line 2674 "runtime.in"
// bool cyclic(path3 p);
-void gen202(stack *Stack)
+void gen203(stack *Stack)
{
path3 p=vm::pop<path3>(Stack);
-#line 2581 "runtime.in"
+#line 2675 "runtime.in"
{Stack->push<bool>(p.cyclic()); return;}
}
-#line 2585 "runtime.in"
+#line 2679 "runtime.in"
// bool straight(path3 p, Int t);
-void gen203(stack *Stack)
+void gen204(stack *Stack)
{
Int t=vm::pop<Int>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2586 "runtime.in"
+#line 2680 "runtime.in"
{Stack->push<bool>(p.straight(t)); return;}
}
// Return the component of vector v perpendicular to a unit vector u.
-#line 2591 "runtime.in"
+#line 2685 "runtime.in"
// triple perp(triple v, triple u);
-void gen204(stack *Stack)
+void gen205(stack *Stack)
{
triple u=vm::pop<triple>(Stack);
triple v=vm::pop<triple>(Stack);
-#line 2592 "runtime.in"
+#line 2686 "runtime.in"
{Stack->push<triple>(v-dot(v,u)*u); return;}
}
// Return the maximum perpendicular deviation of segment i of path3 g
// from a straight line.
-#line 2598 "runtime.in"
+#line 2692 "runtime.in"
// real straightness(path3 p, Int t);
-void gen205(stack *Stack)
+void gen206(stack *Stack)
{
Int t=vm::pop<Int>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2599 "runtime.in"
+#line 2693 "runtime.in"
if(p.straight(t)) {Stack->push<real>(0); return;}
triple z0=p.point(t);
triple u=unit(p.point(t+1)-z0);
@@ -3551,55 +3651,55 @@ void gen205(stack *Stack)
// Return the maximum perpendicular deviation of z0..controls c0 and c1..z1
// from a straight line.
-#line 2609 "runtime.in"
+#line 2703 "runtime.in"
// real straightness(triple z0, triple c0, triple c1, triple z1);
-void gen206(stack *Stack)
+void gen207(stack *Stack)
{
triple z1=vm::pop<triple>(Stack);
triple c1=vm::pop<triple>(Stack);
triple c0=vm::pop<triple>(Stack);
triple z0=vm::pop<triple>(Stack);
-#line 2610 "runtime.in"
+#line 2704 "runtime.in"
triple u=unit(z1-z0);
{Stack->push<real>(::max(length(perp(c0-z0,u)),length(perp(c1-z0,u)))); return;}
}
-#line 2615 "runtime.in"
+#line 2709 "runtime.in"
// bool piecewisestraight(path3 p);
-void gen207(stack *Stack)
+void gen208(stack *Stack)
{
path3 p=vm::pop<path3>(Stack);
-#line 2616 "runtime.in"
+#line 2710 "runtime.in"
{Stack->push<bool>(p.piecewisestraight()); return;}
}
-#line 2620 "runtime.in"
+#line 2714 "runtime.in"
// real arclength(path3 p);
-void gen208(stack *Stack)
+void gen209(stack *Stack)
{
path3 p=vm::pop<path3>(Stack);
-#line 2621 "runtime.in"
+#line 2715 "runtime.in"
{Stack->push<real>(p.arclength()); return;}
}
-#line 2625 "runtime.in"
+#line 2719 "runtime.in"
// real arctime(path3 p, real dval);
-void gen209(stack *Stack)
+void gen210(stack *Stack)
{
real dval=vm::pop<real>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2626 "runtime.in"
+#line 2720 "runtime.in"
{Stack->push<real>(p.arctime(dval)); return;}
}
-#line 2630 "runtime.in"
+#line 2724 "runtime.in"
// realarray* intersect(path3 p, path3 q, real fuzz=-1);
-void gen210(stack *Stack)
+void gen211(stack *Stack)
{
real fuzz=vm::pop<real>(Stack,-1);
path3 q=vm::pop<path3>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2631 "runtime.in"
+#line 2725 "runtime.in"
bool exact=fuzz <= 0.0;
if(fuzz < 0)
fuzz=BigFuzz*::max(::max(length(p.max()),length(p.min())),
@@ -3616,14 +3716,14 @@ void gen210(stack *Stack)
{Stack->push<realarray*>(new array(0)); return;}
}
-#line 2648 "runtime.in"
+#line 2742 "runtime.in"
// realarray2* intersections(path3 p, path3 q, real fuzz=-1);
-void gen211(stack *Stack)
+void gen212(stack *Stack)
{
real fuzz=vm::pop<real>(Stack,-1);
path3 q=vm::pop<path3>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2649 "runtime.in"
+#line 2743 "runtime.in"
bool exact=fuzz <= 0.0;
if(fuzz < 0)
fuzz=BigFuzz*::max(::max(length(p.max()),length(p.min())),
@@ -3655,49 +3755,49 @@ void gen211(stack *Stack)
{Stack->push<realarray2*>(V); return;}
}
-#line 2681 "runtime.in"
+#line 2775 "runtime.in"
// Int size(path3 p);
-void gen212(stack *Stack)
+void gen213(stack *Stack)
{
path3 p=vm::pop<path3>(Stack);
-#line 2682 "runtime.in"
+#line 2776 "runtime.in"
{Stack->push<Int>(p.size()); return;}
}
-#line 2686 "runtime.in"
+#line 2780 "runtime.in"
// path3 &(path3 p, path3 q);
-void gen213(stack *Stack)
+void gen214(stack *Stack)
{
path3 q=vm::pop<path3>(Stack);
path3 p=vm::pop<path3>(Stack);
-#line 2687 "runtime.in"
+#line 2781 "runtime.in"
{Stack->push<path3>(camp::concat(p,q)); return;}
}
-#line 2691 "runtime.in"
+#line 2785 "runtime.in"
// triple min(path3 p);
-void gen214(stack *Stack)
+void gen215(stack *Stack)
{
path3 p=vm::pop<path3>(Stack);
-#line 2692 "runtime.in"
+#line 2786 "runtime.in"
{Stack->push<triple>(p.min()); return;}
}
-#line 2696 "runtime.in"
+#line 2790 "runtime.in"
// triple max(path3 p);
-void gen215(stack *Stack)
+void gen216(stack *Stack)
{
path3 p=vm::pop<path3>(Stack);
-#line 2697 "runtime.in"
+#line 2791 "runtime.in"
{Stack->push<triple>(p.max()); return;}
}
-#line 2701 "runtime.in"
+#line 2795 "runtime.in"
// realarray* mintimes(path3 p);
-void gen216(stack *Stack)
+void gen217(stack *Stack)
{
path3 p=vm::pop<path3>(Stack);
-#line 2702 "runtime.in"
+#line 2796 "runtime.in"
array *V=new array(3);
triple v=p.mintimes();
(*V)[0]=v.getx();
@@ -3706,12 +3806,12 @@ void gen216(stack *Stack)
{Stack->push<realarray*>(V); return;}
}
-#line 2711 "runtime.in"
+#line 2805 "runtime.in"
// realarray* maxtimes(path3 p);
-void gen217(stack *Stack)
+void gen218(stack *Stack)
{
path3 p=vm::pop<path3>(Stack);
-#line 2712 "runtime.in"
+#line 2806 "runtime.in"
array *V=new array(3);
triple v=p.maxtimes();
(*V)[0]=v.getx();
@@ -3720,30 +3820,30 @@ void gen217(stack *Stack)
{Stack->push<realarray*>(V); return;}
}
-#line 2721 "runtime.in"
+#line 2815 "runtime.in"
// path3 *(realarray2 *t, path3 g);
-void gen218(stack *Stack)
+void gen219(stack *Stack)
{
path3 g=vm::pop<path3>(Stack);
realarray2 * t=vm::pop<realarray2 *>(Stack);
-#line 2722 "runtime.in"
+#line 2816 "runtime.in"
{Stack->push<path3>(transformed(*t,g)); return;}
}
// Guide operations
-#line 2728 "runtime.in"
+#line 2822 "runtime.in"
void nullGuide(stack *Stack)
{
-#line 2729 "runtime.in"
+#line 2823 "runtime.in"
{Stack->push<guide*>(new pathguide(path())); return;}
}
-#line 2734 "runtime.in"
+#line 2828 "runtime.in"
void dotsGuide(stack *Stack)
{
guidearray * a=vm::pop<guidearray *>(Stack);
-#line 2735 "runtime.in"
+#line 2829 "runtime.in"
guidevector v;
size_t size=checkArray(a);
for (size_t i=0; i < size; ++i)
@@ -3752,11 +3852,11 @@ void dotsGuide(stack *Stack)
{Stack->push<guide*>(new multiguide(v)); return;}
}
-#line 2744 "runtime.in"
+#line 2838 "runtime.in"
void dashesGuide(stack *Stack)
{
guidearray * a=vm::pop<guidearray *>(Stack);
-#line 2745 "runtime.in"
+#line 2839 "runtime.in"
static camp::curlSpec curly;
static specguide curlout(&curly, camp::OUT);
static specguide curlin(&curly, camp::IN);
@@ -3782,179 +3882,179 @@ void dashesGuide(stack *Stack)
{Stack->push<guide*>(new multiguide(v)); return;}
}
-#line 2771 "runtime.in"
+#line 2865 "runtime.in"
void newCycleToken(stack *Stack)
{
-#line 2772 "runtime.in"
+#line 2866 "runtime.in"
{Stack->push<cycleToken>(cycleToken()); return;}
}
-#line 2776 "runtime.in"
+#line 2870 "runtime.in"
// guide* operator cast(cycleToken tok);
-void gen223(stack *Stack)
+void gen224(stack *Stack)
{
cycleToken tok=vm::pop<cycleToken>(Stack);
-#line 2777 "runtime.in"
+#line 2871 "runtime.in"
// Avoid unused variable warning messages.
unused(&tok);
{Stack->push<guide*>(new cycletokguide()); return;}
}
-#line 2783 "runtime.in"
+#line 2877 "runtime.in"
// guide* operator spec(pair z, Int p);
-void gen224(stack *Stack)
+void gen225(stack *Stack)
{
Int p=vm::pop<Int>(Stack);
pair z=vm::pop<pair>(Stack);
-#line 2784 "runtime.in"
+#line 2878 "runtime.in"
camp::side d=(camp::side) p;
camp::dirSpec *sp=new camp::dirSpec(z);
{Stack->push<guide*>(new specguide(sp,d)); return;}
}
-#line 2791 "runtime.in"
+#line 2885 "runtime.in"
// curlSpecifier operator curl(real gamma, Int p);
-void gen225(stack *Stack)
+void gen226(stack *Stack)
{
Int p=vm::pop<Int>(Stack);
real gamma=vm::pop<real>(Stack);
-#line 2792 "runtime.in"
+#line 2886 "runtime.in"
camp::side s=(camp::side) p;
{Stack->push<curlSpecifier>(curlSpecifier(gamma,s)); return;}
}
-#line 2797 "runtime.in"
+#line 2891 "runtime.in"
void curlSpecifierValuePart(stack *Stack)
{
curlSpecifier spec=vm::pop<curlSpecifier>(Stack);
-#line 2798 "runtime.in"
+#line 2892 "runtime.in"
{Stack->push<real>(spec.getValue()); return;}
}
-#line 2802 "runtime.in"
+#line 2896 "runtime.in"
void curlSpecifierSidePart(stack *Stack)
{
curlSpecifier spec=vm::pop<curlSpecifier>(Stack);
-#line 2803 "runtime.in"
+#line 2897 "runtime.in"
{Stack->push<Int>(spec.getSide()); return;}
}
-#line 2807 "runtime.in"
+#line 2901 "runtime.in"
// guide* operator cast(curlSpecifier spec);
-void gen228(stack *Stack)
+void gen229(stack *Stack)
{
curlSpecifier spec=vm::pop<curlSpecifier>(Stack);
-#line 2808 "runtime.in"
+#line 2902 "runtime.in"
{Stack->push<guide*>(new specguide(spec)); return;}
}
-#line 2812 "runtime.in"
+#line 2906 "runtime.in"
// tensionSpecifier operator tension(real tout, real tin, bool atleast);
-void gen229(stack *Stack)
+void gen230(stack *Stack)
{
bool atleast=vm::pop<bool>(Stack);
real tin=vm::pop<real>(Stack);
real tout=vm::pop<real>(Stack);
-#line 2813 "runtime.in"
+#line 2907 "runtime.in"
{Stack->push<tensionSpecifier>(tensionSpecifier(tout, tin, atleast)); return;}
}
-#line 2817 "runtime.in"
+#line 2911 "runtime.in"
void tensionSpecifierOutPart(stack *Stack)
{
tensionSpecifier t=vm::pop<tensionSpecifier>(Stack);
-#line 2818 "runtime.in"
+#line 2912 "runtime.in"
{Stack->push<real>(t.getOut()); return;}
}
-#line 2822 "runtime.in"
+#line 2916 "runtime.in"
void tensionSpecifierInPart(stack *Stack)
{
tensionSpecifier t=vm::pop<tensionSpecifier>(Stack);
-#line 2823 "runtime.in"
+#line 2917 "runtime.in"
{Stack->push<real>(t.getIn()); return;}
}
-#line 2827 "runtime.in"
+#line 2921 "runtime.in"
void tensionSpecifierAtleastPart(stack *Stack)
{
tensionSpecifier t=vm::pop<tensionSpecifier>(Stack);
-#line 2828 "runtime.in"
+#line 2922 "runtime.in"
{Stack->push<bool>(t.getAtleast()); return;}
}
-#line 2832 "runtime.in"
+#line 2926 "runtime.in"
// guide* operator cast(tensionSpecifier t);
-void gen233(stack *Stack)
+void gen234(stack *Stack)
{
tensionSpecifier t=vm::pop<tensionSpecifier>(Stack);
-#line 2833 "runtime.in"
+#line 2927 "runtime.in"
{Stack->push<guide*>(new tensionguide(t)); return;}
}
-#line 2837 "runtime.in"
+#line 2931 "runtime.in"
// guide* operator controls(pair zout, pair zin);
-void gen234(stack *Stack)
+void gen235(stack *Stack)
{
pair zin=vm::pop<pair>(Stack);
pair zout=vm::pop<pair>(Stack);
-#line 2838 "runtime.in"
+#line 2932 "runtime.in"
{Stack->push<guide*>(new controlguide(zout, zin)); return;}
}
-#line 2842 "runtime.in"
+#line 2936 "runtime.in"
// Int size(guide *g);
-void gen235(stack *Stack)
+void gen236(stack *Stack)
{
guide * g=vm::pop<guide *>(Stack);
-#line 2843 "runtime.in"
+#line 2937 "runtime.in"
flatguide f;
g->flatten(f,false);
{Stack->push<Int>(f.size()); return;}
}
-#line 2849 "runtime.in"
+#line 2943 "runtime.in"
// Int length(guide *g);
-void gen236(stack *Stack)
+void gen237(stack *Stack)
{
guide * g=vm::pop<guide *>(Stack);
-#line 2850 "runtime.in"
+#line 2944 "runtime.in"
flatguide f;
g->flatten(f,false);
{Stack->push<Int>(g->cyclic() ? f.size() : f.size()-1); return;}
}
-#line 2856 "runtime.in"
+#line 2950 "runtime.in"
// bool cyclic(guide *g);
-void gen237(stack *Stack)
+void gen238(stack *Stack)
{
guide * g=vm::pop<guide *>(Stack);
-#line 2857 "runtime.in"
+#line 2951 "runtime.in"
flatguide f;
g->flatten(f,false);
{Stack->push<bool>(g->cyclic()); return;}
}
-#line 2863 "runtime.in"
+#line 2957 "runtime.in"
// pair point(guide *g, Int t);
-void gen238(stack *Stack)
+void gen239(stack *Stack)
{
Int t=vm::pop<Int>(Stack);
guide * g=vm::pop<guide *>(Stack);
-#line 2864 "runtime.in"
+#line 2958 "runtime.in"
flatguide f;
g->flatten(f,false);
{Stack->push<pair>(f.Nodes(adjustedIndex(t,f.size(),g->cyclic())).z); return;}
}
-#line 2870 "runtime.in"
+#line 2964 "runtime.in"
// pairarray* dirSpecifier(guide *g, Int t);
-void gen239(stack *Stack)
+void gen240(stack *Stack)
{
Int t=vm::pop<Int>(Stack);
guide * g=vm::pop<guide *>(Stack);
-#line 2871 "runtime.in"
+#line 2965 "runtime.in"
flatguide f;
g->flatten(f,false);
Int n=f.size();
@@ -3965,13 +4065,13 @@ void gen239(stack *Stack)
{Stack->push<pairarray*>(c); return;}
}
-#line 2882 "runtime.in"
+#line 2976 "runtime.in"
// pairarray* controlSpecifier(guide *g, Int t);
-void gen240(stack *Stack)
+void gen241(stack *Stack)
{
Int t=vm::pop<Int>(Stack);
guide * g=vm::pop<guide *>(Stack);
-#line 2883 "runtime.in"
+#line 2977 "runtime.in"
flatguide f;
g->flatten(f,false);
Int n=f.size();
@@ -3987,13 +4087,13 @@ void gen240(stack *Stack)
} else {Stack->push<pairarray*>(new array(0)); return;}
}
-#line 2899 "runtime.in"
+#line 2993 "runtime.in"
// tensionSpecifier tensionSpecifier(guide *g, Int t);
-void gen241(stack *Stack)
+void gen242(stack *Stack)
{
Int t=vm::pop<Int>(Stack);
guide * g=vm::pop<guide *>(Stack);
-#line 2900 "runtime.in"
+#line 2994 "runtime.in"
flatguide f;
g->flatten(f,false);
Int n=f.size();
@@ -4002,13 +4102,13 @@ void gen241(stack *Stack)
{Stack->push<tensionSpecifier>(tensionSpecifier(curr.tout.val,f.Nodes(t+1).tin.val,curr.tout.atleast)); return;}
}
-#line 2909 "runtime.in"
+#line 3003 "runtime.in"
// realarray* curlSpecifier(guide *g, Int t);
-void gen242(stack *Stack)
+void gen243(stack *Stack)
{
Int t=vm::pop<Int>(Stack);
guide * g=vm::pop<guide *>(Stack);
-#line 2910 "runtime.in"
+#line 3004 "runtime.in"
flatguide f;
g->flatten(f,false);
Int n=f.size();
@@ -4021,12 +4121,12 @@ void gen242(stack *Stack)
{Stack->push<realarray*>(c); return;}
}
-#line 2923 "runtime.in"
+#line 3017 "runtime.in"
// guide* reverse(guide *g);
-void gen243(stack *Stack)
+void gen244(stack *Stack)
{
guide * g=vm::pop<guide *>(Stack);
-#line 2924 "runtime.in"
+#line 3018 "runtime.in"
flatguide f;
g->flatten(f,false);
if(f.precyclic())
@@ -4081,20 +4181,20 @@ void gen243(stack *Stack)
// Three-dimensional picture and surface operations
-#line 2979 "runtime.in"
+#line 3073 "runtime.in"
// void _draw(picture *f, path3 g, pen p);
-void gen244(stack *Stack)
+void gen245(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
path3 g=vm::pop<path3>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 2980 "runtime.in"
+#line 3074 "runtime.in"
f->append(new drawPath3(g,p));
}
-#line 2985 "runtime.in"
+#line 3079 "runtime.in"
// void draw(picture *f, triplearray2 *g, bool straight, penarray *p, real opacity, real shininess, real granularity, triple normal, bool lighton, penarray *colors);
-void gen245(stack *Stack)
+void gen246(stack *Stack)
{
penarray * colors=vm::pop<penarray *>(Stack);
bool lighton=vm::pop<bool>(Stack);
@@ -4106,107 +4206,107 @@ void gen245(stack *Stack)
bool straight=vm::pop<bool>(Stack);
triplearray2 * g=vm::pop<triplearray2 *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 2988 "runtime.in"
+#line 3082 "runtime.in"
f->append(new drawSurface(*g,straight,*p,opacity,shininess,granularity,
normal,lighton,*colors));
}
-#line 2993 "runtime.in"
+#line 3087 "runtime.in"
// triple min3(picture *f);
-void gen246(stack *Stack)
+void gen247(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 2994 "runtime.in"
+#line 3088 "runtime.in"
{Stack->push<triple>(f->bounds3().Min()); return;}
}
-#line 2998 "runtime.in"
+#line 3092 "runtime.in"
// triple max3(picture *f);
-void gen247(stack *Stack)
+void gen248(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 2999 "runtime.in"
+#line 3093 "runtime.in"
{Stack->push<triple>(f->bounds3().Max()); return;}
}
-#line 3003 "runtime.in"
+#line 3097 "runtime.in"
// pair min(picture *f, realarray2 *t);
-void gen248(stack *Stack)
+void gen249(stack *Stack)
{
realarray2 * t=vm::pop<realarray2 *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 3004 "runtime.in"
+#line 3098 "runtime.in"
real *T=copyArray2C(t,4);
pair m=f->bounds(::min,xproject,yproject,T);
delete[] T;
{Stack->push<pair>(m); return;}
}
-#line 3011 "runtime.in"
+#line 3105 "runtime.in"
// pair max(picture *f, realarray2 *t);
-void gen249(stack *Stack)
+void gen250(stack *Stack)
{
realarray2 * t=vm::pop<realarray2 *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 3012 "runtime.in"
+#line 3106 "runtime.in"
real *T=copyArray2C(t,4);
pair M=f->bounds(::max,xproject,yproject,T);
delete[] T;
{Stack->push<pair>(M); return;}
}
-#line 3019 "runtime.in"
+#line 3113 "runtime.in"
// pair minratio(picture *f);
-void gen250(stack *Stack)
+void gen251(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 3020 "runtime.in"
+#line 3114 "runtime.in"
{Stack->push<pair>(f->bounds(::min,xratio,yratio)); return;}
}
-#line 3024 "runtime.in"
+#line 3118 "runtime.in"
// pair maxratio(picture *f);
-void gen251(stack *Stack)
+void gen252(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 3025 "runtime.in"
+#line 3119 "runtime.in"
{Stack->push<pair>(f->bounds(::max,xratio,yratio)); return;}
}
-#line 3029 "runtime.in"
+#line 3123 "runtime.in"
// real minbound(realarray *a, real b);
-void gen252(stack *Stack)
+void gen253(stack *Stack)
{
real b=vm::pop<real>(Stack);
realarray * a=vm::pop<realarray *>(Stack);
-#line 3030 "runtime.in"
+#line 3124 "runtime.in"
real *A=copyArrayC(a,16);
b=bound(A,::min,b);
delete[] A;
{Stack->push<real>(b); return;}
}
-#line 3037 "runtime.in"
+#line 3131 "runtime.in"
// real maxbound(realarray *a, real b);
-void gen253(stack *Stack)
+void gen254(stack *Stack)
{
real b=vm::pop<real>(Stack);
realarray * a=vm::pop<realarray *>(Stack);
-#line 3038 "runtime.in"
+#line 3132 "runtime.in"
real *A=copyArrayC(a,16);
b=bound(A,::max,b);
delete[] A;
{Stack->push<real>(b); return;}
}
-#line 3045 "runtime.in"
+#line 3139 "runtime.in"
// pair minbound(triplearray *a, realarray2 *t, pair b);
-void gen254(stack *Stack)
+void gen255(stack *Stack)
{
pair b=vm::pop<pair>(Stack);
realarray2 * t=vm::pop<realarray2 *>(Stack);
triplearray * a=vm::pop<triplearray *>(Stack);
-#line 3046 "runtime.in"
+#line 3140 "runtime.in"
triple *A=copyTripleArrayC(a,16);
real *T=copyArray2C(t,4);
b=pair(bound(A,::min,xproject,T,b.getx()),
@@ -4216,14 +4316,14 @@ void gen254(stack *Stack)
{Stack->push<pair>(b); return;}
}
-#line 3056 "runtime.in"
+#line 3150 "runtime.in"
// pair maxbound(triplearray *a, realarray2 *t, pair b);
-void gen255(stack *Stack)
+void gen256(stack *Stack)
{
pair b=vm::pop<pair>(Stack);
realarray2 * t=vm::pop<realarray2 *>(Stack);
triplearray * a=vm::pop<triplearray *>(Stack);
-#line 3057 "runtime.in"
+#line 3151 "runtime.in"
triple *A=copyTripleArrayC(a,16);
real *T=copyArray2C(t,4);
b=pair(bound(A,::max,xproject,T,b.getx()),
@@ -4233,38 +4333,38 @@ void gen255(stack *Stack)
{Stack->push<pair>(b); return;}
}
-#line 3067 "runtime.in"
+#line 3161 "runtime.in"
// pair max(path3 g, realarray2 *t);
-void gen256(stack *Stack)
+void gen257(stack *Stack)
{
realarray2 * t=vm::pop<realarray2 *>(Stack);
path3 g=vm::pop<path3>(Stack);
-#line 3068 "runtime.in"
+#line 3162 "runtime.in"
real *T=copyArray2C(t,4);
pair b=g.bounds(::max,xproject,yproject,T);
delete[] T;
{Stack->push<pair>(b); return;}
}
-#line 3075 "runtime.in"
+#line 3169 "runtime.in"
// pair min(path3 g, realarray2 *t);
-void gen257(stack *Stack)
+void gen258(stack *Stack)
{
realarray2 * t=vm::pop<realarray2 *>(Stack);
path3 g=vm::pop<path3>(Stack);
-#line 3076 "runtime.in"
+#line 3170 "runtime.in"
real *T=copyArray2C(t,4);
pair b=g.bounds(::min,xproject,yproject,T);
delete[] T;
{Stack->push<pair>(b); return;}
}
-#line 3083 "runtime.in"
+#line 3177 "runtime.in"
// real change2(triplearray2 *a);
-void gen258(stack *Stack)
+void gen259(stack *Stack)
{
triplearray2 * a=vm::pop<triplearray2 *>(Stack);
-#line 3084 "runtime.in"
+#line 3178 "runtime.in"
size_t n=checkArray(a);
if(n == 0) {Stack->push<real>(0.0); return;}
@@ -4285,241 +4385,241 @@ void gen258(stack *Stack)
{Stack->push<real>(M); return;}
}
-#line 3105 "runtime.in"
+#line 3199 "runtime.in"
// bool is3D(picture *f);
-void gen259(stack *Stack)
+void gen260(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 3106 "runtime.in"
+#line 3200 "runtime.in"
{Stack->push<bool>(f->have3D()); return;}
}
-#line 3110 "runtime.in"
+#line 3204 "runtime.in"
// pair bezier(pair a, pair b, pair c, pair d, real t);
-void gen260(stack *Stack)
+void gen261(stack *Stack)
{
real t=vm::pop<real>(Stack);
pair d=vm::pop<pair>(Stack);
pair c=vm::pop<pair>(Stack);
pair b=vm::pop<pair>(Stack);
pair a=vm::pop<pair>(Stack);
-#line 3111 "runtime.in"
+#line 3205 "runtime.in"
real onemt=1-t;
real onemt2=onemt*onemt;
{Stack->push<pair>(onemt2*onemt*a+t*(3.0*(onemt2*b+t*onemt*c)+t*t*d)); return;}
}
-#line 3117 "runtime.in"
+#line 3211 "runtime.in"
// pair bezierP(pair a, pair b, pair c, pair d, real t);
-void gen261(stack *Stack)
+void gen262(stack *Stack)
{
real t=vm::pop<real>(Stack);
pair d=vm::pop<pair>(Stack);
pair c=vm::pop<pair>(Stack);
pair b=vm::pop<pair>(Stack);
pair a=vm::pop<pair>(Stack);
-#line 3118 "runtime.in"
+#line 3212 "runtime.in"
{Stack->push<pair>(3.0*(t*t*(d-a+3.0*(b-c))+t*(2.0*(a+c)-4.0*b)+b-a)); return;}
}
-#line 3122 "runtime.in"
+#line 3216 "runtime.in"
// pair bezierPP(pair a, pair b, pair c, pair d, real t);
-void gen262(stack *Stack)
+void gen263(stack *Stack)
{
real t=vm::pop<real>(Stack);
pair d=vm::pop<pair>(Stack);
pair c=vm::pop<pair>(Stack);
pair b=vm::pop<pair>(Stack);
pair a=vm::pop<pair>(Stack);
-#line 3123 "runtime.in"
+#line 3217 "runtime.in"
{Stack->push<pair>(6.0*(t*(d-a+3.0*(b-c))+a+c-2.0*b)); return;}
}
-#line 3127 "runtime.in"
+#line 3221 "runtime.in"
// pair bezierPPP(pair a, pair b, pair c, pair d);
-void gen263(stack *Stack)
+void gen264(stack *Stack)
{
pair d=vm::pop<pair>(Stack);
pair c=vm::pop<pair>(Stack);
pair b=vm::pop<pair>(Stack);
pair a=vm::pop<pair>(Stack);
-#line 3128 "runtime.in"
+#line 3222 "runtime.in"
{Stack->push<pair>(6.0*(d-a+3.0*(b-c))); return;}
}
-#line 3132 "runtime.in"
+#line 3226 "runtime.in"
// triple bezier(triple a, triple b, triple c, triple d, real t);
-void gen264(stack *Stack)
+void gen265(stack *Stack)
{
real t=vm::pop<real>(Stack);
triple d=vm::pop<triple>(Stack);
triple c=vm::pop<triple>(Stack);
triple b=vm::pop<triple>(Stack);
triple a=vm::pop<triple>(Stack);
-#line 3133 "runtime.in"
+#line 3227 "runtime.in"
real onemt=1-t;
real onemt2=onemt*onemt;
{Stack->push<triple>(onemt2*onemt*a+t*(3.0*(onemt2*b+t*onemt*c)+t*t*d)); return;}
}
-#line 3139 "runtime.in"
+#line 3233 "runtime.in"
// triple bezierP(triple a, triple b, triple c, triple d, real t);
-void gen265(stack *Stack)
+void gen266(stack *Stack)
{
real t=vm::pop<real>(Stack);
triple d=vm::pop<triple>(Stack);
triple c=vm::pop<triple>(Stack);
triple b=vm::pop<triple>(Stack);
triple a=vm::pop<triple>(Stack);
-#line 3140 "runtime.in"
+#line 3234 "runtime.in"
{Stack->push<triple>(3.0*(t*t*(d-a+3.0*(b-c))+t*(2.0*(a+c)-4.0*b)+b-a)); return;}
}
-#line 3144 "runtime.in"
+#line 3238 "runtime.in"
// triple bezierPP(triple a, triple b, triple c, triple d, real t);
-void gen266(stack *Stack)
+void gen267(stack *Stack)
{
real t=vm::pop<real>(Stack);
triple d=vm::pop<triple>(Stack);
triple c=vm::pop<triple>(Stack);
triple b=vm::pop<triple>(Stack);
triple a=vm::pop<triple>(Stack);
-#line 3145 "runtime.in"
+#line 3239 "runtime.in"
{Stack->push<triple>(6.0*(t*(d-a+3.0*(b-c))+a+c-2.0*b)); return;}
}
-#line 3149 "runtime.in"
+#line 3243 "runtime.in"
// triple bezierPPP(triple a, triple b, triple c, triple d);
-void gen267(stack *Stack)
+void gen268(stack *Stack)
{
triple d=vm::pop<triple>(Stack);
triple c=vm::pop<triple>(Stack);
triple b=vm::pop<triple>(Stack);
triple a=vm::pop<triple>(Stack);
-#line 3150 "runtime.in"
+#line 3244 "runtime.in"
{Stack->push<triple>(6.0*(d-a+3.0*(b-c))); return;}
}
// String operations
-#line 3156 "runtime.in"
+#line 3250 "runtime.in"
void emptyString(stack *Stack)
{
-#line 3157 "runtime.in"
+#line 3251 "runtime.in"
{Stack->push<string>(emptystring); return;}
}
-#line 3162 "runtime.in"
+#line 3256 "runtime.in"
// Int length(string *s);
-void gen269(stack *Stack)
+void gen270(stack *Stack)
{
string * s=vm::pop<string *>(Stack);
-#line 3163 "runtime.in"
+#line 3257 "runtime.in"
{Stack->push<Int>((Int) s->length()); return;}
}
-#line 3167 "runtime.in"
+#line 3261 "runtime.in"
// Int find(string *s, string t, Int pos=0);
-void gen270(stack *Stack)
+void gen271(stack *Stack)
{
Int pos=vm::pop<Int>(Stack,0);
string t=vm::pop<string>(Stack);
string * s=vm::pop<string *>(Stack);
-#line 3168 "runtime.in"
+#line 3262 "runtime.in"
size_t n=s->find(t,pos);
{Stack->push<Int>(n == string::npos ? (Int) -1 : (Int) n); return;}
}
-#line 3173 "runtime.in"
+#line 3267 "runtime.in"
// Int rfind(string *s, string t, Int pos=-1);
-void gen271(stack *Stack)
+void gen272(stack *Stack)
{
Int pos=vm::pop<Int>(Stack,-1);
string t=vm::pop<string>(Stack);
string * s=vm::pop<string *>(Stack);
-#line 3174 "runtime.in"
+#line 3268 "runtime.in"
size_t n=s->rfind(t,pos);
{Stack->push<Int>(n == string::npos ? (Int) -1 : (Int) n); return;}
}
-#line 3179 "runtime.in"
+#line 3273 "runtime.in"
// string reverse(string s);
-void gen272(stack *Stack)
+void gen273(stack *Stack)
{
string s=vm::pop<string>(Stack);
-#line 3180 "runtime.in"
+#line 3274 "runtime.in"
reverse(s.begin(),s.end());
{Stack->push<string>(s); return;}
}
-#line 3185 "runtime.in"
+#line 3279 "runtime.in"
// string insert(string s, Int pos, string t);
-void gen273(stack *Stack)
+void gen274(stack *Stack)
{
string t=vm::pop<string>(Stack);
Int pos=vm::pop<Int>(Stack);
string s=vm::pop<string>(Stack);
-#line 3186 "runtime.in"
+#line 3280 "runtime.in"
if ((size_t) pos < s.length())
{Stack->push<string>(s.insert(pos,t)); return;}
{Stack->push<string>(s); return;}
}
-#line 3192 "runtime.in"
+#line 3286 "runtime.in"
// string substr(string* s, Int pos, Int n=-1);
-void gen274(stack *Stack)
+void gen275(stack *Stack)
{
Int n=vm::pop<Int>(Stack,-1);
Int pos=vm::pop<Int>(Stack);
string* s=vm::pop<string*>(Stack);
-#line 3193 "runtime.in"
+#line 3287 "runtime.in"
if ((size_t) pos < s->length())
{Stack->push<string>(s->substr(pos,n)); return;}
{Stack->push<string>(emptystring); return;}
}
-#line 3199 "runtime.in"
+#line 3293 "runtime.in"
// string erase(string s, Int pos, Int n);
-void gen275(stack *Stack)
+void gen276(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
Int pos=vm::pop<Int>(Stack);
string s=vm::pop<string>(Stack);
-#line 3200 "runtime.in"
+#line 3294 "runtime.in"
if ((size_t) pos < s.length())
{Stack->push<string>(s.erase(pos,n)); return;}
{Stack->push<string>(s); return;}
}
-#line 3206 "runtime.in"
+#line 3300 "runtime.in"
// string downcase(string s);
-void gen276(stack *Stack)
+void gen277(stack *Stack)
{
string s=vm::pop<string>(Stack);
-#line 3207 "runtime.in"
+#line 3301 "runtime.in"
std::transform(s.begin(),s.end(),s.begin(),tolower);
{Stack->push<string>(s); return;}
}
-#line 3212 "runtime.in"
+#line 3306 "runtime.in"
// string upcase(string s);
-void gen277(stack *Stack)
+void gen278(stack *Stack)
{
string s=vm::pop<string>(Stack);
-#line 3213 "runtime.in"
+#line 3307 "runtime.in"
std::transform(s.begin(),s.end(),s.begin(),toupper);
{Stack->push<string>(s); return;}
}
// returns a string constructed by translating all occurrences of the string
// from in an array of string pairs {from,to} to the string to in string s.
-#line 3220 "runtime.in"
+#line 3314 "runtime.in"
// string replace(string *S, stringarray2 *translate);
-void gen278(stack *Stack)
+void gen279(stack *Stack)
{
stringarray2 * translate=vm::pop<stringarray2 *>(Stack);
string * S=vm::pop<string *>(Stack);
-#line 3221 "runtime.in"
+#line 3315 "runtime.in"
size_t size=checkArray(translate);
for(size_t i=0; i < size; i++) {
array *a=read<array*>(translate,i);
@@ -4543,13 +4643,13 @@ void gen278(stack *Stack)
{Stack->push<string>(buf.str()); return;}
}
-#line 3245 "runtime.in"
+#line 3339 "runtime.in"
// string format(string *format, Int x);
-void gen279(stack *Stack)
+void gen280(stack *Stack)
{
Int x=vm::pop<Int>(Stack);
string * format=vm::pop<string *>(Stack);
-#line 3246 "runtime.in"
+#line 3340 "runtime.in"
const char *f=format->c_str();
checkformat(f,true);
@@ -4563,14 +4663,14 @@ void gen279(stack *Stack)
{Stack->push<string>(s); return;}
}
-#line 3260 "runtime.in"
+#line 3354 "runtime.in"
// string format(string *format, real x, string locale=emptystring);
-void gen280(stack *Stack)
+void gen281(stack *Stack)
{
string locale=vm::pop<string>(Stack,emptystring);
real x=vm::pop<real>(Stack);
string * format=vm::pop<string *>(Stack);
-#line 3261 "runtime.in"
+#line 3355 "runtime.in"
ostringstream out;
checkformat(format->c_str(),false);
@@ -4687,12 +4787,12 @@ void gen280(stack *Stack)
{Stack->push<string>(out.str()); return;}
}
-#line 3378 "runtime.in"
+#line 3472 "runtime.in"
// Int hex(string s);
-void gen281(stack *Stack)
+void gen282(stack *Stack)
{
string s=vm::pop<string>(Stack);
-#line 3379 "runtime.in"
+#line 3473 "runtime.in"
istringstream is(s);
is.setf(std::ios::hex,std::ios::basefield);
Int value;
@@ -4702,36 +4802,36 @@ void gen281(stack *Stack)
error(buf);
}
-#line 3389 "runtime.in"
+#line 3483 "runtime.in"
// string string(Int x);
-void gen282(stack *Stack)
+void gen283(stack *Stack)
{
Int x=vm::pop<Int>(Stack);
-#line 3390 "runtime.in"
+#line 3484 "runtime.in"
ostringstream buf;
buf << x;
{Stack->push<string>(buf.str()); return;}
}
-#line 3396 "runtime.in"
+#line 3490 "runtime.in"
// string string(real x, Int digits=DBL_DIG);
-void gen283(stack *Stack)
+void gen284(stack *Stack)
{
Int digits=vm::pop<Int>(Stack,DBL_DIG);
real x=vm::pop<real>(Stack);
-#line 3397 "runtime.in"
+#line 3491 "runtime.in"
ostringstream buf;
buf.precision(digits);
buf << x;
{Stack->push<string>(buf.str()); return;}
}
-#line 3404 "runtime.in"
+#line 3498 "runtime.in"
// string time(string format=defaulttimeformat);
-void gen284(stack *Stack)
+void gen285(stack *Stack)
{
string format=vm::pop<string>(Stack,defaulttimeformat);
-#line 3405 "runtime.in"
+#line 3499 "runtime.in"
#ifdef HAVE_STRFTIME
const time_t bintime=time(NULL);
if(!strftime(Time,nTime,format.c_str(),localtime(&bintime))) {Stack->push<string>(""); return;}
@@ -4741,13 +4841,13 @@ void gen284(stack *Stack)
#endif
}
-#line 3415 "runtime.in"
+#line 3509 "runtime.in"
// string time(Int seconds, string format=defaulttimeformat);
-void gen285(stack *Stack)
+void gen286(stack *Stack)
{
string format=vm::pop<string>(Stack,defaulttimeformat);
Int seconds=vm::pop<Int>(Stack);
-#line 3416 "runtime.in"
+#line 3510 "runtime.in"
#ifdef HAVE_STRFTIME
const time_t bintime=seconds;
if(!strftime(Time,nTime,format.c_str(),localtime(&bintime))) {Stack->push<string>(""); return;}
@@ -4759,13 +4859,13 @@ void gen285(stack *Stack)
#endif
}
-#line 3428 "runtime.in"
+#line 3522 "runtime.in"
// Int seconds(string t=emptystring, string format=emptystring);
-void gen286(stack *Stack)
+void gen287(stack *Stack)
{
string format=vm::pop<string>(Stack,emptystring);
string t=vm::pop<string>(Stack,emptystring);
-#line 3429 "runtime.in"
+#line 3523 "runtime.in"
#if defined(HAVE_STRPTIME)
const time_t bintime=time(NULL);
tm tm=*localtime(&bintime);
@@ -4776,11 +4876,11 @@ void gen286(stack *Stack)
#endif
}
-#line 3440 "runtime.in"
+#line 3534 "runtime.in"
// realarray* _cputime();
-void gen287(stack *Stack)
+void gen288(stack *Stack)
{
-#line 3441 "runtime.in"
+#line 3535 "runtime.in"
static const real ticktime=1.0/sysconf(_SC_CLK_TCK);
struct tms buf;
@@ -4795,234 +4895,234 @@ void gen287(stack *Stack)
// Math
-#line 3456 "runtime.in"
+#line 3550 "runtime.in"
// real ^(real x, Int y);
-void gen288(stack *Stack)
+void gen289(stack *Stack)
{
Int y=vm::pop<Int>(Stack);
real x=vm::pop<real>(Stack);
-#line 3457 "runtime.in"
+#line 3551 "runtime.in"
{Stack->push<real>(pow(x,y)); return;}
}
-#line 3462 "runtime.in"
+#line 3556 "runtime.in"
// pair ^(pair z, Int y);
-void gen289(stack *Stack)
+void gen290(stack *Stack)
{
Int y=vm::pop<Int>(Stack);
pair z=vm::pop<pair>(Stack);
-#line 3463 "runtime.in"
+#line 3557 "runtime.in"
{Stack->push<pair>(pow(z,y)); return;}
}
-#line 3467 "runtime.in"
+#line 3561 "runtime.in"
// Int quotient(Int x, Int y);
-void gen290(stack *Stack)
+void gen291(stack *Stack)
{
Int y=vm::pop<Int>(Stack);
Int x=vm::pop<Int>(Stack);
-#line 3468 "runtime.in"
+#line 3562 "runtime.in"
if(y == 0) dividebyzero();
if(y == -1) {Stack->push<Int>(Negate(x)); return;}
// Implementation-independent definition of integer division: round down
{Stack->push<Int>((x-portableMod(x,y))/y); return;}
}
-#line 3475 "runtime.in"
+#line 3569 "runtime.in"
// Int abs(Int x);
-void gen291(stack *Stack)
+void gen292(stack *Stack)
{
Int x=vm::pop<Int>(Stack);
-#line 3476 "runtime.in"
+#line 3570 "runtime.in"
{Stack->push<Int>(Abs(x)); return;}
}
-#line 3480 "runtime.in"
+#line 3574 "runtime.in"
// Int sgn(real x);
-void gen292(stack *Stack)
+void gen293(stack *Stack)
{
real x=vm::pop<real>(Stack);
-#line 3481 "runtime.in"
+#line 3575 "runtime.in"
{Stack->push<Int>(sgn(x)); return;}
}
-#line 3485 "runtime.in"
+#line 3579 "runtime.in"
// Int rand();
-void gen293(stack *Stack)
+void gen294(stack *Stack)
{
-#line 3486 "runtime.in"
+#line 3580 "runtime.in"
{Stack->push<Int>(rand()); return;}
}
-#line 3490 "runtime.in"
+#line 3584 "runtime.in"
// void srand(Int seed);
-void gen294(stack *Stack)
+void gen295(stack *Stack)
{
Int seed=vm::pop<Int>(Stack);
-#line 3491 "runtime.in"
+#line 3585 "runtime.in"
srand(intcast(seed));
}
// a random number uniformly distributed in the interval [0,1]
-#line 3496 "runtime.in"
+#line 3590 "runtime.in"
// real unitrand();
-void gen295(stack *Stack)
+void gen296(stack *Stack)
{
-#line 3497 "runtime.in"
+#line 3591 "runtime.in"
{Stack->push<real>(((real) rand())/RAND_MAX); return;}
}
-#line 3501 "runtime.in"
+#line 3595 "runtime.in"
// Int ceil(real x);
-void gen296(stack *Stack)
+void gen297(stack *Stack)
{
real x=vm::pop<real>(Stack);
-#line 3502 "runtime.in"
+#line 3596 "runtime.in"
{Stack->push<Int>(Intcast(ceil(x))); return;}
}
-#line 3506 "runtime.in"
+#line 3600 "runtime.in"
// Int floor(real x);
-void gen297(stack *Stack)
+void gen298(stack *Stack)
{
real x=vm::pop<real>(Stack);
-#line 3507 "runtime.in"
+#line 3601 "runtime.in"
{Stack->push<Int>(Intcast(floor(x))); return;}
}
-#line 3511 "runtime.in"
+#line 3605 "runtime.in"
// Int round(real x);
-void gen298(stack *Stack)
+void gen299(stack *Stack)
{
real x=vm::pop<real>(Stack);
-#line 3512 "runtime.in"
+#line 3606 "runtime.in"
if(validInt(x)) {Stack->push<Int>(Round(x)); return;}
integeroverflow(0);
}
-#line 3517 "runtime.in"
+#line 3611 "runtime.in"
// Int Ceil(real x);
-void gen299(stack *Stack)
+void gen300(stack *Stack)
{
real x=vm::pop<real>(Stack);
-#line 3518 "runtime.in"
+#line 3612 "runtime.in"
{Stack->push<Int>(Ceil(x)); return;}
}
-#line 3522 "runtime.in"
+#line 3616 "runtime.in"
// Int Floor(real x);
-void gen300(stack *Stack)
+void gen301(stack *Stack)
{
real x=vm::pop<real>(Stack);
-#line 3523 "runtime.in"
+#line 3617 "runtime.in"
{Stack->push<Int>(Floor(x)); return;}
}
-#line 3527 "runtime.in"
+#line 3621 "runtime.in"
// Int Round(real x);
-void gen301(stack *Stack)
+void gen302(stack *Stack)
{
real x=vm::pop<real>(Stack);
-#line 3528 "runtime.in"
+#line 3622 "runtime.in"
{Stack->push<Int>(Round(Intcap(x))); return;}
}
-#line 3532 "runtime.in"
+#line 3626 "runtime.in"
// real fmod(real x, real y);
-void gen302(stack *Stack)
+void gen303(stack *Stack)
{
real y=vm::pop<real>(Stack);
real x=vm::pop<real>(Stack);
-#line 3533 "runtime.in"
+#line 3627 "runtime.in"
if (y == 0.0) dividebyzero();
{Stack->push<real>(fmod(x,y)); return;}
}
-#line 3538 "runtime.in"
+#line 3632 "runtime.in"
// real atan2(real y, real x);
-void gen303(stack *Stack)
+void gen304(stack *Stack)
{
real x=vm::pop<real>(Stack);
real y=vm::pop<real>(Stack);
-#line 3539 "runtime.in"
+#line 3633 "runtime.in"
{Stack->push<real>(atan2(y,x)); return;}
}
-#line 3543 "runtime.in"
+#line 3637 "runtime.in"
// real hypot(real x, real y);
-void gen304(stack *Stack)
+void gen305(stack *Stack)
{
real y=vm::pop<real>(Stack);
real x=vm::pop<real>(Stack);
-#line 3544 "runtime.in"
+#line 3638 "runtime.in"
{Stack->push<real>(hypot(x,y)); return;}
}
-#line 3548 "runtime.in"
+#line 3642 "runtime.in"
// real remainder(real x, real y);
-void gen305(stack *Stack)
+void gen306(stack *Stack)
{
real y=vm::pop<real>(Stack);
real x=vm::pop<real>(Stack);
-#line 3549 "runtime.in"
+#line 3643 "runtime.in"
{Stack->push<real>(remainder(x,y)); return;}
}
-#line 3553 "runtime.in"
+#line 3647 "runtime.in"
// real J(Int n, real x);
-void gen306(stack *Stack)
+void gen307(stack *Stack)
{
real x=vm::pop<real>(Stack);
Int n=vm::pop<Int>(Stack);
-#line 3554 "runtime.in"
+#line 3648 "runtime.in"
{Stack->push<real>(jn(n,x)); return;}
}
-#line 3558 "runtime.in"
+#line 3652 "runtime.in"
// real Y(Int n, real x);
-void gen307(stack *Stack)
+void gen308(stack *Stack)
{
real x=vm::pop<real>(Stack);
Int n=vm::pop<Int>(Stack);
-#line 3559 "runtime.in"
+#line 3653 "runtime.in"
{Stack->push<real>(yn(n,x)); return;}
}
-#line 3563 "runtime.in"
+#line 3657 "runtime.in"
// real erf(real x);
-void gen308(stack *Stack)
+void gen309(stack *Stack)
{
real x=vm::pop<real>(Stack);
-#line 3564 "runtime.in"
+#line 3658 "runtime.in"
{Stack->push<real>(erf(x)); return;}
}
-#line 3568 "runtime.in"
+#line 3662 "runtime.in"
// real erfc(real x);
-void gen309(stack *Stack)
+void gen310(stack *Stack)
{
real x=vm::pop<real>(Stack);
-#line 3569 "runtime.in"
+#line 3663 "runtime.in"
{Stack->push<real>(erfc(x)); return;}
}
-#line 3573 "runtime.in"
+#line 3667 "runtime.in"
// Int factorial(Int n);
-void gen310(stack *Stack)
+void gen311(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
-#line 3574 "runtime.in"
+#line 3668 "runtime.in"
if(n < 0) error(invalidargument);
{Stack->push<Int>(factorial(n)); return;}
}
-#line 3578 "runtime.in"
+#line 3672 "runtime.in"
// Int choose(Int n, Int k);
-void gen311(stack *Stack)
+void gen312(stack *Stack)
{
Int k=vm::pop<Int>(Stack);
Int n=vm::pop<Int>(Stack);
-#line 3579 "runtime.in"
+#line 3673 "runtime.in"
if(n < 0 || k < 0 || k > n) error(invalidargument);
Int f=1;
Int r=n-k;
@@ -5033,12 +5133,12 @@ void gen311(stack *Stack)
{Stack->push<Int>(f); return;}
}
-#line 3589 "runtime.in"
+#line 3683 "runtime.in"
// real gamma(real x);
-void gen312(stack *Stack)
+void gen313(stack *Stack)
{
real x=vm::pop<real>(Stack);
-#line 3590 "runtime.in"
+#line 3684 "runtime.in"
#ifdef HAVE_TGAMMA
{Stack->push<real>(tgamma(x)); return;}
#else
@@ -5048,23 +5148,23 @@ void gen312(stack *Stack)
}
// Complex Gamma function
-#line 3600 "runtime.in"
+#line 3694 "runtime.in"
// pair gamma(explicit pair z);
-void gen313(stack *Stack)
+void gen314(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
-#line 3601 "runtime.in"
+#line 3695 "runtime.in"
{Stack->push<pair>(gamma(z)); return;}
}
-#line 3605 "runtime.in"
+#line 3699 "runtime.in"
// realarray* quadraticroots(real a, real b, real c);
-void gen314(stack *Stack)
+void gen315(stack *Stack)
{
real c=vm::pop<real>(Stack);
real b=vm::pop<real>(Stack);
real a=vm::pop<real>(Stack);
-#line 3606 "runtime.in"
+#line 3700 "runtime.in"
quadraticroots q(a,b,c);
array *roots=new array(q.roots);
if(q.roots >= 1) (*roots)[0]=q.t1;
@@ -5072,14 +5172,14 @@ void gen314(stack *Stack)
{Stack->push<realarray*>(roots); return;}
}
-#line 3614 "runtime.in"
+#line 3708 "runtime.in"
// pairarray* quadraticroots(explicit pair a, explicit pair b, explicit pair c);
-void gen315(stack *Stack)
+void gen316(stack *Stack)
{
pair c=vm::pop<pair>(Stack);
pair b=vm::pop<pair>(Stack);
pair a=vm::pop<pair>(Stack);
-#line 3615 "runtime.in"
+#line 3709 "runtime.in"
Quadraticroots q(a,b,c);
array *roots=new array(q.roots);
if(q.roots >= 1) (*roots)[0]=q.z1;
@@ -5087,15 +5187,15 @@ void gen315(stack *Stack)
{Stack->push<pairarray*>(roots); return;}
}
-#line 3623 "runtime.in"
+#line 3717 "runtime.in"
// realarray* cubicroots(real a, real b, real c, real d);
-void gen316(stack *Stack)
+void gen317(stack *Stack)
{
real d=vm::pop<real>(Stack);
real c=vm::pop<real>(Stack);
real b=vm::pop<real>(Stack);
real a=vm::pop<real>(Stack);
-#line 3624 "runtime.in"
+#line 3718 "runtime.in"
cubicroots q(a,b,c,d);
array *roots=new array(q.roots);
if(q.roots >= 1) (*roots)[0]=q.t1;
@@ -5106,103 +5206,103 @@ void gen316(stack *Stack)
// Transforms
-#line 3635 "runtime.in"
+#line 3729 "runtime.in"
// bool ==(transform a, transform b);
-void gen317(stack *Stack)
+void gen318(stack *Stack)
{
transform b=vm::pop<transform>(Stack);
transform a=vm::pop<transform>(Stack);
-#line 3636 "runtime.in"
+#line 3730 "runtime.in"
{Stack->push<bool>(a == b); return;}
}
-#line 3641 "runtime.in"
+#line 3735 "runtime.in"
// bool !=(transform a, transform b);
-void gen318(stack *Stack)
+void gen319(stack *Stack)
{
transform b=vm::pop<transform>(Stack);
transform a=vm::pop<transform>(Stack);
-#line 3642 "runtime.in"
+#line 3736 "runtime.in"
{Stack->push<bool>(a != b); return;}
}
-#line 3646 "runtime.in"
+#line 3740 "runtime.in"
// transform +(transform a, transform b);
-void gen319(stack *Stack)
+void gen320(stack *Stack)
{
transform b=vm::pop<transform>(Stack);
transform a=vm::pop<transform>(Stack);
-#line 3647 "runtime.in"
+#line 3741 "runtime.in"
{Stack->push<transform>(a+b); return;}
}
-#line 3651 "runtime.in"
+#line 3745 "runtime.in"
// transform *(transform a, transform b);
-void gen320(stack *Stack)
+void gen321(stack *Stack)
{
transform b=vm::pop<transform>(Stack);
transform a=vm::pop<transform>(Stack);
-#line 3652 "runtime.in"
+#line 3746 "runtime.in"
{Stack->push<transform>(a*b); return;}
}
-#line 3656 "runtime.in"
+#line 3750 "runtime.in"
// pair *(transform t, pair z);
-void gen321(stack *Stack)
+void gen322(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
transform t=vm::pop<transform>(Stack);
-#line 3657 "runtime.in"
+#line 3751 "runtime.in"
{Stack->push<pair>(t*z); return;}
}
-#line 3661 "runtime.in"
+#line 3755 "runtime.in"
// path *(transform t, path g);
-void gen322(stack *Stack)
+void gen323(stack *Stack)
{
path g=vm::pop<path>(Stack);
transform t=vm::pop<transform>(Stack);
-#line 3662 "runtime.in"
+#line 3756 "runtime.in"
{Stack->push<path>(transformed(t,g)); return;}
}
-#line 3666 "runtime.in"
+#line 3760 "runtime.in"
// pen *(transform t, pen p);
-void gen323(stack *Stack)
+void gen324(stack *Stack)
{
pen p=vm::pop<pen>(Stack);
transform t=vm::pop<transform>(Stack);
-#line 3667 "runtime.in"
+#line 3761 "runtime.in"
{Stack->push<pen>(transformed(t,p)); return;}
}
-#line 3671 "runtime.in"
+#line 3765 "runtime.in"
// picture* *(transform t, picture *f);
-void gen324(stack *Stack)
+void gen325(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
transform t=vm::pop<transform>(Stack);
-#line 3672 "runtime.in"
+#line 3766 "runtime.in"
{Stack->push<picture*>(transformed(t,f)); return;}
}
-#line 3676 "runtime.in"
+#line 3770 "runtime.in"
// picture* *(realarray2 *t, picture *f);
-void gen325(stack *Stack)
+void gen326(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
realarray2 * t=vm::pop<realarray2 *>(Stack);
-#line 3677 "runtime.in"
+#line 3771 "runtime.in"
{Stack->push<picture*>(transformed(*t,f)); return;}
}
-#line 3681 "runtime.in"
+#line 3775 "runtime.in"
// transform ^(transform t, Int n);
-void gen326(stack *Stack)
+void gen327(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
transform t=vm::pop<transform>(Stack);
-#line 3682 "runtime.in"
+#line 3776 "runtime.in"
transform T;
if(n < 0) {
n=-n;
@@ -5212,55 +5312,55 @@ void gen326(stack *Stack)
{Stack->push<transform>(T); return;}
}
-#line 3692 "runtime.in"
+#line 3786 "runtime.in"
void transformXPart(stack *Stack)
{
transform t=vm::pop<transform>(Stack);
-#line 3693 "runtime.in"
+#line 3787 "runtime.in"
{Stack->push<real>(t.getx()); return;}
}
-#line 3697 "runtime.in"
+#line 3791 "runtime.in"
void transformYPart(stack *Stack)
{
transform t=vm::pop<transform>(Stack);
-#line 3698 "runtime.in"
+#line 3792 "runtime.in"
{Stack->push<real>(t.gety()); return;}
}
-#line 3702 "runtime.in"
+#line 3796 "runtime.in"
void transformXXPart(stack *Stack)
{
transform t=vm::pop<transform>(Stack);
-#line 3703 "runtime.in"
+#line 3797 "runtime.in"
{Stack->push<real>(t.getxx()); return;}
}
-#line 3707 "runtime.in"
+#line 3801 "runtime.in"
void transformXYPart(stack *Stack)
{
transform t=vm::pop<transform>(Stack);
-#line 3708 "runtime.in"
+#line 3802 "runtime.in"
{Stack->push<real>(t.getxy()); return;}
}
-#line 3712 "runtime.in"
+#line 3806 "runtime.in"
void transformYXPart(stack *Stack)
{
transform t=vm::pop<transform>(Stack);
-#line 3713 "runtime.in"
+#line 3807 "runtime.in"
{Stack->push<real>(t.getyx()); return;}
}
-#line 3717 "runtime.in"
+#line 3811 "runtime.in"
void transformYYPart(stack *Stack)
{
transform t=vm::pop<transform>(Stack);
-#line 3718 "runtime.in"
+#line 3812 "runtime.in"
{Stack->push<real>(t.getyy()); return;}
}
-#line 3722 "runtime.in"
+#line 3816 "runtime.in"
void real6ToTransform(stack *Stack)
{
real yy=vm::pop<real>(Stack);
@@ -5269,757 +5369,765 @@ void real6ToTransform(stack *Stack)
real xx=vm::pop<real>(Stack);
real y=vm::pop<real>(Stack);
real x=vm::pop<real>(Stack);
-#line 3724 "runtime.in"
+#line 3818 "runtime.in"
{Stack->push<transform>(transform(x,y,xx,xy,yx,yy)); return;}
}
-#line 3728 "runtime.in"
+#line 3822 "runtime.in"
// transform shift(transform t);
-void gen334(stack *Stack)
+void gen335(stack *Stack)
{
transform t=vm::pop<transform>(Stack);
-#line 3729 "runtime.in"
+#line 3823 "runtime.in"
{Stack->push<transform>(transform(t.getx(),t.gety(),0,0,0,0)); return;}
}
-#line 3733 "runtime.in"
+#line 3827 "runtime.in"
// transform shiftless(transform t);
-void gen335(stack *Stack)
+void gen336(stack *Stack)
{
transform t=vm::pop<transform>(Stack);
-#line 3734 "runtime.in"
+#line 3828 "runtime.in"
{Stack->push<transform>(transform(0,0,t.getxx(),t.getxy(),t.getyx(),t.getyy())); return;}
}
-#line 3738 "runtime.in"
+#line 3832 "runtime.in"
// transform identity();
void transformIdentity(stack *Stack)
{
-#line 3739 "runtime.in"
+#line 3833 "runtime.in"
{Stack->push<transform>(identity); return;}
}
-#line 3743 "runtime.in"
+#line 3837 "runtime.in"
// transform inverse(transform t);
-void gen337(stack *Stack)
+void gen338(stack *Stack)
{
transform t=vm::pop<transform>(Stack);
-#line 3744 "runtime.in"
+#line 3838 "runtime.in"
{Stack->push<transform>(inverse(t)); return;}
}
-#line 3748 "runtime.in"
+#line 3842 "runtime.in"
// transform shift(pair z);
-void gen338(stack *Stack)
+void gen339(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
-#line 3749 "runtime.in"
+#line 3843 "runtime.in"
{Stack->push<transform>(shift(z)); return;}
}
-#line 3753 "runtime.in"
+#line 3847 "runtime.in"
// transform shift(real x, real y);
-void gen339(stack *Stack)
+void gen340(stack *Stack)
{
real y=vm::pop<real>(Stack);
real x=vm::pop<real>(Stack);
-#line 3754 "runtime.in"
+#line 3848 "runtime.in"
{Stack->push<transform>(shift(pair(x,y))); return;}
}
-#line 3758 "runtime.in"
+#line 3852 "runtime.in"
// transform xscale(real x);
-void gen340(stack *Stack)
+void gen341(stack *Stack)
{
real x=vm::pop<real>(Stack);
-#line 3759 "runtime.in"
+#line 3853 "runtime.in"
{Stack->push<transform>(xscale(x)); return;}
}
-#line 3763 "runtime.in"
+#line 3857 "runtime.in"
// transform yscale(real y);
-void gen341(stack *Stack)
+void gen342(stack *Stack)
{
real y=vm::pop<real>(Stack);
-#line 3764 "runtime.in"
+#line 3858 "runtime.in"
{Stack->push<transform>(yscale(y)); return;}
}
-#line 3768 "runtime.in"
+#line 3862 "runtime.in"
// transform scale(real x);
-void gen342(stack *Stack)
+void gen343(stack *Stack)
{
real x=vm::pop<real>(Stack);
-#line 3769 "runtime.in"
+#line 3863 "runtime.in"
{Stack->push<transform>(scale(x)); return;}
}
-#line 3773 "runtime.in"
+#line 3867 "runtime.in"
// transform scale(real x, real y);
-void gen343(stack *Stack)
+void gen344(stack *Stack)
{
real y=vm::pop<real>(Stack);
real x=vm::pop<real>(Stack);
-#line 3774 "runtime.in"
+#line 3868 "runtime.in"
{Stack->push<transform>(xscale(x)*yscale(y)); return;}
}
-#line 3778 "runtime.in"
+#line 3872 "runtime.in"
// transform slant(real s);
-void gen344(stack *Stack)
+void gen345(stack *Stack)
{
real s=vm::pop<real>(Stack);
-#line 3779 "runtime.in"
+#line 3873 "runtime.in"
{Stack->push<transform>(slant(s)); return;}
}
-#line 3783 "runtime.in"
+#line 3877 "runtime.in"
// transform rotate(real angle, pair z=0);
-void gen345(stack *Stack)
+void gen346(stack *Stack)
{
pair z=vm::pop<pair>(Stack,0);
real angle=vm::pop<real>(Stack);
-#line 3784 "runtime.in"
+#line 3878 "runtime.in"
{Stack->push<transform>(rotatearound(z,radians(angle))); return;}
}
-#line 3788 "runtime.in"
+#line 3882 "runtime.in"
// transform reflect(pair a, pair b);
-void gen346(stack *Stack)
+void gen347(stack *Stack)
{
pair b=vm::pop<pair>(Stack);
pair a=vm::pop<pair>(Stack);
-#line 3789 "runtime.in"
+#line 3883 "runtime.in"
{Stack->push<transform>(reflectabout(a,b)); return;}
}
// Pair operations
-#line 3795 "runtime.in"
+#line 3889 "runtime.in"
void pairZero(stack *Stack)
{
-#line 3796 "runtime.in"
+#line 3890 "runtime.in"
{Stack->push<pair>(zero); return;}
}
-#line 3801 "runtime.in"
+#line 3895 "runtime.in"
void realRealToPair(stack *Stack)
{
real y=vm::pop<real>(Stack);
real x=vm::pop<real>(Stack);
-#line 3802 "runtime.in"
+#line 3896 "runtime.in"
{Stack->push<pair>(pair(x,y)); return;}
}
-#line 3806 "runtime.in"
+#line 3900 "runtime.in"
void pairNegate(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
-#line 3807 "runtime.in"
+#line 3901 "runtime.in"
{Stack->push<pair>(-z); return;}
}
-#line 3811 "runtime.in"
+#line 3905 "runtime.in"
// real xpart(pair z);
void pairXPart(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
-#line 3812 "runtime.in"
+#line 3906 "runtime.in"
{Stack->push<real>(z.getx()); return;}
}
-#line 3816 "runtime.in"
+#line 3910 "runtime.in"
// real ypart(pair z);
void pairYPart(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
-#line 3817 "runtime.in"
+#line 3911 "runtime.in"
{Stack->push<real>(z.gety()); return;}
}
-#line 3821 "runtime.in"
+#line 3915 "runtime.in"
// real length(pair z);
-void gen352(stack *Stack)
+void gen353(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
-#line 3822 "runtime.in"
+#line 3916 "runtime.in"
{Stack->push<real>(z.length()); return;}
}
-#line 3826 "runtime.in"
+#line 3920 "runtime.in"
// real abs(pair z);
-void gen353(stack *Stack)
+void gen354(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
-#line 3827 "runtime.in"
+#line 3921 "runtime.in"
{Stack->push<real>(z.length()); return;}
}
-#line 3831 "runtime.in"
+#line 3925 "runtime.in"
// pair sqrt(explicit pair z);
-void gen354(stack *Stack)
+void gen355(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
-#line 3832 "runtime.in"
+#line 3926 "runtime.in"
{Stack->push<pair>(Sqrt(z)); return;}
}
// Return the angle of z in radians.
-#line 3837 "runtime.in"
+#line 3931 "runtime.in"
// real angle(pair z, bool warn=true);
-void gen355(stack *Stack)
+void gen356(stack *Stack)
{
bool warn=vm::pop<bool>(Stack,true);
pair z=vm::pop<pair>(Stack);
-#line 3838 "runtime.in"
+#line 3932 "runtime.in"
if(!warn && z.getx() == 0.0 && z.gety() == 0.0) {Stack->push<real>(0.0); return;}
{Stack->push<real>(z.angle()); return;}
}
// Return the angle of z in degrees in the interval [0,360).
-#line 3844 "runtime.in"
+#line 3938 "runtime.in"
// real degrees(pair z, bool warn=true);
-void gen356(stack *Stack)
+void gen357(stack *Stack)
{
bool warn=vm::pop<bool>(Stack,true);
pair z=vm::pop<pair>(Stack);
-#line 3845 "runtime.in"
+#line 3939 "runtime.in"
if(!warn && z.getx() == 0.0 && z.gety() == 0.0) {Stack->push<real>(0.0); return;}
{Stack->push<real>(principalBranch(degrees(z.angle()))); return;}
}
// Convert degrees to radians.
-#line 3851 "runtime.in"
+#line 3945 "runtime.in"
// real radians(real degrees);
-void gen357(stack *Stack)
+void gen358(stack *Stack)
{
real degrees=vm::pop<real>(Stack);
-#line 3852 "runtime.in"
+#line 3946 "runtime.in"
{Stack->push<real>(radians(degrees)); return;}
}
// Convert radians to degrees.
-#line 3857 "runtime.in"
+#line 3951 "runtime.in"
// real degrees(real radians);
-void gen358(stack *Stack)
+void gen359(stack *Stack)
{
real radians=vm::pop<real>(Stack);
-#line 3858 "runtime.in"
+#line 3952 "runtime.in"
{Stack->push<real>(degrees(radians)); return;}
}
// Convert radians to degrees in [0,360).
-#line 3863 "runtime.in"
+#line 3957 "runtime.in"
// real Degrees(real radians);
-void gen359(stack *Stack)
+void gen360(stack *Stack)
{
real radians=vm::pop<real>(Stack);
-#line 3864 "runtime.in"
+#line 3958 "runtime.in"
{Stack->push<real>(principalBranch(degrees(radians))); return;}
}
-#line 3868 "runtime.in"
+#line 3962 "runtime.in"
// real Sin(real deg);
-void gen360(stack *Stack)
+void gen361(stack *Stack)
{
real deg=vm::pop<real>(Stack);
-#line 3869 "runtime.in"
+#line 3963 "runtime.in"
{Stack->push<real>(sin(radians(deg))); return;}
}
-#line 3873 "runtime.in"
+#line 3967 "runtime.in"
// real Cos(real deg);
-void gen361(stack *Stack)
+void gen362(stack *Stack)
{
real deg=vm::pop<real>(Stack);
-#line 3874 "runtime.in"
+#line 3968 "runtime.in"
{Stack->push<real>(cos(radians(deg))); return;}
}
-#line 3878 "runtime.in"
+#line 3972 "runtime.in"
// real Tan(real deg);
-void gen362(stack *Stack)
+void gen363(stack *Stack)
{
real deg=vm::pop<real>(Stack);
-#line 3879 "runtime.in"
+#line 3973 "runtime.in"
{Stack->push<real>(tan(radians(deg))); return;}
}
-#line 3883 "runtime.in"
+#line 3977 "runtime.in"
// real aSin(real x);
-void gen363(stack *Stack)
+void gen364(stack *Stack)
{
real x=vm::pop<real>(Stack);
-#line 3884 "runtime.in"
+#line 3978 "runtime.in"
{Stack->push<real>(degrees(asin(x))); return;}
}
-#line 3888 "runtime.in"
+#line 3982 "runtime.in"
// real aCos(real x);
-void gen364(stack *Stack)
+void gen365(stack *Stack)
{
real x=vm::pop<real>(Stack);
-#line 3889 "runtime.in"
+#line 3983 "runtime.in"
{Stack->push<real>(degrees(acos(x))); return;}
}
-#line 3893 "runtime.in"
+#line 3987 "runtime.in"
// real aTan(real x);
-void gen365(stack *Stack)
+void gen366(stack *Stack)
{
real x=vm::pop<real>(Stack);
-#line 3894 "runtime.in"
+#line 3988 "runtime.in"
{Stack->push<real>(degrees(atan(x))); return;}
}
-#line 3898 "runtime.in"
+#line 3992 "runtime.in"
// pair unit(pair z);
-void gen366(stack *Stack)
+void gen367(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
-#line 3899 "runtime.in"
+#line 3993 "runtime.in"
{Stack->push<pair>(unit(z)); return;}
}
-#line 3903 "runtime.in"
+#line 3997 "runtime.in"
// pair dir(real degrees);
-void gen367(stack *Stack)
+void gen368(stack *Stack)
{
real degrees=vm::pop<real>(Stack);
-#line 3904 "runtime.in"
+#line 3998 "runtime.in"
{Stack->push<pair>(expi(radians(degrees))); return;}
}
-#line 3908 "runtime.in"
+#line 4002 "runtime.in"
// pair dir(explicit pair z);
-void gen368(stack *Stack)
+void gen369(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
-#line 3909 "runtime.in"
+#line 4003 "runtime.in"
{Stack->push<pair>(unit(z)); return;}
}
-#line 3913 "runtime.in"
+#line 4007 "runtime.in"
// pair expi(real angle);
-void gen369(stack *Stack)
+void gen370(stack *Stack)
{
real angle=vm::pop<real>(Stack);
-#line 3914 "runtime.in"
+#line 4008 "runtime.in"
{Stack->push<pair>(expi(angle)); return;}
}
-#line 3918 "runtime.in"
+#line 4012 "runtime.in"
// pair exp(explicit pair z);
-void gen370(stack *Stack)
+void gen371(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
-#line 3919 "runtime.in"
+#line 4013 "runtime.in"
{Stack->push<pair>(exp(z)); return;}
}
-#line 3923 "runtime.in"
+#line 4017 "runtime.in"
// pair log(explicit pair z);
-void gen371(stack *Stack)
+void gen372(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
-#line 3924 "runtime.in"
+#line 4018 "runtime.in"
{Stack->push<pair>(pair(log(z.length()),z.angle())); return;}
}
-#line 3928 "runtime.in"
+#line 4022 "runtime.in"
// pair sin(explicit pair z);
-void gen372(stack *Stack)
+void gen373(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
-#line 3929 "runtime.in"
+#line 4023 "runtime.in"
{Stack->push<pair>(sin(z)); return;}
}
-#line 3933 "runtime.in"
+#line 4027 "runtime.in"
// pair cos(explicit pair z);
-void gen373(stack *Stack)
+void gen374(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
-#line 3934 "runtime.in"
+#line 4028 "runtime.in"
{Stack->push<pair>(pair(cos(z.getx())*cosh(z.gety()),-sin(z.getx())*sinh(z.gety()))); return;}
}
-#line 3938 "runtime.in"
+#line 4032 "runtime.in"
// pair conj(pair z);
-void gen374(stack *Stack)
+void gen375(stack *Stack)
{
pair z=vm::pop<pair>(Stack);
-#line 3939 "runtime.in"
+#line 4033 "runtime.in"
{Stack->push<pair>(conj(z)); return;}
}
-#line 3943 "runtime.in"
+#line 4037 "runtime.in"
// pair realmult(pair z, pair w);
-void gen375(stack *Stack)
+void gen376(stack *Stack)
{
pair w=vm::pop<pair>(Stack);
pair z=vm::pop<pair>(Stack);
-#line 3944 "runtime.in"
+#line 4038 "runtime.in"
{Stack->push<pair>(pair (z.getx()*w.getx(),z.gety()*w.gety())); return;}
}
-#line 3948 "runtime.in"
+#line 4042 "runtime.in"
// triple realmult(triple u, triple v);
-void gen376(stack *Stack)
+void gen377(stack *Stack)
{
triple v=vm::pop<triple>(Stack);
triple u=vm::pop<triple>(Stack);
-#line 3949 "runtime.in"
+#line 4043 "runtime.in"
{Stack->push<triple>(triple (u.getx()*v.getx(),u.gety()*v.gety(),u.getz()*v.getz())); return;}
}
// To avoid confusion, a dot product requires explicit pair arguments.
-#line 3954 "runtime.in"
+#line 4048 "runtime.in"
// real dot(explicit pair z, explicit pair w);
-void gen377(stack *Stack)
+void gen378(stack *Stack)
{
pair w=vm::pop<pair>(Stack);
pair z=vm::pop<pair>(Stack);
-#line 3955 "runtime.in"
+#line 4049 "runtime.in"
{Stack->push<real>(dot(z,w)); return;}
}
// Triple operations
-#line 3961 "runtime.in"
+#line 4055 "runtime.in"
void tripleZero(stack *Stack)
{
-#line 3962 "runtime.in"
+#line 4056 "runtime.in"
static triple zero;
{Stack->push<triple>(zero); return;}
}
-#line 3968 "runtime.in"
+#line 4062 "runtime.in"
void realRealRealToTriple(stack *Stack)
{
real z=vm::pop<real>(Stack);
real y=vm::pop<real>(Stack);
real x=vm::pop<real>(Stack);
-#line 3969 "runtime.in"
+#line 4063 "runtime.in"
{Stack->push<triple>(triple(x,y,z)); return;}
}
-#line 3973 "runtime.in"
+#line 4067 "runtime.in"
// real xpart(triple v);
void tripleXPart(stack *Stack)
{
triple v=vm::pop<triple>(Stack);
-#line 3974 "runtime.in"
+#line 4068 "runtime.in"
{Stack->push<real>(v.getx()); return;}
}
-#line 3978 "runtime.in"
+#line 4072 "runtime.in"
// real ypart(triple v);
void tripleYPart(stack *Stack)
{
triple v=vm::pop<triple>(Stack);
-#line 3979 "runtime.in"
+#line 4073 "runtime.in"
{Stack->push<real>(v.gety()); return;}
}
-#line 3983 "runtime.in"
+#line 4077 "runtime.in"
// real zpart(triple v);
void tripleZPart(stack *Stack)
{
triple v=vm::pop<triple>(Stack);
-#line 3984 "runtime.in"
+#line 4078 "runtime.in"
{Stack->push<real>(v.getz()); return;}
}
-#line 3988 "runtime.in"
+#line 4082 "runtime.in"
// triple *(real x, triple v);
-void gen383(stack *Stack)
+void gen384(stack *Stack)
{
triple v=vm::pop<triple>(Stack);
real x=vm::pop<real>(Stack);
-#line 3989 "runtime.in"
+#line 4083 "runtime.in"
{Stack->push<triple>(x*v); return;}
}
-#line 3993 "runtime.in"
+#line 4087 "runtime.in"
// triple *(triple v, real x);
-void gen384(stack *Stack)
+void gen385(stack *Stack)
{
real x=vm::pop<real>(Stack);
triple v=vm::pop<triple>(Stack);
-#line 3994 "runtime.in"
+#line 4088 "runtime.in"
{Stack->push<triple>(v*x); return;}
}
-#line 3998 "runtime.in"
+#line 4092 "runtime.in"
// triple /(triple v, real x);
-void gen385(stack *Stack)
+void gen386(stack *Stack)
{
real x=vm::pop<real>(Stack);
triple v=vm::pop<triple>(Stack);
-#line 3999 "runtime.in"
+#line 4093 "runtime.in"
{Stack->push<triple>(v/x); return;}
}
-#line 4003 "runtime.in"
+#line 4097 "runtime.in"
// real length(triple v);
-void gen386(stack *Stack)
+void gen387(stack *Stack)
{
triple v=vm::pop<triple>(Stack);
-#line 4004 "runtime.in"
+#line 4098 "runtime.in"
{Stack->push<real>(v.length()); return;}
}
-#line 4008 "runtime.in"
+#line 4102 "runtime.in"
// real abs(triple v);
-void gen387(stack *Stack)
+void gen388(stack *Stack)
{
triple v=vm::pop<triple>(Stack);
-#line 4009 "runtime.in"
+#line 4103 "runtime.in"
{Stack->push<real>(v.length()); return;}
}
-#line 4013 "runtime.in"
-// real polar(triple v);
-void gen388(stack *Stack)
+#line 4107 "runtime.in"
+// real polar(triple v, bool warn=true);
+void gen389(stack *Stack)
{
+ bool warn=vm::pop<bool>(Stack,true);
triple v=vm::pop<triple>(Stack);
-#line 4014 "runtime.in"
+#line 4108 "runtime.in"
+ if(!warn && v.getx() == 0.0 && v.gety() == 0.0 && v.getz() == 0.0) {Stack->push<real>(0.0); return;}
{Stack->push<real>(v.polar()); return;}
}
-#line 4018 "runtime.in"
-// real azimuth(triple v);
-void gen389(stack *Stack)
+#line 4113 "runtime.in"
+// real azimuth(triple v, bool warn=true);
+void gen390(stack *Stack)
{
+ bool warn=vm::pop<bool>(Stack,true);
triple v=vm::pop<triple>(Stack);
-#line 4019 "runtime.in"
+#line 4114 "runtime.in"
+ if(!warn && v.getx() == 0.0 && v.gety() == 0.0) {Stack->push<real>(0.0); return;}
{Stack->push<real>(v.azimuth()); return;}
}
-#line 4023 "runtime.in"
-// real colatitude(triple v);
-void gen390(stack *Stack)
+#line 4119 "runtime.in"
+// real colatitude(triple v, bool warn=true);
+void gen391(stack *Stack)
{
+ bool warn=vm::pop<bool>(Stack,true);
triple v=vm::pop<triple>(Stack);
-#line 4024 "runtime.in"
+#line 4120 "runtime.in"
+ if(!warn && v.getx() == 0.0 && v.gety() == 0.0 && v.getz() == 0.0) {Stack->push<real>(0.0); return;}
{Stack->push<real>(degrees(v.polar())); return;}
}
-#line 4028 "runtime.in"
-// real latitude(triple v);
-void gen391(stack *Stack)
+#line 4125 "runtime.in"
+// real latitude(triple v, bool warn=true);
+void gen392(stack *Stack)
{
+ bool warn=vm::pop<bool>(Stack,true);
triple v=vm::pop<triple>(Stack);
-#line 4029 "runtime.in"
+#line 4126 "runtime.in"
+ if(!warn && v.getx() == 0.0 && v.gety() == 0.0 && v.getz() == 0.0) {Stack->push<real>(0.0); return;}
{Stack->push<real>(90.0-degrees(v.polar())); return;}
}
// Return the longitude of v in [0,360).
-#line 4034 "runtime.in"
+#line 4132 "runtime.in"
// real longitude(triple v, bool warn=true);
-void gen392(stack *Stack)
+void gen393(stack *Stack)
{
bool warn=vm::pop<bool>(Stack,true);
triple v=vm::pop<triple>(Stack);
-#line 4035 "runtime.in"
+#line 4133 "runtime.in"
if(!warn && v.getx() == 0.0 && v.gety() == 0.0) {Stack->push<real>(0.0); return;}
{Stack->push<real>(principalBranch(degrees(v.azimuth()))); return;}
}
-#line 4040 "runtime.in"
+#line 4138 "runtime.in"
// triple unit(triple v);
-void gen393(stack *Stack)
+void gen394(stack *Stack)
{
triple v=vm::pop<triple>(Stack);
-#line 4041 "runtime.in"
+#line 4139 "runtime.in"
{Stack->push<triple>(unit(v)); return;}
}
-#line 4045 "runtime.in"
+#line 4143 "runtime.in"
// real dot(triple u, triple v);
-void gen394(stack *Stack)
+void gen395(stack *Stack)
{
triple v=vm::pop<triple>(Stack);
triple u=vm::pop<triple>(Stack);
-#line 4046 "runtime.in"
+#line 4144 "runtime.in"
{Stack->push<real>(dot(u,v)); return;}
}
-#line 4050 "runtime.in"
+#line 4148 "runtime.in"
// triple cross(triple u, triple v);
-void gen395(stack *Stack)
+void gen396(stack *Stack)
{
triple v=vm::pop<triple>(Stack);
triple u=vm::pop<triple>(Stack);
-#line 4051 "runtime.in"
+#line 4149 "runtime.in"
{Stack->push<triple>(cross(u,v)); return;}
}
-#line 4055 "runtime.in"
+#line 4153 "runtime.in"
// triple expi(real polar, real azimuth);
-void gen396(stack *Stack)
+void gen397(stack *Stack)
{
real azimuth=vm::pop<real>(Stack);
real polar=vm::pop<real>(Stack);
-#line 4056 "runtime.in"
+#line 4154 "runtime.in"
{Stack->push<triple>(expi(polar,azimuth)); return;}
}
-#line 4060 "runtime.in"
+#line 4158 "runtime.in"
// triple dir(real colatitude, real longitude);
-void gen397(stack *Stack)
+void gen398(stack *Stack)
{
real longitude=vm::pop<real>(Stack);
real colatitude=vm::pop<real>(Stack);
-#line 4061 "runtime.in"
+#line 4159 "runtime.in"
{Stack->push<triple>(expi(radians(colatitude),radians(longitude))); return;}
}
// System routines
-#line 4067 "runtime.in"
+#line 4165 "runtime.in"
// void atupdate(callable *f);
-void gen398(stack *Stack)
+void gen399(stack *Stack)
{
callable * f=vm::pop<callable *>(Stack);
-#line 4068 "runtime.in"
+#line 4166 "runtime.in"
processData().atUpdateFunction=f;
}
-#line 4073 "runtime.in"
+#line 4171 "runtime.in"
// callable* atupdate();
-void gen399(stack *Stack)
+void gen400(stack *Stack)
{
-#line 4074 "runtime.in"
+#line 4172 "runtime.in"
{Stack->push<callable*>(processData().atUpdateFunction); return;}
}
-#line 4078 "runtime.in"
+#line 4176 "runtime.in"
// void atexit(callable *f);
-void gen400(stack *Stack)
+void gen401(stack *Stack)
{
callable * f=vm::pop<callable *>(Stack);
-#line 4079 "runtime.in"
+#line 4177 "runtime.in"
processData().atExitFunction=f;
}
-#line 4083 "runtime.in"
+#line 4181 "runtime.in"
// callable* atexit();
-void gen401(stack *Stack)
+void gen402(stack *Stack)
{
-#line 4084 "runtime.in"
+#line 4182 "runtime.in"
{Stack->push<callable*>(processData().atExitFunction); return;}
}
-#line 4088 "runtime.in"
+#line 4186 "runtime.in"
// void atbreakpoint(callableBp *f);
-void gen402(stack *Stack)
+void gen403(stack *Stack)
{
callableBp * f=vm::pop<callableBp *>(Stack);
-#line 4089 "runtime.in"
+#line 4187 "runtime.in"
processData().atBreakpointFunction=f;
}
-#line 4093 "runtime.in"
+#line 4191 "runtime.in"
// void breakpoint(runnable *s=NULL);
-void gen403(stack *Stack)
+void gen404(stack *Stack)
{
runnable * s=vm::pop<runnable *>(Stack,NULL);
-#line 4094 "runtime.in"
+#line 4192 "runtime.in"
breakpoint(Stack,s);
}
-#line 4098 "runtime.in"
+#line 4196 "runtime.in"
// string locatefile(string file);
-void gen404(stack *Stack)
+void gen405(stack *Stack)
{
string file=vm::pop<string>(Stack);
-#line 4099 "runtime.in"
+#line 4197 "runtime.in"
{Stack->push<string>(locateFile(file)); return;}
}
-#line 4103 "runtime.in"
+#line 4201 "runtime.in"
// void stop(string file, Int line, runnable *s=NULL);
-void gen405(stack *Stack)
+void gen406(stack *Stack)
{
runnable * s=vm::pop<runnable *>(Stack,NULL);
Int line=vm::pop<Int>(Stack);
string file=vm::pop<string>(Stack);
-#line 4104 "runtime.in"
+#line 4202 "runtime.in"
file=locateFile(file);
clear(file,line);
cout << "setting breakpoint at " << file << ": " << line << endl;
bplist.push_back(bpinfo(file,line,s));
}
-#line 4111 "runtime.in"
+#line 4209 "runtime.in"
// void breakpoints();
-void gen406(stack *)
+void gen407(stack *)
{
-#line 4112 "runtime.in"
+#line 4210 "runtime.in"
for(mem::list<bpinfo>::iterator p=bplist.begin(); p != bplist.end(); ++p)
cout << p->f.name() << ": " << p->f.line() << endl;
}
-#line 4117 "runtime.in"
+#line 4215 "runtime.in"
// void clear(string file, Int line);
-void gen407(stack *Stack)
+void gen408(stack *Stack)
{
Int line=vm::pop<Int>(Stack);
string file=vm::pop<string>(Stack);
-#line 4118 "runtime.in"
+#line 4216 "runtime.in"
file=locateFile(file);
clear(file,line,true);
}
-#line 4123 "runtime.in"
+#line 4221 "runtime.in"
// void clear();
-void gen408(stack *)
+void gen409(stack *)
{
-#line 4124 "runtime.in"
+#line 4222 "runtime.in"
bplist.clear();
}
// Strip directory from string
-#line 4129 "runtime.in"
+#line 4227 "runtime.in"
// string stripdirectory(string *s);
-void gen409(stack *Stack)
+void gen410(stack *Stack)
{
string * s=vm::pop<string *>(Stack);
-#line 4130 "runtime.in"
+#line 4228 "runtime.in"
{Stack->push<string>(stripDir(*s)); return;}
}
// Strip directory from string
-#line 4135 "runtime.in"
+#line 4233 "runtime.in"
// string stripfile(string *s);
-void gen410(stack *Stack)
+void gen411(stack *Stack)
{
string * s=vm::pop<string *>(Stack);
-#line 4136 "runtime.in"
+#line 4234 "runtime.in"
{Stack->push<string>(stripFile(*s)); return;}
}
// Strip file extension from string
-#line 4141 "runtime.in"
+#line 4239 "runtime.in"
// string stripextension(string *s);
-void gen411(stack *Stack)
+void gen412(stack *Stack)
{
string * s=vm::pop<string *>(Stack);
-#line 4142 "runtime.in"
+#line 4240 "runtime.in"
{Stack->push<string>(stripExt(*s)); return;}
}
// Call ImageMagick convert.
-#line 4147 "runtime.in"
+#line 4245 "runtime.in"
// Int convert(string args=emptystring, string file=emptystring, string format=emptystring);
-void gen412(stack *Stack)
+void gen413(stack *Stack)
{
string format=vm::pop<string>(Stack,emptystring);
string file=vm::pop<string>(Stack,emptystring);
string args=vm::pop<string>(Stack,emptystring);
-#line 4149 "runtime.in"
+#line 4247 "runtime.in"
ostringstream cmd;
string name=convertname(file,format);
@@ -6035,14 +6143,14 @@ void gen412(stack *Stack)
}
// Call ImageMagick animate.
-#line 4165 "runtime.in"
+#line 4263 "runtime.in"
// Int animate(string args=emptystring, string file=emptystring, string format=emptystring);
-void gen413(stack *Stack)
+void gen414(stack *Stack)
{
string format=vm::pop<string>(Stack,emptystring);
string file=vm::pop<string>(Stack,emptystring);
string args=vm::pop<string>(Stack,emptystring);
-#line 4167 "runtime.in"
+#line 4265 "runtime.in"
#ifndef __CYGWIN__
string name=convertname(file,format,false);
if(view()) {
@@ -6056,12 +6164,12 @@ void gen413(stack *Stack)
}
// Delete file named s.
-#line 4181 "runtime.in"
+#line 4279 "runtime.in"
// Int delete(string *s);
-void gen414(stack *Stack)
+void gen415(stack *Stack)
{
string * s=vm::pop<string *>(Stack);
-#line 4182 "runtime.in"
+#line 4280 "runtime.in"
checkLocal(*s);
Int rc=unlink(s->c_str());
if(rc == 0 && verbose > 0)
@@ -6070,13 +6178,13 @@ void gen414(stack *Stack)
}
// Rename file "from" to file "to".
-#line 4191 "runtime.in"
+#line 4289 "runtime.in"
// Int rename(string *from, string *to);
-void gen415(stack *Stack)
+void gen416(stack *Stack)
{
string * to=vm::pop<string *>(Stack);
string * from=vm::pop<string *>(Stack);
-#line 4192 "runtime.in"
+#line 4290 "runtime.in"
checkLocal(*from);
checkLocal(*to);
Int rc=rename(from->c_str(),to->c_str());
@@ -6089,10 +6197,10 @@ void gen415(stack *Stack)
// Array operations
// Create an empty array.
-#line 4205 "runtime.in"
+#line 4303 "runtime.in"
void emptyArray(stack *Stack)
{
-#line 4206 "runtime.in"
+#line 4304 "runtime.in"
{Stack->push<array*>(new array(0)); return;}
}
@@ -6101,11 +6209,11 @@ void emptyArray(stack *Stack)
// is popped off the stack, followed by each dimension in reverse order.
// The array itself is technically a one dimensional array of one
// dimension arrays and so on.
-#line 4215 "runtime.in"
+#line 4313 "runtime.in"
void newDeepArray(stack *Stack)
{
Int depth=vm::pop<Int>(Stack);
-#line 4216 "runtime.in"
+#line 4314 "runtime.in"
assert(depth > 0);
Int *dims = new Int[depth];
@@ -6124,11 +6232,11 @@ void newDeepArray(stack *Stack)
// Creates an array with elements already specified. First, the number
// of elements is popped off the stack, followed by each element in
// reverse order.
-#line 4235 "runtime.in"
+#line 4333 "runtime.in"
void newInitializedArray(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
-#line 4236 "runtime.in"
+#line 4334 "runtime.in"
assert(n >= 0);
array *a = new array(n);
@@ -6141,12 +6249,12 @@ void newInitializedArray(stack *Stack)
// Similar to newInitializedArray, but after the n elements, append another
// array to it.
-#line 4249 "runtime.in"
+#line 4347 "runtime.in"
void newAppendedArray(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
array* tail=vm::pop<array*>(Stack);
-#line 4250 "runtime.in"
+#line 4348 "runtime.in"
assert(n >= 0);
array *a = new array(n);
@@ -6161,13 +6269,13 @@ void newAppendedArray(stack *Stack)
// The function T[] array(int n, T value, int depth=0) produces a array of n
// copies of x, where each copy is copied up to depth.
-#line 4265 "runtime.in"
+#line 4363 "runtime.in"
void newDuplicateArray(stack *Stack)
{
Int depth=vm::pop<Int>(Stack,Int_MAX);
item value=vm::pop(Stack);
Int n=vm::pop<Int>(Stack);
-#line 4266 "runtime.in"
+#line 4364 "runtime.in"
if(n < 0) error("cannot create a negative length array");
if(depth < 0) error("cannot copy to a negative depth");
@@ -6175,12 +6283,12 @@ void newDuplicateArray(stack *Stack)
}
// Read an element from an array. Checks for initialization & bounds.
-#line 4274 "runtime.in"
+#line 4372 "runtime.in"
void arrayRead(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 4275 "runtime.in"
+#line 4373 "runtime.in"
item& i=arrayRead(a,n);
if (i.empty()) {
ostringstream buf;
@@ -6191,50 +6299,50 @@ void arrayRead(stack *Stack)
}
// Slice a substring from an array.
-#line 4286 "runtime.in"
+#line 4384 "runtime.in"
void arraySliceRead(stack *Stack)
{
Int right=vm::pop<Int>(Stack);
Int left=vm::pop<Int>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 4287 "runtime.in"
+#line 4385 "runtime.in"
checkArray(a);
{Stack->push(a->slice(left, right)); return;}
}
// Slice a substring from an array. This implements the cases a[i:] and a[:]
// where the endpoint is not given, and assumed to be the length of the array.
-#line 4294 "runtime.in"
+#line 4392 "runtime.in"
void arraySliceReadToEnd(stack *Stack)
{
Int left=vm::pop<Int>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 4295 "runtime.in"
+#line 4393 "runtime.in"
size_t len=checkArray(a);
{Stack->push(a->slice(left, (Int)len)); return;}
}
// Read an element from an array of arrays. Check bounds and initialize
// as necessary.
-#line 4302 "runtime.in"
+#line 4400 "runtime.in"
void arrayArrayRead(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 4303 "runtime.in"
+#line 4401 "runtime.in"
item& i=arrayRead(a,n);
if (i.empty()) i=new array(0);
{Stack->push(i); return;}
}
// Write an element to an array. Increase size if necessary.
-#line 4310 "runtime.in"
+#line 4408 "runtime.in"
void arrayWrite(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
array * a=vm::pop<array *>(Stack);
item value=vm::pop(Stack);
-#line 4311 "runtime.in"
+#line 4409 "runtime.in"
size_t len=checkArray(a);
bool cyclic=a->cyclic();
if(cyclic && len > 0) n=imod(n,len);
@@ -6248,27 +6356,27 @@ void arrayWrite(stack *Stack)
{Stack->push(value); return;}
}
-#line 4325 "runtime.in"
+#line 4423 "runtime.in"
void arraySliceWrite(stack *Stack)
{
Int right=vm::pop<Int>(Stack);
Int left=vm::pop<Int>(Stack);
array * dest=vm::pop<array *>(Stack);
array * src=vm::pop<array *>(Stack);
-#line 4326 "runtime.in"
+#line 4424 "runtime.in"
checkArray(src);
checkArray(dest);
dest->setSlice(left, right, src);
{Stack->push<array*>(src); return;}
}
-#line 4333 "runtime.in"
+#line 4431 "runtime.in"
void arraySliceWriteToEnd(stack *Stack)
{
Int left=vm::pop<Int>(Stack);
array * dest=vm::pop<array *>(Stack);
array * src=vm::pop<array *>(Stack);
-#line 4334 "runtime.in"
+#line 4432 "runtime.in"
checkArray(src);
size_t len=checkArray(dest);
dest->setSlice(left, (Int) len, src);
@@ -6276,20 +6384,20 @@ void arraySliceWriteToEnd(stack *Stack)
}
// Returns the length of an array.
-#line 4342 "runtime.in"
+#line 4440 "runtime.in"
void arrayLength(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 4343 "runtime.in"
+#line 4441 "runtime.in"
{Stack->push<Int>((Int) checkArray(a)); return;}
}
// Returns an array of integers representing the keys of the array.
-#line 4348 "runtime.in"
+#line 4446 "runtime.in"
void arrayKeys(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 4349 "runtime.in"
+#line 4447 "runtime.in"
size_t size=checkArray(a);
array *keys=new array();
@@ -6303,22 +6411,22 @@ void arrayKeys(stack *Stack)
}
// Return the cyclic flag for an array.
-#line 4363 "runtime.in"
+#line 4461 "runtime.in"
void arrayCyclicFlag(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 4364 "runtime.in"
+#line 4462 "runtime.in"
checkArray(a);
{Stack->push<bool>(a->cyclic()); return;}
}
// Check to see if an array element is initialized.
-#line 4370 "runtime.in"
+#line 4468 "runtime.in"
void arrayInitializedHelper(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
Int n=vm::pop<Int>(Stack);
-#line 4371 "runtime.in"
+#line 4469 "runtime.in"
size_t len=checkArray(a);
bool cyclic=a->cyclic();
if(cyclic && len > 0) n=imod(n,len);
@@ -6328,62 +6436,62 @@ void arrayInitializedHelper(stack *Stack)
}
// Returns the initialize method for an array.
-#line 4381 "runtime.in"
+#line 4479 "runtime.in"
void arrayInitialized(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 4382 "runtime.in"
+#line 4480 "runtime.in"
{Stack->push<callable*>(new thunk(new bfunc(arrayInitializedHelper),a)); return;}
}
// The helper function for the cyclic method that sets the cyclic flag.
-#line 4387 "runtime.in"
+#line 4485 "runtime.in"
void arrayCyclicHelper(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
bool b=vm::pop<bool>(Stack);
-#line 4388 "runtime.in"
+#line 4486 "runtime.in"
checkArray(a);
a->cyclic(b);
}
// Set the cyclic flag for an array.
-#line 4394 "runtime.in"
+#line 4492 "runtime.in"
void arrayCyclic(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 4395 "runtime.in"
+#line 4493 "runtime.in"
{Stack->push<callable*>(new thunk(new bfunc(arrayCyclicHelper),a)); return;}
}
// The helper function for the push method that does the actual operation.
-#line 4400 "runtime.in"
+#line 4498 "runtime.in"
void arrayPushHelper(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
item x=vm::pop(Stack);
-#line 4401 "runtime.in"
+#line 4499 "runtime.in"
checkArray(a);
a->push(x);
{Stack->push(x); return;}
}
// Returns the push method for an array.
-#line 4408 "runtime.in"
+#line 4506 "runtime.in"
void arrayPush(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 4409 "runtime.in"
+#line 4507 "runtime.in"
{Stack->push<callable*>(new thunk(new bfunc(arrayPushHelper),a)); return;}
}
// The helper function for the append method that appends b to a.
-#line 4414 "runtime.in"
+#line 4512 "runtime.in"
void arrayAppendHelper(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
array * b=vm::pop<array *>(Stack);
-#line 4415 "runtime.in"
+#line 4513 "runtime.in"
checkArray(a);
size_t size=checkArray(b);
for(size_t i=0; i < size; i++)
@@ -6391,20 +6499,20 @@ void arrayAppendHelper(stack *Stack)
}
// Returns the append method for an array.
-#line 4423 "runtime.in"
+#line 4521 "runtime.in"
void arrayAppend(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 4424 "runtime.in"
+#line 4522 "runtime.in"
{Stack->push<callable*>(new thunk(new bfunc(arrayAppendHelper),a)); return;}
}
// The helper function for the pop method.
-#line 4429 "runtime.in"
+#line 4527 "runtime.in"
void arrayPopHelper(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 4430 "runtime.in"
+#line 4528 "runtime.in"
size_t asize=checkArray(a);
if(asize == 0)
error("cannot pop element from empty array");
@@ -6412,22 +6520,22 @@ void arrayPopHelper(stack *Stack)
}
// Returns the pop method for an array.
-#line 4438 "runtime.in"
+#line 4536 "runtime.in"
void arrayPop(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 4439 "runtime.in"
+#line 4537 "runtime.in"
{Stack->push<callable*>(new thunk(new bfunc(arrayPopHelper),a)); return;}
}
// The helper function for the insert method.
-#line 4444 "runtime.in"
+#line 4542 "runtime.in"
void arrayInsertHelper(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
array * x=vm::pop<array *>(Stack);
Int i=vm::pop<Int>(Stack);
-#line 4445 "runtime.in"
+#line 4543 "runtime.in"
size_t asize=checkArray(a);
checkArray(x);
if(a->cyclic() && asize > 0) i=imod(i,asize);
@@ -6437,39 +6545,39 @@ void arrayInsertHelper(stack *Stack)
}
// Returns the insert method for an array.
-#line 4455 "runtime.in"
+#line 4553 "runtime.in"
void arrayInsert(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 4456 "runtime.in"
+#line 4554 "runtime.in"
{Stack->push<callable*>(new thunk(new bfunc(arrayInsertHelper),a)); return;}
}
// Returns the delete method for an array.
-#line 4461 "runtime.in"
+#line 4559 "runtime.in"
void arrayDelete(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 4462 "runtime.in"
+#line 4560 "runtime.in"
{Stack->push<callable*>(new thunk(new bfunc(arrayDeleteHelper),a)); return;}
}
-#line 4466 "runtime.in"
+#line 4564 "runtime.in"
void arrayAlias(stack *Stack)
{
array * b=vm::pop<array *>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 4467 "runtime.in"
+#line 4565 "runtime.in"
{Stack->push<bool>(a==b); return;}
}
// Return array formed by indexing array a with elements of integer array b
-#line 4472 "runtime.in"
+#line 4570 "runtime.in"
void arrayIntArray(stack *Stack)
{
array * b=vm::pop<array *>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 4473 "runtime.in"
+#line 4571 "runtime.in"
size_t asize=checkArray(a);
size_t bsize=checkArray(b);
array *r=new array(bsize);
@@ -6487,13 +6595,13 @@ void arrayIntArray(stack *Stack)
// returns the complement of the integer array a in {0,2,...,n-1},
// so that b[complement(a,b.length)] yields the complement of b[a].
-#line 4491 "runtime.in"
+#line 4589 "runtime.in"
// Intarray* complement(Intarray *a, Int n);
-void gen446(stack *Stack)
+void gen447(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
Intarray * a=vm::pop<Intarray *>(Stack);
-#line 4492 "runtime.in"
+#line 4590 "runtime.in"
size_t asize=checkArray(a);
array *r=new array(0);
bool *keep=new bool[n];
@@ -6510,12 +6618,12 @@ void gen446(stack *Stack)
}
// Generate the sequence {f(i) : i=0,1,...n-1} given a function f and integer n
-#line 4509 "runtime.in"
+#line 4607 "runtime.in"
void arraySequence(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
callable * f=vm::pop<callable *>(Stack);
-#line 4510 "runtime.in"
+#line 4608 "runtime.in"
if(n < 0) n=0;
array *a=new array(n);
for(Int i=0; i < n; ++i) {
@@ -6527,12 +6635,12 @@ void arraySequence(stack *Stack)
}
// Return the array {0,1,...n-1}
-#line 4522 "runtime.in"
+#line 4620 "runtime.in"
// Intarray* sequence(Int n);
-void gen448(stack *Stack)
+void gen449(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
-#line 4523 "runtime.in"
+#line 4621 "runtime.in"
if(n < 0) n=0;
array *a=new array(n);
for(Int i=0; i < n; ++i) {
@@ -6542,12 +6650,12 @@ void gen448(stack *Stack)
}
// Apply a function to each element of an array
-#line 4533 "runtime.in"
+#line 4631 "runtime.in"
void arrayFunction(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
callable * f=vm::pop<callable *>(Stack);
-#line 4534 "runtime.in"
+#line 4632 "runtime.in"
size_t size=checkArray(a);
array *b=new array(size);
for(size_t i=0; i < size; ++i) {
@@ -6558,12 +6666,12 @@ void arrayFunction(stack *Stack)
{Stack->push<array*>(b); return;}
}
-#line 4545 "runtime.in"
+#line 4643 "runtime.in"
void arraySort(stack *Stack)
{
callable * f=vm::pop<callable *>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 4546 "runtime.in"
+#line 4644 "runtime.in"
array *c=copyArray(a);
compareFunc=f;
FuncStack=Stack;
@@ -6571,12 +6679,12 @@ void arraySort(stack *Stack)
{Stack->push<array*>(c); return;}
}
-#line 4554 "runtime.in"
+#line 4652 "runtime.in"
// bool all(boolarray *a);
-void gen451(stack *Stack)
+void gen452(stack *Stack)
{
boolarray * a=vm::pop<boolarray *>(Stack);
-#line 4555 "runtime.in"
+#line 4653 "runtime.in"
size_t size=checkArray(a);
bool c=true;
for(size_t i=0; i < size; i++)
@@ -6584,12 +6692,12 @@ void gen451(stack *Stack)
{Stack->push<bool>(c); return;}
}
-#line 4563 "runtime.in"
+#line 4661 "runtime.in"
// boolarray* !(boolarray* a);
-void gen452(stack *Stack)
+void gen453(stack *Stack)
{
boolarray* a=vm::pop<boolarray*>(Stack);
-#line 4564 "runtime.in"
+#line 4662 "runtime.in"
size_t size=checkArray(a);
array *c=new array(size);
for(size_t i=0; i < size; i++)
@@ -6597,12 +6705,12 @@ void gen452(stack *Stack)
{Stack->push<boolarray*>(c); return;}
}
-#line 4572 "runtime.in"
+#line 4670 "runtime.in"
// Int sum(boolarray *a);
-void gen453(stack *Stack)
+void gen454(stack *Stack)
{
boolarray * a=vm::pop<boolarray *>(Stack);
-#line 4573 "runtime.in"
+#line 4671 "runtime.in"
size_t size=checkArray(a);
Int sum=0;
for(size_t i=0; i < size; i++)
@@ -6610,19 +6718,19 @@ void gen453(stack *Stack)
{Stack->push<Int>(sum); return;}
}
-#line 4581 "runtime.in"
+#line 4679 "runtime.in"
void arrayCopy(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 4582 "runtime.in"
+#line 4680 "runtime.in"
{Stack->push<array*>(copyArray(a)); return;}
}
-#line 4586 "runtime.in"
+#line 4684 "runtime.in"
void arrayConcat(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 4587 "runtime.in"
+#line 4685 "runtime.in"
// a is an array of arrays to be concatenated together.
// The signature is
// T[] concat(... T[][] a);
@@ -6649,27 +6757,27 @@ void arrayConcat(stack *Stack)
{Stack->push<array*>(result); return;}
}
-#line 4614 "runtime.in"
+#line 4712 "runtime.in"
void array2Copy(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 4615 "runtime.in"
+#line 4713 "runtime.in"
{Stack->push<array*>(copyArray2(a)); return;}
}
-#line 4619 "runtime.in"
+#line 4717 "runtime.in"
void array3Copy(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 4620 "runtime.in"
+#line 4718 "runtime.in"
{Stack->push<array*>(copyArray3(a)); return;}
}
-#line 4624 "runtime.in"
+#line 4722 "runtime.in"
void array2Transpose(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 4625 "runtime.in"
+#line 4723 "runtime.in"
size_t asize=checkArray(a);
array *c=new array(0);
for(size_t i=0; i < asize; i++) {
@@ -6696,12 +6804,12 @@ void array2Transpose(stack *Stack)
// permutation (021 or 120, etc; original is 012).
// Transpose by sending respective members to the permutated locations:
// return the array obtained by putting a[i][j][k] into position perm{ijk}.
-#line 4652 "runtime.in"
+#line 4750 "runtime.in"
void array3Transpose(stack *Stack)
{
array * perm=vm::pop<array *>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 4653 "runtime.in"
+#line 4751 "runtime.in"
const size_t DIM=3;
if(checkArray(perm) != DIM) {
@@ -6785,13 +6893,13 @@ void array3Transpose(stack *Stack)
// In a boolean array, find the index of the nth true value or -1 if not found
// If n is negative, search backwards.
-#line 4737 "runtime.in"
+#line 4835 "runtime.in"
// Int find(boolarray *a, Int n=1);
-void gen460(stack *Stack)
+void gen461(stack *Stack)
{
Int n=vm::pop<Int>(Stack,1);
boolarray * a=vm::pop<boolarray *>(Stack);
-#line 4738 "runtime.in"
+#line 4836 "runtime.in"
size_t size=checkArray(a);
Int j=-1;
@@ -6808,13 +6916,13 @@ void gen460(stack *Stack)
{Stack->push<Int>(j); return;}
}
-#line 4755 "runtime.in"
+#line 4853 "runtime.in"
// bool ==(realarray2 *a, realarray2 *b);
-void gen461(stack *Stack)
+void gen462(stack *Stack)
{
realarray2 * b=vm::pop<realarray2 *>(Stack);
realarray2 * a=vm::pop<realarray2 *>(Stack);
-#line 4756 "runtime.in"
+#line 4854 "runtime.in"
size_t n=checkArray(a);
if(n != checkArray(b)) {Stack->push<bool>(false); return;}
@@ -6834,13 +6942,13 @@ void gen461(stack *Stack)
// construct vector obtained by replacing those elements of b for which the
// corresponding elements of a are false by the corresponding element of c.
-#line 4776 "runtime.in"
+#line 4874 "runtime.in"
void arrayConditional(stack *Stack)
{
array * c=vm::pop<array *>(Stack);
array * b=vm::pop<array *>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 4777 "runtime.in"
+#line 4875 "runtime.in"
size_t size=checkArray(a);
array *r=new array(size);
if(b && c) {
@@ -6864,21 +6972,21 @@ void arrayConditional(stack *Stack)
}
// Return an n x n identity matrix.
-#line 4801 "runtime.in"
+#line 4899 "runtime.in"
// realarray2* identity(Int n);
-void gen463(stack *Stack)
+void gen464(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
-#line 4802 "runtime.in"
+#line 4900 "runtime.in"
{Stack->push<realarray2*>(Identity(n)); return;}
}
// Return the diagonal matrix with diagonal entries given by a.
-#line 4807 "runtime.in"
+#line 4905 "runtime.in"
void diagonal(stack *Stack)
{
realarray * a=vm::pop<realarray *>(Stack);
-#line 4808 "runtime.in"
+#line 4906 "runtime.in"
size_t n=checkArray(a);
array *c=new array(n);
for(size_t i=0; i < n; ++i) {
@@ -6894,12 +7002,12 @@ void diagonal(stack *Stack)
}
// Return the inverse of an n x n matrix a using Gauss-Jordan elimination.
-#line 4824 "runtime.in"
+#line 4922 "runtime.in"
// realarray2* inverse(realarray2 *a);
-void gen465(stack *Stack)
+void gen466(stack *Stack)
{
realarray2 * a=vm::pop<realarray2 *>(Stack);
-#line 4825 "runtime.in"
+#line 4923 "runtime.in"
a=copyArray2(a);
size_t n=checkArray(a);
checkSquare(a);
@@ -6992,14 +7100,14 @@ void gen465(stack *Stack)
// Solve the linear equation ax=b by LU decomposition, returning the
// solution x, where a is an n x n matrix and b is an array of length n.
// If no solution exists, return an empty array.
-#line 4918 "runtime.in"
+#line 5016 "runtime.in"
// realarray* solve(realarray2 *a, realarray *b, bool warn=true);
-void gen466(stack *Stack)
+void gen467(stack *Stack)
{
bool warn=vm::pop<bool>(Stack,true);
realarray * b=vm::pop<realarray *>(Stack);
realarray2 * a=vm::pop<realarray2 *>(Stack);
-#line 4919 "runtime.in"
+#line 5017 "runtime.in"
size_t n=checkArray(a);
if(n == 0) {Stack->push<realarray*>(new array(0)); return;}
@@ -7049,14 +7157,14 @@ void gen466(stack *Stack)
// Solve the linear equation ax=b by LU decomposition, returning the
// solution x, where a is an n x n matrix and b is an n x m matrix.
// If no solution exists, return an empty array.
-#line 4969 "runtime.in"
+#line 5067 "runtime.in"
// realarray2* solve(realarray2 *a, realarray2 *b, bool warn=true);
-void gen467(stack *Stack)
+void gen468(stack *Stack)
{
bool warn=vm::pop<bool>(Stack,true);
realarray2 * b=vm::pop<realarray2 *>(Stack);
realarray2 * a=vm::pop<realarray2 *>(Stack);
-#line 4970 "runtime.in"
+#line 5068 "runtime.in"
size_t n=checkArray(a);
if(n == 0) {Stack->push<realarray2*>(new array(0)); return;}
@@ -7117,12 +7225,12 @@ void gen467(stack *Stack)
}
// Compute the determinant of an n x n matrix.
-#line 5031 "runtime.in"
+#line 5129 "runtime.in"
// real determinant(realarray2 *a);
-void gen468(stack *Stack)
+void gen469(stack *Stack)
{
realarray2 * a=vm::pop<realarray2 *>(Stack);
-#line 5032 "runtime.in"
+#line 5130 "runtime.in"
real *A=copyArray2C(a);
size_t n=checkArray(a);
@@ -7136,13 +7244,13 @@ void gen468(stack *Stack)
{Stack->push<real>(det); return;}
}
-#line 5046 "runtime.in"
+#line 5144 "runtime.in"
// realarray* *(realarray2 *a, realarray *b);
-void gen469(stack *Stack)
+void gen470(stack *Stack)
{
realarray * b=vm::pop<realarray *>(Stack);
realarray2 * a=vm::pop<realarray2 *>(Stack);
-#line 5047 "runtime.in"
+#line 5145 "runtime.in"
size_t n=checkArray(a);
size_t m=checkArray(b);
array *c=new array(n);
@@ -7159,13 +7267,13 @@ void gen469(stack *Stack)
{Stack->push<realarray*>(c); return;}
}
-#line 5064 "runtime.in"
+#line 5162 "runtime.in"
// realarray2* *(realarray2 *a, realarray2 *b);
-void gen470(stack *Stack)
+void gen471(stack *Stack)
{
realarray2 * b=vm::pop<realarray2 *>(Stack);
realarray2 * a=vm::pop<realarray2 *>(Stack);
-#line 5065 "runtime.in"
+#line 5163 "runtime.in"
size_t n=checkArray(a);
size_t nb=checkArray(b);
@@ -7199,23 +7307,23 @@ void gen470(stack *Stack)
{Stack->push<realarray2*>(c); return;}
}
-#line 5099 "runtime.in"
+#line 5197 "runtime.in"
// triple *(realarray2 *t, triple v);
-void gen471(stack *Stack)
+void gen472(stack *Stack)
{
triple v=vm::pop<triple>(Stack);
realarray2 * t=vm::pop<realarray2 *>(Stack);
-#line 5100 "runtime.in"
+#line 5198 "runtime.in"
{Stack->push<triple>(*t*v); return;}
}
-#line 5104 "runtime.in"
+#line 5202 "runtime.in"
// pair project(triple v, realarray2 *t);
-void gen472(stack *Stack)
+void gen473(stack *Stack)
{
realarray2 * t=vm::pop<realarray2 *>(Stack);
triple v=vm::pop<triple>(Stack);
-#line 5105 "runtime.in"
+#line 5203 "runtime.in"
size_t n=checkArray(t);
if(n != 4) error(incommensurate);
array *t0=read<array*>(t,0);
@@ -7240,13 +7348,13 @@ void gen472(stack *Stack)
}
// Compute the dot product of vectors a and b.
-#line 5130 "runtime.in"
+#line 5228 "runtime.in"
// real dot(realarray *a, realarray *b);
-void gen473(stack *Stack)
+void gen474(stack *Stack)
{
realarray * b=vm::pop<realarray *>(Stack);
realarray * a=vm::pop<realarray *>(Stack);
-#line 5131 "runtime.in"
+#line 5229 "runtime.in"
size_t n=checkArrays(a,b);
real sum=0.0;
for(size_t i=0; i < n; ++i)
@@ -7261,15 +7369,15 @@ void gen473(stack *Stack)
// [ a[2] b[2] c[2] ]
// [ ... ]
// [ c[n-1] a[n-1] b[n-1] ]
-#line 5146 "runtime.in"
+#line 5244 "runtime.in"
// realarray* tridiagonal(realarray *a, realarray *b, realarray *c, realarray *f);
-void gen474(stack *Stack)
+void gen475(stack *Stack)
{
realarray * f=vm::pop<realarray *>(Stack);
realarray * c=vm::pop<realarray *>(Stack);
realarray * b=vm::pop<realarray *>(Stack);
realarray * a=vm::pop<realarray *>(Stack);
-#line 5147 "runtime.in"
+#line 5245 "runtime.in"
size_t n=checkArrays(a,b);
checkEqual(n,checkArray(c));
checkEqual(n,checkArray(f));
@@ -7366,16 +7474,16 @@ void gen474(stack *Stack)
}
// Root solve by Newton-Raphson
-#line 5244 "runtime.in"
+#line 5342 "runtime.in"
// real newton(Int iterations=100, callableReal *f, callableReal *fprime, real x, bool verbose=false);
-void gen475(stack *Stack)
+void gen476(stack *Stack)
{
bool verbose=vm::pop<bool>(Stack,false);
real x=vm::pop<real>(Stack);
callableReal * fprime=vm::pop<callableReal *>(Stack);
callableReal * f=vm::pop<callableReal *>(Stack);
Int iterations=vm::pop<Int>(Stack,100);
-#line 5246 "runtime.in"
+#line 5344 "runtime.in"
static const real fuzz=1000.0*DBL_EPSILON;
Int i=0;
size_t oldPrec=0;
@@ -7421,9 +7529,9 @@ void gen475(stack *Stack)
// Root solve by Newton-Raphson bisection
// cf. routine rtsafe (Press et al., Numerical Recipes, 1991).
-#line 5292 "runtime.in"
+#line 5390 "runtime.in"
// real newton(Int iterations=100, callableReal *f, callableReal *fprime, real x1, real x2, bool verbose=false);
-void gen476(stack *Stack)
+void gen477(stack *Stack)
{
bool verbose=vm::pop<bool>(Stack,false);
real x2=vm::pop<real>(Stack);
@@ -7431,7 +7539,7 @@ void gen476(stack *Stack)
callableReal * fprime=vm::pop<callableReal *>(Stack);
callableReal * f=vm::pop<callableReal *>(Stack);
Int iterations=vm::pop<Int>(Stack,100);
-#line 5294 "runtime.in"
+#line 5392 "runtime.in"
static const real fuzz=1000.0*DBL_EPSILON;
size_t oldPrec=0;
if(verbose)
@@ -7509,16 +7617,16 @@ void gen476(stack *Stack)
{Stack->push<real>((j == iterations) ? DBL_MAX : x); return;}
}
-#line 5372 "runtime.in"
+#line 5470 "runtime.in"
// real simpson(callableReal *f, real a, real b, real acc=DBL_EPSILON, real dxmax=0);
-void gen477(stack *Stack)
+void gen478(stack *Stack)
{
real dxmax=vm::pop<real>(Stack,0);
real acc=vm::pop<real>(Stack,DBL_EPSILON);
real b=vm::pop<real>(Stack);
real a=vm::pop<real>(Stack);
callableReal * f=vm::pop<callableReal *>(Stack);
-#line 5374 "runtime.in"
+#line 5472 "runtime.in"
real integral;
if(dxmax == 0) dxmax=b-a;
Func=f;
@@ -7529,12 +7637,12 @@ void gen477(stack *Stack)
}
// Compute the fast Fourier transform of a pair array
-#line 5385 "runtime.in"
+#line 5483 "runtime.in"
void pairArrayFFT(stack *Stack)
{
Int sign=vm::pop<Int>(Stack,1);
pairarray * a=vm::pop<pairarray *>(Stack);
-#line 5386 "runtime.in"
+#line 5484 "runtime.in"
unsigned n=(unsigned) checkArray(a);
#ifdef HAVE_LIBFFTW3
array *c=new array(n);
@@ -7562,12 +7670,12 @@ void pairArrayFFT(stack *Stack)
{Stack->push<pairarray*>(c); return;}
}
-#line 5414 "runtime.in"
+#line 5512 "runtime.in"
// Intarray2* triangulate(pairarray *z);
-void gen479(stack *Stack)
+void gen480(stack *Stack)
{
pairarray * z=vm::pop<pairarray *>(Stack);
-#line 5415 "runtime.in"
+#line 5513 "runtime.in"
size_t nv=checkArray(z);
// Call robust version of Gilles Dumoulin's port of Paul Bourke's
// triangulation code.
@@ -7603,55 +7711,55 @@ void gen479(stack *Stack)
// File operations
-#line 5451 "runtime.in"
+#line 5549 "runtime.in"
// bool ==(file *a, file *b);
-void gen480(stack *Stack)
+void gen481(stack *Stack)
{
file * b=vm::pop<file *>(Stack);
file * a=vm::pop<file *>(Stack);
-#line 5452 "runtime.in"
+#line 5550 "runtime.in"
{Stack->push<bool>(a == b); return;}
}
-#line 5457 "runtime.in"
+#line 5555 "runtime.in"
// bool !=(file *a, file *b);
-void gen481(stack *Stack)
+void gen482(stack *Stack)
{
file * b=vm::pop<file *>(Stack);
file * a=vm::pop<file *>(Stack);
-#line 5458 "runtime.in"
+#line 5556 "runtime.in"
{Stack->push<bool>(a != b); return;}
}
-#line 5462 "runtime.in"
+#line 5560 "runtime.in"
void nullFile(stack *Stack)
{
-#line 5463 "runtime.in"
+#line 5561 "runtime.in"
{Stack->push<file*>(&camp::nullfile); return;}
}
-#line 5467 "runtime.in"
+#line 5565 "runtime.in"
// file* input(string name, bool check=true, string comment=commentchar);
-void gen483(stack *Stack)
+void gen484(stack *Stack)
{
string comment=vm::pop<string>(Stack,commentchar);
bool check=vm::pop<bool>(Stack,true);
string name=vm::pop<string>(Stack);
-#line 5468 "runtime.in"
+#line 5566 "runtime.in"
char c=comment.empty() ? (char) 0 : comment[0];
file *f=new ifile(name,c,check);
f->open();
{Stack->push<file*>(f); return;}
}
-#line 5475 "runtime.in"
+#line 5573 "runtime.in"
// file* output(string name, bool update=false, string comment=commentchar);
-void gen484(stack *Stack)
+void gen485(stack *Stack)
{
string comment=vm::pop<string>(Stack,commentchar);
bool update=vm::pop<bool>(Stack,false);
string name=vm::pop<string>(Stack);
-#line 5476 "runtime.in"
+#line 5574 "runtime.in"
file *f;
if(update) {
char c=comment.empty() ? (char) 0 : comment[0];
@@ -7662,13 +7770,13 @@ void gen484(stack *Stack)
{Stack->push<file*>(f); return;}
}
-#line 5487 "runtime.in"
+#line 5585 "runtime.in"
// file* xinput(string name, bool check=true);
-void gen485(stack *Stack)
+void gen486(stack *Stack)
{
bool check=vm::pop<bool>(Stack,true);
string name=vm::pop<string>(Stack);
-#line 5488 "runtime.in"
+#line 5586 "runtime.in"
#ifdef HAVE_RPC_RPC_H
file *f=new ixfile(name,check);
f->open();
@@ -7681,13 +7789,13 @@ void gen485(stack *Stack)
#endif
}
-#line 5501 "runtime.in"
+#line 5599 "runtime.in"
// file* xoutput(string name, bool update=false);
-void gen486(stack *Stack)
+void gen487(stack *Stack)
{
bool update=vm::pop<bool>(Stack,false);
string name=vm::pop<string>(Stack);
-#line 5502 "runtime.in"
+#line 5600 "runtime.in"
#ifdef HAVE_RPC_RPC_H
file *f;
if(update)
@@ -7704,25 +7812,25 @@ void gen486(stack *Stack)
#endif
}
-#line 5519 "runtime.in"
+#line 5617 "runtime.in"
// file* binput(string name, bool check=true);
-void gen487(stack *Stack)
+void gen488(stack *Stack)
{
bool check=vm::pop<bool>(Stack,true);
string name=vm::pop<string>(Stack);
-#line 5520 "runtime.in"
+#line 5618 "runtime.in"
file *f=new ibfile(name,check);
f->open();
{Stack->push<file*>(f); return;}
}
-#line 5526 "runtime.in"
+#line 5624 "runtime.in"
// file* boutput(string name, bool update=false);
-void gen488(stack *Stack)
+void gen489(stack *Stack)
{
bool update=vm::pop<bool>(Stack,false);
string name=vm::pop<string>(Stack);
-#line 5527 "runtime.in"
+#line 5625 "runtime.in"
file *f;
if(update) f=new iobfile(name);
else f=new obfile(name);
@@ -7731,77 +7839,77 @@ void gen488(stack *Stack)
{Stack->push<file*>(f); return;}
}
-#line 5536 "runtime.in"
+#line 5634 "runtime.in"
// bool eof(file *File);
-void gen489(stack *Stack)
+void gen490(stack *Stack)
{
file * File=vm::pop<file *>(Stack);
-#line 5537 "runtime.in"
+#line 5635 "runtime.in"
{Stack->push<bool>(File->eof()); return;}
}
-#line 5541 "runtime.in"
+#line 5639 "runtime.in"
// bool eol(file *File);
-void gen490(stack *Stack)
+void gen491(stack *Stack)
{
file * File=vm::pop<file *>(Stack);
-#line 5542 "runtime.in"
+#line 5640 "runtime.in"
{Stack->push<bool>(File->eol()); return;}
}
-#line 5546 "runtime.in"
+#line 5644 "runtime.in"
// bool error(file *File);
-void gen491(stack *Stack)
+void gen492(stack *Stack)
{
file * File=vm::pop<file *>(Stack);
-#line 5547 "runtime.in"
+#line 5645 "runtime.in"
{Stack->push<bool>(File->error()); return;}
}
-#line 5551 "runtime.in"
+#line 5649 "runtime.in"
// void clear(file *File);
-void gen492(stack *Stack)
+void gen493(stack *Stack)
{
file * File=vm::pop<file *>(Stack);
-#line 5552 "runtime.in"
+#line 5650 "runtime.in"
File->clear();
}
-#line 5556 "runtime.in"
+#line 5654 "runtime.in"
// void close(file *File);
-void gen493(stack *Stack)
+void gen494(stack *Stack)
{
file * File=vm::pop<file *>(Stack);
-#line 5557 "runtime.in"
+#line 5655 "runtime.in"
File->close();
}
-#line 5561 "runtime.in"
+#line 5659 "runtime.in"
// Int precision(file *File=NULL, Int digits=0);
-void gen494(stack *Stack)
+void gen495(stack *Stack)
{
Int digits=vm::pop<Int>(Stack,0);
file * File=vm::pop<file *>(Stack,NULL);
-#line 5562 "runtime.in"
+#line 5660 "runtime.in"
if(File == 0) File=&camp::Stdout;
{Stack->push<Int>(File->precision(digits)); return;}
}
-#line 5567 "runtime.in"
+#line 5665 "runtime.in"
// void flush(file *File);
-void gen495(stack *Stack)
+void gen496(stack *Stack)
{
file * File=vm::pop<file *>(Stack);
-#line 5568 "runtime.in"
+#line 5666 "runtime.in"
File->flush();
}
-#line 5572 "runtime.in"
+#line 5670 "runtime.in"
// string getc(file *File);
-void gen496(stack *Stack)
+void gen497(stack *Stack)
{
file * File=vm::pop<file *>(Stack);
-#line 5573 "runtime.in"
+#line 5671 "runtime.in"
char c=0;
if(File->isOpen()) File->read(c);
static char str[1];
@@ -7809,189 +7917,189 @@ void gen496(stack *Stack)
{Stack->push<string>(string(str)); return;}
}
-#line 5581 "runtime.in"
+#line 5679 "runtime.in"
// Int tell(file *File);
-void gen497(stack *Stack)
+void gen498(stack *Stack)
{
file * File=vm::pop<file *>(Stack);
-#line 5582 "runtime.in"
+#line 5680 "runtime.in"
{Stack->push<Int>(File->tell()); return;}
}
-#line 5586 "runtime.in"
+#line 5684 "runtime.in"
// void seek(file *File, Int pos);
-void gen498(stack *Stack)
+void gen499(stack *Stack)
{
Int pos=vm::pop<Int>(Stack);
file * File=vm::pop<file *>(Stack);
-#line 5587 "runtime.in"
+#line 5685 "runtime.in"
File->seek(pos,pos >= 0);
}
-#line 5591 "runtime.in"
+#line 5689 "runtime.in"
// void seekeof(file *File);
-void gen499(stack *Stack)
+void gen500(stack *Stack)
{
file * File=vm::pop<file *>(Stack);
-#line 5592 "runtime.in"
+#line 5690 "runtime.in"
File->seek(0,false);
}
// Set file dimensions
-#line 5597 "runtime.in"
+#line 5695 "runtime.in"
// file* dimension(file *File, Int nx);
-void gen500(stack *Stack)
+void gen501(stack *Stack)
{
Int nx=vm::pop<Int>(Stack);
file * File=vm::pop<file *>(Stack);
-#line 5598 "runtime.in"
+#line 5696 "runtime.in"
File->dimension(nx);
{Stack->push<file*>(File); return;}
}
-#line 5603 "runtime.in"
+#line 5701 "runtime.in"
// file* dimension(file *File, Int nx, Int ny);
-void gen501(stack *Stack)
+void gen502(stack *Stack)
{
Int ny=vm::pop<Int>(Stack);
Int nx=vm::pop<Int>(Stack);
file * File=vm::pop<file *>(Stack);
-#line 5604 "runtime.in"
+#line 5702 "runtime.in"
File->dimension(nx,ny);
{Stack->push<file*>(File); return;}
}
-#line 5609 "runtime.in"
+#line 5707 "runtime.in"
// file* dimension(file *File, Int nx, Int ny, Int nz);
-void gen502(stack *Stack)
+void gen503(stack *Stack)
{
Int nz=vm::pop<Int>(Stack);
Int ny=vm::pop<Int>(Stack);
Int nx=vm::pop<Int>(Stack);
file * File=vm::pop<file *>(Stack);
-#line 5610 "runtime.in"
+#line 5708 "runtime.in"
File->dimension(nx,ny,nz);
{Stack->push<file*>(File); return;}
}
// Set file to read comma-separated values
-#line 5616 "runtime.in"
+#line 5714 "runtime.in"
// file* csv(file *File, bool b=true);
-void gen503(stack *Stack)
+void gen504(stack *Stack)
{
bool b=vm::pop<bool>(Stack,true);
file * File=vm::pop<file *>(Stack);
-#line 5617 "runtime.in"
+#line 5715 "runtime.in"
File->CSVMode(b);
{Stack->push<file*>(File); return;}
}
// Set file to read whitespace-separated values
-#line 5623 "runtime.in"
+#line 5721 "runtime.in"
// file* word(file *File, bool b=true);
-void gen504(stack *Stack)
+void gen505(stack *Stack)
{
bool b=vm::pop<bool>(Stack,true);
file * File=vm::pop<file *>(Stack);
-#line 5624 "runtime.in"
+#line 5722 "runtime.in"
File->WordMode(b);
{Stack->push<file*>(File); return;}
}
// Set file to read arrays in line-at-a-time mode
-#line 5630 "runtime.in"
+#line 5728 "runtime.in"
// file* line(file *File, bool b=true);
-void gen505(stack *Stack)
+void gen506(stack *Stack)
{
bool b=vm::pop<bool>(Stack,true);
file * File=vm::pop<file *>(Stack);
-#line 5631 "runtime.in"
+#line 5729 "runtime.in"
File->LineMode(b);
{Stack->push<file*>(File); return;}
}
// Set file to read/write single-precision XDR values.
-#line 5637 "runtime.in"
+#line 5735 "runtime.in"
// file* single(file *File, bool b=true);
-void gen506(stack *Stack)
+void gen507(stack *Stack)
{
bool b=vm::pop<bool>(Stack,true);
file * File=vm::pop<file *>(Stack);
-#line 5638 "runtime.in"
+#line 5736 "runtime.in"
File->SingleReal(b);
File->SingleInt(b);
{Stack->push<file*>(File); return;}
}
// Set file to read/write single-precision real XDR values.
-#line 5645 "runtime.in"
+#line 5743 "runtime.in"
// file* single(file *File, real x, bool b=true);
-void gen507(stack *Stack)
+void gen508(stack *Stack)
{
bool b=vm::pop<bool>(Stack,true);
real x=vm::pop<real>(Stack);
file * File=vm::pop<file *>(Stack);
-#line 5646 "runtime.in"
+#line 5744 "runtime.in"
File->SingleReal(b);
unused(&x);
{Stack->push<file*>(File); return;}
}
// Set file to read/write single-precision int XDR values.
-#line 5653 "runtime.in"
+#line 5751 "runtime.in"
// file* single(file *File, Int x, bool b=true);
-void gen508(stack *Stack)
+void gen509(stack *Stack)
{
bool b=vm::pop<bool>(Stack,true);
Int x=vm::pop<Int>(Stack);
file * File=vm::pop<file *>(Stack);
-#line 5654 "runtime.in"
+#line 5752 "runtime.in"
File->SingleInt(b);
unused(&x);
{Stack->push<file*>(File); return;}
}
// Set file to read an array1 (1 Int size followed by a 1d array)
-#line 5661 "runtime.in"
+#line 5759 "runtime.in"
// file* read1(file *File);
-void gen509(stack *Stack)
+void gen510(stack *Stack)
{
file * File=vm::pop<file *>(Stack);
-#line 5662 "runtime.in"
+#line 5760 "runtime.in"
File->dimension(-2);
{Stack->push<file*>(File); return;}
}
// Set file to read an array2 (2 Int sizes followed by a 2d array)
-#line 5668 "runtime.in"
+#line 5766 "runtime.in"
// file* read2(file *File);
-void gen510(stack *Stack)
+void gen511(stack *Stack)
{
file * File=vm::pop<file *>(Stack);
-#line 5669 "runtime.in"
+#line 5767 "runtime.in"
File->dimension(-2,-2);
{Stack->push<file*>(File); return;}
}
// Set file to read an array3 (3 Int sizes followed by a 3d array)
-#line 5675 "runtime.in"
+#line 5773 "runtime.in"
// file* read3(file *File);
-void gen511(stack *Stack)
+void gen512(stack *Stack)
{
file * File=vm::pop<file *>(Stack);
-#line 5676 "runtime.in"
+#line 5774 "runtime.in"
File->dimension(-2,-2,-2);
{Stack->push<file*>(File); return;}
}
// Return the last n lines of the history named name.
-#line 5682 "runtime.in"
+#line 5780 "runtime.in"
// stringarray* history(string name, Int n=1);
-void gen512(stack *Stack)
+void gen513(stack *Stack)
{
Int n=vm::pop<Int>(Stack,1);
string name=vm::pop<string>(Stack);
-#line 5683 "runtime.in"
+#line 5781 "runtime.in"
#if defined(HAVE_LIBREADLINE) && defined(HAVE_LIBCURSES)
bool newhistory=historyMap.find(name) == historyMap.end();
@@ -8023,12 +8131,12 @@ void gen512(stack *Stack)
}
// Return the last n lines of the interactive history.
-#line 5715 "runtime.in"
+#line 5813 "runtime.in"
// stringarray* history(Int n=0);
-void gen513(stack *Stack)
+void gen514(stack *Stack)
{
Int n=vm::pop<Int>(Stack,0);
-#line 5716 "runtime.in"
+#line 5814 "runtime.in"
#if defined(HAVE_LIBREADLINE) && defined(HAVE_LIBCURSES)
{Stack->push<stringarray*>(get_history(n)); return;}
#else
@@ -8039,14 +8147,14 @@ void gen513(stack *Stack)
// Prompt for a string using prompt, the GNU readline library, and a
// local history named name.
-#line 5727 "runtime.in"
+#line 5825 "runtime.in"
// string readline(string prompt=emptystring, string name=emptystring, bool tabcompletion=false);
-void gen514(stack *Stack)
+void gen515(stack *Stack)
{
bool tabcompletion=vm::pop<bool>(Stack,false);
string name=vm::pop<string>(Stack,emptystring);
string prompt=vm::pop<string>(Stack,emptystring);
-#line 5729 "runtime.in"
+#line 5827 "runtime.in"
if(!isatty(STDIN_FILENO))
{Stack->push<string>(emptystring); return;}
#if defined(HAVE_LIBREADLINE) && defined(HAVE_LIBCURSES)
@@ -8088,14 +8196,14 @@ void gen514(stack *Stack)
// Save a string in a local history named name.
// If store=true, store the local history in the file historyfilename(name).
-#line 5771 "runtime.in"
+#line 5869 "runtime.in"
// void saveline(string name, string value, bool store=true);
-void gen515(stack *Stack)
+void gen516(stack *Stack)
{
bool store=vm::pop<bool>(Stack,true);
string value=vm::pop<string>(Stack);
string name=vm::pop<string>(Stack);
-#line 5772 "runtime.in"
+#line 5870 "runtime.in"
#if defined(HAVE_LIBREADLINE) && defined(HAVE_LIBCURSES)
store_history(&history_save);
bool newhistory=historyMap.find(name) == historyMap.end();
@@ -8122,11 +8230,11 @@ void gen515(stack *Stack)
#endif
}
-#line 5799 "runtime.in"
+#line 5897 "runtime.in"
// void generate_random_backtrace();
-void gen516(stack *)
+void gen517(stack *)
{
-#line 5800 "runtime.in"
+#line 5898 "runtime.in"
#if defined(USEGC) && defined(GC_DEBUG) && defined(GC_BACKTRACE)
GC_generate_random_backtrace();
#else
@@ -8134,12 +8242,12 @@ void gen516(stack *)
#endif
}
-#line 5808 "runtime.in"
+#line 5906 "runtime.in"
// void print_random_addresses(Int n=1);
-void gen517(stack *Stack)
+void gen518(stack *Stack)
{
Int n=vm::pop<Int>(Stack,1);
-#line 5809 "runtime.in"
+#line 5907 "runtime.in"
#if defined(USEGC) && defined(GC_DEBUG) && defined(GC_BACKTRACE)
GC_gcollect();
for (Int i=0; i < n; ++i)
@@ -8156,872 +8264,874 @@ namespace trans {
void gen_base_venv(venv &ve)
{
-#line 1074 "runtime.in"
+#line 1093 "runtime.in"
addFunc(ve, run::gen8, primBoolean(), "!", formal(primBoolean(), "b", false, false));
-#line 1102 "runtime.in"
+#line 1121 "runtime.in"
addFunc(ve, run::gen13, primInt(), "AND", formal(primInt(), "a", false, false), formal(primInt(), "b", false, false));
-#line 1110 "runtime.in"
+#line 1129 "runtime.in"
addFunc(ve, run::gen14, primInt(), "OR", formal(primInt(), "a", false, false), formal(primInt(), "b", false, false));
-#line 1115 "runtime.in"
+#line 1134 "runtime.in"
addFunc(ve, run::gen15, primInt(), "XOR", formal(primInt(), "a", false, false), formal(primInt(), "b", false, false));
-#line 1120 "runtime.in"
+#line 1139 "runtime.in"
addFunc(ve, run::gen16, primInt(), "NOT", formal(primInt(), "a", false, false));
-#line 1151 "runtime.in"
+#line 1170 "runtime.in"
addFunc(ve, run::gen21, primBoolean(), "empty", formal(primPicture(), "f", false, false));
-#line 1156 "runtime.in"
+#line 1175 "runtime.in"
addFunc(ve, run::gen22, primVoid(), "erase", formal(primPicture(), "f", false, false));
-#line 1161 "runtime.in"
+#line 1180 "runtime.in"
addFunc(ve, run::gen23, primPair(), "min", formal(primPicture(), "f", false, false));
-#line 1166 "runtime.in"
+#line 1185 "runtime.in"
addFunc(ve, run::gen24, primPair(), "max", formal(primPicture(), "f", false, false));
-#line 1171 "runtime.in"
+#line 1190 "runtime.in"
addFunc(ve, run::gen25, primVoid(), "label", formal(primPicture(), "f", false, false), formal(primString(), "s", false, false), formal(primString(), "size", false, false), formal(primTransform(), "t", false, false), formal(primPair(), "position", false, false), formal(primPair(), "align", false, false), formal(primPen(), "p", false, false));
-#line 1177 "runtime.in"
+#line 1196 "runtime.in"
addFunc(ve, run::gen26, primBoolean(), "labels", formal(primPicture(), "f", false, false));
-#line 1182 "runtime.in"
+#line 1201 "runtime.in"
addFunc(ve, run::gen27, pathArray() , "_texpath", formal(primString(), "s", false, false), formal(primPen(), "p", true, false));
-#line 1249 "runtime.in"
- addFunc(ve, run::gen28, pathArray() , "_strokepath", formal(primPath(), "g", false, false), formal(primPen(), "p", true, false));
-#line 1273 "runtime.in"
- addFunc(ve, run::gen29, primVoid(), "_draw", formal(primPicture(), "f", false, false), formal(primPath(), "g", false, false), formal(primPen(), "p", false, false));
-#line 1278 "runtime.in"
- addFunc(ve, run::gen30, primVoid(), "fill", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primPen(), "p", true, false), formal(primBoolean(), "copy", true, false));
-#line 1284 "runtime.in"
- addFunc(ve, run::gen31, primVoid(), "latticeshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(penArray2() , "p", false, false), formal(primBoolean(), "copy", true, false));
-#line 1291 "runtime.in"
- addFunc(ve, run::gen32, primVoid(), "axialshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "pena", false, false), formal(primPair(), "a", false, false), formal(primPen(), "penb", false, false), formal(primPair(), "b", false, false), formal(primBoolean(), "copy", true, false));
-#line 1298 "runtime.in"
- addFunc(ve, run::gen33, primVoid(), "radialshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "pena", false, false), formal(primPair(), "a", false, false), formal(primReal(), "ra", false, false), formal(primPen(), "penb", false, false), formal(primPair(), "b", false, false), formal(primReal(), "rb", false, false), formal(primBoolean(), "copy", true, false));
-#line 1305 "runtime.in"
- addFunc(ve, run::gen34, primVoid(), "gouraudshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(penArray() , "p", false, false), formal(pairArray(), "z", false, false), formal(IntArray(), "edges", false, false), formal(primBoolean(), "copy", true, false));
-#line 1316 "runtime.in"
- addFunc(ve, run::gen35, primVoid(), "gouraudshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(penArray() , "p", false, false), formal(IntArray(), "edges", false, false), formal(primBoolean(), "copy", true, false));
-#line 1340 "runtime.in"
- addFunc(ve, run::gen36, primVoid(), "tensorshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(penArray2() , "p", false, false), formal(pathArray() , "b", true, false), formal(pairArray2(), "z", true, false), formal(primBoolean(), "copy", true, false));
-#line 1355 "runtime.in"
- addFunc(ve, run::gen37, primVoid(), "functionshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(primString() , "shader", true, false), formal(primBoolean(), "copy", true, false));
-#line 1363 "runtime.in"
- addFunc(ve, run::gen38, primVoid(), "clip", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(primBoolean(), "copy", true, false));
-#line 1373 "runtime.in"
- addFunc(ve, run::gen39, primVoid(), "beginclip", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(primBoolean(), "copy", true, false));
-#line 1380 "runtime.in"
- addFunc(ve, run::gen40, primVoid(), "endclip", formal(primPicture(), "f", false, false));
+#line 1268 "runtime.in"
+ addFunc(ve, run::gen28, pathArray() , "textpath", formal(primString(), "s", false, false), formal(primPen(), "p", true, false));
+#line 1343 "runtime.in"
+ addFunc(ve, run::gen29, pathArray() , "_strokepath", formal(primPath(), "g", false, false), formal(primPen(), "p", true, false));
+#line 1367 "runtime.in"
+ addFunc(ve, run::gen30, primVoid(), "_draw", formal(primPicture(), "f", false, false), formal(primPath(), "g", false, false), formal(primPen(), "p", false, false));
+#line 1372 "runtime.in"
+ addFunc(ve, run::gen31, primVoid(), "fill", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primPen(), "p", true, false), formal(primBoolean(), "copy", true, false));
+#line 1378 "runtime.in"
+ addFunc(ve, run::gen32, primVoid(), "latticeshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(penArray2() , "p", false, false), formal(primBoolean(), "copy", true, false));
#line 1385 "runtime.in"
- addFunc(ve, run::gen41, primVoid(), "gsave", formal(primPicture(), "f", false, false));
-#line 1390 "runtime.in"
- addFunc(ve, run::gen42, primVoid(), "grestore", formal(primPicture(), "f", false, false));
-#line 1395 "runtime.in"
- addFunc(ve, run::gen43, primVoid(), "begingroup", formal(primPicture(), "f", false, false));
-#line 1400 "runtime.in"
- addFunc(ve, run::gen44, primVoid(), "endgroup", formal(primPicture(), "f", false, false));
-#line 1405 "runtime.in"
- addFunc(ve, run::gen45, primVoid(), "add", formal(primPicture(), "dest", false, false), formal(primPicture(), "src", false, false));
+ addFunc(ve, run::gen33, primVoid(), "axialshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "pena", false, false), formal(primPair(), "a", false, false), formal(primPen(), "penb", false, false), formal(primPair(), "b", false, false), formal(primBoolean(), "copy", true, false));
+#line 1392 "runtime.in"
+ addFunc(ve, run::gen34, primVoid(), "radialshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "pena", false, false), formal(primPair(), "a", false, false), formal(primReal(), "ra", false, false), formal(primPen(), "penb", false, false), formal(primPair(), "b", false, false), formal(primReal(), "rb", false, false), formal(primBoolean(), "copy", true, false));
+#line 1399 "runtime.in"
+ addFunc(ve, run::gen35, primVoid(), "gouraudshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(penArray() , "p", false, false), formal(pairArray(), "z", false, false), formal(IntArray(), "edges", false, false), formal(primBoolean(), "copy", true, false));
#line 1410 "runtime.in"
- addFunc(ve, run::gen46, primVoid(), "prepend", formal(primPicture(), "dest", false, false), formal(primPicture(), "src", false, false));
-#line 1415 "runtime.in"
- addFunc(ve, run::gen47, primVoid(), "postscript", formal(primPicture(), "f", false, false), formal(primString() , "s", false, false));
-#line 1420 "runtime.in"
- addFunc(ve, run::gen48, primVoid(), "tex", formal(primPicture(), "f", false, false), formal(primString() , "s", false, false));
-#line 1425 "runtime.in"
- addFunc(ve, run::gen49, primVoid(), "postscript", formal(primPicture(), "f", false, false), formal(primString() , "s", false, false), formal(primPair(), "min", false, false), formal(primPair(), "max", false, false));
-#line 1430 "runtime.in"
- addFunc(ve, run::gen50, primVoid(), "tex", formal(primPicture(), "f", false, false), formal(primString() , "s", false, false), formal(primPair(), "min", false, false), formal(primPair(), "max", false, false));
-#line 1435 "runtime.in"
- addFunc(ve, run::gen51, primVoid(), "texpreamble", formal(primString() , "s", false, false));
-#line 1443 "runtime.in"
- addFunc(ve, run::gen52, primVoid(), "deletepreamble");
-#line 1450 "runtime.in"
- addFunc(ve, run::gen53, primVoid(), "_labelpath", formal(primPicture(), "f", false, false), formal(primString() , "s", false, false), formal(primString() , "size", false, false), formal(primPath(), "g", false, false), formal(primString() , "justify", false, false), formal(primPair(), "offset", false, false), formal(primPen(), "p", false, false));
-#line 1456 "runtime.in"
- addFunc(ve, run::gen54, primVoid(), "texreset");
-#line 1464 "runtime.in"
- addFunc(ve, run::gen55, primVoid(), "layer", formal(primPicture(), "f", false, false));
-#line 1469 "runtime.in"
- addFunc(ve, run::gen56, primVoid(), "newpage", formal(primPicture(), "f", false, false));
+ addFunc(ve, run::gen36, primVoid(), "gouraudshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(penArray() , "p", false, false), formal(IntArray(), "edges", false, false), formal(primBoolean(), "copy", true, false));
+#line 1434 "runtime.in"
+ addFunc(ve, run::gen37, primVoid(), "tensorshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(penArray2() , "p", false, false), formal(pathArray() , "b", true, false), formal(pairArray2(), "z", true, false), formal(primBoolean(), "copy", true, false));
+#line 1449 "runtime.in"
+ addFunc(ve, run::gen38, primVoid(), "functionshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(primString() , "shader", true, false), formal(primBoolean(), "copy", true, false));
+#line 1457 "runtime.in"
+ addFunc(ve, run::gen39, primVoid(), "clip", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(primBoolean(), "copy", true, false));
+#line 1467 "runtime.in"
+ addFunc(ve, run::gen40, primVoid(), "beginclip", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(primBoolean(), "copy", true, false));
#line 1474 "runtime.in"
- addFunc(ve, run::gen57, primVoid(), "_image", formal(primPicture(), "f", false, false), formal(realArray2(), "data", false, false), formal(primPair(), "initial", false, false), formal(primPair(), "final", false, false), formal(penArray() , "palette", true, false), formal(primTransform(), "t", true, false), formal(primBoolean(), "copy", true, false), formal(primBoolean(), "antialias", true, false));
+ addFunc(ve, run::gen41, primVoid(), "endclip", formal(primPicture(), "f", false, false));
+#line 1479 "runtime.in"
+ addFunc(ve, run::gen42, primVoid(), "gsave", formal(primPicture(), "f", false, false));
#line 1484 "runtime.in"
- addFunc(ve, run::gen58, primVoid(), "_image", formal(primPicture(), "f", false, false), formal(penArray2() , "data", false, false), formal(primPair(), "initial", false, false), formal(primPair(), "final", false, false), formal(primTransform(), "t", true, false), formal(primBoolean(), "copy", true, false), formal(primBoolean(), "antialias", true, false));
-#line 1491 "runtime.in"
- addFunc(ve, run::gen59, primString() , "nativeformat");
-#line 1496 "runtime.in"
- addFunc(ve, run::gen60, primBoolean(), "latex");
-#line 1501 "runtime.in"
- addFunc(ve, run::gen61, primBoolean(), "pdf");
-#line 1506 "runtime.in"
- addFunc(ve, run::gen62, primVoid(), "shipout", formal(primString() , "prefix", true, false), formal(primPicture(), "f", false, false), formal(primPicture(), "preamble", true, false), formal(primString() , "format", true, false), formal(primBoolean(), "wait", true, false), formal(primBoolean(), "view", true, false), formal(transformFunction(), "xform", false, false));
-#line 1552 "runtime.in"
- addFunc(ve, run::gen63, primVoid(), "shipout3", formal(primString() , "prefix", false, false), formal(primPicture(), "f", false, false), formal(primString() , "format", true, false), formal(primReal(), "width", false, false), formal(primReal(), "height", false, false), formal(primReal(), "angle", false, false), formal(primTriple(), "m", false, false), formal(primTriple(), "m", false, false), formal(realArray2(), "t", false, false), formal(tripleArray(), "lights", false, false), formal(realArray2(), "diffuse", false, false), formal(realArray2(), "ambient", false, false), formal(realArray2(), "specular", false, false), formal(primBoolean(), "viewportlighting", false, false), formal(primBoolean(), "view", true, false));
+ addFunc(ve, run::gen43, primVoid(), "grestore", formal(primPicture(), "f", false, false));
+#line 1489 "runtime.in"
+ addFunc(ve, run::gen44, primVoid(), "begingroup", formal(primPicture(), "f", false, false));
+#line 1494 "runtime.in"
+ addFunc(ve, run::gen45, primVoid(), "endgroup", formal(primPicture(), "f", false, false));
+#line 1499 "runtime.in"
+ addFunc(ve, run::gen46, primVoid(), "add", formal(primPicture(), "dest", false, false), formal(primPicture(), "src", false, false));
+#line 1504 "runtime.in"
+ addFunc(ve, run::gen47, primVoid(), "prepend", formal(primPicture(), "dest", false, false), formal(primPicture(), "src", false, false));
+#line 1509 "runtime.in"
+ addFunc(ve, run::gen48, primVoid(), "postscript", formal(primPicture(), "f", false, false), formal(primString() , "s", false, false));
+#line 1514 "runtime.in"
+ addFunc(ve, run::gen49, primVoid(), "tex", formal(primPicture(), "f", false, false), formal(primString() , "s", false, false));
+#line 1519 "runtime.in"
+ addFunc(ve, run::gen50, primVoid(), "postscript", formal(primPicture(), "f", false, false), formal(primString() , "s", false, false), formal(primPair(), "min", false, false), formal(primPair(), "max", false, false));
+#line 1524 "runtime.in"
+ addFunc(ve, run::gen51, primVoid(), "tex", formal(primPicture(), "f", false, false), formal(primString() , "s", false, false), formal(primPair(), "min", false, false), formal(primPair(), "max", false, false));
+#line 1529 "runtime.in"
+ addFunc(ve, run::gen52, primVoid(), "texpreamble", formal(primString() , "s", false, false));
+#line 1537 "runtime.in"
+ addFunc(ve, run::gen53, primVoid(), "deletepreamble");
+#line 1544 "runtime.in"
+ addFunc(ve, run::gen54, primVoid(), "_labelpath", formal(primPicture(), "f", false, false), formal(primString() , "s", false, false), formal(primString() , "size", false, false), formal(primPath(), "g", false, false), formal(primString() , "justify", false, false), formal(primPair(), "offset", false, false), formal(primPen(), "p", false, false));
+#line 1550 "runtime.in"
+ addFunc(ve, run::gen55, primVoid(), "texreset");
+#line 1558 "runtime.in"
+ addFunc(ve, run::gen56, primVoid(), "layer", formal(primPicture(), "f", false, false));
+#line 1563 "runtime.in"
+ addFunc(ve, run::gen57, primVoid(), "newpage", formal(primPicture(), "f", false, false));
#line 1568 "runtime.in"
- addFunc(ve, run::gen64, primVoid(), "shipout3", formal(primString() , "prefix", false, false), formal(primPicture(), "f", false, false));
-#line 1573 "runtime.in"
- addFunc(ve, run::gen65, primVoid(), "deconstruct", formal(primPicture(), "f", false, false), formal(primPicture(), "preamble", true, false), formal(primReal(), "magnification", true, false), formal(transformFunction(), "xform", false, false));
-#line 1706 "runtime.in"
- addFunc(ve, run::gen66, primVoid(), "purge", formal(primInt(), "divisor", true, false));
-#line 1719 "runtime.in"
- addFunc(ve, run::gen68, primBoolean(), "==", formal(primPen(), "a", false, false), formal(primPen(), "b", false, false));
-#line 1724 "runtime.in"
- addFunc(ve, run::gen69, primBoolean(), "!=", formal(primPen(), "a", false, false), formal(primPen(), "b", false, false));
-#line 1729 "runtime.in"
- addFunc(ve, run::gen70, primPen(), "+", formal(primPen(), "a", false, false), formal(primPen(), "b", false, false));
-#line 1734 "runtime.in"
- addFunc(ve, run::gen71, primPen(), "*", formal(primReal(), "a", false, false), formal(primPen(), "b", false, false));
-#line 1739 "runtime.in"
- addFunc(ve, run::gen72, primPen(), "*", formal(primPen(), "a", false, false), formal(primReal(), "b", false, false));
-#line 1744 "runtime.in"
- addFunc(ve, run::gen73, primPair(), "max", formal(primPen(), "p", false, false));
-#line 1749 "runtime.in"
- addFunc(ve, run::gen74, primPair(), "min", formal(primPen(), "p", false, false));
-#line 1754 "runtime.in"
- addFunc(ve, run::gen75, primVoid(), "resetdefaultpen");
-#line 1760 "runtime.in"
- addFunc(ve, run::gen76, primVoid(), "defaultpen", formal(primPen(), "p", false, false));
-#line 1765 "runtime.in"
- addFunc(ve, run::gen77, primPen(), "defaultpen");
-#line 1770 "runtime.in"
- addFunc(ve, run::gen78, primBoolean(), "invisible", formal(primPen(), "p", false, false));
-#line 1775 "runtime.in"
- addFunc(ve, run::gen79, primPen(), "invisible");
-#line 1780 "runtime.in"
- addFunc(ve, run::gen80, primPen(), "gray", formal(primPen(), "p", false, false));
-#line 1786 "runtime.in"
- addFunc(ve, run::gen81, primPen(), "rgb", formal(primPen(), "p", false, false));
-#line 1792 "runtime.in"
- addFunc(ve, run::gen82, primPen(), "cmyk", formal(primPen(), "p", false, false));
-#line 1798 "runtime.in"
- addFunc(ve, run::gen83, primPen(), "interp", formal(primPen(), "a", false, false), formal(primPen(), "b", false, false), formal(primReal(), "t", false, false));
-#line 1803 "runtime.in"
- addFunc(ve, run::gen84, primPen(), "rgb", formal(primReal(), "r", false, false), formal(primReal(), "g", false, false), formal(primReal(), "b", false, false));
-#line 1808 "runtime.in"
- addFunc(ve, run::gen85, primPen(), "cmyk", formal(primReal(), "c", false, false), formal(primReal(), "m", false, false), formal(primReal(), "y", false, false), formal(primReal(), "k", false, false));
+ addFunc(ve, run::gen58, primVoid(), "_image", formal(primPicture(), "f", false, false), formal(realArray2(), "data", false, false), formal(primPair(), "initial", false, false), formal(primPair(), "final", false, false), formal(penArray() , "palette", true, false), formal(primTransform(), "t", true, false), formal(primBoolean(), "copy", true, false), formal(primBoolean(), "antialias", true, false));
+#line 1578 "runtime.in"
+ addFunc(ve, run::gen59, primVoid(), "_image", formal(primPicture(), "f", false, false), formal(penArray2() , "data", false, false), formal(primPair(), "initial", false, false), formal(primPair(), "final", false, false), formal(primTransform(), "t", true, false), formal(primBoolean(), "copy", true, false), formal(primBoolean(), "antialias", true, false));
+#line 1585 "runtime.in"
+ addFunc(ve, run::gen60, primString() , "nativeformat");
+#line 1590 "runtime.in"
+ addFunc(ve, run::gen61, primBoolean(), "latex");
+#line 1595 "runtime.in"
+ addFunc(ve, run::gen62, primBoolean(), "pdf");
+#line 1600 "runtime.in"
+ addFunc(ve, run::gen63, primVoid(), "shipout", formal(primString() , "prefix", true, false), formal(primPicture(), "f", false, false), formal(primPicture(), "preamble", true, false), formal(primString() , "format", true, false), formal(primBoolean(), "wait", true, false), formal(primBoolean(), "view", true, false), formal(transformFunction(), "xform", false, false));
+#line 1646 "runtime.in"
+ addFunc(ve, run::gen64, primVoid(), "shipout3", formal(primString() , "prefix", false, false), formal(primPicture(), "f", false, false), formal(primString() , "format", true, false), formal(primReal(), "width", false, false), formal(primReal(), "height", false, false), formal(primReal(), "angle", false, false), formal(primTriple(), "m", false, false), formal(primTriple(), "m", false, false), formal(realArray2(), "t", false, false), formal(realArray(), "background", false, false), formal(tripleArray(), "lights", false, false), formal(realArray2(), "diffuse", false, false), formal(realArray2(), "ambient", false, false), formal(realArray2(), "specular", false, false), formal(primBoolean(), "viewportlighting", false, false), formal(primBoolean(), "view", true, false));
+#line 1662 "runtime.in"
+ addFunc(ve, run::gen65, primVoid(), "shipout3", formal(primString() , "prefix", false, false), formal(primPicture(), "f", false, false));
+#line 1667 "runtime.in"
+ addFunc(ve, run::gen66, primVoid(), "deconstruct", formal(primPicture(), "f", false, false), formal(primPicture(), "preamble", true, false), formal(primReal(), "magnification", true, false), formal(transformFunction(), "xform", false, false));
+#line 1800 "runtime.in"
+ addFunc(ve, run::gen67, primVoid(), "purge", formal(primInt(), "divisor", true, false));
#line 1813 "runtime.in"
- addFunc(ve, run::gen86, primPen(), "gray", formal(primReal(), "gray", false, false));
+ addFunc(ve, run::gen69, primBoolean(), "==", formal(primPen(), "a", false, false), formal(primPen(), "b", false, false));
#line 1818 "runtime.in"
- addFunc(ve, run::gen87, realArray(), "colors", formal(primPen(), "p", false, false));
-#line 1846 "runtime.in"
- addFunc(ve, run::gen88, primString() , "colorspace", formal(primPen(), "p", false, false));
-#line 1853 "runtime.in"
- addFunc(ve, run::gen89, primPen(), "pattern", formal(primString(), "s", false, false));
-#line 1858 "runtime.in"
- addFunc(ve, run::gen90, primString() , "pattern", formal(primPen(), "p", false, false));
-#line 1863 "runtime.in"
- addFunc(ve, run::gen91, primPen(), "fillrule", formal(primInt(), "n", false, false));
-#line 1868 "runtime.in"
- addFunc(ve, run::gen92, primInt(), "fillrule", formal(primPen(), "p", false, false));
-#line 1873 "runtime.in"
- addFunc(ve, run::gen93, primPen(), "opacity", formal(primReal(), "opacity", true, false), formal(primString() , "blend", true, false));
-#line 1883 "runtime.in"
- addFunc(ve, run::gen94, primReal(), "opacity", formal(primPen(), "p", false, false));
-#line 1888 "runtime.in"
- addFunc(ve, run::gen95, primString() , "blend", formal(primPen(), "p", false, false));
-#line 1893 "runtime.in"
- addFunc(ve, run::gen96, primPen(), "linetype", formal(primString(), "s", false, false), formal(primReal(), "offset", true, false), formal(primBoolean(), "scale", true, false), formal(primBoolean(), "adjust", true, false));
-#line 1898 "runtime.in"
- addFunc(ve, run::gen97, primString() , "linetype", formal(primPen(), "p", true, false));
-#line 1903 "runtime.in"
- addFunc(ve, run::gen98, primReal(), "offset", formal(primPen(), "p", false, false));
-#line 1908 "runtime.in"
- addFunc(ve, run::gen99, primBoolean(), "scale", formal(primPen(), "p", false, false));
-#line 1913 "runtime.in"
- addFunc(ve, run::gen100, primBoolean(), "adjust", formal(primPen(), "p", false, false));
-#line 1918 "runtime.in"
- addFunc(ve, run::gen101, primPen(), "adjust", formal(primPen(), "p", false, false), formal(primReal(), "arclength", false, false), formal(primBoolean(), "cyclic", false, false));
-#line 1923 "runtime.in"
- addFunc(ve, run::gen102, primPen(), "linecap", formal(primInt(), "n", false, false));
-#line 1928 "runtime.in"
- addFunc(ve, run::gen103, primInt(), "linecap", formal(primPen(), "p", true, false));
-#line 1933 "runtime.in"
- addFunc(ve, run::gen104, primPen(), "linejoin", formal(primInt(), "n", false, false));
-#line 1938 "runtime.in"
- addFunc(ve, run::gen105, primInt(), "linejoin", formal(primPen(), "p", true, false));
-#line 1943 "runtime.in"
- addFunc(ve, run::gen106, primPen(), "miterlimit", formal(primReal(), "x", false, false));
-#line 1948 "runtime.in"
- addFunc(ve, run::gen107, primReal(), "miterlimit", formal(primPen(), "p", true, false));
-#line 1953 "runtime.in"
- addFunc(ve, run::gen108, primPen(), "linewidth", formal(primReal(), "x", false, false));
-#line 1958 "runtime.in"
- addFunc(ve, run::gen109, primReal(), "linewidth", formal(primPen(), "p", true, false));
-#line 1963 "runtime.in"
- addFunc(ve, run::gen110, primPen(), "fontcommand", formal(primString(), "s", false, false));
-#line 1968 "runtime.in"
- addFunc(ve, run::gen111, primString() , "font", formal(primPen(), "p", true, false));
-#line 1973 "runtime.in"
- addFunc(ve, run::gen112, primPen(), "fontsize", formal(primReal(), "size", false, false), formal(primReal(), "lineskip", false, false));
-#line 1979 "runtime.in"
- addFunc(ve, run::gen113, primReal(), "fontsize", formal(primPen(), "p", true, false));
-#line 1984 "runtime.in"
- addFunc(ve, run::gen114, primReal(), "lineskip", formal(primPen(), "p", true, false));
-#line 1989 "runtime.in"
- addFunc(ve, run::gen115, primPen(), "overwrite", formal(primInt(), "n", false, false));
-#line 1995 "runtime.in"
- addFunc(ve, run::gen116, primInt(), "overwrite", formal(primPen(), "p", true, false));
-#line 2000 "runtime.in"
- addFunc(ve, run::gen117, primPen(), "basealign", formal(primInt(), "n", false, false));
-#line 2005 "runtime.in"
- addFunc(ve, run::gen118, primInt(), "basealign", formal(primPen(), "p", true, false));
-#line 2010 "runtime.in"
- addFunc(ve, run::gen119, primTransform(), "transform", formal(primPen(), "p", false, false));
-#line 2015 "runtime.in"
- addFunc(ve, run::gen120, primPath(), "nib", formal(primPen(), "p", false, false));
-#line 2020 "runtime.in"
- addFunc(ve, run::gen121, primPen(), "makepen", formal(primPath(), "p", false, false));
-#line 2025 "runtime.in"
- addFunc(ve, run::gen122, primPen(), "colorless", formal(primPen(), "p", false, false));
-#line 2031 "runtime.in"
- addFunc(ve, run::gen123, primBoolean(), "interactive");
-#line 2038 "runtime.in"
- addFunc(ve, run::gen124, primBoolean(), "uptodate");
-#line 2043 "runtime.in"
- addFunc(ve, run::gen125, primInt(), "system", formal(primString() , "s", false, false));
-#line 2053 "runtime.in"
- addFunc(ve, run::gen126, primBoolean(), "view");
-#line 2058 "runtime.in"
- addFunc(ve, run::gen127, primString() , "asydir");
-#line 2063 "runtime.in"
- addFunc(ve, run::gen128, primString() , "locale", formal(primString() , "s", true, false));
-#line 2069 "runtime.in"
- addFunc(ve, run::gen129, primVoid(), "abort", formal(primString() , "s", true, false));
-#line 2075 "runtime.in"
- addFunc(ve, run::gen130, primVoid(), "exit");
-#line 2080 "runtime.in"
- addFunc(ve, run::gen131, primVoid(), "assert", formal(primBoolean(), "b", false, false), formal(primString() , "s", true, false));
-#line 2091 "runtime.in"
- addFunc(ve, run::gen132, primVoid(), "sleep", formal(primInt(), "seconds", false, false));
-#line 2097 "runtime.in"
- addFunc(ve, run::gen133, primVoid(), "usleep", formal(primInt(), "microseconds", false, false));
-#line 2103 "runtime.in"
- addFunc(ve, run::gen134, primVoid(), "_eval", formal(primString(), "s", false, false), formal(primBoolean(), "embedded", false, false), formal(primBoolean(), "interactivewrite", true, false));
-#line 2118 "runtime.in"
- addFunc(ve, run::gen135, primVoid(), "_eval", formal(primCode(), "s", false, false), formal(primBoolean(), "embedded", false, false));
-#line 2136 "runtime.in"
- addFunc(ve, run::gen136, primString() , "location");
-#line 2148 "runtime.in"
- addFunc(ve, run::gen138, primString() , "cd", formal(primString() , "s", true, false));
-#line 2154 "runtime.in"
- addFunc(ve, run::gen139, primVoid(), "list", formal(primString(), "s", false, false), formal(primBoolean(), "imports", true, false));
-#line 2171 "runtime.in"
- addFunc(ve, run::gen141, primBoolean(), "==", formal(primPath(), "a", false, false), formal(primPath(), "b", false, false));
-#line 2176 "runtime.in"
- addFunc(ve, run::gen142, primBoolean(), "!=", formal(primPath(), "a", false, false), formal(primPath(), "b", false, false));
-#line 2181 "runtime.in"
- addFunc(ve, run::gen143, primPair(), "point", formal(primPath(), "p", false, false), formal(primInt(), "t", false, false));
-#line 2186 "runtime.in"
- addFunc(ve, run::gen144, primPair(), "point", formal(primPath(), "p", false, false), formal(primReal(), "t", false, false));
+ addFunc(ve, run::gen70, primBoolean(), "!=", formal(primPen(), "a", false, false), formal(primPen(), "b", false, false));
+#line 1823 "runtime.in"
+ addFunc(ve, run::gen71, primPen(), "+", formal(primPen(), "a", false, false), formal(primPen(), "b", false, false));
+#line 1828 "runtime.in"
+ addFunc(ve, run::gen72, primPen(), "*", formal(primReal(), "a", false, false), formal(primPen(), "b", false, false));
+#line 1833 "runtime.in"
+ addFunc(ve, run::gen73, primPen(), "*", formal(primPen(), "a", false, false), formal(primReal(), "b", false, false));
+#line 1838 "runtime.in"
+ addFunc(ve, run::gen74, primPair(), "max", formal(primPen(), "p", false, false));
+#line 1843 "runtime.in"
+ addFunc(ve, run::gen75, primPair(), "min", formal(primPen(), "p", false, false));
+#line 1848 "runtime.in"
+ addFunc(ve, run::gen76, primVoid(), "resetdefaultpen");
+#line 1854 "runtime.in"
+ addFunc(ve, run::gen77, primVoid(), "defaultpen", formal(primPen(), "p", false, false));
+#line 1859 "runtime.in"
+ addFunc(ve, run::gen78, primPen(), "defaultpen");
+#line 1864 "runtime.in"
+ addFunc(ve, run::gen79, primBoolean(), "invisible", formal(primPen(), "p", false, false));
+#line 1869 "runtime.in"
+ addFunc(ve, run::gen80, primPen(), "invisible");
+#line 1874 "runtime.in"
+ addFunc(ve, run::gen81, primPen(), "gray", formal(primPen(), "p", false, false));
+#line 1880 "runtime.in"
+ addFunc(ve, run::gen82, primPen(), "rgb", formal(primPen(), "p", false, false));
+#line 1886 "runtime.in"
+ addFunc(ve, run::gen83, primPen(), "cmyk", formal(primPen(), "p", false, false));
+#line 1892 "runtime.in"
+ addFunc(ve, run::gen84, primPen(), "interp", formal(primPen(), "a", false, false), formal(primPen(), "b", false, false), formal(primReal(), "t", false, false));
+#line 1897 "runtime.in"
+ addFunc(ve, run::gen85, primPen(), "rgb", formal(primReal(), "r", false, false), formal(primReal(), "g", false, false), formal(primReal(), "b", false, false));
+#line 1902 "runtime.in"
+ addFunc(ve, run::gen86, primPen(), "cmyk", formal(primReal(), "c", false, false), formal(primReal(), "m", false, false), formal(primReal(), "y", false, false), formal(primReal(), "k", false, false));
+#line 1907 "runtime.in"
+ addFunc(ve, run::gen87, primPen(), "gray", formal(primReal(), "gray", false, false));
+#line 1912 "runtime.in"
+ addFunc(ve, run::gen88, realArray(), "colors", formal(primPen(), "p", false, false));
+#line 1940 "runtime.in"
+ addFunc(ve, run::gen89, primString() , "colorspace", formal(primPen(), "p", false, false));
+#line 1947 "runtime.in"
+ addFunc(ve, run::gen90, primPen(), "pattern", formal(primString(), "s", false, false));
+#line 1952 "runtime.in"
+ addFunc(ve, run::gen91, primString() , "pattern", formal(primPen(), "p", false, false));
+#line 1957 "runtime.in"
+ addFunc(ve, run::gen92, primPen(), "fillrule", formal(primInt(), "n", false, false));
+#line 1962 "runtime.in"
+ addFunc(ve, run::gen93, primInt(), "fillrule", formal(primPen(), "p", false, false));
+#line 1967 "runtime.in"
+ addFunc(ve, run::gen94, primPen(), "opacity", formal(primReal(), "opacity", true, false), formal(primString() , "blend", true, false));
+#line 1977 "runtime.in"
+ addFunc(ve, run::gen95, primReal(), "opacity", formal(primPen(), "p", false, false));
+#line 1982 "runtime.in"
+ addFunc(ve, run::gen96, primString() , "blend", formal(primPen(), "p", false, false));
+#line 1987 "runtime.in"
+ addFunc(ve, run::gen97, primPen(), "linetype", formal(primString(), "s", false, false), formal(primReal(), "offset", true, false), formal(primBoolean(), "scale", true, false), formal(primBoolean(), "adjust", true, false));
+#line 1992 "runtime.in"
+ addFunc(ve, run::gen98, primString() , "linetype", formal(primPen(), "p", true, false));
+#line 1997 "runtime.in"
+ addFunc(ve, run::gen99, primReal(), "offset", formal(primPen(), "p", false, false));
+#line 2002 "runtime.in"
+ addFunc(ve, run::gen100, primBoolean(), "scale", formal(primPen(), "p", false, false));
+#line 2007 "runtime.in"
+ addFunc(ve, run::gen101, primBoolean(), "adjust", formal(primPen(), "p", false, false));
+#line 2012 "runtime.in"
+ addFunc(ve, run::gen102, primPen(), "adjust", formal(primPen(), "p", false, false), formal(primReal(), "arclength", false, false), formal(primBoolean(), "cyclic", false, false));
+#line 2017 "runtime.in"
+ addFunc(ve, run::gen103, primPen(), "linecap", formal(primInt(), "n", false, false));
+#line 2022 "runtime.in"
+ addFunc(ve, run::gen104, primInt(), "linecap", formal(primPen(), "p", true, false));
+#line 2027 "runtime.in"
+ addFunc(ve, run::gen105, primPen(), "linejoin", formal(primInt(), "n", false, false));
+#line 2032 "runtime.in"
+ addFunc(ve, run::gen106, primInt(), "linejoin", formal(primPen(), "p", true, false));
+#line 2037 "runtime.in"
+ addFunc(ve, run::gen107, primPen(), "miterlimit", formal(primReal(), "x", false, false));
+#line 2042 "runtime.in"
+ addFunc(ve, run::gen108, primReal(), "miterlimit", formal(primPen(), "p", true, false));
+#line 2047 "runtime.in"
+ addFunc(ve, run::gen109, primPen(), "linewidth", formal(primReal(), "x", false, false));
+#line 2052 "runtime.in"
+ addFunc(ve, run::gen110, primReal(), "linewidth", formal(primPen(), "p", true, false));
+#line 2057 "runtime.in"
+ addFunc(ve, run::gen111, primPen(), "fontcommand", formal(primString(), "s", false, false));
+#line 2062 "runtime.in"
+ addFunc(ve, run::gen112, primString() , "font", formal(primPen(), "p", true, false));
+#line 2067 "runtime.in"
+ addFunc(ve, run::gen113, primPen(), "fontsize", formal(primReal(), "size", false, false), formal(primReal(), "lineskip", false, false));
+#line 2073 "runtime.in"
+ addFunc(ve, run::gen114, primReal(), "fontsize", formal(primPen(), "p", true, false));
+#line 2078 "runtime.in"
+ addFunc(ve, run::gen115, primReal(), "lineskip", formal(primPen(), "p", true, false));
+#line 2083 "runtime.in"
+ addFunc(ve, run::gen116, primPen(), "overwrite", formal(primInt(), "n", false, false));
+#line 2089 "runtime.in"
+ addFunc(ve, run::gen117, primInt(), "overwrite", formal(primPen(), "p", true, false));
+#line 2094 "runtime.in"
+ addFunc(ve, run::gen118, primPen(), "basealign", formal(primInt(), "n", false, false));
+#line 2099 "runtime.in"
+ addFunc(ve, run::gen119, primInt(), "basealign", formal(primPen(), "p", true, false));
+#line 2104 "runtime.in"
+ addFunc(ve, run::gen120, primTransform(), "transform", formal(primPen(), "p", false, false));
+#line 2109 "runtime.in"
+ addFunc(ve, run::gen121, primPath(), "nib", formal(primPen(), "p", false, false));
+#line 2114 "runtime.in"
+ addFunc(ve, run::gen122, primPen(), "makepen", formal(primPath(), "p", false, false));
+#line 2119 "runtime.in"
+ addFunc(ve, run::gen123, primPen(), "colorless", formal(primPen(), "p", false, false));
+#line 2125 "runtime.in"
+ addFunc(ve, run::gen124, primBoolean(), "interactive");
+#line 2132 "runtime.in"
+ addFunc(ve, run::gen125, primBoolean(), "uptodate");
+#line 2137 "runtime.in"
+ addFunc(ve, run::gen126, primInt(), "system", formal(primString() , "s", false, false));
+#line 2147 "runtime.in"
+ addFunc(ve, run::gen127, primBoolean(), "view");
+#line 2152 "runtime.in"
+ addFunc(ve, run::gen128, primString() , "asydir");
+#line 2157 "runtime.in"
+ addFunc(ve, run::gen129, primString() , "locale", formal(primString() , "s", true, false));
+#line 2163 "runtime.in"
+ addFunc(ve, run::gen130, primVoid(), "abort", formal(primString() , "s", true, false));
+#line 2169 "runtime.in"
+ addFunc(ve, run::gen131, primVoid(), "exit");
+#line 2174 "runtime.in"
+ addFunc(ve, run::gen132, primVoid(), "assert", formal(primBoolean(), "b", false, false), formal(primString() , "s", true, false));
+#line 2185 "runtime.in"
+ addFunc(ve, run::gen133, primVoid(), "sleep", formal(primInt(), "seconds", false, false));
#line 2191 "runtime.in"
- addFunc(ve, run::gen145, primPair(), "precontrol", formal(primPath(), "p", false, false), formal(primInt(), "t", false, false));
-#line 2196 "runtime.in"
- addFunc(ve, run::gen146, primPair(), "precontrol", formal(primPath(), "p", false, false), formal(primReal(), "t", false, false));
-#line 2201 "runtime.in"
- addFunc(ve, run::gen147, primPair(), "postcontrol", formal(primPath(), "p", false, false), formal(primInt(), "t", false, false));
-#line 2206 "runtime.in"
- addFunc(ve, run::gen148, primPair(), "postcontrol", formal(primPath(), "p", false, false), formal(primReal(), "t", false, false));
-#line 2211 "runtime.in"
- addFunc(ve, run::gen149, primPair(), "dir", formal(primPath(), "p", false, false), formal(primInt(), "t", false, false), formal(primInt(), "sign", true, false), formal(primBoolean(), "normalize", true, false));
-#line 2216 "runtime.in"
- addFunc(ve, run::gen150, primPair(), "dir", formal(primPath(), "p", false, false), formal(primReal(), "t", false, false), formal(primBoolean(), "normalize", true, false));
-#line 2221 "runtime.in"
- addFunc(ve, run::gen151, primPair(), "accel", formal(primPath(), "p", false, false), formal(primInt(), "t", false, false), formal(primInt(), "sign", true, false));
-#line 2226 "runtime.in"
- addFunc(ve, run::gen152, primPair(), "accel", formal(primPath(), "p", false, false), formal(primReal(), "t", false, false));
-#line 2231 "runtime.in"
- addFunc(ve, run::gen153, primReal(), "radius", formal(primPath(), "p", false, false), formal(primReal(), "t", false, false));
-#line 2243 "runtime.in"
- addFunc(ve, run::gen154, primPath(), "reverse", formal(primPath(), "p", false, false));
+ addFunc(ve, run::gen134, primVoid(), "usleep", formal(primInt(), "microseconds", false, false));
+#line 2197 "runtime.in"
+ addFunc(ve, run::gen135, primVoid(), "_eval", formal(primString(), "s", false, false), formal(primBoolean(), "embedded", false, false), formal(primBoolean(), "interactivewrite", true, false));
+#line 2212 "runtime.in"
+ addFunc(ve, run::gen136, primVoid(), "_eval", formal(primCode(), "s", false, false), formal(primBoolean(), "embedded", false, false));
+#line 2230 "runtime.in"
+ addFunc(ve, run::gen137, primString() , "location");
+#line 2242 "runtime.in"
+ addFunc(ve, run::gen139, primString() , "cd", formal(primString() , "s", true, false));
#line 2248 "runtime.in"
- addFunc(ve, run::gen155, primPath(), "subpath", formal(primPath(), "p", false, false), formal(primInt(), "a", false, false), formal(primInt(), "b", false, false));
-#line 2253 "runtime.in"
- addFunc(ve, run::gen156, primPath(), "subpath", formal(primPath(), "p", false, false), formal(primReal(), "a", false, false), formal(primReal(), "b", false, false));
-#line 2258 "runtime.in"
- addFunc(ve, run::gen157, primPath(), "nurb", formal(primPair(), "z0", false, false), formal(primPair(), "z1", false, false), formal(primPair(), "z2", false, false), formal(primPair(), "z3", false, false), formal(primReal(), "w0", false, false), formal(primReal(), "w1", false, false), formal(primReal(), "w2", false, false), formal(primReal(), "w3", false, false), formal(primInt(), "m", false, false));
-#line 2264 "runtime.in"
- addFunc(ve, run::gen158, primInt(), "length", formal(primPath(), "p", false, false));
-#line 2269 "runtime.in"
- addFunc(ve, run::gen159, primBoolean(), "cyclic", formal(primPath(), "p", false, false));
-#line 2274 "runtime.in"
- addFunc(ve, run::gen160, primBoolean(), "straight", formal(primPath(), "p", false, false), formal(primInt(), "t", false, false));
-#line 2279 "runtime.in"
- addFunc(ve, run::gen161, primPath(), "unstraighten", formal(primPath(), "p", false, false));
-#line 2284 "runtime.in"
- addFunc(ve, run::gen162, primBoolean(), "piecewisestraight", formal(primPath(), "p", false, false));
-#line 2289 "runtime.in"
- addFunc(ve, run::gen163, primReal(), "arclength", formal(primPath(), "p", false, false));
-#line 2294 "runtime.in"
- addFunc(ve, run::gen164, primReal(), "arctime", formal(primPath(), "p", false, false), formal(primReal(), "dval", false, false));
-#line 2299 "runtime.in"
- addFunc(ve, run::gen165, primReal(), "dirtime", formal(primPath(), "p", false, false), formal(primPair(), "z", false, false));
-#line 2304 "runtime.in"
- addFunc(ve, run::gen166, realArray(), "intersect", formal(primPath(), "p", false, false), formal(primPath(), "q", false, false), formal(primReal(), "fuzz", true, false));
-#line 2321 "runtime.in"
- addFunc(ve, run::gen167, realArray2(), "intersections", formal(primPath(), "p", false, false), formal(primPath(), "q", false, false), formal(primReal(), "fuzz", true, false));
+ addFunc(ve, run::gen140, primVoid(), "list", formal(primString(), "s", false, false), formal(primBoolean(), "imports", true, false));
+#line 2265 "runtime.in"
+ addFunc(ve, run::gen142, primBoolean(), "==", formal(primPath(), "a", false, false), formal(primPath(), "b", false, false));
+#line 2270 "runtime.in"
+ addFunc(ve, run::gen143, primBoolean(), "!=", formal(primPath(), "a", false, false), formal(primPath(), "b", false, false));
+#line 2275 "runtime.in"
+ addFunc(ve, run::gen144, primPair(), "point", formal(primPath(), "p", false, false), formal(primInt(), "t", false, false));
+#line 2280 "runtime.in"
+ addFunc(ve, run::gen145, primPair(), "point", formal(primPath(), "p", false, false), formal(primReal(), "t", false, false));
+#line 2285 "runtime.in"
+ addFunc(ve, run::gen146, primPair(), "precontrol", formal(primPath(), "p", false, false), formal(primInt(), "t", false, false));
+#line 2290 "runtime.in"
+ addFunc(ve, run::gen147, primPair(), "precontrol", formal(primPath(), "p", false, false), formal(primReal(), "t", false, false));
+#line 2295 "runtime.in"
+ addFunc(ve, run::gen148, primPair(), "postcontrol", formal(primPath(), "p", false, false), formal(primInt(), "t", false, false));
+#line 2300 "runtime.in"
+ addFunc(ve, run::gen149, primPair(), "postcontrol", formal(primPath(), "p", false, false), formal(primReal(), "t", false, false));
+#line 2305 "runtime.in"
+ addFunc(ve, run::gen150, primPair(), "dir", formal(primPath(), "p", false, false), formal(primInt(), "t", false, false), formal(primInt(), "sign", true, false), formal(primBoolean(), "normalize", true, false));
+#line 2310 "runtime.in"
+ addFunc(ve, run::gen151, primPair(), "dir", formal(primPath(), "p", false, false), formal(primReal(), "t", false, false), formal(primBoolean(), "normalize", true, false));
+#line 2315 "runtime.in"
+ addFunc(ve, run::gen152, primPair(), "accel", formal(primPath(), "p", false, false), formal(primInt(), "t", false, false), formal(primInt(), "sign", true, false));
+#line 2320 "runtime.in"
+ addFunc(ve, run::gen153, primPair(), "accel", formal(primPath(), "p", false, false), formal(primReal(), "t", false, false));
+#line 2325 "runtime.in"
+ addFunc(ve, run::gen154, primReal(), "radius", formal(primPath(), "p", false, false), formal(primReal(), "t", false, false));
+#line 2337 "runtime.in"
+ addFunc(ve, run::gen155, primPath(), "reverse", formal(primPath(), "p", false, false));
+#line 2342 "runtime.in"
+ addFunc(ve, run::gen156, primPath(), "subpath", formal(primPath(), "p", false, false), formal(primInt(), "a", false, false), formal(primInt(), "b", false, false));
+#line 2347 "runtime.in"
+ addFunc(ve, run::gen157, primPath(), "subpath", formal(primPath(), "p", false, false), formal(primReal(), "a", false, false), formal(primReal(), "b", false, false));
#line 2352 "runtime.in"
- addFunc(ve, run::gen168, realArray(), "intersections", formal(primPath(), "p", false, false), formal(primPair(), "a", false, true), formal(primPair(), "b", false, true), formal(primReal(), "fuzz", true, false));
-#line 2367 "runtime.in"
- addFunc(ve, run::gen169, primPair(), "extension", formal(primPair(), "p", false, false), formal(primPair(), "q", false, false), formal(primPair(), "p", false, false), formal(primPair(), "q", false, false));
+ addFunc(ve, run::gen158, primPath(), "nurb", formal(primPair(), "z0", false, false), formal(primPair(), "z1", false, false), formal(primPair(), "z2", false, false), formal(primPair(), "z3", false, false), formal(primReal(), "w0", false, false), formal(primReal(), "w1", false, false), formal(primReal(), "w2", false, false), formal(primReal(), "w3", false, false), formal(primInt(), "m", false, false));
+#line 2358 "runtime.in"
+ addFunc(ve, run::gen159, primInt(), "length", formal(primPath(), "p", false, false));
+#line 2363 "runtime.in"
+ addFunc(ve, run::gen160, primBoolean(), "cyclic", formal(primPath(), "p", false, false));
+#line 2368 "runtime.in"
+ addFunc(ve, run::gen161, primBoolean(), "straight", formal(primPath(), "p", false, false), formal(primInt(), "t", false, false));
+#line 2373 "runtime.in"
+ addFunc(ve, run::gen162, primPath(), "unstraighten", formal(primPath(), "p", false, false));
#line 2378 "runtime.in"
- addFunc(ve, run::gen170, primInt(), "size", formal(primPath(), "p", false, false));
+ addFunc(ve, run::gen163, primBoolean(), "piecewisestraight", formal(primPath(), "p", false, false));
#line 2383 "runtime.in"
- addFunc(ve, run::gen171, primPath(), "&", formal(primPath(), "p", false, false), formal(primPath(), "q", false, false));
+ addFunc(ve, run::gen164, primReal(), "arclength", formal(primPath(), "p", false, false));
#line 2388 "runtime.in"
- addFunc(ve, run::gen172, primPair(), "min", formal(primPath(), "p", false, false));
+ addFunc(ve, run::gen165, primReal(), "arctime", formal(primPath(), "p", false, false), formal(primReal(), "dval", false, false));
#line 2393 "runtime.in"
- addFunc(ve, run::gen173, primPair(), "max", formal(primPath(), "p", false, false));
+ addFunc(ve, run::gen166, primReal(), "dirtime", formal(primPath(), "p", false, false), formal(primPair(), "z", false, false));
#line 2398 "runtime.in"
- addFunc(ve, run::gen174, realArray(), "mintimes", formal(primPath(), "p", false, false));
-#line 2407 "runtime.in"
- addFunc(ve, run::gen175, realArray(), "maxtimes", formal(primPath(), "p", false, false));
-#line 2416 "runtime.in"
- addFunc(ve, run::gen176, primReal(), "relativedistance", formal(primReal(), "theta", false, false), formal(primReal(), "phi", false, false), formal(primReal(), "t", false, false), formal(primBoolean(), "atleast", false, false));
-#line 2421 "runtime.in"
- addFunc(ve, run::gen177, primInt(), "windingnumber", formal(pathArray() , "p", false, false), formal(primPair(), "z", false, false));
-#line 2426 "runtime.in"
- addFunc(ve, run::gen178, primBoolean(), "inside", formal(pathArray() , "g", false, true), formal(primPair(), "z", false, false), formal(primPen(), "fillrule", true, false));
-#line 2431 "runtime.in"
- addFunc(ve, run::gen179, primBoolean(), "inside", formal(primPath(), "g", false, false), formal(primPair(), "z", false, false), formal(primPen(), "fillrule", true, false));
-#line 2436 "runtime.in"
- addFunc(ve, run::gen180, primReal(), "side", formal(primPair(), "a", false, false), formal(primPair(), "b", false, false), formal(primPair(), "c", false, false));
-#line 2443 "runtime.in"
- addFunc(ve, run::gen181, primReal(), "incircle", formal(primPair(), "a", false, false), formal(primPair(), "b", false, false), formal(primPair(), "c", false, false), formal(primPair(), "d", false, false));
-#line 2451 "runtime.in"
- addFunc(ve, run::gen182, primPath3(), "path3", formal(tripleArray(), "pre", false, false), formal(tripleArray(), "point", false, false), formal(tripleArray(), "post", false, false), formal(boolArray(), "straight", false, false), formal(primBoolean(), "cyclic", false, false));
-#line 2476 "runtime.in"
- addFunc(ve, run::gen184, primBoolean(), "==", formal(primPath3(), "a", false, false), formal(primPath3(), "b", false, false));
-#line 2481 "runtime.in"
- addFunc(ve, run::gen185, primBoolean(), "!=", formal(primPath3(), "a", false, false), formal(primPath3(), "b", false, false));
-#line 2486 "runtime.in"
- addFunc(ve, run::gen186, primTriple(), "point", formal(primPath3(), "p", false, false), formal(primInt(), "t", false, false));
-#line 2491 "runtime.in"
- addFunc(ve, run::gen187, primTriple(), "point", formal(primPath3(), "p", false, false), formal(primReal(), "t", false, false));
-#line 2496 "runtime.in"
- addFunc(ve, run::gen188, primTriple(), "precontrol", formal(primPath3(), "p", false, false), formal(primInt(), "t", false, false));
+ addFunc(ve, run::gen167, realArray(), "intersect", formal(primPath(), "p", false, false), formal(primPath(), "q", false, false), formal(primReal(), "fuzz", true, false));
+#line 2415 "runtime.in"
+ addFunc(ve, run::gen168, realArray2(), "intersections", formal(primPath(), "p", false, false), formal(primPath(), "q", false, false), formal(primReal(), "fuzz", true, false));
+#line 2446 "runtime.in"
+ addFunc(ve, run::gen169, realArray(), "intersections", formal(primPath(), "p", false, false), formal(primPair(), "a", false, true), formal(primPair(), "b", false, true), formal(primReal(), "fuzz", true, false));
+#line 2461 "runtime.in"
+ addFunc(ve, run::gen170, primPair(), "extension", formal(primPair(), "p", false, false), formal(primPair(), "q", false, false), formal(primPair(), "p", false, false), formal(primPair(), "q", false, false));
+#line 2472 "runtime.in"
+ addFunc(ve, run::gen171, primInt(), "size", formal(primPath(), "p", false, false));
+#line 2477 "runtime.in"
+ addFunc(ve, run::gen172, primPath(), "&", formal(primPath(), "p", false, false), formal(primPath(), "q", false, false));
+#line 2482 "runtime.in"
+ addFunc(ve, run::gen173, primPair(), "min", formal(primPath(), "p", false, false));
+#line 2487 "runtime.in"
+ addFunc(ve, run::gen174, primPair(), "max", formal(primPath(), "p", false, false));
+#line 2492 "runtime.in"
+ addFunc(ve, run::gen175, realArray(), "mintimes", formal(primPath(), "p", false, false));
#line 2501 "runtime.in"
- addFunc(ve, run::gen189, primTriple(), "precontrol", formal(primPath3(), "p", false, false), formal(primReal(), "t", false, false));
-#line 2506 "runtime.in"
- addFunc(ve, run::gen190, primTriple(), "postcontrol", formal(primPath3(), "p", false, false), formal(primInt(), "t", false, false));
-#line 2511 "runtime.in"
- addFunc(ve, run::gen191, primTriple(), "postcontrol", formal(primPath3(), "p", false, false), formal(primReal(), "t", false, false));
-#line 2516 "runtime.in"
- addFunc(ve, run::gen192, primTriple(), "dir", formal(primPath3(), "p", false, false), formal(primInt(), "t", false, false), formal(primInt(), "sign", true, false), formal(primBoolean(), "normalize", true, false));
-#line 2521 "runtime.in"
- addFunc(ve, run::gen193, primTriple(), "dir", formal(primPath3(), "p", false, false), formal(primReal(), "t", false, false), formal(primBoolean(), "normalize", true, false));
-#line 2526 "runtime.in"
- addFunc(ve, run::gen194, primTriple(), "accel", formal(primPath3(), "p", false, false), formal(primInt(), "t", false, false), formal(primInt(), "sign", true, false));
-#line 2531 "runtime.in"
- addFunc(ve, run::gen195, primTriple(), "accel", formal(primPath3(), "p", false, false), formal(primReal(), "t", false, false));
-#line 2536 "runtime.in"
- addFunc(ve, run::gen196, primReal(), "radius", formal(primPath3(), "p", false, false), formal(primReal(), "t", false, false));
-#line 2548 "runtime.in"
- addFunc(ve, run::gen197, primReal(), "radius", formal(primTriple(), "z0", false, false), formal(primTriple(), "c0", false, false), formal(primTriple(), "c1", false, false), formal(primTriple(), "z1", false, false), formal(primReal(), "t", false, false));
-#line 2560 "runtime.in"
- addFunc(ve, run::gen198, primPath3(), "reverse", formal(primPath3(), "p", false, false));
-#line 2565 "runtime.in"
- addFunc(ve, run::gen199, primPath3(), "subpath", formal(primPath3(), "p", false, false), formal(primInt(), "a", false, false), formal(primInt(), "b", false, false));
+ addFunc(ve, run::gen176, realArray(), "maxtimes", formal(primPath(), "p", false, false));
+#line 2510 "runtime.in"
+ addFunc(ve, run::gen177, primReal(), "relativedistance", formal(primReal(), "theta", false, false), formal(primReal(), "phi", false, false), formal(primReal(), "t", false, false), formal(primBoolean(), "atleast", false, false));
+#line 2515 "runtime.in"
+ addFunc(ve, run::gen178, primInt(), "windingnumber", formal(pathArray() , "p", false, false), formal(primPair(), "z", false, false));
+#line 2520 "runtime.in"
+ addFunc(ve, run::gen179, primBoolean(), "inside", formal(pathArray() , "g", false, true), formal(primPair(), "z", false, false), formal(primPen(), "fillrule", true, false));
+#line 2525 "runtime.in"
+ addFunc(ve, run::gen180, primBoolean(), "inside", formal(primPath(), "g", false, false), formal(primPair(), "z", false, false), formal(primPen(), "fillrule", true, false));
+#line 2530 "runtime.in"
+ addFunc(ve, run::gen181, primReal(), "side", formal(primPair(), "a", false, false), formal(primPair(), "b", false, false), formal(primPair(), "c", false, false));
+#line 2537 "runtime.in"
+ addFunc(ve, run::gen182, primReal(), "incircle", formal(primPair(), "a", false, false), formal(primPair(), "b", false, false), formal(primPair(), "c", false, false), formal(primPair(), "d", false, false));
+#line 2545 "runtime.in"
+ addFunc(ve, run::gen183, primPath3(), "path3", formal(tripleArray(), "pre", false, false), formal(tripleArray(), "point", false, false), formal(tripleArray(), "post", false, false), formal(boolArray(), "straight", false, false), formal(primBoolean(), "cyclic", false, false));
#line 2570 "runtime.in"
- addFunc(ve, run::gen200, primPath3(), "subpath", formal(primPath3(), "p", false, false), formal(primReal(), "a", false, false), formal(primReal(), "b", false, false));
+ addFunc(ve, run::gen185, primBoolean(), "==", formal(primPath3(), "a", false, false), formal(primPath3(), "b", false, false));
#line 2575 "runtime.in"
- addFunc(ve, run::gen201, primInt(), "length", formal(primPath3(), "p", false, false));
+ addFunc(ve, run::gen186, primBoolean(), "!=", formal(primPath3(), "a", false, false), formal(primPath3(), "b", false, false));
#line 2580 "runtime.in"
- addFunc(ve, run::gen202, primBoolean(), "cyclic", formal(primPath3(), "p", false, false));
+ addFunc(ve, run::gen187, primTriple(), "point", formal(primPath3(), "p", false, false), formal(primInt(), "t", false, false));
#line 2585 "runtime.in"
- addFunc(ve, run::gen203, primBoolean(), "straight", formal(primPath3(), "p", false, false), formal(primInt(), "t", false, false));
+ addFunc(ve, run::gen188, primTriple(), "point", formal(primPath3(), "p", false, false), formal(primReal(), "t", false, false));
#line 2590 "runtime.in"
- addFunc(ve, run::gen204, primTriple(), "perp", formal(primTriple(), "v", false, false), formal(primTriple(), "u", false, false));
-#line 2596 "runtime.in"
- addFunc(ve, run::gen205, primReal(), "straightness", formal(primPath3(), "p", false, false), formal(primInt(), "t", false, false));
-#line 2607 "runtime.in"
- addFunc(ve, run::gen206, primReal(), "straightness", formal(primTriple(), "z0", false, false), formal(primTriple(), "c0", false, false), formal(primTriple(), "c1", false, false), formal(primTriple(), "z1", false, false));
+ addFunc(ve, run::gen189, primTriple(), "precontrol", formal(primPath3(), "p", false, false), formal(primInt(), "t", false, false));
+#line 2595 "runtime.in"
+ addFunc(ve, run::gen190, primTriple(), "precontrol", formal(primPath3(), "p", false, false), formal(primReal(), "t", false, false));
+#line 2600 "runtime.in"
+ addFunc(ve, run::gen191, primTriple(), "postcontrol", formal(primPath3(), "p", false, false), formal(primInt(), "t", false, false));
+#line 2605 "runtime.in"
+ addFunc(ve, run::gen192, primTriple(), "postcontrol", formal(primPath3(), "p", false, false), formal(primReal(), "t", false, false));
+#line 2610 "runtime.in"
+ addFunc(ve, run::gen193, primTriple(), "dir", formal(primPath3(), "p", false, false), formal(primInt(), "t", false, false), formal(primInt(), "sign", true, false), formal(primBoolean(), "normalize", true, false));
#line 2615 "runtime.in"
- addFunc(ve, run::gen207, primBoolean(), "piecewisestraight", formal(primPath3(), "p", false, false));
+ addFunc(ve, run::gen194, primTriple(), "dir", formal(primPath3(), "p", false, false), formal(primReal(), "t", false, false), formal(primBoolean(), "normalize", true, false));
#line 2620 "runtime.in"
- addFunc(ve, run::gen208, primReal(), "arclength", formal(primPath3(), "p", false, false));
+ addFunc(ve, run::gen195, primTriple(), "accel", formal(primPath3(), "p", false, false), formal(primInt(), "t", false, false), formal(primInt(), "sign", true, false));
#line 2625 "runtime.in"
- addFunc(ve, run::gen209, primReal(), "arctime", formal(primPath3(), "p", false, false), formal(primReal(), "dval", false, false));
+ addFunc(ve, run::gen196, primTriple(), "accel", formal(primPath3(), "p", false, false), formal(primReal(), "t", false, false));
#line 2630 "runtime.in"
- addFunc(ve, run::gen210, realArray(), "intersect", formal(primPath3(), "p", false, false), formal(primPath3(), "q", false, false), formal(primReal(), "fuzz", true, false));
-#line 2648 "runtime.in"
- addFunc(ve, run::gen211, realArray2(), "intersections", formal(primPath3(), "p", false, false), formal(primPath3(), "q", false, false), formal(primReal(), "fuzz", true, false));
-#line 2681 "runtime.in"
- addFunc(ve, run::gen212, primInt(), "size", formal(primPath3(), "p", false, false));
-#line 2686 "runtime.in"
- addFunc(ve, run::gen213, primPath3(), "&", formal(primPath3(), "p", false, false), formal(primPath3(), "q", false, false));
-#line 2691 "runtime.in"
- addFunc(ve, run::gen214, primTriple(), "min", formal(primPath3(), "p", false, false));
-#line 2696 "runtime.in"
- addFunc(ve, run::gen215, primTriple(), "max", formal(primPath3(), "p", false, false));
+ addFunc(ve, run::gen197, primReal(), "radius", formal(primPath3(), "p", false, false), formal(primReal(), "t", false, false));
+#line 2642 "runtime.in"
+ addFunc(ve, run::gen198, primReal(), "radius", formal(primTriple(), "z0", false, false), formal(primTriple(), "c0", false, false), formal(primTriple(), "c1", false, false), formal(primTriple(), "z1", false, false), formal(primReal(), "t", false, false));
+#line 2654 "runtime.in"
+ addFunc(ve, run::gen199, primPath3(), "reverse", formal(primPath3(), "p", false, false));
+#line 2659 "runtime.in"
+ addFunc(ve, run::gen200, primPath3(), "subpath", formal(primPath3(), "p", false, false), formal(primInt(), "a", false, false), formal(primInt(), "b", false, false));
+#line 2664 "runtime.in"
+ addFunc(ve, run::gen201, primPath3(), "subpath", formal(primPath3(), "p", false, false), formal(primReal(), "a", false, false), formal(primReal(), "b", false, false));
+#line 2669 "runtime.in"
+ addFunc(ve, run::gen202, primInt(), "length", formal(primPath3(), "p", false, false));
+#line 2674 "runtime.in"
+ addFunc(ve, run::gen203, primBoolean(), "cyclic", formal(primPath3(), "p", false, false));
+#line 2679 "runtime.in"
+ addFunc(ve, run::gen204, primBoolean(), "straight", formal(primPath3(), "p", false, false), formal(primInt(), "t", false, false));
+#line 2684 "runtime.in"
+ addFunc(ve, run::gen205, primTriple(), "perp", formal(primTriple(), "v", false, false), formal(primTriple(), "u", false, false));
+#line 2690 "runtime.in"
+ addFunc(ve, run::gen206, primReal(), "straightness", formal(primPath3(), "p", false, false), formal(primInt(), "t", false, false));
#line 2701 "runtime.in"
- addFunc(ve, run::gen216, realArray(), "mintimes", formal(primPath3(), "p", false, false));
-#line 2711 "runtime.in"
- addFunc(ve, run::gen217, realArray(), "maxtimes", formal(primPath3(), "p", false, false));
-#line 2721 "runtime.in"
- addFunc(ve, run::gen218, primPath3(), "*", formal(realArray2(), "t", false, false), formal(primPath3(), "g", false, false));
-#line 2776 "runtime.in"
- addFunc(ve, run::gen223, primGuide(), "operator cast", formal(primCycleToken(), "tok", false, false));
-#line 2783 "runtime.in"
- addFunc(ve, run::gen224, primGuide(), "operator spec", formal(primPair(), "z", false, false), formal(primInt(), "p", false, false));
-#line 2791 "runtime.in"
- addFunc(ve, run::gen225, primCurlSpecifier(), "operator curl", formal(primReal(), "gamma", false, false), formal(primInt(), "p", false, false));
-#line 2807 "runtime.in"
- addFunc(ve, run::gen228, primGuide(), "operator cast", formal(primCurlSpecifier(), "spec", false, false));
-#line 2812 "runtime.in"
- addFunc(ve, run::gen229, primTensionSpecifier(), "operator tension", formal(primReal(), "tout", false, false), formal(primReal(), "tin", false, false), formal(primBoolean(), "atleast", false, false));
-#line 2832 "runtime.in"
- addFunc(ve, run::gen233, primGuide(), "operator cast", formal(primTensionSpecifier(), "t", false, false));
-#line 2837 "runtime.in"
- addFunc(ve, run::gen234, primGuide(), "operator controls", formal(primPair(), "zout", false, false), formal(primPair(), "zin", false, false));
-#line 2842 "runtime.in"
- addFunc(ve, run::gen235, primInt(), "size", formal(primGuide(), "g", false, false));
-#line 2849 "runtime.in"
- addFunc(ve, run::gen236, primInt(), "length", formal(primGuide(), "g", false, false));
-#line 2856 "runtime.in"
- addFunc(ve, run::gen237, primBoolean(), "cyclic", formal(primGuide(), "g", false, false));
-#line 2863 "runtime.in"
- addFunc(ve, run::gen238, primPair(), "point", formal(primGuide(), "g", false, false), formal(primInt(), "t", false, false));
+ addFunc(ve, run::gen207, primReal(), "straightness", formal(primTriple(), "z0", false, false), formal(primTriple(), "c0", false, false), formal(primTriple(), "c1", false, false), formal(primTriple(), "z1", false, false));
+#line 2709 "runtime.in"
+ addFunc(ve, run::gen208, primBoolean(), "piecewisestraight", formal(primPath3(), "p", false, false));
+#line 2714 "runtime.in"
+ addFunc(ve, run::gen209, primReal(), "arclength", formal(primPath3(), "p", false, false));
+#line 2719 "runtime.in"
+ addFunc(ve, run::gen210, primReal(), "arctime", formal(primPath3(), "p", false, false), formal(primReal(), "dval", false, false));
+#line 2724 "runtime.in"
+ addFunc(ve, run::gen211, realArray(), "intersect", formal(primPath3(), "p", false, false), formal(primPath3(), "q", false, false), formal(primReal(), "fuzz", true, false));
+#line 2742 "runtime.in"
+ addFunc(ve, run::gen212, realArray2(), "intersections", formal(primPath3(), "p", false, false), formal(primPath3(), "q", false, false), formal(primReal(), "fuzz", true, false));
+#line 2775 "runtime.in"
+ addFunc(ve, run::gen213, primInt(), "size", formal(primPath3(), "p", false, false));
+#line 2780 "runtime.in"
+ addFunc(ve, run::gen214, primPath3(), "&", formal(primPath3(), "p", false, false), formal(primPath3(), "q", false, false));
+#line 2785 "runtime.in"
+ addFunc(ve, run::gen215, primTriple(), "min", formal(primPath3(), "p", false, false));
+#line 2790 "runtime.in"
+ addFunc(ve, run::gen216, primTriple(), "max", formal(primPath3(), "p", false, false));
+#line 2795 "runtime.in"
+ addFunc(ve, run::gen217, realArray(), "mintimes", formal(primPath3(), "p", false, false));
+#line 2805 "runtime.in"
+ addFunc(ve, run::gen218, realArray(), "maxtimes", formal(primPath3(), "p", false, false));
+#line 2815 "runtime.in"
+ addFunc(ve, run::gen219, primPath3(), "*", formal(realArray2(), "t", false, false), formal(primPath3(), "g", false, false));
#line 2870 "runtime.in"
- addFunc(ve, run::gen239, pairArray(), "dirSpecifier", formal(primGuide(), "g", false, false), formal(primInt(), "t", false, false));
-#line 2882 "runtime.in"
- addFunc(ve, run::gen240, pairArray(), "controlSpecifier", formal(primGuide(), "g", false, false), formal(primInt(), "t", false, false));
-#line 2899 "runtime.in"
- addFunc(ve, run::gen241, primTensionSpecifier(), "tensionSpecifier", formal(primGuide(), "g", false, false), formal(primInt(), "t", false, false));
-#line 2909 "runtime.in"
- addFunc(ve, run::gen242, realArray(), "curlSpecifier", formal(primGuide(), "g", false, false), formal(primInt(), "t", false, false));
-#line 2923 "runtime.in"
- addFunc(ve, run::gen243, primGuide(), "reverse", formal(primGuide(), "g", false, false));
-#line 2977 "runtime.in"
- addFunc(ve, run::gen244, primVoid(), "_draw", formal(primPicture(), "f", false, false), formal(primPath3(), "g", false, false), formal(primPen(), "p", false, false));
-#line 2985 "runtime.in"
- addFunc(ve, run::gen245, primVoid(), "draw", formal(primPicture(), "f", false, false), formal(tripleArray2(), "g", false, false), formal(primBoolean(), "straight", false, false), formal(penArray() , "p", false, false), formal(primReal(), "opacity", false, false), formal(primReal(), "shininess", false, false), formal(primReal(), "granularity", false, false), formal(primTriple(), "normal", false, false), formal(primBoolean(), "lighton", false, false), formal(penArray() , "colors", false, false));
+ addFunc(ve, run::gen224, primGuide(), "operator cast", formal(primCycleToken(), "tok", false, false));
+#line 2877 "runtime.in"
+ addFunc(ve, run::gen225, primGuide(), "operator spec", formal(primPair(), "z", false, false), formal(primInt(), "p", false, false));
+#line 2885 "runtime.in"
+ addFunc(ve, run::gen226, primCurlSpecifier(), "operator curl", formal(primReal(), "gamma", false, false), formal(primInt(), "p", false, false));
+#line 2901 "runtime.in"
+ addFunc(ve, run::gen229, primGuide(), "operator cast", formal(primCurlSpecifier(), "spec", false, false));
+#line 2906 "runtime.in"
+ addFunc(ve, run::gen230, primTensionSpecifier(), "operator tension", formal(primReal(), "tout", false, false), formal(primReal(), "tin", false, false), formal(primBoolean(), "atleast", false, false));
+#line 2926 "runtime.in"
+ addFunc(ve, run::gen234, primGuide(), "operator cast", formal(primTensionSpecifier(), "t", false, false));
+#line 2931 "runtime.in"
+ addFunc(ve, run::gen235, primGuide(), "operator controls", formal(primPair(), "zout", false, false), formal(primPair(), "zin", false, false));
+#line 2936 "runtime.in"
+ addFunc(ve, run::gen236, primInt(), "size", formal(primGuide(), "g", false, false));
+#line 2943 "runtime.in"
+ addFunc(ve, run::gen237, primInt(), "length", formal(primGuide(), "g", false, false));
+#line 2950 "runtime.in"
+ addFunc(ve, run::gen238, primBoolean(), "cyclic", formal(primGuide(), "g", false, false));
+#line 2957 "runtime.in"
+ addFunc(ve, run::gen239, primPair(), "point", formal(primGuide(), "g", false, false), formal(primInt(), "t", false, false));
+#line 2964 "runtime.in"
+ addFunc(ve, run::gen240, pairArray(), "dirSpecifier", formal(primGuide(), "g", false, false), formal(primInt(), "t", false, false));
+#line 2976 "runtime.in"
+ addFunc(ve, run::gen241, pairArray(), "controlSpecifier", formal(primGuide(), "g", false, false), formal(primInt(), "t", false, false));
#line 2993 "runtime.in"
- addFunc(ve, run::gen246, primTriple(), "min3", formal(primPicture(), "f", false, false));
-#line 2998 "runtime.in"
- addFunc(ve, run::gen247, primTriple(), "max3", formal(primPicture(), "f", false, false));
+ addFunc(ve, run::gen242, primTensionSpecifier(), "tensionSpecifier", formal(primGuide(), "g", false, false), formal(primInt(), "t", false, false));
#line 3003 "runtime.in"
- addFunc(ve, run::gen248, primPair(), "min", formal(primPicture(), "f", false, false), formal(realArray2(), "t", false, false));
-#line 3011 "runtime.in"
- addFunc(ve, run::gen249, primPair(), "max", formal(primPicture(), "f", false, false), formal(realArray2(), "t", false, false));
-#line 3019 "runtime.in"
- addFunc(ve, run::gen250, primPair(), "minratio", formal(primPicture(), "f", false, false));
-#line 3024 "runtime.in"
- addFunc(ve, run::gen251, primPair(), "maxratio", formal(primPicture(), "f", false, false));
-#line 3029 "runtime.in"
- addFunc(ve, run::gen252, primReal(), "minbound", formal(realArray(), "a", false, false), formal(primReal(), "b", false, false));
-#line 3037 "runtime.in"
- addFunc(ve, run::gen253, primReal(), "maxbound", formal(realArray(), "a", false, false), formal(primReal(), "b", false, false));
-#line 3045 "runtime.in"
- addFunc(ve, run::gen254, primPair(), "minbound", formal(tripleArray(), "a", false, false), formal(realArray2(), "t", false, false), formal(primPair(), "b", false, false));
-#line 3056 "runtime.in"
- addFunc(ve, run::gen255, primPair(), "maxbound", formal(tripleArray(), "a", false, false), formal(realArray2(), "t", false, false), formal(primPair(), "b", false, false));
-#line 3067 "runtime.in"
- addFunc(ve, run::gen256, primPair(), "max", formal(primPath3(), "g", false, false), formal(realArray2(), "t", false, false));
-#line 3075 "runtime.in"
- addFunc(ve, run::gen257, primPair(), "min", formal(primPath3(), "g", false, false), formal(realArray2(), "t", false, false));
-#line 3083 "runtime.in"
- addFunc(ve, run::gen258, primReal(), "change2", formal(tripleArray2(), "a", false, false));
+ addFunc(ve, run::gen243, realArray(), "curlSpecifier", formal(primGuide(), "g", false, false), formal(primInt(), "t", false, false));
+#line 3017 "runtime.in"
+ addFunc(ve, run::gen244, primGuide(), "reverse", formal(primGuide(), "g", false, false));
+#line 3071 "runtime.in"
+ addFunc(ve, run::gen245, primVoid(), "_draw", formal(primPicture(), "f", false, false), formal(primPath3(), "g", false, false), formal(primPen(), "p", false, false));
+#line 3079 "runtime.in"
+ addFunc(ve, run::gen246, primVoid(), "draw", formal(primPicture(), "f", false, false), formal(tripleArray2(), "g", false, false), formal(primBoolean(), "straight", false, false), formal(penArray() , "p", false, false), formal(primReal(), "opacity", false, false), formal(primReal(), "shininess", false, false), formal(primReal(), "granularity", false, false), formal(primTriple(), "normal", false, false), formal(primBoolean(), "lighton", false, false), formal(penArray() , "colors", false, false));
+#line 3087 "runtime.in"
+ addFunc(ve, run::gen247, primTriple(), "min3", formal(primPicture(), "f", false, false));
+#line 3092 "runtime.in"
+ addFunc(ve, run::gen248, primTriple(), "max3", formal(primPicture(), "f", false, false));
+#line 3097 "runtime.in"
+ addFunc(ve, run::gen249, primPair(), "min", formal(primPicture(), "f", false, false), formal(realArray2(), "t", false, false));
#line 3105 "runtime.in"
- addFunc(ve, run::gen259, primBoolean(), "is3D", formal(primPicture(), "f", false, false));
-#line 3110 "runtime.in"
- addFunc(ve, run::gen260, primPair(), "bezier", formal(primPair(), "a", false, false), formal(primPair(), "b", false, false), formal(primPair(), "c", false, false), formal(primPair(), "d", false, false), formal(primReal(), "t", false, false));
-#line 3117 "runtime.in"
- addFunc(ve, run::gen261, primPair(), "bezierP", formal(primPair(), "a", false, false), formal(primPair(), "b", false, false), formal(primPair(), "c", false, false), formal(primPair(), "d", false, false), formal(primReal(), "t", false, false));
-#line 3122 "runtime.in"
- addFunc(ve, run::gen262, primPair(), "bezierPP", formal(primPair(), "a", false, false), formal(primPair(), "b", false, false), formal(primPair(), "c", false, false), formal(primPair(), "d", false, false), formal(primReal(), "t", false, false));
-#line 3127 "runtime.in"
- addFunc(ve, run::gen263, primPair(), "bezierPPP", formal(primPair(), "a", false, false), formal(primPair(), "b", false, false), formal(primPair(), "c", false, false), formal(primPair(), "d", false, false));
-#line 3132 "runtime.in"
- addFunc(ve, run::gen264, primTriple(), "bezier", formal(primTriple(), "a", false, false), formal(primTriple(), "b", false, false), formal(primTriple(), "c", false, false), formal(primTriple(), "d", false, false), formal(primReal(), "t", false, false));
+ addFunc(ve, run::gen250, primPair(), "max", formal(primPicture(), "f", false, false), formal(realArray2(), "t", false, false));
+#line 3113 "runtime.in"
+ addFunc(ve, run::gen251, primPair(), "minratio", formal(primPicture(), "f", false, false));
+#line 3118 "runtime.in"
+ addFunc(ve, run::gen252, primPair(), "maxratio", formal(primPicture(), "f", false, false));
+#line 3123 "runtime.in"
+ addFunc(ve, run::gen253, primReal(), "minbound", formal(realArray(), "a", false, false), formal(primReal(), "b", false, false));
+#line 3131 "runtime.in"
+ addFunc(ve, run::gen254, primReal(), "maxbound", formal(realArray(), "a", false, false), formal(primReal(), "b", false, false));
#line 3139 "runtime.in"
- addFunc(ve, run::gen265, primTriple(), "bezierP", formal(primTriple(), "a", false, false), formal(primTriple(), "b", false, false), formal(primTriple(), "c", false, false), formal(primTriple(), "d", false, false), formal(primReal(), "t", false, false));
-#line 3144 "runtime.in"
- addFunc(ve, run::gen266, primTriple(), "bezierPP", formal(primTriple(), "a", false, false), formal(primTriple(), "b", false, false), formal(primTriple(), "c", false, false), formal(primTriple(), "d", false, false), formal(primReal(), "t", false, false));
-#line 3149 "runtime.in"
- addFunc(ve, run::gen267, primTriple(), "bezierPPP", formal(primTriple(), "a", false, false), formal(primTriple(), "b", false, false), formal(primTriple(), "c", false, false), formal(primTriple(), "d", false, false));
-#line 3162 "runtime.in"
- addFunc(ve, run::gen269, primInt(), "length", formal(primString(), "s", false, false));
-#line 3167 "runtime.in"
- addFunc(ve, run::gen270, primInt(), "find", formal(primString(), "s", false, false), formal(primString() , "t", false, false), formal(primInt(), "pos", true, false));
-#line 3173 "runtime.in"
- addFunc(ve, run::gen271, primInt(), "rfind", formal(primString(), "s", false, false), formal(primString() , "t", false, false), formal(primInt(), "pos", true, false));
-#line 3179 "runtime.in"
- addFunc(ve, run::gen272, primString() , "reverse", formal(primString() , "s", false, false));
-#line 3185 "runtime.in"
- addFunc(ve, run::gen273, primString() , "insert", formal(primString() , "s", false, false), formal(primInt(), "pos", false, false), formal(primString() , "t", false, false));
-#line 3192 "runtime.in"
- addFunc(ve, run::gen274, primString() , "substr", formal(primString(), "s", false, false), formal(primInt(), "pos", false, false), formal(primInt(), "n", true, false));
+ addFunc(ve, run::gen255, primPair(), "minbound", formal(tripleArray(), "a", false, false), formal(realArray2(), "t", false, false), formal(primPair(), "b", false, false));
+#line 3150 "runtime.in"
+ addFunc(ve, run::gen256, primPair(), "maxbound", formal(tripleArray(), "a", false, false), formal(realArray2(), "t", false, false), formal(primPair(), "b", false, false));
+#line 3161 "runtime.in"
+ addFunc(ve, run::gen257, primPair(), "max", formal(primPath3(), "g", false, false), formal(realArray2(), "t", false, false));
+#line 3169 "runtime.in"
+ addFunc(ve, run::gen258, primPair(), "min", formal(primPath3(), "g", false, false), formal(realArray2(), "t", false, false));
+#line 3177 "runtime.in"
+ addFunc(ve, run::gen259, primReal(), "change2", formal(tripleArray2(), "a", false, false));
#line 3199 "runtime.in"
- addFunc(ve, run::gen275, primString() , "erase", formal(primString() , "s", false, false), formal(primInt(), "pos", false, false), formal(primInt(), "n", false, false));
-#line 3206 "runtime.in"
- addFunc(ve, run::gen276, primString() , "downcase", formal(primString() , "s", false, false));
-#line 3212 "runtime.in"
- addFunc(ve, run::gen277, primString() , "upcase", formal(primString() , "s", false, false));
-#line 3218 "runtime.in"
- addFunc(ve, run::gen278, primString() , "replace", formal(primString(), "s", false, false), formal(stringArray2(), "translate", false, false));
-#line 3245 "runtime.in"
- addFunc(ve, run::gen279, primString() , "format", formal(primString(), "format", false, false), formal(primInt(), "x", false, false));
-#line 3260 "runtime.in"
- addFunc(ve, run::gen280, primString() , "format", formal(primString(), "format", false, false), formal(primReal(), "x", false, false), formal(primString() , "locale", true, false));
-#line 3378 "runtime.in"
- addFunc(ve, run::gen281, primInt(), "hex", formal(primString() , "s", false, false));
-#line 3389 "runtime.in"
- addFunc(ve, run::gen282, primString() , "string", formal(primInt(), "x", false, false));
-#line 3396 "runtime.in"
- addFunc(ve, run::gen283, primString() , "string", formal(primReal(), "x", false, false), formal(primInt(), "digits", true, false));
-#line 3404 "runtime.in"
- addFunc(ve, run::gen284, primString() , "time", formal(primString() , "format", true, false));
-#line 3415 "runtime.in"
- addFunc(ve, run::gen285, primString() , "time", formal(primInt(), "seconds", false, false), formal(primString() , "format", true, false));
-#line 3428 "runtime.in"
- addFunc(ve, run::gen286, primInt(), "seconds", formal(primString() , "t", true, false), formal(primString() , "format", true, false));
-#line 3440 "runtime.in"
- addFunc(ve, run::gen287, realArray(), "_cputime");
-#line 3454 "runtime.in"
- addFunc(ve, run::gen288, primReal(), "^", formal(primReal(), "x", false, false), formal(primInt(), "y", false, false));
-#line 3462 "runtime.in"
- addFunc(ve, run::gen289, primPair(), "^", formal(primPair(), "z", false, false), formal(primInt(), "y", false, false));
-#line 3467 "runtime.in"
- addFunc(ve, run::gen290, primInt(), "quotient", formal(primInt(), "x", false, false), formal(primInt(), "y", false, false));
-#line 3475 "runtime.in"
- addFunc(ve, run::gen291, primInt(), "abs", formal(primInt(), "x", false, false));
-#line 3480 "runtime.in"
- addFunc(ve, run::gen292, primInt(), "sgn", formal(primReal(), "x", false, false));
-#line 3485 "runtime.in"
- addFunc(ve, run::gen293, primInt(), "rand");
+ addFunc(ve, run::gen260, primBoolean(), "is3D", formal(primPicture(), "f", false, false));
+#line 3204 "runtime.in"
+ addFunc(ve, run::gen261, primPair(), "bezier", formal(primPair(), "a", false, false), formal(primPair(), "b", false, false), formal(primPair(), "c", false, false), formal(primPair(), "d", false, false), formal(primReal(), "t", false, false));
+#line 3211 "runtime.in"
+ addFunc(ve, run::gen262, primPair(), "bezierP", formal(primPair(), "a", false, false), formal(primPair(), "b", false, false), formal(primPair(), "c", false, false), formal(primPair(), "d", false, false), formal(primReal(), "t", false, false));
+#line 3216 "runtime.in"
+ addFunc(ve, run::gen263, primPair(), "bezierPP", formal(primPair(), "a", false, false), formal(primPair(), "b", false, false), formal(primPair(), "c", false, false), formal(primPair(), "d", false, false), formal(primReal(), "t", false, false));
+#line 3221 "runtime.in"
+ addFunc(ve, run::gen264, primPair(), "bezierPPP", formal(primPair(), "a", false, false), formal(primPair(), "b", false, false), formal(primPair(), "c", false, false), formal(primPair(), "d", false, false));
+#line 3226 "runtime.in"
+ addFunc(ve, run::gen265, primTriple(), "bezier", formal(primTriple(), "a", false, false), formal(primTriple(), "b", false, false), formal(primTriple(), "c", false, false), formal(primTriple(), "d", false, false), formal(primReal(), "t", false, false));
+#line 3233 "runtime.in"
+ addFunc(ve, run::gen266, primTriple(), "bezierP", formal(primTriple(), "a", false, false), formal(primTriple(), "b", false, false), formal(primTriple(), "c", false, false), formal(primTriple(), "d", false, false), formal(primReal(), "t", false, false));
+#line 3238 "runtime.in"
+ addFunc(ve, run::gen267, primTriple(), "bezierPP", formal(primTriple(), "a", false, false), formal(primTriple(), "b", false, false), formal(primTriple(), "c", false, false), formal(primTriple(), "d", false, false), formal(primReal(), "t", false, false));
+#line 3243 "runtime.in"
+ addFunc(ve, run::gen268, primTriple(), "bezierPPP", formal(primTriple(), "a", false, false), formal(primTriple(), "b", false, false), formal(primTriple(), "c", false, false), formal(primTriple(), "d", false, false));
+#line 3256 "runtime.in"
+ addFunc(ve, run::gen270, primInt(), "length", formal(primString(), "s", false, false));
+#line 3261 "runtime.in"
+ addFunc(ve, run::gen271, primInt(), "find", formal(primString(), "s", false, false), formal(primString() , "t", false, false), formal(primInt(), "pos", true, false));
+#line 3267 "runtime.in"
+ addFunc(ve, run::gen272, primInt(), "rfind", formal(primString(), "s", false, false), formal(primString() , "t", false, false), formal(primInt(), "pos", true, false));
+#line 3273 "runtime.in"
+ addFunc(ve, run::gen273, primString() , "reverse", formal(primString() , "s", false, false));
+#line 3279 "runtime.in"
+ addFunc(ve, run::gen274, primString() , "insert", formal(primString() , "s", false, false), formal(primInt(), "pos", false, false), formal(primString() , "t", false, false));
+#line 3286 "runtime.in"
+ addFunc(ve, run::gen275, primString() , "substr", formal(primString(), "s", false, false), formal(primInt(), "pos", false, false), formal(primInt(), "n", true, false));
+#line 3293 "runtime.in"
+ addFunc(ve, run::gen276, primString() , "erase", formal(primString() , "s", false, false), formal(primInt(), "pos", false, false), formal(primInt(), "n", false, false));
+#line 3300 "runtime.in"
+ addFunc(ve, run::gen277, primString() , "downcase", formal(primString() , "s", false, false));
+#line 3306 "runtime.in"
+ addFunc(ve, run::gen278, primString() , "upcase", formal(primString() , "s", false, false));
+#line 3312 "runtime.in"
+ addFunc(ve, run::gen279, primString() , "replace", formal(primString(), "s", false, false), formal(stringArray2(), "translate", false, false));
+#line 3339 "runtime.in"
+ addFunc(ve, run::gen280, primString() , "format", formal(primString(), "format", false, false), formal(primInt(), "x", false, false));
+#line 3354 "runtime.in"
+ addFunc(ve, run::gen281, primString() , "format", formal(primString(), "format", false, false), formal(primReal(), "x", false, false), formal(primString() , "locale", true, false));
+#line 3472 "runtime.in"
+ addFunc(ve, run::gen282, primInt(), "hex", formal(primString() , "s", false, false));
+#line 3483 "runtime.in"
+ addFunc(ve, run::gen283, primString() , "string", formal(primInt(), "x", false, false));
#line 3490 "runtime.in"
- addFunc(ve, run::gen294, primVoid(), "srand", formal(primInt(), "seed", false, false));
-#line 3495 "runtime.in"
- addFunc(ve, run::gen295, primReal(), "unitrand");
-#line 3501 "runtime.in"
- addFunc(ve, run::gen296, primInt(), "ceil", formal(primReal(), "x", false, false));
-#line 3506 "runtime.in"
- addFunc(ve, run::gen297, primInt(), "floor", formal(primReal(), "x", false, false));
-#line 3511 "runtime.in"
- addFunc(ve, run::gen298, primInt(), "round", formal(primReal(), "x", false, false));
-#line 3517 "runtime.in"
- addFunc(ve, run::gen299, primInt(), "Ceil", formal(primReal(), "x", false, false));
+ addFunc(ve, run::gen284, primString() , "string", formal(primReal(), "x", false, false), formal(primInt(), "digits", true, false));
+#line 3498 "runtime.in"
+ addFunc(ve, run::gen285, primString() , "time", formal(primString() , "format", true, false));
+#line 3509 "runtime.in"
+ addFunc(ve, run::gen286, primString() , "time", formal(primInt(), "seconds", false, false), formal(primString() , "format", true, false));
#line 3522 "runtime.in"
- addFunc(ve, run::gen300, primInt(), "Floor", formal(primReal(), "x", false, false));
-#line 3527 "runtime.in"
- addFunc(ve, run::gen301, primInt(), "Round", formal(primReal(), "x", false, false));
-#line 3532 "runtime.in"
- addFunc(ve, run::gen302, primReal(), "fmod", formal(primReal(), "x", false, false), formal(primReal(), "y", false, false));
-#line 3538 "runtime.in"
- addFunc(ve, run::gen303, primReal(), "atan2", formal(primReal(), "y", false, false), formal(primReal(), "x", false, false));
-#line 3543 "runtime.in"
- addFunc(ve, run::gen304, primReal(), "hypot", formal(primReal(), "x", false, false), formal(primReal(), "y", false, false));
+ addFunc(ve, run::gen287, primInt(), "seconds", formal(primString() , "t", true, false), formal(primString() , "format", true, false));
+#line 3534 "runtime.in"
+ addFunc(ve, run::gen288, realArray(), "_cputime");
#line 3548 "runtime.in"
- addFunc(ve, run::gen305, primReal(), "remainder", formal(primReal(), "x", false, false), formal(primReal(), "y", false, false));
-#line 3553 "runtime.in"
- addFunc(ve, run::gen306, primReal(), "J", formal(primInt(), "n", false, false), formal(primReal(), "x", false, false));
-#line 3558 "runtime.in"
- addFunc(ve, run::gen307, primReal(), "Y", formal(primInt(), "n", false, false), formal(primReal(), "x", false, false));
-#line 3563 "runtime.in"
- addFunc(ve, run::gen308, primReal(), "erf", formal(primReal(), "x", false, false));
-#line 3568 "runtime.in"
- addFunc(ve, run::gen309, primReal(), "erfc", formal(primReal(), "x", false, false));
-#line 3573 "runtime.in"
- addFunc(ve, run::gen310, primInt(), "factorial", formal(primInt(), "n", false, false));
-#line 3578 "runtime.in"
- addFunc(ve, run::gen311, primInt(), "choose", formal(primInt(), "n", false, false), formal(primInt(), "k", false, false));
+ addFunc(ve, run::gen289, primReal(), "^", formal(primReal(), "x", false, false), formal(primInt(), "y", false, false));
+#line 3556 "runtime.in"
+ addFunc(ve, run::gen290, primPair(), "^", formal(primPair(), "z", false, false), formal(primInt(), "y", false, false));
+#line 3561 "runtime.in"
+ addFunc(ve, run::gen291, primInt(), "quotient", formal(primInt(), "x", false, false), formal(primInt(), "y", false, false));
+#line 3569 "runtime.in"
+ addFunc(ve, run::gen292, primInt(), "abs", formal(primInt(), "x", false, false));
+#line 3574 "runtime.in"
+ addFunc(ve, run::gen293, primInt(), "sgn", formal(primReal(), "x", false, false));
+#line 3579 "runtime.in"
+ addFunc(ve, run::gen294, primInt(), "rand");
+#line 3584 "runtime.in"
+ addFunc(ve, run::gen295, primVoid(), "srand", formal(primInt(), "seed", false, false));
#line 3589 "runtime.in"
- addFunc(ve, run::gen312, primReal(), "gamma", formal(primReal(), "x", false, false));
-#line 3599 "runtime.in"
- addFunc(ve, run::gen313, primPair(), "gamma", formal(primPair(), "z", false, true));
+ addFunc(ve, run::gen296, primReal(), "unitrand");
+#line 3595 "runtime.in"
+ addFunc(ve, run::gen297, primInt(), "ceil", formal(primReal(), "x", false, false));
+#line 3600 "runtime.in"
+ addFunc(ve, run::gen298, primInt(), "floor", formal(primReal(), "x", false, false));
#line 3605 "runtime.in"
- addFunc(ve, run::gen314, realArray(), "quadraticroots", formal(primReal(), "a", false, false), formal(primReal(), "b", false, false), formal(primReal(), "c", false, false));
-#line 3614 "runtime.in"
- addFunc(ve, run::gen315, pairArray(), "quadraticroots", formal(primPair(), "a", false, true), formal(primPair(), "b", false, true), formal(primPair(), "c", false, true));
-#line 3623 "runtime.in"
- addFunc(ve, run::gen316, realArray(), "cubicroots", formal(primReal(), "a", false, false), formal(primReal(), "b", false, false), formal(primReal(), "c", false, false), formal(primReal(), "d", false, false));
-#line 3633 "runtime.in"
- addFunc(ve, run::gen317, primBoolean(), "==", formal(primTransform(), "a", false, false), formal(primTransform(), "b", false, false));
-#line 3641 "runtime.in"
- addFunc(ve, run::gen318, primBoolean(), "!=", formal(primTransform(), "a", false, false), formal(primTransform(), "b", false, false));
-#line 3646 "runtime.in"
- addFunc(ve, run::gen319, primTransform(), "+", formal(primTransform(), "a", false, false), formal(primTransform(), "b", false, false));
-#line 3651 "runtime.in"
- addFunc(ve, run::gen320, primTransform(), "*", formal(primTransform(), "a", false, false), formal(primTransform(), "b", false, false));
-#line 3656 "runtime.in"
- addFunc(ve, run::gen321, primPair(), "*", formal(primTransform(), "t", false, false), formal(primPair(), "z", false, false));
-#line 3661 "runtime.in"
- addFunc(ve, run::gen322, primPath(), "*", formal(primTransform(), "t", false, false), formal(primPath(), "g", false, false));
-#line 3666 "runtime.in"
- addFunc(ve, run::gen323, primPen(), "*", formal(primTransform(), "t", false, false), formal(primPen(), "p", false, false));
-#line 3671 "runtime.in"
- addFunc(ve, run::gen324, primPicture(), "*", formal(primTransform(), "t", false, false), formal(primPicture(), "f", false, false));
-#line 3676 "runtime.in"
- addFunc(ve, run::gen325, primPicture(), "*", formal(realArray2(), "t", false, false), formal(primPicture(), "f", false, false));
-#line 3681 "runtime.in"
- addFunc(ve, run::gen326, primTransform(), "^", formal(primTransform(), "t", false, false), formal(primInt(), "n", false, false));
-#line 3728 "runtime.in"
- addFunc(ve, run::gen334, primTransform(), "shift", formal(primTransform(), "t", false, false));
-#line 3733 "runtime.in"
- addFunc(ve, run::gen335, primTransform(), "shiftless", formal(primTransform(), "t", false, false));
-#line 3738 "runtime.in"
+ addFunc(ve, run::gen299, primInt(), "round", formal(primReal(), "x", false, false));
+#line 3611 "runtime.in"
+ addFunc(ve, run::gen300, primInt(), "Ceil", formal(primReal(), "x", false, false));
+#line 3616 "runtime.in"
+ addFunc(ve, run::gen301, primInt(), "Floor", formal(primReal(), "x", false, false));
+#line 3621 "runtime.in"
+ addFunc(ve, run::gen302, primInt(), "Round", formal(primReal(), "x", false, false));
+#line 3626 "runtime.in"
+ addFunc(ve, run::gen303, primReal(), "fmod", formal(primReal(), "x", false, false), formal(primReal(), "y", false, false));
+#line 3632 "runtime.in"
+ addFunc(ve, run::gen304, primReal(), "atan2", formal(primReal(), "y", false, false), formal(primReal(), "x", false, false));
+#line 3637 "runtime.in"
+ addFunc(ve, run::gen305, primReal(), "hypot", formal(primReal(), "x", false, false), formal(primReal(), "y", false, false));
+#line 3642 "runtime.in"
+ addFunc(ve, run::gen306, primReal(), "remainder", formal(primReal(), "x", false, false), formal(primReal(), "y", false, false));
+#line 3647 "runtime.in"
+ addFunc(ve, run::gen307, primReal(), "J", formal(primInt(), "n", false, false), formal(primReal(), "x", false, false));
+#line 3652 "runtime.in"
+ addFunc(ve, run::gen308, primReal(), "Y", formal(primInt(), "n", false, false), formal(primReal(), "x", false, false));
+#line 3657 "runtime.in"
+ addFunc(ve, run::gen309, primReal(), "erf", formal(primReal(), "x", false, false));
+#line 3662 "runtime.in"
+ addFunc(ve, run::gen310, primReal(), "erfc", formal(primReal(), "x", false, false));
+#line 3667 "runtime.in"
+ addFunc(ve, run::gen311, primInt(), "factorial", formal(primInt(), "n", false, false));
+#line 3672 "runtime.in"
+ addFunc(ve, run::gen312, primInt(), "choose", formal(primInt(), "n", false, false), formal(primInt(), "k", false, false));
+#line 3683 "runtime.in"
+ addFunc(ve, run::gen313, primReal(), "gamma", formal(primReal(), "x", false, false));
+#line 3693 "runtime.in"
+ addFunc(ve, run::gen314, primPair(), "gamma", formal(primPair(), "z", false, true));
+#line 3699 "runtime.in"
+ addFunc(ve, run::gen315, realArray(), "quadraticroots", formal(primReal(), "a", false, false), formal(primReal(), "b", false, false), formal(primReal(), "c", false, false));
+#line 3708 "runtime.in"
+ addFunc(ve, run::gen316, pairArray(), "quadraticroots", formal(primPair(), "a", false, true), formal(primPair(), "b", false, true), formal(primPair(), "c", false, true));
+#line 3717 "runtime.in"
+ addFunc(ve, run::gen317, realArray(), "cubicroots", formal(primReal(), "a", false, false), formal(primReal(), "b", false, false), formal(primReal(), "c", false, false), formal(primReal(), "d", false, false));
+#line 3727 "runtime.in"
+ addFunc(ve, run::gen318, primBoolean(), "==", formal(primTransform(), "a", false, false), formal(primTransform(), "b", false, false));
+#line 3735 "runtime.in"
+ addFunc(ve, run::gen319, primBoolean(), "!=", formal(primTransform(), "a", false, false), formal(primTransform(), "b", false, false));
+#line 3740 "runtime.in"
+ addFunc(ve, run::gen320, primTransform(), "+", formal(primTransform(), "a", false, false), formal(primTransform(), "b", false, false));
+#line 3745 "runtime.in"
+ addFunc(ve, run::gen321, primTransform(), "*", formal(primTransform(), "a", false, false), formal(primTransform(), "b", false, false));
+#line 3750 "runtime.in"
+ addFunc(ve, run::gen322, primPair(), "*", formal(primTransform(), "t", false, false), formal(primPair(), "z", false, false));
+#line 3755 "runtime.in"
+ addFunc(ve, run::gen323, primPath(), "*", formal(primTransform(), "t", false, false), formal(primPath(), "g", false, false));
+#line 3760 "runtime.in"
+ addFunc(ve, run::gen324, primPen(), "*", formal(primTransform(), "t", false, false), formal(primPen(), "p", false, false));
+#line 3765 "runtime.in"
+ addFunc(ve, run::gen325, primPicture(), "*", formal(primTransform(), "t", false, false), formal(primPicture(), "f", false, false));
+#line 3770 "runtime.in"
+ addFunc(ve, run::gen326, primPicture(), "*", formal(realArray2(), "t", false, false), formal(primPicture(), "f", false, false));
+#line 3775 "runtime.in"
+ addFunc(ve, run::gen327, primTransform(), "^", formal(primTransform(), "t", false, false), formal(primInt(), "n", false, false));
+#line 3822 "runtime.in"
+ addFunc(ve, run::gen335, primTransform(), "shift", formal(primTransform(), "t", false, false));
+#line 3827 "runtime.in"
+ addFunc(ve, run::gen336, primTransform(), "shiftless", formal(primTransform(), "t", false, false));
+#line 3832 "runtime.in"
addFunc(ve, run::transformIdentity, primTransform(), "identity");
-#line 3743 "runtime.in"
- addFunc(ve, run::gen337, primTransform(), "inverse", formal(primTransform(), "t", false, false));
-#line 3748 "runtime.in"
- addFunc(ve, run::gen338, primTransform(), "shift", formal(primPair(), "z", false, false));
-#line 3753 "runtime.in"
- addFunc(ve, run::gen339, primTransform(), "shift", formal(primReal(), "x", false, false), formal(primReal(), "y", false, false));
-#line 3758 "runtime.in"
- addFunc(ve, run::gen340, primTransform(), "xscale", formal(primReal(), "x", false, false));
-#line 3763 "runtime.in"
- addFunc(ve, run::gen341, primTransform(), "yscale", formal(primReal(), "y", false, false));
-#line 3768 "runtime.in"
- addFunc(ve, run::gen342, primTransform(), "scale", formal(primReal(), "x", false, false));
-#line 3773 "runtime.in"
- addFunc(ve, run::gen343, primTransform(), "scale", formal(primReal(), "x", false, false), formal(primReal(), "y", false, false));
-#line 3778 "runtime.in"
- addFunc(ve, run::gen344, primTransform(), "slant", formal(primReal(), "s", false, false));
-#line 3783 "runtime.in"
- addFunc(ve, run::gen345, primTransform(), "rotate", formal(primReal(), "angle", false, false), formal(primPair(), "z", true, false));
-#line 3788 "runtime.in"
- addFunc(ve, run::gen346, primTransform(), "reflect", formal(primPair(), "a", false, false), formal(primPair(), "b", false, false));
-#line 3811 "runtime.in"
+#line 3837 "runtime.in"
+ addFunc(ve, run::gen338, primTransform(), "inverse", formal(primTransform(), "t", false, false));
+#line 3842 "runtime.in"
+ addFunc(ve, run::gen339, primTransform(), "shift", formal(primPair(), "z", false, false));
+#line 3847 "runtime.in"
+ addFunc(ve, run::gen340, primTransform(), "shift", formal(primReal(), "x", false, false), formal(primReal(), "y", false, false));
+#line 3852 "runtime.in"
+ addFunc(ve, run::gen341, primTransform(), "xscale", formal(primReal(), "x", false, false));
+#line 3857 "runtime.in"
+ addFunc(ve, run::gen342, primTransform(), "yscale", formal(primReal(), "y", false, false));
+#line 3862 "runtime.in"
+ addFunc(ve, run::gen343, primTransform(), "scale", formal(primReal(), "x", false, false));
+#line 3867 "runtime.in"
+ addFunc(ve, run::gen344, primTransform(), "scale", formal(primReal(), "x", false, false), formal(primReal(), "y", false, false));
+#line 3872 "runtime.in"
+ addFunc(ve, run::gen345, primTransform(), "slant", formal(primReal(), "s", false, false));
+#line 3877 "runtime.in"
+ addFunc(ve, run::gen346, primTransform(), "rotate", formal(primReal(), "angle", false, false), formal(primPair(), "z", true, false));
+#line 3882 "runtime.in"
+ addFunc(ve, run::gen347, primTransform(), "reflect", formal(primPair(), "a", false, false), formal(primPair(), "b", false, false));
+#line 3905 "runtime.in"
addFunc(ve, run::pairXPart, primReal(), "xpart", formal(primPair(), "z", false, false));
-#line 3816 "runtime.in"
+#line 3910 "runtime.in"
addFunc(ve, run::pairYPart, primReal(), "ypart", formal(primPair(), "z", false, false));
-#line 3821 "runtime.in"
- addFunc(ve, run::gen352, primReal(), "length", formal(primPair(), "z", false, false));
-#line 3826 "runtime.in"
- addFunc(ve, run::gen353, primReal(), "abs", formal(primPair(), "z", false, false));
-#line 3831 "runtime.in"
- addFunc(ve, run::gen354, primPair(), "sqrt", formal(primPair(), "z", false, true));
-#line 3836 "runtime.in"
- addFunc(ve, run::gen355, primReal(), "angle", formal(primPair(), "z", false, false), formal(primBoolean(), "warn", true, false));
-#line 3843 "runtime.in"
- addFunc(ve, run::gen356, primReal(), "degrees", formal(primPair(), "z", false, false), formal(primBoolean(), "warn", true, false));
-#line 3850 "runtime.in"
- addFunc(ve, run::gen357, primReal(), "radians", formal(primReal(), "degrees", false, false));
-#line 3856 "runtime.in"
- addFunc(ve, run::gen358, primReal(), "degrees", formal(primReal(), "radians", false, false));
-#line 3862 "runtime.in"
- addFunc(ve, run::gen359, primReal(), "Degrees", formal(primReal(), "radians", false, false));
-#line 3868 "runtime.in"
- addFunc(ve, run::gen360, primReal(), "Sin", formal(primReal(), "deg", false, false));
-#line 3873 "runtime.in"
- addFunc(ve, run::gen361, primReal(), "Cos", formal(primReal(), "deg", false, false));
-#line 3878 "runtime.in"
- addFunc(ve, run::gen362, primReal(), "Tan", formal(primReal(), "deg", false, false));
-#line 3883 "runtime.in"
- addFunc(ve, run::gen363, primReal(), "aSin", formal(primReal(), "x", false, false));
-#line 3888 "runtime.in"
- addFunc(ve, run::gen364, primReal(), "aCos", formal(primReal(), "x", false, false));
-#line 3893 "runtime.in"
- addFunc(ve, run::gen365, primReal(), "aTan", formal(primReal(), "x", false, false));
-#line 3898 "runtime.in"
- addFunc(ve, run::gen366, primPair(), "unit", formal(primPair(), "z", false, false));
-#line 3903 "runtime.in"
- addFunc(ve, run::gen367, primPair(), "dir", formal(primReal(), "degrees", false, false));
-#line 3908 "runtime.in"
- addFunc(ve, run::gen368, primPair(), "dir", formal(primPair(), "z", false, true));
-#line 3913 "runtime.in"
- addFunc(ve, run::gen369, primPair(), "expi", formal(primReal(), "angle", false, false));
-#line 3918 "runtime.in"
- addFunc(ve, run::gen370, primPair(), "exp", formal(primPair(), "z", false, true));
-#line 3923 "runtime.in"
- addFunc(ve, run::gen371, primPair(), "log", formal(primPair(), "z", false, true));
-#line 3928 "runtime.in"
- addFunc(ve, run::gen372, primPair(), "sin", formal(primPair(), "z", false, true));
-#line 3933 "runtime.in"
- addFunc(ve, run::gen373, primPair(), "cos", formal(primPair(), "z", false, true));
-#line 3938 "runtime.in"
- addFunc(ve, run::gen374, primPair(), "conj", formal(primPair(), "z", false, false));
-#line 3943 "runtime.in"
- addFunc(ve, run::gen375, primPair(), "realmult", formal(primPair(), "z", false, false), formal(primPair(), "w", false, false));
-#line 3948 "runtime.in"
- addFunc(ve, run::gen376, primTriple(), "realmult", formal(primTriple(), "u", false, false), formal(primTriple(), "v", false, false));
-#line 3953 "runtime.in"
- addFunc(ve, run::gen377, primReal(), "dot", formal(primPair(), "z", false, true), formal(primPair(), "w", false, true));
-#line 3973 "runtime.in"
+#line 3915 "runtime.in"
+ addFunc(ve, run::gen353, primReal(), "length", formal(primPair(), "z", false, false));
+#line 3920 "runtime.in"
+ addFunc(ve, run::gen354, primReal(), "abs", formal(primPair(), "z", false, false));
+#line 3925 "runtime.in"
+ addFunc(ve, run::gen355, primPair(), "sqrt", formal(primPair(), "z", false, true));
+#line 3930 "runtime.in"
+ addFunc(ve, run::gen356, primReal(), "angle", formal(primPair(), "z", false, false), formal(primBoolean(), "warn", true, false));
+#line 3937 "runtime.in"
+ addFunc(ve, run::gen357, primReal(), "degrees", formal(primPair(), "z", false, false), formal(primBoolean(), "warn", true, false));
+#line 3944 "runtime.in"
+ addFunc(ve, run::gen358, primReal(), "radians", formal(primReal(), "degrees", false, false));
+#line 3950 "runtime.in"
+ addFunc(ve, run::gen359, primReal(), "degrees", formal(primReal(), "radians", false, false));
+#line 3956 "runtime.in"
+ addFunc(ve, run::gen360, primReal(), "Degrees", formal(primReal(), "radians", false, false));
+#line 3962 "runtime.in"
+ addFunc(ve, run::gen361, primReal(), "Sin", formal(primReal(), "deg", false, false));
+#line 3967 "runtime.in"
+ addFunc(ve, run::gen362, primReal(), "Cos", formal(primReal(), "deg", false, false));
+#line 3972 "runtime.in"
+ addFunc(ve, run::gen363, primReal(), "Tan", formal(primReal(), "deg", false, false));
+#line 3977 "runtime.in"
+ addFunc(ve, run::gen364, primReal(), "aSin", formal(primReal(), "x", false, false));
+#line 3982 "runtime.in"
+ addFunc(ve, run::gen365, primReal(), "aCos", formal(primReal(), "x", false, false));
+#line 3987 "runtime.in"
+ addFunc(ve, run::gen366, primReal(), "aTan", formal(primReal(), "x", false, false));
+#line 3992 "runtime.in"
+ addFunc(ve, run::gen367, primPair(), "unit", formal(primPair(), "z", false, false));
+#line 3997 "runtime.in"
+ addFunc(ve, run::gen368, primPair(), "dir", formal(primReal(), "degrees", false, false));
+#line 4002 "runtime.in"
+ addFunc(ve, run::gen369, primPair(), "dir", formal(primPair(), "z", false, true));
+#line 4007 "runtime.in"
+ addFunc(ve, run::gen370, primPair(), "expi", formal(primReal(), "angle", false, false));
+#line 4012 "runtime.in"
+ addFunc(ve, run::gen371, primPair(), "exp", formal(primPair(), "z", false, true));
+#line 4017 "runtime.in"
+ addFunc(ve, run::gen372, primPair(), "log", formal(primPair(), "z", false, true));
+#line 4022 "runtime.in"
+ addFunc(ve, run::gen373, primPair(), "sin", formal(primPair(), "z", false, true));
+#line 4027 "runtime.in"
+ addFunc(ve, run::gen374, primPair(), "cos", formal(primPair(), "z", false, true));
+#line 4032 "runtime.in"
+ addFunc(ve, run::gen375, primPair(), "conj", formal(primPair(), "z", false, false));
+#line 4037 "runtime.in"
+ addFunc(ve, run::gen376, primPair(), "realmult", formal(primPair(), "z", false, false), formal(primPair(), "w", false, false));
+#line 4042 "runtime.in"
+ addFunc(ve, run::gen377, primTriple(), "realmult", formal(primTriple(), "u", false, false), formal(primTriple(), "v", false, false));
+#line 4047 "runtime.in"
+ addFunc(ve, run::gen378, primReal(), "dot", formal(primPair(), "z", false, true), formal(primPair(), "w", false, true));
+#line 4067 "runtime.in"
addFunc(ve, run::tripleXPart, primReal(), "xpart", formal(primTriple(), "v", false, false));
-#line 3978 "runtime.in"
+#line 4072 "runtime.in"
addFunc(ve, run::tripleYPart, primReal(), "ypart", formal(primTriple(), "v", false, false));
-#line 3983 "runtime.in"
+#line 4077 "runtime.in"
addFunc(ve, run::tripleZPart, primReal(), "zpart", formal(primTriple(), "v", false, false));
-#line 3988 "runtime.in"
- addFunc(ve, run::gen383, primTriple(), "*", formal(primReal(), "x", false, false), formal(primTriple(), "v", false, false));
-#line 3993 "runtime.in"
- addFunc(ve, run::gen384, primTriple(), "*", formal(primTriple(), "v", false, false), formal(primReal(), "x", false, false));
-#line 3998 "runtime.in"
- addFunc(ve, run::gen385, primTriple(), "/", formal(primTriple(), "v", false, false), formal(primReal(), "x", false, false));
-#line 4003 "runtime.in"
- addFunc(ve, run::gen386, primReal(), "length", formal(primTriple(), "v", false, false));
-#line 4008 "runtime.in"
- addFunc(ve, run::gen387, primReal(), "abs", formal(primTriple(), "v", false, false));
-#line 4013 "runtime.in"
- addFunc(ve, run::gen388, primReal(), "polar", formal(primTriple(), "v", false, false));
-#line 4018 "runtime.in"
- addFunc(ve, run::gen389, primReal(), "azimuth", formal(primTriple(), "v", false, false));
-#line 4023 "runtime.in"
- addFunc(ve, run::gen390, primReal(), "colatitude", formal(primTriple(), "v", false, false));
-#line 4028 "runtime.in"
- addFunc(ve, run::gen391, primReal(), "latitude", formal(primTriple(), "v", false, false));
-#line 4033 "runtime.in"
- addFunc(ve, run::gen392, primReal(), "longitude", formal(primTriple(), "v", false, false), formal(primBoolean(), "warn", true, false));
-#line 4040 "runtime.in"
- addFunc(ve, run::gen393, primTriple(), "unit", formal(primTriple(), "v", false, false));
-#line 4045 "runtime.in"
- addFunc(ve, run::gen394, primReal(), "dot", formal(primTriple(), "u", false, false), formal(primTriple(), "v", false, false));
-#line 4050 "runtime.in"
- addFunc(ve, run::gen395, primTriple(), "cross", formal(primTriple(), "u", false, false), formal(primTriple(), "v", false, false));
-#line 4055 "runtime.in"
- addFunc(ve, run::gen396, primTriple(), "expi", formal(primReal(), "polar", false, false), formal(primReal(), "azimuth", false, false));
-#line 4060 "runtime.in"
- addFunc(ve, run::gen397, primTriple(), "dir", formal(primReal(), "colatitude", false, false), formal(primReal(), "longitude", false, false));
-#line 4065 "runtime.in"
- addFunc(ve, run::gen398, primVoid(), "atupdate", formal(voidFunction(), "f", false, false));
-#line 4073 "runtime.in"
- addFunc(ve, run::gen399, voidFunction(), "atupdate");
-#line 4078 "runtime.in"
- addFunc(ve, run::gen400, primVoid(), "atexit", formal(voidFunction(), "f", false, false));
-#line 4083 "runtime.in"
- addFunc(ve, run::gen401, voidFunction(), "atexit");
-#line 4088 "runtime.in"
- addFunc(ve, run::gen402, primVoid(), "atbreakpoint", formal(breakpointFunction(), "f", false, false));
-#line 4093 "runtime.in"
- addFunc(ve, run::gen403, primVoid(), "breakpoint", formal(primCode(), "s", true, false));
-#line 4098 "runtime.in"
- addFunc(ve, run::gen404, primString() , "locatefile", formal(primString() , "file", false, false));
-#line 4103 "runtime.in"
- addFunc(ve, run::gen405, primVoid(), "stop", formal(primString() , "file", false, false), formal(primInt(), "line", false, false), formal(primCode(), "s", true, false));
-#line 4111 "runtime.in"
- addFunc(ve, run::gen406, primVoid(), "breakpoints");
-#line 4117 "runtime.in"
- addFunc(ve, run::gen407, primVoid(), "clear", formal(primString() , "file", false, false), formal(primInt(), "line", false, false));
-#line 4123 "runtime.in"
- addFunc(ve, run::gen408, primVoid(), "clear");
-#line 4128 "runtime.in"
- addFunc(ve, run::gen409, primString() , "stripdirectory", formal(primString(), "s", false, false));
-#line 4134 "runtime.in"
- addFunc(ve, run::gen410, primString() , "stripfile", formal(primString(), "s", false, false));
-#line 4140 "runtime.in"
- addFunc(ve, run::gen411, primString() , "stripextension", formal(primString(), "s", false, false));
-#line 4146 "runtime.in"
- addFunc(ve, run::gen412, primInt(), "convert", formal(primString() , "args", true, false), formal(primString() , "file", true, false), formal(primString() , "format", true, false));
-#line 4164 "runtime.in"
- addFunc(ve, run::gen413, primInt(), "animate", formal(primString() , "args", true, false), formal(primString() , "file", true, false), formal(primString() , "format", true, false));
-#line 4180 "runtime.in"
- addFunc(ve, run::gen414, primInt(), "delete", formal(primString(), "s", false, false));
-#line 4190 "runtime.in"
- addFunc(ve, run::gen415, primInt(), "rename", formal(primString(), "from", false, false), formal(primString(), "to", false, false));
-#line 4489 "runtime.in"
- addFunc(ve, run::gen446, IntArray(), "complement", formal(IntArray(), "a", false, false), formal(primInt(), "n", false, false));
-#line 4521 "runtime.in"
- addFunc(ve, run::gen448, IntArray(), "sequence", formal(primInt(), "n", false, false));
-#line 4554 "runtime.in"
- addFunc(ve, run::gen451, primBoolean(), "all", formal(boolArray(), "a", false, false));
-#line 4563 "runtime.in"
- addFunc(ve, run::gen452, boolArray(), "!", formal(boolArray(), "a", false, false));
-#line 4572 "runtime.in"
- addFunc(ve, run::gen453, primInt(), "sum", formal(boolArray(), "a", false, false));
-#line 4735 "runtime.in"
- addFunc(ve, run::gen460, primInt(), "find", formal(boolArray(), "a", false, false), formal(primInt(), "n", true, false));
-#line 4755 "runtime.in"
- addFunc(ve, run::gen461, primBoolean(), "==", formal(realArray2(), "a", false, false), formal(realArray2(), "b", false, false));
-#line 4800 "runtime.in"
- addFunc(ve, run::gen463, realArray2(), "identity", formal(primInt(), "n", false, false));
-#line 4823 "runtime.in"
- addFunc(ve, run::gen465, realArray2(), "inverse", formal(realArray2(), "a", false, false));
-#line 4915 "runtime.in"
- addFunc(ve, run::gen466, realArray(), "solve", formal(realArray2(), "a", false, false), formal(realArray(), "b", false, false), formal(primBoolean(), "warn", true, false));
-#line 4966 "runtime.in"
- addFunc(ve, run::gen467, realArray2(), "solve", formal(realArray2(), "a", false, false), formal(realArray2(), "b", false, false), formal(primBoolean(), "warn", true, false));
-#line 5030 "runtime.in"
- addFunc(ve, run::gen468, primReal(), "determinant", formal(realArray2(), "a", false, false));
-#line 5046 "runtime.in"
- addFunc(ve, run::gen469, realArray(), "*", formal(realArray2(), "a", false, false), formal(realArray(), "b", false, false));
+#line 4082 "runtime.in"
+ addFunc(ve, run::gen384, primTriple(), "*", formal(primReal(), "x", false, false), formal(primTriple(), "v", false, false));
+#line 4087 "runtime.in"
+ addFunc(ve, run::gen385, primTriple(), "*", formal(primTriple(), "v", false, false), formal(primReal(), "x", false, false));
+#line 4092 "runtime.in"
+ addFunc(ve, run::gen386, primTriple(), "/", formal(primTriple(), "v", false, false), formal(primReal(), "x", false, false));
+#line 4097 "runtime.in"
+ addFunc(ve, run::gen387, primReal(), "length", formal(primTriple(), "v", false, false));
+#line 4102 "runtime.in"
+ addFunc(ve, run::gen388, primReal(), "abs", formal(primTriple(), "v", false, false));
+#line 4107 "runtime.in"
+ addFunc(ve, run::gen389, primReal(), "polar", formal(primTriple(), "v", false, false), formal(primBoolean(), "warn", true, false));
+#line 4113 "runtime.in"
+ addFunc(ve, run::gen390, primReal(), "azimuth", formal(primTriple(), "v", false, false), formal(primBoolean(), "warn", true, false));
+#line 4119 "runtime.in"
+ addFunc(ve, run::gen391, primReal(), "colatitude", formal(primTriple(), "v", false, false), formal(primBoolean(), "warn", true, false));
+#line 4125 "runtime.in"
+ addFunc(ve, run::gen392, primReal(), "latitude", formal(primTriple(), "v", false, false), formal(primBoolean(), "warn", true, false));
+#line 4131 "runtime.in"
+ addFunc(ve, run::gen393, primReal(), "longitude", formal(primTriple(), "v", false, false), formal(primBoolean(), "warn", true, false));
+#line 4138 "runtime.in"
+ addFunc(ve, run::gen394, primTriple(), "unit", formal(primTriple(), "v", false, false));
+#line 4143 "runtime.in"
+ addFunc(ve, run::gen395, primReal(), "dot", formal(primTriple(), "u", false, false), formal(primTriple(), "v", false, false));
+#line 4148 "runtime.in"
+ addFunc(ve, run::gen396, primTriple(), "cross", formal(primTriple(), "u", false, false), formal(primTriple(), "v", false, false));
+#line 4153 "runtime.in"
+ addFunc(ve, run::gen397, primTriple(), "expi", formal(primReal(), "polar", false, false), formal(primReal(), "azimuth", false, false));
+#line 4158 "runtime.in"
+ addFunc(ve, run::gen398, primTriple(), "dir", formal(primReal(), "colatitude", false, false), formal(primReal(), "longitude", false, false));
+#line 4163 "runtime.in"
+ addFunc(ve, run::gen399, primVoid(), "atupdate", formal(voidFunction(), "f", false, false));
+#line 4171 "runtime.in"
+ addFunc(ve, run::gen400, voidFunction(), "atupdate");
+#line 4176 "runtime.in"
+ addFunc(ve, run::gen401, primVoid(), "atexit", formal(voidFunction(), "f", false, false));
+#line 4181 "runtime.in"
+ addFunc(ve, run::gen402, voidFunction(), "atexit");
+#line 4186 "runtime.in"
+ addFunc(ve, run::gen403, primVoid(), "atbreakpoint", formal(breakpointFunction(), "f", false, false));
+#line 4191 "runtime.in"
+ addFunc(ve, run::gen404, primVoid(), "breakpoint", formal(primCode(), "s", true, false));
+#line 4196 "runtime.in"
+ addFunc(ve, run::gen405, primString() , "locatefile", formal(primString() , "file", false, false));
+#line 4201 "runtime.in"
+ addFunc(ve, run::gen406, primVoid(), "stop", formal(primString() , "file", false, false), formal(primInt(), "line", false, false), formal(primCode(), "s", true, false));
+#line 4209 "runtime.in"
+ addFunc(ve, run::gen407, primVoid(), "breakpoints");
+#line 4215 "runtime.in"
+ addFunc(ve, run::gen408, primVoid(), "clear", formal(primString() , "file", false, false), formal(primInt(), "line", false, false));
+#line 4221 "runtime.in"
+ addFunc(ve, run::gen409, primVoid(), "clear");
+#line 4226 "runtime.in"
+ addFunc(ve, run::gen410, primString() , "stripdirectory", formal(primString(), "s", false, false));
+#line 4232 "runtime.in"
+ addFunc(ve, run::gen411, primString() , "stripfile", formal(primString(), "s", false, false));
+#line 4238 "runtime.in"
+ addFunc(ve, run::gen412, primString() , "stripextension", formal(primString(), "s", false, false));
+#line 4244 "runtime.in"
+ addFunc(ve, run::gen413, primInt(), "convert", formal(primString() , "args", true, false), formal(primString() , "file", true, false), formal(primString() , "format", true, false));
+#line 4262 "runtime.in"
+ addFunc(ve, run::gen414, primInt(), "animate", formal(primString() , "args", true, false), formal(primString() , "file", true, false), formal(primString() , "format", true, false));
+#line 4278 "runtime.in"
+ addFunc(ve, run::gen415, primInt(), "delete", formal(primString(), "s", false, false));
+#line 4288 "runtime.in"
+ addFunc(ve, run::gen416, primInt(), "rename", formal(primString(), "from", false, false), formal(primString(), "to", false, false));
+#line 4587 "runtime.in"
+ addFunc(ve, run::gen447, IntArray(), "complement", formal(IntArray(), "a", false, false), formal(primInt(), "n", false, false));
+#line 4619 "runtime.in"
+ addFunc(ve, run::gen449, IntArray(), "sequence", formal(primInt(), "n", false, false));
+#line 4652 "runtime.in"
+ addFunc(ve, run::gen452, primBoolean(), "all", formal(boolArray(), "a", false, false));
+#line 4661 "runtime.in"
+ addFunc(ve, run::gen453, boolArray(), "!", formal(boolArray(), "a", false, false));
+#line 4670 "runtime.in"
+ addFunc(ve, run::gen454, primInt(), "sum", formal(boolArray(), "a", false, false));
+#line 4833 "runtime.in"
+ addFunc(ve, run::gen461, primInt(), "find", formal(boolArray(), "a", false, false), formal(primInt(), "n", true, false));
+#line 4853 "runtime.in"
+ addFunc(ve, run::gen462, primBoolean(), "==", formal(realArray2(), "a", false, false), formal(realArray2(), "b", false, false));
+#line 4898 "runtime.in"
+ addFunc(ve, run::gen464, realArray2(), "identity", formal(primInt(), "n", false, false));
+#line 4921 "runtime.in"
+ addFunc(ve, run::gen466, realArray2(), "inverse", formal(realArray2(), "a", false, false));
+#line 5013 "runtime.in"
+ addFunc(ve, run::gen467, realArray(), "solve", formal(realArray2(), "a", false, false), formal(realArray(), "b", false, false), formal(primBoolean(), "warn", true, false));
#line 5064 "runtime.in"
- addFunc(ve, run::gen470, realArray2(), "*", formal(realArray2(), "a", false, false), formal(realArray2(), "b", false, false));
-#line 5099 "runtime.in"
- addFunc(ve, run::gen471, primTriple(), "*", formal(realArray2(), "t", false, false), formal(primTriple(), "v", false, false));
-#line 5104 "runtime.in"
- addFunc(ve, run::gen472, primPair(), "project", formal(primTriple(), "v", false, false), formal(realArray2(), "t", false, false));
-#line 5129 "runtime.in"
- addFunc(ve, run::gen473, primReal(), "dot", formal(realArray(), "a", false, false), formal(realArray(), "b", false, false));
-#line 5139 "runtime.in"
- addFunc(ve, run::gen474, realArray(), "tridiagonal", formal(realArray(), "a", false, false), formal(realArray(), "b", false, false), formal(realArray(), "c", false, false), formal(realArray(), "f", false, false));
-#line 5243 "runtime.in"
- addFunc(ve, run::gen475, primReal(), "newton", formal(primInt(), "iterations", true, false), formal(realRealFunction(), "f", false, false), formal(realRealFunction(), "fprime", false, false), formal(primReal(), "x", false, false), formal(primBoolean(), "verbose", true, false));
-#line 5290 "runtime.in"
- addFunc(ve, run::gen476, primReal(), "newton", formal(primInt(), "iterations", true, false), formal(realRealFunction(), "f", false, false), formal(realRealFunction(), "fprime", false, false), formal(primReal(), "x1", false, false), formal(primReal(), "x2", false, false), formal(primBoolean(), "verbose", true, false));
-#line 5372 "runtime.in"
- addFunc(ve, run::gen477, primReal(), "simpson", formal(realRealFunction(), "f", false, false), formal(primReal(), "a", false, false), formal(primReal(), "b", false, false), formal(primReal(), "acc", true, false), formal(primReal(), "dxmax", true, false));
-#line 5414 "runtime.in"
- addFunc(ve, run::gen479, IntArray2(), "triangulate", formal(pairArray(), "z", false, false));
-#line 5449 "runtime.in"
- addFunc(ve, run::gen480, primBoolean(), "==", formal(primFile(), "a", false, false), formal(primFile(), "b", false, false));
-#line 5457 "runtime.in"
- addFunc(ve, run::gen481, primBoolean(), "!=", formal(primFile(), "a", false, false), formal(primFile(), "b", false, false));
-#line 5467 "runtime.in"
- addFunc(ve, run::gen483, primFile(), "input", formal(primString() , "name", false, false), formal(primBoolean(), "check", true, false), formal(primString() , "comment", true, false));
-#line 5475 "runtime.in"
- addFunc(ve, run::gen484, primFile(), "output", formal(primString() , "name", false, false), formal(primBoolean(), "update", true, false), formal(primString() , "comment", true, false));
-#line 5487 "runtime.in"
- addFunc(ve, run::gen485, primFile(), "xinput", formal(primString() , "name", false, false), formal(primBoolean(), "check", true, false));
-#line 5501 "runtime.in"
- addFunc(ve, run::gen486, primFile(), "xoutput", formal(primString() , "name", false, false), formal(primBoolean(), "update", true, false));
-#line 5519 "runtime.in"
- addFunc(ve, run::gen487, primFile(), "binput", formal(primString() , "name", false, false), formal(primBoolean(), "check", true, false));
-#line 5526 "runtime.in"
- addFunc(ve, run::gen488, primFile(), "boutput", formal(primString() , "name", false, false), formal(primBoolean(), "update", true, false));
-#line 5536 "runtime.in"
- addFunc(ve, run::gen489, primBoolean(), "eof", formal(primFile(), "file", false, false));
-#line 5541 "runtime.in"
- addFunc(ve, run::gen490, primBoolean(), "eol", formal(primFile(), "file", false, false));
-#line 5546 "runtime.in"
- addFunc(ve, run::gen491, primBoolean(), "error", formal(primFile(), "file", false, false));
-#line 5551 "runtime.in"
- addFunc(ve, run::gen492, primVoid(), "clear", formal(primFile(), "file", false, false));
-#line 5556 "runtime.in"
- addFunc(ve, run::gen493, primVoid(), "close", formal(primFile(), "file", false, false));
-#line 5561 "runtime.in"
- addFunc(ve, run::gen494, primInt(), "precision", formal(primFile(), "file", true, false), formal(primInt(), "digits", true, false));
-#line 5567 "runtime.in"
- addFunc(ve, run::gen495, primVoid(), "flush", formal(primFile(), "file", false, false));
-#line 5572 "runtime.in"
- addFunc(ve, run::gen496, primString() , "getc", formal(primFile(), "file", false, false));
-#line 5581 "runtime.in"
- addFunc(ve, run::gen497, primInt(), "tell", formal(primFile(), "file", false, false));
-#line 5586 "runtime.in"
- addFunc(ve, run::gen498, primVoid(), "seek", formal(primFile(), "file", false, false), formal(primInt(), "pos", false, false));
-#line 5591 "runtime.in"
- addFunc(ve, run::gen499, primVoid(), "seekeof", formal(primFile(), "file", false, false));
-#line 5596 "runtime.in"
- addFunc(ve, run::gen500, primFile(), "dimension", formal(primFile(), "file", false, false), formal(primInt(), "nx", false, false));
-#line 5603 "runtime.in"
- addFunc(ve, run::gen501, primFile(), "dimension", formal(primFile(), "file", false, false), formal(primInt(), "nx", false, false), formal(primInt(), "ny", false, false));
-#line 5609 "runtime.in"
- addFunc(ve, run::gen502, primFile(), "dimension", formal(primFile(), "file", false, false), formal(primInt(), "nx", false, false), formal(primInt(), "ny", false, false), formal(primInt(), "nz", false, false));
-#line 5615 "runtime.in"
- addFunc(ve, run::gen503, primFile(), "csv", formal(primFile(), "file", false, false), formal(primBoolean(), "b", true, false));
-#line 5622 "runtime.in"
- addFunc(ve, run::gen504, primFile(), "word", formal(primFile(), "file", false, false), formal(primBoolean(), "b", true, false));
-#line 5629 "runtime.in"
- addFunc(ve, run::gen505, primFile(), "line", formal(primFile(), "file", false, false), formal(primBoolean(), "b", true, false));
-#line 5636 "runtime.in"
- addFunc(ve, run::gen506, primFile(), "single", formal(primFile(), "file", false, false), formal(primBoolean(), "b", true, false));
+ addFunc(ve, run::gen468, realArray2(), "solve", formal(realArray2(), "a", false, false), formal(realArray2(), "b", false, false), formal(primBoolean(), "warn", true, false));
+#line 5128 "runtime.in"
+ addFunc(ve, run::gen469, primReal(), "determinant", formal(realArray2(), "a", false, false));
+#line 5144 "runtime.in"
+ addFunc(ve, run::gen470, realArray(), "*", formal(realArray2(), "a", false, false), formal(realArray(), "b", false, false));
+#line 5162 "runtime.in"
+ addFunc(ve, run::gen471, realArray2(), "*", formal(realArray2(), "a", false, false), formal(realArray2(), "b", false, false));
+#line 5197 "runtime.in"
+ addFunc(ve, run::gen472, primTriple(), "*", formal(realArray2(), "t", false, false), formal(primTriple(), "v", false, false));
+#line 5202 "runtime.in"
+ addFunc(ve, run::gen473, primPair(), "project", formal(primTriple(), "v", false, false), formal(realArray2(), "t", false, false));
+#line 5227 "runtime.in"
+ addFunc(ve, run::gen474, primReal(), "dot", formal(realArray(), "a", false, false), formal(realArray(), "b", false, false));
+#line 5237 "runtime.in"
+ addFunc(ve, run::gen475, realArray(), "tridiagonal", formal(realArray(), "a", false, false), formal(realArray(), "b", false, false), formal(realArray(), "c", false, false), formal(realArray(), "f", false, false));
+#line 5341 "runtime.in"
+ addFunc(ve, run::gen476, primReal(), "newton", formal(primInt(), "iterations", true, false), formal(realRealFunction(), "f", false, false), formal(realRealFunction(), "fprime", false, false), formal(primReal(), "x", false, false), formal(primBoolean(), "verbose", true, false));
+#line 5388 "runtime.in"
+ addFunc(ve, run::gen477, primReal(), "newton", formal(primInt(), "iterations", true, false), formal(realRealFunction(), "f", false, false), formal(realRealFunction(), "fprime", false, false), formal(primReal(), "x1", false, false), formal(primReal(), "x2", false, false), formal(primBoolean(), "verbose", true, false));
+#line 5470 "runtime.in"
+ addFunc(ve, run::gen478, primReal(), "simpson", formal(realRealFunction(), "f", false, false), formal(primReal(), "a", false, false), formal(primReal(), "b", false, false), formal(primReal(), "acc", true, false), formal(primReal(), "dxmax", true, false));
+#line 5512 "runtime.in"
+ addFunc(ve, run::gen480, IntArray2(), "triangulate", formal(pairArray(), "z", false, false));
+#line 5547 "runtime.in"
+ addFunc(ve, run::gen481, primBoolean(), "==", formal(primFile(), "a", false, false), formal(primFile(), "b", false, false));
+#line 5555 "runtime.in"
+ addFunc(ve, run::gen482, primBoolean(), "!=", formal(primFile(), "a", false, false), formal(primFile(), "b", false, false));
+#line 5565 "runtime.in"
+ addFunc(ve, run::gen484, primFile(), "input", formal(primString() , "name", false, false), formal(primBoolean(), "check", true, false), formal(primString() , "comment", true, false));
+#line 5573 "runtime.in"
+ addFunc(ve, run::gen485, primFile(), "output", formal(primString() , "name", false, false), formal(primBoolean(), "update", true, false), formal(primString() , "comment", true, false));
+#line 5585 "runtime.in"
+ addFunc(ve, run::gen486, primFile(), "xinput", formal(primString() , "name", false, false), formal(primBoolean(), "check", true, false));
+#line 5599 "runtime.in"
+ addFunc(ve, run::gen487, primFile(), "xoutput", formal(primString() , "name", false, false), formal(primBoolean(), "update", true, false));
+#line 5617 "runtime.in"
+ addFunc(ve, run::gen488, primFile(), "binput", formal(primString() , "name", false, false), formal(primBoolean(), "check", true, false));
+#line 5624 "runtime.in"
+ addFunc(ve, run::gen489, primFile(), "boutput", formal(primString() , "name", false, false), formal(primBoolean(), "update", true, false));
+#line 5634 "runtime.in"
+ addFunc(ve, run::gen490, primBoolean(), "eof", formal(primFile(), "file", false, false));
+#line 5639 "runtime.in"
+ addFunc(ve, run::gen491, primBoolean(), "eol", formal(primFile(), "file", false, false));
#line 5644 "runtime.in"
- addFunc(ve, run::gen507, primFile(), "single", formal(primFile(), "file", false, false), formal(primReal(), "x", false, false), formal(primBoolean(), "b", true, false));
-#line 5652 "runtime.in"
- addFunc(ve, run::gen508, primFile(), "single", formal(primFile(), "file", false, false), formal(primInt(), "x", false, false), formal(primBoolean(), "b", true, false));
-#line 5660 "runtime.in"
- addFunc(ve, run::gen509, primFile(), "read1", formal(primFile(), "file", false, false));
-#line 5667 "runtime.in"
- addFunc(ve, run::gen510, primFile(), "read2", formal(primFile(), "file", false, false));
-#line 5674 "runtime.in"
- addFunc(ve, run::gen511, primFile(), "read3", formal(primFile(), "file", false, false));
-#line 5681 "runtime.in"
- addFunc(ve, run::gen512, stringArray(), "history", formal(primString() , "name", false, false), formal(primInt(), "n", true, false));
-#line 5714 "runtime.in"
- addFunc(ve, run::gen513, stringArray(), "history", formal(primInt(), "n", true, false));
-#line 5725 "runtime.in"
- addFunc(ve, run::gen514, primString() , "readline", formal(primString() , "prompt", true, false), formal(primString() , "name", true, false), formal(primBoolean(), "tabcompletion", true, false));
-#line 5769 "runtime.in"
- addFunc(ve, run::gen515, primVoid(), "saveline", formal(primString() , "name", false, false), formal(primString() , "value", false, false), formal(primBoolean(), "store", true, false));
-#line 5799 "runtime.in"
- addFunc(ve, run::gen516, primVoid(), "generate_random_backtrace");
-#line 5808 "runtime.in"
- addFunc(ve, run::gen517, primVoid(), "print_random_addresses", formal(primInt(), "n", true, false));
+ addFunc(ve, run::gen492, primBoolean(), "error", formal(primFile(), "file", false, false));
+#line 5649 "runtime.in"
+ addFunc(ve, run::gen493, primVoid(), "clear", formal(primFile(), "file", false, false));
+#line 5654 "runtime.in"
+ addFunc(ve, run::gen494, primVoid(), "close", formal(primFile(), "file", false, false));
+#line 5659 "runtime.in"
+ addFunc(ve, run::gen495, primInt(), "precision", formal(primFile(), "file", true, false), formal(primInt(), "digits", true, false));
+#line 5665 "runtime.in"
+ addFunc(ve, run::gen496, primVoid(), "flush", formal(primFile(), "file", false, false));
+#line 5670 "runtime.in"
+ addFunc(ve, run::gen497, primString() , "getc", formal(primFile(), "file", false, false));
+#line 5679 "runtime.in"
+ addFunc(ve, run::gen498, primInt(), "tell", formal(primFile(), "file", false, false));
+#line 5684 "runtime.in"
+ addFunc(ve, run::gen499, primVoid(), "seek", formal(primFile(), "file", false, false), formal(primInt(), "pos", false, false));
+#line 5689 "runtime.in"
+ addFunc(ve, run::gen500, primVoid(), "seekeof", formal(primFile(), "file", false, false));
+#line 5694 "runtime.in"
+ addFunc(ve, run::gen501, primFile(), "dimension", formal(primFile(), "file", false, false), formal(primInt(), "nx", false, false));
+#line 5701 "runtime.in"
+ addFunc(ve, run::gen502, primFile(), "dimension", formal(primFile(), "file", false, false), formal(primInt(), "nx", false, false), formal(primInt(), "ny", false, false));
+#line 5707 "runtime.in"
+ addFunc(ve, run::gen503, primFile(), "dimension", formal(primFile(), "file", false, false), formal(primInt(), "nx", false, false), formal(primInt(), "ny", false, false), formal(primInt(), "nz", false, false));
+#line 5713 "runtime.in"
+ addFunc(ve, run::gen504, primFile(), "csv", formal(primFile(), "file", false, false), formal(primBoolean(), "b", true, false));
+#line 5720 "runtime.in"
+ addFunc(ve, run::gen505, primFile(), "word", formal(primFile(), "file", false, false), formal(primBoolean(), "b", true, false));
+#line 5727 "runtime.in"
+ addFunc(ve, run::gen506, primFile(), "line", formal(primFile(), "file", false, false), formal(primBoolean(), "b", true, false));
+#line 5734 "runtime.in"
+ addFunc(ve, run::gen507, primFile(), "single", formal(primFile(), "file", false, false), formal(primBoolean(), "b", true, false));
+#line 5742 "runtime.in"
+ addFunc(ve, run::gen508, primFile(), "single", formal(primFile(), "file", false, false), formal(primReal(), "x", false, false), formal(primBoolean(), "b", true, false));
+#line 5750 "runtime.in"
+ addFunc(ve, run::gen509, primFile(), "single", formal(primFile(), "file", false, false), formal(primInt(), "x", false, false), formal(primBoolean(), "b", true, false));
+#line 5758 "runtime.in"
+ addFunc(ve, run::gen510, primFile(), "read1", formal(primFile(), "file", false, false));
+#line 5765 "runtime.in"
+ addFunc(ve, run::gen511, primFile(), "read2", formal(primFile(), "file", false, false));
+#line 5772 "runtime.in"
+ addFunc(ve, run::gen512, primFile(), "read3", formal(primFile(), "file", false, false));
+#line 5779 "runtime.in"
+ addFunc(ve, run::gen513, stringArray(), "history", formal(primString() , "name", false, false), formal(primInt(), "n", true, false));
+#line 5812 "runtime.in"
+ addFunc(ve, run::gen514, stringArray(), "history", formal(primInt(), "n", true, false));
+#line 5823 "runtime.in"
+ addFunc(ve, run::gen515, primString() , "readline", formal(primString() , "prompt", true, false), formal(primString() , "name", true, false), formal(primBoolean(), "tabcompletion", true, false));
+#line 5867 "runtime.in"
+ addFunc(ve, run::gen516, primVoid(), "saveline", formal(primString() , "name", false, false), formal(primString() , "value", false, false), formal(primBoolean(), "store", true, false));
+#line 5897 "runtime.in"
+ addFunc(ve, run::gen517, primVoid(), "generate_random_backtrace");
+#line 5906 "runtime.in"
+ addFunc(ve, run::gen518, primVoid(), "print_random_addresses", formal(primInt(), "n", true, false));
}
} // namespace trans