ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/acismesh/trirea.cpp
Revision: 1
Committed: Mon Jun 11 22:53:07 2007 UTC (17 years, 11 months ago)
File size: 2105 byte(s)
Log Message:

File Contents

# User Rev Content
1 1 #include <stdio.h>
2     void trirea(float *a,int *la,int *ir)
3     {
4     int iu[21], il[21], i, m, j, k, ij, l, itt, it ;
5     float t, tt, r ;
6    
7     if (*la<=0) return ;
8     m = 1 ;
9     i = 1 ;
10     j = *la ;
11     r = 0.375 ;
12     lab5 : if (i==j) goto lab45 ;
13     if (r>0.5898437) goto lab10 ;
14     r = r + 3.90625e-2 ;
15     goto lab15 ;
16     lab10 : r = r - 0.21875 ;
17     lab15 : k = i ;
18    
19     ij = i+(j-i)*r ;
20     t = a[ij-1] ;
21     it = ir[ij-1] ;
22    
23     if (a[i-1]<=t) goto lab20 ;
24     a[ij-1] = a[i-1] ;
25     a[i-1] = t ;
26     t = a[ij-1] ;
27     ir[ij-1] = ir[i-1] ;
28     ir[i-1] = it ;
29     it = ir[ij-1] ;
30     lab20 : l = j ;
31    
32     if (a[j-1]>=t) goto lab30 ;
33     a[ij-1] = a[j-1] ;
34     a[j-1] = t ;
35     t = a[ij-1] ;
36     ir[ij-1] = ir[j-1] ;
37     ir[j-1] = it ;
38     it = ir[ij-1] ;
39    
40     if (a[i-1]<=t) goto lab30 ;
41     a[ij-1] = a[i-1] ;
42     a[i-1] = t ;
43     t = a[ij-1] ;
44     ir[ij-1] = ir[i-1] ;
45     ir[i-1] = it ;
46     // it = ir[ij-1] ;
47     goto lab30 ;
48     lab25 : if (a[l-1]==a[k-1]) goto lab30 ;
49     tt = a[l-1] ;
50     a[l-1] = a[k-1] ;
51     a[k-1] = tt ;
52     itt = ir[l-1] ;
53     ir[l-1] = ir[k-1] ;
54     ir[k-1] = itt ;
55     lab30 : l = l-1 ;
56     if (a[l-1]>t) goto lab30 ; ;
57    
58     lab35 : k = k+1 ;
59     if (a[k-1]<t) goto lab35 ;
60     if (k<=l) goto lab25 ;
61     if ((l-i)<=(j-k)) goto lab40 ;
62     il[m-1] = i ;
63     iu[m-1] = l ;
64     i = k ;
65     m = m+1 ;
66     goto lab50 ;
67     lab40 : il[m-1] = k ;
68     iu[m-1] = j ;
69     j = l ;
70     m = m+1 ;
71     goto lab50 ;
72     lab45 : m = m-1 ;
73     if (m==0) return ;
74     i = il[m-1] ;
75     j = iu[m-1] ;
76     lab50 : if ((j-i)>=11) goto lab15 ;
77     if (i==1) goto lab5 ;
78     i = i-1 ; ;
79     lab55 : i = i+1 ;
80     if (i==j) goto lab45 ;
81     t = a[i] ;
82     it = ir[i] ;
83     if (a[i-1]<=t) goto lab55 ;
84     k = i ;
85     lab60 : a[k] = a[k-1] ;
86     ir[k] = ir[k-1] ;
87     k = k-1 ;
88     if (t<a[k-1]) goto lab60 ;
89     a[k] = t ;
90     ir[k] = it ;
91     goto lab55 ;
92     }