The R Project SVN R-packages

Rev

Rev 1317 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1317 Rev 1544
Line 174... Line 174...
174
	    for (j = 0; j < csz * cdims[2]; j++) Cx[j] *= beta;
174
	    for (j = 0; j < csz * cdims[2]; j++) Cx[j] *= beta;
175
				/* individual products */
175
				/* individual products */
176
	for (j = 0; j < anc; j++) {
176
	for (j = 0; j < anc; j++) {
177
	    int k, kk, k2 = Ap[j+1];
177
	    int k, kk, k2 = Ap[j+1];
178
	    for (k = Ap[j]; k < k2; k++) {
178
	    for (k = Ap[j]; k < k2; k++) {
-
 
179
		int ii = Ai[k];
179
		int ii = Ai[k], K = check_csc_index(Cp, Ci, ii, ii, 0);
180
		int K = check_csc_index(Cp, Ci, ii, ii, 0);
180
 
181
 
181
		if (K < 0) error(_("cscb_syrk: C[%d,%d] not defined"), ii, ii);
-
 
182
		if (scalar) Cx[K] += alpha * Ax[k] * Ax[k];
182
		if (scalar) Cx[K] += alpha * Ax[k] * Ax[k];
183
		else F77_CALL(dsyrk)((uplo == UPP) ? "U" : "L", "N",
183
		else F77_CALL(dsyrk)((uplo == UPP) ? "U" : "L", "N",
184
				     cdims, adims + 1,
184
				     cdims, adims + 1,
185
				     &alpha, Ax + k * asz, adims,
185
				     &alpha, Ax + k * asz, adims,
186
				     &one, Cx + K * csz, cdims);
186
				     &one, Cx + K * csz, cdims);
Line 544... Line 544...
544
	    double *BTx = Calloc(nnz, double), *rhs;
544
	    double *BTx = Calloc(nnz, double), *rhs;
545
 
545
 
546
				/* transpose B */
546
				/* transpose B */
547
	    for (i = 0, nrbB = -1; i < nnz; i++)
547
	    for (i = 0, nrbB = -1; i < nnz; i++)
548
		if (Bi[i] > nrbB) nrbB = Bi[i];
548
		if (Bi[i] > nrbB) nrbB = Bi[i];
-
 
549
	    nrbB++;		/* max 0-based index is 1 too small */
549
	    BTp = Calloc(nrbB, int);
550
	    BTp = Calloc(nrbB, int);
550
	    triplet_to_col(ncbB, nrbB, nnz, tmp, Bi, Bx, BTp, BTi, BTx);
551
	    triplet_to_col(ncbB, nrbB, nnz, tmp, Bi, Bx, BTp, BTi, BTx);
551
				/* sanity check */
552
				/* sanity check */
552
	    if (BTp[nrbB] != nnz) error(_("cscb_trcbsm: transpose operation failed"));
553
	    if (BTp[nrbB] != nnz) error(_("cscb_trcbsm: transpose operation failed"));
553
	    Free(tmp);
554
	    Free(tmp);
Line 558... Line 559...
558
		R_ldl_lsolve(ncbB,
559
		R_ldl_lsolve(ncbB,
559
			     expand_csc_column(rhs, ncbB, i, BTp, BTi, BTx),
560
			     expand_csc_column(rhs, ncbB, i, BTp, BTi, BTx),
560
			     Ap, Ai, Ax);
561
			     Ap, Ai, Ax);
561
		/* write non-zeros in sol'n into B */
562
		/* write non-zeros in sol'n into B */
562
		for (j = 0; j < ncbB; j++) {
563
		for (j = 0; j < ncbB; j++) {
563
		    if (BTx[j]) Bx[check_csc_index(Bp, Bi, j, i, 0)] = BTx[j];
564
		    if (rhs[j]) Bx[check_csc_index(Bp, Bi, i, j, 0)] = rhs[j];
564
		}
565
		}
565
		Free(rhs); Free(BTp); Free(BTx); Free(BTi);
-
 
566
	    }
566
	    }
-
 
567
	    Free(rhs); Free(BTp); Free(BTx); Free(BTi);
-
 
568
	    return;
567
	}
569
	}
568
	error(_("cscb_trcbsm: method not yet written"));
570
	error(_("cscb_trcbsm: method not yet written"));
569
    }
571
    }
570
    error(_("cscb_trcbsm: method not yet written"));
572
    error(_("cscb_trcbsm: method not yet written"));
571
}
573
}