Changeset 2676
- Timestamp:
- Dec 9, 2004, 11:30:43 AM (22 years ago)
- Location:
- trunk/psLib/src
- Files:
-
- 2 edited
-
collections/psVector.c (modified) (8 diffs)
-
mathtypes/psVector.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/collections/psVector.c
r2339 r2676 10 10 * @author Robert DeSonia, MHPCC 11 11 * 12 * @version $Revision: 1.3 1$ $Name: not supported by cvs2svn $13 * @date $Date: 2004-1 1-11 20:13:57$12 * @version $Revision: 1.32 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2004-12-09 21:30:43 $ 14 14 * 15 15 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 306 306 psS32 N = 0; 307 307 psVector* tmpVector = NULL; 308 psVector* checkVector = NULL; 308 309 psElemType inType = 0; 309 310 psU32* outVec; … … 316 317 } 317 318 319 inType = inVector->type.type; 318 320 N = inVector->n; 319 321 … … 337 339 338 340 tmpVector = psVectorSort(tmpVector, inVector); 341 342 checkVector = psVectorAlloc(N,PS_TYPE_U8); 343 for(psS32 k=0; k<N; k++) { 344 checkVector->data.U8[k] = 0; 345 } 339 346 340 347 #define SORT_INDICES(TYPE,absfcn,maxError) { \ … … 344 351 for(psS32 i=0; i<N; i++) { \ 345 352 for(psS32 j=0; j<N; j++) { \ 346 diff = absfcn(tmpVec[i] - inVec[j]); \ 347 if(diff < maxError) { \ 348 outVec[i] = j; \ 349 break; \ 350 } \ 353 if(checkVector->data.U8[j] == 0 ) { \ 354 diff = absfcn(tmpVec[i] - inVec[j]); \ 355 if(diff < maxError) { \ 356 outVec[i] = j; \ 357 checkVector->data.U8[j] = 1; \ 358 break; \ 359 } \ 360 } \ 351 361 } \ 352 362 } \ … … 356 366 switch (inType) { 357 367 case PS_TYPE_U8: 358 SORT_INDICES(U8, /* no absfcn needed */,1);368 SORT_INDICES(U8,abs,1); 359 369 break; 360 370 case PS_TYPE_U16: 361 SORT_INDICES(U16, /* no absfcn needed */,1);371 SORT_INDICES(U16,abs,1); 362 372 break; 363 373 case PS_TYPE_U32: 364 SORT_INDICES(U32, /* no absfcn needed */,1);374 SORT_INDICES(U32,abs,1); 365 375 break; 366 376 case PS_TYPE_U64: 367 SORT_INDICES(U64, /* no absfcn needed */,1);377 SORT_INDICES(U64,abs,1); 368 378 break; 369 379 case PS_TYPE_S8: 370 SORT_INDICES(S8, /* no absfcn needed */,1);380 SORT_INDICES(S8,abs,1); 371 381 break; 372 382 case PS_TYPE_S16: 373 SORT_INDICES(S16, /* no absfcn needed */,1);383 SORT_INDICES(S16,abs,1); 374 384 break; 375 385 case PS_TYPE_S32: 376 SORT_INDICES(S32, /* no absfcn needed */,1);386 SORT_INDICES(S32,abs,1); 377 387 break; 378 388 case PS_TYPE_S64: 379 SORT_INDICES(S64, /* no absfcn needed */,1);389 SORT_INDICES(S64,abs,1); 380 390 break; 381 391 case PS_TYPE_F32: … … 384 394 case PS_TYPE_F64: 385 395 SORT_INDICES(F64,fabs,DBL_EPSILON); 386 break;387 case PS_TYPE_C32:388 SORT_INDICES(F64,cabsf,FLT_EPSILON);389 break;390 case PS_TYPE_C64:391 SORT_INDICES(F64,cabs,DBL_EPSILON);392 396 break; 393 397 default: … … 399 403 // Free temp memory 400 404 psFree(tmpVector); 405 psFree(checkVector); 401 406 402 407 return outVector; -
trunk/psLib/src/mathtypes/psVector.c
r2339 r2676 10 10 * @author Robert DeSonia, MHPCC 11 11 * 12 * @version $Revision: 1.3 1$ $Name: not supported by cvs2svn $13 * @date $Date: 2004-1 1-11 20:13:57$12 * @version $Revision: 1.32 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2004-12-09 21:30:43 $ 14 14 * 15 15 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 306 306 psS32 N = 0; 307 307 psVector* tmpVector = NULL; 308 psVector* checkVector = NULL; 308 309 psElemType inType = 0; 309 310 psU32* outVec; … … 316 317 } 317 318 319 inType = inVector->type.type; 318 320 N = inVector->n; 319 321 … … 337 339 338 340 tmpVector = psVectorSort(tmpVector, inVector); 341 342 checkVector = psVectorAlloc(N,PS_TYPE_U8); 343 for(psS32 k=0; k<N; k++) { 344 checkVector->data.U8[k] = 0; 345 } 339 346 340 347 #define SORT_INDICES(TYPE,absfcn,maxError) { \ … … 344 351 for(psS32 i=0; i<N; i++) { \ 345 352 for(psS32 j=0; j<N; j++) { \ 346 diff = absfcn(tmpVec[i] - inVec[j]); \ 347 if(diff < maxError) { \ 348 outVec[i] = j; \ 349 break; \ 350 } \ 353 if(checkVector->data.U8[j] == 0 ) { \ 354 diff = absfcn(tmpVec[i] - inVec[j]); \ 355 if(diff < maxError) { \ 356 outVec[i] = j; \ 357 checkVector->data.U8[j] = 1; \ 358 break; \ 359 } \ 360 } \ 351 361 } \ 352 362 } \ … … 356 366 switch (inType) { 357 367 case PS_TYPE_U8: 358 SORT_INDICES(U8, /* no absfcn needed */,1);368 SORT_INDICES(U8,abs,1); 359 369 break; 360 370 case PS_TYPE_U16: 361 SORT_INDICES(U16, /* no absfcn needed */,1);371 SORT_INDICES(U16,abs,1); 362 372 break; 363 373 case PS_TYPE_U32: 364 SORT_INDICES(U32, /* no absfcn needed */,1);374 SORT_INDICES(U32,abs,1); 365 375 break; 366 376 case PS_TYPE_U64: 367 SORT_INDICES(U64, /* no absfcn needed */,1);377 SORT_INDICES(U64,abs,1); 368 378 break; 369 379 case PS_TYPE_S8: 370 SORT_INDICES(S8, /* no absfcn needed */,1);380 SORT_INDICES(S8,abs,1); 371 381 break; 372 382 case PS_TYPE_S16: 373 SORT_INDICES(S16, /* no absfcn needed */,1);383 SORT_INDICES(S16,abs,1); 374 384 break; 375 385 case PS_TYPE_S32: 376 SORT_INDICES(S32, /* no absfcn needed */,1);386 SORT_INDICES(S32,abs,1); 377 387 break; 378 388 case PS_TYPE_S64: 379 SORT_INDICES(S64, /* no absfcn needed */,1);389 SORT_INDICES(S64,abs,1); 380 390 break; 381 391 case PS_TYPE_F32: … … 384 394 case PS_TYPE_F64: 385 395 SORT_INDICES(F64,fabs,DBL_EPSILON); 386 break;387 case PS_TYPE_C32:388 SORT_INDICES(F64,cabsf,FLT_EPSILON);389 break;390 case PS_TYPE_C64:391 SORT_INDICES(F64,cabs,DBL_EPSILON);392 396 break; 393 397 default: … … 399 403 // Free temp memory 400 404 psFree(tmpVector); 405 psFree(checkVector); 401 406 402 407 return outVector;
Note:
See TracChangeset
for help on using the changeset viewer.
