I'm looking for a fast (BLAS?) way to multiply every other entry of a 
vector by -1.  Attached are some different ways I've tried, all of which 
seem dreadfully slow.  (I include a pre-planned DCT for timing comparison: 
it should be much faster but is similar in cost)



n=10000
x=2rand(n)-1


@time x.*(-1.).^[0:length(x)-1];

# elapsed time: 0.00030401 seconds (241456 bytes allocated)


using NumericExtensions

y = unsafe_view(x)
@time for k =2:2:length(x)
    y[k] = -y[k]
end

# elapsed time: 0.000876339 seconds (699616 bytes allocated)



##pre-planned DCT for comparison
p=FFTW.plan_r2r(x, FFTW.REDFT00)

@time p(x); 
# elapsed time: 0.000814533 seconds (80928 bytes allocated)

Reply via email to