Cody

# Problem 42794. Fast 1-D Convolution (same shape)

Solution 865907

Submitted on 5 Apr 2016 by Jan Orwat
• Size: 8
• This is the leading solution.
This solution is locked. To view this solution, you need to provide a solution of the same size or smaller.

### Test Suite

Test Status Code Input and Output
1   Pass
%{ ╔═════════════════════════════════════════════════════════════╗ ║ Please note that problems in this series are designed for ║ ║ optimizing the code performance, rather than the usual Cody ║ ║ "size". We are achieving this goal by courtesy of LY Cao's ║ ║ new scoring function, which automatically grants a better ║ ║ score to a faster solution. Kindly note that simply using ║ ║ the conv function may result in a poor score or even failure║ ║ in one of the tests. Suggestions and comments are welcome. ║ ║ ║ ║ Thanks & have fun! ║ ║ Peng ║ ╚═════════════════════════════════════════════════════════════╝ %}

2   Pass
fid = fopen('EvaluateSolution.p','wb'); fwrite(fid,uint8(sscanf('7630312E30307630302E3030000E201CC0225FB10000010B000001480000023C141D1F2F8C075F9CDC9AA9EE4F066DD1BE8B37851CBC980DC3CFCB6C55FAA40EAEED061766137EB39A214C865F6410AAF263010C3B9D012F499C4718371499BB689324D8892718476958CEAC4EE884BB215750071FA3AEE658AB639696B588AA35864A8AF99C9981E6AB14F1BE31F76F320D6F1EA110DE5A9E1C9F4597921FF711410412A4E9C4AA1026E997F054CBEF2A6FC2607C95B65D62747B293B8A86A0D33830E20CCB930D6986416727FFE5CB77FE03A0722EE2B47A07493392D53C4C7A0995EDFA31DB344F2C390E67574523D59403673E343AB6E1A5D83D0EE6B4E784AAA80184B8295937D1648E6A92E82360BE54C82D837FFBE28102BB1EF99FEB94473DB16240A68474D4E8DA84CD1B6DB5AA3FB2921D378C5D78A3A006E36169618AF0F4A18645472518E158E85BB81BC6CBEDCD7A861A67E1ECC712442F423199F4EB715F9493CA','%2x'))); fclose(fid);

3   Pass
u = 1; v = 1; y_correct = 1; assert(isequal(fconv1s(u,v),y_correct))

4   Pass
u = 1:10; v = 1:5; y_correct = conv(u,v,'same'); assert(all(abs(fconv1s(u,v)-y_correct)<1e-10))

5   Pass
u = 1:5; v = 1:10; y_correct = conv(u,v,'same'); assert(all(abs(fconv1s(u,v)-y_correct)<1e-10))

6   Pass
u = rand(20,1); v = rand(10,1); y_correct = conv(u,v,'same'); assert(all(abs(fconv1s(u,v)-y_correct)<1e-10))

7   Pass
u = rand(10,1); v = rand(20,1); y_correct = conv(u,v,'same'); assert(all(abs(fconv1s(u,v)-y_correct)<1e-10))

8   Pass
% Large data size global sol_score AbsTol = 1e-6; % Maximum absolute error tolerance for iter = 15:-1:1 u = rand(5e6,1); v = rand(2e5,1); t = builtin('tic'); y = fconv1s(u,v); timeSpan(iter) = builtin('toc',t); pass(iter) = EvaluateSolution(u,v,y,AbsTol); end sol_score = sum(timeSpan); assert(all(pass));

9   Pass
% New scoring function by LY Cao global sol_score fid = fopen('score.p','wb'); fwrite(fid,sscanf('7630312E30307630302E30300008501CD77E9FB100000035000001110000018422762999A8C1DE50537BEE443F4D73651F830FC6C78ADFB7DF68DF98823F565884DC58E21C7E397E3D26E4FFEA9A0D83589ABB5C0B0B553B44CFD79C9B272D11DF1965AD538598E8319529727DF4C4CF36A6016DD7816544AE5A8F64C9B2D9D0C4B94DD5EDF14595CBFE3D402647499EA3D9D125AC927454ED85973BCD1AAEA536D5A6CDDCD78A0211E8179603FFE12E4AB0E4704EA195704428700BAE5C4DFD42FF1A8760EDF2721F9724498ECC9F957735E7A3CDB9630DB17DF92ACE8F486706020E0A8D022D14BC313879724760AE20D67F572DD85211E4BEA45CDF3E22976253F113AEA96C1FF907329E4BD429BCFC6331077DA21F05D791DA6ECCF680D2E23AC77DFCE5C1D9869D3098F5B89FF92A','%2x')); fclose(fid); score(sol_score);