Problem 0021 : Parallelism

2つの線分が与えられて、平行かどうか調べる問題。
外積とって同一直線上にあるかどうか調べるだけ。なんだけど何故か落ちる。細かい修正を加えて5回位投げたけどやっぱり落ちる。同一直線上かどうかの判定を外したら通る。何なのこれ。

import java.util.*;

class Main {
	
	public static void main(String args[]){
		Scanner in = new Scanner(System.in);
		int rept = in.nextInt();
		while(rept-- > 0){
			double x1 = in.nextDouble(), y1 = in.nextDouble(),
					x2 = in.nextDouble(), y2 = in.nextDouble(),
					x3 = in.nextDouble(), y3 = in.nextDouble(),
					x4 = in.nextDouble(), y4 = in.nextDouble();
			double p1 = x2 - x1, p2 = y2 - y1, q1 = x4 - x3, q2 = y4 - y3,
			r1 = x3 - x1, r2 = y3 - y1, s1 = x4 - x1, s2 = y4 - y1;
//			if(Math.abs(p1*q2 - p2*q1)<1e-9 && Math.abs(p1*r2 - p2*r1)>1e-9 && Math.abs(p1*s2 - p2*s1)>1e-9 
//					&& p1*p1 + p2*p2>1e-9 && q1*q1 + q2*q2 > 1e-9)
			if(Math.abs(p1*q2 - p2*q1)<1e-9)
				System.out.println("YES");
			else
				System.out.println("NO");
		}
	}

}