var V=("a,b,c,wa,wb,wg,A,u,ha,hb,hc,sa,sb,sc,wha,whb,whc,ru,ri").split(",");
var a,b,c,wa,wb,wg,A,u,ha,hb,hc,sa,sb,sc,wha,whb,whc,ru,ri;
var ag,bg,cg,wag,wbg,wgg,Ag,ug,hag,hbg,hcg,sag,sbg,scg,whag,whbg,whcg,rug,rig;
var rd=1000000000000000;
var registriert=1==0, gon=(1==0);

function calc(gls)
{
	var i,o=true,t="";
	var nmin=1;
	rd=1000000000000000;gon=document.f.chgon.checked;
	for(i=0;i<V.length;i++)
	{
		eval(V[i]+"=document.f.g"+V[i]+".value");
		eval(V[i]+"=Number("+V[i]+".replace(/,/,'.').replace(/°/,'').replace(/gon/g,'').replace(/g/,''))");
		eval(V[i]+"g=((!isNaN("+V[i]+"))&&(document.f.g"+V[i]+".value.replace(/ /g,'')!=''))");
	}
	if(wag){if(document.f.gwa.value.indexOf("g")>-1){wa=wa*0.9;gon=true;}}
	if(wbg){if(document.f.gwb.value.indexOf("g")>-1){wb=wb*0.9;gon=true;}}
	if(wgg){if(document.f.gwg.value.indexOf("g")>-1){wg=wg*0.9;gon=true;}}
	if(wag)wa*=Math.PI/180;if(wbg)wb*=Math.PI/180;if(wgg)wg*=Math.PI/180;
	if(gls)
	{
		tErr="";
		Absolutwert=true;
		G=new Array();GV=new Array();Ers=new Array();
		if(!registriert){prep();}else Wiederherstellen();
	}
	
while(o)
{
o=false;
status="Standardberechnung";
if(ag&&bg&&cg){if(a>b+c){t+="Fehler: a > b+c";break;}if(b>a+c){t+="Fehler: b > a+c";break;}if(c>a+b){t+="Fehler: c > a+b";break;}}
if(rig&&ag){if(a<=ri){t+="Fehler: a <= ri";break;}}if(rig&&bg){if(b<=ri){t+="Fehler: b <= ri";break;}}if(rig&&cg){if(c<=ri){t+="Fehler: c <= ri";break;}}
if(rig&&rug){if(ri>=ru){t+="Fehler: ri > ru";break;}}
for(i=0;i<V.length;i++)eval("if(isNaN("+V[i]+")){"+V[i]+"='Error';o=true;}");
if(o)break;

//------------------------------------------------------------------------------------------------------------------
//          Anfang des Berechnungsblocks
//------------------------------------------------------------------------------------------------------------------

if(ag&&bg&&cg&&!ug){u=a+b+c;t+="u=a+b+c\n";o=ug=true;continue;}
if(ag&&bg&&!cg&&ug){c=u-a-b;t+="c=u-a-b\n";o=cg=true;continue;}
if(ag&&!bg&&cg&&ug){b=u-a-c;t+="b=u-a-c\n";o=bg=true;continue;}
if(!ag&&bg&&cg&&ug){a=u-b-c;t+="a=u-b-c\n";o=ag=true;continue;}

if(hag&&ag&&!Ag){A=ha*a/2;t+="A=ha*a/2\n";Ag=o=true;continue;}
if(hbg&&bg&&!Ag){A=hb*b/2;t+="A=hb*b/2\n";Ag=o=true;continue;}
if(hcg&&cg&&!Ag){A=hc*c/2;t+="A=hc*c/2\n";Ag=o=true;continue;}
if(hag&&!ag&&Ag){a=2*A/ha;t+="a=2*A/ha\n";ag=o=true;continue;}
if(hbg&&!bg&&Ag){b=2*A/hb;t+="b=2*A/hb\n";bg=o=true;continue;}
if(hcg&&!cg&&Ag){c=2*A/hc;t+="c=2*A/hc\n";cg=o=true;continue;}
if(!hag&&ag&&Ag){ha=2*A/a;t+="ha=2*A/a\n";hag=o=true;continue;}
if(!hbg&&bg&&Ag){hb=2*A/b;t+="hb=2*A/b\n";hbg=o=true;continue;}
if(!hcg&&cg&&Ag){hc=2*A/c;t+="hc=2*A/c\n";hcg=o=true;continue;}

if(ag&&bg&&cg&&ug&&!Ag){var s=u/2;A=Math.sqrt(s*(s-a)*(s-b)*(s-c));t+="A=sqrt(s·(s-a)·(s-b)·(s-c))\n mit s=u/2="+R(s)+"\n";Ag=o=true;continue;}

if(wag&&wbg&&!wgg){wg=Math.PI-wa-wb;t+="wg=180°-wa-wb\n";wgg=o=true;continue;}
if(wag&&!wbg&&wgg){wb=Math.PI-wa-wg;t+="wb=180°-wa-wg\n";wbg=o=true;continue;}
if(!wag&&wbg&&wgg){wa=Math.PI-wb-wg;t+="wa=180°-wb-wg\n";wag=o=true;continue;}

if(wag&&bg&&cg&&!ag){a=Math.sqrt(b*b+c*c-2*b*c*Math.cos(wa));t+="a=sqrt(b²+c²-2*b*c*cos(wa))\n";ag=o=true;continue;}
if(wbg&&ag&&cg&&!bg){b=Math.sqrt(a*a+c*c-2*a*c*Math.cos(wb));t+="b=sqrt(a²+c²-2*a*c*cos(wb))\n";bg=o=true;continue;}
if(wgg&&ag&&bg&&!cg){c=Math.sqrt(a*a+b*b-2*a*b*Math.cos(wg));t+="c=sqrt(a²+b²-2*a*b*cos(wg))\n";cg=o=true;continue;}
if(!wag&&bg&&cg&&ag){wa=Math.acos(-(a*a-b*b-c*c)/(2*b*c));t+="wa=acos((b²+c²-a²)/(2*b*c))\n";wag=o=true;continue;}
if(!wbg&&ag&&cg&&bg){wb=Math.acos(-(b*b-a*a-c*c)/(2*a*c));t+="wb=acos((a²+c²-b²)/(2*a*c))\n";wbg=o=true;continue;}
if(!wgg&&ag&&bg&&cg){wg=Math.acos(-(c*c-a*a-b*b)/(2*a*b));t+="wg=acos((a²+b²-c²)/(2*a*b))\n";wgg=o=true;continue;}

if(wag&&ag&&wbg&&!bg){b=a*Math.sin(wb)/Math.sin(wa);t+="b=a*sin(wb)/sin(wa)\n";bg=o=true;continue;}
if(wag&&!ag&&wbg&&bg){a=b*Math.sin(wa)/Math.sin(wb);t+="a=b*sin(wa)/sin(wb)\n";ag=o=true;continue;}
if(wag&&ag&&wgg&&!cg){c=a*Math.sin(wg)/Math.sin(wa);t+="c=a*sin(wg)/sin(wa)\n";cg=o=true;continue;}
if(wag&&!ag&&wgg&&cg){a=c*Math.sin(wa)/Math.sin(wg);t+="a=c*sin(wa)/sin(wg)\n";ag=o=true;continue;}
if(wbg&&bg&&wgg&&!cg){c=b*Math.sin(wg)/Math.sin(wb);t+="c=b*sin(wg)/sin(wb)\n";cg=o=true;continue;}
if(wbg&&!bg&&wgg&&cg){b=c*Math.sin(wb)/Math.sin(wg);t+="b=c*sin(wb)/sin(wg)\n";bg=o=true;continue;}
if(wag&&ag&&!wbg&&bg){wb=Math.asin(Math.sin(wa)*b/a);t+="wb=asin(sin(wa)*b/a\n";
			if(a<b){t+="zwei Lösungen: wb1="+R(wb*180/Math.PI)+"°\n               wb2="+R((Math.PI-wb)*180/Math.PI)+"°\n";}
			wbg=o=true;continue;}
if(!wag&&ag&&wbg&&bg){wa=Math.asin(Math.sin(wb)*a/b);t+="wa=asin(sin(wb)*a/b\n";
			if(b<a){t+="zwei Lösungen: wa1="+R(wa*180/Math.PI)+"°\n               wa2="+R((Math.PI-wa)*180/Math.PI)+"°\n";}
			wag=o=true;continue;}
if(wag&&ag&&!wgg&&cg){wg=Math.asin(Math.sin(wa)*c/a);t+="wg=asin(sin(wa)*c/a\n";
			if(a<c){t+="zwei Lösungen: wg1="+R(wg*180/Math.PI)+"°\n               wg2="+R((Math.PI-wg)*180/Math.PI)+"°\n";}
			wgg=o=true;continue;}
if(!wag&&ag&&wgg&&cg){wa=Math.asin(Math.sin(wg)*a/c);t+="wa=asin(sin(wg)*a/c\n";
			if(c<a){t+="zwei Lösungen: wa1="+R(wa*180/Math.PI)+"°\n               wa2="+R((Math.PI-wa)*180/Math.PI)+"°\n";}
			wag=o=true;continue;}
if(wbg&&bg&&!wgg&&cg){wg=Math.asin(Math.sin(wb)*c/b);t+="wg=asin(sin(wb)*c/b\n";
			if(b<c){t+="zwei Lösungen: wg1="+R(wg*180/Math.PI)+"°\n               wg2="+R((Math.PI-wg)*180/Math.PI)+"°\n";}
			wgg=o=true;continue;}
if(!wbg&&bg&&wgg&&cg){wb=Math.asin(Math.sin(wg)*b/c);t+="wb=asin(sin(wg)*b/c\n";
			if(c<b){t+="zwei Lösungen: wb1="+R(wb*180/Math.PI)+"°\n               wb2="+R((Math.PI-wb)*180/Math.PI)+"°\n";}
			wbg=o=true;continue;}

if(!hag&&bg&&wgg){ha=b*Math.sin(wg);t+="ha=b*sin(wg)\n";hag=o=true;continue;}
if(hag&&!bg&&wgg){b=ha/Math.sin(wg);t+="b=ha/sin(wg)\n";bg=o=true;continue;}
if(!hag&&cg&&wbg){ha=c*Math.sin(wb);t+="ha=c*sin(wb)\n";hag=o=true;continue;}
if(hag&&!cg&&wbg){c=ha/Math.sin(wb);t+="c=ha/sin(wb)\n";cg=o=true;continue;}
if(!hbg&&ag&&wgg){hb=a*Math.sin(wg);t+="hb=a*sin(wg)\n";hbg=o=true;continue;}
if(hbg&&!ag&&wgg){a=hb/Math.sin(wg);t+="a=hb/sin(wg)\n";ag=o=true;continue;}
if(!hbg&&cg&&wag){hb=c*Math.sin(wa);t+="hb=c*sin(wa)\n";hbg=o=true;continue;}
if(hbg&&!cg&&wag){c=hb/Math.sin(wa);t+="c=hb/sin(wa)\n";cg=o=true;continue;}
if(!hcg&&ag&&wbg){hc=a*Math.sin(wb);t+="hc=a*sin(wb)\n";hcg=o=true;continue;}
if(hcg&&!ag&&wbg){a=hc/Math.sin(wb);t+="a=hc/sin(wb)\n";ag=o=true;continue;}
if(!hcg&&bg&&wag){hc=b*Math.sin(wa);t+="hc=b*sin(wa)\n";hcg=o=true;continue;}
if(hcg&&!bg&&wag){b=hc/Math.sin(wa);t+="b=hc/sin(wa)\n";bg=o=true;continue;}
if(hag&&bg&&!wgg){wg=Math.asin(ha/b);t+="wg=asin(ha/b)\n zweite Lösung: wg="+R(180-wg*180/Math.PI)+"°\n";wgg=o=true;continue;}
if(hag&&cg&&!wbg){wb=Math.asin(ha/c);t+="wb=asin(ha/c)\n zweite Lösung: wb="+R(180-wb*180/Math.PI)+"°\n";wbg=o=true;continue;}
if(hbg&&ag&&!wgg){wg=Math.asin(hb/a);t+="wg=asin(hb/a)\n zweite Lösung: wg="+R(180-wg*180/Math.PI)+"°\n";wgg=o=true;continue;}
if(hbg&&cg&&!wag){wa=Math.asin(hb/c);t+="wa=asin(hb/c)\n zweite Lösung: wa="+R(180-wa*180/Math.PI)+"°\n";wag=o=true;continue;}
if(hcg&&ag&&!wbg){wb=Math.asin(hc/a);t+="wb=asin(hc/a)\n zweite Lösung: wb="+R(180-wb*180/Math.PI)+"°\n";wbg=o=true;continue;}
if(hcg&&bg&&!wag){wa=Math.asin(hc/b);t+="wa=asin(hc/b)\n zweite Lösung: wa="+R(180-wa*180/Math.PI)+"°\n";wag=o=true;continue;}

if(wag&&bg&&cg&&!sag){sa=Math.sqrt(b*b+c*c+2*b*c*Math.cos(wa))/2;t+="sa=sqrt(b²+c²+2*b*c*cos(wa))/2\n";sag=o=true;continue;}
if(wbg&&ag&&cg&&!sbg){sb=Math.sqrt(a*a+c*c+2*a*c*Math.cos(wb))/2;t+="sb=sqrt(a²+c²+2*a*c*cos(wb))/2\n";sbg=o=true;continue;}
if(wgg&&ag&&bg&&!scg){sc=Math.sqrt(a*a+b*b+2*a*b*Math.cos(wg))/2;t+="sc=sqrt(a²+b²+2*a*b*cos(wg))/2\n";scg=o=true;continue;}
if(!wag&&bg&&cg&&sag){wa=Math.acos(-(b*b+c*c-4*sa*sa)/(2*b*c));t+="wa=acos(-(b²+c²-4*sa²)/(2*b*c))\n";wag=o=true;continue;}
if(!wbg&&ag&&cg&&sbg){wb=Math.acos(-(a*a+c*c-4*sb*sb)/(2*a*c));t+="wb=acos(-(a²+c²-4*sb²)/(2*a*c))\n";wbg=o=true;continue;}
if(!wgg&&ag&&bg&&scg){wg=Math.acos(-(a*a+b*b-4*sc*sc)/(2*a*b));t+="wc=acos(-(a²+b²-4*sc²)/(2*a*b))\n";wgg=o=true;continue;}
if(wag&&!bg&&cg&&sag){var coswa=Math.cos(wa),r=Math.sqrt(c*c*(coswa*coswa-1)+4*sa*sa);b=r-c*coswa;t+="b=sqrt(c²*(cos²(wa)-1)+4*sa²)-c*cos(wa)\n";bg=o=true;continue;}
if(wag&&bg&&!cg&&sag){var coswa=Math.cos(wa),r=Math.sqrt(b*b*(coswa*coswa-1)+4*sa*sa);c=r-b*coswa;t+="c=sqrt(b²*(cos²(wa)-1)+4*sa²)-b*cos(wa)\n";cg=o=true;continue;}
if(wbg&&!ag&&cg&&sbg){var coswb=Math.cos(wb),r=Math.sqrt(c*c*(coswb*coswb-1)+4*sb*sb);a=r-c*coswb;t+="a=sqrt(c²*(cos²(wb)-1)+4*sb²)-c*cos(wb)\n";ag=o=true;continue;}
if(wbg&&ag&&!cg&&sbg){var coswb=Math.cos(wb),r=Math.sqrt(a*a*(coswb*coswb-1)+4*sb*sb);c=r-a*coswb;t+="c=sqrt(a²*(cos²(wb)-1)+4*sb²)-a*cos(wb)\n";cg=o=true;continue;}
if(wgg&&!ag&&bg&&scg){var coswg=Math.cos(wg),r=Math.sqrt(b*b*(coswg*coswg-1)+4*sc*sc);a=r-b*coswg;t+="a=sqrt(b²*(cos²(wg)-1)+4*sc²)-b*cos(wg)\n";ag=o=true;continue;}
if(wgg&&ag&&!bg&&scg){var coswg=Math.cos(wg),r=Math.sqrt(a*a*(coswg*coswg-1)+4*sc*sc);b=r-a*coswg;t+="b=sqrt(a²*(cos²(wg)-1)+4*sc²)-a*cos(wc)\n";bg=o=true;continue;}

if(bg&&cg&&wag&&!whag){wha=2*b*c*Math.cos(wa/2)/(b+c);t+="wha=2*b*c*cos(wa/2)/(b+c)\n";whag=o=true;continue;}
if(ag&&cg&&wbg&&!whbg){whb=2*a*c*Math.cos(wb/2)/(a+c);t+="whb=2*a*c*cos(wb/2)/(a+c)\n";whbg=o=true;continue;}
if(ag&&bg&&wgg&&!whcg){whc=2*a*b*Math.cos(wg/2)/(a+b);t+="whc=2*a*b*cos(wc/2)/(a+b)\n";whcg=o=true;continue;}
if(!bg&&cg&&wag&&whag){b=c*wha/(2*c*Math.cos(wa/2)-wha);t+="b=c*wha/(2*c*cos(wa/2)-wha)\n";bg=o=true;continue;}
if(bg&&!cg&&wag&&whag){c=b*wha/(2*b*Math.cos(wa/2)-wha);t+="c=b*wha/(2*b*cos(wa/2)-wha)\n";cg=o=true;continue;}
if(!ag&&cg&&wbg&&whbg){a=c*whb/(2*c*Math.cos(wb/2)-whb);t+="a=c*whb/(2*c*cos(wb/2)-whb)\n";ag=o=true;continue;}
if(ag&&!cg&&wbg&&whbg){c=a*whb/(2*a*Math.cos(wb/2)-whb);t+="c=a*whb/(2*a*cos(wb/2)-whb)\n";cg=o=true;continue;}
if(!ag&&bg&&wgg&&whcg){a=b*whc/(2*b*Math.cos(wg/2)-whc);t+="a=b*whc/(2*b*cos(wg/2)-whc)\n";ag=o=true;continue;}
if(ag&&!bg&&wgg&&whcg){b=a*whc/(2*a*Math.cos(wg/2)-whc);t+="b=a*whc/(2*a*cos(wg/2)-whc)\n";bg=o=true;continue;}
if(bg&&cg&&!wag&&whag){wa=Math.acos(wha*(b+c)/(2*b*c))*2;t+="wa=acos(wha*(b+c)/(2*b*c))*2\n";wag=o=true;continue;}
if(ag&&cg&&!wbg&&whbg){wb=Math.acos(whb*(a+c)/(2*a*c))*2;t+="wb=acos(whb*(a+c)/(2*a*c))*2\n";wbg=o=true;continue;}
if(ag&&bg&&!wgg&&whcg){wg=Math.acos(whc*(a+b)/(2*a*b))*2;t+="wg=acos(whc*(a+b)/(2*a*b))*2\n";wgg=o=true;continue;}

if(ag&&wag&&!rug){ru=a/(2*Math.sin(wa));t+="ru=a/(2*sin(wa))\n";rug=o=true;continue;}
if(bg&&wbg&&!rug){ru=b/(2*Math.sin(wb));t+="ru=b/(2*sin(wb))\n";rug=o=true;continue;}
if(cg&&wgg&&!rug){ru=c/(2*Math.sin(wg));t+="ru=c/(2*sin(wg))\n";rug=o=true;continue;}
if(!ag&&wag&&rug){a=ru*2*Math.sin(wa);t+="a=2*ru*sin(wa)\n";ag=o=true;continue;}
if(!bg&&wbg&&rug){b=ru*2*Math.sin(wb);t+="b=2*ru*sin(wg)\n";bg=o=true;continue;}
if(!cg&&wgg&&rug){c=ru*2*Math.sin(wg);t+="c=2*ru*sin(wg)\n";cg=o=true;continue;}
if(ag&&!wag&&rug){wa=Math.asin(a/(2*ru));t+="wa=asin(a/(2*ru))\n";if(2*a<ru)t+=" Achtung: zweite Lösung: wa="+R(180-wa*180/Math.PI)+"°\n";wag=o=true;continue;}
if(bg&&!wbg&&rug){wb=Math.asin(b/(2*ru));t+="wb=asin(b/(2*ru))\n";if(2*b<ru)t+=" Achtung: zweite Lösung: wb="+R(180-wb*180/Math.PI)+"°\n";wbg=o=true;continue;}
if(cg&&!wgg&&rug){wg=Math.asin(c/(2*ru));t+="wg=asin(c/(2*ru))\n";if(2*c<ru)t+=" Achtung: zweite Lösung: wg="+R(180-wg*180/Math.PI)+"°\n";wgg=o=true;continue;}

if(!rig&&ag&&bg&&cg){var s=(a+b+c)/2;ri=Math.sqrt((s-a)*(s-b)*(s-c)/s);t+="ri=sqrt((s-a)*(s-b)*(s-c)/s)\n mit s=u/2\n";rig=o=true;continue;}


if(ug&&rig&&!Ag){A=ri*u/2;t+="A=ri*u/2\n";Ag=o=true;continue;}
if(ug&&!rig&&Ag){ri=2*A/u;t+="ri=2*A/u\n";rig=o=true;continue;}
if(!ug&&rig&&Ag){u=2*A/ri;t+="u=2*A/ri\n";ug=o=true;continue;}

if(!rig&&wag&&wbg&&wgg&&ug){ri=u/2*Math.tan(wa/2)*Math.tan(wb/2)*Math.tan(wg/2);t+="ri=u/2*tan(wa/2)*tan(wb/2)*tan(wg/2)\n";rig=o=true;continue;}
if(rig&&wag&&wbg&&wgg&&!ug){u=ri*2/(Math.tan(wa/2)*Math.tan(wb/2)*Math.tan(wg/2));t+="u=2*ri/(tan(wa/2)*tan(wb/2)*tan(wg/2))\n";ug=o=true;continue;}

if(!ug&&wag&&wbg&&wgg&&rug){u=8*ru*Math.cos(wa/2)*Math.cos(wb/2)*Math.cos(wg/2);t+="u=8*ru*cos(wa/2)*cos(wb/2)*cos(wg/2)\n";ug=o=true;continue;}
if(ug&&wag&&wbg&&wgg&&!rug){ru=u/(8*Math.cos(wa/2)*Math.cos(wb/2)*Math.cos(wg/2));t+="ru=u/(8*cos(wa/2)*cos(wb/2)*cos(wg/2))\n";rug=o=true;continue;}

if(!sag&&ag&&bg&&cg){sa=Math.sqrt(2*((b*b)+(c*c))-(a*a))/2;t+="sa=Math.sqrt(2*(b²+c²)-a²)/2\n";sag=o=true;continue;}
if(!sbg&&ag&&bg&&cg){sb=Math.sqrt(2*((a*a)+(c*c))-(b*b))/2;t+="sb=Math.sqrt(2*(a²+c²)-b²)/2\n";sbg=o=true;continue;}
if(!scg&&ag&&bg&&cg){sc=Math.sqrt(2*((a*a)+(b*b))-(c*c))/2;t+="sc=Math.sqrt(2*(a²+b²)-c²)/2\n";scg=o=true;continue;}
if(sag&&ag&&!bg&&cg){b=Math.sqrt((a*a-2*c*c+4*sa*sa)/2);t+="b=Math.sqrt((a²-2*c²+4*sa²)/2)\n";bg=o=true;continue;}
if(sag&&ag&&bg&&!cg){c=Math.sqrt((a*a-2*b*b+4*sa*sa)/2);t+="c=Math.sqrt((a²-2*b²+4*sa²)/2)\n";cg=o=true;continue;}
if(sbg&&!ag&&bg&&cg){a=Math.sqrt((b*b-2*c*c+4*sb*sb)/2);t+="a=Math.sqrt((b²-2*c²+4*sb²)/2)\n";ag=o=true;continue;}
if(sbg&&ag&&bg&&!cg){c=Math.sqrt((b*b-2*a*a+4*sb*sb)/2);t+="c=Math.sqrt((a²-2*b²+4*sb²)/2)\n";cg=o=true;continue;}
if(scg&&!ag&&bg&&cg){a=Math.sqrt((c*c-2*b*b+4*sc*sc)/2);t+="b=Math.sqrt((c²-2*b²+4*sc²)/2)\n";ag=o=true;continue;}
if(scg&&ag&&!bg&&cg){b=Math.sqrt((c*c-2*a*a+4*sc*sc)/2);t+="c=Math.sqrt((c²-2*a²+4*sc²)/2)\n";bg=o=true;continue;}

if(sag&&sbg&&bg&&!cg&&!ag){c=Math.sqrt(6)*Math.sqrt(4*(2*(sa*sa)+(sb*sb))-3*(b*b))/6;t+="c=sqrt(6)*sqrt(4*(2*sa²+sb²)-3*b²)/6\n";cg=o=true;continue;}
if(sag&&sbg&&ag&&!cg&&!bg){c=Math.sqrt(6)*Math.sqrt(4*(2*(sb*sb)+(sa*sa))-3*(a*a))/6;t+="c=sqrt(6)*sqrt(4*(2*sb²+sa²)-3*a²)/6\n";cg=o=true;continue;}
if(sag&&scg&&ag&&!bg&&!cg){b=Math.sqrt(6)*Math.sqrt(4*(2*(sc*sc)+(sa*sa))-3*(a*a))/6;t+="b=sqrt(6)*sqrt(4*(2*sc²+sa²)-3*a²)/6\n";bg=o=true;continue;}
if(sag&&scg&&!ag&&!bg&&cg){b=Math.sqrt(6)*Math.sqrt(4*(2*(sa*sa)+(sc*sc))-3*(c*c))/6;t+="b=sqrt(6)*sqrt(4*(2*sa²+sc²)-3*c²)/6\n";bg=o=true;continue;}
if(sbg&&scg&&!ag&&bg&&!cg){a=Math.sqrt(6)*Math.sqrt(4*(2*(sc*sc)+(sb*sb))-3*(b*b))/6;t+="a=sqrt(6)*sqrt(4*(2*sc²+sb²)-3*b²)/6\n";ag=o=true;continue;}
if(sbg&&scg&&!ag&&!bg&&cg){a=Math.sqrt(6)*Math.sqrt(4*(2*(sb*sb)+(sc*sc))-3*(c*c))/6;t+="a=sqrt(6)*sqrt(4*(2*sb²+sc²)-3*c²)/6\n";ag=o=true;continue;}
if(sag&&sbg&&cg&&!ag&&!bg){b=Math.sqrt(6)*Math.sqrt(2*(2*(sa*sa)+(sb*sb))-3*(c*c))/3;t+="b=sqrt(6)*sqrt(2*(2*sa²+sb²)-3*c²)/3\n";bg=o=true;continue;}
if(sag&&scg&&bg&&!ag&&!cg){c=Math.sqrt(6)*Math.sqrt(2*(2*(sa*sa)+(sc*sc))-3*(b*b))/3;t+="c=sqrt(6)*sqrt(2*(2*sa²+sc²)-3*b²)/3\n";cg=o=true;continue;}
if(sbg&&scg&&ag&&!bg&&!cg){b=Math.sqrt(6)*Math.sqrt(2*(2*(sc*sc)+(sb*sb))-3*(a*a))/3;t+="b=sqrt(6)*sqrt(2*(2*sc²+sb²)-3*a²)/3\n";bg=o=true;continue;}

if(hag&&hbg&&hcg&&!ag){a=2*ha*(hb*hb)*(hc*hc)/Math.sqrt((hb*hb)*(hc*hc)*(2*(ha*ha)*((hb*hb)+(hc*hc))-(hb*hb)*(hc*hc))-Math.pow(ha,4)*(Math.pow(hb,4)-2*(hb*hb)*(hc*hc)+Math.pow(hc,4)));
	t+="a=2*ha*hb²*hc²/sqrt(hb²*hc²*(2*ha²*(hb²+hc²)-hb²*hc²)-ha^4*(hb^4-2*hb²*hc²+hc^4))\n";ag=o=true;continue;}

if(sag&&sbg&&scg&&!ag){a=2*Math.sqrt(-sa*sa+2*sb*sb+2*sc*sc)/3;b=2*Math.sqrt(-sb*sb+2*sc*sc+2*sa*sa)/3;c=2*Math.sqrt(-sc*sc+2*sa*sa+2*sb*sb)/3;
	t+="a=2*sqrt(2*sb²+2*sc²-sa²)/3\nb=2*sqrt(2*sc²+2*sa²-sb²)/3\nc=2*sqrt(2*sa²+2*sb²-sc²)/3\n";ag=bg=cg=o=true;continue;}

if(ag&&bg&&cg&&wag&&wbg&&wgg&&Ag&&ug&&hag&&hbg&&hcg&&sag&&sbg&&scg&&whag&&whbg&&whcg&&rug&&rig)break;
if(!rug&&Ag&&wag&&wbg&&wgg){ru=Math.sqrt(A/(2*Math.sin(wa)*Math.sin(wb)*Math.sin(wg)));t+="ru=sqrt(A/(2*sin(wa)*sin(wa)*sin(wg)))\n";rug=o=true;continue;}

//---------------------------------------------------------------------------
//            Lösen mit Gleichungssystem
//---------------------------------------------------------------------------

if(gls==true)
{
	document.f.t.style.color="#000099";
	document.f.t.style.backgroundColor="#F7FFEF";
	window.status="Vorbereitung für Gleichungssystem-Algorithmus";
	document.f.t.value=t+" \n\n Lösen per Gleichungssystem läuft,\n bitte warten!";
	var vx=new Array(V.length),bekannt=new Array(V.length),x0=new Array(V.length),x1=new Array(V.length),bb=true;
	var maxs=10;
	for(i=0;i<V.length;i++){if(i!=6)eval("if("+V[i]+"g)maxs=Math.max("+V[i]+",maxs);");}
	if(Ag)maxs=Math.max(maxs,Math.sqrt(3*A));
	for(i=0;i<V.length;i++)
	{
		bekannt[i]=false;
		x0[i]=0.1;x1[i]=maxs*3;
		if((V[i].charAt(0)=="w")&&(V[i].length==2)){x0[i]=0.001;x1[i]=Math.PI*0.75;}
		eval("vx[i]="+V[i]);
		eval("bekannt[i]="+V[i]+"g");
		if(!bekannt[i])bb=false;
	}
	x1[6]=maxs*maxs;
	//alert(bekannt);
	//alert(G.join("\n"));
	if(bb)break;
	i=0;
	var nmax=document.f.nmax.selectedIndex+2;
	do
	{
		var vl;
		if((vl=solveSys_(vx,bekannt,x0,x1,nmin,nmax,50))==null)break;
		//alert("gefunden: "+vl);
		if(Fkt.join(" ").indexOf("Math.sin")>-1)
		{
			for(i=3;i<6;i++)if(vx[i]<0){vx[i]=0;bekannt[i]=false;}
			if(vx[3]+vx[4]+vx[5]>Math.PI)for(i=3;i<6;i++){if(vx[i]>Math.PI/2)vx[i]=Math.PI-vx[i];break;}
		}
		for(i=3;i<6;i++){vx[i]=Math.abs(vx[i]);while(vx[i]>=Math.PI*2)vx[i]-=Math.PI*2;}
		for(i=0;i<vl.length-1;i++)t+=Vars[vl[i]]+((i<vl.length-2)?", ":"");if(vl.length>1)t+=" und ";
		if(tgls.length==1)
		t+=Vars[vl[i]]+" gefunden als Lösung der Gleichung\n   "+Gleichungen[tgls[0]]+"\n";
		else
		{
			t+=Vars[vl[i]]+" gefunden als Lösungen des Gleichungssystems\n";
			for(i=0;i<tgls.length;i++)
			{
				if((tgls[i]>=Gleichungen.length)||(Gleichungen[tgls[i]]==null))alert("Fehler unbekannter Ursache:\ntgls = "+tgls);
				else t+="  |  "+Gleichungen[tgls[i]].replace(/3\.14159265358979323/g,"180°")+" \n";
			}
		}
		//nmin=vl.length;
		i++;
	}while(i<1);
	o=(vl!=null);
	//alert(vx);
	//gls=false;
	for(i=0;i<V.length;i++)
	{
		eval(V[i]+"="+vx[i]);
		eval(V[i]+"g="+bekannt[i]);
	}
	if(tErr!="")t="Fehler bei Probe:\n"+tErr.replace(/\./g,",").replace(/ /g,"")+"\n"+t;
	if(tErr!="")break;
	tErr="";
}
//---------------------------------------------------------------------------


//------------------------------------------------------------------------------------------------------------------
//            Ende des Berechnungsblocks
//------------------------------------------------------------------------------------------------------------------
}

	status="fertig"
	rd=parseInt("1000000000000000000000000".substr(0,document.f.rd.selectedIndex+3));
	var tProbe=probe();
	if(wag)wa/=Math.PI/180;if(wbg)wb/=Math.PI/180;if(wgg)wg/=Math.PI/180;
	if(gon){wa*=100/90;wb*=100/90;wg*=100/90;}
	for(i=0;i<V.length;i++)
	{
		eval("document.f.b"+V[i]+".value=("+V[i]+"g)?R("+V[i]+"):''");
		eval("if("+V[i]+"g==false)tProbe='';");
	}
	if((wag)&&(document.f.bwa.value!="Error"))document.f.bwa.value+=((gon)?"gon":"°");
	if((wbg)&&(document.f.bwb.value!="Error"))document.f.bwb.value+=((gon)?"gon":"°");
	if((wgg)&&(document.f.bwg.value!="Error"))document.f.bwg.value+=((gon)?"gon":"°");
	t=t.replace(/=/g," = ").replace(/\+/g," + ").replace(/-/g," - ").replace(/\( - /g,"(-").replace(/= - /g,"= -").replace(/\*/g,"·");
	t=t.replace(/wa/g,"alpha").replace(/wb/g,"beta").replace(/wg/g,"gamma");
	t=t.replace(/wha/g,"wa").replace(/whb/g,"wb").replace(/whc/g,"wc").replace(/Math[,\.]/g,"");
	t=t.replace(/\(a·a\)/g,"a²").replace(/\(b·b\)/g,"b²").replace(/\(c·c\)/g,"c²");
	
	if(tProbe!="")
	{
		t+="\n\nkorrekte Proben:\n"+probekorrekt.replace(/\./g,",");
		nichtdiesekomb+=tgls.join(" ")+"; ";
		document.f.t.style.color="#FFFFFF";
		document.f.t.style.backgroundColor="#bb0033";
	}
	else
	{
		document.f.t.style.color="#000000";
		document.f.t.style.backgroundColor="#F7F5EF";
	}
	if(gon)t=t.replace(/180°/g,"200g").replace(/90°/g,"100g");

	if((t=="")&&(gls)){t=" \n\n    nichts gefunden";if(maxs>100)t+="\n\n    eventuell kleinere Zahlen probieren";}

	document.f.t.value=tProbe+t;
}

function R(x)
{
	if((x=="Error")||(isNaN(x)))return "Error";
	x=Math.round(x*rd)/rd;
	return String(x).replace(/\./,",");
}

function Anzeige()
{
	rd=parseInt("1000000000000000000000000".substr(0,document.f.rd.selectedIndex+3));
	for(var i=0;i<V.length;i++)
	{
		eval("document.f.b"+V[i]+".value=("+V[i]+"g)?R("+V[i]+"):''");
	}
	if((wag)&&(document.f.bwa.value!="Error"))document.f.bwa.value+="°";
	if((wbg)&&(document.f.bwb.value!="Error"))document.f.bwb.value+="°";
	if((wgg)&&(document.f.bwg.value!="Error"))document.f.bwg.value+="°";
}

function registriereGleichungen()
{
	status="lese Gleichungen ein";
	var v=V.join(" "),i;
	for(i=0;i<Gleichungen.length;i++)regGl(Gleichungen[i],v);
	status="";
}

//if(window.location.href.indexOf("arndt-bruenner")==-1)calc=null;
var Gleichungen=new Array(
	"u=a+b+c",
	"A=ha*a/2",
	"A=hb*b/2",
	"A=hc*c/2",
	"A=ri*u/2",
	"wa+wb+wg=3.14159265358979323",
	"16*A*A=(a+b+c)*(a+b-c)*(-a+b+c)*(a-b+c)",
	"4*ri*ri*(a+b+c)=(a+b-c)*(-a+b+c)*(a-b+c)",
	"-a*a*(ha*ha*ha*ha*(hb*hb*hb*hb-2*hb*hb*hc*hc+hc*hc*hc*hc)-2*ha*ha*hb*hb*hc*hc*(hb*hb+hc*hc)+hb*hb*hb*hb*hc*hc*hc*hc)=4*ha*ha*hb*hb*hb*hb*hc*hc*hc*hc",
	"4*(sa*sa)=(2*((b*b)+(c*c))-(a*a))",
	"4*(sb*sb)=(2*((a*a)+(c*c))-(b*b))",
	"4*(sc*sc)=(2*((a*a)+(b*b))-(c*c))",
	"9*(a*a)=4*(-(sa*sa)+2*(sb*sb)+2*(sc*sc))",
	"9*(b*b)=4*(-(sb*sb)+2*(sc*sc)+2*(sa*sa))",
	"9*(c*c)=4*(-(sc*sc)+2*(sa*sa)+2*(sb*sb))",
	"(wha*wha)*((b+c)*(b+c))=-b*c*((a*a)-(b*b)-2*b*c-(c*c))",
	"(whb*whb)*((c+a)*(c+a))=-c*a*((b*b)-(c*c)-2*c*a-(a*a))",
	"(whc*whc)*((a+b)*(a+b))=-a*b*((c*c)-(a*a)-2*a*b-(b*b))",
	"8*(b*b)*(ha*ha)+8*(ha*ha)*((c*c)-2*(sa*sa))=-b*b*b*b+2*(b*b)*((c*c)+4*(sa*sa))-c*c*c*c+8*(sa*sa)*((c*c)-2*(sa*sa))",
	"8*(c*c)*(hb*hb)+8*(hb*hb)*((a*a)-2*(sb*sb))=-c*c*c*c+2*(c*c)*((a*a)+4*(sb*sb))-a*a*a*a+8*(sb*sb)*((a*a)-2*(sb*sb))",
	"8*(a*a)*(hc*hc)+8*(hc*hc)*((b*b)-2*(sc*sc))=-a*a*a*a+2*(a*a)*((b*b)+4*(sc*sc))-b*b*b*b+8*(sc*sc)*((b*b)-2*(sc*sc))",
	"(wha*wha)*((b+c)*(b+c))=-b*c*((b*b)-2*b*c+(c*c)-4*(sa*sa))",
	"(whb*whb)*((c+a)*(c+a))=-c*a*((c*c)-2*c*a+(a*a)-4*(sb*sb))",
	"(whc*whc)*((a+b)*(a+b))=-a*b*((a*a)-2*a*b+(b*b)-4*(sc*sc))",
	"a*b*c=4*A*ru",
/*	"a=ap+aq",
	"b=bp+bq",
	"c=cp+cq",
	"c*c=ap*ap+ha*ha",
	"b*b=aq*aq+ha*ha",
	"a*a=bp*bp+hb*hb",
	"c*c=bq*bq+hb*hb",
	"b*b=cp*cp+hc*hc",
	"a*a=cq*cq+hc*hc",
	"Math.sin(wa)*b=hc",
	"Math.sin(wb)*c=ha",
	"Math.sin(wg)*a=hb",
	"Math.sin(wb)*a=hc",
	"Math.sin(wg)*b=ha",
	"Math.sin(wa)*c=hb",
	"Math.tan(wa)*cp=hc",
	"Math.tan(wb)*ap=ha",
	"Math.tan(wg)*bp=hb",
	"Math.tan(wb)*cq=hc",
	"Math.tan(wg)*aq=ha",
	"Math.tan(wa)*bq=hb",*/
	"wha*(b+c)=2*b*c*Math.cos(wa/2)",
	"whb*(a+c)=2*a*c*Math.cos(wb/2)",
	"whc*(a+b)=2*a*b*Math.cos(wg/2)",
	"4*sa*sa=(b*b+c*c+2*b*c*Math.cos(wa))",
	"4*sb*sb=(a*a+c*c+2*a*c*Math.cos(wb))",
	"4*sc*sc=(a*a+b*b+2*a*b*Math.cos(wg))",
	"u=8*ru*Math.cos(wa/2)*Math.cos(wb/2)*Math.cos(wg/2)",
	"a*a=b*b+c*c-2*b*c*Math.cos(wa)",
	"b*b=a*a+c*c-2*a*c*Math.cos(wb)",
	"c*c=a*a+b*b-2*a*b*Math.cos(wg)",
	"Math.sin(wa)*b=a*Math.sin(wb)",
	"Math.sin(wa)*c=a*Math.sin(wg)",
	"Math.sin(wb)*c=b*Math.sin(wg)",
	"ha=b*Math.sin(wg)",
	"ha=c*Math.sin(wb)",
	"hb=a*Math.sin(wg)",
	"hb=c*Math.sin(wa)",
	"hc=a*Math.sin(wb)",
	"hc=b*Math.sin(wa)",
	"ri=ru*4*Math.sin(wa/2)*Math.sin(wb/2)*Math.sin(wg/2)",
	"A=a*b*Math.sin(wg)/2",
	"A=b*c*Math.sin(wa)/2",
	"A=c*a*Math.sin(wb)/2",
	"A=2*ru*ru*Math.sin(wa)*Math.sin(wb)*Math.sin(wg)",
	"ru*2*Math.sin(wa)=a",
	"ru*2*Math.sin(wb)=b",
	"ru*2*Math.sin(wg)=c"
//	"wha*(b+c)=2*b*c*Math.cos(Math.acos(-((a*a)-(b*b)-(c*c))/(2*b*c))/2)",
//	"whb*(c+a)=2*c*a*Math.cos(Math.acos(-((b*b)-(c*c)-(a*a))/(2*c*a))/2)",
//	"whc*(a+b)=2*a*b*Math.cos(Math.acos(-((c*c)-(a*a)-(b*b))/(2*a*b))/2)"
	)


function auto()
{
	nichtdiesekomb="";
	calc(false);
}

function probe()
{
	var i,t="",yl,yr,s;
	probekorrekt="";
	for(i=0;i<Gleichungen.length;i++)
	{
		s=Gleichungen[i].split("=");
		yl=eval(s[0]);yr=eval(s[1]);
		if(Math.abs(yl-yr)/((yl+yr)/2)>1e-8)t+="  "+Gleichungen[i]+":\n    "+yl+" = "+yr+"\n";
		else probekorrekt+="  "+Gleichungen[i]+":\n    "+yl+" = "+yr+"\n";
	}
	t=t.replace(/Math\./g,"").replace(/\./g,",");
	if(t!="")t="Es sind Fehler bei der Probe aufgetreten.\n\nLöschen Sie eventuell überflüssige Eingaben \nund/oder überprüfen Sie die Eingaben!\n\n"+t+"\n\n";
	return t;
}
var probekorrekt="";


function prep()
{
	if(!registriert){registriereGleichungen();registriert=true;}
}

function tester()
{
	do{
	var a,b,c,mist=1==0,gon=document.f.chgon.checked;
	do{a=(Math.random()*1000+100)/100;b=(Math.random()*1000+100)/100;c=(Math.random()*1000+100)/100;}while((a+b<=c+.5)||(b+c<=a+.5)||(c+a<=b+.5))
	var u=a+b+c;
	var wa=Math.acos((b*b+c*c-a*a)/(2*b*c)),wb=Math.acos((a*a-b*b+c*c)/(2*a*c)),wg=Math.PI-wa-wb;
	var ha=Math.sin(wb)*c,A=a*ha/2,hb=2*A/b,hc=2*A/c,ru=a/(2*Math.sin(wa)),ri=2*A/u;
	var sa=Math.sqrt(2*((b*b)+(c*c))-(a*a))/2,sb=Math.sqrt(2*((c*c)+(a*a))-(b*b))/2,sc=Math.sqrt(2*((a*a)+(b*b))-(c*c))/2;
	var wha=2*b*c*Math.cos(wa/2)/(b+c),whb=2*c*a*Math.cos(wb/2)/(c+a),whc=2*a*b*Math.cos(wg/2)/(a+b);
	var ap=Math.sqrt(c*c-ha*ha);if(wb>Math.PI/2)ap=-ap;var aq=a-ap;
	var bp=Math.sqrt(a*a-hb*hb);if(wg>Math.PI/2)bp=-bp;var bq=b-bp;
	var cp=Math.sqrt(b*b-hc*hc);if(wa>Math.PI/2)cp=-cp;var cq=c-cp;
	var i=Math.floor(Math.random()*V.length),j,k,l;
	wa*=180/Math.PI;wb*=180/Math.PI;wg*=180/Math.PI;//wa+="°";wb+="°";wg+="°";
	if(gon){wa/=.9;wb/=.9;wg/=.9;}
	do{j=Math.floor(Math.random()*V.length);k=Math.floor(Math.random()*V.length);}while((i==j)||(i==k)||(j==k));
	if((i+j+k==12)&&(i*j*k==60))i=Math.floor(Math.random()*3);
	for(l=0;l<V.length;l++)eval("document.f.g"+V[l]+".value='';if(isNaN("+V[i]+"))mist=true;");
	//alert(V[i]+"  "+V[j]+"  "+V[k]);
	}while(mist)
	rd=1000000000000000;
	eval("document.f.g"+V[i]+".value=R("+V[i]+");");
	eval("document.f.g"+V[j]+".value=R("+V[j]+");");
	eval("document.f.g"+V[k]+".value=R("+V[k]+");");
	if(document.f.gwa.value!="")document.f.gwa.value+=(gon)?"gon":"°";
	if(document.f.gwb.value!="")document.f.gwb.value+=(gon)?"gon":"°";
	if(document.f.gwg.value!="")document.f.gwg.value+=(gon)?"gon":"°";
	calc();
}
