else {
approximatelyLinearDependent = approximatelyLinearDependent(pca1, pca2);
}
if(!approximatelyLinearDependent) {
return new BitDistance(true);
}
else {
double affineDistance;
if(pca1.getCorrelationDimension() == pca2.getCorrelationDimension()) {
WeightedDistanceFunction df1 = new WeightedDistanceFunction(pca1.similarityMatrix());
WeightedDistanceFunction df2 = new WeightedDistanceFunction(pca2.similarityMatrix());
affineDistance = Math.max(df1.distance(v1, v2).doubleValue(), df2.distance(v1, v2).doubleValue());
}
else {
WeightedDistanceFunction df1 = new WeightedDistanceFunction(pca1.similarityMatrix());
affineDistance = df1.distance(v1, v2).doubleValue();
}
if(affineDistance > tau) {
return new BitDistance(true);
}
return new BitDistance(false);
}
}