// JavaScript Document

	function nearestE3(r1_significand)
	{
		// trap values which may cause infinite loop
		
		if(r1_significand <= 0)
			return 0;
		if( !isFinite(r1_significand) ) 
			return r1_significand;
			
		E3 = new Array(100,220,470,1000,2200);

		multiply_factor = 0;

		while(r1_significand <= 100.0)
		{
			r1_significand = r1_significand*10.0
			multiply_factor--
		}

		while(r1_significand > 1000.0)
		{
			r1_significand = r1_significand/10.0
			multiply_factor++
		}

		i = 0;
		while(r1_significand > E3[i])
		{
			i++;
		}

		if( (r1_significand - E3[i-1]) <= (E3[i] - r1_significand) )
		{
			return ( E3[i-1]*Math.pow(10,multiply_factor) );
		}

		else
		{
			return ( E3[i]*Math.pow(10,multiply_factor) );
		}
	}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	function nearestE6(r1_significand)
	{
		// trap values which may cause infinite loop
		
		if(r1_significand <= 0)
			return 0;
		if( !isFinite(r1_significand) ) 
			return r1_significand;
			
		E6 = new Array(100,150,220,330,470,680,1000,1500);

		multiply_factor = 0;

		while(r1_significand <= 100.0)
		{
			r1_significand = r1_significand*10.0
			multiply_factor--
		}

		while(r1_significand > 1000.0)
		{
			r1_significand = r1_significand/10.0
			multiply_factor++
		}

		i = 0;
		while(r1_significand > E6[i])
		{
			i++;
		}

		if( (r1_significand - E6[i-1]) <= (E6[i] - r1_significand) )
		{
			return ( E6[i-1]*Math.pow(10,multiply_factor) );
		}

		else
		{
			return ( E6[i]*Math.pow(10,multiply_factor) );
		}
	}

