[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-gsl] Help
From: |
Joakim Hove |
Subject: |
Re: [Help-gsl] Help |
Date: |
Fri, 03 Sep 2004 11:44:40 +0200 |
User-agent: |
Gnus/5.1003 (Gnus v5.10.3) Emacs/21.2 (gnu/linux) |
"Kaustubh Patil" <address@hidden> writes:
> Dear Sir/Madam,
> I am using GSL for vector and matrix
> manipulations. I need a function that can give a (symmetrical)
> matrix formed by (v * v^T).
This *quick and naive* hack works at least:
void vector_mul_transpose(const gsl_vector *v, gsl_matrix *m) {
size_t i,j;
if (v->size != m->size1 || m->size1 != m->size2) {
fprintf(stderr,"Dimensions do not agree *aborting* \n");
exit(1);
}
for (i=0; i < v->size; i++) {
double vi = gsl_vector_get(v,i);
for (j=i; j < v->size; j++)
gsl_matrix_set(m,i,j,vi * gsl_vector_get(v,j));
}
/*
Filling in the lower part of the symmetric matrix.
*/
for (i=0; i < v->size; i++)
for (j=0; j < i; j++)
gsl_matrix_set(m,i,j,gsl_matrix_get(m,j,i));
}
--
Joakim Hove
hove AT ift uib no
+47 (55 5)8 27 90
http://www.ift.uib.no/~hove/
- [Help-gsl] Help, Kaustubh Patil, 2004/09/03
- Re: [Help-gsl] Help,
Joakim Hove <=