23 SUBROUTINE dpoly (M, A, LDA, N, V, P, LDP, B)
27 INTEGER m, n, lda, ldp
28 DOUBLE PRECISION a(lda*m), v(n), p(ldp*m), b(1)
29 INTEGER i, k, ns, nr, nqsr, mm, nrm, nwrk
30 DOUBLE PRECISION q, one /1.d0/, zero /0.d0/
33 INTEGER floor, ceiling
38 CALL dscal(mm, zero, p, 1)
48 ns = ceiling(dsqrt(q))
49 nr = floor(q / dfloat(ns))
50 nqsr = n - 1 - ns * nr
51 nrm = (nr + 1) * mm + 1
54 DO 15 i = mm + 1, nwrk
58 CALL
dcopym(m, m, a, lda, b, m)
61 DO 30 i = 1, mm, m + 1
62 b(mm * k + i) = v(ns * k + 1)
67 CALL
daxpym(m, m, v(i + 1), b, m, p, ldp)
70 CALL daxpy(mm, v(ns * k + i + 1), b, 1,
75 CALL daxpy(mm, v(ns * nr + i + 1), b, 1,
79 CALL dcopy(mm, b, 1, b(nrm), 1)
80 CALL dgemm(trans, trans, m, m, m, one, b(nrm), m, a, lda,
84 CALL dgemm(trans, trans, m, m, m, one, b(mm + 1), m,
88 IF (nr .GT. 1) CALL dcopy(mm, b, 1, b(nrm), 1)
91 CALL dcopy(mm, b, 1, b(mm + 1), 1)
92 CALL dgemm(trans, trans, m, m, m, one, b(mm + 1), m,
93 1 b(nrm), m, zero, b, m)
94 CALL dgemm(trans, trans, m, m, m, one, b(k * mm + 1), m,