//////////////////////////////////////////////////////////////////////////////////////////
	function nearestE12(r1_significand)
	{
		// trap values which may cause infinite loop
		
		if(r1_significand <= 0)
			return 0;
		if( !isFinite(r1_significand) ) 
			return r1_significand;

		E12  = new Array(100,120,150,180,220,270,330,390,470,560,680,820,1000,1200);


		multiply_factor = 0;

		while(r1_significand <= 100.0)
		{
			r1_significand = r1_significand*10.0
			multiply_factor--
		}

		while(r1_significand > 1000.0)
		{
			r1_significand = r1_significand/10.0
			multiply_factor++
		}

		i = 0;
		while(r1_significand > E12[i])
		{
			i++;
		}

		if( (r1_significand - E12[i-1]) <= (E12[i] - r1_significand) )
		{
			return ( E12[i-1]*Math.pow(10,multiply_factor) );
		}

		else
		{
			return ( E12[i]*Math.pow(10,multiply_factor) );
		}
	}

	//////////////////////////////////////////////////////////////////////////////////////////
	function nearestE24(r1_significand)
	{
		E24  = new Array(100,110,120,130,150,160,180,200,220,240,270,300,330,360,390,430,470,510,560,620,680,750,820,910,1000, 1100);

		// trap values which may cause infinite loop
		
		if(r1_significand <= 0)
			return 0;
		if( !isFinite(r1_significand) ) 
			return r1_significand;


		multiply_factor = 0;

		while(r1_significand <= 100.0)
		{
			r1_significand = r1_significand*10.0
			multiply_factor--
		}

		while(r1_significand > 1000.0)
		{
			r1_significand = r1_significand/10.0
			multiply_factor++
		}

		i = 0;
		while(r1_significand > E24[i])
		{
			i++;
		}

		if( (r1_significand - E24[i-1]) <= (E24[i] - r1_significand) )
		{
			return ( E24[i-1]*Math.pow(10,multiply_factor) );
		}

		else
		{
			return ( E24[i]*Math.pow(10,multiply_factor) );
		}
	}

	//////////////////////////////////////////////////////////////////////////////////////////
	function nearestE48(r1_significand)
	{
		// trap values which may cause infinite loop
		
		if(r1_significand <= 0)
			return 0;
		if( !isFinite(r1_significand) ) 
			return r1_significand;

		E48  = new Array(100,105,110,115,121,127,133,140,147,154,162,169,
							178,187,196,205,215,226,237,249,261,274,287,301,
							316,332,348,365,383,402,422,442,464,487,511,536,
							562,590,619,649,681,715,750,787,825,866,909,953,1000, 1050);


		multiply_factor = 0;

		while(r1_significand <= 100.0)
		{
			r1_significand = r1_significand*10.0
			multiply_factor--
		}

		while(r1_significand > 1000.0)
		{
			r1_significand = r1_significand/10.0
			multiply_factor++
		}

		i = 0;
		while(r1_significand > E48[i])
		{
			i++;
		}

		if( (r1_significand - E48[i-1]) <= (E48[i] - r1_significand) )
		{
			return ( E48[i-1]*Math.pow(10,multiply_factor) );
		}

		else
		{
			return ( E48[i]*Math.pow(10,multiply_factor) );
		}
	}

	//////////////////////////////////////////////////////////////////////////////////////////
	function nearestE96(r1_significand)
	{

		// trap values which may cause infinite loop
		
		if(r1_significand <= 0)
			return 0;
		if( !isFinite(r1_significand) ) 
			return r1_significand;
			
		E96  = new Array(100,102,105,107,110,113,115,118,121,124,127,130,133,137,140,143,147,150,154,158,162,165,169,174,
								178,182,187,191,196,200,205,210,215,221,226,232,237,243,249,255,261,267,274,280,287,294,301,309,
								316,324,332,340,348,357,365,374,383,392,402,412,422,432,442,453,464,475,487,499,511,523,536,549,
								562,576,590,604,619,634,649,665,681,698,715,732,750,768,787,806,825,845,866,887,909,931,953,976,1000, 1020);


		multiply_factor = 0;

		while(r1_significand <= 100.0)
		{
			r1_significand = r1_significand*10.0
			multiply_factor--
		}

		while(r1_significand > 1000.0)
		{
			r1_significand = r1_significand/10.0
			multiply_factor++
		}

		i = 0;
		while(r1_significand > E96[i])
		{
			i++;
		}

		if( (r1_significand - E96[i-1]) <= (E96[i] - r1_significand) )
		{
			return ( E96[i-1]*Math.pow(10,multiply_factor) );
		}

		else
		{
			return ( E96[i]*Math.pow(10,multiply_factor) );
		}
	}
	///////////////////////////////////////////////////////////////////////////////////////////////////

	function nearestE192(r1_significand)
	{

		// trap values which may cause infinite loop
		
		if(r1_significand <= 0)
			return 0;
		if( !isFinite(r1_significand) ) 
			return r1_significand;
		multiply_factor =0;

		while (r1_significand >=1000)
		{
			r1_significand = r1_significand/10.0;
			multiply_factor++;
		}

		while (r1_significand < 100)
		{
			r1_significand = r1_significand*10.0;
			multiply_factor--;
		}
		
		n = ( 192.0*Math.log(r1_significand)/Math.log(10) );
		preferred_value_up   = Math.pow( 10, (Math.ceil(n)/192) );
		preferred_value_down = Math.pow( 10, (Math.floor(n)/192) );

		preferred_value = 0;
		preferred_value_up   = Math.round(preferred_value_up);
		preferred_value_down = Math.round(preferred_value_down);

		if( (r1_significand - preferred_value_down) < (preferred_value_up - r1_significand) )
		{
			return (preferred_value_down*Math.pow(10,multiply_factor));
		}
		else
		{
			return (preferred_value_up*Math.pow(10,multiply_factor));
		}
	}