IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 3444


Ignore:
Timestamp:
Mar 17, 2005, 9:26:19 AM (21 years ago)
Author:
desonia
Message:

fixed bug in psVectorSort of float/double data.

Location:
trunk/psLib
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/collections/psCompare.c

    r3264 r3444  
    77 *  @author Robert Daniel DeSonia, MHPCC
    88 *
    9  *  @version $Revision: 1.7 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2005-02-17 19:26:23 $
     9 *  @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2005-03-17 19:26:19 $
    1111 *
    1212 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    4343COMPARE_NUMERIC_PTR(U32)
    4444COMPARE_NUMERIC_PTR(U64)
    45 COMPARE_NUMERIC_PTR(F32)
    46 COMPARE_NUMERIC_PTR(F64)
     45
     46int psCompareF32Ptr(const void** a, const void** b)
     47{
     48    psF32 diff = **((psF32**)a) - **((psF32**)b);
     49    return (diff>FLT_EPSILON) ? 1 : ((diff<FLT_EPSILON) ? -1 :0);
     50}
     51
     52int psCompareF64Ptr(const void** a, const void** b)
     53{
     54    psF64 diff = **((psF64**)a) - **((psF64**)b);
     55    return (diff>DBL_EPSILON) ? 1 : ((diff<DBL_EPSILON) ? -1 :0);
     56}
    4757
    4858COMPARE_NUMERIC_PTR_DESCENDING(S8)
     
    5464COMPARE_NUMERIC_PTR_DESCENDING(U32)
    5565COMPARE_NUMERIC_PTR_DESCENDING(U64)
    56 COMPARE_NUMERIC_PTR_DESCENDING(F32)
    57 COMPARE_NUMERIC_PTR_DESCENDING(F64)
     66
     67int psCompareDescendingF32Ptr(const void** a, const void** b)
     68{
     69    psF32 diff = **((psF32**)b) - **((psF32**)a);
     70    return (diff>FLT_EPSILON) ? 1 : ((diff<FLT_EPSILON) ? -1 :0);
     71}
     72
     73int psCompareDescendingF64Ptr(const void** a, const void** b)
     74{
     75    psF64 diff = **((psF64**)b) - **((psF64**)a);
     76    return (diff>DBL_EPSILON) ? 1 : ((diff<DBL_EPSILON) ? -1 :0);
     77}
    5878
    5979COMPARE_NUMERIC(S8)
     
    6585COMPARE_NUMERIC(U32)
    6686COMPARE_NUMERIC(U64)
    67 COMPARE_NUMERIC(F32)
    68 COMPARE_NUMERIC(F64)
     87
     88int psCompareF32(const void* a, const void* b)
     89{
     90    psF32 diff = *((psF32*)a) - *((psF32*)b);
     91    return (diff>FLT_EPSILON) ? 1 : ((diff<FLT_EPSILON) ? -1 :0);
     92}
     93
     94int psCompareF64(const void* a, const void* b)
     95{
     96    psF64 diff = *((psF64*)a) - *((psF64*)b);
     97    return (diff>DBL_EPSILON) ? 1 : ((diff<DBL_EPSILON) ? -1 :0);
     98}
    6999
    70100COMPARE_NUMERIC_DESCENDING(S8)
     
    76106COMPARE_NUMERIC_DESCENDING(U32)
    77107COMPARE_NUMERIC_DESCENDING(U64)
    78 COMPARE_NUMERIC_DESCENDING(F32)
    79 COMPARE_NUMERIC_DESCENDING(F64)
     108
     109int psCompareDescendingF32(const void* a, const void* b)
     110{
     111    psF32 diff = *((psF32*)b) - *((psF32*)a);
     112    return (diff>FLT_EPSILON) ? 1 : ((diff<FLT_EPSILON) ? -1 :0);
     113}
     114
     115int psCompareDescendingF64(const void* a, const void* b)
     116{
     117    psF64 diff = *((psF64*)b) - *((psF64*)a);
     118    return (diff>DBL_EPSILON) ? 1 : ((diff<DBL_EPSILON) ? -1 :0);
     119}
  • trunk/psLib/src/math/psCompare.c

    r3264 r3444  
    77 *  @author Robert Daniel DeSonia, MHPCC
    88 *
    9  *  @version $Revision: 1.7 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2005-02-17 19:26:23 $
     9 *  @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2005-03-17 19:26:19 $
    1111 *
    1212 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    4343COMPARE_NUMERIC_PTR(U32)
    4444COMPARE_NUMERIC_PTR(U64)
    45 COMPARE_NUMERIC_PTR(F32)
    46 COMPARE_NUMERIC_PTR(F64)
     45
     46int psCompareF32Ptr(const void** a, const void** b)
     47{
     48    psF32 diff = **((psF32**)a) - **((psF32**)b);
     49    return (diff>FLT_EPSILON) ? 1 : ((diff<FLT_EPSILON) ? -1 :0);
     50}
     51
     52int psCompareF64Ptr(const void** a, const void** b)
     53{
     54    psF64 diff = **((psF64**)a) - **((psF64**)b);
     55    return (diff>DBL_EPSILON) ? 1 : ((diff<DBL_EPSILON) ? -1 :0);
     56}
    4757
    4858COMPARE_NUMERIC_PTR_DESCENDING(S8)
     
    5464COMPARE_NUMERIC_PTR_DESCENDING(U32)
    5565COMPARE_NUMERIC_PTR_DESCENDING(U64)
    56 COMPARE_NUMERIC_PTR_DESCENDING(F32)
    57 COMPARE_NUMERIC_PTR_DESCENDING(F64)
     66
     67int psCompareDescendingF32Ptr(const void** a, const void** b)
     68{
     69    psF32 diff = **((psF32**)b) - **((psF32**)a);
     70    return (diff>FLT_EPSILON) ? 1 : ((diff<FLT_EPSILON) ? -1 :0);
     71}
     72
     73int psCompareDescendingF64Ptr(const void** a, const void** b)
     74{
     75    psF64 diff = **((psF64**)b) - **((psF64**)a);
     76    return (diff>DBL_EPSILON) ? 1 : ((diff<DBL_EPSILON) ? -1 :0);
     77}
    5878
    5979COMPARE_NUMERIC(S8)
     
    6585COMPARE_NUMERIC(U32)
    6686COMPARE_NUMERIC(U64)
    67 COMPARE_NUMERIC(F32)
    68 COMPARE_NUMERIC(F64)
     87
     88int psCompareF32(const void* a, const void* b)
     89{
     90    psF32 diff = *((psF32*)a) - *((psF32*)b);
     91    return (diff>FLT_EPSILON) ? 1 : ((diff<FLT_EPSILON) ? -1 :0);
     92}
     93
     94int psCompareF64(const void* a, const void* b)
     95{
     96    psF64 diff = *((psF64*)a) - *((psF64*)b);
     97    return (diff>DBL_EPSILON) ? 1 : ((diff<DBL_EPSILON) ? -1 :0);
     98}
    6999
    70100COMPARE_NUMERIC_DESCENDING(S8)
     
    76106COMPARE_NUMERIC_DESCENDING(U32)
    77107COMPARE_NUMERIC_DESCENDING(U64)
    78 COMPARE_NUMERIC_DESCENDING(F32)
    79 COMPARE_NUMERIC_DESCENDING(F64)
     108
     109int psCompareDescendingF32(const void* a, const void* b)
     110{
     111    psF32 diff = *((psF32*)b) - *((psF32*)a);
     112    return (diff>FLT_EPSILON) ? 1 : ((diff<FLT_EPSILON) ? -1 :0);
     113}
     114
     115int psCompareDescendingF64(const void* a, const void* b)
     116{
     117    psF64 diff = *((psF64*)b) - *((psF64*)a);
     118    return (diff>DBL_EPSILON) ? 1 : ((diff<DBL_EPSILON) ? -1 :0);
     119}
  • trunk/psLib/test/collections/tst_psVectorSort_01.c

    r3264 r3444  
    1212 *  @author  Ross Harman, MHPCC
    1313 *
    14  *  @version $Revision: 1.6 $  $Name: not supported by cvs2svn $
    15  *  @date  $Date: 2005-02-17 19:26:24 $
     14 *  @version $Revision: 1.7 $  $Name: not supported by cvs2svn $
     15 *  @date  $Date: 2005-03-17 19:26:19 $
    1616 *
    1717 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    9898    in = psVectorAlloc(7, PS_TYPE_F32);
    9999    in->n = 7;
    100     in->data.F32[0] = 7.0f;
    101     in->data.F32[1] = 9.0f;
    102     in->data.F32[2] = 3.0f;
    103     in->data.F32[3] = 1.0f;
    104     in->data.F32[4] = 5.0f;
    105     in->data.F32[5] = 5.0f;
    106     in->data.F32[6] = -20.0f;
     100    in->data.F32[0] = 0.7f;
     101    in->data.F32[1] = 0.9f;
     102    in->data.F32[2] = 0.3f;
     103    in->data.F32[3] = 0.1f;
     104    in->data.F32[4] = 0.5f;
     105    in->data.F32[5] = 0.5f;
     106    in->data.F32[6] = -2.0f;
    107107    in = psVectorSort(in, in);
    108     if(in->data.F32[0] != -20.0f) {
     108    if(in->data.F32[0] != -2.0f) {
    109109        psError(PS_ERR_UNKNOWN,true,"Improper self sort in[0]");
    110110        return 100;
    111111    }
    112     if(in->data.F32[1] != 1.0f) {
     112    if(in->data.F32[1] != 0.1f) {
    113113        psError(PS_ERR_UNKNOWN,true,"Improper self sort in[1]");
    114114        return 200;
    115115    }
    116     if(in->data.F32[2] != 3.0f) {
     116    if(in->data.F32[2] != 0.3f) {
    117117        psError(PS_ERR_UNKNOWN,true,"Improper self sort in[2]");
    118118        return 300;
    119119    }
    120     if(in->data.F32[3] != 5.0f) {
     120    if(in->data.F32[3] != 0.5f) {
    121121        psError(PS_ERR_UNKNOWN,true,"Improper self sort in[3]");
    122122        return 400;
    123123    }
    124     if(in->data.F32[4] != 5.0f) {
     124    if(in->data.F32[4] != 0.5f) {
    125125        psError(PS_ERR_UNKNOWN,true,"Improper self sort in[4]");
    126126        return 500;
    127127    }
    128     if(in->data.F32[5] != 7.0f) {
     128    if(in->data.F32[5] != 0.7f) {
    129129        psError(PS_ERR_UNKNOWN,true,"Improper self sort in[5]");
    130130        return 600;
    131131    }
    132     if(in->data.F32[6] != 9.0f) {
     132    if(in->data.F32[6] != 0.9f) {
    133133        psError(PS_ERR_UNKNOWN,true,"Improper self sort in[6]");
    134134        return 700;
Note: See TracChangeset for help on using the changeset viewer.