The R Project SVN R

Rev

Rev 26472 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 26472 Rev 26666
Line 415... Line 415...
415
    int i, j;
415
    int i, j;
416
    if (nr > 0 && nc > 0) {
416
    if (nr > 0 && nc > 0) {
417
        F77_CALL(dsyrk)(uplo, trans, &nc, &nr, &one, x, &nr, &zero, z, &nc);
417
        F77_CALL(dsyrk)(uplo, trans, &nc, &nr, &one, x, &nr, &zero, z, &nc);
418
	for (i = 1; i < nc; i++)
418
	for (i = 1; i < nc; i++)
419
	    for (j = 0; j < i; j++) z[i + nc *j] = z[j + nc * i];
419
	    for (j = 0; j < i; j++) z[i + nc *j] = z[j + nc * i];
-
 
420
    } else { /* zero-extent operations should return zeroes */
-
 
421
	for(i = 0; i < nc*nc; i++) z[i] = 0;
420
    }
422
    }
-
 
423
 
421
}
424
}
422
 
425
 
423
static void crossprod(double *x, int nrx, int ncx,
426
static void crossprod(double *x, int nrx, int ncx,
424
		      double *y, int nry, int ncy, double *z)
427
		      double *y, int nry, int ncy, double *z)
425
{
428
{
Line 428... Line 431...
428
    double one = 1.0, zero = 0.0;
431
    double one = 1.0, zero = 0.0;
429
    if (nrx > 0 && ncx > 0 && nry > 0 && ncy > 0) {
432
    if (nrx > 0 && ncx > 0 && nry > 0 && ncy > 0) {
430
        F77_CALL(dgemm)(transa, transb, &ncx, &ncy, &nrx, &one,
433
        F77_CALL(dgemm)(transa, transb, &ncx, &ncy, &nrx, &one,
431
			x, &nrx, y, &nry, &zero, z, &ncx);
434
			x, &nrx, y, &nry, &zero, z, &ncx);
432
    }
435
    }
-
 
436
    else { /* zero-extent operations should return zeroes */
-
 
437
	int i;
-
 
438
	for(i = 0; i < ncx*ncy; i++) z[i] = 0;
-
 
439
    }
433
#else
440
#else
434
    int i, j, k;
441
    int i, j, k;
435
    double xji, yjk, sum;
442
    double xji, yjk, sum;
436
 
443
 
437
    for (i = 0; i < ncx; i++)
444
    for (i = 0; i < ncx; i++)
Line 462... Line 469...
462
    one.r = 1.0; one.i = zero.r = zero.i = 0.0;
469
    one.r = 1.0; one.i = zero.r = zero.i = 0.0;
463
    if (nrx > 0 && ncx > 0 && nry > 0 && ncy > 0) {
470
    if (nrx > 0 && ncx > 0 && nry > 0 && ncy > 0) {
464
        F77_CALL(zgemm)(transa, transb, &ncx, &ncy, &nrx, &one,
471
        F77_CALL(zgemm)(transa, transb, &ncx, &ncy, &nrx, &one,
465
			x, &nrx, y, &nry, &zero, z, &ncx);
472
			x, &nrx, y, &nry, &zero, z, &ncx);
466
    }
473
    }
-
 
474
    else { /* zero-extent operations should return zeroes */
-
 
475
	int i;
-
 
476
	for(i = 0; i < ncx*ncy; i++) z[i].r = z[i].i = 0;
-
 
477
    }
467
#else
478
#else
468
    int i, j, k;
479
    int i, j, k;
469
    double xji_r, xji_i, yjk_r, yjk_i, sum_r, sum_i;
480
    double xji_r, xji_i, yjk_r, yjk_i, sum_r, sum_i;
470
 
481
 
471
    for (i = 0; i < ncx; i++)
482
    for (i = 0; i < ncx; i++)