README for SCC This is extracted from the beginning of the scc.texinfo file which is part of the scc.tar.gz distribution. It is available on ftp.ma.utexas.edu:pub/maxima/scc.tar.gz Description =========== This Manual documents how to use and install SCC which is a precompiler offering extensions for Algebraic Programming in C. SCC is intended to be used in conjunction with a standard C compiler (either ANSI C or old style), making possible efficient convenient computations with algebraic objects other than just floating point and small integers. It also supports input and output for such objects in a natural way using printf and scanf. Because it is difficult for humans to learn new languages, and because we feel C is an excellent programming language, we have tried to minimize the differences with standard C. The only data types built into the compiler are those of standard C. What SCC is capable of doing however, is being told how to apply operators such as cast or @code{+} to user defined types. SCC also allows overloading function names, making it possible for different functions to be invoked depending on argument types. One test of this was done with Rafael de la Llave. In about 100 lines of user SC code, we were able to convey sufficient information to SCC about the Brent multiprecision floating point library (in FORTRAN), so as compile 380 files from the numerical recipes library distribution (C version). The resulting code ran correctly, with the extra precision, as far as we were able to determine. We made no changes to the original sources, except for correcting one error in the source and automatically adding an include file to each numerical recipes file, before its compilation by SCC. The numerical recipes code exercises many features of C. It certainly requires printf and scanf to work correctly. SCC includes an extended stdio library, to allow users to easily define the stdio of C to work correctly with user defined types. This includes handling of constants in source code, so that if we had constants in the source which contained 50 significant digits they would be read correctly. The user defined scan function may be used to read such constants. Another application was to link with the PARI library code, which contains many mathematical objects, including extended precision integers as well as floats. Other applications involve adding complex numbers and their operations, adding interval arithmetic, and vector operations. There is no limit on the number of different types handled. All knowledge about them is conveyed by include files, with none built into the compiler itself. Eventually it is hoped that a large number of library routines will be available. We feel the portability, ease of linkage with existing code, speed, and the fact that it is available with sources and without charge, will make it attractive to a number of users.