function convertbase(x,b1,b2) {
	d="0123456789ABCDEFX";
	x=x.replace(/ /,"");
	x=x.toUpperCase();
	y=0;
//	return b1+b2;
	for(i=x.length, s=1; i>=1; i--,s*=b1) {
		c = x.charAt(i-1);
		for(j=0; j<b1+1; j++) {
			if( j==b1 ) {
				y = "bad input number";
				return y;
			}
			if( c == d.charAt(j) )
				break;
		}
		y+=j*s;
	}
	x=y;
 	if( x==0 ) return "0";
 	y="";
 	for(s=1; s<=x; s*=b2);
 	if( x!=s ) s/=b2;
 	for(p=s; p>=1; p/=b2) {
 		i = Math.floor(x/p);
 		y+= d.charAt(i);
 		x-= i*p;
 	}
	return y;
}

function gcd(a,b) {
	if(a>b) {
		tmp=a;
		a=b;
		b=tmp;
	}
	y=0;
	for(k=1; k<a; k++)
		y+=Math.floor(k*b/a);
	y<<=1;	
	y+=a+b-a*b;
	return Math.round(y);
}

function digits_after_period(x) {
	for(i=0; i<20; i++) {
		if( x-Math.floor(x)<0.0001 )
			break;
		x*=10;
	}
	return i;
}

