public Divider(Poly num, Poly den) {
			double tp = den.p[0];
			if (Math.abs(tp) < epsilon)
				throw new RuntimeException("Divide Poly by Zero!");
			if (den.p.length > num.p.length) {
				quo = new Poly();
				rem = den;
			} else {
				double[] quo = new double[num.p.length - den.p.length + 1];
				Poly tmp = num;

				int idx = tmp.p.length - den.p.length;
				do {
					double v = tmp.p[0] / den.p[0];
					quo[quo.length - idx - 1] = v;
					double[] qq = new double[tmp.p.length - 1];
					for (int i = 0; i < qq.length; i++)
						qq[i] = tmp.p[i + 1];
					for (int i = 1; i < den.p.length; i++)
						qq[i - 1] -= v * den.p[i];
					tmp = new Poly(qq);
					idx = tmp.p.length - den.p.length;
				} while (idx >= 0);
				this.quo = new Poly(quo);
				rem = tmp;
			}
		}