Index: /trunk/psLib/src/mathtypes/psVector.c
===================================================================
--- /trunk/psLib/src/mathtypes/psVector.c	(revision 7254)
+++ /trunk/psLib/src/mathtypes/psVector.c	(revision 7255)
@@ -9,6 +9,6 @@
 *  @author Robert DeSonia, MHPCC
 *
-*  @version $Revision: 1.74 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2006-05-05 02:48:34 $
+*  @version $Revision: 1.75 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2006-06-01 01:00:03 $
 *
 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -665,24 +665,31 @@
     case PS_TYPE_U8:
         temp = va_arg (argp, psU32);
-        if ( temp >= PS_MIN_U8 && temp <= PS_MAX_U8 )
+        if ( temp >= PS_MIN_U8 && temp <= PS_MAX_U8 ) {
             vU8 = temp;
-        else {
+        } else {
             psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Error:  U8 Value out of Range.\n");
             return false;
         }
-        for (long iy = 0; iy < vector->n; iy++) {
-            vector->data.U8[iy] = vU8;
-        }
+        // Can use memset for char-size values
+        memset(vector->data.U8, vU8, vector->n * sizeof(psU8));
         return (true);
     case PS_TYPE_F32:
         vF32 = (psF32)va_arg (argp, psF64);
-        for (long iy = 0; iy < vector->n; iy++) {
-            vector->data.F32[iy] = vF32;
+        if (vF32 == 0.0) {
+            memset(vector->data.F32, 0, vector->n * sizeof(psF32));
+        } else {
+            for (long iy = 0; iy < vector->n; iy++) {
+                vector->data.F32[iy] = vF32;
+            }
         }
         return (true);
     case PS_TYPE_F64:
         vF64 = va_arg (argp, psF64);
-        for (long iy = 0; iy < vector->n; iy++) {
-            vector->data.F64[iy] = vF64;
+        if (vF64 == 0.0) {
+            memset(vector->data.F64, 0, vector->n * sizeof(psF64));
+        } else {
+            for (long iy = 0; iy < vector->n; iy++) {
+                vector->data.F64[iy] = vF64;
+            }
         }
         return (true);
@@ -695,18 +702,30 @@
             return false;
         }
-        for (long iy = 0; iy < vector->n; iy++) {
-            vector->data.U16[iy] = vU16;
+        if (vU16 == 0) {
+            memset(vector->data.U16, 0, vector->n * sizeof(psU16));
+        } else {
+            for (long iy = 0; iy < vector->n; iy++) {
+                vector->data.U16[iy] = vU16;
+            }
         }
         return (true);
     case PS_TYPE_U32:
         vU32 = va_arg (argp, psU32);
-        for (long iy = 0; iy < vector->n; iy++) {
-            vector->data.U32[iy] = vU32;
+        if (vU32 == 0) {
+            memset(vector->data.U32, 0, vector->n * sizeof(psU32));
+        } else {
+            for (long iy = 0; iy < vector->n; iy++) {
+                vector->data.U32[iy] = vU32;
+            }
         }
         return (true);
     case PS_TYPE_U64:
         vU64 = va_arg (argp, psU64);
-        for (long iy = 0; iy < vector->n; iy++) {
-            vector->data.U64[iy] = vU64;
+        if (vU64 == 0) {
+            memset(vector->data.U64, 0, vector->n * sizeof(psU64));
+        } else {
+            for (long iy = 0; iy < vector->n; iy++) {
+                vector->data.U64[iy] = vU64;
+            }
         }
         return (true);
@@ -719,7 +738,6 @@
             return false;
         }
-        for (long iy = 0; iy < vector->n; iy++) {
-            vector->data.S8[iy] = vS8;
-        }
+        // Can use memset for char-size values
+        memset(vector->data.S8, vS8, vector->n * sizeof(psS8));
         return (true);
     case PS_TYPE_S16:
@@ -731,30 +749,50 @@
             return false;
         }
-        for (long iy = 0; iy < vector->n; iy++) {
-            vector->data.S16[iy] = vS16;
+        if (vS16 == 0) {
+            memset(vector->data.S16, 0, vector->n * sizeof(psS16));
+        } else {
+            for (long iy = 0; iy < vector->n; iy++) {
+                vector->data.S16[iy] = vS16;
+            }
         }
         return (true);
     case PS_TYPE_S32:
         vS32 = va_arg (argp, psS32);
-        for (long iy = 0; iy < vector->n; iy++) {
-            vector->data.S32[iy] = vS32;
+        if (vS32 == 0) {
+            memset(vector->data.S32, 0, vector->n * sizeof(psS32));
+        } else {
+            for (long iy = 0; iy < vector->n; iy++) {
+                vector->data.S32[iy] = vS32;
+            }
         }
         return (true);
     case PS_TYPE_S64:
         vS64 = va_arg (argp, psS64);
-        for (long iy = 0; iy < vector->n; iy++) {
-            vector->data.S64[iy] = vS64;
+        if (vS64 == 0) {
+            memset(vector->data.S64, 0, vector->n * sizeof(psS64));
+        } else {
+            for (long iy = 0; iy < vector->n; iy++) {
+                vector->data.S64[iy] = vS64;
+            }
         }
         return (true);
     case PS_TYPE_C32:
         vC32 = va_arg (argp, psC32);
-        for (long iy = 0; iy < vector->n; iy++) {
-            vector->data.C32[iy] = vC32;
+        if (vC32 == 0) {
+            memset(vector->data.C32, 0, vector->n * sizeof(psC32));
+        } else {
+            for (long iy = 0; iy < vector->n; iy++) {
+                vector->data.C32[iy] = vC32;
+            }
         }
         return (true);
     case PS_TYPE_C64:
         vC64 = va_arg (argp, psC64);
-        for (long iy = 0; iy < vector->n; iy++) {
-            vector->data.C64[iy] = vC64;
+        if (vC64 == 0) {
+            memset(vector->data.C64, 0, vector->n * sizeof(psC64));
+        } else {
+            for (long iy = 0; iy < vector->n; iy++) {
+                vector->data.C64[iy] = vC64;
+            }
         }
         return (true);
