Problem:
Problem E: The Number of the Real Roots of a Cubic Equation

Description

3次方程式： が与えられるので，その正の実数根の個数，負の実数根の個数をそれぞれ調べて欲しい．

根の個数は，重根も含めて数えるものとする．

Input

入力は複数のテストケースからなり，1行目にはその個数が記される．

2行目以降はa b c dの形式で3次方程式の係数が記される．aは0ではなく，またそれぞれの数は-100から100までの整数値である．

Output

与えられた3次方程式に対し，正の実数根の個数，負の実数根の個数をスペースで区切って出力せよ．

Sample Input

2
1 3 3 1
-10 0 0 0

Output for Sample Input

0 3
0 0

Solution in Ruby (judge verdict: Wrong Answer)

def func(x,a,b,c,d)
	a * x * x * x + b * x * x + c * x + d
end
n = gets.to_i
n.times{
	
	a,b,c,d = gets.split.map(&:to_f)
	l=-2e9
	r=2e9
	128.times{
		m=(l+r)/2
		v=func(m,a,b,c,d)
		if (v > 0)^(a<0)
			r = m
		else
			l = m
		end
	}
	ans1 = 0
	ans2 = 0
	x=r
	if x > 1e-5
		ans1 += 1
	end

	if x < -1e-5
		ans2 += 1
	end
	
	o = a
	p = a * x + b
	q = p * x + c

	if p*p-4*o*q > -1e-9
		xx = (-p + Math.sqrt(p*p-4*o*q+1e-9)) / (2*o)
		xxx = (-p - Math.sqrt(p*p-4*o*q+1e-9)) / (2*o)
		

		x = xx
		if x > 1e-5

			ans1 += 1
		end

		if x < -1e-5
			ans2 += 1
		end

		x = xxx
		if x > 1e-5
			ans1 += 1
		end

		if x < -1e-5
			ans2 += 1
		end
	end

	printf("%d %d\n",ans1,ans2)
	
}