/* largest eigen vector */
{
- real eig, *eigv;
- eigv = &eig;
- power_method(L, L->n, 1, seed, &v, &eigv);
+ real eig;
+ power_method(L, L->n, 1, seed, &v, &eig);
}
vector_ordering(n, v, p);
static const real tolerance = 0.00001;
void power_method(void *A, int n, int K, int random_seed,
- real **eigv, real **eigs){
+ real **eigv, real *eigs){
/* find k-largest eigenvectors of a matrix A. Result in eigv. if eigv == NULL; memory will be allocated.
This converges only if the largest eigenvectors/values are real (e.g., if A is symmetric) and the
assert(K <= n && K > 0);
if (!(*eigv)) *eigv = MALLOC(sizeof(real)*n*K);
- if (!(*eigs)) *eigs = MALLOC(sizeof(real)*K);
v = MALLOC(sizeof(real*)*K);
vv = MALLOC(sizeof(real)*n);
unorm = vector_product(n, vv, vv);/* ||u||^2 */
unorm = sqrt(unorm);
- (*eigs)[k] = unorm;
+ eigs[k] = unorm;
if (unorm > 0) {
unorm = 1/unorm;
} else {
#include <sparse/general.h>
void power_method(void *A, int n, int K, int random_seed,
- real **eigv, real **eigs);
+ real **eigv, real *eigs);
#endif