Index: trunk/psLib/src/math/psUnaryOp.c
===================================================================
--- trunk/psLib/src/math/psUnaryOp.c	(revision 9552)
+++ trunk/psLib/src/math/psUnaryOp.c	(revision 10246)
@@ -16,4 +16,5 @@
  *      Power of 10 (ten)
  *      Log (log)
+ *      Square root (sqrt)
  *      Sine (sin or dsin)
  *      Cosine (cos or dcos)
@@ -30,6 +31,6 @@
  *  @author Robert DeSonia, MHPCC
  *
- *  @version $Revision: 1.11 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-10-14 00:02:31 $
+ *  @version $Revision: 1.12 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-11-29 00:49:21 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -170,107 +171,109 @@
 if(!strncmp(OP, "abs", 3)) { \
     if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,cabs(*i1)); \
-    } else { \
-        UNARY_TYPE(DIM,OUT,IN,fabs(*i1)); \
+        UNARY_TYPE(DIM,OUT,IN,cabs((double complex)*i1)); \
+    } else { \
+        UNARY_TYPE(DIM,OUT,IN,fabs((double)*i1)); \
+    } \
+} else if(!strncmp(OP, "sqrt", 4)) { \
+    if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \
+        UNARY_TYPE(DIM,OUT,IN,csqrt((double complex)*i1)); \
+    } else { \
+        UNARY_TYPE(DIM,OUT,IN,sqrt((double)*i1)); \
     } \
 } else if(!strncmp(OP, "exp", 3)) { \
     if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,cexp(*i1)); \
-    } else { \
-        UNARY_TYPE(DIM,OUT,IN,exp(*i1)); \
+        UNARY_TYPE(DIM,OUT,IN,cexp((double complex)*i1)); \
+    } else { \
+        UNARY_TYPE(DIM,OUT,IN,exp((double)*i1)); \
     } \
 } else if(!strncmp(OP, "ln", 2)) { \
     if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,clog(*i1)); \
-    } else { \
-        UNARY_TYPE(DIM,OUT,IN,log(*i1)); \
+        UNARY_TYPE(DIM,OUT,IN,clog((double complex)*i1)); \
+    } else { \
+        UNARY_TYPE(DIM,OUT,IN,log((double)*i1)); \
     } \
 } else if(!strncmp(OP, "ten", 3)) { \
     if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,cpow(10.0,*i1)); \
-    } else { \
-        UNARY_TYPE(DIM,OUT,IN,pow(10.0,*i1)); \
+        UNARY_TYPE(DIM,OUT,IN,cpow(10.0,(double complex)*i1)); \
+    } else { \
+        UNARY_TYPE(DIM,OUT,IN,pow(10.0,(double)*i1)); \
     } \
 } else if(!strncmp(OP, "log", 3)) { \
     if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,clog(*i1)/log(10.0)); \
-    } else { \
-        UNARY_TYPE(DIM,OUT,IN,log10(*i1)); \
+        UNARY_TYPE(DIM,OUT,IN,clog((double complex)*i1)/log(10.0)); \
+    } else { \
+        UNARY_TYPE(DIM,OUT,IN,log10((double)*i1)); \
     } \
 } else if(!strncmp(OP, "sin", 3)) { \
     if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,csin(*i1)); \
-    } else { \
-        UNARY_TYPE(DIM,OUT,IN,sin(*i1)); \
+        UNARY_TYPE(DIM,OUT,IN,csin((double complex)*i1)); \
+    } else { \
+        UNARY_TYPE(DIM,OUT,IN,sin((double)*i1)); \
     } \
 } else if(!strncmp(OP, "dsin", 4)) { \
     if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,csin(*i1*D2R)); \
-    } else { \
-        UNARY_TYPE(DIM,OUT,IN,sin(*i1*D2R)); \
+        UNARY_TYPE(DIM,OUT,IN,csin((double complex)*i1*D2R)); \
+    } else { \
+        UNARY_TYPE(DIM,OUT,IN,sin((double)*i1*D2R)); \
     } \
 } else if(!strncmp(OP, "cos", 3)) { \
     if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,ccos(*i1)); \
