Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test FFT with ModularExtended<double> failing on i386 #293

Closed
d-torrance opened this issue Dec 14, 2021 · 4 comments · Fixed by linbox-team/givaro#197
Closed

Test FFT with ModularExtended<double> failing on i386 #293

d-torrance opened this issue Dec 14, 2021 · 4 comments · Fixed by linbox-team/givaro#197

Comments

@d-torrance
Copy link
Contributor

After applying the patch from #292, I still get the following failure in an i386 Debian experimental chroot:

$  tests/test-fft -
Writing report data to cout (intermingled with brief report)

# To rerun this test: test-fft-new -s 1639518228
# seed = 1639518228
Testing polynomial fft transforms...  0%  

... [snip] ...

  ********************************************************************************
  Test FFT with ModularExtended<double>, p=242239433635841 (50 bits, 2^11 divides p-1)
  ** with n=2^1
                  DIF<NoSimd<double>> ........................................ success
         DIF_reversed<NoSimd<double>> ........................................ success
                  DIT<NoSimd<double>> ........................................ success
         DIT_reversed<NoSimd<double>> ........................................ success
           FFT_direct<NoSimd<double>> ........................................ success
          FFT_inverse<NoSimd<double>> ........................................ success
  ** with n=2^2
                  DIF<NoSimd<double>> ........................................ failure
         DIF_reversed<NoSimd<double>> ........................................ failure
                  DIT<NoSimd<double>> ........................................ failure
         DIT_reversed<NoSimd<double>> ........................................ failure
           FFT_direct<NoSimd<double>> ........................................ failure
          FFT_inverse<NoSimd<double>> ........................................ failure
  ** with n=2^3
                  DIF<NoSimd<double>> ........................................ failure
         DIF_reversed<NoSimd<double>> ........................................ failure
                  DIT<NoSimd<double>> ........................................ failure
         DIT_reversed<NoSimd<double>> ........................................ failure
           FFT_direct<NoSimd<double>> ........................................ failure
          FFT_inverse<NoSimd<double>> ........................................ failure
  ** with n=2^4
                  DIF<NoSimd<double>> ........................................ failure
         DIF_reversed<NoSimd<double>> ........................................ failure
                  DIT<NoSimd<double>> ........................................ failure
         DIT_reversed<NoSimd<double>> ........................................ failure
           FFT_direct<NoSimd<double>> ........................................ failure
          FFT_inverse<NoSimd<double>> ........................................ failure
  ** with n=2^5
                  DIF<NoSimd<double>> ........................................ failure
         DIF_reversed<NoSimd<double>> ........................................ failure
                  DIT<NoSimd<double>> ........................................ failure
         DIT_reversed<NoSimd<double>> ........................................ failure
           FFT_direct<NoSimd<double>> ........................................ failure
          FFT_inverse<NoSimd<double>> ........................................ failure
  ** with n=2^6
                  DIF<NoSimd<double>> ........................................ failure
         DIF_reversed<NoSimd<double>> ........................................ failure
                  DIT<NoSimd<double>> ........................................ failure
         DIT_reversed<NoSimd<double>> ........................................ failure
           FFT_direct<NoSimd<double>> ........................................ failure
          FFT_inverse<NoSimd<double>> ........................................ failure
  ** with n=2^7
                  DIF<NoSimd<double>> ........................................ failure
         DIF_reversed<NoSimd<double>> ........................................ failure
                  DIT<NoSimd<double>> ........................................ failure
         DIT_reversed<NoSimd<double>> ........................................ failure
           FFT_direct<NoSimd<double>> ........................................ failure
          FFT_inverse<NoSimd<double>> ........................................ failure
  ** with n=2^8
                  DIF<NoSimd<double>> ........................................ failure
         DIF_reversed<NoSimd<double>> ........................................ failure
                  DIT<NoSimd<double>> ........................................ failure
         DIT_reversed<NoSimd<double>> ........................................ failure
           FFT_direct<NoSimd<double>> ........................................ failure
          FFT_inverse<NoSimd<double>> ........................................ failure
  ** with n=2^9
                  DIF<NoSimd<double>> ........................................ failure
         DIF_reversed<NoSimd<double>> ........................................ failure
                  DIT<NoSimd<double>> ........................................ failure
         DIT_reversed<NoSimd<double>> ........................................ failure
           FFT_direct<NoSimd<double>> ........................................ failure
          FFT_inverse<NoSimd<double>> ........................................ failure
  ** with n=2^10
                  DIF<NoSimd<double>> ........................................ failure
         DIF_reversed<NoSimd<double>> ........................................ failure
                  DIT<NoSimd<double>> ........................................ failure
         DIT_reversed<NoSimd<double>> ........................................ failure
           FFT_direct<NoSimd<double>> ........................................ failure
          FFT_inverse<NoSimd<double>> ........................................ failure
  ** with n=2^11
                  DIF<NoSimd<double>> ........................................ failure
         DIF_reversed<NoSimd<double>> ........................................ failure
                  DIT<NoSimd<double>> ........................................ failure
         DIT_reversed<NoSimd<double>> ........................................ failure
           FFT_direct<NoSimd<double>> ........................................ failure
          FFT_inverse<NoSimd<double>> ........................................ failure
  
@cyrilbouvier
Copy link
Member

I was able to reproduce the issue, I will investigate

@cyrilbouvier
Copy link
Member

The bug comes from the usage of dom_power (implemented in Givaro) in fft_utils.h where one of its argument is casted from size_t to long. I will open a PR on Givaro to try to fix the issue.

@ClementPernet
Copy link
Member

Let me just reopen this issue (automatically closed upon merging linbox-team/givaro#197) so @d-torrance can confirm that the problem is fixed on his side.

@d-torrance
Copy link
Contributor Author

Works for me now, thanks! Closing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants