Revision 0dbb71197f123f711e714db6f8f55b40031f4529 authored by A.I. McLeod on 14 December 2012, 00:00:00 UTC, committed by Gabor Csardi on 14 December 2012, 00:00:00 UTC
1 parent b417f2d
Raw File
upperWedge.c
// Converts a doubly symmetric matrix to a list of vectors for more compact storage

#include "trenchR.h"
	
void upperWedge(double *phi,double sigsq,int n,double **b)
{
	int i,j,n1;
	VECTOR v = Vector(n);
	
	for (i = 1; i <= n-1; i++)
		v[i-1] = -phi[n-i-1] / sigsq;
	
	b[0][0] = 1.0 / sigsq;

	for (j = 2; j <= n; j++)
		b[0][j-1] = v[n-j];

	n1 = (int)((n-1)/2); 
	
	for (i = 2; i <= n1+1; i++)
		for (j = i; j <= n-i+1; j++)
			b[i-1][j-1] = b[i-2][j-2] + (v[n-j] * v[n-i] 
		   -v[i-2] * v[j-2]) * sigsq;
	
	free_vector(v);
	return;
}

back to top