derrgg.f
来自「famous linear algebra library (LAPACK) p」· F 代码 · 共 954 行 · 第 1/3 页
F
954 行
CALL CHKXER( 'DGGSVP', INFOT, NOUT, LERR, OK )
INFOT = 20
CALL DGGSVP( 'N', 'N', 'Q', 1, 1, 2, A, 1, B, 1, TOLA, TOLB,
$ DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, TAU, W,
$ INFO )
CALL CHKXER( 'DGGSVP', INFOT, NOUT, LERR, OK )
NT = NT + 11
*
* DTGSJA
*
SRNAMT = 'DTGSJA'
INFOT = 1
CALL DTGSJA( '/', 'N', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
$ 1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
$ NCYCLE, INFO )
CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
INFOT = 2
CALL DTGSJA( 'N', '/', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
$ 1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
$ NCYCLE, INFO )
CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
INFOT = 3
CALL DTGSJA( 'N', 'N', '/', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
$ 1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
$ NCYCLE, INFO )
CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
INFOT = 4
CALL DTGSJA( 'N', 'N', 'N', -1, 0, 0, DUMMYK, DUMMYL, A, 1, B,
$ 1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
$ NCYCLE, INFO )
CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
INFOT = 5
CALL DTGSJA( 'N', 'N', 'N', 0, -1, 0, DUMMYK, DUMMYL, A, 1, B,
$ 1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
$ NCYCLE, INFO )
CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
INFOT = 6
CALL DTGSJA( 'N', 'N', 'N', 0, 0, -1, DUMMYK, DUMMYL, A, 1, B,
$ 1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
$ NCYCLE, INFO )
CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
INFOT = 10
CALL DTGSJA( 'N', 'N', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 0, B,
$ 1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
$ NCYCLE, INFO )
CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
INFOT = 12
CALL DTGSJA( 'N', 'N', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
$ 0, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
$ NCYCLE, INFO )
CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
INFOT = 18
CALL DTGSJA( 'U', 'N', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
$ 1, TOLA, TOLB, R1, R2, U, 0, V, 1, Q, 1, W,
$ NCYCLE, INFO )
CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
INFOT = 20
CALL DTGSJA( 'N', 'V', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
$ 1, TOLA, TOLB, R1, R2, U, 1, V, 0, Q, 1, W,
$ NCYCLE, INFO )
CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
INFOT = 22
CALL DTGSJA( 'N', 'N', 'Q', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
$ 1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 0, W,
$ NCYCLE, INFO )
CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
NT = NT + 11
*
* Test error exits for the GLM path.
*
ELSE IF( LSAMEN( 3, PATH, 'GLM' ) ) THEN
*
* DGGGLM
*
SRNAMT = 'DGGGLM'
INFOT = 1
CALL DGGGLM( -1, 0, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
INFOT = 2
CALL DGGGLM( 0, -1, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
INFOT = 2
CALL DGGGLM( 0, 1, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
INFOT = 3
CALL DGGGLM( 0, 0, -1, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
INFOT = 3
CALL DGGGLM( 1, 0, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
INFOT = 5
CALL DGGGLM( 0, 0, 0, A, 0, B, 1, R1, R2, R3, W, LW, INFO )
CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
INFOT = 7
CALL DGGGLM( 0, 0, 0, A, 1, B, 0, R1, R2, R3, W, LW, INFO )
CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
INFOT = 12
CALL DGGGLM( 1, 1, 1, A, 1, B, 1, R1, R2, R3, W, 1, INFO )
CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
NT = NT + 8
*
* Test error exits for the LSE path.
*
ELSE IF( LSAMEN( 3, PATH, 'LSE' ) ) THEN
*
* DGGLSE
*
SRNAMT = 'DGGLSE'
INFOT = 1
CALL DGGLSE( -1, 0, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
INFOT = 2
CALL DGGLSE( 0, -1, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
INFOT = 3
CALL DGGLSE( 0, 0, -1, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
INFOT = 3
CALL DGGLSE( 0, 0, 1, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
INFOT = 3
CALL DGGLSE( 0, 1, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
INFOT = 5
CALL DGGLSE( 0, 0, 0, A, 0, B, 1, R1, R2, R3, W, LW, INFO )
CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
INFOT = 7
CALL DGGLSE( 0, 0, 0, A, 1, B, 0, R1, R2, R3, W, LW, INFO )
CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
INFOT = 12
CALL DGGLSE( 1, 1, 1, A, 1, B, 1, R1, R2, R3, W, 1, INFO )
CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
NT = NT + 8
*
* Test error exits for the GQR path.
*
ELSE IF( LSAMEN( 3, PATH, 'GQR' ) ) THEN
*
* DGGQRF
*
SRNAMT = 'DGGQRF'
INFOT = 1
CALL DGGQRF( -1, 0, 0, A, 1, R1, B, 1, R2, W, LW, INFO )
CALL CHKXER( 'DGGQRF', INFOT, NOUT, LERR, OK )
INFOT = 2
CALL DGGQRF( 0, -1, 0, A, 1, R1, B, 1, R2, W, LW, INFO )
CALL CHKXER( 'DGGQRF', INFOT, NOUT, LERR, OK )
INFOT = 3
CALL DGGQRF( 0, 0, -1, A, 1, R1, B, 1, R2, W, LW, INFO )
CALL CHKXER( 'DGGQRF', INFOT, NOUT, LERR, OK )
INFOT = 5
CALL DGGQRF( 0, 0, 0, A, 0, R1, B, 1, R2, W, LW, INFO )
CALL CHKXER( 'DGGQRF', INFOT, NOUT, LERR, OK )
INFOT = 8
CALL DGGQRF( 0, 0, 0, A, 1, R1, B, 0, R2, W, LW, INFO )
CALL CHKXER( 'DGGQRF', INFOT, NOUT, LERR, OK )
INFOT = 11
CALL DGGQRF( 1, 1, 2, A, 1, R1, B, 1, R2, W, 1, INFO )
CALL CHKXER( 'DGGQRF', INFOT, NOUT, LERR, OK )
NT = NT + 6
*
* DGGRQF
*
SRNAMT = 'DGGRQF'
INFOT = 1
CALL DGGRQF( -1, 0, 0, A, 1, R1, B, 1, R2, W, LW, INFO )
CALL CHKXER( 'DGGRQF', INFOT, NOUT, LERR, OK )
INFOT = 2
CALL DGGRQF( 0, -1, 0, A, 1, R1, B, 1, R2, W, LW, INFO )
CALL CHKXER( 'DGGRQF', INFOT, NOUT, LERR, OK )
INFOT = 3
CALL DGGRQF( 0, 0, -1, A, 1, R1, B, 1, R2, W, LW, INFO )
CALL CHKXER( 'DGGRQF', INFOT, NOUT, LERR, OK )
INFOT = 5
CALL DGGRQF( 0, 0, 0, A, 0, R1, B, 1, R2, W, LW, INFO )
CALL CHKXER( 'DGGRQF', INFOT, NOUT, LERR, OK )
INFOT = 8
CALL DGGRQF( 0, 0, 0, A, 1, R1, B, 0, R2, W, LW, INFO )
CALL CHKXER( 'DGGRQF', INFOT, NOUT, LERR, OK )
INFOT = 11
CALL DGGRQF( 1, 1, 2, A, 1, R1, B, 1, R2, W, 1, INFO )
CALL CHKXER( 'DGGRQF', INFOT, NOUT, LERR, OK )
NT = NT + 6
*
* Test error exits for the DGS, DGV, DGX, and DXV paths.
*
ELSE IF( LSAMEN( 3, PATH, 'DGS' ) .OR.
$ LSAMEN( 3, PATH, 'DGV' ) .OR.
$ LSAMEN( 3, PATH, 'DGX' ) .OR. LSAMEN( 3, PATH, 'DXV' ) )
$ THEN
*
* DGGES
*
SRNAMT = 'DGGES '
INFOT = 1
CALL DGGES( '/', 'N', 'S', DLCTES, 1, A, 1, B, 1, SDIM, R1, R2,
$ R3, Q, 1, U, 1, W, 1, BW, INFO )
CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
INFOT = 2
CALL DGGES( 'N', '/', 'S', DLCTES, 1, A, 1, B, 1, SDIM, R1, R2,
$ R3, Q, 1, U, 1, W, 1, BW, INFO )
CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
INFOT = 3
CALL DGGES( 'N', 'V', '/', DLCTES, 1, A, 1, B, 1, SDIM, R1, R2,
$ R3, Q, 1, U, 1, W, 1, BW, INFO )
CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
INFOT = 5
CALL DGGES( 'N', 'V', 'S', DLCTES, -1, A, 1, B, 1, SDIM, R1,
$ R2, R3, Q, 1, U, 1, W, 1, BW, INFO )
CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
INFOT = 7
CALL DGGES( 'N', 'V', 'S', DLCTES, 1, A, 0, B, 1, SDIM, R1, R2,
$ R3, Q, 1, U, 1, W, 1, BW, INFO )
CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
INFOT = 9
CALL DGGES( 'N', 'V', 'S', DLCTES, 1, A, 1, B, 0, SDIM, R1, R2,
$ R3, Q, 1, U, 1, W, 1, BW, INFO )
CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
INFOT = 15
CALL DGGES( 'N', 'V', 'S', DLCTES, 1, A, 1, B, 1, SDIM, R1, R2,
$ R3, Q, 0, U, 1, W, 1, BW, INFO )
CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
INFOT = 15
CALL DGGES( 'V', 'V', 'S', DLCTES, 2, A, 2, B, 2, SDIM, R1, R2,
$ R3, Q, 1, U, 2, W, 1, BW, INFO )
CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
INFOT = 17
CALL DGGES( 'N', 'V', 'S', DLCTES, 1, A, 1, B, 1, SDIM, R1, R2,
$ R3, Q, 1, U, 0, W, 1, BW, INFO )
CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
INFOT = 17
CALL DGGES( 'V', 'V', 'S', DLCTES, 2, A, 2, B, 2, SDIM, R1, R2,
$ R3, Q, 2, U, 1, W, 1, BW, INFO )
CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
INFOT = 19
CALL DGGES( 'V', 'V', 'S', DLCTES, 2, A, 2, B, 2, SDIM, R1, R2,
$ R3, Q, 2, U, 2, W, 1, BW, INFO )
CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
NT = NT + 11
*
* DGGESX
*
SRNAMT = 'DGGESX'
INFOT = 1
CALL DGGESX( '/', 'N', 'S', DLCTSX, 'N', 1, A, 1, B, 1, SDIM,
$ R1, R2, R3, Q, 1, U, 1, RCE, RCV, W, 1, IW, 1, BW,
$ INFO )
CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
INFOT = 2
CALL DGGESX( 'N', '/', 'S', DLCTSX, 'N', 1, A, 1, B, 1, SDIM,
$ R1, R2, R3, Q, 1, U, 1, RCE, RCV, W, 1, IW, 1, BW,
$ INFO )
CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
INFOT = 3
CALL DGGESX( 'V', 'V', '/', DLCTSX, 'N', 1, A, 1, B, 1, SDIM,
$ R1, R2, R3, Q, 1, U, 1, RCE, RCV, W, 1, IW, 1, BW,
$ INFO )
CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
INFOT = 5
CALL DGGESX( 'V', 'V', 'S', DLCTSX, '/', 1, A, 1, B, 1, SDIM,
$ R1, R2, R3, Q, 1, U, 1, RCE, RCV, W, 1, IW, 1, BW,
$ INFO )
CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
INFOT = 6
CALL DGGESX( 'V', 'V', 'S', DLCTSX, 'B', -1, A, 1, B, 1, SDIM,
$ R1, R2, R3, Q, 1, U, 1, RCE, RCV, W, 1, IW, 1, BW,
$ INFO )
CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
INFOT = 8
CALL DGGESX( 'V', 'V', 'S', DLCTSX, 'B', 1, A, 0, B, 1, SDIM,
$ R1, R2, R3, Q, 1, U, 1, RCE, RCV, W, 1, IW, 1, BW,
$ INFO )
CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
INFOT = 10
CALL DGGESX( 'V', 'V', 'S', DLCTSX, 'B', 1, A, 1, B, 0, SDIM,
$ R1, R2, R3, Q, 1, U, 1, RCE, RCV, W, 1, IW, 1, BW,
$ INFO )
CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
INFOT = 16
CALL DGGESX( 'V', 'V', 'S', DLCTSX, 'B', 1, A, 1, B, 1, SDIM,
$ R1, R2, R3, Q, 0, U, 1, RCE, RCV, W, 1, IW, 1, BW,
$ INFO )
CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
INFOT = 16
CALL DGGESX( 'V', 'V', 'S', DLCTSX, 'B', 2, A, 2, B, 2, SDIM,
$ R1, R2, R3, Q, 1, U, 1, RCE, RCV, W, 1, IW, 1, BW,
$ INFO )
CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
INFOT = 18
CALL DGGESX( 'V', 'V', 'S', DLCTSX, 'B', 1, A, 1, B, 1, SDIM,
$ R1, R2, R3, Q, 1, U, 0, RCE, RCV, W, 1, IW, 1, BW,
$ INFO )
CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
INFOT = 18
CALL DGGESX( 'V', 'V', 'S', DLCTSX, 'B', 2, A, 2, B, 2, SDIM,
$ R1, R2, R3, Q, 2, U, 1, RCE, RCV, W, 1, IW, 1, BW,
$ INFO )
CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
INFOT = 22
CALL DGGESX( 'V', 'V', 'S', DLCTSX, 'B', 2, A, 2, B, 2, SDIM,
$ R1, R2, R3, Q, 2, U, 2, RCE, RCV, W, 1, IW, 1, BW,
$ INFO )
CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
INFOT = 24
CALL DGGESX( 'V', 'V', 'S', DLCTSX, 'V', 1, A, 1, B, 1, SDIM,
$ R1, R2, R3, Q, 1, U, 1, RCE, RCV, W, 32, IW, 0,
$ BW, INFO )
CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
NT = NT + 13
*
* DGGEV
*
SRNAMT = 'DGGEV '
INFOT = 1
CALL DGGEV( '/', 'N', 1, A, 1, B, 1, R1, R2, R3, Q, 1, U, 1, W,
$ 1, INFO )
CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
INFOT = 2
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?