Changeset f9326d2 in git
- Timestamp:
- Sep 4, 1997, 9:31:57 AM (26 years ago)
- Branches:
- (u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
- Children:
- 72dd6eeaebf0db2fe0f6bd43bfe99cedfbcf38e3
- Parents:
- 9a7a66619e0df89480e6c5daec5c873e32ef749d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/hutil.cc
r9a7a66 rf9326d2 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: hutil.cc,v 1. 3 1997-04-02 15:07:03 SingularExp $ */4 /* $Id: hutil.cc,v 1.4 1997-09-04 07:31:57 pohl Exp $ */ 5 5 /* 6 6 * ABSTRACT: Utilities for staircase operations … … 143 143 } 144 144 145 146 145 void hOrdSupp(scfmon stc, int Nstc, varset var, int Nvar) 147 146 { 148 147 int i, i1, j, jj, k, l; 149 148 short x; 150 scmon temp; 151 varset v1; 152 v1 = (int *)Alloc(Nvar * sizeof(int)); 149 scmon temp, count; 150 float o, h, g, *v1; 151 152 v1 = (float *)Alloc(Nvar * sizeof(float)); 153 153 temp = (short *)Alloc(Nstc * sizeof(short)); 154 count = (short *)Alloc(Nstc * sizeof(short)); 154 155 for (i = 1; i <= Nvar; i++) 155 156 { 156 157 i1 = var[i]; 157 158 *temp = stc[0][i1]; 159 *count = 1; 158 160 jj = 1; 159 161 for (j = 1; j < Nstc; j++) … … 169 171 { 170 172 temp[k] = x; 173 count[k] = 1; 171 174 jj++; 172 175 break; … … 175 178 else if (x < temp[k]) 176 179 { 177 for (l = jj; l < k; l--) 180 for (l = jj; l > k; l--) 181 { 178 182 temp[l] = temp[l-1]; 183 count[l] = count[l-1]; 184 } 179 185 temp[k] = x; 186 count[k] = 1; 180 187 jj++; 181 188 break; 182 189 } 183 190 else 184 break; 185 } 186 } 187 jj *= 2; 188 if (!(*temp)) 189 jj--; 190 v1[i-1] = jj; 191 } 191 { 192 count[k]++; 193 break; 194 } 195 } 196 } 197 h = 0.0; 198 o = (float)Nstc/(float)jj; 199 for(j = 0; j < jj; j++) 200 { 201 g = (float)count[j]; 202 if (g > o) 203 g -= o; 204 else 205 g = o - g; 206 if (g > h) 207 h = g; 208 } 209 v1[i-1] = h * (float)jj; 210 } 211 Free((ADDRESS)count, Nstc * sizeof(short)); 212 Free((ADDRESS)temp, Nstc * sizeof(short)); 192 213 for (i = 1; i < Nvar; i++) 193 214 { 194 215 i1 = var[i+1]; 195 jj= v1[i];216 h = v1[i]; 196 217 j = 0; 197 218 loop 198 219 { 199 if ( jj> v1[j])220 if (h > v1[j]) 200 221 { 201 222 for (l = i; l > j; l--) … … 204 225 var[l+1] = var[l]; 205 226 } 206 v1[j] = jj;227 v1[j] = h; 207 228 var[j+1] = i1; 208 229 break; … … 213 234 } 214 235 } 215 Free((ADDRESS)temp, Nstc * sizeof(short)); 216 Free((ADDRESS)v1, Nvar * sizeof(int)); 236 Free((ADDRESS)v1, Nvar * sizeof(float)); 217 237 } 218 238
Note: See TracChangeset
for help on using the changeset viewer.