1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
|
batchmode;
delimiters ();
def -- = {curl 1}..{curl 1} enddef;
showstats;
begingroup
save MF, TF, MS, TS;
interim warningcheck:=0;
vardef MF(text p)(text q) = show p/q (4096) enddef;
vardef TF(text p)(text q) = show p/4096 (q), p/4096 (-q) enddef;
vardef MS(expr p, q) = show p/q, (-p)/q, p/(-q), (-p)/(-q) enddef;
vardef TS(expr p, q) = show p*q, (-p)*q, p*(-q), (-p)*(-q) enddef;
% Hard cases for arithmetic routines (taken from mp/mathtest.c)
TF(1618.00821)(19313.86989); % p*q=(10^9+1)*2^27-6 => 7629.39453
TS(12.91296)(12.91296); % => 166.74463
MF(4793.68996)(5477.58977); % => 3584.59740
MS(12.91296)(12.91296); % => 1.00000
TF(2048.00000)(15258.78908); % p*q=(10^9+1)*2^27 => 7629.39455
TF(2644.17595)(11818.42685); % p*q=(10^9+1)*2^27+2 => 7629.39455
TF(1164.89432)(26826.46791); % p*q=(10^9+1)*2^27+2^14+2 => 7629.39455
TF(3310.94371)(9438.39665); % p*q=(10^9+1)*2^27-2^14-3 => 7629.39453
TS(13107.20000)(2.50000); % p*q=2^47-2^15 => *
TS(124.77580)(262.61502); % p*q=2^47-2^15+6 => *
TS(1038.61232)(31.54979); % p*q=2^47-2^15-1 => 32767.99998
TS(64.03127)(511.75000); % p*q=2^47-2^14 => *
TS(39.46178)(830.37315); % p*q=2^47-2^14+1 => *
TS(1207.05434)(27.14708); % p*q=2^47-2^14-1 => *
TS(7.25000)(4519.72414); % p*q=2^47-3*2^14 => 32767.99998
TS(215.31056)(152.18947); % p*q=2^47-3*2^14+1 => 32767.99998
TS(14833.24916)(2.20909); % p*q=2^47-3*2^14-1 => 32767.99998
TS(339.62500)(22.46417); % p*q=(10^9+1)*2^15 => 7629.39455
TS(47.62218)(160.20676); % p*q=(10^9+1)*2^15+2 => 7629.39455
TS(74.64186)(102.21335); % p*q=(10^9+1)*2^15-2 => 7629.39453
TF(2.50000)(13107.20000); % p*q=2^47-2^15 => 8.00000
TF(47.62218)(160.20676); % p*q=(10^9+1)*2^15+2 => 1.86264
MF(7629.39455)(8192.00000); % 2^29*p+q=2q*(5*10^8+1)+0 => 3814.69728
MF(15258.78906)(24998.04695); % 2^29*p+q=2q*(163852801)-5 => 2500.19531
MF(15258.78906)(20546.77141); % 2^29*p+q=2q*(199350055)+1 => 3041.84044
MF(15258.78906)(30447.06313); % 2^29*p+q=2q*(134528575)+2^14-5 => 2052.74315
MS(15258.78908)(2.00000); % 2^17*p+q=2q*(5*10^8+1)+0 => 7629.39455
MS(15258.78906)(166.56779); % 2^17*p+q=2q*(6003562)-1 => 91.60707
MS(15258.78906)(394.96335); % 2^17*p+q=2q*(2531881)+2 => 38.63344
MS(15258.78906)(42.34901); % 2^17*p+q=2q*(23613301)-2^14-1 => 360.31036
show oct "77777", hex "400a";
endgroup;
showstats;
path triang, circ;
triang = (-3,-2)--(7,-2)--(0,7)--cycle;
circ = makepath(pencircle shifted (0,.5) scaled 10);
showstats;
picture pic, pic[];
showstats;
begingroup
save sh, dr;
vardef sh expr p =
show p, stroked p, filled p, textual p, clipped p, bounded p, length p;
showstats;
enddef;
vardef dr text t =
pp3:=nullpicture;
addto pp3 t;
sh pp3;
enddef;
save pp; picture pp[];
showstats;
pic = pp2 = nullpicture;
sh pic;
clip pic to makepath(pencircle scaled 100);
sh pic; % clipped
setbounds pp2 to triang;
sh pp2; % bounded()
dr doublepath (1,1)--(3,2) withpen pencircle; % stroked
addto pic also pp3;
sh pic; % clipped(), stroked
show ulcorner pic, lrcorner pic;
setbounds pic to triang rotated 90;
sh pic; show llcorner pic, urcorner pic;
sh pic; % bounded(clipped(), stroked)
dr contour triang scaled 12 withcolor (.4,.4,.4); % filled
addto pic also pp3;
sh pic; % bounded(clipped(), stroked), filled
dr also "A56" infont "trapf"; % text
addto pic also pp3 rotated 30 shifted (2,3);
sh pic; % bounded(clipped(), stroked), filled, textual
dr doublepath (4,5)--(8,1) withpen pencircle xscaled 0;
addto pic also pp3;
sh pic; % bounded(clipped(), stroked), filled, textual, stroked
sh "non-picture";
endgroup;
showstats;
for p within pic: show p; endfor
showstats;
pic1 := pic;
clip pic1 to circ;
show length pic1;
showstats;
addto pic1 also pic dashed nullpicture;
show pic1, length pic1;
showstats;
for p within pic1:
show stroked p, filled p, textual p, clipped p, bounded p;
show pathpart p, penpart p, dashpart p, fontpart p, textpart p;
show (redpart p, greenpart p, bluepart p);
show (xpart p, ypart p), (xxpart p, yxpart p), (xypart p, yypart p);
showstats;
endfor
pic1 := nullpicture;
for p within nullpicture: show p; endfor
for p within "B34" infont "trapf": show p; endfor
showstats;
shipout pic;
charcode:=1;
prologues:=1;
shipout pic rotated 90;
string s,EOF;
EOF=char 0;
numeric n;
n = 0;
showstats;
forever: n:=n+1;
s:= readfrom "mtrap.0";
exitif (s=EOF) or (n>300);
if substring (0,14) of s<>"%%CreationDate": show s; fi
endfor
numeric n;
n = 0;
showstats;
forever: n:=n+1;
s := readfrom "mtrap.1";
if n<=2: show s; fi
exitif (s=EOF) or (n>300);
endfor
show n;
showstats;
show readfrom "mtrap.17";
for n=1 step 1 until 3:
s := readfrom "mtrap.0"; show s;
endfor
showstats;
for i=1 step 1 until 10:
write decimal i & " " & decimal(i*i) to "writeo";
write substring(0,i) of " " & "*" to "writeo.2";
endfor
showstats;
write EOF to "writeo";
s:=readfrom "mtrap.0"; % Ignore creation date
for i=1 step 1 until 3:
show readfrom "writeo", readfrom "mtrap.0";
endfor
showstats;
write "Clobbered." to "writeo";
tracingstats:=1;
begingroup % Force string pool compaction
save s; string s[];
s0="a"; s1="b"; s2="c"; s3="d";
randomseed:=4.34294;
for i=1 step 1 until 200:
s[floor uniformdeviate 4] := substring (0,60) of
(s[floor uniformdeviate 4] & s[floor uniformdeviate 4]);
endfor
show s1;
endgroup;
showstats;
begingroup
numeric n;
interim warningcheck:=1;
n = 12000; show n;
interim warningcheck:=0;
n:= 40000; show n;
endgroup;
showstats;
for x within triangle: show x; endfor
showstats;
write triang to "writeo";
write "triangle" "writeo";
write "triangle" to triang;
showstats;
closefrom "mtrap.0";
string s; s=readfrom "mtrap.0";
show readfrom "mtrap.0"; % should be 2nd line, not 5th line
end
|