Print this page




 151                 g##N = -g##N;                                           \
 152         }                                                               \
 153         if (n##N & 1) {                                                     \
 154                 *s = g##N;                                              \
 155                 *c = -f##N;                                             \
 156         } else {                                                        \
 157                 *s = f##N;                                              \
 158                 *c = g##N;                                              \
 159         }                                                               \
 160         s += strides;                                                   \
 161         c += stridec
 162 
 163 void
 164 __vsincosf(int n, float *restrict x, int stridex,
 165     float *restrict s, int strides, float *restrict c, int stridec)
 166 {
 167         double          y0, y1, y2, y3;
 168         double          z0, z1, z2, z3;
 169         float           f0, f1, f2, f3, t;
 170         float           g0, g1, g2, g3;
 171         int             n0, n1, n2, n3, hx, ix, medium;
 172 
 173         s -= strides;
 174         c -= stridec;
 175 
 176         for (;;) {
 177 begin:
 178                 s += strides;
 179                 c += stridec;
 180 
 181                 if (--n < 0)
 182                         break;
 183 
 184                 medium = 0;
 185                 PREPROCESS(0, 0, 0, begin);
 186 
 187                 if (--n < 0)
 188                         goto process1;
 189 
 190                 PREPROCESS(1, strides, stridec, process1);
 191 




 151                 g##N = -g##N;                                           \
 152         }                                                               \
 153         if (n##N & 1) {                                                     \
 154                 *s = g##N;                                              \
 155                 *c = -f##N;                                             \
 156         } else {                                                        \
 157                 *s = f##N;                                              \
 158                 *c = g##N;                                              \
 159         }                                                               \
 160         s += strides;                                                   \
 161         c += stridec
 162 
 163 void
 164 __vsincosf(int n, float *restrict x, int stridex,
 165     float *restrict s, int strides, float *restrict c, int stridec)
 166 {
 167         double          y0, y1, y2, y3;
 168         double          z0, z1, z2, z3;
 169         float           f0, f1, f2, f3, t;
 170         float           g0, g1, g2, g3;
 171         int             n0 = 0, n1 = 0, n2 = 0, n3, hx, ix, medium;
 172 
 173         s -= strides;
 174         c -= stridec;
 175 
 176         for (;;) {
 177 begin:
 178                 s += strides;
 179                 c += stridec;
 180 
 181                 if (--n < 0)
 182                         break;
 183 
 184                 medium = 0;
 185                 PREPROCESS(0, 0, 0, begin);
 186 
 187                 if (--n < 0)
 188                         goto process1;
 189 
 190                 PREPROCESS(1, strides, stridec, process1);
 191