diff --git a/lm/nifty_lm.py b/lm/nifty_lm.py index cf505bca19eba91bcd8c5c3aa885b6b1a3ac3e4e..bcc2b0341236d1297463969fbf242a07df787c90 100644 --- a/lm/nifty_lm.py +++ b/lm/nifty_lm.py @@ -515,21 +515,16 @@ class lm_space(point_space): x = self.cast(x) y = self.cast(y) - if gc['use_libsharp']: - lmax = self.paradict['lmax'] - mmax = self.paradict['mmax'] - if self.dtype == np.dtype('complex64'): - return self.cast(gl.dotlm_f(x, y, lmax=lmax, mmax=mmax)) - else: - return self.cast(gl.dotlm(x, y, lmax=lmax, mmax=mmax)) - else: - return self._dotlm(x, y) - - def _dotlm(self, x, y): lmax = self.paradict['lmax'] - dot = np.sum(x.real[:lmax + 1] * y.real[:lmax + 1]) - dot += 2 * np.sum(x.real[lmax + 1:] * y.real[lmax + 1:]) - dot += 2 * np.sum(x.imag[lmax + 1:] * y.imag[lmax + 1:]) + + x_low = x[:lmax + 1] + x_high = x[lmax + 1:] + y_low = y[:lmax + 1] + y_high = y[lmax + 1:] + + dot = (x_low.real * y_low.real).sum() + dot += 2 * (x_high.real * y_high.real).sum() + dot += 2 * (x_high.imag * y_high.imag).sum() return dot def calc_transform(self, x, codomain=None, **kwargs):