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__1 = 1;
00019
00020 doublereal zlanhf_(char *norm, char *transr, char *uplo, integer *n,
00021 doublecomplex *a, doublereal *work)
00022 {
00023
00024 integer i__1, i__2;
00025 doublereal ret_val, d__1, d__2, d__3;
00026
00027
00028 double z_abs(doublecomplex *), sqrt(doublereal);
00029
00030
00031 integer i__, j, k, l;
00032 doublereal s;
00033 integer n1;
00034 doublereal aa;
00035 integer lda, ifm, noe, ilu;
00036 doublereal scale;
00037 extern logical lsame_(char *, char *);
00038 doublereal value;
00039 extern integer idamax_(integer *, doublereal *, integer *);
00040 extern int zlassq_(integer *, doublecomplex *, integer *,
00041 doublereal *, doublereal *);
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
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
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249 if (*n == 0) {
00250 ret_val = 0.;
00251 return ret_val;
00252 }
00253
00254
00255
00256 noe = 1;
00257 if (*n % 2 == 0) {
00258 noe = 0;
00259 }
00260
00261
00262
00263 ifm = 1;
00264 if (lsame_(transr, "C")) {
00265 ifm = 0;
00266 }
00267
00268
00269
00270 ilu = 1;
00271 if (lsame_(uplo, "U")) {
00272 ilu = 0;
00273 }
00274
00275
00276
00277
00278
00279 if (ifm == 1) {
00280 if (noe == 1) {
00281 lda = *n;
00282 } else {
00283
00284 lda = *n + 1;
00285 }
00286 } else {
00287
00288 lda = (*n + 1) / 2;
00289 }
00290
00291 if (lsame_(norm, "M")) {
00292
00293
00294
00295 k = (*n + 1) / 2;
00296 value = 0.;
00297 if (noe == 1) {
00298
00299 if (ifm == 1) {
00300
00301 if (ilu == 1) {
00302
00303 j = 0;
00304
00305
00306 i__1 = j + j * lda;
00307 d__2 = value, d__3 = (d__1 = a[i__1].r, abs(d__1));
00308 value = max(d__2,d__3);
00309 i__1 = *n - 1;
00310 for (i__ = 1; i__ <= i__1; ++i__) {
00311
00312 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00313 value = max(d__1,d__2);
00314 }
00315 i__1 = k - 1;
00316 for (j = 1; j <= i__1; ++j) {
00317 i__2 = j - 2;
00318 for (i__ = 0; i__ <= i__2; ++i__) {
00319
00320 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00321 value = max(d__1,d__2);
00322 }
00323 i__ = j - 1;
00324
00325
00326 i__2 = i__ + j * lda;
00327 d__2 = value, d__3 = (d__1 = a[i__2].r, abs(d__1));
00328 value = max(d__2,d__3);
00329 i__ = j;
00330
00331
00332 i__2 = i__ + j * lda;
00333 d__2 = value, d__3 = (d__1 = a[i__2].r, abs(d__1));
00334 value = max(d__2,d__3);
00335 i__2 = *n - 1;
00336 for (i__ = j + 1; i__ <= i__2; ++i__) {
00337
00338 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00339 value = max(d__1,d__2);
00340 }
00341 }
00342 } else {
00343
00344 i__1 = k - 2;
00345 for (j = 0; j <= i__1; ++j) {
00346 i__2 = k + j - 2;
00347 for (i__ = 0; i__ <= i__2; ++i__) {
00348
00349 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00350 value = max(d__1,d__2);
00351 }
00352 i__ = k + j - 1;
00353
00354
00355 i__2 = i__ + j * lda;
00356 d__2 = value, d__3 = (d__1 = a[i__2].r, abs(d__1));
00357 value = max(d__2,d__3);
00358 ++i__;
00359
00360
00361 i__2 = i__ + j * lda;
00362 d__2 = value, d__3 = (d__1 = a[i__2].r, abs(d__1));
00363 value = max(d__2,d__3);
00364 i__2 = *n - 1;
00365 for (i__ = k + j + 1; i__ <= i__2; ++i__) {
00366
00367 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00368 value = max(d__1,d__2);
00369 }
00370 }
00371 i__1 = *n - 2;
00372 for (i__ = 0; i__ <= i__1; ++i__) {
00373
00374 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00375 value = max(d__1,d__2);
00376
00377 }
00378
00379
00380 i__1 = i__ + j * lda;
00381 d__2 = value, d__3 = (d__1 = a[i__1].r, abs(d__1));
00382 value = max(d__2,d__3);
00383 }
00384 } else {
00385
00386 if (ilu == 1) {
00387
00388 i__1 = k - 2;
00389 for (j = 0; j <= i__1; ++j) {
00390 i__2 = j - 1;
00391 for (i__ = 0; i__ <= i__2; ++i__) {
00392
00393 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00394 value = max(d__1,d__2);
00395 }
00396 i__ = j;
00397
00398
00399 i__2 = i__ + j * lda;
00400 d__2 = value, d__3 = (d__1 = a[i__2].r, abs(d__1));
00401 value = max(d__2,d__3);
00402 i__ = j + 1;
00403
00404
00405 i__2 = i__ + j * lda;
00406 d__2 = value, d__3 = (d__1 = a[i__2].r, abs(d__1));
00407 value = max(d__2,d__3);
00408 i__2 = k - 1;
00409 for (i__ = j + 2; i__ <= i__2; ++i__) {
00410
00411 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00412 value = max(d__1,d__2);
00413 }
00414 }
00415 j = k - 1;
00416 i__1 = k - 2;
00417 for (i__ = 0; i__ <= i__1; ++i__) {
00418
00419 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00420 value = max(d__1,d__2);
00421 }
00422 i__ = k - 1;
00423
00424
00425 i__1 = i__ + j * lda;
00426 d__2 = value, d__3 = (d__1 = a[i__1].r, abs(d__1));
00427 value = max(d__2,d__3);
00428 i__1 = *n - 1;
00429 for (j = k; j <= i__1; ++j) {
00430 i__2 = k - 1;
00431 for (i__ = 0; i__ <= i__2; ++i__) {
00432
00433 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00434 value = max(d__1,d__2);
00435 }
00436 }
00437 } else {
00438
00439 i__1 = k - 2;
00440 for (j = 0; j <= i__1; ++j) {
00441 i__2 = k - 1;
00442 for (i__ = 0; i__ <= i__2; ++i__) {
00443
00444 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00445 value = max(d__1,d__2);
00446 }
00447 }
00448 j = k - 1;
00449
00450
00451 i__1 = j * lda;
00452 d__2 = value, d__3 = (d__1 = a[i__1].r, abs(d__1));
00453 value = max(d__2,d__3);
00454 i__1 = k - 1;
00455 for (i__ = 1; i__ <= i__1; ++i__) {
00456
00457 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00458 value = max(d__1,d__2);
00459 }
00460 i__1 = *n - 1;
00461 for (j = k; j <= i__1; ++j) {
00462 i__2 = j - k - 1;
00463 for (i__ = 0; i__ <= i__2; ++i__) {
00464
00465 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00466 value = max(d__1,d__2);
00467 }
00468 i__ = j - k;
00469
00470
00471 i__2 = i__ + j * lda;
00472 d__2 = value, d__3 = (d__1 = a[i__2].r, abs(d__1));
00473 value = max(d__2,d__3);
00474 i__ = j - k + 1;
00475
00476
00477 i__2 = i__ + j * lda;
00478 d__2 = value, d__3 = (d__1 = a[i__2].r, abs(d__1));
00479 value = max(d__2,d__3);
00480 i__2 = k - 1;
00481 for (i__ = j - k + 2; i__ <= i__2; ++i__) {
00482
00483 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00484 value = max(d__1,d__2);
00485 }
00486 }
00487 }
00488 }
00489 } else {
00490
00491 if (ifm == 1) {
00492
00493 if (ilu == 1) {
00494
00495 j = 0;
00496
00497
00498 i__1 = j + j * lda;
00499 d__2 = value, d__3 = (d__1 = a[i__1].r, abs(d__1));
00500 value = max(d__2,d__3);
00501
00502 i__1 = j + 1 + j * lda;
00503 d__2 = value, d__3 = (d__1 = a[i__1].r, abs(d__1));
00504 value = max(d__2,d__3);
00505 i__1 = *n;
00506 for (i__ = 2; i__ <= i__1; ++i__) {
00507
00508 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00509 value = max(d__1,d__2);
00510 }
00511 i__1 = k - 1;
00512 for (j = 1; j <= i__1; ++j) {
00513 i__2 = j - 1;
00514 for (i__ = 0; i__ <= i__2; ++i__) {
00515
00516 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00517 value = max(d__1,d__2);
00518 }
00519 i__ = j;
00520
00521
00522 i__2 = i__ + j * lda;
00523 d__2 = value, d__3 = (d__1 = a[i__2].r, abs(d__1));
00524 value = max(d__2,d__3);
00525 i__ = j + 1;
00526
00527
00528 i__2 = i__ + j * lda;
00529 d__2 = value, d__3 = (d__1 = a[i__2].r, abs(d__1));
00530 value = max(d__2,d__3);
00531 i__2 = *n;
00532 for (i__ = j + 2; i__ <= i__2; ++i__) {
00533
00534 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00535 value = max(d__1,d__2);
00536 }
00537 }
00538 } else {
00539
00540 i__1 = k - 2;
00541 for (j = 0; j <= i__1; ++j) {
00542 i__2 = k + j - 1;
00543 for (i__ = 0; i__ <= i__2; ++i__) {
00544
00545 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00546 value = max(d__1,d__2);
00547 }
00548 i__ = k + j;
00549
00550
00551 i__2 = i__ + j * lda;
00552 d__2 = value, d__3 = (d__1 = a[i__2].r, abs(d__1));
00553 value = max(d__2,d__3);
00554 ++i__;
00555
00556
00557 i__2 = i__ + j * lda;
00558 d__2 = value, d__3 = (d__1 = a[i__2].r, abs(d__1));
00559 value = max(d__2,d__3);
00560 i__2 = *n;
00561 for (i__ = k + j + 2; i__ <= i__2; ++i__) {
00562
00563 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00564 value = max(d__1,d__2);
00565 }
00566 }
00567 i__1 = *n - 2;
00568 for (i__ = 0; i__ <= i__1; ++i__) {
00569
00570 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00571 value = max(d__1,d__2);
00572
00573 }
00574
00575
00576 i__1 = i__ + j * lda;
00577 d__2 = value, d__3 = (d__1 = a[i__1].r, abs(d__1));
00578 value = max(d__2,d__3);
00579 i__ = *n;
00580
00581
00582 i__1 = i__ + j * lda;
00583 d__2 = value, d__3 = (d__1 = a[i__1].r, abs(d__1));
00584 value = max(d__2,d__3);
00585 }
00586 } else {
00587
00588 if (ilu == 1) {
00589
00590 j = 0;
00591
00592
00593 i__1 = j + j * lda;
00594 d__2 = value, d__3 = (d__1 = a[i__1].r, abs(d__1));
00595 value = max(d__2,d__3);
00596 i__1 = k - 1;
00597 for (i__ = 1; i__ <= i__1; ++i__) {
00598
00599 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00600 value = max(d__1,d__2);
00601 }
00602 i__1 = k - 1;
00603 for (j = 1; j <= i__1; ++j) {
00604 i__2 = j - 2;
00605 for (i__ = 0; i__ <= i__2; ++i__) {
00606
00607 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00608 value = max(d__1,d__2);
00609 }
00610 i__ = j - 1;
00611
00612
00613 i__2 = i__ + j * lda;
00614 d__2 = value, d__3 = (d__1 = a[i__2].r, abs(d__1));
00615 value = max(d__2,d__3);
00616 i__ = j;
00617
00618
00619 i__2 = i__ + j * lda;
00620 d__2 = value, d__3 = (d__1 = a[i__2].r, abs(d__1));
00621 value = max(d__2,d__3);
00622 i__2 = k - 1;
00623 for (i__ = j + 1; i__ <= i__2; ++i__) {
00624
00625 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00626 value = max(d__1,d__2);
00627 }
00628 }
00629 j = k;
00630 i__1 = k - 2;
00631 for (i__ = 0; i__ <= i__1; ++i__) {
00632
00633 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00634 value = max(d__1,d__2);
00635 }
00636 i__ = k - 1;
00637
00638
00639 i__1 = i__ + j * lda;
00640 d__2 = value, d__3 = (d__1 = a[i__1].r, abs(d__1));
00641 value = max(d__2,d__3);
00642 i__1 = *n;
00643 for (j = k + 1; j <= i__1; ++j) {
00644 i__2 = k - 1;
00645 for (i__ = 0; i__ <= i__2; ++i__) {
00646
00647 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00648 value = max(d__1,d__2);
00649 }
00650 }
00651 } else {
00652
00653 i__1 = k - 1;
00654 for (j = 0; j <= i__1; ++j) {
00655 i__2 = k - 1;
00656 for (i__ = 0; i__ <= i__2; ++i__) {
00657
00658 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00659 value = max(d__1,d__2);
00660 }
00661 }
00662 j = k;
00663
00664
00665 i__1 = j * lda;
00666 d__2 = value, d__3 = (d__1 = a[i__1].r, abs(d__1));
00667 value = max(d__2,d__3);
00668 i__1 = k - 1;
00669 for (i__ = 1; i__ <= i__1; ++i__) {
00670
00671 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00672 value = max(d__1,d__2);
00673 }
00674 i__1 = *n - 1;
00675 for (j = k + 1; j <= i__1; ++j) {
00676 i__2 = j - k - 2;
00677 for (i__ = 0; i__ <= i__2; ++i__) {
00678
00679 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00680 value = max(d__1,d__2);
00681 }
00682 i__ = j - k - 1;
00683
00684
00685 i__2 = i__ + j * lda;
00686 d__2 = value, d__3 = (d__1 = a[i__2].r, abs(d__1));
00687 value = max(d__2,d__3);
00688 i__ = j - k;
00689
00690
00691 i__2 = i__ + j * lda;
00692 d__2 = value, d__3 = (d__1 = a[i__2].r, abs(d__1));
00693 value = max(d__2,d__3);
00694 i__2 = k - 1;
00695 for (i__ = j - k + 1; i__ <= i__2; ++i__) {
00696
00697 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00698 value = max(d__1,d__2);
00699 }
00700 }
00701 j = *n;
00702 i__1 = k - 2;
00703 for (i__ = 0; i__ <= i__1; ++i__) {
00704
00705 d__1 = value, d__2 = z_abs(&a[i__ + j * lda]);
00706 value = max(d__1,d__2);
00707 }
00708 i__ = k - 1;
00709
00710
00711 i__1 = i__ + j * lda;
00712 d__2 = value, d__3 = (d__1 = a[i__1].r, abs(d__1));
00713 value = max(d__2,d__3);
00714 }
00715 }
00716 }
00717 } else if (lsame_(norm, "I") || lsame_(norm, "O") || *(unsigned char *)norm == '1') {
00718
00719
00720
00721 if (ifm == 1) {
00722
00723 k = *n / 2;
00724 if (noe == 1) {
00725
00726 if (ilu == 0) {
00727
00728 i__1 = k - 1;
00729 for (i__ = 0; i__ <= i__1; ++i__) {
00730 work[i__] = 0.;
00731 }
00732 i__1 = k;
00733 for (j = 0; j <= i__1; ++j) {
00734 s = 0.;
00735 i__2 = k + j - 1;
00736 for (i__ = 0; i__ <= i__2; ++i__) {
00737 aa = z_abs(&a[i__ + j * lda]);
00738
00739 s += aa;
00740 work[i__] += aa;
00741 }
00742 i__2 = i__ + j * lda;
00743 aa = (d__1 = a[i__2].r, abs(d__1));
00744
00745 work[j + k] = s + aa;
00746 if (i__ == k + k) {
00747 goto L10;
00748 }
00749 ++i__;
00750 i__2 = i__ + j * lda;
00751 aa = (d__1 = a[i__2].r, abs(d__1));
00752
00753 work[j] += aa;
00754 s = 0.;
00755 i__2 = k - 1;
00756 for (l = j + 1; l <= i__2; ++l) {
00757 ++i__;
00758 aa = z_abs(&a[i__ + j * lda]);
00759
00760 s += aa;
00761 work[l] += aa;
00762 }
00763 work[j] += s;
00764 }
00765 L10:
00766 i__ = idamax_(n, work, &c__1);
00767 value = work[i__ - 1];
00768 } else {
00769
00770 ++k;
00771
00772 i__1 = *n - 1;
00773 for (i__ = k; i__ <= i__1; ++i__) {
00774 work[i__] = 0.;
00775 }
00776 for (j = k - 1; j >= 0; --j) {
00777 s = 0.;
00778 i__1 = j - 2;
00779 for (i__ = 0; i__ <= i__1; ++i__) {
00780 aa = z_abs(&a[i__ + j * lda]);
00781
00782 s += aa;
00783 work[i__ + k] += aa;
00784 }
00785 if (j > 0) {
00786 i__1 = i__ + j * lda;
00787 aa = (d__1 = a[i__1].r, abs(d__1));
00788
00789 s += aa;
00790 work[i__ + k] += s;
00791
00792 ++i__;
00793 }
00794 i__1 = i__ + j * lda;
00795 aa = (d__1 = a[i__1].r, abs(d__1));
00796
00797 work[j] = aa;
00798 s = 0.;
00799 i__1 = *n - 1;
00800 for (l = j + 1; l <= i__1; ++l) {
00801 ++i__;
00802 aa = z_abs(&a[i__ + j * lda]);
00803
00804 s += aa;
00805 work[l] += aa;
00806 }
00807 work[j] += s;
00808 }
00809 i__ = idamax_(n, work, &c__1);
00810 value = work[i__ - 1];
00811 }
00812 } else {
00813
00814 if (ilu == 0) {
00815
00816 i__1 = k - 1;
00817 for (i__ = 0; i__ <= i__1; ++i__) {
00818 work[i__] = 0.;
00819 }
00820 i__1 = k - 1;
00821 for (j = 0; j <= i__1; ++j) {
00822 s = 0.;
00823 i__2 = k + j - 1;
00824 for (i__ = 0; i__ <= i__2; ++i__) {
00825 aa = z_abs(&a[i__ + j * lda]);
00826
00827 s += aa;
00828 work[i__] += aa;
00829 }
00830 i__2 = i__ + j * lda;
00831 aa = (d__1 = a[i__2].r, abs(d__1));
00832
00833 work[j + k] = s + aa;
00834 ++i__;
00835 i__2 = i__ + j * lda;
00836 aa = (d__1 = a[i__2].r, abs(d__1));
00837
00838 work[j] += aa;
00839 s = 0.;
00840 i__2 = k - 1;
00841 for (l = j + 1; l <= i__2; ++l) {
00842 ++i__;
00843 aa = z_abs(&a[i__ + j * lda]);
00844
00845 s += aa;
00846 work[l] += aa;
00847 }
00848 work[j] += s;
00849 }
00850 i__ = idamax_(n, work, &c__1);
00851 value = work[i__ - 1];
00852 } else {
00853
00854 i__1 = *n - 1;
00855 for (i__ = k; i__ <= i__1; ++i__) {
00856 work[i__] = 0.;
00857 }
00858 for (j = k - 1; j >= 0; --j) {
00859 s = 0.;
00860 i__1 = j - 1;
00861 for (i__ = 0; i__ <= i__1; ++i__) {
00862 aa = z_abs(&a[i__ + j * lda]);
00863
00864 s += aa;
00865 work[i__ + k] += aa;
00866 }
00867 i__1 = i__ + j * lda;
00868 aa = (d__1 = a[i__1].r, abs(d__1));
00869
00870 s += aa;
00871 work[i__ + k] += s;
00872
00873 ++i__;
00874 i__1 = i__ + j * lda;
00875 aa = (d__1 = a[i__1].r, abs(d__1));
00876
00877 work[j] = aa;
00878 s = 0.;
00879 i__1 = *n - 1;
00880 for (l = j + 1; l <= i__1; ++l) {
00881 ++i__;
00882 aa = z_abs(&a[i__ + j * lda]);
00883
00884 s += aa;
00885 work[l] += aa;
00886 }
00887 work[j] += s;
00888 }
00889 i__ = idamax_(n, work, &c__1);
00890 value = work[i__ - 1];
00891 }
00892 }
00893 } else {
00894
00895 k = *n / 2;
00896 if (noe == 1) {
00897
00898 if (ilu == 0) {
00899
00900 n1 = k;
00901
00902 ++k;
00903
00904 i__1 = *n - 1;
00905 for (i__ = n1; i__ <= i__1; ++i__) {
00906 work[i__] = 0.;
00907 }
00908 i__1 = n1 - 1;
00909 for (j = 0; j <= i__1; ++j) {
00910 s = 0.;
00911 i__2 = k - 1;
00912 for (i__ = 0; i__ <= i__2; ++i__) {
00913 aa = z_abs(&a[i__ + j * lda]);
00914
00915 work[i__ + n1] += aa;
00916 s += aa;
00917 }
00918 work[j] = s;
00919 }
00920
00921 i__1 = j * lda;
00922 s = (d__1 = a[i__1].r, abs(d__1));
00923
00924 i__1 = k - 1;
00925 for (i__ = 1; i__ <= i__1; ++i__) {
00926 aa = z_abs(&a[i__ + j * lda]);
00927
00928 work[i__ + n1] += aa;
00929 s += aa;
00930 }
00931 work[j] += s;
00932 i__1 = *n - 1;
00933 for (j = k; j <= i__1; ++j) {
00934 s = 0.;
00935 i__2 = j - k - 1;
00936 for (i__ = 0; i__ <= i__2; ++i__) {
00937 aa = z_abs(&a[i__ + j * lda]);
00938
00939 work[i__] += aa;
00940 s += aa;
00941 }
00942
00943 i__2 = i__ + j * lda;
00944 aa = (d__1 = a[i__2].r, abs(d__1));
00945
00946 s += aa;
00947 work[j - k] += s;
00948 ++i__;
00949 i__2 = i__ + j * lda;
00950 s = (d__1 = a[i__2].r, abs(d__1));
00951
00952 i__2 = *n - 1;
00953 for (l = j + 1; l <= i__2; ++l) {
00954 ++i__;
00955 aa = z_abs(&a[i__ + j * lda]);
00956
00957 work[l] += aa;
00958 s += aa;
00959 }
00960 work[j] += s;
00961 }
00962 i__ = idamax_(n, work, &c__1);
00963 value = work[i__ - 1];
00964 } else {
00965
00966 ++k;
00967
00968 i__1 = *n - 1;
00969 for (i__ = k; i__ <= i__1; ++i__) {
00970 work[i__] = 0.;
00971 }
00972 i__1 = k - 2;
00973 for (j = 0; j <= i__1; ++j) {
00974
00975 s = 0.;
00976 i__2 = j - 1;
00977 for (i__ = 0; i__ <= i__2; ++i__) {
00978 aa = z_abs(&a[i__ + j * lda]);
00979
00980 work[i__] += aa;
00981 s += aa;
00982 }
00983 i__2 = i__ + j * lda;
00984 aa = (d__1 = a[i__2].r, abs(d__1));
00985
00986 s += aa;
00987 work[j] = s;
00988
00989 ++i__;
00990
00991 i__2 = i__ + j * lda;
00992 aa = (d__1 = a[i__2].r, abs(d__1));
00993 s = aa;
00994 i__2 = *n - 1;
00995 for (l = k + j + 1; l <= i__2; ++l) {
00996 ++i__;
00997 aa = z_abs(&a[i__ + j * lda]);
00998
00999 s += aa;
01000 work[l] += aa;
01001 }
01002 work[k + j] += s;
01003 }
01004
01005 s = 0.;
01006 i__1 = k - 2;
01007 for (i__ = 0; i__ <= i__1; ++i__) {
01008 aa = z_abs(&a[i__ + j * lda]);
01009
01010 work[i__] += aa;
01011 s += aa;
01012 }
01013
01014 i__1 = i__ + j * lda;
01015 aa = (d__1 = a[i__1].r, abs(d__1));
01016
01017 s += aa;
01018 work[i__] = s;
01019
01020 i__1 = *n - 1;
01021 for (j = k; j <= i__1; ++j) {
01022
01023 s = 0.;
01024 i__2 = k - 1;
01025 for (i__ = 0; i__ <= i__2; ++i__) {
01026 aa = z_abs(&a[i__ + j * lda]);
01027
01028 work[i__] += aa;
01029 s += aa;
01030 }
01031 work[j] += s;
01032 }
01033 i__ = idamax_(n, work, &c__1);
01034 value = work[i__ - 1];
01035 }
01036 } else {
01037
01038 if (ilu == 0) {
01039
01040 i__1 = *n - 1;
01041 for (i__ = k; i__ <= i__1; ++i__) {
01042 work[i__] = 0.;
01043 }
01044 i__1 = k - 1;
01045 for (j = 0; j <= i__1; ++j) {
01046 s = 0.;
01047 i__2 = k - 1;
01048 for (i__ = 0; i__ <= i__2; ++i__) {
01049 aa = z_abs(&a[i__ + j * lda]);
01050
01051 work[i__ + k] += aa;
01052 s += aa;
01053 }
01054 work[j] = s;
01055 }
01056
01057 i__1 = j * lda;
01058 aa = (d__1 = a[i__1].r, abs(d__1));
01059
01060 s = aa;
01061 i__1 = k - 1;
01062 for (i__ = 1; i__ <= i__1; ++i__) {
01063 aa = z_abs(&a[i__ + j * lda]);
01064
01065 work[i__ + k] += aa;
01066 s += aa;
01067 }
01068 work[j] += s;
01069 i__1 = *n - 1;
01070 for (j = k + 1; j <= i__1; ++j) {
01071 s = 0.;
01072 i__2 = j - 2 - k;
01073 for (i__ = 0; i__ <= i__2; ++i__) {
01074 aa = z_abs(&a[i__ + j * lda]);
01075
01076 work[i__] += aa;
01077 s += aa;
01078 }
01079
01080 i__2 = i__ + j * lda;
01081 aa = (d__1 = a[i__2].r, abs(d__1));
01082
01083 s += aa;
01084 work[j - k - 1] += s;
01085 ++i__;
01086 i__2 = i__ + j * lda;
01087 aa = (d__1 = a[i__2].r, abs(d__1));
01088
01089 s = aa;
01090 i__2 = *n - 1;
01091 for (l = j + 1; l <= i__2; ++l) {
01092 ++i__;
01093 aa = z_abs(&a[i__ + j * lda]);
01094
01095 work[l] += aa;
01096 s += aa;
01097 }
01098 work[j] += s;
01099 }
01100
01101 s = 0.;
01102 i__1 = k - 2;
01103 for (i__ = 0; i__ <= i__1; ++i__) {
01104 aa = z_abs(&a[i__ + j * lda]);
01105
01106 work[i__] += aa;
01107 s += aa;
01108 }
01109
01110 i__1 = i__ + j * lda;
01111 aa = (d__1 = a[i__1].r, abs(d__1));
01112
01113 s += aa;
01114 work[i__] += s;
01115 i__ = idamax_(n, work, &c__1);
01116 value = work[i__ - 1];
01117 } else {
01118
01119 i__1 = *n - 1;
01120 for (i__ = k; i__ <= i__1; ++i__) {
01121 work[i__] = 0.;
01122 }
01123
01124 s = (d__1 = a[0].r, abs(d__1));
01125
01126 i__1 = k - 1;
01127 for (i__ = 1; i__ <= i__1; ++i__) {
01128 aa = z_abs(&a[i__]);
01129
01130 work[i__ + k] += aa;
01131 s += aa;
01132 }
01133 work[k] += s;
01134 i__1 = k - 1;
01135 for (j = 1; j <= i__1; ++j) {
01136
01137 s = 0.;
01138 i__2 = j - 2;
01139 for (i__ = 0; i__ <= i__2; ++i__) {
01140 aa = z_abs(&a[i__ + j * lda]);
01141
01142 work[i__] += aa;
01143 s += aa;
01144 }
01145 i__2 = i__ + j * lda;
01146 aa = (d__1 = a[i__2].r, abs(d__1));
01147
01148 s += aa;
01149 work[j - 1] = s;
01150
01151 ++i__;
01152
01153 i__2 = i__ + j * lda;
01154 aa = (d__1 = a[i__2].r, abs(d__1));
01155 s = aa;
01156 i__2 = *n - 1;
01157 for (l = k + j + 1; l <= i__2; ++l) {
01158 ++i__;
01159 aa = z_abs(&a[i__ + j * lda]);
01160
01161 s += aa;
01162 work[l] += aa;
01163 }
01164 work[k + j] += s;
01165 }
01166
01167 s = 0.;
01168 i__1 = k - 2;
01169 for (i__ = 0; i__ <= i__1; ++i__) {
01170 aa = z_abs(&a[i__ + j * lda]);
01171
01172 work[i__] += aa;
01173 s += aa;
01174 }
01175
01176
01177 i__1 = i__ + j * lda;
01178 aa = (d__1 = a[i__1].r, abs(d__1));
01179
01180 s += aa;
01181 work[i__] = s;
01182
01183 i__1 = *n;
01184 for (j = k + 1; j <= i__1; ++j) {
01185
01186
01187 s = 0.;
01188 i__2 = k - 1;
01189 for (i__ = 0; i__ <= i__2; ++i__) {
01190 aa = z_abs(&a[i__ + j * lda]);
01191
01192 work[i__] += aa;
01193 s += aa;
01194 }
01195 work[j - 1] += s;
01196 }
01197 i__ = idamax_(n, work, &c__1);
01198 value = work[i__ - 1];
01199 }
01200 }
01201 }
01202 } else if (lsame_(norm, "F") || lsame_(norm, "E")) {
01203
01204
01205
01206 k = (*n + 1) / 2;
01207 scale = 0.;
01208 s = 1.;
01209 if (noe == 1) {
01210
01211 if (ifm == 1) {
01212
01213 if (ilu == 0) {
01214
01215 i__1 = k - 3;
01216 for (j = 0; j <= i__1; ++j) {
01217 i__2 = k - j - 2;
01218 zlassq_(&i__2, &a[k + j + 1 + j * lda], &c__1, &scale,
01219 &s);
01220
01221 }
01222 i__1 = k - 1;
01223 for (j = 0; j <= i__1; ++j) {
01224 i__2 = k + j - 1;
01225 zlassq_(&i__2, &a[j * lda], &c__1, &scale, &s);
01226
01227 }
01228 s += s;
01229
01230 l = k - 1;
01231
01232 i__1 = k - 2;
01233 for (i__ = 0; i__ <= i__1; ++i__) {
01234 i__2 = l;
01235 aa = a[i__2].r;
01236
01237 if (aa != 0.) {
01238 if (scale < aa) {
01239
01240 d__1 = scale / aa;
01241 s = s * (d__1 * d__1) + 1.;
01242 scale = aa;
01243 } else {
01244
01245 d__1 = aa / scale;
01246 s += d__1 * d__1;
01247 }
01248 }
01249 i__2 = l + 1;
01250 aa = a[i__2].r;
01251
01252 if (aa != 0.) {
01253 if (scale < aa) {
01254
01255 d__1 = scale / aa;
01256 s = s * (d__1 * d__1) + 1.;
01257 scale = aa;
01258 } else {
01259
01260 d__1 = aa / scale;
01261 s += d__1 * d__1;
01262 }
01263 }
01264 l = l + lda + 1;
01265 }
01266 i__1 = l;
01267 aa = a[i__1].r;
01268
01269 if (aa != 0.) {
01270 if (scale < aa) {
01271
01272 d__1 = scale / aa;
01273 s = s * (d__1 * d__1) + 1.;
01274 scale = aa;
01275 } else {
01276
01277 d__1 = aa / scale;
01278 s += d__1 * d__1;
01279 }
01280 }
01281 } else {
01282
01283 i__1 = k - 1;
01284 for (j = 0; j <= i__1; ++j) {
01285 i__2 = *n - j - 1;
01286 zlassq_(&i__2, &a[j + 1 + j * lda], &c__1, &scale, &s)
01287 ;
01288
01289 }
01290 i__1 = k - 2;
01291 for (j = 1; j <= i__1; ++j) {
01292 zlassq_(&j, &a[(j + 1) * lda], &c__1, &scale, &s);
01293
01294 }
01295 s += s;
01296
01297 aa = a[0].r;
01298
01299 if (aa != 0.) {
01300 if (scale < aa) {
01301
01302 d__1 = scale / aa;
01303 s = s * (d__1 * d__1) + 1.;
01304 scale = aa;
01305 } else {
01306
01307 d__1 = aa / scale;
01308 s += d__1 * d__1;
01309 }
01310 }
01311 l = lda;
01312
01313 i__1 = k - 1;
01314 for (i__ = 1; i__ <= i__1; ++i__) {
01315 i__2 = l;
01316 aa = a[i__2].r;
01317
01318 if (aa != 0.) {
01319 if (scale < aa) {
01320
01321 d__1 = scale / aa;
01322 s = s * (d__1 * d__1) + 1.;
01323 scale = aa;
01324 } else {
01325
01326 d__1 = aa / scale;
01327 s += d__1 * d__1;
01328 }
01329 }
01330 i__2 = l + 1;
01331 aa = a[i__2].r;
01332
01333 if (aa != 0.) {
01334 if (scale < aa) {
01335
01336 d__1 = scale / aa;
01337 s = s * (d__1 * d__1) + 1.;
01338 scale = aa;
01339 } else {
01340
01341 d__1 = aa / scale;
01342 s += d__1 * d__1;
01343 }
01344 }
01345 l = l + lda + 1;
01346 }
01347 }
01348 } else {
01349
01350 if (ilu == 0) {
01351
01352 i__1 = k - 2;
01353 for (j = 1; j <= i__1; ++j) {
01354 zlassq_(&j, &a[(k + j) * lda], &c__1, &scale, &s);
01355
01356 }
01357 i__1 = k - 2;
01358 for (j = 0; j <= i__1; ++j) {
01359 zlassq_(&k, &a[j * lda], &c__1, &scale, &s);
01360
01361 }
01362 i__1 = k - 2;
01363 for (j = 0; j <= i__1; ++j) {
01364 i__2 = k - j - 1;
01365 zlassq_(&i__2, &a[j + 1 + (j + k - 1) * lda], &c__1, &
01366 scale, &s);
01367
01368 }
01369 s += s;
01370
01371 l = k * lda - lda;
01372
01373 i__1 = l;
01374 aa = a[i__1].r;
01375
01376 if (aa != 0.) {
01377 if (scale < aa) {
01378
01379 d__1 = scale / aa;
01380 s = s * (d__1 * d__1) + 1.;
01381 scale = aa;
01382 } else {
01383
01384 d__1 = aa / scale;
01385 s += d__1 * d__1;
01386 }
01387 }
01388 l += lda;
01389
01390 i__1 = *n - 1;
01391 for (j = k; j <= i__1; ++j) {
01392 i__2 = l;
01393 aa = a[i__2].r;
01394
01395 if (aa != 0.) {
01396 if (scale < aa) {
01397
01398 d__1 = scale / aa;
01399 s = s * (d__1 * d__1) + 1.;
01400 scale = aa;
01401 } else {
01402
01403 d__1 = aa / scale;
01404 s += d__1 * d__1;
01405 }
01406 }
01407 i__2 = l + 1;
01408 aa = a[i__2].r;
01409
01410 if (aa != 0.) {
01411 if (scale < aa) {
01412
01413 d__1 = scale / aa;
01414 s = s * (d__1 * d__1) + 1.;
01415 scale = aa;
01416 } else {
01417
01418 d__1 = aa / scale;
01419 s += d__1 * d__1;
01420 }
01421 }
01422 l = l + lda + 1;
01423 }
01424 } else {
01425
01426 i__1 = k - 1;
01427 for (j = 1; j <= i__1; ++j) {
01428 zlassq_(&j, &a[j * lda], &c__1, &scale, &s);
01429
01430 }
01431 i__1 = *n - 1;
01432 for (j = k; j <= i__1; ++j) {
01433 zlassq_(&k, &a[j * lda], &c__1, &scale, &s);
01434
01435 }
01436 i__1 = k - 3;
01437 for (j = 0; j <= i__1; ++j) {
01438 i__2 = k - j - 2;
01439 zlassq_(&i__2, &a[j + 2 + j * lda], &c__1, &scale, &s)
01440 ;
01441
01442 }
01443 s += s;
01444
01445 l = 0;
01446
01447 i__1 = k - 2;
01448 for (i__ = 0; i__ <= i__1; ++i__) {
01449 i__2 = l;
01450 aa = a[i__2].r;
01451
01452 if (aa != 0.) {
01453 if (scale < aa) {
01454
01455 d__1 = scale / aa;
01456 s = s * (d__1 * d__1) + 1.;
01457 scale = aa;
01458 } else {
01459
01460 d__1 = aa / scale;
01461 s += d__1 * d__1;
01462 }
01463 }
01464 i__2 = l + 1;
01465 aa = a[i__2].r;
01466
01467 if (aa != 0.) {
01468 if (scale < aa) {
01469
01470 d__1 = scale / aa;
01471 s = s * (d__1 * d__1) + 1.;
01472 scale = aa;
01473 } else {
01474
01475 d__1 = aa / scale;
01476 s += d__1 * d__1;
01477 }
01478 }
01479 l = l + lda + 1;
01480 }
01481
01482 i__1 = l;
01483 aa = a[i__1].r;
01484
01485 if (aa != 0.) {
01486 if (scale < aa) {
01487
01488 d__1 = scale / aa;
01489 s = s * (d__1 * d__1) + 1.;
01490 scale = aa;
01491 } else {
01492
01493 d__1 = aa / scale;
01494 s += d__1 * d__1;
01495 }
01496 }
01497 }
01498 }
01499 } else {
01500
01501 if (ifm == 1) {
01502
01503 if (ilu == 0) {
01504
01505 i__1 = k - 2;
01506 for (j = 0; j <= i__1; ++j) {
01507 i__2 = k - j - 1;
01508 zlassq_(&i__2, &a[k + j + 2 + j * lda], &c__1, &scale,
01509 &s);
01510
01511 }
01512 i__1 = k - 1;
01513 for (j = 0; j <= i__1; ++j) {
01514 i__2 = k + j;
01515 zlassq_(&i__2, &a[j * lda], &c__1, &scale, &s);
01516
01517 }
01518 s += s;
01519
01520 l = k;
01521
01522 i__1 = k - 1;
01523 for (i__ = 0; i__ <= i__1; ++i__) {
01524 i__2 = l;
01525 aa = a[i__2].r;
01526
01527 if (aa != 0.) {
01528 if (scale < aa) {
01529
01530 d__1 = scale / aa;
01531 s = s * (d__1 * d__1) + 1.;
01532 scale = aa;
01533 } else {
01534
01535 d__1 = aa / scale;
01536 s += d__1 * d__1;
01537 }
01538 }
01539 i__2 = l + 1;
01540 aa = a[i__2].r;
01541
01542 if (aa != 0.) {
01543 if (scale < aa) {
01544
01545 d__1 = scale / aa;
01546 s = s * (d__1 * d__1) + 1.;
01547 scale = aa;
01548 } else {
01549
01550 d__1 = aa / scale;
01551 s += d__1 * d__1;
01552 }
01553 }
01554 l = l + lda + 1;
01555 }
01556 } else {
01557
01558 i__1 = k - 1;
01559 for (j = 0; j <= i__1; ++j) {
01560 i__2 = *n - j - 1;
01561 zlassq_(&i__2, &a[j + 2 + j * lda], &c__1, &scale, &s)
01562 ;
01563
01564 }
01565 i__1 = k - 1;
01566 for (j = 1; j <= i__1; ++j) {
01567 zlassq_(&j, &a[j * lda], &c__1, &scale, &s);
01568
01569 }
01570 s += s;
01571
01572 l = 0;
01573
01574 i__1 = k - 1;
01575 for (i__ = 0; i__ <= i__1; ++i__) {
01576 i__2 = l;
01577 aa = a[i__2].r;
01578
01579 if (aa != 0.) {
01580 if (scale < aa) {
01581
01582 d__1 = scale / aa;
01583 s = s * (d__1 * d__1) + 1.;
01584 scale = aa;
01585 } else {
01586
01587 d__1 = aa / scale;
01588 s += d__1 * d__1;
01589 }
01590 }
01591 i__2 = l + 1;
01592 aa = a[i__2].r;
01593
01594 if (aa != 0.) {
01595 if (scale < aa) {
01596
01597 d__1 = scale / aa;
01598 s = s * (d__1 * d__1) + 1.;
01599 scale = aa;
01600 } else {
01601
01602 d__1 = aa / scale;
01603 s += d__1 * d__1;
01604 }
01605 }
01606 l = l + lda + 1;
01607 }
01608 }
01609 } else {
01610
01611 if (ilu == 0) {
01612
01613 i__1 = k - 1;
01614 for (j = 1; j <= i__1; ++j) {
01615 zlassq_(&j, &a[(k + 1 + j) * lda], &c__1, &scale, &s);
01616
01617 }
01618 i__1 = k - 1;
01619 for (j = 0; j <= i__1; ++j) {
01620 zlassq_(&k, &a[j * lda], &c__1, &scale, &s);
01621
01622 }
01623 i__1 = k - 2;
01624 for (j = 0; j <= i__1; ++j) {
01625 i__2 = k - j - 1;
01626 zlassq_(&i__2, &a[j + 1 + (j + k) * lda], &c__1, &
01627 scale, &s);
01628
01629 }
01630 s += s;
01631
01632 l = k * lda;
01633
01634 i__1 = l;
01635 aa = a[i__1].r;
01636
01637 if (aa != 0.) {
01638 if (scale < aa) {
01639
01640 d__1 = scale / aa;
01641 s = s * (d__1 * d__1) + 1.;
01642 scale = aa;
01643 } else {
01644
01645 d__1 = aa / scale;
01646 s += d__1 * d__1;
01647 }
01648 }
01649 l += lda;
01650
01651 i__1 = *n - 1;
01652 for (j = k + 1; j <= i__1; ++j) {
01653 i__2 = l;
01654 aa = a[i__2].r;
01655
01656 if (aa != 0.) {
01657 if (scale < aa) {
01658
01659 d__1 = scale / aa;
01660 s = s * (d__1 * d__1) + 1.;
01661 scale = aa;
01662 } else {
01663
01664 d__1 = aa / scale;
01665 s += d__1 * d__1;
01666 }
01667 }
01668 i__2 = l + 1;
01669 aa = a[i__2].r;
01670
01671 if (aa != 0.) {
01672 if (scale < aa) {
01673
01674 d__1 = scale / aa;
01675 s = s * (d__1 * d__1) + 1.;
01676 scale = aa;
01677 } else {
01678
01679 d__1 = aa / scale;
01680 s += d__1 * d__1;
01681 }
01682 }
01683 l = l + lda + 1;
01684 }
01685
01686
01687 i__1 = l;
01688 aa = a[i__1].r;
01689
01690 if (aa != 0.) {
01691 if (scale < aa) {
01692
01693 d__1 = scale / aa;
01694 s = s * (d__1 * d__1) + 1.;
01695 scale = aa;
01696 } else {
01697
01698 d__1 = aa / scale;
01699 s += d__1 * d__1;
01700 }
01701 }
01702 } else {
01703
01704 i__1 = k - 1;
01705 for (j = 1; j <= i__1; ++j) {
01706 zlassq_(&j, &a[(j + 1) * lda], &c__1, &scale, &s);
01707
01708 }
01709 i__1 = *n;
01710 for (j = k + 1; j <= i__1; ++j) {
01711 zlassq_(&k, &a[j * lda], &c__1, &scale, &s);
01712
01713 }
01714 i__1 = k - 2;
01715 for (j = 0; j <= i__1; ++j) {
01716 i__2 = k - j - 1;
01717 zlassq_(&i__2, &a[j + 1 + j * lda], &c__1, &scale, &s)
01718 ;
01719
01720 }
01721 s += s;
01722
01723 l = 0;
01724
01725 i__1 = l;
01726 aa = a[i__1].r;
01727
01728 if (aa != 0.) {
01729 if (scale < aa) {
01730
01731 d__1 = scale / aa;
01732 s = s * (d__1 * d__1) + 1.;
01733 scale = aa;
01734 } else {
01735
01736 d__1 = aa / scale;
01737 s += d__1 * d__1;
01738 }
01739 }
01740 l = lda;
01741
01742 i__1 = k - 2;
01743 for (i__ = 0; i__ <= i__1; ++i__) {
01744 i__2 = l;
01745 aa = a[i__2].r;
01746
01747 if (aa != 0.) {
01748 if (scale < aa) {
01749
01750 d__1 = scale / aa;
01751 s = s * (d__1 * d__1) + 1.;
01752 scale = aa;
01753 } else {
01754
01755 d__1 = aa / scale;
01756 s += d__1 * d__1;
01757 }
01758 }
01759 i__2 = l + 1;
01760 aa = a[i__2].r;
01761
01762 if (aa != 0.) {
01763 if (scale < aa) {
01764
01765 d__1 = scale / aa;
01766 s = s * (d__1 * d__1) + 1.;
01767 scale = aa;
01768 } else {
01769
01770 d__1 = aa / scale;
01771 s += d__1 * d__1;
01772 }
01773 }
01774 l = l + lda + 1;
01775 }
01776
01777 i__1 = l;
01778 aa = a[i__1].r;
01779
01780 if (aa != 0.) {
01781 if (scale < aa) {
01782
01783 d__1 = scale / aa;
01784 s = s * (d__1 * d__1) + 1.;
01785 scale = aa;
01786 } else {
01787
01788 d__1 = aa / scale;
01789 s += d__1 * d__1;
01790 }
01791 }
01792 }
01793 }
01794 }
01795 value = scale * sqrt(s);
01796 }
01797
01798 ret_val = value;
01799 return ret_val;
01800
01801
01802
01803 }