Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Symbolic Computation Laurent Bernartlint Qnstitut in Java: An Appraisement* Bruce Chd Erich KaltofenS fiir Wisserlscllaftliclles R.cchnen, Eidgenijssische Technische Hocl~~hule Zuricll: Switxcrlaml; Laurent . BernardinQinf . ethz . ch http://www.inf.ethz.ch/personal/bernardi/ :Dcpartmc:nt of Mathcn~atics and Completer Science, Drexel University Philadelphia, Pennsylvania 19104; bcharQmcs . drexel . edu SDcpartlnent of Mathematics: North Carolina State University R.&i&, North Carolina 2769543205; kaltof enQmath. ncsu. edu http://www.math.ncsu.edu/“kaltofen 1 tittion Java’s lems. ming, of algebraic algorithms. We suggest uses of many Of innovat.ive features for symbolic software design probWe discuss the suitabilitv of *Java for generic progr;tma mctliodology w-how or’igins Xtllillly are in conipubcr RlgChlil. l+‘P believe the WftWillY? component approach is required for designing modern systems that include computer algebra. We describe ways in which Java can bc used to adapt, legacy softwvarc int.o conip0nent.s. and we present our ideas how component interfaces can be structured. In section 2 we state our requirements for synbolic computation componcnt,s wit.hout. making reference t,o a part.icular programming style or language. How well our rcquirtbments are met by Java and other la~qyagcs is discussed in section 3. Our personal c~xpcricnco with Java, including efficiency measurcmcuts, is documc:nl.c!d in s&ion 4. \Ve finally appraise Java as an iIrll’lcnlelit,a.ation language for symbolic computation software in section 5. Introduction Java, first developed as a programming interface for web browsers, is being pushed by a consortium of companies as a high level programming language for gcncral programming. Sun Microsystems provides, in addition to il compiler into byte code for an interpreter (the Jiiva virtual machine)? a miilt,itude of lihrarics: ~iiost. IlOt,ilbl\i an oljject hicra.rchy for building graphical iiscr interfaces: the Abstract. Windowing ,Toolkit ad the Swing components from the .Java Foundation Claw~s. , Internet browsers contain Java virtual machines for interpreting byte code of Java programs that arc c!mb~ddecl into Internet, c1ocument.s as applets. .Java defines a standard framework for Irlulti-t,hrc!itdeti execution and for mcssagc paseing via serialization and socket/datagram protocols. Java assists component composit.ion in two nags. Java objects can discover how to invoke other Java objects at run-time t.hrough a process called reflection. .Java also supp0rt.s programming conventions (collectively rcfcrrcd to as ii,Java Beans”) for cvcnt-driven inter-collll)oncnt, operation. The two t.oget,her allow tools such ilS JaYa Studio [27] t.o providtr convenient visual programming methods of connrcting up Java software components. In short, Java is b&g vigorously developed and wc ask the natural quest~ion whct.her .Java is suited for symbolic c:omput,at.ion and mhct~hcr our discipline should take adv;tnt.age of the plet.hora of freely available software. This article discusses Java as a symbolic comput.ation developmcnt t.ool: expanding on the pioneering efforts of ot.her researchers [-My 91. We investigate if Java. can compete with C++; or hlaple/~~atl~c~natica/Xxiunl for rfficifmt implemen- 2 Symbolic Computation Requirements Component -4 middle-ware paradigm for making new algorithmic results available to the non-expert end-user of our t,cchnology is rccognized in [17]. Suppose a symbolic computation researcher wishes to implement a. new a.lgorithm for sparse linear algcbra. The program should not start from scratch and implement basic long integer ad polynomial arithmetic, as there are highly tuned libraries such as GIIUMP [23]? SA4CLIB 2.1 [13]: and Nrl;L 3.1 [43] available for those tasks. Moreover the pr0gra.m need not develop a. dist.inct, user int.erface or command language but instead bc calla.ble from all familiar platforms such a.s Maple, Mathrmatica, and an Internet. ends up in the middle browser. Thus? the implcmcntation of existing symbolic comput,ation software. \Vc loosclg distinguish bctwccn the p&q-and-plny and gencr-ic progmmning componcwt design [30]. The plug-andplay methodology requires an application program interface of t.he finished new- packagf> t.o the users’ actual platform: for inst,ance, a user shoulcl he able to launch a sparse matrix CoI1II,llt,iltioIl for t,he new package from within her MuPAD 237 rnvironnienl Gcwcric pmgrartmling, 011 tllc otllcr llillld, IlldiM tll? Ilf?W pil(:liilgP idcpmdclll~ Of: e.g., ch? wicldying pol-yuonlial arithmetic: t,hat is employrd. The implement~atiou 11a.splugs int.0 which cert,ain lilxuies 11xc to bc put. Lilxarics arc pluggctl iuto tllc IKW l>ackagc, cithcr using a co~~~~~icni object interface stauclard or ty placing an adaptor progranl 1wtww11 tl1e package ant1 tlw plug-iI1. The purposc~ Of plug-and-play is wide dissr:min.atioii while the purpose Of generic progrmmliug is rcusal)ility Of co&: in a different setil.bOllt t.liis distinction. t.ing; W(’ Shill1 not hr dOgIllilt.iC 111computer illg~hil, t.he st,udy Of generic prograuiiliiug tccl~riiqiiw ilIld the requirement Of plug-aud-play compoC0illIIl0n ohjtrcd inl.dilcWi for a.lgelwa.ic nents is not Ilow. domains such as polyuon~ial riugs go back t0 [38, 2: 28. 361. St,audards for serialization Of mathematical ol,jects arc t,hc subject. Of the OpenMath consort.ium [l: 151 and have been in hIi~t,hemati(.~a’s MathLink ~-“.oposctl in [4] and aw wed tool. V(Wi(.Rl illt~~griltion of wmponents was alrea.tly posed ilS a probleni in 1974 [35]. Thcrc I10w is a Sizihbl( wI11II111iiity Of rcscimlms invrstigating t.he construction Of so-called problwi solving and int.egrat,etl developnient envir0nmmts [33: 261. W shall list, Of what. wc fowl are iniportant ingredients Of C0111p0llf~Ilt algori~~liniic~ iLtlv?iIICCS. We belicw in t.llr utilizatiou Of esisting software and tllc: forma.lizat~ion Of iutcrfaws. There rPIIlilins bhe problcrri Of lf!gilC; cod<!, often writttm in a different prOgra.nmliug lilngkge. Som!tinles one 1’ilIl gain efficicucy l)?; SO-Cil.llf?ddirty txicks, which can lw formalized as traits [39] in t lie interface. shortcuts An important paradigm in R~IIIcorqxit.atiOu is the evaluatioIi/int.erpolatioIl tcclluiquc. Some libraries, such as KTL, internally use Fourier points and the fast Fourier transform for cfEcicmcy. The conq~oneut intcrfacc: (:an make Fourier cvitluto il ca.ller by again Mining at.ion/int.rrpolat.io~~ av;tililhle a t.rait. for library int,erface. Algorithmic tJOliC In conclusion. wc Obscrw 1hat iIitercliangea.tJIc coi~lponcnts arc not. wstrictccl to libraries for syrrllmlic con~put;lliLt, tat ion i$gUrit~hn~s. Clearly, a graphical iiscr iIlt.fYfilw implements intrractivc usage of a set Of library routines, a garl)agcb collcc~lm. il Inf!ssage pilssing distribution rlwchillliS~~1. visualization tool, a11 online documwtation cOlllp~JlleIltS to which 3 a IIliddc-ware a. statistical aIlidj3iS lxowwr? all might. lx: package is c:O~~ncc:tcd. A Comparison of Java to Traditional Languages as functions Ii? now discuss how well Java. mwt.s l.ho rclqllirement,s Of se&m 2 for hiiilding synibolic~ ~:OIllpllt~ilt.iOll coniponent~s in c.omparison with C++; Lisp, Sn~alltalk: M\;l~lt!: and %latht~m;tt.ica. U’f! will alsO titk(’ into a(:(:oullt, l.h(! .A’/Altlor [a-l] wnipilor. 3.1 Packages aud lilxariras shollld allow for parallcl/tlistritmtctl csecut.ion. The question remains if t.hrre Of high-lwcl pilr~ll~~lixilt.i0~~ dirtdvcs. Pilris a St;lIltlilrd allelisrn is important for synilmlic coiqmta.tiOn lwcausc inc:rW.W in c:omputer nieniory illld for it yields il fillll,ikGl.iC Wrtilill illg0rithns in prowssing Generic programming A main goal Of generic programning is the a.bilit,y t.0 write algorit,hrtls wit.li variable types: for exa~riple, a GrGtmer txisis procctlurc is paraiilct,crizcd wit,11 t.lw cocfficicnt field and cm lx instilntiiltd for it mill.itiidc~ Of difi?i:rc:nt. ficltls. 111[18] we distinguish three implt!meIitatioIis Of genericity interfilc:r (ildthe ficbltl Operations that define the c0InniOn dition. division, equality tests: etc.) ilW iIiline-conipiled into the procedure for a. selected field: Parallelism they ilIY r&ieved Vii1 il function pointxr in tllc Stub for (ilI1 ill)StIYM:t. tXlW ClilSS); t,lle fieltl object power. they art’ linked into tlw procctlurc Comput,ing langllag(ls like: Lisp. .Ja.va, ant1 IVIapl(! perform automal.ic garhag(x wllwt.ion; C and C++ rcquircs Clw prograiimicr to c:spliciCly Iuauage storage. The (challenge for wmponent technology is t.0 cOmt)iiic the diffcrcnt IucIrlOry models in a sirlgle coiib Storage grilpllh illt.fTfilces. ‘l’hc view Of I~l;tt,hcnlat~ic;~l ot)jccts il lniltris is viewd as functions is powrful. For osa111plt~, as it “vcc:t,or-in, wctor-out.” Iiiat.ris-t.iliies-vector function iltld many lillf!iIr iLlgf?bril problems Ci111be Solved very efficiently wit.11 t.his black-lms rcprcscntation [21. Rut1 the references given there]. The difficult,?; is t0 trausulit, such a black-box rnat.ris across the components. which 111ay he constructed in diffcrcnt prograrimiing langimgcs. The progralrlming cont.cnt dict,iOuary Of the C)l~cnMath stalldard atldrcsst:s this question t,o sonw degree. \Ve remark t hilt, the problem Of funct,ion distribUtiOn is not unique to synholic computation. It has been scc11 to occur whcri conqxit~iilg t,lic optimum Of a niatlicnlabical fuucLi0ii in parallel. Objects il package, Or management at. load time. The t.cmplate feature Of C++ is designed for l.hc first -4 large eSaII1lJle is C++‘s StilIliustantiation imt.hod. dard t.enqAate library. awl we ha\~(~uswl this approach in FOXBCJX[I?]. Dyua.rnic eva.lua.tiou is 11sf4 in the Scratchpad 11/.4siOm syst.eIrl and iu RIaple’s Domain pa(~kagc. C-t+ has virtual class member funct,iOns for t.llis purpose, which 1ia.w lx?cu adopted by .Ja.vaunder the nilnle of al)sl;ract rnrthads. A main point iu [18] is that, in C++ one can mritc a gcucric program SOthat the choice Of t,he thrw inst,antiation inct.hods for type pa.ra.nleters is left to the users. Originally 3ava was thought a.s a computer architcctmcinclependcnt~ prOgran~luing syst,cm. It adOpt,ed Smalltalk’s approach Of an int,erpreted iutcrmctliat,o instruction set: 11a111ely, -Java’s b?;t,e code and virt.ual ulacl~irle. U%h autoruatic garba.gc trollcction its execution rncchanisnl reseniblcs bliat-of Al&)lc: Mathenlatica, ilnd Lisp. However, even tlic use Of C++‘s virtual meulber functions is discouraged p11t,at1011. -411 accepted way of handling csccptious is the trv/thro~~/c:at.c:h mechanisnl Of C++ ant1 .Java. Clearly. c0inponents rlliist inclutlc csccption the iilt,mfacf! l,f!tween llaudling. Oncl form Of escept,ions arc checkpoints. whew the current. sl.ate Of the computation is smialimd and Exceptions saved. code It. is tonlpt,ing t0 start wit,11 t.hc l)Ott.Om layer Of a. s,vnll)Olic c:omput.a.t.ic)II systenl lwcausc all fuuct,iOuality can bc c~llst,om-rn;ldc. Howcvc)r, such design leads t,O nlonolit.hic syst,ems which must. keep pace with new Legacy 238 Our rspcricucc wiblt Maple for rcas011 Of cfficicury. Lisp certililllv WXIIS IIS that .J;lra l>yt~ CO~CIII~J; ~11ff~ in Ihe syutlmlic: ~O~~~pltt~~t.iOIt roItlcsty is c:n~1xtlded iIt R.EDLCE’S Java ittterf;l(.c. Their itl)prOiIclI is il.t.t,ract.ive for aIto(.hcr reason: bli~.(~kI>OSItt;tl,lI(!IItat,ic;11 object,s GLII 1~ t.r;IItsniit~tetl iIt t,yt.v code to this iuterfac’c. 1Ii [30] ivf! ltave rtot.ed Idlilt dyItattti(. dwcriptiotts Of Itt~ttltc~I1titti~.A csprwsiorts ilIY~ not, o111yuscbful for black box ;dgc~rithItts, but. caIt tw used to ~eIterat,c a sl,a.Lic clat,a st,rttc:t:ure for tltc expression. -411esa~npie is tttc Hiltwrt.-like 100~100 utatris [l/ii’+j-l)] I<I.,,s too: which slt0uld not bc traItsIttittecl as 10.000 raAOItil1 nlnttbcrs. -411alt,crItitt.ive apprnadt is facilitat’cd by .la.va’s netwOrkiug capabi1it.y. Tttc .Jilvit ~Itl ItOIt-.Ja\ea c0Ittponf~Itt.s ruIt its ittdopc~n&wt Iuwxsscs and coIttttttInicate via a socket, protocol Or il pipe. No virtd Ittacltitt(~ weds t.O I)(~ coIt~t.rtitrt.c:d. \\\i> have CltOSC~n the sOi:kd iLpprOX+ for c:onnect.ittg ~lill~lf5 t0 the clistritmtcd syIiit.~Olic cwttputati0It tool [ll] aItt1 to FOSBOS [li]. Maple tlors ttot yet pwvide built-ill Itot.w~rkiItg proredures autl t,lte c:onItcctioIt was irttplcIttentfd with Maple’s insecure “aystcItt” c.~otiiniaIttl, which mcciit es an!acccssitde 1OCidprograni. ScltrciItcr has rccmttly dist~ritmtecl Rlaple wit.lt a .Ji~v+t.)ased scheduler [42]. .Jaa-a, on tlw Other ltattcl~ proritlcs a. coIttplete set Of Itc~(.w-orkprOgr;uun~iItg tools. Java assists the progrmmwr in tltc design Of cOIttponent int.c~rfaccs. First. SO-did tuarkcr iItterf;-lws cm can tw usctl t0 det.errtiiIto if a c0tttpOIt~ttt has it Wrl.it.iIl trait,. sttch as FOuricr poittt t!v~~lnat.ioIt/int.crl,alnticln. Tltc Ittarker intcrco&~. fact to a foreign library is phf:rd in t.hc Java iI&lpt.Or SccO~trl, JWn co&: (:i\.It be prohwl for t\-pc-signat.ure iItfbrIttat.ion, a prowss l,hat .lilL3 calls reflec;ioIt. ‘I’his is similar t0 ltartlware, wltcrc Ihe OlWriitiIlg the Itotiott Of plllg-;lIltl-plil?e systmtt c’illl clct.crntine t,hc‘ propert.ies Of a device ty a signal protocol. RcflecGon allows for ada.pt.iw interfaces and inilSWIllt)l~ illld t.huS Wli~s~S tltc tIM!d for t,eractirr C.OtllpOIlCItt rigid st~imtlarcls. and WWI inc.~ffic:rt:nf:if!s. It. is eqtWtet1. Ilf?~ertll~l~XS, t,llilt J ilV?l *~~fj~~ilIllS will tw coIupilec1 iItt0 Itativc Ittacttinc~ ins;t.riic:tioIts. Compilers Iuay, for reasou Of iIttprOviItg t.hc! dfic:ieIIcy, tlyn;m~ic~idly ildill>t the prOtlucetl CO& t.0 th! prcwnt, run-Gttte cItvirotttttc~nt. In secti0It 4.1 mc girt sottt(~ timings for “justiu-t.irttc” c0Ittpild byte code for pOlpO1Ilii~l ilsithInet.ic. I\-(: remark t,ltat. ttic iIttorIttw1iiIt.e byte c0dc Ittirrors t.lle role Of (he intern~ecliate C cotlc Of souse C++ coutpilars. The sCI)aration Of arcltitccturc spwific: and arcltit~c~c~l.tireiItclcpcIttlcnt opt~imimtirut SccItts not. l;o introduce ittcfficieucies. III ;dtlit~iOIt t0 ahstri~(.t IItet.ltods, t;h(l .Jara Ia.Itguiig(! protnotes tlte c01tcc:p1. Of an int.erfaw t.ype. A clnss objwt that iutplmttcnts all fuItct,ions Of t,lie intcrfaw can Ix nssigued to a variable Of tltc iIttd:tce’s type. The reverse Of irttplemeuting an inttrrfacc is reminiscrItt of a view Of a cOncret,c class as m d)strac:t dOIttaiIt [2]. Irt fact,. the Collcc~ions package of Java 1.2: wltich pro~itlcs the functimtalit~v Of C++‘s St~i~IttlXd tC’lIl~>lilte library, 1lilS largely rqdilcetl tllC t(!IllplatC t,ype paraIttc%ers by iItt,crfit.ces.t An abstract. lield. for csalltplc?, (‘ill1 be ddiItcY1 in .liKa i1Sill1 iIttcrfac.e. Tltc cottcrete class for a firtit,c field Of 2” r1ctnent.s caIt ItOw irttplcxttent botlt tllc interfaw Of aI1 ;tl.AlXCt fieltl itY well r25t.he interfaw Of a vt:cl:or space Over t,hc field with 2 elcmmtts: this is t,lte only form Of multiple inherit,anco that .TCLVilpertttits. ‘Tltcl lildi Of C++-style I.eniplat,cs in Java, ItiW prontptcd tltc dwelopIttc~nt Of a prcwmpiler for a generic: Java lmguago trstension [S]. But are templates really needed? W obserw Idlilt. C++‘s teIttplat,ca rspausiott niedtaItistn (xii bc used as a prewntlder. Blitx++‘s [7] eslxcssiou t,entplat.es il.Iltl ~~t~lli~~X+SG!iIl-l ‘h [3] ~IIld POO~I.LZ’s [41] pi~r;tllclization types arc a powcrfitl demottstrilti0It Of t.he utility Of what, is t)?; Itow callccl t.eutplat~c~nieta-prograIttttting. FOr CYXilIIl~lC~ Owrloading of tl1t.bassigntumt Operator tttc! I.mip1at.c ospxnsiou rnec:liaItisni (‘ill1 tw prograuttncd SO as to group RSSigItIttCttts left-to-right. Owrloadiug Of operators has bwn used \yorsF: ill k~IIIT’5liltht) tlle al-,OvC [25] es~.IIlpl(% t.0 pitriLh+X’ of UN’ Of tltC l(!gil.Cy t(!IIlpl~ttc? \Iiitlilb UJd(!. PspilIlSiOIt ..I 3.3 \iYtlt Ittult.i-CPL PCs hecoutiug wnntton plx:v~ nntlti-tltrcitdin: t,ecotnc5 ilIt ittcrc:ilsiItgly importattt t.001 for trsprcssiItg fitw-grairtwl ptr~tllclisItt. Tltrw f(:;tt,ures cltitrii(:t,crize kilt cflicient tttulti-l hreatlccl clc:~elo~nttont eii~ironmixit: 1. T1trea.d control 2. Sfetttory lockittg 3. ‘l’ttrcid-safe lilxilries JR\‘>1lxwritlw built-iIt support for creating awl sta.rtiItg tttult.iple ttlr(!ildS of cswttt.ioIt. C Or CT++ rcclttire dtlit.ioItal lilmtrics~ like t,ltc Posis tltrcatls library; KiichliIt [32] hiIs entloa-ccl Saclib wit.li Ittulti-tltrcatling: in tltis Ittanner. Ad /Al&n cannot, t,a.kc adcautagc~ Of tttcsc libraries for reit!+OItstliscussed MOW. Cotttputer algebra SyStPIItS likr I\I;iple Or ~1itt~IlclItlil.t~ica do Itot prOriclc~ ilIl)- tools for t.ltrcad cwatiott. alt.ltough wrsioIt Of Rlilplc ttscs t.ltrcacls iii order to att clsI~eriItt~!Ilt,il.l pilridldizC W1N:t.d irtt,cWlil.l opwat.iotis [5]. Memory locking is viLa.l itt a Ittult i-t,ltre;tdccl mvirontttcut in ortlcr t,o prevcItt. Ittctuory acwswh Of iItdcpc:nrleIit t,ltrcacls front ittt.orferiItg wil.11 Pildt other. The Posis l.lltY!ittlS librnq provides strn~;tpltOres and ItteIttory locks its library dls. .lijva ittto die 1aIlgllilg~’ itself. yielding the inlx:grat.w S~!IllilpltOr~~s pOtCllt.iid Of crtliaItcw1 efficiimcy tlirOugtt d;tt il-flOW adysis ant1 c0Inpiler OptiInizil.t.i0It. Tn order t,o t.akc full aduaIttage Of Ittulti-t,ltrc~i~det1 eserutimt, cadt lit:mry 1iItkd iItt.0 tttc c~soc.tttat.detttust support. Ittultiplr t.ltrcads. If t,ltis fcaturc is Iackittg, a multi-t.ttrcatletl liapplicxt~i0It is dmietl access to its most 1XlSiC suppI% tXitrics like ittpiit a.ttd outlmt. aItd twcunlf~s virtdl? uSClCSS. kI0st Of t.Odil~‘b Opcridittg syst,eItts tlil.V(! t.hread-sate systeltt Threads I;‘l’OItt IttC~Clla- that. CVCIImore sOphisticat,c:d mattipulatiott is possible. .Ja\,il does rtol. allow t.ltv overOf C-t+ progra.Itts loading Of opcrat,ors autl makes such aft,cr-l.he-fact, scm~atttic dilaugw iinpoesit~le. \\:c should add; howrver, tltat. l.hr iIttricxcies of t,lie rwultirt~ C++ progrants are currcIttly bcy)nd tlte ibilit,y Of uiost C++ c0Ittpilers. Ultitttat~dy, t~!Itl~liltf2 Itti!t.il-progrHmIItiIt~ Illay tw l,oO coIttplicatcc1 lx) IJC Of litstirtg value to ewn tltr systettt-t.mildiItg progratttnter. IIisItt 3.2 wc wnclutlc Plug-and-play as with aIt? ntotlcrn prOgrilIltIrtiItg eItviroIttneItt, is dommvard COIltpitl.it.)l~ tIl(!ilIliItg t.llilt prOgri~IttS writteIt iIt C or in otltcr prOgran~IttiItg litItguag(!s C~I ho iuvokctl hy a JR\-it progrant via it,s so-calld Itativc Inetltod IttedtanisItt. .\ Jil\Fa run-tiutc~ envirmmwitt. rIrcidcs if il Itat,iw cotlv library is ilWiliLl>te and C’IIOOSWbet \VWII a .Jit\eil Or it Ittorc offtcient. tlxtirr: it~~pleItt~Ilt.i~ti0t~ for a giveIt Sllht,il.Sk. \Ye ltavt: d01tc smne experiIttcnt:s wit,lt iIlt,CgriltiIlg GItuMP itt t,liis fashi0It. how -4 mow serious qucst~ion i5 upad coIiiI-‘at.it)ilit,!;: .IaVil, does auother program invoke a Java component? Parallelism III [/IO] it is proposed thitt REDUCE (:itIt cswut.e ,Ja\;a programs in a similar InaItIter as hrowscrs do: a .Java. virt,ual ItIachinp, perhaps rc4,rict.d to tlte 1jyt.c c:oclcs t.hat, arc Of iIttpOrtancc 239 tihra.rics. SOthis is usuallv Ilot. il prot~ten~ for C or C++ a.pplica.t,ious. The .Jii\Til lihrarbs, a-hid1 111akeext,ensive, possibl?; intcrd, WC of Illulti-t.llrcatliIlg are drcaztl~ thread-safe. T11cb rlln-time libraric+i Of the -4’/.2ltlOr coulpiler ilIX! prwcnt,ly not threild-Saf(:? whirh nl>lkeS multi-threading prOblcn~a.t.ic. Distributed Computing We l~avc alrcatly scc’n t,hat .Ja.va provides Imilt-in wpport for netwOrk c.oliiliilllliCatioli. Distritmtcd coinput~ing can lx Imitt. On t,op of this 1RJYT using Serializctl 0tjjrct.s t0 conlniunicatt~ over s0cket.s. Howvcr, .Ja.va provides t,lle programmer wit.11 211110rcconr-cnicnt way of expressing distri1,ut.d cOrupui.ing aiid rclilotc csecution with its renlot~c~nwthod invocation (RhII) nlcchanisq which loosely cOrresl~onds to a reniote prowdurc: call. Rc1110tc r~tethod invocation is integrated inl.0 t11c Jari1 litmuy hicrarcliy autl is cmivcrrieiit. if the comptctc distributed system is tmilt using Java. FOr int,egrating .Java iuto prothat. approach is not, an scrams written iii otlicr lmguages I;ptind solution since xve wOuld need to (:r(:iltc Java wra.ppcrs for int.egrating lrgacy code. Howcvcr~ .Java 1.2 iudutlcs support. for CORBA (COUIIIIOII Object. Rcqucst Broker Xrcliit.ecure) [l,l]. ad thus communic;ltiolI with progrilnls that, follow bhc ORB.\ prot.ocol is transparent. 3.4 Memory management Storage illlOC~~tiOIl~especially iu a ~~;traltel/ctist,rit~iit~~l srtt,ing, remains a sticky point. In Jil\a garbage cOllect,iou is ~l.lltOllli~t~iC. a process t.hal: prcscnted il:srlf prol~lcm~tic in our Lisp-b>lsd Dagw00tl syst-en1 [In]: 111e1110ry \vas filled up uncontrollat~ly iund a full g~l)age wllection 1:OOkdays Of couiputat.iOn. Automatic garbage collection proviclcs cow venience t.0 t,lic programiner, but. it 1lilS it.s price: t.lic cirt,uat iiiachine must dct.crniiiie if an ohjcct is still iii llsc, citliel by a rcfercncc count. Or t)J; an inwrmitteut. rllark-antl-s~~~,~I) Irieuiory S(:illl. Explicit StOrilgP itiariagement,, as in t,llC COllSt,r1iCtor/ctest,rlic:I,or niectianisni of C++. is espec:iidty appropriattc for large dih st.ruct,ures, which Occur in the sgiiibolic cxmlputation conl.rst,. The algorilhms know cxac~t.ly when storage becon~rs reusable ant1 can cleverly OYfTti1y data of possibly clivcrsc type ad in i\ cache-size scnsit,ive fa.shiou: part Of t,he algorit.hmic objccstorage prwcrvat,icm t~xmc:s tives. In C++: garbage c:ollcct,ion can tw iniptcniented X1(1 libraries t,hat perform gxh>tg<! collect~ion C;IU 1)~ plugged-ill. The iLllOC;tt,Or t.CIXlt~hte 0l thC C++ st~inllda.rtl teIllpht.(~ tibray providw a co1111n0n object iIlt.erfilW for garbage collfxtors. Givaro [20] is an csaniple for a parallel syiiil)Olic coIIil’utat,ion litwtry in C++ that. performs garbage cOllCc~t,ioii by referenw cwinting. Java 1.2 allOws t.hc progranmwr SOIIIC’ control over II~~IIIory allocation through w-hat are ~A~<1 weak refermws. FOr f~silInptC~ rrfwenccs t,O IlC!Wl~ Illildf’ ObjCCtS Vi111 t,f% t)tZlCCd inl:O a t.atJtc t.ha.t, act.s as an object. riIClIC. If an objrct is not be coustructed but, cm be found in this table, it nfwls shared. RIaplc irnplement,s &c object, ciu:h(! tcchuique for sharing one ad the same sulwsprcssion. A wfcrcncc in tlif, t.a.ble ~l~~uld lw weak: SOthat if it, rcumins the only rcfcrence to ilI1 ot~jfx?. il.s storage is gi1rbilg(! cotlcct.ed iLIld the wfcrrnce in the t,ihhl(l set t.0 IIUII. 3.5 Additional Useful Java design features If C++ pioiiwrctl Chc tlcsigIl Of il st,antlartl library for scqwntial t1at.a structures and algoril.lms. then .Java pionwrcd that of a standard Object. hic:r;lrcliy ant1 library for Imitding graphical user inWrfilc:es in Xl Operating systcrtl-iIlcteI)c!lIdent fashion. \Ve wish to mention t.wo nIorc fcaturcs. Serialization A S~id:trd Java feature is conversion Of most a.ny ohjcct. ido a Srrial ,Streani. rcatl!- for writing 01ir.O >I fib Or tmnsmission Over a net.work. Object oriented conlpilers like C++ Or A~/.~tclOr require the programmer to esplicitly defiric t,lic scrializatioii for every single class. With .Ja:a, t,he programuwr is atdc t,o dcfi~lr a special esternat reprCSC’lltil.t.iOIl On a. ClilSs-bv-ClaSS basis: hut in most. CiSeS the df!fiIlIlt scriitlizaticm pro;ided hy the lil.Ilguilgf! is Ilsctl, yictttcor1lpat.ibilit!Of the serializotl strcauls ammg ing illStRIlt. diff(wnt cottc-bases. .&i object. (:i\n hc scriatizcd, sent over R network a.nd rec:onstruct.d by t.llc, rcwiving progranl withprotocol (otlrcr than using out, requiring an agreed c0I1i1lI01l the Ji~\~a I:sIlguage). .Java leaws I,hc progranlnler in control the CtC’fiLlllt. scriatixation proOver what. parts of ail object cctlurc shOuld silvtl and which sh0~1~1hr discxrttcd. During reconstruction. .Java t akcs cart t,o preserve the sharing of object,s I.hOugh riiult,iple referenws. Ttic programmer may choose to partiidly Ovcrridc t.he defalllt rt?coiist.ruction process by clc~citling t,o IYplitC~! cfdairi serialized objfds mitt1 ;>lt,(:rnat,(>instances. Conquter algebra S~SWIIIS. like Maplr: Or Witlirn~atica., usually provide serialixat.iOn for t.heir user level objec:r:s but not for internal kcrncl objects. CORB.4 implemc~iitRtioIls also provitlc scriatization t,cchiiiques for C++. The COR.B.4 specification provititrs serialixation t.hat wvorks hctwccn crnnponent,s written in diffcrcnt ol,j~c:t-orioIltct1 languages, e.g.. tdween C++ and Ja.v>l. .Java 1.1 haS a wry limi~:ect package for arbiWary precision int.cgcr and float.ing point aritlinictic, which WilS dcvd0txd Illilillly for crytogriq~llic applicat.ioIls. BigNumbers 4 Experience Programs with Java Symbolic Computation The authors hilve built. Sevrr;d synd~olic: cwnput.at,ion packa.gcs in tanguagcs other than *Java: Bernardin has extensive kliLI>tC estkrience: liis l)ivi1riilt(! polynOnlia1 factorization atgorithnl is now lmrt of the st.andartl hlaptc library. Cha.r is a co-ttesigncr Of Maple Rnd 1la.s recently worked on probhi solving wvironnients. Kaltofen ha.s built the Lisp-based Dagwwotl S~S~.OIII [l g] for manipulation of straight-lirrc programs and the C++-based FOsBos systcnl [I 71 for nlanipuliltiOn of black hOs syndxdic~ 0l)jcct.s. X11 three i~.llthOrS have espericncc in pilrittld coniputation [5: 12, 16. 311. 4.1 Timings For a first btnchnl:~rk WC chose nlultiI)lic:itt~io~l of univariate polynomials over iI sndl prime field. \Vc’(:chose it. hccause t.his reprrscnh a c:onUnon low-levcbt OperiltiOIl in syIIlt~otic which a.rf! found ilt the 1le;I.d. Of niany alc:Orriputati0IIs, goritliins involring univariilt(? and niiilt~ivariate t~0l,VIlOIIliillS Over dlc rationals. I\\% implcnwnted itn in-pliic:(! algorithm for ClilSSi~~~t td?;IloIniat Ilnilt.iptication [37] in t~0t.h C illld .Jilva Table 1 rcflccts the results Of rnult~iplying polynonds of tlegwc ‘1) = 1OOW to II = 50000. All tinles arc in CPU src:Oncls. The tests are run on a SIIII Ederprisc 3500 with G CPUs clocked at 336 hlhx. The run-time cnvironnwtlt is SOl;lris 2.6 a.nd Sun’s .Jav;l JDK 1.2 (Ida 5). \‘r: compiled the C wdc a-it.11 t.hr Sun ~Vorkshop C Compiler -1.2. The furt,lier than 71= 8000 in our test. siucc the C++ runt,iuic for the latter already required over 1.2GB of main meniory. We used the GIN compiler 2.8.1 with t,he options “-01 -111~8” for compiling t,lie C++ code. For coiuparisoil we include t.imings using the ‘4’: / AIdor compiler l.l.lOb (which, as a back end, uses the Gnu cornpiler wit.11 the -mv8 switch as above). We also used the Cit, [lo] library which provides polynomial arithuictic in Aldor. xote. that. for all these bcuchmarks, the times given include the time needed for coiistructing t,lic polynouiials Cy=, (1i.c’ aud CF=e (Li+n+iXi to muMply, using the fOllOw- ::C” column of table 1 reflects the timings with the compiler switches set to “-0”. For the ‘C *” column we enabled more powerful optiu~iaatioris using the opt.ious “-native -fast -x04::. However, the lat t.er options imply that the resulting binary is heavily optirnizcd for t,he specific niachine t,hat. it has been compiled on. Supported iwxruction set. cst~cnsions as well as cache configurxt,iou is takeu into account by the compiler. ‘This uicans. that t.he binary will be portable to a different (yet, hinary compatible) SIIII niachiuc only with a potential perfornmicc penalty. For comparison, we include timings using the modpl dat.a st.ructurc of Ma.ple V Release 3. Xrithrnctic with this data struct.ure is implem~ut.cd in Ma.ple’s C kernel. ing rwiirrfmcc ffl) ‘Table 1: Timings for polynomial multiplicat~ion over I$, Here lies another advantage of the Java approach of gustin-t,inu:” compiling. The byte-code is free from platforn~ specific optimimtions and t.he run-t.ime environment will decide which set of plat,form specific optimixations t.0 use. The last. colunm of table 1 shows the time factor we have to pay for using .Java over heavily optimized “C” (the C* colu11111). It is cIuit,c imprcssivc t,hat. the latest. Java run-t.iuic cnvironrucnts ilrC i~lrf!iKly conipet.it.ive with c0nserviAvely optimized C. especially if you t.ake into account tha.t the code from above nlakes hea\-y use of arrays autl t,hat. 3ava provides us wit,11 autoniat,ic array bounds checking which C does uot have. \Vc cspcct the Java runt,iuies t,o further improve and get closer t.0 t,lic running t.iuics of heavily optimized C code as just-in-tinic compiler t.echnology ulatlues. For our second bcnchnlark. we also use polynoniial muhiplicatiou. But. iustcad of rqrcsenting the polyno~uials iu an array of 32 bit. intcgcrs aud limiting t.he algorithm applicahilit?; to pOlynonlii~lS over small prime fields: we now represent the polynomials as arrays of poiutcrs to gcucric cocfficicut 0bject.s. Now WC CR11 piuxneterize our miiltiplicatioii algorithm by any coefficient. ring, that 11a.sto be implcuientccl scpilrately. Wibh Java., we first dcfinc a generic type (interface) for Rings. We then implenicnt out concrete Ring, naii~cly 4, with y small. We further defiric a gcncric deiise polynornial ring class which uses t,lic: Operi~t~ions of a generic: coefficient ring iu order t.0 irnplcuicut. pOlyllOllliill nnilt,iplication. We compare this *Java illlplellleIltat~ioIl wit,11 C++. Here we USCt.crupla.tes: which have been described earlier. We define one teuiplatc class for SIllill prime fields: parameterixed by the characteristic. 117~define anot.her t.emp1at.e class for dense polynoruialsY parauwterized by t,he coefficient ring, i.e. the small priruc field class from above. Table 2 suumxuizes t.he results for niultiplying polynorniIt. is iniportant to note als of degree ri = 1000 to 7) = 8000. U1a.t.the C++ t,iniings do not, contain the time spent. in i~icnior; allocat,ion and deallocation. This is bccalise we had to disable deallocation coruplctcly as our algorithm makes use object. instances arid we did not inlplenlent C++ of shared garbage collections. For the same reason, we could not go for = 1, n, : (li = 1 if 2a,+i + 1 = 0, 2a,-1 + 1 otherwise. Aldor 1.2s C++ 0.9s 4.3s XGS 10s 19s 14s *Java vs. C++ 30s 42s 22s SGS 12s 2.8 2.6 2.5 2.6 2.6 2.6 2.6 72s 57s 2.6 8s 31s Table 2: Gcncric polyuoniial multiplication timings 01x cau co~~lutle t,hat for generic algorithms, which play an iniporl.ant role in symbolic coniputation, Java performs fairly well. The difference of a factor of 2.2 2.3 couipared wit.11 a fact,or of 2.6 between our first. iuld scco~~dbenchmark is because in the sccontl b(:Ii(.hilliirk the C++ I.iruings do not include nwnlory uiauagemeut? whereas the Java timings (as well RR the Altlor timings) do. \Ve ills0 like t.0 point out that. in the direct, non-generic first test, PXilIllple n-e do not, perforui a uiotlulo y division aft,er every arit.hnwtic operat~iou. Tnst.cad, we reduce partial convolutions just before overflow in the accumulated intermediate integer occurs. ‘Timings indicate a savings of a factor of 2 over uon-generic arithmetic that reduces after each operation. Therefore, t.hc poiutcr iudirections in the generic arithmetic cost us about a fact,or of 12. lUotlul0 p pol,ynorriial arithmct.ic for a s11ial1prime Illily be so special t.liat a gcncric iIiiI~lcn~c~itat,iori may never yield acccpt~ablc results. For gmcric operations on laxger objects: suc:lI as long iutcgers, the rcfcrcuce poiut,ers for t.he abst,r;u:t methods aud arguments needed for its iuqAmmtation cause much less pe11a1t.y. 4.2 Design of symbolic using Java Beans computation components This scct,ion describes the use of Java to csperiment~ with t.he software couipouent paradigm in buildiug Problem Solving Environuwnts (PSEs) that use syuiholic computation. Java Beans are made from ordinary Java code by employing additional coding convent ions wlicu building il software componcr1t.s. .&I application is built 1)~ plugging together and configuring iust auccs of Beans. The application builder can view- t.heir task as configuration and wiring - plugging toinitial values for configuration gether Bcms and mtt&g 211 Java Studio [Pi’] is au exatn(t1at.a.) fields of wch Bcim for *Java Beans. It. plc of a. component. conlpositioll S~SWIII presents il vislliil progralnlnil~g tool to ~qqh~&t~~~Jll d~~Chl)nient using minponent~ configurat.ion and xiring. Wc found .Java’s nlult.ithreacliilg fcat.urcs a grmt. aid in building soft.\var(A wmponent.sz InakiIlg it casicr to llarldle sinlult.ancous or intcrruptiug incoming c-!vellt.s. .lilXYl Studio alSO (:ilpit~iLlixeS 011 str(!llgl.hs of JiL\.a in t.he following \w\s: It builds gr;lplli(.ill user ilit.erfatrc icoils allt.OIllilt.iGIll~ for each Boa11 as it, is imported, using rcflcction to deternlinc t.hcl input. ilIlC1 Output ports RS <V(,lliL? the IIUIIlber. IlitIllC, imd type of configuration fields for the C~onlponcnl a. nu111lwr of graphica. IISC~ .Java Studio (‘an provide int.erface-buildilig witlgcts as “giveaways” because the .lava library already provides the base functionalit~p. To assist rapid prototyping. and csscute~l 011 the fly. co11Ip0ntx1t.s can be loaclctl Our Bean building efforts haw focussed on providing a Bean form for the hlnt~lab and Maple engines found in IYe exTcchTu.11~[33]. WC callctl t,his “~IatllServcrBcan”. tentled our original technique of cnginc in\ocat,ion (t.alking t.o a. separate engine process through pipes) a.ft,cr WC discovered that the sinne style of interaction wuld handle R’aatcbrloo iGaple’s MathEdgc (C-subrout.ine style version of Slaple) coded as a Java Native method. Engine configuration and invocation for cit,hcr the .‘pipe” or “nat,ive met~liod” inotlcs of cnginc can be perfornwd at run time, allowing an applica.tion t,o adapt, cfficicnt.ly to new needs as users develop them. The role of the Java code in hlat,llScrvclrB~aII is to initialize t.tlC inidwlying math cngiuc: and iln.ait requC5t.s for work through incoming CVCI~~S. Evcx~bs iIre objects that. hi\v(b e~iilwddwl t,est, as a conlponcnt. - incoming cwnts arc cornlllimds to t.he cligilic:, outgoing eve1It.s may c:ollt.ain t.he engine’s rcsponsc. The role of the Java scrapper is fourfAd: 1. to initialiw t.hc engine 2. to int.crrupt or shutdown t.hc engiue upon rcccipt of the appropriate incoming crcnt. with thv extra text that. 3. to embellish the basic coiimiaiitl 1x1~ bc IIPt~SSilr~ t.0 get tlIC cugiuc t.O OlX!ril~tc? within the Bea (e.g. cst.ra semi-colons: ucwlincsz prwedure calls) 4. t,o parse bhe output of the engine, stripping away interact,ive proxnpts. separating error or warning nwssages from RIlSWCrS, hi’. In order to do propc’r parsing, it is sometiiucs ncvessary to get 1hv engine to emit an ~YldIllilrlier token or signal after processing input. Thus t~here is syncrgy between prowssing done for cnginc input and out,put. of viewilIg t,lic Mi~tllSer\~erBe~ilI is that it. proOiic way vides the functionalit\; of a shell scripts or ail int.eriwtionhandling systxxn such as cq~cl. [31] in a soft,warc component (C)S-iiicicp”ndent.. portablc~ plug and play) form. As might be expcctctl~ most. of our 0pc’ri~t.iOlla.l dif&ultics llik\T to do wit,h t.he idiosyncrasies of cnginc input and output. on various plat.fornls. Wc intend to alt.cr our design for ~~lilt.llServerBean so that il. depends on a separate engine interaction component t,o specify t.hc engine l/O prot,oc:ol. This is an admission t.liat at prcscnt., idiosyncrasies of engine iIlt.PriWtion caunot be haudled simply through t1at.a Odigllri~t~i0ll; inforriiat ion needs to be providctl sometimes. prOcedllriL1 We haye found the ullst.a.Ildardized text input and output for RIi~t~hSerrcrB3ciu1 ade<luate for our simple needs in aI)l)licat.ion building at this tiriic:. In part this is because our input, iicctls are for con~mantls. a-hich arc engine-specific, and our output needs are fairly simple (i.e.: t,cxt works okay as a ~~a~ of displaying the answer), or not arc standard mathcmat.iwl expressions, c.g., Fortrail subrout.iucs or output to be fetl int.o a visualization system. Clearly. however ha.ving a d&a. st.andard t,hat encompasses both control and proccas well as mathenlatical senia.ntics \voulrl dural ilIf0rlni~t.i0ll be bCllcfic:ial, as it. would siniplif:~ t.he mgine-specific parsing illld t.ralIslat~ion tllik we currently employ in moving data bet,mecn sonw wnip0nent.s. Sinw Java Beans for t,ht: near-t,erm can only run on a single proccssor~ there is a limit. I.0 their usefulucss in building dist.ributed s@cnis. Howver~ we bclicw t.hat our espcricncc wit,h thr~n has given us insights as t.o the needs a11tl uscfulnws of symboliL computation systems in other franieworks t,hat do permit. distribut,ed opcrat.ion, such as Java. RMJ or CORBX. 5 Appraisement of Java for Symbolic Computation .Ja.va: clespit,c its claim t,o do el-erything for everyone, suffers from the growing pains of a large progra.mrning langnage and library. There arc already several st,andartls defined by wrsions 1.0, 1.1; and 1.2. In t,he cast of floal,ing point. arithnletic Java dceigners missed hard-lcartwd ltwons [ZO]. It, will take some further time before t,hc the wnnnon usage pat,terus stabilizr and the iutcrfaces to non-.Java. con1poueuts persist. ‘There are two apparent uses of Java coinponcnt.s in synibolic cornputat,ion. The first is a generic graphical user int.crfacc for interactively accessing t,hc functions and objects in a library such as NTL or %(:lib. t-lpplets even permit. t,hc crnbcdding of such an iiitcrfacc into il web browser. One graphical user int,erface as a. web lllil~ view t,lle resultiIIg document with act,ivc m~~t.hen~~ti~~~lcomponents. 111 [15] tl0c11111e1it.s with active cxprcssious are designed in Obcrou. The second is a library of base classes fo; arbit.rary prwiaion rational numbers and polynomials. Piot only InaT such classes lx uwful for demonstra.ting s-pd>olic incthods 111web IIIO~U~W in cd~~~~~~l.ion~~l softapplicat,ions, sudl iis enlbecltled wart. R.h(w high performance is not crucial: but they can 1JC IIRcd in H-hid WC Cilll the C07Lt7’~&~tO~2/ pMYLZZ~1 WCh CO??).p~t~tl;07~ p~oj~t. Here a comput,ational problem that. can be divided iuto many rwtliwwsized unsynchronized tasks with IIO shartrd memory ( “enlbarra.ssingly parallcl”) is post,4 on the l\-eb. all who wish to cor1tribut.c: t.0 t.lle cwllplltilt~i0ll Cilll download an applct. in their browsers Xld donate Cycles towards the solution of bhe problem bv permitting the thread t,o run on their comput,ers for a wkle. .Java’s sadbox principle is crucial: the Java byte code can 1~ trust4 palhipitto be c.oniI,ilt,er-virus-frec~ which IIIa,v CnMJllrRgC t,ioIl. In [G] .Java clssses arc dcscribctl that. manage SUC:~I il project. and n-e are in the process to d~vclop t.hc sofl.\wrc for a coniput.atioual problem. Furt.herulore, WCforcsw t.hat. Ja\a c:o~nponcnt~swill bc dcwlop for coordinating &sting software of tlivcrsc functionalit.); ( “glue bctwvccn conlpoucnts” ), as Java is spccificall?; designrd as a programming t.ool for network t,asks and int,cractivc prowssing. The wrapper idea for lega(:y progrxns is soi~nd: it provides a variety of functionalit?; wit.11 a nlodJava is well-suited for est investment in iniplciilcntat.ioii. \vrappers grams” : support svnilJolic L usage as PI h(IlhIANN. 0.. SC!I-ItiNEhIANN. H., AND c:RAY. s. 21 proposal for S~IltiiC1 ic dat.a intcgri~tion for riiath prot.ocols. III Hits: a.ud Kaltofen [%I]. pp. 163-17.5. because of its l~uilt-in support for “t.alking to proIriulti-thrc,atlc,(l portable “shell sc:ript.s”, portal& for control. We rrsconlnlend that buildrrs of nr\v software design of t.llcir cotlcs x-it11 respect. to t,licir 111 particillar: soft.\var(> coniponcnts. PI PrograIns shoidd provide its muc~ll funccionillity as possiLyle through t,he use of non-propritbt ilrv i1lt:c!rdlilIlgc~ StilIldartIs. It implies so~ne fl(xihlc t.hinking ahout lvhere t.he results of a synibolic coniputat.ion inay &it1 up --. not. n(lclll;tt.llCllli~~.iC:S SySWlll GUI, but essarilv On il proprietary perhaps on a GUI cust.oIn-built for an application. in a coniruodit,~ docunitxit. processor, visualization svst,cin: or datihaso. SOIllf: of t,llc! lllOSt, W,lu~l.blC! fUIlCtiOIliiiit~ of th! proyrictary syst.enis is not. neccssaril?; output as mathematical espressions. but i%R procedures. nuirierical data: visualization. or Illilt.h~lnatical display. authors thank the refcrccs Blitz++. 199s. PI BRACHA: G.. OI~I:RSKY~ k1.. SToliTh.\Ititt;. D.: ASI) ~V~\I)l,Eli? P. RIa.king I.lle fiit.iire Silff! froiii the pa.st: .~dtling gcncricity to t.he .Ja.va progranirning lnng1lilgr. SIGPLAN Notict:s 33, 10 (Oct.. 1998): 183-200. l’roc. 13t,h OOPSL.\. St!e i&o http: //WWW. cs . bell-labs. com/“wadler/pizza/gj/. http: //monet . uwaterloo. ca/blitz/, Dee. A st rollglp-typed eIllbedthl.lk~ B~ioxwt:~?u. M. Eit coniputer algebra lihary. 111 Proc. I~lSCO ‘96 (Hcitlclad C. Limonberg, Gcrrna.uy, Sept. 139G), J. C&l(‘t gelli, Eds.. vol. 1128 of Lecl. Notes Cwrryut. Sci., Spriugcr \vC!rlilgz pp. 22-33. [111CIIAS. I<. c’.. Di,\z, .I.; AND I<.\I:I~oI~I~:K~ E. .A tlis111 a.pprOilc:ll l,o prohleni solving in hIiLpl(‘. Muple Vr n~ntherncl~ics u71d its Applicntion (Boston, 199-l). R, .I. Lopez. Ed., Proceedings of the Maple Suriinirr Workshop and Syniposiiini (R??WS’S~): Birkh5user, pp. 13 21. tributetl WI for C:IIAR. B., .JOHMOS. J.. SAI;NDElIS. D.. ANI> ~~A;\cI<> -4. P. Sonle cspcri1iicnl:s with pilr&!l bignulil aritliSymp. Pu~~ullel Sytholic uict.ic. In I’wc. Fiwt Intcrnnt. Comput. P.4SCO ‘94 (Singapore, 1994). H. Hong, Ed., n’orltl Scirnt.ific Publishing Co.: pp. 94 103. P31 C’OILIM. G. Saclib2.1. http://www.cis.udel.edu/ “saclib/update.html, Sept. 1998. [l-11CC)R.BA/IJOP corba/cichpter Amon-, -1.: Di:\z. X.: .~sL) SuroR. R. S. A report on OpenMath a prot.ocol for the eschangc> of niat,lieiiia.t.i~al information. SIGSA M Bulletin 30: 1 (1996): 21-26. [2] LbDA1.I~ S. Ii.? CHERRY: objcrc:t-orieiitcd approach G. IV.? AND SOII..IYX: t.0 algebra PI~OC.1986 Symp. Sgmbolic Algebuk [3] Athapascan-1. software/athl/, dis[24]. PI WI Note: many of Erich I<alt.of(~n’s publications are accessil)lc through links in the online BI~‘T)$X bibliography database at www.math.ncsu.edu/~kaltofen/bibliography/. The .Java benchlnark esaxqles disciisscd in Section 4.1 can be dolvnloaded frown www. inf . ethz. ch/personal/bernardi/ javabench. ‘86 (New York. pp. 2-l-30. a lui~ssivt?ly I)aralh?l, In Hits nnd I<i~ltofcll S.. YU, T.! AND C’IIAS. C:. Th<! JilW ()lM’llMath liLrar\: (vclrsion 0.3). http: //pdg. cecm. sfu. ca/ openmath/lib/. July 1998. R.eferences [l] OII PI BRAHAM. .A final question reniains. Will large scale symbolic algorithms be programmed in Java? We believe that, our tiinings in Scct.ion 4.1 indicat,c t1ia.t it is possil)le t,o gencOIll~Jllerate efficient code front Java programs for sylnholic ta.tiou that are written in a niodcrii generic style nritli ahstrxt donlain types. Despit.e our concerns for Jitvil’s nlenlory Inodel, CSpN:iiLlly \vllcn R high perceiitagc of the available nieriiory is used, Eve t.liink that synil)olic c,oIiipnt.at,ioIi soft(XI1 adopt .Ji~vil for niajor SOft.\ViWPdcsigii and xxx? lJllikh3 thus t.ake full advautagc? of the coruput,ing infrastructure that .Java hils provided. The \lilIJlf? nlilchine. Fl Prograniuicrs should ilb~lllllf: t,llilt tlicir sofWase needs t.O talk to conlponents that do not share t.he sa.11~ process space. This dots not. nxan that a “sul~rout~ine load and illgC?lJril S+PIll is IlS(!ll!SS Csccl1I.C~” f(%lt.llW of :i COIllpllt.l’r - t.liere a.re rnally cornpllti~tions that arc: poorly hantllctl as the interaction of separate coinponc~~iits. We rilean just. t,liat the 1att.c.r iiotion is not. a coiriplete facility for application building. Acknowledgement their helpful coniriicn& BERSARDIZ. L. tributctl mc’mory ,Jl,. 217. 222. N. All syst,clnl design. In Comput. SyIkSM: IX. Y.: 1986). B. 13’. C%;lr, Ed.. .I\CM. Oct. 2.2 specifica.tion. http: . html. July 1998. //www. omg. erg/ Pd DAIAIAS, S.: C~.~i?~axo. U.. ASD ~V.\TT? S. AII Opmhliltll 1.0 illlplClllCllt~i~t~i0Il. Ill ISSAC 97 PWc. 1997 Z71ternnt. Synp. Symbolic Algchrnic Compd. (Xew York, PC. Y.: 1997): I\-. Kiichlin, Ed., :lCYI Press, pp. 211218. See i&o http : //naomi .math. ca/. WI Di,\z. -1.. HI~M, XI.. KAI.TOFEN. E.. Lono. A.. ASL) ~TALESTE~ T. Process scheduling iu DSC aud t,hc: large: sparso linc~ar s>-sterns challenge. ,J. Syn.boZic Comput. 19. 1 3 (1995); 269-282. [.Li] Diaz. -1.: AXI) KAI.TOFEN. E. FosBos a systc1u for xnanipulating symbolic objects in black box representat,ion. 111 Gloor [22], pp. 30-37. http://www-apache.imag.fr/ 1998. 2-13 1341LIUES, D. Exploring Expect, 1st ccl. O’Reilly ERLINGSSON, U.: KXI‘OFEN, E.: urn MUSSEH, D. Generic Gram-Schmidt orthogonalization by csact diviS?/nzp. Symbolic sion. In ISSAC 96 I’rvc. 1996 Internat. Algebraic Comput. (NW York, N. I’.! 1996), Lakshman Y. N.; Ed., ACM Press: pp. 275 252. 1351LOOS, R G. Ii. Toward a formal iIllplc!meIltatiorl of SIGSAM Bulletin 8, 3 (-Aug. 1974), conlputcr algebra. g--16. Proc. EUROSr\SI’i4. F~~ti~:zlu: T. S., IMIIIZIAS, G.. IiAL;roFEN. E.. 4s~) LAKSIIMAN Y~c:am. DXWOOD: .A systcnl for IIMnipiilating polynomials givfn by straight.-lint programs. ACM Tmns. Math. Soj-twnrc WI [361 MONA(:AN, M. B. Gauss: A paranlctcrized clomain of c:oInpiit.at.ioIi system xvith support for signature functions. In PIW. DISCO ‘93 (Heitlrlberg, Germany: 1993): A. Miola, Ed., vol. 722 of Lect. Notes Cowput. Sc,i., Springer Verlag, pp. 81.-94. 14, 3 (1988); 215-210. GA~TIER. T.. RWII, J.-L., ASD VILLARD: http://www-apache.imag.fr/software/givaro/, 1999. G. Givaro. Jan. [371 ~~OSAGAS-. M. B. In-place arit.hmetic for polynonlials over Z,,. III Proceedings of DISCO ‘92 (1993), vol. 721 of Lecture Notes in Computer Scicnce~ Springer-Verlag, pp. 22-34. GIKSHIWCHY, hl.. LOHO, -4.: ~sl:, Sn~.j~I)~:l<s. B. D. Certifying inconsistency of sparse linear s,vstems. In Gloor [‘?2]: pp. 113 119. 1381M~SWX, metic Libmry. MA: PI Cambritlge. 1993. HIW. 14.. AND J<AL’I‘OI+x~ Pwallel Symbolic Symp. I’ork, PI Foundations E., Eds. Comput. A., .4ND FIKH, .J. Interf;u%lg REDUCE Gcrnlany, t,o J;lv;t. In Pror:. DISCO ‘96 (Hcidclbcrg, 199G), J. CAn~!t and C. Limongclli. Ells.. vol. 1128 of Lect. Notes Com.pul. Sci., Springer Vcrlag, pp. 271 276. ‘97 (iYew N. Y.. 1997), ACRE Press. [411 PO0M.A JH., c’. L.. ASD EDELMAN. A. HUSHASL)S, I’.. IYHEM Interactive supercomputing \\-ith MITMAah. See link at. http://www-math.mit .edu/-edelman/. Aug. 1998. Iur,ro, P.? rZNr) .ATrA111)1. G. Softxvarre conip0ni:nt.s computer algebra. In Gloor [**I: pp. 62-69. Java html, St.udio. 1997. PI for Nov. M.. BROADUMXY, P51 WHC’K, \I,-. On, Document-Centered ponent Software. PhD thesis, Scientific conlput,a.tion of divisors. In Proc. Comp~ut. IS- S. RI. Watt, S. 1a1.10, P.: MORRIWS. R. S. X first SIXOR. E., AND LOBO: -4. Dist,ributecl matrix-froc of large sparse linear systems over finit.c fii~lds. Al!golzthmicu (To appear). Special Issue on “Coarse Grained Parallel Algoritlnns” . ACM .gov/pooma/. P. A\.: DOOTXY, S. S.: S. C:.. Sm~smc~. J. II., ASD report, on the -4’ conqiler. 111 ISSAC ‘94 Proc. Fnternat. Symp. Sy~~bolic Algebraic Curnpd. (IXcw York, N. Y.: 1991), ACM Press: pp. 2% 31. L-l41\j:ATT: solution 1991), lanl NTL: .A library for tloing number theory (version 3.lb). Link on ~veb clocmncnt http: //www. cs . wise. edu/-shoup/, Univ. Wisconsin. Dept.. Comput. Sci, 1998. 1311KALTOFEN: Synap. Symbolic Algeblnic acl. P31 SHOUP, V. of symbolic computation my [3Ql KALXOFES, E. Challcngcs favorite open problems. Miulllsl~ript~ sulxnit.tcd for publication, North Carolina State Univ.: Dept. Math., Aug. 1998. With an additional open problem by R.. M. Corless ad D. J. Jcffrcy. York, X. Y., Press, pp. 333-342. ~rmlual uni-linz. I<AI-IAS: IV.? AND DAKC:\.: .J. D. HOW Java’s float.ingpoint. hurts everyone everxvhcrc. Link from http: //www. cs.berkeley.edu/-wkahan: 1998. 1991 Internat. SAC’91 (NW //www. W. Distrihutctl Maple -- user ancl refer(v 1.0.7). Link from http: //www .risc. ac . at/software/distmaple/, Mar. 1999. SCHIWINER. ence http://www.sun.com/studio/index. KUCIILIS~ \V. On t.lii: mlllt,i-t,llrc:ildl!ci integral polynomial grcxtest common 2.0. http: 1998. .JENKS: R. D., AND SI.:TOR. R.. S. aajorn The Scientific ComPuting System. Springer Verlag, NW York: 1992. WI tcch(JuncJ WI NORMAN, Secon.d Intern&. PASCO factorizat.ion. .A new and useful tiinipla,t~ N. %aits”. Borlnnrl C+ + Report niqiie: http://www.borland.com/borlandcpp/news/ 1995). report/CR9506myers.html. The GNU M~ultiple Precision. ArithFree Software polynonlial 291-308. 1391MYERS, Press. P31 C~RAXLLNT), T. D. R. Multivariat,e 1975). J. ACM 22. 2 (Apr. [22] GINOR: 0.: Eli. ISSAC 98 Proc. 1998 Internat. Symp. Sym.bolic: Algebraic Cornput. (Wew York: N. Y.. 1998): ACM -Associa.Lcs, Dec. 1991. Ed.! Y. N.> C’IIAR: B.; AND .JOHSSON: .J. Softly-are conlponcnts using symbolic computation for problem solving cnvironn1cnt.s. In Gloor [22], pp. 46 53. 1331LnK~HxlAX 24-l Computing, Sept. ETH 1996. Mathemntical Zurich, Corn- Instit,ute of