<!--
	function find_lesser_in_arr(needle,haystack){
		for(var i=haystack.length-1;i>=0;i--){
			if(needle>=haystack[i])return haystack[i];
		}return haystack[0];
	}

	function round4(num){
		var num_digs = 3;
		if(num>=100000000)return 'Inf';
		else if(num<=-100000000)return '-Inf';
		else if(Math.abs(num)>=100)num_digs -= 2;
		else if(Math.abs(num)>=10)num_digs -= 1;
		return Math.round(num*Math.pow(10,num_digs))/Math.pow(10,num_digs);
	}

	function trapezoid_reverse(inp_func,a,p,max_p,max_stat,add_prec){
		var max_p = (max_p == null) ? 0.5 : max_p;
		var max_stat = (max_stat == null) ? 300 : max_stat;
		var add_prec = (add_prec == null) ? 1 : add_prec;
		if(p==max_p)return 'Inf';

		var trap_sum = 0, gap_width = p / (add_prec * 1250.0);
		var i = a, last_func = inp_func(a);
		while(trap_sum < 2500 * add_prec && i < max_stat){
			i += gap_width;
			trap_sum += last_func;
			last_func = inp_func(i);
			trap_sum += last_func;
		}
		return i;
	}

	function trapezoid_rule(inp_func,a,b){
		if(a==b)return 0;

		var trap_sum = 0;
		for(var i=1;i<1000;i++)
			trap_sum += inp_func(a + i*(b-a)*0.001);
		return 0.0005*Math.abs(b-a)*(inp_func(a)+inp_func(b)+2*trap_sum);
	}
//-->
