115 INTEGER FUNCTION slaneg( N, D, LLD, SIGMA, PIVMIN, R )
126 REAL d( * ), lld( * )
133 parameter( zero = 0.0e0, one = 1.0e0 )
140 parameter( blklen = 128 )
143 INTEGER bj, j, neg1, neg2, negcnt
144 REAL bsav, dminus, dplus, gamma, p, t, tmp
160 DO 210 bj = 1, r-1, blklen
163 DO 21 j = bj, min(bj+blklen-1, r-1)
165 IF( dplus.LT.zero ) neg1 = neg1 + 1
167 t = tmp * lld( j ) - sigma
177 DO 22 j = bj, min(bj+blklen-1, r-1)
179 IF( dplus.LT.zero ) neg1 = neg1 + 1
181 IF (
sisnan(tmp)) tmp = one
182 t = tmp * lld(j) - sigma
185 negcnt = negcnt + neg1
190 DO 230 bj = n-1, r, -blklen
193 DO 23 j = bj, max(bj-blklen+1, r), -1
194 dminus = lld( j ) + p
195 IF( dminus.LT.zero ) neg2 = neg2 + 1
197 p = tmp * d( j ) - sigma
205 DO 24 j = bj, max(bj-blklen+1, r), -1
206 dminus = lld( j ) + p
207 IF( dminus.LT.zero ) neg2 = neg2 + 1
209 IF (
sisnan(tmp)) tmp = one
210 p = tmp * d(j) - sigma
213 negcnt = negcnt + neg2
218 gamma = (t + sigma) + p
219 IF( gamma.LT.zero ) negcnt = negcnt+1
integer function slaneg(n, d, lld, sigma, pivmin, r)
SLANEG computes the Sturm count.