IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 7255


Ignore:
Timestamp:
May 31, 2006, 3:00:03 PM (20 years ago)
Author:
Paul Price
Message:

Using memset on psVectorInit when the value is zero (then we can get away with it).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/mathtypes/psVector.c

    r7071 r7255  
    99*  @author Robert DeSonia, MHPCC
    1010*
    11 *  @version $Revision: 1.74 $ $Name: not supported by cvs2svn $
    12 *  @date $Date: 2006-05-05 02:48:34 $
     11*  @version $Revision: 1.75 $ $Name: not supported by cvs2svn $
     12*  @date $Date: 2006-06-01 01:00:03 $
    1313*
    1414*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    665665    case PS_TYPE_U8:
    666666        temp = va_arg (argp, psU32);
    667         if ( temp >= PS_MIN_U8 && temp <= PS_MAX_U8 )
     667        if ( temp >= PS_MIN_U8 && temp <= PS_MAX_U8 ) {
    668668            vU8 = temp;
    669         else {
     669        } else {
    670670            psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Error:  U8 Value out of Range.\n");
    671671            return false;
    672672        }
    673         for (long iy = 0; iy < vector->n; iy++) {
    674             vector->data.U8[iy] = vU8;
    675         }
     673        // Can use memset for char-size values
     674        memset(vector->data.U8, vU8, vector->n * sizeof(psU8));
    676675        return (true);
    677676    case PS_TYPE_F32:
    678677        vF32 = (psF32)va_arg (argp, psF64);
    679         for (long iy = 0; iy < vector->n; iy++) {
    680             vector->data.F32[iy] = vF32;
     678        if (vF32 == 0.0) {
     679            memset(vector->data.F32, 0, vector->n * sizeof(psF32));
     680        } else {
     681            for (long iy = 0; iy < vector->n; iy++) {
     682                vector->data.F32[iy] = vF32;
     683            }
    681684        }
    682685        return (true);
    683686    case PS_TYPE_F64:
    684687        vF64 = va_arg (argp, psF64);
    685         for (long iy = 0; iy < vector->n; iy++) {
    686             vector->data.F64[iy] = vF64;
     688        if (vF64 == 0.0) {
     689            memset(vector->data.F64, 0, vector->n * sizeof(psF64));
     690        } else {
     691            for (long iy = 0; iy < vector->n; iy++) {
     692                vector->data.F64[iy] = vF64;
     693            }
    687694        }
    688695        return (true);
     
    695702            return false;
    696703        }
    697         for (long iy = 0; iy < vector->n; iy++) {
    698             vector->data.U16[iy] = vU16;
     704        if (vU16 == 0) {
     705            memset(vector->data.U16, 0, vector->n * sizeof(psU16));
     706        } else {
     707            for (long iy = 0; iy < vector->n; iy++) {
     708                vector->data.U16[iy] = vU16;
     709            }
    699710        }
    700711        return (true);
    701712    case PS_TYPE_U32:
    702713        vU32 = va_arg (argp, psU32);
    703         for (long iy = 0; iy < vector->n; iy++) {
    704             vector->data.U32[iy] = vU32;
     714        if (vU32 == 0) {
     715            memset(vector->data.U32, 0, vector->n * sizeof(psU32));
     716        } else {
     717            for (long iy = 0; iy < vector->n; iy++) {
     718                vector->data.U32[iy] = vU32;
     719            }
    705720        }
    706721        return (true);
    707722    case PS_TYPE_U64:
    708723        vU64 = va_arg (argp, psU64);
    709         for (long iy = 0; iy < vector->n; iy++) {
    710             vector->data.U64[iy] = vU64;
     724        if (vU64 == 0) {
     725            memset(vector->data.U64, 0, vector->n * sizeof(psU64));
     726        } else {
     727            for (long iy = 0; iy < vector->n; iy++) {
     728                vector->data.U64[iy] = vU64;
     729            }
    711730        }
    712731        return (true);
     
    719738            return false;
    720739        }
    721         for (long iy = 0; iy < vector->n; iy++) {
    722             vector->data.S8[iy] = vS8;
    723         }
     740        // Can use memset for char-size values
     741        memset(vector->data.S8, vS8, vector->n * sizeof(psS8));
    724742        return (true);
    725743    case PS_TYPE_S16:
     
    731749            return false;
    732750        }
    733         for (long iy = 0; iy < vector->n; iy++) {
    734             vector->data.S16[iy] = vS16;
     751        if (vS16 == 0) {
     752            memset(vector->data.S16, 0, vector->n * sizeof(psS16));
     753        } else {
     754            for (long iy = 0; iy < vector->n; iy++) {
     755                vector->data.S16[iy] = vS16;
     756            }
    735757        }
    736758        return (true);
    737759    case PS_TYPE_S32:
    738760        vS32 = va_arg (argp, psS32);
    739         for (long iy = 0; iy < vector->n; iy++) {
    740             vector->data.S32[iy] = vS32;
     761        if (vS32 == 0) {
     762            memset(vector->data.S32, 0, vector->n * sizeof(psS32));
     763        } else {
     764            for (long iy = 0; iy < vector->n; iy++) {
     765                vector->data.S32[iy] = vS32;
     766            }
    741767        }
    742768        return (true);
    743769    case PS_TYPE_S64:
    744770        vS64 = va_arg (argp, psS64);
    745         for (long iy = 0; iy < vector->n; iy++) {
    746             vector->data.S64[iy] = vS64;
     771        if (vS64 == 0) {
     772            memset(vector->data.S64, 0, vector->n * sizeof(psS64));
     773        } else {
     774            for (long iy = 0; iy < vector->n; iy++) {
     775                vector->data.S64[iy] = vS64;
     776            }
    747777        }
    748778        return (true);
    749779    case PS_TYPE_C32:
    750780        vC32 = va_arg (argp, psC32);
    751         for (long iy = 0; iy < vector->n; iy++) {
    752             vector->data.C32[iy] = vC32;
     781        if (vC32 == 0) {
     782            memset(vector->data.C32, 0, vector->n * sizeof(psC32));
     783        } else {
     784            for (long iy = 0; iy < vector->n; iy++) {
     785                vector->data.C32[iy] = vC32;
     786            }
    753787        }
    754788        return (true);
    755789    case PS_TYPE_C64:
    756790        vC64 = va_arg (argp, psC64);
    757         for (long iy = 0; iy < vector->n; iy++) {
    758             vector->data.C64[iy] = vC64;
     791        if (vC64 == 0) {
     792            memset(vector->data.C64, 0, vector->n * sizeof(psC64));
     793        } else {
     794            for (long iy = 0; iy < vector->n; iy++) {
     795                vector->data.C64[iy] = vC64;
     796            }
    759797        }
    760798        return (true);
Note: See TracChangeset for help on using the changeset viewer.