function Clr(){
	var soso="";
	for (var j=1; j<=n+1; j++){
			for (var i=1; i<=m; i++)
				eval(eval('document.st.a'+i+'a'+j+'.value=soso'));
	}
}

function evall(s){
	var ss="e()[]+-*/0123456789., ";
	for (var i=0;i<s.length;i++){
		if (ss.indexOf(s.charAt(i))+1) continue;
		else {
			alert("Incorrect Input Data!"+s.charAt(i)+"!");
			Clr();
			return;
		}
	}
	return eval(s);
}

function maxi(A){
var a=0,i;
for (i=0; i<A.length; i++){
a=Math.max(a,A[i]);}
return a;
}

function norm(A){
var m=A[0].length,i;
var n=A.length,j;
var l=[];
for (j=0; j<n; j++){
var a=0;
for (i=0; i<m; i++){
if (A[j][i]<0) A[j][i]=-A[j][i];
a+=A[j][i];}
l[j]=a;}
return maxi(l);
}

function Rez(M){
	for (var j=0; j<=n; j++){
		for (var i=0; i<m; i++){
			var amin=Math.floor(M[j][i]);
			var amax=Math.ceil(M[j][i]);
			if (M[j][i]-amin < 1e-7) M[j][i]=amin;
			else if (amax-M[j][i] < 1e-7) M[j][i]=amax;
		}
	} 
	return M;
}

function Mr(){
	var b=[],M=[];
	for (var j=1; j<=n+1; j++){
		for (var i=1; i<=m; i++)
			b.push(evall(eval('document.st.a'+i+'a'+j+'.value')));
		M.push(b);
		b=[];
	}
	return M;
}

function Xr(){
	var b=[];
	for (var i=1; i<=n; i++)
		b.push(eval('document.st.x'+i+'.value'));
	return b;
}

function Mw(M){
	for (var j=1; j<=n+1; j++){
			for (var i=1; i<=m; i++)
				eval('document.st.a'+i+'a'+j+'.value='+M[j-1][i-1]);
	}
}

function Xw(b){
	for (var j=1; j<=n; j++)
		eval('document.st.x'+j+'.value=b[j-1]');	
}


function Chc(){
	var M=Mr(),tmp;
	var lx=Xr();
	mx.push(Xr());
	mb.push(Mr());
	var k=parseInt(document.st.c1.value)-1,l=parseInt(document.st.c2.value)-1;
	tmp=M[k];
	M[k]=M[l];
	M[l]=tmp;
	tmp=lx[k];
	lx[k]=lx[l];
	lx[l]=tmp;
	Xw(lx);
	Mw(M);
}

function Chr(){
	var M=Mr(),tmp;
	mx.push(Xr());
	mb.push(Mr());
	var k=parseInt(document.st.r1.value)-1,l=parseInt(document.st.r2.value)-1;
	for (var i=0; i<=n; i++){
		tmp=M[i][k];
		M[i][k]=M[i][l];
		M[i][l]=tmp;
	}
	Mw(M);
}

function Mult(){
	var M=Mr(),tmp;
	mx.push(Xr());
	mb.push(Mr());
	var k=parseInt(document.st.r3.value)-1,x=parseFloat(eval(document.st.num.value));
	if (document.st.r4.value != ''){
		var l=parseInt(document.st.r4.value)-1;
		for (var i=0; i<=n; i++)
			M[i][l]-=M[i][k]*x;
	}
	else {
		for (var i=0; i<=n; i++)
			M[i][k]*=x;
	}
	Mw(Rez(M));	
}

function Back(){
	Xw(mx.pop());
	Mw(mb.pop());	
}

function Iter(){
    var A,B=[],C,tmp=0,temp=0,tempura,nora;
    for (var i=1; i<=m; i++){
        eval(eval('document.st.a'+i+'a'+(n+2)+'.value=document.st.a'+i+'a'+(n+3)+'.value'));
        B.push(eval(eval('document.st.a'+i+'a'+(n+3)+'.value')));
    }
    A=Mr();
    C=Mr();
    C.pop();
    nora=norm(C);
    if (nora>0 && nora<1 ){
      for (var  i=1; i<=m; i++){
        for (var j=1; j<=m; j++)
            tmp=tmp+A[j-1][i-1]*B[j-1];
        tmp=tmp+A[n][i-1];        
        eval(eval('document.st.a'+i+'a'+(n+3)+'.value=tmp'));
	tempura=Math.abs(tmp-B[i-1]);
        eval(eval('document.st.a'+i+'a'+(n+4)+'.value=tempura'));
	temp=temp+tempura;
        tmp=0;
    }
    eval(eval('document.st.norma.value=nora'));
    eval(eval('document.st.error.value=nora*temp/(1-nora)'));	 
    }
    else {alert("Итерирование невозможно!");
        return;
    }       	
      
}



