1// ============================================================================= 2// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab 3// Copyright (C) 2012 - INRIA - Serge STEER 4// 5// This file is distributed under the same license as the Scilab package. 6// ============================================================================= 7// <-- CLI SHELL MODE --> 8// Here only 1d dst computations are checked, because the dst gateway 9// is a clone of the dct one. 10//real cases 11A=[2,8,-1,3,7,6,8,7,9,1,6,7,7,2,5]; 12n=15; 13//DST-I 14y_ref=2*sum((A'*ones(1,n)).*sin(%pi*(1:n)'*(1:n)/(n+1)),1); 15assert_checkalmostequal(dst(A,-1,"dst1"),y_ref); 16assert_checkalmostequal(dst(dst(A,-1,"dst1"),1,"dst1"),2*(n+1)*A); 17//DST-II 18y_ref=2*sum((A'*ones(1,n)).*sin(%pi*(0.5:n)'*(1:n)/(n)),1); 19assert_checkalmostequal(dst(A,-1,"dst2"),y_ref); 20assert_checkalmostequal(dst(dst(A,-1,"dst2"),1,"dst3"),2*n*A); 21//DST-III 22y_ref=((-1).^(0:n-1))*A(n)+ 2*sum((A(1:n-1)'*ones(1,n)).*sin(%pi*(1:n-1)'*(0.5:n)/(n)),1); 23assert_checkalmostequal(dst(A,1,"dst3"),y_ref); 24assert_checkalmostequal(dst(dst(A,1,"dst3"),-1,"dst2"),2*n*A); 25//DST-iV 26y_ref=2*sum((A'*ones(1,n)).*sin(%pi*(0.5:n)'*(0.5:n)/(n)),1); 27assert_checkalmostequal(dst(A,-1,"dst4"),y_ref); 28assert_checkalmostequal(dst(dst(A,-1,"dst4"),1,"dst4"),2*n*A); 29//complex cases 30A=[2,8,-1,3,7,6,8,7,9,1,6,7,7,2,5]+%i*[2 2 2 9 7 3 9 2 3 4 3 6 5 3 6]; 31n=15; 32//DST-I 33y_ref=2*sum((A.'*ones(1,n)).*sin(%pi*(1:n)'*(1:n)/(n+1)),1); 34assert_checkalmostequal(dst(A,-1,"dst1"),y_ref); 35assert_checkalmostequal(dst(dst(A,-1,"dst1"),1,"dst1"),2*(n+1)*A); 36//DST-II 37y_ref=2*sum((A.'*ones(1,n)).*sin(%pi*(0.5:n)'*(1:n)/(n)),1); 38assert_checkalmostequal(dst(A,-1,"dst2"),y_ref); 39assert_checkalmostequal(dst(dst(A,-1,"dst2"),1,"dst3"),2*n*A); 40//DST-III 41y_ref=((-1).^(0:n-1))*A(n)+ 2*sum((A(1:n-1).'*ones(1,n)).*sin(%pi*(1:n-1)'*(0.5:n)/(n)),1); 42assert_checkalmostequal(dst(A,1,"dst3"),y_ref,100*%eps,104*%eps); 43assert_checkalmostequal(dst(dst(A,1,"dst3"),-1,"dst2"),2*n*A); 44//DST-iV 45y_ref=2*sum((A.'*ones(1,n)).*sin(%pi*(0.5:n)'*(0.5:n)/(n)),1); 46assert_checkalmostequal(dst(A,-1,"dst4"),y_ref); 47assert_checkalmostequal(dst(dst(A,-1,"dst4"),1,"dst4"),2*n*A); 48//complex cases 49