To all InterCall users and/or other interested people, ------------------------------------------- The first InterCall Newsletter. October 1992. ------------------------------------------- I n t e r C a l l A Mathematica package that allows interactive calling of external code ----------- For those of you who don't already know InterCall has undergone a major revision in the past few months. This Newsletter is to keep you up to date with some of the changes and to announce InterCall Version 2. InterCall Version 2.0 is now finished and all existing users will get a free upgrade. This will be shipped soon, and a supplement to the manual will be posted later. If you are new to Mathematica, and receive this Newsletter, then attached at the end is a short flyer describing InterCall and how it can be used. ========================================== 0. CONTENTS OF THIS NEWSLETTER ========================================== 1 OUTLINE 2 COMPILER 3 SERVER 4 DEFAULTS 5 MATHSOURCE 6 NETLIB 7 MATHLINK 8 MISCELLANEOUS 9 QUESTIONS Cheers, Terry Robb Email: tdr@vaxc.cc.monash.edu.au Mathematics Department Phone: +61 (3) 565-5666 Monash University Fax : +61 (3) 565-4403 Clayton 3168, Melbourne, Australia. ------------------------------------------ NOTE: InterCall can now be ordered by emailing to 'intercall_forward@wri.com'. This is an alternative to 'analytic@earwax.pd.uwa.oz.au'. ------------------------------------------ ========================================== 1. OUTLINE ========================================== So what's new in InterCall Version 2? Well version 2 is faster, it now features a compiler/interpreter, and it allows a server to be started on a remote computer. These new features will be discussed in this newsletter. Also discussed will be how to use MathSource, since various items of InterCall related material is distributed free there. InterCall allows you to link in virtually any external code. A section of this newsletter will discuss public domain software libraries and how they can be linked into Mathematica using InterCall. A common place to obtain such libraries is via netlib, and the way to access netlib is also discussed. Finally a Macintosh version of InterCall is available -- now that MathLink is supported under Mathematica 2.1 on the Macintosh. ------------------------------------------ ========================================== 2. COMPILER ========================================== InterCall Version 2 features its own internal compiler/interpreter. A big advantage of the new compiler/interpreter is that problems such as solving ordinary differential equations or performing numerical quadrature etc, can now be done very much faster. For example using Mathematica and InterCall Version 2, on a computer in Australia, to call an IMSL quadrature routine, on a computer in the USA, is often faster in real-time than calling Mathematica's built-in NIntegrate routine!. This result is impressive I think. ------------------------------------------ 2.1 The reason for the great improvement in speed is due to InterCall's new compiler/interpreter. If a function argument can be compiled then a new pseudo-code interpreter will eliminate the need for calls to be made back to Mathematica code -- and this is what often slowed version 1 of InterCall down. With version 2, pseudo-code will be interpreted remotely, and a great speed improvement results not only because very little network traffic takes place, but also because the function can be evaluated very much faster. Previously the only way to get such a speed improvement would have been to write a small piece of fortran or C code to evaluate the function argument. This is still possible in InterCall Version 2. However the new compiler will give you code that runs only about three times slower than compiled fortran code. Furthermore there is no overhead associated with connecting that pseudo-code to other InterCall imported routines. Not all user-written Mathematica functions are compileable however, and in such a case InterCall Version 2 will emulate the function, so that it can be called by other external code, just as in version 1. ------------------------------------------ 2.2 The interpreter associated with the InterCall compiler is faster than the interpreter associated with the Mathematica compiler. One way to demonstrate this is to call a routine that requires a function argument. InterCall Version 2 will try and compile that function argument just like some Mathematica routines do (such as NIntegrate). Some examples are given below which compare Mathematica's NIntegrate routine with various IMSL quadrature routines that were imported into Mathematica using InterCall. The timings for the IMSL quadrature routines are almost identical to the timings for equivalent NAG quadrature routines. Note that the examples below use InterCall Version 2.0 to call the IMSL subroutine library on a REMOTE and SLOWER computer, and yet InterCall is still able to beat NIntegrate even in real-time. Each of the answers returned by IMSL can also be validated (since an error bound is also computed), and this is something that Mathematica's NIntegrate routine does not do. In[3]:= NIntegrate[ x Cos[30x] Sin[x], {x, 0, 2Pi} ] ShowTime::timing: 5.21667 Second (5.40272) Out[3]= 0.00698908 In[4]:= dqdag[ Function[x, x Cos[30x] Sin[x]], 0, 2Pi ] ShowTime::timing: 0.333333 Second (0.92579) Out[4]= 0.00698908265537221 In[5]:= NIntegrate[ x Sin[30x]/Sqrt[1-(x/(2Pi))^2], {x,0,2Pi-10^-15} ] ShowTime::timing: 4.06667 Second (4.64816) Out[5]= -2.54326 In[6]:= dqdags[ Function[x, x Sin[30x]/Sqrt[1-(x/(2Pi))^2]], 0, 2Pi, $ERRREL->10^(-13) ] ShowTime::timing: 0.533333 Second (1.34366) Out[6]= -2.54325961889401 In[7]:= NIntegrate[ 1/((x+1)Sqrt[x]), {x, 0, Infinity} ] ShowTime::timing: 1.21667 Second (1.37504) Out[7]= 3.14159 In[8]:= dqdagi[ Function[x, 1/((x+1)Sqrt[x])], 0, +1, $ERRREL->10^(-14) ] ShowTime::timing: 0.383333 Second (0.9924) Out[8]= 3.14159265358973 In the examples above, the answers returned by NIntegrate each happen to be accurate to about 11 digits, and the IMSL answers are each accurate to at least 14 digits. (Exact answers are 2*Pi/899, 2*Pi^3*BesselJ[1,60*Pi] and Pi respectively.) For users of NAG, the routines d01akf, d01ajf and d01amf can be used instead of the IMSL routines dqdag, dqdags and dqdagi. The calling syntax is identical, except that $ERRREL should be replaced by $EPSREL for the NAG routines. The answers and timings are the same. The ShowTime::timing lines above show the cpu-time used by Mathematica, with the number in brackets being the elapsed real-time in seconds (as calculated by the change in AbsoluteTime[]). This elapsed real-time is often a better measure because it includes the time used remotely outside Mathematica. For the first example it takes 5.21667 Second of cpu and 5.4 seconds of real-time to integrate x*Cos[30x]*Sin[x], from x=0 to 2Pi using Mathematica's NIntegrate routine. Whereas using InterCall to call IMSL's quadrature routine called dqdag it takes 0.333333 Second of cpu and just 0.9 seconds of real-time. So InterCall is about six times faster even in real-time for this particular problem. Virtually all the real-time used by the InterCall examples above is taken up compiling and then exporting the code to the remote computer. When the InterCall compiler is made faster these timings will be even better. ------------------------------------------ 2.3 InterCall Version 2.0 can internally call a function such as Function[x, x Exp[x]] about 70,000 times a second on a DECstation 5000. Fortran is only about three times faster than that (i.e 180,000 times a second), so InterCall is close to the theoretical limit. Considering that pseudo-code has to interpreted, this is pretty good. The time for InterCall to compile and export the pseudo-code is about 0.2 seconds for this example. Below are some timings for comparison. The first table shows the number of function calls per seconds, and the second table shows the number of function evaluation per seconds. Function[x, x Exp[x]] Mathematica uncompiled: 1*10^3 calls/sec Mathematica compiled: 7*10^3 calls/sec InterCall compiled: 70*10^3 calls/sec Fortran compiled: 180*10^3 calls/sec Function[{x,n}, Do[x Exp[x], {n}] ] Mathematica uncompiled: 2*10^3 evals/sec Mathematica compiled: 25*10^3 evals/sec InterCall compiled: 45*10^3 evals/sec Fortran compiled: 200*10^3 evals/sec ------------------------------------------ ========================================== 3. SERVER ========================================== An InterCall server can be started for use with InterCall Version 2. With InterCall Version 2 and Mathematica 2.1 (not 2.0) it is possible to start a remote driver in 'server-mode'. This allows users to connect to a remote driver even if they don't have an account on the drivers computer. Previously, in version 1, the remote driver could only be launched by Mathematica, and this required the user to have an account with an .rhosts file on the remote computer to authorize the connection. ------------------------------------------ 3.1 Normally the InterCall package launches a MathLink program called ilink, which then executes the driver called icall. This process is referred to as 'launch-mode'. The driver could even be rsh-ed on a remote computer, although this requires the presence of an .rhosts file as mentioned above. Version 1 of InterCall only supported launch-mode to a remote computer. InterCall Version 2 however supports another type of connection. If the ilink program is started from a terminal (and not launched by Mathematica as discussed above) then the program goes into 'server-mode'. While in server-mode, any InterCall in the world can connect to it and become a client, although only one client can be accepted at a time. No password or account on the remote computer is required by the InterCall client. This method of connection is especially useful for Macintosh users of InterCall. The server on the remote computer takes up no resources if it's not being used, and there is no problem about leaving it running in the background all the time. ------------------------------------------ 3.2 The command to connect via launch-mode to a remote driver on a host named say "myhost.site" is (as in version 1) InterCall["myhost.site"] but you first need to have an .rhosts file in your account on the host to authorize this connection. With version 2, if an InterCall server is running on the host then you can connect to the driver without even having an account there. You just need to know the port number of the server. The command to then connect via server-mode to say port 1234 on a host named "myhost.site" would be InterCall["1234@myhost.site"] ------------------------------------------ 3.3 From time to time I can make available some public servers that anyone with InterCall Version 2 will be able to use for testing purposes. For example a server could be started on a machine here that has IMSL or NAG. This could be temporarily connected to by others who don't have those libraries. In the past an InterCall server has been started on a fast machine here. Anyone in the world, who had internet access, InterCall Version 2.0 and Mathematica 2.1, was able to connect to it and Import in any routine they liked. No password was required. ------------------------------------------ ========================================== 4. NEW DEFAULTS FILES ========================================== A lot of extra defaults files will be produced and distributed free via MathSource. Defaults files are just Mathematica packages that set up standard default values and actions for all the routines in some fortran or C library. So far there are defaults files for the IMSL, NAG, LINPACK, MINPACK and ITPACK subroutine libraries. To be written are defaults for EISPACK and ODEPACK etc. Each of these, except IMSL and NAG, is a public domain piece of numerical software. MINPACK is a minimization and root finding package, and ITPACK deals with sparse matrices. Defaults files are relatively easy to write. For example the LINPACK defaults file took just two days to write and debug. ------------------------------------------ 4.1 The InterCall manual explains how you too can write your own defaults file for yet more libraries -- such as NumericalRecipes in C etc. If you are interested in writing a defaults file for NumericalRecipes then you should however be aware of the following. The fortran version of NumericalRecipes is written in single precision. Currently InterCall only talks to double precision routines -- remember that the datatypes of R and I correspond to the fortran (C) datatypes of real*8 (double) and integer*4 (long int). Datatypes for real*4 (float) and integer*2 (short int) probably won't be added, so the NumericalRecipes source would need to be changed to double precision. An 'IMPLICIT REAL*8 (A-H,O-Z)' at the top of each routine would achieve this, although most routines would remain only single precision accurate. ------------------------------------------ 4.2 All the new defaults files, as well as the standard IMSL and NAG defaults files, each have as part of their format a short description of what each defaulted routine does. These descriptions are accessed by InterCall's find command, which allows you to quickly select a routine from any library which has a defaults file pre-loaded into Mathematica. ------------------------------------------ ========================================== 5. USING MATHSOURCE ========================================== There is now quite a bit of InterCall stuff obtainable via MathSource. To get some help on how to use MathSource, email the line 'help intro' to 'mathsource@wri.com'. For example if you are using a unix machine, then type % mail mathsource@wri.com help intro % To get a shortened postscript version of the InterCall (version 1) manual, email to 'mathsource@wri.com' as follows % mail mathsource@wri.com send 0202-587-0033 % ------------------------------------------ 5.1 Available via MathSource are defaults files for various public domain subroutine libraries. Currently this includes the LINPACK, MINPACK and ITPACK libraries, although defaults files for other libraries will appear eventually. The new defaults files are available free, and to get a copy just email the line 'send 0203-443' to 'mathsource@wri.com', i.e % mail mathsource@wri.com send 0203-443 % Also available via MathSource are Notebooks with interesting InterCall examples. This includes a partial differential equation example (that Mathematica alone could not handle), and a Traveling Salesman Problem (which requires the new compiler). To get the MathSource abstracts for all the various InterCall Notebooks, email to 'mathsource@wri.com' as follows % mail mathsource@wri.com find InterCall % ------------------------------------------ 5.2 If you don't have a Mathematica front-end that can display Notebooks, then you can still download a Notebook from MathSource and use a Notebook-to-TeX converter. You can then TeX the converted file and print it. Various Notebook-to-TeX converters are available at MathSource. To find a version compatible with your system send the line 'find nb2tex' to MathSource, and then download the appropriate one for your system. ------------------------------------------ ========================================== 6. PUBLIC DOMAIN LIBRARIES ========================================== There have been requests for the source code to various pieces of public domain software that could be imported into Mathematica using InterCall. A lot of public domain numerical software is floating around on the network, and the best collection is probably kept at netlib. To get an index email the line 'send index' to 'netlib@ornl.gov', i.e % mail netlib@ornl.gov send index % (If you wish to be kind to the network, then people in Europe should email instead to 'netlib@nac.no' and people in the Pacific to 'netlib@draci.cs.uow.edu.au'.) ------------------------------------------ 6.1 A good anonymous ftp site that has a mirror of some of the netlib stuff is 'ux1.cso.uiuc.edu'. Look in the /math directory -- all the source code and other interesting stuff is kept there. To use anonymous ftp on a unix computer type 'ftp' followed by a computer name such as 'ux1.cso.uiuc.edu'. It then prompts for a username, for which you should enter the name 'anonymous'. For a password just put anything (usually your email address). You can then use commands such as 'cd', 'ls' and 'get' etc. ------------------------------------------ 6.2 I have the fortran source code for EISPACK, ITPACK, LINPACK, MINPACK and ODEPACK in a form suitable for use with InterCall. Here is a very brief description of those libraries: eispack.tar.Z (417K) matrix eigenvalues and vectors itpack.tar.Z (112K) sparse matrices (useful for elliptic PDE's) linpack.tar.Z (148K) linear algebra (gaussian elimination, QR, SVD) minpack.tar.Z (151K) nonlinear equations and least squares, roots odepack.tar.Z (659K) ordinary differential equations All the above compressed-tar files have makefile's and some documentation. Each can be linked to Mathematica with InterCall -- although full defaults for all the routines in the EISPACK and ODEPACK libraries have not been written yet. ------------------------------------------ 6.3 Instructions on how to install the above libraries for linking with Mathematica using InterCall can be requested from me if needed. ------------------------------------------ ========================================== 7. MATHLINK ========================================== Some people have asked about how InterCall is related to MathLink. Part of InterCall is in fact written as a MathLink C-program. InterCall and MathLink are similar in some respects -- for example both are designed as a tool to facilitate easy communication between two processes. For InterCall, the processes are assumed to be a Mathematica kernel and a driver connected to an object library. The communication is then assumed to be that which commonly occurs between fortran or C numerical routines. MathLink in general will allow symbolic expressions to be passed between different processes. ------------------------------------------ 7.1 For those of you who are familiar with MathLink, you will notice that InterCall's Import command is the equivalent of MathLink's Install command. InterCall however is much more interactive than MathLink. For example InterCall's AddDefault command is the equivalent of MathLink's template file mechanism -- with the difference being that AddDefault can be used dynamically from within Mathematica. The template file used by MathLink has to be compiled into a specially written C-program, and this has to be set up in advance. No such setting up is needed with InterCall. InterCall has a method for defining datatypes and a syntax for setting default actions. These settings can all be defined and changed from within Mathematica by using various InterCall commands. It is not possible to do anything similar with MathLink. Also InterCall is able to emulate functions, and with version 2 it can compile them as well. A final feature of InterCall is that it is possible to write a file containing default settings for all the routines in some external library (hence the IMSL, NAG and other defaults files). In general to use InterCall you only need to know how to use Mathematica, it is not necessary to write at the C or fortran level as required by MathLink. ------------------------------------------ 7.2 Some people have asked how InterCall is written. Well it's organized into three completely different component. The first component is a Mathematica package (that's the customized InterCall_*.m file). This handles the user interface and translates default settings into an internal form that tells Mathematica how to talk to a remote driver program. The second component is a MathLink program (the ilink executable). This is a bi-directional pipe that handles all InterCall communication into and out of Mathematica. It is the main communication tool. Formerly, under Mathematica 1.2, the communication was done with two uni-directional pipes called isend and iread. These however have been replaced with the MathLink program called ilink which is much more efficient. The final component is a shell script (the icall file together with an object file called icall.o). This is the remote driver that attaches itself to your external code or library. The shell script itself is fairly trivial -- all the work and interesting stuff is actually done in the icall.o file. The Mathematica package and the remote driver talk to each other via the ilink communication program, and each of these three components can run on a different computer. ------------------------------------------ ========================================== 8. MISCELLANEOUS ========================================== ------------------------------------------ 8.1 The 'find' command, available in both version 1 and 2 of InterCall, is documented only briefly on page 37 of the InterCall manual. The command is very useful however and has a simple but powerful syntax. The find command can be used to search a list of short descriptions of all the routines in the IMSL, NAG and other libraries. As an example, to find all NAG routines that deal with eigenvalues, but not eigenvectors, of a complex matrix, type as on line In[4] below: In[4]:= find[ "eigenvalue" && Not["vector"] && "complex" && "(NAG)" ] F02AJF (NAG) Complex matrix, (black box), all eigenvalues. F02ANF (NAG) Complex upper Hessenberg matrix, all eigenvalues, LR algorithm. F02AWF (NAG) Complex Hermitian matrix, (black box), all eigenvalues. In the above, a list of all routines that contain the words "eigenvalue" and "complex" but not "vector" in the documentation for NAG is returned. Similarly to find any routine that deals with oscillatory integrands: In[5]:= find[ "integ" && "oscill" ] D01AKF (NAG) One-dimensional quadrature, adaptive integration over a finite interval, method suitable for oscillating functions. You can use any boolean operator on the strings in an obvious way. Other example inputs are: find[ "eigenvalues" && "vectors" && Not["symmetric"] && "real" ] find[ ("integ" || "quadr") && "singular" ] find[ "Bessel" && ("second" || "2" || "modified") ] find[ "Airy" && "(NAG)" ] find[ "eigen" && "band" ] find[ " LU" && "factor" && "real" && "band" ] find[ "determinant" && "hermitian" ] find[ "determinant" && Not["real"] && Not["factor"] ] find[ ("zero" && "real" && "poly") || ("zero" && "system") ] find[ ("ordinar" && "diff" && "equ") && "boundary" && "shoot" ] find[ f02fhf ] ------------------------------------------ 8.2 The InterData.m file takes about 20 seconds to load on a DECstation 5000. Switching off spell checking (Off[General::spell]) will speed loading. Another way to speed loading is to only load the defaults you actually need. So if you don't have IMSL then edit the InterData.m file to stop it always loading the IMSL defaults -- this will make InterData.m load in about half the time. In general you can write your own InterData.m file and if you store it in your top-level directory it will get loaded in preference to the standard InterData.m file installed in the main InterCall directory. ------------------------------------------ 8.3 Functions that are compilable with InterCall version 2.0 include all the functions that the Mathematica Compiler can handle. In addition the InterCall compiler can handle vector arguments, whereas the Mathematica Compiler can only handle scalars. Thus compilation of the Set operation is extended, and compilation of the Part command is also implemented. So the patterns _List = _ _ = _List _[[__]] _[[__]] = _ can all be compiled by InterCall. In addition the commands AppendTo and Table can be compiled, and a concept of shared global variables is also supported. For reference, the standard Mathematica compiler can handle the following Mathematica commands (on scalar arguments): Numerical functions: Plus Times Power Minus Subtract Divide Sqrt Exp Log Sin Cos Tan Csc Sec Cot Sinh Cosh Tanh Csch Sech Coth ArcSin ArcCos ArcTan ArcCsc ArcSec ArcCot ArcSinh ArcCosh ArcTanh ArcCsch ArcSech ArcCoth Round Floor Ceiling N Sign Abs Max Min Re Im Conjugate Arg Mod Quotient Control structures, predicates, etc: If Switch Which Equal Unequal Less LessEqual Greater GreaterEqual SameQ EvenQ OddQ And Or Not Module Block With Set AddTo SubtractFrom TimesBy DivideBy Increment PreIncrement Decrement PreDecrement Sum Product Do For While CompoundExpression Break Continue Return Goto Label Throw Catch InterCall extends this to allow vector (and matrix etc) operations on Set, and it also supports the following commands: Part AppendTo Table Other commands such as Drop, Append, Rotate and Reverse etc will be added eventually. ------------------------------------------ 8.4 A good way to use InterCall is just to call your own specially written code. You do not need to own a library like IMSL or NAG to benefit from the features available in InterCall. Various Notebooks available via MathSource illustrate this. The mandel.ma Notebook (send to 'mathsource@wri.com' to obtain a copy) also contains some interesting ways to use the InterCall compiler. ------------------------------------------ 8.5 InterCall works by using MathLink to talk to a remote driver program. At present remote drivers exist for an Alliant, Apollo, AViiON, Connection Machine, DECstation, HP, IBM Risc, MIPS, NEC, NeXT, Sequent, SGI, Sony, Sparc, Stardent, Sun3, VAX and some others. If you have InterCall installed on a computer that has Mathematica, then you can still access code on another computer provided you have a remote driver installed there. Drivers for the above types of computer can be requested from 'intercall_forward@wri.com'. ------------------------------------------ ========================================== 9. ANY QUESTIONS? ========================================== I am very interested in what you are using, or intend using, InterCall for. What additional features would you like InterCall to have?. What defaults files do you think InterCall should have?. Do you use InterCall to call mainly standard library code, such as IMSL or NAG, or do you use it to call just your own special purpose code? Would you use InterCall on a Macintosh to call code on a unix computer? Note that under development at the moment is a syntax to allow a parallel datatype structure to be used in the AddDefault command. This will be useful with a remote driver on a parallel computer such as the Connection Machine. The compiler/interpreter would also be extended to support some parallel constructs. If you have any ideas on this I would very much like to hear from you. If you have any other suggestions or problems please let me know. As usual, for support or any technical information, you can contact me at 'tdr@vaxc.cc.monash.edu.au'. Things to watch out for: Mathematica Journal article. ------------------------------------------ Attached is an old flyer and order form. ========================================================================== I n t e r C a l l +++++++++++++++++ What is InterCall? InterCall is a Mathematica package that provides: o easy access to all the routines in the IMSL and NAG subroutine libraries. o interactive access to any other library or user-written code. o straightforward declaration of default settings for arguments in external routines. With InterCall you can: o import routines written in Fortran or C and call them as if they were Mathematica functions. o call external routines on a remote computer. o develop and test the robustness and correctness of external libraries. o write your own interface to other external libraries. Why Use InterCall? o To extend the type of problems that Mathematica can solve. o The full scope of routines in libraries such as IMSL and NAG become available to Mathematica users. o Intelligent defaults are supplied automatically by InterCall when you call an external routine. o Inspecting and modifying defaults is simple and uses commands named GetDefault and SetDefault. o Independent documentation, for calling external routines from within Mathematica, is not required. Who Should Use InterCall? o Anyone whose work involves numeric processing and who wants Mathematica's ease of use. o Mathematica users who need to access the IMSL or NAG libraries on a remote machine. o Current users of IMSL or NAG who want a simple development environment. o Teachers of courses such as numerical methods. o Engineers, scientists, economists, physicists, mathematicians, statisticians etc. How Does One Use InterCall? This loads the InterCall package and the In[1]:= < $RESULT This integrates the Mathematica expression In[4]:= dqdag[Sin[#]^3&, 0, Pi] Sin[x]^3 from x=0 to x=Pi, using IMSL. Out[4]= 1.33333333333333 This imports the IMSL routine for finding In[5]:= GetDefault[devasb] eigenvalues of a band-symmetric matrix. Out[5]= devasb[$A_] -> $EVAL This defines a band-symmetric matrix. In[6]:= matrix = (Upper diagonal, then main diagonal.) {{0,-1,-1,-1,-1,-1}, {1,2,3,4,5,6}}; This finds the three smallest eigenvalues. In[7]:= devasb[matrix, $NEVAL->3] NEVAL is documented in the IMSL manual. Out[7]= {0.253806820113374, 1.78947241169543, 2.96490635538658} InterCall completely integrates the symbolic capabilities of Mathematica with the numeric routines of any external library. You can pass a Mathematica function, array, or any other expression, as an argument to any external routine and InterCall will send the correct type of information to that external routine. Where possible function arguments are compiled and pseudo-code is interpreted remotely as this results in greatly increased efficiency. When you receive InterCall you will get: o disks containing all the files needed to run InterCall on your computer. o a detailed manual describing how to use InterCall. o a printed Notebook with many examples. System Requirements: InterCall works under Mathematica versions 2.0 and 2.1, and requires a Unix kernel. It also works under Mathematica version 2.1 on a Macintosh running System 7. Remote drivers to access external code on a remote computer are available for an Alliant, Apollo, AViiON, Connection Machine, DECstation, HP, IBM Risc, MIPS, NEC, NeXT, Sequent, SGI, Sony, Sparc, Stardent, Sun3, VAX and some others. These can be requested separately. For more information on InterCall, please contact the InterCall distributor: Analytica Email: analytic@earwax.pd.uwa.oz.au PO Box 522 Phone: +61 9 386 5666 Nedlands 6009 Fax : +61 9 386 5666 Perth WA Australia. Or email to: intercall_forward@wri.com ========================================================================== ========================================================================== O R D E R F O R M ++++++++++++++++++ To order InterCall, please fill out this form and post, fax or email it to the distributor listed above. Ship to: Bill to: Name: ___________________________ Name: __________________________ Company: ___________________________ Company: __________________________ Address: ___________________________ Address: __________________________ ___________________________ __________________________ ___________________________ __________________________ Fax: (_____)____________________ Fax: (_____)___________________ Cost: (The cost of InterCall in US dollars, including shipping.) o Commercial $500 o Educational $300 Method of Payment: o Check or Money order enclosed payable to Analytica o Company PO number: _______________________________ (enclosed) o Visa/MasterCard no.: _____________________________ Exp date: ___/___ Signature: _______________________________ Customizing: (We need to customize your version of InterCall.) Please start up a Mathematica session and supply the output for the following two lines of Mathematica input: In[1]:= { $MachineType, $MachineName, $MachineID } // InputForm Out[1]= _______________________________________________________________ In[2]:= { $System, $OperatingSystem, $Version } // InputForm Out[2]= _______________________________________________________________ Media: (Tick one. Other formats may cost extra.) o 800K Macintosh disk ____ o DOS formatted 3.5 inch disk ____ o Other (specify) ____________________________________________________ ==========================================================================