add a new reference for the gsort test
Yann Collette [Tue, 30 Jun 2009 13:19:40 +0000 (15:19 +0200)]
scilab/modules/elementary_functions/tests/unit_tests/gsort.dia.ref

index de4e485..d64bf39 100644 (file)
 // =============================================================================
 // <-- JVM NOT MANDATORY -->
 //================================ Matrix of double case ===========================================
-N=4;P=20;Nrand=100;
+N=4;P=20;Nrand=100; 
 a = matrix(grand(1,'prm',(1:N*P)'),N,P);
 //-----Global sort --------------------------------
 [a1,ind]=gsort(a,'g');
 if norm(a1- matrix(N*P:-1:1,N,P)) > %eps then bugmes();quit;end;
 if norm(a1- matrix(a(ind),N,P)) > %eps then bugmes();quit;end;
-for i=1:Nrand
-  b = int(10*rand(N,P,'u'));
+for i=1:Nrand 
+  b = int(10*rand(N,P,'u')); 
   [b1,ind]=gsort(b,'g');
   if norm(b1- matrix(b(ind),N,P)) > %eps then bugmes();quit;end;
   if or(b1(1:$-1)-b1(2:$) <0) then bugmes();quit;end
-end
-//increasing values
+end 
+//increasing values 
 [a1,ind]=gsort(a,'g','i');
 if norm(a1- matrix(1:N*P,N,P)) > %eps then bugmes();quit;end;
 if norm(a1- matrix(a(ind),N,P)) > %eps then bugmes();quit;end;
 for i=1:100
-  b = int(10*rand(N,P,'u'));
+  b = int(10*rand(N,P,'u')); 
   [b1,ind]=gsort(b,'g','i');
   if norm(b1- matrix(b(ind),N,P)) > %eps then bugmes();quit;end;
   if or(b1(1:$-1)-b1(2:$) > 0) then bugmes();quit;end
-end
+end 
 //----sort each column of a ('r' means that the row indice is used for sorting)
 [a1,ind]=gsort(a,'r');
 nc=size(a,'c');
 test=[];
-for i=1:nc ;
+for i=1:nc ; 
    test= [test, matrix(a(ind(:,i),i),N,1)];
-end
+end 
 if norm(a1- test) > %eps then bugmes();quit;end;
 test=[];
-for i=1:nc ;
+for i=1:nc ; 
    test= [test, gsort(a(:,i),'g')];
-end
+end 
 if norm(a1- test) > %eps then bugmes();quit;end;
 for i=1:Nrand
-  b = int(10*rand(N,P,'u'));
+  b = int(10*rand(N,P,'u')); 
   [b1,ind]=gsort(b,'r');
-  if or( b1(2:$,:)-b1(1:$-1,:) > 0 ) then bugmes();quit;end
+  if or( b1(2:$,:)-b1(1:$-1,:) > 0 ) then bugmes();quit;end 
   test=[];
-  for j=1:nc ;
+  for j=1:nc ; 
     test= [test, matrix(b(ind(:,j),j),N,1)];
-  end
+  end 
   if norm(b1- test) > %eps then bugmes();quit;end;
-end
-//increasing values
+end 
+//increasing values 
 [a1,ind]=gsort(a,'r','i');
 nc=size(a,'c');
 test=[];
-for i=1:nc ;
+for i=1:nc ; 
   test= [test, matrix(a(ind(:,i),i),N,1)];
-end
+end 
 if norm(a1- test) > %eps then bugmes();quit;end;
 test=[];
-for i=1:nc ;
+for i=1:nc ; 
    test= [test, gsort(a(:,i),'g','i')];
-end
+end 
 if norm(a1- test) > %eps then bugmes();quit;end;
 //----sort each row of a ('c' means that the column indice is used for sorting)
 [a1,ind]=gsort(a,'c')   ;
 nr=size(a,'r');
 test=[];
-for i=1:nr ;
+for i=1:nr ; 
    test= [test; matrix(a(i,ind(i,:)),1,P)];
-end
+end 
 if norm(a1- test) > %eps then bugmes();quit;end;
 test=[];
-for i=1:nr ;
+for i=1:nr ; 
    test= [test; gsort(a(i,:),'g')];
-end
+end 
 if norm(a1- test) > %eps then bugmes();quit;end;
 for i=1:Nrand
-  b = int(10*rand(N,P,'u'));
+  b = int(10*rand(N,P,'u')); 
   [b1,ind]=gsort(b,'c');
-  if or( b1(:,2:$)-b1(:,1:$-1) > 0 ) then bugmes();quit;end
+  if or( b1(:,2:$)-b1(:,1:$-1) > 0 ) then bugmes();quit;end 
   test=[];
-  for j=1:nr ;
+  for j=1:nr ; 
     test= [test; b(j,ind(j,:))];
-  end
+  end 
   if norm(b1- test) > %eps then bugmes();quit;end;
-end
-//increasing
+end 
+//increasing 
 [a1,ind]=gsort(a,'c','i')   ;
 nr=size(a,'r');
 test=[];
-for i=1:nr ;
+for i=1:nr ; 
    test= [test; matrix(a(i,ind(i,:)),1,P)];
-end
+end 
 if norm(a1- test) > %eps then bugmes();quit;end;
 test=[];
-for i=1:nr ;
+for i=1:nr ; 
    test= [test; gsort(a(i,:),'g','i')];
-end
+end 
 if norm(a1- test) > %eps then bugmes();quit;end;
-//----sort the rows of a in lexicographic order
-//    i.e a(k,:) < a(l,:) if there's a number j
+//----sort the rows of a in lexicographic order 
+//    i.e a(k,:) < a(l,:) if there's a number j 
 //    such that a(k,j) < a(l,j) and a(k,p)=a(l,p) for p in [1,j-1];
 //
 N1=4;P1=3;
@@ -111,69 +111,69 @@ alr=[1,2,2;
      1,2,1;
      1,1,2;
      1,1,1];
-// a random permutation
+// a random permutation 
 [ax,perm]=sort(rand(1,N1,'u'));
 a=alr(perm,:);
-[a1,ind]=gsort(a,'lr');
+[a1,ind]=gsort(a,'lr');                   
 if norm(a1- alr) > %eps then bugmes();quit;end;
 if norm(a1- matrix(a(ind,:),N1,P1)) > %eps then bugmes();quit;end;
 [a2,ind2]=gsort(a*[100;10;1],'g');
 if norm(ind2-ind) > %eps then bugmes();quit;end;
 for i=1:Nrand
   vmax=4;
-  b = int(vmax*rand(N,P,'u'));
+  b = int(vmax*rand(N,P,'u')); 
   [b1,ind]=gsort(b,'lr');
   if norm(b1- b(ind,:)) > %eps then bugmes();quit;end;
   v= b1*((vmax+1)^[P-1:-1:0])';
-  if or( v(2:$)-v(1:$-1) > 0 ) then bugmes();quit;end
-end
-// increasing
-[a1,ind]=gsort(a,'lr','i');
+  if or( v(2:$)-v(1:$-1) > 0 ) then bugmes();quit;end 
+end 
+// increasing 
+[a1,ind]=gsort(a,'lr','i');                   
 if norm(a1- alr(N1:-1:1,:)) > %eps then bugmes();quit;end;
 if norm(a1- matrix(a(ind,:),N1,P1)) > %eps then bugmes();quit;end;
 [a2,ind2]=gsort(a*[100;10;1],'g','i');
 if norm(ind2-ind) > %eps then bugmes();quit;end;
 for i=1:Nrand
   vmax=4;
-  b = int(vmax*rand(N,P,'u'));
+  b = int(vmax*rand(N,P,'u')); 
   [b1,ind]=gsort(b,'lr','i');
   if norm(b1- b(ind,:)) > %eps then bugmes();quit;end;
   v= b1*((vmax+1)^[P-1:-1:0])';
-  if or( v(2:$)-v(1:$-1) < 0 ) then bugmes();quit;end
-end
-//----sort the columns of a in lexicographic order
+  if or( v(2:$)-v(1:$-1) < 0 ) then bugmes();quit;end 
+end 
+//----sort the columns of a in lexicographic order 
 N1=3;P1=4;
 alr=alr';
-// a random permutation
+// a random permutation 
 [ax,perm]=sort(rand(1,P1,'u'));
 a=alr(:,perm);
-[a1,ind]=gsort(a,'lc');
+[a1,ind]=gsort(a,'lc');                   
 if norm(a1- alr) > %eps then bugmes();quit;end;
 if norm(a1- matrix(a(:,ind),N1,P1)) > %eps then bugmes();quit;end;
 [a2,ind2]=gsort([100,10,1]*a,'g');
 if norm(ind2-ind) > %eps then bugmes();quit;end;
 for i=1:Nrand
   vmax=4;
-  b = int(vmax*rand(N1,P1,'u'));
+  b = int(vmax*rand(N1,P1,'u')); 
   [b1,ind]=gsort(b,'lc');
   if norm(b1- b(:,ind)) > %eps then bugmes();quit;end;
   v= ((vmax+1)^[N1-1:-1:0])*b1;
-  if or( v(2:$)-v(1:$-1) > 0 ) then bugmes();quit;end
-end
-//increasing
-[a1,ind]=gsort(a,'lc','i');
+  if or( v(2:$)-v(1:$-1) > 0 ) then bugmes();quit;end 
+end 
+//increasing 
+[a1,ind]=gsort(a,'lc','i');                   
 if norm(a1- alr(:,P1:-1:1)) > %eps then bugmes();quit;end;
 if norm(a1- matrix(a(:,ind),N1,P1)) > %eps then bugmes();quit;end;
 [a2,ind2]=gsort([100,10,1]*a,'g','i');
 if norm(ind2-ind) > %eps then bugmes();quit;end;
 for i=1:Nrand
   vmax=4;
-  b = int(vmax*rand(N,P,'u'));
+  b = int(vmax*rand(N,P,'u')); 
   [b1,ind]=gsort(b,'lc','i');
   if norm(b1- b(:,ind)) > %eps then bugmes();quit;end;
   v= ((vmax+1)^[N-1:-1:0])*b1;
-  if or( v(2:$)-v(1:$-1) < 0 ) then bugmes();quit;end
-end
+  if or( v(2:$)-v(1:$-1) < 0 ) then bugmes();quit;end 
+end 
 a = [1,1,1,1,2,2,3,3,2,2,3,3,4,4,4,4,4,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,9,9,9,7,9,10,..
  10,10,10,11,11,11,12,13,13,13,13,14,14,12,12,14,14,14,14,14,14,15,15,15,15,16,17,18;
 3,4,4,5,3,8,4,4,7,8,8,8,5,5,8,9,10,10,9,8,6,10,10,10,10,11,8,8,13,13,9,9,13,13,10,10,13,..
@@ -219,48 +219,49 @@ if or(t(find(t(:,1)==0),2)<0) then bugmes();quit;end
 if or(a(ind,:)<>b) then bugmes();quit;end
 //================================ Matrix of string case ===========================================
 a=int(10*rand(N,P,'u'));
-//-----Global sort
+//-----Global sort 
 [a1,ind]=gsort(string(a),'g');
 [a2,ind2]=gsort(a,'g');
 if norm(evstr(a1)- matrix(a(ind),N,P)) > %eps then bugmes();quit;end;
-// a and string(a) are in the same order in the previous example
+// a and string(a) are in the same order in the previous example 
 if norm(evstr(a1)- a2 ) > %eps then bugmes();quit;end;
-//-- rows
-[a1,ind1]=gsort(string(a),'r');
+//-- rows 
+[a1,ind1]=gsort(string(a),'r');   
 [a2,ind2]=gsort(a,'r');
 if norm(ind1-ind2) > %eps then bugmes();quit;end;
-// a and string(a) are in the same order in the previous example
+// a and string(a) are in the same order in the previous example 
 if norm(evstr(a1)- a2 ) > %eps then bugmes();quit;end;
-//--columns
-[a1,ind1]=gsort(string(a),'c')   ;
+//--columns 
+[a1,ind1]=gsort(string(a),'c')   ;                      
 [a2,ind2]=gsort(a,'c');
 if norm(ind1-ind2) > %eps then bugmes();quit;end;
-// a and string(a) are in the same order in the previous example
+// a and string(a) are in the same order in the previous example 
 if norm(evstr(a1)- a2 ) > %eps then bugmes();quit;end;
-//----sort the rows of a in lexicographic order
+//----sort the rows of a in lexicographic order 
 N1=4;P1=3;
 alr=[1,2,2;
      1,2,1;
      1,1,2;
      1,1,1];
-// a random permutation
+// a random permutation 
 [ax,perm]=sort(rand(1,N1,'u'));
 a=alr(perm,:);
-[a1,ind]=gsort(string(a),'lr') ;
+[a1,ind]=gsort(string(a),'lr') ;        
 [a2,ind]=gsort(a,'lr') ;
 //
 if norm(evstr(a1)- matrix(a(ind,:),N1,P1)) > %eps then bugmes();quit;end;
-// a and string(a) are in the same order in the previous example
+// a and string(a) are in the same order in the previous example 
 if norm(evstr(a1)- a2 ) > %eps then bugmes();quit;end;
-//----sort the columns of a in lexicographic order
+//----sort the columns of a in lexicographic order 
 N1=3;P1=4;
 alr=alr';
-// a random permutation
+// a random permutation 
 [ax,perm]=sort(rand(1,P1,'u'));
 a=alr(:,perm);
-[a1,ind]=gsort(string(a),'lc');
+[a1,ind]=gsort(string(a),'lc');                   
 [a2,ind]=gsort(a,'lc') ;
 //
 if norm(evstr(a1)- matrix(a(:,ind),N1,P1)) > %eps then bugmes();quit;end;
-// a and string(a) are in the same order in the previous example
+// a and string(a) are in the same order in the previous example 
 if norm(evstr(a1)- a2 ) > %eps then bugmes();quit;end;
+exit