home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1993 / Internet Info CD-ROM (Walnut Creek) (1993).iso / networking / mail / netlib / netlib-paper < prev    next >
Encoding:
Text File  |  1991-03-21  |  23.8 KB  |  769 lines

  1. ...  eqn | troff -ms
  2. .EQ
  3. delim $$
  4. .EN
  5. .ND November 19, 1985
  6. .TL
  7. .ps 12
  8. .in 0
  9. Distribution of Mathematical Software Via
  10. .br
  11. Electronic Mail
  12. .AU
  13. .ps 11
  14. .in 0
  15. Jack J. Dongarra\|$size -1 {"" sup \(dg}$\h'.15i'    
  16. .AI
  17. .ps 10
  18. .in 0
  19. Mathematics and Computer Science Division\h'.20i'   
  20. Argonne National Laboratory\h'.20i'   
  21. Argonne, Illinois 60439\h'.20i'
  22. Electronic mail: anl-mcs!dongarra or dongarra@anl-mcs
  23. .AU
  24. .ps 11
  25. .in 0
  26. Eric Grosse\h'.20i'
  27. .AI
  28. .ps 10
  29. .in 0
  30. AT&T Bell Laboratories\h'.20i'   
  31. Murray Hill, New Jersey 07974\h'.20i'
  32. Electronic mail: research!ehg or ehg@btl.csnet
  33. .FS
  34. .ps 9
  35. .vs 11p
  36. This draft was typeset on \*(DY.
  37. Unix is a trademark of AT&T Bell Laboratories.
  38. .br
  39. $size -1 {"" sup \(dg}$\|The work of this author
  40. was supported in part by the
  41. National Science Foundation under Agreement No.
  42. DCR-8419437.
  43. Any opinion, findings and conclusions or recommendations expressed in this
  44. publication are those of the authors and do not necessarily reflect the
  45. views of the National Science Foundation.
  46. .FE
  47. .QS
  48. .sp 2
  49. .ps 10
  50. .in .25i
  51. .ll -.25i
  52. .I Abstract
  53. \(em
  54. A large collection of public-domain mathematical software
  55. is now available
  56. via electronic mail.
  57. Messages sent to
  58. "netlib@anl-mcs"
  59. (on the Arpanet/CSNET)
  60. or to
  61. "research!netlib"
  62. (on the Unix\(tm network)
  63. wake up a server that
  64. distributes items from the collection.
  65. For example the one-line message,
  66. "send index",
  67. gets a library catalog by return mail.
  68. We describe how to use the service
  69. and some of the issues
  70. in its implementation.
  71. .in 
  72. .ll 
  73. .QE
  74. .nr PS 11
  75. .nr VS 16
  76. .nr PD 0.5v
  77. .SH 
  78. Introduction.
  79. .PP
  80. A large pool of high-quality mathematical software is
  81. in use at educational, research, and industrial institutions around the country.
  82. At present this software is available
  83. from a number of
  84. distribution agents \(em for example
  85. AT&T Bell Laboratories for the PORT library,
  86. IMSL,
  87. the National Energy Software Center (NESC),
  88. and the Numerical Algorithms Group (NAG).
  89. All do a fine job with the distribution of
  90. large packages of mathematical software, but there is no 
  91. provision for convenient distribution of small pieces of software.
  92. Currently scientists transmit such software by magnetic tapes,
  93. but contacting authors and
  94. deciphering alien tape formats wastes
  95. an intolerable amount of time.
  96. .PP
  97. A new system,
  98. .I
  99. netlib,
  100. .R
  101. provides quick, easy, and efficient distribution
  102. of public-domain software to the scientific computing community
  103. on an as-needed basis.
  104. It sends electronic mail over
  105. Arpanet, CSNET, Telenet, or Unix uucp.
  106. .SH 
  107. Netlib in Use.
  108. .PP
  109. Imagine an engineer who needs to compute several integrals numerically.
  110. He consults the resident numeric expert, who advises
  111. trying the routine $dqag$ for some preliminary estimates
  112. and then to use $gaussq$ for the production runs.
  113. The engineer types at his terminal
  114. .I
  115. .nf
  116.           mail research!netlib
  117.           send dqag from quadpack
  118.           send gaussq from go
  119.           .
  120. .fi
  121. .R
  122. In a short time, he receives back
  123. two pieces of mail from 
  124. $netlibd$.
  125. The first contains the
  126. double precision Fortran subroutine $dqag$
  127. and all the routines from $quadpack$ that $dqag$ calls;
  128. the second contains $gaussq$ and the routines it calls.
  129. .PP
  130. The utility routine $d1mach$
  131. was not included with $gaussq$, since it is probably already installed
  132. on his system;
  133. if he had wanted it, he could have changed his request to
  134. .I
  135. "send gaussq from go core"
  136. .R
  137. to include the ``core library'' of machine constants and basic linear
  138. algebra modules in the search list.
  139. .PP
  140. Should the engineer later decide that the routine
  141. $dqags$
  142. would be more effective, he could send the request
  143. .I
  144. "send dqags but not dqag from quadpack"
  145. .R
  146. to get
  147. $dqags$
  148. and any subroutines not already sent with
  149. $dqag$ .
  150. .PP
  151. This engineer happens to be running Unix;  if instead his machine
  152. were on the Arpanet, he would use the address 
  153. .I
  154. netlib@anl-mcs.
  155. .R
  156. If he needed the code in upper case, he would send his request
  157. in all caps;  to get single precision, he need simply change the names
  158. of the routines or the libraries, as appropriate.
  159. Finally, he could ask for several routines together:
  160. .I
  161. .nf
  162.         SEND RG RS FROM DEISPACK
  163.         SEND DGECO FROM LINPACK CORE
  164. .fi
  165. .R
  166. .PP
  167. Meanwhile, the numerical expert decides she should
  168. check on the current contents of netlib.  She types
  169. .nf
  170. .I
  171.         mail research!netlib
  172.         send index
  173. .fi
  174. .R
  175. The return mail shows a library $toeplitz$ she is not
  176. familiar with, so she sends mail
  177. .I
  178. "send index for toeplitz"
  179. .R
  180. to see what is included.
  181. Curious to see a typical routine, she tries
  182. .I
  183. "send only cslz from toeplitz"
  184. .R
  185. and gets just $cslz$, not any of the routines which it calls.
  186. .PP
  187. More formally, requests have the following syntax:
  188. .nf
  189. $request_line$:
  190.      send $names$ $exclusions sub opt$ $libraries sub opt$
  191.      send only $names$ $libraries sub opt$
  192.      who is $names$
  193. $exclusions$:
  194.      but not $names$
  195. $libraries$:
  196.      for $names$
  197.      from $names$
  198. .fi
  199. where $names$ is a list of words, separated by blanks.
  200. .PP
  201. Just how quickly these requests are answered depends on the speed of the
  202. network communications involved, but five or ten minutes is typical for
  203. Arpanet.
  204. CSNET or Unix uucp may require anywhere from minutes to
  205. days to transmit a message from
  206. sender to recipient.
  207. The actual processing time is insignificant.
  208. One user wrote back enthusiastically that the system was so fast
  209. he preferred using it to hunting around on his own machine for
  210. the library software.
  211. .SH
  212. Material Available through Netlib.
  213. .PP
  214. Currently netlib offers:
  215. linear algebra routines from LINPACK [9], EISPACK [13,15],
  216. and TOEPLITZ [1];
  217. optimization routines from  MINPACK [13] and Gay [8];
  218. the special function library FNLIB by Fullerton;
  219. code from the book by Forsythe, Malcolm, and Moler [10];
  220. quadrature routines from QUADPACK [16];
  221. PPPACK routines from de Boor's
  222. .I
  223. Practical Guide to Splines [3];
  224. .R
  225. the Collected Algorithms of the ACM published in the
  226. .I
  227. Transactions on Mathematical Software;
  228. .R
  229. FISHPACK routines providing finite difference
  230. approximations for elliptic boundary value problems [18];
  231. iterative linear system solvers from ITPACK [14];
  232. the public subset of FITPACK by Cline;
  233. routines for machine constants and error handling
  234. and other public routines from the PORT library [11]
  235. and SLATEC,
  236. the Basic Linear Algebra Subroutines and extensions [12],
  237. Golub and Welsch's GAUSSQ [10],
  238. biharmonic solvers [2],
  239. the SCPACK Schwarz-Christoffel conformal mapping program [19],
  240. the PARANOIA floating point test,
  241. the PCHIP routines for Hermite cubics by Fritsch and Carlson,
  242. the MA28 sparse matrix routine from the Harwell library,
  243. the Y12M package for sparse linear systems,
  244. Scott's LASO block Lanczos code,
  245. and miscellaneous other items.
  246. The multigrid program PLTMG by Bank
  247. and the multiple precision package by Brent
  248. are also in the collection, though
  249. they are probably too large to realistically
  250. send by mail.
  251. .PP
  252. The various standard linear algebra libraries
  253. are included for convenience,
  254. but the real heart of the collection lies
  255. in the recent research codes and the
  256. "golden oldies" that somehow never made it
  257. into standard libraries.
  258. Almost all of these programs are in Fortran
  259. but some are in C, such as the routine $rainbow$ by Grosse
  260. for generating uniformly spaced colors.
  261. There is also a collection
  262. of errata for numerical books,
  263. descriptions and benchmark data for various computers,
  264. test data for linear programming collected by Gay,
  265. and the ``na-list'' electronic address book
  266. maintained by Gene Golub.
  267. .PP
  268. We do
  269. \fInot\fP
  270. send out entire libraries.
  271. The computer center setting up a comprehensive numerical library
  272. should get magnetic tapes through the usual channels.
  273. .PP
  274. There is no reason to restrict the collection to mathematical software.
  275. If the habit of sharing work using software libraries
  276. of general utility
  277. becomes popular in other fields, we would be delighted to accomodate them.
  278. .SH
  279. The Netlib Server.
  280. .PP
  281. The netlib server runs under the Unix
  282. operating system
  283. (8th edition at Bell Labs and 4.1BSD at Argonne)
  284. and consists of a few shell scripts and C programs.
  285. The following discussion necessarily
  286. assumes some familiarity with Unix commands.
  287. .PP
  288. When mail arrives for
  289. $netlib$,
  290. it is piped through a sed editor script that strips punctuation,
  291. through a sort process to remove duplicates,
  292. and into a C program that parses the request.
  293. This program then invokes a shell script that
  294. translates the given library names into a search list
  295. and invokes the system loader with the given routine names
  296. as external symbols to be resolved.
  297. The resulting loader map is edited into a list of
  298. file names to satisfy the request.
  299. These files, along with a time stamp and disclaimer,
  300. are then mailed back to the requester.
  301. A line is added to a logfile showing the time, return address,
  302. number of characters sent, and requested routine and library names.
  303. .PP
  304. The programs can tolerate minor syntax deviations,
  305. since we do get requests like:
  306. "Please send me r1mach from port. Thank you."
  307. from people who don't realize they are talking
  308. to a program.
  309. Users sometimes submit a single request on the
  310. subject line of the mail message, so a 
  311. "Subject:"
  312. prefix is also allowed.
  313. One user even sent 
  314. .I
  315. "send index 4 eispack"
  316. .R
  317. instead of
  318. .I
  319. "send index for eispack",
  320. .R
  321. so 
  322. $4$
  323. is a synonym for
  324. .I
  325. for
  326. .R
  327. and 
  328. .I
  329. from.
  330. .R
  331. (This is not such an unreasonable mistake, considering that
  332. the instructions for using netlib are often given over the phone.)
  333. However, we make no attempt to accept arbitrary English input.
  334. .PP
  335. One way to start up the mail processing is to have a daemon
  336. process that wakes up every few minutes and checks for a
  337. nonempty mailbox.
  338. In 8th edition Unix, thanks to Dave Presotto, if a mailbox contains
  339. .I
  340. Pipe to rcv.cmd,
  341. .R
  342. then the mail delivery software, instead of appending the
  343. incoming text to a mailbox, will pipe the text to the command
  344. $rcv.cmd$.
  345. (Similar functionality is available from the Berkeley mail alias facility.)
  346. The mailbox is owned by user-id 
  347. .I
  348. netlibd
  349. .R
  350. so that the process is run as netlibd;
  351. hence the return mail will have this mnemonic name attached.
  352. The userid is not just 
  353. .I
  354. netlib
  355. .R
  356. because if the return mail command
  357. fails or if the remote user sends a reply, the message should go
  358. to the administrator, not back into the request processor.
  359. For example, mail once came back announcing that a user
  360. had gone on vacation in the few hours before the netlib
  361. response had gotten to his mailbox!
  362. .PP
  363. The file that describes the mapping from library names to loader
  364. search lists consists simply of lines of the
  365. form 
  366. "eispack => \-leispack" .
  367. Several similar lines allow for alternate spellings
  368. such as 
  369. \f2eispac\f1
  370. and 
  371. \f2eispak\f1.
  372. This file is easily updated when new libraries are added to the
  373. collection.
  374. .PP
  375. A subtle security problem arises from the implementation:  we
  376. construct commands to a shell based on text from a user.
  377. It could be catastrophic to blindly send mail to a return address
  378. of 
  379. \f2kgbvax!\`rm -r *\`\f1,
  380. since the backquote characters tell the
  381. shell to first execute a command that removes all files!
  382. Therefore, the request parser checks for dangerous characters.
  383. Another potential security problem is that someone might tamper
  384. with the program text as it is enroute to the user.
  385. For now, we feel that the threat is not serious enough to adopt
  386. encryption schemes, though those would be easy to add.
  387. .PP
  388. Even though there are standards,
  389. it is not particularly easy to extract from a request a
  390. valid return address.
  391. There are comment brackets and anticomment brackets to be recognized
  392. and address transformations to be unwound,
  393. but we now seem to be correctly answering except
  394. when the return address contains blanks.
  395. .PP
  396. We do not use checksums since the network software
  397. already provides a reliable channel.
  398. We have received only one complaint, which involved
  399. noise on the link from a user's Vax to his PC;
  400. we regard that as his responsibility.
  401. If checksums were required, we would choose
  402. a scheme like that in MOSIS [15]
  403. which allows for anticipated, insignificant
  404. changes such as addition of trailing blanks on lines.
  405. To avoid problems with mail processing programs in the various
  406. networks, our request syntax avoids colons
  407. and our replies start with a blank line
  408. so that message contents are not processed as header information
  409. along the mail route.
  410. Problems occassionally arise with computers that are willing
  411. to send us mail, but will not allow us to send mail back.
  412. Delays for multihop and inter-network mail are more common,
  413. but we have no way to collect statistics on that and
  414. in any event it is out of our control.
  415. .PP
  416. The most difficult problem we have encountered has been length limitation;
  417. a few of the programs are more than 100 kilobytes,
  418. and that is more than the mail systems at many
  419. Arpanet sites will tolerate.
  420. Of course, the file transmission protocols can
  421. handle larger sizes,
  422. but those are too cumbersome and unstandardized
  423. for our purposes.
  424. We get around this by splitting up large items into several pieces of mail,
  425. but would prefer to see the mail systems themselves improved.
  426. We considered using Huffman coding to compress the files we send
  427. out, but that would only save about a factor of two and would
  428. require that we ship decoding programs.
  429. However, in setting up the netlib
  430. collection of test data for linear programming,
  431. David Gay did decide to adopt a program
  432. for compressing MPS format files.
  433. .SH 
  434. Discussion.
  435. .PP
  436. We chose this mode of interaction via electronic mail, keeping the
  437. intelligence local to the central depository, because mail is at
  438. present the only ubiquitous data communication service.
  439. We considered putting an interactive program at
  440. remote sites, communicating by mail with the depository.
  441. That would allow a better dialogue (``Do you want that in single
  442. or double?'') but would be difficult to write in the necessary 
  443. portable way.
  444. .PP
  445. We are not aware of any comparable software distribution service
  446. in existence,
  447. although some personal computer "public bulletin board" systems
  448. may be somewhat similar.
  449. At least one bulletin board has been confiscated
  450. because it contained a stolen telephone charge number.
  451. For this reason and to control space, we do not allow users to
  452. put their own software automatically in the collection.
  453. .PP
  454. The netlib service provides its users with features
  455. not previously available.
  456. There are no administrative channels to go through.
  457. Since no human processes the request, it is
  458. possible to get software in the middle of the night.
  459. The most up-to-date version is always available.
  460. Individual routines or pieces of a package can be obtained
  461. instead of a whole collection.
  462. One of the problems with receiving a 
  463. large package of software is the volume
  464. of material. Often only a few routines are required from a package, yet the
  465. material is distributed as a whole collection and cannot easily be 
  466. stripped off. 
  467. .PP
  468. At present, netlib is simply a clearinghouse for contributed
  469. software and therefore subject to various disadvantages that
  470. have plagued such projects in the past:
  471. the only documents, example programs, and implementation tests
  472. are those supplied by the code author or other users.
  473. There may be multiple codes for the same task and no help
  474. in choosing which is best.
  475. We have made an effort not to stock numerous copies of machine
  476. constants, but in general we have left submitted codes untouched.
  477. Our system differs from previous efforts mainly by
  478. a different focus than, say, the Quantum Chemistry Exchange,
  479. and a more convenient distribution mechanism.
  480. .PP
  481. Several years ago there was a discussion on the Arpanet prompted
  482. by a query from Jim Pool as to whether the time was not ripe
  483. for "a portable set of documentation for interactive access by
  484. users of a collection of mathematical software."
  485. His idea was that the SLAC NAPLUG [5]
  486. be put into an expert system form.
  487. We have not yet tackled that problem in netlib,
  488. although we do pass along whatever documentation comes
  489. from the original code authors.
  490. Since the time of that discussion, local mathematical typesetting
  491. with output on terminals has become more common
  492. but most of the other objections remain.
  493. The user can not be assumed to describe his problem exactly as the
  494. numerical analyst would;  thus the program must be able to translate
  495. from the engineering to the mathematical domain.
  496. Unserstanding only the general nature of the user's problem is not
  497. enough;  this leaves too much documentation to wade through.
  498. A certain amount of insight is required to realize that a
  499. user may not need exactly what he thinks he needs.
  500. .IP
  501. "Do you need the matrix inverse?  Maybe you just need the
  502. solution to a linear system."
  503. .IP
  504. "This is a correlation matrix, and I really do want to look at
  505. the elements."
  506. .LP
  507. The general user will only be looking for a library routine a few
  508. times a year.  He will certainly not remember more than a few
  509. commands; a sophisticated search language is infeasible.
  510. Who is going to write all the documentation in the required format?
  511. At least a modest knowledge of numerical analysis and considerable
  512. consulting experience will be necessary, but the job is tedious
  513. and unrewarding.
  514. The best interactive documentation system is a good numerical analyst
  515. interested in the users' problems.  Unfortunately, this system
  516. has its own difficulties:  expensive to reproduce,
  517. inconsistent in intelligence and alertness,
  518. hard to transport,
  519. prone to use buzzwords,
  520. often unavailable,
  521. specialized,
  522. difficult to keep current.
  523. So there have been continuing efforts to build online numerical help
  524. facilities, the most successful of these being
  525. GAMS at the National Bureau of Standards,
  526. the NAG online help facilities and decision trees,
  527. and
  528. NIT at Oak Ridge.
  529. Entirely new writing styles are possible.
  530. Beyond the graph structured text
  531. popularized in "programmed learning manuals" a decade ago,
  532. specific documentation might be derived,
  533. rather than simply searching for and listing parts of a file.
  534. Instead of a single example,
  535. an online consultant could provide a complete program tailored to
  536. the problem at hand.
  537. Also, some knowledge of the previous experience of the reader
  538. might be used to modify the level of explanation and avoid
  539. needless repetition.
  540. .PP
  541. The main cost of running this service is for communications.
  542. If it becomes necessary, we will
  543. require uucp users to call the hosts
  544. to pick up their return mail
  545. so that such costs are distributed fairly.
  546. At an average of a few requests per day,
  547. the traffic has been small enough to impose a negligible load on the
  548. host systems.  Disk costs are controlled by discarding files that
  549. the host administrators are not themselves interested in keeping.
  550. The current collection occupies 32 megabytes.
  551. Most important, the human costs for maintaining the collection are modest
  552. and consist mainly of collecting software.
  553. We do not see how we could run such a widely accessible and low
  554. overhead operation if we had to charge for the service,
  555. and are not interested in doing so.
  556. (See, however, [4] for a description of the Toolchest
  557. electronic ordering system.
  558. One problem mentioned there is that users want to see demonstrations
  559. of software before purchase.)
  560. .PP
  561. The coverage of netlib obviously will tend to reflect the interests
  562. of the collectors, so we would welcome "associate
  563. editors" to augment the collection.  Please send mail to the authors.
  564. At present, there are just two distribution sites.
  565. Mail delays would be reduced if machines on other networks
  566. or in other countries were willing to also serve
  567. as depositories.
  568. On the other hand, it is difficult even to keep two locations in sync!
  569. The software netlib uses to reply to mail is itself available from netlib,
  570. so it would be fairly easy for someone to, say, annnounce a service
  571. for searching a bibliography that he has collected.
  572. .PP
  573. Netlib, being free, cannot replace
  574. commercial software firms.
  575. We provide no consulting,
  576. make no claims for the quality of the software distributed,
  577. and do not even guarantee the service will continue.
  578. In compensation,
  579. the quick response time and the lack of bureacratic, legal, and financial
  580. impediments encourages researchers to send us their codes.
  581. They know that their work can quickly be available to a wide
  582. audience for testing and use.
  583. We hope netlib will promote the use of modern numerical techniques
  584. in general scientific computing.
  585. .sp
  586. .SH
  587. Acknowledgements.
  588. .PP
  589. We wish to express our
  590. gratitude to the many authors and editors
  591. who have permitted their codes to be freely distributed
  592. and to Gene Golub for his encouragement and help in starting
  593. this project.
  594. The trick of editing a loader map is taken from the GAMS system
  595. at the National Bureau of Standards.
  596. Finally, the managements of our organizations deserve thanks for
  597. sponsoring this public service.
  598. .SH
  599. References.
  600. .IP [1]
  601. .R
  602. O.B. Arushanian, et al, 
  603. .I
  604. The TOEPLITZ Package Users' Guide,
  605. .R
  606. Argonne National Laboratory, ANL-83-16, (1983).
  607. .sp
  608. .IP [2]
  609. P. Bj\o'o/'rstad,
  610. "Fast Numerical Solution of the Biharmonic Dirichlet Problem on Rectangles",
  611. .I
  612. SIAM J. on Numerical Analysis,
  613. .R
  614. 20 (1983), 59-71.
  615. .sp
  616. .IP [3]
  617. C. de Boor,
  618. .I
  619. A Practical Guide to Splines,
  620. .R
  621. Applied Mathematical Science, Vol. 27, Springer-Verlag, New York, 1978.
  622. .sp
  623. .IP [4]
  624. Catherine A. Brooks,
  625. "Experiences with Electronic Software Distribution",
  626. .I
  627. USENIX Association 1985 Summer Conference Proceedings,
  628. .R
  629. Portland, Oregon.
  630. .sp
  631. .IP [5]
  632. T. F. Chan, W.  M. Coughran, Jr., E. H. Grosse, M. T. Heath, F. T. Luk,
  633. "Numerical Analysis Program Library User's Guide",
  634. SLAC Computing Services User Note 82,
  635. Stanford University, 1976.
  636. .sp
  637. .IP [6]
  638. W.J. Cody,
  639. "The Construction of Numerical Subroutine Libraries",
  640. .I
  641. SIAM Review,
  642. .R
  643. 16 (1974), 36-46.
  644. .sp
  645. .IP [7]
  646. W.J. Cody,
  647. "Observations on the Mathematical Software Effort",
  648. to appear in 
  649. .I
  650. Sources and Development of
  651. Mathematical Software, 
  652. .R
  653. ed. W. Cowell, Prentice-Hall, Englewood Cliffs, N.J., 1983.
  654. .sp
  655. .IP [8]
  656. J. E. Dennis, D. M. Gay, R. E. Welch,
  657. "An Adaptive Nonlinear Least Squares Algorithm",
  658. ACM Trans. on Mathematical Software,
  659. 7 (1981) 348-368,369-383.
  660. .sp
  661. .IP [9]
  662. J.J. Dongarra, J.R. Bunch, C.B. Moler, and G.W. Stewart, 
  663. .I
  664. LINPACK Users' Guide,
  665. .R
  666. SIAM Publications, Philadelphia, 1979.
  667. .sp
  668. .IP [10]
  669. G.E. Forsythe, M.A. Malcolm, and C.B. Moler,
  670. .I
  671. Computer Methods for Mathematical Computations,
  672. .R
  673. Prentice-Hall, Englewood Cliffs, N.J., 1977.
  674. .sp
  675. .IP [11]
  676. P. A. Fox, A. D. Hall, N. L. Schryer,
  677. "The PORT Mathematical Subroutine Library",
  678. ACM Trans. on Mathematical Software,
  679. 4 (1978) 104-126, 177-188.
  680. .sp
  681. .IP [12]
  682. W. Fullerton,
  683. .I
  684. FNLIB User's Manual,
  685. .R
  686. AT&T Bell Laboratories, (1981).
  687. .sp
  688. .IP [13] 
  689. B.S. Garbow, J.M. Boyle, J.J. Dongarra, and C.B. Moler, 
  690. .I
  691. Matrix Eigensystem Routines - EISPACK Guide Extension, 
  692. .R
  693. Lecture Notes in Computer Science, Vol. 51, Springer-Verlag, Berlin, 1977.
  694. .sp
  695. .IP [10]
  696. G.H. Golub, J.H. Welsch,
  697. "Calculation of Gauss Quadrature Rules",
  698. .I
  699. Mathematics of Computation,
  700. .R
  701. 23 (1969) 221-230.
  702. .sp
  703. .IP [14]
  704. .R
  705. D.R. Kincaid, J.R. Respess, D.M. Young,
  706. "ITPACK 2C: A Fortran Package for Solving Large Sparse
  707. Linear Systems by Adaptive Accelerated Iterative Methods",
  708. .I
  709. ACM Trans. Mathematical Software,
  710. .R
  711. 8 (1982), 302-322.
  712. .sp
  713. .IP [12]
  714. C. Lawson, R. Hanson, D. Kincaid, and F. Krogh,
  715. "Basic Linear Algebra Subprograms for Fortran Usage",
  716. .I
  717. ACM Trans. Mathematical Software,
  718. .R
  719. 5 (1979), 308-371.
  720. .sp
  721. .IP [15]
  722. G. Lewicki, D. Cohen, P. Losleben, D. Trotter,
  723. "MOSIS: Present & Future"
  724. .I
  725. 1984 Conf. on Advanced Research in VLSI,
  726. .R
  727. MIT, Jan. 1984.
  728. .sp
  729. .IP [13]
  730. .R
  731. J. Mor\*'e, D. Sorensen, B. Garbow, and K. Hillstrom,
  732. .I
  733. The MINPACK Project,
  734. .R
  735. in Sources and Development of
  736. Mathematical Software, edited by W. Cowell, Prentice Hall, pp. 88-111, 1984.
  737. .sp
  738. .IP [16]
  739. R. Piessens, E. deDoncker-Kapenga, C. Uberhuber, D. Kahaner,
  740. .I
  741. Quadpack: a Subroutine Package for Automatic Integration,
  742. .R
  743. Series in Computational Mathematics v.1,
  744. Springer Verlag, 1983.
  745. .sp
  746. .IP [17] 
  747. B.T. Smith, J.M. Boyle, J.J. Dongarra, B.S. Garbow, Y. Ikebe,
  748. V.C. Klema, and C.B. Moler, 
  749. .I
  750. Matrix Eigensystem Routines - EISPACK Guide, 
  751. .R
  752. Lecture Notes in Computer Science, Vol. 6, 2nd Edition, 
  753. Springer-Verlag, Berlin, 1976.
  754. .sp
  755. .IP [18]
  756. P.N. Swarztrauber and R.A. Sweet, 
  757. "Efficient FORTRAN Subroutines
  758. for the Solution of Separable Elliptic Equations, Algorithm 541",
  759. .I
  760. ACM Trans. Mathematical Software,
  761. .R
  762. 5 (1979), 352-364.
  763. .sp
  764. .IP [19]
  765. L. N. Trefethen,
  766. "Numerical Computation of the Schwarz-Christoffel Transformation",
  767. SIAM J. Scientific and Statistical Computing,
  768. 1 (1980) 82-102.
  769.