亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cgelsd.c

?? 著名的LAPACK矩陣計算軟件包, 是比較新的版本, 一般用到矩陣分解的朋友也許會用到
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "blaswrap.h"
/*  -- translated by f2c (version 19990503).
   You must link the resulting object file with the libraries:
	-lf2c -lm   (in that order)
*/

#include "f2c.h"

/* Table of constant values */

static complex c_b1 = {0.f,0.f};
static integer c__6 = 6;
static integer c_n1 = -1;
static integer c__9 = 9;
static integer c__0 = 0;
static integer c__1 = 1;
static real c_b81 = 0.f;

/* Subroutine */ int cgelsd_(integer *m, integer *n, integer *nrhs, complex *
	a, integer *lda, complex *b, integer *ldb, real *s, real *rcond, 
	integer *rank, complex *work, integer *lwork, real *rwork, integer *
	iwork, integer *info)
{
    /* System generated locals */
    integer a_dim1, a_offset, b_dim1, b_offset, i__1, i__2, i__3, i__4;
    real r__1;
    complex q__1;

    /* Local variables */
    static real anrm, bnrm;
    static integer itau, iascl, ibscl;
    static real sfmin;
    static integer minmn, maxmn, itaup, itauq, mnthr, nwork, ie, il;
    extern /* Subroutine */ int cgebrd_(integer *, integer *, complex *, 
	    integer *, real *, real *, complex *, complex *, complex *, 
	    integer *, integer *), slabad_(real *, real *);
    extern doublereal clange_(char *, integer *, integer *, complex *, 
	    integer *, real *);
    static integer mm;
    extern /* Subroutine */ int cgelqf_(integer *, integer *, complex *, 
	    integer *, complex *, complex *, integer *, integer *), clalsd_(
	    char *, integer *, integer *, integer *, real *, real *, complex *
	    , integer *, real *, integer *, complex *, real *, integer *, 
	    integer *), clascl_(char *, integer *, integer *, real *, 
	    real *, integer *, integer *, complex *, integer *, integer *), cgeqrf_(integer *, integer *, complex *, integer *, 
	    complex *, complex *, integer *, integer *);
    extern doublereal slamch_(char *);
    extern /* Subroutine */ int clacpy_(char *, integer *, integer *, complex 
	    *, integer *, complex *, integer *), claset_(char *, 
	    integer *, integer *, complex *, complex *, complex *, integer *), xerbla_(char *, integer *);
    extern integer ilaenv_(integer *, char *, char *, integer *, integer *, 
	    integer *, integer *, ftnlen, ftnlen);
    static real bignum;
    extern /* Subroutine */ int slascl_(char *, integer *, integer *, real *, 
	    real *, integer *, integer *, real *, integer *, integer *), cunmbr_(char *, char *, char *, integer *, integer *, 
	    integer *, complex *, integer *, complex *, complex *, integer *, 
	    complex *, integer *, integer *), slaset_(
	    char *, integer *, integer *, real *, real *, real *, integer *), cunmlq_(char *, char *, integer *, integer *, integer *, 
	    complex *, integer *, complex *, complex *, integer *, complex *, 
	    integer *, integer *);
    static integer ldwork;
    extern /* Subroutine */ int cunmqr_(char *, char *, integer *, integer *, 
	    integer *, complex *, integer *, complex *, complex *, integer *, 
	    complex *, integer *, integer *);
    static integer minwrk, maxwrk;
    static real smlnum;
    static logical lquery;
    static integer nrwork, smlsiz;
    static real eps;


#define a_subscr(a_1,a_2) (a_2)*a_dim1 + a_1
#define a_ref(a_1,a_2) a[a_subscr(a_1,a_2)]
#define b_subscr(a_1,a_2) (a_2)*b_dim1 + a_1
#define b_ref(a_1,a_2) b[b_subscr(a_1,a_2)]


/*  -- LAPACK driver routine (version 3.0) --   
       Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,   
       Courant Institute, Argonne National Lab, and Rice University   
       October 31, 1999   


    Purpose   
    =======   

    CGELSD computes the minimum-norm solution to a real linear least   
    squares problem:   
        minimize 2-norm(| b - A*x |)   
    using the singular value decomposition (SVD) of A. A is an M-by-N   
    matrix which may be rank-deficient.   

    Several right hand side vectors b and solution vectors x can be   
    handled in a single call; they are stored as the columns of the   
    M-by-NRHS right hand side matrix B and the N-by-NRHS solution   
    matrix X.   

    The problem is solved in three steps:   
    (1) Reduce the coefficient matrix A to bidiagonal form with   
        Householder tranformations, reducing the original problem   
        into a "bidiagonal least squares problem" (BLS)   
    (2) Solve the BLS using a divide and conquer approach.   
    (3) Apply back all the Householder tranformations to solve   
        the original least squares problem.   

    The effective rank of A is determined by treating as zero those   
    singular values which are less than RCOND times the largest singular   
    value.   

    The divide and conquer algorithm makes very mild assumptions about   
    floating point arithmetic. It will work on machines with a guard   
    digit in add/subtract, or on those binary machines without guard   
    digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or   
    Cray-2. It could conceivably fail on hexadecimal or decimal machines   
    without guard digits, but we know of none.   

    Arguments   
    =========   

    M       (input) INTEGER   
            The number of rows of the matrix A. M >= 0.   

    N       (input) INTEGER   
            The number of columns of the matrix A. N >= 0.   

    NRHS    (input) INTEGER   
            The number of right hand sides, i.e., the number of columns   
            of the matrices B and X. NRHS >= 0.   

    A       (input) COMPLEX array, dimension (LDA,N)   
            On entry, the M-by-N matrix A.   
            On exit, A has been destroyed.   

    LDA     (input) INTEGER   
            The leading dimension of the array A. LDA >= max(1,M).   

    B       (input/output) COMPLEX array, dimension (LDB,NRHS)   
            On entry, the M-by-NRHS right hand side matrix B.   
            On exit, B is overwritten by the N-by-NRHS solution matrix X.   
            If m >= n and RANK = n, the residual sum-of-squares for   
            the solution in the i-th column is given by the sum of   
            squares of elements n+1:m in that column.   

    LDB     (input) INTEGER   
            The leading dimension of the array B.  LDB >= max(1,M,N).   

    S       (output) REAL array, dimension (min(M,N))   
            The singular values of A in decreasing order.   
            The condition number of A in the 2-norm = S(1)/S(min(m,n)).   

    RCOND   (input) REAL   
            RCOND is used to determine the effective rank of A.   
            Singular values S(i) <= RCOND*S(1) are treated as zero.   
            If RCOND < 0, machine precision is used instead.   

    RANK    (output) INTEGER   
            The effective rank of A, i.e., the number of singular values   
            which are greater than RCOND*S(1).   

    WORK    (workspace/output) COMPLEX array, dimension (LWORK)   
            On exit, if INFO = 0, WORK(1) returns the optimal LWORK.   

    LWORK   (input) INTEGER   
            The dimension of the array WORK. LWORK must be at least 1.   
            The exact minimum amount of workspace needed depends on M,   
            N and NRHS. As long as LWORK is at least   
                2 * N + N * NRHS   
            if M is greater than or equal to N or   
                2 * M + M * NRHS   
            if M is less than N, the code will execute correctly.   
            For good performance, LWORK should generally be larger.   

            If LWORK = -1, then a workspace query is assumed; the routine   
            only calculates the optimal size of the WORK array, returns   
            this value as the first entry of the WORK array, and no error   
            message related to LWORK is issued by XERBLA.   

    RWORK   (workspace) REAL array, dimension at least   
               10*N + 2*N*SMLSIZ + 8*N*NLVL + 3*SMLSIZ*NRHS +   
               (SMLSIZ+1)**2   
            if M is greater than or equal to N or   
               10*M + 2*M*SMLSIZ + 8*M*NLVL + 3*SMLSIZ*NRHS +   
               (SMLSIZ+1)**2   
            if M is less than N, the code will execute correctly.   
            SMLSIZ is returned by ILAENV and is equal to the maximum   
            size of the subproblems at the bottom of the computation   
            tree (usually about 25), and   
               NLVL = MAX( 0, INT( LOG_2( MIN( M,N )/(SMLSIZ+1) ) ) + 1 )   

    IWORK   (workspace) INTEGER array, dimension (LIWORK)   
            LIWORK >= 3 * MINMN * NLVL + 11 * MINMN,   
            where MINMN = MIN( M,N ).   

    INFO    (output) INTEGER   
            = 0: successful exit   
            < 0: if INFO = -i, the i-th argument had an illegal value.   
            > 0:  the algorithm for computing the SVD failed to converge;   
                  if INFO = i, i off-diagonal elements of an intermediate   
                  bidiagonal form did not converge to zero.   

    Further Details   
    ===============   

    Based on contributions by   
       Ming Gu and Ren-Cang Li, Computer Science Division, University of   
         California at Berkeley, USA   
       Osni Marques, LBNL/NERSC, USA   

    =====================================================================   


       Test the input arguments.   

       Parameter adjustments */
    a_dim1 = *lda;
    a_offset = 1 + a_dim1 * 1;
    a -= a_offset;
    b_dim1 = *ldb;
    b_offset = 1 + b_dim1 * 1;
    b -= b_offset;
    --s;
    --work;
    --rwork;
    --iwork;

    /* Function Body */
    *info = 0;
    minmn = min(*m,*n);
    maxmn = max(*m,*n);
    mnthr = ilaenv_(&c__6, "CGELSD", " ", m, n, nrhs, &c_n1, (ftnlen)6, (
	    ftnlen)1);
    lquery = *lwork == -1;
    if (*m < 0) {
	*info = -1;
    } else if (*n < 0) {
	*info = -2;
    } else if (*nrhs < 0) {
	*info = -3;
    } else if (*lda < max(1,*m)) {
	*info = -5;
    } else if (*ldb < max(1,maxmn)) {
	*info = -7;
    }

    smlsiz = ilaenv_(&c__9, "CGELSD", " ", &c__0, &c__0, &c__0, &c__0, (
	    ftnlen)6, (ftnlen)1);

/*     Compute workspace.   
       (Note: Comments in the code beginning "Workspace:" describe the   
       minimal amount of workspace needed at that point in the code,   
       as well as the preferred amount for good performance.   
       NB refers to the optimal block size for the immediately   
       following subroutine, as returned by ILAENV.) */

    minwrk = 1;
    if (*info == 0) {
	maxwrk = 0;
	mm = *m;
	if (*m >= *n && *m >= mnthr) {

/*           Path 1a - overdetermined, with many more rows than columns. */

	    mm = *n;
/* Computing MAX */
	    i__1 = maxwrk, i__2 = *n * ilaenv_(&c__1, "CGEQRF", " ", m, n, &
		    c_n1, &c_n1, (ftnlen)6, (ftnlen)1);
	    maxwrk = max(i__1,i__2);
/* Computing MAX */
	    i__1 = maxwrk, i__2 = *nrhs * ilaenv_(&c__1, "CUNMQR", "LC", m, 
		    nrhs, n, &c_n1, (ftnlen)6, (ftnlen)2);
	    maxwrk = max(i__1,i__2);
	}
	if (*m >= *n) {

/*           Path 1 - overdetermined or exactly determined.   

   Computing MAX */
	    i__1 = maxwrk, i__2 = (*n << 1) + (mm + *n) * ilaenv_(&c__1, 
		    "CGEBRD", " ", &mm, n, &c_n1, &c_n1, (ftnlen)6, (ftnlen)1)
		    ;
	    maxwrk = max(i__1,i__2);
/* Computing MAX */
	    i__1 = maxwrk, i__2 = (*n << 1) + *nrhs * ilaenv_(&c__1, "CUNMBR",
		     "QLC", &mm, nrhs, n, &c_n1, (ftnlen)6, (ftnlen)3);
	    maxwrk = max(i__1,i__2);
/* Computing MAX */
	    i__1 = maxwrk, i__2 = (*n << 1) + (*n - 1) * ilaenv_(&c__1, "CUN"
		    "MBR", "PLN", n, nrhs, n, &c_n1, (ftnlen)6, (ftnlen)3);
	    maxwrk = max(i__1,i__2);
/* Computing MAX */
	    i__1 = maxwrk, i__2 = (*n << 1) + *n * *nrhs;
	    maxwrk = max(i__1,i__2);
/* Computing MAX */
	    i__1 = (*n << 1) + mm, i__2 = (*n << 1) + *n * *nrhs;
	    minwrk = max(i__1,i__2);
	}
	if (*n > *m) {
	    if (*n >= mnthr) {

/*              Path 2a - underdetermined, with many more columns   
                than rows. */

		maxwrk = *m + *m * ilaenv_(&c__1, "CGELQF", " ", m, n, &c_n1, 
			&c_n1, (ftnlen)6, (ftnlen)1);
/* Computing MAX */
		i__1 = maxwrk, i__2 = *m * *m + (*m << 2) + (*m << 1) * 
			ilaenv_(&c__1, "CGEBRD", " ", m, m, &c_n1, &c_n1, (
			ftnlen)6, (ftnlen)1);
		maxwrk = max(i__1,i__2);
/* Computing MAX */
		i__1 = maxwrk, i__2 = *m * *m + (*m << 2) + *nrhs * ilaenv_(&
			c__1, "CUNMBR", "QLC", m, nrhs, m, &c_n1, (ftnlen)6, (
			ftnlen)3);
		maxwrk = max(i__1,i__2);
/* Computing MAX */
		i__1 = maxwrk, i__2 = *m * *m + (*m << 2) + (*m - 1) * 
			ilaenv_(&c__1, "CUNMLQ", "LC", n, nrhs, m, &c_n1, (
			ftnlen)6, (ftnlen)2);
		maxwrk = max(i__1,i__2);
		if (*nrhs > 1) {
/* Computing MAX */
		    i__1 = maxwrk, i__2 = *m * *m + *m + *m * *nrhs;
		    maxwrk = max(i__1,i__2);
		} else {
/* Computing MAX */
		    i__1 = maxwrk, i__2 = *m * *m + (*m << 1);
		    maxwrk = max(i__1,i__2);
		}
/* Computing MAX */
		i__1 = maxwrk, i__2 = *m * *m + (*m << 2) + *m * *nrhs;
		maxwrk = max(i__1,i__2);
	    } else {

/*              Path 2 - underdetermined. */

		maxwrk = (*m << 1) + (*n + *m) * ilaenv_(&c__1, "CGEBRD", 
			" ", m, n, &c_n1, &c_n1, (ftnlen)6, (ftnlen)1);
/* Computing MAX */
		i__1 = maxwrk, i__2 = (*m << 1) + *nrhs * ilaenv_(&c__1, 
			"CUNMBR", "QLC", m, nrhs, m, &c_n1, (ftnlen)6, (
			ftnlen)3);
		maxwrk = max(i__1,i__2);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性xxxxx极品少妇| 国产在线精品一区二区三区不卡| 日韩一区二区三| 欧美久久高跟鞋激| 欧美一区二区免费视频| 欧美高清视频一二三区| 日韩网站在线看片你懂的| 日韩一级免费一区| 久久久亚洲高清| 国产精品亲子乱子伦xxxx裸| 日韩一区中文字幕| 一区二区三区精品久久久| 午夜精品一区二区三区免费视频| 久久av老司机精品网站导航| 免费看精品久久片| 国产一区二区三区观看| 99久久精品久久久久久清纯| 欧美午夜精品久久久久久孕妇| 欧美亚洲愉拍一区二区| 欧美xxxx在线观看| 国产精品视频九色porn| 夜夜精品浪潮av一区二区三区| 亚洲电影中文字幕在线观看| 激情偷乱视频一区二区三区| 成人国产精品视频| 欧美久久久久中文字幕| 久久婷婷国产综合精品青草| 中文幕一区二区三区久久蜜桃| 亚洲一卡二卡三卡四卡五卡| 精品一区二区三区不卡 | 成人激情黄色小说| 欧美视频在线一区二区三区 | 免费观看久久久4p| 成人18精品视频| 91精品国产综合久久久久| 久久久久国色av免费看影院| 亚洲午夜精品久久久久久久久| 国产在线精品免费av| 色综合久久久久网| 久久精品一区二区| 强制捆绑调教一区二区| 色香色香欲天天天影视综合网| 精品日韩在线观看| 亚洲成人免费观看| 国产成人精品www牛牛影视| 欧美日韩中文另类| 中文字幕一区二区不卡 | 成人av在线资源| 欧美大片在线观看| 亚洲va欧美va天堂v国产综合| 国产一区二区三区精品欧美日韩一区二区三区 | 麻豆中文一区二区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 久久久久久久久久看片| 免费在线看成人av| 欧美日韩国产高清一区二区三区 | 2欧美一区二区三区在线观看视频| 日韩成人午夜电影| 在线免费不卡电影| 国产精品伦理在线| 国产精品伊人色| 精品国产区一区| 五月天中文字幕一区二区| 91免费观看视频在线| 国产色爱av资源综合区| 久久精品国产久精国产| 欧美精品第1页| 午夜久久久久久久久久一区二区| 色欧美片视频在线观看| 亚洲少妇屁股交4| 9i在线看片成人免费| 国产精品免费免费| 从欧美一区二区三区| 国产日产欧美一区二区视频| 日本v片在线高清不卡在线观看| 欧美三级三级三级爽爽爽| 亚洲国产综合人成综合网站| 欧美亚洲国产一区在线观看网站 | 久久夜色精品国产噜噜av | 国产欧美一区视频| 国产河南妇女毛片精品久久久| 久久人人97超碰com| 国产精品夜夜爽| 亚洲国产精华液网站w| av中文字幕亚洲| 亚洲特级片在线| 欧美日韩卡一卡二| 蜜桃视频在线观看一区二区| 中文在线一区二区| 色综合天天综合网天天狠天天| 亚洲免费观看视频| 777xxx欧美| 国产一区二区三区综合| 中文字幕一区在线| 欧美性高清videossexo| 看片的网站亚洲| 欧美极品xxx| 欧美日韩日日摸| 激情五月婷婷综合| 亚洲欧美日韩电影| 欧美夫妻性生活| 成人综合在线观看| 性做久久久久久| 久久久久亚洲蜜桃| 在线视频一区二区免费| 精品一区二区久久| 亚洲人成影院在线观看| 日韩午夜av一区| 一本色道亚洲精品aⅴ| 日韩国产高清在线| 亚洲视频小说图片| 日韩一区二区三区电影| 91小宝寻花一区二区三区| 久久精品国产99| 一区二区国产视频| 国产三区在线成人av| 欧美三级电影网| 99re亚洲国产精品| 国产在线精品视频| 青青草国产精品97视觉盛宴| 国产精品久久一卡二卡| 日韩欧美一级精品久久| 在线观看欧美黄色| 99国产欧美久久久精品| 激情综合色播五月| 日韩精品一卡二卡三卡四卡无卡| 国产精品精品国产色婷婷| 日韩一级片网址| 欧美三级日韩三级国产三级| 成人免费观看视频| 国产一区二区三区国产| 日韩电影免费在线观看网站| 亚洲精品美国一| 国产精品少妇自拍| 国产亚洲综合av| 日韩精品一区在线| 日韩欧美亚洲国产另类| 欧美日韩高清在线播放| 91福利精品视频| 色综合久久中文综合久久牛| 国产精品一区免费视频| 麻豆精品一区二区| 全国精品久久少妇| 青青国产91久久久久久 | 国产成a人亚洲精| 麻豆一区二区在线| 奇米在线7777在线精品| 污片在线观看一区二区| 亚洲不卡一区二区三区| 亚洲午夜精品在线| 亚洲成国产人片在线观看| 亚洲一二三区不卡| 亚洲大片免费看| 美女视频黄免费的久久| 久久91精品国产91久久小草| 秋霞午夜鲁丝一区二区老狼| 日韩精品一级二级| 精品在线播放免费| 丰满少妇在线播放bd日韩电影| 岛国精品在线观看| 色婷婷综合久久久久中文一区二区 | 亚洲图片另类小说| 亚洲欧美另类小说| 午夜精品在线看| 精品一区二区三区在线观看| 国产精品中文欧美| 色欧美片视频在线观看在线视频| 欧美视频一区二| 91精品国产品国语在线不卡| www国产精品av| 国产精品高潮呻吟| 亚洲一区av在线| 国产一区在线观看视频| 成人av免费观看| 欧美福利视频一区| 欧美国产1区2区| 午夜精品视频在线观看| 国产精品自拍三区| 欧美三级在线播放| 国产日韩欧美激情| 三级成人在线视频| 国产成人免费网站| 欧美日韩国产成人在线免费| 国产调教视频一区| 午夜精品在线看| 成人中文字幕电影| 91麻豆精品国产自产在线| 久久久久国产一区二区三区四区 | 欧美乱熟臀69xxxxxx| 欧美精品一区二区三区蜜臀| 国产精品电影院| 久久精品国产免费| 欧美午夜精品免费| 国产精品福利影院| 美女脱光内衣内裤视频久久影院| 91在线观看高清| 久久综合丝袜日本网| 天天操天天干天天综合网| 波多野结衣一区二区三区| 欧美一级二级在线观看|