00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "f2c.h"
00014 #include "blaswrap.h"
00015
00016
00017
00018 static integer c__3 = 3;
00019 static integer c__1 = 1;
00020 static integer c__2 = 2;
00021 static integer c__4 = 4;
00022 static integer c__5 = 5;
00023 static integer c__6 = 6;
00024 static integer c__7 = 7;
00025 static integer c__8 = 8;
00026
00027 int alahdg_(integer *iounit, char *path)
00028 {
00029
00030 static char fmt_9991[] = "(/1x,a3,\002: GQR factorization of general mat"
00031 "rices\002)";
00032 static char fmt_9992[] = "(/1x,a3,\002: GRQ factorization of general mat"
00033 "rices\002)";
00034 static char fmt_9993[] = "(/1x,a3,\002: LSE Problem\002)";
00035 static char fmt_9994[] = "(/1x,a3,\002: GLM Problem\002)";
00036 static char fmt_9995[] = "(/1x,a3,\002: Generalized Singular Value Decom"
00037 "position\002)";
00038 static char fmt_9999[] = "(1x,a)";
00039 static char fmt_9950[] = "(3x,i2,\002: A-diagonal matrix B-upper triang"
00040 "ular\002)";
00041 static char fmt_9952[] = "(3x,i2,\002: A-upper triangular B-upper triang"
00042 "ular\002)";
00043 static char fmt_9954[] = "(3x,i2,\002: A-lower triangular B-upper triang"
00044 "ular\002)";
00045 static char fmt_9955[] = "(3x,i2,\002: Random matrices cond(A)=100, cond"
00046 "(B)=10,\002)";
00047 static char fmt_9956[] = "(3x,i2,\002: Random matrices cond(A)= sqrt( 0."
00048 "1/EPS ) \002,\002cond(B)= sqrt( 0.1/EPS )\002)";
00049 static char fmt_9957[] = "(3x,i2,\002: Random matrices cond(A)= 0.1/EPS"
00050 " \002,\002cond(B)= 0.1/EPS\002)";
00051 static char fmt_9961[] = "(3x,i2,\002: Matrix scaled near underflow li"
00052 "mit\002)";
00053 static char fmt_9962[] = "(3x,i2,\002: Matrix scaled near overflow limi"
00054 "t\002)";
00055 static char fmt_9951[] = "(3x,i2,\002: A-diagonal matrix B-lower triang"
00056 "ular\002)";
00057 static char fmt_9953[] = "(3x,i2,\002: A-lower triangular B-diagonal tri"
00058 "angular\002)";
00059 static char fmt_9959[] = "(3x,i2,\002: Random matrices cond(A)= sqrt( 0."
00060 "1/EPS ) \002,\002cond(B)= 0.1/EPS \002)";
00061 static char fmt_9960[] = "(3x,i2,\002: Random matrices cond(A)= 0.1/EPS"
00062 " \002,\002cond(B)= sqrt( 0.1/EPS )\002)";
00063 static char fmt_9930[] = "(3x,i2,\002: norm( R - Q' * A ) / ( min( N, M "
00064 ")*norm( A )\002,\002* EPS )\002)";
00065 static char fmt_9931[] = "(3x,i2,\002: norm( T * Z - Q' * B ) / ( min(P"
00066 ",N)*norm(B)\002,\002* EPS )\002)";
00067 static char fmt_9932[] = "(3x,i2,\002: norm( I - Q'*Q ) / ( N * EPS "
00068 ")\002)";
00069 static char fmt_9933[] = "(3x,i2,\002: norm( I - Z'*Z ) / ( P * EPS "
00070 ")\002)";
00071 static char fmt_9934[] = "(3x,i2,\002: norm( R - A * Q' ) / ( min( N,M )"
00072 "*norm(A) * \002,\002EPS )\002)";
00073 static char fmt_9935[] = "(3x,i2,\002: norm( T * Q - Z' * B ) / ( min( "
00074 "P,N ) * nor\002,\002m(B)*EPS )\002)";
00075 static char fmt_9937[] = "(3x,i2,\002: norm( A*x - c ) / ( norm(A)*norm"
00076 "(x) * EPS )\002)";
00077 static char fmt_9938[] = "(3x,i2,\002: norm( B*x - d ) / ( norm(B)*norm"
00078 "(x) * EPS )\002)";
00079 static char fmt_9939[] = "(3x,i2,\002: norm( d - A*x - B*y ) / ( (norm(A"
00080 ")+norm(B) )*\002,\002(norm(x)+norm(y))*EPS )\002)";
00081 static char fmt_9940[] = "(3x,i2,\002: norm( U' * A * Q - D1 * R ) / ( m"
00082 "in( M, N )*\002,\002norm( A ) * EPS )\002)";
00083 static char fmt_9941[] = "(3x,i2,\002: norm( V' * B * Q - D2 * R ) / ( m"
00084 "in( P, N )*\002,\002norm( B ) * EPS )\002)";
00085 static char fmt_9942[] = "(3x,i2,\002: norm( I - U'*U ) / ( M * EPS "
00086 ")\002)";
00087 static char fmt_9943[] = "(3x,i2,\002: norm( I - V'*V ) / ( P * EPS "
00088 ")\002)";
00089 static char fmt_9944[] = "(3x,i2,\002: norm( I - Q'*Q ) / ( N * EPS "
00090 ")\002)";
00091
00092
00093 int s_copy(char *, char *, ftnlen, ftnlen);
00094 integer s_wsfe(cilist *), do_fio(integer *, char *, ftnlen), e_wsfe(void);
00095
00096
00097 char c2[3];
00098 integer itype;
00099 extern logical lsamen_(integer *, char *, char *);
00100
00101
00102 static cilist io___3 = { 0, 0, 0, fmt_9991, 0 };
00103 static cilist io___4 = { 0, 0, 0, fmt_9992, 0 };
00104 static cilist io___5 = { 0, 0, 0, fmt_9993, 0 };
00105 static cilist io___6 = { 0, 0, 0, fmt_9994, 0 };
00106 static cilist io___7 = { 0, 0, 0, fmt_9995, 0 };
00107 static cilist io___8 = { 0, 0, 0, fmt_9999, 0 };
00108 static cilist io___9 = { 0, 0, 0, fmt_9950, 0 };
00109 static cilist io___10 = { 0, 0, 0, fmt_9952, 0 };
00110 static cilist io___11 = { 0, 0, 0, fmt_9954, 0 };
00111 static cilist io___12 = { 0, 0, 0, fmt_9955, 0 };
00112 static cilist io___13 = { 0, 0, 0, fmt_9956, 0 };
00113 static cilist io___14 = { 0, 0, 0, fmt_9957, 0 };
00114 static cilist io___15 = { 0, 0, 0, fmt_9961, 0 };
00115 static cilist io___16 = { 0, 0, 0, fmt_9962, 0 };
00116 static cilist io___17 = { 0, 0, 0, fmt_9951, 0 };
00117 static cilist io___18 = { 0, 0, 0, fmt_9953, 0 };
00118 static cilist io___19 = { 0, 0, 0, fmt_9954, 0 };
00119 static cilist io___20 = { 0, 0, 0, fmt_9955, 0 };
00120 static cilist io___21 = { 0, 0, 0, fmt_9956, 0 };
00121 static cilist io___22 = { 0, 0, 0, fmt_9957, 0 };
00122 static cilist io___23 = { 0, 0, 0, fmt_9961, 0 };
00123 static cilist io___24 = { 0, 0, 0, fmt_9962, 0 };
00124 static cilist io___25 = { 0, 0, 0, fmt_9950, 0 };
00125 static cilist io___26 = { 0, 0, 0, fmt_9952, 0 };
00126 static cilist io___27 = { 0, 0, 0, fmt_9954, 0 };
00127 static cilist io___28 = { 0, 0, 0, fmt_9955, 0 };
00128 static cilist io___29 = { 0, 0, 0, fmt_9955, 0 };
00129 static cilist io___30 = { 0, 0, 0, fmt_9955, 0 };
00130 static cilist io___31 = { 0, 0, 0, fmt_9955, 0 };
00131 static cilist io___32 = { 0, 0, 0, fmt_9955, 0 };
00132 static cilist io___33 = { 0, 0, 0, fmt_9951, 0 };
00133 static cilist io___34 = { 0, 0, 0, fmt_9953, 0 };
00134 static cilist io___35 = { 0, 0, 0, fmt_9954, 0 };
00135 static cilist io___36 = { 0, 0, 0, fmt_9955, 0 };
00136 static cilist io___37 = { 0, 0, 0, fmt_9955, 0 };
00137 static cilist io___38 = { 0, 0, 0, fmt_9955, 0 };
00138 static cilist io___39 = { 0, 0, 0, fmt_9955, 0 };
00139 static cilist io___40 = { 0, 0, 0, fmt_9955, 0 };
00140 static cilist io___41 = { 0, 0, 0, fmt_9950, 0 };
00141 static cilist io___42 = { 0, 0, 0, fmt_9952, 0 };
00142 static cilist io___43 = { 0, 0, 0, fmt_9954, 0 };
00143 static cilist io___44 = { 0, 0, 0, fmt_9955, 0 };
00144 static cilist io___45 = { 0, 0, 0, fmt_9956, 0 };
00145 static cilist io___46 = { 0, 0, 0, fmt_9957, 0 };
00146 static cilist io___47 = { 0, 0, 0, fmt_9959, 0 };
00147 static cilist io___48 = { 0, 0, 0, fmt_9960, 0 };
00148 static cilist io___49 = { 0, 0, 0, fmt_9999, 0 };
00149 static cilist io___50 = { 0, 0, 0, fmt_9930, 0 };
00150 static cilist io___51 = { 0, 0, 0, fmt_9931, 0 };
00151 static cilist io___52 = { 0, 0, 0, fmt_9932, 0 };
00152 static cilist io___53 = { 0, 0, 0, fmt_9933, 0 };
00153 static cilist io___54 = { 0, 0, 0, fmt_9934, 0 };
00154 static cilist io___55 = { 0, 0, 0, fmt_9935, 0 };
00155 static cilist io___56 = { 0, 0, 0, fmt_9932, 0 };
00156 static cilist io___57 = { 0, 0, 0, fmt_9933, 0 };
00157 static cilist io___58 = { 0, 0, 0, fmt_9937, 0 };
00158 static cilist io___59 = { 0, 0, 0, fmt_9938, 0 };
00159 static cilist io___60 = { 0, 0, 0, fmt_9939, 0 };
00160 static cilist io___61 = { 0, 0, 0, fmt_9940, 0 };
00161 static cilist io___62 = { 0, 0, 0, fmt_9941, 0 };
00162 static cilist io___63 = { 0, 0, 0, fmt_9942, 0 };
00163 static cilist io___64 = { 0, 0, 0, fmt_9943, 0 };
00164 static cilist io___65 = { 0, 0, 0, fmt_9944, 0 };
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204 if (*iounit <= 0) {
00205 return 0;
00206 }
00207 s_copy(c2, path, (ftnlen)3, (ftnlen)3);
00208
00209
00210
00211 if (lsamen_(&c__3, c2, "GQR")) {
00212 itype = 1;
00213 io___3.ciunit = *iounit;
00214 s_wsfe(&io___3);
00215 do_fio(&c__1, path, (ftnlen)3);
00216 e_wsfe();
00217 } else if (lsamen_(&c__3, c2, "GRQ")) {
00218 itype = 2;
00219 io___4.ciunit = *iounit;
00220 s_wsfe(&io___4);
00221 do_fio(&c__1, path, (ftnlen)3);
00222 e_wsfe();
00223 } else if (lsamen_(&c__3, c2, "LSE")) {
00224 itype = 3;
00225 io___5.ciunit = *iounit;
00226 s_wsfe(&io___5);
00227 do_fio(&c__1, path, (ftnlen)3);
00228 e_wsfe();
00229 } else if (lsamen_(&c__3, c2, "GLM")) {
00230 itype = 4;
00231 io___6.ciunit = *iounit;
00232 s_wsfe(&io___6);
00233 do_fio(&c__1, path, (ftnlen)3);
00234 e_wsfe();
00235 } else if (lsamen_(&c__3, c2, "GSV")) {
00236 itype = 5;
00237 io___7.ciunit = *iounit;
00238 s_wsfe(&io___7);
00239 do_fio(&c__1, path, (ftnlen)3);
00240 e_wsfe();
00241 }
00242
00243
00244
00245 io___8.ciunit = *iounit;
00246 s_wsfe(&io___8);
00247 do_fio(&c__1, "Matrix types: ", (ftnlen)14);
00248 e_wsfe();
00249
00250 if (itype == 1) {
00251 io___9.ciunit = *iounit;
00252 s_wsfe(&io___9);
00253 do_fio(&c__1, (char *)&c__1, (ftnlen)sizeof(integer));
00254 e_wsfe();
00255 io___10.ciunit = *iounit;
00256 s_wsfe(&io___10);
00257 do_fio(&c__1, (char *)&c__2, (ftnlen)sizeof(integer));
00258 e_wsfe();
00259 io___11.ciunit = *iounit;
00260 s_wsfe(&io___11);
00261 do_fio(&c__1, (char *)&c__3, (ftnlen)sizeof(integer));
00262 e_wsfe();
00263 io___12.ciunit = *iounit;
00264 s_wsfe(&io___12);
00265 do_fio(&c__1, (char *)&c__4, (ftnlen)sizeof(integer));
00266 e_wsfe();
00267 io___13.ciunit = *iounit;
00268 s_wsfe(&io___13);
00269 do_fio(&c__1, (char *)&c__5, (ftnlen)sizeof(integer));
00270 e_wsfe();
00271 io___14.ciunit = *iounit;
00272 s_wsfe(&io___14);
00273 do_fio(&c__1, (char *)&c__6, (ftnlen)sizeof(integer));
00274 e_wsfe();
00275 io___15.ciunit = *iounit;
00276 s_wsfe(&io___15);
00277 do_fio(&c__1, (char *)&c__7, (ftnlen)sizeof(integer));
00278 e_wsfe();
00279 io___16.ciunit = *iounit;
00280 s_wsfe(&io___16);
00281 do_fio(&c__1, (char *)&c__8, (ftnlen)sizeof(integer));
00282 e_wsfe();
00283 } else if (itype == 2) {
00284 io___17.ciunit = *iounit;
00285 s_wsfe(&io___17);
00286 do_fio(&c__1, (char *)&c__1, (ftnlen)sizeof(integer));
00287 e_wsfe();
00288 io___18.ciunit = *iounit;
00289 s_wsfe(&io___18);
00290 do_fio(&c__1, (char *)&c__2, (ftnlen)sizeof(integer));
00291 e_wsfe();
00292 io___19.ciunit = *iounit;
00293 s_wsfe(&io___19);
00294 do_fio(&c__1, (char *)&c__3, (ftnlen)sizeof(integer));
00295 e_wsfe();
00296 io___20.ciunit = *iounit;
00297 s_wsfe(&io___20);
00298 do_fio(&c__1, (char *)&c__4, (ftnlen)sizeof(integer));
00299 e_wsfe();
00300 io___21.ciunit = *iounit;
00301 s_wsfe(&io___21);
00302 do_fio(&c__1, (char *)&c__5, (ftnlen)sizeof(integer));
00303 e_wsfe();
00304 io___22.ciunit = *iounit;
00305 s_wsfe(&io___22);
00306 do_fio(&c__1, (char *)&c__6, (ftnlen)sizeof(integer));
00307 e_wsfe();
00308 io___23.ciunit = *iounit;
00309 s_wsfe(&io___23);
00310 do_fio(&c__1, (char *)&c__7, (ftnlen)sizeof(integer));
00311 e_wsfe();
00312 io___24.ciunit = *iounit;
00313 s_wsfe(&io___24);
00314 do_fio(&c__1, (char *)&c__8, (ftnlen)sizeof(integer));
00315 e_wsfe();
00316 } else if (itype == 3) {
00317 io___25.ciunit = *iounit;
00318 s_wsfe(&io___25);
00319 do_fio(&c__1, (char *)&c__1, (ftnlen)sizeof(integer));
00320 e_wsfe();
00321 io___26.ciunit = *iounit;
00322 s_wsfe(&io___26);
00323 do_fio(&c__1, (char *)&c__2, (ftnlen)sizeof(integer));
00324 e_wsfe();
00325 io___27.ciunit = *iounit;
00326 s_wsfe(&io___27);
00327 do_fio(&c__1, (char *)&c__3, (ftnlen)sizeof(integer));
00328 e_wsfe();
00329 io___28.ciunit = *iounit;
00330 s_wsfe(&io___28);
00331 do_fio(&c__1, (char *)&c__4, (ftnlen)sizeof(integer));
00332 e_wsfe();
00333 io___29.ciunit = *iounit;
00334 s_wsfe(&io___29);
00335 do_fio(&c__1, (char *)&c__5, (ftnlen)sizeof(integer));
00336 e_wsfe();
00337 io___30.ciunit = *iounit;
00338 s_wsfe(&io___30);
00339 do_fio(&c__1, (char *)&c__6, (ftnlen)sizeof(integer));
00340 e_wsfe();
00341 io___31.ciunit = *iounit;
00342 s_wsfe(&io___31);
00343 do_fio(&c__1, (char *)&c__7, (ftnlen)sizeof(integer));
00344 e_wsfe();
00345 io___32.ciunit = *iounit;
00346 s_wsfe(&io___32);
00347 do_fio(&c__1, (char *)&c__8, (ftnlen)sizeof(integer));
00348 e_wsfe();
00349 } else if (itype == 4) {
00350 io___33.ciunit = *iounit;
00351 s_wsfe(&io___33);
00352 do_fio(&c__1, (char *)&c__1, (ftnlen)sizeof(integer));
00353 e_wsfe();
00354 io___34.ciunit = *iounit;
00355 s_wsfe(&io___34);
00356 do_fio(&c__1, (char *)&c__2, (ftnlen)sizeof(integer));
00357 e_wsfe();
00358 io___35.ciunit = *iounit;
00359 s_wsfe(&io___35);
00360 do_fio(&c__1, (char *)&c__3, (ftnlen)sizeof(integer));
00361 e_wsfe();
00362 io___36.ciunit = *iounit;
00363 s_wsfe(&io___36);
00364 do_fio(&c__1, (char *)&c__4, (ftnlen)sizeof(integer));
00365 e_wsfe();
00366 io___37.ciunit = *iounit;
00367 s_wsfe(&io___37);
00368 do_fio(&c__1, (char *)&c__5, (ftnlen)sizeof(integer));
00369 e_wsfe();
00370 io___38.ciunit = *iounit;
00371 s_wsfe(&io___38);
00372 do_fio(&c__1, (char *)&c__6, (ftnlen)sizeof(integer));
00373 e_wsfe();
00374 io___39.ciunit = *iounit;
00375 s_wsfe(&io___39);
00376 do_fio(&c__1, (char *)&c__7, (ftnlen)sizeof(integer));
00377 e_wsfe();
00378 io___40.ciunit = *iounit;
00379 s_wsfe(&io___40);
00380 do_fio(&c__1, (char *)&c__8, (ftnlen)sizeof(integer));
00381 e_wsfe();
00382 } else if (itype == 5) {
00383 io___41.ciunit = *iounit;
00384 s_wsfe(&io___41);
00385 do_fio(&c__1, (char *)&c__1, (ftnlen)sizeof(integer));
00386 e_wsfe();
00387 io___42.ciunit = *iounit;
00388 s_wsfe(&io___42);
00389 do_fio(&c__1, (char *)&c__2, (ftnlen)sizeof(integer));
00390 e_wsfe();
00391 io___43.ciunit = *iounit;
00392 s_wsfe(&io___43);
00393 do_fio(&c__1, (char *)&c__3, (ftnlen)sizeof(integer));
00394 e_wsfe();
00395 io___44.ciunit = *iounit;
00396 s_wsfe(&io___44);
00397 do_fio(&c__1, (char *)&c__4, (ftnlen)sizeof(integer));
00398 e_wsfe();
00399 io___45.ciunit = *iounit;
00400 s_wsfe(&io___45);
00401 do_fio(&c__1, (char *)&c__5, (ftnlen)sizeof(integer));
00402 e_wsfe();
00403 io___46.ciunit = *iounit;
00404 s_wsfe(&io___46);
00405 do_fio(&c__1, (char *)&c__6, (ftnlen)sizeof(integer));
00406 e_wsfe();
00407 io___47.ciunit = *iounit;
00408 s_wsfe(&io___47);
00409 do_fio(&c__1, (char *)&c__7, (ftnlen)sizeof(integer));
00410 e_wsfe();
00411 io___48.ciunit = *iounit;
00412 s_wsfe(&io___48);
00413 do_fio(&c__1, (char *)&c__8, (ftnlen)sizeof(integer));
00414 e_wsfe();
00415 }
00416
00417
00418
00419 io___49.ciunit = *iounit;
00420 s_wsfe(&io___49);
00421 do_fio(&c__1, "Test ratios: ", (ftnlen)13);
00422 e_wsfe();
00423
00424 if (itype == 1) {
00425
00426
00427
00428 io___50.ciunit = *iounit;
00429 s_wsfe(&io___50);
00430 do_fio(&c__1, (char *)&c__1, (ftnlen)sizeof(integer));
00431 e_wsfe();
00432 io___51.ciunit = *iounit;
00433 s_wsfe(&io___51);
00434 do_fio(&c__1, (char *)&c__2, (ftnlen)sizeof(integer));
00435 e_wsfe();
00436 io___52.ciunit = *iounit;
00437 s_wsfe(&io___52);
00438 do_fio(&c__1, (char *)&c__3, (ftnlen)sizeof(integer));
00439 e_wsfe();
00440 io___53.ciunit = *iounit;
00441 s_wsfe(&io___53);
00442 do_fio(&c__1, (char *)&c__4, (ftnlen)sizeof(integer));
00443 e_wsfe();
00444 } else if (itype == 2) {
00445
00446
00447
00448 io___54.ciunit = *iounit;
00449 s_wsfe(&io___54);
00450 do_fio(&c__1, (char *)&c__1, (ftnlen)sizeof(integer));
00451 e_wsfe();
00452 io___55.ciunit = *iounit;
00453 s_wsfe(&io___55);
00454 do_fio(&c__1, (char *)&c__2, (ftnlen)sizeof(integer));
00455 e_wsfe();
00456 io___56.ciunit = *iounit;
00457 s_wsfe(&io___56);
00458 do_fio(&c__1, (char *)&c__3, (ftnlen)sizeof(integer));
00459 e_wsfe();
00460 io___57.ciunit = *iounit;
00461 s_wsfe(&io___57);
00462 do_fio(&c__1, (char *)&c__4, (ftnlen)sizeof(integer));
00463 e_wsfe();
00464 } else if (itype == 3) {
00465
00466
00467
00468 io___58.ciunit = *iounit;
00469 s_wsfe(&io___58);
00470 do_fio(&c__1, (char *)&c__1, (ftnlen)sizeof(integer));
00471 e_wsfe();
00472 io___59.ciunit = *iounit;
00473 s_wsfe(&io___59);
00474 do_fio(&c__1, (char *)&c__2, (ftnlen)sizeof(integer));
00475 e_wsfe();
00476 } else if (itype == 4) {
00477
00478
00479
00480 io___60.ciunit = *iounit;
00481 s_wsfe(&io___60);
00482 do_fio(&c__1, (char *)&c__1, (ftnlen)sizeof(integer));
00483 e_wsfe();
00484 } else if (itype == 5) {
00485
00486
00487
00488 io___61.ciunit = *iounit;
00489 s_wsfe(&io___61);
00490 do_fio(&c__1, (char *)&c__1, (ftnlen)sizeof(integer));
00491 e_wsfe();
00492 io___62.ciunit = *iounit;
00493 s_wsfe(&io___62);
00494 do_fio(&c__1, (char *)&c__2, (ftnlen)sizeof(integer));
00495 e_wsfe();
00496 io___63.ciunit = *iounit;
00497 s_wsfe(&io___63);
00498 do_fio(&c__1, (char *)&c__3, (ftnlen)sizeof(integer));
00499 e_wsfe();
00500 io___64.ciunit = *iounit;
00501 s_wsfe(&io___64);
00502 do_fio(&c__1, (char *)&c__4, (ftnlen)sizeof(integer));
00503 e_wsfe();
00504 io___65.ciunit = *iounit;
00505 s_wsfe(&io___65);
00506 do_fio(&c__1, (char *)&c__5, (ftnlen)sizeof(integer));
00507 e_wsfe();
00508 }
00509
00510
00511
00512
00513
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529
00530 return 0;
00531
00532
00533
00534 }