NUMAL Section 1.2.7

BEGIN SECTION : 1.2.7 (December, 1979)

AUTHORS  : J.J.G. ADMIRAAL, C.G. VAN DER LAAN.

CONTRIBUTORS : J.J.G. ADMIRAAL, H. FIOLET, C.G. VAN DER LAAN.

INSTITUTE: MATHEMATICAL CENTRE, UNIVERSITY OF AMSTERDAM.

RECEIVED : 730817.

BRIEF DESCRIPTION :

    THIS SECTION CONTAINS THE PROCEDURES ROTCOMCOL, ROTCOMROW AND CHSH2
    ROTCOMCOL REPLACES  THE COLUMN  VECTOR VR+I*VI GIVEN IN THE  ARRAYS
    AR,AI[L:U,I:I]  AND THE  COLUMN VECTOR YR+I*YI GIVEN IN THE  ARRAYS
    AR,AI[L:U,J:J] BY  THE VECTORS (VR+I*VI)*(CR-I*CI)-(YR+I*YI)*S  AND
    (YR+I*YI)*(CR+I*CI)+(VR+I*VI)*S, RESPECTIVELY.
    ROTCOMROW  REPLACES  THE  ROW VECTOR VR+I*VI   GIVEN IN  THE ARRAYS
    AR,AI[I:I,L:U]  AND THE ROW VECTOR  YR+I*YI  GIVEN  IN  THE  ARRAYS
    AR,AI[J:J,L:U] BY THE VECTORS (VR+I*VI)*(CR-I*CI)+(YR+I*YI)*S AND
    (YR+I*YI)*(CR+I*CI)-(VR+I*VI)*S, RESPECTIVELY.
    CHSH2 COMPUTES THE COMPLEX HOUSEHOLDERMATRIX THAT
    MAPS THE COMPLEX VECTOR (A1,A2) INTO THE DIRECTION (1,0).
    WARNING :  IN ROTCOMCOL AND ROTCOMROW THE COSINE IS COMPLEX AND THE
        SINE IS REAL, IN CONTRAST TO THIS, IN CHSH2 THE SINE IS COMPLEX
        AND THE COSINE IS REAL.

KEYWORDS :

    COMPLEX VECTOR OPERATIONS,
    ROTATION,
    HOUSEHOLDER MATRIX.


SUBSECTION : ROTCOMCOL .

CALLING SEQUENCE :

    THE HEADING OF THE PROCEDURE READS :
    "PROCEDURE" ROTCOMCOL(L, U, I, J, AR, AI, CR, CI, S);
    "VALUE" L, U, I, J, CR, CI, S; "INTEGER" L, U, I, J;
    "REAL" CR, CI, S; "ARRAY" AR, AI;
    "CODE" 34357;

    THE MEANING OF THE FORMAL PARAMETERS IS :
    L,U,I,J:   <ARITHMETIC EXPRESSION>;
               THE  ROTATION   IS  PERFORMED  ON  THE   COLUMN  VECTORS
               AR,AI[L:U,I:I] AND AR,AI[L:U,J:J];
    AR,AI:     <ARRAY IDENTIFIER>;
               "ARRAY" AR,AI[L:U,I:J];
               ENTRY:
               AR:THE REAL PARTS OF THE COLUMN VECTORS
               AI:THE IMAGINARY PARTS OF THE COLUMN VECTORS
               EXIT:
               THE RESULTING VECTORS (SEE ALSO BRIEF DESCRIPTION);
    CR,CI,S:   <ARITHMETIC EXPRESSION>;
               ENTRY:
               ROTATION FACTORS; SEE ALSO BRIEF DESCRIPTION.

RUNNING TIME : ROUGHLY PROPORTIONAL TO (U-L) .

LANGUAGE: ALGOL 60.


SUBSECTION : ROTCOMROW .

CALLING SEQUENCE :

    THE HEADING OF THE PROCEDURE READS :
    "PROCEDURE" ROTCOMROW(L, U, I, J, AR, AI, CR, CI, S);
    "VALUE" L, U, I, J, CR, CI, S; "INTEGER" L, U, I, J;
    "REAL" CR, CI, S; "ARRAY" AR, AI;
    "CODE" 34358;

    THE MEANING OF THE FORMAL PARAMETERS IS :
    L,U,I,J:   <ARITHMETIC EXPRESSION>;
               THE   ROTATION   IS   PERFORMED  ON  THE  ROW    VECTORS
               AR,AI[I:I,L:U] AND AR,AI[J:J,L:U];
    AR,AI:     <ARRAY IDENTIFIER>;
               "ARRAY" AR,AI[I:J,L:U];
               ENTRY:
               AR:THE REAL PARTS OF THE ROW VECTORS
               AI:THE IMAGINARY PARTS OF THE ROW VECTORS
               EXIT:
               THE RESULTING VECTORS (SEE ALSO BRIEF DESCRIPTION);
    CR,CI,S:   <ARITHMETIC EXPRESSION>;
               ENTRY:
               ROTATION FACTORS; SEE ALSO BRIEF DESCRIPTION.

