blob: 6c8a96b4cbebc7a1dbd06c24124ba39a2b8611d6 [file] [log] [blame]
#ifndef TH_GENERIC_FILE
#define TH_GENERIC_FILE "generic/THVector.c"
#else
static TH_INLINE void THVector_(fill)(real *x, const real c, const long n) {
long i = 0;
for(; i < n-4; i += 4)
{
x[i] = c;
x[i+1] = c;
x[i+2] = c;
x[i+3] = c;
}
for(; i < n; i++)
x[i] = c;
}
static TH_INLINE void THVector_(add)(real *y, const real *x, const real c, const long n)
{
long i = 0;
for(;i < n-4; i += 4)
{
y[i] += c * x[i];
y[i+1] += c * x[i+1];
y[i+2] += c * x[i+2];
y[i+3] += c * x[i+3];
}
for(; i < n; i++)
y[i] += c * x[i];
}
static TH_INLINE void THVector_(diff)(real *z, const real *x, const real *y, const long n)
{
long i = 0;
for(; i < n-4; i += 4)
{
z[i] = x[i] - y[i];
z[i+1] = x[i+1] - y[i+1];
z[i+2] = x[i+2] - y[i+2];
z[i+3] = x[i+3] - y[i+3];
}
for(; i < n; i++)
z[i] = x[i] - y[i];
}
static TH_INLINE void THVector_(scale)(real *y, const real c, const long n)
{
long i = 0;
for(; i < n-4; i +=4)
{
y[i] *= c;
y[i+1] *= c;
y[i+2] *= c;
y[i+3] *= c;
}
for(; i < n; i++)
y[i] *= c;
}
static TH_INLINE void THVector_(mul)(real *y, const real *x, const long n)
{
long i = 0;
for(; i < n-4; i += 4)
{
y[i] *= x[i];
y[i+1] *= x[i+1];
y[i+2] *= x[i+2];
y[i+3] *= x[i+3];
}
for(; i < n; i++)
y[i] *= x[i];
}
#endif