|
| 1 | +#include "config.hpp" |
1 | 2 | #include "equations.hpp"
|
| 3 | +#include "units.hpp" |
2 | 4 |
|
3 | 5 | namespace fractal {
|
4 | 6 | std::array<iteration_count, 8> compute_iterations(
|
5 |
| - const std::array<std::complex<complex_underlying>, 8>& z_0, |
6 |
| - const std::array<std::complex<complex_underlying>, 8>& constant, |
7 |
| - iteration_count max_iters |
| 7 | + const avx512_complex& z_0, const avx512_complex& constant, iteration_count max_iters |
8 | 8 | )
|
9 | 9 | {
|
10 | 10 | static const auto SQUARED_DIVERGENCE =
|
11 | 11 | MANDELBROT_DIVERGENCE_NORM * MANDELBROT_DIVERGENCE_NORM;
|
12 | 12 |
|
13 |
| - alignas(64) std::array<double, 8> reals = {z_0[0].real(), z_0[1].real(), |
14 |
| - z_0[2].real(), z_0[3].real(), |
15 |
| - z_0[4].real(), z_0[5].real(), |
16 |
| - z_0[6].real(), z_0[7].real()}; |
17 |
| - alignas(64) std::array<double, 8> imags = {z_0[0].imag(), z_0[1].imag(), |
18 |
| - z_0[2].imag(), z_0[3].imag(), |
19 |
| - z_0[4].imag(), z_0[5].imag(), |
20 |
| - z_0[6].imag(), z_0[7].imag()}; |
21 |
| - alignas(64) std::array<double, 8> const_reals = { |
22 |
| - constant[0].real(), constant[1].real(), constant[2].real(), constant[3].real(), |
23 |
| - constant[4].real(), constant[5].real(), constant[6].real(), constant[7].real() |
24 |
| - }; |
25 |
| - alignas(64) std::array<double, 8> const_imags = { |
26 |
| - constant[0].imag(), constant[1].imag(), constant[2].imag(), constant[3].imag(), |
27 |
| - constant[4].imag(), constant[5].imag(), constant[6].imag(), constant[7].imag() |
28 |
| - }; |
| 13 | + alignas(64) std::array<double, 8> reals = z_0.real; |
| 14 | + alignas(64) std::array<double, 8> imags = z_0.imaginary; |
| 15 | + alignas(64) std::array<double, 8> const_reals = constant.real; |
| 16 | + alignas(64) std::array<double, 8> const_imags = constant.imaginary; |
29 | 17 |
|
30 | 18 | std::array<iteration_count, 8> solved_its = {0};
|
31 | 19 |
|
|
0 commit comments