From 347ffbc3662d135e6b1580e20ca61bdce9f96c7e Mon Sep 17 00:00:00 2001
From: Florian Ingels <florian.ingels@inria.fr>
Date: Fri, 3 Jun 2022 16:15:48 +0200
Subject: [PATCH] Minor fix

---
 src/geomtree/affine_transform.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/geomtree/affine_transform.py b/src/geomtree/affine_transform.py
index f03a80b..2a2b197 100644
--- a/src/geomtree/affine_transform.py
+++ b/src/geomtree/affine_transform.py
@@ -208,7 +208,7 @@ def random_transform(translation=True,scale=True,rotation=True):
 
 #-----------------------------------------------------#
 
-def hellinger_distance(tf1,tf2): ### tester VS monte-carlo ?
+def hellinger_distance(tf1,tf2,epsilon=1e-6): ### tester VS monte-carlo ?
     """
     See https://en.wikipedia.org/wiki/Hellinger_distance
     :param tf1: AffineTransform
@@ -220,7 +220,11 @@ def hellinger_distance(tf1,tf2): ### tester VS monte-carlo ?
     sig1 = tf1.get_covariance_matrix()
     sig2 = tf2.get_covariance_matrix()
     sigm = (sig1+sig2)/2
-    return np.sqrt(1 - (det(sig1)*det(sig2))**(1/4) / det(sigm)**(1/2)*np.exp((-1/8) * np.transpose(t1 - t2) @ inv(sigm) @ (t1 - t2)))
+
+    val = 1 - (det(sig1)*det(sig2))**(1/4) / det(sigm)**(1/2)*np.exp((-1/8) * np.transpose(t1 - t2) @ inv(sigm) @ (t1 - t2))
+    if np.abs(val)<epsilon:
+        val=0
+    return np.sqrt(val)
 
 #-----------------------------------------------------#
 
-- 
GitLab