Subroutine */
| 25553 | } /* slasd3_ */ |
| 25554 | |
| 25555 | /* Subroutine */ int slasd4_(integer *n, integer *i__, real *d__, real *z__, |
| 25556 | real *delta, real *rho, real *sigma, real *work, integer *info) |
| 25557 | { |
| 25558 | /* System generated locals */ |
| 25559 | integer i__1; |
| 25560 | real r__1; |
| 25561 | |
| 25562 | /* Local variables */ |
| 25563 | static real a, b, c__; |
| 25564 | static integer j; |
| 25565 | static real w, dd[3]; |
| 25566 | static integer ii; |
| 25567 | static real dw, zz[3]; |
| 25568 | static integer ip1; |
| 25569 | static real eta, phi, eps, tau, psi; |
| 25570 | static integer iim1, iip1; |
| 25571 | static real dphi, dpsi; |
| 25572 | static integer iter; |
| 25573 | static real temp, prew, sg2lb, sg2ub, temp1, temp2, dtiim, delsq, dtiip; |
| 25574 | static integer niter; |
| 25575 | static real dtisq; |
| 25576 | static logical swtch; |
| 25577 | static real dtnsq; |
| 25578 | extern /* Subroutine */ int slaed6_(integer *, logical *, real *, real *, |
| 25579 | real *, real *, real *, integer *); |
| 25580 | static real delsq2; |
| 25581 | extern /* Subroutine */ int slasd5_(integer *, real *, real *, real *, |
| 25582 | real *, real *, real *); |
| 25583 | static real dtnsq1; |
| 25584 | static logical swtch3; |
| 25585 | extern doublereal slamch_(char *); |
| 25586 | static logical orgati; |
| 25587 | static real erretm, dtipsq, rhoinv; |
| 25588 | |
| 25589 | |
| 25590 | /* |
| 25591 | -- LAPACK auxiliary routine (version 3.2) -- |
| 25592 | -- LAPACK is a software package provided by Univ. of Tennessee, -- |
| 25593 | -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
| 25594 | November 2006 |
| 25595 | |
| 25596 | |
| 25597 | Purpose |
| 25598 | ======= |
| 25599 | |
| 25600 | This subroutine computes the square root of the I-th updated |
| 25601 | eigenvalue of a positive symmetric rank-one modification to |
| 25602 | a positive diagonal matrix whose entries are given as the squares |
| 25603 | of the corresponding entries in the array d, and that |
| 25604 | |
| 25605 | 0 <= D(i) < D(j) for i < j |
| 25606 | |
| 25607 | and that RHO > 0. This is arranged by the calling routine, and is |
| 25608 | no loss in generality. The rank-one modified system is thus |
| 25609 | |
| 25610 | diag( D ) * diag( D ) + RHO * Z * Z_transpose. |
| 25611 | |
| 25612 | where we assume the Euclidean norm of Z is 1. |