÷ƒ’À;è TeX output 1995.03.25:2324‹ÿÿÿÿ úa ‘tÃ.ó2pÚãi( cmssdc10ÝA– ª T›üÕXo‘þñÉrture“T˜estŽŸ$Ç‘pNêfo‘þñÉr‘ ª ó1*à=» manfntÜ()*‘ÿ0ä+,‘þaÈ-.*ŽŸ$’¾+óKñ`y cmr10«bš¸ãy–UUDonald“E.“Kn˜uthŽ¤ ’À HStanford‘UUUniv•¸ãersit“yŽŸ’±÷ (ó!p®0J cmsl10ÌV‘ÿ*ªersion–UU2,“Jan¸ãuary“1990‘ËÜ«)Ž ö ´Ÿè‘ZVgPrograms–òthat“claim“to“bGe“implemen¸ãtations“of“ÜMETÇAFŽ9ONT«84“areŽ¡‘ZVgsuppšGosed–ºto“b˜e“able“to“pro˜cess“the“test“routine“con¸ãtained“in“thisŽ¡‘ZVgrep•Gort,›UUpro“ducing˜the˜outputs˜con¸ãtained˜in˜this˜rep“ort.ŽŽŽŸ#ó|{Ycmr8­The–¦³preparation“of“this“repšhthe“goal“is“to“mak˜e“it“fail“(un˜til“the“bugs“ha˜v˜e“allŽ¡bGeen‘UUfound).Ž¦‘T‘ÿ*ªo–S…write“sucš¸ãh“a“ endish“test“routine,‘‡one“simply“gets“in˜to“a“nast˜y“frame“of“mind“and“tries“to“do“ev˜erythingŽ¡in–_cthe“unexpšGected“w•¸ãa“y‘ÿ*ª.‘ðP“arameters–_cthat“are“normally“p˜ositivš¸ãe“are“set“negativ˜e“or“zero;‘dibGorderline“cases“areŽ¡pushed–«Þto“the“limit;‘ä[delibšGerate“errors“are“made“in“hop˜es“that“the“compiler“will“not“b˜e“able“to“reco•¸ãv“er‘«Þprop˜erlyŽ¡from‘UUthem.Ž¦‘A‘ýuser's–ŽNapplication“tends“to“exercise“50%“of“a“compiler's“logic,‘Ü‹but“m¸ãy“ rst“ endish“tests“tend“toŽ¡impro•¸ãv“e– this“to“abGout“90%.‘X²As“the“next“step“I‘ generally“makš¸ãe“use“of“frequency-coun˜ting“soft˜w˜are“to“iden˜tifyŽ¡the–Binstructions“that“ha•¸ãv“e–Bstill“not“bšGeen“called“up˜on.‘k_Then“I‘Badd“ev¸ãer“more“ endishness“to“the“test“routine,Ž¡un¸ãtil–+Ómore“than“99%“of“the“cošGde“has“b˜een“used“at“least“once.‘cñ(The“remaining“bits“are“things“that“can“o˜ccurŽ¡only–u™if“the“source“program“is“really“h¸ãuge,‘}ªor“if“certain“fatal“errors“are“detected;‘…¼or“they“are“cases“so“similarŽ¡to–UUother“wš¸ãell-tested“things“that“there“can“bGe“little“doubt“of“their“v‘ÿqÇalidit˜y‘ÿ*ª.)Ž¦‘Of–"icourse,‘,™this“is“not“guaranš¸ãteed“to“w˜ork.‘`ÎBut“m˜y“expGerience“in“1960“w˜as“that“only“t˜w˜o“bugs“w˜ere“ev˜erŽ¡found–in“that“­ALGOL‘q«compiler“after“it“correctly“translated“that“original“ endish“test.‘\ÖAnd“one“of“those“bugsŽ¡wš¸ãas–±¨actually“presen˜t“in“the“results“of“the“test;‘ßÑI‘±simply“had“failed“to“notice“that“the“output“w˜as“incorrect.Ž¡Similar–híexpšGeriences“o˜ccurred“later“during“the“60s“and“70s,‘mÓwith“resp˜ect“to“a“few“assem¸ãblers,–mÓcompilers,“andŽ¡sim¸ãulators–UUthat“I“wrote.Ž¦‘This–ç´methošGd“of“debugging,‘ Kcom¸ãbined“with“the“metho˜dology“of“structured“programming“and“informalŽ¡proGofs–Ü¥(otherwise“knoš¸ãwn“as“careful“desk“c˜hec˜king),‘þxleads“to“greater“reliabilit˜y“of“proGduction“soft˜w˜are“thanŽ¡anš¸ãy–zžother“methoGd“I‘z”kno˜w.‘á¡Therefore“I‘z”ha˜v˜e“used“it“in“dev˜eloping“ÜMETÇAFŽ9ONT«84,‘ƒðand“the“main“bulk“of“thisŽ¡repGort–UUis“simply“a“presenš¸ãtation“of“the“test“program“that“w˜as“used“to“get“the“bugs“out“of“ÜMETÇAFŽ9ONT«.Ž¦‘Suc¸ãh–=Üa“test“ le“is“useful“also“after“a“program“has“bšGeen“debugged,‘wýsince“it“can“b˜e“used“to“giv¸ãe“someŽ¡assurance–UUthat“subsequen¸ãt“moGdi cations“don't“mess“things“up.Ž¦‘The–átest“ le“is“called“óßêŸ'EŽ‘ãxX,–has“a“similar“test“ le“called“ÈTRIPŽ‘«,‘®ÿand“I‘œþcouldn't“help“thinking“abGout“Billy“Goat“Gru “and“the“storyŽ¡of–UU\trip,“trap,“trip,“trap."Ž¦‘The›ìcon•¸ãten“ts˜of˜this˜test˜ le˜are˜so˜remote˜from˜what˜pGeople˜actually˜do˜with˜ÜMETÇAFŽ9ONT«,˜I‘ë›feelŽ¡apšGologetic–Šñif“I‘Š¾ha•¸ãv“e–Šñto“explain“the“correct“translation“of“ÈTRAP.MFŽ‘'JÜ«;‘Îhnob˜o˜dy“really“cares“ab˜out“most“of“the“nitt¸ãy-ŽŽŒ‹®Ÿ€«2’ÄFç­INTRÃŽODUCTIONŽ ³Ú ý†Ì&«grittš¸ãy–„írules“that“are“in˜v˜olv˜ed.‘Y‘ÿ*ªet“I‘„ábGeliev˜e“ÈTRAPŽ‘ Ϋexempli es“the“sort“of“test“program“that“has“outstandingŽ¤ diagnostic–UUabilitš¸ãy‘ÿ*ª,“as“explained“abGo˜v˜e.Ž©‘If›58someb•Go“dy˜claims˜to˜ha•¸ãv“e˜a˜correct˜implemen“tation˜of˜ÜMETÇAFŽ9ONT«,˜I‘4þwill˜not˜bGeliev“e˜it˜un“til˜I‘4þseeŽ¡that‘EÈTRAP.MFŽ‘+I÷«is–Etranslated“prop•Gerly‘ÿ*ª.‘lWI‘Eprop“ose,–HIin›Efact,“that˜a˜program˜m•¸ãust˜meet˜t“w“o˜criteria˜bGefore˜it˜canŽ¡justi ably–‘GbšGe“called“ÜMETÇAFŽ9ONT«:“(1)“The“p˜erson“who“wrote“it“m¸ãust“b˜e“happš¸ãy“with“the“w˜a˜y“it“w˜orks“at“hisŽ¡or–UUher“installation;“and“(2)“the“program“m¸ãust“proGduce“the“correct“results“from“ÈTRAP.MFŽ‘(@«.Ž¦‘ÜMETÇAFŽ9ONT–Yk«is“in“the“public“domain,‘špand“its“algorithms“are“published;‘ÛvI'v¸ãe“done“this“since“I‘Y(do“notŽ¡w•¸ãan“t–UÈto“discourage“its“use“bš¸ãy“placing“proprietary“restrictions“on“the“soft˜w˜are.‘s Ho˜w˜ev˜er,‘UåI“don't“w˜an˜t“fault˜yŽ¡imitations–‘Qto“masquerade“as“ÜMETšÇAFŽ9ONT“«proGcessors,‘¸†since“users“w•¸ãan“t–‘QÜMET˜AFŽ9ONT“«to“proGduce“iden¸ãtical“resultsŽ¡on–€di erenš¸ãt“mac˜hines.‘*²Hence“I‘àam“planning“to“do“whatev˜er“I‘àcan“to“suppress“an˜y“systems“that“call“themselv˜esŽ¡ÜMETÇAFŽ9ONT–¥5«without“meeting“conditions“(1)“and“(2).‘agI‘¥ ha•¸ãv“e›¥5cop“yrigh“ted˜the˜programs˜so˜that˜I‘¥ ha“v“e˜someŽ¡cš¸ãhance–'to“forbid“unauthorized“copies;‘6„I‘'explicitly“authorize“cop˜ying“of“correct“ÜMETÇAFŽ9ONT“«implemen˜tations,Ž¡and–UUnot“of“incorrect“ones!Ž¦‘The–O¤remainder“of“this“repšGort“consists“of“app˜endices,‘PÇwhose“con•¸ãten“ts›O¤ough“t˜to˜b•Ge˜describ“ed˜brie y˜here:Ž¦‘AppGendix–3A‘2þexplains“in“detail“hoš¸ãw“to“carry“out“a“test“of“ÜMETÇAFŽ9ONT«,“giv˜en“a“tapGe“that“con˜tains“copiesŽ¡of–UUthe“other“appGendices.Ž¦‘AppšGendix–t.B‘t&is“ÈTRAP.MFŽ‘(4«,‘{äthe“ endish“test“ le“that“has“already“b˜een“men•¸ãtioned.‘ÎRP“eople–t.who“think“thatŽ¡they–ËÈunderstand“ÜMETÇAFŽ9ONT“«are“cš¸ãhallenged“to“see“if“they“kno˜w“what“ÜMETÇAFŽ9ONT“«is“suppGosed“to“do“with“thisŽ¡ le.‘ çPš¸ãeople–Þ`who“kno˜w“only“a“little“abGout“ÜMETÇAFŽ9ONT“«migh˜t“still“ nd“it“in˜teresting“to“study“AppGendix“B,Ž¡just–UUto“get“some“insighš¸ãts“in˜to“the“methoGdology“adv˜oGcated“here.Ž¦‘AppGendix–wC‘vãis“ÈTRAPIN.LOGŽ‘6öý«,‘£Ža“correct“transcript“ le“ÈTRAP.LOGŽ‘.î«that“results“if“ÈINIMFŽ‘.'«is“applied“to“ÈTRAP.MFŽ‘'7«.Ž¡(ÈINIMFŽ‘‡«is–Ò–the“name“of“a“v¸ãersion“of“ÜMETÇAFŽ9ONT“«that“doGes“certain“initializations;‘þ+this“run“of“ÈINIMFŽ‘å«also“createsŽ¡a–UUbinary“base“ le“called“ÈTRAP.BASEŽ‘2•:«.)Ž¦‘AppGendix––BD‘–is“a“correct“transcript“ le“ÈTRAP.LOGŽ‘/,l«that“results“if“ÈINIMFŽ‘lu«or“anš¸ãy“other“v˜ersion“of“ÜMETÇAFŽ9ONTŽ¡«is–UUapplied“to“ÈTRAP.MFŽ‘+j•«with“base“ le“ÈTRAP.BASEŽ‘2•:«.Ž¦‘AppšGendix–ä E‘ãíis“ÈTRAP.TYPŽ‘,ãò«,‘ú²the“sym¸ãb˜olic“vš¸ãersion“of“a“correct“output“ le“ÈTRAP.72270GFŽ‘DÇð«that“w˜as“proGducedŽ¡at–UUthe“same“time“as“the“ÈTRAP.LOGŽ‘0ª’« le“of“AppGendix“D.Ž¦‘AppšGendix–σF‘Ïcis“ÈTRAP.PLŽ‘(n«,‘îthe“sym¸ãb˜olic“vš¸ãersion“of“a“correct“output“ le“ÈTRAP.TFMŽ‘1žî«that“w˜as“proGduced“atŽ¡the–UUsame“time“as“the“ÈTRAP.LOGŽ‘0ª’« le“of“AppGendix“D.Ž¦‘AppšGendix–òWG‘ò/is“ÈTRAP.FOTŽ‘-ò?«,‘˜an“abbreviated“v¸ãersion“of“App˜endix“D‘ò/that“app˜ears“on“the“user's“terminalŽ¡during–UUthe“run“that“proGduces“ÈTRAP.LOGŽ›-U=«,“ÈTRAP.72270GFŽ‘BU1«,“and“ÈTRAP.TFMŽ˜«.Ž¦‘The–ø÷debugging“of“ÜMETÇAFŽ9ONT“«and“the“testing“of“the“adequacy“of“ÈTRAP.MFŽ‘,±Ù«could“not“ha•¸ãv“e–ø÷bGeen“doneŽ¡nearly–:»as“wš¸ãell“as“repGorted“here“except“for“the“magni cen˜t“soft˜w˜are“suppGort“pro˜vided“b˜y“m˜y“colleague“Da˜vidŽ¡R.–iVF‘ÿ*ªucš¸ãhs.‘­ÊIn“particular,‘nVhe“extended“our“loGcal“P˜ascal“compiler“so“that“frequency“coun˜ting“and“a“n˜um˜bGer“ofŽ¡other–UUimpGortanš¸ãt“features“w˜ere“added“to“its“online“debugging“abilities.Ž¦‘The–òGmethošGd“of“testing“adv¸ão˜cated“here“has“one“cš¸ãhief“dicult˜y“that“deserv˜es“commen˜t:‘@@I‘ò.had“to“v˜erify“b˜yŽ¡hand–’Zthat“ÜMETÇAFŽ9ONT“«did“the“righš¸ãt“things“to“ÈTRAP.MFŽ‘(RE«.‘(ÖThis“toGok“man˜y“hours,‘¡›and“pGerhaps“I‘’Jha˜v˜e“missedŽ¡something–r‘(as“I›r‰did“in“1960);‘/I˜m¸ãust“confess“that“I˜ha•¸ãv“e–r‘not“c•¸ãhec“k“ed›r‘ev“ery˜single˜n“um“b•Ger˜in˜App“endices˜D,Ž¡E,–pmand“F.“Ho•¸ãw“ev“er,‘w4I'm–pmwilling“to“paš¸ãy“$81.92“to“the“ rst“ nder“of“an˜y“remaining“bug“in“ÜMETÇAFŽ9ONT«,“and“IŽ¡will–UUbšGe“surprised“if“that“bug“do˜esn't“sho¸ãw“up“also“in“one“of“these“app˜endices.ŽŽŒ‹ÊŸ€’ŽY«­APPENDIX–ÕXA:“HOÃŽW“TO“TEST“ÜMETÇAFŽ9ONT’‘/«3Ž ³Ú ý†Ì&ÂAppQÇendix–ÕTA:“Ho®9w“to“test“ÜMETÇAFŽ9ONTÂ.Ž©Ÿ‘8â«0.Ž‘Let's–‘êassume“that“yš¸ãou“ha˜v˜e“a“tapGe“con˜taining“ÈTRAP.MFŽ‘'QÕ«,‘¸ÿÈTRAPIN.LOGŽ‘78á«,‘¸ÿÈTRAP.LOGŽ–,¸ç«,‘¸ÿÈTRAP.TYPŽ“«,‘¸ÿÈTRAP.PLŽ‘'xê«,‘¸ÿandŽ¤ S‘ÈTRAP.FOTŽ‘=ÿè«,›Jâas–HEin“AppGendices“B,“C,“D,“E,“F,“and“G.“F‘ÿ*ªurthermore,˜let's“suppGose“that“yš¸ãou“ha˜v˜e“a“w˜orkingŽ¡‘ÈWEBŽ‘&¶«system,‘ 0and–ö&that“yš¸ãou“ha˜v˜e“w˜orking“programs“ÈTFtoPLŽ‘%l:«and“ÈGFtypeŽ‘"v«,‘ 0as“describGed“in“the“T‘þU>Ÿ'EŽ‘ãxXw˜are“andŽ¡‘ÜMETÇAFŽ9ONT«w¸ãare‘UUrepGorts.Ž¦‘8â1.Ž‘Prepare– a“vš¸ãersion“of“ÈINIMFŽ‘`«.‘`(This“means“that“y˜our“ÈWEBŽ‘«c˜hange“ le“should“ha˜v˜e“Âinit“«and“Âtini“«de ned“toŽ¡‘bšGe–ÅFn¸ãull.)‘AÂThe“Âdebug“«and“ÂgubQÇed“«macros“should“b˜e“n¸ãull,‘âin“order“to“activ‘ÿqÇate“sp˜ecial“prin¸ãtouts“that“o˜ccurŽ¡‘when‘%ëó$ý': cmti10Ïtr–ÿ}'acinge“dgesŽ‘;Æ'ó  b> cmmi10±>‘Ç«1±:«0.‘aùThe–%ëÂstat“«and“Âtats“«macros“should“also“bGe“nš¸ãull,‘/fso“that“statistics“are“k˜ept.‘aùSetŽ¡‘Ïmem‘‰ffŽ‘®topŽ‘>;“«and‘éÏmem‘‰ffŽ‘®maxŽ‘2}«to–é3000“(or“to“Ïmem‘‰ffŽ‘®minŽ›0™÷«plus“3000,‘þÁif“Ïmem‘‰ffŽ‘®minŽ˜«isn't“zero),‘þÁfor“purpGoses“of“thisŽ¡‘test–Óv¸ãersion.‘ê×Also“set“Ïerr‘ÿ}'or‘‰ffŽ‘®lineŽ‘2“«=–˜’64,‘òqÏhalf‘‰ffŽ–®err‘ÿ}'or‘‰ffŽ“lineŽ‘E´:«=“32,‘òqÏmax‘‰ffŽ–®print‘‰ffŽ“lineŽ‘GFº«=“72,‘òqÏscr–ÿ}'e“en‘‰ffŽ‘®widthŽ‘>vF«=“100,Ž¡‘and‘éÖÏscr–ÿ}'e“en‘‰ffŽ‘®depthŽ‘<œ0«=‘Ç200;‘ «these–éÖparameters“a ect“manš¸ãy“of“the“lines“of“the“test“output,‘ÿVso“y˜our“job“will“bGeŽ¡‘m•¸ãuc“h–™½easier“if“yš¸ãou“use“the“same“settings“that“w˜ere“used“to“prošGduce“App˜endix“E.“Also“(if“p˜ossible)“setŽ¡‘Ïgf‘‰ffŽ–®buf‘‰ffŽ“sizeŽ‘Có•«=‘Èé8,‘V²since–Vlthis“tests“more“parts“of“the“program.‘u Y‘ÿ*ªou“probably“should“also“use“the“\normal"Ž¡‘settings–D0of“other“parameters“found“in“ÈMF.WEBŽ‘(N«(e.g.,‘æÏmax‘‰ffŽ‘®internalŽ‘BÕ«=–U-100,‘æÏbuf‘‰ffŽ‘®sizeŽ‘*§«=“500,–æetc.),“sinceŽ¡‘these–íshoš¸ãw“up“in“a“few“lines“of“the“test“output.‘ZOFinally‘ÿ*ª,‘c˜hange“ÜMETÇAFŽ9ONT«'s“screen-displa˜y“routines“b˜yŽ¡‘putting–UUthe“folloš¸ãwing“simple“lines“in“the“c˜hange“ le:ŽŸEŸÐ‘TÀÿÈ@x–?ýScreen“routines:ŽŽ¤ ‘TÀÿbegin‘?ýinit_screen:=false;ŽŽ¡‘TÀÿ@yŽŽ¡‘TÀÿbegin–?ýinit_screen:=true;“{screen“instructions“will“be“logged}ŽŽ¡‘TÀÿ@zŽŽŽŽŸ8‘«None–2ýof“the“other“screen“routines“(Ïup–ÿ}'date‘‰ffŽ‘®scr“e“enŽ‘;ÆE«,‘9ÜÏblank‘‰ffŽ‘®r–ÿ}'e“ctangleŽ‘DÜÌ«,‘9ÜÏp–ÿ}'aint‘‰ffŽ‘®r“owŽ‘-­4«)“should“bGe“cš¸ãhanged“in“an˜yŽ¡‘w•¸ãa“y;‘Ÿ'EŽ‘ãxX“is“careful“to“bGe“mac˜hine-indepGenden˜t“in“thisŽ¡‘(regard,–UUÜMETÇAFŽ9ONT“«is“not,“bGecause“inš¸ãteger“divisions“are“presen˜t“in“so“man˜y“places.ŽŽŒ‹.CŸ€«4’ŽY«­APPENDIX–ÕXA:“HOÃŽW“TO“TEST“ÜMETÇAFŽ9ONTŽ ³Ú ý†Ì&‘8â«5.Ž‘Use‘›ÈGFtypeŽ‘(¶«to››con•¸ãv“ert˜y“our˜ le˜ÈTRAP.72270GFŽ‘H6 «to˜a˜ le˜ÈTRAP.TYPŽ‘.šÿ«.‘C (Both˜of˜ÈGFtypeŽ‘$«'s˜options,‘ì‡i.e.,Ž¤ ‘mnemonic–soutput“and“image“output,‘ Gshould“bGe“enabled“so“that“yš¸ãou“get“the“maxim˜um“amoun˜t“of“output.)Ž¡‘The–C5resulting“ le“should“agree“with“the“master“ÈTRAP.TYPŽ‘0†R« le“of“step“0,‘FÕassuming“that“y¸ãour“ÈGFtypeŽ‘&X«hasŽ¡‘the–UU\normal"“v‘ÿqÇalues“of“compile-time“constan¸ãts“(Ïtop‘‰ffŽ‘®pixelŽ‘)„Å«=‘Ç69,“etc.).Ž©‘8â6.Ž‘Use‘èÈTFtoPLŽ‘'P,«to›ècon•¸ãv“ert˜y“our˜ le˜ÈTRAP.TFMŽ‘1Ð&«to˜a˜ le˜ÈTRAP.PLŽ‘(¨ «.‘*$The˜resulting˜ le˜should˜agree˜with˜theŽ¡‘master‘UUÈTRAP.PLŽ‘+j•« le–UUof“step“0.Ž¦‘8â7.Ž‘Y‘ÿ*ªou–þ£mighš¸ãt“also“wish“to“test“ÈTRAPŽ‘ý:«with“other“v˜ersions“of“ÜMETÇAFŽ9ONT“«(i.e.,‘úÈVIRMFŽ‘ NŽ«or“a“proGduction“v˜ersionŽ¡‘with–ØAanother“base“ le“preloaded).‘ú‹It“should“wš¸ãork“unless“ÜMETÇAFŽ9ONT«'s“primitiv˜es“ha˜v˜e“bGeen“rede nedŽ¡‘in–üUthe“base“ le.‘fÈHo•¸ãw“ev“er,›&this–üUstep“isn't“essen¸ãtial,˜since“all“the“cošGde“of“ÈVIRMFŽ‘"8›«app˜ears“in“ÈINIMFŽ‘>“:::“||“``“''“--“!!“??“##“&&“@@“$$“[[“]]“{{“}}“.“((“5.5.5“))“++“"..";Ž¡‘ Ÿý®5Ž‘úÈbegingroup–?ýsave“=;“let=,;“save,;“newinternal“$=,;“let“):=,“endgroup;Ž¡‘ Ÿý®6Ž‘úÈlet–?ýyear=month;“showvariable“errorstopmode,readstring,2,"2",,,(,),<<,year;Ž¡‘ Ÿý®7Ž‘úÈtracingrestores:=tracingcommands:=.00000762939453125;–?ý%“that's“2^(-17)Ž¡‘ Ÿý®8Ž‘úÈif–?ýtracingcommands>0:tracingcommands:=if“not“cycle“"":1.1“forever;fi;Ž¡‘ Ÿý®9Ž‘úÈtracingcommands:=2.1–?ýexitif“tracingcommands>2“endfor;“showtoken“|=:|>;Ž¡‘£Š®10Ž‘úÈtracingedges:=1/.00001;–?ýtracingequations:=$+1;“p~=tracingedges+.00001;Ž¡‘£Š®11Ž‘úÈinterim‘?ýtracingspecs:=tracingpens:=tracingchoices:=tracingstats:=Ž¡‘£Š®12Ž‘úÈwarningcheck:=tracingoutput:=tracingmacros:=1;–?ý$:=ASCII"";“$:=x;“p~:=p~;Ž¡‘£Š®13Ž‘úÈdelimiters–?ý();“delimiters“begintext“endtext;“vardef“foo(text“t)=t“enddef;Ž¡‘£Š®14Ž‘úÈdef–?ýlig(text“t,|)=ligtable0::for“*=1step1until60:0kern“boundarychar+*,endforŽ¡‘£Š®15Ž‘úÈskipto0;ligtable‘?ýt:t|0,skipto255;boundarychar:=boundarychar+51.29999enddef;Ž¡‘£Š®16Ž‘úÈfoo–?ýbegintext“interim“proofing:=(-.5;“shipout“nullpicture;“special"3"“endtext;Ž¡‘£Š®17Ž‘úÈfor–?ýn=tracingpens“step“1“until“proofing:fi“endfor“showstats;“let!!=skipto;Ž¡‘£Š®18Ž‘úÈpath–?ýp~;“p~=(0,0)..controls“(15,4)“and“(-15,-12)..(4,0);‘ úeveryjob“/*\;;Ž¡‘£Š®19Ž‘úÈvardef–?ý/*\`'@#=message“@“&“str#@“&jobname&char“ASCII'`&str@#!enddef;Ž¡‘£Š®20Ž‘úÈlet–?ýnext=dump;“vardef“`'='`“enddef;“def“'`="\*/"“enddef;Ž¡‘£Š®21Ž‘Èelseif–?ýknown"":“`'pass[2.];“outer\;“let“next=\;“delimiters“^~7!“fiŽ¡‘£Š®22Ž‘Ènext\;–?ý%“the“second“pass“will“now“compute“silently;“the“first“pass“will“haltŽ¡‘£Š®23Ž‘Èbatchmode;–?ý^~7,endgroup“pausing:=1;“exitif“p“exitif“boolean“pen“pencircle“endforŽ¡‘£Š®24Ž‘Èscantokens–?ýbegingroup“message“char0&"watch“this";“"pair“p[],';"&char-1endgroupŽ¡‘£Š®25Ž‘Èpath–?ýp[][]p,w,qw;“qw=(1,-2)..(2,-1)..(2.5,0.5)..(1,2)..(turningnumber',2.5);Ž¡‘£Š®26Ž‘Ènumeric–?ýp[][];“p[[“[$]“]]=10000000000000000;“"this“string“constant“is“incompleteŽ¡‘£Š®27Ž‘Èstring–?ýfoo[]p,p~if“true:[];Ž¡‘£Š®28Ž‘Èboolean–?ýp[]~,boolean“fi.boolean;“showvariable“boolean;“def\\=“=end“enddef;Ž¡‘£Š®29Ž‘Èpicture–?ýe[]e[],“e[],“p~[]~[][];Ž¡‘£Š®30Ž‘Èpen–?ýp~[]~,q["a",qq;“p~1~=q=pencircle“scaled“mexp(-3016.57654);Ž¡‘£Š®31Ž‘Ètransform–?ýp,pp0;“if“p=p:qq=makepen((1,0)..cycle)“xscaled“hex“"1000";fiŽ¡‘£Š®32Ž‘Èqq:=makepen((0,0)..(1,0)..(0,1)..(0,0)..(1,0)..(0,1)..cycle);Ž¡‘£Š®33Ž‘Èvardef–?ýp[][]p~“begintext“suffix“a,b“endtext())suffix@=show“#@;“p.a.b()“enddef;Ž¡‘£Š®34Ž‘Èexpandafter–?ýlet\endtext\\;“outer“endtext,\,;;qq:=pencircle“scaled“4.5“yscaled“2;Ž¡‘£Š®35Ž‘È(6,12)-p7=(0,1)transformed–?ýp=(2/(x-x),3/0)transformed“p;Ž¡‘£Š®36Ž‘Èp1\2p=p007=begintext–?ýif“string“p~[$]:“p.1.2-p.1.199999,1“endtext“transformed“p;Ž¡‘£Š®37Ž‘Èshowstopping:=0;showvariable–?ýp;“p=p;“let“[[=begingroup;“let“]]=endgroup;Ž¡‘£Š®38Ž‘È(xxpart–?ýp+.002,yxpart“p)=1[p1,p2]=(5,y+.00001)=(5,y)=(yypart“p,xypart“p);Ž¡‘£Š®39Ž‘Èreverse(p~..cycle)–?ýtransformed“p=p2.“3.p;Ž¡‘£Š®40Ž‘Èp[000000000001]2p~(,[2]3p~,-)=p~1~2[pausing];Ž¡‘£Š®41Ž‘Èvardef–?ýp~[]@#“tertiary“t:=if“p@“@=@“@p“fi;“vardef“p[][]p~[]=BAD;“inner“;;Ž¡‘£Š®42Ž‘Èshow–?ýp~[-2]~[3000,x]++4000>path“p3;“showvariable“p,P;Ž¡‘£Š®43Ž‘Ènumeric–?ýp[]~;“p3~=2alpha;“p[1/$]~=3beta;Ž¡‘£Š®44Ž‘Èbegingroup–?ýsave“p;“showvariable“p;“3beta=1]];“showvariable“p;Ž¡‘£Š®45Ž‘Èdef//expr;=enddef;def!primary!false):!fi‘?ýenddef;Ž¡‘£Š®46Ž‘Èdef–?ý_aa__“secondary“_a_=if(true“enddef;“qq:=makepen(qw..(qw“scaled$)..cycle);Ž¡‘£Š®47Ž‘Èprimarydef–?ý_**__=[[show“_*__]]“enddef;Ž¡‘£Š®48Ž‘Èsecondarydef–?ý_***__=expandafter“__“scantokens"**oct"_“enddef;Ž¡‘£Š®49Ž‘È//–?ý//pencircle“slanted“length“p~**makepen“reverse“subpath“p7-p2“ofŽ¡‘£Š®50Ž‘?ýÈ(p7{p2}..controls–?ý_aa__“not“odd.1(15)“and“known“p“or“!p2and-p2..{1,1}(-p2Ž¡‘£Š®51Ž‘?ýÈ{curl-–?ý+1)..tension“atleast1..cycle“sqrt2++sqrt2***[[]];ŽŽŒ‹KÿŸ€«6’˜š ­APPENDIX–ÕXB:“ÈTRAP.MFŽ‘*j›­(CONTINUED)Ž ³Ú ý†Ì&‘£Š®52Ž‘È[[interim–?ýproofing:=charcode:=-20.5;chardp:=-2048;shipout“nullpicture]];Ž¤ -N‘£Š®53Ž‘Èif–?ýcharexists“-275.50002>known“p0“0p=known“p~:“randomseed“charcode;“fiŽ¡‘£Š®54Ž‘Èrandomseed:="goof";‘?ýa[($,18++1+-+18),(2,3)]=b[(3,2),(1,$);Ž¡‘£Š®55Ž‘Èshow–?ý(^+1,~+2)“slanted-1“yscaled-2“zscaled-(3,4),“p“transformed(pp“xscaled“9),Ž¡‘£Š®56Ž‘?ýÈpp–?ýshifted“(1,2)“transformed(p“transformed“p),“-_[0][1,2];“showŽ¡‘£Š®57Ž‘Èfloor–?ýsind“mlog“sqrt“mexp200cosd“angle(normaldeviate,uniformdeviate-chardp);Ž¡‘£Š®58Ž‘Èstring–?ýs[];“s1=s2=s4;“s3=s5;“s1=s2;“if“s1<=s4<>(s1<>s3):show[[char34=s2:=s3]]fi;Ž¡‘£Š®59Ž‘Èsubstring–?ýpenoffset“point.1of.p~of[[pencircle]]rotated1080/2/1/3of“decimalŽ¡‘£Š®60Ž‘?ýÈdirectiontime–?ýpostcontrol-1.5of(p~&cycle)-precontrol1/2of“p~(p~)=s1:=s4:=s4;Ž¡‘£Š®61Ž‘Èpath–?ýp~[];“p~1=p2{length"‘ ú"}&cycle;“p~1=p2=p~0;“p2..controls-p2..cycle=p~2;(p7Ž¡‘£Š®62Ž‘È..tension1.2..p~[length–?ýp~2]..p~2&{0,1}p2..tension1and“atleast1..cycle)..tensionŽ¡‘£Š®63Ž‘?ýÈx..{curl1}-p7{curl–?ýhex“"IsBad"}..tension.75and.74999..p2{0,1}&p2{_,'}..cycle:=pŽ¡‘£Š®64Ž‘?ýÈ~4;–?ýsubpath(-9,9)of“subpath(3.5001,7.00001)of“p~4=p~6;Ž¡‘£Š®65Ž‘Èshow–?ýp~6,“directiontime(1,2)“of“p~6,“directiontime(1,-1.00001)“of“p~6;Ž¡‘£Š®66Ž‘Èp~3=(0,0)..controls–?ý(1,1)“and“(0,1)..(1,0);“show“p2..p2{p7}&{$,$}cycle,Ž¡‘£Š®67Ž‘?ýÈ(directiontime(1,1)–?ýof“subpath(.314159,1)“of“p~3)[.314159,1];Ž¡‘£Š®68Ž‘Èp~5=(subpath(0,.25)of–?ýp~3&subpath(.25,1)of“p~3)shifted“begintext1,0;Ž¡‘£Š®69Ž‘Èp~3:=2/3'zscaled'{p~3}..controls(2,2/3(3))and‘?ýpenoffset(1/2x,y)of(0,1)(1,0);Ž¡‘£Š®70Ž‘Èshow–?ýp~3“intersectiontimes“reverse“p~3,“point.17227“of“p~3,“point1-.28339of“p~3;Ž¡‘£Š®71Ž‘Èshow–?ýpoint“xpart(p~5“intersectiontimes“p~5“shifted“(.01,0))of“p~5-Ž¡‘£Š®72Ž‘?ýÈpoint–?ýypart(p~5“intersectiontimes“p~5“shifted“(.01,0))of“p~5;Ž¡‘£Š®73Ž‘È[[interim–?ýtracingedges:=1;“e[-1+-+“-1.00001]=nullpicture;“addto“e1“also[[Ž¡‘£Š®74Ž‘Èaddto–?ýe0“doublepath“p~5“scaled“3“withpen“q;“e0=e1=e2;“cull“e1“dropping“(0,.1);Ž¡‘£Š®75Ž‘Ènullpicture]];show–?ýe1“shifted(4089,-4095),“e2“shifted(-4095,4092)shifted“(-3,0),Ž¡‘£Š®76Ž‘Èe2–?ýshifted(4089,-4095)]];addto“e1“also‘ úe2“shifted(-2,$);“e1:=e1“shifted(-4,$);Ž¡‘£Š®77Ž‘Èaddto–?ýe0“also“e1rotated89.999+e1scaled$;“show“e0“xscaled-10“yscaled2“xscaled82Ž¡‘£Š®78Ž‘Èyscaled683;addto–?ýe1“doublepath“(0,9)“withweight-3“withweight“turningnumber“p~6Ž¡‘£Š®79Ž‘?ýÈwithpen–?ýpencircle“xscaled(oct"180"++1)“rotated-angle(64,$)“shifted“(9,8)Ž¡‘£Š®80Ž‘?ýÈwithpen‘?ýmakepen(($,$)..(1,0)..(1,1)..($,0)..($,$)&cycle)xscaled4095.49999;Ž¡‘£Š®81Ž‘Èshow–?ýe1,“totalweight“e1;“chardp:=charcode:=5;“xoffset:=-1.5;“shipout“e1;Ž¡‘£Š®82Ž‘Èshowstats;–?ýaddto“e2doublepath“p~“yscaled1/60;“e3:=e2“yscaled“0;Ž¡‘£Š®83Ž‘Èautorounding:=2;–?ýaddto“e3doublepath(.5,0)..(3.5,1.5)withweight2;Ž¡‘£Š®84Ž‘Ètracingspecs:=0;–?ýq:=makepen((1,1)..cycle)“yscaled“1.5;Ž¡‘£Š®85Ž‘Èp~8=(($,yy)rotated‘?ýp{0,1}..{0,$}(1,0){0,$}..cycle)scaled2shifted(1000.49,9);Ž¡‘£Š®86Ž‘Èturningcheck:=1;addto–?ýe2doublepath“p~8“withpen“q“withweight“p“withpen“cycle“p;Ž¡‘£Š®87Ž‘È[[interim–?ýautorounding:=xx=.1;“addto“e2“contour“p~8“withpen“q“withweight2]];Ž¡‘£Š®88Ž‘Èchardx:=chardp:=charext:=-14.5;shipout-(-e0-e2)+e2shifted(0,6turningnumber‘?ýp~8);Ž¡‘£Š®89Ž‘Èp~9=(0,0)..(1,.5)..(5,1.5)..(7,2.5)..(12,3.5)..(13,4);addto–?ýe3“doublepath“p~9;Ž¡‘£Š®90Ž‘Èsmoothing:=1;–?ýaddto“e3“doublepath“p~9;“addto“e3“doublepath“(-4095,0)..tensionŽ¡‘£Š®91Ž‘È3/4–?ýand“999..(0,2);“show“e3“rotated-90,“(e0+e0)“rotated90$“rotated90;Ž¡‘£Š®92Ž‘Èif–?ý"a"“if“"ab">"b"“elseif“path“reverse“(3,4):“>="aa":foo“elseif“fi“"bar"Ž¡‘£Š®93Ž‘Èelse–?ýif“'-(1,yy)<':“:fi“else“def“dup“text“t=[[t;save“enddef;def|suffix$=,$Ž¡‘£Š®94Ž‘Èenddef;–?ýdef||tertiary“p=show“substring“p“of("a"“enddef;||(2,$)&"bc");Ž¡‘£Š®95Ž‘Ètertiarydef–?ýx++y=[[dup“showtoken“x;]];def“quote“x“expr“z“of“y=z“enddef;Ž¡‘£Š®96Ž‘?ýÈtexts(quote–?ýx=(y+0)y+y)("xx",foo(x))=0]]“enddef;“def“texts(text“t,tt)expr?=Ž¡‘£Š®97Ž‘?ýÈfor–?ýn:=,for“n"yy":n,length“if“false:endfor“tt,t,:if“string“n:forsuffixes“n=Ž¡‘£Š®98Ž‘?ýÈfoo1,[foo(n)],':show–?ýt,tt|(n;exitif“not('<='+(?,yy))“endfor“for“m=“:+endforŽ¡‘£Š®99Ž‘úÈfor–?ým=alpha“step-1.1“3$:“+m“endfor“fi“endfor“enddef;“show“(0,0){curl2}..Ž¡‘§®100Ž‘?ýÈsubpath(23.3,4.5)of–?ýp~9{curl3}..($,$){curl4}..cycle;numspecial“p~++2+3;[[Ž¡‘§®101Ž‘Èlet?=if;save–?ýif,\;def“if=endinput?enddef;def“texts=input“enddef;texts“trap“]];Ž¡‘§®102Ž‘Èdup[[def–?ýtexts“secondary“x=primarydef“y++y=x@y“enddef;“showtoken++;x“enddef]]\;Ž¡‘§®103Ž‘Èproofing:=1;texts:="a"&"b";%–?ýstrings“"yy"“and“"ab"“no“longer“appear“in“memoryŽ¡‘§®104Ž‘Ètexts-1.00001a1=-(a2+a3+a4+a5+a6);-(a3,a2)/.99999=-(a4+a5+[[showdependencies;ŽŽŒ‹^žŸ€œ˜š ­APPENDIX–ÕXB:“ÈTRAP.MFŽ‘*j›­(CONTINUED)˜«7Ž ³Ú ý†Ì&‘§®105Ž‘Èa6]],a3+a4+a5+a6)]];–?ý1.00001a4+1=a5+a6;“alpha:=.9alpha+7;“showdependencies;Ž¤ -N‘§®106Ž‘Èa5=a6=2/3-a6;–?ýcull“e1“dropping($,4a5)withweight1.5;“charcode:=chardp:=27;Ž¡‘§®107Ž‘Èopenwindow–?ý3“from“(0,0)“to“(0,0)“at“"whoops";“addto“p;“shipout“p;“cull“p;Ž¡‘§®108Ž‘Èopenwindow–?ý-.5“from“($,$)“to“($,$)“at“(0,0);“special“p;“numspecial“"p";Ž¡‘§®109Ž‘Èopenwindow–?ý15.49999“from“(0,32*1024)“to“(1,31*1057)“at“(0,0);“shipout“e1;Ž¡‘§®110Ž‘Èopenwindow–?ý5“from“(0,length((0,0){0,0}))“to“(4,2)“at“($,1);Ž¡‘§®111Ž‘Èopenwindow–?ý6“from“(length($,0),1)“to“(3,10)“at“(-5,2);Ž¡‘§®112Ž‘Èdisplay–?ýnullpicture;“display“p“inwindow“3;“display“p“inwindow“6;Ž¡‘§®113Ž‘Èdisplay–?ýe1“inwindow“6;“cull“e0“dropping“(0.1,4095.999999)“withweight“3.5Ž¡‘§®114Ž‘Èwithweight-3.5;–?ýdisplay“e0“inwindow“5.5;“addto“e0“also“p;“addto“e0“contour“0;Ž¡‘§®115Ž‘Èdisplay–?ýe0“inwindow“5.49999;“addto“e0“contour“p~9;Ž¡‘§®116Ž‘Èdisplay–?ýe1“inwindow“3+3;“display“e0e0“inwindow[[vardef“e[]e=enddef;6]];Ž¡‘§®117Ž‘Èaddto–?ýe0“also“e1;“display“e0“inwindow“5;“ligtable||:255|=:|>>0,skipto0;Ž¡‘§®118Ž‘Èdisplay–?ýe1“inwindow“15;“display“e1“inwindow“6;Ž¡‘§®119Ž‘Èshow–?ý[[interim“tracingcommands:=0;“lig("g")(=:|);“lig("h":"i")(|=:);Ž¡‘§®120Ž‘Èlig("j")(|=:>);lig("k")(=:|>);‘?ýlig("l")(|=:|>)]];Ž¡‘§®121Ž‘Èb1:=c.a[–?ý[[let“c=++;vardef“b=enddef;1]]“];“ligtable"m":0=:0,skipto5;Ž¡‘§®122Ž‘È!!;–?ýerrhelp“0;“errmessage“"Be“like“Jane";Ž¡‘§®123Ž‘Èerrhelp–?ý"He%%%lp%";“errmessage"";“errhelp“"";“errmessage“"Another";Ž¡‘§®124Ž‘Èheaderbyte–?ý0;“headerbyte(48.5)substring(-9,9)of"long";“for\=0:\Ž¡‘§®125Ž‘Èheaderbyte–?ý9:2a6,"q";“fontdimen“9:2a6,"q";“fontdimen“1:2048;Ž¡‘§®126Ž‘Èfontmaking:=1;–?ýextensible“5“5,"c"255.5,"d";“charlist“0:5:"a":"d";Ž¡‘§®127Ž‘Èligtable255:255::"a"=:"b","d"–?ýkern“-2048,"c":0:99.5:"e"|=:|"f",0kern';Ž¡‘§®128Ž‘Èligtable–?ý5:0;“def“clear(text“x)=interim“x:=$“enddef;“clear(hppp);“vppp=0;Ž¡‘§®129Ž‘È[[clear(tracingmacros);–?ýclear(tracingcommands);“clear(tracingoutput\;Ž¡‘§®130Ž‘?ýÈclear(proofing);designsize:=.99999;charcode:=ASCII‘?ýchar-418.5;vppp:=designsize;Ž¡‘§®131Ž‘?ýÈdef–?ýdp“expr“d“=“charcode:=charcode+1;“chardp:=d;“shipout“nullpicture“enddef;Ž¡‘§®132Ž‘?ýÈdp–?ý13;“dp“12;“dp“0;“dp“21;“dp“-2;“dp“17;“dp“11;“dp“3;“charic:=-1000;“dp“-1;Ž¡‘§®133Ž‘?ýÈdp–?ý25;“dp“31;“dp“19;“dp“7;“charwd:=256;“chardy:=6;“dp“23;“dp“30]];Ž¡‘§®134Ž‘Èdef–?ýf(suffix@@)(expr“a,b)(text“t)=numeric“w;“show“a;“%“wipes“out“the“old“wŽ¡‘§®135Ž‘Èaddto–?ý@@“contour“(0,0)..(2,0)..(1,$)..(1,1)..cycle“withpen“qq;“%“strange“pathŽ¡‘§®136Ž‘Èaddto–?ý@@“doublepath“(0,0){1,1}..{2,1}(2,1)“withpen“qq;“%“carefully“chosenŽ¡‘§®137Ž‘Èaddto–?ý@@“doublepath(($,$){1,0}..(1,1){1,0})scaled.5“withpen“nullpen;Ž¡‘§®138Ž‘Ècull–?ý@@“keeping“(4,4)“withweight1.5;“enddef;“def“g(suffix$)=show“$“enddef;Ž¡‘§®139Ž‘Èaddto–?ýe0“contour“(0,0){1,0}..{1,0}(1,0){0,$}..{0,1}cycle“withpen“qq;Ž¡‘§®140Ž‘Èf(e[3,w);–?ýg(e3,transformed“p,penoffset-(1,1.3)of(pencircle“scaled20“yscaled-.5),Ž¡‘§®141Ž‘?ýÈdirectiontime–?ý(0,1)“of“((0,0)..controls(1,1)and($,1)..(3,0)),Ž¡‘§®142Ž‘?ýÈpoint–?ý3.14159“of“p~9“intersectiontimes“subpath“(3.14159,4)“of“p~9,Ž¡‘§®143Ž‘?ýÈ(($,1.1)..(1,$))–?ýintersectiontimes“precontrol$“of“(0,0);Ž¡‘§®144Ž‘Èaddto–?ýe3“doublepath(-4094.99998,0)..(4094.99998,-.00001)“withpen“penoffset“0“ofŽ¡‘§®145Ž‘Èpencircle;–?ýaddto“e3“also“e3“shifted“(0,257);“,"flushed“with“pride";“numeric“xx;Ž¡‘§®146Ž‘Èdef–?ýf(expr“x,y,z)=showdependencies;tracingcapsules:=1;showdependencies;showŽ¡‘§®147Ž‘?ýÈ1/3(3,6)*((x+y)+(y-x)),–?ý(1,1)/sqrt2“zscaled“(x+1,x+2)“-“(x+1,x+2)“rotated“45,Ž¡‘§®148Ž‘?ýÈ(0,1)–?ýzscaled“(1,y+2)-(1,y+2)“rotated“90“enddef;“f((xx+1)/.3,(yy-1)/.5,(xx,0));Ž¡‘§®149Ž‘È'=(1000o3-4000(o1-o2)+4000o2+9,-.01o3+3ooo+Ž¡‘§®150Ž‘?ýÈ[[oo=9/10(o2+o4+o5-20);o4=o5=8/9(o1+.5o2);‘?ýo6=-.0001o2;showdependencies;Ž¡‘§®151Ž‘úÈnumeric–?ýo[];xpart(alfa,[[pair“alfa;0]])]])=-2/3[[save“p;(p$,1-p$)]];Ž¡‘§®152Ž‘Èxoffset:=yoffset:=4000[[oo=.5ooo=2*-1/2(ooo+[[numeric‘?ýooo;1]]);oo]];Ž¡‘§®153Ž‘Èfor‘?ý@=angle(sqrt$,mlog$):charext:=uniformdeviate$;charht:=2048;granularity:=-8;Ž¡‘§®154Ž‘Èaddto–?ýe3“contour“(0,-100)..tension“500..(100,-99)..tension“3000..cycle;Ž¡‘§®155Ž‘Ètracingoutput:=@;–?ýshipout“e3;“special“"bye";“interim“char“99“=“"c";“true=false;Ž¡‘§®156Ž‘È[[clear(tracingcommands);–?ýcharcode:=ASCII“char“269-13;“shipout+nullpicture;Ž¡‘§®157Ž‘È"careful"–?ýquote“for“for“=“@“step“200“until“2*2600:“&"“METAFONT"“endfor;]];ŽŽŒ‹rMŸ€«8’˜š ­APPENDIX–ÕXB:“ÈTRAP.MFŽ‘*j›­(CONTINUED)Ž ³Ú ý†Ì&‘§®158Ž‘Èscrollmode;–?ý"hello“again"&char31;“save“p;“fillin:=-.043;Ž¤ ‘§®159Ž‘Èdef–?ýf“expr“x=let“)=];“let“[=(;“show“_“enddef;“begingroup“tracingspecs:=1;Ž¡‘§®160Ž‘Èshow–?ýnullpen,“makepath.qq,“makepath(q“rotated1),“makepath“pencircle“rotated“$;Ž¡‘§®161Ž‘Èaddto–?ýe0“doublepath“(0,2){0,$}..{0,$}(0,1)..{1,0}(3,0)..(4,0){1,0}..cycleŽ¡‘§®162Ž‘?ýÈwithpen–?ýmakepen((0,0)..(5,2.9)..(4,3)..cycle);“tracingonline:=1;“f“xx[1);Ž¡‘§®163Ž‘Èshowdependencies;–?ýqq:=q;“showstats;“bye“endtextŽ¡‘§®164Ž‘È%–?ýthings“not“tested:Ž¡‘§®165Ž‘È%–?ýinteraction“(error“insertion/deletion,“interrupts,“\pausing,“files“not“there)Ž¡‘§®166Ž‘È%–?ýdate,“time;“initialization“of“random“number“generator“without“randomseedŽ¡‘§®167Ž‘È%–?ýsystem-dependent“parsing“of“file“names,“areas,“extensionsŽ¡‘§®168Ž‘È%–?ýcertain“error“messages,“especially“fatal“onesŽ¡‘§®169Ž‘È%–?ýthings“that“can't“happen“in“INIMFŽ¡‘§®170Ž‘È%–?ýunusual“cases“of“fixed-point“arithmeticŽŽŒø…Hƒ’À;è›l¾ÕÁG ó2pÚãi( cmssdc10ó1*à=» manfntó$ý': cmti10ó!p®0J cmsl10óßê cmmi10óÙ“ Rcmr7ó|{Ycmr8óKñ`y cmr10ù‰¿ßßßßß