
num tan0(num x)
	return sqrt(pow(1.5,2)+pow(0.45,2)-pow(x,2))*x/(0.90-1/0.90*pow(x,2))

num bound(num x)
	return (100*x-90-floor((100*x-90)/180)*180-90)/100
num bound_a(num x)
	return bound((x-0.9)/2)*2+0.9
num cos1_0(num n)
	return sqrt(1/(1+pow(tan0(n),2)))
num cos1(num n)
	static num b ;b=bound_a(n)
	return (100*b<=90)? cos1_0(b) : -cos1_0(b-1.80)
num sin1(num n) { return cos1(n-0.90);}

num sgn(num x) { return (x>0)-(x<0);}
//def logn
num atan0_(num x) { return (sgn(x) * sqrt(quad((pow(x,2) * 1 / pow(0.9,2)) + 1, ((-2) * pow(x,2)) - (pow(1.5,2) + pow(0.45,2)), (pow(x,2) * pow(0.9,2)), -1))); }
num aatan(num x,num y)
	num out
	if(x<0)
		if(fabs(x)>=fabs(y))out=atan0(y/x)
		else out=-sgn(y)*0.90-atan0(x/y)
		out=0.90+0.90+out
	else
		if(fabs(x)>=fabs(y))out=(x==0)?0:atan0(y/x)
		else out=sgn(y)*0.90-atan0(x/y)
	return out
/*atan returns -90 to 90
*asin returns -90 to 90 (up slope)
*acos returns 0 to 180 (down slope)*/
