
				/*	AntiFerroMagnetism. EigenVectors Problem	*/

#include	"stdio.h"
#include	"math.h"
#include	"conio.h"
#include	"stdlib.h"
#include	"search.h"		//	For  qsort()

#include	"ap.h"
#include	"linalg.h"

#define		OutputName		"Output.txt"

double	S = 5.            ,  k  = 0.01 ,  hIk = 0.005 ,  a = -2. , b = 0. ;
int		N = (int) (2*S+1) ,  mm = 2 ,  i1  = 0 , i2m = 2 ;	//  ,  M
double	S2= S*(S+1) ;

void main ()
{
	int		m , i , ii ;
	double	m1, m2;
	FILE	* Output ;

	// alglib::ae_int_t		M ;
	alglib::real_1d_array	D , E ;  E .setlength (N) ;
	alglib::real_2d_array	Z , ZZ;  ZZ.setlength (N,i2m-i1) ;

	if ( ( Output = fopen (OutputName, "w") ) == NULL )
	 {	printf ( "	Cannot open \"%s\" for writing!", OutputName ) ;  getch () ;  exit (0) ; }
	 
	for ( m=0; m<=mm; m++ )
	 {
				D.setlength (N-m) ;	Z.setlength (N-m,N-m) ;
				fprintf ( Output, "\n" ) ;
		
		for ( i=0; i<N-m; i++ )
		  {		m1 = S-i ;  m2 = m-m1 ;
			D[i] =	m1*m2/S2 - k*(m1*m1+m2*m2)/(2*S2) - hIk*k*m1/S ;
			E[i] =	sqrt ( (S2-m1*(m1-1)) * (S2-m2*(m2+1)) ) / (2*S2) ; }
			
		alglib::smatrixtdevdi ( D, E, N-m, 2, i1, i2m-m, Z ) ;
		// alglib::smatrixtdevdr ( D, E, N-m, 2, a, b, M, Z ) ;
		
		for  ( i=0;i<N-m;i++ )
		 {
				fprintf ( Output, "\n" ) ;
				fprintf ( Output, "\t""%10.6f", (i+.5)/(N-m) ) ;
				
			for ( ii=0; ii< m    ; ii++ )
			  { fprintf ( Output, "\t""%10.6s", ""    ) ; }
								  
				// fprintf ( Output, "\t""%10.6d", M ) ;
				
			for ( ii=0; ii<=i2m-m-i1; ii++ )
			  {
				ZZ[i][ii] = fabs (Z[i][ii]) ;	// Z[i][ii] * Z[i][ii] ; fabs (Z[i][ii]) ;
				fprintf ( Output, "\t""%10.6f", ZZ[i][ii] ) ; }
				} }
	
	fclose (Output) ;
}

































