SIGMA 76(ID:7103/sig012)

Improved version of SIGMA  


Improved 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
AMTRAN 70 => SIGMA 76   Incorporated some features of
SIGMA => SIGMA 76   Evolution of

References:
  • Reinfelds, Juris; Vandoni, Carlo E.; "Sigma 76" pp963-968 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
  • Hagedom, R.; J. Reinfelds, C. Vandoni, and L van Hove "SIGMA, A New Language for Interactive Array-Oriented Computing" European Organization for Nuclear Research, Geneva (Switzerland). 21 Dec 78 CERN-78-12 view details Abstract: A description is given of the principles ana the main facilities of SIGMA (System for Interactive Graphical Mathematical Applications), a programming language for scientific computing whose major characteristics are automatic handling of multidimensional rectangular arrays as basic data units, interactive operation of the system, and graphical display facilities.


    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
  • SIGMA without effort, CERN Report, Geneva 1978 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
  • PAW News version 1.03/05 July 25, 1988 view details External link: Online copy Extract: The array manipulation language SIGMA is available
    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
    • Download as part of PAW from CERN (various platforms)
      external link