-    } else { \
-        UNARY_TYPE(DIM,OUT,IN,cos(*i1)); \
+        UNARY_TYPE(DIM,OUT,IN,ccos((double complex)*i1)); \
+    } else { \
+        UNARY_TYPE(DIM,OUT,IN,cos((double)*i1)); \
     } \
 } else if(!strncmp(OP, "dcos", 4)) { \
     if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,ccos(*i1*D2R)); \
-    } else { \
-        UNARY_TYPE(DIM,OUT,IN,cos(*i1*D2R)); \
+        UNARY_TYPE(DIM,OUT,IN,ccos((double complex)*i1*D2R)); \
+    } else { \
+        UNARY_TYPE(DIM,OUT,IN,cos((double)*i1*D2R)); \
     } \
 } else if(!strncmp(OP, "tan", 3)) { \
     if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,ctan(*i1)); \
-    } else { \
-        UNARY_TYPE(DIM,OUT,IN,tan(*i1)); \
+        UNARY_TYPE(DIM,OUT,IN,ctan((double complex)*i1)); \
+    } else { \
+        UNARY_TYPE(DIM,OUT,IN,tan((double)*i1)); \
     } \
 } else if(!strncmp(OP, "dtan", 4)) { \
     if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,ctan(*i1*D2R)); \
-    } else { \
-        UNARY_TYPE(DIM,OUT,IN,tan(*i1*D2R)); \
+        UNARY_TYPE(DIM,OUT,IN,ctan((double complex)*i1*D2R)); \
+    } else { \
+        UNARY_TYPE(DIM,OUT,IN,tan((double)*i1*D2R)); \
     } \
 } else if(!strncmp(OP, "asin", 4)) { \
     if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,casin(*i1)); \
-    } else { \
-        UNARY_TYPE(DIM,OUT,IN,asin(*i1)); \
+        UNARY_TYPE(DIM,OUT,IN,casin((double complex)*i1)); \
+    } else { \
+        UNARY_TYPE(DIM,OUT,IN,asin((double)*i1)); \
     } \
 } else if(!strncmp(OP, "dasin", 5)) { \
     if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,R2D*casin(*i1)); \
-    } else if(PS_IS_PSELEMTYPE_INT(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,(R2D*asin(*i1))); \
-    } else { \
-        UNARY_TYPE(DIM,OUT,IN,(R2D*asin(*i1))); \
+        UNARY_TYPE(DIM,OUT,IN,R2D*casin((double complex)*i1)); \
+    } else { \
+        UNARY_TYPE(DIM,OUT,IN,(R2D*asin((double)*i1))); \
     } \
 } else if(!strncmp(OP, "acos", 4)) { \
     if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,cacos(*i1)); \
-    } else { \
-        UNARY_TYPE(DIM,OUT,IN,acos(*i1)); \
+        UNARY_TYPE(DIM,OUT,IN,cacos((double complex)*i1)); \
+    } else { \
+        UNARY_TYPE(DIM,OUT,IN,acos((double)*i1)); \
     } \
 } else if(!strncmp(OP, "dacos", 5)) { \
     if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,R2D*cacos(*i1)); \
-    } else if(PS_IS_PSELEMTYPE_INT(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,(R2D*acos(*i1))); \
-    } else { \
-        UNARY_TYPE(DIM,OUT,IN,R2D*acos(*i1)); \
+        UNARY_TYPE(DIM,OUT,IN,R2D*cacos((double complex)*i1)); \
+    } else { \
+        UNARY_TYPE(DIM,OUT,IN,R2D*acos((double)*i1)); \
     } \
 } else if(!strncmp(OP, "atan", 4)) { \
     if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,catan(*i1)); \
-    } else { \
-        UNARY_TYPE(DIM,OUT,IN,atan(*i1)); \
+        UNARY_TYPE(DIM,OUT,IN,catan((double complex)*i1)); \
+    } else { \
+        UNARY_TYPE(DIM,OUT,IN,atan((double)*i1)); \
     } \
 } else if(!strncmp(OP, "datan", 5)) { \
     if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \
-        UNARY_TYPE(DIM,OUT,IN,R2D*catan(*i1)); \
-    } else { \
-        UNARY_TYPE(DIM,OUT,IN,R2D*atan(*i1)); \
+        UNARY_TYPE(DIM,OUT,IN,R2D*catan((double complex)*i1)); \
+    } else { \
+        UNARY_TYPE(DIM,OUT,IN,R2D*atan((double)*i1)); \
     } \
 } else { \
