Skip to content

Commit aefa0f2

Browse files
committed
Fix issue with raising integer to negative power
1 parent b789ac9 commit aefa0f2

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

s2fft/utils/signal_generator.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,9 +187,12 @@ def generate_flmn(
187187
# conjugate symmetry relationship
188188
# flmn[N - 1 - n, el, L - 1 - m] =
189189
# (-1)**(m + n) * flmn[N - 1 + n, el, L - 1 + m].conj
190-
flmn[N - 1 - n, el_indices, L - 1 - m_indices] = (-1) ** (m_indices + n) * (
191-
flmn[N - 1 + n, el_indices, L - 1 + m_indices].conj()
192-
)
190+
# As (m_indices + n) can be negative use floating point value (-1.0) as
191+
# base of exponentation operation to avoid Numpy
192+
# 'ValueError: Integers to negative integer powers are not allowed' error
193+
flmn[N - 1 - n, el_indices, L - 1 - m_indices] = (-1.0) ** (
194+
m_indices + n
195+
) * flmn[N - 1 + n, el_indices, L - 1 + m_indices].conj()
193196
else:
194197
# Complex signal so generate independent complex coefficients for negative m
195198
flmn[N - 1 + n, el_indices, L - 1 - m_indices] = complex_normal(

tests/test_signal_generator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ def check_flmn_conjugate_symmetry(flmn, L, N, L_lower):
101101

102102

103103
@pytest.mark.parametrize("L", L_values_to_test)
104-
@pytest.mark.parametrize("N", [1, 2])
104+
@pytest.mark.parametrize("N", [1, 2, 3])
105105
@pytest.mark.parametrize("L_lower", L_lower_to_test)
106106
@pytest.mark.parametrize("reality", reality_values_to_test)
107107
@pytest.mark.filterwarnings("ignore::RuntimeWarning")

0 commit comments

Comments
 (0)