NUMAL Section 3.1.1.1.1.3.2

BEGIN SECTION : 3.1.1.1.1.3.2 (, december 1978 )

AUTHORS : J.R.BUNCH,L.KAUFMAN,B.N.PARLETT.

CONTRIBUTOR : C.H.CONVENT.

INSTITUTE : UNIVERSITY OF AMSTERDAM.

RECEIVED : 770712.

BRIEF DESCRIPTION :

    DETERMSYM2 CALCULATES THE DETERMINANT OF A SYMMETRIC MATRIX.
    THE LDL' DECOMPOSITION OF THE MATRIX, AS PRODUCED BY DECSYM2,
    SHOULD BE AVAILABLE.

KEYWORDS :

    GENERAL SYMMETRIC MATRIX,
    LDL' DECOMPOSITION,
    BLOCK DIAGONAL PIVOTING;

CALLING SEQUENCE :

    THE HEADING OF THE PROCEDURE READS :
    "REAL" "PROCEDURE" DETERMSYM2(DETAUX,N,AUX);
    "VALUE" N;"INTEGER" N;
    "ARRAY" DETAUX;"INTEGER" "ARRAY" AUX;
    "CODE" 34294;

    DETERMSYM2 : DELIVERS THE CALCULATED VALUE OF THE DETERMINANT OF
                 THE MATRIX;

    THE MEANING OF THE FORMAL PARAMETERS IS :
    DETAUX :    <ARRAY IDENTIFIER>;
                "ARRAY" DETAUX[1:N];
                ENTRY : THE ARRAY DETAUX AS PRODUCED BY DECSYM2;
    N      :    <ARITHMETIC EXPRESSION>;
                THE ORDER OF THE ARRAY DETAUX
                    ( = THE ORDER OF THE MATRIX );
    AUX    :    <ARRAY IDENTIFIER>;
                "INTEGER" "ARRAY" AUX[2:5];
                ENTRY : THE ARRAY AUX AS PRODUCED BY DECSYM2;

PROCEDURES USED : NONE.

RUNNING TIME : PROPORTIONAL TO N;

METHOD AND PERFORMANCE :

    FIRST OF ALL DECSYM2 SHOULD BE CALLED TO PERFORM THE LDL'
    DECOMPOSITION OF THE SYMMETRIC MATRIX,ACCORDING TO A METHOD DUE
    TO BUNCH,KAUFMAN AND PARLETT (SEE [1],[2]).
    IF A 1*1 BLOCK HAS BEEN COMPUTED FOR D THEN DETAUX[I] CONTAINS
    THE VALUE OF D[I]. IF A 2*2 BLOCK HAS BEEN COMPUTED FOR D THEN
    DETAUX[I]=1 AND DETAUX[I+1] CONTAIN THE VALUE OF THE DETERMINANT
    OF THE CORRESPONDING 2*2 BLOCK.
    THE COMPUTATION OF THE DETERMINANT IS DONE BY CALCULATING THE
    PRODUCT OF THE ELEMENTS OF DETAUX.

REFERENCES :

    1) J.R.BUNCH,L.KAUFMAN.
      SOME STABLE METHODS FOR CALCULATING INERTIA AND SOLVING
      SYMMETRIC LINEAR SYSTEMS.
      MATHEMATICS OF COMPUTATION 31,P 163-180,1977.
    2) J.R.BUNCH,L.KAUFMAN,B.N.PARLETT.
      DECOMPOSITION OF A SYMMETRIC MATRIX.
      NUMERISCHE MATHEMATIK 27,P 95-109,1976.

EXAMPLE OF USE  :

"BEGIN" "COMMENT" EXAMPLE OF USE OF THE PROCEDURE DETERMSYM2;
        "INTEGER" I,J;"REAL" TOL,DETERMINANT;
        "REAL" "ARRAY" A[1:5,1:5],DETAUX[1:5];
        "INTEGER" "ARRAY" AUX[2:5],P[1:5];

        A[1,1]:=A[1,2]:=-3;A[1,3]:=-18;A[1,4]:=-30;A[1,5]:=18;
        A[2,2]:=-1;A[2,3]:=-4;A[2,4]:=-48;A[2,5]:=8;
        A[3,3]:=-6;A[3,4]:=-274;A[3,5]:=6;
        A[4,4]:=119;A[4,5]:=19;
        A[5,5]:=216;
        "FOR" I:=1 "STEP" 1 "UNTIL" 5 "DO"
        "FOR" J:=I+1 "STEP" 1 "UNTIL" 5 "DO" A[J,I]:=A[I,J];
        OUTPUT(61,"(""("THE COEFFICIENT MATRIX :")",/")");
        "FOR" I:=1 "STEP" 1 "UNTIL" 5 "DO"
        "BEGIN" "FOR" J:=1 "STEP" 1 "UNTIL" 5 "DO"
                OUTPUT(61,"("-2ZD,4B")",A[I,J]);
                OUTPUT(61,"("/")")
        "END";
        TOL:="-14;
        DECSYM2(A,5,TOL,AUX,P,DETAUX);
        "IF" AUX[2]=1 "THEN"
             OUTPUT(61,"("/,"("THE MATRIX IS SYMMETRIC")"")")
        "ELSE" OUTPUT(61,"("/,"("THE MATRIX IS ASYMMETRIC.THE ")",
                           "("RESULTS ARE MEANINGLESS")"")");
        DETERMINANT:=DETERMSYM2(DETAUX,5,AUX);
        OUTPUT(61,"("/,"("THE DETERMINANT OF THE MATRIX : ")",
                    3Z3D.2D")",DETERMINANT)
"END"

THIS DELIVERS AS RESULT :

    THE COEFFICIENT MATRIX :
     -3      -3     -18    -30     18
     -3      -1      -4    -48      8
    -18      -4      -6   -274      6
    -30     -48    -274    119     19
     18       8       6     19    216

    THE MATRIX IS SYMMETRIC.
    THE DETERMINANT OF THE MATRIX :    168.00

SOURCE TEXT :
"CODE" 34294;