Index: /issm/trunk-jpl/src/c/shared/Numerics/cubic.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Numerics/cubic.cpp	(revision 13062)
+++ /issm/trunk-jpl/src/c/shared/Numerics/cubic.cpp	(revision 13063)
@@ -1,4 +1,20 @@
 #include <math.h>
 #include "./numerics.h"
+
+IssmDouble CBRT(IssmDouble Z){
+
+	IssmDouble ret;
+
+	if (Z> 0.0){
+		ret = fabs(pow(fabs(Z),1./3.));
+	}
+	else if(Z< 0.0){
+		ret = - fabs(pow(fabs(Z),1./3.));
+	}
+	else{
+		ret = 0.;
+	}
+	return ret;
+}
 
 int cubic(IssmDouble a,IssmDouble b,IssmDouble c,IssmDouble d, IssmDouble x[3], int* num){
@@ -38,5 +54,5 @@
 			// only one real solution!
 			delta = sqrt(delta);
-			x[0] = pow(Q+delta,third)+pow(Q-delta,third)-W;
+			x[0] = CBRT(Q+delta)+CBRT(Q-delta)-W;
 			*num=1;
 		}
