File: sci_sort.sci

package info (click to toggle)
scilab 2.4-1
  • links: PTS
  • area: non-free
  • in suites: potato, slink
  • size: 55,196 kB
  • ctags: 38,019
  • sloc: ansic: 231,970; fortran: 148,976; tcl: 7,099; makefile: 4,585; sh: 2,978; csh: 154; cpp: 101; asm: 39; sed: 5
file content (33 lines) | stat: -rw-r--r-- 1,025 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function [stk,txt,top]=sci_sort()
// Copyright INRIA
txt=[]
temp=gettempvar()
if lhs==1 then  
  if stk(top)(3)=='1'|stk(top)(4)=='1' then
    txt=temp+' = sort('+stk(top)(1)+')'
    stk=list(temp+'($:-1:1)','0',stk(top)(3),stk(top)(4),'1')
  else
    txt=[temp+' = '+stk(top)(1)
        'if min(size('+temp+'))==1 then '+temp+'=sort('+temp+'),else '+temp+'=sort('+temp+',''r''),end']
    stk=list(temp+'($:-1:1,:)','0',stk(top)(3),stk(top)(4),'1')
  end
else
  y=lst(ilst+1)(2)
  i=lst(ilst+2)(2)
  if stk(top)(3)=='1'|stk(top)(4)=='1' then
    txt=['['+y+','+i+'] = sort('+stk(top)(1)+')'
        y+' = '+y+'($:-1:1)'
        i+' = '+i+'($:-1:1)']
  else
    txt=[temp+' = '+stk(top)(1)
        'if min(size('+temp+'))==1 then '
        '  ['+y+','+i+']=sort('+temp+')'
        'else '
        '  ['+y+','+i+']=sort('+temp+',''r'')'
        'end'
        y+' = '+y+'($:-1:1)'
        i+' = '+i+'($:-1:1)']
  end
  stk=list(list('?','-2',stk(top)(3),stk(top)(4),'1'),..
      list('?','-2',stk(top)(3),stk(top)(4),'1'))
end