Simplify and fix cut gaussian indicator convolution scaling

Tue, 01 Aug 2023 10:25:09 +0300

author
Tuomo Valkonen <tuomov@iki.fi>
date
Tue, 01 Aug 2023 10:25:09 +0300
changeset 31
6105b5cd8d89
parent 26
acf57c458740
child 33
aec67cdd6b14
child 52
f0e8704d3f0e

Simplify and fix cut gaussian indicator convolution scaling

src/kernels/gaussian.rs file | annotate | diff | comparison | revisions
--- a/src/kernels/gaussian.rs	Wed Mar 22 20:37:49 2023 +0200
+++ b/src/kernels/gaussian.rs	Tue Aug 01 10:25:09 2023 +0300
@@ -188,12 +188,11 @@
         let a = cut.r.value();
         let b = ind.r.value();
         let σ = gaussian.variance.value().sqrt();
-        let π = F::PI;
         let t = F::SQRT_2 * σ;
-        let c = σ * (8.0/π).sqrt();
+        let c = 0.5; // 1/(σ√(2π) * σ√(π/2) = 1/2
         
         // This is just a product of one-dimensional versions
-        let unscaled = y.product_map(|x| {
+        y.product_map(|x| {
             let c1 = -(a.min(b + x)); //(-a).max(-x-b);
             let c2 = a.min(b - x);
             if c1 >= c2 {
@@ -204,9 +203,7 @@
                 debug_assert!(e2 >= e1);
                 c * (e2 - e1)
             }
-        });
-        
-        unscaled / gaussian.scale()
+        })
     }
 }
 

mercurial