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