| 102 | } |
| 103 | |
| 104 | NOINLINE static void calc_first_quadrant(size_t n, double * restrict res) |
| 105 | { |
| 106 | double * restrict p = res+n; |
| 107 | calc_first_octant(n<<1, p); |
| 108 | size_t ndone=(n+2)>>2; |
| 109 | size_t i=0, idx1=0, idx2=2*ndone-2; |
| 110 | for (; i+1<ndone; i+=2, idx1+=2, idx2-=2) |
| 111 | { |
| 112 | res[idx1] = p[2*i]; |
| 113 | res[idx1+1] = p[2*i+1]; |
| 114 | res[idx2] = p[2*i+3]; |
| 115 | res[idx2+1] = p[2*i+2]; |
| 116 | } |
| 117 | if (i!=ndone) |
| 118 | { |
| 119 | res[idx1 ] = p[2*i]; |
| 120 | res[idx1+1] = p[2*i+1]; |
| 121 | } |
| 122 | } |
| 123 | |
| 124 | NOINLINE static void calc_first_half(size_t n, double * restrict res) |
| 125 | { |
no test coverage detected