Skip to content

Instantly share code, notes, and snippets.

@jrus
Last active October 5, 2015 21:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jrus/76cbb5295a16f33abd64 to your computer and use it in GitHub Desktop.
Save jrus/76cbb5295a16f33abd64 to your computer and use it in GitHub Desktop.
% All lengths up to 16, plus an additional 8 random sizes for each power of two larger than that.
coeff_lengths = [
1 2 3 4 5 6 7 8, ...
9 10 11 12 13 14 15 16, ...
17 20 23 25 26 29 30 32, ...
34 37 42 43 49 52 59 64, ...
65 66 67 71 76 89 97 128, ...
129 146 165 171 176 203 233 256, ...
267 276 292 331 378 413 482 512, ...
522 536 709 754 784 909 921 1024, ...
1072 1212 1239 1322 1441 1618 1817 2048, ...
2635 2724 3180 3587 3613 3678 3805 4096, ...
4330 4695 4872 5279 5836 6684 8001 8192, ...
8996 9671 9891 11605 14842 15163 15462 16384, ...
16782 16901 22253 23013 26012 26284 29845 32768, ...
34395 42716 49348 49523 51202 51930 54064 65536, ...
67493 71754 88355 91746 92591 105175 118693 131072, ...
136391 142212 173703 191971 195330 212553 238650 262144, ...
274693 283853 302696 319160 344417 422508 487256 524288, ...
536242 585221 792789 823736 879391 891382 971502 1048576, ...
1154356 1208740 1320692 1355786 1429313 1531966 2003366 2097152, ...
2547794 2624121 2728230 3428732 3534134 3587105 4104074 4194304, ...
4294541 5046120 5310993 6712438 7168361 7808795 8084967 8388608, ...
8800612 9598079 10124236 10759037 11363198 12834330 16125319 16777216];
rand_coeffs = 2 .* rand(16777216, 1) - 1;
ptslen = 4;
rand_pts = 2 .* rand(ptslen, 1) - 1;
tests_per_run = 20;
timings_clenshaw_jrus = zeros(tests_per_run, numel(coeff_lengths));
for li=1:112
len = coeff_lengths(li);
rand_coeffs_l = rand_coeffs(1:len);
inner_loop_size = max(floor(50000/ptslen/len), 1);
for testi=1:tests_per_run
tstart = tic;
for innerrep=1:inner_loop_size
y = clenshaw_jrus(rand_pts, rand_coeffs_l);
end
timings_clenshaw_jrus(testi, li) = toc(tstart) / inner_loop_size;
end
end
colen = coeff_lengths(1:112);
timings_jrus = min(timings_clenshaw_jrus(:,1:112));
plot(log2(colen), log2(ptslen * colen ./ timings_jrus))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment