C ALGORITHM 805, COLLECTED ALGORITHMS FROM ACM. C THIS WORK PUBLISHED IN TRANSACTIONS ON MATHEMATICAL SOFTWARE, C VOL. 26,NO. 3, September, 2000, P. 415--435. #! /bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create the files: # C/ # C/Sp/ # C/Sp/Drivers/ # C/Sp/Drivers/convertmtx.c # C/Sp/Drivers/convertsdd.c # C/Sp/Drivers/data1 # C/Sp/Drivers/data2 # C/Sp/Drivers/data3 # C/Sp/Drivers/data4 # C/Sp/Drivers/data5 # C/Sp/Drivers/decomp.c # C/Sp/Drivers/res1 # C/Sp/Drivers/res1_1 # C/Sp/Drivers/res2 # C/Sp/Drivers/res2_1 # C/Sp/Drivers/res3 # C/Sp/Drivers/res3_1 # C/Sp/Drivers/res4 # C/Sp/Drivers/res4_1 # C/Sp/Drivers/res5 # C/Sp/Drivers/res5_1 # C/Sp/Src/ # C/Sp/Src/qsortopt.h # C/Sp/Src/sdd.c # C/Sp/Src/sdd.h # Doc/ # Doc/Makefile # Doc/test1.gif # Doc/umcp-cs-tr-4012.ps # Matlab/ # Matlab/Src/ # Matlab/Src/mtxread.m # Matlab/Src/mtxwrite.m # Matlab/Src/sdd.m # Matlab/Src/sddfun.m # Matlab/Src/sddtensor.m # Matlab/Src/sddweight.m # Matlab/Src/sddweightfun.m # Matlab/Src/testdata/ # Matlab/Src/testdata/bfw62a.mtx # Matlab/Src/testdata/impcol_c.mtx # Matlab/Src/testdata/test1.mtx # Matlab/Src/testdata/watson2.mtx # Matlab/Src/testdata/west0132.mtx # This archive created: Mon Feb 12 16:31:38 2001 export PATH; PATH=/bin:$PATH if test ! -d 'C' then mkdir 'C' fi cd 'C' if test ! -d 'Sp' then mkdir 'Sp' fi cd 'Sp' if test ! -d 'Drivers' then mkdir 'Drivers' fi cd 'Drivers' if test -f 'convertmtx.c' then echo shar: will not over-write existing file "'convertmtx.c'" else cat << "SHAR_EOF" > 'convertmtx.c' /*---------------------------------------------------------------------- SDDPACK: Software for the Semidiscrete Decomposition. Copyright (c) 1999 Tamara G. Kolda and Dianne P. O'Leary. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. PROGRAM: convertmtx DESCRIPTION: Converts a text matrix (in MatrixMarket coordinate, real, general format) to SDDPACK binary format and vice versa. USAGE: convertmtx [options] infile outfile OPTIONS: -b Convert from binary to text. -t Convert from text to binary. (DEFAULT) FILE FORMATS: Text files should be in MatrixMarket coordinate, real, general format. The header lines (beginning with '%') are NOT checked and need not be present. The output files will be in binary format. EXTERNAL SUBROUTINES: read_matrix, write_matrix (from sdd.c) PROGRAM DEPENDENCIES: convertmtx.c sdd.o sdd.h BUG REPORTS: Email Tamara.Kolda@na-net.ornl.gov. ----------------------------------------------------------------------*/ #include #include #include #include "sdd.h" /* sparse matrix */ #define INDATA 't' /* default input data type ('t' = text) */ void usage(char*); int main (int argc, char *argv[]) { int i; /* counter */ char *infile; /* input file name */ char *outfile; /* output file name */ char indata = INDATA; /* input file type: [t]ext or [b]inary */ matrix *A = NULL; /* pointer to sparse matrix */ /* Parse command line */ if (argc < 3) { usage(argv[0]); exit(-1); } infile = argv[argc - 2]; outfile = argv[argc - 1]; i = 1; while (i < argc - 2) { if (argv[i][0] != '-') { usage(argv[0]); exit(-1); } switch (argv[i][1]) { case 'b': indata = 'b'; break; case 't': indata = 't'; break; default: usage(argv[0]); exit(-1); break; } /* switch */ i++; } /* while */ /* Echo selections to standard output */ fprintf(stdout, "*** output from %s ***\n", argv[0]); fprintf(stdout, "Input File : %s\n", infile); fprintf(stdout, "Output File : %s\n", outfile); /* Call appropriate conversion routines */ switch(indata) { case 'b': /* Convert binary matrix to text */ if ((A = read_matrix(infile, 1)) == NULL) { fprintf(stderr, "Error reading matrix.\n"); exit(-1); } write_matrix(A, outfile, 0); break; case 't': default: /* Convert text matrix to binary */ if ((A = read_matrix(infile, 0)) == NULL) { fprintf(stderr, "Error reading matrix.\n"); exit(-1); } write_matrix(A, outfile, 1); break; } /* switch */ /* Free memory and exit */ free_matrix(A); return(0); } /* main */ /*----------------------------------------------------------------------*/ void usage(char *name) { fprintf(stderr, "\n"); fprintf(stderr, "Usage: %s [options] infile outfile\n", name); fprintf(stderr, "Converts a matrix text file to binary or vice versa.\n"); fprintf(stderr, "Options: -b Convert from binary to text\n"); fprintf(stderr, " -t Convert from text to binary (DEFAULT)\n"); fprintf(stderr, "\n"); return; } /* usage */ SHAR_EOF fi # end of overwriting check if test -f 'convertsdd.c' then echo shar: will not over-write existing file "'convertsdd.c'" else cat << "SHAR_EOF" > 'convertsdd.c' /*---------------------------------------------------------------------- SDDPACK: Software for the Semidiscrete Decomposition. Copyright (c) 1999 Tamara G. Kolda and Dianne P. O'Leary. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. PROGRAM: convertsdd DESCRIPTION: Converts a text sdd to SDDPACK binary format and vice versa. USAGE: convertsdd [options] infile outfile OPTIONS: -b Convert from binary to text. -t Convert from text to binary. (DEFAULT) EXTERNAL SUBROUTINES: read_sdd, write_sdd (from sdd.c) PROGRAM DEPENDENCIES: convertmtx.c sdd.o sdd.h BUG REPORTS: Email Tamara.Kolda@na-net.ornl.gov. ----------------------------------------------------------------------*/ #include #include #include #include "sdd.h" /* sdd header file */ #define INDATA 't' /* default input data type ('t' = text) */ void usage(char*); int main (int argc, char *argv[]) { int i; /* counter */ char *infile; /* input file name */ char *outfile; /* output file name */ char indata = INDATA; /* input file type: [t]ext or [b]inary */ sdd *A = NULL; /* pointer to sparse matrix */ /* Parse command line */ if (argc < 3) { usage(argv[0]); exit(-1); } infile = argv[argc - 2]; outfile = argv[argc - 1]; i = 1; while (i < argc - 2) { if (argv[i][0] != '-') { usage(argv[0]); exit(-1); } switch (argv[i][1]) { case 'b': indata = 'b'; break; case 't': indata = 't'; break; default: usage(argv[0]); exit(-1); break; } /* switch */ i++; } /* while */ /* Echo selections to standard output */ fprintf(stdout, "*** output from %s ***\n", argv[0]); fprintf(stdout, "Input File : %s\n", infile); fprintf(stdout, "Output File : %s\n", outfile); /* Call appropriate conversion routines */ switch(indata) { case 'b': /* Convert binary matrix to text */ if ((A = read_sdd(infile, 1)) == NULL) { fprintf(stderr, "Error reading SDD.\n"); exit(-1); } write_sdd(A, outfile, 0, NULL); break; case 't': default: /* Convert text matrix to binary */ if ((A = read_sdd(infile, 0)) == NULL) { fprintf(stderr, "Error reading SDD.\n"); exit(-1); } write_sdd(A, outfile, 1, NULL); break; } /* switch */ /* Free memory and exit */ free_sdd(A); return(0); } /* main */ /*----------------------------------------------------------------------*/ void usage(char *name) { fprintf(stderr, "\n"); fprintf(stderr, "Usage: %s [options] infile outfile\n", name); fprintf(stderr, "Converts an SDD text file to binary or vice versa.\n"); fprintf(stderr, "Options: -b Convert from binary to text\n"); fprintf(stderr, " -t Convert from text to binary (DEFAULT)\n"); fprintf(stderr, "\n"); return; } /* usage */ SHAR_EOF fi # end of overwriting check if test -f 'data1' then echo shar: will not over-write existing file "'data1'" else cat << "SHAR_EOF" > 'data1' %% MatrixMarket matrix coordinate real general % %SDDPACK: Software for the Semidiscrete Decomposition. %Copyright (c) 1999 Tamara G. Kolda and Dianne P. O'Leary. % % This program is free software; you can redistribute it and/or modify it % under the terms of the GNU General Public License as published by the Free % Software Foundation; either version 2 of the License, or (at your option) % any later version. % % This program is distributed in the hope that it will be useful, but % WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY % or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License % for more details. % % You should have received a copy of the GNU General Public License along % with this program; if not, write to the Free Software Foundation, Inc., 59 % Temple Place - Suite 330, Boston, MA 02111-1307, USA. % 5 5 25 1 1 5.827917e-01 2 1 4.234963e-01 3 1 5.155118e-01 4 1 3.339515e-01 5 1 4.329066e-01 1 2 2.259499e-01 2 2 5.798069e-01 3 2 7.603650e-01 4 2 5.298231e-01 5 2 6.405265e-01 1 3 2.090694e-01 2 3 3.798184e-01 3 3 7.833286e-01 4 3 6.808458e-01 5 3 4.610951e-01 1 4 5.678287e-01 2 4 7.942107e-01 3 4 5.918259e-02 4 4 6.028691e-01 5 4 5.026880e-02 1 5 4.153749e-01 2 5 3.049987e-01 3 5 8.743672e-01 4 5 1.500950e-02 5 5 7.679504e-01 SHAR_EOF fi # end of overwriting check if test -f 'data2' then echo shar: will not over-write existing file "'data2'" else cat << "SHAR_EOF" > 'data2' %%MatrixMarket matrix coordinate real general 132 132 414 19 1 1.0000000000000e+00 24 1 -1.2222090000000e-01 20 2 1.0000000000000e+00 24 2 -1.9902570000000e-01 21 3 1.3000000000000e+02 22 3 -2.4337670000000e+00 22 4 1.0000000000000e+00 23 4 -1.6346070000000e+00 23 5 1.6346070000000e+00 24 5 -7.6368810000000e-01 25 6 -1.1383520000000e+00 34 6 5.1484020000000e-02 26 7 -4.0000000000000e-01 34 7 1.8090720000000e-02 27 8 -6.0000000000000e-01 34 8 2.7136090000000e-02 28 9 -4.3624160000000e-01 29 9 -7.6804250000000e-01 30 9 -1.4302790000000e-01 29 10 1.0000000000000e+00 34 10 -5.4506720000000e-02 30 11 1.0000000000000e+00 34 11 -8.6781480000000e-02 31 12 5.4400920000000e+00 33 12 -7.4232720000000e-01 32 13 3.0929180000000e-01 33 13 -2.3332580000000e-01 33 14 1.4756530000000e+00 34 14 -4.8909260000000e-01 2 15 4.8176470000000e+01 6 15 -1.0000000000000e+00 8 15 -3.3474840000000e-05 3 16 8.3500000000000e+01 7 16 -1.0000000000000e+00 9 16 -4.1365390000000e-05 4 17 9.6651380000000e+01 6 17 2.5000000000000e+00 8 17 3.3474840000000e-05 5 18 1.6827060000000e+02 7 18 2.5000000000000e+00 9 18 4.1365390000000e-05 6 19 1.0000000000000e+00 11 19 -9.8400230000000e-02 7 20 1.0000000000000e+00 11 20 -4.9895230000000e-01 8 21 1.0104550000000e+00 12 21 -4.0000000000000e-01 9 22 1.0059780000000e+00 12 22 -6.0000000000000e-01 10 23 1.0000000000000e+00 11 23 -4.0264750000000e-01 11 24 1.0000000000000e+00 13 24 -1.0000000000000e+00 23 24 1.5000000000000e+00 33 24 5.0000000000000e-01 12 25 1.0000000000000e+00 14 25 -3.1622000000000e+05 17 25 -1.2323690000000e+04 18 25 -1.0000000000000e+00 23 25 -4.3103150000000e+04 32 25 2.1599430000000e+04 13 26 7.3590410000000e+00 15 26 2.4500370000000e-03 14 27 1.0808590000000e+03 15 27 -1.4973280000000e-01 15 28 9.8129710000000e-02 16 28 7.3828160000000e+01 23 28 -1.3645490000000e-01 16 29 -2.1599430000000e+04 18 29 8.1911820000000e-01 31 29 -2.1599430000000e+04 32 29 -1.7692490000000e+04 17 30 1.0000000000000e+00 23 30 2.8801920000000e-01 33 30 -1.0698550000000e+00 18 31 8.4220650000000e-05 23 31 2.5068860000000e+00 33 31 8.3562870000000e-01 24 32 1.0000000000000e+00 41 32 1.0000000000000e+00 34 33 1.0000000000000e+00 1 34 1.0000000000000e+00 11 34 -2.3342530000000e+00 12 34 -4.1119570000000e-05 24 34 -2.7530730000000e+00 27 34 1.0000000000000e+00 34 34 4.1030700000000e-01 36 34 0.0000000000000e+00 38 34 -1.0000000000000e+00 37 35 5.8124340000000e-02 38 35 9.5326020000000e-04 41 35 2.7248650000000e-01 39 36 9.5933880000000e-01 100 36 1.0000000000000e+00 101 36 1.0000000000000e+00 102 36 1.0000000000000e+00 103 36 1.0000000000000e+00 108 36 -4.1612680000000e-03 111 36 2.5000000000000e+00 112 36 3.3271980000000e+00 114 36 1.0000000000000e+00 115 36 -5.7792120000000e-01 117 36 -6.0739530000000e-01 118 36 -4.7904230000000e-01 119 36 -2.5841990000000e+01 126 36 4.1850350000000e-01 127 36 -2.5488460000000e-01 128 36 -6.6331220000000e-01 129 36 1.0000000000000e+00 41 37 -2.7248650000000e-01 122 37 1.0000000000000e+00 132 38 1.0000000000000e+00 35 39 1.0000000000000e+00 37 39 5.9077600000000e-02 53 39 -9.9416020000000e-01 54 39 -9.8958400000000e-01 99 39 1.0000000000000e+00 109 39 -1.9881190000000e+00 110 39 -3.3143100000000e-05 122 39 1.0251850000000e+00 124 39 1.0000000000000e+00 132 39 1.0076120000000e+00 36 40 1.0000000000000e+00 38 40 5.9077600000000e-02 53 40 -1.3560780000000e+00 54 40 -1.6351060000000e+00 99 40 1.0000000000000e+00 109 40 -2.7244220000000e+00 110 40 -4.1130080000000e-05 122 40 -5.9537640000000e-01 125 40 1.0000000000000e+00 132 40 4.3773870000000e-01 37 41 3.4187570000000e-01 38 41 5.9904670000000e-01 41 41 7.2751350000000e-01 39 42 -9.5933880000000e-01 59 42 -7.6304510000000e+01 60 42 -2.0237220000000e+02 66 42 1.0000000000000e+00 67 42 1.0000000000000e+00 68 42 1.0000000000000e+00 69 42 1.0000000000000e+00 74 42 -4.1612680000000e-03 77 42 2.5000000000000e+00 78 42 3.8228080000000e+00 80 42 1.0000000000000e+00 81 42 -6.6400680000000e-01 83 42 -6.0739530000000e-01 84 42 -4.7904230000000e-01 85 42 -2.5841990000000e+01 92 42 4.1850350000000e-01 93 42 -2.5488460000000e-01 94 42 -6.6331220000000e-01 95 42 1.0000000000000e+00 40 43 -3.1623550000000e-01 63 43 1.0000000000000e+00 64 43 1.0000000000000e+00 77 43 -1.0000000000000e+00 78 43 -3.8228080000000e+00 80 43 -1.0000000000000e+00 89 43 1.0000000000000e+00 41 44 -7.2751350000000e-01 88 44 1.0000000000000e+00 98 45 1.0000000000000e+00 35 46 -2.7078260000000e+00 37 46 9.4092240000000e-01 42 46 -1.0000000000000e+00 43 46 -1.0000000000000e+00 46 46 1.0000000000000e+00 47 46 1.0000000000000e+00 65 46 1.0000000000000e+00 75 46 -1.4693280000000e+00 76 46 -3.3143100000000e-05 88 46 6.1155710000000e+00 90 46 1.0000000000000e+00 98 46 5.5166850000000e-01 36 47 -2.5344380000000e-02 38 47 9.4092240000000e-01 42 47 -1.0000000000000e+00 43 47 -1.0000000000000e+00 46 47 1.0000000000000e+00 47 47 1.0000000000000e+00 65 47 1.0000000000000e+00 75 47 -2.3028540000000e+00 76 47 -4.1130080000000e-05 88 47 -3.5516210000000e+00 91 47 1.0000000000000e+00 98 47 4.3137260000000e-01 35 48 -9.8386430000000e-01 63 48 1.0000000000000e+00 36 49 -6.3665900000000e-01 64 49 3.9456480000000e+01 48 50 -1.0000000000000e+00 63 50 -1.0000000000000e+00 49 51 -1.0000000000000e+00 64 51 -1.0000000000000e+00 57 52 -1.0000000000000e+00 63 52 1.0267620000000e+00 58 53 -1.0000000000000e+00 64 53 1.0491850000000e+00 61 54 -1.0000000000000e+00 63 54 -1.0000000000000e+00 62 55 -1.0000000000000e+00 64 55 -1.0000000000000e+00 42 56 -1.0000000000000e+00 44 56 -1.0000000000000e+00 46 56 3.6334100000000e-01 47 56 3.6334100000000e-01 43 57 -1.0000000000000e+00 45 57 -1.0000000000000e+00 46 57 6.3665900000000e-01 47 57 6.3665900000000e-01 44 58 1.0000000000000e+00 46 58 -1.0000000000000e+00 45 59 1.0000000000000e+00 47 59 -1.0000000000000e+00 46 60 1.0000000000000e+00 48 60 1.0000000000000e+00 47 61 1.0000000000000e+00 49 61 1.0000000000000e+00 50 62 1.0088340000000e-02 51 62 9.7292370000000e-01 52 62 -1.0000000000000e+00 51 63 9.6971490000000e-01 55 63 3.2984260000000e+01 56 63 2.6579110000000e+01 52 64 1.0032980000000e+00 55 64 3.0244770000000e+02 56 64 3.6563660000000e+02 53 65 1.0000000000000e+00 55 65 1.9958500000000e+00 54 66 1.0000000000000e+00 56 66 2.2039080000000e+00 55 67 3.2984260000000e+01 57 67 9.7393570000000e-01 56 68 2.6579110000000e+01 58 68 9.5312110000000e-01 59 69 1.1755400000000e+02 61 69 1.2482660000000e+01 60 70 1.0656400000000e+02 62 70 7.7897140000000e+00 83 71 1.0000000000000e+00 88 71 -1.4740210000000e-01 84 72 1.0000000000000e+00 88 72 -2.7889010000000e-01 85 73 1.2471400000000e+02 86 73 -2.4130120000000e+00 86 74 1.0000000000000e+00 87 74 -1.6229990000000e+00 87 75 1.6229990000000e+00 88 75 -1.0391340000000e+00 117 76 1.0000000000000e+00 122 76 -6.6909760000000e-02 118 77 1.0000000000000e+00 122 77 -1.1848950000000e-03 119 78 1.2471400000000e+02 120 78 -2.4130120000000e+00 120 79 1.0000000000000e+00 121 79 -2.8021250000000e-02 121 80 2.8021250000000e-02 122 80 -9.6438800000000e-04 89 81 -1.0000000000000e+00 98 81 4.6668060000000e-02 90 82 -3.6785130000000e-01 98 82 1.7166910000000e-02 91 83 -6.3665900000000e-01 98 83 2.9711640000000e-02 92 84 -4.1850350000000e-01 93 84 -7.3626770000000e-01 94 84 -1.3819200000000e-01 93 85 1.0000000000000e+00 98 85 -5.3293930000000e-02 94 86 1.0000000000000e+00 98 86 -9.8343170000000e-02 95 87 5.4101270000000e+00 97 87 -6.6839170000000e-01 96 88 2.9706250000000e-01 97 88 -2.2282420000000e-01 97 89 1.3912160000000e+00 98 89 -5.2552180000000e-01 123 90 -1.0000000000000e+00 132 90 7.8613690000000e-02 124 91 -9.8386430000000e-01 132 91 7.7345200000000e-02 125 92 -6.6587120000000e-02 132 92 5.2346590000000e-03 126 93 -4.1850350000000e-01 127 93 -7.3626770000000e-01 128 93 -1.3819200000000e-01 127 94 1.0000000000000e+00 132 94 -2.4309560000000e-01 128 95 1.0000000000000e+00 132 95 -4.1985990000000e-03 129 96 1.0000000000000e+00 131 96 -3.8528080000000e-01 130 97 9.9670190000000e-01 131 97 -3.8528080000000e-01 131 98 4.6339540000000e-02 132 98 -9.4552380000000e-03 66 99 4.6258220000000e+01 70 99 -1.0000000000000e+00 72 99 -3.3504290000000e-05 67 100 8.0145450000000e+01 71 100 -1.0000000000000e+00 73 100 -4.1386390000000e-05 68 101 9.2762080000000e+01 70 101 2.5000000000000e+00 72 101 3.3504290000000e-05 69 102 1.6146920000000e+02 71 102 2.5000000000000e+00 73 102 4.1386390000000e-05 70 103 1.0000000000000e+00 75 103 -7.8738550000000e-02 71 104 1.0000000000000e+00 75 104 -5.4487130000000e-01 72 105 1.0108980000000e+00 76 105 -3.6334100000000e-01 73 106 1.0062320000000e+00 76 106 -6.3665900000000e-01 74 107 1.0000000000000e+00 75 107 -3.7639010000000e-01 75 108 1.0000000000000e+00 77 108 -1.0000000000000e+00 87 108 1.5000000000000e+00 97 108 5.0000000000000e-01 76 109 1.0000000000000e+00 78 109 -1.0000000000000e+05 81 109 -1.1579740000000e+04 82 109 -1.0000000000000e+00 87 109 -4.2455680000000e+04 96 109 2.1850270000000e+04 77 110 2.0347790000000e+01 79 110 7.2696120000000e-04 78 111 1.0369100000000e+03 79 111 -5.3591620000000e-02 79 112 3.6676120000000e-02 80 112 2.2656770000000e+02 87 112 -1.2354450000000e-01 80 113 -2.1850270000000e+04 82 113 8.3529410000000e-01 95 113 -2.1850270000000e+04 96 113 -1.8251400000000e+04 81 114 1.0000000000000e+00 87 114 2.7785690000000e-01 97 114 -1.1295070000000e+00 82 115 8.3994100000000e-05 87 115 2.4703360000000e+00 97 115 8.2344550000000e-01 100 116 4.6258220000000e+01 104 116 -1.0000000000000e+00 106 116 -3.3504290000000e-05 101 117 8.0145450000000e+01 105 117 -1.0000000000000e+00 107 117 -4.1386390000000e-05 102 118 9.2762080000000e+01 104 118 2.5000000000000e+00 106 118 3.3504290000000e-05 103 119 1.6146920000000e+02 105 119 2.5000000000000e+00 107 119 4.1386390000000e-05 53 120 -9.7811870000000e-01 104 120 1.0000000000000e+00 109 120 -9.5661940000000e-01 54 121 -2.6383630000000e-02 105 121 1.0000000000000e+00 109 121 -5.7991920000000e-04 55 122 -3.3299800000000e+03 106 122 1.0108980000000e+00 110 122 -9.8386430000000e-01 56 123 -2.6833370000000e+03 107 123 1.0062320000000e+00 110 123 -1.6135730000000e-02 53 124 -2.1881310000000e-02 54 124 -9.7361640000000e-01 108 124 1.0000000000000e+00 109 124 -4.2800700000000e-02 55 125 -1.0000000000000e+00 56 125 -1.0000000000000e+00 109 125 1.0000000000000e+00 111 125 -1.0000000000000e+00 121 125 1.7589250000000e-02 131 125 5.8630830000000e-03 50 126 -1.0000000000000e+00 55 126 3.3170810000000e+03 56 126 3.3170810000000e+03 110 126 1.0000000000000e+00 112 126 -1.0000000000000e+05 115 126 -1.1579740000000e+04 116 126 -1.0000000000000e+00 121 126 -8.4218760000000e+02 130 126 9.9124310000000e+01 111 127 3.3715330000000e+01 113 127 9.6971490000000e-01 112 128 1.0369100000000e+03 113 128 -1.0088280000000e+00 51 129 -9.9670190000000e-01 55 129 -3.2856500000000e+01 56 129 -3.2856500000000e+01 113 129 9.2033500000000e-01 114 129 1.0278300000000e+00 121 129 -3.8528080000000e-01 50 130 3.2980620000000e-03 114 130 -9.9124310000000e+01 116 130 3.2980620000000e-03 129 130 -9.9124310000000e+01 130 130 -3.2691810000000e-01 55 131 -2.5847380000000e+00 56 131 -3.1247550000000e+00 115 131 1.0000000000000e+00 121 131 2.7076350000000e-02 131 131 -1.5217690000000e-02 116 132 1.0121610000000e-02 121 132 5.3419970000000e+00 131 132 1.7806660000000e+00 SHAR_EOF fi # end of overwriting check if test -f 'data3' then echo shar: will not over-write existing file "'data3'" else cat << "SHAR_EOF" > 'data3' %%MatrixMarket matrix coordinate real general 66 67 409 1 1 1.0000000000000e+00 1 2 2.0004000000000e+00 2 2 1.0000000000000e+00 5 2 -1.3986000000000e-05 6 2 -1.0000000000000e-04 7 2 -3.0211000000000e-04 30 2 -1.0000000000000e+00 37 2 -5.6619000000000e-16 40 2 -5.6740000000000e-18 41 2 -1.0000000000000e+00 42 2 0.0000000000000e+00 43 2 -5.8531000000000e-39 46 2 -5.8656000000000e-41 48 2 0.0000000000000e+00 49 2 -2.2549000000000e-27 52 2 -2.2597000000000e-29 54 2 0.0000000000000e+00 3 3 2.0003000000000e+00 12 3 -1.9569000000000e-04 17 3 -1.0000000000000e+00 59 3 -1.0000000000000e+00 4 4 1.0000000000000e+00 35 4 -1.0000000000000e+00 1 5 -1.3986000000000e-05 5 5 3.0000000000000e+00 16 5 -1.0000000000000e+00 22 5 -1.0000000000000e+00 24 5 -1.0000000000000e+00 1 6 -1.0000000000000e-04 6 6 1.0001000000000e+00 53 6 -1.0000000000000e+00 1 7 -3.0211000000000e-04 7 7 3.3364000000000e-01 47 7 -3.3333000000000e-01 8 8 2.6667000000000e+00 46 8 -3.3333000000000e-01 48 8 -3.3333000000000e-01 52 8 -1.0000000000000e+00 60 8 -1.0000000000000e+00 9 9 3.5000000000000e+00 18 9 -1.0000000000000e+00 40 9 -1.0000000000000e+00 54 9 -1.0000000000000e+00 66 9 -5.0000000000000e-01 10 10 3.5001000000000e+00 29 10 -1.0000000000000e+00 34 10 -1.0000000000000e+00 58 10 -1.0000000000000e+00 64 10 -5.0000000000000e-01 11 11 3.0000000000000e+00 28 11 -1.0000000000000e+00 36 11 -1.0000000000000e+00 42 11 -1.0000000000000e+00 3 12 -1.9569000000000e-04 12 12 5.0020000000000e-01 65 12 -5.0000000000000e-01 13 13 1.0000000000000e+00 16 13 -1.0108000000000e-01 18 13 -1.0000000000000e+00 14 14 1.0000000000000e+00 15 14 1.0892000000000e-01 16 14 -1.0000000000000e+00 17 14 -1.1036000000000e-01 18 14 0.0000000000000e+00 14 15 -1.0086000000000e-01 15 15 1.0000000000000e+00 16 15 0.0000000000000e+00 17 15 -1.0074000000000e-01 18 15 -1.0000000000000e+00 5 16 -1.0000000000000e+00 13 16 -3.3132000000000e-01 14 16 -1.0000000000000e+00 15 16 0.0000000000000e+00 16 16 2.0000000000000e+00 17 16 0.0000000000000e+00 18 16 0.0000000000000e+00 3 17 -1.0000000000000e+00 14 17 -1.4450000000000e-01 15 17 -1.0892000000000e-01 16 17 0.0000000000000e+00 17 17 1.0000000000000e+00 9 18 -1.0000000000000e+00 13 18 -1.0000000000000e+00 14 18 0.0000000000000e+00 15 18 -1.0000000000000e+00 16 18 0.0000000000000e+00 18 18 3.0000000000000e+00 19 19 1.0000000000000e+00 22 19 -3.8251000000000e-17 24 19 -1.0000000000000e+00 20 20 1.0000000000000e+00 21 20 3.7196000000000e-03 22 20 -1.0000000000000e+00 23 20 -3.7690000000000e-03 24 20 0.0000000000000e+00 20 21 -3.8309000000000e-15 21 21 1.0000000000000e+00 22 21 0.0000000000000e+00 23 21 -3.8266000000000e-15 24 21 -1.0000000000000e+00 5 22 -1.0000000000000e+00 19 22 -1.2538000000000e-19 20 22 -1.0000000000000e+00 21 22 0.0000000000000e+00 22 22 2.0000000000000e+00 23 22 0.0000000000000e+00 24 22 0.0000000000000e+00 20 23 -4.9349000000000e-05 21 23 -3.7196000000000e-03 22 23 0.0000000000000e+00 23 23 1.0038000000000e+00 5 24 -1.0000000000000e+00 19 24 -1.0000000000000e+00 20 24 0.0000000000000e+00 21 24 -1.0000000000000e+00 22 24 0.0000000000000e+00 24 24 3.0000000000000e+00 25 25 1.0000000000000e+00 28 25 -5.8077000000000e-18 30 25 -1.0000000000000e+00 26 26 1.0003000000000e+00 27 26 2.5397000000000e-02 28 26 -1.0000000000000e+00 29 26 -2.5734000000000e-02 30 26 0.0000000000000e+00 26 27 -5.9429000000000e-16 27 27 1.0000000000000e+00 28 27 0.0000000000000e+00 29 27 -5.9362000000000e-16 30 27 -1.0000000000000e+00 11 28 -1.0000000000000e+00 25 28 -1.9037000000000e-20 26 28 -1.0000000000000e+00 27 28 0.0000000000000e+00 28 28 2.0000000000000e+00 29 28 0.0000000000000e+00 30 28 0.0000000000000e+00 10 29 -1.0000000000000e+00 26 29 -3.3695000000000e-04 27 29 -2.5397000000000e-02 28 29 0.0000000000000e+00 29 29 1.0257000000000e+00 1 30 -1.0000000000000e+00 25 30 -1.0000000000000e+00 26 30 0.0000000000000e+00 27 30 -1.0000000000000e+00 28 30 0.0000000000000e+00 30 30 3.0000000000000e+00 31 31 1.0000000000000e+00 34 31 -5.5792000000000e-30 36 31 -1.0000000000000e+00 32 32 1.0001000000000e+00 33 32 5.0271000000000e-03 34 32 -1.0000000000000e+00 35 32 -5.0937000000000e-03 36 32 0.0000000000000e+00 32 33 -5.5954000000000e-28 33 33 1.0000000000000e+00 34 33 0.0000000000000e+00 35 33 -5.5890000000000e-28 36 33 -1.0000000000000e+00 10 34 -1.0000000000000e+00 31 34 -1.8288000000000e-32 32 34 -1.0000000000000e+00 33 34 0.0000000000000e+00 34 34 2.0000000000000e+00 35 34 0.0000000000000e+00 36 34 0.0000000000000e+00 4 35 -1.0000000000000e+00 32 35 -6.6695000000000e-05 33 35 -5.0271000000000e-03 34 35 0.0000000000000e+00 35 35 1.0051000000000e+00 11 36 -1.0000000000000e+00 31 36 -1.0000000000000e+00 32 36 0.0000000000000e+00 33 36 -1.0000000000000e+00 34 36 0.0000000000000e+00 36 36 3.0000000000000e+00 1 37 9.5148000000000e-06 37 37 1.0000000000000e+00 40 37 -9.5461000000000e-06 42 37 -1.0000000000000e+00 38 38 1.0010000000000e+00 39 38 4.4185000000000e-03 40 38 -1.0000000000000e+00 41 38 -5.4581000000000e-03 42 38 0.0000000000000e+00 38 39 -9.5569000000000e-04 39 39 1.0019000000000e+00 40 39 0.0000000000000e+00 41 39 -9.5461000000000e-04 42 39 -1.0000000000000e+00 1 40 -9.5148000000000e-06 9 40 -1.0000000000000e+00 37 40 -3.1291000000000e-08 38 40 -1.0000000000000e+00 39 40 0.0000000000000e+00 40 40 2.0000000000000e+00 41 40 0.0000000000000e+00 42 40 0.0000000000000e+00 1 41 -1.0000000000000e+00 38 41 -8.3965000000000e-05 39 41 -6.3288000000000e-03 40 41 0.0000000000000e+00 41 41 1.0064000000000e+00 1 42 0.0000000000000e+00 11 42 -1.0000000000000e+00 37 42 -1.0000000000000e+00 38 42 0.0000000000000e+00 39 42 -1.0000000000000e+00 40 42 0.0000000000000e+00 42 42 3.0000000000000e+00 1 43 1.1697000000000e-16 43 43 3.0000000000000e+00 46 43 -1.1735000000000e-16 48 43 -3.0000000000000e+00 44 44 3.0001000000000e+00 45 44 8.7049000000000e-03 46 44 -3.0000000000000e+00 47 44 -8.8204000000000e-03 48 44 0.0000000000000e+00 44 45 -1.1743000000000e-14 45 45 3.0000000000000e+00 46 45 0.0000000000000e+00 47 45 -1.1730000000000e-14 48 45 -3.0000000000000e+00 1 46 -1.1697000000000e-16 8 46 -3.3333000000000e-01 43 46 -3.8467000000000e-19 44 46 -3.0000000000000e+00 45 46 0.0000000000000e+00 46 46 3.3333000000000e+00 47 46 0.0000000000000e+00 48 46 0.0000000000000e+00 7 47 -3.3333000000000e-01 44 47 -1.1549000000000e-04 45 47 -8.7049000000000e-03 46 47 0.0000000000000e+00 47 47 3.4215000000000e-01 1 48 0.0000000000000e+00 8 48 -3.3333000000000e-01 43 48 -3.0000000000000e+00 44 48 0.0000000000000e+00 45 48 -3.0000000000000e+00 46 48 0.0000000000000e+00 48 48 6.3333000000000e+00 1 49 4.4884000000000e-05 49 49 1.0000000000000e+00 52 49 -4.5032000000000e-05 54 49 -1.0000000000000e+00 50 50 1.0046000000000e+00 51 50 -1.6055000000000e-03 52 50 -1.0000000000000e+00 53 50 -2.9571000000000e-03 54 50 0.0000000000000e+00 50 51 -4.4655000000000e-03 51 51 1.0089000000000e+00 52 51 0.0000000000000e+00 53 51 -4.4605000000000e-03 54 51 -1.0000000000000e+00 1 52 -4.4884000000000e-05 8 52 -1.0000000000000e+00 49 52 -1.4761000000000e-07 50 52 -1.0000000000000e+00 51 52 0.0000000000000e+00 52 52 2.0000000000000e+00 53 52 0.0000000000000e+00 54 52 0.0000000000000e+00 6 53 -1.0000000000000e+00 50 53 -9.7121000000000e-05 51 53 -7.3204000000000e-03 52 53 0.0000000000000e+00 53 53 1.0074000000000e+00 1 54 0.0000000000000e+00 9 54 -1.0000000000000e+00 49 54 -1.0000000000000e+00 50 54 0.0000000000000e+00 51 54 -1.0000000000000e+00 52 54 0.0000000000000e+00 54 54 3.0000000000000e+00 55 55 1.0000000000000e+00 58 55 -1.6704000000000e-06 60 55 -1.0000000000000e+00 56 56 1.0004000000000e+00 57 56 1.4365000000000e-02 58 56 -1.0000000000000e+00 59 56 -1.4729000000000e-02 60 56 0.0000000000000e+00 56 57 -1.6904000000000e-04 57 57 1.0003000000000e+00 58 57 0.0000000000000e+00 59 57 -1.6885000000000e-04 60 57 -1.0000000000000e+00 10 58 -1.0000000000000e+00 55 58 -5.4754000000000e-09 56 58 -1.0000000000000e+00 57 58 0.0000000000000e+00 58 58 2.0000000000000e+00 59 58 0.0000000000000e+00 60 58 0.0000000000000e+00 3 59 -1.0000000000000e+00 56 59 -1.9507000000000e-04 57 59 -1.4703000000000e-02 58 59 0.0000000000000e+00 59 59 1.0149000000000e+00 8 60 -1.0000000000000e+00 55 60 -1.0000000000000e+00 56 60 0.0000000000000e+00 57 60 -1.0000000000000e+00 58 60 0.0000000000000e+00 60 60 3.0000000000000e+00 61 61 2.0000000000000e+00 64 61 -2.7743000000000e-18 66 61 -2.0000000000000e+00 62 62 2.0000000000000e+00 63 62 5.8959000000000e-04 64 62 -2.0000000000000e+00 65 62 -5.9741000000000e-04 66 62 0.0000000000000e+00 62 63 -2.7693000000000e-16 63 63 2.0000000000000e+00 64 63 0.0000000000000e+00 65 63 -2.7662000000000e-16 66 63 -2.0000000000000e+00 10 64 -5.0000000000000e-01 61 64 -9.0940000000000e-21 62 64 -2.0000000000000e+00 63 64 0.0000000000000e+00 64 64 2.5000000000000e+00 65 64 0.0000000000000e+00 66 64 0.0000000000000e+00 12 65 -5.0000000000000e-01 62 65 -7.8222000000000e-06 63 65 -5.8959000000000e-04 64 65 0.0000000000000e+00 65 65 5.0060000000000e-01 9 66 -5.0000000000000e-01 61 66 -2.0000000000000e+00 62 66 0.0000000000000e+00 63 66 -2.0000000000000e+00 64 66 0.0000000000000e+00 66 66 4.5000000000000e+00 1 67 -7.4744000000000e-05 2 67 0.0000000000000e+00 3 67 -5.8509000000000e-05 4 67 -5.9078000000000e-05 5 67 -6.1258000000000e-06 6 67 -6.7040000000000e-05 7 67 -6.7243000000000e-05 8 67 -5.9854000000000e-05 9 67 -6.7245000000000e-05 10 67 -6.6855000000000e-05 11 67 -7.4108000000000e-05 12 67 -5.9967000000000e-05 13 67 -6.7614000000000e-05 14 67 -6.7727000000000e-06 15 67 -6.7516000000000e-05 16 67 -6.1301000000000e-06 17 67 -5.8647000000000e-05 18 67 -6.6928000000000e-05 19 67 -6.5000000000000e-06 20 67 1.0802000000000e-05 21 67 -6.1168000000000e-06 22 67 -6.2299000000000e-06 23 67 -1.6932000000000e-05 24 67 -6.4862000000000e-06 25 67 -7.4418000000000e-05 26 67 4.2251000000000e-05 27 67 -7.4409000000000e-05 28 67 -7.4256000000000e-05 29 67 -1.8210000000000e-04 30 67 -7.4677000000000e-05 31 67 -7.3732000000000e-05 32 67 -4.3757000000000e-05 33 67 -7.3775000000000e-05 34 67 -6.6427000000000e-05 35 67 -8.2175000000000e-05 36 67 -7.4068000000000e-05 37 67 -7.3876000000000e-05 38 67 -9.5965000000000e-05 39 67 -7.4055000000000e-05 40 67 -6.6817000000000e-05 41 67 -4.5976000000000e-05 42 67 -7.3796000000000e-05 43 67 -6.0336000000000e-05 44 67 -9.9605000000000e-05 45 67 -6.0427000000000e-05 46 67 -5.9656000000000e-05 47 67 -2.7089000000000e-05 48 67 -5.9856000000000e-05 49 67 -6.6691000000000e-05 50 67 -9.3205000000000e-05 51 67 -6.7776000000000e-05 52 67 -6.0128000000000e-05 53 67 -3.4280000000000e-05 54 67 -6.7297000000000e-05 55 67 -5.9707000000000e-05 56 67 1.1090000000000e-06 57 67 -5.9694000000000e-05 58 67 -6.6005000000000e-05 59 67 -1.2630000000000e-04 60 67 -6.0269000000000e-05 61 67 -6.7210000000000e-05 62 67 -6.3387000000000e-05 63 67 -6.7014000000000e-05 64 67 -6.6835000000000e-05 65 67 -6.2644000000000e-05 66 67 -6.6979000000000e-05 SHAR_EOF fi # end of overwriting check if test -f 'data4' then echo shar: will not over-write existing file "'data4'" else cat << "SHAR_EOF" > 'data4' %%MatrixMarket matrix coordinate real general 137 137 411 2 1 1.0000000000000e+00 9 1 -1.0000000000000e+00 10 1 1.0000000000000e+00 17 1 1.0000000000000e+00 3 2 1.0000000000000e+00 9 2 -1.0000000000000e+00 11 2 1.0000000000000e+00 18 2 1.0000000000000e+00 4 3 1.0000000000000e+00 9 3 -1.0000000000000e+00 12 3 1.0000000000000e+00 19 3 1.0000000000000e+00 5 4 1.0000000000000e+00 9 4 -1.0000000000000e+00 13 4 1.0000000000000e+00 20 4 1.0000000000000e+00 6 5 1.0000000000000e+00 9 5 -1.0000000000000e+00 14 5 1.0000000000000e+00 21 5 1.0000000000000e+00 7 6 1.0000000000000e+00 9 6 -1.0000000000000e+00 15 6 1.0000000000000e+00 22 6 1.0000000000000e+00 8 7 1.0000000000000e+00 9 7 -1.0000000000000e+00 16 7 1.0000000000000e+00 23 7 1.0000000000000e+00 10 8 -1.0000000000000e+01 11 9 -1.0000000000000e+01 12 10 -1.0000000000000e+01 13 11 -1.0000000000000e+01 14 12 -1.0000000000000e+01 15 13 -1.0000000000000e+01 16 14 -1.0000000000000e+01 9 15 1.0000000000000e+00 10 15 -5.0000000000000e-01 11 15 -5.0000000000000e-01 12 15 -5.0000000000000e-01 13 15 -5.0000000000000e-01 14 15 -5.0000000000000e-01 15 15 -5.0000000000000e-01 16 15 -5.0000000000000e-01 1 16 -1.2000000000000e+02 17 17 1.0000000000000e+00 33 17 1.0000000000000e+00 40 17 -1.0000000000000e+00 41 17 1.0000000000000e+00 18 18 1.0000000000000e+00 34 18 1.0000000000000e+00 40 18 -1.0000000000000e+00 42 18 1.0000000000000e+00 19 19 1.0000000000000e+00 35 19 1.0000000000000e+00 40 19 -1.0000000000000e+00 43 19 1.0000000000000e+00 20 20 1.0000000000000e+00 36 20 1.0000000000000e+00 40 20 -1.0000000000000e+00 44 20 1.0000000000000e+00 21 21 1.0000000000000e+00 37 21 1.0000000000000e+00 40 21 -1.0000000000000e+00 45 21 1.0000000000000e+00 22 22 1.0000000000000e+00 38 22 1.0000000000000e+00 40 22 -1.0000000000000e+00 46 22 1.0000000000000e+00 23 23 1.0000000000000e+00 39 23 1.0000000000000e+00 40 23 -1.0000000000000e+00 47 23 1.0000000000000e+00 17 24 -1.0000000000000e+00 24 24 -1.0000000000000e+00 25 24 -1.0000000000000e+00 108 24 -1.0000000000000e+00 115 24 1.0000000000000e+00 18 25 -1.0000000000000e+00 24 25 -1.0000000000000e+00 26 25 -1.0000000000000e+00 109 25 -1.0000000000000e+00 116 25 1.0000000000000e+00 19 26 -1.0000000000000e+00 24 26 -1.0000000000000e+00 27 26 -1.0000000000000e+00 110 26 0.0000000000000e+00 117 26 1.0000000000000e+00 20 27 -1.0000000000000e+00 24 27 -1.0000000000000e+00 28 27 -1.0000000000000e+00 111 27 0.0000000000000e+00 118 27 1.0000000000000e+00 21 28 -1.0000000000000e+00 24 28 -1.0000000000000e+00 29 28 -1.0000000000000e+00 112 28 0.0000000000000e+00 119 28 1.0000000000000e+00 22 29 -1.0000000000000e+00 24 29 -1.0000000000000e+00 30 29 -1.0000000000000e+00 113 29 0.0000000000000e+00 120 29 1.0000000000000e+00 23 30 -1.0000000000000e+00 24 30 -1.0000000000000e+00 31 30 -1.0000000000000e+00 114 30 0.0000000000000e+00 121 30 1.0000000000000e+00 24 31 1.0000000000000e+00 25 31 5.0000000000000e-01 26 31 5.0000000000000e-01 27 31 5.0000000000000e-01 28 31 5.0000000000000e-01 29 31 5.0000000000000e-01 30 31 5.0000000000000e-01 31 31 5.0000000000000e-01 25 32 1.0000000000000e+01 26 33 1.0000000000000e+01 27 34 1.0000000000000e+01 28 35 1.0000000000000e+01 29 36 1.0000000000000e+01 30 37 1.0000000000000e+01 31 38 1.0000000000000e+01 33 39 -1.0000000000000e+00 48 39 1.0000000000000e+00 55 39 -1.0000000000000e+00 62 39 -1.0000000000000e+00 64 39 -1.0000000000000e+00 34 40 -1.0000000000000e+00 49 40 1.0000000000000e+00 56 40 -1.0000000000000e+00 62 40 -1.0000000000000e+00 65 40 -1.0000000000000e+00 32 41 -1.0000000000000e+00 35 41 -1.0000000000000e+00 50 41 1.0000000000000e+00 57 41 -1.0000000000000e+00 62 41 -1.0000000000000e+00 66 41 -1.0000000000000e+00 36 42 -1.0000000000000e+00 51 42 1.0000000000000e+00 58 42 -1.0000000000000e+00 62 42 -1.0000000000000e+00 67 42 -1.0000000000000e+00 37 43 -1.0000000000000e+00 52 43 1.0000000000000e+00 59 43 -1.0000000000000e+00 62 43 -1.0000000000000e+00 68 43 -1.0000000000000e+00 38 44 -1.0000000000000e+00 53 44 1.0000000000000e+00 60 44 -1.0000000000000e+00 62 44 -1.0000000000000e+00 69 44 -1.0000000000000e+00 39 45 -1.0000000000000e+00 54 45 1.0000000000000e+00 61 45 -1.0000000000000e+00 62 45 -1.0000000000000e+00 70 45 -1.0000000000000e+00 41 46 -1.0000000000000e+01 42 47 -1.0000000000000e+01 43 48 -1.0000000000000e+01 44 49 -1.0000000000000e+01 45 50 -1.0000000000000e+01 46 51 -1.0000000000000e+01 47 52 -1.0000000000000e+01 40 53 1.0000000000000e+00 41 53 -5.0000000000000e-01 42 53 -5.0000000000000e-01 43 53 -5.0000000000000e-01 44 53 -5.0000000000000e-01 45 53 -5.0000000000000e-01 46 53 -5.0000000000000e-01 47 53 -5.0000000000000e-01 32 54 -1.0000000000000e+01 48 55 -1.0000000000000e+00 55 55 1.0000000000000e+00 85 55 -1.0000000000000e+00 93 55 -1.0000000000000e+00 101 55 -1.0000000000000e+00 49 56 -1.0000000000000e+00 56 56 1.0000000000000e+00 86 56 -1.0000000000000e+00 93 56 -1.0000000000000e+00 102 56 -1.0000000000000e+00 50 57 -9.9000000000000e-01 57 57 1.0000000000000e+00 87 57 -1.0000000000000e+00 93 57 -1.0000000000000e+00 103 57 -1.0000000000000e+00 51 58 0.0000000000000e+00 58 58 1.0000000000000e+00 88 58 -1.0000000000000e+00 93 58 -1.0000000000000e+00 104 58 -1.0000000000000e+00 52 59 0.0000000000000e+00 59 59 1.0000000000000e+00 89 59 -1.0000000000000e+00 93 59 -1.0000000000000e+00 105 59 -1.0000000000000e+00 53 60 -1.0000000000000e+00 60 60 1.0000000000000e+00 90 60 -1.0000000000000e+00 93 60 -1.0000000000000e+00 106 60 -1.0000000000000e+00 54 61 0.0000000000000e+00 61 61 1.0000000000000e+00 91 61 -1.0000000000000e+00 93 61 -1.0000000000000e+00 107 61 -1.0000000000000e+00 55 62 -1.0000000000000e+00 63 62 -1.0000000000000e+00 71 62 -1.0000000000000e+00 56 63 -1.0000000000000e+00 63 63 -1.0000000000000e+00 72 63 -1.0000000000000e+00 57 64 -1.0000000000000e+00 63 64 -1.0000000000000e+00 73 64 -1.0000000000000e+00 58 65 -1.0000000000000e+00 63 65 -1.0000000000000e+00 74 65 -1.0000000000000e+00 59 66 -1.0000000000000e+00 63 66 -1.0000000000000e+00 75 66 -1.0000000000000e+00 60 67 -1.0000000000000e+00 63 67 -1.0000000000000e+00 76 67 -1.0000000000000e+00 61 68 -1.0000000000000e+00 63 68 -1.0000000000000e+00 77 68 -1.0000000000000e+00 62 69 1.0000000000000e+00 64 69 5.0000000000000e-01 65 69 5.0000000000000e-01 66 69 5.0000000000000e-01 67 69 5.0000000000000e-01 68 69 5.0000000000000e-01 69 69 5.0000000000000e-01 70 69 5.0000000000000e-01 63 70 1.0000000000000e+00 71 70 5.0000000000000e-01 72 70 5.0000000000000e-01 73 70 5.0000000000000e-01 74 70 5.0000000000000e-01 75 70 5.0000000000000e-01 76 70 5.0000000000000e-01 77 70 5.0000000000000e-01 64 71 1.0000000000000e+01 65 72 1.0000000000000e+01 66 73 1.0000000000000e+01 67 74 1.0000000000000e+01 68 75 1.0000000000000e+01 69 76 1.0000000000000e+01 70 77 1.0000000000000e+01 71 78 1.0000000000000e+01 72 79 1.0000000000000e+01 73 80 1.0000000000000e+01 74 81 1.0000000000000e+01 75 82 1.0000000000000e+01 76 83 1.0000000000000e+01 77 84 1.0000000000000e+01 78 85 -1.0000000000000e+00 85 85 1.0000000000000e+00 115 85 -1.0000000000000e+00 123 85 -1.0000000000000e+00 131 85 -1.0000000000000e+00 79 86 -1.0000000000000e+00 86 86 1.0000000000000e+00 116 86 -1.0000000000000e+00 123 86 -1.0000000000000e+00 132 86 -1.0000000000000e+00 80 87 -5.0000000000000e-02 87 87 1.0000000000000e+00 117 87 -1.0000000000000e+00 123 87 -1.0000000000000e+00 133 87 -1.0000000000000e+00 81 88 0.0000000000000e+00 88 88 1.0000000000000e+00 118 88 -1.0000000000000e+00 123 88 -1.0000000000000e+00 134 88 -1.0000000000000e+00 82 89 0.0000000000000e+00 89 89 1.0000000000000e+00 119 89 -1.0000000000000e+00 123 89 -1.0000000000000e+00 135 89 -1.0000000000000e+00 83 90 -9.9000000000000e-01 90 90 1.0000000000000e+00 120 90 -1.0000000000000e+00 123 90 -1.0000000000000e+00 136 90 -1.0000000000000e+00 84 91 0.0000000000000e+00 91 91 1.0000000000000e+00 121 91 -1.0000000000000e+00 123 91 -1.0000000000000e+00 137 91 -1.0000000000000e+00 78 92 1.0000000000000e+00 85 92 -1.0000000000000e+00 92 92 -1.0000000000000e+00 94 92 -1.0000000000000e+00 79 93 1.0000000000000e+00 86 93 -1.0000000000000e+00 92 93 -1.0000000000000e+00 95 93 -1.0000000000000e+00 80 94 1.0000000000000e+00 87 94 -1.0000000000000e+00 92 94 -1.0000000000000e+00 96 94 -1.0000000000000e+00 81 95 1.0000000000000e+00 88 95 -1.0000000000000e+00 92 95 -1.0000000000000e+00 97 95 -1.0000000000000e+00 82 96 1.0000000000000e+00 89 96 -1.0000000000000e+00 92 96 -1.0000000000000e+00 98 96 -1.0000000000000e+00 83 97 1.0000000000000e+00 90 97 -1.0000000000000e+00 92 97 -1.0000000000000e+00 99 97 -1.0000000000000e+00 84 98 1.0000000000000e+00 91 98 -1.0000000000000e+00 92 98 -1.0000000000000e+00 100 98 -1.0000000000000e+00 92 99 1.0000000000000e+00 94 99 5.0000000000000e-01 95 99 5.0000000000000e-01 96 99 5.0000000000000e-01 97 99 5.0000000000000e-01 98 99 5.0000000000000e-01 99 99 5.0000000000000e-01 100 99 5.0000000000000e-01 93 100 1.0000000000000e+00 101 100 5.0000000000000e-01 102 100 5.0000000000000e-01 103 100 5.0000000000000e-01 104 100 5.0000000000000e-01 105 100 5.0000000000000e-01 106 100 5.0000000000000e-01 107 100 5.0000000000000e-01 94 101 1.0000000000000e+01 95 102 1.0000000000000e+01 96 103 1.0000000000000e+01 97 104 1.0000000000000e+01 98 105 1.0000000000000e+01 99 106 1.0000000000000e+01 100 107 1.0000000000000e+01 101 108 1.0000000000000e+01 102 109 1.0000000000000e+01 103 110 1.0000000000000e+01 104 111 1.0000000000000e+01 105 112 1.0000000000000e+01 106 113 1.0000000000000e+01 107 114 1.0000000000000e+01 108 115 1.0000000000000e+00 115 115 -1.0000000000000e+00 122 115 -1.0000000000000e+00 124 115 -1.0000000000000e+00 109 116 1.0000000000000e+00 116 116 -1.0000000000000e+00 122 116 -1.0000000000000e+00 125 116 -1.0000000000000e+00 110 117 1.0000000000000e+00 117 117 -1.0000000000000e+00 122 117 -1.0000000000000e+00 126 117 -1.0000000000000e+00 111 118 1.0000000000000e+00 118 118 -1.0000000000000e+00 122 118 -1.0000000000000e+00 127 118 -1.0000000000000e+00 112 119 1.0000000000000e+00 119 119 -1.0000000000000e+00 122 119 -1.0000000000000e+00 128 119 -1.0000000000000e+00 113 120 1.0000000000000e+00 120 120 -1.0000000000000e+00 122 120 -1.0000000000000e+00 129 120 -1.0000000000000e+00 114 121 1.0000000000000e+00 121 121 -1.0000000000000e+00 122 121 -1.0000000000000e+00 130 121 -1.0000000000000e+00 122 122 1.0000000000000e+00 124 122 5.0000000000000e-01 125 122 5.0000000000000e-01 126 122 5.0000000000000e-01 127 122 5.0000000000000e-01 128 122 5.0000000000000e-01 129 122 5.0000000000000e-01 130 122 5.0000000000000e-01 123 123 1.0000000000000e+00 131 123 5.0000000000000e-01 132 123 5.0000000000000e-01 133 123 5.0000000000000e-01 134 123 5.0000000000000e-01 135 123 5.0000000000000e-01 136 123 5.0000000000000e-01 137 123 5.0000000000000e-01 124 124 1.0000000000000e+01 125 125 1.0000000000000e+01 126 126 1.0000000000000e+01 127 127 1.0000000000000e+01 128 128 1.0000000000000e+01 129 129 1.0000000000000e+01 130 130 1.0000000000000e+01 131 131 1.0000000000000e+01 132 132 1.0000000000000e+01 133 133 1.0000000000000e+01 134 134 1.0000000000000e+01 135 135 1.0000000000000e+01 136 136 1.0000000000000e+01 137 137 1.0000000000000e+01 SHAR_EOF fi # end of overwriting check if test -f 'data5' then echo shar: will not over-write existing file "'data5'" else cat << "SHAR_EOF" > 'data5' %%MatrixMarket matrix coordinate real general 62 62 450 1 1 7.6107080000000e-01 4 1 1.5781500000000e-01 18 1 -2.4489800000000e-01 20 1 1.3286800000000e-02 22 1 -6.0468600000000e-01 24 1 1.3286800000000e-02 25 1 -2.4489800000000e-01 2 2 7.6107080000000e-01 3 2 1.2909240000000e-01 6 2 7.8907500000000e-02 15 2 -3.0234300000000e-01 19 2 -4.8979600000000e-01 21 2 1.3286800000000e-02 29 2 -3.0234300000000e-01 30 2 1.3286800000000e-02 2 3 1.2909240000000e-01 3 3 1.5221400000000e+00 5 3 1.2909240000000e-01 6 3 2.3349520000000e-01 7 3 3.8466680000000e-01 16 3 1.3286800000000e-02 19 3 -4.8979600000000e-01 21 3 -6.0468600000000e-01 26 3 -4.8979600000000e-01 28 3 1.3286800000000e-02 29 3 1.3286800000000e-02 32 3 9.2069420000000e-01 34 3 -6.0468600000000e-01 36 3 1.3286800000000e-02 1 4 1.5781500000000e-01 4 4 1.5221400000000e+00 8 4 1.5781500000000e-01 17 4 1.3286800000000e-02 20 4 -4.8979600000000e-01 22 4 -6.0468600000000e-01 25 4 1.3286800000000e-02 27 4 -4.8979600000000e-01 33 4 1.3286800000000e-02 35 4 -6.0468600000000e-01 37 4 1.3286800000000e-02 3 5 1.2909240000000e-01 5 5 7.6107090000000e-01 7 5 2.3349520000000e-01 9 5 3.0575930000000e-01 23 5 1.3286800000000e-02 26 5 -4.8979600000000e-01 28 5 -3.0234300000000e-01 34 5 1.3286800000000e-02 38 5 9.2069420000000e-01 40 5 -3.0234300000000e-01 2 6 7.8907500000000e-02 3 6 6.6434200000000e-03 6 6 1.6339700000000e+00 7 6 1.2527530000000e-01 10 6 1.8850680000000e-01 19 6 1.3286800000000e-02 29 6 -3.0234300000000e-01 32 6 -4.7452800000000e-01 34 6 1.3286800000000e-02 41 6 -7.4074100000000e-01 42 6 1.3286800000000e-02 3 7 1.5781500000000e-01 5 7 6.6434200000000e-03 6 7 -8.9839500000000e-03 7 7 3.6707200000000e+00 9 7 1.2527530000000e-01 10 7 6.6434200000000e-03 11 7 3.7701370000000e-01 26 7 1.3286800000000e-02 30 7 1.3286800000000e-02 32 7 6.2509500000000e-02 34 7 -6.0468600000000e-01 38 7 -4.7452800000000e-01 40 7 1.3286800000000e-02 41 7 1.3286800000000e-02 44 7 1.3286800000000e-02 46 7 -1.4814800000000e+00 48 7 1.3286800000000e-02 4 8 1.5781500000000e-01 6 8 -1.2083300000000e-01 8 8 2.7123900000000e+00 9 8 1.2083330000000e-01 12 8 3.7701370000000e-01 27 8 1.3286800000000e-02 31 8 1.3286800000000e-02 32 8 4.8333330000000e-01 33 8 -8.4489800000000e-01 35 8 -6.0468600000000e-01 38 8 -4.8333300000000e-01 39 8 -8.4489800000000e-01 45 8 1.3286800000000e-02 47 8 -1.4814800000000e+00 49 8 1.3286800000000e-02 5 9 7.8907500000000e-02 7 9 -8.9839500000000e-03 9 9 2.0367500000000e+00 11 9 6.6434200000000e-03 13 9 1.8850680000000e-01 36 9 1.3286800000000e-02 38 9 6.2509500000000e-02 40 9 -3.0234300000000e-01 46 9 1.3286800000000e-02 50 9 1.3286800000000e-02 52 9 -7.4074100000000e-01 6 10 2.8109940000000e-01 7 10 9.9236000000000e-02 10 10 1.9513200000000e+00 11 10 3.0664330000000e-01 32 10 3.8365720000000e-01 41 10 -7.4074100000000e-01 44 10 -1.2000000000000e+00 46 10 1.3286800000000e-02 53 10 -7.4074100000000e-01 54 10 1.3286800000000e-02 7 11 4.6960630000000e-01 9 11 9.9236000000000e-02 10 11 3.0664330000000e-01 11 11 3.9026400000000e+00 13 11 3.0664330000000e-01 38 11 3.8365720000000e-01 42 11 1.3286800000000e-02 44 11 -1.2000000000000e+00 46 11 -1.4814800000000e+00 50 11 -1.2000000000000e+00 52 11 1.3286800000000e-02 53 11 1.3286800000000e-02 57 11 -1.4814800000000e+00 59 11 1.3286800000000e-02 8 12 3.7701370000000e-01 12 12 3.9026400000000e+00 14 12 3.7701370000000e-01 39 12 1.3286800000000e-02 43 12 1.3286800000000e-02 45 12 -1.2000000000000e+00 47 12 -1.4814800000000e+00 51 12 -1.2000000000000e+00 56 12 1.3286800000000e-02 58 12 -1.4814800000000e+00 60 12 1.3286800000000e-02 9 13 1.8850680000000e-01 11 13 3.0664330000000e-01 13 13 1.9513200000000e+00 48 13 1.3286800000000e-02 50 13 -1.2000000000000e+00 52 13 -7.4074100000000e-01 57 13 1.3286800000000e-02 62 13 -7.4074100000000e-01 12 14 3.7701370000000e-01 14 14 1.9513200000000e+00 51 14 1.3286800000000e-02 55 14 1.3286800000000e-02 56 14 -6.0000000000000e-01 58 14 -1.4814800000000e+00 61 14 -6.0000000000000e-01 2 15 -3.0234300000000e-01 15 15 9.8818740000000e-01 16 15 -5.4294300000000e-01 3 16 1.3286800000000e-02 15 16 -5.4294300000000e-01 16 16 1.9763700000000e+00 19 16 -6.5783400000000e-01 21 16 -5.4294300000000e-01 4 17 1.3286800000000e-02 17 17 1.9763700000000e+00 18 17 -6.5783400000000e-01 20 17 -6.5783400000000e-01 22 17 -5.4294300000000e-01 1 18 -2.4489800000000e-01 17 18 -6.5783400000000e-01 18 18 9.8818740000000e-01 2 19 -4.8979600000000e-01 3 19 -4.8979600000000e-01 6 19 1.3286800000000e-02 16 19 -6.5783400000000e-01 19 19 1.9763700000000e+00 21 19 -5.3147400000000e-02 29 19 -5.3147400000000e-02 30 19 -6.5783400000000e-01 1 20 1.3286800000000e-02 4 20 -4.8979600000000e-01 17 20 -6.5783400000000e-01 20 20 1.9763700000000e+00 22 20 -5.3147400000000e-02 31 20 -6.5783400000000e-01 2 21 1.3286800000000e-02 3 21 -6.0468600000000e-01 16 21 -5.4294300000000e-01 19 21 -5.3147400000000e-02 21 21 1.9763700000000e+00 23 21 -5.4294300000000e-01 1 22 -6.0468600000000e-01 4 22 -6.0468600000000e-01 17 22 -5.4294300000000e-01 20 22 -5.3147400000000e-02 22 22 1.9763700000000e+00 24 22 -5.4294300000000e-01 25 22 -5.3147400000000e-02 5 23 1.3286800000000e-02 21 23 -5.4294300000000e-01 23 23 1.9763700000000e+00 26 23 -6.5783400000000e-01 28 23 -5.4294300000000e-01 1 24 1.3286800000000e-02 22 24 -5.4294300000000e-01 24 24 1.9763700000000e+00 25 24 -6.5783400000000e-01 27 24 -6.5783400000000e-01 1 25 -2.4489800000000e-01 4 25 1.3286800000000e-02 22 25 -5.3147400000000e-02 24 25 -6.5783400000000e-01 25 25 9.8818740000000e-01 3 26 -4.8979600000000e-01 5 26 -4.8979600000000e-01 7 26 1.3286800000000e-02 23 26 -6.5783400000000e-01 26 26 1.9763700000000e+00 28 26 -5.3147400000000e-02 34 26 -5.3147400000000e-02 36 26 -6.5783400000000e-01 4 27 -4.8979600000000e-01 8 27 1.3286800000000e-02 24 27 -6.5783400000000e-01 27 27 1.9763700000000e+00 35 27 -5.3147400000000e-02 37 27 -6.5783400000000e-01 3 28 1.3286800000000e-02 5 28 -3.0234300000000e-01 23 28 -5.4294300000000e-01 26 28 -5.3147400000000e-02 28 28 9.8818740000000e-01 2 29 -3.0234300000000e-01 3 29 1.3286800000000e-02 6 29 -3.0234300000000e-01 19 29 -5.3147400000000e-02 29 29 9.8818740000000e-01 30 29 -5.4294300000000e-01 2 30 1.3286800000000e-02 6 30 -9.0740700000000e-01 7 30 1.3286800000000e-02 19 30 -6.5783400000000e-01 29 30 -5.4294300000000e-01 30 30 1.9763700000000e+00 32 30 -2.4726500000000e+00 34 30 -5.4294300000000e-01 8 31 1.3286800000000e-02 20 31 -6.5783400000000e-01 31 31 1.9763700000000e+00 33 31 -6.5783400000000e-01 35 31 -5.4294300000000e-01 3 32 1.3286800000000e-02 6 32 6.2509500000000e-02 7 32 -4.7452800000000e-01 10 32 1.3286800000000e-02 30 32 -6.5783400000000e-01 32 32 6.1189300000000e+00 34 32 -5.3147400000000e-02 41 32 -5.3147400000000e-02 42 32 -1.5346300000000e+00 4 33 1.3286800000000e-02 6 33 4.8333330000000e-01 7 33 -4.8333300000000e-01 8 33 -8.4489800000000e-01 31 33 -6.5783400000000e-01 33 33 3.5633700000000e+00 35 33 -5.3147400000000e-02 43 33 -1.5346300000000e+00 3 34 -6.0468600000000e-01 5 34 1.3286800000000e-02 6 34 1.3286800000000e-02 7 34 -1.5120900000000e+00 26 34 -5.3147400000000e-02 30 34 -5.4294300000000e-01 32 34 -1.8679600000000e+00 34 34 1.9763700000000e+00 36 34 -5.4294300000000e-01 4 35 -6.0468600000000e-01 8 35 -6.0468600000000e-01 27 35 -5.3147400000000e-02 31 35 -5.4294300000000e-01 33 35 -5.3147400000000e-02 35 35 1.9763700000000e+00 37 35 -5.4294300000000e-01 3 36 1.3286800000000e-02 7 36 -9.0740700000000e-01 9 36 1.3286800000000e-02 26 36 -6.5783400000000e-01 34 36 -5.4294300000000e-01 36 36 1.9763700000000e+00 38 36 -2.4726500000000e+00 40 36 -5.4294300000000e-01 4 37 1.3286800000000e-02 27 37 -6.5783400000000e-01 35 37 -5.4294300000000e-01 37 37 1.9763700000000e+00 39 37 -6.5783400000000e-01 5 38 1.3286800000000e-02 7 38 6.2509500000000e-02 9 38 -4.7452800000000e-01 11 38 1.3286800000000e-02 36 38 -6.5783400000000e-01 38 38 6.1189300000000e+00 40 38 -5.3147400000000e-02 46 38 -5.3147400000000e-02 48 38 -1.5346300000000e+00 7 39 4.8333330000000e-01 8 39 -8.4489800000000e-01 9 39 -4.8333300000000e-01 12 39 1.3286800000000e-02 37 39 -6.5783400000000e-01 39 39 3.5633700000000e+00 47 39 -5.3147400000000e-02 49 39 -1.5346300000000e+00 5 40 -3.0234300000000e-01 7 40 1.3286800000000e-02 9 40 -1.2097500000000e+00 36 40 -5.4294300000000e-01 38 40 -1.8679600000000e+00 40 40 9.8818740000000e-01 6 41 -1.1111100000000e+00 7 41 1.3286800000000e-02 10 41 -7.4074100000000e-01 32 41 -7.9388800000000e-01 41 41 2.5751900000000e+00 42 41 -1.2531500000000e+00 6 42 1.3286800000000e-02 7 42 -3.7037000000000e-01 11 42 1.3286800000000e-02 32 42 -2.2753700000000e+00 41 42 -1.2531500000000e+00 42 42 5.1503700000000e+00 44 42 -1.5346300000000e+00 46 42 -1.2531500000000e+00 12 43 1.3286800000000e-02 33 43 -1.5346300000000e+00 43 43 5.1503700000000e+00 45 43 -1.5346300000000e+00 47 43 -1.2531500000000e+00 7 44 1.3286800000000e-02 10 44 -1.2000000000000e+00 11 44 -1.2000000000000e+00 42 44 -1.5346300000000e+00 44 44 5.1503700000000e+00 46 44 -5.3147400000000e-02 53 44 -5.3147400000000e-02 54 44 -1.5346300000000e+00 8 45 1.3286800000000e-02 12 45 -1.2000000000000e+00 43 45 -1.5346300000000e+00 45 45 5.1503700000000e+00 47 45 -5.3147400000000e-02 55 45 -1.5346300000000e+00 7 46 -1.8518500000000e+00 9 46 1.3286800000000e-02 10 46 1.3286800000000e-02 11 46 -1.4814800000000e+00 38 46 -7.9388800000000e-01 42 46 -1.2531500000000e+00 44 46 -5.3147400000000e-02 46 46 5.1503700000000e+00 48 46 -1.2531500000000e+00 8 47 -1.4814800000000e+00 12 47 -1.4814800000000e+00 39 47 -5.3147400000000e-02 43 47 -1.2531500000000e+00 45 47 -5.3147400000000e-02 47 47 5.1503700000000e+00 49 47 -1.2531500000000e+00 7 48 1.3286800000000e-02 9 48 -3.7037000000000e-01 13 48 1.3286800000000e-02 38 48 -2.2753700000000e+00 46 48 -1.2531500000000e+00 48 48 5.1503700000000e+00 50 48 -1.5346300000000e+00 52 48 -1.2531500000000e+00 8 49 1.3286800000000e-02 39 49 -1.5346300000000e+00 47 49 -1.2531500000000e+00 49 49 5.1503700000000e+00 51 49 -1.5346300000000e+00 9 50 1.3286800000000e-02 11 50 -1.2000000000000e+00 13 50 -1.2000000000000e+00 48 50 -1.5346300000000e+00 50 50 5.1503700000000e+00 52 50 -5.3147400000000e-02 57 50 -5.3147400000000e-02 59 50 -1.5346300000000e+00 12 51 -1.2000000000000e+00 14 51 1.3286800000000e-02 49 51 -1.5346300000000e+00 51 51 5.1503700000000e+00 58 51 -5.3147400000000e-02 60 51 -1.5346300000000e+00 9 52 -7.4074100000000e-01 11 52 1.3286800000000e-02 13 52 -7.4074100000000e-01 48 52 -1.2531500000000e+00 50 52 -5.3147400000000e-02 52 52 2.5751900000000e+00 10 53 -7.4074100000000e-01 11 53 1.3286800000000e-02 44 53 -5.3147400000000e-02 53 53 2.5751900000000e+00 54 53 -1.2531500000000e+00 10 54 1.3286800000000e-02 44 54 -1.5346300000000e+00 53 54 -1.2531500000000e+00 54 54 5.1503700000000e+00 57 54 -1.2531500000000e+00 14 55 1.3286800000000e-02 45 55 -1.5346300000000e+00 55 55 5.1503700000000e+00 56 55 -1.5346300000000e+00 58 55 -1.2531500000000e+00 12 56 1.3286800000000e-02 14 56 -6.0000000000000e-01 55 56 -1.5346300000000e+00 56 56 2.5751900000000e+00 58 56 -5.3147400000000e-02 11 57 -1.4814800000000e+00 13 57 1.3286800000000e-02 50 57 -5.3147400000000e-02 54 57 -1.2531500000000e+00 57 57 5.1503700000000e+00 59 57 -1.2531500000000e+00 12 58 -1.4814800000000e+00 14 58 -1.4814800000000e+00 51 58 -5.3147400000000e-02 55 58 -1.2531500000000e+00 56 58 -5.3147400000000e-02 58 58 5.1503700000000e+00 60 58 -1.2531500000000e+00 11 59 1.3286800000000e-02 50 59 -1.5346300000000e+00 57 59 -1.2531500000000e+00 59 59 5.1503700000000e+00 62 59 -1.2531500000000e+00 12 60 1.3286800000000e-02 51 60 -1.5346300000000e+00 58 60 -1.2531500000000e+00 60 60 5.1503700000000e+00 61 60 -1.5346300000000e+00 14 61 -6.0000000000000e-01 60 61 -1.5346300000000e+00 61 61 2.5751900000000e+00 13 62 -7.4074100000000e-01 59 62 -1.2531500000000e+00 62 62 2.5751900000000e+00 SHAR_EOF fi # end of overwriting check if test -f 'decomp.c' then echo shar: will not over-write existing file "'decomp.c'" else cat << "SHAR_EOF" > 'decomp.c' /*---------------------------------------------------------------------- SDDPACK: Software for the Semidiscrete Decomposition. Copyright (c) 1999 Tamara G. Kolda and Dianne P. O'Leary. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. PROGRAM: decomp DESCRIPTION: Computes (or expands) the Semidiscrete Decomposition (SDD) of a sparse matrix. USAGE: decomp [options] infile outfile OPTIONS: -k terms Desired number of terms in SDD (Default: 100) -a accuarcy Desired SDD accuracy (Default: 0) -t tolerance Tolerance for inner iterations (Default: 0.01) -i its Max inner iterations (Default: 100) -y choice Initialization for inner loop... 1 = Threshold (Default) 2 = Cycling 3 = Ones 4 = Periodic Ones -e filename Expand existing SDD -b I/O in binary format FILE FORMATS: EXTERNAL SUBROUTINES: read_sparse, free_sparse, read_sdd, compute_sdd, write_sdd, free_sdd - sdd.c PROGRAM DEPENDENCIES: decomp.c, sdd.h, sdd.o BUG REPORTS: Email Tamara.Kolda@na-net.ornl.gov. ----------------------------------------------------------------------*/ #include #include #include #include "sdd.h" /* semidiscrete decomposition */ #define TERMS 100 /* default number of terms */ #define ACCR 0.0 /* default desired accuarcy */ #define TOL 0.01 /* default tolerance */ #define ITS 100 /* default max inner its */ #define YINIT 1 /* default initialization choice */ #define BFLAG 0 /* default I/O in binary format? */ void usage(char *); int main(int argc, char* argv[]) { int i; /* counter */ int terms = TERMS; /* number of terms in SDD */ float accr = ACCR; /* desired accuary of SDD */ float tol = TOL; /* tolerance */ int its = ITS; /* max its for inner iteration */ int yinit = YINIT; /* choice for initialization */ int bflag = BFLAG; /* I/O in binary format? */ char *matrixf; /* matrix file name */ matrix *A; /* matrix */ char *decompf; /* sdd file name */ sdd *S; /* sdd */ char *edecompf = NULL; /* existing sdd file name */ int eterms = 0; /* no. of terms in existing sdd */ sdd *E = NULL; /* existing sdd */ char note[MAXLINE]; /* note for sdd file */ /* Parse command line */ if (argc < 3) { usage(argv[0]); return(-1); } matrixf = argv[argc-2]; decompf = argv[argc-1]; i = 1; while (i < argc - 2) { if (argv[i][0] != '-') { usage(argv[0]); return(-1); } switch (argv[i][1]) { case 'e': edecompf = argv[++i]; break; case 'k': terms = atoi(argv[++i]); break; case 'a': accr = atof(argv[++i]); break; case 't': tol = atof(argv[++i]); break; case 'i': its = atoi(argv[++i]); break; case 'y': yinit = atoi(argv[++i]); break; case 'b': bflag = 1; break; default: usage(argv[0]); return(-1); } i++; } /* Output values being used */ fprintf(stdout, "*** output from %s ***\n", argv[0]); fprintf(stdout, "matrix file : %s\n", matrixf); fprintf(stdout, "SDD file : %s\n", decompf); fprintf(stdout, "existing SDD file : "); if (edecompf) fprintf(stdout, "%s\n", edecompf); else fprintf(stdout, "\n"); fprintf(stdout, "terms : %d\n", terms); fprintf(stdout, "accuracy : %f\n", accr); fprintf(stdout, "tolerance : %f\n", tol); fprintf(stdout, "max inner its : %d\n", its); fprintf(stdout, "y init choice : %d\n", yinit); fprintf(stdout, "input type : "); if (bflag) fprintf(stdout, "binary\n"); else fprintf(stdout, "text\n"); /* Create note for SDD file */ if (!bflag) { if (edecompf) sprintf(note, "Matrix: %s Old SDD: %s Terms: %d Accr: %.2e Tol: %.2e InnIts: %d Init: %d", matrixf, edecompf, terms, accr, tol, its, yinit); else sprintf(note, "Matrix: %s Terms: %d Accr: %.2e Tol: %.2e InnIts: %d Init: %d", matrixf, terms, accr, tol, its, yinit); } /* Read matrix matrix */ if ((A = read_matrix(matrixf, bflag)) == NULL) { fprintf(stderr, "Error reading sparse matrix.\n"); return (-1); } /* Read exisiting SDD if one exists */ if (edecompf) { if ((E = read_sdd(edecompf, bflag)) == NULL) { fprintf(stderr, "Error reading existing SDD from file.\n"); return (-1); } eterms = E->k; } /* Compute SDD */ S = compute_sdd(A, E, eterms, terms, accr, its, tol, yinit); /* Save SDD */ write_sdd(S, decompf, bflag, note); /* Free memory and exit */ free_matrix(A); free_sdd(S); return (0); } /* main */ /*----------------------------------------------------------------------*/ void usage(char *name) { fprintf(stderr, "\n"); fprintf(stderr, "USAGE: decomp [options] infile outfile\n"); fprintf(stderr, "Computes Semidiscrete Decomposition (SDD).\n"); fprintf(stderr, "OPTIONS: -k terms Terms in SDD (Default: 100)\n"); fprintf(stderr, " -a accuarcy Desired residual norm (Default: 0)\n"); fprintf(stderr, " -t tol Tolerance (Default: 0.01)\n"); fprintf(stderr, " -i its Max inner iterations (Default: 100)\n"); fprintf(stderr, " -y (1|2|3|4) Initialization Choice\n"); fprintf(stderr, " 1 = Threshold (Default)\n"); fprintf(stderr, " 2 = Cycling\n"); fprintf(stderr, " 3 = All Ones\n"); fprintf(stderr, " 4 = Periodic Ones\n"); fprintf(stderr, " -e filename Expand exisiting SDD\n"); fprintf(stderr, " -b I/O in binary format\n"); fprintf(stderr, "\n"); return; } /* usage */ SHAR_EOF fi # end of overwriting check if test -f 'res1' then echo shar: will not over-write existing file "'res1'" else cat << "SHAR_EOF" > 'res1' *** output from decomp *** matrix file : data1 SDD file : res1_1 existing SDD file : terms : 10 accuracy : 0.000000 tolerance : 0.010000 max inner its : 100 y init choice : 1 input type : text Iteration Residual Improvement Inner Total Number Squared (beta) Its InnerIts --------- -------- ----------- ----- -------- 1 2 1.41e+00 5.75170e+00 3 3 2 4 5.57e-01 8.51472e-01 3 6 3 7 2.19e-01 3.38517e-01 3 9 4 10 1.33e-01 8.60342e-02 2 11 5 11 1.02e-01 3.10079e-02 2 13 6 12 5.00e-02 5.18036e-02 4 17 7 17 2.60e-02 2.40155e-02 2 19 8 19 1.33e-02 1.26359e-02 3 22 9 22 7.27e-03 6.06216e-03 2 24 10 23 5.02e-03 2.25306e-03 2 26 -- SDD information -- final residual norm : 7.0859e-02 final relative residual norm: 0.026 total outer iterations : 10 average inner iterations : 2.600 average init iterations : 2.300 SHAR_EOF fi # end of overwriting check if test -f 'res1_1' then echo shar: will not over-write existing file "'res1_1'" else cat << "SHAR_EOF" > 'res1_1' %% Semidiscrete Decomposition (SDD) %% Matrix: data1 Terms: 10 Accr: 0.00e+00 Tol: 1.00e-02 InnIts: 100 Init: 1 10 5 5 4.7965389490127563476562500e-01 3.2624220848083496093750000e-01 1.9394071400165557861328125e-01 8.4672987461090087890625000e-02 1.0166592150926589965820312e-01 5.8767084032297134399414062e-02 3.8742337375879287719726562e-02 3.2449815422296524047851562e-02 5.5055230855941772460937500e-02 2.3733202368021011352539062e-02 1 1 1 1 1 0 1 -1 1 -1 -1 0 1 1 0 -1 1 1 -1 0 1 -1 0 -1 0 1 1 -1 -1 1 -1 -1 1 0 1 0 -1 -1 1 0 0 0 0 0 1 1 -1 -1 -1 0 1 1 1 1 1 0 0 0 1 -1 0 1 1 -1 0 0 1 0 1 1 1 0 0 0 0 0 1 -1 -1 0 0 1 1 -1 -1 -1 0 -1 1 -1 -1 1 0 0 0 0 0 1 0 0 SHAR_EOF fi # end of overwriting check if test -f 'res2' then echo shar: will not over-write existing file "'res2'" else cat << "SHAR_EOF" > 'res2' *** output from decomp *** matrix file : data2 SDD file : res2_1 existing SDD file : terms : 10 accuracy : 0.000000 tolerance : 0.010000 max inner its : 100 y init choice : 1 input type : text Iteration Residual Improvement Inner Total Number Squared (beta) Its InnerIts --------- -------- ----------- ----- -------- 1 25 2.76e+10 9.99951e+10 2 2 2 29 2.64e+10 1.23592e+09 2 4 3 109 1.62e+10 1.01468e+10 2 6 4 113 1.49e+10 1.27935e+09 2 8 5 126 4.94e+09 1.00000e+10 2 10 6 157 2.85e+09 2.09321e+09 2 12 7 241 7.47e+08 2.10117e+09 2 14 8 245 6.13e+08 1.34090e+08 4 18 9 254 4.79e+08 1.34090e+08 4 22 10 255 4.52e+08 2.66598e+07 3 25 -- SDD information -- final residual norm : 2.1262e+04 final relative residual norm: 0.060 total outer iterations : 10 average inner iterations : 2.500 average init iterations : 25.500 SHAR_EOF fi # end of overwriting check if test -f 'res2_1' then echo shar: will not over-write existing file "'res2_1'" else cat << "SHAR_EOF" > 'res2_1' %% Semidiscrete Decomposition (SDD) %% Matrix: data2 Terms: 10 Accr: 0.00e+00 Tol: 1.00e-02 InnIts: 100 Init: 1 10 132 132 3.1622000000000000000000000e+05 2.0297117187500000000000000e+04 7.1227843750000000000000000e+04 2.0650646484375000000000000e+04 1.0000000000000000000000000e+05 3.2351289062500000000000000e+04 2.6464863281250000000000000e+04 1.1579740234375000000000000e+04 1.1579740234375000000000000e+04 2.1079133300781250000000000e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 -1 0 0 0 0 0 0 SHAR_EOF fi # end of overwriting check if test -f 'res3' then echo shar: will not over-write existing file "'res3'" else cat << "SHAR_EOF" > 'res3' *** output from decomp *** matrix file : data3 SDD file : res3_1 existing SDD file : terms : 10 accuracy : 0.000000 tolerance : 0.010000 max inner its : 100 y init choice : 1 input type : text Iteration Residual Improvement Inner Total Number Squared (beta) Its InnerIts --------- -------- ----------- ----- -------- 1 2 4.48e+02 1.22514e+01 3 3 2 5 4.39e+02 9.00000e+00 2 5 3 8 4.24e+02 1.51235e+01 2 7 4 9 4.12e+02 1.22500e+01 2 9 5 10 4.00e+02 1.22507e+01 2 11 6 11 3.91e+02 9.00000e+00 2 13 7 16 3.84e+02 6.25000e+00 3 16 8 18 3.75e+02 9.00000e+00 2 18 9 22 3.69e+02 6.25000e+00 3 21 10 24 3.60e+02 9.00000e+00 2 23 -- SDD information -- final residual norm : 1.8979e+01 final relative residual norm: 0.884 total outer iterations : 10 average inner iterations : 2.300 average init iterations : 2.400 SHAR_EOF fi # end of overwriting check if test -f 'res3_1' then echo shar: will not over-write existing file "'res3_1'" else cat << "SHAR_EOF" > 'res3_1' %% Semidiscrete Decomposition (SDD) %% Matrix: data3 Terms: 10 Accr: 0.00e+00 Tol: 1.00e-02 InnIts: 100 Init: 1 10 66 67 1.7501000165939331054687500e+00 3.0000000000000000000000000e+00 1.2963000535964965820312500e+00 3.5000000000000000000000000e+00 3.5000998973846435546875000e+00 3.0000000000000000000000000e+00 1.2500000000000000000000000e+00 3.0000000000000000000000000e+00 1.2500000000000000000000000e+00 3.0000000000000000000000000e+00 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SHAR_EOF fi # end of overwriting check if test -f 'res4' then echo shar: will not over-write existing file "'res4'" else cat << "SHAR_EOF" > 'res4' *** output from decomp *** matrix file : data4 SDD file : res4_1 existing SDD file : terms : 10 accuracy : 0.000000 tolerance : 0.010000 max inner its : 100 y init choice : 1 input type : text Iteration Residual Improvement Inner Total Number Squared (beta) Its InnerIts --------- -------- ----------- ----- -------- 1 16 6.69e+03 1.44000e+04 2 2 2 32 6.59e+03 1.00000e+02 2 4 3 33 6.49e+03 1.00000e+02 2 6 4 34 6.39e+03 1.00000e+02 2 8 5 35 6.29e+03 1.00000e+02 2 10 6 36 6.19e+03 1.00000e+02 2 12 7 37 6.09e+03 1.00000e+02 2 14 8 38 5.99e+03 1.00000e+02 2 16 9 46 5.89e+03 1.00000e+02 2 18 10 47 5.79e+03 1.00000e+02 2 20 -- SDD information -- final residual norm : 7.6070e+01 final relative residual norm: 0.524 total outer iterations : 10 average inner iterations : 2.000 average init iterations : 4.700 SHAR_EOF fi # end of overwriting check if test -f 'res4_1' then echo shar: will not over-write existing file "'res4_1'" else cat << "SHAR_EOF" > 'res4_1' %% Semidiscrete Decomposition (SDD) %% Matrix: data4 Terms: 10 Accr: 0.00e+00 Tol: 1.00e-02 InnIts: 100 Init: 1 10 137 137 1.2000000000000000000000000e+02 1.0000000000000000000000000e+01 1.0000000000000000000000000e+01 1.0000000000000000000000000e+01 1.0000000000000000000000000e+01 1.0000000000000000000000000e+01 1.0000000000000000000000000e+01 1.0000000000000000000000000e+01 1.0000000000000000000000000e+01 1.0000000000000000000000000e+01 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SHAR_EOF fi # end of overwriting check if test -f 'res5' then echo shar: will not over-write existing file "'res5'" else cat << "SHAR_EOF" > 'res5' *** output from decomp *** matrix file : data5 SDD file : res5_1 existing SDD file : terms : 10 accuracy : 0.000000 tolerance : 0.010000 max inner its : 100 y init choice : 1 input type : text Iteration Residual Improvement Inner Total Number Squared (beta) Its InnerIts --------- -------- ----------- ----- -------- 1 7 9.02e+02 3.69325e+01 3 3 2 11 8.32e+02 6.93254e+01 3 6 3 12 7.83e+02 4.90489e+01 2 8 4 32 7.33e+02 5.00851e+01 3 11 5 33 6.99e+02 3.47098e+01 2 13 6 36 6.49e+02 5.00851e+01 4 17 7 38 6.32e+02 1.67452e+01 3 20 8 39 5.97e+02 3.47098e+01 2 22 9 41 5.73e+02 2.38037e+01 4 26 10 43 5.31e+02 4.20228e+01 4 30 -- SDD information -- final residual norm : 2.3049e+01 final relative residual norm: 0.752 total outer iterations : 10 average inner iterations : 3.000 average init iterations : 4.300 SHAR_EOF fi # end of overwriting check if test -f 'res5_1' then echo shar: will not over-write existing file "'res5_1'" else cat << "SHAR_EOF" > 'res5_1' %% Semidiscrete Decomposition (SDD) %% Matrix: data5 Terms: 10 Accr: 0.00e+00 Tol: 1.00e-02 InnIts: 100 Init: 1 10 62 62 3.0386052131652832031250000e+00 9.2513221502304077148437500e-01 1.4006980657577514648437500e+00 3.5385417938232421875000000e+00 2.9457499980926513671875000e+00 3.5385417938232421875000000e+00 2.0460424423217773437500000e+00 2.9457499980926513671875000e+00 7.5283193588256835937500000e-01 1.0804166793823242187500000e+00 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 -1 0 1 0 -1 0 0 0 1 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 -1 0 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 0 0 0 1 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 -1 0 0 0 1 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 -1 0 1 0 -1 0 0 0 1 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 -1 0 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 -1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 0 0 0 1 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 -1 0 0 0 1 0 0 0 0 0 0 1 0 -1 0 0 SHAR_EOF fi # end of overwriting check cd .. if test ! -d 'Src' then mkdir 'Src' fi cd 'Src' if test -f 'qsortopt.h' then echo shar: will not over-write existing file "'qsortopt.h'" else cat << "SHAR_EOF" > 'qsortopt.h' /*---------------------------------------------------------------------- SDDPACK: Software for the Semidiscrete Decomposition. Copyright (c) 1999 Tamara G. Kolda and Dianne P. O'Leary. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. This next piece of code is a customized version of the GNU qsort for the data type we are sorting here. It will be used if the -DQSORTOPT flag is used in compliation. It should generally make the code faster, but may be incompatible with some machine types. To determine if this qsort will work for you, first compile without the flag, time and test the code. Then try the same thing again with the flag on. If you do not get the same answers or the code is slower, than you should not use this option. ----------------------------------------------------------------------*/ #ifdef QSORTOPT #include /* used by our optimized qsort */ /* Slightly Modified so the compare operation is in-lined. -T. Kolda */ /* Plug-compatible replacement for UNIX qsort. Copyright (C) 1989 Free Software Foundation, Inc. Written by Douglas C. Schmidt (schmidt@ics.uci.edu) This file is part of GNU CC. GNU QSORT is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU QSORT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU QSORT; see the file COPYING. If not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifdef sparc #include #endif /* Invoke the comparison function, returns either 0, < 0, or > 0. */ #define CMP(A,B) (((sdddouble_plus*)(B))->val - ((sdddouble_plus*)(A))->val) #define size (sizeof(sdddouble_plus)) /* Byte-wise swap two items of size SIZE. */ #define SWAP(A,B,SIZE) do {int sz = (SIZE); char *a = (A); char *b = (B); \ do { char _temp = *a;*a++ = *b;*b++ = _temp;} while (--sz);} while (0) /* Copy SIZE bytes from item B to item A. */ #define COPY(A,B,SIZE) {int sz = (SIZE); do { *(A)++ = *(B)++; } while (--sz); } /* This should be replaced by a standard ANSI macro. */ #ifndef BYTES_PER_WORD #define BYTES_PER_WORD (sizeof(ulong)) #endif /* The next 4 #defines implement a very fast in-line stack abstraction. */ #define STACK_SIZE (BYTES_PER_WORD * sizeof (long)) #define PUSH(LOW,HIGH) do {top->lo = LOW;top++->hi = HIGH;} while (0) #define POP(LOW,HIGH) do {LOW = (--top)->lo;HIGH = top->hi;} while (0) #define STACK_NOT_EMPTY (stack < top) /* Discontinue quicksort algorithm when partition gets below this size. This particular magic number was chosen to work best on a Sun 4/260. */ #define MAX_THRESH 4 /* Stack node declarations used to store unfulfilled partition obligations. */ typedef struct { char *lo; char *hi; } stack_node; /* Order size using quicksort. This implementation incorporates four optimizations discussed in Sedgewick: 1. Non-recursive, using an explicit stack of pointer that store the next array partition to sort. To save time, this maximum amount of space required to store an array of MAX_INT is allocated on the stack. Assuming a 32-bit integer, this needs only 32 * sizeof (stack_node) == 136 bits. Pretty cheap, actually. 2. Chose the pivot element using a median-of-three decision tree. This reduces the probability of selecting a bad pivot value and eliminates certain extraneous comparisons. 3. Only quicksorts TOTAL_ELEMS / MAX_THRESH partitions, leaving insertion sort to order the MAX_THRESH items within each partition. This is a big win, since insertion sort is faster for small, mostly sorted array segments. 4. The larger of the two sub-partitions is always pushed onto the stack first, with the algorithm then concentrating on the smaller partition. This *guarantees* no more than log (n) stack size is needed (actually O(1) in this case)! */ int qsortopt (char *base_ptr, int total_elems) { /* Allocating SIZE bytes for a pivot buffer facilitates a better algorithm below since we can do comparisons directly on the pivot. */ char *pivot_buffer = (char *) alloca (size); int max_thresh = MAX_THRESH * size; if (total_elems > MAX_THRESH) { char *lo = base_ptr; char *hi = lo + size * (total_elems - 1); stack_node stack[STACK_SIZE]; /* Largest size needed for 32-bit int!!! */ stack_node *top = stack + 1; while (STACK_NOT_EMPTY) { char *left_ptr; char *right_ptr; { char *pivot = pivot_buffer; { /* Select median value from among LO, MID, and HI. Rearrange LO and HI so the three values are sorted. This lowers the probability of picking a pathological pivot value and skips a comparison for both the LEFT_PTR and RIGHT_PTR. */ char *mid = lo + size * ((hi - lo) / size >> 1); if (CMP (mid, lo) < 0) SWAP (mid, lo, size); if (CMP (hi, mid) < 0) SWAP (mid, hi, size); else goto jump_over; if (CMP (mid, lo) < 0) SWAP (mid, lo, size); jump_over: COPY (pivot, mid, size); pivot = pivot_buffer; } left_ptr = lo + size; right_ptr = hi - size; /* Here's the famous ``collapse the walls'' section of quicksort. Gotta like those tight inner loops! They are the main reason that this algorithm runs much faster than others. */ do { while (CMP (left_ptr, pivot) < 0) left_ptr += size; while (CMP (pivot, right_ptr) < 0) right_ptr -= size; if (left_ptr < right_ptr) { SWAP (left_ptr, right_ptr, size); left_ptr += size; right_ptr -= size; } else if (left_ptr == right_ptr) { left_ptr += size; right_ptr -= size; break; } } while (left_ptr <= right_ptr); } /* Set up pointers for next iteration. First determine whether left and right partitions are below the threshold size. If so, ignore one or both. Otherwise, push the larger partition's bounds on the stack and continue sorting the smaller one. */ if ((right_ptr - lo) <= max_thresh) { if ((hi - left_ptr) <= max_thresh) /* Ignore both small partitions. */ POP (lo, hi); else /* Ignore small left partition. */ lo = left_ptr; } else if ((hi - left_ptr) <= max_thresh) /* Ignore small right partition. */ hi = right_ptr; else if ((right_ptr - lo) > (hi - left_ptr)) /* Push larger left partition indices. */ { PUSH (lo, right_ptr); lo = left_ptr; } else /* Push larger right partition indices. */ { PUSH (left_ptr, hi); hi = right_ptr; } } } /* Once the BASE_PTR array is partially sorted by quicksort the rest is completely sorted using insertion sort, since this is efficient for partitions below MAX_THRESH size. BASE_PTR points to the beginning of the array to sort, and END_PTR points at the very last element in the array (*not* one beyond it!). */ #define MIN(X,Y) ((X) < (Y) ? (X) : (Y)) { char *end_ptr = base_ptr + size * (total_elems - 1); char *run_ptr; char *tmp_ptr = base_ptr; char *thresh = MIN (end_ptr, base_ptr + max_thresh); /* Find smallest element in first threshold and place it at the array's beginning. This is the smallest array element, and the operation speeds up insertion sort's inner loop. */ for (run_ptr = tmp_ptr + size; run_ptr <= thresh; run_ptr += size) if (CMP (run_ptr, tmp_ptr) < 0) tmp_ptr = run_ptr; if (tmp_ptr != base_ptr) SWAP (tmp_ptr, base_ptr, size); /* Insertion sort, running from left-hand-side up to `right-hand-side.' Pretty much straight out of the original GNU qsort routine. */ for (run_ptr = base_ptr + size; (tmp_ptr = run_ptr += size) <= end_ptr; ) { while (CMP (run_ptr, tmp_ptr -= size) < 0) ; if ((tmp_ptr += size) != run_ptr) { char *trav; for (trav = run_ptr + size; --trav >= run_ptr;) { char c = *trav; char *hi, *lo; for (hi = lo = trav; (lo -= size) >= tmp_ptr; hi = lo) *hi = *lo; *hi = c; } } } } return 1; } #endif SHAR_EOF fi # end of overwriting check if test -f 'sdd.c' then echo shar: will not over-write existing file "'sdd.c'" else cat << "SHAR_EOF" > 'sdd.c' /*---------------------------------------------------------------------- SDDPACK: Software for the Semidiscrete Decomposition. Copyright (c) 1999 Tamara G. Kolda and Dianne P. O'Leary. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. MODULE: sdd.o DESCRIPTION: Routines for creating and updating SDD's and sparse matrices. EXTERNAL SUBROUTINES: No external subroutines MODULE DEPENDENCIES: sdd.c sdd.h BUG REPORTS: Email Tamara.Kolda@na-net.ornl.gov. ----------------------------------------------------------------------*/ #include "sdd.h" /* header file */ /*---------------------------------------------------------------------- Internal Definitions, Macros, and Structures ----------------------------------------------------------------------*/ /* Max length of comment line in data file. */ #define MAXLINE 1000 /* Information level. Higher numbers yield more info. */ #ifndef INFO #define INFO 10 #endif /* Sets every bit in the first y bytes pointed to by x to zero or one respectively. */ #define bzero(x, y) memset(x, 0, y) #define bone(x, y) memset(x, 0xff, y) /* Structure for reading in and sorting matrix entries from MatrixMarket formatted file. */ typedef struct entry_struct { int i, j; /* indicies */ float val; /* entry */ } entry; /*---------------------------------------------------------------------- Internal Function Declarations ----------------------------------------------------------------------*/ /* Internal svector functions */ int numwords(int); void free_svector(svector*); svector* create_svector(svector*, int); void write_svector(svector*, FILE*, int); svector* read_svector(int, FILE*, int); int svcount(svector*); /* Initialization functions */ sdddouble *init_threshold(svector*, matrix*, sdd*, sddfloat, int*); void init_cycle(svector*, int); void init_ones(svector*); void init_pones(svector*); /* Internal smatrix functions */ void free_smatrix(smatrix*); smatrix* create_smatrix(smatrix*, int, int, int); void write_smatrix(smatrix*, FILE*, int); smatrix* read_smatrix(int, int, FILE*, int); void expand_smatrix(smatrix*, svector*); void smxv(smatrix*, int, sdddouble*, int, sdddouble*); /* Internal dmatrix functions */ void free_dmatrix(dmatrix*); dmatrix* create_dmatrix(dmatrix*, int, int); void write_dmatrix(dmatrix*, FILE*, int); dmatrix* read_dmatrix(int, FILE*, int); void expand_dmatrix(dmatrix*, sddfloat); /* Internal SDD functions */ sdd* create_sdd(sdd*, int, int, int, int); void expand_sdd(sdd*, sddfloat, svector*, svector*); void sddxsv(sdddouble*, sdd*, svector*, int); /* Internal sparse matrix (matrix) functions */ double fnormsq(matrix*); /* Internal functions the combine objects */ void matrixxsv(sdddouble*, matrix*, svector*, int); sdddouble_plus subproblem(matrix*, sdd*, svector*, svector*, int, sdddouble*); /* Internal utility functions */ int comparentry(const entry *a, const entry *b) { if (a->j == b->j) return (a->i > b->i ? 1 : -1); else return (a->j > b->j ? 1 : -1); } #ifdef QSORTOPT /* use optimized GNU qsort */ #include "qsortopt.h" #else /* use system-provided qsort */ int compar(const sdddouble_plus *a, const sdddouble_plus *b) { return(a->val > b->val ? -1 : 1); } #endif /*------------------------------------------------------------------------ Functions for S-Vectors ------------------------------------------------------------------------*/ int numwords(int x) { /* Returns the number of words needed to store x bits. On error, returns 0. */ int i; if (x < 0) return (0); /* error */ i = x >> IDXSHIFT; /* whole words */ if (x & IDXMASK) i ++; /* partial word */ return (i); } /* numwords */ /*------------------------------------------------------------------------*/ void free_svector(svector *x) { /* Frees the memory used by x. Does nothing if x is NULL. */ if (x == NULL) { fprintf(stderr, "Warning: Trying to free null svector.\n"); return; } free(x->val); free(x->sgn); free(x); return; } /* free_svector */ /*------------------------------------------------------------------------*/ svector* create_svector(svector *x, int m) { /* Creates an svector that holds m svalues. If x is non-null, the first min(x->m, m) entries are preserved. On error, returns NULL. */ int nwrds = numwords(m); if (x == NULL) { /* create new svector */ if ((x = (svector*) calloc(1, sizeof(svector))) == NULL) { fprintf(stderr, "Error allocating space for svector.\n"); return (NULL); } x->m = m; if (((x->val = (ulong*) calloc(nwrds, sizeof(ulong))) == NULL) || ((x->sgn = (ulong*) calloc(nwrds, sizeof(ulong))) == NULL)) { fprintf(stderr, "Error allocating space for svector components.\n"); return (NULL); } } /* if - create new svector */ else { /* enlarge or shrink previous svector */ x->m = m; if (((x->val = (ulong*) realloc(x->val, nwrds * sizeof(ulong))) == NULL) || ((x->sgn = (ulong*) realloc(x->sgn, nwrds * sizeof(ulong))) == NULL)) { fprintf(stderr, "Error shrinking/enlarging svector.\n"); return (NULL); } } /* else - enlarge or shrink previous svector */ return(x); } /* create_svector */ /*------------------------------------------------------------------------*/ void write_svector(svector *x, FILE *fptr, int bflag) { /* Writes x to the file pointed to by fptr in text (bflag=0) or binary (bflag=1) format. On error, does nothing. */ int i; /* counter */ ulong *valptr, *sgnptr; /* local pointers */ ulong mask; /* bit mask */ ulong val, sgn; /* current val and sgn words */ if (x == NULL) { fprintf(stderr, "Warning: Trying to write NULL svector to file.\n"); return; } if (bflag) { /* binary */ i = numwords(x->m); if (((fwrite(x->val, sizeof(ulong), i, fptr)) < i) || ((fwrite(x->sgn, sizeof(ulong), i, fptr)) < i)) { fprintf(stderr, "Error writing svector to binary file.\n"); return; } } /* if - binary */ else { /* text */ valptr = x->val; sgnptr = x->sgn; val = *valptr; sgn = *sgnptr; mask = ONE; /* Loop through each s-value in x. */ for (i = 0; i < x->m; i ++) { /* Print out the appropriate value. */ if (val & mask) { if (sgn & mask) fprintf(fptr, " -1"); else fprintf(fptr, " 1"); } else fprintf(fptr, " 0"); /* Update mask, val, and sgn. */ if (mask == MAXMASK) { mask = ONE; val = *(++valptr); sgn = *(++sgnptr); fprintf(fptr, "\n"); } else mask <<= 1; } /* i-loop */ if (mask != (ONE)) fprintf(fptr, "\n"); } /* else - text */ return; } /* write_svector */ /*------------------------------------------------------------------------*/ svector* read_svector(int m, FILE *fptr, int bflag) { /* Reads an svector from the file pointed to by fptr in text (bflag=0) or binary (bflag=1) format. Returns a pointer to the svector. On error, returns NULL. */ int i; /* counter */ svector *x; /* new svector */ int tmp; /* svalue read from file */ int idx; /* index */ ulong mask; /* bit mask */ i = numwords(m); if ((x = create_svector(NULL, m)) == NULL) return (NULL); if (bflag) { /* binary */ if (((fread(x->val, sizeof(ulong), i, fptr)) < i) || ((fread(x->sgn, sizeof(ulong), i, fptr)) < i)) { fprintf(stderr, "Error reading svector from binary file.\n"); return (NULL); } } /* if - binary */ else { /* text */ bzero(x->val, numwords(m) * sizeof(ulong)); /* set val to all zeros */ bzero(x->sgn, numwords(m) * sizeof(ulong)); /* set sgn to all zeros */ for (i = 0; i < m; i ++) { if ((fscanf(fptr, "%d", &tmp)) < 1) { fprintf(stderr, "Error reading svector from text file.\n"); return (NULL); } if (tmp != 0) { idx = i >> IDXSHIFT; /* word index */ mask = ONE << (i & IDXMASK); /* bit mask */ x->val[idx] |= mask; /* turn correct val bit to 1 */ if (tmp == -1) x->sgn[idx] |= mask; /* turn correct sgn bit to 1 */ } } /* i-loop */ } /* else - text */ return (x); } /* read_svector */ /*------------------------------------------------------------------------*/ sdddouble *init_threshold(svector *y, matrix *A, sdd *B, sddfloat rho, int *idx) { int i; /* counter */ int m, n; /* size of A */ int localidx; /* initialization index */ sdddouble *s; /* return vector */ sdddouble sqnorms = 0; /* squared norm of s */ if ((y == NULL) || (A == NULL) || (B == NULL)) { /* error */ fprintf(stderr, "Error in initialization of y.\n"); return (NULL); } /* Allocate space for s and init to zero. */ m = (A->m > A->n) ? A->m : A->n; if ((s = (sdddouble*) calloc(m, sizeof(sdddouble))) == NULL) { fprintf(stderr, "Error allocating space for s.\n"); return (NULL); } /* Set sizes. */ m = A->m; n = A->n; while (sqnorms < (rho / n)) { /* Set y */ bzero(y->val, numwords(n) * sizeof(ulong)); bzero(y->sgn, numwords(n) * sizeof(ulong)); localidx = (*idx) % n; y->val[localidx >> IDXSHIFT] |= ONE << (localidx & IDXMASK); /* Update iidx */ (*idx) ++; /* Compute s */ matrixxsv(s, A, y, 0); /* s = A * y */ sddxsv(s, B, y, 0); /* s = s - B * y */ /* Compute squared norm of s */ sqnorms = 0; for (i = 0; i < m; i ++) sqnorms += s[i] * s[i]; } /* while loop */ return (s); } /*------------------------------------------------------------------------*/ void init_cycle(svector *y, int idx) { int n; /* size of A */ int localidx; /* initialization index */ if (y == NULL) { fprintf(stderr, "Error trying to initialize NULL y-vector.\n"); return; } n = y->m; /* Set y */ bzero(y->val, numwords(n) * sizeof(ulong)); bzero(y->sgn, numwords(n) * sizeof(ulong)); localidx = idx % n; y->val[localidx >> IDXSHIFT] |= ONE << (localidx & IDXMASK); return; } /*------------------------------------------------------------------------*/ void init_ones(svector *x) { /* Initializes x so that every 100th s-value is 1, and all other values are set to 0. Does nothing on error. */ int m; /* size of x */ if (x == NULL) { fprintf(stderr, "Error trying to initialize NULL y-vector.\n"); return; } m = x->m; bone(x->val, numwords(m) * sizeof(ulong)); /* set x to all ones */ bzero(x->sgn, numwords(m) * sizeof(ulong)); /* set x to all oness */ return; } /* init_pones */ /*------------------------------------------------------------------------*/ void init_pones(svector *x) { /* Initializes x so that every 100th s-value is 1, and all other values are set to 0. Does nothing on error. */ int i; /* counter */ int m; /* size of x */ if (x == NULL) { fprintf(stderr, "Error trying to initialize NULL y-vector.\n"); return; } m = x->m; bzero(x->val, numwords(m) * sizeof(ulong)); /* set x to all zeros */ bzero(x->sgn, numwords(m) * sizeof(ulong)); /* set x to all zeros */ /* set every 100th element in x to 1 */ for (i = 0 ; i < m ; i += 100) { x->val[i >> IDXSHIFT] |= ONE << (i & IDXMASK); } return; } /* init_pones */ /*------------------------------------------------------------------------*/ int svcount(svector *x) { /* Returns the number of non-zero values in x. On error, returns zero. */ int i, j; /* counters */ int cnt; /* counter */ int nwrds; /* number of whole words used in x */ ulong val; /* temporary variable */ ulong mask; /* mask for final word */ static int *cntlookup = NULL; /* static look-up table */ if (x == NULL) return(0); /* error */ /* The array cntlookup is a lookup table of length 2^8 that, for each byte used as an index, returns the number of 1-bits in that byte. Allocate space for and compute the static look-up table cntlookup. Note that since this variable is static, we only compute the look-up table the first time this function is called. We use this table for speed. For a given byte x, cntlookup[x] = number of one bits in x. */ if (cntlookup == NULL) { if ((cntlookup = (int*) calloc(256, sizeof(int))) == NULL) { fprintf(stderr, "Error allocating space for look-up table.\n"); return(0); } for (i = 0; i < 256; i ++) { mask = i; cnt = 0; for (j = 0; j < 8; j ++) { if (mask & 1) cnt ++; mask >>= 1; } cntlookup[i] = cnt; } } nwrds = numwords(x->m); /* number of words in x */ /* compute mask for final partial word with (x->m & idxmask) 1-bits */ mask = (ONE << (x->m & IDXMASK)) - 1; if (mask) x->val[nwrds - 1] &= mask; /* Count the number of 1 bits in the whole words of val. For efficiency, we look at the val array one byte at a time (rather than one bit at a time) using the cntlookup array. The means we trade 8 right shifts, 8 AND's, and 8 adds for one right shift, one and, one add, and one array look-up. Generally, the cntlookup array should easily fit into cache memory. */ cnt = 0; for (i = 0 ; i < nwrds; i ++) { val = x->val[i]; for (j = 0 ; j < sizeof(ulong) ; j ++) { cnt += cntlookup[val & 0xff]; val >>= 8; } } return(cnt); } /* svcount */ /*------------------------------------------------------------------------ Functions for S-Matrices ------------------------------------------------------------------------*/ smatrix* create_smatrix(smatrix *A, int kmin, int kmax, int m) { /* Returns a ptr to an smatrix of maximum dimension m by kmax, and of current dimension m by kmin. If A is non-null, then the first min(A->m, m) s-values of the first kmin columns of A are preserved. On error, returns NULL. */ int k; /* counter */ if ((kmax <= 0) || (m <= 0) || (kmin < 0)) { /* error checking */ fprintf(stderr, "Error in requested size of smatrix.\n"); return (NULL); } if (kmin > kmax) { /* error checking */ fprintf(stderr, "Max k-dimension less than min dimension.\n"); return (NULL); } if (A == NULL) { /* starting from scratch */ if (kmin != 0) { /* error checking */ fprintf(stderr, "Invalid kmin dimension.\n"); return (NULL); } if ((A = (smatrix*) calloc(1, sizeof(smatrix))) == NULL) { fprintf(stderr, "Error allocating memory for smatrix.\n"); return (NULL); } A->k = 0; /* current columns in A */ A->kmax = kmax; /* max size columns in A */ A->m = m; /* number of rows in A */ /* allocate column pointers */ if ((A->col = (svector**) calloc(kmax, sizeof(svector*))) == NULL) { fprintf(stderr, "Error allocating space for smatrix columns.\n"); return (NULL); } } /* if - starting from scratch */ else { /* enlarging or shrinking A */ /* If nothing needs to be changed, just return A. */ if ((A->k == kmin) && (A->kmax == kmax) && (A->m == m)) return (A); /* If the current A has too many columns defined, delete some. */ if (kmin < A->k) { for (k = kmin; k < A->k; k ++) free_svector(A->col[k]); A->k = kmin; } /* If the current A does not have the right number of rows, re-create each column vector, adjusting to the new size. */ if (m != A->m) { for (k = 0; k < A->k; k ++) if ((A->col[k] = create_svector(A->col[k], m)) == NULL) { fprintf(stderr, "Error recreating svectors.\n"); return (NULL); } A->m = m; } /* If A does not have the right maximum number of columns, adjust that. */ if (kmax != A->kmax) { if ((A->col = (svector**) realloc(A->col, kmax * sizeof(svector*))) == NULL) { fprintf(stderr, "Error enlarging number of columns in A matrix,\n"); return (NULL); } A->kmax = kmax; } } /* else - enlarging / shrinking A */ return (A); } /* create_smatrix */ /*------------------------------------------------------------------------*/ void write_smatrix(smatrix *A, FILE *fptr, int bflag) { /* Writes the smatrix A to the file pointed to by fptr in text (flag=0) or binary (bflag=1) format. */ int k; /* counter */ /* Simply write each svector to the file in sequence. */ for (k = 0; k < A->k; k ++) write_svector(A->col[k], fptr, bflag); return; } /* write_smatrix */ /*------------------------------------------------------------------------*/ smatrix* read_smatrix(int m, int k, FILE *fptr, int bflag) { /* Read in an smatrix of size m by k from the file pointed to by fptr in text (bflag=0) or binary (bflag=1) format. Return a pointer to the new smatrix. On error, returns NULL. */ smatrix *A; /* smatrix to be read in */ /* Create the matrix */ if ((A = (smatrix*) calloc(1, sizeof(smatrix))) == NULL) { fprintf(stderr, "Error allocating memory for smatrix.\n"); return (NULL); } A->m = m; A->k = k; A->kmax = k; if ((A->col = (svector**) calloc(k, sizeof(svector*))) == NULL) { fprintf(stderr, "Error allocating memory for smatrix columns.\n"); return (NULL); } /* Read in the columns in sequence */ for (k = 0; k < A->k; k ++) if ((A->col[k] = read_svector(m, fptr, bflag)) == NULL) { fprintf(stderr, "Error reading smatrix from file.\n"); return (NULL); } return (A); } /* read_smatrix */ /*------------------------------------------------------------------------*/ void expand_smatrix(smatrix *A, svector *x) { /* Add x as the next column in A. On error, prints message. */ if (x->m != A->m) { fprintf(stderr, "Error: Size mismatch.\n"); return; } if (A->k == A->kmax) { fprintf(stderr, "Error: Smatrix is full.\n"); return; } A->col[A->k] = x; A->k ++; return; } /* expand_smatrix */ /*------------------------------------------------------------------------*/ void free_smatrix(smatrix *A) { /* Frees the memory used by A. */ int k; /* counter */ if (A == NULL) { fprintf(stderr, "Warning: Trying to free NULL smatrix.\n"); return; } if (A->col != NULL) { for (k = 0; k < A->k; k ++) free_svector(A->col[k]); free(A->col); } free(A); return; } /* free_smatrix */ /*------------------------------------------------------------------------ Functions for D-Matrices ------------------------------------------------------------------------*/ dmatrix* create_dmatrix(dmatrix *D, int kmin, int kmax) { /* Returns a ptr to a dmatrix of maximum size kmax. If D is non-null then the first kmin elements of D are preserved. On error, returns NULL. */ if ((kmin < 0) || (kmax <= 0) || (kmin > kmax)) { /* error checking */ fprintf(stderr, "Error in parameters for dmatrix.\n"); return (NULL); } if (D == NULL) { /* start from scratch */ if ((D = (dmatrix*) calloc(1, sizeof(dmatrix))) == NULL) { fprintf(stderr, "Error allocating space for dmatrix.\n"); return (NULL); } D->k = 0; D->kmax = kmax; if ((D->d = (sddfloat*) calloc(kmax, sizeof(sddfloat))) == NULL) { fprintf(stderr, "Error allocating space for dmatrix values,\n"); return (NULL); } } /* if - start from scratch */ else { /* enlarging or shrinking D */ /* Delete extra elements, if necessary. */ if (kmin > D->k) { fprintf(stderr, "Error: kmin too big for dmatrix.\n"); return (NULL); } D->k = kmin; /* Expand or shrink maximum number of elements, if necessary. */ if (D->kmax != kmax) { D->kmax = kmax; if ((D->d = (sddfloat*) realloc(D->d, kmax * sizeof(sddfloat))) == NULL) { fprintf(stderr, "Error in reallocating memory for dmatrix.\n"); return (NULL); } } } /* else - enlarge/shrink */ return (D); } /* create_dmatrix */ /*------------------------------------------------------------------------*/ void write_dmatrix(dmatrix *D, FILE *fptr, int bflag) { /* Writes D to the file pointed to by fptr in text (bflag=0) or binary (bflag=1) format. On error, prints message.*/ int k; /* counter */ if (bflag) { /* binary */ if ((fwrite(D->d, sizeof(sddfloat), D->k, fptr)) < D->k) { fprintf(stderr, "Error writing dmatrix to binary file.\n"); return; } } /* if - binary */ else { /* text */ for (k = 0; k < D->k; k ++) fprintf(fptr, "%30.25e\n", D->d[k]); } /* else - text */ return; } /* write_dmatrix */ /*------------------------------------------------------------------------*/ dmatrix* read_dmatrix(int k, FILE *fptr, int bflag) { /* Read a dmatrix of size k from the file pointed to by fptr in text format (bflag=0) or binary format (bflag=1). Return a ptr to the dmatrix. On error, returns NULL. */ int i; /* counter */ dmatrix *D; /* matrix to be read in */ if ((D = (dmatrix*) calloc(1, sizeof(dmatrix))) == NULL) { fprintf(stderr, "Error allocating space for dmatrix.\n"); return (NULL); } D->k = k; /* set current size */ D->kmax = k; /* set max size */ if ((D->d = (sddfloat*) calloc(k, sizeof(sddfloat))) == NULL) { fprintf(stderr, "Error allocating space for dmatrix entries.\n"); return (NULL); } if (bflag) { /* binary */ if ((fread(D->d, sizeof(sddfloat), k, fptr)) < k) { fprintf(stderr, "Error reading D from file.\n"); return (NULL); } } /* if - binary */ else { /* text */ for (i = 0; i < k; i ++) if ((fscanf(fptr, "%e", D->d + i)) < 1) { fprintf(stderr, "Error reading D from file.\n"); return (NULL); } } /* else - text */ return (D); } /* read_dmatrix */ /*------------------------------------------------------------------------*/ void expand_dmatrix(dmatrix *D, sddfloat d) { /* Add d to the next open spot in D. On error, prints message. */ if (D == NULL) { fprintf(stderr, "Cannot expand NULL Dmatrix.\n"); return; } if (D->k == D->kmax) { fprintf(stderr, "Error: Dmatrix is full.\n"); return; } D->d[D->k] = d; D->k ++; return; } /* expand_dmatrix */ /*------------------------------------------------------------------------*/ void free_dmatrix(dmatrix *D) { /* Free the memory used by D. Does nothing if D is null. */ if (D == NULL) { fprintf(stderr, "Warning: Trying to free NULL D-Matrix.\n"); return; } free(D->d); free(D); return; } /* free_dmatrix */ /*------------------------------------------------------------------------ Functions for SDD's ------------------------------------------------------------------------*/ sdd* create_sdd(sdd *A, int m, int n, int kmin, int kmax) { /* Returns a pointer to an SDD for an m by n matrix. The maximum allowable number of terms is kmax. If A is non-null, then the first kmin terms are preserved. On error, returns NULL. */ /* Error checking */ if ((m <= 0) || (n <= 0) || (kmin < 0) || (kmax <= 0) || (kmin > kmax)) { fprintf(stderr, "Error in size parameters for SDD.\n"); return (NULL); } if (A == NULL) { /* start from scratch */ if (kmin != 0) { fprintf(stderr, "Warning: Specified nonzero existing kmax for new SDD.\n"); kmin = 0; } /* Allocate space for A, and initialize pointers to NULL. */ if ((A = (sdd*) calloc(1, sizeof(sdd))) == NULL) { fprintf(stderr, "Error allocating space for SDD.\n"); return (NULL); } } /* if start from scratch */ else { /* appending A */ if (kmin > A->k) { fprintf(stderr, "Error in kmin parameter for SDD.\n"); return (NULL); } } /* appending A */ /* Fill in A */ A->m = m; A->n = n; A->k = kmin; A->kmax = kmax; if (((A->X = create_smatrix(A->X, kmin, kmax, m)) == NULL) || ((A->Y = create_smatrix(A->Y, kmin, kmax, n)) == NULL) || ((A->D = create_dmatrix(A->D, kmin, kmax)) == NULL)) { fprintf(stderr, "Error allocating memory for SDD components.\n"); return (NULL); } return (A); } /* create_sdd */ /*------------------------------------------------------------------------*/ void write_sdd(sdd *A, char *fname, int bflag, char *note) { /* Write A to the file named fname in text (bflag=0) or binary (bflag=1) format. The extra stuff (matrixf, edecompf, kmin, tol) is written in the comments for a text file. On error, print message. */ FILE *fptr; if (A == NULL) { fprintf(stderr, "Error trying to write NULL SDD to file,\n"); return; } /* Write Header Information */ if (bflag) { /* binary */ if ((fptr = fopen(fname, "wb")) == NULL) { fprintf(stderr, "Error opening output file.\n"); return; } fwrite(&A->k, sizeof(int), 1, fptr); fwrite(&A->m, sizeof(int), 1, fptr); fwrite(&A->n, sizeof(int), 1, fptr); } /* if - binary */ else { /* text */ if ((fptr = fopen(fname, "w")) == NULL) { fprintf(stderr, "Error opening output file.\n"); return; } fprintf(fptr, "%%%% Semidiscrete Decomposition (SDD)\n"); if (note != NULL) fprintf(fptr, "%%%% %s\n", note); fprintf(fptr, "%d %d %d\n", A->k, A->m, A->n); } /* else - text */ /* Write out components of SDD */ write_dmatrix(A->D, fptr, bflag); write_smatrix(A->X, fptr, bflag); write_smatrix(A->Y, fptr, bflag); fclose(fptr); return; } /* write_sdd */ /*------------------------------------------------------------------------*/ sdd* read_sdd(char *fname, int bflag) { /* Read an sdd from the file named fname in text (bflag=0) or binary (bflag=1) format. On error, return NULL. */ sdd *A; /* sdd to be read in */ char s[MAXLINE]; /* line of input file */ FILE *fptr; /* input file pointer */ if ((A = (sdd*) calloc(1, sizeof(sdd))) == NULL) { fprintf(stderr, "Error allocating memory for SDD.\n"); return (NULL); } /* Get header information */ if (bflag) { /* binary */ if ((fptr = fopen(fname, "rb")) == NULL) { fprintf(stderr, "Error in opening input file.\n"); free(A); return (NULL); } if (((fread(&A->k, sizeof(int), 1, fptr)) < 1) || ((fread(&A->m, sizeof(int), 1, fptr)) < 1) || ((fread(&A->n, sizeof(int), 1, fptr)) < 1)) { fprintf(stderr, "Error reading input file.\n"); return (NULL); } } /* if - binary */ else { /* text */ if ((fptr = fopen(fname, "r")) == NULL) { fprintf(stderr, "Error in opening input file.\n"); return (NULL); } /* Scan through comment lines */ do if (fgets(s, MAXLINE, fptr) == NULL) { fprintf(stderr, "Error reading header of text SDD input file\n"); return (NULL); } while(s[0] == '%'); if ((sscanf(s, "%d %d %d", &A->k, &A->m, &A->n)) < 3) { fprintf(stderr, "Error reading dimensions from SDD file.\n"); return (NULL); } } /* else - text */ /* Fill in remainder of SDD */ A->kmax = A->k; if (((A->D = read_dmatrix(A->k, fptr, bflag)) == NULL) || ((A->X = read_smatrix(A->m, A->k, fptr, bflag)) == NULL) || ((A->Y = read_smatrix(A->n, A->k, fptr, bflag)) == NULL)) { fprintf(stderr, "Error reading SDD.\n"); return (NULL); } fclose(fptr); return (A); } /* read_sdd */ /*------------------------------------------------------------------------*/ void expand_sdd(sdd *A, sddfloat d, svector *x, svector *y) { /* Adds d and the svectors x and y to the next spot in A, and updates the number of terms in A. On error, prints warning. */ if (A->k == A->kmax) { fprintf(stderr, "Error: SDD is full.\n"); return; } expand_dmatrix(A->D, d); expand_smatrix(A->X, x); expand_smatrix(A->Y, y); A->k ++; return; } /* expand_sdd */ void free_sdd(sdd *A){ /* Frees the memory used by A. Does nothing if A is NULL. */ if (A == NULL) { fprintf(stderr, "Warning: Trying to free NULL matrix.\n"); return; } free_smatrix(A->X); free_smatrix(A->Y); free_dmatrix(A->D); free(A); return; } /* free_sdd */ /*------------------------------------------------------------------------ Subroutines which use a variety of data types. ------------------------------------------------------------------------*/ void sddxsv(sdddouble *s, sdd *A, svector *y, int tflag) { /* SDD times Svector. Computes s = s - A y where s is a A->m long real vector (of type sdddouble), A is an SDD, and y is an A->n long svector. A is transposed if tflag=1, and then we assume s is A->n long and y is A->m long. The vector s is modified. All the other vectors are unchanged. On error, prints message. */ int i, j, k; /* counters */ int kmax; /* number of terms in SDD A */ int nwrds; /* number of words in y */ int cnt; /* counter */ sdddouble tmp; /* tmp value */ smatrix *X, *Y; /* local pointers */ sddfloat *D; /* local pointer */ ulong val, sgn; /* used in inner product calculation */ ulong mask; /* used for last partial word */ ulong *xvalptr, *xsgnptr; /* pointers to walk through arrays */ ulong *yvalptr, *ysgnptr; /* pointers to walk through arrays */ sdddouble *tmpvec = NULL; /* temporary workspace holds A y */ static int *cntlookup = NULL; /* static look-up table */ if (A->k == 0) return; /* A is empty, do nothing */ /* Allocate space for tmpvec. */ if ((tmpvec = (sdddouble*) calloc(A->kmax, sizeof(sdddouble))) == NULL) { fprintf(stderr, "Error allocating work space for sdd times vec.\n"); return; } /* Allocate space for and compute the static look-up table cntlookup. Note that since this variable is static, we only compute the look-up table the first time this function is called. We use this table for speed. For a given byte x, cntlookup[x] = number of one bits in x. */ if (cntlookup == NULL) { if ((cntlookup = (int*) calloc(256, sizeof(int))) == NULL) { fprintf(stderr, "Error allocating space for look-up table.\n"); return; } for (i = 0; i < 256; i ++) { mask = i; cnt = 0; for (j = 0; j < 8; j ++) { if (mask & 1) cnt ++; mask >>= 1; } cntlookup[i] = cnt; } } /* Assign X, Y, and D to local variables. Note that transposing the SDD A only has the effect of swapping the X and Y matrices, so that is the only thing we need to do if tflag=1. */ kmax = A->k; if (tflag) { /* Transpose => Swap X and Y */ X = A->Y; Y = A->X; } else { X = A->X; Y = A->Y; } D = (A->D)->d; /* COMPUTE tmpvec = Y'y */ if (y->m != Y->m) { /* error checking */ fprintf(stderr, "Size mismatch.\n"); return; } yvalptr = y->val; ysgnptr = y->sgn; nwrds = numwords(y->m); mask = (ONE << (Y->m & IDXMASK)) - 1; if (mask) ysgnptr[nwrds - 1] &= mask; /* Loop through each column of Y, computing its inner product with y which will be added to s[k]. */ for (k = 0; k < kmax; k ++) { /* Set xvalptr and xsgnptr to the beginnings of the (k+1)st column of Y's val and sgn arrays. */ xvalptr = (Y->col[k])->val; xsgnptr = (Y->col[k])->sgn; /* Mask final partial word, if it exists */ if (mask) { xvalptr[nwrds-1] &= mask; xsgnptr[nwrds-1] &= mask; } cnt = 0; /* This will be the value of the innner product when we are done. */ /* Do whole words first. */ for (i = 0; i < nwrds; i ++) { /* Rather than going through comparing y and the (k+1)st column of Y s-value by s-value, we will handle BITS_PER_WORD s-values at once. Assuming there are 32 bits_per_word, we are trading a _MINIMUM_ of 32 shifts, 32 AND's, and 32 compares for 2 AND's, 1 XOR, 8 adds, 8 array look-ups, 4 multiplies, and 8 right shifts. Generally, the cntlookup array should easily fit into cache memory. Here is a brief mathematical explanation of what we are doing: suppose we have two s-values a and b. If we AND the val bits, we get 1 if a*b = +1 or -1, and 0 if a*b = 0; call this bit c. If a*b = -1, the XOR of the sgn bits is 1, and if a*b = 1, the XOR of the sgn bits is 0. If a*b = 0, the XOR of the sgn bits could be anything. In order to make sure it is zero if a*b = 0, we AND c with the result of the XOR of the sgn bits; Call this d. Finally, a * b = c - 2 * d. We are doing the same thing below, but rather than dealing with one pair of s-values at a time, we are dealing with 32! */ val = xvalptr[i] & yvalptr[i]; sgn = xsgnptr[i] ^ ysgnptr[i]; sgn &= val; for (j = 0; j < sizeof(ulong); j ++) { cnt += cntlookup[val & 0xff]; cnt -= 2 * cntlookup[sgn & 0xff]; val >>= 8; sgn >>= 8; } } tmpvec[k] = cnt; } /* k-loop */ /*------------------------------ Compute tmpvec = D * tmpvec ------------------------------*/ for (k = 0; k < kmax; k ++) tmpvec[k] *= D[k]; /*------------------------------ Compute s -= X * tmpvec ------------------------------*/ /* Cycle through the columns of X. */ for (k = 0; k < kmax; k ++) { tmp = tmpvec[k]; /* Copy tmpvec[k] to a local variable */ xvalptr = (X->col[k])->val; /* Set xvalptr to the beginning to val */ xsgnptr = (X->col[k])->sgn; /* Set xsgnptr to the beginning to sgn */ val = *xvalptr; /* Dereference the xvalptr */ sgn = *xsgnptr; /* Dereference the xsgnptr */ mask = ONE; /* Initialize the mask */ /* This loop will go through each s-value in X->m. */ for (i = 0; i < X->m; i ++) { /* Mask picks off the current s-value. */ if (val & mask) { /* i-th s-value is nonzero */ if (sgn & mask) /* X[i,k] = -1 */ s[i] += tmp; else /* X[i,k] = 1 */ s[i] -= tmp; } /* Update mask and, if necessary, val and sgn. */ if (mask == MAXMASK) { mask = ONE; /* Reinitialize the mask. */ val = *(++xvalptr); /* Increment the pointer and dereference. */ sgn = *(++xsgnptr); /* Increment the pointer and dereference. */ } else mask <<= 1; /* Update the mask. */ } /* i-loop */ } /* k-loop */ free(tmpvec); return; } /* smxsv */ /*------------------------------------------------------------------------*/ void smxv(smatrix *X, int kmax, sdddouble *y, int tflag, sdddouble *r) { /* Smatrix times vector. Computes r = X * y using only the first kmax columns of X where X is an smatrix, y is an kmax-long real vector (of type sdddouble), and r is an X->m long real vector (of type double-type). If tflag is TRUE, then the transpose of X is used, y should be of length X->m and s should be of length kmax. On error, prints message. */ int j, k, m; /* counters */ ulong *valptr, *sgnptr; /* tmp pointers */ ulong mask; /* mask out certain bits */ ulong val, sgn; /* tmp values */ sdddouble tmp; /* tmp value */ m = X->m; /* copy to a local variable */ if (tflag) { /* tranpose */ /* Cycle through each column of X. */ for (k = 0; k < kmax; k ++) { tmp = 0; /* This will be r[k]. */ valptr = (X->col[k])->val; /* Set to beginning of the val array * for the (k+1)st column of X. */ sgnptr = (X->col[k])->sgn; /* Set to the beginning of the sgn * array for the (k+1)st column of X. */ val = *valptr; /* Dereference into local variable. */ sgn = *sgnptr; /* Dereference into local variable. */ mask = ONE; /* Initialize the mask. */ /* Cycle through each value in y. */ for (j = 0; j < m; j ++) { /* Compute y(j) * X(j,k) and update tmp. Mask picks off the correct s-value. */ if (val & mask) { /* X(j,k) is nonzero */ if (sgn & mask) /* X(j,k) is -1 */ tmp -= y[j]; else /* X(j,k) is 1 */ tmp += y[j]; } /* Update the mask and, if necessary, val and sgn. */ if (mask == MAXMASK) { mask = ONE; /* Reinitialize the mask. */ val = *(++valptr); /* Increment the pointer and dereference. */ sgn = *(++sgnptr); /* Increment the pointer and dereference. */ } else mask <<= 1; /* Update the mask. */ } /* j-loop */ r[k] = tmp; /* Copy tmp to r[k]. */ } /* k-loop */ } /* if - transpose */ else { /* transpose */ bzero(r, m * sizeof(sdddouble)); /* Set all elements of r to zero. */ /* Cycle through each value in y. */ for (k = 0; k < kmax; k ++) { tmp = y[k]; /* Copy to a local variable. */ valptr = (X->col[k])->val; /* Set to beginning of the val array for the (k+1)st column of X. */ sgnptr = (X->col[k])->sgn; /* Set to the beginning of the sgn array for the (k+1)st column of X. */ val = *valptr; /* Dereference into local variable. */ sgn = *sgnptr; /* Dereference into local variable. */ mask = ONE; /* Initialize the mask. */ for (j = 0; j < m; j ++) { if (val & mask) { /* X(j,k) is nonzero */ if (sgn & mask) /* X(j,k) is -1 */ r[j] -= tmp; else /* X(j,k) is 1 */ r[j] += tmp; } /* Update the mask and, if necessary, val and sgn. */ if (mask == MAXMASK) { mask = ONE; /* Reinitialize the mask. */ val = *(++valptr); /* Increment the pointer and dereference. */ sgn = *(++sgnptr); /* Increment the pointer and dereference. */ } else mask <<=1; /* Update the mask. */ } /* j-loop */ } /* k-loop */ } /* else - no transpose*/ return; } /* smxv */ /*------------------------------------------------------------------------*/ void free_matrix(matrix *A) { /* Free memory used by A. Does nothing if A is NULL. */ if (A == NULL) { fprintf(stderr, "Warning: Trying to free NULL matrix.\n"); return; } free(A->jc); free(A->ir); free(A->val); free(A); return; } /* free_matrix */ void write_matrix(matrix *A, char *fname, int bflag) { /* Writes A to file named fname in text (bflag=0) or binary (bflag=1) format. Text output is compatible with MatrixMarket format. Does nothing if A is null. On error, prints message. */ int i, j; /* counters */ FILE *out; /* pointer to output file */ if (A == NULL) return; if (bflag) { /* binary */ if ((out = fopen(fname, "wb")) == NULL) { fprintf(stderr, "Error opening binary sparse matrix output file.\n"); return; } fwrite(&A->m, sizeof(int), 1, out); fwrite(&A->n, sizeof(int), 1, out); fwrite(&A->nnz, sizeof(int), 1, out); fwrite(A->jc, sizeof(int), A->n + 1, out); fwrite(A->ir, sizeof(int), A->nnz, out); fwrite(A->val, sizeof(float), A->nnz, out); fclose(out); } /* binary */ else { /* text */ if ((out = fopen(fname, "w")) == NULL) { fprintf(stderr, "Error opening text sparse matrix output file.\n"); return; } fprintf(out, "%%%%MatrixMarket matrix coordinate real general\n"); fprintf(out, "%% File generated by SDDPACK.\n"); fprintf(out, "%d ", A->m); fprintf(out, "%d ", A->n); fprintf(out, "%d\n", A->nnz); for (j = 0; j < A->n; j++) for (i = A->jc[j]; i < A->jc[j+1]; i ++) fprintf(out, "%4d %4d %15.6e\n", A->ir[i] + 1, j + 1, A->val[i]); fclose(out); } /* text */ return; } /* write_matrix */ /*------------------------------------------------------------------------*/ matrix *read_matrix(char *fname, int bflag) { /* Reads a sparse matrix in text (bflag=0) or binary (bflag=1) format from file named fname. (The text matrix should be in general real coordinate MatrixMarket format. If you prefer to use binary format, the convertmtx utility will convert a general real coordinate MatrixMarket file to binary format.) Creates and allocates memory for a new matrix structure to contain the sparse matrix. Returns a pointer to the matrix. On error, returns NULL. */ int i, j, curj, cnt; /* counters */ float val; /* matrix entry */ char s[MAXLINE]; /* line of input file */ FILE *in; /* pointer to input file */ entry *a; /* entries of the sparse matrix */ matrix *A; /* pointer to sparse matrix */ if (bflag) { /* binary */ if ((in = fopen(fname, "rb")) == NULL) { fprintf(stderr, "Error opening binary sparse matrix input file.\n"); return (NULL); } if ((A = (matrix *) malloc(sizeof(matrix))) == NULL) { fprintf(stderr, "Memory allocation error.\n"); return (NULL); } if (((fread(&A->m, sizeof(int), 1, in)) < 1) || ((fread(&A->n, sizeof(int), 1, in)) < 1) || ((fread(&A->nnz, sizeof(int), 1, in)) < 1)) { fprintf(stderr, "Error reading sparse matrix input file.\n"); return (NULL); } if (((A->jc = (int *) calloc(A->n + 1, sizeof(int))) == NULL) || ((A->ir = (int *) calloc(A->nnz, sizeof(int))) == NULL) || ((A->val = (float *) calloc(A->nnz, sizeof(float))) == NULL)) { fprintf(stderr, "Memory allocation error.\n"); return (NULL); } if (((fread(A->jc, sizeof(int), A->n + 1, in)) < A->n + 1) || ((fread(A->ir, sizeof(int), A->nnz, in)) < A->nnz) || ((fread(A->val, sizeof(float), A->nnz, in)) < A->nnz)) { fprintf(stderr, "Error reading sparse matrix input file.\n"); return (NULL); } fclose(in); return (A); } /* if - binary */ else { /* text */ if ((in = fopen(fname, "r")) == NULL) { fprintf(stderr, "Error opening text sparse matrix input file.\n"); return (NULL); } /* Scan past comment lines. */ do if (fgets(s, MAXLINE, in) == NULL) { fprintf(stderr, "Error reading header of sparse matrix input file\n"); return (NULL); } while(s[0] == '%'); if ((A = (matrix*) malloc(sizeof(matrix))) == NULL) { fprintf(stderr, "Memory allocation error.\n"); return (NULL); } if (sscanf(s, "%d %d %d", &A->m, &A->n, &A->nnz) != 3) { fprintf(stderr, "Error reading sparse matrix input file.\n"); return (NULL); } if ((a = (entry*) calloc(A->nnz, sizeof(entry))) == NULL) { fprintf(stderr, "Memory allocation error.\n"); return (NULL); } cnt = 0; while ((fscanf(in, "%d %d %f", &i, &j, &val)) == 3) { if ((i <= 0) || (i > A->m)) { fprintf(stderr, "Invalid row index i=%d, not in range 1 to %d\n", i, A->m); exit(1); } if ((j <= 0) || (j > A->n)) { fprintf(stderr, "Invalid row index j=%d, not in range 1 to %d\n", j, A->n); exit(1); } a[cnt].i = i - 1; a[cnt].j = j - 1; a[cnt ++].val = val; } fclose(in); if (cnt < A->nnz) { fprintf(stderr, "WARNING: Reported number of nonzeros (%d) ", A->nnz); fprintf(stderr, "is less than number read in (%d). Adjusting. \n", cnt); A->nnz = cnt; } qsort(a, cnt, sizeof(entry), (int(*)(const void*, const void*))comparentry); if (((A->jc = (int *) calloc(A->n + 1, sizeof(int))) == NULL) || ((A->ir = (int *) calloc(A->nnz, sizeof(int))) == NULL) || ((A->val = (float *) calloc(A->nnz, sizeof(float))) == NULL)) { fprintf(stderr, "Memory allocating error.\n"); return (NULL); } cnt = 0; curj = 0; A->jc[0] = 0; for (i = 0; i < A->nnz; i ++) { while (curj < a[i].j) A->jc[++ curj] = cnt; A->ir[cnt] = a[i].i; A->val[cnt ++] = a[i].val; } while (curj < A->n) A->jc[++ curj] = cnt; free(a); return (A); } /* else - text */ } /* read_matrix */ /*------------------------------------------------------------------------*/ void matrixxv(float *y, matrix *A, float *x, int tflag) { /* Computes y = A * x (tflag = 0) or y = A' * x (tflag = 1). Vectors x and y are assumed to be the appropriate sizes. The vector y is initialized to zero. On error, prints message. */ int i, j; /* counters */ if ((y == NULL) || (A == NULL) || (x == NULL)) { fprintf(stderr, "Null input argument for matrix-vector multiply.\n"); return; } if (tflag) { /* tranpose */ for (j = 0; j < A->n; j ++) y[j] = 0; for (j = 0; j < A->n; j ++) for (i = A->jc[j]; i < A->jc[j+1]; i ++) y[j] += A->val[i] * x[A->ir[i]]; } else { /* no transpose */ for (i = 0; i < A->m; i ++) y[i] = 0; for (j = 0; j < A->n; j ++) for (i = A->jc[j]; i < A->jc[j+1]; i ++) y[A->ir[i]] += A->val[i] * x[j]; } return; } /* matrixxv */ /*------------------------------------------------------------------------*/ double fnormsq(matrix *A) { /* Returns the sum of all the squares of the elements of sparse matrix A. On error, returns zero. */ int i; /* counter */ double f = 0; /* sum */ if (A == NULL) return (f); for (i = 0; i < A->nnz; i ++) f += A->val[i] * A->val[i]; return (f); } /* fnormsq */ /*------------------------------------------------------------------------*/ void matrixxsv(sdddouble *s, matrix *A, svector *y, int tflag) { /* Sparse matrix times svector. Computes s = A * y where A is transposed if tflag is TRUE. On error, prints message. */ int i, j; /* couters */ int m, n; /* size of A */ int *ir, *jc; /* tmp pointers */ sddfloat *val; /* tmp pointer */ int row; /* row number */ int idx; /* word index of y to get svalue */ ulong mask; /* mask to extract svalue */ ulong *valptr, *sgnptr; /* tmp pointers */ m = A->m; n = A->n; ir = A->ir; jc = A->jc; val = A->val; valptr = y->val; sgnptr = y->sgn; if (tflag) { /* tranpose A */ bzero(s, n * sizeof(sdddouble)); /* set s to zero */ for (j = 0; j < n; j ++) for (i = jc[j]; i < jc[j+1]; i ++) { row = ir[i]; idx = row >> IDXSHIFT; /* element of y to look in */ mask = ONE << (row & IDXMASK); /* bit in y[idx] to pick off */ if (valptr[idx] & mask) { /* nonzero */ if (sgnptr[idx] & mask) /* y[row] = -1 */ s[j] -= val[i]; else /* y[row] = 1 */ s[j] += val[i]; } } /* i-loop */ } /* if - transpose */ else { /* no transpose */ bzero(s, m * sizeof(sdddouble)); /* set s to zero */ idx = 0; mask = 1; for (j = 0; j < n ; j ++) { if (valptr[idx] & mask) { /* nonzero */ if (sgnptr[idx] & mask) /* y[j] = -1 */ for (i = jc[j]; i < jc[j+1]; i ++) { s[ir[i]] -= val[i]; } else /* y[j] = 1 */ for (i = jc[j]; i < jc[j+1]; i ++) { s[ir[i]] += val[i]; } } if (mask == MAXMASK) { mask = 1; idx ++; } else mask <<= 1; } /* j-loop */ } /* else - no transpose*/ } /* matrixxsv */ /*------------------------------------------------------------------------*/ sdddouble_plus subproblem(matrix *A, sdd *B, svector *y, svector *x, int tflag, sdddouble *s) { /* Solve the SDD subproblem. Returns the maximum value of max (x' * s) / |x|_2^2 in 'val' and the number of nonzeros in x in 'idx'. Here x is constrained to be an (A->m)-long svector and s equals (A - B)y. A is a sparse matrix, B is an SDD of the same size, and y is an (A->n)-long svector. If tflag is TRUE, we use the transpose of A and B, x should be (A->n)-long, and y should be (A->m)-long. Only x is modified. On error, returns f with 0,0. */ sdddouble_plus f; /* final answer */ int i, j, m; /* counters */ ulong *valptr, *sgnptr; /* tmp pointer */ ulong mask; /* tmp mask */ ulong onesmask; /* word of all ones */ sdddouble_plus *sorts = NULL; /* workspace */ int sflag; /* compute s? */ f.val = 0; f.idx = 0; /* init f for error returns */ if ((A == NULL) || (y == NULL) || (x == NULL)) { fprintf(stderr, "Error in subproblem input arguments.\n"); return (f); } bone(&onesmask, sizeof(ulong)); /* word of all ones */ /* allocate memory for the s and sorts */ m = (A->m > A->n) ? A->m : A->n; if (s == NULL) { /* s is not given */ sflag = 1; if ((s = (sdddouble*) calloc(m, sizeof(sdddouble))) == NULL) { fprintf(stderr, "Error allocating work space.\n"); return (f); } } else sflag = 0; /* don't compute s */ if ((sorts = (sdddouble_plus*) calloc(m, sizeof(sdddouble_plus))) == NULL) { fprintf(stderr, "Error allocating work space.\n"); return (f); } m = x->m; /* copy to a local variable */ if (sflag) { matrixxsv(s, A, y, tflag); /* s = A * y */ sddxsv(s, B, y, tflag); /* s = s - B * y */ } /* Initialize of s-values in x to 1 */ bone(x->val, numwords(m) * sizeof(ulong)); /* set every bit to 1 */ bzero(x->sgn, numwords(m) * sizeof(ulong)); /* set every bit to 0 */ /* Fill in the sorts array with abs(s), and change the i-th s-value in x to -1 if s[i] is negative. */ valptr = x->val; /* copy to local pointer */ sgnptr = x->sgn; /* copy to a local pointer */ mask = ONE; /* initialize */ for (i = 0; i < m; i ++) { sorts[i].idx = i; /* copy the index into array to be sorted */ /* If s[i] is negative, set the i-th bit of x->sgn to 1 w/o affecting any other bits. Also, fill in sorts[i].val with abs(s[i]). */ if (s[i] < 0) { /* make x[i] = -1 */ sorts[i].val = -s[i]; /* copy -s[i] into array to be sorted */ *sgnptr |= mask; /* swaps the correct bit of x->sgn to 1 */ } else sorts[i].val = s[i]; /* copy s[i] into array to be sorted */ /* Update the mask and, if necessary, the pointer. */ if (mask == MAXMASK) { mask = ONE; sgnptr ++; } else mask <<= 1; } /* sort sorts */ #ifdef QSORTOPT qsortopt((char *) sorts, m); #else qsort(sorts, m, sizeof(sdddouble_plus), (int(*)(const void*, const void*)) compar); #endif /* compute partial sums */ s[0] = sorts[0].val; for (i = 1; i < m; i ++) s[i] = s[i-1] + sorts[i].val; /* compute function values */ for (i = 0; i < m; i ++) s[i] = (s[i] * s[i]) / (i + 1); /* find the maximum of the array s */ f.val = s[0]; f.idx = 0; for (i = 1; i < m; i ++) if (s[i] > f.val) { f.val = s[i]; f.idx = i; } /* increment f.idx so that it is the number of nonzeros in x */ f.idx ++; /* zero out certain elements of x with indices > f.idx in the sorted array */ for (i = f.idx; i < m; i ++) { /* (j+1)st s-value in x should be zero */ j = sorts[i].idx; /* causes bit j in x->val to be zero w/o affecting other bits */ valptr[j >> IDXSHIFT] &= ((ONE << (j & IDXMASK)) ^ onesmask); } free(s); free(sorts); return (f); } /* subproblem */ /*------------------------------------------------------------------------*/ sdd* compute_sdd (matrix *A, sdd *B, int kmin, int kmax, float rhomin, int lmax, float alphamin, int initflag) { /* Computes the SDD of A. If the sdd B is non-null, preserves the first kmin triplets, and then continues to expand. The SDD of A will be such that either the norm of the residual is less than rhomin or the number of terms is kmax. The inner iterations are controlled by alphamin (the improvement tolerance) and lmax (the maximum number of inner iterations). The initflag controls the method used to initialize y; the choices are ... (TGK - fill this in). */ int k; /* current number of terms in of SDD */ int m, n; /* size of matrix */ sddfloat d; /* current d-value */ svector *x, *y; /* current x & y svectors */ sdddouble_plus xmax, ymax; /* solutions to subproblems */ int l, totall; /* iteration count and total */ sddfloat rho0 = 0; /* square of initial residual norm */ sddfloat rho = 0; /* square of residual norm */ sddfloat alpha; /* improvement in change in residual */ sddfloat beta, betabar; /* change in residual, and previous */ sdddouble *s = NULL; /* product A*y produced by initialization */ int initidx = 0; /* index used in initialization */ if (A == NULL) { fprintf(stderr, "Error trying to compute SDD of NULL matrix.\n"); return (NULL); } if (kmin == kmax) { fprintf(stderr, "No expansion is necessary.\n"); return (NULL); } /* initialization of lengths */ m = A->m; n = A->n; /* (Re)initialization of sdd decomposition (stored in B). */ if ((B = create_sdd(B, m, n, kmin, kmax)) == NULL) { fprintf(stderr, "Error initializing SDD.\n"); return (NULL); } #if INFO > 1 fprintf(stdout, "\n"); #endif /* Compute initial residual if kmin is zero. */ rho = rho0 = fnormsq(A); /* Compute actual rho if expanding existing decomp. */ if (kmin != 0) { fprintf(stdout, "rho0 = %e\n", rho); for (k = 0; k < kmin; k ++) { rho -= (B->D->d[k] * B->D->d[k]) * svcount(B->X->col[k]) * svcount(B->Y->col[k]); fprintf(stdout, "rho[%d] = %e\n", k+1, rho); } } totall = 0; #if INFO > 1 fprintf(stdout, "Iteration Residual Improvement Inner Total\n"); fprintf(stdout, " Number Squared (beta) Its InnerIts\n"); fprintf(stdout, "--------- -------- ----------- ----- --------\n"); #endif /* Outer iterations */ for (k = kmin; k < kmax; k ++) { #if INFO > 1 fprintf(stdout, " %3d ", k+1); #endif if (((x = create_svector(NULL, m)) == NULL) || ((y = create_svector(NULL, n)) == NULL)) { fprintf(stderr, "Error creating svectors.\n"); return (NULL); } switch(initflag) { case 1: /* Threshold */ s = init_threshold(y, A, B, rho, &initidx); #if INFO > 1 fprintf(stdout, " %3d ", initidx); #endif break; case 2: /* Cycling */ init_cycle(y, k); break; case 3: /* All Ones */ init_ones(y); break; case 4: /* Periodic Ones */ init_pones(y); break; default: fprintf(stderr, "Error in initflag.\n"); return (NULL); } beta = betabar = 0; for (l = 0; l < lmax; l ++) { /* inner iteration */ xmax = subproblem(A, B, y, x, 0, s); s = NULL; ymax = subproblem(A, B, x, y, 1, NULL); beta = ymax.val / xmax.idx; if (l > 0) { alpha = (beta - betabar) / betabar; if (alpha < alphamin) { l ++; break; } } betabar = beta; } /* l-loop */ d = (sqrt(ymax.val * ymax.idx)) / (xmax.idx * ymax.idx); expand_sdd(B, d, x, y); totall += l; rho = rho - beta; #if INFO > 1 fprintf(stdout, "%7.2e %10.5e %2d %4d\n", rho, beta, l, totall); #endif if (rho <= rhomin) { if (rho < 0) rho = 0; k ++; break; } } /* end k-loop */ #if INFO > 0 /* Output information about the decomposition. */ fprintf(stdout, "\n"); fprintf(stdout, " -- SDD information --\n"); fprintf(stdout, "final residual norm : "); fprintf(stdout, "%10.4e\n", sqrt(rho)); fprintf(stdout, "final relative residual norm: "); fprintf(stdout, "%5.3f\n", sqrt(rho / rho0)); fprintf(stdout, "total outer iterations : "); fprintf(stdout, "%d\n", (k - kmin)); fprintf(stdout, "average inner iterations : "); fprintf(stdout, "%5.3f\n", ((float) totall) / (k - kmin)); if (initflag == 1) { fprintf(stdout, "average init iterations : "); fprintf(stdout, "%5.3f\n", ((float) initidx) / (k - kmin)); } fprintf(stdout, "\n"); #endif return (B); } /* compute_sdd */ SHAR_EOF fi # end of overwriting check if test -f 'sdd.h' then echo shar: will not over-write existing file "'sdd.h'" else cat << "SHAR_EOF" > 'sdd.h' /*---------------------------------------------------------------------- SDDPACK: Software for the Semidiscrete Decomposition. Copyright (c) 1999 Tamara G. Kolda and Dianne P. O'Leary. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. MODULE: sdd.o DESCRIPTION: Header file for sdd.c, routines for creating and updating the SDD decomposition and sparse matrices. MODULE DEPENDENCIES: sdd.c sdd.h BUG REPORTS: Email Tamara.Kolda@na-net.ornl.gov. ----------------------------------------------------------------------*/ #ifndef _SDD_H #define _SDD_H /*---------------------------------------------------------------------- Includes ----------------------------------------------------------------------*/ #include #include #include #include /*---------------------------------------------------------------------- Definitions ----------------------------------------------------------------------*/ #define MAXLINE 1000 /* Max length of comment line in data file. */ /* WARNING: The IDXSHIFT definition only works on 32 or 64 bit architectures. If you have a different architecture (e.g., 128 bit), you should replace the next line with the appropriate value (e.g., #define IDXSHIFT 7). */ #ifndef IDXSHIFT #define IDXSHIFT ((sizeof(ulong) == 4) ? 5 : 6) /* log2(bits_per_word) */ #endif #define IDXMASK ((sizeof(ulong) * 8) - 1) /* bits_per_word - 1 */ #define ONE ((ulong)(1)) /* one */ #define MAXMASK (ONE << IDXMASK) /* one in leftmost position */ /*---------------------------------------------------------------------- Type Definitions ----------------------------------------------------------------------*/ /* Stores a sparse m x n matrix in compressed sparse column format. jc is an (n+1)-long array. jc[j] gives the starting index in val and ir for the j-th column, and jc[j+1] gives the ending index + 1. */ typedef struct matrix_struct { int m; /* number of rows */ int n; /* number of columns */ int nnz; /* number of nonzero entries */ int *jc; /* array of length (n+1), col starts */ int *ir; /* array of length nnz, row indices */ float *val; /* array of length nnz, values */ } matrix; /* Used for packed bit vectors */ typedef unsigned long ulong; /* The type sddfloat is used as the final precision that the diagonal values of the matrix D are stored in. The type sdddouble is used for all calculations. Experience has shown us that float is sufficient for our calculations and requires less computation time. */ typedef float sddfloat; /* used for low-precision reals */ typedef float sdddouble; /* used for high-precision reals */ /* The following structure is used for sorting. The function qsortopt in sdd.c is specially modified for this datatype and is used if QSORTOPT is defined. */ typedef struct sdddouble_plus_struct { sdddouble val; int idx; } sdddouble_plus; /* An s-vector is used to store an m-long array of s-values. Each s-value is represented by a val bit and a sgn bit. 0: val = 0, sgn = undefined 1: val = 1, sgn = 0 -1: val = 1, val = 1 These bits are packed into ulong's to form the val and sgn arrays. */ typedef struct svector_struct { int m; /* number of entries stored */ ulong *val; /* zero (0) or non-zero (1) */ ulong *sgn; /* plus (0) or minus (1) */ } svector; /* An s-matrix is used to store up to an m by kmax matrix of s-values. The dimension of the stored matrix is m by k. The col array stores kmax pointers to s-vectors which are the columns of the matrix. Specifically, col[i] is a pointer to the (i+1)st column of the matrix (0 <= i < k). */ typedef struct smatrix_struct { int k, kmax; int m; svector **col; } smatrix; /* A dmatrix is used to store the diagonal entries of up to a kmax by kmax diagonal matrix. The dimension of the stored matrix is given by k. d is an array of length kmax such that d[i] is the (i+1)st diagonal value (0 <= i < k). */ typedef struct dmatrix_struct { int k, kmax; sddfloat *d; } dmatrix; /* An sdd stores a semi-discrete decomposition (SDD) to an m by n matrix up to kmax terms. The current number of terms is given by k. X and Y are pointers to the left and right smatrices respectively, and D is a pointer to the diagonal matrix. */ typedef struct sdd_struct { int m, n, k, kmax; smatrix *X, *Y; dmatrix *D; } sdd; /*---------------------------------------------------------------------- Function Declarations ----------------------------------------------------------------------*/ void free_sdd(sdd*); sdd* read_sdd(char*, int); void write_sdd(sdd*, char*, int, char*); void free_matrix(matrix*); matrix* read_matrix(char*, int); void write_matrix(matrix*, char*, int); sdd* compute_sdd (matrix*, sdd*, int, int, float, int, float, int); sdd* update_sdd(matrix*, sdd*, int, int); #endif SHAR_EOF fi # end of overwriting check cd .. cd .. cd .. if test ! -d 'Doc' then mkdir 'Doc' fi cd 'Doc' if test -f 'Makefile' then echo shar: will not over-write existing file "'Makefile'" else cat << "SHAR_EOF" > 'Makefile' #---------------------------------------------------------------------- # # SDDPACK: Software for the Semidiscrete Decomposition. # Copyright (c) 1999 Tamara G. Kolda and Dianne P. O'Leary. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # # MODULE: Makefile # # DESCRIPTION: Makefile for SDDPACK. # # USAGE: make # # NOTE: Some BASIC DEFINITIONS will need to be changed for different # systems. # # BUG REPORTS: Email Tamara.Kolda@na-net.ornl.gov. # #---------------------------------------------------------------------- #---------------------------------------------------------------------- # # BASIC DEFINITIONS # # Adjust these flags for your system. Several examples are listed. # # Note: The -DQSORTOPT flags specifies whether or not to use the # optimized qsort that is provided with this distribution. We suggest # that you try testscript with and without this flag and see which is # faster and whether or not the answers differ. The answers should # not differ; do not use -DQSORTOPT if they do. # #---------------------------------------------------------------------- ### Location of RM program RM = /bin/rm ### Intel PC (Linux) or Sparc (SunOS or Solaris) CC = gcc CFLAGS = -pedantic -ansi -Wall -O3 -DQSORTOPT LIB = -lm ### DEC ALPHA (OSF1) #CC = cc #CFLAGS = -O3 -DQSORTOPT #LIB = -lm ### IBM RS6000 (AIX) #CC = cc #CFLAGS = -O3 #LIB = -lm ### SGI Octane (IRIX 64) #CC = cc #CFLAGS = -64 -ansi -O3 -DQSORTOPT #LIB = -lm #---------------------------------------------------------------------- # # MAIN PROGRAMS (do not modify) # #---------------------------------------------------------------------- INC = -Iinclude PROGS = decomp convertmtx convertsdd OBJ = sdd.o all : $(PROGS) @echo 'Make complete' allres: res1 res2 res3 res4 res5 convertmtx : convertmtx.c sdd.h sdd.o $(CC) $(CFLAGS) $(INC) convertmtx.c sdd.o $(LIB) -o $@ convertsdd : convertsdd.c sdd.h sdd.o $(CC) $(CFLAGS) $(INC) convertsdd.c sdd.o $(LIB) -o $@ decomp : decomp.c $(OBJ) $(CC) $(CFLAGS) $(INC) decomp.c $(OBJ) $(LIB) -o $@ res1 : decomp data1 decomp -k 10 data1 res1_1 > res1 res2 : decomp data2 decomp -k 10 data2 res2_1 > res2 res3 : decomp data3 decomp -k 10 data3 res3_1 > res3 res4 : decomp data4 decomp -k 10 data4 res4_1 > res4 res5 : decomp data5 decomp -k 10 data5 res5_1 > res5 #---------------------------------------------------------------------- # # COMMON OBJECT FILES (do not modify) # #---------------------------------------------------------------------- sdd.o : sdd.c sdd.h qsortopt.h $(CC) -c $(CFLAGS) $(INC) sdd.c #---------------------------------------------------------------------- # # UTILITIES (do not modify) # #---------------------------------------------------------------------- clean: -$(RM) -f $(OBJ) core clobber: clean -$(RM) -f $(PROGS) remake: clobber all @echo 'Remake complete' #---------------------------------------------------------------------- # CREATE TAR FILE FOR DISTRIBUTION #---------------------------------------------------------------------- tarfiles: cd .. ; tar czvf SDDPACK.tgz \ SDDPACK/README.html \ SDDPACK/Makefile \ SDDPACK/gpl.txt \ SDDPACK/include/sdd.h \ SDDPACK/include/qsortopt.h \ SDDPACK/src/sdd.c \ SDDPACK/src/decomp.c \ SDDPACK/src/convertmtx.c \ SDDPACK/src/convertsdd.c \ SDDPACK/matlab/mtxread.m \ SDDPACK/matlab/mtxwrite.m \ SDDPACK/matlab/sdd.m \ SDDPACK/matlab/sddweight.m \ SDDPACK/matlab/sddtensor.m \ SDDPACK/matlab/sddfun.m \ SDDPACK/matlab/sddweightfun.m \ SDDPACK/testdata/test1.mtx \ SDDPACK/testdata/test1.gif \ SDDPACK/doc/umcp-cs-tr-4012.ps cd .. ; tar czvf mtxfiles.tgz \ SDDPACK/testdata/bfw62a.mtx \ SDDPACK/testdata/impcol_c.mtx \ SDDPACK/testdata/watson2.mtx \ SDDPACK/testdata/west0132.mtx /bin/mv ../SDDPACK.tgz ../mtxfiles.tgz . SHAR_EOF fi # end of overwriting check if test -f 'test1.gif' then echo shar: will not over-write existing file "'test1.gif'" else cat << "SHAR_EOF" > 'test1.gif' GIF89a·iòÿÿÿÿÿÿÿÿÿÿ!ù!þ7 Image generated by Aladdin Ghostscript (device=ppmraw),·iþhºÜþ0ÊI«½8ëÍ»ÿ`(Ždižhª®lë¾p,Ïtmßx®ï|ïÿÀ pH,Ȥh(OF425L«ªkæêl.¿§u;+ºgs ./ظT•›¼c ÖÞNÖù€giyxP}woiOŽˆxU“V^]˜ŽŒ‡ˆoua—{t’™“Š5”–b˜Œ¥ ‡±s ZZ…œ„…fj©q¼žsš¸²¯–ž¸ÉÉvÍyÐÄp·¬Å˾8h’†Õ»›Ïj¶›Þß\Áضڟ軕呗ÊÜÆÇÌ÷ÑÐ×Ò™ÖöÔÙh¥ ßXdöÉ\´e¼¸´GŸ0~ï*‹¤þ°±„û8ñ«eqäE!)²˜·qÖ6“ ÷Ü"T_C–ùT†9§ ’©V´Vº9Ë_¿™ñbBfî&*+ÊúY XP©$BÊéê_DAPÊ«‡¬Ù³hÓöJ˶­Û·pãÊK·®Ý»xóÒËw4}Ý‚ Lx)á·XP]̸±ãÇ#KžLy²™ó*kÞ̹³çÏŒ?$N1˜Ci §Q“¾L²^ŒÔ"`3‘!;¨PÔ^·º÷‰Ý% ?Á]@ àû¥-ºVîÃD”Çæi @סGþ\{é, _ €÷ïÁ 8¼Šñðdzÿá¾Ðúù=꧸.¿þþüé©÷ßúPÀØa7 Þ·à ¦Ð݃9è…æQ¨Êj¸ SLèáqŽ˜M€àfâk%®¸!ˆ ˆèb-ÎÈŒ ¨hã þ¶ãnÄø#Fô8äN8.pà‘>ɤ 6 €ƒON'5Uúf%TfÙ\…¡”ãe“A20嘳ɘh&¹%—mz`dY$IglO})¥Œw®Á-Xö™f™ ð)¨sîEJR‡êù¦™†6šÓ‰*釄zi"NnšŠèè)’E$Zeiã–ÒmŽ:év®ªæ§k0=`]¬­•Š+³bD‰ø·+HW«(§YþÚ@—±šú¨±T¬ó5€œ9¬³!`{$ªCCA¤—jë(´Ñº ¨ÍÖHn¹™>€®«âʹnEæž î¡ñ~:/»Ïº{¯ ùš¶/¿ÙZ€!®c:p®ýºËl¸ê.Ìæ  ì¨ 3œÕGsLñÁ¦«&’¯¥Á­zZòÄFuÜM»¼+éÊ?ä²m_ s£4‡dØÍ'ëü/š=³cÕÍ«ê+4ÆwôÒ›öÜ+Р|ñÌMKü´ÁÕEõÂ[£ìu§H‡]qÇ)5²T×kpÚm®MoÙUCÍó×›mðÐOÊ(Ò5‹ó+Gw7Ùm#«ÎÇ÷¶xï;Ràþì¶ó˜y¶xÒ¹j¤¬Îù¼“O+ÏÖöé·m«ÿÇ­;Þz,ܧË2Øukp°ê¶•wæJw`\ÊD÷Î9 ³§wã$?cë•Â€xÓ»¸|ãÎ[o¼¶âÉG<…׃ž½‰Ð¿ÊB|ò‘Ÿû—÷=z Ýçöýƒá‹¯öû$X—ÛÕÖ¯3íC*ŸÆXp[™l}ì æð78ðt[áè%2n?²ØøG?&€6²àíTB×yPw¬â\æ?毃+tÚ Qø‰0py›¡îPBõÅPk:Ì€ã*È@cµÐ…Dü!î$ˆ:pðG7<ÞºŽÈ¼ôPþC4ë…+¤H.*2O=W´!¥`²8R¬CÆQ€ÈŸ•a)UQäËZ…ŠØ ÏŽÜx:ZAEÕ ËäÄdGàq¹a£vÜø“ÄqâáÏüÔ1HiØ,‡Ì£#¡xŒC,è«áù1v%(ȤMÅGj@ûƒ)ÇE…i©*QPåôØ¿"~!;zdÁ‡ù‚×Yr„%Pe×x C]…eƒØY’ f)/&òò±˜•(\Ê€šÁË™ ”Ù<ðù ÞŒ8fÍ;*sæqà sÎ%¤‘œ” b2!0Iè´rs^9™ÂÀüphÄ£fÒ“›þ ’&‰Ú¹‚tbsÚ4h=¡ãŸyjIœ5ÀgúsP Ë£ºÑ§ ðYNŒ®*%ÑÅPºŠŽSu©]bª!þÑ”/`HYJ<ÿ³¡‚©Pæ¡ :õA½  ˆÊ§y‚`¤)Õu]Õ¡´ÄK[ Ÿ.ë«`ت¯ìä4D™!ÀHQVg¤( Ë[…°W.ÎÀ¢€g?ÍšÏNd&fé+úZ¾±ª±ŸN$l°Šžlx’pcQìrêQ’ ŽUã\ ÑQj¶aô Z[!ήÀ³æû`å Û/ð*§µ [øØ4¡E$oK;JAT¹þu@Êx+‚PÖÖ¯ÀÍÀô˜K\ Ôu·ÕIr•»æŠ€? B­l!É·ê^€²@‚•‰¦ëÝë9’›fkßZÀ¼Ø.ÁŒ·0hn •Ã,‚‹Íö*)¾p*æFáÅ}Žô½Àt5€ßŠ­dÁLëÕÏ€aÛÊÀ ¨0Ð ¢ì.Qq8se¨<ìûn@Ä8­‰d—R‡í"ŒÑR8¾× 'Gdã .+V%*¯ìj"ܹ†Y–ŒöŽÖ¹šR”AšZ(7ã¹ò+ÇbùªCÍ e¯k åâ%ù8¿³ì_¼ ;£ COhþsžUÂåÈÄàÍ€”áÚ‚@%™B`^ WIfŠ:‡®€4”<^ªu|þšŸ[óZËÝ„³Ý^'³ÔjÙŠH]jö¢ÚÒª«w}`DÞ™‘‡ŒŠå¨ÒT\Z»žîx2äŸ,2*ÔS,¶/Ž]„镇Ö<¨´±Aíãò`ØzIè›sý'*›ñ·béveÍ-CtEÝ>˜±ä¶–\’;½Cw^Äýn{cßí¾5]ì}ïˆî– ÁËÌn„ œ/ /·z'^èDüE ?qÅÏsñ‰f<‡ ×Ndzíí.ÒÛ;þ&ùÇçœBž|j/ÁgNngc¦ŒÆ.þÀ/ÌÎZÅÜÍ!§ÓŠiNtšd;ç¹ÇÇ €+S 4PºÔ§>™¢\iAÕ·Îõ®{]ÍÐޜǶ¹›¦‘b·lBô E§6ÝšãÛçN÷º÷í»Ò·Ü+]†½ËÉªžÀßÁðÁÑÖà±N&ƒ?üìŸøÒ\LÅ'Ið*O|Jïv%½ð$R|ç ]¡G¾¦82’ã•0gá<çL@ûã{Ž¢mñô ‡\¿xØǾCÀïýøŠñ%fýqFo÷æ;ÿùоô§Oýê[ÿúØϾö·Ïýî{ÿûà¿øÇOþò›ÿüèO¿ú×Ïþö»ÿýð¿üþçOÿúÛÿþøÏ¿þ÷Ïÿþûÿÿ˜w†Gv¤v}‡wí1€BÅ:ŒV&‚²€¦dzØB>Tz€ð+f¦yRØ€wG¬à¯€Y—U^;Á0§ _Ñ‚ua4Z‡d'¸8)X‚+¸ B1 °#¡A ƒ¢° =Ñ*&l¨(x:áP NQ6xlÕÚ Lk6ó„RQÂÀÍ ,_akñt<èÑF# ‘cŸdIvBO1†¿ð†e¨ÌwzˆïЃѣ†ô0Y'{ò@†/ˆdg¨ˆ‰¨leˆdÓÁð‡I#\{f äàþ¾³S¨T ×€8hH+2qA؆KQG1ŠÉ²”³1:H\5 ˜ˆ­ÁTJØ *X‚/3ƒ7Xƒ·ø—” MYŒWñ2 ¶ŒLEˆ?HºÈŒi'B{¸ÞøàHzÛ§Eȇ~sô‚Ú8\XŽözÓ‡†‹âuò8ôH:=«Xú¸üˆŒ6)­=yŽÔ‹ŸG|”7yµD,x¢9plZ‚¨§J—öƒ]E:°öl.‘ÿ"h½t¶rµYqós‡c’'¹P)I’*SO!Y<096,c÷"’æT“Sr1F:¹M³w-BAþ9 üf“’w^@™DC™w f”N¹qÐ"o p”ꨒøòo9™%IÙ“73é><‰5>9b]I–OY€mXøoy„’Lò•à–p!@ )–r 9eév‰Jµ‰9?…•‹¤•ð—mqtt ‚ •|¹–& ˜lÁ˜‚ˆÉtùV„Ec„Xƒ9å’„˜ _fl™Á(@†IR¦ÉÙLá‘¡)ši¹Gg”¨9V ’8UšÒ’ŠŽ©¯)¿Ùc{ù<¤ÇÅ™Ç)D‘œÊIš!ÔœÑ3áW7FKÙš¹©=ÿˆÝ(!½i&ØPžw%=º¹¶‡þ9@™çRXay…yÙ‰R#Ÿóé Ô™?ø)™2f$ÐëYŸL¹œ#²™#0›/` ÷ ЖÁ)ž ç™#þ —#FVºÅITùñJ:¡à Ø—ù“¡)²¡g©hÊ]¢"ZP• ÿIa) ¢|wü*:Ú‘7'Œ¥—÷¹ ±±ô Cº{;A€ì©¤,JMê¤#¥ êi®Ù?]:hóœé*fëj¬ØÊ”º­(Ša:¥H•£~p¬!pïʯsÓŒèZ¯\’\Ί{)K˜ú¡Yéž6WBГ[[‘ª°T¬ Up¯‚4q·‘cJ¢øú5㎤­åJ­Vª²~ð™¢È1p5ÌB²Zõ¯h‘¢XþË­S6 ·™;[±¯*ÄÚC+¬ºÑH YųZ%³3k­áú9x´&:Õ51K´¦µí¡5 "¼dµô µ7ÐOB[³[;™@l›žX©{º,¼:·&Jµ{˜d[¶ú­~ë…dû–·zû“†{¶°Fwk¦Œë®“婇Ë";0O“Û§ƒ‹à Ävºtº ª4ð®.º²K›¶J·+ºñæz»HÀ 1Ð*ü·û·:¼¯›»50¹O+dëÖûn•Û­÷ê»Æ¼Uk½°{)ƒ`(D»¤²Uáµ9Pº«»€þÕV¸½;º‰ÊŠû0lŠ{—×Û[î[ äK&ÍGA€_êû>ûYI´};½ I€.Û¾+ꞃ“—À»»…¹ %hg´ ÷"¼ü³óŠ¾Ëš¿ ¥½å[-hAÌÊ»s!¯n©{WB°Ã*štÁÂ)Öá»RК¼LÃ+,-tŠ²’Ëâ+<»ëÃxêÀŠH¯=·ü»ë‹lmú½ÆY¬RÌí»Än»ÅXümùÊ›ökÅ"»·ÃHàQv ˜d\ÆuÅ`<ÅOü¨Î»¼2‚¼ð{ÄI|«©y¿ÐÙR ÇgLÂl¯uÀ,[ÇTlÈÞš@yŒÄ@[1ˆŒ¶ÊºþóÓWÑ{,ûûòDkŒÄ›¾oü¾#³ÉC`U“Œ¸Sæ ­¢˜™ s„ŒÃÓÚƬ…H“šÅµY¤ O”ʬK{¬lËlÄÛ‹qœŽœÛÇ´\Ëq‰Çžw  [Ž`ðÉ05À:– ò—¯ tZJHŠ #½ì›~|£˜„˹vì{ãË™G¨Ø¬ÃqÜI& ÂÔ륿]ŒæQćZÌh †âÉ05ÎÅËÏ ãϱ¬k¤¡Lºn¹Íû¥ÇaÁÎ+½"ϦÜDѱ™ŽpŠÑÿŒ=”‹(Ä}ÑœÐ*1ÒîüŒlâÑ=Èý®ÆÈÝ•!õë“ot³ÿÒ[þªÅË7­rÏ-±RŠrÏœÑØ°Ñ8MÔÕ`èlÒáÓN¹gœËÒ«ü §TÕvAÕô¬ÊágbË®ùüÕ2 Éh‘Õ+Ça=piýÈfRs¦Ò°<`0çhŒ0ÍïŠÓJýjø‘×)é|þág€mׂ=ØÞ™À“uqgÕ“ÓÛÐoAÕgúÒ\áu×ÀÜÓmÁ Ñ¿vaVŸÈg>­×•ˆ³»# Ò•ÌqªÒxñ×V¢MÉ3íüÓ¨ÙpÒ2ÜdÚYÔHíÛj]ñ•eV­ÈuÑÇ=פÜ)µÌõæÜrý ÚÝÑ+²Í×½Ö-‰SþáÍÜH!äÆiAÖ ÞO½ÚzÑÞníë ¯Ä­pÊûÛ&ÇÝéÖßÏ rÔ}™\ÞJ©Þx­¹@m–g—†.ò´6÷*}ÍƘÁËMÛ2‡ÏÓ½abíÇÊ×sÎá~дZØ.øá´â®uýøâ0Îu6Ë:1^ã6u-G,óç†RýŽÖ<~GSáá8äXøãK Fž|D^0Bîx¥ümIîÀ®Û¾!|¸ŠÓÑä=Ú#sš;âBgy`~d‹åx²:cŽfžgi®akŽtè[…Ÿùæ #Í*gç(Îà$×æ‚='ëH'|n%>(ƒþ%…ε:ÞνÁã§zÙ¥žóK'‡Îxo-è^mÁÇ—Àt~›®ƒŸØ`“®/¡Þâ•ž3£Î4Q4¦˜E“ÈêÇÐéù'牌çZBëÛ=ŒKžëº¾ë¼Þë¾þëÀNä ;SHAR_EOF fi # end of overwriting check if test -f 'umcp-cs-tr-4012.ps' then echo shar: will not over-write existing file "'umcp-cs-tr-4012.ps'" else cat << "SHAR_EOF" > 'umcp-cs-tr-4012.ps' %!PS-Adobe-2.0 %%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software %%Title: whole.dvi %%Pages: 25 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%DocumentPaperSizes: A4 %%EndComments %DVIPSCommandLine: /pub/tetex/0.4pl8/bin/sparc-solaris2.5/dvips -f %+ whole.dvi %DVIPSParameters: dpi=300, comments removed %DVIPSSource: TeX output 1999.04.06:1109 %%BeginProcSet: tex.pro /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} forall round exch round exch]setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]} if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict /eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ 4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet %%BeginProcSet: special.pro TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{itransform lineto} }{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp {pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale true def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ /SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet TeXDict begin 39158280 55380996 1000 300 300 (whole.dvi) @start /Fa 31 122 df<60F0F070101020204040040A7D960B>39 D<60F0F070101020204040040A7D830B>44 D<60F0F06004047D830B>46 D<00FC100383300600F00C00701C0070380030780030780010700010F00010F00000F000 00F00000F00000F00000F000107000107800107800103800201C00200C00400600800383 0000FC0014197E971A>67 DI70 D<00FC100383300600F00C00701C0070 380030780030780010700010F00010F00000F00000F00000F00000F007FCF00070700070 7800707800703800701C00700C00700600B003831000FC0016197E971C>II<0F F800E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0E0 E0E0E0C0C041C023801E000D187E9613>74 DII<00FC000387000E01C0 1C00E01C00E0380070780078700038700038F0003CF0003CF0003CF0003CF0003CF0003C F0003C7000387800787800783800701C00E01C00E00E01C003870000FC0016197E971C> 79 DI82 D<0F88305860384018C018C008C008C008E00070007F 003FE01FF003F80038001C001C800C800C800CC00CC008E010D82087C00E197E9714>I< 7FFFF8603818403808403808803804803804803804003800003800003800003800003800 00380000380000380000380000380000380000380000380000380000380007FFC016177F 961A>I86 D90 D<00800001C00001C00001C00002E00002E00002E0000470000470000878000838000FF8 00101C00101C00101C00301E00F83F8011117F9014>97 DI100 DI<03F1000E0F001803003003007001 00600100E00000E00000E00000E03FC0E007006007007007003007001807000E0B0003F1 0012117F9015>103 D105 D108 DII<03F0000E 1C00180600300300700380600180E001C0E001C0E001C0E001C0E001C060018070038030 03001806000E1C0003F00012117F9015>I114 D117 D121 D E /Fb 15 88 df<00700000F80000F80001BC00019C00019C00039E00031E00030E00070F0006 0F000E07800E07800C07801C03C01FFFC03FFFE03801E03801E07000F07000F06000F0E0 007815177F9618>65 D<00FF0003FFC00F83C01E00C03C00003C0000780000780000F000 00F00000F00000F00000F00000F00000F000007800007800003C00003C00401E00C00F81 C003FF8000FE0012177E9617>67 DII< FFFEFFFEF000F000F000F000F000F000F000F000FFF8FFF8F000F000F000F000F000F000 F000F000F000F000F0000F177D9614>I<00FE0003FF800F83C01E00C03C00C03C000078 0000780000F00000F00000F00000F00000F01FE0F01FE0F000E07800E07800E03C00E03C 00E01E00E00F81E003FFC000FE0013177E9618>I75 DIII<01FC0007FF000F07801E03C03C01E03800E07800F0 700070F00078F00078F00078F00078F00078F00078F000787800F07800F03800E03C01E0 1E03C00F078007FF0001FC0015177E961A>I82 D<07E01FF8383C700CE00CE000 E000F000F8007F803FF01FF807FC007C001E000E000E000EC00CE01CF8387FF00FC00F17 7E9614>II87 D E /Fc 28 122 df<70F8F8F8700505788416>46 D<000180000380000780000700000F 00000E00001E00001C00003C0000380000780000700000F00000E00001E00001C00001C0 0003C0000380000780000700000F00000E00001E00001C00003C00003800007800007000 00F00000E00000E0000011207E9C16>I<03E0000FF8001FFC001E3C00380E00780F0070 0700700700E00380E00380E00380E00380E00380E00380E00380E00380F0078070070070 0700780F003C1E001E3C001FFC000FF80003E00011197E9816>I<030007000F000F001F 00FF00FF00F70007000700070007000700070007000700070007000700070007000700FF F8FFF8FFF80D197B9816>I<07E0001FF8007FFE00783F00F00F00F00780F00380F00380 000380000380000780000700000F00001E00003C0000780000F00003E0000780000F0000 1E03803C03807FFF80FFFF807FFF8011197E9816>I<07E0001FFC007FFE00781F00780F 00780700000700000F00000F00003E0007FC0007F80007FC00001E000007000007800003 80000380F00380F00780F00700F81F007FFE003FFC0007E00011197E9816>I<00F80003 FE000FFF001F0F003E0F003C0F00780600700000F00000E7F800FFFE00FFFE00F80F00F0 0780F00780E00380F00380F00380700380780780780F003C1F001FFE000FF80003E00011 197E9816>54 D<70F8F8F870000000000000000070F8F8F8700512789116>58 D<1FE0007FF8007FFC00783E00301E00000E00003E0007FE003FFE007FCE00F80E00E00E 00E00E00F01E00F83E007FFFE03FF7E00FC3E013127E9116>97 D I<03F80FFE1FFE3C1E780C7000F000E000E000E000E000F000700778073E0F1FFE0FFC03 F010127D9116>I<003F00003F00003F0000070000070000070000070003E7000FFF003F FF003C1F00780F00700F00F00700E00700E00700E00700E00700F00F00F00F00781F007C 3F003FFFE01FF7E007C7E013197F9816>I<03F0000FFC001FFE003E1F00780700700780 F00380FFFF80FFFF80FFFF80E00000F000007003807803803E0F801FFF000FFE0003F800 11127E9116>I<001F0000FF8001FF8003C7800383000380000380007FFF00FFFF00FFFF 000380000380000380000380000380000380000380000380000380000380000380000380 007FFC00FFFE007FFC0011197F9816>I104 D<03000780078003000000000000000000FF80FF80FF8003800380038003800380038003 8003800380038003800380FFFCFFFEFFFC0F1A7C9916>I<7FC000FFC0007FC00001C000 01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000 01C00001C00001C00001C00001C00001C0007FFF00FFFF807FFF0011197E9816>108 DII<03E0000FF8001FFC003C1E00780F00700700E00380 E00380E00380E00380E00380F00780700700780F003C1E001FFC000FF80003E00011127E 9116>II<7F0F80FF3FE07FFFE007F1E007E0C007 C0000780000780000700000700000700000700000700000700000700007FFC00FFFC007F FC0013127F9116>114 D<0FEC3FFC7FFCF03CE01CE01CF0007F801FF007FC003EE00EE0 0EF00EF81EFFFCFFF8C7E00F127D9116>I<0300000700000700000700000700007FFF00 FFFF00FFFF00070000070000070000070000070000070000070000070100070380070380 07078007878003FF0003FE0000F80011177F9616>II 119 D<7F1FC07F3FC07F1FC00F1E00073C0003B80003F00001F00000E00001E00001F000 03B800073C00071C000E0E007F1FC0FF3FE07F1FC013127F9116>I<7F1FC0FF9FE07F1F C01C07000E07000E0E000E0E00070E00071C00071C00039C00039C0003980001B80001B8 0000F00000F00000F00000E00000E00000E00001C00079C0007BC0007F80007F00003C00 00131B7F9116>I E /Fd 37 122 df<18387838081010204080050A7E830B>44 DI<3078F06005047D830B>I<0020006000E001C01FC001C001C003 8003800380038007000700070007000E000E000E000E001C00FFC00B157C9412>49 D<00F00318040C090C090E110E110E221C241C1838003000600080030004001800200420 0C7FF8C3F081E00F157D9412>I<00F8010C020E050E090E090E0A0C0E1C0018007003E0 00300030003000386070E070C06080E041803F000F157D9412>I<007801840304061C0C 1C18003800300073C074207830F038E038E038E038E070C070C06060C061801E000E157C 9412>54 D<000180000180000380000380000780000780000B800013800013800021C000 21C00041C00081C00081C00101C001FFC00201C00201C00401C00801C00801C01801E0FE 07F815177E961A>65 D<003F0400E0880380580600380C00381C00103800103000107000 10600000E00000E00000E00000C00000C00040C00040C00080E00080E001006002003004 0018180007E00016177A961A>67 D<03FFF000E01800E00C00E00600E00701C00301C003 01C00301C00303800703800703800703800707000E07000E07000C07001C0E00180E0030 0E00600E00C01C0380FFFC0018177E961B>I<03FFFE00E00E00E00400E00400E00401C0 0401C00401C08001C08003810003830003FF000383000702000702080702080700100E00 100E00300E00200E00601C01C0FFFFC017177E9618>I<07FE00E000E000E000E001C001 C001C001C0038003800380038007000700070007000E000E000E000E001C00FF800F177E 960E>73 D<03FE0000E00000E00000E00000E00001C00001C00001C00001C00003800003 80000380000380000700000700200700200700400E00400E00C00E00800E01801C0780FF FF0013177E9616>76 D<03F0003F8000F000780000B800780000B800B80000B801380001 38017000013802700001380270000138047000023808E000021C08E000021C10E000021C 10E000041C21C000041C41C000041C41C000041C81C000081D038000081D038000080E03 8000080E038000180C070000FE083FE00021177E9620>I<007C40018280030180060180 0601800C01000C01000E00000E00000FC00007F80003FC00007C00000E00000E00000600 200600400C00400C00600800601000D8600087C00012177D9614>83 D<1FFFFC38381C20380860380840380840700880700800700000700000E00000E00000E0 0000E00001C00001C00001C00001C0000380000380000380000380000700007FF0001617 7A961A>I<073018F03070707060E0E0E0E0E0E0E0C1C0C1C8C1C8C1C867D038E00D0E7C 8D12>97 D<7E001C001C001C001C003800380038003800778078C070C070E0E0E0E0E0E0 E0E0E0C1C0C1C0C180C30066003C000B177C9610>I<07C00C6038E030E07000E000E000 E000C000C000C020C04061803E000B0E7C8D10>I<007E001C001C001C001C0038003800 380038077018F03070707060E0E0E0E0E0E0E0C1C0C1C8C1C8C1C867D038E00F177C9612 >I<07801C40382070206040FF80E000E000C000C000C020E04061803E000B0E7C8D10>I< 001C0036007E007C006000E000E000E000E00FFC01C001C001C001C001C0038003800380 03800380030007000700070006006600EC00C80070000F1D81960B>I<01CC063C0C1C1C 1C1838383838383838307030703070307019E00EE000E000E061C0E1C0C3807E000E147E 8D10>I<1F8007000700070007000E000E000E000E001CF01F381C181C18383838383838 38387070707270E270E4E06460380F177E9612>I<030706000000000000182C4E4E9C1C 383838727274643808177D960B>I<3F0E0E0E0E1C1C1C1C3838383870707070E0E8E8E8 F07008177D9609>108 D<387C3C004C8ECE004F0706004E0706009C0E0E001C0E0E001C 0E0E001C0E0E00381C1C00381C1C80381C3880381C39007038190030180E00190E7D8D1D >I<38784D9C4E0C4E0C9C1C1C1C1C1C1C1C38383839387138727032301C100E7D8D14>I< 07C00C60183030387038E038E038E038C070C070C0E0E0C063803E000D0E7C8D12>I<0E 3C13461386138727070707070707070E0E0E0E0E0C0E181E301DE01C001C003800380038 00FE0010147F8D12>I<38F04D184E384E309C001C001C001C0038003800380038007000 30000D0E7D8D0F>114 D<07800C4018E018E038003F001F800FC001C060C0E0C0C080C3 003E000B0E7D8D0F>I<060007000E000E000E000E00FF801C001C001C00380038003800 3800700071007100720076003C0009147D930C>I<1C0C261C4E1C4E1C8E381C381C381C 38387038723872387218F40F380F0E7D8D13>I<1C0C302E1C784E1C384E1C188E38101C 38101C38101C38103870203870203870201870401CB8800F0F00150E7D8D18>119 D<0F1C11A621CE21CC438003800380038007000708C708E710CB2071C00F0E7E8D10>I< 1C0C261C4E1C4E1C8E381C381C381C38387038703870387018E00FE000E000C0E1C0E380 47003C000E147D8D11>I E /Fe 1 1 df0 D E /Ff 1 1 df0 D E /Fg 11 121 df<0408103020606040C0C0C0C0C0C0C0C0C0C04060602030100804061A7D920C>40 D<80402030101818080C0C0C0C0C0C0C0C0C0C0818181030204080061A7F920C>I<00C0 0000C00000C00000C00000C00000C00000C00000C00000C000FFFF80FFFF8000C00000C0 0000C00000C00000C00000C00000C00000C00000C00011147E8F17>43 D<1F00318060C04040C060C060C060C060C060C060C060C060404060C031801F000B107F 8F0F>48 D<187898181818181818181818181818FF08107E8F0F>I<3F006180F0C0F0E0 6060006000E000C00180030006000C00102020207FC0FFC00B107F8F0F>I<3E00730071 8001800F8031804180C190C19063903DE00C0B7F8A0F>97 D<20702000000000F0303030 303030303030FC0612809108>105 D109 DI120 D E /Fh 8 111 df<0FFFE003806003802007002007002007042007 04000E08000FF8000E08000E08001C10001C00001C00001C0000380000FF000013117E90 13>70 D<3FFFC03070C040704040E04080E04080E04000E00001C00001C00001C00001C0 000380000380000380000380000700003FF00012117E9012>84 D87 D<0C0E0C00000000305898983030606464683007127E910B>105 D<006000E000400000000000000000038004C008C008C000C00180018001800180030003 0003006300E600EC0078000B1780910D>I<3C000C000C00180018001800187031B03270 346038007F00618061906190C1A0C0C00C117E9010>I<71F1F09A1A189C1C1898181818 1818303030303030303032303062606064606038170B7E8A1B>109 D<71F09A189C18981818183030303030323062606460380F0B7E8A13>I E /Fi 18 122 df<03F0000E1820181C20300E40700E40E00E40E00E80E00F00C00F00C0 0E00C00E006017003067401F8380130E7F8D17>11 D<000F0000318000C0C00100C00100 C00201C00401C00401C0040380083F00084700083D800801C01001C01001C01001C01001 C0300380300380300700280E0044180043E0004000004000008000008000008000008000 00121D7F9614>I<00F8018C030606070E071C071C071C07380E380E381C3818747073C0 70007000E000E000E000C00010147F8D12>26 D<60F0F06004047D830A>58 D<60F0F070101020204040040A7D830A>I62 D<0000C00000C00001C00001C00003C000 05C00005E00008E00018E00010E00020E00020E00040E00080E00080E001FFF001007002 0070040070040070080070180070FE03FE17177F961A>65 D<07FFF00000E01C0000E00E 0000E00F0000E0070001C00F0001C00F0001C00F0001C01E0003803C000380F00003FF80 000380C000070060000700600007007000070070000E00F0000E00F0000E00F0800E00F0 801C007100FF803E0019177F961B>82 D87 D<001F80000700000700000700000700000E00000E00000E00000E0007DC000C3C00183C 00301C00703800E03800E03800E03800C07000C07200C07200E0F2006174003E38001117 7F9612>100 D<000C001C000800000000000000000000000000E0033004380438087000 700070007000E000E000E000E001C001C001C001C06380E300C6007C000E1D80960E> 106 D<1F8007000700070007000E000E000E000E001C0E1C331C471C863B003C003F8039 C070E070E270E270E2E064603810177F9612>I<3F0E0E0E0E1C1C1C1C38383838707070 70E0E4E4E4E87008177F960B>I<383C004CC7004F03004E03009C07001C07001C07001C 0700380E00380E40381C40381C80700C80300700120E7F8D15>110 D<07C00C201870187038003F801FC00FE000E06060E060C0C0C1803F000C0E7E8D10> 115 D<1C0C2E1E4E0E4E068E041C041C041C0438083808381018201C6007800F0E7F8D11 >118 D<070F0019D18020E38020E30041C00001C00001C00001C000038000038200C382 00E78400C5880078F000110E7F8D14>120 D<1C032E074E074E078E0E1C0E1C0E1C0E38 1C381C381C183C1C7807B800380070707070E021801E0010147F8D11>I E /Fj 3 51 df<00C00000C00000C00000C00000C00000C00000C00000C000FFFF80FFFF 8000C00000C00000C00000C00000C00000C00000C00000C00011127E8D15>43 D<18F818181818181818181818FF080D7D8C0E>49 D<3E00418080C0C0C000C000C00180 03000400084030407F80FF800A0D7E8C0E>I E /Fk 30 122 df<70F8FCFC7404040408 08102040060D7C9C0D>39 D<70F8F8F87005057C840D>46 D<030007003F00C700070007 000700070007000700070007000700070007000700070007000700070007000700070007 00070007000F80FFF80D1C7B9B17>49 D<07E000183800201C00400E00400F00F00780F8 0780F80780F80780700780000780000F00000F00000E00001C0000380000300000600000 C0000180000300000600800C00800800801001003FFF007FFF00FFFF00111C7D9B17>I< 07E000083800301C00200E00780F00780F00780F00380F00000E00000E00001C00001800 00700007E000003800001C00000E00000700000780000780700780F80780F80780F80780 F00700400E00201C0018380007E000111D7D9B17>I<000C00000C00001C00003C00003C 00005C0000DC00009C00011C00031C00021C00041C000C1C00081C00101C00301C00201C 00401C00C01C00FFFFE0001C00001C00001C00001C00001C00001C00001C0001FFC0131C 7E9B17>I<3806003FFC003FF8003FE00020000020000020000020000020000020000023 E000241800280C00300E00200700000700000780000780000780600780F00780F00780F0 0700800700400F00400E00201C0018380007E000111D7D9B17>I<00F800038600060200 0C07001C0F00380F00380600780000700000700000F1E000F61800F40C00F80E00F80700 F00700F00780F00780F00780F00780700780700780700780700700380700180E001C0C00 0E180003E000111D7D9B17>I<4000007FFFC07FFF807FFF804001008002008002008004 0000080000100000100000200000600000400000C00000C00001C0000180000180000380 00038000038000078000078000078000078000078000078000030000121D7D9B17>I<03 E0000C18001004002006002003006003006003007003007003007C06003F0C001F98000F E00007F00007FC0008FE00303F00201F00600780C00380C00180C00180C00180C0018060 01006002003004001C180007E000111D7D9B17>I<03E0000E3800181C00380E00700E00 700700F00700F00700F00780F00780F00780F00780F00780700780700F80380F80181780 0C378003C780000700000700000700300E00780E00780C007018002030001060000F8000 111D7D9B17>I75 DI<001FC00000F0780001800C00070007000E0003801C0001C01C0001C0380000E07800 00F0780000F070000070F0000078F0000078F0000078F0000078F0000078F0000078F000 0078F0000078780000F0780000F0780000F03C0001E01C0001C01E0003C00E0003800700 070003C01E0000F07800001FC0001D1E7D9C23>79 DI<7FFFFF C0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F0020000F00 00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00 00000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800003FFFC 001B1C7D9B21>84 D91 D93 D<00200000700000700000700000B80000B80000B800011C00011C00031E00020E00020E 0004070007FF000407000803800803801803C01801C03801C0FC07F815157F9419>97 D100 DII<00FC20 0782600E01E01C00E0380060780020700020F00020F00000F00000F00000F00FF8F000E0 F000E07000E07800E03800E01C00E00E00E007836000FC2015157E941B>II108 DII<01F800070E000C03001C03803801C07801E0 7000E0F000F0F000F0F000F0F000F0F000F0F000F0F000F07000E07801E03801C01C0380 1E0780070E0001F80014157E941A>I114 D121 D E /Fl 5 51 df0 D<60F0F06004047E880A>II<040004000400C460F5E03F800E003F80F5E0C46004 00040004000B0D7E8D11>I<03FC0FFC1C00380070006000E000C000C000FFFCFFFCC000 C000E0006000700038001C000FFC03FC0E147D9016>50 D E /Fm 5 111 df<7FFF8060C08040C08040C08081810001800001800001800003000003000003 00000300000600003FC000110E7F8D11>84 D<00C0008000000000000000000700198011 80030003000300030006000600060006008C00F0000A137F8E0C>106 D<3800180018001800300030C03360344078007E0063006320C340C1800B0E7E8D10>I< 73C7009C68809830C038618030618030618030631060C32060C1C014097D8819>109 D<73809C40986030C030C030C03188619060E00D097D8812>I E /Fn 13 121 df<02040818103030606060E0E0E0E0E0E0E0E0E0E0606060303010180804 02071E7D950D>40 D<804020301018180C0C0C0E0E0E0E0E0E0E0E0E0E0C0C0C18181030 204080071E7E950D>I<0060000060000060000060000060000060000060000060000060 00006000FFFFF0FFFFF00060000060000060000060000060000060000060000060000060 0000600014167E9119>43 D<0FC01860303060186018E01CE01CE01CE01CE01CE01CE01C E01CE01C60186018303018600FC00E137F9211>48 D<06001E00EE000E000E000E000E00 0E000E000E000E000E000E000E000E000E000E000E00FFE00B137D9211>I<1F0021C040 E0C070E070E0700070006000E000C00180030006000C10081010303FE07FE0FFE00C137E 9211>I61 D<183C66C308047C9311>94 D<3F8070E070602070007007F03C707070E070 E072E07270FE3F3C0F0D7F8C11>97 D<3078783000000000F83838383838383838383838 FE07157F940A>105 D109 DI120 D E /Fo 25 126 df<00200040008001000300060006000C000C00180018003800300030 007000700070006000E000E000E000E000E000E000E000E000E000E000E000E000E00060 00700070007000300030003800180018000C000C0006000600030001000080004000200B 317A8113>0 D<800040002000100018000C000C00060006000300030003800180018001 C001C001C000C000E000E000E000E000E000E000E000E000E000E000E000E000E000C001 C001C001C001800180038003000300060006000C000C00180010002000400080000B317F 8113>III<0000300000600000C0000180000380000700000E00000C00001C0000 380000380000700000E00000E00001C00001C00003C0000380000380000700000700000F 00000E00000E00001E00001E00001C00001C00003C00003C00003C000038000078000078 0000780000780000780000780000700000F00000F00000F00000F00000F00000F00000F0 0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0 0000F00000F000007000007800007800007800007800007800007800003800003C00003C 00003C00001C00001C00001E00001E00000E00000E00000F000007000007000003800003 800003C00001C00001C00000E00000E000007000003800003800001C00000C00000E0000 07000003800001800000C0000060000030146377811F>18 DI<0000700001F00003E0000780000F00001E00003C0000780000780000F00000 F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000 F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000 F00000F00000F00000F00000F00000F00001E00001E00001C00003C0000780000700000E 00003C0000700000E000007000003C00000E000007000007800003C00001C00001E00001 E00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000 F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000 F00000F00000F00000F00000F00000F00000F00000F000007800007800003C00001E0000 0F000007800003E00001F000007014637B811F>26 D<00000C0000180000380000300000 600000E00000C00001C0000380000380000700000700000E00000E00001C00001C000038 0000380000780000700000F00000F00000E00001E00001E00003C00003C00003C00003C0 000780000780000780000F80000F00000F00000F00001F00001F00001E00001E00001E00 003E00003E00003E00003E00003C00003C00003C00007C00007C00007C00007C00007C00 007C00007C00007C0000780000780000F80000F80000F80000F80000F80000F80000F800 00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000164B748024 >48 DIIII<001C001C001C001C001C001C001C001C001C001C 001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C 001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C 001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C 001C001C001C001C001C001C001CFFFCFFFCFFFC0E4A80811C>III64 D<00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0000 7C00007C00007C00007C00007C00007C00007C0000780000780000F80000F80000F80000 F80000F80000F80000F80000F80000F00000F00000F00001F00001F00001F00001F00001 E00001E00001E00003E00003E00003C00003C00003C00007C0000780000780000780000F 00000F00000F00000F00001E00001E00001C00003C00003C000038000078000070000070 0000E00000E00001C00001C0000380000380000700000700000E00000C00001C00001800 00300000700000600000C00000164B7F8224>I80 DI88 DI< 0001F8000FF8003FF800FFF803FFF807FC000FC0001F00003C0000780000700000E00000 C00000150D818413>122 DII<00 00180000380000300000700000E00003C0000F80003F0003FE00FFFC00FFF800FFE000FF 8000FC0000150E818D13>I E /Fp 16 124 df<60F0F06004047E830A>58 D<07FFE000E07001C01801C00C01C00C01C00E03800E03800E03800E03800E07001C0700 1C07001C0700380E00300E00700E00E00E01C01C0700FFFC0017147F931B>68 D<07FFFC00E01C01C00C01C00C01C00C01C00803810803810003830003FF000702000702 000702000700000E00000E00000E00000E00001C0000FFC00016147F9315>70 D<07FC00E001C001C001C001C0038003800380038007000700070007000E000E000E000E 001C00FF800E147F930F>73 D<00FF80000E00001C00001C00001C00001C000038000038 0000380000380000700000700000700000700000E00070E000F0E000E1C000C380003E00 0011147E9312>I<1FFFF8381C1820381820380840380840381080701000700000700000 700000E00000E00000E00000E00001C00001C00001C00001C0000380003FF80015148093 14>84 D87 D<07FC3F8000E01C0000F0100000702000 007040000038800000390000003E0000001C0000001E0000001E0000003F000000670000 00C7000001838000030380000603C0000401C0001C01E000FE07F80019147F931B>II<060706000000 00384C4C8C98181830323264643808147F930C>105 D<00300038003000000000000000 0001C002600430046008600060006000C000C000C000C001800180018001806300E300C6 0078000D1A81930E>I<1E0006000C000C000C000C0018001838185C189C311836003800 3F8061C060C860C860C8C0D0C0600E147F9312>I<30F87C00590C86004E0D06009C0E06 00980C0600180C0600180C060030180C0030180C8030181880301818806030190060300E 00190D7F8C1D>109 D<30F8590C4E0C9C0C980C180C180C30183019303130316032601C 100D7F8C15>I<0C78168C130426062606060606060C0C0C0C0C080C101A2019C0180018 00300030003000FC000F13818C11>112 D<384C4C8C981818303232646438070D7F8C0C> 123 D E /Fq 57 123 df<1C3E3E3E3A0204040808106080070D779C0D>39 D<00030006000800180030006000C000C0018003000300060006000C000C001C00180018 00380030003000700070006000600060006000E000E000E000E000E00060006000600060 00600020003000100008000800102A7B9E11>I<001000100008000C0004000600060006 00060006000700070007000700070006000600060006000E000E000C000C001C00180018 0038003000300060006000C000C001800300030006000C00180010006000C000102A809E 11>I<1C3C3C3C3C0408081010204080060D7D840D>44 DI< 70F8F8F0E005057B840D>I<003E0000E1800181C00300C00700C00600C00E00E00C00E0 1C00C01C00C01801C03801C03801C03801C0700380700380700380700380600700E00700 E00600E00E00E00E00E00C00E0180060380060700030C0001F0000131D7C9B15>48 D<0004000C00180038007807B8007000700070007000E000E000E000E001C001C001C001 C0038003800380038007000700070007000F00FFF00E1C7B9B15>I<003E000041800080 C00100C00200E00440E00440E00840E00840E00840E01081C01081C01103800E03000006 00000C000018000060000080000300000400000800401000802000802001007F070043FE 0081FC00807800131D7D9B15>I<001F000060C00080C00100600200600240600440E004 40E00440E00481C00301C000038000070000FC00001C0000060000060000070000070000 0700300700780700F00E00E00E00801C0040180040300020E0001F8000131D7D9B15>I< 00806001FFC001FF8001FE0001000002000002000002000002000004000004F000050C00 060C000C0E00080E00000E00000F00000E00001E00301E00781E00781C00F03C00803800 80780040700040E0002180001E0000131D7C9B15>53 D<09C0400FE0801FE1801C610030 2600201A00600400400C0080080080180000300000300000600000600000C00000C00001 C0000180000380000300000700000700000700000E00000E00000E00001C00001C000018 0000121D799B15>55 D<001F000060C00080600100600300300300300700600700600700 C00780C007E10003F60001FC0000FC0001FE00063F000C1F00180F803007802003806003 80600380C00300C00300C002006004006008003830000FC000141D7D9B15>I<003E0000 E1000181800300C00600C00E00C00C00C01C00C01C00C01C01C03801C03801C03801C038 03C0180380180780080B800C330003C700000700000E00000C00601C00F01800F03000E0 600080C0004180003E0000121D7C9B15>I<000018000000180000003800000038000000 7800000078000000F800000178000001780000027C0000023C0000043C00000C3C000008 3C0000103C0000103C0000203C0000203C0000403C0000FFFC0000803C0001003C000100 3E0002001E0002001E0004001E000C001E001C003E00FF01FFC01A1D7E9C1F>65 D<0003F020001E0C60003002E000E003C001C001C0038001C0070000C00E0000801E0000 801C0000803C0000803C000000780000007800000078000000F0000000F0000000F00000 00F0000000F0000400F0000400F0000400F0000800700008007000100038002000180040 000C0180000706000001F800001B1E7A9C1E>67 D<01FFFF00003E03C0003C00E0003C00 E0003C0070003C00700078007800780038007800380078007800F0007800F0007800F000 7800F0007801E000F001E000F001E000F001E000E003C001E003C001C003C003C003C003 800780070007800E0007801C00078038000F00E000FFFF80001D1C7E9B1F>I<01FFFFF0 003E00F0003C0030003C0020003C0020003C002000780020007800200078082000780800 00F0100000F0100000F0300000FFF00001E0200001E0200001E0200001E0200003C04000 03C0000003C0000003C00000078000000780000007800000078000000F800000FFF80000 1C1C7E9B1B>70 D<01FFE7FF80003E00F800003C00F000003C00F000003C00F000003C00 F000007801E000007801E000007801E000007801E00000F003C00000F003C00000F003C0 0000FFFFC00001E007800001E007800001E007800001E007800003C00F000003C00F0000 03C00F000003C00F000007801E000007801E000007801E000007801E00000F803E0000FF F3FFC000211C7E9B1F>72 D<03FF80007C0000780000780000780000780000F00000F000 00F00000F00001E00001E00001E00001E00003C00003C00003C00003C000078000078000 0780000780000F00000F00000F00000F00001F0000FFE000111C7D9B10>I<01FFE07F80 003E001E00003C001800003C002000003C004000003C0080000078010000007804000000 78080000007810000000F020000000F060000000F1E0000000F3E0000001E4F0000001E8 F0000001E0F0000001E078000003C078000003C078000003C03C000003C03C000007803C 000007801E000007801E000007801E00000F801F0000FFF0FFC000211C7E9B20>75 D<01FFE0003E00003C00003C00003C00003C0000780000780000780000780000F00000F0 0000F00000F00001E00001E00001E00001E00003C00203C00203C00203C0040780040780 0C0780180780380F00F0FFFFF0171C7E9B1A>I<01FF0003FE003F0003E0002F0007C000 2F000BC0002F000BC0002F0013C0004F001780004F002780004F004780004F004780008F 008F000087808F000087810F000087810F000107821E000107841E000107841E00010788 1E000207883C000207903C000207A03C000207A03C000403C078000403C0780004038078 000C030078001C0300F800FF820FFF00271C7E9B25>I<0007F000001C1C0000700E0000 E0070001C0038003800380070003800E0003C01E0003C01C0003C03C0003C03C0003C078 0003C0780003C0780003C0F0000780F0000780F0000780F0000F00F0000F00F0000E00F0 001E00F0003C0070003800700070007800E0003801C0001C0380000E0E000003F800001A 1E7A9C20>79 D<01FFFE00003E0380003C01C0003C00E0003C00E0003C00E0007801E000 7801E0007801E0007801C000F003C000F0038000F0070000F01C0001FFF00001E0000001 E0000001E0000003C0000003C0000003C0000003C0000007800000078000000780000007 8000000F800000FFF000001B1C7E9B1C>I<01FFFE00003E0780003C01C0003C01E0003C 00E0003C00E0007801E0007801E0007801E0007803C000F0038000F0070000F01C0000FF E00001E0380001E01C0001E01E0001E01E0003C01E0003C01E0003C01E0003C01E000780 3C0007803C2007803C2007803C200F803C40FFF01C8000000F001B1D7E9B1E>82 D<000F8400304C00603C00C01801801803801803801807001007001007000007800007C0 0007F80003FF0001FF8000FF80001FC00003C00003C00001C00001C02001C02001C06003 80600380600300600600F00C00CC180083E000161E7D9C17>I<1FFFFFC01C0781C0300F 00C0200F0080600F0080400F0080401E0080801E0080801E0080001E0000003C0000003C 0000003C0000003C00000078000000780000007800000078000000F0000000F0000000F0 000000F0000001E0000001E0000001E0000001E0000003E000007FFF00001A1C799B1E> I86 D<01FFC1FE003F00F0001E0060001E0080001F01 80000F0100000F0200000F840000078800000790000007E0000003E0000003C0000003E0 000001E0000003E0000005F0000008F0000010F0000030F8000060780000407C0000807C 0001003C0002003E0006003E001E003E00FF80FFC01F1C7E9B1F>88 D<003F80007F0000600000600000600000C00000C00000C00000C0000180000180000180 000180000300000300000300000300000600000600000600000600000C00000C00000C00 000C00001800001800001800001800003000003000003000003000006000006000006000 00600000C00000C00000FE0000FE000011297E9E0D>91 D<003F80007F00000300000300 000300000600000600000600000600000C00000C00000C00000C00001800001800001800 00180000300000300000300000300000600000600000600000600000C00000C00000C000 00C000018000018000018000018000030000030000030000030000060000060000FE0000 FE00001129819E0D>93 D<01E307170C0F180F380E300E700E700EE01CE01CE01CE01CE0 39E039E0396079319A1E0C10127C9115>97 D<3F00070007000E000E000E000E001C001C 001C001C0039E03A183C0C380C700C700E700E700EE01CE01CE01CE018E038E030E06060 C031801E000F1D7C9C13>I<00F803040E0C1C1E183C301870007000E000E000E000E000 E000E0046008601030600F800F127C9113>I<0007E00000E00000E00001C00001C00001 C00001C000038000038000038000038001E7000717000C0F00180F00380E00300E00700E 00700E00E01C00E01C00E01C00E01C00E03900E03900E03900607900319A001E0C00131D 7C9C15>I<00F807040C0418023804300470087FF0E000E000E000E000E0006004600830 1030600F800F127C9113>I<0003C0000660000CF0001DE0001CC0001C00003800003800 00380000380000380003FF8000700000700000700000700000700000E00000E00000E000 00E00000E00001C00001C00001C00001C00001C000038000038000038000030000030000 670000F60000F60000EC00007800001425819C0D>I<0078C001C5C00303C00603C00E03 800C03801C03801C0380380700380700380700380700380E00380E00380E00181E000C7C 00079C00001C00001C00003800603800F03000F07000E1C0007F0000121A7E9113>I<0F C00001C00001C0000380000380000380000380000700000700000700000700000E3E000E C3000F03800E03801E03801C03801C03801C0380380700380700380700380E00700E4070 0E40701C40701C80E00C80600700121D7E9C15>I<018003C00380030000000000000000 00000000001C002600470047008E008E000E001C001C001C003800380071007100710072 0072003C000A1C7C9B0D>I<0FC00001C00001C000038000038000038000038000070000 0700000700000700000E07800E08800E11C00E23C01C47801C83001D00001E00003FC000 38E000387000387000707100707100707100707200E03200601C00121D7E9C13>107 D<1F800380038007000700070007000E000E000E000E001C001C001C001C003800380038 0038007000700070007000E200E200E200E40064003800091D7D9C0B>I<1C1E07802663 18C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701C01C0701C01C07 01C01C070380380E0388380E0388380E0708380E0710701C0320300C01C01D127C9122> I<383E004CC3004D03804E03809E03809C03801C03801C0380380700380700380700380E 00700E40700E40701C40701C80E00C8060070012127C9117>I<00F800030C000E06001C 0300180300300300700380700380E00700E00700E00700E00E00E00E00E01C0060180060 300030E0000F800011127C9115>I<03878004C86004D03004E03009C03009C03801C038 01C0380380700380700380700380600700E00700C00701800783000E86000E78000E0000 0E00001C00001C00001C00001C0000380000FF0000151A809115>I<01E107130C0F180F 380E300E700E700EE01CE01CE01CE01CE038E038E038607831F01E700070007000E000E0 00E000E001C00FF8101A7C9113>I<1C3C26C24706470F8E1E8E0C0E000E001C001C001C 001C0038003800380038007000300010127C9112>I<01F006080C080C1C18181C001F00 1FC00FF007F0007820387030F030F030806060C01F000E127D9111>I<03000700070007 000E000E000E000E00FFE01C001C001C0038003800380038007000700070007000E080E0 80E100E100660038000B1A7C990E>I<1C01802E03804E03804E03808E07008E07001C07 001C0700380E00380E00380E00380E00301C80301C80301C80383C80184D000F86001112 7C9116>I<1C062E0E4E064E068E028E021C021C02380438043804380830083008301038 2018400F800F127C9113>I<1E01832703874703874703838707018707010E07010E0701 1C0E021C0E021C0E021C0E04180C04181C04181C081C1E080C263007C3C018127C911C> I<0387800CC8400870C01071E020E3C020E18000E00000E00001C00001C00001C00001C0 00638100F38100F38200E5820085840078780013127E9113>I<0E00C01701C02701C027 01C04703804703800E03800E03801C07001C07001C07001C0700180E00180E00180E001C 1E000C3C0007DC00001C00001800603800F03000F06000E0C0004180003E0000121A7D91 14>I<01C107E10FF6081C10080010002000400080010002000400080410042C0C73F841 F080E010127E9111>I E /Fr 44 124 df<00FC000386000603020E03821C01843801C4 7801C87801C8F001D0F001D0F001E0F001C0F001C0F001C07003C03005C41838C80FC070 17127F911B>11 D<0001F000061800080C00100C00200E00400E00800E00801C01001C01 0018010038020FF00210E0020FF002003804003804003804003C04003808007808007808 00780800701800F01800E01401C0140380230E0020F80020000020000040000040000040 000040000080000080000017257F9C17>I<0780101FC0103FE0207FF020603040C01840 800880000880000480000500000500000600000600000600000400000400000400000C00 000C00000C00001800001800001800001800003000003000002000141B7F9115>I<0FFF F81FFFF83FFFF8608400418400810400010400030C00030C00020C00060C00060C000E0C 000C0C001C0E001C0E00380E0018060015127E9118>25 D<001F0000718000C0C001C0E0 0380E00300E00700F00700F00E01E00E01E00E01E00E01C01C03C01C03801C07001E0E00 3B1C0038F000380000380000700000700000700000700000E00000E00000C00000141B7F 9115>I<00FFFC03FFFC07FFFC0E0F001C0700380700700300700700E00700E00700E007 00E00600E00E00E00C0060180060300030E0000F800016127F9118>I<70F8F8F8700505 7D840C>58 D<70F0F8F8780808081010202040050D7D840C>I<00000180000007800000 1E00000078000001E00000078000001E00000038000000F0000003C000000F0000003C00 0000F0000000F00000003C0000000F00000003C0000000F0000000380000001E00000007 80000001E0000000780000001E000000078000000180191A7D9620>I<00030003000700 060006000E000C001C0018001800380030003000700060006000E000C000C001C0018003 80030003000700060006000E000C000C001C001800180038003000700060006000E000C0 00C00010297E9E15>II<003E0000C3000101C00200C00300E00780600780700300 7000007000007000007000F8700386F00702F00E01F01C01F03C01E03801E07801E07801 C0F003C0F003C0F00380F00780E00700E00600E00E00701C003038001860000F8000141F 7E9D16>64 D<00000C0000000C0000001C0000001C0000003C0000007C0000007C000000 BE0000009E0000011E0000021E0000021E0000041E0000041E0000081E0000101E000010 1E0000201F0000200F00007FFF0000800F0000800F0001000F0001000F0002000F000400 0F0004000F001C000F80FF807FF01C1D7F9C1F>I<01FFFF80003E00E0003C0070003C00 78003C0038003C0038007800380078007800780078007800F000F001E000F003C000F00F 0000FFFE0001E0078001E003C001E001E001E001E003C001E003C001E003C001E003C001 E0078003C0078003800780070007801E000F003C00FFFFE0001D1C7F9B1F>I<01FFFF80 003E01E0003C0070003C0038003C003C003C001C0078001C0078001E0078001E0078001E 00F0001E00F0001E00F0001E00F0001E01E0003C01E0003C01E0003C01E0003803C00078 03C0007003C000F003C000E0078001C0078003800780070007801C000F007800FFFFC000 1F1C7E9B22>68 D<01FFFFF0003E00F0003C0030003C0020003C0020003C002000780020 00780020007808200078080000F0100000F0100000F0300000FFF00001E0200001E02000 01E0200001E0200003C0400003C0000003C0000003C00000078000000780000007800000 078000000F800000FFF800001C1C7E9B1B>70 D<01FFE0003E00003C00003C00003C0000 3C0000780000780000780000780000F00000F00000F00000F00001E00001E00001E00001 E00003C00003C00003C00003C0000780000780000780000780000F8000FFF000131C7F9B 12>73 D<001FFE0001F00001E00001E00001E00001E00003C00003C00003C00003C00007 80000780000780000780000F00000F00000F00000F00001E00001E00001E00781E00783C 00F83C00F83800E0780040F00061C0001F0000171D7E9B17>I<01FFFE00003E03C0003C 00E0003C00F0003C0070003C0070007800F0007800F0007800F0007801E000F001C000F0 078000F01E0000FFF00001E03C0001E00E0001E00F0001E00F0003C00F0003C00F0003C0 0F0003C00F0007801E0007801E0807801E0807801E100F800E10FFF00E20000003C01D1D 7E9B20>82 D<000FC100383300600F00C006018006038006038006070004070004078000 07800007E00007FC0003FF8001FFC000FFE0001FF00001F00000F00000F0000070200070 2000706000E06000E06001C0600180F00300CC0E0083F800181E7E9C19>I86 DI<01FFE0FF80001F003C00001F003000001F 002000000F004000000F808000000781000000078200000007C400000003C800000003F8 00000001F000000001E000000001F000000000F000000001F80000000278000000047800 0000087C000000103C000000203E000000403E000000801E000001801F000003000F0000 06000F00001E001F8000FF807FF000211C7F9B22>II<00F180 030B800E07801C07803C0700380700780700780700F00E00F00E00F00E00F00E00F01C40 E01C40701C40703C4030CC800F070012127F9116>97 D<3F00070007000E000E000E000E 001C001C001C001C0039E03A383C18381C701C701E701E701EE03CE03CE03CE038E078E0 70E0E060C023801E000F1D7E9C12>I<0003F00000700000700000E00000E00000E00000 E00001C00001C00001C00001C000F380030B800E07801C07803C07003807007807007807 00F00E00F00E00F00E00F00E00F01C40E01C40701C40703C4030CC800F0700141D7F9C16 >100 D<00F803840E041C023C04380478187FE0F000F000F000F000F000700270043008 18300FC00F127F9113>I<01C003C003C001800000000000000000000000001C00270047 004700870087000E000E001C001C001C003800388038807080710032001C000A1C7E9B0E >105 D<0007000F000F00060000000000000000000000000078009C010C020C021C041C 001C001C0038003800380038007000700070007000E000E000E000E001C061C0F180F300 E6007C001024809B11>I<0FC00001C00001C00003800003800003800003800007000007 00000700000700000E07000E08800E11C00E23C01C47801C83001D00001E00003FC00038 E000387000387000707100707100707100707200E03200601C00121D7E9C16>I<1F8003 80038007000700070007000E000E000E000E001C001C001C001C00380038003800380070 00700070007000E200E200E200E40064003800091D7F9C0C>I<381F81F04E20C6184640 E81C4680F01C8F00F01C8E00E01C0E00E01C0E00E01C1C01C0381C01C0381C01C0381C01 C0703803807138038071380380E1380380E2700700643003003820127E9124>I<3C1F00 4E61804681C04701C08F01C08E01C00E01C00E01C01C03801C03801C03801C0700380710 380710380E10380E2070064030038014127E9119>I<0783C009CC6008D03008E03811C0 3811C03801C03C01C03C0380780380780380780380700700F00700E00701C00783800EC7 000E3C000E00000E00001C00001C00001C00001C00003C0000FF0000161A819115>112 D<01E107130E0F1C0F3C0E380E780E780EF01CF01CF01CF01CF038E038E038707831F01E 700070007000E000E000E000E001C00FF8101A7F9113>I<3C3C4E424687470F8E1E8E0C 0E000E001C001C001C001C0038003800380038007000300010127E9113>I<01F0060C0C 040C0E180C1C001F000FE00FF003F80038201C7018F018F010803060601F800F127E9113 >I<1C00C02701C04701C04701C08703808703800E03800E03801C07001C07001C07001C 0700180E20180E20180E201C1E200C264007C38013127E9118>117 D<1C06270F470F470F870387030E010E011C021C021C021C041804180818081C100C2007 C010127E9114>I<1C00C1802701C3C04701C3C04701C3C0870380C0870380C00E038040 0E0380401C0700801C0700801C0700801C07010018060100180601001C0E02001C0F0400 0E13080003E1F0001A127E911E>I<07878008C84010F0C020F1E020E3C040E18000E000 00E00001C00001C00001C00001C000638080F38080F38100E5810084C60078780013127E 9118>I<1C00C02701C04701C04701C08703808703800E03800E03801C07001C07001C07 001C0700180E00180E00180E001C1E000C3C0007DC00001C00001800603800F03000F060 00E0C0004180003E0000121A7E9114>I<1C00270047004700870087000E000E001C001C 001C003800388038807080710032001C0009127E910D>123 D E /Fs 23 121 df0 D<70F8F8F87005057D8C0C>II<003F800000C060 000300180004000400080002001400050022000880210010804080204040404040802080 2080110020800A00208004002080040020800A0020801100208020802040404040408020 4021001080220008801400050008000200040004000300180000C06000003F80001B1C7E 9720>10 D<07E01FF8381C700E6006E007C003C003C003C003E0076006700E381C1FF807 E010107E9115>14 D17 D<000001800000078000001E00000078000001E00000078000000E0000003C000000F000 0003C000000F0000003C000000F0000000F00000003C0000000F00000003C0000000F000 0000380000001E0000000780000001E0000000780000001E000000078000000180000000 0000000000000000000000000000000000000000000000000000000000FFFFFF80FFFFFF 8019247D9920>20 DI<0F8000201FE000203FF0002070780060601E0060 C00F00C0C007C1C08001FF808000FF0080003E000F8000201FE000203FF0002070780060 601E0060C00F00C0C007C1C08001FF808000FF0080003E001B147E9320>25 D<000007003800000E007000003C01E00000F007800001C00E000007803C00001E00F000 003801C00000F007800001C00E000007803C00001E00F000003801C00000F007800000F0 078000003801C000001E00F0000007803C000001C00E000000F0078000003801C000001E 00F0000007803C000001C00E000000F0078000003C01E000000E00700000070038251C7E 972A>28 D<00000030000000001800000000180000000018000000000C000000000C0000 000006000000000300000000038000000000C0FFFFFFFFF8FFFFFFFFF800000000C00000 000380000000030000000006000000000C000000000C0000000018000000001800000000 1800000000300025167E942A>33 D<007FF801FFF80780000E00001C0000380000300000 700000600000E00000C00000C00000FFFFF8FFFFF8C00000C00000E00000600000700000 3000003800001C00000E000007800001FFF8007FF8151A7D961C>50 D<0000600000600000E00000C00001C0000180000380000300000700000600000600000E 00000C00001C0000180000380000300000700000600000E00000C00000C00001C0000180 000380000300000700000600000E00000C00000C00001C00001800003800003000007000 00600000E00000C00000C0000013287A9D00>54 D<0000F8001E037C00230C3C0041903E 0081E01E0081E01F0081E00F00C1E00F8061E0078031E007C019E003C009F001E005F001 C005F0070005FFF80005F0F0008DF0F00089F0F00089F0F00071F0F00001E0F00001E0F0 0001E0780001E0780001E0780061E0F000C1C0F00041C078402180798011803E000E001C 001B1F7E9D1E>60 D<0001FC000007FF0000183F8000300F800070078000E0078000E007 0001E0040001E0000001F0000001F8000000FC0000007E0000003F8000001FE0000007F0 000001F8000000FC000C007C0038003C0070003C0070003C00F0003800F0003800F80070 00F80060007C00C0007F0300003FFC00000FF00000191E7F9C19>83 D91 D100 DI<003C00E001C001800380038003800380 038003800380038003800380038003800380030007001C00F0001C000700030003800380 03800380038003800380038003800380038003800380018001C000E0003C0E297D9E15> II106 DI<1F00308070406060E0E0E0E0E040E000 60007000300018001C003300718061C0E0C0E0E0E0E0E0E060E070C031C0198007000300 018001C000C000E040E0E0E0E0E0C0C041C021801F000B257D9C12>120 D E /Ft 84 127 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0 000E01C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0 000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0 000E01C0000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703 C00E03C00E01800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01 C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01 C07F87F8151D809C17>I<007FC001C1C00303C00703C00E01C00E01C00E01C00E01C00E 01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E 01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D809C17>I<003F07 E00001C09C18000380F018000701F03C000E01E03C000E00E018000E00E000000E00E000 000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C00 0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E 00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D 809C23>I<7070F8F8FCFCFCFC7474040404040404080808081010202040400E0D7F9C15> 34 D<0F0000C0188001C030600380703807806027FF00E0100600E0100E00E0101C00E0 101800E0103800E0103000E01070006020E0007020C0003041C000188380000F0303C000 070620000E0C10000C1C08001C18080038380400303804007038040060380400E0380401 C03804018038040380180807001C0806000C100E0006200C0003C01E217E9E23>37 D<70F8FCFC740404040808102040060D7D9C0C>39 D<00800100020006000C000C001800 18003000300030006000600060006000E000E000E000E000E000E000E000E000E000E000 E000E0006000600060006000300030003000180018000C000C000600020001000080092A 7C9E10>I<8000400020003000180018000C000C00060006000600030003000300030003 800380038003800380038003800380038003800380038003000300030003000600060006 000C000C00180018003000200040008000092A7E9E10>I<000600000006000000060000 000600000006000000060000000600000006000000060000000600000006000000060000 00060000FFFFFFE0FFFFFFE0000600000006000000060000000600000006000000060000 000600000006000000060000000600000006000000060000000600001B1C7E9720>43 D<70F0F8F8780808081010202040050D7D840C>II<70F8F8F870 05057D840C>I<03C00C301818381C300C700E700E700EF00FF00FF00FF00FF00FF00FF0 0FF00FF00FF00FF00FF00FF00F700E700E700E300C381C18180C3007E0101D7E9B15>48 D<010007003F00C700070007000700070007000700070007000700070007000700070007 00070007000700070007000700070007000700FFF80D1C7C9B15>I<07C01830201C401C 400EF00FF80FF80FF80F700F000F001E001E001C00380030007000C00180010002000401 0801100130023FFE7FFEFFFE101C7E9B15>I<07E01870203C201C781E781E781E381E00 1C001C00380030006007C00030001C001C000E000F000F700FF80FF80FF80FF00E401C20 1C183007C0101D7E9B15>I<000C00000C00001C00003C00003C00005C0000DC00009C00 011C00031C00021C00041C000C1C00081C00101C00301C00201C00401C00C01C00FFFFC0 001C00001C00001C00001C00001C00001C00001C0001FFC0121C7F9B15>I<300C3FF83F F03FC020002000200020002000200023E02C303018301C200E000E000F000F000F600FF0 0FF00FF00F800E401E401C2038187007C0101D7E9B15>I<00F0030C06040C0E181E381E 380C700070007000F3E0F430F818F81CF80EF00EF00FF00FF00FF00FF00F700F700F700E 380E381C18180C3003E0101D7E9B15>I<4000007FFF807FFF007FFF0040020080040080 040080080000100000100000200000600000400000C00000C00001C00001800001800003 8000038000038000038000078000078000078000078000078000078000030000111D7E9B 15>I<03E00C301008200C200660066006700670067C0C3E183FB01FE007F007F818FC30 7E601E600FC007C003C003C003C00360026004300C1C1007E0101D7E9B15>I<03C00C30 1818381C700C700EF00EF00EF00FF00FF00FF00FF00F700F701F381F181F0C2F07CF000E 000E000E301C781C78187038207010C00F80101D7E9B15>I<70F8F8F870000000000000 000070F8F8F87005127D910C>I<70F8F8F870000000000000000070F0F8F87808080810 10202040051A7D910C>I61 D<000600000006000000060000000F0000000F0000000F000000178000001780000037C0 000023C0000023C0000043E0000041E0000041E0000080F0000080F0000080F000010078 000100780001FFF80002003C0002003C0002003C0004001E0004001E000C001F000C000F 001E001F00FF00FFF01C1D7F9C1F>65 DI<001F808000E06180 01801980070007800E0003801C0003801C00018038000180780000807800008070000080 F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000070000080 7800008078000080380000801C0001001C0001000E000200070004000180080000E03000 001FC000191E7E9C1E>IIII<001F808000E0618001801980 070007800E0003801C0003801C00018038000180780000807800008070000080F0000000 F0000000F0000000F0000000F0000000F0000000F000FFF0F0000F807000078078000780 78000780380007801C0007801C0007800E00078007000B800180118000E06080001F8000 1C1E7E9C21>III75 DIII<003F800000E0E0000380380007001C000E00 0E001C0007003C00078038000380780003C0780003C0700001C0F00001E0F00001E0F000 01E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C03800 03803C0007801C0007000E000E0007001C000380380000E0E000003F80001B1E7E9C20> II82 D<07E0801C1980300580300380600180E00180E00080E00080E00080F00000F800007C00 007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C08001 C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F 00C0400F0040400F0040C00F0020800F0020800F0020800F0020000F0000000F0000000F 0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F 0000000F0000000F0000000F0000000F0000000F0000001F800003FFFC001B1C7F9B1E> IIIIII<7FFFF07C01F07001E06003 C06003C0400780400F80400F00401E00001E00003C00007C0000780000F00000F00001E0 0003E00003C0100780100780100F00101F00301E00203C00203C00607800E0F803E0FFFF E0141C7E9B19>II<08081010202040404040808080808080 B8B8FCFCFCFC7C7C38380E0D7B9C15>II<0C001E00330061 8080400A057B9B15>I<0810204040808080B8FCFC7C38060D7E9C0C>96 D<0FE0001838003C1C003C0E00180E00000E00000E0001FE000F8E003C0E00780E00700E 00F00E20F00E20F00E20701E203827400FC38013127F9115>II<03F80E0C1C1E381E780C7000F000F000F000F000F000F000 7000780238021C040E1803E00F127F9112>I<001F800003800003800003800003800003 8000038000038000038000038000038003F3800E0B801C0780380380780380700380F003 80F00380F00380F00380F00380F003807003807803803803801C07800E1B8003E3F0141D 7F9C17>I<07E00C301818381C701E700EF00EFFFEF000F000F000F00070007002380218 040E1803E00F127F9112>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE0 0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E007FE00F1D 809C0D>I<00038007E4C00C38C0381C80381C00781E00781E00781E00781E00381C0038 1C001C300037E0002000003000003000003FF8001FFF001FFF803003806001C0C000C0C0 00C0C000C06001803003001C0E0007F800121C7F9215>II<38007C007C007C003800000000000000000000000000FC001C00 1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091D7F9C 0C>I<01C003E003E003E001C000000000000000000000000007E000E000E000E000E000 E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0F0C0F1 C061803E000B25839C0D>IIIII<03F0000E1C00180600380700700380700380F003C0F003C0F003C0F003C0F0 03C0F003C07003807003803807001C0E000E1C0003F00012127F9115>II<03E0800E19801C0580380780780380780380F00380F00380F00380F003 80F00380F003807003807803803807801C07800E1B8003E3800003800003800003800003 80000380000380000380001FF0141A7F9116>II<1F9020704030C010C0 10E010F8007F803FE00FF000F880388018C018C018E010D0608FC00D127F9110>I<0400 0400040004000C000C001C003C00FFE01C001C001C001C001C001C001C001C001C001C10 1C101C101C101C100C100E2003C00C1A7F9910>IIIIII<7FFC70386038407040F040E041C003C0038007000F040E041C043C0C 380870087038FFF80E127F9112>II I<1C043F0843F080E00E047D9B15>126 D E /Fu 1 2 df<387CFEFEFE7C3807077B9111 >1 D E /Fv 36 122 df39 D 46 D<07E00FF01FF83C3C781E700E700EE007E007E007E007E007E007E007E007E007E0 07E007E007700E700E781E3C3C1FF80FF007E0101A7F9813>48 D<01000700FF00FF0007 000700070007000700070007000700070007000700070007000700070007000700070007 007FF07FF00C197D9813>I<07C01FF03878703CE01CE01E401E400E000E000E001E001C 003C0038007000F001E003C0078007000E001C0038007FFE7FFE0F197F9813>I<07E01F F83C3C701C201E200E001E001E001C003C007807F007E007F8003C001E000E000F000F00 0F800FC00E601E383C1FF807E0101A7F9813>I<007800F800B801B801B8033807380738 0E380E381C381C38383878387038F038FFFFFFFF00380038003800380038003810187F97 13>I<3FFC3FFC3800380038003800380038003BC03FF03FF83C3C383C381C001E001E00 1E001E001E401EC03C603878781FE00FC00F197F9713>I<01F807FC0F041C0018003800 7000700071F0E7F8EFFCFC1EF80EF00FE007E007E007E007600770077006300E381C1C38 0FF003E0101A7F9813>II<07E01FF83C3C 381C700E700E700E700E700E381C1E780FF00FF01FF8381C700EE007E007E007E007E007 700E700E3C3C1FF807E0101A7F9813>I<07E00FF01C38381C700C600EE00EE007E007E0 07E007E007F00F701F783F3FF71FE70F86000E000E001C001C103830701FE00F80101A7F 9813>I68 D<007F0001FFE003C0F00F00701E00301C0000 3C0000780000780000780000F00000F00000F00000F00000F00000F007F8F007F8F00038 7800387800387800383C00381C00381E00380F003803C0F801FFE0007F80151C7E9A1A> 71 D75 DII<00FE0003FF8007FFC00F83E01F01F03E00F83C007878003C78003C7800 3CF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001E78003C78003C78003C3C00 783E00F81F01F00F83E007FFC003FF8000FE00171C7E9A1C>79 DI<07F01FFC3C1E700E6006E000E000E000E000F00078007F003FE01FF807FC00FE 001E000F000F000700070007C007C00EE00C783C3FF007E0101C7E9A15>83 DI<0FC03FF07FF87038401C001C001C01FC1FFC7FDCF01C E01CE01CF07C7FFC3FDC1F1C0E117F9012>97 D<07E00FF81FFC3C1C70047000E000E000 E000E000E000700070003C0C1FFC0FFC07F00E117F9011>99 D<000E000E000E000E000E 000E000E000E000E07CE1FEE3FFE7C1E700EF00EE00EE00EE00EE00EE00EF00E701E7C3E 3FFE1FEE078E0F1A7F9914>I<07C01FF03FF078387018E01CFFFCFFFCFFFCE000E00070 0070003C0C3FFC1FFC07F00E117F9011>I105 D108 DII<07E01FF83FFC3C3C700E700EE007E007E007E007E007F00F700E7C3E 3FFC1FF807E010117F9013>II 114 D<1F803FE07FE0E060E000E000F8007F803FC00FE000F000708070E0F0FFE07FC01F 800C117F900F>I<3800380038003800FFC0FFC038003800380038003800380038003800 38003800380038403FE01FE00F800B157F940E>I<700700780E00381C001C3C000E3800 07700003E00003C00001C00003E0000770000E30000C38001C1C00380E00700700F00780 1111809012>120 DI E /Fw 47 122 df<018007800F001E003C00380078007000F000E000E000E000E000E000 E000E000F0007000780038003C001E000F000780018009197B9612>40 DI45 D<70F8F8F87005057A8412>I<07C00FE01C703838701C701CE00EE00EE00EE00EE00EE0 0EE00EE01E701C701C38381C700FE007C00F147F9312>48 D<06000E000E003E00FE00EE 000E000E000E000E000E000E000E000E000E000E000E000E00FFE0FFE00B147D9312>I< 0F803FE070F0F078E038E038403800380078007000F001E003C007800F001E0038387038 FFF8FFF80D147E9312>I<0FC03FF0783C701C701C001C003C007807F007F0003C001C00 0E000EE00EE00EE01CF83C3FF00FC00F147F9312>I<7FF07FF070007000700070007000 70007F807FE060F0007800384038E038E038E07070F03FC01F000D147E9312>53 D<01F007F81E3C3C1C781C7000F000E7C0FFF0F83CF01CF01EE00EE00EF00E701E781C3C 3C1FF007C00F147F9312>II<0038007800F801E007C00F 801F003C00F800F000F8003C001F000F8007C001E000F8007800380D137E9312>60 DII<1F C07FF0F078E038E07800F003E007800700070007000700000000000000000006000F000F 0006000D147E9312>I<03E00FF81E3C3C1C78FE71FEF39EE79EE70EE70EE70EE70EE79E F39C71F878F03C001E0E0FFE03F80F147F9312>I<038007C007C006C006C00EE00EE00E E00EE00C601C701C701C701FF01FF0383838383838FEFEFEFE0F147F9312>I68 D78 D<3FE07FF07070E038E038E038E038E038 E038E038E038E038E038E038E038E038E03870707FF03FE00D147E9312>I82 D88 D91 D93 D<1FC0003FF000383800101C00001C0007FC003FFC00781C00F01C00E01C00E01C00F03C 007FFF801FCF80110E7F8D12>97 DI<07F01FF838387010F000 E000E000E000E000F000703838781FF007E00D0E7E8D12>I<01F801F800380038003800 3807B81FF838787078F038E038E038E038E038F038707878F81FFF0FBF10147F9312>I< 07801FE038F07078F038E038FFF8FFF8E000F000703838781FF007C00D0E7E8D12>I<00 7E01FF03C7038203800380FFFEFFFE03800380038003800380038003800380038003807F FC7FFC1014809312>I<0F9E1FFF38E7707070707070707038E03FC07F8070003FE03FF8 7FFCF01EE00EE00EE00EF01E783C3FF80FE010167F8D12>II<06000F000F000600000000000000FF00 FF000700070007000700070007000700070007000700FFF8FFF80D157D9412>I107 DIII<0F803FE038E07070E038E038E038E038E038F078707038E03FE00F800D0E7E8D12>I< FDF0FFF81F1E1E0E1C0F1C071C071C071C071C0F1E0E1F1C1FF81DE01C001C001C001C00 1C00FF80FF801015808D12>I114 D<1FF07FF0E070C070E000FF003FE00FF00078E018E018 F038FFF0DFC00D0E7E8D12>I<0E000E000E000E00FFF8FFF80E000E000E000E000E000E 000E000E1C0E1C0F3C07F801E00E127F9112>IIIIII E /Fx 34 122 df45 D<78FCFCFCFC7806067E850B>I<07F0001FFC003E3E 007C1F00780F00780F00F80F80F80F80F80F80F80F80F80F80F80F80F80F80F80F80F80F 80780F00780F007C1F003E3E001FFC0007F00011157F9414>48 D<01800780FF80FF8007 8007800780078007800780078007800780078007800780078007800780FFF8FFF80D157D 9414>I<1FC07FF0FCF8FC7CFC7EFC3E783E007E007C007C00F801E001C0038006060C06 180E3FFC7FFCFFFCFFFC0F157E9414>I<0FC01FF038F87C7C7C7C7C7C3CFC10F801F00F E00FE000F8007C787EFC7EFC7EFC7EF87C70F83FF00FC00F157E9414>I<001C00003C00 007C0000FC0001FC0001BC00033C00063C000E3C001C3C00383C00703C00E03C00FFFF80 FFFF80003C00003C00003C00003C0003FF8003FF8011157F9414>I<700C7FFC7FF87FF0 7FE07F006000600067E07FF07878603C003E003E783EF83EF83EF83C70783FF01FC00F15 7E9414>I<03F00FF81E183C3C3C7C787C7838F800FBF0FFF8FC3CF83EF83EF83EF83E78 3E783E783C3C381FF007E00F157E9414>I<60007FFF7FFF7FFE7FFCE018C030C0600060 00C001C003C003800780078007800F800F800F800F800F80070010167E9514>I<07E01F F03838701C701C781C7E1C7FB83FF01FF01FF83BFC70FEE07EE01EE00EE00EF00C781C3F F00FE00F157E9414>I<0FC01FF03C78783CF83CF83CF83EF83EF83EF83E787E3FFE1FBE 003E383C7C3C7C3C787830F03FE00F800F157E9414>I<00060000000F0000000F000000 1F8000001F8000003FC0000037C0000037C0000063E0000063E00000C3F00000C1F00001 C1F8000180F8000180F80003FFFC0003FFFC0006003E0006003E000E003F000C001F00FF 80FFF0FF80FFF01C177F961F>65 DI73 D78 D<07F0801FFF80380F80700380F00380F00180F00180F80000FF80007FF8003FFE001FFF 0007FF80007F80000FC00007C0C003C0C003C0C003C0E00780F80F00FFFE0087F8001217 7E9617>83 D86 D<1FE0003FF8007C3C007C1E007C1E00101E0003FE001FDE007C1E00F81E00F81E00F81E 007C2E007FCFC01F87C0120F7F8E14>97 DI<07F81FFC3E3E7C3E783EF808F800 F800F800F80078007C063E0C1FF807F00F0F7F8E12>I<07F01FF83C1C781E780FF80FFF FFFFFFF800F80078007C033E061FFC03F0100F7F8E13>101 D<00F807FC0F3E1E3E1E3E 1E1C1E001E00FFC0FFC01E001E001E001E001E001E001E001E001E001E001E007F807F80 0F1780960C>I<0FE7001FFF80383B80783F00783C00783C00783C003838001FF0002FE0 002000007000003FF8003FFE001FFF007FFF80E00780E00380E00380780F003FFE000FF8 0011167F8E14>I<3C7E7E7E7E3C000000FCFC3C3C3C3C3C3C3C3C3C3C3CFFFF08187F97 0B>105 D108 DII<07F0001FFC003C1E00780F00780F00F80F80F80F80F80F80 F80F80F80F80780F00780F003C1E001FFC0007F000110F7F8E14>I114 D<1FF07FF06030E030E000FF007FC03FF00FF80078C038C038F070FFE0CFC00D0F7F8E10 >I<0C000C000C001C001C003C00FFE0FFE03C003C003C003C003C003C003C003C303C30 3C303C701FE00F800C157F9410>II121 D E /Fy 10 108 df0 D<60F0F06004047D890A>I<003000 003000003000003000003000003000003000003000003000003000003000FFFFFCFFFFFC 003000003000003000003000003000003000003000003000003000FFFFFCFFFFFC16187E 961B>6 D<00FC0007038008004010002028005024009044008842010881020480840480 480480300480300480480480840481020442010844008824009028005010002008004007 038000FC0016187E931B>10 D<0F803FE070706030E038C018C018C018C018E038603070 703FE00F800D0E7E8E12>14 D<03000000030000000300000006000000060000000C0000 001800000030000000FFFFFFF8FFFFFFF830000000180000000C00000006000000060000 000300000003000000030000001D127D9023>32 D<00FF8003FF800F00001C0000380000 700000600000600000E00000C00000FFFF80FFFF80C00000E00000600000600000700000 3800001C00000F000003FF8000FF8011167D9218>50 D<000300070006000E000C001C00 18003800300070006000E000C001C00180018003800300070006000E000C001C00180038 00300070006000E000C000101E7B9600>54 D<0007F0001FF80060F800C07801C07003C0 4003C00003E00003F00001FC0000FF00003F80000FC00007E00C03E03001E07001E0F001 C0F00180F80300FE0E007FF8001FC0001517809615>83 D107 D E /Fz 79 128 df<00FC000782000E07001C07001C02001C00001C00001C00001C0000 FFFF001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700 1C07007F1FC01217809614>12 D<00FC7E000703C1000E0783801C0703801C0701001C07 00001C0700001C0700001C070000FFFFFF801C0703801C0703801C0703801C0703801C07 03801C0703801C0703801C0703801C0703801C0703801C0703801C0703807F1FCFE01B17 80961D>14 D22 D<1C00183200386180706161F0E09EE0E080C0E081 C0E08180E08380E08700610600610E00321C001C18380038640070C20060C200E1C101C1 C10181C10381C10301C10701C10E00C20C00C21C0064180038181B7E981D>37 D<60F0F070101020204040040A7D960A>39 D<0102040C1818303070606060E0E0E0E0E0 E0E0E0E0E060606070303018180C04020108227D980E>I<8040203018180C0C0E060606 070707070707070707070606060E0C0C18183020408008227E980E>I<00300000300000 3000003000003000003000003000003000003000003000003000FFFFFCFFFFFC00300000 300000300000300000300000300000300000300000300000300000300016187E931B>43 D<60F0F070101020204040040A7D830A>II<60F0F06004047D83 0A>I<0018001800380030003000700060006000E000C001C00180018003800300030007 00060006000E000C000C001C001800380030003000700060006000E000C000C0000D217E 9812>I<07C018303018701C600C600CE00EE00EE00EE00EE00EE00EE00EE00EE00E600C 600C701C30181C7007C00F157F9412>I<06000E00FE000E000E000E000E000E000E000E 000E000E000E000E000E000E000E000E000E000E00FFE00B157D9412>I<0F8030E04070 8070C038E038403800780070007000E000C00180030006000C08180810183FF07FF0FFF0 0D157E9412>I<0FE030706038703C701C003C00380030006007C000700038001C001E00 1EE01EE01EC01C403830700FC00F157F9412>I<00300030007000F001F0017002700470 08701870107020704070C070FFFE0070007000700070007003FE0F157F9412>I<60307F E07FC07F8040004000400040004F8070E040700030003800384038E038E0388030406020 C01F000D157E9412>I<01F00608080C181C301C70006000E000E3E0EC30F018F00CE00E E00EE00E600E600E300C3018183007C00F157F9412>I<40007FFE7FFC7FF8C008801080 200040008000800100030003000200060006000E000E000E000E000E0004000F167E9512 >I<07E018302018600C600C700C78183E101F6007C00FF018F8607C601EC00EC006C006 C004600C38300FE00F157F9412>I<07C0183030186018E00CE00CE00EE00EE00E601E30 1E186E0F8E000E000C001C70187018603020E01F800F157F9412>I<60F0F06000000000 000060F0F060040E7D8D0A>I<60F0F06000000000000060F0F07010102020404004147D 8D0A>I61 D<001000003800003800003800005C00005C00005C00008E00008E00008E00 01070001070002038002038002038007FFC00401C00401C00800E00800E01800F03800F0 FE03FE17177F961A>65 DI<00FC100383300600F01C00701C0030380030780010 700010F00010F00000F00000F00000F00000F00000F000107000107800103800201C0020 1C004006008003830000FC0014177E9619>IIII<007E080381 980700780C00381C0018380018780008700008F00008F00000F00000F00000F00000F003 FEF000387000387800383800381C00380C00380700380380D8007F0817177E961C>III<0FF800E000E000E000E000E000E000E0 00E000E000E000E000E000E000E000E000E000E0E0E0E0E0C1C061801F000D177E9612> IIII< FC00FE1E00381F001017001013801011C01011C01010E010107010103810103810101C10 100E10100F101007101003901001D01001D01000F0100070100030380030FE001017177F 961A>I<00FC000387000E01C01C00E0380070380070780078700038F0003CF0003CF000 3CF0003CF0003CF0003CF0003C7000387800783800703C00F01C00E00E01C003870000FC 0016177E961B>II82 D<0FC4302C601C400CC004C004C004E00070007F 003FE00FF801FC001C000E0006800680068006C004E008D81087E00F177E9614>I<7FFF F86038184038084038088038048038048038040038000038000038000038000038000038 0000380000380000380000380000380000380000380000380000380003FF8016177F9619 >IIII89 DII93 D<3FC0706070302038003803F81E3830387038E039E039E07970FF1F1E100E7F8D12>97 DI<07F01838303870106000E000E000E000E000600070083008183007C00D0E7F 8D10>I<003E00000E00000E00000E00000E00000E00000E00000E00000E0007CE001C3E 00300E00700E00600E00E00E00E00E00E00E00E00E00600E00700E00301E00182E0007CF 8011177F9614>I<0FC0186030307038E018FFF8E000E000E000600070083010183007C0 0D0E7F8D10>I<03E006700E701C201C001C001C001C001C00FF801C001C001C001C001C 001C001C001C001C001C001C001C007F800C1780960B>I<0F9E18E33060707070707070 306018C02F80200060003FE03FF83FFC600EC006C006C006600C38380FE010157F8D12> II<307878300000000000F8383838383838383838383838FE07177F960A>I<0300 078007800300000000000000000000001F80038003800380038003800380038003800380 0380038003800380038003804380E300E7007C00091D82960B>II III<07C018303018600C600CE00EE00EE00EE00EE00E701C3018183007C00F0E7F 8D12>II<07 C2001C2600381E00700E00600E00E00E00E00E00E00E00E00E00600E00700E00301E001C 2E0007CE00000E00000E00000E00000E00000E00003F8011147F8D13>II<1F4060C0C040C0 40E000FF007F801FC001E080608060C060E0C09F000B0E7F8D0E>I<0800080008001800 18003800FFC0380038003800380038003800380038403840384038401C800F000A147F93 0E>IIIIIII< FFFF801101808812>I<60C0F1E0F1E060C00B047D9612>127 D E /FA 54 122 df<0003C001F3C003F3C007F3C00700000E00000E00000E00000E00000E00 000E00000E0000FFF1C0FFF1C0FFF1C00E01C00E01C00E01C00E01C00E01C00E01C00E01 C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0121E809D16>12 D<7878787838307060E005097D9C0C>39 D46 D<010007003F00FF00FF00C7000700070007000700070007000700070007000700070007 000700070007000700070007000700FFF8FFF8FFF80D1C7C9B15>49 D<07C01FF03FF8787C701EE00EE00F400F40070007000F000F000E001E001C0038007000 E001C0038007000E001C0038007000FFFFFFFFFFFF101C7E9B15>I<07C01FF03FF8783C E01E601E400E001E001E001C003C007807F007E007F8003C001E001E000F000F000F000F 800FC01EE01E783C3FF81FF007C0101D7E9B15>I<003C00007C00005C0000DC0001DC00 019C00039C00039C00071C000F1C000E1C001E1C001C1C003C1C00781C00701C00F01C00 FFFFC0FFFFC0FFFFC0001C00001C00001C00001C00001C00001C00001C00121B7F9A15> I<3FFF003FFF003FFF0038000038000038000038000038000038000039F0003FF8003FFC 003F1E003C0F003C0F00380780000780000780000780000780000780400780600F00F00F 00783E003FFC001FF80007E000111C7F9A15>I<00F803FC07FC0F041C00380038007000 700071F0E7F8EFFCFC3CF80EF00EF007E007E007E007E007E00770077007700E381E3C3C 1FF80FF003E0101D7E9B15>II<07E01FF83FFC781E700EE007E007E007E007E007700E3C3C1FF807E01FF83C3C700E 700EE007E007E007E007E007700E700E3C3C3FFC1FF807E0101D7E9B15>I<001C000000 3E0000003E0000002E0000006700000067000000E7800000C7800000C3800001C3C00001 83C0000181C0000381E0000301E0000700F0000700F0000600F0000E0078000FFFF8000F FFF8001FFFFC001C003C0018003C0038001E0038001E0070001F0070000F0060000F00E0 000780191D7F9C1C>65 D<003FC001FFF803FFF807C0780F00001E00003E00003C000078 0000780000780000F00000F00000F00000F00000F00000F00000F00000F00000F0000078 00007800007800003C00003E00001E00000F000807C07803FFF801FFF0003F80151F7D9D 1B>67 DIII<003F C000FFF803FFFC07E07C0F800C1F00001E00003C00003C0000780000780000F00000F000 00F00000F00000F00000F00000F003FCF003FCF003FC78001C78001C3C001C3C001C1E00 1C1F001C0F801C07E03C03FFFC00FFF8003FC0161F7E9D1C>III75 DIII<003F000001 FFE00003FFF00007C0F8000F807C001E001E003E001F003C000F00780007807800078078 000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F8 0007C078000780780007807C000F803C000F003E001F001F003E000F807C0007C0F80003 FFF00001FFE000003F00001A1F7E9D1F>II82 D<03F8000FFE001FFF00 3E0F00780300780000F00000F00000F00000F00000F800007C00007F00003FE0001FFC00 07FE0001FF00001F800007800007C00003C00003C00003C00003C00003C0C00780E00780 FC1F007FFE001FFC0007F000121F7E9D17>III87 D<0FC03FF07FF87038401C001C001C00FC0FFC3FFC781CE01CE01CE01CF07C7FFC7FDC3F 1C0E127E9114>97 DI<03F00FFC1FFE3C0E78027000E000E000E000E000E000E000700078023C0E1FFE0FFC 03F00F127F9112>I<0007000700070007000700070007000700070007000707C71FF73F FF3C1F78077007E007E007E007E007E007E0077007780F3C1F3FFF1FF707C7101D7F9C15 >I<07E00FF03FF83C3C700C700EFFFEFFFEFFFEE000E000E000700078023C0E1FFE0FFC 03F00F127F9112>I<00FC01FC03FC07000E000E000E000E000E000E000E00FFE0FFE0FF E00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E1D809C0D >I<07C3C00FFFC01FFFC0383800701C00701C00701C00701C00701C003838003FF0003F E00077C0007000007000003FFC003FFF007FFF80700780E001C0E001C0E001C0F003C07C 0F803FFF001FFE0007F800121B7F9115>III<03C003C003C003C0000000000000000000000000000001C001 C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001 C001C001C0C3C0FF80FF003E000A25839C0B>IIIII<03F0000FFC001FFE00 3C0F00780780700380E001C0E001C0E001C0E001C0E001C0F003C07003807807803C0F00 1FFE000FFC0003F00012127F9115>II114 D<1FC03FF07FF0F030E000E000F0007F003FC01FE001F00038 00388038F078FFF07FE01FC00D127F9110>I<1C001C001C001C001C001C00FFE0FFE0FF E01C001C001C001C001C001C001C001C001C001C001C001C201FF00FF007C00C187F970F >IIII<7003807807003C0E001C1C000E 1C0007380003F00001E00001C00001E00003F0000738000618000E1C001C0E0038070070 0380F003C01212809113>II E /FB 21 121 df<00007FE0000003FFFC00000FFFFF80001FFFFFC0003FFFFFC0007FC0 3FC001FF00078001FC00018003F800008007F00000000FE00000000FC00000001FC00000 001F800000003F000000003F000000007F000000007E000000007E000000007E00000000 FE00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC 00000000FC00000000FC00000000FC00000000FE000000007E000000007E000000007E00 0000007F000000003F000000003F000000001F800000001FC00000000FC00000000FE000 000007F000000003F800002001FC0000E001FF0003E0007FC01FE0003FFFFFE0001FFFFF C0000FFFFF000003FFFC0000007FE00023347CB22B>67 DI77 D<001FF000007FFE0001FFFF0003FFFFC007FFFFE00FF01F E01FC003E01F8001C03F0000C03F0000407E0000007E0000007E0000007E0000007E0000 007E0000007F0000003F0000003F8000003F8000001FE000000FFC00000FFF800007FFF0 0003FFFC0000FFFE00003FFF000007FF800000FFC000001FE000000FE0000007F0000003 F0000003F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8400003 F0600003F0700007F0FC0007E0FF000FC0FFE03FC07FFFFF801FFFFF000FFFFE0001FFF8 00003FE0001D347DB225>83 D85 D<007F8003FFE00FFFF01FFFF8 1FFFFC1F00FE1C007E10007F00003F00003F00003F00003F00003F000FFF00FFFF07FFFF 1FFFFF3FE03F7F803F7E003FFC003FFC003FFC003FFC007FFE00FF7F83FF7FFFFF3FFFFF 1FFFBF0FFE3F07F03F181F7E9E20>97 D<001FE00000FFFC0001FFFF0007FFFF800FFFFF 800FF01F801FC007003F8001003F0000007E0000007E000000FE000000FC000000FC0000 00FC000000FC000000FC000000FC000000FC000000FE0000007E0000007E0000003F0000 003F8000801FC003800FF01F800FFFFF8007FFFF8001FFFF0000FFFC00001FE000191F7E 9E1E>99 D<000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007 E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007 E0000007E0000007E0007E07E001FFC7E007FFF7E00FFFFFE00FFFFFE01FF03FE03FC00F E03F8007E07F0007E07E0007E07E0007E0FE0007E0FC0007E0FC0007E0FC0007E0FC0007 E0FC0007E0FC0007E0FC0007E0FC0007E07E0007E07E0007E07F0007E03F000FE03FC01F E01FF07FE01FFFFFE00FFFF7E007FFE7E001FF87E0007E07E01B327EB123>I<003F8000 00FFE00003FFF80007FFFC000FFFFC001FE0FE003F807E003F003F007F001F007E001F00 7E000F80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FC000000FC000000FC000000FC000000 FC0000007E0000007E0000003F0000003F8000801FC003801FF01F800FFFFF8007FFFF80 01FFFF0000FFFC00001FE000191F7E9E1E>I<0007FC001FFC003FFC00FFFC00FFFC01FC 0003F00003E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E0 0007E000FFFFC0FFFFC0FFFFC0FFFFC007E00007E00007E00007E00007E00007E00007E0 0007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E0 0007E00007E00007E00007E00007E00007E00007E00007E00016327FB115>I104 DI109 D I<001FC00000FFF80001FFFC0007FFFF000FFFFF801FF07FC01FC01FC03F0007E03F0007 E07E0003F07E0003F07C0001F0FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001 F8FC0001F8FE0003F87E0003F07E0003F03F0007E03F800FE01FC01FC01FF07FC00FFFFF 8007FFFF0001FFFC0000FFF800001FC0001D1F7E9E22>II114 D<01FF000FFFE01FFFF83FFFF87FFFF87E00F0FC0010FC0000FC0000FC0000FE0000FF00 007FF8003FFF001FFFC00FFFE007FFF000FFF8000FF80001FC0000FC0000FC0000FC4000 FC7001FCFE03F8FFFFF8FFFFF07FFFE01FFFC001FE00161F7E9E1A>I<07E00007E00007 E00007E00007E00007E00007E00007E00007E000FFFFE0FFFFE0FFFFE0FFFFE007E00007 E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007 E00007E00007E00007E00007E00007E00007E00007F02007F0E003FFF003FFF003FFF001 FFC000FE0014287FA718>II<7F0003F83F0007F03F800FE01FC00FC00FE01FC007E03F8007F07F0003F87E00 01FCFC0000FDFC00007FF800007FF000003FE000001FE000000FC000000FC000001FE000 003FE000007FF000007DF80000FCFC0001F87E0003F07E0003F03F0007E01F800FC01FC0 1FC00FC01F8007E03F0007F07F0003F8FE0001FC1E1F809E1F>120 D E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%PaperSize: A4 %%EndSetup %%Page: 1 1 1 0 bop 225 194 a FB(Computation)24 b(and)e(Uses)g(of)g(the)h (Semidiscrete)i(Matrix)225 277 y(Decomp)r(osition)225 394 y FA(T)m(ama)o(ra)12 b(G.)i(Kolda)225 452 y(Sandia)h(National)f (Lab)q(o)o(rato)o(ries)225 510 y(and)225 568 y(Dianne)h(P)m(.)d(O'Lea)o (ry)225 626 y(Universit)o(y)i(of)g(Ma)o(ryland)p 225 752 1495 1 v 225 835 a Fz(W)m(e)g(deriv)o(e)d(algorithms)g(for)i (computing)d(a)j(semidiscrete)d(appro)o(ximatio)o(n)g(to)j(a)h(matrix)d (in)i(the)g(F)m(rob)q(enius)225 876 y(and)c(w)o(eigh)o(ted)f(norms.)13 b(The)d(appro)o(ximatio)o(n)d(is)j(formed)e(as)h(a)h(w)o(eigh)o(ted)e (sum)h(of)h(outer)e(pro)q(ducts)g(of)h(v)o(ectors)225 918 y(whose)14 b(elemen)o(ts)f(are)h Fy(\006)p Fz(1)h(or)f(0,)i(so)e (the)g(storage)f(required)g(b)o(y)h(the)g(appro)o(ximat)o(ion)d(is)k (quite)f(small.)23 b(W)m(e)225 959 y(also)10 b(presen)o(t)f(a)h (related)f(algorithm)e(for)j(appro)o(ximatio)o(n)e(of)i(a)g(tensor.)k (Applications)8 b(of)i(the)g(algorithms)d(are)225 1001 y(presen)o(ted)i(to)i(data)g(compression)o(,)e(\014ltering,)g(and)i (information)d(retriev)n(al;)i(and)g(soft)o(w)o(are)h(is)g(pro)o(vided) f(in)h(C)225 1042 y(and)g(in)g(Matlab.)225 1128 y(Categories)h(and)i (Sub)r(ject)e(Descriptors:)18 b(G.1.2)13 b([)p Fx(Numerical)h(Analysis) p Fz(]:)21 b(Appro)o(ximatio)o(n;)13 b(H.3.3)g([)p Fx(In-)225 1170 y(formation)g(Systems)p Fz(]:)h(Informatio)o(n)9 b(Searc)o(h)g(and)i(Retriev)n(al)225 1231 y(General)f(T)m(erms:)k (Matrix)d(Decomp)q(ositio)o(n)225 1292 y(Additional)e(Key)h(W)m(ords)h (and)f(Phrases:)j(Singular)c(V)m(alue)h(Decomp)q(osition)o(,)e (Semidiscrete)g(Decomp)q(ositi)o(on,)225 1333 y(Laten)o(t)i(Seman)o (tic)f(Indexing,)g(Compression)p 225 1386 V 225 1484 V 225 1524 a(Kolda's)i(w)o(ork)h(w)o(as)g(p)q(erformed)d(while)i(she)h (w)o(as)g(a)g(p)q(ostdo)q(ctora)o(l)d(fello)o(w)j(at)f(Oak)h(Ridge)f (National)f(Lab)q(ora-)225 1565 y(tory)g(and)g(w)o(as)i(supp)q(orted)c (through)h(the)i(Applied)f(Mathematical)e(Sciences)h(Researc)o(h)g (Program,)g(O\016ce)j(of)225 1607 y(Energy)g(Researc)o(h,)g(U.S.)h (Departmen)o(t)d(of)j(Energy)m(,)f(under)g(con)o(tract)f(DE-A)o (C05-96OR22464)g(with)j(Lo)q(c)o(k-)225 1648 y(heed)e(Martin)g(Energy)f (Researc)o(h)g(Corp)q(oration.)17 b(O'Leary's)12 b(w)o(ork)h(w)o(as)g (supp)q(orted)d(b)o(y)j(the)f(National)g(Sci-)225 1690 y(ence)g(F)m(oundation)e(under)i(Gran)o(t)g(CCR-97-32022)f(and)h(b)o(y) h(the)f(Departemen)o(t)e(Informatik,)g(ETH)15 b(Z)q(\177)-19 b(uric)o(h,)225 1731 y(Switzerland.)225 1773 y(Name:)15 b(T)m(amara)10 b(G.)h(Kolda)225 1856 y(Address:)21 b(Computationa)o(l) 12 b(Science)h(and)h(Mathematics)e(Departmen)o(t,)h(Sandia)f(National)i (Lab)q(oratories,)225 1897 y(Liv)o(ermore,)9 b(CA)k(94551-9214)o(,)c Fw(tgkolda@sa)o(nd)o(ia.)o(gov)o Fz(.)225 1980 y(Name:)15 b(Dianne)10 b(P)m(.)h(O'Leary)225 2063 y(Address:)17 b(Computer)11 b(Science)g(Departmen)o(t)f(and)i(Institute)e(for)j(Adv)n (anced)e(Computer)g(Studies,)g(Univ)o(er-)225 2105 y(sit)o(y)g(of)g (Maryland,)f(College)g(P)o(ark,)h(MD)h(20742,)d Fw(oleary@cs.um)o(d.)o (edu)o Fz(.)225 2188 y(P)o(ermission)e(to)h(mak)o(e)g(digital)f(or)i (hard)f(copies)g(of)g(part)g(or)h(all)g(of)f(this)h(w)o(ork)f(for)h(p)q (ersonal)e(or)i(classro)q(om)d(use)j(is)225 2229 y(gran)o(ted)d (without)h(fee)g(pro)o(vided)f(that)h(copies)g(are)g(not)g(made)g(or)g (distributed)f(for)h(pro\014t)g(or)g(direct)g(commercial)225 2271 y(adv)n(an)o(tage)j(and)j(that)f(copies)g(sho)o(w)h(this)g(notice) f(on)g(the)h(\014rst)g(page)f(or)h(initial)e(screen)h(of)h(a)g(displa)o (y)f(along)225 2312 y(with)g(the)f(full)g(citation.)k(Cop)o(yrigh)o(ts) 10 b(for)h(comp)q(onen)o(ts)e(of)j(this)f(w)o(ork)h(o)o(wned)f(b)o(y)h (others)e(than)h(A)o(CM)j(m)o(ust)225 2354 y(b)q(e)f(honored.)21 b(Abstracting)12 b(with)h(credit)g(is)h(p)q(ermitted.)20 b(T)m(o)14 b(cop)o(y)f(otherwise,)g(to)g(republish,)f(to)i(p)q(ost)f (on)225 2395 y(serv)o(ers,)8 b(to)i(redistribute)c(to)j(lists,)h(or)f (to)g(use)g(an)o(y)g(comp)q(onen)o(t)d(of)k(this)f(w)o(ork)g(in)g (other)g(w)o(orks,)g(requires)f(prior)225 2437 y(sp)q(eci\014c)13 b(p)q(ermission)e(and/or)i(a)h(fee.)23 b(P)o(ermissions)12 b(ma)o(y)h(b)q(e)h(requested)e(from)h(Publications)e(Dept,)j(A)o(CM)225 2478 y(Inc.,)9 b(1515)f(Broadw)o(a)o(y)m(,)g(New)j(Y)m(ork,)e(NY)i (10036)d(USA,)i(fax)e(+1)i(\(212\))e(869-0481,)f(or)i Fw(permissions)o(@ac)o(m.o)o(rg)p Fz(.)p eop %%Page: 2 2 2 1 bop 225 125 a Fv(2)71 b Fu(\001)78 b Fv(T.)13 b(G.)f(Kolda)g(and)h (D.)f(P)m(.)g(O'Lea)o(ry)225 233 y FA(1.)20 b(INTRODUCTION)225 299 y Ft(A)14 b(semidiscrete)h(decomp)q(osition)e(\(SDD\))h(appro)o (ximates)f(a)h(matrix)e(as)i(a)g(w)o(eigh)o(ted)h(sum)e(of)225 349 y(outer)19 b(pro)q(ducts)g(formed)e(b)o(y)h(v)o(ectors)h(with)f(en) o(tries)h(constrained)g(to)f(b)q(e)h(in)e(the)i(set)g Fs(S)j Ft(=)225 399 y Fs(f\000)p Ft(1)p Fr(;)7 b Ft(0)p Fr(;)g Ft(1)p Fs(g)p Ft(.)20 b(O'Leary)15 b(and)h(P)o(eleg)f([1983])e (in)o(tro)q(duced)j(the)g(SDD)f(in)g(the)h(con)o(text)g(of)e(image)225 449 y(compression,)d(and)g(Kolda)g(and)g(O'Leary)g([1998,)f(1999])g (used)i(the)g(SDD)e(for)h(laten)o(t)g(seman)o(tic)225 498 y(indexing)i(\(LSI\))h(in)g(information)d(retriev)n(al;)i(these)i (applications)e(are)i(discussed)g(in)f Fs(x)p Ft(5.)267 548 y(The)i(primary)f(adv)n(an)o(tage)g(of)h(the)g(SDD)g(o)o(v)o(er)g (other)h(t)o(yp)q(es)g(of)f(matrix)e(appro)o(ximations)225 598 y(suc)o(h)d(as)f(the)h(truncated)g(singular)f(v)n(alue)f(decomp)q (osition)g(\(SVD\))h(is)g(that,)g(as)h(w)o(e)f(will)f(demon-)225 648 y(strate)k(with)f(n)o(umerical)f(examples)h(in)f Fs(x)p Ft(7,)i(it)f(t)o(ypically)f(pro)o(vides)h(a)g(more)f(accurate)j (appro)o(x-)225 698 y(imation)d(for)j(far)f(less)i(storage.)267 747 y(W)m(e)d(describ)q(e)i(the)g(SDD,)e(ho)o(w)g(to)h(calculate)f(it,) h(and)f(its)h(prop)q(erties)h(in)f Fs(x)p Ft(2.)k(The)d Fq(weighte)n(d)225 797 y Ft(and)g Fq(tensor)f Ft(SDDs)h(are)g(presen)o (ted)i(in)e Fs(x)p Ft(3)g(and)g Fs(x)p Ft(4,)f(resp)q(ectiv)o(ely)m(.) 267 847 y(A)18 b(storage-e\016cien)o(t)g(implemen)o(tation)d(for)i(the) i(SDD)e(is)h(presen)o(ted)i(in)d Fs(x)p Ft(6.)31 b(Numerical)225 897 y(results)15 b(with)f(our)f(soft)o(w)o(are)h(are)h(presen)o(ted)h (in)d Fs(x)p Ft(7.)225 988 y FA(2.)20 b(THE)14 b(SDD)225 1054 y Ft(An)g(SDD)f(of)h(an)f Fr(m)d Fs(\002)f Fr(n)14 b Ft(matrix)e Fr(A)i Ft(is)g(a)g(decomp)q(osition)e(of)h(the)i(form)397 1215 y Fr(A)428 1221 y Fp(k)461 1215 y Ft(=)535 1181 y Fo(\002)558 1215 y Fr(x)582 1221 y Fn(1)613 1215 y Fr(x)637 1221 y Fn(2)668 1215 y Fs(\001)7 b(\001)g(\001)k Fr(x)753 1221 y Fp(k)779 1181 y Fo(\003)858 1094 y(2)858 1167 y(6)858 1192 y(6)858 1217 y(6)858 1244 y(4)892 1126 y Fr(d)914 1132 y Fn(1)954 1126 y Ft(0)22 b Fs(\001)7 b(\001)g(\001)22 b Ft(0)902 1176 y(0)g Fr(d)967 1182 y Fn(2)997 1176 y Fs(\001)7 b(\001)g(\001)22 b Ft(0)906 1220 y(.)906 1237 y(.)906 1253 y(.)959 1220 y(.)959 1237 y(.)959 1253 y(.)1000 1224 y(.)1016 1237 y(.)1032 1249 y(.)1073 1220 y(.)1073 1237 y(.)1073 1253 y(.)902 1303 y(0)31 b(0)22 b Fs(\001)7 b(\001)g(\001)k Fr(d)1080 1309 y Fp(k)1106 1094 y Fo(3)1106 1167 y(7)1106 1192 y(7)1106 1217 y(7)1106 1244 y(5)1168 1094 y(2)1168 1167 y(6)1168 1192 y(6)1168 1217 y(6)1168 1244 y(4)1202 1126 y Fr(y)1223 1111 y Fp(T)1222 1136 y Fn(1)1202 1176 y Fr(y)1223 1161 y Fp(T)1222 1186 y Fn(2)1220 1220 y Ft(.)1220 1237 y(.)1220 1253 y(.)1202 1303 y Fr(y)1223 1288 y Fp(T)1222 1315 y(k)1256 1094 y Fo(3)1256 1167 y(7)1256 1192 y(7)1256 1217 y(7)1256 1244 y(5)1296 1215 y Ft(=)1361 1163 y Fp(k)1341 1176 y Fo(X)1344 1264 y Fp(i)p Fn(=1)1408 1215 y Fr(d)1430 1221 y Fp(i)1443 1215 y Fr(x)1467 1221 y Fp(i)1480 1215 y Fr(y)1501 1198 y Fp(T)1500 1225 y(i)1535 1215 y Fr(:)506 1370 y Fo(|)p 525 1370 122 5 v 122 w({z)p 685 1370 V 122 w(})643 1410 y Fp(X)670 1414 y Fm(k)837 1370 y Fo(|)p 856 1370 V 122 w({z)p 1016 1370 V 122 w(})973 1410 y Fp(D)1000 1414 y Fm(k)1177 1370 y Fo(|)p 1196 1370 12 5 v 12 w({z)p 1246 1370 V 12 w(})1201 1414 y Fp(Y)1227 1404 y Fm(T)1221 1425 y(k)225 1489 y Ft(Here)k(eac)o(h)g Fr(x)441 1495 y Fp(i)469 1489 y Ft(is)f(an)g Fr(m)p Ft(-v)o(ector)h (with)f(en)o(tries)h(from)e(the)i(set)g Fs(S)g Ft(=)e Fs(f\000)p Ft(1)p Fr(;)7 b Ft(0)p Fr(;)g Ft(1)p Fs(g)p Ft(,)k(eac)o(h)k Fr(y)1605 1495 y Fp(i)1633 1489 y Ft(is)g(an)225 1539 y Fr(n)p Ft(-v)o(ector)g(with)f(en)o(tries)i(from)d(the)i(set)h Fs(S)s Ft(,)e(and)h(eac)o(h)g Fr(d)1107 1545 y Fp(i)1135 1539 y Ft(is)f(a)h(p)q(ositiv)o(e)f(scalar.)20 b(W)m(e)14 b(call)g(this)225 1589 y(a)g Fr(k)q Ft(-term)f(SDD.)267 1639 y(Although)g(ev)o(ery)i(matrix)d(can)i(b)q(e)g(expressed)i(as)e (an)g Fr(mn)p Ft(-term)f(SDD)788 1744 y Fr(A)f Ft(=)890 1692 y Fp(m)874 1705 y Fo(X)878 1793 y Fp(i)p Fn(=1)961 1692 y Fp(n)941 1705 y Fo(X)943 1793 y Fp(j)r Fn(=1)1008 1744 y Fr(a)1030 1750 y Fp(ij)1059 1744 y Fr(e)1078 1750 y Fp(i)1093 1744 y Fr(e)1112 1727 y Fp(T)1112 1754 y(j)1145 1744 y Fr(;)225 1860 y Ft(where)h Fr(e)362 1866 y Fp(k)395 1860 y Ft(is)g(the)f Fr(k)q Ft(-th)h(unit)f(v)o(ector,)h(the)f (usefulness)i(of)e(the)h(SDD)e(is)h(in)g(dev)o(eloping)g(appro)o(x-)225 1910 y(imations)g(that)i(ha)o(v)o(e)f(far)h(few)o(er)g(terms.)267 1960 y(Since)f(the)g(storage)g(requiremen)o(t)g(for)g(a)f Fr(k)q Ft(-term)g(SDD)g(is)h Fr(k)h Ft(\015oating)e(p)q(oin)o(t)g(n)o (um)o(b)q(ers)g(plus)225 2010 y Fr(k)q Ft(\()p Fr(m)s Ft(+)s Fr(n)p Ft(\))e(en)o(tries)i(from)d Fs(S)s Ft(,)i(it)f(is)g (inexp)q(ensiv)o(e)h(to)g(store)g(quite)g(a)f(large)g(n)o(um)o(b)q(er)g (of)g(terms.)17 b(F)m(or)225 2060 y(example,)10 b(for)i(a)g(dense,)h (single)e(precision)i(matrix)d(of)h(size)h(10)p Fr(;)7 b Ft(000)e Fs(\002)g Ft(10)p Fr(;)i Ft(000,)i(almost)h(80)p Fr(;)d Ft(000)225 2110 y(SDD)17 b(terms)h(can)g(b)q(e)h(stored)g(in)e (the)i(space)g(of)e(the)h(original)f(data,)h(and)f(almost)f(160)p Fr(;)7 b Ft(000)225 2159 y(terms)14 b(can)g(b)q(e)g(stored)h(for)f(a)f (double)h(precision)g(matrix)e(of)i(the)g(same)f(size.)225 2242 y FA(2.1)20 b(Computing)13 b(an)h(SDD)225 2309 y Ft(An)h(SDD)f(appro)o(ximation)e(can)j(b)q(e)g(formed)f(iterativ)o(ely) g(via)g(a)h(greedy)g(algorithm.)k(Let)c Fr(A)1699 2315 y Fp(k)225 2358 y Ft(denote)e(the)g Fr(k)q Ft(-term)f(appro)o(ximation) e(\()p Fr(A)885 2364 y Fn(0)915 2358 y Fs(\021)i Ft(0\).)17 b(Let)c Fr(R)1130 2364 y Fp(k)1163 2358 y Ft(b)q(e)g(the)g Fq(r)n(esidual)f Ft(at)g(the)h Fr(k)q Ft(th)g(step;)225 2408 y(that)h(is,)g Fr(R)401 2414 y Fp(k)433 2408 y Ft(=)e Fr(A)e Fs(\000)f Fr(A)590 2414 y Fp(k)q Fl(\000)p Fn(1)653 2408 y Ft(.)19 b(Then)c(the)g(optimal)c(c)o(hoice)k(of)f(the)g(next)h (triplet)f(\()p Fr(d)1519 2414 y Fp(k)1539 2408 y Fr(;)7 b(x)1582 2414 y Fp(k)1602 2408 y Fr(;)g(y)1641 2414 y Fp(k)1661 2408 y Ft(\))14 b(is)225 2458 y(the)g(solution)g(to)f(the)i (subproblem)408 2532 y(min)h Fr(F)522 2538 y Fp(k)542 2532 y Ft(\()p Fr(d;)7 b(x;)g(y)q Ft(\))k Fs(\021)h(k)p Fr(R)787 2538 y Fp(k)816 2532 y Fs(\000)d Fr(dxy)924 2515 y Fp(T)951 2532 y Fs(k)972 2515 y Fn(2)972 2543 y Fp(F)1036 2532 y Ft(s.t.)18 b Fr(x)11 b Fs(2)g(S)1212 2515 y Fp(m)1244 2532 y Fr(;)18 b(y)c Fs(2)d(S)1375 2515 y Fp(n)1398 2532 y Fr(;)18 b(d)11 b(>)h Ft(0)p Fr(:)128 b Ft(\(1\))p eop %%Page: 3 3 3 2 bop 965 125 a Fv(Semidiscrete)12 b(Matrix)g(Decomp)q(osition)77 b Fu(\001)70 b Fv(3)225 233 y Ft(This)13 b(is)g(a)g(mixed)f(in)o(teger) i(programming)c(problem.)16 b(Note)e(that)f(if)g(the)h(in)o(teger)g (constrain)o(ts)225 283 y(w)o(ere)19 b(replaced)g(b)o(y)f Fs(k)p Fr(x)p Fs(k)g Ft(=)i(1)d(and)i Fs(k)p Fr(y)q Fs(k)g Ft(=)g(1,)f(the)h(solution)f(w)o(ould)f(b)q(e)i(the)g(rank-1)e(SVD)225 332 y(appro)o(ximation)11 b(to)j Fr(R)585 338 y Fp(k)605 332 y Ft(.)267 382 y(W)m(e)f(can)h(simplify)d(the)k(optimization)c (problem)h(sligh)o(tly)h(as)h(follo)o(ws.)267 458 y Fk(Theorem)21 b(1.)g Fq([O'L)n(e)n(ary)12 b(and)j(Pele)n(g)e(1983])h(Solving)g(the)f (mixe)n(d)h(inte)n(ger)e(pr)n(o)n(gr)n(am)h(\(1\))h(is)225 507 y(e)n(quivalent)h(to)g(solving)g(the)g(inte)n(ger)f(pr)n(o)n(gr)n (am)479 608 y Ft(max)584 598 y(~)575 608 y Fr(F)602 614 y Fp(k)622 608 y Ft(\()p Fr(x;)7 b(y)q Ft(\))12 b Fs(\021)g Ft(max)874 580 y(\()p Fr(x)914 565 y Fp(T)940 580 y Fr(R)972 586 y Fp(k)992 580 y Fr(y)q Ft(\))1029 565 y Fn(2)p 874 599 175 2 v 878 637 a Fs(k)p Fr(x)p Fs(k)944 622 y Fn(2)944 648 y(2)963 637 y Fs(k)p Fr(y)q Fs(k)1026 622 y Fn(2)1026 648 y(2)1092 608 y Ft(s.t.)18 b Fr(x)11 b Fs(2)g(S)1268 591 y Fp(m)1300 608 y Fr(;)18 b(y)c Fs(2)d(S)1431 591 y Fp(n)1454 608 y Fr(:)200 b Ft(\(2\))267 709 y Fk(Pr)o(oof.)21 b Ft(W)m(e)14 b(can)g(eliminate)e Fr(d)h Ft(as)h(follo)o(ws.)j(First)d (rewrite)h Fr(F)1266 715 y Fp(k)1286 709 y Ft(\()p Fr(d;)7 b(x;)g(y)q Ft(\))13 b(as)550 784 y Fr(F)577 790 y Fp(k)597 784 y Ft(\()p Fr(d;)7 b(x;)g(y)q Ft(\))k(=)h Fs(k)p Fr(R)842 790 y Fp(k)861 784 y Fs(k)882 767 y Fn(2)882 794 y Fp(F)919 784 y Fs(\000)d Ft(2)p Fr(dx)1027 767 y Fp(T)1053 784 y Fr(R)1085 790 y Fp(k)1105 784 y Fr(y)i Ft(+)e Fr(d)1199 767 y Fn(2)1217 784 y Fs(k)p Fr(x)p Fs(k)1283 767 y Fn(2)1283 794 y(2)1301 784 y Fs(k)p Fr(y)q Fs(k)1364 767 y Fn(2)1364 794 y(2)1383 784 y Fr(:)271 b Ft(\(3\))225 860 y(A)o(t)14 b(the)g(optimal)e(solution,)g Fr(@)r(F)728 866 y Fp(k)749 860 y Fr(=@)r(d)f Ft(=)h(0,)h(so)h(the)g(optimal)e(v)n(alue)h(of)g Fr(d)h Ft(is)f(giv)o(en)h(b)o(y)831 963 y Fr(d)853 946 y Fl(\003)883 963 y Ft(=)953 935 y Fr(x)977 920 y Fp(T)1002 935 y Fr(R)1034 941 y Fp(k)1054 935 y Fr(y)p 932 953 166 2 v 932 991 a Fs(k)p Fr(x)p Fs(k)998 977 y Fn(2)998 1002 y(2)1015 991 y Fs(k)p Fr(y)q Fs(k)1078 977 y Fn(2)1078 1002 y(2)1102 963 y Fr(:)225 1063 y Ft(Substituting)g Fr(d)485 1048 y Fl(\003)517 1063 y Ft(in)g(\(3\))g(yields)659 1166 y Fr(F)686 1172 y Fp(k)706 1166 y Ft(\()p Fr(d)744 1149 y Fl(\003)763 1166 y Fr(;)7 b(x;)g(y)q Ft(\))k(=)h Fs(k)p Fr(R)970 1172 y Fp(k)990 1166 y Fs(k)1011 1149 y Fn(2)1011 1176 y Fp(F)1048 1166 y Fs(\000)1094 1138 y Ft(\()p Fr(x)1134 1123 y Fp(T)1160 1138 y Fr(R)1192 1144 y Fp(k)1212 1138 y Fr(y)q Ft(\))1249 1123 y Fn(2)p 1094 1157 175 2 v 1098 1195 a Fs(k)p Fr(x)p Fs(k)1164 1180 y Fn(2)1164 1206 y(2)1182 1195 y Fs(k)p Fr(y)q Fs(k)1245 1180 y Fn(2)1245 1206 y(2)1274 1166 y Fr(:)380 b Ft(\(4\))225 1267 y(Th)o(us)14 b(solving)f(\(1\))h(is)g(equiv)n(alen)o(t)f(to)g (solving)g(\(2\).)p 1071 1242 29 2 v 1071 1267 2 25 v 1097 1267 V 1071 1269 29 2 v 267 1342 a(The)h(in)o(teger)g(program)e (\(2\))i(has)g(3)817 1327 y Fn(\()p Fp(m)p Fn(+)p Fp(n)p Fn(\))934 1342 y Ft(feasible)f(p)q(oin)o(ts,)h(so)f(the)i(cost)f(of)f (an)h(exhaustiv)o(e)225 1392 y(searc)o(h)19 b(for)e(the)h(optimal)c (solution)j(gro)o(ws)g(exp)q(onen)o(tially)f(with)i Fr(m)f Ft(and)g Fr(n)p Ft(.)29 b(Rather)17 b(than)225 1442 y(doing)c(this,)g (w)o(e)i(use)f(an)g Fq(alternating)h(algorithm)e Ft(to)g(generate)j(an) d Fq(appr)n(oximate)h Ft(solution)f(to)225 1492 y(the)g(subproblem.)k (First)c Fr(y)i Ft(is)d(\014xed)h(and)g(\(2\))f(is)h(solv)o(ed)f(for)h Fr(x)p Ft(,)f(then)h(that)g Fr(x)f Ft(is)h(\014xed)g(and)f(\(2\))225 1541 y(is)i(solv)o(ed)g(for)f Fr(y)q Ft(.)19 b(The)14 b(pro)q(cess)i(is)e(iterated.)267 1591 y(Solving)d(\(2\))h(can)h(b)q(e) g(done)g(exactly)g(when)g(either)g Fr(x)g Ft(or)f Fr(y)j Ft(is)d(\014xed.)18 b(If)12 b Fr(y)j Ft(is)d(\014xed,)h(then)g(\(2\)) 225 1641 y(b)q(ecomes)731 1733 y(max)832 1705 y(\()p Fr(x)872 1690 y Fp(T)898 1705 y Fr(s)p Ft(\))933 1690 y Fn(2)p 832 1724 121 2 v 850 1762 a Fs(k)p Fr(x)p Fs(k)916 1747 y Fn(2)916 1773 y(2)994 1733 y Ft(s.t.)18 b Fr(x)11 b Fs(2)g(S)1170 1716 y Fp(m)1202 1733 y Fr(;)452 b Ft(\(5\))225 1835 y(where)20 b Fr(s)g Ft(=)h Fr(R)474 1841 y Fp(k)494 1835 y Fr(y)q(=)p Fs(k)p Fr(y)q Fs(k)599 1820 y Fn(2)599 1846 y(2)618 1835 y Ft(.)33 b(The)19 b(solution)g(to)f(this)h(problem)f (can)h(b)q(e)g(easily)g(computed)f(as)225 1885 y(follo)o(ws.)267 1961 y Fk(Theorem)j(2.)g Fq([O'L)n(e)n(ary)12 b(and)h(Pele)n(g)f(1983]) h(If)f(the)h(solution)f(to)h(the)f(inte)n(ger)g(pr)n(o)n(gr)n(am)g (\(5\))225 2011 y(has)j(exactly)g Fr(J)k Fq(nonzer)n(os,)c(then)h(the)f (solution)g(is)642 2109 y Fr(x)666 2115 y Fp(i)678 2119 y Fm(j)707 2109 y Ft(=)750 2050 y Fo(\032)792 2083 y Ft(sign\()p Fr(s)899 2089 y Fp(i)911 2093 y Fm(j)929 2083 y Ft(\))20 b(if)13 b(1)f Fs(\024)g Fr(j)i Fs(\024)d Fr(J)792 2133 y Ft(0)152 b(if)13 b Fr(J)h Ft(+)9 b(1)j Fs(\024)f Fr(j)j Fs(\024)e Fr(m)1291 2109 y(;)225 2207 y Fq(wher)n(e)i(the)h(elements)g(of)g Fr(s)g Fq(in)g(sorte)n(d)g(or)n (der)f(ar)n(e)745 2282 y Fs(j)p Fr(s)776 2288 y Fp(i)788 2292 y Fj(1)806 2282 y Fs(j)d(\025)h(j)p Fr(s)904 2288 y Fp(i)916 2292 y Fj(2)934 2282 y Fs(j)f(\025)g(\001)c(\001)g(\001)j (\025)i(j)p Fr(s)1135 2288 y Fp(i)1147 2292 y Fm(m)1177 2282 y Fs(j)p Fr(:)267 2357 y Fk(Pr)o(oof.)21 b Ft(See)15 b(O'Leary)f(and)g(P)o(eleg)g([1983].)j(This)d(result)h(is)e(also)h(a)f (sp)q(ecial)i(case)g(of)e(The-)225 2407 y(orem)g(8.)p 401 2382 29 2 v 401 2407 2 25 v 428 2407 V 401 2409 29 2 v 267 2483 a(Th)o(us)20 b(there)i(are)f(only)f Fr(m)h Ft(p)q(ossible)f Fr(x)p Ft(-v)o(ectors)h(to)g(c)o(hec)o(k)g(to)g (determine)f(the)h(optimal)225 2532 y(solution)13 b(for)h(\(5\).)p eop %%Page: 4 4 4 3 bop 225 125 a Fv(4)71 b Fu(\001)78 b Fv(T.)13 b(G.)f(Kolda)g(and)h (D.)f(P)m(.)g(O'Lea)o(ry)267 233 y Ft(Tw)o(o)i(t)o(yp)q(es)j(of)e (stopping)g(criteria)h(can)f(b)q(e)h(used)h(in)e(the)h(alternating)f (algorithm)e(for)i(the)225 283 y(solution)e(of)g(\(2\).)18 b(Since)d(from)d(\(4\))664 386 y Fs(k)p Fr(R)717 392 y Fp(k)q Fn(+1)778 386 y Fs(k)799 369 y Fn(2)799 397 y Fp(F)838 386 y Ft(=)g Fs(k)p Fr(R)935 392 y Fp(k)955 386 y Fs(k)976 369 y Fn(2)976 397 y Fp(F)1012 386 y Fs(\000)1065 358 y Ft(\()p Fr(x)1105 343 y Fp(T)1105 370 y(k)1131 358 y Fr(R)1163 364 y Fp(k)1183 358 y Fr(y)1203 364 y Fp(k)1224 358 y Ft(\))1240 343 y Fn(2)p 1059 377 206 2 v 1059 415 a Fs(k)p Fr(x)1104 421 y Fp(k)1124 415 y Fs(k)1145 401 y Fn(2)1145 426 y(2)1163 415 y Fs(k)p Fr(y)1204 421 y Fp(k)1225 415 y Fs(k)1246 401 y Fn(2)1246 426 y(2)1269 386 y Fr(;)385 b Ft(\(6\))225 485 y(the)14 b(inner)h(iteration)e(can)h (b)q(e)h(stopp)q(ed)g(when)834 587 y Fr(\014)f Fs(\021)920 559 y Ft(\()p Fr(x)960 544 y Fp(T)986 559 y Fr(R)1018 565 y Fp(k)1038 559 y Fr(y)q Ft(\))1075 544 y Fn(2)p 920 577 175 2 v 924 615 a Fs(k)p Fr(x)p Fs(k)990 601 y Fn(2)990 626 y(2)1008 615 y Fs(k)p Fr(y)q Fs(k)1071 601 y Fn(2)1071 626 y(2)1099 587 y Fr(;)225 685 y Ft(b)q(ecomes)e (nearly)g(constan)o(t.)17 b(Alternativ)o(ely)m(,)11 b(a)h(maxim)n(um)7 b(n)o(um)o(b)q(er)k(of)g(inner)h(iterations)g(can)225 735 y(b)q(e)j(sp)q(eci\014ed.)k(These)c(t)o(w)o(o)f(stopping)f (criteria)h(can)h(b)q(e)f(used)h(in)e(conjunction.)267 785 y(As)h(long)f(as)g(the)i(inner)f(iterations)g(are)g(terminated)f (whenev)o(er)i(a)f(\014xed)g(p)q(oin)o(t)f(is)h(encoun-)225 835 y(tered,)f(the)g(inner)f(lo)q(op)f(is)h(guaran)o(teed)h(to)f(b)q(e) g(\014nite)h(since)f(no)g(iteration)g(mak)o(es)f(the)h(residual)225 885 y(larger)i(and)g(there)h(are)f(only)f(a)h(\014nite)g(n)o(um)o(b)q (er)f(of)g(p)q(ossible)h(v)o(ectors)h Fr(x)f Ft(and)g Fr(y)q Ft(.)267 935 y(Figure)h(1)g(sho)o(ws)g(the)h(algorithm)d(to)i (generate)h(an)f(SDD)g(appro)o(ximation.)k(The)c(metho)q(d)225 984 y(will)f(generate)j(an)e(appro)o(ximation)d Fr(A)841 990 y Fp(k)877 984 y Ft(for)j(whic)o(h)g Fr(k)g Ft(=)f Fr(k)1167 990 y Fn(max)1245 984 y Ft(or)i Fs(k)p Fr(A)10 b Fs(\000)g Fr(A)1433 990 y Fp(k)1454 984 y Fs(k)k Fr(<)g(\032)1556 990 y Fn(min)1614 984 y Ft(.)22 b(The)225 1034 y(w)o(ork)17 b(of)g(eac)o(h)i(inner)f(iteration)f(is)g(con)o(trolled)h(b)o(y)f(the)i (parameters)e Fr(l)1370 1040 y Fn(max)1434 1034 y Ft(,)h(the)h(maxim)n (um)225 1084 y(n)o(um)o(b)q(er)14 b(of)g(allo)o(w)o(ed)f(inner)i (iterations,)f(and)h Fr(\013)986 1090 y Fn(min)1042 1084 y Ft(,)g(the)g(relativ)o(e)f(impro)o(v)o(emen)o(t)e(threshold.)225 1134 y(The)19 b(appro)o(ximation)c Fr(A)627 1140 y Fp(k)666 1134 y Ft(in)j(Step)g(\(2e\))h(is)f(usually)g(not)g(formed)f (explicitly;)i(rather,)h(the)225 1184 y(individual)c(elemen)o(ts)h(\()p Fr(d)635 1190 y Fp(k)656 1184 y Ft(,)h Fr(x)710 1190 y Fp(k)730 1184 y Ft(,)g Fr(y)780 1190 y Fp(k)801 1184 y Ft(\))g(are)g(stored.)31 b(Similarly)l(,)16 b Fr(R)1283 1190 y Fp(k)q Fn(+1)1362 1184 y Ft(in)i(Step)g(\(2f\))g(can)g(b)q(e)225 1234 y(applied)13 b(in)h(Steps)h(\(2\(b\)i\),)e(\(2\(b\)ii\),)g (\(2\(b\)iii\),)f(and)i(\(2d\))g(without)f(explicitly)g(forming)f(it.) 225 1318 y FA(2.2)20 b(Convergence)c(of)d(the)i(SDD)225 1384 y Ft(W)m(e)e(sho)o(w)h(that)g(the)g(norm)f(of)g(the)h(residual)g (generated)h(b)o(y)f(the)g(SDD)f(algorithm)e(is)j(strictly)225 1434 y(decreasing)i(and)e(that)h(under)h(certain)f(circumstances,)g (the)h(appro)o(ximation)c(generated)k(b)o(y)225 1484 y(the)e(SDD)g(algorithm)d(con)o(v)o(erges)k(linearly)e(to)h(the)g (original)e(matrix.)267 1560 y Fk(Lemma)21 b([O'Lear)m(y)d(and)f(Peleg) e(1983].)21 b Fq(The)e(r)n(esidual)g(matric)n(es)f(gener)n(ate)n(d)h (by)g(the)225 1610 y(SDD)d(algorithm)e(satisfy)554 1686 y Fs(k)p Fr(R)607 1692 y Fp(k)q Fn(+1)669 1686 y Fs(k)690 1692 y Fp(F)728 1686 y Fr(<)e Fs(k)p Fr(R)825 1692 y Fp(k)845 1686 y Fs(k)866 1692 y Fp(F)908 1686 y Fq(for)i(al)r(l)h Fr(k)h Fq(such)f(that)g Fr(R)1283 1692 y Fp(k)1314 1686 y Fs(6)p Ft(=)d(0)p Fr(:)267 1762 y Fk(Pr)o(oof.)21 b Ft(A)o(t)15 b(the)g(end)g(of)f(the)h(inner)f(iterations,)g(w)o(e)h(are) g(guaran)o(teed)g(to)f(ha)o(v)o(e)g(found)g Fr(x)1699 1768 y Fp(k)225 1812 y Ft(and)g Fr(y)326 1818 y Fp(k)360 1812 y Ft(suc)o(h)h(that)f Fr(x)568 1797 y Fp(T)568 1824 y(k)594 1812 y Fr(R)626 1818 y Fp(k)646 1812 y Fr(y)666 1818 y Fp(k)698 1812 y Fr(>)e Ft(0.)18 b(The)c(result)h(follo)o(ws)d (from)g(\(6\).)p 1332 1787 29 2 v 1332 1812 2 25 v 1359 1812 V 1332 1814 29 2 v 267 1888 a(Sev)o(eral)j(strategies)h(can)f(b)q (e)h(used)g(to)f(initialize)e Fr(y)k Ft(in)e(Step)g(\(2a\))g(in)g(the)h (SDD)e(algorithm)225 1938 y(\(Figure)g(1\):)225 2015 y(\(1\))21 b Fq(Maximum)16 b(element)e Ft(\(MAX\))i(initialization)11 b(initializes)j Fr(y)1244 2021 y Fp(k)1277 2015 y Ft(=)f Fr(e)1341 2021 y Fp(j)1359 2015 y Ft(,)h(where)i Fr(j)h Ft(is)e(the)g(col-)299 2065 y(umn)h(con)o(taining)h(the)h(largest)g (magnitude)e(en)o(try)j(in)e Fr(R)1222 2071 y Fp(k)1242 2065 y Ft(.)30 b(The)18 b(MAX)g(initialization)299 2115 y(sc)o(heme)d(leads)g(to)g(a)g(linearly)f(con)o(v)o(ergen)o(t)i (algorithm)c(\(Theorem)j(3\))g(but)g(is)g(computa-)299 2164 y(tionally)d(exp)q(ensiv)o(e)j(if)e Fr(R)707 2170 y Fp(k)741 2164 y Ft(is)g(stored)i(implicitly)c(as)j Fr(A)9 b Fs(\000)h Fr(A)1257 2170 y Fp(k)1277 2164 y Ft(.)225 2224 y(\(2\))21 b Fq(Cycling)15 b Ft(\(CYC\))h(initialization) e(sets)j Fr(y)936 2230 y Fp(k)971 2224 y Ft(=)e Fr(e)1037 2230 y Fp(i)1067 2224 y Ft(where)i Fr(i)e Ft(=)g(\()p Fr(k)g Ft(mo)q(d)e Fr(n)p Ft(\))d(+)h(1.)23 b(Unfortu-)299 2274 y(nately)m(,)13 b(the)h(rate)g(of)g(con)o(v)o(ergence)h(can)f(b)q (e)h(as)f(slo)o(w)f(as)h Fr(n)p Ft(-step)h(linear)e([Kolda)g(1997].)225 2333 y(\(3\))21 b Fq(Thr)n(eshold)12 b Ft(\(THR\))g(initialization)d (also)j(cycles)h(through)f(the)h(unit)f(v)o(ectors,)h(but)g(it)f(do)q (es)299 2383 y(not)20 b(accept)i(a)f(giv)o(en)f(v)o(ector)i(unless)f (it)g(satis\014es)g Fs(k)p Fr(R)1194 2389 y Fp(k)1214 2383 y Fr(e)1233 2389 y Fp(j)1251 2383 y Fs(k)1272 2368 y Fn(2)1272 2393 y(2)1313 2383 y Fs(\025)i(k)p Fr(R)1421 2389 y Fp(k)1441 2383 y Fs(k)1462 2368 y Fn(2)1462 2394 y Fp(F)1489 2383 y Fr(=n)p Ft(.)39 b(W)m(e)20 b(are)299 2433 y(guaran)o(teed)12 b(that)f(at)h(least)f(one)h(unit)f(v)o(ector)i (will)d(satisfy)h(this)g(inequalit)o(y)f(b)o(y)i(de\014nition)299 2483 y(of)h(the)i(F-norm.)i(Ev)o(en)d(though)g Fr(R)861 2489 y Fp(k)895 2483 y Ft(is)g(stored)h(implicitl)o(y)m(,)10 b(this)k(threshold)h(test)g(is)f(easy)299 2532 y(to)h(p)q(erform)f(b)q (ecause)j(w)o(e)e(only)f(need)i(to)f(m)o(ultiply)d Fr(R)1167 2538 y Fp(k)1202 2532 y Ft(b)o(y)j(a)g(v)o(ector.)22 b(F)m(urthermore,)15 b(if)p eop %%Page: 5 5 5 4 bop 965 125 a Fv(Semidiscrete)12 b(Matrix)g(Decomp)q(osition)77 b Fu(\001)70 b Fv(5)300 552 y Fz(\(1\))28 b(Let)11 b Fi(R)464 558 y Fh(k)494 552 y Fz(denote)f(the)h(residual,)e(and)i (initialize)e Fi(R)1049 557 y Fg(1)1075 552 y Fy( )h Fi(A)p Fz(.)374 594 y(Let)h Fi(\032)455 600 y Fh(k)484 594 y Fz(=)f Fy(k)p Fi(R)566 600 y Fh(k)584 594 y Fy(k)602 582 y Fg(2)602 606 y Fh(F)639 594 y Fz(b)q(e)h(the)g(norm)f(of)h(the)g (residual,)e(and)i(initialize)e Fi(\032)1312 599 y Fg(1)1339 594 y Fy( )h(k)p Fi(R)1429 599 y Fg(1)1446 594 y Fy(k)1464 582 y Fg(2)1464 606 y Fh(F)1489 594 y Fz(.)374 635 y(Let)h Fi(A)463 641 y Fh(k)494 635 y Fz(denote)f(the)g Fi(k)q Fz(-term)h(appro)o(ximat)o(ion)o(,)e(and)h(initialize)g Fi(A)1267 640 y Fg(0)1294 635 y Fy( )g Fz(0.)374 677 y(Cho)q(ose)g Fi(k)514 681 y Fg(max)573 677 y Fz(,)h(the)g(maxim)o(um)e (n)o(um)o(b)q(er)g(of)i(terms)g(in)g(the)g(appro)o(xima)o(tion)o(.)374 718 y(Cho)q(ose)f Fi(\032)514 723 y Fg(min)567 718 y Fz(,)h(the)g(desired)f(accuracy)f(of)i(the)g(appro)o(ximat)o(ion.)374 760 y(Cho)q(ose)f Fi(l)507 764 y Fg(max)565 760 y Fz(,)i(the)e(maxim)o (um)f(allo)o(w)o(able)h(inner)g(iterations.)374 801 y(Cho)q(ose)g Fi(\013)519 806 y Fg(min)571 801 y Fz(,)i(the)f(minim)o(um)e(relativ)o (e)g(impro)o(v)o(emen)n(t,)g(and)h(set)h Fi(\013)f(>)g Fz(2)p Fi(\013)1393 806 y Fh(min)1452 801 y Fz(.)300 859 y(\(2\))28 b(F)m(or)11 b Fi(k)g Fz(=)f(1)p Fi(;)5 b Fz(2)p Fi(;)h(:)f(:)h(:)g(;)f(k)650 863 y Fg(max)709 859 y Fz(,)12 b(while)f Fi(\032)841 865 y Fh(k)870 859 y Fi(>)f(\032)925 864 y Fg(min)978 859 y Fz(,)h(do)374 913 y(\(a\))30 b(Cho)q(ose)10 b Fi(y)k Fz(so)d(that)g Fi(R)750 919 y Fh(k)768 913 y Fi(y)h Fy(6)p Fz(=)e(0.)374 967 y(\(b\))28 b(F)m(or)11 b Fi(l)f Fz(=)g(1)p Fi(;)5 b Fz(2)p Fi(;)g(:)h(:)g(:)g(;)f(l)711 971 y Fg(max)769 967 y Fz(,)12 b(while)f Fi(\013)e(>)h(\013)975 972 y Fg(min)1028 967 y Fz(,)h(do)450 1050 y(i.)56 b(Set)10 b Fi(s)h Fy( )666 1027 y Fi(R)693 1033 y Fh(k)712 1027 y Fi(y)p 663 1043 72 2 v 663 1075 a Fy(k)p Fi(y)q Fy(k)717 1064 y Fg(2)717 1087 y(2)739 1050 y Fz(.)526 1143 y(Solv)o(e)f(max)704 1120 y(\()p Fi(x)738 1108 y Fh(T)762 1120 y Fi(s)p Fz(\))792 1108 y Fg(2)p 704 1135 106 2 v 721 1168 a Fy(k)p Fi(x)p Fy(k)777 1156 y Fg(2)777 1179 y(2)846 1143 y Fz(s.t.)15 b Fi(x)9 b Fy(2)h(S)995 1129 y Fh(m)1025 1143 y Fi(:)450 1281 y Fz(ii.)46 b(Set)10 b Fi(s)h Fy( )663 1254 y Fi(R)690 1243 y Fh(T)690 1267 y(k)715 1254 y Fi(x)p 663 1273 73 2 v 663 1306 a Fy(k)p Fi(x)p Fy(k)719 1294 y Fg(2)719 1317 y(2)740 1281 y Fz(.)526 1373 y(Solv)o(e)f(max)704 1350 y(\()p Fi(y)736 1338 y Fh(T)761 1350 y Fi(s)p Fz(\))791 1338 y Fg(2)p 704 1366 105 2 v 721 1398 a Fy(k)p Fi(y)q Fy(k)775 1387 y Fg(2)775 1409 y(2)845 1373 y Fz(s.t.)k Fi(y)e Fy(2)d(S)992 1359 y Fh(n)1014 1373 y Fi(:)450 1495 y Fz(iii.)36 b Fi(\014)11 b Fy( )607 1472 y Fz(\()p Fi(x)641 1461 y Fh(T)665 1472 y Fi(R)692 1478 y Fh(k)711 1472 y Fi(y)q Fz(\))743 1461 y Fg(2)p 607 1488 154 2 v 612 1520 a Fy(k)p Fi(x)p Fy(k)668 1509 y Fg(2)668 1532 y(2)684 1520 y Fy(k)p Fi(y)q Fy(k)738 1509 y Fg(2)738 1532 y(2)765 1495 y Fz(.)450 1587 y(iv.)37 b(If)11 b Fi(l)f(>)g Fz(1:)15 b Fi(\013)10 b Fy( )745 1564 y Fi(\014)f Fy(\000)814 1555 y Fz(\026)809 1564 y Fi(\014)p 745 1579 87 2 v 782 1603 a Fz(\026)777 1612 y Fi(\014)836 1587 y Fz(.)450 1663 y(v.)531 1654 y(\026)526 1663 y Fi(\014)i Fy( )f Fi(\014)r Fz(.)450 1717 y(End)h Fi(l)p Fz(-lo)q(op.)374 1771 y(\(c\))32 b Fi(x)470 1777 y Fh(k)498 1771 y Fy( )10 b Fi(x)p Fz(,)i Fi(y)602 1777 y Fh(k)631 1771 y Fy( )e Fi(y)q Fz(.)374 1851 y(\(d\))28 b Fi(d)468 1857 y Fh(k)497 1851 y Fy( )574 1825 y Fi(x)594 1813 y Fh(T)594 1837 y(k)618 1825 y Fi(R)645 1831 y Fh(k)664 1825 y Fi(y)681 1831 y Fh(k)p 547 1843 181 2 v 547 1876 a Fy(k)p Fi(x)585 1882 y Fh(k)603 1876 y Fy(k)621 1864 y Fg(2)621 1887 y(2)638 1876 y Fy(k)p Fi(y)673 1882 y Fh(k)692 1876 y Fy(k)710 1864 y Fg(2)710 1887 y(2)732 1851 y Fz(.)374 1933 y(\(e\))k Fi(A)476 1939 y Fh(k)505 1933 y Fy( )10 b Fi(A)576 1939 y Fh(k)q Ff(\000)p Fg(1)643 1933 y Fz(+)e Fi(d)696 1939 y Fh(k)715 1933 y Fi(x)735 1939 y Fh(k)754 1933 y Fi(y)772 1921 y Fh(T)771 1945 y(k)797 1933 y Fz(.)374 1986 y(\(f)s(\))34 b Fi(R)477 1992 y Fh(k)q Fg(+1)544 1986 y Fy( )10 b Fi(R)616 1992 y Fh(k)642 1986 y Fy(\000)e Fi(d)695 1992 y Fh(k)715 1986 y Fi(x)735 1992 y Fh(k)754 1986 y Fi(y)772 1975 y Fh(T)771 1999 y(k)796 1986 y Fz(.)374 2040 y(\(g\))30 b Fi(\032)468 2046 y Fh(k)q Fg(+1)535 2040 y Fy( )10 b Fi(\032)598 2046 y Fh(k)625 2040 y Fy(\000)e Fi(\014)r Fz(.)374 2107 y(End)i Fi(k)q Fz(-lo)q(op.)751 2190 y(Fig.)h(1.)35 b(Computing)9 b(an)i(SDD)p eop %%Page: 6 6 6 5 bop 225 125 a Fv(6)71 b Fu(\001)78 b Fv(T.)13 b(G.)f(Kolda)g(and)h (D.)f(P)m(.)g(O'Lea)o(ry)299 233 y Ft(the)17 b(\014rst)g(v)o(ector)g (tried)g(is)g(accepted,)h(no)e(extra)h(computational)e(exp)q(ense)j(is) e(incurred)299 283 y(b)q(ecause)21 b(the)f(computed)f(v)o(ector)h Fr(s)h Ft(=)g Fr(R)987 289 y Fp(k)1007 283 y Fr(y)g Ft(is)e(used)h(in)f (the)h(inner)g(iteration.)33 b(This)299 332 y(sc)o(heme)14 b(is)g(sho)o(wn)g(to)f(b)q(e)i(linearly)e(con)o(v)o(ergen)o(t)h (\(Theorem)g(4\).)225 390 y(\(4\))21 b Fq(SVD)d Ft(initialization)c (uses)k(a)f(discrete)i(v)o(ersion)f(of)e(the)i(left)f(singular)g(v)o (ector)h Fr(v)g Ft(of)f Fr(R)1688 396 y Fp(k)1708 390 y Ft(,)299 440 y(corresp)q(onding)h(to)f(the)i(largest)e(singular)g(v)n (alue,)g(to)g(initialize)f(the)i(iteration.)29 b(If)17 b(the)299 490 y(in)o(teger)g(restriction)g(on)f(our)g(problem)f(\(1\))i (is)f(remo)o(v)o(ed,)g(then)h(the)g(singular)e(v)o(ector)i(is)299 540 y(optimal,)9 b(and)j(w)o(e)g(can)g(form)e(a)i(discrete)i(appro)o (ximation)8 b(to)k(it)g(b)o(y)g(\014nding)f Fr(y)i Fs(2)f(S)1609 524 y Fp(n)1643 540 y Ft(that)299 589 y(is)i(a)f(discrete)j(appro)o (ximation)11 b(to)i Fr(v)q Ft(;)h(that)g(is,)f(\014nd)h(a)g Fr(y)i Ft(that)e(solv)o(es)655 663 y(min)j Fs(k)s Ft(^)-24 b Fr(y)11 b Fs(\000)e Fr(v)q Fs(k)878 669 y Fn(2)934 663 y Ft(s.t.)18 b Fr(y)13 b Fs(2)f(S)1109 646 y Fp(n)1131 663 y Fr(;)e Ft(^)-24 b Fr(y)13 b Fs(\021)f Fr(y)q(=)p Fs(k)p Fr(y)q Fs(k)1332 669 y Fn(2)1352 663 y Fr(:)302 b Ft(\(7\))299 737 y(This)14 b(also)f(yields)h(a)f(linearly)g(con)o(v)o (ergen)o(t)i(algorithm)c(\(Theorem)i(6\).)225 810 y(W)m(e)g(conclude)i (this)f(section)h(with)e(the)i(pro)q(of)e(of)h(these)h(con)o(v)o (ergence)g(results.)267 884 y Fk(Theorem)21 b(3.)g Fq([Kolda)15 b(1997])h(The)f(se)n(quenc)n(e)g Fs(f)p Fr(A)1083 890 y Fp(k)1104 884 y Fs(g)f Fq(gener)n(ate)n(d)i(by)f(the)g(SDD)h (algorithm)225 933 y(with)g(MAX)h(initialization)e(c)n(onver)n(ges)i (to)g Fr(A)g Fq(in)g(the)g(F)m(r)n(ob)n(enius)f(norm.)24 b(F)m(urthermor)n(e,)16 b(the)225 983 y(r)n(ate)e(of)h(c)n(onver)n (genc)n(e)h(is)e(at)h(le)n(ast)g(line)n(ar.)267 1056 y Fk(Pr)o(oof.)21 b Ft(Without)13 b(loss)h(of)f(generalit)o(y)m(,)f (assume)i(that)f Fr(R)1187 1062 y Fp(k)1219 1056 y Fs(6)p Ft(=)e(0)j(for)f(all)f Fr(k)q Ft(;)i(otherwise,)g(the)225 1106 y(algorithm)d(terminates)j(at)g(the)g(exact)h(solution.)i (Consider)e(a)e(\014xed)i(index)f Fr(k)q Ft(,)f(and)h(let)g(\()p Fr(i;)7 b(j)r Ft(\))225 1156 y(b)q(e)14 b(the)f(index)h(of)e(the)i (largest)f(magnitude)e(elemen)o(t)i(in)g Fr(R)1150 1162 y Fp(k)1170 1156 y Ft(.)k(Then)d(the)g(MAX)f(initialization)225 1206 y(sc)o(heme)h(c)o(ho)q(oses)h Fr(y)e Ft(=)f Fr(e)611 1212 y Fp(j)629 1206 y Ft(.)18 b(Since)c(the)g(\014rst)h(part)e(of)g (the)i(inner)f(iteration)f(pic)o(ks)h(the)g(optimal)225 1256 y Fr(x)p Ft(,)f(it)h(m)o(ust)e(b)q(e)j(as)f(least)g(as)g(go)q(o)q (d)f(as)h(c)o(ho)q(osing)g Fr(x)d Ft(=)h Fr(e)1093 1262 y Fp(i)1107 1256 y Ft(,)i(so)594 1327 y(\()p Fr(x)634 1312 y Fp(T)634 1339 y(k)660 1327 y Fr(R)692 1333 y Fp(k)712 1327 y Fr(y)732 1333 y Fp(k)752 1327 y Ft(\))768 1312 y Fn(2)p 588 1345 206 2 v 588 1383 a Fs(k)p Fr(x)633 1389 y Fp(k)653 1383 y Fs(k)674 1369 y Fn(2)674 1395 y(2)692 1383 y Fs(k)p Fr(y)733 1389 y Fp(k)754 1383 y Fs(k)775 1369 y Fn(2)775 1395 y(2)809 1355 y Fs(\025)861 1327 y Ft(\()p Fr(e)896 1312 y Fp(T)896 1338 y(i)922 1327 y Fr(R)954 1333 y Fp(k)974 1327 y Fr(e)993 1333 y Fp(j)1011 1327 y Ft(\))1027 1312 y Fn(2)p 858 1345 191 2 v 858 1383 a Fs(k)p Fr(e)898 1389 y Fp(i)912 1383 y Fs(k)933 1369 y Fn(2)933 1395 y(2)952 1383 y Fs(k)p Fr(e)992 1389 y Fp(j)1009 1383 y Fs(k)1030 1369 y Fn(2)1030 1395 y(2)1065 1355 y Fs(\025)e Fr(r)1129 1338 y Fn(2)1128 1365 y Fp(ij)1168 1355 y Fs(\025)1217 1327 y(k)p Fr(R)1270 1333 y Fp(k)1290 1327 y Fs(k)1311 1312 y Fn(2)1311 1338 y Fp(F)p 1217 1345 122 2 v 1247 1383 a Fr(mn)1350 1355 y(:)304 b Ft(\(8\))225 1452 y(Th)o(us)267 1551 y Fs(k)p Fr(R)320 1557 y Fp(k)q Fn(+1)382 1551 y Fs(k)403 1534 y Fn(2)403 1561 y Fp(F)442 1551 y Ft(=)12 b Fs(k)p Fr(R)539 1557 y Fp(k)558 1551 y Fs(k)579 1534 y Fn(2)579 1561 y Fp(F)616 1551 y Fs(\000)668 1523 y Ft(\()p Fr(x)708 1508 y Fp(T)708 1534 y(k)734 1523 y Fr(R)766 1529 y Fp(k)786 1523 y Fr(y)806 1529 y Fp(k)827 1523 y Ft(\))843 1508 y Fn(2)p 662 1541 206 2 v 662 1579 a Fs(k)p Fr(x)707 1585 y Fp(k)727 1579 y Fs(k)748 1565 y Fn(2)748 1590 y(2)767 1579 y Fs(k)p Fr(y)808 1585 y Fp(k)828 1579 y Fs(k)849 1565 y Fn(2)849 1590 y(2)884 1551 y Fs(\024)928 1492 y Fo(\022)958 1551 y Ft(1)d Fs(\000)1055 1523 y Ft(1)p 1035 1541 62 2 v 1035 1579 a Fr(mn)1101 1492 y Fo(\023)1139 1551 y Fs(k)p Fr(R)1192 1557 y Fp(k)1211 1551 y Fs(k)1232 1534 y Fn(2)1232 1561 y Fp(F)1271 1551 y Fs(\024)1315 1492 y Fo(\022)1346 1551 y Ft(1)g Fs(\000)1442 1523 y Ft(1)p 1422 1541 V 1422 1579 a Fr(mn)1489 1492 y Fo(\023)1519 1501 y Fp(k)1546 1551 y Fs(k)p Fr(R)1599 1557 y Fn(0)1617 1551 y Fs(k)1638 1534 y Fn(2)1638 1561 y Fp(F)1666 1551 y Fr(:)225 1650 y Ft(Hence)15 b Fs(k)p Fr(R)401 1656 y Fp(k)421 1650 y Fs(k)442 1656 y Fp(F)481 1650 y Fs(!)c Ft(0,)i(and)h(the)g(rate)h(of)e(con)o(v)o(ergence)j(is)d (at)h(least)g(linear.)p 1437 1625 29 2 v 1437 1650 2 25 v 1464 1650 V 1437 1652 29 2 v 267 1723 a Fk(Theorem)21 b(4.)g Fq([Kolda)15 b(1997])h(The)f(se)n(quenc)n(e)g Fs(f)p Fr(A)1083 1729 y Fp(k)1104 1723 y Fs(g)f Fq(gener)n(ate)n(d)i (by)f(the)g(SDD)h(algorithm)225 1773 y(with)h(THR)g(initialization)f(c) n(onver)n(ges)i(to)f Fr(A)h Fq(in)f(the)g(F)m(r)n(ob)n(enius)h(norm.)26 b(F)m(urthermor)n(e,)16 b(the)225 1823 y(r)n(ate)e(of)h(c)n(onver)n (genc)n(e)h(is)e(at)h(le)n(ast)g(line)n(ar.)267 1896 y Fk(Pr)o(oof.)21 b Ft(The)15 b(pro)q(of)e(is)h(similar)d(to)j(that)g (for)g(Theorem)f(3)h(and)f(so)h(is)g(omitted.)p 1582 1871 V 1582 1896 2 25 v 1609 1896 V 1582 1898 29 2 v 267 1969 a(Using)c(argumen)o(ts)g(similar)e(to)j(those)h(in)e(Theorem)g (2,)h(w)o(e)g(can)g(see)h(that)f(the)g(discretization)225 2019 y(of)i(the)i(singular)e(v)o(ector)i(for)e(SVD)h(initialization)d (can)j(b)q(e)h(computed)e(easily)m(.)267 2092 y Fk(Theorem)21 b(5.)g Fq([Kolda)13 b(1997])h(F)m(or)f(the)g(inte)n(ger)g(pr)n(o)n(gr)n (am)f(\(7\),)i(if)e(it)h(is)g(known)h(that)f Fr(y)i Fq(has)225 2142 y(exactly)g Fr(J)k Fq(nonzer)n(os,)c(then)g(the)g(closest)g Fr(y)e Fs(2)e(S)984 2127 y Fp(n)1022 2142 y Fq(to)k Fr(v)h Fq(is)f(given)g(by)648 2238 y Fr(y)668 2244 y Fp(i)680 2248 y Fm(j)709 2238 y Ft(=)753 2180 y Fo(\032)794 2213 y Fq(sign)p Ft(\()p Fr(v)902 2219 y Fp(i)914 2223 y Fm(j)932 2213 y Ft(\))21 b Fq(if)14 b Ft(1)e Fs(\024)f Fr(j)j Fs(\024)e Fr(J)794 2263 y Ft(0)154 b Fq(if)14 b Fr(J)f Ft(+)d(1)h Fs(\024)h Fr(j)i Fs(\024)e Fr(n)1285 2238 y(;)225 2335 y Fq(wher)n(e)i(the)h(elements)g(of)g Fr(v)h Fq(have)g(b)n(e)n(en)f(sorte)n(d)f(so)i(that)744 2409 y Fs(j)p Fr(v)776 2415 y Fp(i)788 2419 y Fj(1)805 2409 y Fs(j)11 b(\025)h(j)p Fr(v)904 2415 y Fp(i)916 2419 y Fj(2)934 2409 y Fs(j)f(\025)h(\001)7 b(\001)g(\001)j(\025)i(j)p Fr(v)1137 2415 y Fp(i)1149 2419 y Fm(m)1178 2409 y Fs(j)p Fr(:)267 2483 y Ft(Therefore,)i(there)h(are)f(only)f Fr(n)h Ft(p)q(ossible)g Fr(y)q Ft(-v)o(ectors)h(to)f(c)o(hec)o(k)g(to)g (determine)g(the)g(optimal)225 2532 y(solution)f(for)h(\(7\).)p eop %%Page: 7 7 7 6 bop 965 125 a Fv(Semidiscrete)12 b(Matrix)g(Decomp)q(osition)77 b Fu(\001)70 b Fv(7)267 233 y Fk(Theorem)21 b(6.)g Fq([Kolda)15 b(1997])h(The)f(se)n(quenc)n(e)g Fs(f)p Fr(A)1083 239 y Fp(k)1104 233 y Fs(g)f Fq(gener)n(ate)n(d)i(by)f(the)g(SDD)h (algorithm)225 283 y(with)h(SVD)h(initialization)f(c)n(onver)n(ges)h (to)g Fr(A)g Fq(in)f(the)h(F)m(r)n(ob)n(enius)g(norm.)27 b(F)m(urthermor)n(e,)17 b(the)225 332 y(r)n(ate)d(of)h(c)n(onver)n (genc)n(e)h(is)e(at)h(le)n(ast)g(line)n(ar.)267 406 y Fk(Pr)o(oof.)21 b Ft(Let)13 b(\()p Fr(\033)o(;)7 b(u;)g(v)q Ft(\))12 b(b)q(e)h(the)g(\014rst)g(singular)f(triplet)h(of)f Fr(R)1222 412 y Fp(k)1241 406 y Ft(.)18 b(Denote)13 b(the)g(\()p Fr(i;)7 b(j)r Ft(\))13 b(en)o(try)g(of)225 455 y Fr(R)257 461 y Fp(k)292 455 y Ft(b)o(y)i Fr(r)370 461 y Fp(ij)399 455 y Ft(.)21 b(Cho)q(ose)16 b(an)f(initial)e Fr(y)k Ft(that)e(solv)o(es)g(\(7\).)22 b(Without)14 b(loss)h(of)g(generalit)o (y)m(,)f(assume)225 505 y(that)g(the)g(elemen)o(ts)g(of)f Fr(v)j Ft(are)e(ordered)h(so)f(that)765 579 y Fs(j)p Fr(v)797 585 y Fn(1)815 579 y Fs(j)d(\025)h(j)p Fr(v)914 585 y Fn(2)932 579 y Fs(j)f(\025)h Fr(:)7 b(:)g(:)j Fs(\025)i(j)p Fr(v)1135 585 y Fp(n)1157 579 y Fs(j)p Fr(:)225 653 y Ft(Let)i Fr(J)k Ft(b)q(e)d(the)f(n)o(um)o(b)q(er)f(of)h(nonzeros)h(in)e Fr(y)q Ft(.)19 b(Then)536 765 y Fr(\033)12 b Ft(=)g Fr(u)640 748 y Fp(T)666 765 y Fr(Rv)h Ft(=)794 714 y Fp(J)775 726 y Fo(X)776 814 y Fp(j)r Fn(=1)842 765 y Fr(v)862 771 y Fp(j)901 714 y(m)886 726 y Fo(X)889 814 y Fp(i)p Fn(=1)953 765 y Fr(r)972 771 y Fp(ij)1001 765 y Fr(u)1025 771 y Fp(i)1048 765 y Ft(+)1131 714 y Fp(n)1111 726 y Fo(X)1089 815 y Fp(j)r Fn(=)p Fp(J)s Fn(+1)1200 765 y Fr(v)1220 771 y Fp(j)1260 714 y(m)1245 726 y Fo(X)1248 814 y Fp(i)p Fn(=1)1312 765 y Fr(r)1331 771 y Fp(ij)1360 765 y Fr(u)1384 771 y Fp(i)1397 765 y Fr(;)225 882 y Ft(and)g(the)g(largest)g(magnitude)f(elemen)o(ts)g(of)h Fr(v)h Ft(m)o(ust)e(corresp)q(ond)j(to)d(the)i(largest)f(magnitude)225 932 y(elemen)o(ts)h(of)f Fr(Ru)g Ft(\(since)i Fr(v)e Ft(=)f Fr(\033)q(Ru)p Ft(\),)i(so)796 995 y Fp(J)777 1007 y Fo(X)778 1095 y Fp(j)r Fn(=1)844 1046 y Fr(v)864 1052 y Fp(j)904 995 y(m)888 1007 y Fo(X)891 1095 y Fp(i)p Fn(=1)955 1046 y Fr(r)974 1052 y Fp(ij)1003 1046 y Fr(u)1027 1052 y Fp(i)1052 1046 y Fs(\025)1101 1018 y Fr(J)p 1101 1037 28 2 v 1102 1075 a(n)1133 1046 y(\033)o(:)225 1162 y Ft(Eac)o(h)i Fr(v)350 1168 y Fp(i)380 1162 y Ft(is)g(less)g(than)g (or)g(equal)g(to)f(one)h(in)g(magnitude,)e(so)i(substituting)g Fr(y)i Ft(in)d(place)h(of)g Fr(v)225 1212 y Ft(yields)635 1271 y Fp(J)616 1284 y Fo(X)617 1372 y Fp(j)r Fn(=1)683 1323 y Fr(y)703 1329 y Fp(j)743 1271 y(m)728 1284 y Fo(X)731 1372 y Fp(i)p Fn(=1)794 1323 y Fr(r)813 1329 y Fp(ij)842 1323 y Fr(u)866 1329 y Fp(i)892 1323 y Ft(=)951 1271 y Fp(m)935 1284 y Fo(X)938 1372 y Fp(i)p Fn(=1)1002 1323 y Fr(u)1026 1329 y Fp(i)1066 1271 y(J)1047 1284 y Fo(X)1048 1372 y Fp(j)r Fn(=1)1114 1323 y Fr(r)1133 1329 y Fp(ij)1162 1323 y Fr(y)1182 1329 y Fp(j)1211 1323 y Fs(\025)1260 1295 y Fr(J)t(\033)p 1260 1313 53 2 v 1273 1351 a(n)1317 1323 y(:)225 1440 y Ft(\(Note)e(that)g(this)g(guaran)o(tees)h(that)f Fr(Ry)f Fs(6)p Ft(=)f(0.\))18 b(Th)o(us)c(there)h(exists)d(^)-18 b Fr({)14 b Ft(suc)o(h)h(that)805 1547 y Fr(u)827 1553 y Fn(^)-15 b Fp({)869 1495 y(n)849 1508 y Fo(X)850 1596 y Fp(j)r Fn(=1)916 1547 y Fr(r)933 1553 y Fn(^)g Fp({)o(j)964 1547 y Fr(y)984 1553 y Fp(j)1013 1547 y Fs(\025)1066 1519 y Fr(J)t(\033)p 1062 1537 62 2 v 1062 1576 a(mn)1128 1547 y(:)225 1663 y Ft(Therefore,)15 b(setting)f Fr(x)d Ft(=)h Fr(e)657 1669 y Fn(^)-15 b Fp({)687 1663 y Ft(giv)o(es)491 1734 y(\()p Fr(x)531 1719 y Fp(T)531 1746 y(k)557 1734 y Fr(R)589 1740 y Fp(k)609 1734 y Fr(y)629 1740 y Fp(k)649 1734 y Ft(\))665 1719 y Fn(2)p 485 1753 206 2 v 485 1791 a Fs(k)p Fr(x)530 1797 y Fp(k)550 1791 y Fs(k)571 1777 y Fn(2)571 1802 y(2)589 1791 y Fs(k)p Fr(y)630 1797 y Fp(k)651 1791 y Fs(k)672 1777 y Fn(2)672 1802 y(2)707 1762 y Fs(\025)783 1734 y Fr(J)810 1719 y Fn(2)828 1734 y Fr(\033)853 1719 y Fn(2)p 755 1753 145 2 v 755 1791 a Fr(J)782 1779 y Fn(2)801 1791 y Fr(m)837 1779 y Fn(2)856 1791 y Fr(n)881 1779 y Fn(2)916 1762 y Fs(\025)992 1734 y Fr(\033)1017 1719 y Fn(2)p 965 1753 99 2 v 965 1791 a Fr(m)1001 1779 y Fn(2)1020 1791 y Fr(n)1045 1779 y Fn(2)1080 1762 y Ft(=)1228 1734 y Fs(k)p Fr(R)1281 1740 y Fp(k)1301 1734 y Fs(k)1322 1719 y Fn(2)1322 1746 y Fp(F)p 1129 1753 320 2 v 1129 1791 a Ft(min)n Fs(f)p Fr(m;)7 b(n)p Fs(g)i(\001)f Fr(m)1385 1779 y Fn(2)1404 1791 y Fr(n)1429 1779 y Fn(2)1453 1762 y Fr(:)201 b Ft(\(9\))225 1859 y(The)14 b(pro)q(of)g(concludes)h(using)e(the)i(same)e(argumen)o (ts)g(as)h(in)g(Theorem)f(3.)p 1439 1834 29 2 v 1439 1859 2 25 v 1466 1859 V 1439 1861 29 2 v 267 1932 a(An)i(implemen)o (tation)d(discussion)k(is)g(giv)o(en)f(in)g Fs(x)p Ft(6,)h(and)f(n)o (umerical)f(comparisons)h(of)g(the)225 1982 y(di\013eren)o(t)g (initialization)c(strategies)k(are)f(presen)o(ted)i(in)e Fs(x)p Ft(7.)225 2072 y FA(3.)20 b(THE)14 b(WEIGHTED)g(SDD)225 2138 y Ft(Let)f Fr(A)f Fs(2)f(<)410 2123 y Fp(m)p Fl(\002)p Fp(n)501 2138 y Ft(b)q(e)j(a)e(giv)o(en)h(matrix,)e(and)i(let)g Fr(W)k Fs(2)11 b(<)1108 2123 y Fp(m)p Fl(\002)p Fp(n)1199 2138 y Ft(b)q(e)j(a)e(giv)o(en)h(matrix)e(of)h(nonneg-)225 2188 y(ativ)o(e)i(w)o(eigh)o(ts.)20 b(The)15 b Fq(weighte)n(d)h(appr)n (oximation)g(pr)n(oblem)e Ft(is)g(to)h(\014nd)g(a)f(matrix)f Fr(B)i Fs(2)d(<)1641 2173 y Fp(m)p Fl(\002)p Fp(n)225 2238 y Ft(that)i(solv)o(es)825 2311 y(min)j Fs(k)p Fr(A)9 b Fs(\000)h Fr(B)r Fs(k)1070 2293 y Fn(2)1070 2321 y Fp(W)1108 2311 y Fr(;)225 2383 y Ft(sub)r(ject)15 b(to)f(some)f (constrain)o(ts)i(on)e Fr(B)r Ft(.)19 b(Here)c(the)g Fq(weighte)n(d)f(norm)g Fs(k)9 b(\001)g(k)1375 2389 y Fp(W)1426 2383 y Ft(is)14 b(de\014ned)h(as)762 2490 y Fs(k)p Fr(A)p Fs(k)835 2473 y Fn(2)835 2501 y Fp(W)884 2490 y Ft(=)943 2438 y Fp(m)927 2451 y Fo(X)930 2539 y Fp(i)p Fn(=1)1014 2438 y Fp(n)994 2451 y Fo(X)996 2539 y Fp(j)r Fn(=1)1061 2490 y Fr(a)1083 2473 y Fn(2)1083 2501 y Fp(ij)1112 2490 y Fr(w)1142 2496 y Fp(ij)1171 2490 y Fr(:)p eop %%Page: 8 8 8 7 bop 225 125 a Fv(8)71 b Fu(\001)78 b Fv(T.)13 b(G.)f(Kolda)g(and)h (D.)f(P)m(.)g(O'Lea)o(ry)267 233 y Ft(The)f(case)h(where)h Fr(B)g Ft(is)f(a)e(lo)o(w)h(rank)g(matrix)e(has)j(b)q(een)g(considered) h(b)o(y)e(Gabriel)f(and)h(Zamir)225 283 y([1979])d(and)j(others,)g(and) g(they)g(obtain)e(a)h(solution)g(with)g(some)g(similariti)o(es)f(to)h (the)h(truncated)225 332 y(singular)j(v)n(alue)h(decomp)q(osition,)e (although)h(computation)f(is)i(m)o(uc)o(h)f(more)g(exp)q(ensiv)o(e.)23 b(W)m(e)225 382 y(sho)o(w)17 b(ho)o(w)g(to)g(generate)i(a)d(w)o(eigh)o (ted)i(appro)o(ximation)c(of)j(the)g(form)f Fr(dxy)1433 367 y Fp(T)1459 382 y Ft(.)28 b(As)18 b(with)f(the)225 432 y(regular)12 b(SDD,)f(w)o(e)h(form)f(the)i(1-term)e(appro)o (ximations)e(iterativ)o(ely)j(and)f(add)h(these)i(appro)o(x-)225 482 y(imations)9 b(together)k(to)f(build)e(up)i(a)g Fr(k)q Ft(-term)e(appro)o(ximation.)15 b(A)o(t)c(eac)o(h)i(step,)f(then,)h(w)o (e)f(solv)o(e)225 532 y(the)i(problem)402 606 y(min)j Fr(F)517 612 y Fp(k)537 606 y Ft(\()p Fr(d;)7 b(x;)g(y)q Ft(\))k Fs(\021)h(k)p Fr(R)782 612 y Fp(k)811 606 y Fs(\000)d Fr(dxy)919 589 y Fp(T)946 606 y Fs(k)967 589 y Fn(2)967 616 y Fp(W)1041 606 y Ft(s.t.)18 b Fr(x)11 b Fs(2)h(S)1218 589 y Fp(m)1249 606 y Fr(;)18 b(y)c Fs(2)d(S)1380 589 y Fp(n)1403 606 y Fr(;)18 b(d)11 b(>)h Ft(0)p Fr(:)103 b Ft(\(10\))225 686 y(Here)20 b Fr(R)360 692 y Fp(k)398 686 y Fs(\021)f Fr(A)13 b Fs(\000)537 655 y Fo(P)581 665 y Fp(k)q Fl(\000)p Fn(1)581 699 y Fp(i)p Fn(=1)651 686 y Fr(d)673 692 y Fp(i)686 686 y Fr(x)710 692 y Fp(i)724 686 y Fr(y)745 671 y Fp(T)744 697 y(i)790 686 y Ft(is)18 b(the)h(residual)f(matrix.)30 b(As)18 b(with)g(the)h(regular)f(SDD,)225 736 y(this)e(is)f(a)h(mixed)e(in)o(teger)i(programming)c(problem)j (that)g(can)h(b)q(e)h(rewritten)g(as)e(an)h(in)o(teger)225 786 y(program.)29 b(First,)18 b(recall)g(the)h(de\014nition)e(of)h(the) g Fq(Hadamar)n(d)g Ft(or)g Fq(elementwise)g(pr)n(o)n(duct)g Ft(of)225 835 y(matrices;)13 b(that)h(is,)f(\()p Fr(A)d Fs(\016)f Fr(B)r Ft(\))682 841 y Fp(ij)723 835 y Ft(=)j Fr(a)789 841 y Fp(ij)818 835 y Fr(b)836 841 y Fp(ij)865 835 y Ft(.)267 909 y Fk(Theorem)21 b(7.)g Fq(Solving)14 b(the)g(mixe)n(d)g(inte)n(ger)f(pr)n(o)n(gr)n(am)g(\(10\))h(is)f(e)n (quivalent)h(to)g(solving)f(the)225 959 y(inte)n(ger)h(pr)n(o)n(gr)n (am)455 1070 y Ft(max)560 1060 y(~)551 1070 y Fr(F)578 1076 y Fp(k)598 1070 y Ft(\()p Fr(x;)7 b(y)q Ft(\))12 b Fs(\021)761 1006 y Fo(\002)779 1040 y Fr(x)803 1025 y Fp(T)829 1040 y Ft(\()p Fr(R)877 1046 y Fp(k)906 1040 y Fs(\016)d Fr(W)d Ft(\))12 b Fr(y)1030 1006 y Fo(\003)1048 1015 y Fn(2)p 754 1061 320 2 v 754 1099 a Ft(\()p Fr(x)d Fs(\016)g Fr(x)p Ft(\))873 1087 y Fp(T)906 1099 y Fr(W)k Ft(\()p Fr(y)e Fs(\016)e Fr(y)q Ft(\))1116 1070 y(s.t.)18 b Fr(x)12 b Fs(2)f(S)1293 1053 y Fp(m)1325 1070 y Fr(;)18 b(y)13 b Fs(2)e(S)1455 1053 y Fp(n)1478 1070 y Fr(:)156 b Ft(\(11\))267 1167 y Fk(Pr)o(oof.)21 b Ft(The)15 b(pro)q(of)e(is)h (analogous)f(to)g(that)h(of)g(Theorem)f(1)h(except)h(that)754 1267 y Fr(d)776 1249 y Fl(\003)806 1267 y Ft(=)889 1238 y Fr(x)913 1223 y Fp(T)939 1238 y Ft(\()p Fr(R)987 1244 y Fp(k)1016 1238 y Fs(\016)9 b Fr(W)d Ft(\))11 b Fr(y)p 855 1257 V 855 1295 a Ft(\()p Fr(x)e Fs(\016)g Fr(x)p Ft(\))974 1283 y Fp(T)1007 1295 y Fr(W)k Ft(\()p Fr(y)e Fs(\016)e Fr(y)q Ft(\))1179 1267 y Fr(:)p 265 1334 29 2 v 265 1359 2 25 v 291 1359 V 265 1361 29 2 v 267 1433 a Ft(As)19 b(with)f(the)h(regular)g(SDD,)e(an)i(alternating)f(metho)q (d)f(will)h(b)q(e)h(used)g(to)g(generate)h(an)225 1483 y(appro)o(ximate)12 b(solution)h(to)h(\(11\).)k(Assuming)12 b(that)i Fr(y)i Ft(is)e(\014xed,)1256 1472 y(~)1246 1483 y Fr(F)1273 1489 y Fp(k)1307 1483 y Ft(can)h(b)q(e)f(written)g(as)788 1586 y(~)779 1596 y Fr(F)806 1602 y Fp(k)826 1596 y Ft(\()p Fr(x;)7 b(y)q Ft(\))12 b(=)1003 1532 y Fo(\000)1022 1566 y Fr(x)1046 1550 y Fp(T)1072 1566 y Fr(s)1091 1532 y Fo(\001)1110 1541 y Fn(2)p 982 1587 167 2 v 982 1625 a Ft(\()p Fr(x)e Fs(\016)f Fr(x)p Ft(\))1102 1613 y Fp(T)1128 1625 y Fr(v)1154 1596 y(;)480 b Ft(\(12\))225 1695 y(where)20 b Fr(s)h Fs(\021)g Ft(\()p Fr(R)491 1701 y Fp(k)524 1695 y Fs(\016)12 b Fr(W)6 b Ft(\))h Fr(y)22 b Ft(and)d Fr(v)j Fs(\021)e Fr(W)13 b Ft(\()p Fr(y)i Fs(\016)e Fr(y)q Ft(\).)35 b(T)m(o)18 b(determine)h(the)h(maxim)n(um)o(,)d(2)1643 1680 y Fp(m)1687 1695 y Fs(\000)225 1745 y Ft(1)h(p)q(ossibilities)g(m) o(ust)g(b)q(e)h(c)o(hec)o(k)o(ed.)33 b(Again,)19 b(this)g(can)f(b)q(e)i (reduced)g(to)e(just)h(c)o(hec)o(king)g Fr(m)225 1795 y Ft(p)q(ossibilities,)13 b(although)g(the)h(pro)q(of)g(is)f(more)g (di\016cult)h(than)f(that)h(for)g(Theorem)f(2.)267 1868 y Fk(Theorem)21 b(8.)g Fq(F)m(or)16 b(the)h(inte)n(ger)f(pr)n(o)n(gr)n (am)g(\(12\),)h(if)f(it)g(is)g(known)h(that)g Fr(x)f Fq(has)h(exactly)f Fr(J)225 1918 y Fq(nonzer)n(os,)f(then)g(the)g (solution)g(is)g(given)g(by)642 2015 y Fr(x)666 2021 y Fp(i)678 2025 y Fm(j)707 2015 y Ft(=)750 1957 y Fo(\032)792 1990 y Ft(sign\()p Fr(s)899 1996 y Fp(i)911 2000 y Fm(j)929 1990 y Ft(\))20 b(if)13 b(1)f Fs(\024)g Fr(j)i Fs(\024)d Fr(J)792 2040 y Ft(0)152 b(if)13 b Fr(J)h Ft(+)9 b(1)j Fs(\024)f Fr(j)j Fs(\024)e Fr(m)1291 2015 y(;)225 2114 y Fq(wher)n(e)i(the)h(p)n(airs)g(of)f Ft(\()p Fr(s)597 2120 y Fp(i)612 2114 y Fr(;)7 b(v)651 2120 y Fp(i)664 2114 y Ft(\))15 b Fq(have)h(b)n(e)n(en)f(sorte)n(d)f(so)h(that)735 2185 y Fs(j)p Fr(s)766 2191 y Fp(i)778 2195 y Fj(1)796 2185 y Fs(j)p 735 2203 73 2 v 746 2241 a Fr(v)766 2247 y Fp(i)778 2251 y Fj(1)824 2213 y Fs(\025)873 2185 y(j)p Fr(s)904 2191 y Fp(i)916 2195 y Fj(2)934 2185 y Fs(j)p 873 2203 V 884 2241 a Fr(v)904 2247 y Fp(i)916 2251 y Fj(2)962 2213 y Fs(\025)c(\001)c(\001)g(\001)j(\025)1114 2185 y(j)p Fr(s)1145 2191 y Fp(i)1157 2195 y Fm(m)1187 2185 y Fs(j)p 1114 2203 84 2 v 1125 2241 a Fr(v)1145 2247 y Fp(i)1157 2251 y Fm(m)1203 2213 y Fr(:)267 2333 y Fk(Pr)o(oof.)21 b Ft(First)14 b(note)f(that)g(if)f Fr(s)767 2339 y Fp(i)794 2333 y Ft(is)g(zero,)i(then)f(a)g(nonzero)g(v) n(alue)f(of)h Fr(x)1390 2339 y Fp(i)1416 2333 y Ft(cannot)g(a\013ect)h (the)225 2383 y(n)o(umerator)h(of)488 2373 y(~)478 2383 y Fr(F)6 b Ft(,)16 b(and)g Fr(x)646 2389 y Fp(i)674 2383 y Ft(=)f(0)h(minim)o(izes)e(the)j(denominator,)d(so)i Fr(x)1361 2389 y Fp(i)1389 2383 y Ft(=)g(0)f(is)h(optimal.)22 b(If)225 2433 y Fr(v)245 2439 y Fp(i)271 2433 y Ft(=)12 b(0,)i(then)h Fr(s)476 2439 y Fp(i)502 2433 y Ft(=)d(0,)i(so)g(c)o(ho)q (ose)h Fr(x)800 2439 y Fp(i)825 2433 y Ft(=)e(0.)18 b(Therefore,)d(w)o (e)g(need)g(only)e(consider)i(indices)g(for)225 2483 y(whic)o(h)d Fr(s)361 2489 y Fp(i)387 2483 y Ft(and)g Fr(v)486 2489 y Fp(i)512 2483 y Ft(are)g(nonzero,)h(and)f(without)g (loss)g(of)f(generalit)o(y)m(,)g(w)o(e)h(will)f(assume)h(that)g(the)225 2532 y Fr(s)244 2538 y Fp(i)272 2532 y Ft(are)i(all)f(p)q(ositiv)o(e)h (and)f(ordered)j(so)d(that)h Fr(i)938 2538 y Fp(j)968 2532 y Ft(=)e Fr(j)r Ft(,)h Fr(j)h Ft(=)e(1)p Fr(;)7 b(:)g(:)g(:)e(;)i(m)p Ft(.)p eop %%Page: 9 9 9 8 bop 965 125 a Fv(Semidiscrete)12 b(Matrix)g(Decomp)q(osition)77 b Fu(\001)70 b Fv(9)300 583 y Fz(\(1\))28 b(Let)11 b Fi(R)464 589 y Fh(k)494 583 y Fz(denote)f(the)h(residual,)e(and)i (initialize)e Fi(R)1049 588 y Fg(1)1075 583 y Fy( )h Fi(A)p Fz(.)374 624 y(Let)h Fi(\032)455 630 y Fh(k)484 624 y Fz(=)f Fy(k)p Fi(R)566 630 y Fh(k)584 624 y Fy(k)602 613 y Fg(2)602 636 y Fh(W)648 624 y Fz(b)q(e)h(the)g(norm)f(of)h(the)g (residual,)f(and)g(initialize)f Fi(\032)1321 629 y Fg(1)1348 624 y Fy( )i(k)p Fi(R)1439 629 y Fg(1)1455 624 y Fy(k)1473 613 y Fg(2)1473 636 y Fh(W)1508 624 y Fz(.)374 666 y(Let)g Fi(A)463 672 y Fh(k)494 666 y Fz(denote)f(the)g Fi(k)q Fz(-term)h(appro)o(ximat)o(ion)o(,)e(and)h(initialize)g Fi(A)1267 671 y Fg(0)1294 666 y Fy( )g Fz(0.)374 708 y(Cho)q(ose)g Fi(k)514 712 y Fg(max)573 708 y Fz(,)h(the)g(maxim)o(um)e (n)o(um)o(b)q(er)g(of)i(terms)g(in)g(the)g(appro)o(xima)o(tion)o(.)374 749 y(Cho)q(ose)f Fi(\032)514 754 y Fg(min)567 749 y Fz(,)h(the)g(desired)f(accuracy)f(of)i(the)g(appro)o(ximat)o(ion.)374 791 y(Cho)q(ose)f Fi(l)507 795 y Fg(max)565 791 y Fz(,)i(the)e(maxim)o (um)f(allo)o(w)o(able)h(inner)g(iterations.)374 832 y(Cho)q(ose)g Fi(\013)519 837 y Fg(min)571 832 y Fz(,)i(the)f(minim)o(um)e(relativ)o (e)g(impro)o(v)o(emen)n(t,)g(and)h(set)h Fi(\013)f(>)g Fz(2)p Fi(\013)1393 837 y Fh(min)1452 832 y Fz(.)300 890 y(\(2\))28 b(F)m(or)11 b Fi(k)g Fz(=)f(1)p Fi(;)5 b Fz(2)p Fi(;)h(:)f(:)h(:)g(;)f(k)650 894 y Fg(max)709 890 y Fz(,)12 b(while)f Fi(\032)841 896 y Fh(k)870 890 y Fi(>)f(\032)925 895 y Fg(min)978 890 y Fz(,)h(do)374 944 y(\(a\))30 b(Cho)q(ose)10 b Fi(y)k Fz(so)d(that)g(\()p Fi(R)764 950 y Fh(k)790 944 y Fy(\016)c Fi(W)e Fz(\))p Fi(y)12 b Fy(6)p Fz(=)e(0..)374 998 y(\(b\))28 b(F)m(or)11 b Fi(l)f Fz(=)g(1)p Fi(;)5 b Fz(2)p Fi(;)g(:)h(:)g(:)g(;)f(l)711 1002 y Fg(max)769 998 y Fz(,while)11 b Fi(\013)e(>)i(\013)964 1003 y Fg(min)1016 998 y Fz(,)g(do)450 1065 y(i.)56 b(Set)10 b Fi(s)h Fy( )f Fz(\()p Fi(R)699 1071 y Fh(k)725 1065 y Fy(\016)d Fi(W)e Fz(\))h Fi(y)q Fz(,)12 b Fi(v)g Fy( )e Fi(W)h Fz(\()p Fi(y)e Fy(\016)e Fi(y)q Fz(\))q(.)526 1129 y(Solv)o(e)j(max)723 1106 y(\()p Fi(x)757 1094 y Fh(T)781 1106 y Fi(s)p Fz(\))811 1094 y Fg(2)p 704 1121 144 2 v 704 1154 a Fz(\()p Fi(x)e Fy(\016)f Fi(x)p Fz(\))805 1144 y Fh(T)829 1154 y Fi(v)884 1129 y Fz(s.t.)15 b Fi(x)9 b Fy(2)h(S)1033 1115 y Fh(m)1063 1129 y Fi(:)450 1249 y Fz(ii.)46 b(Set)10 b Fi(s)h Fy( )f Fz(\()p Fi(R)699 1255 y Fh(k)725 1249 y Fy(\016)d Fi(W)e Fz(\))802 1235 y Fh(T)827 1249 y Fi(x)p Fz(,)11 b Fi(v)g Fy( )f Fi(W)979 1237 y Fh(T)1004 1249 y Fz(\()p Fi(x)d Fy(\016)h Fi(x)p Fz(\))o(.)526 1314 y(Solv)o(e)i(max)704 1290 y(\()p Fi(y)736 1279 y Fh(T)761 1290 y Fi(s)p Fz(\))791 1279 y Fg(2)p 704 1306 105 2 v 721 1339 a Fy(k)p Fi(y)q Fy(k)775 1327 y Fg(2)775 1350 y(2)845 1314 y Fz(s.t.)k Fi(y)e Fy(2)d(S)992 1300 y Fh(n)1014 1314 y Fi(:)450 1454 y Fz(iii.)36 b Fi(\014)11 b Fy( )608 1392 y Fo(\002)625 1423 y Fi(x)645 1411 y Fh(T)669 1423 y Fz(\()p Fi(R)710 1429 y Fh(k)737 1423 y Fy(\016)c Fi(W)e Fz(\))h Fi(y)838 1392 y Fo(\003)856 1400 y Fg(2)p 607 1446 267 2 v 607 1479 a Fz(\()p Fi(x)i Fy(\016)f Fi(x)p Fz(\))708 1469 y Fh(T)732 1479 y Fi(W)k Fz(\()p Fi(y)e Fy(\016)f Fi(y)q Fz(\))879 1454 y(.)450 1542 y(iv.)37 b(If)11 b Fi(l)f(>)g Fz(1:)15 b Fi(\013)10 b Fy( )745 1519 y Fi(\014)f Fy(\000)814 1510 y Fz(\026)809 1519 y Fi(\014)p 745 1535 87 2 v 782 1559 a Fz(\026)777 1567 y Fi(\014)836 1542 y Fz(.)450 1618 y(v.)531 1610 y(\026)526 1618 y Fi(\014)i Fy( )f Fi(\014)r Fz(.)450 1672 y(End)h Fi(l)p Fz(-lo)q(op.)374 1726 y(\(c\))32 b Fi(x)470 1732 y Fh(k)498 1726 y Fy( )10 b Fi(x)p Fz(,)i Fi(y)602 1732 y Fh(k)631 1726 y Fy( )e Fi(y)q Fz(.)374 1806 y(\(d\))28 b Fi(d)468 1812 y Fh(k)497 1806 y Fy( )565 1780 y Fi(x)585 1768 y Fh(T)585 1792 y(k)609 1780 y Fz(\()p Fi(R)650 1786 y Fh(k)676 1780 y Fy(\016)7 b Fi(W)e Fz(\))h Fi(y)776 1786 y Fh(k)p 547 1799 267 2 v 547 1831 a Fz(\()p Fi(x)h Fy(\016)h Fi(x)p Fz(\))648 1822 y Fh(T)672 1831 y Fi(W)j Fz(\()p Fi(y)e Fy(\016)e Fi(y)q Fz(\))819 1806 y(.)374 1885 y(\(e\))32 b Fi(A)476 1891 y Fh(k)505 1885 y Fy( )10 b Fi(A)576 1891 y Fh(k)q Ff(\000)p Fg(1)643 1885 y Fz(+)e Fi(d)696 1891 y Fh(k)715 1885 y Fi(x)735 1891 y Fh(k)754 1885 y Fi(y)772 1873 y Fh(T)771 1897 y(k)797 1885 y Fz(.)374 1939 y(\(f)s(\))34 b Fi(R)477 1945 y Fh(k)q Fg(+1)544 1939 y Fy( )10 b Fi(R)616 1945 y Fh(k)642 1939 y Fy(\000)e Fi(d)695 1945 y Fh(k)715 1939 y Fi(x)735 1945 y Fh(k)754 1939 y Fi(y)772 1927 y Fh(T)771 1951 y(k)796 1939 y Fz(.)374 1993 y(\(g\))30 b Fi(\032)468 1999 y Fh(k)q Fg(+1)535 1993 y Fy( )10 b Fi(\032)598 1999 y Fh(k)625 1993 y Fy(\000)e Fi(\014)r Fz(.)374 2059 y(End)i Fi(k)q Fz(-lo)q(op.)705 2209 y(Fig.)h(2.)35 b(W)m(eigh)o(ted)10 b(SDD)h(Algorithm)p eop %%Page: 10 10 10 9 bop 225 125 a Fv(10)71 b Fu(\001)78 b Fv(T.)13 b(G.)f(Kolda)g(and) h(D.)g(P)m(.)e(O'Lea)o(ry)267 233 y Ft(W)m(e)17 b(complete)h(the)g(pro) q(of)g(b)o(y)g(sho)o(wing)f(that)i(if)e(the)i(optimal)c(solution)i(has) i(nonzero)q(es)225 283 y(with)14 b(indices)g(in)f(some)g(set)i Fr(I)s Ft(,)f(and)g(if)f Fr(q)f Fs(2)f Fr(I)18 b Ft(and)c Fr(p)d(<)h(q)q Ft(,)h(then)i Fr(p)c Fs(2)g Fr(I)s Ft(.)267 333 y(Assume)i(to)h(the)g(con)o(trary)m(,)f(and)h(partition)f Fr(I)k Ft(in)o(to)c Fr(I)1107 339 y Fn(1)1134 333 y Fs([)c Fr(I)1189 339 y Fn(2)1208 333 y Ft(,)k(where)i(indices)f(in)f Fr(I)1555 339 y Fn(1)1588 333 y Ft(are)h(less)225 382 y(than)f Fr(p)f Ft(and)h(those)g(in)g Fr(I)607 388 y Fn(2)638 382 y Ft(are)h(greater)f(than)g Fr(p)p Ft(.)18 b(The)13 b(case)g Fr(p)f Ft(=)g(1)g(is)h(left)f(to)h(the)g(reader;)h (here)225 432 y(w)o(e)g(assume)g Fr(p)d(>)h Ft(1.)267 482 y(F)m(or)h(ease)i(of)e(notation,)g(let)729 567 y Fr(S)754 573 y Fn(1)784 567 y Ft(=)831 528 y Fo(X)828 617 y Fp(i)p Fl(2)p Fp(I)877 621 y Fj(1)900 567 y Fr(s)919 573 y Fp(i)933 567 y Fr(;)55 b(V)1024 573 y Fn(1)1055 567 y Ft(=)1101 528 y Fo(X)1098 617 y Fp(i)p Fl(2)p Fp(I)1147 621 y Fj(1)1170 567 y Fr(v)1190 573 y Fp(i)1204 567 y Fr(;)225 688 y Ft(and)14 b(de\014ne)h Fr(S)451 694 y Fn(2)484 688 y Ft(and)e Fr(V)588 694 y Fn(2)621 688 y Ft(analogously)m(.)267 738 y(By)20 b(the)g(ordering)h(of)e(the)i (ratios)e Fr(s=v)q Ft(,)j(w)o(e)e(kno)o(w)g(that)g Fr(s)1230 744 y Fp(i)1244 738 y Fr(v)1264 744 y Fp(p)1305 738 y Fr(<)i(s)1378 744 y Fp(p)1398 738 y Fr(v)1418 744 y Fp(i)1452 738 y Ft(for)e(all)f Fr(i)j Fs(2)f Fr(I)1689 744 y Fn(2)1708 738 y Ft(;)225 788 y(therefore,)853 862 y Fr(S)878 868 y Fn(2)897 862 y Fr(v)917 868 y Fp(p)948 862 y Fr(<)12 b(s)1011 868 y Fp(p)1030 862 y Fr(V)1054 868 y Fn(2)1080 862 y Fr(:)554 b Ft(\(13\))225 937 y(Since)14 b Fr(I)k Ft(is)13 b(optimal,)e(w)o(e)j(kno)o(w)g(that)812 1013 y Fr(S)839 997 y Fn(2)837 1023 y(1)p 812 1031 47 2 v 814 1069 a Fr(V)838 1075 y Fn(1)875 1041 y Fs(\024)924 1013 y Ft(\()p Fr(S)965 1019 y Fn(1)993 1013 y Ft(+)c Fr(S)1060 1019 y Fn(2)1079 1013 y Ft(\))1095 997 y Fn(2)p 924 1031 190 2 v 951 1069 a Fr(V)975 1075 y Fn(1)1003 1069 y Ft(+)f Fr(V)1068 1075 y Fn(2)1126 1041 y Ft(;)225 1138 y(therefore,)15 b(b)o(y)f(cross-m)o(ultiplying)d(and)j(canceling)g (terms,)f(w)o(e)h(obtain)745 1217 y Fr(S)772 1200 y Fn(2)770 1227 y(1)791 1217 y Fr(V)815 1223 y Fn(2)846 1217 y Fs(\024)d Fr(S)916 1200 y Fn(2)914 1227 y(2)936 1217 y Fr(V)960 1223 y Fn(1)988 1217 y Ft(+)e(2)p Fr(S)1075 1223 y Fn(1)1094 1217 y Fr(S)1119 1223 y Fn(2)1138 1217 y Fr(V)1162 1223 y Fn(1)1188 1217 y Fr(:)446 b Ft(\(14\))225 1296 y(Similarly)l(,)696 1367 y(\()p Fr(S)737 1373 y Fn(1)765 1367 y Ft(+)10 b Fr(S)832 1373 y Fn(2)860 1367 y Ft(+)g Fr(s)921 1373 y Fp(p)940 1367 y Ft(\))956 1352 y Fn(2)p 696 1386 280 2 v 722 1424 a Fr(V)746 1430 y Fn(1)774 1424 y Ft(+)g Fr(V)840 1430 y Fn(2)868 1424 y Ft(+)f Fr(v)929 1430 y Fp(p)992 1395 y Fs(\024)1040 1367 y Ft(\()p Fr(S)1081 1373 y Fn(1)1110 1367 y Ft(+)g Fr(S)1176 1373 y Fn(2)1195 1367 y Ft(\))1211 1352 y Fn(2)p 1040 1386 190 2 v 1067 1424 a Fr(V)1091 1430 y Fn(1)1119 1424 y Ft(+)h Fr(V)1185 1430 y Fn(2)1242 1395 y Fr(;)225 1482 y Ft(so)452 1562 y Fr(s)471 1545 y Fn(2)471 1572 y Fp(p)491 1562 y Ft(\()p Fr(V)531 1568 y Fn(1)559 1562 y Ft(+)g Fr(V)625 1568 y Fn(2)643 1562 y Ft(\))g(+)f(2)p Fr(S)756 1568 y Fn(1)775 1562 y Fr(s)794 1568 y Fp(p)814 1562 y Ft(\()p Fr(V)854 1568 y Fn(1)882 1562 y Ft(+)g Fr(V)947 1568 y Fn(2)966 1562 y Ft(\))h(+)f(2)p Fr(S)1079 1568 y Fn(2)1098 1562 y Fr(s)1117 1568 y Fp(p)1137 1562 y Ft(\()p Fr(V)1177 1568 y Fn(1)1205 1562 y Ft(+)g Fr(V)1270 1568 y Fn(2)1289 1562 y Ft(\))840 1630 y Fs(\024)j Fr(S)911 1613 y Fn(2)909 1640 y(1)931 1630 y Fr(v)951 1636 y Fp(p)979 1630 y Ft(+)e Fr(S)1048 1613 y Fn(2)1046 1640 y(2)1067 1630 y Fr(v)1087 1636 y Fp(p)1116 1630 y Ft(+)f(2)p Fr(S)1203 1636 y Fn(1)1222 1630 y Fr(S)1247 1636 y Fn(2)1266 1630 y Fr(v)1286 1636 y Fp(p)782 1692 y Fs(\024)i Fr(S)852 1675 y Fn(2)850 1703 y(1)872 1692 y Fr(v)892 1698 y Fp(p)921 1692 y Ft(+)e Fr(S)987 1698 y Fn(2)1006 1692 y Fr(s)1025 1698 y Fp(p)1045 1692 y Fr(V)1069 1698 y Fn(2)1097 1692 y Ft(+)g(2)p Fr(S)1184 1698 y Fn(1)1203 1692 y Fr(s)1222 1698 y Fp(p)1242 1692 y Fr(V)1266 1698 y Fn(2)1340 1692 y Ft(b)o(y)14 b(\(13\))491 1767 y Fs(\024)d Ft(\()p Fr(S)577 1750 y Fn(2)575 1777 y(2)597 1767 y Fr(V)621 1773 y Fn(1)649 1767 y Ft(+)f(2)p Fr(S)737 1773 y Fn(1)755 1767 y Fr(S)780 1773 y Fn(2)799 1767 y Fr(V)823 1773 y Fn(1)842 1767 y Ft(\))865 1739 y Fr(v)885 1745 y Fp(p)p 863 1757 43 2 v 863 1795 a Fr(V)887 1801 y Fn(2)921 1767 y Ft(+)f Fr(S)987 1773 y Fn(2)1006 1767 y Fr(s)1025 1773 y Fp(p)1045 1767 y Fr(V)1069 1773 y Fn(2)1097 1767 y Ft(+)g(2)p Fr(S)1184 1773 y Fn(1)1203 1767 y Fr(s)1222 1773 y Fp(p)1242 1767 y Fr(V)1266 1773 y Fn(2)1340 1767 y Ft(b)o(y)14 b(\(14\))513 1849 y Fs(\024)d Ft(\()p Fr(S)597 1855 y Fn(2)617 1849 y Fr(s)636 1855 y Fp(p)655 1849 y Fr(V)679 1855 y Fn(1)707 1849 y Ft(+)f(2)p Fr(S)795 1855 y Fn(1)814 1849 y Fr(s)833 1855 y Fp(p)852 1849 y Fr(V)876 1855 y Fn(1)895 1849 y Ft(\))g(+)f Fr(S)987 1855 y Fn(2)1006 1849 y Fr(s)1025 1855 y Fp(p)1045 1849 y Fr(V)1069 1855 y Fn(2)1097 1849 y Ft(+)g(2)p Fr(S)1184 1855 y Fn(1)1203 1849 y Fr(s)1222 1855 y Fp(p)1242 1849 y Fr(V)1266 1855 y Fn(2)1340 1849 y Ft(b)o(y)14 b(\(13\))225 1991 y(Canceling)f(terms)h(in)f(this)h(inequalit)o(y)f(w)o(e)h(obtain) 670 2070 y Fr(s)689 2053 y Fn(2)689 2080 y Fp(p)709 2070 y Ft(\()p Fr(V)749 2076 y Fn(1)777 2070 y Ft(+)c Fr(V)843 2076 y Fn(2)861 2070 y Ft(\))g(+)f Fr(S)953 2076 y Fn(2)972 2070 y Fr(s)991 2076 y Fp(p)1011 2070 y Ft(\()p Fr(V)1051 2076 y Fn(1)1079 2070 y Ft(+)h Fr(V)1145 2076 y Fn(2)1164 2070 y Ft(\))h Fs(\024)h Ft(0)7 b Fr(;)225 2149 y Ft(a)14 b(con)o(tradiction.)p 550 2124 29 2 v 550 2149 2 25 v 576 2149 V 550 2151 29 2 v 267 2229 a(The)i(algorithm)d(for)i(the)i(w)o (eigh)o(ted)e(SDD,)g(sho)o(wn)h(in)f(Figure)h(2,)g(is)f(nearly)h(the)g (same)f(as)225 2278 y(the)f(algorithm)e(for)h(the)i(regular)f(SDD,)e (sho)o(wn)i(in)g(Figure)g(1.)225 2366 y FA(3.1)20 b(Convergence)c(of)d (the)i(W)o(eighted)g(SDD)225 2433 y Ft(As)c(with)g(the)g(regular)g (SDD,)f(w)o(e)h(sho)o(w)g(that)g(the)h(w)o(eigh)o(ted)f(norm)e(of)i (the)g(residual)g(generated)225 2483 y(b)o(y)e(the)h(w)o(eigh)o(ted)g (SDD)f(algorithm)e(is)i(strictly)h(decreasing)h(and,)e(furthermore,)h (the)g(w)o(eigh)o(ted)225 2532 y(SDD)j(appro)o(ximation)e(con)o(v)o (erges)k(linearly)e(to)h(the)g(original)e(matrix.)p eop %%Page: 11 11 11 10 bop 946 125 a Fv(Semidiscrete)12 b(Matrix)f(Decomp)q(osition)78 b Fu(\001)70 b Fv(11)267 233 y Fk(Lemma)21 b(2.)g Fq(The)15 b(r)n(esidual)g(matric)n(es)f(gener)n(ate)n(d)i(by)f(the)g(weighte)n(d) g(SDD)h(algorithm)f(sat-)225 283 y(isfy)544 352 y Fs(k)p Fr(R)597 358 y Fp(k)q Fn(+1)658 352 y Fs(k)679 358 y Fp(W)728 352 y Fr(<)d Fs(k)p Fr(R)825 358 y Fp(k)845 352 y Fs(k)866 358 y Fp(W)918 352 y Fq(for)j(al)r(l)f Fr(k)i Fq(such)f(that)g Fr(R)1293 358 y Fp(k)1325 352 y Fs(6)p Ft(=)c(0)p Fr(:)267 421 y Fk(Pr)o(oof.)21 b Ft(The)15 b(pro)q(of)e(is)h(similar)d(to)j(Lemma)d(1)j(and)g(is)f (therefore)j(omitted.)p 1525 396 29 2 v 1525 421 2 25 v 1551 421 V 1525 423 29 2 v 267 492 a(As)22 b(with)h(the)g(SDD,)e(sev) o(eral)i(di\013eren)o(t)h(strategies)f(can)g(b)q(e)g(used)g(to)g (initialize)e Fr(y)j Ft(in)225 542 y(Step)18 b(\(2a\))f(in)g(the)h(w)o (eigh)o(ted)f(SDD)g(algorithm)d(\(Figure)k(2\).)28 b(Here,)19 b(w)o(e)e(only)g(presen)o(t)i(the)225 592 y(di\013erences)f(b)q(et)o(w) o(een)g(these)g(sc)o(hemes)f(and)f(those)h(for)f(the)g(SDD.)g(The)g (same)g(con)o(v)o(ergence)225 641 y(results)f(hold,)e(and)h(the)g(pro)q (ofs)g(are)g(similar)e(to)h(those)i(giv)o(en)e(for)h(the)g(SDD.)225 713 y(\(1\))21 b(MAX:)14 b(Cho)q(ose)g Fr(e)588 719 y Fp(j)620 713 y Ft(suc)o(h)g(that)g Fr(j)j Ft(is)c(the)i(index)f(of)f (the)h(column)f(con)o(taining)g(the)h(largest)299 762 y(magnitude)e(en)o(try)j(in)e Fr(R)693 768 y Fp(k)722 762 y Fs(\016)c Fr(R)784 768 y Fp(k)813 762 y Fs(\016)g Fr(W)d Ft(.)225 820 y(\(2\))21 b(CYC:)13 b(No)h(di\013erence.)225 877 y(\(3\))21 b(THR:)13 b(Accept)i(a)f(giv)o(en)f(unit)h(v)o(ector)h (only)e(if)g(it)g(satis\014es)i Fs(k)p Fr(R)1287 883 y Fp(k)1307 877 y Fr(e)1326 883 y Fp(j)1344 877 y Fs(k)1365 862 y Fn(2)1365 888 y Fp(W)1414 877 y Fs(\025)d(k)p Fr(R)1511 883 y Fp(k)1530 877 y Fs(k)1551 862 y Fn(2)1551 888 y Fp(W)1589 877 y Fr(=n)p Ft(.)267 948 y(Note)k(that)h(there)h(is)e(no)h (SVD)f(starting)g(strategy)i(since)f(there)h(is)e(no)g(simple)f(analog) g(to)225 998 y(the)f(SVD)g(in)g(the)g(w)o(eigh)o(ted)g(case.)225 1085 y FA(4.)20 b(THE)14 b(TENSOR)g(SDD)225 1152 y Ft(Let)e Fr(A)g Ft(b)q(e)h(an)f Fr(m)487 1158 y Fn(1)511 1152 y Fs(\002)5 b Fr(m)584 1158 y Fn(2)609 1152 y Fs(\002)g(\001)i(\001)g (\001)e(\002)g Fr(m)774 1158 y Fp(n)809 1152 y Fq(tensor)12 b Ft(o)o(v)o(er)g Fs(<)p Ft(.)17 b(The)c Fq(or)n(der)e Ft(of)g Fr(A)h Ft(is)g Fr(n)p Ft(.)17 b(The)c Fq(dimension)225 1201 y Ft(of)e Fr(A)h Ft(is)g Fr(m)g Fs(\021)444 1170 y Fo(Q)484 1181 y Fp(n)484 1214 y(j)r Fn(=1)550 1201 y Fr(m)586 1207 y Fp(j)604 1201 y Ft(,)g(and)f Fr(m)742 1207 y Fp(j)772 1201 y Ft(is)g(the)i Fr(j)r Ft(th)f Fq(sub)n(dimension) p Ft(.)18 b(An)12 b(elemen)o(t)f(of)g Fr(A)h Ft(is)g(sp)q(eci\014ed)225 1251 y(as)891 1320 y Fr(A)922 1326 y Fp(i)934 1330 y Fj(1)950 1326 y Fp(i)962 1330 y Fj(2)978 1326 y Fl(\001\001\001)p Fp(i)1020 1330 y Fm(n)1042 1320 y Fr(;)225 1390 y Ft(where)j Fr(i)359 1396 y Fp(j)388 1390 y Fs(2)d(f)p Ft(1)p Fr(;)7 b Ft(2)p Fr(;)g(:)g(:)g(:)s(;)g(m)637 1396 y Fp(j)654 1390 y Fs(g)14 b Ft(for)g Fr(j)g Ft(=)d(1)p Fr(;)c(:)g(:)g(:)e(;)i(n)p Ft(.)17 b(A)d(matrix)e(is)i(a)g(tensor)h(of)e(order)h(t)o(w)o(o.)267 1440 y(As)g(with)f(matrices,)f(w)o(e)i(ma)o(y)e(b)q(e)i(in)o(terested)h (in)e(a)h(storage-e\016cien)o(t)g(appro)o(ximation)d(of)i(a)225 1489 y(giv)o(en)i(tensor.)24 b(W)m(e)15 b(extend)i(the)f(notion)e(of)h (the)h(SDD)f(to)h(a)f Fq(tensor)g Ft(SDD.)g(First)h(w)o(e)f(de\014ne) 225 1539 y(some)e(notation)g(for)h(tensors,)g(consisten)o(t)h(with)f ([Kolda)f(1999].)225 1620 y FA(4.1)20 b(Notation)225 1687 y Ft(If)13 b Fr(A)g Ft(and)g Fr(B)i Ft(are)f(t)o(w)o(o)e(tensors)j (of)d(the)i(same)e(size)h(\(that)h(is,)e(the)i(order)g Fr(n)f Ft(and)f(all)g(sub)q(dimen-)225 1737 y(sions)i Fr(m)363 1743 y Fp(j)395 1737 y Ft(are)g(equal\),)f(then)i(the)f Fq(inner)h(pr)n(o)n(duct)f Ft(of)f Fr(A)h Ft(and)g Fr(B)i Ft(is)e(de\014ned)h(as)595 1845 y Fr(A)10 b Fs(\001)e Fr(B)15 b Fs(\021)758 1792 y Fp(m)787 1796 y Fj(1)750 1805 y Fo(X)745 1894 y Fp(i)757 1898 y Fj(1)773 1894 y Fn(=1)834 1792 y Fp(m)863 1796 y Fj(2)827 1805 y Fo(X)822 1894 y Fp(i)834 1898 y Fj(2)850 1894 y Fn(=1)899 1845 y Fs(\001)7 b(\001)g(\001)967 1792 y Fp(m)996 1796 y Fm(n)962 1805 y Fo(X)955 1894 y Fp(i)967 1898 y Fm(n)987 1894 y Fn(=1)1036 1845 y Fr(A)1067 1851 y Fp(i)1079 1855 y Fj(1)1095 1851 y Fp(i)1107 1855 y Fj(2)1123 1851 y Fl(\001\001\001)o Fp(i)1164 1855 y Fm(n)1186 1845 y Fr(B)1217 1851 y Fp(i)1229 1855 y Fj(1)1246 1851 y Fp(i)1258 1855 y Fj(2)1274 1851 y Fl(\001\001\001)o Fp(i)1315 1855 y Fm(n)1337 1845 y Fr(:)225 1960 y Ft(W)m(e)13 b(de\014ne)i(the)g Fq(norm)f Ft(of)f Fr(A)p Ft(,)h Fs(k)p Fr(A)p Fs(k)p Ft(,)f(to)g(b)q(e)599 2067 y Fs(k)p Fr(A)p Fs(k)672 2050 y Fn(2)702 2067 y Fs(\021)e Fr(A)f Fs(\001)f Fr(A)i Ft(=)905 2015 y Fp(m)934 2019 y Fj(1)898 2027 y Fo(X)893 2116 y Fp(i)905 2120 y Fj(1)921 2116 y Fn(=1)982 2015 y Fp(m)1011 2019 y Fj(2)975 2027 y Fo(X)970 2116 y Fp(i)982 2120 y Fj(2)998 2116 y Fn(=1)1047 2067 y Fs(\001)c(\001)g(\001)1114 2015 y Fp(m)1143 2019 y Fm(n)1109 2027 y Fo(X)1102 2116 y Fp(i)1114 2120 y Fm(n)1134 2116 y Fn(=1)1183 2067 y Fr(A)1214 2050 y Fn(2)1214 2077 y Fp(i)1226 2081 y Fj(1)1242 2077 y Fp(i)1254 2081 y Fj(2)1270 2077 y Fl(\001\001\001)p Fp(i)1312 2081 y Fm(n)1334 2067 y Fr(:)267 2180 y Ft(Supp)q(ose)13 b Fr(B)j Ft(is)d(an)g Fr(m)609 2186 y Fn(1)635 2180 y Fs(\002)8 b(\001)f(\001)g(\001)f(\002)h Fr(m)806 2186 y Fp(j)r Fl(\000)p Fn(1)874 2180 y Fs(\002)h Fr(m)950 2186 y Fp(j)r Fn(+1)1017 2180 y Fs(\002)g(\001)f(\001)g(\001)f(\002)h Fr(m)1188 2186 y Fp(n)1224 2180 y Ft(tensor)14 b(of)f(order)g Fr(n)8 b Fs(\000)f Ft(1.)18 b(Then)225 2230 y(the)c Fr(i)310 2236 y Fp(j)328 2230 y Ft(th)g(\(1)e Fs(\024)g Fr(i)488 2236 y Fp(j)517 2230 y Fs(\024)g Fr(m)597 2236 y Fp(j)615 2230 y Ft(\))i(elemen)o(t)f(of)g(the)i Fq(c)n(ontr)n(acte)n(d)g(pr)n(o) n(duct)f Ft(of)f Fr(A)h Ft(and)f Fr(B)k Ft(is)d(de\014ned)h(as)321 2342 y(\()p Fr(A)10 b Fs(\001)f Fr(B)r Ft(\))448 2348 y Fp(i)460 2352 y Fm(j)489 2342 y Fs(\021)545 2290 y Fp(m)574 2294 y Fj(1)538 2303 y Fo(X)533 2391 y Fp(i)545 2395 y Fj(1)561 2391 y Fn(=1)610 2342 y Fs(\001)e(\001)g(\001)677 2286 y Fp(m)706 2290 y Fm(j)q Fe(\000)p Fj(1)688 2303 y Fo(X)665 2391 y Fp(i)677 2395 y Fm(j)q Fe(\000)p Fj(1)729 2391 y Fn(=1)790 2286 y Fp(m)819 2290 y Fm(j)q Fj(+1)800 2303 y Fo(X)778 2391 y Fp(i)790 2395 y Fm(j)q Fj(+1)841 2391 y Fn(=1)890 2342 y Fs(\001)g(\001)g(\001)957 2290 y Fp(m)986 2294 y Fm(n)952 2303 y Fo(X)945 2391 y Fp(i)957 2395 y Fm(n)977 2391 y Fn(=1)1026 2342 y Fr(A)1057 2348 y Fp(i)1069 2352 y Fj(1)1085 2348 y Fl(\001\001\001)p Fp(i)1127 2352 y Fm(j)q Fe(\000)p Fj(1)1179 2348 y Fp(i)1191 2352 y Fm(j)1206 2348 y Fp(i)1218 2352 y Fm(j)q Fj(+1)1269 2348 y Fl(\001\001\001)o Fp(i)1310 2352 y Fm(n)1332 2342 y Fr(B)1363 2348 y Fp(i)1375 2352 y Fj(1)1392 2348 y Fl(\001\001\001)o Fp(i)1433 2352 y Fm(j)q Fe(\000)p Fj(1)1485 2348 y Fp(i)1497 2352 y Fm(j)q Fj(+1)1548 2348 y Fl(\001\001\001)o Fp(i)1589 2352 y Fm(n)1612 2342 y Fr(:)267 2460 y Ft(A)13 b Fq(de)n(c)n(omp)n(ose)n(d)i Ft(tensor)g(is)f(a)f(tensor)i(that)f(can) g(b)q(e)h(written)f(as)722 2532 y Fr(x)d Ft(=)h Fr(x)825 2515 y Fn(\(1\))879 2532 y Fs(\012)d Fr(x)944 2515 y Fn(\(2\))998 2532 y Fs(\012)g(\001)e(\001)g(\001)h(\012)h Fr(x)1162 2515 y Fn(\()p Fp(n)p Fn(\))1211 2532 y Fr(;)p eop %%Page: 12 12 12 11 bop 225 125 a Fv(12)71 b Fu(\001)78 b Fv(T.)13 b(G.)f(Kolda)g(and)h(D.)g(P)m(.)e(O'Lea)o(ry)225 233 y Ft(where)j Fr(x)368 218 y Fn(\()p Fp(j)r Fn(\))423 233 y Fs(2)d(<)492 218 y Fp(m)521 222 y Fm(j)552 233 y Ft(for)h Fr(j)i Ft(=)e(1)p Fr(;)7 b(:)g(:)g(:)e(;)i(n)p Ft(.)17 b(The)c(v)o(ectors)h Fr(x)1105 218 y Fn(\()p Fp(j)r Fn(\))1161 233 y Ft(are)f(called)g(the)g Fq(c)n(omp)n(onents)h Ft(of)e Fr(x)p Ft(.)225 283 y(In)i(this)g(case,)732 363 y Fr(x)756 369 y Fp(i)768 373 y Fj(1)783 369 y Fp(i)795 373 y Fj(2)811 369 y Fl(\001\001\001)p Fp(i)853 373 y Fm(n)886 363 y Ft(=)e Fr(x)954 341 y Fn(\(1\))954 375 y Fp(i)966 379 y Fj(1)999 363 y Fr(x)1023 341 y Fn(\(2\))1023 375 y Fp(i)1035 379 y Fj(2)1074 363 y Fs(\001)7 b(\001)g(\001)e Fr(x)1153 341 y Fn(\()p Fp(n)p Fn(\))1153 375 y Fp(i)1165 379 y Fm(n)1201 363 y Fr(:)225 438 y Ft(Lo)o(w)o(ercase)15 b(letters)g(denote)g(decomp)q(osed)f(tensors.)267 513 y Fk(Lemma)21 b([K)o(old)o(a)c(1999].)k Fq(L)n(et)13 b Fr(A)g Fq(b)n(e)g(a)g(tensor)g(of)f(or)n(der)h Fr(n)g Fq(and)g Fr(x)g Fq(a)g(de)n(c)n(omp)n(ose)n(d)g(tensor)225 563 y(of)i(or)n(der)f Fr(p)p Fq(.)19 b(Then)755 637 y Fr(A)9 b Fs(\001)g Fr(x)i Ft(=)h(\()p Fr(A)d Fs(\001)g Fr(x)996 620 y Fn(\()p Fl(\000)p Fp(j)r Fn(\))1065 637 y Ft(\))g Fs(\001)g Fr(x)1135 620 y Fn(\()p Fp(j)r Fn(\))1178 637 y Fr(;)225 712 y Fq(wher)n(e)14 b(the)h(notation)h Fr(x)601 697 y Fn(\()p Fl(\000)p Fp(j)r Fn(\))685 712 y Fq(indic)n(ates)f Fr(x)f Fq(with)g(the)h Fr(j)r Fq(th)h(c)n(omp)n (onent)f(r)n(emove)n(d,)g(that)g(is,)539 787 y Fr(x)563 770 y Fn(\()p Fl(\000)p Fp(j)r Fn(\))644 787 y Fs(\021)c Fr(x)711 770 y Fn(\(1\))765 787 y Fs(\012)e(\001)e(\001)g(\001)h(\012)i Fr(x)930 770 y Fn(\()p Fp(j)r Fl(\000)p Fn(1\))1024 787 y Fs(\012)g Fr(x)1090 770 y Fn(\()p Fp(j)r Fn(+1\))1184 787 y Fs(\012)g(\001)d(\001)g(\001)h(\012)h Fr(x)1349 770 y Fn(\()p Fp(p)p Fn(\))1394 787 y Fr(:)267 862 y Ft(The)16 b(notion)f(of)h(rank)g(for)g(tensors)h(of)e(order)i(greater)g (than)f(t)o(w)o(o)g(is)g(a)g(non)o(trivial)e(matter)225 912 y(\(see,)h(e.g.,)d(Kolda)h([1999]\),)e(but)j(a)f(single)g(decomp)q (osed)h(tensor)h(is)e(alw)o(a)o(ys)g(a)g(tensor)h(of)f(rank)225 962 y(one.)225 1045 y FA(4.2)20 b(De\014nition)15 b(of)e(the)i(T)m (enso)o(r)f(SDD)225 1111 y Ft(Supp)q(ose)h(w)o(e)f(wish)g(to)f(appro)o (ximate)f(an)i Fr(n)p Ft(-dimensional)d(tensor)k Fr(A)f Ft(as)g(follo)o(ws,)800 1225 y Fr(A)d Fs(\031)h Fr(A)917 1231 y Fp(k)949 1225 y Fs(\021)1014 1173 y Fp(k)993 1185 y Fo(X)996 1274 y Fp(i)p Fn(=1)1060 1225 y Fr(d)1082 1231 y Fp(i)1096 1225 y Fr(x)1120 1231 y Fp(i)1133 1225 y Fr(;)225 1336 y Ft(where)18 b Fr(d)370 1342 y Fp(i)399 1336 y Fr(>)f Ft(0)f(and)g Fr(x)592 1342 y Fp(i)622 1336 y Ft(is)h(a)f(decomp)q(osed)h(tensor)g(whose)h(comp)q(onen)o(ts)e(are)h (restricted)h(to)225 1392 y Fr(x)249 1370 y Fn(\()p Fp(j)r Fn(\))249 1403 y Fp(i)304 1392 y Fs(2)11 b(S)371 1377 y Fp(m)400 1381 y Fm(j)418 1392 y Ft(,)j(with)f Fs(S)i Ft(=)d Fs(f\000)p Ft(1)p Fr(;)7 b Ft(0)p Fr(;)g Ft(1)p Fs(g)p Ft(.)16 b(This)d(is)h(called)g(a)f Fr(k)q Ft(-term)g Fq(tensor)i(SDD)p Ft(.)267 1442 y(The)e(SDD)g(represen)o(tation)i(is)f (e\016cien)o(t)g(in)f(terms)g(of)g(storage.)18 b(If)13 b(the)h(tensor)h Fr(A)e Ft(is)g(dense,)225 1491 y(the)h(total)g (storage)g(required)h(for)e Fr(A)h Ft(is)892 1597 y Fr(\015)941 1545 y Fp(n)925 1558 y Fo(Y)923 1646 y Fp(j)r Fn(=1)987 1597 y Fr(m)1023 1603 y Fp(j)1041 1597 y Fr(;)225 1714 y Ft(where)j Fr(\015)h Ft(is)d(the)h(amoun)o(t)e(of)h(storage)h (required)g(for)f(eac)o(h)h(elemen)o(t)f(of)g Fr(A)p Ft(.)23 b(F)m(or)15 b(example,)f(if)225 1764 y(the)f(elemen)o(ts)g(of)f Fr(A)h Ft(are)g(in)o(teger)g(v)n(alues)f(b)q(et)o(w)o(een)i(0)f(and)f (255,)g(then)h Fr(\015)j Ft(is)c(one)h(b)o(yte)g(\(8)g(bits\).)225 1814 y(The)h(storage)h(required)f(for)g(the)g(appro)o(ximation)d Fr(A)1059 1820 y Fp(k)1094 1814 y Ft(is)796 1936 y Fr(k)826 1853 y Fo(0)826 1928 y(@)862 1936 y Fr(\013)e Ft(+)h Fr(\014)992 1884 y Fp(n)972 1897 y Fo(X)974 1985 y Fp(j)r Fn(=1)1039 1936 y Fr(m)1075 1942 y Fp(j)1093 1853 y Fo(1)1093 1928 y(A)1137 1936 y Fr(;)225 2059 y Ft(where)16 b Fr(\013)e Ft(is)h(the)g(storage)g(required)h(for)e(eac)o(h)h Fr(d)990 2065 y Fp(k)1025 2059 y Ft(and)f(is)h(usually)e(c)o(hosen)j(to)f(b)q(e) g(equal)f(to)h Fr(\015)225 2109 y Ft(and)g Fr(\014)i Ft(is)d(the)i(amoun)o(t)c(of)j(storage)g(required)g(to)g(store)g(eac)o (h)h(elemen)o(t)e(of)g Fs(S)s Ft(,)g(that)h(is,)f(log)1673 2119 y Fn(2)1699 2109 y Ft(3)225 2158 y(bits.)27 b(Since)18 b Fr(k)f Fs(\034)541 2127 y Fo(Q)580 2137 y Fp(n)580 2171 y(j)r Fn(=1)646 2158 y Fr(m)682 2164 y Fp(j)700 2158 y Ft(,)g(the)h(appro)o(ximation)c(generally)j(requires)h (signi\014can)o(tly)e(less)225 2208 y(storage)e(than)g(the)h(original)d (tensor.)225 2291 y FA(4.3)20 b(Computing)13 b(a)h(T)m(enso)o(r)g(SDD) 225 2358 y Ft(As)j(with)f(the)i(regular)e(and)h(w)o(eigh)o(ted)f(SDDs,) h(a)f(tensor)i(SDD)e(can)h(b)q(e)g(constructed)i(via)d(a)225 2408 y(greedy)c(algorithm.)j(Eac)o(h)c(iteration,)g(a)g(new)g Fr(d)g Ft(and)g Fr(x)g Ft(are)h(computed)e(that)i(are)f(the)h(solution) 225 2457 y(to)i(the)g(follo)o(wing)d(subproblem:)321 2532 y(min)17 b Fr(F)436 2538 y Fp(k)456 2532 y Ft(\()p Fr(d;)7 b(x)p Ft(\))k Fs(\021)h(k)p Fr(R)661 2538 y Fp(k)690 2532 y Fs(\000)d Fr(dx)p Fs(k)798 2515 y Fn(2)853 2532 y Ft(s.t.)18 b Fr(d)11 b(>)h Ft(0)p Fr(;)17 b(x)1078 2515 y Fn(\()p Fp(j)r Fn(\))1133 2532 y Fs(2)11 b(S)1200 2515 y Fp(m)1229 2519 y Fm(j)1261 2532 y Ft(for)j Fr(j)g Ft(=)e(1)p Fr(;)7 b(:)g(:)g(:)t(;)g(n;)96 b Ft(\(15\))p eop %%Page: 13 13 13 12 bop 946 125 a Fv(Semidiscrete)12 b(Matrix)f(Decomp)q(osition)78 b Fu(\001)70 b Fv(13)225 233 y Ft(where)21 b Fr(R)383 239 y Fp(k)425 233 y Fs(\021)g Fr(A)14 b Fs(\000)568 202 y Fo(P)612 212 y Fp(k)q Fl(\000)p Fn(1)612 245 y Fp(i)p Fn(=1)682 233 y Fr(d)704 239 y Fp(i)717 233 y Fr(x)741 239 y Fp(i)775 233 y Ft(denotes)21 b(the)g Fr(k)q Ft(th)f(residual)f(matrix.)35 b(This)19 b(is)h(a)g(mixed)225 283 y(in)o(teger)e(programmi)o(ng)c(problem,)j(but)g(it)g(can)g(b)q(e)h (simpli\014ed)e(to)h(an)g(in)o(teger)h(program)d(as)225 332 y(demonstrated)f(b)o(y)g(the)g(follo)o(wing)d(theorem,)i(a)h (generalization)f(of)h(Theorem)f(1.)267 416 y Fk(Theorem)21 b(9.)g Fq(Solving)14 b(the)g(mixe)n(d)g(inte)n(ger)f(pr)n(o)n(gr)n(am)g (\(15\))h(is)f(e)n(quivalent)h(to)g(solving)f(the)225 466 y(inte)n(ger)h(pr)n(o)n(gr)n(am)474 574 y Ft(max)579 563 y(~)570 574 y Fr(F)5 b Ft(\()p Fr(x)p Ft(\))12 b(=)718 545 y(\()p Fr(R)e Fs(\001)e Fr(x)p Ft(\))836 530 y Fn(2)p 718 564 137 2 v 745 602 a Fs(k)p Fr(x)p Fs(k)811 590 y Fn(2)898 574 y Ft(s.t.)18 b Fr(x)996 556 y Fn(\()p Fp(j)r Fn(\))1051 574 y Fs(2)11 b(S)1118 556 y Fp(m)1147 560 y Fm(j)1180 574 y Fq(for)j Fr(j)g Ft(=)e(1)p Fr(;)7 b(:)g(:)g(:)e(;)i(n:)174 b Ft(\(16\))267 679 y Fk(Pr)o(oof.)21 b Ft(The)h(pro)q(of)e(follo)o(ws)f(the)i(same)f(progression)i(as)e(the) i(pro)q(of)e(for)g(Theorem)h(1)225 729 y(except)15 b(that)871 823 y Fr(d)893 805 y Fl(\003)923 823 y Ft(=)972 794 y Fr(R)9 b Fs(\001)f Fr(x)p 972 813 86 2 v 973 851 a Fs(k)p Fr(x)p Fs(k)1039 839 y Fn(2)1062 823 y Fr(:)p 265 890 29 2 v 265 915 2 25 v 291 915 V 265 917 29 2 v 267 999 a Ft(Solving)h(\(16\))i(is)h(an)f(in)o(teger)g(programming)d(problem)i (that)h(has)h(3)1317 984 y Fp(m)1346 988 y Fj(1)1362 984 y Fn(+)p Fp(m)1416 988 y Fj(2)1433 984 y Fn(+)p Fl(\001\001\001)p Fn(+)p Fp(m)1542 988 y Fm(n)1577 999 y Ft(p)q(ossible)225 1049 y(solutions.)27 b(T)m(o)16 b(solv)o(e)h(this)g(problem)e(appro)o (ximately)m(,)g(an)i(alternating)f(algorithm)e(will)i(b)q(e)225 1099 y(used.)j(The)c(idea)f(is)g(the)g(same)g(as)g(for)f(the)i(regular) f(and)g(w)o(eighed)g(SDDs.)19 b(Fix)13 b(all)g(the)i(com-)225 1148 y(p)q(onen)o(ts)e(of)f Fr(x)h Ft(except)g(one,)g(sa)o(y)f Fr(x)770 1133 y Fn(\()p Fp(j)r Fn(\))814 1148 y Ft(,)g(and)g(\014nd)h (the)g(optimal)d Fr(x)1244 1133 y Fn(\()p Fp(j)r Fn(\))1299 1148 y Ft(under)k(those)f(conditions.)225 1198 y(Rep)q(eat)19 b(this)f(pro)q(cess)j(for)d(another)g(v)n(alue)g(of)g Fr(j)r Ft(,)h(con)o(tin)o(uing)f(un)o(til)f(impro)o(v)o(emen)o(t)f(in)i (the)225 1248 y(v)n(alue)13 b(of)389 1237 y(~)380 1248 y Fr(F)5 b Ft(\()p Fr(x)p Ft(\))14 b(stagnates.)267 1298 y(Assume)f(that)h(all)f(comp)q(onen)o(ts)g(of)h Fr(x)f Ft(are)i(\014xed)f(except)h Fr(x)1205 1283 y Fn(\()p Fp(j)r Fn(\))1248 1298 y Ft(.)j(Then)d(\(16\))e(reduces)j(to)684 1411 y(max)773 1383 y(\()p Fr(s)10 b Fs(\001)e Fr(x)862 1368 y Fn(\()p Fp(j)r Fn(\))905 1383 y Ft(\))921 1368 y Fn(2)p 773 1401 168 2 v 793 1440 a Fs(k)p Fr(x)838 1428 y Fn(\()p Fp(j)r Fn(\))881 1440 y Fs(k)902 1426 y Fn(2)902 1451 y(2)982 1411 y Ft(s.t.)18 b Fr(x)1080 1394 y Fn(\()p Fp(j)r Fn(\))1135 1411 y Fs(2)11 b(S)1202 1394 y Fp(m)1231 1398 y Fm(j)1249 1411 y Fr(;)225 1526 y Ft(where)16 b Fr(s)d Fs(\021)g Ft(\()p Fr(R)471 1532 y Fp(k)501 1526 y Fs(\001)c Fr(x)546 1511 y Fn(\()p Fl(\000)p Fp(j)r Fn(\))615 1526 y Ft(\))p Fr(=)p Fs(k)p Fr(x)697 1511 y Fn(\()p Fl(\000)p Fp(j)r Fn(\))766 1526 y Fs(k)787 1511 y Fn(2)805 1526 y Ft(.)20 b(This)15 b(is)f(same)g(as)g(problem)g (\(5\),)g(so)g(w)o(e)h(kno)o(w)f(ho)o(w)g(to)225 1575 y(solv)o(e)g(it.)267 1626 y(The)f(tensor)g(SDD)f(algorithm)e(is)j(giv)o (en)f(in)g(Figure)h(3.)k(In)c(Step)g(\(2a\),)f Fr(x)h Ft(should)f(b)q(e)h(c)o(hosen)225 1675 y(so)21 b(that)f Fr(R)411 1681 y Fp(k)445 1675 y Fs(\001)13 b Fr(x)22 b Fs(6)p Ft(=)h(0.)37 b(Unless)21 b Fr(R)810 1681 y Fp(k)851 1675 y Ft(is)f(zero)h(itself)f(\(in)h(whic)o(h)f(case)h Fr(A)1422 1681 y Fp(k)q Fl(\000)p Fn(1)1508 1675 y Ft(=)i Fr(A)p Ft(\),)e(it)f(is)225 1725 y(alw)o(a)o(ys)15 b(p)q(ossible)i(to)f (pic)o(k)h(suc)o(h)g(an)f Fr(x)p Ft(.)26 b(The)17 b(for-lo)q(op)e(in)h (Step)h(\(2\(b\)i\))f(do)q(es)i(not)e(need)h(to)225 1775 y(go)g(through)h(the)g(comp)q(onen)o(ts)f(of)g Fr(x)g Ft(in)g(order.)30 b(That)18 b(lo)q(op)f(could)g(b)q(e)h(replaced)h(b)o (y)e(\\F)m(or)225 1825 y Fr(j)e Ft(=)e Fr(\031)q Ft(\(1\))p Fr(;)7 b(\031)q Ft(\(2\))p Fr(;)g(:)g(:)g(:)t(;)g(\031)q Ft(\()p Fr(n)p Ft(\))15 b(do,")e(where)j Fr(\031)f Ft(is)g(an)f Fr(n)p Ft(-p)q(erm)o(utation.)k(Note)d(that)f(in)g(eac)o(h)h(step)225 1875 y(of)d(\(2\(b\)i\),)h(the)h(v)n(alue)e(of)h Fr(x)f Ft(ma)o(y)f(c)o(hange)j(and)f(that)g(the)h(ob)r(jectiv)o(e)f(function)g (is)g(guaran)o(teed)225 1924 y(to)h(b)q(e)g(at)g(least)g(as)g(go)q(o)q (d)g(as)f(it)h(w)o(as)g(with)f(the)i(previous)f Fr(x)p Ft(.)225 2016 y FA(4.4)20 b(Convergence)c(of)d(the)i(T)m(enso)o(r)f (SDD)225 2083 y Ft(Lik)o(e)j(the)g(SDD,)f(the)i(tensor)g(SDD)f (algorithm)d(has)j(the)h(prop)q(ert)o(y)g(that)f(the)h(norm)d(of)i(the) 225 2133 y(residual)i(decreases)i(eac)o(h)e(outer)h(iteration.)32 b(F)m(urthermore,)20 b(w)o(e)f(can)g(pro)o(v)o(e)g(con)o(v)o(ergence) 225 2183 y(results)13 b(similar)d(to)i(those)h(for)f(the)h(SDD)f(\(pro) q(ofs)g(are)h(omitted)e(but)h(are)h(similar)d(to)i(those)h(for)225 2233 y(the)i(SDD\))f(using)h(eac)o(h)g(of)f(the)h(follo)o(wing)d (starting)j(strategies)g(in)g(Step)g(\(2a\))f(of)g(the)h(tensor)225 2282 y(SDD)e(algorithm:)225 2376 y(\(1\))21 b(MAX:)14 b(Initialize)f Fr(x)f Ft(=)h Fr(e)697 2354 y Fn(\(1\))697 2388 y Fp(j)711 2392 y Fj(1)751 2376 y Fs(\012)d Fr(e)812 2354 y Fn(\(2\))812 2388 y Fp(j)826 2392 y Fj(2)866 2376 y Fs(\012)g(\001)d(\001)g(\001)h(\012)i Fr(e)1027 2354 y Fn(\()p Fp(n)p Fn(\))1027 2388 y Fp(j)1041 2392 y Fm(n)1076 2376 y Ft(,)k(where)h Fr(r)1241 2382 y Fp(j)1255 2386 y Fj(1)1271 2382 y Fp(j)1285 2386 y Fj(2)1301 2382 y Fp(:::)o(j)1344 2386 y Fm(n)1381 2376 y Ft(is)f(the)h(largest)f(mag-) 299 2426 y(nitude)g(elemen)o(t)f(of)h Fr(R)p Ft(.)225 2503 y(\(2\))21 b(CYC:)13 b(Same)g(idea)h(as)g(for)f(the)i(SDD,)d(but)j (no)o(w)e(the)i(cycle)f(is)1308 2463 y Fp(n)1299 2472 y Fo(Q)1290 2539 y Fp(j)r Fn(=2)1354 2503 y Fr(m)1390 2509 y Fp(j)1422 2503 y Ft(long.)p eop %%Page: 14 14 14 13 bop 225 125 a Fv(14)71 b Fu(\001)78 b Fv(T.)13 b(G.)f(Kolda)g(and)h(D.)g(P)m(.)e(O'Lea)o(ry)300 656 y Fz(\(1\))28 b(Let)11 b Fi(R)464 662 y Fh(k)494 656 y Fz(denote)f(the)h(residual,)e(and)i(initialize)e Fi(R)1049 661 y Fg(1)1075 656 y Fy( )h Fi(A)p Fz(.)374 698 y(Let)h Fi(\032)455 704 y Fh(k)484 698 y Fz(=)f Fy(k)p Fi(R)566 704 y Fh(k)584 698 y Fy(k)602 686 y Fg(2)631 698 y Fz(b)q(e)h(the)g (norm)f(of)h(the)g(residual,)e(and)i(initialize)e Fi(\032)1304 703 y Fg(1)1331 698 y Fy( )h(k)p Fi(R)1421 703 y Fg(1)1438 698 y Fy(k)1456 686 y Fg(2)1473 698 y Fz(.)374 739 y(Let)h Fi(A)463 745 y Fh(k)494 739 y Fz(denote)f(the)g Fi(k)q Fz(-term)h(appro)o(ximat)o(ion)o(,)e(and)h(initialize)g Fi(A)1267 744 y Fg(0)1294 739 y Fy( )g Fz(0.)374 781 y(Cho)q(ose)g Fi(k)514 785 y Fg(max)573 781 y Fz(,)h(the)g(maxim)o(um)e (n)o(um)o(b)q(er)g(of)i(terms)g(in)g(the)g(appro)o(xima)o(tion)o(.)374 822 y(Cho)q(ose)f Fi(\032)514 827 y Fg(min)567 822 y Fz(,)h(the)g(desired)f(accuracy)f(of)i(the)g(appro)o(ximat)o(ion.)374 864 y(Cho)q(ose)f Fi(l)507 868 y Fg(max)565 864 y Fz(,)i(the)e(maxim)o (um)f(allo)o(w)o(able)h(inner)g(iterations.)374 905 y(Cho)q(ose)g Fi(\013)519 910 y Fg(min)571 905 y Fz(,)i(the)f(minim)o(um)e(relativ)o (e)g(impro)o(v)o(emen)n(t,)g(and)h(set)h Fi(\013)f(>)g Fz(2)p Fi(\013)1393 910 y Fh(min)1452 905 y Fz(.)300 976 y(\(2\))28 b(F)m(or)11 b Fi(k)g Fz(=)f(1)p Fi(;)5 b Fz(2)p Fi(;)h(:)f(:)h(:)g(;)f(k)650 980 y Fg(max)709 976 y Fz(,)12 b(while)f Fi(\032)841 982 y Fh(k)870 976 y Fi(>)f(\032)925 981 y Fg(min)978 976 y Fz(,)h(do)374 1030 y(\(a\))30 b(Initialize)9 b Fi(x)g Fz(=)i Fi(x)683 1018 y Fg(\(1\))732 1030 y Fy(\012)d Fi(x)787 1018 y Fg(\(2\))836 1030 y Fy(\012)g(\001)e(\001)f(\001)j(\012)g Fi(x)975 1018 y Fg(\()p Fh(n)p Fg(\))1020 1030 y Fz(.)374 1084 y(\(b\))28 b(F)m(or)11 b Fi(l)f Fz(=)g(1)p Fi(;)5 b Fz(2)p Fi(;)g(:)h(:)g(:)g(;)f(l)711 1088 y Fg(max)769 1084 y Fz(,)12 b(while)f Fi(\013)e(>)h(\013)975 1089 y Fg(min)1028 1084 y Fz(,)h(do)450 1138 y(i.)56 b(F)m(or)11 b Fi(j)h Fz(=)e(1)p Fi(;)c Fz(2)p Fi(;)f(:)h(:)f(:)h(;)g(n)12 b Fz(do)526 1179 y(Set)e Fi(s)h Fy( )f Fi(R)685 1185 y Fh(k)711 1179 y Fy(\001)e Fi(x)749 1168 y Fg(\()p Ff(\000)p Fh(j)q Fg(\))813 1179 y Fz(.)526 1255 y(Solv)o(e)i(max)704 1232 y(\()p Fi(s)734 1221 y Fh(T)759 1232 y Fi(x)779 1221 y Fg(\()p Fh(j)q Fg(\))819 1232 y Fz(\))833 1221 y Fg(2)p 704 1248 146 2 v 721 1281 a Fy(k)p Fi(x)759 1272 y Fg(\()p Fh(j)q Fg(\))798 1281 y Fy(k)816 1270 y Fg(2)816 1293 y(2)886 1255 y Fz(s.t.)15 b Fi(x)969 1242 y Fg(\()p Fh(j)q Fg(\))1019 1255 y Fy(2)9 b(S)1075 1242 y Fh(m)1102 1247 y Fm(j)1121 1255 y Fi(:)526 1332 y Fz(End)i Fi(j)r Fz(-lo)q(op.)450 1406 y(ii.)46 b Fi(\014)11 b Fy( )607 1383 y Fz(\()p Fi(R)648 1389 y Fh(k)674 1383 y Fy(\001)d Fi(x)p Fz(\))726 1371 y Fg(2)p 607 1399 136 2 v 639 1431 a Fy(k)p Fi(x)p Fy(k)695 1422 y Fg(2)748 1406 y Fz(.)450 1495 y(iii.)36 b(If)11 b Fi(l)f(>)g Fz(1:)15 b Fi(\013)10 b Fy( )745 1471 y Fi(\014)f Fy(\000)814 1463 y Fz(\026)809 1471 y Fi(\014)p 745 1487 87 2 v 782 1511 a Fz(\026)777 1520 y Fi(\014)836 1495 y Fz(.)450 1571 y(iv.)531 1562 y(\026)526 1571 y Fi(\014)i Fy( )f Fi(\014)r Fz(.)450 1625 y(End)h Fi(l)p Fz(-lo)q(op.)374 1679 y(\(c\))32 b Fi(x)470 1685 y Fh(k)498 1679 y Fy( )10 b Fi(x)p Fz(.)374 1749 y(\(d\))28 b Fi(d)468 1755 y Fh(k)497 1749 y Fy( )547 1726 y Fi(R)574 1732 y Fh(k)600 1726 y Fy(\001)8 b Fi(x)638 1732 y Fh(k)p 547 1742 111 2 v 556 1774 a Fy(k)p Fi(x)594 1780 y Fh(k)613 1774 y Fy(k)631 1765 y Fg(2)662 1749 y Fz(.)374 1812 y(\(e\))32 b Fi(A)476 1818 y Fh(k)505 1812 y Fy( )10 b Fi(A)576 1818 y Fh(k)q Ff(\000)p Fg(1)643 1812 y Fz(+)e Fi(d)696 1818 y Fh(k)715 1812 y Fi(x)735 1818 y Fh(k)754 1812 y Fz(.)374 1866 y(\(f)s(\))34 b Fi(R)477 1872 y Fh(k)q Fg(+1)544 1866 y Fy( )10 b Fi(R)616 1872 y Fh(k)642 1866 y Fy(\000)e Fi(d)695 1872 y Fh(k)715 1866 y Fi(x)735 1872 y Fh(k)754 1866 y Fz(.)374 1920 y(\(g\))30 b Fi(\032)468 1926 y Fh(k)q Fg(+1)535 1920 y Fy( )10 b Fi(\032)598 1926 y Fh(k)625 1920 y Fy(\000)e Fi(\014)r Fz(.)374 1986 y(End)i Fi(k)q Fz(-lo)q(op.)704 2136 y(Fig.)h(3.)35 b(Computing)9 b(a)i(T)m(ensor)g(SDD)p eop %%Page: 15 15 15 14 bop 946 125 a Fv(Semidiscrete)12 b(Matrix)f(Decomp)q(osition)78 b Fu(\001)70 b Fv(15)225 235 y Ft(\(3\))21 b(THR:)10 b(Cho)q(ose)h Fr(x)578 220 y Fn(\()p Fl(\000)p Fn(1\))660 235 y Ft(=)h Fr(e)723 213 y Fn(\(2\))723 246 y Fp(j)737 250 y Fj(2)771 235 y Fs(\012)s(\001)7 b(\001)g(\001)s(\012)s Fr(e)913 213 y Fn(\()p Fp(n)p Fn(\))913 246 y Fp(j)927 250 y Fm(n)973 235 y Ft(\(i.e.,)j Fr(x)h Ft(with)g(the)g(\014rst)h (comp)q(onen)o(t)e(remo)o(v)o(ed\))299 284 y(suc)o(h)k(that)732 382 y Fs(k)p Ft(\()p Fr(R)9 b Fs(\001)g Fr(x)855 365 y Fn(\()p Fl(\000)p Fn(1\))925 382 y Ft(\))p Fs(k)962 365 y Fn(2)962 392 y(2)992 382 y Fs(\025)j(k)p Fr(R)p Fs(k)1110 365 y Fn(2)1128 382 y Fr(=)1174 330 y Fp(n)1158 343 y Fo(Y)1156 431 y Fp(j)r Fn(=2)1220 382 y Fr(m)1256 388 y Fp(j)1274 382 y Fr(:)299 513 y Ft(Although)17 b(an)g(appropriate) g(c)o(hoice)h(of)f Fr(e)971 492 y Fn(\(2\))971 525 y Fp(j)985 529 y Fj(2)1028 513 y Fs(\012)12 b(\001)7 b(\001)g(\001)j (\012)i Fr(e)1195 492 y Fn(\()p Fp(n)p Fn(\))1195 525 y Fp(j)1209 529 y Fm(n)1261 513 y Ft(is)17 b(guaran)o(teed)h(to)f (exist,)i(it)299 563 y(ma)o(y)12 b(b)q(e)i(di\016cult)f(to)g(\014nd)h (b)q(ecause)i(of)d(the)h(large)f(searc)o(h)i(space)g(of)e(elemen)o(ts)h (to)f(searc)o(h)299 613 y(through.)225 713 y FA(5.)20 b(APPLICA)m(TIONS)225 779 y Ft(The)g(SDD)f(is)g(useful)g(in)g (applications)f(in)o(v)o(olving)f(storage)j(compression,)g(data)f (\014ltering,)225 829 y(and)13 b(feature)h(extraction.)k(As)c (examples,)e(w)o(e)i(discuss)g(in)f(this)g(section)h(the)g(use)g(of)f (the)h(SDD)225 879 y(in)h(image)f(compression,)i(c)o(hromosome)d (classi\014cation,)j(and)f(laten)o(t)h(seman)o(tic)f(indexing)g(of)225 929 y(do)q(cumen)o(ts.)225 1016 y FA(5.1)20 b(Data)14 b(Comp)o(ression)e(via)i(the)h(SDD)225 1083 y Ft(If)f(a)h(matrix)e (consumes)h(to)q(o)h(m)o(uc)o(h)e(storage)i(space,)h(then)f(the)h(SDD)e (is)g(one)h(w)o(a)o(y)f(to)h(reduce)225 1133 y(the)d(storage)g(burden.) 18 b(F)m(or)11 b(example,)f(the)i(SDD)e(can)i(b)q(e)g(used)g(for)f (image)e(compression.)17 b(The)225 1182 y(SDD)d(w)o(as)g(originally)e (dev)o(elop)q(ed)j(b)o(y)f(O'Leary)g(and)h(P)o(eleg)f([1983])e(for)i (this)h(application.)j(If)225 1232 y(eac)o(h)13 b(pixel)g(v)n(alue)f (\(e.g.,)g(gra)o(y)g(lev)o(el\))h(is)g(stored)g(as)g(a)g(matrix)e(en)o (try)m(,)i(then)g(a)g Fr(k)q Ft(-term)f(SDD)g(of)225 1282 y(the)i(resulting)g(matrix)f(can)h(b)q(e)g(stored)h(as)f(an)g (appro)o(ximation)c(to)k(the)h(original)d(image.)267 1332 y(Other)k(matrix)e(appro)o(ximation)e(tec)o(hniques)17 b(ha)o(v)o(e)e(b)q(een)i(used)f(for)g(image)d(compression.)225 1382 y(The)h(SVD)f([Golub)f(and)h(V)m(an)g(Loan)f(1989])g(pro)o(vides)i (a)f(set)h(of)e(basis)i(v)o(ectors)g(that)g(giv)o(es)f(the)225 1432 y(optimal)d(lo)o(w-rank)i(appro)o(ximation)e(in)i(the)i(sense)g (of)f(minim)o(i)o(zing)d(the)j(sum)f(squared)i(errors)225 1481 y(\(F)m(rob)q(enius)f(norm\).)j(But)d(these)h(v)o(ectors)g(are)f (exp)q(ensiv)o(e)g(to)f(generate)i(and)e(tak)o(e)h(quite)f(a)h(bit)225 1531 y(of)f(storage)g(space)i(\()p Fr(n)6 b Ft(+)g Fr(m)g Ft(+)g(1)13 b(\015oating)f(p)q(oin)o(t)g(elemen)o(ts)g(p)q(er)h(term,)f (although)f(it)h(is)g(p)q(ossible)225 1581 y(to)j(use)g(lo)o(w)o(er)f (precision\).)22 b(A)o(t)14 b(the)i(other)f(extreme,)g(predetermined)g (basis)g(v)o(ectors)h(can)f(b)q(e)225 1631 y(used)j(\(e.g.,)f(Haar)g (basis)g(or)g(other)h(w)o(a)o(v)o(elet)e(bases\).)29 b(In)17 b(this)g(case,)i(the)e(basis)g(v)o(ectors)i(do)225 1681 y(not)14 b(need)h(to)g(b)q(e)f(explicitly)g(stored,)h(but)f(the)h (n)o(um)o(b)q(er)f(of)f(terms)h(is)g(generally)g(m)o(uc)o(h)f(larger) 225 1730 y(than)f(for)h(the)g(SVD.)f(Although)g(the)h(SDD)f(c)o(ho)q (oses)h(the)g(basis)g(v)o(ectors)g(to)g(\014t)f(the)i(particular)225 1780 y(problem)i(\(lik)o(e)g(the)h(SVD\),)g(it)f(c)o(ho)q(oses)i(them)e (with)h(restricted)i(en)o(tries)f(\(lik)o(e)e(the)i(w)o(a)o(v)o(elet) 225 1830 y(bases\),)c(making)c(the)k(storage)f(p)q(er)h(term)f(only)f (log)1034 1840 y Fn(2)1059 1830 y Ft(3\()p Fr(n)7 b Ft(+)h Fr(m)p Ft(\))14 b(bits)f(plus)g(one)g(\015oating)f(p)q(oin)o(t)225 1880 y(n)o(um)o(b)q(er.)267 1930 y(Exp)q(erimen)o(ts)i(using)g(the)h (SDD)f(for)g(images)f(ac)o(hiev)o(ed)i(10)f(to)g(1)g(compression)g (\(using)h(the)225 1980 y(SDD)f(with)g(run-length)h(enco)q(ding\))g (without)f(visual)g(degradation)g(of)g(the)h(image)e([O'Leary)225 2030 y(and)h(P)o(eleg)g(1983].)225 2117 y FA(5.2)20 b(Data)14 b(Filtering)g(via)f(the)i(SDD)225 2184 y Ft(The)20 b Fr(k)q Ft(-term)e(appro)o(ximations)e(pro)q(duced)21 b(b)o(y)e(the)h(SDD)e(algorithm)f(can)i(b)q(e)h(though)o(t)f(of)225 2233 y(as)c(\014ltered)h(appro)o(ximations,)c(\014nding)j(relations)g (b)q(et)o(w)o(een)h(the)g(columns)e(\(or)h(ro)o(ws\))g(of)g(the)225 2283 y(matrix)h(that)i(are)g(hidden)f(b)o(y)h(lo)q(cal)f(v)n (ariations.)28 b(Th)o(us,)18 b(if)f(w)o(e)h(ha)o(v)o(e)f(man)o(y)f (observ)n(ations)225 2333 y(of)h(the)g(same)g(v)o(ector-v)n(alued)g (phenomenon,)g(then)g(an)g(SDD)g(of)f(the)i(data)f(can)g(rev)o(eal)h (the)225 2383 y(essen)o(tial)c(unc)o(hanging)g(c)o(haracteristics.)267 2433 y(This)k(fact)h(has)f(b)q(een)i(used)g(in)e(c)o(hromosome)e (classi\014cation.)32 b(Giv)o(en)18 b(a)g(\\training)g(set")225 2483 y(consisting)e(of)g(man)o(y)e(observ)n(ations)i(of)g(a)g(giv)o(en) g(t)o(yp)q(e)g(of)g(c)o(hromosome)e(\(e.g.,)i(a)g(h)o(uman)e(X)225 2532 y(c)o(hromosome\),)h(an)i(SDD)f(of)g(this)h(data)g(extracts)h (common)c(c)o(haracteristics,)19 b(similar)14 b(to)j(a)p eop %%Page: 16 16 16 15 bop 225 125 a Fv(16)71 b Fu(\001)78 b Fv(T.)13 b(G.)f(Kolda)g(and)h(D.)g(P)m(.)e(O'Lea)o(ry)225 233 y Ft(principal)j(comp)q(onen)o(t)f(analysis,)h(but)g(t)o(ypically)f (requiring)h(less)h(storage)g(space.)21 b(Then)15 b(the)225 283 y(idealized)f(represen)o(tation)i(of)d(this)h(c)o(hromosome)e(can)j (b)q(e)g(used)g(to)f(iden)o(tify)f(other)i(c)o(hromo-)225 332 y(somes)g(of)g(the)h(same)e(t)o(yp)q(e)i(\()p Fq(chr)n(omosome)h (karyotyping)p Ft(\).)23 b(F)m(or)15 b(more)g(information)d(on)j(this) 225 382 y(tec)o(hnique,)f(see)h([Conro)o(y)e(et)i(al.)d(1999].)225 463 y FA(5.3)20 b(F)o(eature)15 b(Extraction)f(via)g(the)h(SDD)225 529 y Ft(The)e(lo)o(w)g(rank)g(appro)o(ximatio)o(ns)e(pro)q(duced)j(b)o (y)f(the)h(SDD)e(extract)i(features)g(that)f(are)h(com-)225 579 y(mon)f(among)f(the)j(columns)e(\(or)i(ro)o(ws\))f(of)g(the)h (matrix.)j(This)c(task)h(is)f(addressed)i(b)o(y)e(laten)o(t)225 629 y(seman)o(tic)9 b(indexing)h(\(LSI\))g(of)g(do)q(cumen)o(ts.)16 b(A)10 b(database)h(of)e(do)q(cumen)o(ts)h(can)h(b)q(e)g(represen)o (ted)225 679 y(b)o(y)i(a)f(term-do)q(cumen)o(t)g(matrix,)f(in)h(whic)o (h)h(eac)o(h)g(matrix)f(en)o(try)h(represen)o(ts)j(the)d(imp)q(ortance) 225 729 y(of)i(some)g(term)g(in)g(a)g(particular)h(do)q(cumen)o(t.)22 b(Do)q(cumen)o(ts)16 b(can)g(b)q(e)g(clustered)h(for)e(retriev)n(al)225 778 y(based)20 b(on)f(common)d(features.)35 b(Standard)20 b(algorithms)d(use)j(the)g(SVD)f(to)g(extract)h(these)225 828 y(feature)15 b(v)o(ectors,)g(but)f(the)h(storage)f(in)o(v)o(olv)o (ed)f(is)h(often)g(greater)h(than)g(that)f(for)f(the)i(original)225 878 y(matrix.)h(In)d(con)o(trast,)h(the)g(SDD)f(has)h(b)q(een)g(used)g (b)o(y)g(Kolda)e(and)i(O'Leary)f([1998,)f(1999])f(to)225 928 y(ac)o(hiev)o(e)j(similar)e(retriev)n(al)h(p)q(erformance)h(at)g(a) f(m)o(uc)o(h)g(lo)o(w)o(er)h(storage)g(cost.)225 1015 y FA(6.)20 b(IMPLEMENT)m(A)m(TION)13 b(DET)m(AILS)225 1081 y Ft(W)m(e)k(fo)q(cus)g(on)g(the)h(regular)f(SDD;)f(the)i(details) f(for)g(the)h(w)o(eigh)o(ted)f(and)g(tensor)h(SDDs)f(are)225 1131 y(similar.)24 b(The)18 b(primary)d(adv)n(an)o(tage)h(of)g(the)i (SDD)e(o)o(v)o(er)h(matrix)e(decomp)q(ositions)h(suc)o(h)h(as)225 1181 y(the)i(SVD)f(is)g(that)g(the)g(SDD)g(requires)h(v)o(ery)g(little) e(memory)m(.)28 b(In)18 b(this)g(section,)h(w)o(e)g(illus-)225 1231 y(trate)14 b(the)g(data)f(structures)i(and)e(implemen)o(tation)d (details)j(of)f(the)i(C)f(co)q(de)h(in)f(our)g(pac)o(k)n(age,)225 1281 y(SDDP)m(A)o(CK,)g(that)h(ac)o(hiev)o(e)g(the)g(storage)h(sa)o (vings.)225 1361 y FA(6.1)20 b(Data)14 b(Structures)225 1428 y Ft(An)j(en)o(try)h(from)e(the)h(discrete)i(set)f Fs(S)s Ft(,)g(referred)h(to)e(as)g(an)g Fs(S)s Fq(-value)p Ft(,)h(can)g(b)q(e)f(stored)i(using)225 1478 y(only)g(log)376 1488 y Fn(2)401 1478 y Ft(3)h(bits.)36 b(W)m(e)20 b(actually)e(use)j(t) o(w)o(o)f(bits)g(of)f(storage)h(p)q(er)h Fs(S)s Ft(-v)n(alue)e(b)q (ecause)j(it)d(is)225 1527 y(adv)n(an)o(tageous)c(in)g(computations)f (in)o(v)o(olving)g(the)i Fs(S)s Ft(-v)n(alues)g(\(see)h Fs(x)p Ft(6.2\))e(and)g(requires)i(only)225 1577 y(26\045)12 b(more)g(memory)m(.)j(The)e(\014rst)g(bit)g(is)g(the)g Fq(value)j Ft(bit)d(and)g(is)f(on)h(if)f(the)i Fs(S)s Ft(-v)n(alue)e(is)h(nonzero)225 1627 y(and)i(o\013)g(otherwise;)g(the)h (second)g(bit)e(is)h(the)h Fq(sign)i Ft(bit)c(and)h(is)g(on)f(for)h(an) g Fs(S)s Ft(-v)n(alue)f(of)g(-1,)g(o\013)225 1677 y(for)g(1,)f(and)h (unde\014ned)h(for)f(0)g(\(T)m(able)f(1\).)18 b(The)d(unde\014ned)g (bits)f(w)o(ould)f(not)h(b)q(e)h(stored)g(if)e(w)o(e)225 1727 y(w)o(ere)i(storing)f(using)f(only)g(log)713 1737 y Fn(2)738 1727 y Ft(3)h(bits)g(p)q(er)h Fs(S)s Ft(-v)n(alue.)657 1860 y Fz(T)m(able)c(1.)35 b(Bit)11 b(represen)o(tation)d(of)j Fy(S)r Fz(-v)n(alues.)p 661 1872 611 2 v 660 1913 2 42 v 686 1901 a Fy(S)r Fx(-V)m(alue)p 847 1913 V 855 1913 V 57 w(V)m(alue)h(Bit)p 1074 1913 V 50 w(Sign)h(Bit)p 1271 1913 V 661 1915 611 2 v 660 1956 2 42 v 752 1944 a Fz(0)p 847 1956 V 855 1956 V 187 w(0)p 1074 1956 V 151 w(undef.)p 1271 1956 V 661 1958 611 2 v 660 2000 2 42 v 752 1987 a(1)p 847 2000 V 855 2000 V 187 w(1)p 1074 2000 V 189 w(0)p 1271 2000 V 661 2001 611 2 v 660 2043 2 42 v 740 2030 a(-1)p 847 2043 V 855 2043 V 187 w(1)p 1074 2043 V 189 w(1)p 1271 2043 V 661 2044 611 2 v 267 2134 a Ft(Eac)o(h)f(iteration,)g(a)h(new)g(\()p Fr(d;)7 b(x;)g(y)q Ft(\))12 b(triplet)g(is)h(computed.)k(The)c Fr(x)f Ft(and)g Fr(y)j Ft(v)o(ectors)e(of)f(length)225 2184 y Fr(m)k Ft(and)g Fr(n)p Ft(,)g(resp)q(ectiv)o(ely)m(,)h(are)f (referred)i(to)e(as)g Fs(S)s Ft(-v)o(ectors.)25 b(In)16 b(SDDP)m(A)o(CK,)f(w)o(e)h(store)h(eac)o(h)225 2234 y Fs(S)s Ft(-v)o(ector's)e(v)n(alue)e(and)h(sign)f(arra)o(ys)h(pac)o(k)o (ed)g(in)o(to)g(unsigned)g(long)f(in)o(teger)h(arra)o(ys.)267 2283 y(Supp)q(ose)h(that)g(w)o(e)h(are)f(w)o(orking)f(on)h(a)f Fr(p)p Ft(-bit)h(arc)o(hitecture)h(\(i.e.,)e(the)i(length)f(of)f(a)h (single)225 2333 y(w)o(ord)f(of)g(memory)e(is)j Fr(p)f Ft(bits\).)20 b(Then)15 b(the)g(memory)d(allo)q(cated)i(to)g(the)i(v)n (alue)d(arra)o(y)i(to)f(hold)225 2383 y Fr(m)h Ft(bits)h(is)e Fs(d)q Fr(m=p)p Fs(e)h Ft(w)o(ords.)22 b(Storage)15 b(for)g(the)h(sign) e(arra)o(y)h(is)g(the)h(same.)k(An)15 b(example)f(of)h(an)225 2433 y Fs(S)s Ft(-v)o(ector)e(and)f(its)g(represen)o(tation)h(on)f(an)g (8-bit)f(arc)o(hitecture)j(is)e(giv)o(en)f(in)h(Figure)g(4.)17 b(Notice)225 2483 y(that)e(extra)h(bits)f(in)f(the)i(last)f(w)o(ord)g (of)f(the)i(arra)o(y)e(and)h(sign)g(bits)g(asso)q(ciated)h(with)e(zero) i Fs(S)s Ft(-)225 2532 y(v)n(alues)d(are)h(unde\014ned.)20 b(Extra)13 b(bits)h(are)g(ignored)f(\(i.e.,)g(mask)o(ed)f(to)i(an)f (appropriate)h(v)n(alue\))p eop %%Page: 17 17 17 16 bop 946 125 a Fv(Semidiscrete)12 b(Matrix)f(Decomp)q(osition)78 b Fu(\001)70 b Fv(17)297 560 y Fi(x)10 b Fz(=)364 242 y Fo(2)364 315 y(6)364 340 y(6)364 365 y(6)364 389 y(6)364 414 y(6)364 439 y(6)364 464 y(6)364 489 y(6)364 514 y(6)364 539 y(6)364 564 y(6)364 589 y(6)364 614 y(6)364 638 y(6)364 663 y(6)364 688 y(6)364 713 y(6)364 738 y(6)364 763 y(6)364 790 y(4)402 269 y Fy(\000)p Fz(1)430 311 y(0)430 352 y(1)430 394 y(1)402 435 y Fy(\000)p Fz(1)430 477 y(0)430 518 y(0)430 560 y(0)430 601 y(1)430 643 y(1)402 684 y Fy(\000)p Fz(1)430 726 y(0)402 767 y Fy(\000)p Fz(1)430 809 y(0)430 850 y(0)458 242 y Fo(3)458 315 y(7)458 340 y(7)458 365 y(7)458 389 y(7)458 414 y(7)458 439 y(7)458 464 y(7)458 489 y(7)458 514 y(7)458 539 y(7)458 564 y(7)458 589 y(7)458 614 y(7)458 638 y(7)458 663 y(7)458 688 y(7)458 713 y(7)458 738 y(7)458 763 y(7)458 790 y(5)569 264 y Fz(The)e Fy(S)r Fz(-v)o(ector)f Fi(x)h Fz(sho)o(wn)f(at)h(left)f(has)g (15)h(en)o(tries.)k(Let)c Fw(x)g Fz(b)q(e)f(a)h(p)q(oin)o(ter)569 306 y(to)15 b(its)h(represen)o(tatio)o(n)d(on)i(an)h(8-bit)e(arc)o (hitecture.)25 b(In)16 b(order)e(to)569 347 y(store)g(15)i(bits,)f(the) g(v)n(alue)f(and)h(sign)g(arra)o(ys)f(are)h(eac)o(h)g(allo)q(cated)569 389 y(t)o(w)o(o)c(w)o(ords)g(of)f(memory)m(.)j(The)e(v)n(alues)f(of)g (all)h(elemen)o(ts)d(of)j(the)f(data)569 430 y(structure)k(are)h(giv)o (en)g(b)q(elo)o(w.)29 b(The)16 b(binary)f(v)n(alues)g(of)h(the)f(8-bit) 569 472 y(w)o(ords)d(are)g(sho)o(wn)g(for)g(the)g(v)n(alue)f(and)g (sign)h(arra)o(ys;)f(the)h(question)569 513 y(marks)g(\()p Fw(?)p Fz(\))20 b(represen)o(t)11 b(bits)h(that)g(are)h(unde\014ned.)18 b(Note)13 b(that)f(the)569 555 y Fd(low)e(or)n(der)g Fz(bits)e(are)g(used)f(\014rst,)h(so)h(the)f(represen)o(tat)o(ion)d(at) j(the)g(w)o(ord)569 596 y(lev)o(el)i(is)i(righ)o(t-to-lef)o(t.)594 711 y Fw(x->length)i(=)k(15)594 770 y(x->value[1)o(])d(=)p 841 737 170 2 v 841 782 2 46 v 31 w(00011101)p 1009 782 V 841 784 170 2 v 58 w(x->value[2])f(=)p 1304 737 V 1304 782 2 46 v 31 w(?0010111)p 1472 782 V 1304 784 170 2 v 594 831 a(x->sign[1])32 b(=)p 841 798 V 841 843 2 46 v 31 w(???100?1)p 1009 843 V 841 845 170 2 v 58 w(x->sign[2])g(=)p 1304 798 V 1304 843 2 46 v 31 w(???1?100)p 1472 843 V 1304 845 170 2 v 611 988 a Fz(Fig.)11 b(4.)34 b(Illustration)9 b(of)i Fw(svector)e Fz(data)i(structure.)225 1093 y Ft(in)i(an)o(y)h (calculations.)j(W)m(e)c(used)i(an)e(8-bit)g(example)g(for)g(simplicit) o(y;)e(curren)o(t)k(arc)o(hitectures)225 1143 y(are)f(generally)g(32-)f (or)h(64-bit)f(\(T)m(able)g(2\).)723 1315 y Fz(T)m(able)e(2.)34 b(Curren)o(t)11 b(arc)o(hitectur)o(es.)p 720 1320 494 2 v 799 1349 a Fx(32-bit)142 b(64-bit)772 1391 y Fz(Sun)11 b(Sparc)76 b(SGI)10 b(Octane)745 1432 y(In)o(tel)g(P)o(en)o(tium)57 b(Dec)11 b(Alpha)752 1474 y(IBM)g(RS6000)p 720 1488 V 225 1668 a FA(6.2)20 b(Computations)13 b(with)h(Objects)h(Using)e(P)o (ack)o(ed)i(Sto)o(rage)225 1735 y Ft(Giv)o(en)c(an)h Fs(S)s Ft(-v)o(ector)h(in)f(pac)o(k)o(ed)g(storage,)h(w)o(e)f(can)h(lo) q(ok)e(up)h(the)h(v)n(alue)e(in)h(a)g(particular)g(en)o(try)225 1785 y(as)i(follo)o(ws.)i(If)e Fr(i)g Ft(is)f(the)i(desired)g(en)o(try) m(,)e(then)i(the)f(index)g(in)o(to)f(the)h(pac)o(k)o(ed)g(arra)o(y)g (is)g Fr(i)g Ft(div)f Fr(p)p Ft(,)225 1835 y(and)f(the)g(bit)g(w)o(e)g (w)o(an)o(t)g(inside)g(that)g(w)o(ord)g(is)g Fr(i)i Ft(mo)q(d)e Fr(p)p Ft(,)g(and)g(the)h(desired)g(bit)f(can)g(b)q(e)g(mask)o(ed)225 1885 y(o\013.)18 b(W)m(e)c(\014rst)h(do)e(a)h(mask)e(on)i(the)h (appropriate)f(w)o(ord)g(in)f(the)i(v)n(alue)e(arra)o(y)m(.)18 b(If)13 b(the)i(result)f(is)225 1934 y(zero,)g(then)g(en)o(try)h Fr(i)e Ft(is)h(zero,)g(and)f(w)o(e)h(need)h(do)e(no)g(further)i(w)o (ork.)i(Otherwise,)e(the)f(en)o(try)g(is)225 1984 y(either)i(+1)f(or)g (-1,)g(and)g(w)o(e)h(need)g(to)f(determine)g(the)h(sign.)22 b(W)m(e)15 b(mask)e(o\013)i(the)h(appropriate)225 2034 y(w)o(ord)e(in)f(the)i(sign)e(arra)o(y)m(.)18 b(If)13 b(that)h(is)g(zero,)g(the)g(en)o(try)h(is)f(+1;)f(otherwise,)i(it)e(is) h(-1.)267 2084 y(F)m(or)d(example,)g(Figure)i(5)f(sho)o(ws)g(ho)o(w)g (to)g(lo)q(ok)f(up)i(en)o(try)g(10)e(in)h(the)h(example)e(in)h(Figure)g (4.)225 2134 y(Here)18 b Fc(i)e Ft(is)g(the)h(desired)h(en)o(try)m(.)26 b(T)m(o)16 b(compute)g Fc(index)p Ft(,)f(the)i(index)g(in)o(to)f(the)h (pac)o(k)o(ed)g(arra)o(y)m(,)225 2184 y(divide)12 b(b)o(y)g Fr(p)p Ft(,)f(the)i(n)o(um)o(b)q(er)f(of)f(bits)h(p)q(er)h(w)o(ord.)18 b(Since)12 b Fr(p)g Ft(is)g(alw)o(a)o(ys)f(a)h(p)q(o)o(w)o(er)h(of)e(t) o(w)o(o,)h(this)g(can)225 2234 y(b)q(e)i(accomplished)f(b)o(y)g(a)g (righ)o(t)g(shift.)18 b(In)c(this)f(example,)f(w)o(e)i(righ)o(t)f (shift)g(3)g(since)i(log)1585 2244 y Fn(2)1611 2234 y Ft(8)c(=)h(3.)225 2283 y(Giv)o(en)j(the)i(correct)g(index)f(in)o(to)f (the)i(pac)o(k)o(ed)f(arra)o(ys,)g(the)g(correct)i(bit)d(inside)h(the)h (w)o(ord)e(is)225 2333 y(determined)g(b)o(y)f(a)h(mo)q(d)e(b)o(y)h Fr(p)p Ft(.)21 b(Again,)13 b(since)j Fr(p)e Ft(is)h(alw)o(a)o(ys)f(a)g (p)q(o)o(w)o(er)h(of)f(t)o(w)o(o,)g(w)o(e)h(can)g(use)h(a)225 2383 y(shortcut)i(b)o(y)e(doing)g(a)g(logical)f(AND)h(with)h Fr(p)11 b Fs(\000)g Ft(1,)16 b(in)h(this)f(example,)g(7.)25 b(Then)18 b(mask)d(the)225 2433 y(appropriate)f(w)o(ord)g(in)g(the)h(v) n(alue)e(arra)o(y)m(.)18 b(In)c(this)g(example,)f(it)g(is)h(nonzero,)h (so)f(the)h(en)o(try)f(is)225 2483 y(either)h(+1)f(or)g(-1.)19 b(Then)c(mask)e(the)h(appropriate)h(w)o(ord)f(in)g(the)g(sign)g(arra)o (y)g(and)g(determine)225 2532 y(that)g(the)g(en)o(try)h(is)f(+1.)p eop %%Page: 18 18 18 17 bop 225 125 a Fv(18)71 b Fu(\001)78 b Fv(T.)13 b(G.)f(Kolda)g(and)h(D.)g(P)m(.)e(O'Lea)o(ry)597 212 y Fw(i)17 b(=)h(10)597 253 y(index)e(=)h(i)h(>>)f(3)597 295 y(mask)f(=)i(1)f(<<)g(\(i)g(AND)f(7\))597 336 y(x->value[in)o(dex)o (])e(AND)j(mask)f(=)p 1074 303 170 2 v 1074 349 2 46 v 32 w(00000010)p 1241 349 V 1074 351 170 2 v 597 389 a(x->sign[ind)o(ex])31 b(AND)17 b(mask)f(=)p 1074 356 V 1074 401 2 46 v 32 w(00000000)p 1241 401 V 1074 403 170 2 v 614 480 a Fz(Fig.)11 b(5.)35 b(Lo)q(oking)9 b(up)i(a)h(v)n (alue)e(in)h(a)h(pac)o(k)o(ed)d(arra)o(y)m(.)267 579 y Ft(Note)g(that)h(the)g(alignmen)o(t)d(of)i(the)h(v)n(alue)f(and)g (sign)h(arra)o(ys)f(mak)o(es)g(it)g(easy)h(to)f(do)g(individual)225 629 y(lo)q(okups)14 b(of)g(v)n(alues.)20 b(If)14 b(w)o(e)h(did)f(not)g (store)i(the)f(`\014ller')e(bits)i(in)f(the)h(sign)f(arra)o(y)g(for)g (the)h(zero)225 679 y(en)o(tries,)h(the)g(sign)f(arra)o(y)h(w)o(ould)e (b)q(e)i(m)o(uc)o(h)e(shorter,)j(but)e(w)o(e)h(w)o(ould)f(ha)o(v)o(e)g (a)g(di\016cult)g(time)225 728 y(kno)o(wing)e(where)i(in)e(the)i(sign)e (arra)o(y)h(to)g(lo)q(ok)f(for)g(the)i(appropriate)f(bit.)267 778 y(In)j(the)i(previous)f(example,)f(w)o(e)h(sa)o(w)g(ho)o(w)f(to)h (lo)q(ok)f(up)h(a)f(random)g(en)o(try)h(in)f(a)h(pac)o(k)o(ed)225 828 y(arra)o(y)m(.)f(Often)d(w)o(e)g(w)o(alk)e(through)i(an)f Fs(S)s Ft(-v)o(ector)h(in)f(sequence.)20 b(In)13 b(that)h(case,)g (computations)225 878 y(can)h(b)q(e)h(p)q(erformed)f(ev)o(en)h(more)e (quic)o(kly)h(b)o(y)g(cop)o(ying)f(the)i(curren)o(t)h(v)n(alue)d(and)h (sign)g(w)o(ords)225 928 y(in)o(to)j(the)h(register)g(to)f(b)q(e)h (used)g Fr(p)g Ft(times)e(and)h(quic)o(kly)f(up)q(dating)h(the)h(mask)e (with)h(just)h(a)225 978 y(single)13 b(left)g(shift.)k(Ev)o(ery)d Fr(p)f Ft(en)o(tries,)h(w)o(e)f(reset)i(the)f(mask)e(to)h(one)g(and)g (sw)o(ap)g(the)h(next)g(v)n(alue)225 1027 y(and)g(sign)f(w)o(ords)h(in) o(to)g(the)g(register.)267 1077 y(The)k(inner)h(pro)q(duct)h(b)q(et)o (w)o(een)f(t)o(w)o(o)f Fs(S)s Ft(-v)o(ectors,)j(something)c(that)h(w)o (e)h(require,)h(can)f(b)q(e)225 1127 y(computed)12 b(as)h(follo)o(ws.)j (The)e(result)f(is)g(the)g(n)o(um)o(b)q(er)f(of)h(nonzeros)g(in)g (common)d(min)o(us)h(t)o(wice)225 1177 y(the)21 b(n)o(um)o(b)q(er)f(of) g(common)d(nonzeros)22 b(with)e(opp)q(osite)h(signs.)37 b(Pseudo-co)q(de)23 b(is)d(giv)o(en)g(in)225 1227 y(Figure)d(6)f(for)g (the)i(inner)f(pro)q(duct)g(of)f(t)o(w)o(o)g Fs(S)s Ft(-v)o(ectors)i Fc(a)f Ft(and)f Fc(b)p Ft(.)26 b(In)17 b(practice,)h(the)f(logical)225 1276 y(ANDs)k(and)f(ORs)h(are)g(done)g(on)f(a)h(w)o(ord-b)o(y-w)o(ord)e (basis)i(and)f(the)i(p)q(op)q(coun)o(t)f(\(sum\))e(is)225 1326 y(determined)e(using)g(a)g(lo)q(okup)f(table)h(on)g(a)g(b)o(yte-b) o(y-b)o(yte)g(basis.)28 b(So,)17 b(for)g(computing)f(the)225 1376 y(inner)e(pro)q(duct)g(of)f(t)o(w)o(o)f Fr(m)p Ft(-long)h Fs(S)s Ft(-v)o(ectors,)h(the)g(w)o(ork)f(required)h(is)f(3)p Fs(d)p Fr(m=p)p Fs(e)c Ft(+)g(4)p Fs(d)p Fr(m=)p Ft(8)p Fs(e)14 b Ft(and)225 1426 y(requires)h(no)f(m)o(ultiplicati)o(on.)567 1512 y Fw(common)i(=)h(a->value)e(AND)h(b->value)567 1553 y(oppsign)f(=)j(\(a->)e(sign)g(XOR)h(b->sign\))d(AND)j(common)567 1595 y(ip)g(=)g(popcount\(co)o(mmo)o(n\))d(-)k(2)f(popcount\(o)o(pps)o (ign)o(\))662 1679 y Fz(Fig.)11 b(6.)35 b(Inner)10 b(pro)q(duct)f(of)i (t)o(w)o(o)h Fy(S)r Fz(-v)o(ectors.)267 1785 y Ft(Eac)o(h)18 b(iteration)g(of)g(the)h(SDD)f(calculation,)g(the)h(most)f(exp)q(ensiv) o(e)h(op)q(erations)g(are)g(the)225 1835 y(computations)14 b(of)g Fr(R)565 1841 y Fp(k)585 1835 y Fr(y)j Ft(or)e Fr(R)706 1820 y Fp(T)706 1847 y(k)732 1835 y Fr(x)g Ft(\(Steps)h (\(2\(b\)i\))f(and)g(\(2\(b\)ii\))f(of)h(the)h(SDD)e(Algorithm)f(of)225 1885 y(Figure)18 b(1\).)31 b(W)m(e)18 b(fo)q(cus)g(on)g(the)h (computation)e(of)g Fr(R)1094 1891 y Fp(k)1114 1885 y Fr(y)j Ft(and)e(explain)f(the)i(di\013erences)i(for)225 1935 y(the)c(transp)q(ose)g(at)f(the)h(conclusion.)25 b(The)16 b(residual)g(breaks)h(in)o(to)f(t)o(w)o(o)f(parts:)23 b(the)17 b(original)225 1984 y(matrix,)12 b Fr(A)p Ft(,)h(and)h(the)g (\()p Fr(k)d Fs(\000)e Ft(1\)-term)k(SDD)g(appro)o(ximation)e(that)j(w) o(e)g(denote)h(b)o(y)f Fr(X)s(D)q(Y)1646 1969 y Fp(T)1672 1984 y Ft(.)267 2034 y(The)c(computation)f Fr(v)k Ft(=)f Fr(Ay)h Ft(is)d(a)g(sparse)i(matrix)d(times)g(an)i Fs(S)s Ft(-v)o(ector.)17 b(The)11 b(sparse)h(matrix)225 2084 y(is)h(stored)i(in)e(compressed)i(sparse)f(column)e(\(CSC\))i(format.)i (W)m(e)e(lo)q(op)e(through)i(the)g(matrix)225 2134 y(column)o(wise,)k (whic)o(h)g(means)f(that)i(w)o(e)f(w)o(alk)g(through)g(the)h Fr(y)q Ft(-v)o(ector)h(in)e(sequence.)34 b(If)18 b Fr(y)1702 2140 y Fp(j)225 2184 y Ft(is)f(zero,)i(then)e(nothing)g(is)g(done)h (with)e(column)g Fr(j)r Ft(.)28 b(Otherwise,)20 b(w)o(e)d(either)h(add) f(\()p Fr(y)1598 2190 y Fp(j)1633 2184 y Ft(=)g(1\))225 2234 y(or)e(subtract)i(\()p Fr(y)479 2240 y Fp(j)511 2234 y Ft(=)d Fs(\000)p Ft(1\))h(the)h(en)o(tries)g(in)f(column)f Fr(j)k Ft(from)13 b(the)j(appropriate)g(en)o(tries)g(in)f(the)225 2283 y(solution)e(v)o(ector)i Fr(v)q Ft(.)267 2333 y(The)f(computation) e(of)i Fr(w)f Ft(=)f Fr(X)s(D)q(Y)835 2318 y Fp(T)861 2333 y Fr(y)k Ft(breaks)f(do)o(wn)f(in)o(to)f(three)j(parts:)j Fr(Y)1485 2318 y Fp(T)1511 2333 y Fr(y)q Ft(,)c Fr(D)q Ft(\()p Fr(Y)1644 2318 y Fp(T)1670 2333 y Fr(y)q Ft(\),)225 2383 y(and)f Fr(X)s Ft(\()p Fr(D)q(Y)429 2368 y Fp(T)455 2383 y Fr(y)q Ft(\).)21 b(The)15 b(\014rst)g(part)g(is)f(an)g Fs(S)s Ft(-matrix)f(times)g(an)i Fs(S)s Ft(-v)o(ector,)g(whic)o(h)f (reduces)i(to)225 2433 y(an)e(inner)h(pro)q(duct)g(b)q(et)o(w)o(een)h (t)o(w)o(o)e Fs(S)s Ft(-v)o(ectors)h(for)f(eac)o(h)h(en)o(try)g(in)f (the)h(solution.)k(The)c(result)225 2483 y(of)h Fr(Y)308 2468 y Fp(T)334 2483 y Fr(y)i Ft(is)e(an)g(in)o(teger)h(v)o(ector.)26 b(The)16 b Fr(D)q Ft(\()p Fr(Y)936 2468 y Fp(T)962 2483 y Fr(y)q Ft(\))i(is)e(just)g(a)g(simple)f(scaling)g(op)q(eration,)i (and)225 2532 y(the)c(result)g(is)g(a)f(real)h(v)o(ector.)18 b(The)13 b(\014nal)f(pro)q(duct)h(is)g Fr(X)s Ft(\()p Fr(D)q(Y)1195 2517 y Fp(T)1222 2532 y Fr(y)q Ft(\),)g(and)f(in)g(this)h (case)h(w)o(e)e(w)o(alk)p eop %%Page: 19 19 19 18 bop 946 125 a Fv(Semidiscrete)12 b(Matrix)f(Decomp)q(osition)78 b Fu(\001)70 b Fv(19)225 233 y Ft(through)15 b(eac)o(h)g(bit)f(in)g (the)h Fr(X)j Ft(matrix)13 b(column)g(b)o(y)h(column)f(and)h(tak)o(e)h (appropriate)f(action.)225 283 y(Again,)f(only)g(additions)g(and)h (subtractions)g(are)h(required,)f(no)g(m)o(ultipli)o(cations.)267 333 y(In)h(the)i(case)g(of)e(the)i(transp)q(ose)g(computation,)d(the)i (main)e(di\013erence)k(is)e(in)f(the)i(compu-)225 382 y(tation)e(of)g Fr(A)429 367 y Fp(T)455 382 y Fr(x)p Ft(.)23 b(Here,)17 b(w)o(e)f(are)g(forced)g(to)g(use)g(random)e(access) k(in)o(to)c Fr(x)i Ft(since)g Fr(A)g Ft(is)f(stored)225 432 y(in)f(CSC)g(format.)i(The)f(metho)q(d)e(for)h(computing)e(\()p Fr(X)s(D)q(Y)1151 417 y Fp(T)1177 432 y Ft(\))1193 417 y Fp(T)1219 432 y Fr(x)i Ft(is)g(nearly)g(iden)o(tical)f(to)h(that)225 482 y(describ)q(ed)i(previously)d(for)h Fr(X)s(D)q(Y)777 467 y Fp(T)804 482 y Fr(y)q Ft(,)g(except)h(that)f(the)g(roles)h(of)e Fr(X)k Ft(and)d Fr(Y)23 b Ft(are)15 b(sw)o(app)q(ed.)267 532 y(So,)e(the)j(only)d(m)o(ultiplications)f(required)j(in)f(our)h (computations)e(are)i(the)g(diagonal)d(scal-)225 582 y(ings;)h(ev)o(erything)h(else)h(is)f(additions)f(and)h(subtractions.) 19 b(F)m(urther,)14 b(the)h(pieces)g(of)e(the)i(SDD)225 632 y(are)f(small)e(and)i(\014t)g(w)o(ell)f(in)o(to)g(cac)o(he.)225 729 y FA(7.)20 b(NUMERICAL)13 b(RESUL)m(TS)225 796 y Ft(The)d(computational)e(exp)q(erimen)o(ts)i(presen)o(ted)i(here)f(are) g(done)f(in)f(Matlab,)h(with)g(the)g(Matlab)225 846 y(co)q(de)21 b(and)f(examples)f(pro)o(vided)h(in)g(SDDP)m(A)o(CK.)f(In)h(general,)h (the)g(C)f(SDDP)m(A)o(CK)g(co)q(de)225 895 y(should)f(b)q(e)h(used)h (when)f(sp)q(eed)h(and)e(storage)h(e\016ciency)g(are)g(concerns.)37 b(No)19 b(results)i(are)225 945 y(presen)o(ted)16 b(here)f(for)e(the)h (w)o(eigh)o(ted)g(or)g(tensor)g(SDDs)g(although)e(MA)m(TLAB)i(co)q(de)h (for)e(these)225 995 y(decomp)q(ositions)g(are)h(included.)k(No)c(C)g (co)q(de)h(is)e(pro)o(vided)h(for)g(these)h(in)e(SDDP)m(A)o(CK.)267 1045 y(W)m(e)i(discuss)i(previous)f(researc)o(h)i(and)d(presen)o(t)j (new)e(results)h(on)e(the)i(SDD)e(and)g(starting)225 1095 y(criteria)f(as)g(w)o(ell)f(as)h(comparisons)f(b)q(et)o(w)o(een)i (the)g(SDD)e(and)h(the)g(SVD.)267 1145 y(In)9 b([Kolda)f(1997],)h (comparisons)f(of)h(the)h(v)n(arious)f(starting)g(criteria)h(on)f (small,)e(dense)k(matri-)225 1195 y(ces)j(are)g(presen)o(ted.)20 b(T)m(o)12 b(summarize,)f(the)i(MAX,)g(CYC,)g(and)g(THR)g(tec)o (hniques)h(are)f(nearly)225 1244 y(iden)o(tical)k(in)g(p)q(erformance.) 30 b(The)18 b(SVD)g(initialization)d(t)o(ypically)h(results)j(in)f(few) o(er)g(inner)225 1294 y(iterations)f(p)q(er)g(outer)g(iteration,)g(but) g(the)g(gain)f(is)g(o\013set)i(b)o(y)e(the)h(exp)q(ense)i(of)d (computing)225 1344 y(the)e(starting)g(v)o(ector.)267 1394 y(In)c([Kolda)f(and)h(O'Leary)h(1998],)e(the)i(SDD)e(and)h(SVD)h (are)f(compared)g(for)g(laten)o(t)g(seman)o(tic)225 1444 y(indexing)f(for)h(information)d(retriev)n(al.)17 b(A)o(t)10 b(equal)g(lev)o(els)g(of)g(retriev)n(al)g(p)q(erformance,)g(the)h(SDD) 225 1494 y(mo)q(del)k(required)i(appro)o(ximately)d(20)i(times)f(less)i (storage)g(and)f(p)q(erformed)g(queries)h(ab)q(out)225 1543 y(t)o(wice)g(as)g(fast.)25 b(On)17 b(the)g(negativ)o(e)g(side,)g (the)g(SVD)g(can)f(b)q(e)i(computed)e(ab)q(out)g(four)g(times)225 1593 y(faster)i(than)g(the)g(SDD)f(for)g(equal)g(p)q(erformance)h(lev)o (els.)29 b(The)18 b(SDD)f(computations)f(used)225 1643 y(option)g(PER,)h(as)g(describ)q(ed)i(subsequen)o(tly)f(|)e(w)o(e)i(ma) o(y)d(b)q(e)i(able)g(to)g(impro)o(v)o(e)e(the)j(sp)q(eed)225 1693 y(and)c(p)q(erformance)f(b)o(y)h(using)g(option)f(THR)g(instead.) 267 1743 y(W)m(e)e(compare)g(v)n(arious)g(initialization)f(strategies)j (for)e(the)i(SDD)e(on)h(sev)o(eral)g(sparse)h(matri-)225 1793 y(ces)i(from)e(MatrixMark)o(et;)g(the)i(test)g(set)g(is)f(describ) q(ed)i(in)e(T)m(able)f(3.)19 b(W)m(e)13 b(test)j(four)d(di\013eren)o(t) 225 1842 y(initialization)e(strategies)k(as)f(listed)g(b)q(elo)o(w.)225 1922 y(THR:)20 b(Cycle)f(through)g(the)h(unit)f(v)o(ectors)h (\(starting)f(where)h(it)f(left)g(o\013)g(at)f(the)i(previous)267 1972 y(iteration\))13 b(un)o(til)g Fs(k)p Fr(R)602 1978 y Fp(k)622 1972 y Fr(e)641 1978 y Fp(j)659 1972 y Fs(k)680 1957 y Fn(2)680 1982 y(2)710 1972 y Fs(\025)e(k)p Fr(R)806 1978 y Fp(k)826 1972 y Fs(k)847 1957 y Fn(2)847 1983 y Fp(F)874 1972 y Fr(=n)p Ft(,)i(and)h(set)h Fr(y)e Ft(=)f Fr(e)1187 1978 y Fp(j)1205 1972 y Ft(.)18 b(\(Threshold\))225 2033 y(CYC:)i(Initialize)13 b Fr(y)h Ft(=)d Fr(e)616 2039 y Fp(i)631 2033 y Ft(,)i(where)i Fr(i)d Ft(=)g(\(\()p Fr(k)e Fs(\000)g Ft(1\))j(mo)q(d)g Fr(n)p Ft(\))c(+)g(1.)18 b(\(Cycling\))225 2094 y(ONE:)j(Initialize)13 b Fr(y)i Ft(to)f(the)h(all)d(ones)j(v)o(ector.)k(\(Ones\))225 2155 y(PER:)h(Initialize)e Fr(y)i Ft(to)f(a)f(v)o(ector)i(suc)o(h)f (that)g(elemen)o(ts)g(1)p Fr(;)7 b Ft(101)p Fr(;)g Ft(201)p Fr(;)f(:)h(:)f(:)15 b Ft(are)k(one)g(and)g(the)267 2205 y(remaining)11 b(elemen)o(ts)j(are)g(zero.)19 b(\(P)o(erio)q(dic)c (ones\))225 2283 y(W)m(e)c(do)h(not)f(test)i(the)f(MAX)g(strategy)g(b)q (ecause)i(these)f(matrices)e(are)h(sparse,)g(so)g(the)g(residual)225 2333 y(is)k(stored)h(implicitly)l(.)22 b(The)16 b(other)h(parameters)f (of)g(the)g(SDD)g(are)h(set)g(as)f(follo)o(ws:)21 b Fr(k)1613 2339 y Fn(max)1691 2333 y Ft(is)225 2383 y(set)15 b(to)f(the)g(rank)g (of)f(the)i(matrix,)c Fr(\013)800 2389 y Fn(min)868 2383 y Ft(=)h(0)p Fr(:)p Ft(01,)g Fr(l)1023 2389 y Fn(max)1099 2383 y Ft(=)f(100,)i(and)h Fr(\032)1332 2389 y Fn(min)1401 2383 y Ft(=)e(0.)267 2433 y(The)17 b(p)q(erformance)f(of)g(these)j (four)d(strategies)i(on)e(our)h(four)f(test)i(matrices)e(is)h(sho)o(wn) g(in)225 2483 y(T)m(able)e(4.)24 b(The)16 b(table)g(compares)f(the)i (relativ)o(e)f(reduction)g(in)g(the)g(residual)g(\(as)g(a)g(p)q(ercen)o (t-)225 2532 y(age\),)j(the)h(a)o(v)o(erage)e(n)o(um)o(b)q(er)g(of)g (inner)h(iterations)g(\(whic)o(h)g(includes)g(the)g(extra)g(w)o(ork)g (for)p eop %%Page: 20 20 20 19 bop 225 125 a Fv(20)71 b Fu(\001)78 b Fv(T.)13 b(G.)f(Kolda)g(and)h(D.)g(P)m(.)e(O'Lea)o(ry)225 233 y Ft(initialization)h(in)j(THR\),)f(and)h(the)g(densit)o(y)g(of)g(the)g (\014nal)g(factors)g(\(as)g(a)g(p)q(ercen)o(tage\).)23 b(The)225 283 y(initialization)18 b(can)i(ha)o(v)o(e)h(a)f(dramatic)f (a\013ect)i(on)f(the)h(residual)g(after)g Fr(k)g Ft(terms.)37 b(In)21 b(the)225 332 y Fc(impcol)p 360 332 14 2 v 14 w(c)15 b Ft(and)g Fc(watson2)f Ft(matrices,)g(THR)h(and)f(CYC)h(are)h (drastically)e(b)q(etter)j(than)e(ONE)225 382 y(and)j(PER.)h(The)g(n)o (um)o(b)q(er)e(of)h(inner)h(iterations)g(is)f(lo)o(w)o(est)h(o)o(v)o (erall)e(for)h(CYC,)g(with)h(THR)225 432 y(b)q(eing)c(a)f(close)h (second.)21 b(In)15 b(terms)f(of)g(densit)o(y)m(,)g(THR)h(and)f(CYC)h (are)g(drastically)f(b)q(etter)i(in)225 482 y(ev)o(ery)d(case,)g(p)q (erhaps)g(b)q(ecause)h(the)e(initial)e(v)o(ector)j(is)f(sparse.)19 b(It)12 b(seems)g(that)g(the)h(densit)o(y)f(of)225 532 y(the)h(factors)g(ma)o(y)d(b)q(e)j(somewhat)e(related)i(to)f(the)h (densit)o(y)g(of)e(the)i(original)e(matrix.)k(Ov)o(erall,)225 581 y(THR)f(is)f(b)q(est,)i(with)e(CYC)h(a)g(close)g(second.)784 717 y Fz(T)m(able)d(3.)35 b(T)m(est)11 b(matrices.)p 508 723 917 2 v 507 764 2 42 v 533 752 a(Matrix)81 b(Ro)o(ws)50 b(Cols)g(NNZ)g(Rank)f(Densit)o(y\(\045\))p 1424 764 V 508 766 917 2 v 507 808 2 42 v 533 795 a(bfw62a)102 b(62)88 b(62)75 b(450)83 b(62)128 b(11.7)p 1424 808 V 507 849 V 533 837 a(imp)q(col)p 640 837 11 2 v 11 w(c)71 b(137)f(137)c(411)74 b(137)128 b(2.2)p 1424 849 2 42 v 507 891 V 533 878 a(w)o(est0132)63 b(132)70 b(132)c(414)74 b(132)128 b(2.4)p 1424 891 V 507 932 V 533 920 a(w)o(atson2)86 b(66)i(67)75 b(409)83 b(66)137 b(9.2)p 1424 932 V 508 934 917 2 v 586 1116 a(T)m(able)11 b(4.)35 b(Comparison)9 b(of)i(initializatio)o(n)e(tec)o (hniques.)572 1156 y(bfw62a)p 287 1170 680 2 v 286 1211 2 42 v 318 1199 a(Init.)54 b(\045)13 b(Resid.)48 b(In.)15 b(Its.)49 b(\045)12 b(Densit)o(y)p 965 1211 V 287 1213 680 2 v 286 1255 2 42 v 312 1242 a(THR)78 b(28.19)94 b Fx(3.69)112 b(9.33)p 965 1255 V 286 1296 V 312 1284 a Fz(CYC)79 b(25.54)99 b(3.73)119 b(9.55)p 965 1296 V 286 1338 V 312 1325 a(ONE)72 b Fx(22.86)96 b Fz(6.81)110 b(41.13)p 965 1338 V 286 1379 V 314 1367 a(PER)79 b(25.48)99 b(6.79)110 b(21.48)p 965 1379 V 287 1381 680 2 v 1252 1156 a(imp)q(col)p 1359 1156 11 2 v 11 w(c)p 978 1170 680 2 v 977 1211 2 42 v 1009 1199 a(Init.)55 b(\045)12 b(Resid.)48 b(In.)15 b(Its.)49 b(\045)12 b(Densit)o(y)p 1657 1211 V 978 1213 680 2 v 977 1255 2 42 v 1003 1242 a(THR)82 b Fx(3.53)101 b(2.58)112 b(1.79)p 1657 1255 V 977 1296 V 1003 1284 a Fz(CYC)88 b(7.86)108 b(3.47)119 b(6.47)p 1657 1296 V 977 1338 V 1003 1325 a(ONE)78 b(36.93)99 b(5.95)110 b(24.32)p 1657 1338 V 977 1379 V 1005 1367 a(PER)79 b(31.09)99 b(6.39)110 b(21.24)p 1657 1379 V 978 1381 680 2 v 552 1414 a(w)o(est0132)p 281 1428 V 280 1470 2 42 v 312 1457 a(Init.)55 b(\045)12 b(Resid.)48 b(In.)15 b(Its.)49 b(\045)12 b(Densit)o(y)p 960 1470 V 281 1471 680 2 v 280 1513 2 42 v 306 1500 a(THR)82 b Fx(0.00)106 b Fz(5.62)119 b(1.95)p 960 1513 V 280 1554 V 306 1542 a(CYC)88 b(0.01)103 b Fx(3.25)112 b(1.68)p 960 1554 V 280 1596 V 306 1583 a Fz(ONE)87 b(0.01)108 b(5.64)i(11.97)p 960 1596 V 280 1637 V 308 1625 a(PER)88 b(0.30)108 b(8.46)119 b(3.54)p 960 1637 V 281 1639 680 2 v 1250 1414 a(w)o(atson2)p 972 1428 V 971 1470 2 42 v 1003 1457 a(Init.)55 b(\045)12 b(Resid.)49 b(In.)14 b(Its.)49 b(\045)12 b(Densit)o(y)p 1651 1470 V 972 1471 680 2 v 971 1513 2 42 v 997 1500 a(THR)72 b Fx(16.99)96 b Fz(3.02)114 b Fx(3.87)p 1651 1513 V 971 1554 V 997 1542 a Fz(CYC)80 b(20.51)93 b Fx(2.76)117 b Fz(4.17)p 1651 1554 V 971 1596 V 997 1583 a(ONE)79 b(78.74)98 b(5.42)110 b(18.94)p 1651 1596 V 971 1637 V 999 1625 a(PER)80 b(75.99)98 b(4.82)110 b(10.69)p 1651 1637 V 972 1639 680 2 v 267 1735 a Ft(In)12 b(Figures)g(7{10,)f(the)i(SVD,)e(SDD-THR,)f(and)i (SDD-CYC)g(are)g(compared.)17 b(The)12 b(results)225 1785 y(on)k Fc(bfw62a)f Ft(are)i(giv)o(en)f(in)g(Figure)h(7.)25 b(The)17 b(upp)q(er)h(left)e(plot)g(sho)o(ws)h(a)f(comparison)f(of)h (the)225 1835 y(relativ)o(e)c(residual)f(\()p Fs(k)p Fr(R)592 1841 y Fp(k)612 1835 y Fs(k)p Fr(=)p Fs(k)p Fr(R)707 1841 y Fn(0)725 1835 y Fs(k)p Ft(\))g(v)o(ersus)i(the)g(n)o (um)o(b)q(er)e(of)g(terms.)17 b(The)12 b(SVD)g(is)g(the)g(optimal)225 1885 y(decomp)q(osition)k(for)i(a)f(\014xed)i(n)o(um)o(b)q(er)e(of)g (terms,)h(so)g(the)h(SDD)e(curv)o(es)i(will)d(lie)i(ab)q(o)o(v)o(e)f (it.)225 1935 y(Ho)o(w)o(ev)o(er,)e(the)h(SDD)f(still)f(giv)o(es)h(go)q (o)q(d)g(reduction)h(in)e(the)i(residual,)f(requiring)g(only)f(ab)q (out)225 1984 y(t)o(wice)f(as)f(man)o(y)e(terms)i(as)g(the)h(SVD)f(for) g(the)h(same)e(lev)o(el)h(of)f(reduction.)19 b(SDD-THR)11 b(giv)o(es)h(a)225 2034 y(b)q(etter)j(residual)f(than)f(SDD-CYC)g(un)o (til)g(the)h(last)f(few)h(terms,)f(where)h(SDD-CYC)f(`catc)o(hes)225 2084 y(up'.)33 b(In)19 b(the)g(upp)q(er)h(righ)o(t,)g(a)e(plot)h(of)f (the)i(residual)f(v)o(ersus)h(the)f(storage)h(is)f(sho)o(wn;)i(for)225 2134 y(the)14 b(same)f(lev)o(el)g(of)h(reduction)g(in)f(the)h (residual,)g(the)g(storage)g(requiremen)o(t)g(for)f(the)h(SDD)f(is)225 2184 y(ab)q(out)i(one)h(to)f(t)o(w)o(o)f(orders)j(of)d(magnitude)g (less)i(than)f(for)g(the)h(SVD.)e(In)i(the)g(b)q(ottom)d(plot,)225 2234 y(the)h(singular)f(v)n(alues)g(and)g(SDD)g(v)n(alues)g(are)h(sho)o (wn,)f(where)i(the)f Fr(i)p Ft(th)f(SDD)g(v)n(alue)g(is)g(de\014ned)225 2283 y(as)282 2272 y(^)275 2283 y Fr(d)297 2289 y Fp(i)322 2283 y Ft(=)e Fr(d)387 2289 y Fp(i)401 2283 y Fs(k)p Fr(x)446 2289 y Fp(i)459 2283 y Fs(k)480 2289 y Fn(2)499 2283 y Fs(k)p Fr(y)540 2289 y Fp(i)553 2283 y Fs(k)574 2289 y Fn(2)593 2283 y Ft(.)17 b(Initially)m(,)10 b(the)k(SDD)e(v)n (alues)g(are)h(smaller)e(than)i(the)g(singular)f(v)n(alues)225 2333 y(b)q(ecause)19 b(they)e(cannot)g(capture)h(as)f(m)o(uc)o(h)e (information;)g(later,)i(they)h(are)f(larger)g(b)q(ecause)225 2383 y(they)d(are)h(capturing)f(the)g(information)d(missed)i(initially) m(.)267 2433 y(The)k Fc(impcol)p 490 2433 14 2 v 15 w(c)g Ft(matrix)f(has)h(an)h(in)o(teresting)g(singular)e(v)n(alue)h(pattern)i (\(see)f(Figure)g(8\):)225 2483 y(there)i(is)f(one)g(isolated)f (singular)g(v)n(alue)g(at)h(11,)g(a)f(cluster)i(of)e(singular)g(v)n (alues)h(at)f(3,)i(and)225 2532 y(another)c(cluster)i(at)d(2.)24 b(SDD-THR)15 b(mimi)o(cs)f(the)j(SVD)f(closely)f(b)q(ecause)j(SDD-THR)d (also)p eop %%Page: 21 21 21 20 bop 946 125 a Fv(Semidiscrete)12 b(Matrix)f(Decomp)q(osition)78 b Fu(\001)70 b Fv(21)225 233 y Ft(\014nds)18 b(one)g(isolated)f (singular)g(SDD)g(v)n(alue,)g(as)h(man)o(y)e(SDD)h(v)n(alues)g(at)g(3,) h(and)g(almost)d(as)225 283 y(man)o(y)j(SDD)h(v)n(alues)g(at)h(2.)35 b(SDD-CYC,)18 b(on)i(the)g(other)g(hand,)h(has)f(trouble)g(mim)o(ic)o (king)225 332 y(singular)15 b(v)n(alues)g(b)q(ecause)i(it)d(do)q(es)i (not)g(pic)o(k)f(out)g(the)h(isolated)f(v)n(alue)f(at)h(\014rst.)23 b(Still,)14 b(b)q(oth)225 382 y(SDD)f(v)n(arian)o(ts)g(are)i(sup)q (erior)g(to)e(the)i(SVD)e(in)h(terms)g(of)f(storage)h(vs.)k(residual)c (norm.)267 432 y(On)k Fc(west0132)e Ft(\(see)k(Figure)e(9\),)g(w)o(e)h (see)g(phenomena)e(similar)f(to)i(that)g(for)g Fc(impcol)p 1675 432 14 2 v 14 w(c)p Ft(.)225 482 y(SDD-THR)12 b(\014nds)h (isolated)g(SDD)f(v)n(alues)h(and)f(quic)o(kly)g(reduces)j(the)f (residual)f(|)f(almost)f(as)225 532 y(quic)o(kly)g(as)h(the)h(SVD)f (itself)f(in)h(terms)f(of)h(n)o(um)o(b)q(er)f(of)h(terms.)17 b(SDD-CYC)11 b(has)h(more)f(trouble)225 581 y(isolating)g(SDD)g(v)n (alues)i(but)f(ev)o(en)o(tually)g(gets)h(them)e(as)i(w)o(ell.)k(Here,)c (SDD-THR)e(is)h(sup)q(erior)225 631 y(to)i(the)g(SVD)g(in)f(terms)h(of) f(storage,)h(but)g(SDD-CYC)g(is)f(not.)267 681 y(The)h(last)h(matrix,)d Fc(watson2)h Ft(\(see)j(Figure)e(10\),)g(most)f(closely)i(resem)o(bles) g Fc(bfw62a)e Ft(in)h(the)225 731 y(structure)20 b(of)c(its)i(singular) e(v)n(alues,)i(although)e Fc(watson2)g Ft(has)i(three)g(eigen)o(v)n (alues)g(that)f(are)225 781 y(sligh)o(tly)c(isolated,)g(and)h(w)o(e)h (can)f(see)i(that)e(b)q(oth)g(SDD)g(metho)q(ds)g(ev)o(en)o(tually)f (pic)o(k)h(out)h(suc)o(h)225 831 y(v)n(alues)f(whic)o(h)g(results)h(in) e(the)i(steep)q(er)h(drops)f(in)e(the)i(residual)f(curv)o(es.)20 b(Again,)12 b(SDD-THR)225 880 y(do)q(es)i(b)q(etter)i(than)d(the)i (SDD-CYC)e(in)g(all)f(resp)q(ects.)21 b(SDD-THR)13 b(requires)i(ab)q (out)e(t)o(wice)h(as)225 930 y(man)o(y)d(terms)i(to)h(get)f(the)h(same) e(reduction)i(in)f(storage)h(as)f(the)h(SVD,)f(while)g(using)g(an)g (order)225 980 y(of)g(magnitude)g(less)h(storage.)225 1071 y FA(8.)20 b(CONCLUSIONS)225 1138 y Ft(By)c(presen)o(ting)h(the)f (co)q(de)h(for)f(computing)e(a)i(SDD,)e(w)o(e)j(hop)q(e)f(to)g(stim)o (ulate)e(more)h(uses)i(of)225 1187 y(this)d(storage-e\016cien)o(t)h (matrix)d(appro)o(ximation)f(metho)q(d.)267 1237 y(SDDP)m(A)o(CK,)h (con)o(taining)h(Matlab)g(and)h(C)f(co)q(de)i(for)e(the)i(SDD,)e(as)h (w)o(ell)f(as)g(Matlab)h(co)q(de)225 1287 y(for)g(the)g(w)o(eigh)o(ted) g(and)g(tensor)h(SDDs)e(is)h(a)o(v)n(ailable)e(at)585 1362 y Fc(http://www.cs.umd.)o(edu/u)o(sers)o(/olea)o(ry/)p Ft(.)225 1470 y Fb(A)o(CKNO)o(WLEDGMENTS)225 1528 y Ft(W)m(e)k(are)h (grateful)g(to)f(Professor)i(W)m(alter)e(Gander)h(and)f(Professor)i (Martin)f(Gutknec)o(h)o(t)g(for)225 1578 y(their)d(hospitalit)o(y)f(at) g(ETH.)225 1669 y Fb(REFERENCES)265 1727 y Fa(Conr)o(o)o(y,)20 b(J.,)e(K)o(old)o(a,)h(T.)e(G.,)h(and)g(O'Lear)n(y,)f(D.)g(P.)34 b Fz(1999.)51 b(Chromosome)14 b(iden)o(ti\014cati)o(on.)f(In)328 1769 y(preparatio)o(n.)265 1814 y Fa(Gabriel,)g(K.)g(R.)e(and)j(Zamir,) e(S.)35 b Fz(No)o(v)o(em)o(b)q(er)10 b(1979.)46 b(Lo)o(w)o(er)11 b(rank)g(appro)o(ximat)o(ion)d(of)k(matrices)d(b)o(y)328 1856 y(least)h(squares)g(with)h(an)o(y)g(c)o(hoice)f(of)h(w)o(eigh)o (ts.)g Fd(T)m(e)n(chnometrics)16 b(21)p Fz(,)c(489{498.)265 1901 y Fa(Golub,)g(G.)g(H.)e(and)i(V)l(an)g(Lo)o(an,)g(C.)f(F.)35 b Fz(1989.)44 b Fd(Matrix)12 b(Computations)g Fz(\(2nd)d(ed.\).)g (Johns)h(Hopkins)328 1943 y(Press.)265 1989 y Fa(K)o(old)o(a,)19 b(T.)d(G.)36 b Fz(1997.)50 b Fd(Limite)n(d-Memory)18 b(Matrix)g(Metho)n(ds)f(with)g(Applic)n(ations)p Fz(.)g(Ph.)f(D.)g (thesis,)328 2030 y(Univ)o(ersit)o(y)c(of)i(Maryland)f(Applied)g (Mathematics)f(Program.)h(Also)h(a)o(v)n(ailable)e(as)i(Departmen)o(t)e (of)328 2072 y(Computer)d(Science)h(T)m(ec)o(hnical)g(Rep)q(ort)g (CS-TR-3806.)265 2117 y Fa(K)o(old)o(a,)j(T.)f(G.)35 b Fz(1999.)46 b(Orthogonal)9 b(rank)i(decomp)q(osi)o(tion)o(s)e(for)i (tensors.)f(In)h(preparation)o(.)265 2163 y Fa(K)o(old)o(a,)j(T.)g(G.)f (and)h(O'Lear)n(y,)f(D.)g(P.)35 b Fz(1998.)46 b(A)13 b(semidiscrete)d(matrix)h(decomp)q(osit)o(ion)e(for)j(laten)o(t)328 2205 y(seman)o(tic)d(indexing)g(in)i(information)d(retriev)n(al.)h Fd(A)o(CM)k(T)m(r)n(ans.)g(Inf.)f(Syst.)f(16)p Fz(,)h(322{346.)265 2250 y Fa(K)o(old)o(a,)18 b(T.)f(G.)g(and)g(O'Lear)n(y,)g(D.)f(P.)34 b Fz(1999.)50 b(Laten)o(t)14 b(seman)o(tic)g(indexing)f(via)i(a)h (semi-discrete)328 2292 y(matrix)c(decomp)q(ositio)o(n.)f(In)j Fd(The)h(Mathematics)h(of)g(Information)f(Co)n(ding,)i(Extr)n(action)f (and)g(Dis-)328 2333 y(tribution)s Fz(,)e(V)m(olume)f(107)g(of)h(IMA)g (V)m(olumes)f(in)h(Mathematics)d(and)i(Its)g(Applications,)f(pp.)h (73{80.)328 2375 y(Springer-V)m(erla)o(g.)265 2420 y Fa(O'Lear)n(y,)g(D.)f(P.)h(and)h(Peleg,)e(S.)35 b Fz(1983.)46 b(Digital)11 b(image)g(compression)e(b)o(y)i(outer)g(pro)q(duct)f (expan-)328 2462 y(sion.)g Fd(IEEE)j(T)m(r)n(ansactions)g(on)g (Communic)n(ations)i(31)p Fz(,)d(441{444.)p eop %%Page: 22 22 22 21 bop 225 125 a Fv(22)71 b Fu(\001)78 b Fv(T.)13 b(G.)f(Kolda)g(and)h(D.)g(P)m(.)e(O'Lea)o(ry)297 1966 y @beginspecial 71 @llx 210 @lly 546 @urx 600 @ury 3240 @rwi 3240 @rhi @setspecial %%BeginDocument: bfw62a.eps % MathWorks dictionary /MathWorks 160 dict begin % definition operators /bdef {bind def} bind def /ldef {load def} bind def /xdef {exch def} bdef /xstore {exch store} bdef % operator abbreviations /c /clip ldef /cc /concat ldef /cp /closepath ldef /gr /grestore ldef /gs /gsave ldef /mt /moveto ldef /np /newpath ldef /cm /currentmatrix ldef /sm /setmatrix ldef /rc {rectclip} bdef /rf {rectfill} bdef /rm /rmoveto ldef /rl /rlineto ldef /s /show ldef /sc {setcmykcolor} bdef /sr /setrgbcolor ldef /sg /setgray ldef /w /setlinewidth ldef /j /setlinejoin ldef /cap /setlinecap ldef % page state control /pgsv () def /bpage {/pgsv save def} bdef /epage {pgsv restore} bdef /bplot /gsave ldef /eplot {stroke grestore} bdef % orientation switch /portraitMode 0 def /landscapeMode 1 def % coordinate system mappings /dpi2point 0 def % font control /FontSize 0 def /FMS { /FontSize xstore %save size off stack findfont [FontSize 0 0 FontSize neg 0 0] makefont setfont }bdef /reencode { exch dup where {pop load} {pop StandardEncoding} ifelse exch dup 3 1 roll findfont dup length dict begin { 1 index /FID ne {def}{pop pop} ifelse } forall /Encoding exch def currentdict end definefont pop } bdef /isroman { findfont /CharStrings get /Agrave known } bdef /FMSR { 3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse exch FMS } bdef /csm { 1 dpi2point div -1 dpi2point div scale neg translate landscapeMode eq {90 rotate} if } bdef % line types: solid, dotted, dashed, dotdash /SO { [] 0 setdash } bdef /DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef /DA { [6 dpi2point mul] 0 setdash } bdef /DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4 dpi2point mul] 0 setdash } bdef % macros for lines and objects /L { lineto stroke } bdef /MP { 3 1 roll moveto 1 sub {rlineto} repeat } bdef /AP { {rlineto} repeat } bdef /PP { closepath eofill } bdef /DP { closepath stroke } bdef /MR { 4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath } bdef /FR { MR stroke } bdef /PR { MR fill } bdef /L1i { { currentfile picstr readhexstring pop } image } bdef /tMatrix matrix def /MakeOval { newpath tMatrix currentmatrix pop translate scale 0 0 1 0 360 arc tMatrix setmatrix } bdef /FO { MakeOval stroke } bdef /PO { MakeOval fill } bdef /PD { currentlinecap 1 setlinecap 3 1 roll 2 copy moveto lineto stroke setlinecap } bdef /FA { newpath tMatrix currentmatrix pop translate scale 0 0 1 5 -2 roll arc tMatrix setmatrix stroke } bdef /PA { newpath tMatrix currentmatrix pop translate 0 0 moveto scale 0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill } bdef /FAn { newpath tMatrix currentmatrix pop translate scale 0 0 1 5 -2 roll arcn tMatrix setmatrix stroke } bdef /PAn { newpath tMatrix currentmatrix pop translate 0 0 moveto scale 0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill } bdef /MRR { /vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly vradius add translate hradius vradius scale 0 0 1 180 270 arc tMatrix setmatrix lrx hradius sub uly vradius add translate hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix lrx hradius sub lry vradius sub translate hradius vradius scale 0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix closepath } bdef /FRR { MRR stroke } bdef /PRR { MRR fill } bdef /MlrRR { /lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def newpath tMatrix currentmatrix pop ulx rad add uly rad add translate rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix closepath } bdef /FlrRR { MlrRR stroke } bdef /PlrRR { MlrRR fill } bdef /MtbRR { /lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def newpath tMatrix currentmatrix pop ulx rad add uly rad add translate rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix closepath } bdef /FtbRR { MtbRR stroke } bdef /PtbRR { MtbRR fill } bdef currentdict end def MathWorks begin 0 cap end MathWorks begin bpage bplot /dpi2point 12 def portraitMode 0216 7344 csm 641 134 5702 4679 MR c np 88 dict begin %Colortable dictionary /c0 { 0 0 0 sr} bdef /c1 { 1 1 1 sr} bdef /c2 { 1 0 0 sr} bdef /c3 { 0 1 0 sr} bdef /c4 { 0 0 1 sr} bdef /c5 { 1 1 0 sr} bdef /c6 { 1 0 1 sr} bdef /c7 { 0 1 1 sr} bdef 1 j 1 sg 0 0 6918 5185 PR 6 w 0 1782 2261 0 0 -1782 899 2170 4 MP PP -2261 0 0 1782 2261 0 0 -1782 899 2170 5 MP stroke 4 w DO SO 6 w 0 sg 899 2170 mt 3160 2170 L 899 388 mt 3160 388 L 899 2170 mt 899 388 L 3160 2170 mt 3160 388 L 899 2170 mt 3160 2170 L 899 2170 mt 899 388 L 899 2170 mt 899 2147 L 899 388 mt 899 411 L /Helvetica /ISOLatin1Encoding 120 FMSR 866 2316 mt (0) s 1628 2170 mt 1628 2147 L 1628 388 mt 1628 411 L 1562 2316 mt (20) s 2358 2170 mt 2358 2147 L 2358 388 mt 2358 411 L 2292 2316 mt (40) s 3087 2170 mt 3087 2147 L 3087 388 mt 3087 411 L 3021 2316 mt (60) s 899 2170 mt 922 2170 L 3160 2170 mt 3137 2170 L 798 2214 mt (0) s 899 1814 mt 922 1814 L 3160 1814 mt 3137 1814 L 698 1858 mt (0.2) s 899 1457 mt 922 1457 L 3160 1457 mt 3137 1457 L 698 1501 mt (0.4) s 899 1101 mt 922 1101 L 3160 1101 mt 3137 1101 L 698 1145 mt (0.6) s 899 744 mt 922 744 L 3160 744 mt 3137 744 L 698 788 mt (0.8) s 899 388 mt 922 388 L 3160 388 mt 3137 388 L 798 432 mt (1) s 899 2170 mt 3160 2170 L 899 388 mt 3160 388 L 899 2170 mt 899 388 L 3160 2170 mt 3160 388 L gs 899 388 2262 1783 MR c np 36 1 37 2 36 4 37 6 36 5 37 9 36 7 37 9 36 8 37 9 36 10 37 11 36 16 37 15 36 14 36 13 37 15 36 18 37 16 36 16 37 16 36 20 37 20 36 19 37 19 36 18 37 18 36 20 37 18 36 23 36 22 37 24 36 24 37 24 36 24 37 24 36 26 37 26 36 26 37 28 36 29 37 28 36 32 37 30 36 33 37 34 36 37 36 38 37 38 36 44 37 45 36 53 37 51 36 53 37 68 36 68 37 70 36 69 37 72 36 80 37 84 36 83 899 388 63 MP stroke DA 36 10 37 6 36 11 37 4 36 9 37 7 36 12 37 9 36 5 37 15 36 12 37 10 36 8 37 10 36 13 36 16 37 14 36 14 37 11 36 16 37 9 36 9 37 9 36 14 37 8 36 6 37 9 36 13 37 9 36 5 36 8 37 8 36 19 37 22 36 11 37 17 36 23 37 8 36 22 37 20 36 19 37 27 36 24 37 40 36 19 37 22 36 37 36 33 37 29 36 30 37 43 36 55 37 52 36 28 37 41 36 19 37 56 36 38 37 53 36 50 37 69 36 35 899 388 63 MP stroke DO 36 9 37 11 36 13 37 10 36 15 37 11 36 10 37 25 36 7 37 6 36 22 37 10 36 17 37 25 36 15 36 26 37 17 36 42 37 19 36 40 37 20 36 18 37 11 36 37 37 27 36 7 37 10 36 62 37 9 36 51 36 14 37 53 36 16 37 23 36 10 37 5 36 14 37 27 36 7 37 4 36 7 37 9 36 4 37 12 36 2 37 4 36 7 36 6 37 27 36 44 37 84 36 36 37 35 36 46 37 32 36 29 37 9 36 59 37 11 36 30 37 55 36 4 899 388 63 MP stroke gr DO 1283 293 mt (Residual Norm vs. No. of Terms) s SO 1 sg 0 1782 2261 0 0 -1782 3997 2170 4 MP PP -2261 0 0 1782 2261 0 0 -1782 3997 2170 5 MP stroke 4 w DO SO 6 w 0 sg 3997 2170 mt 6258 2170 L 3997 388 mt 6258 388 L 3997 2170 mt 3997 388 L 6258 2170 mt 6258 388 L 3997 2170 mt 6258 2170 L 3997 2170 mt 3997 388 L 4347 2170 mt 4347 2147 L 4347 388 mt 4347 411 L 4259 2353 mt (10) s /Helvetica /ISOLatin1Encoding 80 FMSR 4392 2279 mt (2) s 5114 2170 mt 5114 2147 L 5114 388 mt 5114 411 L /Helvetica /ISOLatin1Encoding 120 FMSR 5026 2353 mt (10) s /Helvetica /ISOLatin1Encoding 80 FMSR 5159 2279 mt (3) s 5881 2170 mt 5881 2147 L 5881 388 mt 5881 411 L /Helvetica /ISOLatin1Encoding 120 FMSR 5793 2353 mt (10) s /Helvetica /ISOLatin1Encoding 80 FMSR 5926 2279 mt (4) s 3997 2170 mt 4020 2170 L 6258 2170 mt 6235 2170 L /Helvetica /ISOLatin1Encoding 120 FMSR 3896 2214 mt (0) s 3997 1814 mt 4020 1814 L 6258 1814 mt 6235 1814 L 3796 1858 mt (0.2) s 3997 1457 mt 4020 1457 L 6258 1457 mt 6235 1457 L 3796 1501 mt (0.4) s 3997 1101 mt 4020 1101 L 6258 1101 mt 6235 1101 L 3796 1145 mt (0.6) s 3997 744 mt 4020 744 L 6258 744 mt 6235 744 L 3796 788 mt (0.8) s 3997 388 mt 4020 388 L 6258 388 mt 6235 388 L 3896 432 mt (1) s 3997 2170 mt 6258 2170 L 3997 388 mt 6258 388 L 3997 2170 mt 3997 388 L 6258 2170 mt 6258 388 L gs 3997 388 2262 1783 MR c np 5 1 6 2 6 4 5 6 6 5 6 9 6 7 6 9 6 8 7 9 6 10 7 11 6 16 7 15 7 14 7 13 8 15 7 18 8 16 8 16 8 16 8 20 8 20 9 19 9 19 9 18 10 18 9 20 10 18 10 23 11 22 11 24 11 24 12 24 12 24 13 24 13 26 13 26 14 26 15 28 16 29 16 28 17 32 18 30 19 33 20 34 22 37 23 38 24 38 27 44 29 45 32 53 35 51 39 53 45 68 51 68 61 70 74 69 96 72 135 80 231 84 4883 471 62 MP stroke DA 5 10 6 6 6 11 5 4 6 9 6 7 6 12 6 9 6 5 7 15 6 12 7 10 6 8 7 10 7 13 7 16 8 14 7 14 8 11 8 16 8 9 8 9 8 9 9 14 9 8 9 6 9 9 10 13 10 9 10 5 11 8 11 8 11 19 12 22 12 11 13 17 13 23 13 8 14 22 15 20 16 19 16 27 17 24 18 40 19 19 20 22 22 37 23 33 24 29 27 30 29 43 32 55 35 52 39 28 45 41 51 19 61 56 74 38 96 53 135 50 231 69 3997 423 62 MP stroke DO 5 9 6 11 6 13 5 10 6 15 6 11 6 10 6 25 6 7 7 6 6 22 7 10 6 17 7 25 7 15 7 26 8 17 7 42 8 19 8 40 8 20 8 18 8 11 9 37 9 27 9 7 9 10 10 62 10 9 10 51 11 14 11 53 11 16 12 23 12 10 13 5 13 14 13 27 14 7 15 4 16 7 16 9 17 4 18 12 19 2 20 4 22 7 23 6 24 27 27 44 29 84 32 36 35 35 39 46 45 32 51 29 61 9 74 59 96 11 135 30 231 55 3997 392 62 MP stroke gr DO 4387 293 mt (Residual Norms vs. Storage) s SO 1 sg 0 1782 5394 0 0 -1782 899 4612 4 MP PP -5394 0 0 1782 5394 0 0 -1782 899 4612 5 MP stroke 4 w DO SO 6 w 0 sg 899 4612 mt 6293 4612 L 899 2830 mt 6293 2830 L 899 4612 mt 899 2830 L 6293 4612 mt 6293 2830 L 899 4612 mt 6293 4612 L 899 4612 mt 899 2830 L 899 4612 mt 899 4558 L 899 2830 mt 899 2884 L 866 4758 mt (0) s 1755 4612 mt 1755 4558 L 1755 2830 mt 1755 2884 L 1689 4758 mt (10) s 2611 4612 mt 2611 4558 L 2611 2830 mt 2611 2884 L 2545 4758 mt (20) s 3468 4612 mt 3468 4558 L 3468 2830 mt 3468 2884 L 3402 4758 mt (30) s 4324 4612 mt 4324 4558 L 4324 2830 mt 4324 2884 L 4258 4758 mt (40) s 5180 4612 mt 5180 4558 L 5180 2830 mt 5180 2884 L 5114 4758 mt (50) s 6036 4612 mt 6036 4558 L 6036 2830 mt 6036 2884 L 5970 4758 mt (60) s 899 4612 mt 953 4612 L 6293 4612 mt 6239 4612 L 798 4656 mt (0) s 899 4167 mt 953 4167 L 6293 4167 mt 6239 4167 L 798 4211 mt (1) s 899 3721 mt 953 3721 L 6293 3721 mt 6239 3721 L 798 3765 mt (2) s 899 3276 mt 953 3276 L 6293 3276 mt 6239 3276 L 798 3320 mt (3) s 899 2830 mt 953 2830 L 6293 2830 mt 6239 2830 L 798 2874 mt (4) s 899 4612 mt 6293 4612 L 899 2830 mt 6293 2830 L 899 4612 mt 899 2830 L 6293 4612 mt 6293 2830 L gs 899 2830 5395 1783 MR c np gr 960 3231 mt 1010 3281 L 1010 3231 mt 960 3281 L 1045 3245 mt 1095 3295 L 1095 3245 mt 1045 3295 L 1131 3282 mt 1181 3332 L 1181 3282 mt 1131 3332 L 1216 3325 mt 1266 3375 L 1266 3325 mt 1216 3375 L 1302 3358 mt 1352 3408 L 1352 3358 mt 1302 3408 L 1388 3364 mt 1438 3414 L 1438 3364 mt 1388 3414 L 1473 3392 mt 1523 3442 L 1523 3392 mt 1473 3442 L 1559 3407 mt 1609 3457 L 1609 3407 mt 1559 3457 L 1645 3494 mt 1695 3544 L 1695 3494 mt 1645 3544 L 1730 3515 mt 1780 3565 L 1780 3515 mt 1730 3565 L 1816 3519 mt 1866 3569 L 1866 3519 mt 1816 3569 L 1901 3572 mt 1951 3622 L 1951 3572 mt 1901 3622 L 1987 3591 mt 2037 3641 L 2037 3591 mt 1987 3641 L 2073 3634 mt 2123 3684 L 2123 3634 mt 2073 3684 L 2158 3651 mt 2208 3701 L 2208 3651 mt 2158 3701 L 2244 3659 mt 2294 3709 L 2294 3659 mt 2244 3709 L 2330 3692 mt 2380 3742 L 2380 3692 mt 2330 3742 L 2415 3711 mt 2465 3761 L 2465 3711 mt 2415 3761 L 2501 3731 mt 2551 3781 L 2551 3731 mt 2501 3781 L 2586 3737 mt 2636 3787 L 2636 3737 mt 2586 3787 L 2672 3765 mt 2722 3815 L 2722 3765 mt 2672 3815 L 2758 3774 mt 2808 3824 L 2808 3774 mt 2758 3824 L 2843 3786 mt 2893 3836 L 2893 3786 mt 2843 3836 L 2929 3811 mt 2979 3861 L 2979 3811 mt 2929 3861 L 3014 3814 mt 3064 3864 L 3064 3814 mt 3014 3864 L 3100 3830 mt 3150 3880 L 3150 3830 mt 3100 3880 L 3186 3853 mt 3236 3903 L 3236 3853 mt 3186 3903 L 3271 3858 mt 3321 3908 L 3321 3858 mt 3271 3908 L 3357 3868 mt 3407 3918 L 3407 3868 mt 3357 3918 L 3443 3874 mt 3493 3924 L 3493 3874 mt 3443 3924 L 3528 3887 mt 3578 3937 L 3578 3887 mt 3528 3937 L 3614 3913 mt 3664 3963 L 3664 3913 mt 3614 3963 L 3699 3917 mt 3749 3967 L 3749 3917 mt 3699 3967 L 3785 3958 mt 3835 4008 L 3835 3958 mt 3785 4008 L 3871 3961 mt 3921 4011 L 3921 3961 mt 3871 4011 L 3956 3972 mt 4006 4022 L 4006 3972 mt 3956 4022 L 4042 3992 mt 4092 4042 L 4092 3992 mt 4042 4042 L 4128 3993 mt 4178 4043 L 4178 3993 mt 4128 4043 L 4213 3998 mt 4263 4048 L 4263 3998 mt 4213 4048 L 4299 4001 mt 4349 4051 L 4349 4001 mt 4299 4051 L 4384 4016 mt 4434 4066 L 4434 4016 mt 4384 4066 L 4470 4056 mt 4520 4106 L 4520 4056 mt 4470 4106 L 4556 4069 mt 4606 4119 L 4606 4069 mt 4556 4119 L 4641 4074 mt 4691 4124 L 4691 4074 mt 4641 4124 L 4727 4076 mt 4777 4126 L 4777 4076 mt 4727 4126 L 4812 4112 mt 4862 4162 L 4862 4112 mt 4812 4162 L 4898 4142 mt 4948 4192 L 4948 4142 mt 4898 4192 L 4984 4144 mt 5034 4194 L 5034 4144 mt 4984 4194 L 5069 4148 mt 5119 4198 L 5119 4148 mt 5069 4198 L 5155 4158 mt 5205 4208 L 5205 4158 mt 5155 4208 L 5241 4219 mt 5291 4269 L 5291 4219 mt 5241 4269 L 5326 4235 mt 5376 4285 L 5376 4235 mt 5326 4285 L 5412 4254 mt 5462 4304 L 5462 4254 mt 5412 4304 L 5497 4280 mt 5547 4330 L 5547 4280 mt 5497 4330 L 5583 4292 mt 5633 4342 L 5633 4292 mt 5583 4342 L 5669 4318 mt 5719 4368 L 5719 4318 mt 5669 4368 L 5754 4326 mt 5804 4376 L 5804 4326 mt 5754 4376 L 5840 4385 mt 5890 4435 L 5890 4385 mt 5840 4435 L 5926 4387 mt 5976 4437 L 5976 4387 mt 5926 4437 L 6011 4447 mt 6061 4497 L 6061 4447 mt 6011 4497 L 6097 4489 mt 6147 4539 L 6147 4489 mt 6097 4539 L 6182 4529 mt 6232 4579 L 6232 4529 mt 6182 4579 L gs 899 2830 5395 1783 MR c np gr 36 36 985 3514 FO 36 36 1070 3327 FO 36 36 1156 3433 FO 36 36 1241 3427 FO 36 36 1327 3531 FO 36 36 1413 3427 FO 36 36 1498 3711 FO 36 36 1584 3531 FO 36 36 1670 3628 FO 36 36 1755 3478 FO 36 36 1841 3476 FO 36 36 1926 3551 FO 36 36 2012 3645 FO 36 36 2098 3667 FO 36 36 2183 3636 FO 36 36 2269 3618 FO 36 36 2355 3748 FO 36 36 2440 3778 FO 36 36 2526 3620 FO 36 36 2611 3743 FO 36 36 2697 3720 FO 36 36 2783 3801 FO 36 36 2868 3798 FO 36 36 2954 3781 FO 36 36 3039 3966 FO 36 36 3125 3779 FO 36 36 3211 3839 FO 36 36 3296 3936 FO 36 36 3382 3798 FO 36 36 3468 3830 FO 36 36 3553 3982 FO 36 36 3639 3996 FO 36 36 3724 4051 FO 36 36 3810 3986 FO 36 36 3896 3904 FO 36 36 3981 3986 FO 36 36 4067 4051 FO 36 36 4153 3986 FO 36 36 4238 3913 FO 36 36 4324 3986 FO 36 36 4409 3986 FO 36 36 4495 3986 FO 36 36 4581 3894 FO 36 36 4666 3966 FO 36 36 4752 3929 FO 36 36 4837 3927 FO 36 36 4923 3911 FO 36 36 5009 3957 FO 36 36 5094 3990 FO 36 36 5180 4024 FO 36 36 5266 4010 FO 36 36 5351 3963 FO 36 36 5437 3948 FO 36 36 5522 4092 FO 36 36 5608 4022 FO 36 36 5694 3994 FO 36 36 5779 4067 FO 36 36 5865 4028 FO 36 36 5951 4132 FO 36 36 6036 4012 FO 36 36 6122 4097 FO 36 36 6207 4025 FO gs 899 2830 5395 1783 MR c np gr 0 j -41 71 -41 -71 82 0 944 4010 4 MP DP -41 71 -41 -71 82 0 1029 3413 4 MP DP -41 71 -41 -71 82 0 1115 3587 4 MP DP -41 71 -41 -71 82 0 1200 3820 4 MP DP -41 71 -41 -71 82 0 1286 3413 4 MP DP -41 71 -41 -71 82 0 1372 3860 4 MP DP -41 71 -41 -71 82 0 1457 3615 4 MP DP -41 71 -41 -71 82 0 1543 3600 4 MP DP -41 71 -41 -71 82 0 1629 3505 4 MP DP -41 71 -41 -71 82 0 1714 3586 4 MP DP -41 71 -41 -71 82 0 1800 3587 4 MP DP -41 71 -41 -71 82 0 1885 3348 4 MP DP -41 71 -41 -71 82 0 1971 3559 4 MP DP -41 71 -41 -71 82 0 2057 3684 4 MP DP -41 71 -41 -71 82 0 2142 4002 4 MP DP -41 71 -41 -71 82 0 2228 3945 4 MP DP -41 71 -41 -71 82 0 2314 4072 4 MP DP -41 71 -41 -71 82 0 2399 4155 4 MP DP -41 71 -41 -71 82 0 2485 3854 4 MP DP -41 71 -41 -71 82 0 2570 4072 4 MP DP -41 71 -41 -71 82 0 2656 3914 4 MP DP -41 71 -41 -71 82 0 2742 3981 4 MP DP -41 71 -41 -71 82 0 2827 4045 4 MP DP -41 71 -41 -71 82 0 2913 3971 4 MP DP -41 71 -41 -71 82 0 2998 3698 4 MP DP -41 71 -41 -71 82 0 3084 3852 4 MP DP -41 71 -41 -71 82 0 3170 4034 4 MP DP -41 71 -41 -71 82 0 3255 3909 4 MP DP -41 71 -41 -71 82 0 3341 3755 4 MP DP -41 71 -41 -71 82 0 3427 3829 4 MP DP -41 71 -41 -71 82 0 3512 3555 4 MP DP -41 71 -41 -71 82 0 3598 3865 4 MP DP -41 71 -41 -71 82 0 3683 3585 4 MP DP -41 71 -41 -71 82 0 3769 3965 4 MP DP -41 71 -41 -71 82 0 3855 3549 4 MP DP -41 71 -41 -71 82 0 3940 3948 4 MP DP -41 71 -41 -71 82 0 4026 4016 4 MP DP -41 71 -41 -71 82 0 4112 3768 4 MP DP -41 71 -41 -71 82 0 4197 3708 4 MP DP -41 71 -41 -71 82 0 4283 3942 4 MP DP -41 71 -41 -71 82 0 4368 3871 4 MP DP -41 71 -41 -71 82 0 4454 3855 4 MP DP -41 71 -41 -71 82 0 4540 3710 4 MP DP -41 71 -41 -71 82 0 4625 3876 4 MP DP -41 71 -41 -71 82 0 4711 3717 4 MP DP -41 71 -41 -71 82 0 4796 3908 4 MP DP -41 71 -41 -71 82 0 4882 3839 4 MP DP -41 71 -41 -71 82 0 4968 3945 4 MP DP -41 71 -41 -71 82 0 5053 3859 4 MP DP -41 71 -41 -71 82 0 5139 3934 4 MP DP -41 71 -41 -71 82 0 5225 4016 4 MP DP -41 71 -41 -71 82 0 5310 3898 4 MP DP -41 71 -41 -71 82 0 5396 4104 4 MP DP -41 71 -41 -71 82 0 5481 4101 4 MP DP -41 71 -41 -71 82 0 5567 3882 4 MP DP -41 71 -41 -71 82 0 5653 4049 4 MP DP -41 71 -41 -71 82 0 5738 4029 4 MP DP -41 71 -41 -71 82 0 5824 3987 4 MP DP -41 71 -41 -71 82 0 5910 4054 4 MP DP -41 71 -41 -71 82 0 5995 4020 4 MP DP -41 71 -41 -71 82 0 6081 4038 4 MP DP -41 71 -41 -71 82 0 6166 4085 4 MP DP gs 899 2830 5395 1783 MR c np gr 2953 2735 mt (Singular vs. SDD values) s end eplot epage end showpage %%EndDocument @endspecial 225 2058 a Fz(Fig.)j(7.)35 b(Comparison)13 b(of)h(the)g(SVD)h(\(solid)f(line,)g Fw(x)h Fz(marks\),)f(SDD-THR)h (\(dashed)e(line,)h Fw(o)h Fz(marks\),)f(and)225 2099 y(SDD-CYC)e(\(dotted)e(line,)g(triangle)g(marks\))g(on)h Fw(bfw62a)p Fz(.)p eop %%Page: 23 23 23 22 bop 946 125 a Fv(Semidiscrete)12 b(Matrix)f(Decomp)q(osition)78 b Fu(\001)70 b Fv(23)297 1966 y @beginspecial 71 @llx 210 @lly 550 @urx 600 @ury 3240 @rwi 3240 @rhi @setspecial %%BeginDocument: impcol_c.eps % MathWorks dictionary /MathWorks 160 dict begin % definition operators /bdef {bind def} bind def /ldef {load def} bind def /xdef {exch def} bdef /xstore {exch store} bdef % operator abbreviations /c /clip ldef /cc /concat ldef /cp /closepath ldef /gr /grestore ldef /gs /gsave ldef /mt /moveto ldef /np /newpath ldef /cm /currentmatrix ldef /sm /setmatrix ldef /rc {rectclip} bdef /rf {rectfill} bdef /rm /rmoveto ldef /rl /rlineto ldef /s /show ldef /sc {setcmykcolor} bdef /sr /setrgbcolor ldef /sg /setgray ldef /w /setlinewidth ldef /j /setlinejoin ldef /cap /setlinecap ldef % page state control /pgsv () def /bpage {/pgsv save def} bdef /epage {pgsv restore} bdef /bplot /gsave ldef /eplot {stroke grestore} bdef % orientation switch /portraitMode 0 def /landscapeMode 1 def % coordinate system mappings /dpi2point 0 def % font control /FontSize 0 def /FMS { /FontSize xstore %save size off stack findfont [FontSize 0 0 FontSize neg 0 0] makefont setfont }bdef /reencode { exch dup where {pop load} {pop StandardEncoding} ifelse exch dup 3 1 roll findfont dup length dict begin { 1 index /FID ne {def}{pop pop} ifelse } forall /Encoding exch def currentdict end definefont pop } bdef /isroman { findfont /CharStrings get /Agrave known } bdef /FMSR { 3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse exch FMS } bdef /csm { 1 dpi2point div -1 dpi2point div scale neg translate landscapeMode eq {90 rotate} if } bdef % line types: solid, dotted, dashed, dotdash /SO { [] 0 setdash } bdef /DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef /DA { [6 dpi2point mul] 0 setdash } bdef /DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4 dpi2point mul] 0 setdash } bdef % macros for lines and objects /L { lineto stroke } bdef /MP { 3 1 roll moveto 1 sub {rlineto} repeat } bdef /AP { {rlineto} repeat } bdef /PP { closepath eofill } bdef /DP { closepath stroke } bdef /MR { 4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath } bdef /FR { MR stroke } bdef /PR { MR fill } bdef /L1i { { currentfile picstr readhexstring pop } image } bdef /tMatrix matrix def /MakeOval { newpath tMatrix currentmatrix pop translate scale 0 0 1 0 360 arc tMatrix setmatrix } bdef /FO { MakeOval stroke } bdef /PO { MakeOval fill } bdef /PD { currentlinecap 1 setlinecap 3 1 roll 2 copy moveto lineto stroke setlinecap } bdef /FA { newpath tMatrix currentmatrix pop translate scale 0 0 1 5 -2 roll arc tMatrix setmatrix stroke } bdef /PA { newpath tMatrix currentmatrix pop translate 0 0 moveto scale 0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill } bdef /FAn { newpath tMatrix currentmatrix pop translate scale 0 0 1 5 -2 roll arcn tMatrix setmatrix stroke } bdef /PAn { newpath tMatrix currentmatrix pop translate 0 0 moveto scale 0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill } bdef /MRR { /vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly vradius add translate hradius vradius scale 0 0 1 180 270 arc tMatrix setmatrix lrx hradius sub uly vradius add translate hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix lrx hradius sub lry vradius sub translate hradius vradius scale 0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix closepath } bdef /FRR { MRR stroke } bdef /PRR { MRR fill } bdef /MlrRR { /lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def newpath tMatrix currentmatrix pop ulx rad add uly rad add translate rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix closepath } bdef /FlrRR { MlrRR stroke } bdef /PlrRR { MlrRR fill } bdef /MtbRR { /lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def newpath tMatrix currentmatrix pop ulx rad add uly rad add translate rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix closepath } bdef /FtbRR { MtbRR stroke } bdef /PtbRR { MtbRR fill } bdef currentdict end def MathWorks begin 0 cap end MathWorks begin bpage bplot /dpi2point 12 def portraitMode 0216 7344 csm 641 134 5748 4679 MR c np 88 dict begin %Colortable dictionary /c0 { 0 0 0 sr} bdef /c1 { 1 1 1 sr} bdef /c2 { 1 0 0 sr} bdef /c3 { 0 1 0 sr} bdef /c4 { 0 0 1 sr} bdef /c5 { 1 1 0 sr} bdef /c6 { 1 0 1 sr} bdef /c7 { 0 1 1 sr} bdef 1 j 1 sg 0 0 6918 5185 PR 6 w 0 1782 2261 0 0 -1782 899 2170 4 MP PP -2261 0 0 1782 2261 0 0 -1782 899 2170 5 MP stroke 4 w DO SO 6 w 0 sg 899 2170 mt 3160 2170 L 899 388 mt 3160 388 L 899 2170 mt 899 388 L 3160 2170 mt 3160 388 L 899 2170 mt 3160 2170 L 899 2170 mt 899 388 L 899 2170 mt 899 2147 L 899 388 mt 899 411 L /Helvetica /ISOLatin1Encoding 120 FMSR 866 2316 mt (0) s 1351 2170 mt 1351 2147 L 1351 388 mt 1351 411 L 1285 2316 mt (20) s 1803 2170 mt 1803 2147 L 1803 388 mt 1803 411 L 1737 2316 mt (40) s 2256 2170 mt 2256 2147 L 2256 388 mt 2256 411 L 2190 2316 mt (60) s 2708 2170 mt 2708 2147 L 2708 388 mt 2708 411 L 2642 2316 mt (80) s 3160 2170 mt 3160 2147 L 3160 388 mt 3160 411 L 3060 2316 mt (100) s 899 2170 mt 922 2170 L 3160 2170 mt 3137 2170 L 798 2214 mt (0) s 899 1814 mt 922 1814 L 3160 1814 mt 3137 1814 L 698 1858 mt (0.2) s 899 1457 mt 922 1457 L 3160 1457 mt 3137 1457 L 698 1501 mt (0.4) s 899 1101 mt 922 1101 L 3160 1101 mt 3137 1101 L 698 1145 mt (0.6) s 899 744 mt 922 744 L 3160 744 mt 3137 744 L 698 788 mt (0.8) s 899 388 mt 922 388 L 3160 388 mt 3137 388 L 798 432 mt (1) s 899 2170 mt 3160 2170 L 899 388 mt 3160 388 L 899 2170 mt 899 388 L 3160 2170 mt 3160 388 L gs 899 388 2262 1783 MR c np 23 14 22 6 23 7 22 7 23 5 23 4 22 5 23 4 22 4 23 4 23 4 22 3 23 4 23 4 22 4 23 5 22 4 23 4 23 4 22 4 23 3 22 4 23 4 23 4 22 4 23 4 22 5 23 5 23 4 22 5 23 4 23 6 22 5 23 6 22 6 23 40 23 33 22 30 23 27 22 24 23 23 23 21 22 20 23 19 22 19 23 17 23 17 22 16 23 16 22 15 23 15 23 15 22 14 23 13 23 14 22 13 23 12 22 13 23 12 23 12 22 12 23 12 22 11 23 11 23 11 22 11 23 11 22 10 23 11 23 10 22 10 23 10 23 10 22 9 23 10 22 9 23 10 23 9 22 9 23 9 22 9 23 9 23 9 22 9 23 8 22 9 23 8 23 9 22 8 23 8 23 8 22 9 23 8 22 8 23 8 23 8 22 8 23 8 22 7 922 1168 100 MP stroke 23 780 899 388 2 MP stroke DA 23 1 22 1 23 1 22 4 23 1 23 2 22 2 23 3 22 2 23 2 23 3 22 0 23 2 23 2 22 2 23 2 22 3 23 1 23 2 22 1 23 2 22 1 23 1 23 2 22 1 23 2 22 2 23 1 23 1 22 2 23 1 23 1 22 2 23 3 22 3 23 33 23 30 22 26 23 25 22 22 23 21 23 20 22 20 23 18 22 17 23 17 23 16 22 16 23 15 22 15 23 14 23 14 22 14 23 13 23 13 22 13 23 12 22 12 23 12 23 12 22 11 23 12 22 11 23 11 23 11 22 10 23 11 22 10 23 10 23 10 22 10 23 10 23 9 22 10 23 9 22 10 23 9 23 9 22 9 23 9 22 9 23 9 23 8 22 9 23 8 22 9 23 8 23 8 22 8 23 9 23 8 22 8 23 7 22 8 23 8 23 8 22 7 23 8 22 7 922 1167 100 MP stroke 23 779 899 388 2 MP stroke DO 23 8 22 5 23 1 22 17 23 1 23 1 22 17 23 16 22 15 23 15 23 14 22 14 23 14 23 13 22 12 23 13 22 12 23 0 23 12 22 12 23 0 22 1 23 0 23 1 22 1 23 0 22 1 23 4 23 0 22 1 23 5 23 5 22 11 23 11 22 11 23 11 23 10 22 11 23 10 22 10 23 9 23 10 22 9 23 1 22 9 23 9 23 11 22 5 23 1 22 0 23 0 23 1 22 0 23 0 23 1 22 7 23 7 22 7 23 7 23 9 22 7 23 7 22 0 23 1 23 5 22 1 23 3 22 1 23 6 23 3 22 8 23 8 23 7 22 8 23 8 22 7 23 8 23 7 22 8 23 7 22 8 23 7 23 7 22 7 23 7 22 1 23 1 23 6 22 1 23 7 23 1 22 8 23 802 22 4 23 5 23 4 22 4 23 5 22 4 922 392 100 MP stroke 23 4 899 388 2 MP stroke gr DO 1283 293 mt (Residual Norm vs. No. of Terms) s SO 1 sg 0 1782 2261 0 0 -1782 3997 2170 4 MP PP -2261 0 0 1782 2261 0 0 -1782 3997 2170 5 MP stroke 4 w DO SO 6 w 0 sg 3997 2170 mt 6258 2170 L 3997 388 mt 6258 388 L 3997 2170 mt 3997 388 L 6258 2170 mt 6258 388 L 3997 2170 mt 6258 2170 L 3997 2170 mt 3997 388 L 4096 2170 mt 4096 2147 L 4096 388 mt 4096 411 L 4008 2353 mt (10) s /Helvetica /ISOLatin1Encoding 80 FMSR 4141 2279 mt (2) s 4807 2170 mt 4807 2147 L 4807 388 mt 4807 411 L /Helvetica /ISOLatin1Encoding 120 FMSR 4719 2353 mt (10) s /Helvetica /ISOLatin1Encoding 80 FMSR 4852 2279 mt (3) s 5518 2170 mt 5518 2147 L 5518 388 mt 5518 411 L /Helvetica /ISOLatin1Encoding 120 FMSR 5430 2353 mt (10) s /Helvetica /ISOLatin1Encoding 80 FMSR 5563 2279 mt (4) s 6229 2170 mt 6229 2147 L 6229 388 mt 6229 411 L /Helvetica /ISOLatin1Encoding 120 FMSR 6141 2353 mt (10) s /Helvetica /ISOLatin1Encoding 80 FMSR 6274 2279 mt (5) s 3997 2170 mt 4020 2170 L 6258 2170 mt 6235 2170 L /Helvetica /ISOLatin1Encoding 120 FMSR 3896 2214 mt (0) s 3997 1814 mt 4020 1814 L 6258 1814 mt 6235 1814 L 3796 1858 mt (0.2) s 3997 1457 mt 4020 1457 L 6258 1457 mt 6235 1457 L 3796 1501 mt (0.4) s 3997 1101 mt 4020 1101 L 6258 1101 mt 6235 1101 L 3796 1145 mt (0.6) s 3997 744 mt 4020 744 L 6258 744 mt 6235 744 L 3796 788 mt (0.8) s 3997 388 mt 4020 388 L 6258 388 mt 6235 388 L 3896 432 mt (1) s 3997 2170 mt 6258 2170 L 3997 388 mt 6258 388 L 3997 2170 mt 3997 388 L 6258 2170 mt 6258 388 L gs 3997 388 2262 1783 MR c np 3 14 3 6 3 7 4 7 3 5 3 4 3 5 4 4 3 4 4 4 3 4 3 3 4 4 4 4 3 4 4 5 4 4 3 4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 5 4 5 5 4 4 5 5 4 4 6 5 5 4 6 5 6 5 40 5 33 5 30 5 27 5 24 5 23 5 21 6 20 5 19 6 19 5 17 6 17 6 16 6 16 6 15 6 15 7 15 6 14 7 13 6 14 7 13 8 12 7 13 7 12 8 12 8 12 8 12 8 11 8 11 9 11 9 11 9 11 10 10 10 11 10 10 10 10 11 10 11 10 12 9 12 10 13 9 13 10 13 9 15 9 15 9 16 9 16 9 18 9 19 9 20 8 21 9 23 8 24 9 27 8 30 8 32 8 37 9 41 8 47 8 57 8 69 8 88 8 126 8 214 7 4836 1168 100 MP stroke DA 4 1 3 1 3 1 3 4 3 1 4 2 3 2 3 3 4 2 3 2 3 3 4 0 3 2 4 2 4 2 3 2 4 3 4 1 4 2 3 1 4 2 4 1 4 1 4 2 4 1 4 2 5 2 4 1 4 1 5 2 4 1 5 1 4 2 5 3 4 3 5 33 5 30 5 26 5 25 5 22 5 21 6 20 5 20 5 18 6 17 6 17 5 16 6 16 6 15 6 15 7 14 6 14 7 14 6 13 7 13 7 13 7 12 7 12 8 12 7 12 8 11 8 12 8 11 9 11 9 11 8 10 10 11 9 10 10 10 10 10 11 10 10 10 12 9 11 10 12 9 13 10 13 9 14 9 14 9 15 9 16 9 17 9 17 8 19 9 20 8 21 9 23 8 25 8 27 8 29 9 33 8 36 8 41 7 48 8 56 8 69 8 89 7 125 8 214 7 3997 1167 100 MP stroke DO 4 8 3 5 3 1 3 17 3 1 4 1 3 17 3 16 4 15 3 15 3 14 4 14 3 14 4 13 4 12 3 13 4 12 4 0 4 12 3 12 4 0 4 1 4 0 4 1 4 1 4 0 5 1 4 4 4 0 5 1 4 5 5 5 4 11 5 11 4 11 5 11 5 10 5 11 5 10 5 10 5 9 6 10 5 9 5 1 6 9 6 9 5 11 6 5 6 1 6 0 7 0 6 1 7 0 6 0 7 1 7 7 7 7 7 7 8 7 7 9 8 7 8 7 8 0 9 1 9 5 8 1 10 3 9 1 10 6 10 3 11 8 10 8 12 7 11 8 12 8 13 7 13 8 14 7 14 8 15 7 16 8 17 7 17 7 19 7 20 7 21 1 23 1 25 6 27 1 29 7 33 1 36 8 41 802 48 4 56 5 69 4 89 4 125 5 214 4 3997 392 100 MP stroke gr DO 4387 293 mt (Residual Norms vs. Storage) s SO 1 sg 0 1782 5394 0 0 -1782 899 4612 4 MP PP -5394 0 0 1782 5394 0 0 -1782 899 4612 5 MP stroke 4 w DO SO 6 w 0 sg 899 4612 mt 6293 4612 L 899 2830 mt 6293 2830 L 899 4612 mt 899 2830 L 6293 4612 mt 6293 2830 L 899 4612 mt 6293 4612 L 899 4612 mt 899 2830 L 899 4612 mt 899 4558 L 899 2830 mt 899 2884 L 866 4758 mt (0) s 1433 4612 mt 1433 4558 L 1433 2830 mt 1433 2884 L 1367 4758 mt (10) s 1967 4612 mt 1967 4558 L 1967 2830 mt 1967 2884 L 1901 4758 mt (20) s 2501 4612 mt 2501 4558 L 2501 2830 mt 2501 2884 L 2435 4758 mt (30) s 3035 4612 mt 3035 4558 L 3035 2830 mt 3035 2884 L 2969 4758 mt (40) s 3569 4612 mt 3569 4558 L 3569 2830 mt 3569 2884 L 3503 4758 mt (50) s 4103 4612 mt 4103 4558 L 4103 2830 mt 4103 2884 L 4037 4758 mt (60) s 4637 4612 mt 4637 4558 L 4637 2830 mt 4637 2884 L 4571 4758 mt (70) s 5171 4612 mt 5171 4558 L 5171 2830 mt 5171 2884 L 5105 4758 mt (80) s 5706 4612 mt 5706 4558 L 5706 2830 mt 5706 2884 L 5640 4758 mt (90) s 6240 4612 mt 6240 4558 L 6240 2830 mt 6240 2884 L 6140 4758 mt (100) s 899 4612 mt 953 4612 L 6293 4612 mt 6239 4612 L 798 4656 mt (0) s 899 4018 mt 953 4018 L 6293 4018 mt 6239 4018 L 798 4062 mt (5) s 899 3424 mt 953 3424 L 6293 3424 mt 6239 3424 L 731 3468 mt (10) s 899 2830 mt 953 2830 L 6293 2830 mt 6239 2830 L 731 2874 mt (15) s 899 4612 mt 6293 4612 L 899 2830 mt 6293 2830 L 899 4612 mt 899 2830 L 6293 4612 mt 6293 2830 L gs 899 2830 5395 1783 MR c np gr 927 3286 mt 977 3336 L 977 3286 mt 927 3336 L 981 4208 mt 1031 4258 L 1031 4208 mt 981 4258 L 1034 4209 mt 1084 4259 L 1084 4209 mt 1034 4259 L 1088 4209 mt 1138 4259 L 1138 4209 mt 1088 4259 L 1141 4209 mt 1191 4259 L 1191 4209 mt 1141 4259 L 1194 4209 mt 1244 4259 L 1244 4209 mt 1194 4259 L 1248 4209 mt 1298 4259 L 1298 4209 mt 1248 4259 L 1301 4209 mt 1351 4259 L 1351 4209 mt 1301 4259 L 1355 4209 mt 1405 4259 L 1405 4209 mt 1355 4259 L 1408 4209 mt 1458 4259 L 1458 4209 mt 1408 4259 L 1461 4210 mt 1511 4260 L 1511 4210 mt 1461 4260 L 1515 4210 mt 1565 4260 L 1565 4210 mt 1515 4260 L 1568 4210 mt 1618 4260 L 1618 4210 mt 1568 4260 L 1622 4210 mt 1672 4260 L 1672 4210 mt 1622 4260 L 1675 4210 mt 1725 4260 L 1725 4210 mt 1675 4260 L 1728 4210 mt 1778 4260 L 1778 4210 mt 1728 4260 L 1782 4210 mt 1832 4260 L 1832 4210 mt 1782 4260 L 1835 4210 mt 1885 4260 L 1885 4210 mt 1835 4260 L 1889 4210 mt 1939 4260 L 1939 4210 mt 1889 4260 L 1942 4210 mt 1992 4260 L 1992 4210 mt 1942 4260 L 1996 4210 mt 2046 4260 L 2046 4210 mt 1996 4260 L 2049 4210 mt 2099 4260 L 2099 4210 mt 2049 4260 L 2102 4210 mt 2152 4260 L 2152 4210 mt 2102 4260 L 2156 4210 mt 2206 4260 L 2206 4210 mt 2156 4260 L 2209 4210 mt 2259 4260 L 2259 4210 mt 2209 4260 L 2263 4210 mt 2313 4260 L 2313 4210 mt 2263 4260 L 2316 4210 mt 2366 4260 L 2366 4210 mt 2316 4260 L 2369 4210 mt 2419 4260 L 2419 4210 mt 2369 4260 L 2423 4210 mt 2473 4260 L 2473 4210 mt 2423 4260 L 2476 4210 mt 2526 4260 L 2526 4210 mt 2476 4260 L 2530 4210 mt 2580 4260 L 2580 4210 mt 2530 4260 L 2583 4210 mt 2633 4260 L 2633 4210 mt 2583 4260 L 2636 4210 mt 2686 4260 L 2686 4210 mt 2636 4260 L 2690 4210 mt 2740 4260 L 2740 4210 mt 2690 4260 L 2743 4210 mt 2793 4260 L 2793 4210 mt 2743 4260 L 2797 4210 mt 2847 4260 L 2847 4210 mt 2797 4260 L 2850 4210 mt 2900 4260 L 2900 4210 mt 2850 4260 L 2903 4210 mt 2953 4260 L 2953 4210 mt 2903 4260 L 2957 4210 mt 3007 4260 L 3007 4210 mt 2957 4260 L 3010 4210 mt 3060 4260 L 3060 4210 mt 3010 4260 L 3064 4210 mt 3114 4260 L 3114 4210 mt 3064 4260 L 3117 4210 mt 3167 4260 L 3167 4210 mt 3117 4260 L 3170 4210 mt 3220 4260 L 3220 4210 mt 3170 4260 L 3224 4210 mt 3274 4260 L 3274 4210 mt 3224 4260 L 3277 4210 mt 3327 4260 L 3327 4210 mt 3277 4260 L 3331 4210 mt 3381 4260 L 3381 4210 mt 3331 4260 L 3384 4210 mt 3434 4260 L 3434 4210 mt 3384 4260 L 3437 4210 mt 3487 4260 L 3487 4210 mt 3437 4260 L 3491 4210 mt 3541 4260 L 3541 4210 mt 3491 4260 L 3544 4210 mt 3594 4260 L 3594 4210 mt 3544 4260 L 3598 4210 mt 3648 4260 L 3648 4210 mt 3598 4260 L 3651 4210 mt 3701 4260 L 3701 4210 mt 3651 4260 L 3705 4210 mt 3755 4260 L 3755 4210 mt 3705 4260 L 3758 4210 mt 3808 4260 L 3808 4210 mt 3758 4260 L 3811 4210 mt 3861 4260 L 3861 4210 mt 3811 4260 L 3865 4210 mt 3915 4260 L 3915 4210 mt 3865 4260 L 3918 4210 mt 3968 4260 L 3968 4210 mt 3918 4260 L 3972 4210 mt 4022 4260 L 4022 4210 mt 3972 4260 L 4025 4210 mt 4075 4260 L 4075 4210 mt 4025 4260 L 4078 4210 mt 4128 4260 L 4128 4210 mt 4078 4260 L 4132 4210 mt 4182 4260 L 4182 4210 mt 4132 4260 L 4185 4210 mt 4235 4260 L 4235 4210 mt 4185 4260 L 4239 4210 mt 4289 4260 L 4289 4210 mt 4239 4260 L 4292 4210 mt 4342 4260 L 4342 4210 mt 4292 4260 L 4345 4211 mt 4395 4261 L 4395 4211 mt 4345 4261 L 4399 4361 mt 4449 4411 L 4449 4361 mt 4399 4411 L 4452 4364 mt 4502 4414 L 4502 4364 mt 4452 4414 L 4506 4372 mt 4556 4422 L 4556 4372 mt 4506 4422 L 4559 4375 mt 4609 4425 L 4609 4375 mt 4559 4425 L 4612 4381 mt 4662 4431 L 4662 4381 mt 4612 4431 L 4666 4385 mt 4716 4435 L 4716 4385 mt 4666 4435 L 4719 4386 mt 4769 4436 L 4769 4386 mt 4719 4436 L 4773 4386 mt 4823 4436 L 4823 4386 mt 4773 4436 L 4826 4387 mt 4876 4437 L 4876 4387 mt 4826 4437 L 4879 4398 mt 4929 4448 L 4929 4398 mt 4879 4448 L 4933 4399 mt 4983 4449 L 4983 4399 mt 4933 4449 L 4986 4402 mt 5036 4452 L 5036 4402 mt 4986 4452 L 5040 4404 mt 5090 4454 L 5090 4404 mt 5040 4454 L 5093 4405 mt 5143 4455 L 5143 4405 mt 5093 4455 L 5146 4408 mt 5196 4458 L 5196 4408 mt 5146 4458 L 5200 4410 mt 5250 4460 L 5250 4410 mt 5200 4460 L 5253 4411 mt 5303 4461 L 5303 4411 mt 5253 4461 L 5307 4411 mt 5357 4461 L 5357 4411 mt 5307 4461 L 5360 4412 mt 5410 4462 L 5410 4412 mt 5360 4462 L 5414 4412 mt 5464 4462 L 5464 4412 mt 5414 4462 L 5467 4412 mt 5517 4462 L 5517 4412 mt 5467 4462 L 5520 4423 mt 5570 4473 L 5570 4423 mt 5520 4473 L 5574 4424 mt 5624 4474 L 5624 4424 mt 5574 4474 L 5627 4428 mt 5677 4478 L 5677 4428 mt 5627 4478 L 5681 4431 mt 5731 4481 L 5731 4431 mt 5681 4481 L 5734 4432 mt 5784 4482 L 5784 4432 mt 5734 4482 L 5787 4432 mt 5837 4482 L 5837 4432 mt 5787 4482 L 5841 4434 mt 5891 4484 L 5891 4434 mt 5841 4484 L 5894 4435 mt 5944 4485 L 5944 4435 mt 5894 4485 L 5948 4437 mt 5998 4487 L 5998 4437 mt 5948 4487 L 6001 4437 mt 6051 4487 L 6051 4437 mt 6001 4487 L 6054 4438 mt 6104 4488 L 6104 4438 mt 6054 4488 L 6108 4438 mt 6158 4488 L 6158 4438 mt 6108 4488 L 6161 4461 mt 6211 4511 L 6211 4461 mt 6161 4511 L 6215 4461 mt 6265 4511 L 6265 4461 mt 6215 4511 L gs 899 2830 5395 1783 MR c np gr 36 36 952 3311 FO 36 36 1006 4236 FO 36 36 1059 4236 FO 36 36 1113 4236 FO 36 36 1166 4236 FO 36 36 1219 4236 FO 36 36 1273 4236 FO 36 36 1326 4236 FO 36 36 1380 4236 FO 36 36 1433 4236 FO 36 36 1486 4236 FO 36 36 1540 4236 FO 36 36 1593 4236 FO 36 36 1647 4236 FO 36 36 1700 4236 FO 36 36 1753 4236 FO 36 36 1807 4236 FO 36 36 1860 4236 FO 36 36 1914 4236 FO 36 36 1967 4236 FO 36 36 2021 4236 FO 36 36 2074 4236 FO 36 36 2127 4236 FO 36 36 2181 4236 FO 36 36 2234 4236 FO 36 36 2288 4236 FO 36 36 2341 4236 FO 36 36 2394 4236 FO 36 36 2448 4236 FO 36 36 2501 4236 FO 36 36 2555 4236 FO 36 36 2608 4236 FO 36 36 2661 4236 FO 36 36 2715 4236 FO 36 36 2768 4236 FO 36 36 2822 4236 FO 36 36 2875 4236 FO 36 36 2928 4236 FO 36 36 2982 4236 FO 36 36 3035 4236 FO 36 36 3089 4236 FO 36 36 3142 4236 FO 36 36 3195 4236 FO 36 36 3249 4236 FO 36 36 3302 4236 FO 36 36 3356 4236 FO 36 36 3409 4236 FO 36 36 3462 4236 FO 36 36 3516 4236 FO 36 36 3569 4236 FO 36 36 3623 4236 FO 36 36 3676 4236 FO 36 36 3730 4236 FO 36 36 3783 4236 FO 36 36 3836 4236 FO 36 36 3890 4236 FO 36 36 3943 4236 FO 36 36 3997 4236 FO 36 36 4050 4236 FO 36 36 4103 4236 FO 36 36 4157 4236 FO 36 36 4210 4236 FO 36 36 4264 4236 FO 36 36 4317 4236 FO 36 36 4370 4236 FO 36 36 4424 4412 FO 36 36 4477 4410 FO 36 36 4531 4449 FO 36 36 4584 4449 FO 36 36 4637 4449 FO 36 36 4691 4449 FO 36 36 4744 4449 FO 36 36 4798 4449 FO 36 36 4851 4440 FO 36 36 4904 4440 FO 36 36 4958 4449 FO 36 36 5011 4449 FO 36 36 5065 4449 FO 36 36 5118 4449 FO 36 36 5171 4449 FO 36 36 5225 4470 FO 36 36 5278 4440 FO 36 36 5332 4440 FO 36 36 5385 4431 FO 36 36 5439 4439 FO 36 36 5492 4439 FO 36 36 5545 4440 FO 36 36 5599 4439 FO 36 36 5652 4470 FO 36 36 5706 4438 FO 36 36 5759 4438 FO 36 36 5812 4438 FO 36 36 5866 4416 FO 36 36 5919 4455 FO 36 36 5973 4445 FO 36 36 6026 4455 FO 36 36 6079 4418 FO 36 36 6133 4471 FO 36 36 6186 4471 FO 36 36 6240 4478 FO gs 899 2830 5395 1783 MR c np gr 0 j -41 71 -41 -71 82 0 911 4260 4 MP DP -41 71 -41 -71 82 0 965 4260 4 MP DP -41 71 -41 -71 82 0 1018 4260 4 MP DP -41 71 -41 -71 82 0 1072 4260 4 MP DP -41 71 -41 -71 82 0 1125 4260 4 MP DP -41 71 -41 -71 82 0 1178 4260 4 MP DP -41 71 -41 -71 82 0 1232 4260 4 MP DP -41 71 -41 -71 82 0 1285 3335 4 MP DP -41 71 -41 -71 82 0 1339 4260 4 MP DP -41 71 -41 -71 82 0 1392 4436 4 MP DP -41 71 -41 -71 82 0 1445 4274 4 MP DP -41 71 -41 -71 82 0 1499 4431 4 MP DP -41 71 -41 -71 82 0 1552 4277 4 MP DP -41 71 -41 -71 82 0 1606 4424 4 MP DP -41 71 -41 -71 82 0 1659 4448 4 MP DP -41 71 -41 -71 82 0 1712 4276 4 MP DP -41 71 -41 -71 82 0 1766 4273 4 MP DP -41 71 -41 -71 82 0 1819 4273 4 MP DP -41 71 -41 -71 82 0 1873 4273 4 MP DP -41 71 -41 -71 82 0 1926 4273 4 MP DP -41 71 -41 -71 82 0 1980 4273 4 MP DP -41 71 -41 -71 82 0 2033 4273 4 MP DP -41 71 -41 -71 82 0 2086 4273 4 MP DP -41 71 -41 -71 82 0 2140 4274 4 MP DP -41 71 -41 -71 82 0 2193 4274 4 MP DP -41 71 -41 -71 82 0 2247 4274 4 MP DP -41 71 -41 -71 82 0 2300 4274 4 MP DP -41 71 -41 -71 82 0 2353 4274 4 MP DP -41 71 -41 -71 82 0 2407 4274 4 MP DP -41 71 -41 -71 82 0 2460 4274 4 MP DP -41 71 -41 -71 82 0 2514 4354 4 MP DP -41 71 -41 -71 82 0 2567 4308 4 MP DP -41 71 -41 -71 82 0 2620 4394 4 MP DP -41 71 -41 -71 82 0 2674 4350 4 MP DP -41 71 -41 -71 82 0 2727 4434 4 MP DP -41 71 -41 -71 82 0 2781 4316 4 MP DP -41 71 -41 -71 82 0 2834 4418 4 MP DP -41 71 -41 -71 82 0 2887 4495 4 MP DP -41 71 -41 -71 82 0 2941 4290 4 MP DP -41 71 -41 -71 82 0 2994 4290 4 MP DP -41 71 -41 -71 82 0 3048 4273 4 MP DP -41 71 -41 -71 82 0 3101 4290 4 MP DP -41 71 -41 -71 82 0 3154 4290 4 MP DP -41 71 -41 -71 82 0 3208 4290 4 MP DP -41 71 -41 -71 82 0 3261 4290 4 MP DP -41 71 -41 -71 82 0 3315 4477 4 MP DP -41 71 -41 -71 82 0 3368 4477 4 MP DP -41 71 -41 -71 82 0 3421 4477 4 MP DP -41 71 -41 -71 82 0 3475 4477 4 MP DP -41 71 -41 -71 82 0 3528 4477 4 MP DP -41 71 -41 -71 82 0 3582 4477 4 MP DP -41 71 -41 -71 82 0 3635 4477 4 MP DP -41 71 -41 -71 82 0 3689 4308 4 MP DP -41 71 -41 -71 82 0 3742 4260 4 MP DP -41 71 -41 -71 82 0 3795 4273 4 MP DP -41 71 -41 -71 82 0 3849 4273 4 MP DP -41 71 -41 -71 82 0 3902 4462 4 MP DP -41 71 -41 -71 82 0 3956 4273 4 MP DP -41 71 -41 -71 82 0 4009 4273 4 MP DP -41 71 -41 -71 82 0 4062 4273 4 MP DP -41 71 -41 -71 82 0 4116 4273 4 MP DP -41 71 -41 -71 82 0 4169 4271 4 MP DP -41 71 -41 -71 82 0 4223 4271 4 MP DP -41 71 -41 -71 82 0 4276 4271 4 MP DP -41 71 -41 -71 82 0 4329 4271 4 MP DP -41 71 -41 -71 82 0 4383 4271 4 MP DP -41 71 -41 -71 82 0 4436 4271 4 MP DP -41 71 -41 -71 82 0 4490 4271 4 MP DP -41 71 -41 -71 82 0 4543 4343 4 MP DP -41 71 -41 -71 82 0 4596 4337 4 MP DP -41 71 -41 -71 82 0 4650 4452 4 MP DP -41 71 -41 -71 82 0 4703 4452 4 MP DP -41 71 -41 -71 82 0 4757 4361 4 MP DP -41 71 -41 -71 82 0 4810 4465 4 MP DP -41 71 -41 -71 82 0 4863 4465 4 MP DP -41 71 -41 -71 82 0 4917 4452 4 MP DP -41 71 -41 -71 82 0 4970 4465 4 MP DP -41 71 -41 -71 82 0 5024 4456 4 MP DP -41 71 -41 -71 82 0 5077 4498 4 MP DP -41 71 -41 -71 82 0 5130 4482 4 MP DP -41 71 -41 -71 82 0 5184 4272 4 MP DP -41 71 -41 -71 82 0 5237 4272 4 MP DP -41 71 -41 -71 82 0 5291 4498 4 MP DP -41 71 -41 -71 82 0 5344 4272 4 MP DP -41 71 -41 -71 82 0 5398 4273 4 MP DP -41 71 -41 -71 82 0 5451 4273 4 MP DP -41 71 -41 -71 82 0 5504 4273 4 MP DP -41 71 -41 -71 82 0 5558 4272 4 MP DP -41 71 -41 -71 82 0 5611 4272 4 MP DP -41 71 -41 -71 82 0 5665 4273 4 MP DP -41 71 -41 -71 82 0 5718 4272 4 MP DP -41 71 -41 -71 82 0 5771 4271 4 MP DP -41 71 -41 -71 82 0 5825 4271 4 MP DP -41 71 -41 -71 82 0 5878 4271 4 MP DP -41 71 -41 -71 82 0 5932 4474 4 MP DP -41 71 -41 -71 82 0 5985 4474 4 MP DP -41 71 -41 -71 82 0 6038 4271 4 MP DP -41 71 -41 -71 82 0 6092 4474 4 MP DP -41 71 -41 -71 82 0 6145 4369 4 MP DP -41 71 -41 -71 82 0 6199 4343 4 MP DP gs 899 2830 5395 1783 MR c np gr 2953 2735 mt (Singular vs. SDD values) s end eplot epage end showpage %%EndDocument @endspecial 225 2058 a Fz(Fig.)14 b(8.)35 b(Comparison)13 b(of)h(the)g(SVD)h(\(solid)f(line,)g Fw(x)h Fz(marks\),)f(SDD-THR)h (\(dashed)e(line,)h Fw(o)h Fz(marks\),)f(and)225 2099 y(SDD-CYC)e(\(dotted)e(line,)g(triangle)g(marks\))g(on)h Fw(impcol)p 1009 2099 11 2 v 10 w(c)p Fz(.)p eop %%Page: 24 24 24 23 bop 225 125 a Fv(24)71 b Fu(\001)78 b Fv(T.)13 b(G.)f(Kolda)g(and)h(D.)g(P)m(.)e(O'Lea)o(ry)297 1966 y @beginspecial 68 @llx 210 @lly 550 @urx 600 @ury 3240 @rwi 3240 @rhi @setspecial %%BeginDocument: west0132.eps % MathWorks dictionary /MathWorks 160 dict begin % definition operators /bdef {bind def} bind def /ldef {load def} bind def /xdef {exch def} bdef /xstore {exch store} bdef % operator abbreviations /c /clip ldef /cc /concat ldef /cp /closepath ldef /gr /grestore ldef /gs /gsave ldef /mt /moveto ldef /np /newpath ldef /cm /currentmatrix ldef /sm /setmatrix ldef /rc {rectclip} bdef /rf {rectfill} bdef /rm /rmoveto ldef /rl /rlineto ldef /s /show ldef /sc {setcmykcolor} bdef /sr /setrgbcolor ldef /sg /setgray ldef /w /setlinewidth ldef /j /setlinejoin ldef /cap /setlinecap ldef % page state control /pgsv () def /bpage {/pgsv save def} bdef /epage {pgsv restore} bdef /bplot /gsave ldef /eplot {stroke grestore} bdef % orientation switch /portraitMode 0 def /landscapeMode 1 def % coordinate system mappings /dpi2point 0 def % font control /FontSize 0 def /FMS { /FontSize xstore %save size off stack findfont [FontSize 0 0 FontSize neg 0 0] makefont setfont }bdef /reencode { exch dup where {pop load} {pop StandardEncoding} ifelse exch dup 3 1 roll findfont dup length dict begin { 1 index /FID ne {def}{pop pop} ifelse } forall /Encoding exch def currentdict end definefont pop } bdef /isroman { findfont /CharStrings get /Agrave known } bdef /FMSR { 3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse exch FMS } bdef /csm { 1 dpi2point div -1 dpi2point div scale neg translate landscapeMode eq {90 rotate} if } bdef % line types: solid, dotted, dashed, dotdash /SO { [] 0 setdash } bdef /DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef /DA { [6 dpi2point mul] 0 setdash } bdef /DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4 dpi2point mul] 0 setdash } bdef % macros for lines and objects /L { lineto stroke } bdef /MP { 3 1 roll moveto 1 sub {rlineto} repeat } bdef /AP { {rlineto} repeat } bdef /PP { closepath eofill } bdef /DP { closepath stroke } bdef /MR { 4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath } bdef /FR { MR stroke } bdef /PR { MR fill } bdef /L1i { { currentfile picstr readhexstring pop } image } bdef /tMatrix matrix def /MakeOval { newpath tMatrix currentmatrix pop translate scale 0 0 1 0 360 arc tMatrix setmatrix } bdef /FO { MakeOval stroke } bdef /PO { MakeOval fill } bdef /PD { currentlinecap 1 setlinecap 3 1 roll 2 copy moveto lineto stroke setlinecap } bdef /FA { newpath tMatrix currentmatrix pop translate scale 0 0 1 5 -2 roll arc tMatrix setmatrix stroke } bdef /PA { newpath tMatrix currentmatrix pop translate 0 0 moveto scale 0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill } bdef /FAn { newpath tMatrix currentmatrix pop translate scale 0 0 1 5 -2 roll arcn tMatrix setmatrix stroke } bdef /PAn { newpath tMatrix currentmatrix pop translate 0 0 moveto scale 0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill } bdef /MRR { /vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly vradius add translate hradius vradius scale 0 0 1 180 270 arc tMatrix setmatrix lrx hradius sub uly vradius add translate hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix lrx hradius sub lry vradius sub translate hradius vradius scale 0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix closepath } bdef /FRR { MRR stroke } bdef /PRR { MRR fill } bdef /MlrRR { /lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def newpath tMatrix currentmatrix pop ulx rad add uly rad add translate rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix closepath } bdef /FlrRR { MlrRR stroke } bdef /PlrRR { MlrRR fill } bdef /MtbRR { /lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def newpath tMatrix currentmatrix pop ulx rad add uly rad add translate rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix closepath } bdef /FtbRR { MtbRR stroke } bdef /PtbRR { MtbRR fill } bdef currentdict end def MathWorks begin 0 cap end MathWorks begin bpage bplot /dpi2point 12 def portraitMode 0216 7344 csm 607 134 5782 4679 MR c np 88 dict begin %Colortable dictionary /c0 { 0 0 0 sr} bdef /c1 { 1 1 1 sr} bdef /c2 { 1 0 0 sr} bdef /c3 { 0 1 0 sr} bdef /c4 { 0 0 1 sr} bdef /c5 { 1 1 0 sr} bdef /c6 { 1 0 1 sr} bdef /c7 { 0 1 1 sr} bdef 1 j 1 sg 0 0 6918 5185 PR 6 w 0 1782 2261 0 0 -1782 899 2170 4 MP PP -2261 0 0 1782 2261 0 0 -1782 899 2170 5 MP stroke 4 w DO SO 6 w 0 sg 899 2170 mt 3160 2170 L 899 388 mt 3160 388 L 899 2170 mt 899 388 L 3160 2170 mt 3160 388 L 899 2170 mt 3160 2170 L 899 2170 mt 899 388 L 899 2170 mt 899 2147 L 899 388 mt 899 411 L /Helvetica /ISOLatin1Encoding 120 FMSR 866 2316 mt (0) s 1351 2170 mt 1351 2147 L 1351 388 mt 1351 411 L 1285 2316 mt (20) s 1803 2170 mt 1803 2147 L 1803 388 mt 1803 411 L 1737 2316 mt (40) s 2256 2170 mt 2256 2147 L 2256 388 mt 2256 411 L 2190 2316 mt (60) s 2708 2170 mt 2708 2147 L 2708 388 mt 2708 411 L 2642 2316 mt (80) s 3160 2170 mt 3160 2147 L 3160 388 mt 3160 411 L 3060 2316 mt (100) s 899 2170 mt 922 2170 L 3160 2170 mt 3137 2170 L 798 2214 mt (0) s 899 1814 mt 922 1814 L 3160 1814 mt 3137 1814 L 698 1858 mt (0.2) s 899 1457 mt 922 1457 L 3160 1457 mt 3137 1457 L 698 1501 mt (0.4) s 899 1101 mt 922 1101 L 3160 1101 mt 3137 1101 L 698 1145 mt (0.6) s 899 744 mt 922 744 L 3160 744 mt 3137 744 L 698 788 mt (0.8) s 899 388 mt 922 388 L 3160 388 mt 3137 388 L 798 432 mt (1) s 899 2170 mt 3160 2170 L 899 388 mt 3160 388 L 899 2170 mt 899 388 L 3160 2170 mt 3160 388 L gs 899 388 2262 1783 MR c np 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 23 1 22 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 1 22 0 23 0 22 0 23 0 23 0 22 0 23 1 23 0 22 0 23 1 22 10 23 8 23 155 22 74 23 311 22 229 922 1379 100 MP stroke 23 991 899 388 2 MP stroke DA 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 22 1 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 1 22 0 23 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 1 23 0 22 1 23 0 23 0 22 0 23 0 22 1 23 0 23 0 22 0 23 1 23 0 22 1 23 2 22 1 23 0 23 1 22 1 23 2 22 0 23 1 23 4 22 2 23 4 22 12 23 2 23 1 22 65 23 1 23 3 22 14 23 13 22 130 23 85 23 259 22 25 23 175 22 19 922 1341 100 MP stroke 23 953 899 388 2 MP stroke DO 23 0 22 0 23 0 22 0 23 1 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 3 22 0 23 1 22 0 23 0 23 1 22 0 23 0 23 0 22 0 23 0 22 1 23 1 23 1 22 5 23 5 22 1 23 1 23 0 22 10 23 0 22 6 23 0 23 0 22 8 23 28 22 24 23 8 23 0 22 141 23 0 23 0 22 58 23 0 22 283 23 0 23 0 22 0 23 183 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 0 23 0 22 0 23 0 22 0 23 2 23 1 22 14 23 0 23 9 22 0 23 0 22 0 23 0 23 32 22 953 23 0 22 0 922 388 100 MP stroke 23 0 899 388 2 MP stroke gr DO 1283 293 mt (Residual Norm vs. No. of Terms) s SO 1 sg 0 1782 2261 0 0 -1782 3997 2170 4 MP PP -2261 0 0 1782 2261 0 0 -1782 3997 2170 5 MP stroke 4 w DO SO 6 w 0 sg 3997 2170 mt 6258 2170 L 3997 388 mt 6258 388 L 3997 2170 mt 3997 388 L 6258 2170 mt 6258 388 L 3997 2170 mt 6258 2170 L 3997 2170 mt 3997 388 L 4107 2170 mt 4107 2147 L 4107 388 mt 4107 411 L 4019 2353 mt (10) s /Helvetica /ISOLatin1Encoding 80 FMSR 4152 2279 mt (2) s 4818 2170 mt 4818 2147 L 4818 388 mt 4818 411 L /Helvetica /ISOLatin1Encoding 120 FMSR 4730 2353 mt (10) s /Helvetica /ISOLatin1Encoding 80 FMSR 4863 2279 mt (3) s 5529 2170 mt 5529 2147 L 5529 388 mt 5529 411 L /Helvetica /ISOLatin1Encoding 120 FMSR 5441 2353 mt (10) s /Helvetica /ISOLatin1Encoding 80 FMSR 5574 2279 mt (4) s 6240 2170 mt 6240 2147 L 6240 388 mt 6240 411 L /Helvetica /ISOLatin1Encoding 120 FMSR 6152 2353 mt (10) s /Helvetica /ISOLatin1Encoding 80 FMSR 6285 2279 mt (5) s 3997 2170 mt 4020 2170 L 6258 2170 mt 6235 2170 L /Helvetica /ISOLatin1Encoding 120 FMSR 3896 2214 mt (0) s 3997 1814 mt 4020 1814 L 6258 1814 mt 6235 1814 L 3796 1858 mt (0.2) s 3997 1457 mt 4020 1457 L 6258 1457 mt 6235 1457 L 3796 1501 mt (0.4) s 3997 1101 mt 4020 1101 L 6258 1101 mt 6235 1101 L 3796 1145 mt (0.6) s 3997 744 mt 4020 744 L 6258 744 mt 6235 744 L 3796 788 mt (0.8) s 3997 388 mt 4020 388 L 6258 388 mt 6235 388 L 3896 432 mt (1) s 3997 2170 mt 6258 2170 L 3997 388 mt 6258 388 L 3997 2170 mt 3997 388 L 6258 2170 mt 6258 388 L gs 3997 388 2262 1783 MR c np 3 0 3 0 3 0 4 0 3 0 3 0 3 0 4 0 3 0 4 0 3 0 3 0 4 0 4 0 3 0 4 0 4 0 3 0 4 0 4 0 4 0 4 0 4 0 4 0 4 0 4 0 4 0 4 0 5 0 4 0 5 0 4 0 5 0 4 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 6 0 5 0 6 0 5 0 6 0 6 0 6 0 6 0 6 0 7 0 6 0 7 0 7 0 6 0 8 0 7 0 7 0 8 0 8 0 8 0 8 0 8 0 9 0 9 0 9 0 10 0 10 0 10 0 10 0 11 0 11 1 12 0 12 0 13 0 13 0 14 0 14 0 15 0 16 0 16 0 18 1 19 0 20 0 21 0 23 0 25 0 27 0 29 1 32 0 37 0 41 1 48 10 56 8 69 155 89 74 125 311 214 229 4836 1379 100 MP stroke DA 3 0 3 0 3 0 4 0 3 0 3 0 3 0 4 0 3 0 4 0 3 0 4 0 3 0 4 0 3 0 4 0 4 0 3 0 4 0 4 0 4 0 4 0 4 0 4 0 4 0 4 0 4 0 5 0 4 0 4 0 5 0 4 0 5 0 4 0 5 0 5 0 5 0 5 0 5 0 5 1 5 0 5 0 6 0 5 0 6 0 5 0 6 0 6 0 6 1 6 0 6 0 7 0 6 0 7 0 7 0 7 0 7 0 7 0 7 0 8 0 8 1 8 0 8 1 9 0 8 0 9 0 9 0 10 1 10 0 10 0 10 0 11 1 11 0 12 1 12 2 13 1 13 0 14 1 14 1 15 2 16 0 17 1 17 4 19 2 20 4 21 12 23 2 25 1 27 65 29 1 33 3 36 14 41 13 48 130 56 85 69 259 89 25 125 175 214 19 3997 1341 100 MP stroke DO 3 0 3 0 3 0 4 0 3 1 3 0 3 0 4 0 3 0 4 0 3 0 4 0 3 0 4 0 3 0 4 0 4 0 3 0 4 0 4 0 4 0 4 0 4 0 4 3 4 0 4 1 4 0 5 0 4 1 4 0 5 0 4 0 5 0 4 0 5 1 5 1 5 1 5 5 5 5 5 1 5 1 5 0 6 10 5 0 6 6 5 0 6 0 6 8 6 28 6 24 6 8 7 0 6 141 7 0 7 0 7 58 7 0 7 283 7 0 8 0 8 0 8 183 8 0 9 0 8 0 9 0 9 0 10 0 10 0 10 0 10 0 11 0 11 0 12 0 12 0 13 0 13 0 14 0 14 0 15 0 16 0 17 0 17 0 19 0 20 0 21 0 23 2 25 1 27 14 29 0 33 9 36 0 41 0 48 0 56 0 69 32 89 953 125 0 214 0 3997 388 100 MP stroke gr DO 4387 293 mt (Residual Norms vs. Storage) s SO 1 sg 0 1782 5394 0 0 -1782 899 4612 4 MP PP -5394 0 0 1782 5394 0 0 -1782 899 4612 5 MP stroke 4 w DO SO 6 w 0 sg 899 4612 mt 6293 4612 L 899 2830 mt 6293 2830 L 899 4612 mt 899 2830 L 6293 4612 mt 6293 2830 L 899 4612 mt 6293 4612 L 899 4612 mt 899 2830 L 899 4612 mt 899 4558 L 899 2830 mt 899 2884 L 866 4758 mt (0) s 1433 4612 mt 1433 4558 L 1433 2830 mt 1433 2884 L 1367 4758 mt (10) s 1967 4612 mt 1967 4558 L 1967 2830 mt 1967 2884 L 1901 4758 mt (20) s 2501 4612 mt 2501 4558 L 2501 2830 mt 2501 2884 L 2435 4758 mt (30) s 3035 4612 mt 3035 4558 L 3035 2830 mt 3035 2884 L 2969 4758 mt (40) s 3569 4612 mt 3569 4558 L 3569 2830 mt 3569 2884 L 3503 4758 mt (50) s 4103 4612 mt 4103 4558 L 4103 2830 mt 4103 2884 L 4037 4758 mt (60) s 4637 4612 mt 4637 4558 L 4637 2830 mt 4637 2884 L 4571 4758 mt (70) s 5171 4612 mt 5171 4558 L 5171 2830 mt 5171 2884 L 5105 4758 mt (80) s 5706 4612 mt 5706 4558 L 5706 2830 mt 5706 2884 L 5640 4758 mt (90) s 6240 4612 mt 6240 4558 L 6240 2830 mt 6240 2884 L 6140 4758 mt (100) s 899 4612 mt 953 4612 L 6293 4612 mt 6239 4612 L 798 4656 mt (0) s 899 4315 mt 953 4315 L 6293 4315 mt 6239 4315 L 664 4359 mt (100) s 899 4018 mt 953 4018 L 6293 4018 mt 6239 4018 L 664 4062 mt (200) s 899 3721 mt 953 3721 L 6293 3721 mt 6239 3721 L 664 3765 mt (300) s 899 3424 mt 953 3424 L 6293 3424 mt 6239 3424 L 664 3468 mt (400) s 899 3127 mt 953 3127 L 6293 3127 mt 6239 3127 L 664 3171 mt (500) s 899 2830 mt 953 2830 L 6293 2830 mt 6239 2830 L 664 2874 mt (600) s 899 4612 mt 6293 4612 L 899 2830 mt 6293 2830 L 899 4612 mt 899 2830 L 6293 4612 mt 6293 2830 L gs 899 2830 5395 1783 MR c np gr 927 2907 mt 977 2957 L 977 2907 mt 927 2957 L 981 3595 mt 1031 3645 L 1031 3595 mt 981 3645 L 1034 3644 mt 1084 3694 L 1084 3644 mt 1034 3694 L 1088 4026 mt 1138 4076 L 1138 4026 mt 1088 4076 L 1141 4029 mt 1191 4079 L 1191 4029 mt 1141 4079 L 1194 4415 mt 1244 4465 L 1244 4415 mt 1194 4465 L 1248 4432 mt 1298 4482 L 1298 4432 mt 1248 4482 L 1301 4524 mt 1351 4574 L 1351 4524 mt 1301 4574 L 1355 4541 mt 1405 4591 L 1405 4541 mt 1355 4591 L 1408 4548 mt 1458 4598 L 1458 4548 mt 1408 4598 L 1461 4548 mt 1511 4598 L 1511 4548 mt 1461 4598 L 1515 4549 mt 1565 4599 L 1565 4549 mt 1515 4599 L 1568 4549 mt 1618 4599 L 1618 4549 mt 1568 4599 L 1622 4549 mt 1672 4599 L 1672 4549 mt 1622 4599 L 1675 4552 mt 1725 4602 L 1725 4552 mt 1675 4602 L 1728 4553 mt 1778 4603 L 1778 4553 mt 1728 4603 L 1782 4553 mt 1832 4603 L 1832 4553 mt 1782 4603 L 1835 4554 mt 1885 4604 L 1885 4554 mt 1835 4604 L 1889 4555 mt 1939 4605 L 1939 4555 mt 1889 4605 L 1942 4555 mt 1992 4605 L 1992 4555 mt 1942 4605 L 1996 4558 mt 2046 4608 L 2046 4558 mt 1996 4608 L 2049 4558 mt 2099 4608 L 2099 4558 mt 2049 4608 L 2102 4558 mt 2152 4608 L 2152 4558 mt 2102 4608 L 2156 4560 mt 2206 4610 L 2206 4560 mt 2156 4610 L 2209 4560 mt 2259 4610 L 2259 4560 mt 2209 4610 L 2263 4560 mt 2313 4610 L 2313 4560 mt 2263 4610 L 2316 4564 mt 2366 4614 L 2366 4564 mt 2316 4614 L 2369 4566 mt 2419 4616 L 2419 4566 mt 2369 4616 L 2423 4567 mt 2473 4617 L 2473 4567 mt 2423 4617 L 2476 4567 mt 2526 4617 L 2526 4567 mt 2476 4617 L 2530 4568 mt 2580 4618 L 2580 4568 mt 2530 4618 L 2583 4570 mt 2633 4620 L 2633 4570 mt 2583 4620 L 2636 4574 mt 2686 4624 L 2686 4574 mt 2636 4624 L 2690 4579 mt 2740 4629 L 2740 4579 mt 2690 4629 L 2743 4579 mt 2793 4629 L 2793 4579 mt 2743 4629 L 2797 4579 mt 2847 4629 L 2847 4579 mt 2797 4629 L 2850 4580 mt 2900 4630 L 2900 4580 mt 2850 4630 L 2903 4580 mt 2953 4630 L 2953 4580 mt 2903 4630 L 2957 4581 mt 3007 4631 L 3007 4581 mt 2957 4631 L 3010 4581 mt 3060 4631 L 3060 4581 mt 3010 4631 L 3064 4581 mt 3114 4631 L 3114 4581 mt 3064 4631 L 3117 4581 mt 3167 4631 L 3167 4581 mt 3117 4631 L 3170 4582 mt 3220 4632 L 3220 4582 mt 3170 4632 L 3224 4583 mt 3274 4633 L 3274 4583 mt 3224 4633 L 3277 4583 mt 3327 4633 L 3327 4583 mt 3277 4633 L 3331 4583 mt 3381 4633 L 3381 4583 mt 3331 4633 L 3384 4583 mt 3434 4633 L 3434 4583 mt 3384 4633 L 3437 4583 mt 3487 4633 L 3487 4583 mt 3437 4633 L 3491 4583 mt 3541 4633 L 3541 4583 mt 3491 4633 L 3544 4583 mt 3594 4633 L 3594 4583 mt 3544 4633 L 3598 4583 mt 3648 4633 L 3648 4583 mt 3598 4633 L 3651 4583 mt 3701 4633 L 3701 4583 mt 3651 4633 L 3705 4583 mt 3755 4633 L 3755 4583 mt 3705 4633 L 3758 4583 mt 3808 4633 L 3808 4583 mt 3758 4633 L 3811 4583 mt 3861 4633 L 3861 4583 mt 3811 4633 L 3865 4584 mt 3915 4634 L 3915 4584 mt 3865 4634 L 3918 4584 mt 3968 4634 L 3968 4584 mt 3918 4634 L 3972 4584 mt 4022 4634 L 4022 4584 mt 3972 4634 L 4025 4584 mt 4075 4634 L 4075 4584 mt 4025 4634 L 4078 4584 mt 4128 4634 L 4128 4584 mt 4078 4634 L 4132 4584 mt 4182 4634 L 4182 4584 mt 4132 4634 L 4185 4584 mt 4235 4634 L 4235 4584 mt 4185 4634 L 4239 4584 mt 4289 4634 L 4289 4584 mt 4239 4634 L 4292 4584 mt 4342 4634 L 4342 4584 mt 4292 4634 L 4345 4584 mt 4395 4634 L 4395 4584 mt 4345 4634 L 4399 4584 mt 4449 4634 L 4449 4584 mt 4399 4634 L 4452 4584 mt 4502 4634 L 4502 4584 mt 4452 4634 L 4506 4584 mt 4556 4634 L 4556 4584 mt 4506 4634 L 4559 4584 mt 4609 4634 L 4609 4584 mt 4559 4634 L 4612 4584 mt 4662 4634 L 4662 4584 mt 4612 4634 L 4666 4584 mt 4716 4634 L 4716 4584 mt 4666 4634 L 4719 4584 mt 4769 4634 L 4769 4584 mt 4719 4634 L 4773 4584 mt 4823 4634 L 4823 4584 mt 4773 4634 L 4826 4584 mt 4876 4634 L 4876 4584 mt 4826 4634 L 4879 4584 mt 4929 4634 L 4929 4584 mt 4879 4634 L 4933 4584 mt 4983 4634 L 4983 4584 mt 4933 4634 L 4986 4584 mt 5036 4634 L 5036 4584 mt 4986 4634 L 5040 4584 mt 5090 4634 L 5090 4584 mt 5040 4634 L 5093 4584 mt 5143 4634 L 5143 4584 mt 5093 4634 L 5146 4584 mt 5196 4634 L 5196 4584 mt 5146 4634 L 5200 4584 mt 5250 4634 L 5250 4584 mt 5200 4634 L 5253 4584 mt 5303 4634 L 5303 4584 mt 5253 4634 L 5307 4584 mt 5357 4634 L 5357 4584 mt 5307 4634 L 5360 4584 mt 5410 4634 L 5410 4584 mt 5360 4634 L 5414 4584 mt 5464 4634 L 5464 4584 mt 5414 4634 L 5467 4584 mt 5517 4634 L 5517 4584 mt 5467 4634 L 5520 4584 mt 5570 4634 L 5570 4584 mt 5520 4634 L 5574 4584 mt 5624 4634 L 5624 4584 mt 5574 4634 L 5627 4584 mt 5677 4634 L 5677 4584 mt 5627 4634 L 5681 4584 mt 5731 4634 L 5731 4584 mt 5681 4634 L 5734 4584 mt 5784 4634 L 5784 4584 mt 5734 4634 L 5787 4584 mt 5837 4634 L 5837 4584 mt 5787 4634 L 5841 4584 mt 5891 4634 L 5891 4584 mt 5841 4634 L 5894 4584 mt 5944 4634 L 5944 4584 mt 5894 4634 L 5948 4584 mt 5998 4634 L 5998 4584 mt 5948 4634 L 6001 4584 mt 6051 4634 L 6051 4584 mt 6001 4634 L 6054 4584 mt 6104 4634 L 6104 4584 mt 6054 4634 L 6108 4585 mt 6158 4635 L 6158 4585 mt 6108 4635 L 6161 4585 mt 6211 4635 L 6211 4585 mt 6161 4635 L 6215 4585 mt 6265 4635 L 6265 4585 mt 6215 4635 L gs 899 2830 5395 1783 MR c np gr 36 36 952 2942 FO 36 36 1006 4055 FO 36 36 1059 3669 FO 36 36 1113 4050 FO 36 36 1166 3673 FO 36 36 1219 3977 FO 36 36 1273 3976 FO 36 36 1326 4292 FO 36 36 1380 4292 FO 36 36 1433 4399 FO 36 36 1486 4460 FO 36 36 1540 4197 FO 36 36 1593 4514 FO 36 36 1647 4449 FO 36 36 1700 4395 FO 36 36 1753 4455 FO 36 36 1807 4490 FO 36 36 1860 4468 FO 36 36 1914 4527 FO 36 36 1967 4518 FO 36 36 2021 4516 FO 36 36 2074 4508 FO 36 36 2127 4524 FO 36 36 2181 4568 FO 36 36 2234 4535 FO 36 36 2288 4505 FO 36 36 2341 4532 FO 36 36 2394 4567 FO 36 36 2448 4539 FO 36 36 2501 4583 FO 36 36 2555 4574 FO 36 36 2608 4569 FO 36 36 2661 4577 FO 36 36 2715 4578 FO 36 36 2768 4585 FO 36 36 2822 4583 FO 36 36 2875 4573 FO 36 36 2928 4535 FO 36 36 2982 4586 FO 36 36 3035 4565 FO 36 36 3089 4577 FO 36 36 3142 4593 FO 36 36 3195 4588 FO 36 36 3249 4584 FO 36 36 3302 4588 FO 36 36 3356 4579 FO 36 36 3409 4579 FO 36 36 3462 4592 FO 36 36 3516 4585 FO 36 36 3569 4583 FO 36 36 3623 4574 FO 36 36 3676 4565 FO 36 36 3730 4599 FO 36 36 3783 4592 FO 36 36 3836 4585 FO 36 36 3890 4583 FO 36 36 3943 4595 FO 36 36 3997 4594 FO 36 36 4050 4595 FO 36 36 4103 4591 FO 36 36 4157 4582 FO 36 36 4210 4604 FO 36 36 4264 4597 FO 36 36 4317 4595 FO 36 36 4370 4605 FO 36 36 4424 4595 FO 36 36 4477 4597 FO 36 36 4531 4601 FO 36 36 4584 4598 FO 36 36 4637 4604 FO 36 36 4691 4605 FO 36 36 4744 4602 FO 36 36 4798 4602 FO 36 36 4851 4605 FO 36 36 4904 4605 FO 36 36 4958 4595 FO 36 36 5011 4602 FO 36 36 5065 4606 FO 36 36 5118 4606 FO 36 36 5171 4606 FO 36 36 5225 4608 FO 36 36 5278 4603 FO 36 36 5332 4605 FO 36 36 5385 4606 FO 36 36 5439 4606 FO 36 36 5492 4608 FO 36 36 5545 4605 FO 36 36 5599 4606 FO 36 36 5652 4607 FO 36 36 5706 4606 FO 36 36 5759 4607 FO 36 36 5812 4607 FO 36 36 5866 4607 FO 36 36 5919 4608 FO 36 36 5973 4607 FO 36 36 6026 4607 FO 36 36 6079 4607 FO 36 36 6133 4608 FO 36 36 6186 4607 FO 36 36 6240 4607 FO gs 899 2830 5395 1783 MR c np gr 0 j -41 71 -41 -71 82 0 911 4633 4 MP DP -41 71 -41 -71 82 0 965 4633 4 MP DP -41 71 -41 -71 82 0 1018 4602 4 MP DP -41 71 -41 -71 82 0 1072 2966 4 MP DP -41 71 -41 -71 82 0 1125 4001 4 MP DP -41 71 -41 -71 82 0 1178 4633 4 MP DP -41 71 -41 -71 82 0 1232 4634 4 MP DP -41 71 -41 -71 82 0 1285 4630 4 MP DP -41 71 -41 -71 82 0 1339 4633 4 MP DP -41 71 -41 -71 82 0 1392 4181 4 MP DP -41 71 -41 -71 82 0 1445 4633 4 MP DP -41 71 -41 -71 82 0 1499 4122 4 MP DP -41 71 -41 -71 82 0 1552 4351 4 MP DP -41 71 -41 -71 82 0 1606 4357 4 MP DP -41 71 -41 -71 82 0 1659 4615 4 MP DP -41 71 -41 -71 82 0 1712 4609 4 MP DP -41 71 -41 -71 82 0 1766 4607 4 MP DP -41 71 -41 -71 82 0 1819 4597 4 MP DP -41 71 -41 -71 82 0 1873 4631 4 MP DP -41 71 -41 -71 82 0 1926 4632 4 MP DP -41 71 -41 -71 82 0 1980 4633 4 MP DP -41 71 -41 -71 82 0 2033 4447 4 MP DP -41 71 -41 -71 82 0 2086 4633 4 MP DP -41 71 -41 -71 82 0 2140 4507 4 MP DP -41 71 -41 -71 82 0 2193 4541 4 MP DP -41 71 -41 -71 82 0 2247 4628 4 MP DP -41 71 -41 -71 82 0 2300 4538 4 MP DP -41 71 -41 -71 82 0 2353 4579 4 MP DP -41 71 -41 -71 82 0 2407 4583 4 MP DP -41 71 -41 -71 82 0 2460 4601 4 MP DP -41 71 -41 -71 82 0 2514 4613 4 MP DP -41 71 -41 -71 82 0 2567 4615 4 MP DP -41 71 -41 -71 82 0 2620 4621 4 MP DP -41 71 -41 -71 82 0 2674 4632 4 MP DP -41 71 -41 -71 82 0 2727 4632 4 MP DP -41 71 -41 -71 82 0 2781 4603 4 MP DP -41 71 -41 -71 82 0 2834 4629 4 MP DP -41 71 -41 -71 82 0 2887 4630 4 MP DP -41 71 -41 -71 82 0 2941 3697 4 MP DP -41 71 -41 -71 82 0 2994 4632 4 MP DP -41 71 -41 -71 82 0 3048 4630 4 MP DP -41 71 -41 -71 82 0 3101 4592 4 MP DP -41 71 -41 -71 82 0 3154 3693 4 MP DP -41 71 -41 -71 82 0 3208 4630 4 MP DP -41 71 -41 -71 82 0 3261 4074 4 MP DP -41 71 -41 -71 82 0 3315 4632 4 MP DP -41 71 -41 -71 82 0 3368 4632 4 MP DP -41 71 -41 -71 82 0 3421 4008 4 MP DP -41 71 -41 -71 82 0 3475 4617 4 MP DP -41 71 -41 -71 82 0 3528 4364 4 MP DP -41 71 -41 -71 82 0 3582 4300 4 MP DP -41 71 -41 -71 82 0 3635 4316 4 MP DP -41 71 -41 -71 82 0 3689 4423 4 MP DP -41 71 -41 -71 82 0 3742 4601 4 MP DP -41 71 -41 -71 82 0 3795 4612 4 MP DP -41 71 -41 -71 82 0 3849 4446 4 MP DP -41 71 -41 -71 82 0 3902 4632 4 MP DP -41 71 -41 -71 82 0 3956 4434 4 MP DP -41 71 -41 -71 82 0 4009 4633 4 MP DP -41 71 -41 -71 82 0 4062 4513 4 MP DP -41 71 -41 -71 82 0 4116 4540 4 MP DP -41 71 -41 -71 82 0 4169 4484 4 MP DP -41 71 -41 -71 82 0 4223 4492 4 MP DP -41 71 -41 -71 82 0 4276 4542 4 MP DP -41 71 -41 -71 82 0 4329 4551 4 MP DP -41 71 -41 -71 82 0 4383 4559 4 MP DP -41 71 -41 -71 82 0 4436 4593 4 MP DP -41 71 -41 -71 82 0 4490 4607 4 MP DP -41 71 -41 -71 82 0 4543 4603 4 MP DP -41 71 -41 -71 82 0 4596 4628 4 MP DP -41 71 -41 -71 82 0 4650 4619 4 MP DP -41 71 -41 -71 82 0 4703 4564 4 MP DP -41 71 -41 -71 82 0 4757 4583 4 MP DP -41 71 -41 -71 82 0 4810 4590 4 MP DP -41 71 -41 -71 82 0 4863 4600 4 MP DP -41 71 -41 -71 82 0 4917 4621 4 MP DP -41 71 -41 -71 82 0 4970 4540 4 MP DP -41 71 -41 -71 82 0 5024 4631 4 MP DP -41 71 -41 -71 82 0 5077 4633 4 MP DP -41 71 -41 -71 82 0 5130 4608 4 MP DP -41 71 -41 -71 82 0 5184 4613 4 MP DP -41 71 -41 -71 82 0 5237 4623 4 MP DP -41 71 -41 -71 82 0 5291 4634 4 MP DP -41 71 -41 -71 82 0 5344 4633 4 MP DP -41 71 -41 -71 82 0 5398 4622 4 MP DP -41 71 -41 -71 82 0 5451 4627 4 MP DP -41 71 -41 -71 82 0 5504 4622 4 MP DP -41 71 -41 -71 82 0 5558 4623 4 MP DP -41 71 -41 -71 82 0 5611 4627 4 MP DP -41 71 -41 -71 82 0 5665 4633 4 MP DP -41 71 -41 -71 82 0 5718 4632 4 MP DP -41 71 -41 -71 82 0 5771 4635 4 MP DP -41 71 -41 -71 82 0 5825 4633 4 MP DP -41 71 -41 -71 82 0 5878 4633 4 MP DP -41 71 -41 -71 82 0 5932 4604 4 MP DP -41 71 -41 -71 82 0 5985 4600 4 MP DP -41 71 -41 -71 82 0 6038 4613 4 MP DP -41 71 -41 -71 82 0 6092 4615 4 MP DP -41 71 -41 -71 82 0 6145 4616 4 MP DP -41 71 -41 -71 82 0 6199 4609 4 MP DP gs 899 2830 5395 1783 MR c np gr 2953 2735 mt (Singular vs. SDD values) s end eplot epage end showpage %%EndDocument @endspecial 225 2058 a Fz(Fig.)j(9.)35 b(Comparison)13 b(of)h(the)g(SVD)h(\(solid)f(line,)g Fw(x)h Fz(marks\),)f(SDD-THR)h (\(dashed)e(line,)h Fw(o)h Fz(marks\),)f(and)225 2099 y(SDD-CYC)e(\(dotted)e(line,)g(triangle)g(marks\))g(on)h Fw(west0132)p Fz(.)p eop %%Page: 25 25 25 24 bop 946 125 a Fv(Semidiscrete)12 b(Matrix)f(Decomp)q(osition)78 b Fu(\001)70 b Fv(25)297 1966 y @beginspecial 71 @llx 210 @lly 546 @urx 600 @ury 3240 @rwi 3240 @rhi @setspecial %%BeginDocument: watson2.eps % MathWorks dictionary /MathWorks 160 dict begin % definition operators /bdef {bind def} bind def /ldef {load def} bind def /xdef {exch def} bdef /xstore {exch store} bdef % operator abbreviations /c /clip ldef /cc /concat ldef /cp /closepath ldef /gr /grestore ldef /gs /gsave ldef /mt /moveto ldef /np /newpath ldef /cm /currentmatrix ldef /sm /setmatrix ldef /rc {rectclip} bdef /rf {rectfill} bdef /rm /rmoveto ldef /rl /rlineto ldef /s /show ldef /sc {setcmykcolor} bdef /sr /setrgbcolor ldef /sg /setgray ldef /w /setlinewidth ldef /j /setlinejoin ldef /cap /setlinecap ldef % page state control /pgsv () def /bpage {/pgsv save def} bdef /epage {pgsv restore} bdef /bplot /gsave ldef /eplot {stroke grestore} bdef % orientation switch /portraitMode 0 def /landscapeMode 1 def % coordinate system mappings /dpi2point 0 def % font control /FontSize 0 def /FMS { /FontSize xstore %save size off stack findfont [FontSize 0 0 FontSize neg 0 0] makefont setfont }bdef /reencode { exch dup where {pop load} {pop StandardEncoding} ifelse exch dup 3 1 roll findfont dup length dict begin { 1 index /FID ne {def}{pop pop} ifelse } forall /Encoding exch def currentdict end definefont pop } bdef /isroman { findfont /CharStrings get /Agrave known } bdef /FMSR { 3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse exch FMS } bdef /csm { 1 dpi2point div -1 dpi2point div scale neg translate landscapeMode eq {90 rotate} if } bdef % line types: solid, dotted, dashed, dotdash /SO { [] 0 setdash } bdef /DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef /DA { [6 dpi2point mul] 0 setdash } bdef /DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4 dpi2point mul] 0 setdash } bdef % macros for lines and objects /L { lineto stroke } bdef /MP { 3 1 roll moveto 1 sub {rlineto} repeat } bdef /AP { {rlineto} repeat } bdef /PP { closepath eofill } bdef /DP { closepath stroke } bdef /MR { 4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath } bdef /FR { MR stroke } bdef /PR { MR fill } bdef /L1i { { currentfile picstr readhexstring pop } image } bdef /tMatrix matrix def /MakeOval { newpath tMatrix currentmatrix pop translate scale 0 0 1 0 360 arc tMatrix setmatrix } bdef /FO { MakeOval stroke } bdef /PO { MakeOval fill } bdef /PD { currentlinecap 1 setlinecap 3 1 roll 2 copy moveto lineto stroke setlinecap } bdef /FA { newpath tMatrix currentmatrix pop translate scale 0 0 1 5 -2 roll arc tMatrix setmatrix stroke } bdef /PA { newpath tMatrix currentmatrix pop translate 0 0 moveto scale 0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill } bdef /FAn { newpath tMatrix currentmatrix pop translate scale 0 0 1 5 -2 roll arcn tMatrix setmatrix stroke } bdef /PAn { newpath tMatrix currentmatrix pop translate 0 0 moveto scale 0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill } bdef /MRR { /vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly vradius add translate hradius vradius scale 0 0 1 180 270 arc tMatrix setmatrix lrx hradius sub uly vradius add translate hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix lrx hradius sub lry vradius sub translate hradius vradius scale 0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix closepath } bdef /FRR { MRR stroke } bdef /PRR { MRR fill } bdef /MlrRR { /lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def newpath tMatrix currentmatrix pop ulx rad add uly rad add translate rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix closepath } bdef /FlrRR { MlrRR stroke } bdef /PlrRR { MlrRR fill } bdef /MtbRR { /lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def newpath tMatrix currentmatrix pop ulx rad add uly rad add translate rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix closepath } bdef /FtbRR { MtbRR stroke } bdef /PtbRR { MtbRR fill } bdef currentdict end def MathWorks begin 0 cap end MathWorks begin bpage bplot /dpi2point 12 def portraitMode 0216 7344 csm 641 134 5702 4679 MR c np 88 dict begin %Colortable dictionary /c0 { 0 0 0 sr} bdef /c1 { 1 1 1 sr} bdef /c2 { 1 0 0 sr} bdef /c3 { 0 1 0 sr} bdef /c4 { 0 0 1 sr} bdef /c5 { 1 1 0 sr} bdef /c6 { 1 0 1 sr} bdef /c7 { 0 1 1 sr} bdef 1 j 1 sg 0 0 6918 5185 PR 6 w 0 1782 2261 0 0 -1782 899 2170 4 MP PP -2261 0 0 1782 2261 0 0 -1782 899 2170 5 MP stroke 4 w DO SO 6 w 0 sg 899 2170 mt 3160 2170 L 899 388 mt 3160 388 L 899 2170 mt 899 388 L 3160 2170 mt 3160 388 L 899 2170 mt 3160 2170 L 899 2170 mt 899 388 L 899 2170 mt 899 2147 L 899 388 mt 899 411 L /Helvetica /ISOLatin1Encoding 120 FMSR 866 2316 mt (0) s 1584 2170 mt 1584 2147 L 1584 388 mt 1584 411 L 1518 2316 mt (20) s 2269 2170 mt 2269 2147 L 2269 388 mt 2269 411 L 2203 2316 mt (40) s 2954 2170 mt 2954 2147 L 2954 388 mt 2954 411 L 2888 2316 mt (60) s 899 2170 mt 922 2170 L 3160 2170 mt 3137 2170 L 798 2214 mt (0) s 899 1814 mt 922 1814 L 3160 1814 mt 3137 1814 L 698 1858 mt (0.2) s 899 1457 mt 922 1457 L 3160 1457 mt 3137 1457 L 698 1501 mt (0.4) s 899 1101 mt 922 1101 L 3160 1101 mt 3137 1101 L 698 1145 mt (0.6) s 899 744 mt 922 744 L 3160 744 mt 3137 744 L 698 788 mt (0.8) s 899 388 mt 922 388 L 3160 388 mt 3137 388 L 798 432 mt (1) s 899 2170 mt 3160 2170 L 899 388 mt 3160 388 L 899 2170 mt 899 388 L 3160 2170 mt 3160 388 L gs 899 388 2262 1783 MR c np 34 0 35 0 34 0 34 0 34 0 35 1 34 0 34 0 34 1 35 3 34 7 34 7 34 6 35 6 34 6 34 6 34 6 35 6 34 7 34 6 34 6 35 7 34 6 34 14 34 15 35 13 34 14 34 20 34 20 35 18 34 17 34 15 34 14 35 14 34 13 34 12 35 14 34 31 34 31 34 29 35 33 34 31 34 29 34 28 35 29 34 38 34 40 34 37 35 46 34 43 34 40 34 40 35 40 34 43 34 51 34 49 35 56 34 56 34 58 34 63 35 63 34 61 34 63 34 89 35 91 34 174 899 388 67 MP stroke DA 34 5 35 13 34 11 34 8 34 10 35 3 34 12 34 9 34 7 35 5 34 5 34 5 34 9 35 7 34 13 34 16 34 11 35 5 34 6 34 4 34 19 35 27 34 6 34 20 34 11 35 28 34 19 34 5 34 6 35 16 34 5 34 25 34 9 35 28 34 20 34 18 35 14 34 27 34 8 34 18 35 17 34 17 34 29 34 23 35 58 34 64 34 91 34 16 35 19 34 27 34 21 34 93 35 100 34 140 34 17 34 14 35 16 34 14 34 16 34 19 35 38 34 26 34 25 34 30 35 32 34 24 899 388 67 MP stroke DO 34 12 35 18 34 4 34 116 34 109 35 137 34 4 34 4 34 3 35 4 34 10 34 4 34 2 35 5 34 10 34 3 34 10 35 3 34 31 34 8 34 8 35 122 34 124 34 169 34 2 35 2 34 15 34 2 34 18 35 3 34 1 34 8 34 12 35 12 34 12 34 22 35 3 34 19 34 7 34 4 35 15 34 8 34 1 34 2 35 4 34 2 34 5 34 7 35 21 34 2 34 16 34 11 35 16 34 20 34 3 34 39 35 26 34 26 34 31 34 1 35 8 34 33 34 8 34 14 35 11 34 24 899 388 67 MP stroke gr DO 1283 293 mt (Residual Norm vs. No. of Terms) s SO 1 sg 0 1782 2261 0 0 -1782 3997 2170 4 MP PP -2261 0 0 1782 2261 0 0 -1782 3997 2170 5 MP stroke 4 w DO SO 6 w 0 sg 3997 2170 mt 6258 2170 L 3997 388 mt 6258 388 L 3997 2170 mt 3997 388 L 6258 2170 mt 6258 388 L 3997 2170 mt 6258 2170 L 3997 2170 mt 3997 388 L 4323 2170 mt 4323 2147 L 4323 388 mt 4323 411 L 4235 2353 mt (10) s /Helvetica /ISOLatin1Encoding 80 FMSR 4368 2279 mt (2) s 5082 2170 mt 5082 2147 L 5082 388 mt 5082 411 L /Helvetica /ISOLatin1Encoding 120 FMSR 4994 2353 mt (10) s /Helvetica /ISOLatin1Encoding 80 FMSR 5127 2279 mt (3) s 5841 2170 mt 5841 2147 L 5841 388 mt 5841 411 L /Helvetica /ISOLatin1Encoding 120 FMSR 5753 2353 mt (10) s /Helvetica /ISOLatin1Encoding 80 FMSR 5886 2279 mt (4) s 3997 2170 mt 4020 2170 L 6258 2170 mt 6235 2170 L /Helvetica /ISOLatin1Encoding 120 FMSR 3896 2214 mt (0) s 3997 1814 mt 4020 1814 L 6258 1814 mt 6235 1814 L 3796 1858 mt (0.2) s 3997 1457 mt 4020 1457 L 6258 1457 mt 6235 1457 L 3796 1501 mt (0.4) s 3997 1101 mt 4020 1101 L 6258 1101 mt 6235 1101 L 3796 1145 mt (0.6) s 3997 744 mt 4020 744 L 6258 744 mt 6235 744 L 3796 788 mt (0.8) s 3997 388 mt 4020 388 L 6258 388 mt 6235 388 L 3896 432 mt (1) s 3997 2170 mt 6258 2170 L 3997 388 mt 6258 388 L 3997 2170 mt 3997 388 L 6258 2170 mt 6258 388 L gs 3997 388 2262 1783 MR c np 5 0 5 0 5 0 6 0 5 0 5 1 6 0 6 0 5 1 6 3 6 7 6 7 6 6 7 6 6 6 7 6 6 6 7 6 7 7 7 6 7 6 8 7 7 6 8 14 8 15 8 13 8 14 9 20 9 20 9 18 9 17 10 15 10 14 10 14 10 13 11 12 11 14 12 31 12 31 12 29 13 33 14 31 14 29 14 28 16 29 16 38 17 40 17 37 19 46 20 43 22 40 22 40 25 40 26 43 29 51 31 49 35 56 39 56 44 58 51 63 60 63 73 61 95 63 134 89 229 91 4876 562 66 MP stroke DA 5 5 5 13 6 11 5 8 5 10 6 3 5 12 6 9 6 7 6 5 5 5 7 5 6 9 6 7 6 13 7 16 7 11 6 5 7 6 7 4 8 19 7 27 8 6 7 20 8 11 8 28 9 19 8 5 9 6 9 16 10 5 9 25 10 9 10 28 11 20 10 18 12 14 11 27 12 8 13 18 12 17 14 17 14 29 15 23 15 58 16 64 17 91 18 16 19 19 20 27 21 21 23 93 24 100 27 140 28 17 32 14 34 16 39 14 44 16 51 19 60 38 74 26 95 25 133 30 229 32 3997 412 66 MP stroke DO 5 12 5 18 6 4 5 116 5 109 6 137 5 4 6 4 6 3 6 4 5 10 7 4 6 2 6 5 6 10 7 3 7 10 6 3 7 31 7 8 8 8 7 122 8 124 7 169 8 2 8 2 9 15 8 2 9 18 9 3 10 1 9 8 10 12 10 12 11 12 10 22 12 3 11 19 12 7 13 4 12 15 14 8 14 1 15 2 15 4 16 2 17 5 18 7 19 21 20 2 21 16 23 11 24 16 27 20 28 3 32 39 34 26 39 26 44 31 51 1 60 8 74 33 95 8 133 14 229 11 3997 412 66 MP stroke gr DO 4387 293 mt (Residual Norms vs. Storage) s SO 1 sg 0 1782 5394 0 0 -1782 899 4612 4 MP PP -5394 0 0 1782 5394 0 0 -1782 899 4612 5 MP stroke 4 w DO SO 6 w 0 sg 899 4612 mt 6293 4612 L 899 2830 mt 6293 2830 L 899 4612 mt 899 2830 L 6293 4612 mt 6293 2830 L 899 4612 mt 6293 4612 L 899 4612 mt 899 2830 L 899 4612 mt 899 4558 L 899 2830 mt 899 2884 L 866 4758 mt (0) s 1704 4612 mt 1704 4558 L 1704 2830 mt 1704 2884 L 1638 4758 mt (10) s 2509 4612 mt 2509 4558 L 2509 2830 mt 2509 2884 L 2443 4758 mt (20) s 3314 4612 mt 3314 4558 L 3314 2830 mt 3314 2884 L 3248 4758 mt (30) s 4119 4612 mt 4119 4558 L 4119 2830 mt 4119 2884 L 4053 4758 mt (40) s 4924 4612 mt 4924 4558 L 4924 2830 mt 4924 2884 L 4858 4758 mt (50) s 5729 4612 mt 5729 4558 L 5729 2830 mt 5729 2884 L 5663 4758 mt (60) s 899 4612 mt 953 4612 L 6293 4612 mt 6239 4612 L 798 4656 mt (0) s 899 4167 mt 953 4167 L 6293 4167 mt 6239 4167 L 798 4211 mt (1) s 899 3721 mt 953 3721 L 6293 3721 mt 6239 3721 L 798 3765 mt (2) s 899 3276 mt 953 3276 L 6293 3276 mt 6239 3276 L 798 3320 mt (3) s 899 2830 mt 953 2830 L 6293 2830 mt 6239 2830 L 798 2874 mt (4) s 899 4612 mt 6293 4612 L 899 2830 mt 6293 2830 L 899 4612 mt 899 2830 L 6293 4612 mt 6293 2830 L gs 899 2830 5395 1783 MR c np gr 955 3233 mt 1005 3283 L 1005 3233 mt 955 3283 L 1035 3457 mt 1085 3507 L 1085 3457 mt 1035 3507 L 1116 3478 mt 1166 3528 L 1166 3478 mt 1116 3528 L 1196 3587 mt 1246 3637 L 1246 3587 mt 1196 3637 L 1277 3604 mt 1327 3654 L 1327 3604 mt 1277 3654 L 1357 3609 mt 1407 3659 L 1407 3609 mt 1357 3659 L 1438 3622 mt 1488 3672 L 1488 3622 mt 1438 3672 L 1518 3654 mt 1568 3704 L 1568 3654 mt 1518 3704 L 1599 3672 mt 1649 3722 L 1649 3672 mt 1599 3722 L 1679 3684 mt 1729 3734 L 1729 3684 mt 1679 3734 L 1760 3726 mt 1810 3776 L 1810 3726 mt 1760 3776 L 1840 3726 mt 1890 3776 L 1890 3726 mt 1840 3776 L 1921 3774 mt 1971 3824 L 1971 3774 mt 1921 3824 L 2001 3803 mt 2051 3853 L 2051 3803 mt 2001 3853 L 2082 3808 mt 2132 3858 L 2132 3808 mt 2082 3858 L 2162 3815 mt 2212 3865 L 2212 3815 mt 2162 3865 L 2243 3815 mt 2293 3865 L 2293 3815 mt 2243 3865 L 2323 3815 mt 2373 3865 L 2373 3815 mt 2323 3865 L 2404 3865 mt 2454 3915 L 2454 3865 mt 2404 3915 L 2484 3866 mt 2534 3916 L 2534 3866 mt 2484 3916 L 2565 3881 mt 2615 3931 L 2615 3881 mt 2565 3931 L 2645 3944 mt 2695 3994 L 2695 3944 mt 2645 3994 L 2726 3956 mt 2776 4006 L 2776 3956 mt 2726 4006 L 2806 3957 mt 2856 4007 L 2856 3957 mt 2806 4007 L 2887 3957 mt 2937 4007 L 2937 3957 mt 2887 4007 L 2967 3964 mt 3017 4014 L 3017 3964 mt 2967 4014 L 3048 3991 mt 3098 4041 L 3098 3991 mt 3048 4041 L 3128 3993 mt 3178 4043 L 3178 3993 mt 3128 4043 L 3209 4010 mt 3259 4060 L 3259 4010 mt 3209 4060 L 3289 4125 mt 3339 4175 L 3339 4125 mt 3289 4175 L 3370 4141 mt 3420 4191 L 3420 4141 mt 3370 4191 L 3450 4141 mt 3500 4191 L 3500 4141 mt 3450 4191 L 3531 4141 mt 3581 4191 L 3581 4141 mt 3531 4191 L 3611 4141 mt 3661 4191 L 3661 4141 mt 3611 4191 L 3692 4141 mt 3742 4191 L 3742 4141 mt 3692 4191 L 3772 4141 mt 3822 4191 L 3822 4141 mt 3772 4191 L 3853 4141 mt 3903 4191 L 3903 4141 mt 3853 4191 L 3933 4142 mt 3983 4192 L 3983 4142 mt 3933 4192 L 4014 4153 mt 4064 4203 L 4064 4153 mt 4014 4203 L 4094 4201 mt 4144 4251 L 4144 4201 mt 4094 4251 L 4175 4220 mt 4225 4270 L 4225 4220 mt 4175 4270 L 4255 4222 mt 4305 4272 L 4305 4222 mt 4255 4272 L 4336 4234 mt 4386 4284 L 4386 4234 mt 4336 4284 L 4416 4305 mt 4466 4355 L 4466 4305 mt 4416 4355 L 4497 4312 mt 4547 4362 L 4547 4312 mt 4497 4362 L 4577 4325 mt 4627 4375 L 4627 4325 mt 4577 4375 L 4658 4325 mt 4708 4375 L 4708 4325 mt 4658 4375 L 4738 4329 mt 4788 4379 L 4788 4329 mt 4738 4379 L 4819 4337 mt 4869 4387 L 4869 4337 mt 4819 4387 L 4899 4356 mt 4949 4406 L 4949 4356 mt 4899 4406 L 4980 4357 mt 5030 4407 L 5030 4357 mt 4980 4407 L 5060 4362 mt 5110 4412 L 5110 4362 mt 5060 4412 L 5141 4376 mt 5191 4426 L 5191 4376 mt 5141 4426 L 5221 4392 mt 5271 4442 L 5271 4392 mt 5221 4442 L 5302 4399 mt 5352 4449 L 5352 4399 mt 5302 4449 L 5382 4430 mt 5432 4480 L 5432 4430 mt 5382 4480 L 5463 4482 mt 5513 4532 L 5513 4482 mt 5463 4532 L 5543 4521 mt 5593 4571 L 5593 4521 mt 5543 4571 L 5624 4531 mt 5674 4581 L 5674 4531 mt 5624 4581 L 5704 4554 mt 5754 4604 L 5754 4554 mt 5704 4604 L 5785 4557 mt 5835 4607 L 5835 4557 mt 5785 4607 L 5865 4560 mt 5915 4610 L 5915 4560 mt 5865 4610 L 5946 4563 mt 5996 4613 L 5996 4563 mt 5946 4613 L 6026 4574 mt 6076 4624 L 6076 4574 mt 6026 4624 L 6107 4578 mt 6157 4628 L 6157 4578 mt 6107 4628 L 6187 4581 mt 6237 4631 L 6237 4581 mt 6187 4631 L gs 899 2830 5395 1783 MR c np gr 36 36 980 3779 FO 36 36 1060 3721 FO 36 36 1141 3733 FO 36 36 1221 3779 FO 36 36 1302 3779 FO 36 36 1382 3694 FO 36 36 1463 3840 FO 36 36 1543 3882 FO 36 36 1624 3908 FO 36 36 1704 3878 FO 36 36 1785 3908 FO 36 36 1865 3878 FO 36 36 1946 3378 FO 36 36 2026 3506 FO 36 36 2107 3544 FO 36 36 2187 3884 FO 36 36 2268 3840 FO 36 36 2348 3908 FO 36 36 2429 3941 FO 36 36 2509 3591 FO 36 36 2590 3694 FO 36 36 2670 3728 FO 36 36 2751 3922 FO 36 36 2831 3884 FO 36 36 2912 3982 FO 36 36 2992 3982 FO 36 36 3073 3981 FO 36 36 3153 4090 FO 36 36 3234 3921 FO 36 36 3314 4023 FO 36 36 3395 3992 FO 36 36 3475 3979 FO 36 36 3556 3931 FO 36 36 3636 4097 FO 36 36 3717 3959 FO 36 36 3797 4167 FO 36 36 3878 4037 FO 36 36 3958 4167 FO 36 36 4039 4166 FO 36 36 4119 4022 FO 36 36 4200 3960 FO 36 36 4280 4100 FO 36 36 4361 4023 FO 36 36 4441 4167 FO 36 36 4522 3987 FO 36 36 4602 4043 FO 36 36 4683 4226 FO 36 36 4763 4205 FO 36 36 4844 4205 FO 36 36 4924 4127 FO 36 36 5005 4078 FO 36 36 5085 4115 FO 36 36 5166 4183 FO 36 36 5246 4166 FO 36 36 5327 4224 FO 36 36 5407 4224 FO 36 36 5488 4226 FO 36 36 5568 4192 FO 36 36 5649 4183 FO 36 36 5729 4135 FO 36 36 5810 4278 FO 36 36 5890 4166 FO 36 36 5971 4199 FO 36 36 6051 4164 FO 36 36 6132 4143 FO 36 36 6212 4247 FO gs 899 2830 5395 1783 MR c np gr 0 j -41 71 -41 -71 82 0 939 3803 4 MP DP -41 71 -41 -71 82 0 1019 3946 4 MP DP -41 71 -41 -71 82 0 1100 3908 4 MP DP -41 71 -41 -71 82 0 1180 4006 4 MP DP -41 71 -41 -71 82 0 1261 3745 4 MP DP -41 71 -41 -71 82 0 1341 4005 4 MP DP -41 71 -41 -71 82 0 1422 4271 4 MP DP -41 71 -41 -71 82 0 1502 3757 4 MP DP -41 71 -41 -71 82 0 1583 3803 4 MP DP -41 71 -41 -71 82 0 1663 3803 4 MP DP -41 71 -41 -71 82 0 1744 3718 4 MP DP -41 71 -41 -71 82 0 1824 4190 4 MP DP -41 71 -41 -71 82 0 1905 3864 4 MP DP -41 71 -41 -71 82 0 1985 3909 4 MP DP -41 71 -41 -71 82 0 2066 3968 4 MP DP -41 71 -41 -71 82 0 2146 3915 4 MP DP -41 71 -41 -71 82 0 2227 4216 4 MP DP -41 71 -41 -71 82 0 2307 3864 4 MP DP -41 71 -41 -71 82 0 2388 4035 4 MP DP -41 71 -41 -71 82 0 2468 4104 4 MP DP -41 71 -41 -71 82 0 2549 4231 4 MP DP -41 71 -41 -71 82 0 2629 4131 4 MP DP -41 71 -41 -71 82 0 2710 4190 4 MP DP -41 71 -41 -71 82 0 2790 4249 4 MP DP -41 71 -41 -71 82 0 2871 4046 4 MP DP -41 71 -41 -71 82 0 2951 3934 4 MP DP -41 71 -41 -71 82 0 3032 4124 4 MP DP -41 71 -41 -71 82 0 3112 4044 4 MP DP -41 71 -41 -71 82 0 3193 3896 4 MP DP -41 71 -41 -71 82 0 3273 4191 4 MP DP -41 71 -41 -71 82 0 3354 3864 4 MP DP -41 71 -41 -71 82 0 3434 3982 4 MP DP -41 71 -41 -71 82 0 3515 3975 4 MP DP -41 71 -41 -71 82 0 3595 3982 4 MP DP -41 71 -41 -71 82 0 3676 4041 4 MP DP -41 71 -41 -71 82 0 3756 4285 4 MP DP -41 71 -41 -71 82 0 3837 4190 4 MP DP -41 71 -41 -71 82 0 3917 3908 4 MP DP -41 71 -41 -71 82 0 3998 4261 4 MP DP -41 71 -41 -71 82 0 4078 3950 4 MP DP -41 71 -41 -71 82 0 4159 4189 4 MP DP -41 71 -41 -71 82 0 4239 4227 4 MP DP -41 71 -41 -71 82 0 4320 3402 4 MP DP -41 71 -41 -71 82 0 4400 3530 4 MP DP -41 71 -41 -71 82 0 4481 3568 4 MP DP -41 71 -41 -71 82 0 4561 4114 4 MP DP -41 71 -41 -71 82 0 4642 4102 4 MP DP -41 71 -41 -71 82 0 4722 3897 4 MP DP -41 71 -41 -71 82 0 4803 4240 4 MP DP -41 71 -41 -71 82 0 4883 4076 4 MP DP -41 71 -41 -71 82 0 4964 4240 4 MP DP -41 71 -41 -71 82 0 5044 4095 4 MP DP -41 71 -41 -71 82 0 5125 4168 4 MP DP -41 71 -41 -71 82 0 5205 4271 4 MP DP -41 71 -41 -71 82 0 5286 4190 4 MP DP -41 71 -41 -71 82 0 5366 4096 4 MP DP -41 71 -41 -71 82 0 5447 4190 4 MP DP -41 71 -41 -71 82 0 5527 4225 4 MP DP -41 71 -41 -71 82 0 5608 4216 4 MP DP -41 71 -41 -71 82 0 5688 4210 4 MP DP -41 71 -41 -71 82 0 5769 3615 4 MP DP -41 71 -41 -71 82 0 5849 3718 4 MP DP -41 71 -41 -71 82 0 5930 3752 4 MP DP -41 71 -41 -71 82 0 6010 4286 4 MP DP -41 71 -41 -71 82 0 6091 4102 4 MP DP -41 71 -41 -71 82 0 6171 4157 4 MP DP gs 899 2830 5395 1783 MR c np gr 2953 2735 mt (Singular vs. SDD values) s end eplot epage end showpage %%EndDocument @endspecial 225 2058 a Fz(Fig.)13 b(10.)35 b(Comparison)11 b(of)i(the)g(SVD)h(\(solid)e(line,)h Fw(x)h Fz(marks\),)e(SDD-THR)i (\(dashed)e(line,)h Fw(o)g Fz(marks\),)g(and)225 2099 y(SDD-CYC)f(\(dotted)e(line,)g(triangle)g(marks\))g(on)h Fw(watson2)p Fz(.)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF SHAR_EOF fi # end of overwriting check cd .. if test ! -d 'Matlab' then mkdir 'Matlab' fi cd 'Matlab' if test ! -d 'Src' then mkdir 'Src' fi cd 'Src' if test -f 'mtxread.m' then echo shar: will not over-write existing file "'mtxread.m'" else cat << "SHAR_EOF" > 'mtxread.m' function [A, m, n] = mtxread(infile); %MTXREAD Read matrix A from a file in matrix market format. % % A = mtxread(FILENAME) reads a MatrixMarket formatted matrix from the % file FILENAME. % %SDDPACK: Software for the Semidiscrete Decomposition. %Copyright (c) 1999 Tamara G. Kolda and Dianne P. O'Leary. % This program is free software; you can redistribute it and/or modify it % under the terms of the GNU General Public License as published by the Free % Software Foundation; either version 2 of the License, or (at your option) % any later version. % % This program is distributed in the hope that it will be useful, but % WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY % or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License % for more details. % % You should have received a copy of the GNU General Public License along % with this program; if not, write to the Free Software Foundation, Inc., 59 % Temple Place - Suite 330, Boston, MA 02111-1307, USA. fid = fopen(infile, 'rt'); if (fid == -1) error('Error opening file.'); end line = fgets(fid); while line(1) == '%' line = fgets(fid); end [data, cnt] = sscanf(line,'%d'); m = data(1); n = data(2); nnzs = data(3); [data, cnt] = fscanf(fid, '%d %d %e', [3, inf]); I = data(1,:); J = data(2,:); S = data(3,:); A = sparse(I, J, S, m, n); fclose(fid); return;SHAR_EOF fi # end of overwriting check if test -f 'mtxwrite.m' then echo shar: will not over-write existing file "'mtxwrite.m'" else cat << "SHAR_EOF" > 'mtxwrite.m' function mtxwrite(filename, A) %MTXWRITE Write a matrix in MatrixMarket format. % % MTXWRITE(FILENAME, A) writes the matrix A to the file FILENAME in % MatrixMarket format. % %SDDPACK: Software for the Semidiscrete Decomposition. %Copyright (c) 1999 Tamara G. Kolda and Dianne P. O'Leary. % This program is free software; you can redistribute it and/or modify it % under the terms of the GNU General Public License as published by the Free % Software Foundation; either version 2 of the License, or (at your option) % any later version. % % This program is distributed in the hope that it will be useful, but % WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY % or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License % for more details. % % You should have received a copy of the GNU General Public License along % with this program; if not, write to the Free Software Foundation, Inc., 59 % Temple Place - Suite 330, Boston, MA 02111-1307, USA. [m, n] = size(A); nnza = nnz(A); fid = fopen(filename, 'wt'); fprintf(fid, '%%%% MatrixMarket matrix coordinate real general\n'); fprintf(fid, '%% File generated by mtxwrite from SDDPACK.\n'); fprintf(fid, '%d %d %d\n', m, n, nnz(A)); [I, J, V] = find(A); for k = 1 : nnza fprintf(fid, '%4d %4d %15.6e\n', I(k), J(k), V(k)); end fclose(fid); return SHAR_EOF fi # end of overwriting check if test -f 'sdd.m' then echo shar: will not over-write existing file "'sdd.m'" else cat << "SHAR_EOF" > 'sdd.m' function [dsav, xsav, ysav, itssav, rhosav, iitssav] = ... sdd(A, kmax, alphamin, lmax, rhomin, yinit) %SDD Semidiscrete Decomposition. % % [D, X, Y] = SDD(A) produces discrete matrices X and Y and a vector D % such that X * diag(D) * Y' is the 100-term SDD that approximates A. % % [D, X, Y, ITS] = SDD(...) also returns the number of inner iterations % for each outer iteration. % % [D, X, Y, ITS, RHO] = SDD(...) also returns a vector RHO containing the % norm-squared of the residual after each outer iteration. % % [D, X, Y, ITS, RHO, IITS] = SDD(...) also returns a vector IITS % containing the number of extra matrix-vector multiplies used in the % initialization of each inner iteration when using C=1 (see below). % % [...] = SDD(A, K) produces a K-term SDD. The default is 100. % % [...] = SDD(A, K, TOL) stops the inner iterations after the % improvement is less than TOL. The default is 0.01. % % [...] = SDD(A, K, TOL, L) specifies that the maximum number of inner % iterations is L. The default is 100. % % [...] = SDD(A, K, TOL, L, R) produces an SDD approximation that % either has K terms or such that norm(A - X * diag(D) * Y', 'fro') < R. % The default is zero. % % [...] = SDD(A, K, TOL, L, R, C) sets the choice for initializing y in % the inner iterations as follows: % % C = 1 Threshold % C = 2 Cycling % C = 3, All elements of y are set to 1. % C = 4, Every 100th element of y is set to 1 starting with 1. % % Default is C = 1. % % %SDDPACK: Software for the Semidiscrete Decomposition. %Copyright (c) 1999 Tamara G. Kolda and Dianne P. O'Leary. % This program is free software; you can redistribute it and/or modify it % under the terms of the GNU General Public License as published by the Free % Software Foundation; either version 2 of the License, or (at your option) % any later version. % % This program is distributed in the hope that it will be useful, but % WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY % or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License % for more details. % % You should have received a copy of the GNU General Public License along % with this program; if not, write to the Free Software Foundation, Inc., 59 % Temple Place - Suite 330, Boston, MA 02111-1307, USA. %%% Check Input Arguments if ~exist('A') error('Incorrent number of inputs.'); end if ~exist('kmax') kmax = 100; end if ~exist('alphamin') alphamin = 0.01; end if ~exist('lmax') lmax = 100; end if ~exist('rhomin') rhomin = 0; else rhomin = rhomin^2; end if ~exist('yinit') yinit = 1; end idx = 1; % only used for yinit = 1 %%% Initialization [m, n] = size(A); % size of A rho = norm(A, 'fro')^2; % squared residual norm iitssav = []; %%% Outer Loop for k = 1 : kmax %%% Initialize y for Inner Loop switch yinit, case 1, % Threshold s = zeros(m, 1); iits = 0; while (norm(s)^2) < (rho / n) y = zeros(n, 1); y(idx) = 1; s = A * y; if k > 1 s = s - (xsav * (dsav .* (ysav' * y))); end idx = mod(idx, n) + 1; iits = iits + 1; end iitssav(k) = iits; case 2, % Cycling Periodic Ones y = zeros(n, 1); y(mod(k-1,n)+1) = 1; case 3, % All Ones y = ones(n, 1); case 4, % Periodic Ones y = zeros(n, 1); for i = 1 : 100 : n y(i) = 1; end otherwise, error('Invalid choice for C.'); end % switch on yinit %%% Inner Loop for l = 1 : lmax %%% Fix y and Solve for x s = A * y; if k > 1 s = s - (xsav * (dsav .* (ysav' * y))); end [x, xcnt] = sddsolve(s, m); %%% Fix x and Solve for y s = A' * x; if (k > 1) s = s - (ysav * (dsav .* (xsav' * x))); end [y, ycnt, fmax] = sddsolve(s, n); %%% Check Progress d = sqrt(fmax * ycnt) / (ycnt * xcnt); beta = d^2 * ycnt * xcnt; if (l > 1) alpha = (beta - betabar) / betabar; if (alpha <= alphamin) break end end betabar = beta; end % l-loop %%% Save xsav(:, k) = x; ysav(:, k) = y; dsav(k, 1) = d; rho = max([rho - beta, 0]); rhosav(k) = rho; itssav(k) = l; %%% Threshold Test if (rho <= rhomin) break; end end % k-loop return %----------------------------------------------------------------------% function [x, imax, fmax] = sddsolve(s, m) %SDDSOLVE Solve SDD subproblem % % [X] = SDDSOLVE(S, M) computes max (X' * S) / (X' * X) where M is the % size of S. % % [X, I] = SDDSOLVE(S, M) additionally returns number of nonzeros in X. % % [X, I, F] = SDDSOLVE(S, M) additionally returns value of function at the % optimum. % %For use with SDD. %Tamara G. Kolda, Oak Ridge National Laboratory, 1999. %Dianne P. O'Leary, University of Maryland and ETH, 1999. for i = 1 : m if s(i) < 0 x(i, 1) = -1; s(i) = -s(i); else x(i, 1) = 1; end end [sorts, indexsort] = sort(-s); sorts = -sorts; clear f f(1) = sorts(1); for i = 2 : m f(i) = sorts(i) + f(i - 1); end f = (f.^2) ./ [1:m]; imax = 1; fmax = f(1); for i = 2 : m if f(i) >= fmax imax = i; fmax = f(i); end end for i = (imax + 1) : m x(indexsort(i)) = 0; end return SHAR_EOF fi # end of overwriting check if test -f 'sddfun.m' then echo shar: will not over-write existing file "'sddfun.m'" else cat << "SHAR_EOF" > 'sddfun.m' function sddfun(A) % This is a test to compare the SDD with the SVD and to compare different % SDD starting strategies. It computes the rank of the matrix A and its % SVD. It then computes a k-term SDD with each of four different starting % strategies where k is the rank of the matrix. % % A table and four plots provide comparisons. The table compares the % different starting strategies with respect to final relative residual, % average number of inner iterations, and sparsity of factors. The plots % compare residual norm vs. iteration and residual norm vs. storage for the % SVD and the 4 SDDs. We also compare the singular values with the (scaled) % diagonal value from the SDDs. Lastly, we compare work vs. the residual % norm for each SDD method. % % %SDDPACK: Software for the Semidiscrete Decomposition. %Copyright (c) 1999 Tamara G. Kolda and Dianne P. O'Leary. % This program is free software; you can redistribute it and/or modify it % under the terms of the GNU General Public License as published by the Free % Software Foundation; either version 2 of the License, or (at your option) % any later version. % % This program is distributed in the hope that it will be useful, but % WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY % or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License % for more details. % % You should have received a copy of the GNU General Public License along % with this program; if not, write to the Free Software Foundation, Inc., 59 % Temple Place - Suite 330, Boston, MA 02111-1307, USA. %---------------------------------------------------------------------- % Initialization %---------------------------------------------------------------------- [m, n] = size(A); % size of A rho0 = sum(sum(A .* A)); % 2-norm of A %---------------------------------------------------------------------- % SVD Stuff %---------------------------------------------------------------------- fprintf(1, '\n'); disp('Computing SVD'); [U, S, V] = svd(full(A)); % svd of A S = diag(S); % diagonalize S k = size(S,1); % rank of A fprintf(1, '\n'); fprintf(1, 'Rank of matrix: %d\n', k); clear svdrho % residual or SVD svdrho(k) = 0; % final residual for i = k-1 : -1 : 1 % working backwards... svdrho(i) = svdrho(i+1) + S(i+1)^2; end svdstor = 4 * (m + n + 1) * [1 : k]; % storage for SVD %---------------------------------------------------------------------- % SDD Stuff %---------------------------------------------------------------------- fprintf(1, '\n'); disp('Computing SDD with option 1'); [D1, X1, Y1, its1, rho1, iits1] = sdd(A, k, 0.01, 100, 0.0, 1); disp('Computing SDD with option 2'); [D2, X2, Y2, its2, rho2] = sdd(A, k, 0.01, 100, 0.0, 2); disp('Computing SDD with option 3'); [D3, X3, Y3, its3, rho3] = sdd(A, k, 0.01, 100, 0.0, 3); disp('Computing SDD with option 4'); [D4, X4, Y4, its4, rho4] = sdd(A, k, 0.01, 100, 0.0, 4); its1 = its1 + (iits1 - 1) / 2.0; clear Dplus1 for i = 1 : k Dplus1(i) = D1(i) * norm(X1(:,i)) * norm(Y1(:,i)); end clear Dplus2 for i = 1 : k Dplus2(i) = D2(i) * norm(X2(:,i)) * norm(Y2(:,i)); end clear Dplus3 for i = 1 : k Dplus3(i) = D3(i) * norm(X3(:,i)) * norm(Y3(:,i)); end clear Dplus4 for i = 1 : k Dplus4(i) = D4(i) * norm(X4(:,i)) * norm(Y4(:,i)); end sddstor = (4 + .25 * (m + n)) * [1 : k]; % storage for SDD density1 = 100 * (sum(sum(abs(X1))) + sum(sum(abs(Y1)))) / (2 * m * n); density2 = 100 * (sum(sum(abs(X2))) + sum(sum(abs(Y2)))) / (2 * m * n); density3 = 100 * (sum(sum(abs(X3))) + sum(sum(abs(Y3)))) / (2 * m * n); density4 = 100 * (sum(sum(abs(X4))) + sum(sum(abs(Y4)))) / (2 * m * n); clear sits1 sits2 sits3 sits4 sits1(1) = its1(1); sits2(1) = its2(1); sits3(1) = its3(1); sits4(1) = its4(1); for i = 2 : k sits1(i) = sits1(i-1) + its1(i); sits2(i) = sits2(i-1) + its2(i); sits3(i) = sits3(i-1) + its3(i); sits4(i) = sits4(i-1) + its4(i); end %---------------------------------------------------------------------- % Plotting %---------------------------------------------------------------------- c = ['b' 'm' 'r' 'c' 'g']; % colors l = ['- '; ': '; '-.'; '--'; '- ']; % line pattern d = ['o'; '^'; '+'; '*'; 'x']; % dot pattern fprintf(1,'\n'); fprintf(1, 'Method Color Line Dot\n'); fprintf(1, '------ ----- ---- ---\n'); fprintf(1, 'SVD %1s %2s %1s\n', c(5), l(5,:), d(5)); for i = 1:4 fprintf(1, 'SDD-%d %1s %2s %1s\n', i, c(i), l(i,:), d(i)); end fprintf(1,'\n'); %%% Residual Norms vs. No. of Terms subplot(2,2,1); plot([0:k], sqrt([rho0 svdrho]/rho0), [c(5) l(5,:)]); hold on; plot([0:k], sqrt([rho0 rho1]/rho0), [c(1) l(1,:)]); plot([0:k], sqrt([rho0 rho2]/rho0), [c(2) l(2,:)]); plot([0:k], sqrt([rho0 rho3]/rho0), [c(3) l(3,:)]); plot([0:k], sqrt([rho0 rho4]/rho0), [c(4) l(4,:)]); hold off; title('Residual Norms vs. No. of Terms'); %%% Singular vs. SDD values subplot(2,2,2); plot([1:k], sqrt(S), [c(5) d(5)]); hold on; plot([1:k], sqrt(Dplus1), [c(1) d(1)]); plot([1:k], sqrt(Dplus2), [c(2) d(2)]); plot([1:k], sqrt(Dplus3), [c(3) d(3)]); plot([1:k], sqrt(Dplus4), [c(4) d(4)]); hold off; title('Singular vs. SDD values'); %%% Residual Norm vs. Storage subplot(2, 2, 3); semilogx(svdstor, sqrt(svdrho/rho0), [c(5) l(5,:)]); hold on; semilogx(sddstor, sqrt(rho1/rho0), [c(1) l(1,:)]); semilogx(sddstor, sqrt(rho2/rho0), [c(2) l(2,:)]); semilogx(sddstor, sqrt(rho3/rho0), [c(3) l(3,:)]); semilogx(sddstor, sqrt(rho4/rho0), [c(4) l(4,:)]); hold off; title('Residual Norms vs. Storage'); %%% SDD Inner Iterations subplot(2, 2, 4); plot(sits1, sqrt([rho1]/rho0), [c(1) l(1,:)]); hold on; plot(sits2, sqrt([rho2]/rho0), [c(2) l(2,:)]); plot(sits3, sqrt([rho3]/rho0), [c(3) l(3,:)]); plot(sits4, sqrt([rho4]/rho0), [c(4) l(4,:)]); hold off; title('Residual Norms vs. No. Inner Iterations'); fprintf(1, 'Method Rel Resid Inn Its Density\n'); fprintf(1, '------ --------- ------- -------\n'); fprintf(1, 'SDD-1 %5.2f %5.2f %5.2f\n', 100 * sqrt(rho1(k)/rho0), mean(its1), density1); fprintf(1, 'SDD-2 %5.2f %5.2f %5.2f\n', 100 * sqrt(rho2(k)/rho0), mean(its2), density2); fprintf(1, 'SDD-3 %5.2f %5.2f %5.2f\n', 100 * sqrt(rho3(k)/rho0), mean(its3), density3); fprintf(1, 'SDD-4 %5.2f %5.2f %5.2f\n', 100 * sqrt(rho4(k)/rho0), mean(its4), density4); SHAR_EOF fi # end of overwriting check if test -f 'sddtensor.m' then echo shar: will not over-write existing file "'sddtensor.m'" else cat << "SHAR_EOF" > 'sddtensor.m' function [dsav, xsav, itssav, rhosav] = ... sddtensor(A, kmax, alphamin, lmax, rhomin) %SDDTENSOR Semidiscrete Tensor Decomposition. % [D, X] = SDDTENSOR(A) produces discrete matrices stored in the cell % array X and a vector D that can be used to generate the 10-term tensor % SDD that approximates A. The X cell array is formatted as follows: the % first cell holds the component of each decomposed vectors from the first % dimension, the second cell goes with the second dimension, and so % on. The kth term of the SDD would be given by D(k) times the outer % product of X{1}(:,K) x X{2}(:,k) x ... x X{n}(:,k) where n is the order % of A. If A were a simple matrix, then X{1} and X{2} would be equivalent, % respectively, to the X and Y generated by the regular SDD routine. % % [D, X, ITS] = SDDTENSOR(...) also returns the number of inner % iterations for each outer iteration. % % [D, X, ITS, RHO] = SDDTENSOR(...) also returns a vector RHO containing % the norm-squared of the residual after each outer iteration. % % [...] = SDDTENSOR(A, K) produces a K-term tensor SDD. The default is 10. % % [...] = SDDTENSOR(A, K, TOL) stops the inner iterations after the % improvement is less than TOL. The default is 0.01. % % [...] = SDDTENSOR(A, K, TOL, L) specifies that the maximum number of % inner iterations is L. The default is 10. % % [...] = SDDTENSOR(A, K, TOL, L, R) produces an SDD approximation that % either has K terms or such that norm(A - B, 'fro') < R where B is the % tensor SDD approximation. The default is zero. % % %SDDPACK: Software for the Semidiscrete Decomposition. %Copyright (c) 1999 Tamara G. Kolda and Dianne P. O'Leary. % This program is free software; you can redistribute it and/or modify it % under the terms of the GNU General Public License as published by the Free % Software Foundation; either version 2 of the License, or (at your option) % any later version. % % This program is distributed in the hope that it will be useful, but % WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY % or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License % for more details. % % You should have received a copy of the GNU General Public License along % with this program; if not, write to the Free Software Foundation, Inc., 59 % Temple Place - Suite 330, Boston, MA 02111-1307, USA. %%% Check Input Arguments if ~exist('A') error('Incorrect number of inputs.'); end if ~exist('kmax') kmax = 10; end if ~exist('alphamin') alphamin = 0.01; end if ~exist('lmax') lmax = 10; end if ~exist('rhomin') rhomin = 0; else rhomin = rhomin^2; end %%% Initialization n = ndims(A); % order of A m = size(A); % vector of dimensions of A tmp = A .* A; % compute residual norm squared for j = 1 : n tmp = sum(tmp); end rho = tmp; clear tmp; iitssav = []; %%% Outer Loop for k = 1 : kmax %%% Initialize y for Inner Loop x = cell(n,1); for j = 1 : n x{j} = ones(m(j),1); end %%% Inner Loop for l = 1 : lmax for j = 1 : n s = product(A, x, j); [x{j}, xcnt(j), tmp] = sddtsolve(s, m(j)); end %%% Check Progress Axsqr = tmp * xcnt(n); beta = Axsqr / prod(xcnt); if (l > 1) alpha = (beta - betabar) / betabar; if (alpha <= alphamin) break end end betabar = beta; end % l-loop %%% Save d = sqrt(Axsqr) / prod(xcnt); A = A - d * expand(x); for j = 1 : n xsav{j}(:,k) = x{j}; end dsav(k, 1) = d; rho = max([rho - beta, 0]); rhosav(k) = rho; itssav(k) = l; %%% Threshold Test if (rho < rhomin) break; end end % k-loop return %----------------------------------------------------------------------% function B = expand(x) %EXPAND Expand a decomposed tensor to a full tensor. % % B = EXPAND(X) returns B, a full tensor, that is the result of the outer % product of all the elements of X. % %For use with SDDTENSOR. %Tamara G. Kolda, Oak Ridge National Laboratory, 1999. %Dianne P. O'Leary, University of Maryland and ETH, 1999. n = size(x, 1); for j = 1 : n m(j) = size(x{j}, 1); end tmp = x{1}; for j = 2 : n tmp = tmp * x{j}'; tmp = reshape(tmp, prod(m(1:j)), 1); end B = reshape(tmp, m); %----------------------------------------------------------------------% function s = product(A,x,idx) %PRODUCT Product (contracted) of a tensor and decomposed tensor. % % S = PRODUCT(A,X) computes the inner product of a tesnor A with a % decomposed tensor X. S is a scalar. % % S = PRODUCT(A,X,I) computes the contracted inner product of a tensor A % with a decomposed tensor X without its Ith component. % %For use with SDDTENSOR. %Tamara G. Kolda, Oak Ridge National Laboratory, 1999. %Dianne P. O'Leary, University of Maryland and ETH, 1999. if exist('idx') str = 'tmp = squeeze(A('; for i = 1 : ndims(A) if i == idx str = [str 'i']; else str = [str ':']; end if i == ndims(A) str = [str '));']; else str = [str ',']; end end jj = [1 : idx-1, idx+1 : ndims(A)]; for i = 1 : size(A, idx) eval(str); if ndims(A) == 2 n = 1; m = length(tmp); else n = ndims(tmp); m = size(tmp); end for j = n : -1 : 1 tmp = reshape (tmp, prod(m(1 : j-1)), m(j)); tmp = tmp * x{jj(j)}; end s(i) = tmp; end else tmp = A; n = ndims(tmp); m = size(tmp); for j = n : -1 : 1 tmp = reshape (tmp, prod(m(1 : j-1)), m(j)); tmp = tmp * x{j}; end s = tmp; end %----------------------------------------------------------------------% function [x, imax, fmax] = sddtsolve(s, m) %SDDTSOLVE Solve SDD subproblem % [X] = SDDTSOLVE(S, M) computes max(X'S)/(X'X) where M is the size of S. % % [X, I] = SDDTSOLVE(S, M) additionally returns number of nonzeros in X. % % [X, I, F] = SDDTSOLVE(S, M) additionally returns value of function at % the optimum. % %For use with SDDTENSOR. %Tamara G. Kolda, Oak Ridge National Laboratory, 1999. %Dianne P. O'Leary, University of Maryland and ETH, 1999. for i = 1 : m if s(i) < 0 x(i, 1) = -1; s(i) = -s(i); else x(i, 1) = 1; end end [sorts, indexsort] = sort(-s); sorts = -sorts; clear f f(1) = sorts(1); for i = 2 : m f(i) = sorts(i) + f(i - 1); end f = (f.^2) ./ [1:m]; imax = 1; fmax = f(1); for i = 2 : m if f(i) >= fmax imax = i; fmax = f(i); end end for i = (imax + 1) : m x(indexsort(i)) = 0; end return SHAR_EOF fi # end of overwriting check if test -f 'sddweight.m' then echo shar: will not over-write existing file "'sddweight.m'" else cat << "SHAR_EOF" > 'sddweight.m' function [dsav, xsav, ysav, itssav, rhosav, iitssav] = ... sddweight(A, W, kmax, alphamin, lmax, rhomin, yinit) %SDDWEIGHT Weighted Semidiscrete Decomposition. % % [D, X, Y] = SDDWEIGHT(A, W) produces discrete matrices X and Y and a % vector D such that X *diag(D) * Y' is the weighted SDD of rank 100 that % approximates A in the norm ||Z||^2 = sum(sum(A .* A .* W)). % % [D, X, Y, ITS] = SDDWEIGHT(...) also returns the number of inner % iterations for each outer iteration. % % [D, X, Y, ITS, RHO] = SDDWEIGHT(...) also returns the norm-squared of % the residual after each outer iteration. % % [D, X, Y, ITS, RHO, IITS] = SDDWEIGHT(...) also returns the number of % extra matrix-vector multiplies used in the initialization of each inner % iteration when using C=3 (see below). % % [...] = SDDWEIGHT(A, W, K) produces a rank-k SDDWEIGHT. The default % rank is 100. % % [...] = SDDWEIGHT(A, W, K, TOL) stops the inner iterations after the % improvement is less than TOL. The default value is 0.01. % % [...] = SDDWEIGHT(A, W, K, TOL, L) specifies that the maximum number of % inner iterations is L. The default is 100. % % [...] = SDDWEIGHT(A, W, K, TOL, L, R) produces an SDDWEIGHT % approximation that is either of rank K or such that % || A - X * diag(D) * Y' ||_W < R. The default is zero. % % [...] = SDDWEIGHT(A, W, K, TOL, L, R, C) sets the choice for % initializing y in the inner iterations as follows: % % C = 1 Threshold % C = 2 Cycling % C = 3, All elements of y are set to 1. % C = 4, Every 100th element of y is set to 1 starting with 1. % % Default is C = 1. % % %SDDPACK: Software for the Semidiscrete Decomposition. %Copyright (c) 1999 Tamara G. Kolda and Dianne P. O'Leary. % This program is free software; you can redistribute it and/or modify it % under the terms of the GNU General Public License as published by the Free % Software Foundation; either version 2 of the License, or (at your option) % any later version. % % This program is distributed in the hope that it will be useful, but % WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY % or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License % for more details. % % You should have received a copy of the GNU General Public License along % with this program; if not, write to the Free Software Foundation, Inc., 59 % Temple Place - Suite 330, Boston, MA 02111-1307, USA. %%% Check Input Arguments if ~exist('A') error('Incorrect number of inputs.'); end if ~exist('kmax') kmax = 100; end if ~exist('alphamin') alphamin = 0.01; end if ~exist('lmax') lmax = 100; end if ~exist('rhomin') rhomin = 0; else rhomin = rhomin^2; end if ~exist('yinit') yinit = 1; end idx = 1; % only used for yinit = 2 %%% Initialization [m, n] = size(A); % size of A rho = sum(sum(A .* A .* W)); % squared residual norm iitssav = []; %%% Outer Loop for k = 1 : kmax %%% Initialize y for Inner Loop switch yinit(1), % All Ones case 1, % Threshold snorm = 0; iits = 0; while snorm < (rho / n) y = zeros(n, 1); y(idx) = 1; snorm = sum((A(:,idx) .* A(:,idx) .* W(:,idx))); idx = mod(idx, n) + 1; iits = iits + 1; end iitssav(k) = iits; case 2, % Cycling Periodic Ones y = zeros(n, 1); y(mod(k-1,n)+1) = 1; case 3, y = ones(n, 1); case 4, % Periodic Ones y = zeros(n, 1); for i = 1 : 100 : n y(i) = 1; end otherwise, error('Invalid choice for C.'); end % switch on yinit %%% Inner Loop for l = 1 : lmax %%% Fix y and Solve for x s = (A .* W) * y; v = W *(y .* y); [x, xcnt] = solveweight(s, v, m); %%% Fix x and Solve for y s = (A .* W)' * x; v = W' * (x .* x); [y, ycnt] = solveweight(s, v, n); %%% Check Progress beta = (s' * y)^2 / (v' * (y .* y)); if (l > 1) alpha = (beta - betabar) / betabar; if (alpha <= alphamin) break end end betabar = beta; end % l-loop %%% Save d = (s' * y) / (v' * (y .* y)); xsav(:, k) = x; ysav(:, k) = y; dsav(k, 1) = d; A = A - x * d * y'; rho = rho - beta; rhosav(k) = rho; itssav(k) = l; %%% Threshold Test if (rho < rhomin) break; end end % k-loop return %----------------------------------------------------------------------% function [x, imax] = solveweight(s, v, m) %SOLVEWEIGHT Solve SDDWEIGHT subproblem % [X] = SOLVE(S, V, M) computes max(X'S)/(X.*X)'*V where M is the size of % S. % % [X, I] = SOLVE(S, V, M) additionally returns number of nonzeros in X. % %For use with SDDWEIGHT. %Tamara G. Kolda, Oak Ridge National Laboratory, 1999. %Dianne P. O'Leary, University of Maryland and ETH, 1999. if s == 0, error('s is zero'), end; for i = 1 : m if s(i) < 0 x(i, 1) = -1; s(i) = -s(i); ratio(i) = -s(i)/v(i); elseif s(i) > 0 x(i, 1) = 1; ratio(i) = -s(i)/v(i); else x(i, 1) = 0; ratio(i) = 0; end end [sorts, indexsort] = sort(ratio); clear f num = s(indexsort(1)); den = v(indexsort(1)); f(1) = num^2/den; for i = 2 : m num = num + s(indexsort(i)); den = den + v(indexsort(i)); f(i) = num^2/den; end imax = 1; fmax = f(1); for i = 2 : m if f(i) >= fmax imax = i; fmax = f(i); end end for i = (imax + 1) : m x(indexsort(i)) = 0; end return SHAR_EOF fi # end of overwriting check if test -f 'sddweightfun.m' then echo shar: will not over-write existing file "'sddweightfun.m'" else cat << "SHAR_EOF" > 'sddweightfun.m' function sddweightfun(A, W) % This is a test to compare the SDDWEIGHT with different starting strategies. It % computes a k-term SDD with each of four different starting strategies % where k is the rank of the matrix. % % A table and four plots provide comparisons. The table compares the % different starting strategies with respect to final relative residual, % average number of inner iterations, and sparsity of factors. The plots % compare residual norm vs. iteration and residual norm vs. storage for the % SVD and the 4 SDDs. We also compare the (scaled) diagonal value from the % SDDs. Lastly, we compare work vs. the residual norm for each SDD method. % %SDDPACK: Software for the Semidiscrete Decomposition. %Copyright (c) 1999 Tamara G. Kolda and Dianne P. O'Leary. % This program is free software; you can redistribute it and/or modify it % under the terms of the GNU General Public License as published by the Free % Software Foundation; either version 2 of the License, or (at your option) % any later version. % % This program is distributed in the hope that it will be useful, but % WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY % or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License % for more details. % % You should have received a copy of the GNU General Public License along % with this program; if not, write to the Free Software Foundation, Inc., 59 % Temple Place - Suite 330, Boston, MA 02111-1307, USA. %---------------------------------------------------------------------- % Initialization %---------------------------------------------------------------------- A = full(A); W = full(W); [m, n] = size(A); % size of A rho0 = sum(sum(A .* A .* W)); % 2-norm of A %---------------------------------------------------------------------- % Rank Stuff %---------------------------------------------------------------------- fprintf(1, '\n'); k = rank(A .* W); % rank of A .* W fprintf(1, '\n'); fprintf(1, 'Rank of matrix: %d\n', k); %---------------------------------------------------------------------- % SDD Stuff %---------------------------------------------------------------------- fprintf(1, '\n'); disp('Computing SDDWEIGHT with option 1'); [D1, X1, Y1, its1, rho1, iits1] = sddweight(A, W, k, 0.01, 100, 0.0, 1); disp('Computing SDDWEIGHT with option 2'); [D2, X2, Y2, its2, rho2] = sddweight(A, W, k, 0.01, 100, 0.0, 2); disp('Computing SDDWEIGHT with option 3'); [D3, X3, Y3, its3, rho3] = sddweight(A, W, k, 0.01, 100, 0.0, 3); disp('Computing SDDWEIGHT with option 4'); [D4, X4, Y4, its4, rho4] = sddweight(A, W, k, 0.01, 100, 0.0, 4); its1 = its1 + (iits1 - 1) / 2.0; clear Dplus1 for i = 1 : k Dplus1(i) = D1(i) * norm(X1(:,i)) * norm(Y1(:,i)); end clear Dplus2 for i = 1 : k Dplus2(i) = D2(i) * norm(X2(:,i)) * norm(Y2(:,i)); end clear Dplus3 for i = 1 : k Dplus3(i) = D3(i) * norm(X3(:,i)) * norm(Y3(:,i)); end clear Dplus4 for i = 1 : k Dplus4(i) = D4(i) * norm(X4(:,i)) * norm(Y4(:,i)); end sddstor = (4 + .25 * (m + n)) * [1 : k]; % storage for SDD density1 = 100 * (sum(sum(abs(X1))) + sum(sum(abs(Y1)))) / (2 * m * n); density2 = 100 * (sum(sum(abs(X2))) + sum(sum(abs(Y2)))) / (2 * m * n); density3 = 100 * (sum(sum(abs(X3))) + sum(sum(abs(Y3)))) / (2 * m * n); density4 = 100 * (sum(sum(abs(X4))) + sum(sum(abs(Y4)))) / (2 * m * n); clear sits1 sits2 sits3 sits4 sits1(1) = its1(1); sits2(1) = its2(1); sits3(1) = its3(1); sits4(1) = its4(1); for i = 2 : k sits1(i) = sits1(i-1) + its1(i); sits2(i) = sits2(i-1) + its2(i); sits3(i) = sits3(i-1) + its3(i); sits4(i) = sits4(i-1) + its4(i); end %---------------------------------------------------------------------- % Plotting %---------------------------------------------------------------------- c = ['b' 'm' 'r' 'c']; % colors l = ['- '; ': '; '-.'; '--']; % line pattern d = ['o'; '^'; '+'; '*']; % dot pattern fprintf(1,'\n'); fprintf(1, ' Method Color Line Dot\n'); fprintf(1, '----------- ----- ---- ---\n'); for i = 1:4 fprintf(1, 'SDDWEIGHT-%d %1s %2s %1s\n', i, c(i), l(i,:), d(i)); end fprintf(1,'\n'); %%% Residual Norms vs. Iteration subplot(2,2,1); plot([0:k], sqrt([rho0 rho1]/rho0), [c(1) l(1,:)]); hold on; plot([0:k], sqrt([rho0 rho2]/rho0), [c(2) l(2,:)]); plot([0:k], sqrt([rho0 rho3]/rho0), [c(3) l(3,:)]); plot([0:k], sqrt([rho0 rho4]/rho0), [c(4) l(4,:)]); hold off; title('Residual Norms vs. No. of Terms'); %%% SDD values subplot(2,2,2); plot([1:k], sqrt(Dplus1), [c(1) d(1)]); hold on; plot([1:k], sqrt(Dplus2), [c(2) d(2)]); plot([1:k], sqrt(Dplus3), [c(3) d(3)]); plot([1:k], sqrt(Dplus4), [c(4) d(4)]); hold off; title('SDD values'); %%% Residual Norm vs. Storage subplot(2, 2, 3); semilogx(sddstor, sqrt(rho1/rho0), [c(1) l(1,:)]); hold on; semilogx(sddstor, sqrt(rho2/rho0), [c(2) l(2,:)]); semilogx(sddstor, sqrt(rho3/rho0), [c(3) l(3,:)]); semilogx(sddstor, sqrt(rho4/rho0), [c(4) l(4,:)]); hold off; title('Residual Norms vs. Storage'); %%% SDD Inner Iterations subplot(2, 2, 4); plot(sits1, sqrt([rho1]/rho0), [c(1) l(1,:)]); hold on; plot(sits2, sqrt([rho2]/rho0), [c(2) l(2,:)]); plot(sits3, sqrt([rho3]/rho0), [c(3) l(3,:)]); plot(sits4, sqrt([rho4]/rho0), [c(4) l(4,:)]); hold off; title('Residual Norms vs. No. Inner Iterations'); fprintf(1, ' Method Rel Resid Inn Its Density\n'); fprintf(1, '----------- --------- ------- -------\n'); fprintf(1, 'SDDWEIGHT-1 %5.2f %5.2f %5.2f\n', 100 * sqrt(rho1(k)/rho0), mean(its1), density1); fprintf(1, 'SDDWEIGHT-2 %5.2f %5.2f %5.2f\n', 100 * sqrt(rho2(k)/rho0), mean(its2), density2); fprintf(1, 'SDDWEIGHT-3 %5.2f %5.2f %5.2f\n', 100 * sqrt(rho3(k)/rho0), mean(its3), density3); fprintf(1, 'SDDWEIGHT-4 %5.2f %5.2f %5.2f\n', 100 * sqrt(rho4(k)/rho0), mean(its4), density4); SHAR_EOF fi # end of overwriting check if test ! -d 'testdata' then mkdir 'testdata' fi cd 'testdata' if test -f 'bfw62a.mtx' then echo shar: will not over-write existing file "'bfw62a.mtx'" else cat << "SHAR_EOF" > 'bfw62a.mtx' %%MatrixMarket matrix coordinate real general 62 62 450 1 1 7.6107080000000e-01 4 1 1.5781500000000e-01 18 1 -2.4489800000000e-01 20 1 1.3286800000000e-02 22 1 -6.0468600000000e-01 24 1 1.3286800000000e-02 25 1 -2.4489800000000e-01 2 2 7.6107080000000e-01 3 2 1.2909240000000e-01 6 2 7.8907500000000e-02 15 2 -3.0234300000000e-01 19 2 -4.8979600000000e-01 21 2 1.3286800000000e-02 29 2 -3.0234300000000e-01 30 2 1.3286800000000e-02 2 3 1.2909240000000e-01 3 3 1.5221400000000e+00 5 3 1.2909240000000e-01 6 3 2.3349520000000e-01 7 3 3.8466680000000e-01 16 3 1.3286800000000e-02 19 3 -4.8979600000000e-01 21 3 -6.0468600000000e-01 26 3 -4.8979600000000e-01 28 3 1.3286800000000e-02 29 3 1.3286800000000e-02 32 3 9.2069420000000e-01 34 3 -6.0468600000000e-01 36 3 1.3286800000000e-02 1 4 1.5781500000000e-01 4 4 1.5221400000000e+00 8 4 1.5781500000000e-01 17 4 1.3286800000000e-02 20 4 -4.8979600000000e-01 22 4 -6.0468600000000e-01 25 4 1.3286800000000e-02 27 4 -4.8979600000000e-01 33 4 1.3286800000000e-02 35 4 -6.0468600000000e-01 37 4 1.3286800000000e-02 3 5 1.2909240000000e-01 5 5 7.6107090000000e-01 7 5 2.3349520000000e-01 9 5 3.0575930000000e-01 23 5 1.3286800000000e-02 26 5 -4.8979600000000e-01 28 5 -3.0234300000000e-01 34 5 1.3286800000000e-02 38 5 9.2069420000000e-01 40 5 -3.0234300000000e-01 2 6 7.8907500000000e-02 3 6 6.6434200000000e-03 6 6 1.6339700000000e+00 7 6 1.2527530000000e-01 10 6 1.8850680000000e-01 19 6 1.3286800000000e-02 29 6 -3.0234300000000e-01 32 6 -4.7452800000000e-01 34 6 1.3286800000000e-02 41 6 -7.4074100000000e-01 42 6 1.3286800000000e-02 3 7 1.5781500000000e-01 5 7 6.6434200000000e-03 6 7 -8.9839500000000e-03 7 7 3.6707200000000e+00 9 7 1.2527530000000e-01 10 7 6.6434200000000e-03 11 7 3.7701370000000e-01 26 7 1.3286800000000e-02 30 7 1.3286800000000e-02 32 7 6.2509500000000e-02 34 7 -6.0468600000000e-01 38 7 -4.7452800000000e-01 40 7 1.3286800000000e-02 41 7 1.3286800000000e-02 44 7 1.3286800000000e-02 46 7 -1.4814800000000e+00 48 7 1.3286800000000e-02 4 8 1.5781500000000e-01 6 8 -1.2083300000000e-01 8 8 2.7123900000000e+00 9 8 1.2083330000000e-01 12 8 3.7701370000000e-01 27 8 1.3286800000000e-02 31 8 1.3286800000000e-02 32 8 4.8333330000000e-01 33 8 -8.4489800000000e-01 35 8 -6.0468600000000e-01 38 8 -4.8333300000000e-01 39 8 -8.4489800000000e-01 45 8 1.3286800000000e-02 47 8 -1.4814800000000e+00 49 8 1.3286800000000e-02 5 9 7.8907500000000e-02 7 9 -8.9839500000000e-03 9 9 2.0367500000000e+00 11 9 6.6434200000000e-03 13 9 1.8850680000000e-01 36 9 1.3286800000000e-02 38 9 6.2509500000000e-02 40 9 -3.0234300000000e-01 46 9 1.3286800000000e-02 50 9 1.3286800000000e-02 52 9 -7.4074100000000e-01 6 10 2.8109940000000e-01 7 10 9.9236000000000e-02 10 10 1.9513200000000e+00 11 10 3.0664330000000e-01 32 10 3.8365720000000e-01 41 10 -7.4074100000000e-01 44 10 -1.2000000000000e+00 46 10 1.3286800000000e-02 53 10 -7.4074100000000e-01 54 10 1.3286800000000e-02 7 11 4.6960630000000e-01 9 11 9.9236000000000e-02 10 11 3.0664330000000e-01 11 11 3.9026400000000e+00 13 11 3.0664330000000e-01 38 11 3.8365720000000e-01 42 11 1.3286800000000e-02 44 11 -1.2000000000000e+00 46 11 -1.4814800000000e+00 50 11 -1.2000000000000e+00 52 11 1.3286800000000e-02 53 11 1.3286800000000e-02 57 11 -1.4814800000000e+00 59 11 1.3286800000000e-02 8 12 3.7701370000000e-01 12 12 3.9026400000000e+00 14 12 3.7701370000000e-01 39 12 1.3286800000000e-02 43 12 1.3286800000000e-02 45 12 -1.2000000000000e+00 47 12 -1.4814800000000e+00 51 12 -1.2000000000000e+00 56 12 1.3286800000000e-02 58 12 -1.4814800000000e+00 60 12 1.3286800000000e-02 9 13 1.8850680000000e-01 11 13 3.0664330000000e-01 13 13 1.9513200000000e+00 48 13 1.3286800000000e-02 50 13 -1.2000000000000e+00 52 13 -7.4074100000000e-01 57 13 1.3286800000000e-02 62 13 -7.4074100000000e-01 12 14 3.7701370000000e-01 14 14 1.9513200000000e+00 51 14 1.3286800000000e-02 55 14 1.3286800000000e-02 56 14 -6.0000000000000e-01 58 14 -1.4814800000000e+00 61 14 -6.0000000000000e-01 2 15 -3.0234300000000e-01 15 15 9.8818740000000e-01 16 15 -5.4294300000000e-01 3 16 1.3286800000000e-02 15 16 -5.4294300000000e-01 16 16 1.9763700000000e+00 19 16 -6.5783400000000e-01 21 16 -5.4294300000000e-01 4 17 1.3286800000000e-02 17 17 1.9763700000000e+00 18 17 -6.5783400000000e-01 20 17 -6.5783400000000e-01 22 17 -5.4294300000000e-01 1 18 -2.4489800000000e-01 17 18 -6.5783400000000e-01 18 18 9.8818740000000e-01 2 19 -4.8979600000000e-01 3 19 -4.8979600000000e-01 6 19 1.3286800000000e-02 16 19 -6.5783400000000e-01 19 19 1.9763700000000e+00 21 19 -5.3147400000000e-02 29 19 -5.3147400000000e-02 30 19 -6.5783400000000e-01 1 20 1.3286800000000e-02 4 20 -4.8979600000000e-01 17 20 -6.5783400000000e-01 20 20 1.9763700000000e+00 22 20 -5.3147400000000e-02 31 20 -6.5783400000000e-01 2 21 1.3286800000000e-02 3 21 -6.0468600000000e-01 16 21 -5.4294300000000e-01 19 21 -5.3147400000000e-02 21 21 1.9763700000000e+00 23 21 -5.4294300000000e-01 1 22 -6.0468600000000e-01 4 22 -6.0468600000000e-01 17 22 -5.4294300000000e-01 20 22 -5.3147400000000e-02 22 22 1.9763700000000e+00 24 22 -5.4294300000000e-01 25 22 -5.3147400000000e-02 5 23 1.3286800000000e-02 21 23 -5.4294300000000e-01 23 23 1.9763700000000e+00 26 23 -6.5783400000000e-01 28 23 -5.4294300000000e-01 1 24 1.3286800000000e-02 22 24 -5.4294300000000e-01 24 24 1.9763700000000e+00 25 24 -6.5783400000000e-01 27 24 -6.5783400000000e-01 1 25 -2.4489800000000e-01 4 25 1.3286800000000e-02 22 25 -5.3147400000000e-02 24 25 -6.5783400000000e-01 25 25 9.8818740000000e-01 3 26 -4.8979600000000e-01 5 26 -4.8979600000000e-01 7 26 1.3286800000000e-02 23 26 -6.5783400000000e-01 26 26 1.9763700000000e+00 28 26 -5.3147400000000e-02 34 26 -5.3147400000000e-02 36 26 -6.5783400000000e-01 4 27 -4.8979600000000e-01 8 27 1.3286800000000e-02 24 27 -6.5783400000000e-01 27 27 1.9763700000000e+00 35 27 -5.3147400000000e-02 37 27 -6.5783400000000e-01 3 28 1.3286800000000e-02 5 28 -3.0234300000000e-01 23 28 -5.4294300000000e-01 26 28 -5.3147400000000e-02 28 28 9.8818740000000e-01 2 29 -3.0234300000000e-01 3 29 1.3286800000000e-02 6 29 -3.0234300000000e-01 19 29 -5.3147400000000e-02 29 29 9.8818740000000e-01 30 29 -5.4294300000000e-01 2 30 1.3286800000000e-02 6 30 -9.0740700000000e-01 7 30 1.3286800000000e-02 19 30 -6.5783400000000e-01 29 30 -5.4294300000000e-01 30 30 1.9763700000000e+00 32 30 -2.4726500000000e+00 34 30 -5.4294300000000e-01 8 31 1.3286800000000e-02 20 31 -6.5783400000000e-01 31 31 1.9763700000000e+00 33 31 -6.5783400000000e-01 35 31 -5.4294300000000e-01 3 32 1.3286800000000e-02 6 32 6.2509500000000e-02 7 32 -4.7452800000000e-01 10 32 1.3286800000000e-02 30 32 -6.5783400000000e-01 32 32 6.1189300000000e+00 34 32 -5.3147400000000e-02 41 32 -5.3147400000000e-02 42 32 -1.5346300000000e+00 4 33 1.3286800000000e-02 6 33 4.8333330000000e-01 7 33 -4.8333300000000e-01 8 33 -8.4489800000000e-01 31 33 -6.5783400000000e-01 33 33 3.5633700000000e+00 35 33 -5.3147400000000e-02 43 33 -1.5346300000000e+00 3 34 -6.0468600000000e-01 5 34 1.3286800000000e-02 6 34 1.3286800000000e-02 7 34 -1.5120900000000e+00 26 34 -5.3147400000000e-02 30 34 -5.4294300000000e-01 32 34 -1.8679600000000e+00 34 34 1.9763700000000e+00 36 34 -5.4294300000000e-01 4 35 -6.0468600000000e-01 8 35 -6.0468600000000e-01 27 35 -5.3147400000000e-02 31 35 -5.4294300000000e-01 33 35 -5.3147400000000e-02 35 35 1.9763700000000e+00 37 35 -5.4294300000000e-01 3 36 1.3286800000000e-02 7 36 -9.0740700000000e-01 9 36 1.3286800000000e-02 26 36 -6.5783400000000e-01 34 36 -5.4294300000000e-01 36 36 1.9763700000000e+00 38 36 -2.4726500000000e+00 40 36 -5.4294300000000e-01 4 37 1.3286800000000e-02 27 37 -6.5783400000000e-01 35 37 -5.4294300000000e-01 37 37 1.9763700000000e+00 39 37 -6.5783400000000e-01 5 38 1.3286800000000e-02 7 38 6.2509500000000e-02 9 38 -4.7452800000000e-01 11 38 1.3286800000000e-02 36 38 -6.5783400000000e-01 38 38 6.1189300000000e+00 40 38 -5.3147400000000e-02 46 38 -5.3147400000000e-02 48 38 -1.5346300000000e+00 7 39 4.8333330000000e-01 8 39 -8.4489800000000e-01 9 39 -4.8333300000000e-01 12 39 1.3286800000000e-02 37 39 -6.5783400000000e-01 39 39 3.5633700000000e+00 47 39 -5.3147400000000e-02 49 39 -1.5346300000000e+00 5 40 -3.0234300000000e-01 7 40 1.3286800000000e-02 9 40 -1.2097500000000e+00 36 40 -5.4294300000000e-01 38 40 -1.8679600000000e+00 40 40 9.8818740000000e-01 6 41 -1.1111100000000e+00 7 41 1.3286800000000e-02 10 41 -7.4074100000000e-01 32 41 -7.9388800000000e-01 41 41 2.5751900000000e+00 42 41 -1.2531500000000e+00 6 42 1.3286800000000e-02 7 42 -3.7037000000000e-01 11 42 1.3286800000000e-02 32 42 -2.2753700000000e+00 41 42 -1.2531500000000e+00 42 42 5.1503700000000e+00 44 42 -1.5346300000000e+00 46 42 -1.2531500000000e+00 12 43 1.3286800000000e-02 33 43 -1.5346300000000e+00 43 43 5.1503700000000e+00 45 43 -1.5346300000000e+00 47 43 -1.2531500000000e+00 7 44 1.3286800000000e-02 10 44 -1.2000000000000e+00 11 44 -1.2000000000000e+00 42 44 -1.5346300000000e+00 44 44 5.1503700000000e+00 46 44 -5.3147400000000e-02 53 44 -5.3147400000000e-02 54 44 -1.5346300000000e+00 8 45 1.3286800000000e-02 12 45 -1.2000000000000e+00 43 45 -1.5346300000000e+00 45 45 5.1503700000000e+00 47 45 -5.3147400000000e-02 55 45 -1.5346300000000e+00 7 46 -1.8518500000000e+00 9 46 1.3286800000000e-02 10 46 1.3286800000000e-02 11 46 -1.4814800000000e+00 38 46 -7.9388800000000e-01 42 46 -1.2531500000000e+00 44 46 -5.3147400000000e-02 46 46 5.1503700000000e+00 48 46 -1.2531500000000e+00 8 47 -1.4814800000000e+00 12 47 -1.4814800000000e+00 39 47 -5.3147400000000e-02 43 47 -1.2531500000000e+00 45 47 -5.3147400000000e-02 47 47 5.1503700000000e+00 49 47 -1.2531500000000e+00 7 48 1.3286800000000e-02 9 48 -3.7037000000000e-01 13 48 1.3286800000000e-02 38 48 -2.2753700000000e+00 46 48 -1.2531500000000e+00 48 48 5.1503700000000e+00 50 48 -1.5346300000000e+00 52 48 -1.2531500000000e+00 8 49 1.3286800000000e-02 39 49 -1.5346300000000e+00 47 49 -1.2531500000000e+00 49 49 5.1503700000000e+00 51 49 -1.5346300000000e+00 9 50 1.3286800000000e-02 11 50 -1.2000000000000e+00 13 50 -1.2000000000000e+00 48 50 -1.5346300000000e+00 50 50 5.1503700000000e+00 52 50 -5.3147400000000e-02 57 50 -5.3147400000000e-02 59 50 -1.5346300000000e+00 12 51 -1.2000000000000e+00 14 51 1.3286800000000e-02 49 51 -1.5346300000000e+00 51 51 5.1503700000000e+00 58 51 -5.3147400000000e-02 60 51 -1.5346300000000e+00 9 52 -7.4074100000000e-01 11 52 1.3286800000000e-02 13 52 -7.4074100000000e-01 48 52 -1.2531500000000e+00 50 52 -5.3147400000000e-02 52 52 2.5751900000000e+00 10 53 -7.4074100000000e-01 11 53 1.3286800000000e-02 44 53 -5.3147400000000e-02 53 53 2.5751900000000e+00 54 53 -1.2531500000000e+00 10 54 1.3286800000000e-02 44 54 -1.5346300000000e+00 53 54 -1.2531500000000e+00 54 54 5.1503700000000e+00 57 54 -1.2531500000000e+00 14 55 1.3286800000000e-02 45 55 -1.5346300000000e+00 55 55 5.1503700000000e+00 56 55 -1.5346300000000e+00 58 55 -1.2531500000000e+00 12 56 1.3286800000000e-02 14 56 -6.0000000000000e-01 55 56 -1.5346300000000e+00 56 56 2.5751900000000e+00 58 56 -5.3147400000000e-02 11 57 -1.4814800000000e+00 13 57 1.3286800000000e-02 50 57 -5.3147400000000e-02 54 57 -1.2531500000000e+00 57 57 5.1503700000000e+00 59 57 -1.2531500000000e+00 12 58 -1.4814800000000e+00 14 58 -1.4814800000000e+00 51 58 -5.3147400000000e-02 55 58 -1.2531500000000e+00 56 58 -5.3147400000000e-02 58 58 5.1503700000000e+00 60 58 -1.2531500000000e+00 11 59 1.3286800000000e-02 50 59 -1.5346300000000e+00 57 59 -1.2531500000000e+00 59 59 5.1503700000000e+00 62 59 -1.2531500000000e+00 12 60 1.3286800000000e-02 51 60 -1.5346300000000e+00 58 60 -1.2531500000000e+00 60 60 5.1503700000000e+00 61 60 -1.5346300000000e+00 14 61 -6.0000000000000e-01 60 61 -1.5346300000000e+00 61 61 2.5751900000000e+00 13 62 -7.4074100000000e-01 59 62 -1.2531500000000e+00 62 62 2.5751900000000e+00 SHAR_EOF fi # end of overwriting check if test -f 'impcol_c.mtx' then echo shar: will not over-write existing file "'impcol_c.mtx'" else cat << "SHAR_EOF" > 'impcol_c.mtx' %%MatrixMarket matrix coordinate real general 137 137 411 2 1 1.0000000000000e+00 9 1 -1.0000000000000e+00 10 1 1.0000000000000e+00 17 1 1.0000000000000e+00 3 2 1.0000000000000e+00 9 2 -1.0000000000000e+00 11 2 1.0000000000000e+00 18 2 1.0000000000000e+00 4 3 1.0000000000000e+00 9 3 -1.0000000000000e+00 12 3 1.0000000000000e+00 19 3 1.0000000000000e+00 5 4 1.0000000000000e+00 9 4 -1.0000000000000e+00 13 4 1.0000000000000e+00 20 4 1.0000000000000e+00 6 5 1.0000000000000e+00 9 5 -1.0000000000000e+00 14 5 1.0000000000000e+00 21 5 1.0000000000000e+00 7 6 1.0000000000000e+00 9 6 -1.0000000000000e+00 15 6 1.0000000000000e+00 22 6 1.0000000000000e+00 8 7 1.0000000000000e+00 9 7 -1.0000000000000e+00 16 7 1.0000000000000e+00 23 7 1.0000000000000e+00 10 8 -1.0000000000000e+01 11 9 -1.0000000000000e+01 12 10 -1.0000000000000e+01 13 11 -1.0000000000000e+01 14 12 -1.0000000000000e+01 15 13 -1.0000000000000e+01 16 14 -1.0000000000000e+01 9 15 1.0000000000000e+00 10 15 -5.0000000000000e-01 11 15 -5.0000000000000e-01 12 15 -5.0000000000000e-01 13 15 -5.0000000000000e-01 14 15 -5.0000000000000e-01 15 15 -5.0000000000000e-01 16 15 -5.0000000000000e-01 1 16 -1.2000000000000e+02 17 17 1.0000000000000e+00 33 17 1.0000000000000e+00 40 17 -1.0000000000000e+00 41 17 1.0000000000000e+00 18 18 1.0000000000000e+00 34 18 1.0000000000000e+00 40 18 -1.0000000000000e+00 42 18 1.0000000000000e+00 19 19 1.0000000000000e+00 35 19 1.0000000000000e+00 40 19 -1.0000000000000e+00 43 19 1.0000000000000e+00 20 20 1.0000000000000e+00 36 20 1.0000000000000e+00 40 20 -1.0000000000000e+00 44 20 1.0000000000000e+00 21 21 1.0000000000000e+00 37 21 1.0000000000000e+00 40 21 -1.0000000000000e+00 45 21 1.0000000000000e+00 22 22 1.0000000000000e+00 38 22 1.0000000000000e+00 40 22 -1.0000000000000e+00 46 22 1.0000000000000e+00 23 23 1.0000000000000e+00 39 23 1.0000000000000e+00 40 23 -1.0000000000000e+00 47 23 1.0000000000000e+00 17 24 -1.0000000000000e+00 24 24 -1.0000000000000e+00 25 24 -1.0000000000000e+00 108 24 -1.0000000000000e+00 115 24 1.0000000000000e+00 18 25 -1.0000000000000e+00 24 25 -1.0000000000000e+00 26 25 -1.0000000000000e+00 109 25 -1.0000000000000e+00 116 25 1.0000000000000e+00 19 26 -1.0000000000000e+00 24 26 -1.0000000000000e+00 27 26 -1.0000000000000e+00 110 26 0.0000000000000e+00 117 26 1.0000000000000e+00 20 27 -1.0000000000000e+00 24 27 -1.0000000000000e+00 28 27 -1.0000000000000e+00 111 27 0.0000000000000e+00 118 27 1.0000000000000e+00 21 28 -1.0000000000000e+00 24 28 -1.0000000000000e+00 29 28 -1.0000000000000e+00 112 28 0.0000000000000e+00 119 28 1.0000000000000e+00 22 29 -1.0000000000000e+00 24 29 -1.0000000000000e+00 30 29 -1.0000000000000e+00 113 29 0.0000000000000e+00 120 29 1.0000000000000e+00 23 30 -1.0000000000000e+00 24 30 -1.0000000000000e+00 31 30 -1.0000000000000e+00 114 30 0.0000000000000e+00 121 30 1.0000000000000e+00 24 31 1.0000000000000e+00 25 31 5.0000000000000e-01 26 31 5.0000000000000e-01 27 31 5.0000000000000e-01 28 31 5.0000000000000e-01 29 31 5.0000000000000e-01 30 31 5.0000000000000e-01 31 31 5.0000000000000e-01 25 32 1.0000000000000e+01 26 33 1.0000000000000e+01 27 34 1.0000000000000e+01 28 35 1.0000000000000e+01 29 36 1.0000000000000e+01 30 37 1.0000000000000e+01 31 38 1.0000000000000e+01 33 39 -1.0000000000000e+00 48 39 1.0000000000000e+00 55 39 -1.0000000000000e+00 62 39 -1.0000000000000e+00 64 39 -1.0000000000000e+00 34 40 -1.0000000000000e+00 49 40 1.0000000000000e+00 56 40 -1.0000000000000e+00 62 40 -1.0000000000000e+00 65 40 -1.0000000000000e+00 32 41 -1.0000000000000e+00 35 41 -1.0000000000000e+00 50 41 1.0000000000000e+00 57 41 -1.0000000000000e+00 62 41 -1.0000000000000e+00 66 41 -1.0000000000000e+00 36 42 -1.0000000000000e+00 51 42 1.0000000000000e+00 58 42 -1.0000000000000e+00 62 42 -1.0000000000000e+00 67 42 -1.0000000000000e+00 37 43 -1.0000000000000e+00 52 43 1.0000000000000e+00 59 43 -1.0000000000000e+00 62 43 -1.0000000000000e+00 68 43 -1.0000000000000e+00 38 44 -1.0000000000000e+00 53 44 1.0000000000000e+00 60 44 -1.0000000000000e+00 62 44 -1.0000000000000e+00 69 44 -1.0000000000000e+00 39 45 -1.0000000000000e+00 54 45 1.0000000000000e+00 61 45 -1.0000000000000e+00 62 45 -1.0000000000000e+00 70 45 -1.0000000000000e+00 41 46 -1.0000000000000e+01 42 47 -1.0000000000000e+01 43 48 -1.0000000000000e+01 44 49 -1.0000000000000e+01 45 50 -1.0000000000000e+01 46 51 -1.0000000000000e+01 47 52 -1.0000000000000e+01 40 53 1.0000000000000e+00 41 53 -5.0000000000000e-01 42 53 -5.0000000000000e-01 43 53 -5.0000000000000e-01 44 53 -5.0000000000000e-01 45 53 -5.0000000000000e-01 46 53 -5.0000000000000e-01 47 53 -5.0000000000000e-01 32 54 -1.0000000000000e+01 48 55 -1.0000000000000e+00 55 55 1.0000000000000e+00 85 55 -1.0000000000000e+00 93 55 -1.0000000000000e+00 101 55 -1.0000000000000e+00 49 56 -1.0000000000000e+00 56 56 1.0000000000000e+00 86 56 -1.0000000000000e+00 93 56 -1.0000000000000e+00 102 56 -1.0000000000000e+00 50 57 -9.9000000000000e-01 57 57 1.0000000000000e+00 87 57 -1.0000000000000e+00 93 57 -1.0000000000000e+00 103 57 -1.0000000000000e+00 51 58 0.0000000000000e+00 58 58 1.0000000000000e+00 88 58 -1.0000000000000e+00 93 58 -1.0000000000000e+00 104 58 -1.0000000000000e+00 52 59 0.0000000000000e+00 59 59 1.0000000000000e+00 89 59 -1.0000000000000e+00 93 59 -1.0000000000000e+00 105 59 -1.0000000000000e+00 53 60 -1.0000000000000e+00 60 60 1.0000000000000e+00 90 60 -1.0000000000000e+00 93 60 -1.0000000000000e+00 106 60 -1.0000000000000e+00 54 61 0.0000000000000e+00 61 61 1.0000000000000e+00 91 61 -1.0000000000000e+00 93 61 -1.0000000000000e+00 107 61 -1.0000000000000e+00 55 62 -1.0000000000000e+00 63 62 -1.0000000000000e+00 71 62 -1.0000000000000e+00 56 63 -1.0000000000000e+00 63 63 -1.0000000000000e+00 72 63 -1.0000000000000e+00 57 64 -1.0000000000000e+00 63 64 -1.0000000000000e+00 73 64 -1.0000000000000e+00 58 65 -1.0000000000000e+00 63 65 -1.0000000000000e+00 74 65 -1.0000000000000e+00 59 66 -1.0000000000000e+00 63 66 -1.0000000000000e+00 75 66 -1.0000000000000e+00 60 67 -1.0000000000000e+00 63 67 -1.0000000000000e+00 76 67 -1.0000000000000e+00 61 68 -1.0000000000000e+00 63 68 -1.0000000000000e+00 77 68 -1.0000000000000e+00 62 69 1.0000000000000e+00 64 69 5.0000000000000e-01 65 69 5.0000000000000e-01 66 69 5.0000000000000e-01 67 69 5.0000000000000e-01 68 69 5.0000000000000e-01 69 69 5.0000000000000e-01 70 69 5.0000000000000e-01 63 70 1.0000000000000e+00 71 70 5.0000000000000e-01 72 70 5.0000000000000e-01 73 70 5.0000000000000e-01 74 70 5.0000000000000e-01 75 70 5.0000000000000e-01 76 70 5.0000000000000e-01 77 70 5.0000000000000e-01 64 71 1.0000000000000e+01 65 72 1.0000000000000e+01 66 73 1.0000000000000e+01 67 74 1.0000000000000e+01 68 75 1.0000000000000e+01 69 76 1.0000000000000e+01 70 77 1.0000000000000e+01 71 78 1.0000000000000e+01 72 79 1.0000000000000e+01 73 80 1.0000000000000e+01 74 81 1.0000000000000e+01 75 82 1.0000000000000e+01 76 83 1.0000000000000e+01 77 84 1.0000000000000e+01 78 85 -1.0000000000000e+00 85 85 1.0000000000000e+00 115 85 -1.0000000000000e+00 123 85 -1.0000000000000e+00 131 85 -1.0000000000000e+00 79 86 -1.0000000000000e+00 86 86 1.0000000000000e+00 116 86 -1.0000000000000e+00 123 86 -1.0000000000000e+00 132 86 -1.0000000000000e+00 80 87 -5.0000000000000e-02 87 87 1.0000000000000e+00 117 87 -1.0000000000000e+00 123 87 -1.0000000000000e+00 133 87 -1.0000000000000e+00 81 88 0.0000000000000e+00 88 88 1.0000000000000e+00 118 88 -1.0000000000000e+00 123 88 -1.0000000000000e+00 134 88 -1.0000000000000e+00 82 89 0.0000000000000e+00 89 89 1.0000000000000e+00 119 89 -1.0000000000000e+00 123 89 -1.0000000000000e+00 135 89 -1.0000000000000e+00 83 90 -9.9000000000000e-01 90 90 1.0000000000000e+00 120 90 -1.0000000000000e+00 123 90 -1.0000000000000e+00 136 90 -1.0000000000000e+00 84 91 0.0000000000000e+00 91 91 1.0000000000000e+00 121 91 -1.0000000000000e+00 123 91 -1.0000000000000e+00 137 91 -1.0000000000000e+00 78 92 1.0000000000000e+00 85 92 -1.0000000000000e+00 92 92 -1.0000000000000e+00 94 92 -1.0000000000000e+00 79 93 1.0000000000000e+00 86 93 -1.0000000000000e+00 92 93 -1.0000000000000e+00 95 93 -1.0000000000000e+00 80 94 1.0000000000000e+00 87 94 -1.0000000000000e+00 92 94 -1.0000000000000e+00 96 94 -1.0000000000000e+00 81 95 1.0000000000000e+00 88 95 -1.0000000000000e+00 92 95 -1.0000000000000e+00 97 95 -1.0000000000000e+00 82 96 1.0000000000000e+00 89 96 -1.0000000000000e+00 92 96 -1.0000000000000e+00 98 96 -1.0000000000000e+00 83 97 1.0000000000000e+00 90 97 -1.0000000000000e+00 92 97 -1.0000000000000e+00 99 97 -1.0000000000000e+00 84 98 1.0000000000000e+00 91 98 -1.0000000000000e+00 92 98 -1.0000000000000e+00 100 98 -1.0000000000000e+00 92 99 1.0000000000000e+00 94 99 5.0000000000000e-01 95 99 5.0000000000000e-01 96 99 5.0000000000000e-01 97 99 5.0000000000000e-01 98 99 5.0000000000000e-01 99 99 5.0000000000000e-01 100 99 5.0000000000000e-01 93 100 1.0000000000000e+00 101 100 5.0000000000000e-01 102 100 5.0000000000000e-01 103 100 5.0000000000000e-01 104 100 5.0000000000000e-01 105 100 5.0000000000000e-01 106 100 5.0000000000000e-01 107 100 5.0000000000000e-01 94 101 1.0000000000000e+01 95 102 1.0000000000000e+01 96 103 1.0000000000000e+01 97 104 1.0000000000000e+01 98 105 1.0000000000000e+01 99 106 1.0000000000000e+01 100 107 1.0000000000000e+01 101 108 1.0000000000000e+01 102 109 1.0000000000000e+01 103 110 1.0000000000000e+01 104 111 1.0000000000000e+01 105 112 1.0000000000000e+01 106 113 1.0000000000000e+01 107 114 1.0000000000000e+01 108 115 1.0000000000000e+00 115 115 -1.0000000000000e+00 122 115 -1.0000000000000e+00 124 115 -1.0000000000000e+00 109 116 1.0000000000000e+00 116 116 -1.0000000000000e+00 122 116 -1.0000000000000e+00 125 116 -1.0000000000000e+00 110 117 1.0000000000000e+00 117 117 -1.0000000000000e+00 122 117 -1.0000000000000e+00 126 117 -1.0000000000000e+00 111 118 1.0000000000000e+00 118 118 -1.0000000000000e+00 122 118 -1.0000000000000e+00 127 118 -1.0000000000000e+00 112 119 1.0000000000000e+00 119 119 -1.0000000000000e+00 122 119 -1.0000000000000e+00 128 119 -1.0000000000000e+00 113 120 1.0000000000000e+00 120 120 -1.0000000000000e+00 122 120 -1.0000000000000e+00 129 120 -1.0000000000000e+00 114 121 1.0000000000000e+00 121 121 -1.0000000000000e+00 122 121 -1.0000000000000e+00 130 121 -1.0000000000000e+00 122 122 1.0000000000000e+00 124 122 5.0000000000000e-01 125 122 5.0000000000000e-01 126 122 5.0000000000000e-01 127 122 5.0000000000000e-01 128 122 5.0000000000000e-01 129 122 5.0000000000000e-01 130 122 5.0000000000000e-01 123 123 1.0000000000000e+00 131 123 5.0000000000000e-01 132 123 5.0000000000000e-01 133 123 5.0000000000000e-01 134 123 5.0000000000000e-01 135 123 5.0000000000000e-01 136 123 5.0000000000000e-01 137 123 5.0000000000000e-01 124 124 1.0000000000000e+01 125 125 1.0000000000000e+01 126 126 1.0000000000000e+01 127 127 1.0000000000000e+01 128 128 1.0000000000000e+01 129 129 1.0000000000000e+01 130 130 1.0000000000000e+01 131 131 1.0000000000000e+01 132 132 1.0000000000000e+01 133 133 1.0000000000000e+01 134 134 1.0000000000000e+01 135 135 1.0000000000000e+01 136 136 1.0000000000000e+01 137 137 1.0000000000000e+01 SHAR_EOF fi # end of overwriting check if test -f 'test1.mtx' then echo shar: will not over-write existing file "'test1.mtx'" else cat << "SHAR_EOF" > 'test1.mtx' %% MatrixMarket matrix coordinate real general % %SDDPACK: Software for the Semidiscrete Decomposition. %Copyright (c) 1999 Tamara G. Kolda and Dianne P. O'Leary. % % This program is free software; you can redistribute it and/or modify it % under the terms of the GNU General Public License as published by the Free % Software Foundation; either version 2 of the License, or (at your option) % any later version. % % This program is distributed in the hope that it will be useful, but % WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY % or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License % for more details. % % You should have received a copy of the GNU General Public License along % with this program; if not, write to the Free Software Foundation, Inc., 59 % Temple Place - Suite 330, Boston, MA 02111-1307, USA. % 5 5 25 1 1 5.827917e-01 2 1 4.234963e-01 3 1 5.155118e-01 4 1 3.339515e-01 5 1 4.329066e-01 1 2 2.259499e-01 2 2 5.798069e-01 3 2 7.603650e-01 4 2 5.298231e-01 5 2 6.405265e-01 1 3 2.090694e-01 2 3 3.798184e-01 3 3 7.833286e-01 4 3 6.808458e-01 5 3 4.610951e-01 1 4 5.678287e-01 2 4 7.942107e-01 3 4 5.918259e-02 4 4 6.028691e-01 5 4 5.026880e-02 1 5 4.153749e-01 2 5 3.049987e-01 3 5 8.743672e-01 4 5 1.500950e-02 5 5 7.679504e-01 SHAR_EOF fi # end of overwriting check if test -f 'watson2.mtx' then echo shar: will not over-write existing file "'watson2.mtx'" else cat << "SHAR_EOF" > 'watson2.mtx' %%MatrixMarket matrix coordinate real general 66 67 409 1 1 1.0000000000000e+00 1 2 2.0004000000000e+00 2 2 1.0000000000000e+00 5 2 -1.3986000000000e-05 6 2 -1.0000000000000e-04 7 2 -3.0211000000000e-04 30 2 -1.0000000000000e+00 37 2 -5.6619000000000e-16 40 2 -5.6740000000000e-18 41 2 -1.0000000000000e+00 42 2 0.0000000000000e+00 43 2 -5.8531000000000e-39 46 2 -5.8656000000000e-41 48 2 0.0000000000000e+00 49 2 -2.2549000000000e-27 52 2 -2.2597000000000e-29 54 2 0.0000000000000e+00 3 3 2.0003000000000e+00 12 3 -1.9569000000000e-04 17 3 -1.0000000000000e+00 59 3 -1.0000000000000e+00 4 4 1.0000000000000e+00 35 4 -1.0000000000000e+00 1 5 -1.3986000000000e-05 5 5 3.0000000000000e+00 16 5 -1.0000000000000e+00 22 5 -1.0000000000000e+00 24 5 -1.0000000000000e+00 1 6 -1.0000000000000e-04 6 6 1.0001000000000e+00 53 6 -1.0000000000000e+00 1 7 -3.0211000000000e-04 7 7 3.3364000000000e-01 47 7 -3.3333000000000e-01 8 8 2.6667000000000e+00 46 8 -3.3333000000000e-01 48 8 -3.3333000000000e-01 52 8 -1.0000000000000e+00 60 8 -1.0000000000000e+00 9 9 3.5000000000000e+00 18 9 -1.0000000000000e+00 40 9 -1.0000000000000e+00 54 9 -1.0000000000000e+00 66 9 -5.0000000000000e-01 10 10 3.5001000000000e+00 29 10 -1.0000000000000e+00 34 10 -1.0000000000000e+00 58 10 -1.0000000000000e+00 64 10 -5.0000000000000e-01 11 11 3.0000000000000e+00 28 11 -1.0000000000000e+00 36 11 -1.0000000000000e+00 42 11 -1.0000000000000e+00 3 12 -1.9569000000000e-04 12 12 5.0020000000000e-01 65 12 -5.0000000000000e-01 13 13 1.0000000000000e+00 16 13 -1.0108000000000e-01 18 13 -1.0000000000000e+00 14 14 1.0000000000000e+00 15 14 1.0892000000000e-01 16 14 -1.0000000000000e+00 17 14 -1.1036000000000e-01 18 14 0.0000000000000e+00 14 15 -1.0086000000000e-01 15 15 1.0000000000000e+00 16 15 0.0000000000000e+00 17 15 -1.0074000000000e-01 18 15 -1.0000000000000e+00 5 16 -1.0000000000000e+00 13 16 -3.3132000000000e-01 14 16 -1.0000000000000e+00 15 16 0.0000000000000e+00 16 16 2.0000000000000e+00 17 16 0.0000000000000e+00 18 16 0.0000000000000e+00 3 17 -1.0000000000000e+00 14 17 -1.4450000000000e-01 15 17 -1.0892000000000e-01 16 17 0.0000000000000e+00 17 17 1.0000000000000e+00 9 18 -1.0000000000000e+00 13 18 -1.0000000000000e+00 14 18 0.0000000000000e+00 15 18 -1.0000000000000e+00 16 18 0.0000000000000e+00 18 18 3.0000000000000e+00 19 19 1.0000000000000e+00 22 19 -3.8251000000000e-17 24 19 -1.0000000000000e+00 20 20 1.0000000000000e+00 21 20 3.7196000000000e-03 22 20 -1.0000000000000e+00 23 20 -3.7690000000000e-03 24 20 0.0000000000000e+00 20 21 -3.8309000000000e-15 21 21 1.0000000000000e+00 22 21 0.0000000000000e+00 23 21 -3.8266000000000e-15 24 21 -1.0000000000000e+00 5 22 -1.0000000000000e+00 19 22 -1.2538000000000e-19 20 22 -1.0000000000000e+00 21 22 0.0000000000000e+00 22 22 2.0000000000000e+00 23 22 0.0000000000000e+00 24 22 0.0000000000000e+00 20 23 -4.9349000000000e-05 21 23 -3.7196000000000e-03 22 23 0.0000000000000e+00 23 23 1.0038000000000e+00 5 24 -1.0000000000000e+00 19 24 -1.0000000000000e+00 20 24 0.0000000000000e+00 21 24 -1.0000000000000e+00 22 24 0.0000000000000e+00 24 24 3.0000000000000e+00 25 25 1.0000000000000e+00 28 25 -5.8077000000000e-18 30 25 -1.0000000000000e+00 26 26 1.0003000000000e+00 27 26 2.5397000000000e-02 28 26 -1.0000000000000e+00 29 26 -2.5734000000000e-02 30 26 0.0000000000000e+00 26 27 -5.9429000000000e-16 27 27 1.0000000000000e+00 28 27 0.0000000000000e+00 29 27 -5.9362000000000e-16 30 27 -1.0000000000000e+00 11 28 -1.0000000000000e+00 25 28 -1.9037000000000e-20 26 28 -1.0000000000000e+00 27 28 0.0000000000000e+00 28 28 2.0000000000000e+00 29 28 0.0000000000000e+00 30 28 0.0000000000000e+00 10 29 -1.0000000000000e+00 26 29 -3.3695000000000e-04 27 29 -2.5397000000000e-02 28 29 0.0000000000000e+00 29 29 1.0257000000000e+00 1 30 -1.0000000000000e+00 25 30 -1.0000000000000e+00 26 30 0.0000000000000e+00 27 30 -1.0000000000000e+00 28 30 0.0000000000000e+00 30 30 3.0000000000000e+00 31 31 1.0000000000000e+00 34 31 -5.5792000000000e-30 36 31 -1.0000000000000e+00 32 32 1.0001000000000e+00 33 32 5.0271000000000e-03 34 32 -1.0000000000000e+00 35 32 -5.0937000000000e-03 36 32 0.0000000000000e+00 32 33 -5.5954000000000e-28 33 33 1.0000000000000e+00 34 33 0.0000000000000e+00 35 33 -5.5890000000000e-28 36 33 -1.0000000000000e+00 10 34 -1.0000000000000e+00 31 34 -1.8288000000000e-32 32 34 -1.0000000000000e+00 33 34 0.0000000000000e+00 34 34 2.0000000000000e+00 35 34 0.0000000000000e+00 36 34 0.0000000000000e+00 4 35 -1.0000000000000e+00 32 35 -6.6695000000000e-05 33 35 -5.0271000000000e-03 34 35 0.0000000000000e+00 35 35 1.0051000000000e+00 11 36 -1.0000000000000e+00 31 36 -1.0000000000000e+00 32 36 0.0000000000000e+00 33 36 -1.0000000000000e+00 34 36 0.0000000000000e+00 36 36 3.0000000000000e+00 1 37 9.5148000000000e-06 37 37 1.0000000000000e+00 40 37 -9.5461000000000e-06 42 37 -1.0000000000000e+00 38 38 1.0010000000000e+00 39 38 4.4185000000000e-03 40 38 -1.0000000000000e+00 41 38 -5.4581000000000e-03 42 38 0.0000000000000e+00 38 39 -9.5569000000000e-04 39 39 1.0019000000000e+00 40 39 0.0000000000000e+00 41 39 -9.5461000000000e-04 42 39 -1.0000000000000e+00 1 40 -9.5148000000000e-06 9 40 -1.0000000000000e+00 37 40 -3.1291000000000e-08 38 40 -1.0000000000000e+00 39 40 0.0000000000000e+00 40 40 2.0000000000000e+00 41 40 0.0000000000000e+00 42 40 0.0000000000000e+00 1 41 -1.0000000000000e+00 38 41 -8.3965000000000e-05 39 41 -6.3288000000000e-03 40 41 0.0000000000000e+00 41 41 1.0064000000000e+00 1 42 0.0000000000000e+00 11 42 -1.0000000000000e+00 37 42 -1.0000000000000e+00 38 42 0.0000000000000e+00 39 42 -1.0000000000000e+00 40 42 0.0000000000000e+00 42 42 3.0000000000000e+00 1 43 1.1697000000000e-16 43 43 3.0000000000000e+00 46 43 -1.1735000000000e-16 48 43 -3.0000000000000e+00 44 44 3.0001000000000e+00 45 44 8.7049000000000e-03 46 44 -3.0000000000000e+00 47 44 -8.8204000000000e-03 48 44 0.0000000000000e+00 44 45 -1.1743000000000e-14 45 45 3.0000000000000e+00 46 45 0.0000000000000e+00 47 45 -1.1730000000000e-14 48 45 -3.0000000000000e+00 1 46 -1.1697000000000e-16 8 46 -3.3333000000000e-01 43 46 -3.8467000000000e-19 44 46 -3.0000000000000e+00 45 46 0.0000000000000e+00 46 46 3.3333000000000e+00 47 46 0.0000000000000e+00 48 46 0.0000000000000e+00 7 47 -3.3333000000000e-01 44 47 -1.1549000000000e-04 45 47 -8.7049000000000e-03 46 47 0.0000000000000e+00 47 47 3.4215000000000e-01 1 48 0.0000000000000e+00 8 48 -3.3333000000000e-01 43 48 -3.0000000000000e+00 44 48 0.0000000000000e+00 45 48 -3.0000000000000e+00 46 48 0.0000000000000e+00 48 48 6.3333000000000e+00 1 49 4.4884000000000e-05 49 49 1.0000000000000e+00 52 49 -4.5032000000000e-05 54 49 -1.0000000000000e+00 50 50 1.0046000000000e+00 51 50 -1.6055000000000e-03 52 50 -1.0000000000000e+00 53 50 -2.9571000000000e-03 54 50 0.0000000000000e+00 50 51 -4.4655000000000e-03 51 51 1.0089000000000e+00 52 51 0.0000000000000e+00 53 51 -4.4605000000000e-03 54 51 -1.0000000000000e+00 1 52 -4.4884000000000e-05 8 52 -1.0000000000000e+00 49 52 -1.4761000000000e-07 50 52 -1.0000000000000e+00 51 52 0.0000000000000e+00 52 52 2.0000000000000e+00 53 52 0.0000000000000e+00 54 52 0.0000000000000e+00 6 53 -1.0000000000000e+00 50 53 -9.7121000000000e-05 51 53 -7.3204000000000e-03 52 53 0.0000000000000e+00 53 53 1.0074000000000e+00 1 54 0.0000000000000e+00 9 54 -1.0000000000000e+00 49 54 -1.0000000000000e+00 50 54 0.0000000000000e+00 51 54 -1.0000000000000e+00 52 54 0.0000000000000e+00 54 54 3.0000000000000e+00 55 55 1.0000000000000e+00 58 55 -1.6704000000000e-06 60 55 -1.0000000000000e+00 56 56 1.0004000000000e+00 57 56 1.4365000000000e-02 58 56 -1.0000000000000e+00 59 56 -1.4729000000000e-02 60 56 0.0000000000000e+00 56 57 -1.6904000000000e-04 57 57 1.0003000000000e+00 58 57 0.0000000000000e+00 59 57 -1.6885000000000e-04 60 57 -1.0000000000000e+00 10 58 -1.0000000000000e+00 55 58 -5.4754000000000e-09 56 58 -1.0000000000000e+00 57 58 0.0000000000000e+00 58 58 2.0000000000000e+00 59 58 0.0000000000000e+00 60 58 0.0000000000000e+00 3 59 -1.0000000000000e+00 56 59 -1.9507000000000e-04 57 59 -1.4703000000000e-02 58 59 0.0000000000000e+00 59 59 1.0149000000000e+00 8 60 -1.0000000000000e+00 55 60 -1.0000000000000e+00 56 60 0.0000000000000e+00 57 60 -1.0000000000000e+00 58 60 0.0000000000000e+00 60 60 3.0000000000000e+00 61 61 2.0000000000000e+00 64 61 -2.7743000000000e-18 66 61 -2.0000000000000e+00 62 62 2.0000000000000e+00 63 62 5.8959000000000e-04 64 62 -2.0000000000000e+00 65 62 -5.9741000000000e-04 66 62 0.0000000000000e+00 62 63 -2.7693000000000e-16 63 63 2.0000000000000e+00 64 63 0.0000000000000e+00 65 63 -2.7662000000000e-16 66 63 -2.0000000000000e+00 10 64 -5.0000000000000e-01 61 64 -9.0940000000000e-21 62 64 -2.0000000000000e+00 63 64 0.0000000000000e+00 64 64 2.5000000000000e+00 65 64 0.0000000000000e+00 66 64 0.0000000000000e+00 12 65 -5.0000000000000e-01 62 65 -7.8222000000000e-06 63 65 -5.8959000000000e-04 64 65 0.0000000000000e+00 65 65 5.0060000000000e-01 9 66 -5.0000000000000e-01 61 66 -2.0000000000000e+00 62 66 0.0000000000000e+00 63 66 -2.0000000000000e+00 64 66 0.0000000000000e+00 66 66 4.5000000000000e+00 1 67 -7.4744000000000e-05 2 67 0.0000000000000e+00 3 67 -5.8509000000000e-05 4 67 -5.9078000000000e-05 5 67 -6.1258000000000e-06 6 67 -6.7040000000000e-05 7 67 -6.7243000000000e-05 8 67 -5.9854000000000e-05 9 67 -6.7245000000000e-05 10 67 -6.6855000000000e-05 11 67 -7.4108000000000e-05 12 67 -5.9967000000000e-05 13 67 -6.7614000000000e-05 14 67 -6.7727000000000e-06 15 67 -6.7516000000000e-05 16 67 -6.1301000000000e-06 17 67 -5.8647000000000e-05 18 67 -6.6928000000000e-05 19 67 -6.5000000000000e-06 20 67 1.0802000000000e-05 21 67 -6.1168000000000e-06 22 67 -6.2299000000000e-06 23 67 -1.6932000000000e-05 24 67 -6.4862000000000e-06 25 67 -7.4418000000000e-05 26 67 4.2251000000000e-05 27 67 -7.4409000000000e-05 28 67 -7.4256000000000e-05 29 67 -1.8210000000000e-04 30 67 -7.4677000000000e-05 31 67 -7.3732000000000e-05 32 67 -4.3757000000000e-05 33 67 -7.3775000000000e-05 34 67 -6.6427000000000e-05 35 67 -8.2175000000000e-05 36 67 -7.4068000000000e-05 37 67 -7.3876000000000e-05 38 67 -9.5965000000000e-05 39 67 -7.4055000000000e-05 40 67 -6.6817000000000e-05 41 67 -4.5976000000000e-05 42 67 -7.3796000000000e-05 43 67 -6.0336000000000e-05 44 67 -9.9605000000000e-05 45 67 -6.0427000000000e-05 46 67 -5.9656000000000e-05 47 67 -2.7089000000000e-05 48 67 -5.9856000000000e-05 49 67 -6.6691000000000e-05 50 67 -9.3205000000000e-05 51 67 -6.7776000000000e-05 52 67 -6.0128000000000e-05 53 67 -3.4280000000000e-05 54 67 -6.7297000000000e-05 55 67 -5.9707000000000e-05 56 67 1.1090000000000e-06 57 67 -5.9694000000000e-05 58 67 -6.6005000000000e-05 59 67 -1.2630000000000e-04 60 67 -6.0269000000000e-05 61 67 -6.7210000000000e-05 62 67 -6.3387000000000e-05 63 67 -6.7014000000000e-05 64 67 -6.6835000000000e-05 65 67 -6.2644000000000e-05 66 67 -6.6979000000000e-05 SHAR_EOF fi # end of overwriting check if test -f 'west0132.mtx' then echo shar: will not over-write existing file "'west0132.mtx'" else cat << "SHAR_EOF" > 'west0132.mtx' %%MatrixMarket matrix coordinate real general 132 132 414 19 1 1.0000000000000e+00 24 1 -1.2222090000000e-01 20 2 1.0000000000000e+00 24 2 -1.9902570000000e-01 21 3 1.3000000000000e+02 22 3 -2.4337670000000e+00 22 4 1.0000000000000e+00 23 4 -1.6346070000000e+00 23 5 1.6346070000000e+00 24 5 -7.6368810000000e-01 25 6 -1.1383520000000e+00 34 6 5.1484020000000e-02 26 7 -4.0000000000000e-01 34 7 1.8090720000000e-02 27 8 -6.0000000000000e-01 34 8 2.7136090000000e-02 28 9 -4.3624160000000e-01 29 9 -7.6804250000000e-01 30 9 -1.4302790000000e-01 29 10 1.0000000000000e+00 34 10 -5.4506720000000e-02 30 11 1.0000000000000e+00 34 11 -8.6781480000000e-02 31 12 5.4400920000000e+00 33 12 -7.4232720000000e-01 32 13 3.0929180000000e-01 33 13 -2.3332580000000e-01 33 14 1.4756530000000e+00 34 14 -4.8909260000000e-01 2 15 4.8176470000000e+01 6 15 -1.0000000000000e+00 8 15 -3.3474840000000e-05 3 16 8.3500000000000e+01 7 16 -1.0000000000000e+00 9 16 -4.1365390000000e-05 4 17 9.6651380000000e+01 6 17 2.5000000000000e+00 8 17 3.3474840000000e-05 5 18 1.6827060000000e+02 7 18 2.5000000000000e+00 9 18 4.1365390000000e-05 6 19 1.0000000000000e+00 11 19 -9.8400230000000e-02 7 20 1.0000000000000e+00 11 20 -4.9895230000000e-01 8 21 1.0104550000000e+00 12 21 -4.0000000000000e-01 9 22 1.0059780000000e+00 12 22 -6.0000000000000e-01 10 23 1.0000000000000e+00 11 23 -4.0264750000000e-01 11 24 1.0000000000000e+00 13 24 -1.0000000000000e+00 23 24 1.5000000000000e+00 33 24 5.0000000000000e-01 12 25 1.0000000000000e+00 14 25 -3.1622000000000e+05 17 25 -1.2323690000000e+04 18 25 -1.0000000000000e+00 23 25 -4.3103150000000e+04 32 25 2.1599430000000e+04 13 26 7.3590410000000e+00 15 26 2.4500370000000e-03 14 27 1.0808590000000e+03 15 27 -1.4973280000000e-01 15 28 9.8129710000000e-02 16 28 7.3828160000000e+01 23 28 -1.3645490000000e-01 16 29 -2.1599430000000e+04 18 29 8.1911820000000e-01 31 29 -2.1599430000000e+04 32 29 -1.7692490000000e+04 17 30 1.0000000000000e+00 23 30 2.8801920000000e-01 33 30 -1.0698550000000e+00 18 31 8.4220650000000e-05 23 31 2.5068860000000e+00 33 31 8.3562870000000e-01 24 32 1.0000000000000e+00 41 32 1.0000000000000e+00 34 33 1.0000000000000e+00 1 34 1.0000000000000e+00 11 34 -2.3342530000000e+00 12 34 -4.1119570000000e-05 24 34 -2.7530730000000e+00 27 34 1.0000000000000e+00 34 34 4.1030700000000e-01 36 34 0.0000000000000e+00 38 34 -1.0000000000000e+00 37 35 5.8124340000000e-02 38 35 9.5326020000000e-04 41 35 2.7248650000000e-01 39 36 9.5933880000000e-01 100 36 1.0000000000000e+00 101 36 1.0000000000000e+00 102 36 1.0000000000000e+00 103 36 1.0000000000000e+00 108 36 -4.1612680000000e-03 111 36 2.5000000000000e+00 112 36 3.3271980000000e+00 114 36 1.0000000000000e+00 115 36 -5.7792120000000e-01 117 36 -6.0739530000000e-01 118 36 -4.7904230000000e-01 119 36 -2.5841990000000e+01 126 36 4.1850350000000e-01 127 36 -2.5488460000000e-01 128 36 -6.6331220000000e-01 129 36 1.0000000000000e+00 41 37 -2.7248650000000e-01 122 37 1.0000000000000e+00 132 38 1.0000000000000e+00 35 39 1.0000000000000e+00 37 39 5.9077600000000e-02 53 39 -9.9416020000000e-01 54 39 -9.8958400000000e-01 99 39 1.0000000000000e+00 109 39 -1.9881190000000e+00 110 39 -3.3143100000000e-05 122 39 1.0251850000000e+00 124 39 1.0000000000000e+00 132 39 1.0076120000000e+00 36 40 1.0000000000000e+00 38 40 5.9077600000000e-02 53 40 -1.3560780000000e+00 54 40 -1.6351060000000e+00 99 40 1.0000000000000e+00 109 40 -2.7244220000000e+00 110 40 -4.1130080000000e-05 122 40 -5.9537640000000e-01 125 40 1.0000000000000e+00 132 40 4.3773870000000e-01 37 41 3.4187570000000e-01 38 41 5.9904670000000e-01 41 41 7.2751350000000e-01 39 42 -9.5933880000000e-01 59 42 -7.6304510000000e+01 60 42 -2.0237220000000e+02 66 42 1.0000000000000e+00 67 42 1.0000000000000e+00 68 42 1.0000000000000e+00 69 42 1.0000000000000e+00 74 42 -4.1612680000000e-03 77 42 2.5000000000000e+00 78 42 3.8228080000000e+00 80 42 1.0000000000000e+00 81 42 -6.6400680000000e-01 83 42 -6.0739530000000e-01 84 42 -4.7904230000000e-01 85 42 -2.5841990000000e+01 92 42 4.1850350000000e-01 93 42 -2.5488460000000e-01 94 42 -6.6331220000000e-01 95 42 1.0000000000000e+00 40 43 -3.1623550000000e-01 63 43 1.0000000000000e+00 64 43 1.0000000000000e+00 77 43 -1.0000000000000e+00 78 43 -3.8228080000000e+00 80 43 -1.0000000000000e+00 89 43 1.0000000000000e+00 41 44 -7.2751350000000e-01 88 44 1.0000000000000e+00 98 45 1.0000000000000e+00 35 46 -2.7078260000000e+00 37 46 9.4092240000000e-01 42 46 -1.0000000000000e+00 43 46 -1.0000000000000e+00 46 46 1.0000000000000e+00 47 46 1.0000000000000e+00 65 46 1.0000000000000e+00 75 46 -1.4693280000000e+00 76 46 -3.3143100000000e-05 88 46 6.1155710000000e+00 90 46 1.0000000000000e+00 98 46 5.5166850000000e-01 36 47 -2.5344380000000e-02 38 47 9.4092240000000e-01 42 47 -1.0000000000000e+00 43 47 -1.0000000000000e+00 46 47 1.0000000000000e+00 47 47 1.0000000000000e+00 65 47 1.0000000000000e+00 75 47 -2.3028540000000e+00 76 47 -4.1130080000000e-05 88 47 -3.5516210000000e+00 91 47 1.0000000000000e+00 98 47 4.3137260000000e-01 35 48 -9.8386430000000e-01 63 48 1.0000000000000e+00 36 49 -6.3665900000000e-01 64 49 3.9456480000000e+01 48 50 -1.0000000000000e+00 63 50 -1.0000000000000e+00 49 51 -1.0000000000000e+00 64 51 -1.0000000000000e+00 57 52 -1.0000000000000e+00 63 52 1.0267620000000e+00 58 53 -1.0000000000000e+00 64 53 1.0491850000000e+00 61 54 -1.0000000000000e+00 63 54 -1.0000000000000e+00 62 55 -1.0000000000000e+00 64 55 -1.0000000000000e+00 42 56 -1.0000000000000e+00 44 56 -1.0000000000000e+00 46 56 3.6334100000000e-01 47 56 3.6334100000000e-01 43 57 -1.0000000000000e+00 45 57 -1.0000000000000e+00 46 57 6.3665900000000e-01 47 57 6.3665900000000e-01 44 58 1.0000000000000e+00 46 58 -1.0000000000000e+00 45 59 1.0000000000000e+00 47 59 -1.0000000000000e+00 46 60 1.0000000000000e+00 48 60 1.0000000000000e+00 47 61 1.0000000000000e+00 49 61 1.0000000000000e+00 50 62 1.0088340000000e-02 51 62 9.7292370000000e-01 52 62 -1.0000000000000e+00 51 63 9.6971490000000e-01 55 63 3.2984260000000e+01 56 63 2.6579110000000e+01 52 64 1.0032980000000e+00 55 64 3.0244770000000e+02 56 64 3.6563660000000e+02 53 65 1.0000000000000e+00 55 65 1.9958500000000e+00 54 66 1.0000000000000e+00 56 66 2.2039080000000e+00 55 67 3.2984260000000e+01 57 67 9.7393570000000e-01 56 68 2.6579110000000e+01 58 68 9.5312110000000e-01 59 69 1.1755400000000e+02 61 69 1.2482660000000e+01 60 70 1.0656400000000e+02 62 70 7.7897140000000e+00 83 71 1.0000000000000e+00 88 71 -1.4740210000000e-01 84 72 1.0000000000000e+00 88 72 -2.7889010000000e-01 85 73 1.2471400000000e+02 86 73 -2.4130120000000e+00 86 74 1.0000000000000e+00 87 74 -1.6229990000000e+00 87 75 1.6229990000000e+00 88 75 -1.0391340000000e+00 117 76 1.0000000000000e+00 122 76 -6.6909760000000e-02 118 77 1.0000000000000e+00 122 77 -1.1848950000000e-03 119 78 1.2471400000000e+02 120 78 -2.4130120000000e+00 120 79 1.0000000000000e+00 121 79 -2.8021250000000e-02 121 80 2.8021250000000e-02 122 80 -9.6438800000000e-04 89 81 -1.0000000000000e+00 98 81 4.6668060000000e-02 90 82 -3.6785130000000e-01 98 82 1.7166910000000e-02 91 83 -6.3665900000000e-01 98 83 2.9711640000000e-02 92 84 -4.1850350000000e-01 93 84 -7.3626770000000e-01 94 84 -1.3819200000000e-01 93 85 1.0000000000000e+00 98 85 -5.3293930000000e-02 94 86 1.0000000000000e+00 98 86 -9.8343170000000e-02 95 87 5.4101270000000e+00 97 87 -6.6839170000000e-01 96 88 2.9706250000000e-01 97 88 -2.2282420000000e-01 97 89 1.3912160000000e+00 98 89 -5.2552180000000e-01 123 90 -1.0000000000000e+00 132 90 7.8613690000000e-02 124 91 -9.8386430000000e-01 132 91 7.7345200000000e-02 125 92 -6.6587120000000e-02 132 92 5.2346590000000e-03 126 93 -4.1850350000000e-01 127 93 -7.3626770000000e-01 128 93 -1.3819200000000e-01 127 94 1.0000000000000e+00 132 94 -2.4309560000000e-01 128 95 1.0000000000000e+00 132 95 -4.1985990000000e-03 129 96 1.0000000000000e+00 131 96 -3.8528080000000e-01 130 97 9.9670190000000e-01 131 97 -3.8528080000000e-01 131 98 4.6339540000000e-02 132 98 -9.4552380000000e-03 66 99 4.6258220000000e+01 70 99 -1.0000000000000e+00 72 99 -3.3504290000000e-05 67 100 8.0145450000000e+01 71 100 -1.0000000000000e+00 73 100 -4.1386390000000e-05 68 101 9.2762080000000e+01 70 101 2.5000000000000e+00 72 101 3.3504290000000e-05 69 102 1.6146920000000e+02 71 102 2.5000000000000e+00 73 102 4.1386390000000e-05 70 103 1.0000000000000e+00 75 103 -7.8738550000000e-02 71 104 1.0000000000000e+00 75 104 -5.4487130000000e-01 72 105 1.0108980000000e+00 76 105 -3.6334100000000e-01 73 106 1.0062320000000e+00 76 106 -6.3665900000000e-01 74 107 1.0000000000000e+00 75 107 -3.7639010000000e-01 75 108 1.0000000000000e+00 77 108 -1.0000000000000e+00 87 108 1.5000000000000e+00 97 108 5.0000000000000e-01 76 109 1.0000000000000e+00 78 109 -1.0000000000000e+05 81 109 -1.1579740000000e+04 82 109 -1.0000000000000e+00 87 109 -4.2455680000000e+04 96 109 2.1850270000000e+04 77 110 2.0347790000000e+01 79 110 7.2696120000000e-04 78 111 1.0369100000000e+03 79 111 -5.3591620000000e-02 79 112 3.6676120000000e-02 80 112 2.2656770000000e+02 87 112 -1.2354450000000e-01 80 113 -2.1850270000000e+04 82 113 8.3529410000000e-01 95 113 -2.1850270000000e+04 96 113 -1.8251400000000e+04 81 114 1.0000000000000e+00 87 114 2.7785690000000e-01 97 114 -1.1295070000000e+00 82 115 8.3994100000000e-05 87 115 2.4703360000000e+00 97 115 8.2344550000000e-01 100 116 4.6258220000000e+01 104 116 -1.0000000000000e+00 106 116 -3.3504290000000e-05 101 117 8.0145450000000e+01 105 117 -1.0000000000000e+00 107 117 -4.1386390000000e-05 102 118 9.2762080000000e+01 104 118 2.5000000000000e+00 106 118 3.3504290000000e-05 103 119 1.6146920000000e+02 105 119 2.5000000000000e+00 107 119 4.1386390000000e-05 53 120 -9.7811870000000e-01 104 120 1.0000000000000e+00 109 120 -9.5661940000000e-01 54 121 -2.6383630000000e-02 105 121 1.0000000000000e+00 109 121 -5.7991920000000e-04 55 122 -3.3299800000000e+03 106 122 1.0108980000000e+00 110 122 -9.8386430000000e-01 56 123 -2.6833370000000e+03 107 123 1.0062320000000e+00 110 123 -1.6135730000000e-02 53 124 -2.1881310000000e-02 54 124 -9.7361640000000e-01 108 124 1.0000000000000e+00 109 124 -4.2800700000000e-02 55 125 -1.0000000000000e+00 56 125 -1.0000000000000e+00 109 125 1.0000000000000e+00 111 125 -1.0000000000000e+00 121 125 1.7589250000000e-02 131 125 5.8630830000000e-03 50 126 -1.0000000000000e+00 55 126 3.3170810000000e+03 56 126 3.3170810000000e+03 110 126 1.0000000000000e+00 112 126 -1.0000000000000e+05 115 126 -1.1579740000000e+04 116 126 -1.0000000000000e+00 121 126 -8.4218760000000e+02 130 126 9.9124310000000e+01 111 127 3.3715330000000e+01 113 127 9.6971490000000e-01 112 128 1.0369100000000e+03 113 128 -1.0088280000000e+00 51 129 -9.9670190000000e-01 55 129 -3.2856500000000e+01 56 129 -3.2856500000000e+01 113 129 9.2033500000000e-01 114 129 1.0278300000000e+00 121 129 -3.8528080000000e-01 50 130 3.2980620000000e-03 114 130 -9.9124310000000e+01 116 130 3.2980620000000e-03 129 130 -9.9124310000000e+01 130 130 -3.2691810000000e-01 55 131 -2.5847380000000e+00 56 131 -3.1247550000000e+00 115 131 1.0000000000000e+00 121 131 2.7076350000000e-02 131 131 -1.5217690000000e-02 116 132 1.0121610000000e-02 121 132 5.3419970000000e+00 131 132 1.7806660000000e+00 SHAR_EOF fi # end of overwriting check cd .. cd .. cd .. # End of shell archive exit 0