in fuzz-testing/src/main/scala/org/apache/comet/fuzz/QueryRunner.scala [135:149]
private def same(l: Any, r: Any): Boolean = {
(l, r) match {
case (a: Float, b: Float) if a.isInfinity => b.isInfinity
case (a: Float, b: Float) if a.isNaN => b.isNaN
case (a: Float, b: Float) => (a - b).abs <= 0.000001f
case (a: Double, b: Double) if a.isInfinity => b.isInfinity
case (a: Double, b: Double) if a.isNaN => b.isNaN
case (a: Double, b: Double) => (a - b).abs <= 0.000001
case (a: Array[_], b: Array[_]) =>
a.length == b.length && a.zip(b).forall(x => same(x._1, x._2))
case (a: WrappedArray[_], b: WrappedArray[_]) =>
a.length == b.length && a.zip(b).forall(x => same(x._1, x._2))
case (a, b) => a == b
}
}