> why +0.8? shouldn't it always be lower? i.e., np.abs(stc_normal.data) <= stc.data should hold

The idea for the test came because I thought it should always be lower... but it's not.

The reason I think it's not is partly the inverse calculation, i.e. stc.data gets calculated using an inverse of `Ck`, whereas in stc_normal.data there is no inverse, just division by a scalar. So my guess is it's an instability in the inversion, but I'm not too sure, does that sound plausible?

When I tried to calculate stc.data with pinv without regularization, the result was even worse and 0.8 had to be increased for the test to pass.

Of course, if the inverse calculation was all there was to it, then taking the normal component from the spatial filter `W` (like the code removed in the first commit here) instead of the gain matrix `G` should be enough to guarantee that the normal solution would always be lower than the free orientation solution... but that's not the case, the max. difference is then smaller than 0.4, instead of 0.8, but there still is a difference. Another thing I see that could introduce this difference would be summing squares and taking square roots in the noise norm - there is, again, division by the noise norm and so small numerical differences for small values could cause large differences in the resulting solutions.

Does this makes sense? Or do you think it's more likely this suggests a bug somewhere?