PROCEDURES USED : NONE .

RUNNING TIME : ROUGHLY PROPORTIONAL TO (U-L) .

LANGUAGE: ALGOL 60.

EXAMPLE OF USE :

    "BEGIN"
    "COMMENT" EXAMPLE OF USE ROTCOMCOL;
    "REAL" "ARRAY" AR,AI[1:2,1:2];
    "INTEGER" I,J;
    AR[1,1]:=+4;AR[1,2]:=+5;AR[2,1]:=-5;AR[2,2]:=+4;
    AI[1,1]:=+3;AI[1,2]:= 0;AI[2,1]:= 0;AI[2,2]:=-3;
    OUTPUT(61,"(""("INPUT MATRIX:")",/")");
    OUTPUT(61,"("-D,+D,"("*I")",4B,-D,Z/,BB-D,Z,3B,-D,+D,"("*I")",/")",
    AR[1,1],AI[1,1],AR[1,2],AI[1,2],AR[2,1],AI[2,1],AR[2,2],AI[2,2]);
    OUTPUT(61,"("//,"("AFTER POSTMULTIPLICATION WITH:")",/")");
    OUTPUT(61,"(""(".08-.06*I     -.1")",/,
              "("    .1     .08+.06*I")",//")");
    ROTCOMCOL(1,2,1,2,AR,AI,.08,.06,-.1);
    OUTPUT(61,"(""("DELIVERS:")",/")");
    OUTPUT(61,"("-D,Z,2BD,Z/,BD,Z,B-D,Z")",
    AR[1,1],AI[1,1],AR[1,2],AI[1,2],AR[2,1],AI[2,1],AR[2,2],AI[2,2]);
    "END"

    OUTPUT:
    INPUT MATRIX:
     4+3*I     5
      -5     4-3*I

    AFTER POSTMULTIPLICATION WITH:
    .08-.06*I     -.1
        .1     .08+.06*I
    DELIVERS:
     1   0
     0   1      .


SUBSECTION: CHSH2.

CALLING SEQUENCE:
    THE HEADING OF THE PROCEDURE IS:
    "PROCEDURE" CHSH2(A1R,A1I,A2R,A2I,C,SR,SI);
    "VALUE" A1R,A1I,A2R,A2I;"REAL" A1R,A1I,A2R,A2I,C,SR,SI;
    "CODE" 34611;

    THE MEANING OF THE FORMAL PARAMETERS IS:
    A1R: <ARITHMETIC EXPRESSION>;
         ENTRY: THE REAL PART OF THE FIRST VECTORCOMPONENT;
    A1I: <ARITHMETIC EXPRESSION>;
         ENTRY: THE IMAGINARY PART OF THE FIRST VECTORCOMPONENT;
    A2R: <ARITHMETIC EXPRESSION>;
         ENTRY: THE REAL PART OF THE SECOND VECTORCOMPONENT;
    A2I: <ARITHMETIC EXPRESSION>;
         ENTRY: THE IMAGINARY PART OF THE SECOND VECTORCOMPONENT;
    C,SR,SI: <VARIABLE>;
         EXIT: THE FACTORS THAT DETERMINE THE HOUSEHOLDER MATRIX.
               THE HOUSEHOLDERMATRIX, DEFINED BY:
               HA = B
               A  = (A1,A2)'
               B  = (-SIGN(A1R)*SQRT(A1*A1+A2*A2),O)',
               IS DETERMINED BY:

               (  -C    SR+I*SI)
               (SR+I*SI    C   )

PROCEDURES USED: NONE;

LANGUAGE: ALGOL 60;

METHOD AND PERFORMANCE:

    AFTER A CALL OF CHSH2 YOU ARE ABLE TO ROTATE A COMPLEX VECTOR OF
    DIMENSION TWO BY MEANS OF THE FACTORS C,SR AND SI.

EXAMPLE OF USE: CHSH2 IS USED IN QZI AND QZIVAL,SECTION 3.4

SOURCE TEXT(S) :
"CODE" 34357;
"CODE" 34358;
"CODE" 34611;