Fill-In User's Guide

Obtaining the Code

You can invoke the fill-in code directly from the above applet, or by downloading the binary java class files. Downloading the code is preferable for extensive work, you have better control over memory requirements, and you may be better able to access local files and process the text output from the software. You need the following files: Once you have those three files start the code with a command such as

java fill

The Control Panel

After clicking on the applet at the very top of this page, or invoking the downloaded code, a control panel will appear. If this does not work, for your information you can see a static image of that panel by clicking here. (In that case you probably also cannot see the applet. You need to get a java enabled browser or computer.)

Operation of the panel is very simple: You select values of m and n and click on Go to see the filled in matrix. Following is a more detailed explanation of the individual items of the control panel.

The Matrix Windows

Filled matrices are displayed in individual windows. You can see examples on the introduction page. You can have as many matrix windows open as you like, or as your computer can handle. You can dismiss the last generated matrix window by clicking on the stop button of the control panel. You can also dismiss any particular matrix window by typing x or X in it.

The matrix windows show matrix entries as green if they are originally non-zero, or red if they become non-zero in the elimination process. Otherwise they are dark blue or (very) dark green.

Matrix windows are automatically sized to fit a reasonable screen size. There are two types:

  1. Dark Blue Matrices with a light blue background have at least one pixel per matrix element.
  2. Dark Green Matrices with a gray background have several matrix entries for each pixel. Each pixel is red or green if at least one of the matrix elements corresponding to the pixel is non-zero.
Each matrix window has a text at its bottom, and also as its name, that gives details of the fill-in. An example illustrates the information. Suppose the text is
3:  m = 10 n = 10 lexicographical  100 x 100 64 p/e  f = 729 = 14.58%
This text indicates matrix window number 3, with the numbering starting at 0. m and n have the indicated values, in this case 10. The string "lexicographical" describes the ordering. The matrix is N by N where N=mn. In this case, N=100. There are 64 pixels per matrix entry. The string e/p in place of p/e would indicate the number of matrix entries per pixel, for large matrices. The fill-in is 729 for a triangular matrix factor. Twice that number is given as a percentage of the whole matrix size, i.e., N squared. This text is generated automatically. You can specify any other text you like in the control panel just prior to clicking on Go.

Standard Output

The code writes to standard output. If you run the code by clicking on the applet that output will appear in the Java Console which is usually invisible unless you bring it up manually. The details of the console operation depend on your browser.

The output may contain diagnostic and error messages. Normally, however, it consists of the following items:

Technical Notes

  1. As the size and number of the linear systems increase the code requires more resources in terms of time and memory. You are likely to run out of patience before you run out of memory, particularly if you download the code and allocate memory to it manually. However, the product of m and n must not exceed 46,340. Beyond that number parts of the index arithmetic in the code would overflow the integer word size in java.
  2. If you do run out of memory you may be able to recover memory, and continue your work, by deleting some of the open matrix windows. (Type x or X in those you want to get rid of.)
  3. This software has been designed for interactive experimentation. It is not particularly fast. For the actual computation of optimal orderings of large matrices one would likely want to use a faster special purpose code.
  4. Reversing the ordering may have no effect at all, for example, in the lexicographical ordering, or a huge effect, for example in the greedy algorithm.
  5. Similarly, interchanging m and n may have a large or a small effect.
  6. The greedy algorithm may require more time for the computation of the ordering than for the computation of the fill-in. Of course, if you actually solve several linear systems with the same structure the ordering would have to be computed only once.
  7. The values of m and n specified in the control panel have no effect when importing an ordering. After the imported file is read they are reset to the values specified in the file.
  8. The code uses a hash table to keep track of zero and non-zero entries in the coefficient matrix.