
      Algo358F - The singular value decomposition of a complex matrix

   Algo358F is a program with the following features:

        Tests the CSVD routine, ACM Algorithm 358 in C++.

        Computes the Singular Value Decomposition of an m by n
        complex matrix a, which gives u as an m by m unitary matrix, s
        an n by n diagonal matrix and u an n by n unitary matrix, such
        that a = u * s * Conj(Tran(v)). The elements of s will be
        nonnegative and occur on the diagonal in descending order.


        See: http://www.library.cornell.edu/nr/bookcpdf/c2-6.pdf
        Numerical Recipes Books On-Line.

        See:
   http://www.scs.fsu.edu/~burkardt/f77_src/toms358/toms358.f
   http://www.scs.fsu.edu/~burkardt/f77_src/toms358/toms358_prb.f
        for the FORTRAN code.

--------------------------------------------------------------------------------

You can run this program with command line arguments:

Usage: Algo358F [1, 2]

Where the 1 or 2 is optional and represents the number of the test case to be
run. If the command line argument of 1 or 2 is not given, the Startup form is
displayed where you can enter the Test Case Number and select Run to bring up
the Run form.

If the command line argument of 1 or 2 is given, the Startup form is bypassed
and the Run form is brought up.

When the run form is brought up, the selected test case is run.

The Run form has two large text boxes. The upper one is for command input. The
lower one is for computed output. Commands may be entered one at a time each
followed by a return. The only commands are 1 and 2 for the test case to be run.

There are 6 command buttons on the Run form:

      Calculate: Same as F8 key.
      Clear Input: Same as F10 key.
      Clear Log File: Clears the log file, same as Ctrl+F9.
      Clear Output: Same as F11 key.
      Logging Is On/Off: Same as F9 key.
      Quit: Quit the Run form and go back to the Startup form.

When Logging Is On, all of the output that is sent to the output box is also
written to the log file Algo358F.Log in the same folder as Algo358F.exe .

--------------------------------------------------------------------------------

            +------------Function Keys on Run form------------+
            |   F1  => Display Help form                      |
            |   F2  => Totally Quit/end the program           |
            |   F8  => Accept input and Calculate             |
            |   F9  => Toggle Logging to Log file on/off      |
            |   F10 => Clear input text box                   |
            |   F11 => Clear output text box                  |
            |   Ctrl+F9 => Clear Log File                     |
            |   ESC => Clear Run form Input Text Box          |
            +-------------------------------------------------+

--------------------------------------------------------------------------------

There are currently only two test cased.

Test case 1:

Matrix A:

  0.4499-0.1267 -0.2361+0.0775  0.5008-0.7799 -0.7702-0.3143 -0.5084+0.5621
 -0.8432-0.3443  0.0186-0.6332  0.3505+0.0166 -0.8892+0.2657 -0.5066+0.6005
  0.5896+0.2601  0.8928+0.0103  0.4350-0.2666 -0.7799-0.5512 -0.1022-0.4500
  0.3911+0.3234 -0.5605+0.7638 -0.2009+0.2707  0.0314-0.4336 -0.1046+0.3267
 -0.1395-0.1561  0.3064+0.0263 -0.0975+0.9019  0.2491+0.5787  0.4106-0.8102

Test case 2:

Matrix A:

  0.4499-0.1267 -0.2361+0.0775  0.5008-0.7799 -0.7702-0.3143
 -0.8432-0.3443  0.0186-0.6332  0.3505+0.0166 -0.8892+0.2657
  0.5896+0.2601  0.8928+0.0103  0.4350-0.2666 -0.7799-0.5512
  0.3911+0.3234 -0.5605+0.7638 -0.2009+0.2707  0.0314-0.4336
 -0.1395-0.1561  0.3064+0.0263 -0.0975+0.9019  0.2491+0.5787

This is read as:

A11 = 0.4499 - 0.1267*i, A12 = -0.2361 + 0.0775*i, ... .

--------------------------------------------------------------------------------

-Harry
