def calcxi(stateprior,transition,emission,observations,numstates,alpha=None,beta=None,elem_size=numpy.longdouble):
	if alpha is None:
		alpha = calcalpha(stateprior,transition,emission,observations,numstates,elem_size)
	if beta is None:
		beta = calcbeta(transition,emission,observations,numstates,elem_size)
	xi = numpy.zeros((len(observations),numstates,numstates),dtype=elem_size)
	for t in xrange(len(observations)-1):
		denom = 0.0
		for i in xrange(numstates):
			for j in xrange(numstates):
				thing = 1.0
				thing *= alpha[t][i]
				thing *= transition[i][j]
				thing *= emission[j][observations[t+1]]
				thing *= beta[t+1][j]
				denom += thing
		for i in xrange(numstates):
			for j in xrange(numstates):
				numer = 1.0
				numer *= alpha[t][i]
				numer *= transition[i][j]
				numer *= emission[j][observations[t+1]]
				numer *= beta[t+1][j]
				xi[t][i][j] = numer/denom
	return xi
Generates the list column headers.
dataset/ETHPy150Open QuantSoftware/QuantSoftwareToolkit/QSTK/qstklearn/hmm.py/calcxi--crossover with--dataset/ETHPy150Open AppScale/appscale/AppServer/lib/django-1.2/django/contrib/admin/templatetags/admin_list.py/result_headers