Esempio n. 1
0
static int Main(){
	int return_code=0;
	bool test;
	var rnd=new Random();
	int n=9;
	complex[] zs = new complex[n];
	for(int i=0;i<n;i++)
		zs[i]=new complex(2*rnd.NextDouble()-1,2*rnd.NextDouble()-1);

	Write("testing exp(log(z))=z ...");
	test=true;
	for(int i=0;i<n;i++){
		complex z=zs[i];
		test=test && exp(log(z)).approx(z);
	}
	if(test) Write(" ...passed\n");
	else { Write(" ...FAILED\n"); return_code += 1; }

	Write("testing log(exp(z))=z ...");
	test=true;
	for(int i=0;i<n;i++){
		complex z=zs[i];
		test=test && log(exp(z)).approx(z);
	}
	if(test) Write(" ...passed\n");
	else { Write(" ...FAILED\n"); return_code += 1; }

	Write("testing abs(z)^2=z*conj(z) ...");
	test=true;
	for(int i=0;i<n;i++){
		complex z=zs[i];
		test=test && abs(z).pow(2).approx(z*~z);
	}
	if(test) Write(" ...passed\n");
	else { Write(" ...FAILED\n"); return_code += 1; }

	Write("testing sqrt(a)*sqrt(a)=a ...");
	test=true;
	for(int i=0;i<n;i++){
		complex z=zs[i];
		test=test && z.approx(sqrt(z)*sqrt(z));
	}
	if(test) Write(" ...passed\n");
	else { Write(" ...FAILED\n"); return_code += 1; }

	Write("testing sin(a)^2+cos(a)^2=1 ...");
	test=true;
	for(int i=0;i<n;i++){
		complex z=zs[i];
		test=test &&
			(sin(z).pow(2)+cos(z).pow(2)).approx(1);
	}
	if(test) Write(" ...passed\n");
	else { Write(" ...FAILED\n"); return_code += 1; }

	Write("testing sin(a+b)=sin(a)*cos(b)+cos(a)*sin(b) ...");
	test=true;
	for(int i=0;i<n-1;i++){
		complex a=zs[i],b=zs[i+1];
		test=test &&
			sin(a+b).approx(sin(a)*cos(b)+cos(a)*sin(b));
	}
	if(test) Write(" ...passed\n");
	else { Write(" ...FAILED\n"); return_code += 1; }

	Write("testing (a/b)*b=a ...");
	test=true;
	for(int i=0;i<n-1;i++){
		complex a=zs[i],b=zs[i+1];
		test=test &&
			((a/b)*b).approx(a);
	}
	if(test) Write(" ...passed\n");
	else { Write(" ...FAILED\n"); return_code += 1; }

	Write("testing exp(a+b)=exp(a)*exp(b) ...");
	test=true;
	for(int i=0;i<n-1;i++){
		complex a=zs[i],b=zs[i+1];
		test=test &&
			(exp(a)*exp(b)).approx(exp(a+b));
	}
	if(test) Write(" ...passed\n");
	else { Write(" ...FAILED\n"); return_code += 1; }

	Write("testing cos(a+b)=cos(a)*cos(b)-sin(a)*sin(b) ...");
	test=true;
	for(int i=0;i<n-1;i++){
		complex a=zs[i],b=zs[i+1];
		test=test &&
			cos(a+b).approx(cos(a)*cos(b)-sin(a)*sin(b));
	}
	if(test) Write(" ...passed\n");
	else { Write(" ...FAILED\n"); return_code += 1; }


	Write("testing abs(z)*exp(I*arg(z))=z ...");
	test=true; complex I=complex.I;
	for(int i=0;i<n;i++){
		complex z=zs[i];
		test=test &&
			( abs(z)*exp(I*arg(z)) ).approx(z);
	}
	if(test) Write(" ...passed\n");
	else { Write(" ...FAILED\n"); return_code += 1; }

if(return_code==0)
	Write("all tests passed\n");
else 
	Write("{0} tests FAILED\n",return_code);
return return_code;

}//Main