SIGMA 76(ID:7103/sig012)Improved version of SIGMAImproved version of SIGMA Combined effort of Vandoni (Sigma and Gamma) and Reinfelds (Amtran and Amtran 70) Included in the equipage of the PAW (Physics Analysis Workstation) Original SIGMA code running and in use at CERN after 30 (Vandoni 2003) Places Related languages
References: in Information Processing 77 (Proc. IFIP Congress 77, Toronto, August 8-12, 1977), Vol. 7, Elsevier North-Holland, Inc., New York, 1977 view details After introducing the basic concepts and features of the language, the report describes in some detail the methods and operators for the automatic handling of arrays and for their graphical display, the procedures for construction of programs by users, and other facilities of the system. The report is a new version of CERN 73-5. pdf Extract: Introduction Introduction SIGMA (System for Interactive Graphical Mathematical Applications) is a programming language for scientific computing whose major characteristics are the following: i) The basic data units are scalars, one-dimensional arrays, and multidimensional rectangular arrays; SIGMA provides automatic handling of these arrays. ii) The calculational operators of SIGMA closely resemble the operations of numerical mathematics; procedural operators are often analogous to those of FORTRAN. iii) The system is designed to be used in interactive mode on terminals connected to a central computer; it provides convenient facilities for graphical display of arrays in the form of (sets of) curves. iv) The user can construct his own programs within the system and has also access to a program library; he can store and retrieve his data and programs; he obtains on request a hard copy of alphanumeric and graphical type. v) The SIGMA implementation is laid out as a multi-access time-sharing system using the central processor only for actual computation; the implementation also provides for batch-processing use of SIGMA, the user-written code being the same for both interactive and batch modes. The conceptual development of the SIGMA language resulted from several years of practical work in the field of interactive, array-oriented computing with graphical displays. The early part of this work used GAMMA [1], an interactive system for one-dimensional array computation implemented and operated at CERN on computers of the CDC 3000 series. GAMMA was based on the Culler-Fried system [2] as far as structure and language were concerned; to develop its graphical facilities one relied extensively on user experience. The array-handling methods of SIGMA were taken over from the AMTRAN language [3] and were developed further for multi-dimensional arrays. The SIGMA syntax is similar to FORTRAN (avoiding, however, several of its inconveniences) but contains also elements of other programming languages. SIGMA was first implemented on CDC 6000 series computers at CERN, practical experience was gained, and the graphical facilities were developed by extending GAMMA graphics to multi-dimensional arrays. Extract: Contents of this report Contents of this report The present report describes the principles and main facilities of the SIGMA system as, at present, in use at CERN [4]. For a more detailed description of the use of the SIGMA language we refer the reader to the CERN SIGMA Users' Manual [51. A. tutorial, SIGMA without effort [6], is also available at CERN. This report concentrates on the main features of the system rather than on details of operation and implementation; the latter will necessarily be different from one computer centre to the other, and will depend not only on hardware or software considerations but also on the specialization and wishes of the users. In fact, for various features of the system which are described in a specific way in this report, this is done only for purposes of clarity and brevity; other specifications are possible and may even turn out to be preferable depending on the main usage of the system. Sections 1 to 5 introduce the general concepts and characteristics of the system. Sections 6 to 8 are devoted to the automatic handling of arrays. Section 9 deals with the management of names and data, Section 10 with user-constructed programs, Section 11 with input-output, and Section 12 with the graphical display of arrays. Some examples are given in Section 13. Extract: Acknowledgements Acknowledgements The authors of this report are indebted to many people who contributed in various ways to the development of the GAMMA and SIGMA projects. C. Vandoni, as chief implementor of both systems, acknowledges, in particular, the important contributions made by F. Wittmann and J. Moszczynski. His and J. Reinfeld's thanks are also due to H. Jedlicka for contributing to the implementation work at the University of Georgia. R. Hagedorn and L. Van Hove, theoretical physicists and proponents of the two projects, wish to express their gratitude to M.G.N. Hine and G.R. Macleod for giving the necessary support at CERN, as well as to G.J. Culler and B.D. Fried for introducing them to the principles and applications of the Culler-Fried system for on-line scientific computing at the University of California. In the conceptual development of the systems, and especially in the definition of aims, data structures, and language of SIGMA, the authors profited greatly from suggestions and remarks contributed by many users and based on their experience with concrete scientific applications. The present report is a revised version of the CERN report 73-5, which described SIGMA before its complete implementation was achieved. The present SIGMA is in various respects better than and in no respect inferior to what had been envisaged in the previous report. Many of the improvements were due to the work of G. Barta and again to many users. The authors wish to thank all these people. in Information Processing 77 (Proc. IFIP Congress 77, Toronto, August 8-12, 1977), Vol. 7, Elsevier North-Holland, Inc., New York, 1977 view details in Information Processing 77 (Proc. IFIP Congress 77, Toronto, August 8-12, 1977), Vol. 7, Elsevier North-Holland, Inc., New York, 1977 view details 10 - The array manipulation language SIGMA is available. SIGMA (System for Interactive Graphical Mathematical Applications) is a programming language for scientific computing whose major characteristics are the following: 1. The basic data units are scalars, one-dimensional arrays, and multi-dimensional rectangular arrays; SIGMA provides automatic handling of these arrays. 2. The computational operators of SIGMA closely resembles the operations of numerical mathematics; procedural operators are often analogous to those of FORTRAN. For an introduction to SIGMA, consult the tutorial SIGMA WITHOUT EFFORT, and for details see the CERN SIGMA User's Manual, available from C.E. Vandoni, DD, ext. 3355 or 13+5567. Notation In the following, we use the words "array" and "vector" as synonyms. In both cases, we refer to PAW vectors, in the sense that SIGMA-generated arrays are stored as PAW vectors and therefore are accessible to PAW commands, and PAW vectors are accessible to SIGMA. Operating procedure SIGMA is implemented on VAX-VMS, IBM/VM and APOLLO. SIGMA can be invoked by just typing the command APPL SIGMA, when under PAW. Lines starting with a $ are considered comment lines. The last 20 SIGMA commands typed can be shown by typing a character @ alone followed by carriage return. The command EXIT will revert control to PAW. SIGMA commands are not case sensitive. Data storage and manipulation is based on a conventional assignment statement: = where the result of the expression is assigned to the name. The expression may include arithmetical, relational or logical operators because Boolean truth values are represented by zero for FALSE and one for TRUE. The expression may also include any prefix operator provided by SIGMA. Since the basic data type of SIGMA is an n-dimensional rectangular array, the result of any expression will be an array without any explicit loop structures to process individual components. Names FORTRAN conventions, max. 7 characters. Numbers and ranges Real, integers and Boolean. Note that SIGMA distinguishes only between real or complex numbers and strings; integers and Boolean values (0,1) have no special status. Numbers can be typed in using a completely free (FORTRAN rules!) format. Ranges has the structure: A#B, where A, B are numbers, names of scalars or scalars expressions. Main usage of ranges is in arrays definition and in graphics command. Expressions and assignment statements As in FORTRAN, while basic items may be scalars or full arrays. Scalars and arrays definition Note that scalars are implemented as one-dimensional arrays of length one. A=ARRAY (arg1,arg2) arg1 defines the array structure, i.e. the NCO (Number of COmponents) of the array arg2 provides the numerical values filling the array row-wise. If arg2 is absent (or does not provide enough values) the array is filled with 1. Examples A=ARRAY (6,1#6) 1 2 3 4 5 6 A=ARRAY (4) 1 1 1 1 A=ARRAY (5,5&7&-1&2&1.2) 5 7 -1 2 1.2 A=ARRAY (3)*PI 3.1415927 3.1415927 3.1415927 A=ARRAY (1,123E4) 1230000.0 Debugging commands !PRINT Automatic printing of scalars and arrays after (re)definition. !NOPRINT Suppress !PRINT Basic operators + Add - Subtract * Multiply / Divide ** Exponentiation & Concatenation Logical operators Logical operators act on entities that have Boolean values 1 (true) or 0 (false). The result is Boolean. ANY The result is a Boolean scalar of value 1 (true) if at least one component of the argument is true and 0 (false) otherwise. AND Logical operation AND NOT Logical operation NOT OR Logical operation OR EQ EQual to GE Greater or Equal to GT Greater Than LE Less or Equal to LT Less Than NE Not Equal Array functions (operators) DEL DELta Function DIFF Forward DIFFerence LS R=LS(A,N) shifts index of A to the left by N steps (cyclic) MAX A=MAX(A) replaces each element in a row of A by the MAXimum element in that row MIN A=MIN(A) replaces each element in a row of A by the MINimum element in that row NCO R=NCO(A) Number of COmponent vector of A ORDER R=ORDER(A,P) finds a permutation that brings P in a non-descending order and applies it to A to generate R. PROD Generates the running product SMAX Largest element of A (scalar) SMIN Smallest element of A (scalar) SUM Generates the running sum Workspace commands EXIT SIGMA is stopped, and control is returned to PAW. !WAIT The execution is suspended until the user types a carriage return. !NAMES Obtain a full listing of presently defined names, specifying their NCO. !CLEAR Deletes all defined names. Available functions ABS ABSolute value ACOS ArCOSine ASIN ArcSINe ATAN ArcTANgent ATAN2 ArcTANgent2 (2 arguments) COS COSine COSH Hyperbolic COSine COSINT COSine INTegral EXP EXPonential INT takes INTegral part of decimal number LOG Natural LOGarithm LOG10 Common LOGarithm MOD Remaindering RNDM Random Number Generator - generates random numbers between 0 and 1. R=RNDM(X), where NCO(R)=NCO(X) SIGN Transfer of SIGN R=SIGN(X,Y), R=|X|*Y/|Y| SIN SINe Function SINH Hyperbolic SINe SININT SINe INTegral TAN TANgent TANH Hyperbolic Tangent SQRT SQuare RooT Note that ill defined functions (e.g. SQRT(-2)) will give 0. as result. Input/output statements and control PRINT list Argument list can consist of scalars, arrays and expressions. !DIGITS n Specifies the number of digits in output (PRINT) !LENGTH n Sets output line length in Information Processing 77 (Proc. IFIP Congress 77, Toronto, August 8-12, 1977), Vol. 7, Elsevier North-Holland, Inc., New York, 1977 view details Resources
|