23 SUBROUTINE spoly (M, A, LDA, N, V, P, LDP, B)
27 INTEGER m, n, lda, ldp
28 REAL a(lda*m), v(n), p(ldp*m), b(1)
29 INTEGER i, k, ns, nr, nqsr, mm, nrm, nwrk
30 REAL one /1./, zero /0./
34 INTEGER floor, ceiling
38 CALL sscal(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
scopym(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
saxpym(m, m, v(i + 1), b, m, p, ldp)
70 CALL saxpy(mm, v(ns * k + i + 1), b, 1,
75 CALL saxpy(mm, v(ns * nr + i + 1), b, 1,
79 CALL scopy(mm, b, 1, b(nrm), 1)
80 CALL sgemm(trans, trans, m, m, m, one, b(nrm), m, a, lda,
84 CALL sgemm(trans, trans, m, m, m, one, b(mm + 1), m,
88 IF (nr .GT. 1) CALL scopy(mm, b, 1, b(nrm), 1)
91 CALL scopy(mm, b, 1, b(mm + 1), 1)
92 CALL sgemm(trans, trans, m, m, m, one, b(mm + 1), m,
93 1 b(nrm), m, zero, b, m)
94 CALL sgemm(trans, trans, m, m, m, one, b(k * mm + 1), m,