Index: /issm/trunk/src/c/Bamgx/BamgObjects.h
===================================================================
--- /issm/trunk/src/c/Bamgx/BamgObjects.h	(revision 3241)
+++ /issm/trunk/src/c/Bamgx/BamgObjects.h	(revision 3242)
@@ -49,7 +49,7 @@
 	inline void Adj(GeometricalEdge * & on,int &i) 
 	  {int j=i;i=on->DirAdj[i];on=on->Adj[j];}
-	inline Real4 qualite(const Vertex &va,const Vertex &vb,const Vertex &vc)
-	  {
-		Real4 ret; 
+	inline double qualite(const Vertex &va,const Vertex &vb,const Vertex &vc)
+	  {
+		double ret; 
 		I2 ia=va,ib=vb,ic=vc;
 		I2 ab=ib-ia,bc=ic-ib,ac=ic-ia;
@@ -204,5 +204,5 @@
 			link=NULL;};  
 	}
-	inline    Real4 Triangle::qualite()
+	inline    double Triangle::qualite()
 	  {
 		return det < 0 ? -1 :  bamg::qualite(*TriaVertices[0],*TriaVertices[1],*TriaVertices[2]);
@@ -338,6 +338,6 @@
 	TriangleAdjacent CloseBoundaryEdge(I2 ,Triangle *, double &,double &) ;
 	TriangleAdjacent CloseBoundaryEdgeV2(I2 A,Triangle *t, double &a,double &b);
-	void  swap(Triangle *t1,Int1 a1,
-				Triangle *t2,Int1 a2,
+	void  swap(Triangle *t1,short a1,
+				Triangle *t2,short a2,
 				Vertex *s1,Vertex *s2,Icoor2 det1,Icoor2 det2);
 	int SwapForForcingEdge(Vertex   *  & pva ,Vertex  * &   pvb ,
Index: /issm/trunk/src/c/Bamgx/Bamgx.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/Bamgx.cpp	(revision 3241)
+++ /issm/trunk/src/c/Bamgx/Bamgx.cpp	(revision 3242)
@@ -135,5 +135,5 @@
 				for (i=0;i<BTh.nbv;i++){
 					if (!isnan(bamgmesh_in->hVertices[i])){
-						BTh[i].m=Metric((Real4)bamgmesh_in->hVertices[i]);
+						BTh[i].m=Metric((float)bamgmesh_in->hVertices[i]);
 					}
 				}
Index: /issm/trunk/src/c/Bamgx/meshtype.h
===================================================================
--- /issm/trunk/src/c/Bamgx/meshtype.h	(revision 3241)
+++ /issm/trunk/src/c/Bamgx/meshtype.h	(revision 3242)
@@ -17,8 +17,5 @@
 
 	//typedefs
-	typedef float  Real4;
 	typedef double Real8;
-	typedef short  Int1;
-	typedef short  Int2;
 	typedef long   Int4;
 	typedef int  Icoor1;  
@@ -29,7 +26,7 @@
 #endif
 	typedef P2<Icoor1,Icoor2> I2;
-	typedef P2xP2<Int2,Int4>  I2xI2;
+	typedef P2xP2<short,Int4>  I2xI2;
 	typedef P2<Real8,Real8>   R2;
-	typedef P2<Real4,Real8>   R2xR2;
+	typedef P2<double,Real8>   R2xR2;
 
 	//Some parameters
@@ -39,12 +36,12 @@
 	const  int    IsVertexOnVertex = 16;
 	const  int    IsVertexOnEdge = 32;
-	static const  Int2 VerticesOfTriangularEdge[3][2] = {{1,2},{2,0},{0,1}};
-	static const  Int2 EdgesVertexTriangle[3][2] = {{1,2},{2,0},{0,1}};
-	static const  Int2 OppositeVertex[3] = {0,1,2};
-	static const  Int2 OppositeEdge[3] =  {0,1,2};
-	static const  Int2 NextEdge[3] = {1,2,0};
-	static const  Int2 PreviousEdge[3] = {2,0,1};
-	static const  Int2 NextVertex[3] = {1,2,0};
-	static const  Int2 PreviousVertex[3] = {2,0,1};
+	static const  short VerticesOfTriangularEdge[3][2] = {{1,2},{2,0},{0,1}};
+	static const  short EdgesVertexTriangle[3][2] = {{1,2},{2,0},{0,1}};
+	static const  short OppositeVertex[3] = {0,1,2};
+	static const  short OppositeEdge[3] =  {0,1,2};
+	static const  short NextEdge[3] = {1,2,0};
+	static const  short PreviousEdge[3] = {2,0,1};
+	static const  short NextVertex[3] = {1,2,0};
+	static const  short PreviousVertex[3] = {2,0,1};
 #if LONG_BIT > 63
 	const  Icoor1 MaxICoor   = 1073741823; // 2^30-1 =111...111 (29 times)
@@ -129,8 +126,10 @@
 	inline int BinaryRand(){
 #ifdef RAND_MAX
+		/*RAND_MAX is defined by stdlib.h and is usually 32767*/
 		const long HalfRandMax = RAND_MAX/2;
 		return rand() < HalfRandMax;
 #else
-		return rand() & 16384; //2^14 (for sun because RAND_MAX is not def in stdlib.h)
+		/*For sun machines, RAND_MAX is not defined, use 2^24*/
+		return rand() & 16384;
 #endif
 	} 
Index: /issm/trunk/src/c/Bamgx/objects/Geometry.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/Geometry.cpp	(revision 3241)
+++ /issm/trunk/src/c/Bamgx/objects/Geometry.cpp	(revision 3242)
@@ -282,5 +282,5 @@
 		if (bamggeom->Edges){
 			R2     zero2(0,0);
-			Real4* len=NULL;
+			double* len=NULL;
 
 			if(verbose>5) printf("      processing Edges\n");
@@ -289,5 +289,5 @@
 			//if hvertices==0, initialize len (length of each edge)
 			if (!hvertices) {
-				len = new Real4[nbv];
+				len = new double[nbv];
 				for(i=0;i<nbv;i++) len[i]=0;
 			}
@@ -325,5 +325,5 @@
 				for (i=0;i<nbv;i++) 
 				 if (vertices[i].color > 0) 
-				  vertices[i].m=Metric(len[i] /(Real4) vertices[i].color);
+				  vertices[i].m=Metric(len[i] /(double) vertices[i].color);
 				 else 
 				  vertices[i].m=Metric(Hmin);
@@ -350,5 +350,5 @@
 			if(verbose>5) printf("      processing hVertices\n");
 			for (i=0;i< nbv;i++){
-				vertices[i].m=Metric((Real4)bamggeom->hVertices[i]);
+				vertices[i].m=Metric((double)bamggeom->hVertices[i]);
 			}
 		}
@@ -362,5 +362,5 @@
 			hvertices=1;
 			for (i=0;i< nbv;i++) {
-				vertices[i].m = Metric((Real4)bamggeom->MetricVertices[i*3+0],(Real4)bamggeom->MetricVertices[i*3+1],(Real4)bamggeom->MetricVertices[i*3+2]);
+				vertices[i].m = Metric((double)bamggeom->MetricVertices[i*3+0],(double)bamggeom->MetricVertices[i*3+1],(double)bamggeom->MetricVertices[i*3+2]);
 			}
 		}
@@ -372,11 +372,11 @@
 		if(bamggeom->h1h2VpVertices){
 			if(verbose>5) printf("      processing h1h2VpVertices\n");
-			Real4 h1,h2,v1,v2;
+			double h1,h2,v1,v2;
 			hvertices =1;
 			for (i=0;i< nbv;i++) {
-				h1=(Real4)bamggeom->MetricVertices[i*4+0];
-				h2=(Real4)bamggeom->MetricVertices[i*4+1];
-				v1=(Real4)bamggeom->MetricVertices[i*4+2];
-				v2=(Real4)bamggeom->MetricVertices[i*4+3];
+				h1=(double)bamggeom->MetricVertices[i*4+0];
+				h2=(double)bamggeom->MetricVertices[i*4+1];
+				v1=(double)bamggeom->MetricVertices[i*4+2];
+				v2=(double)bamggeom->MetricVertices[i*4+3];
 				vertices[i].m = Metric(MatVVP2x2(1/(h1*h1),1/(h2*h2),D2(v1,v2)));
 			}
Index: /issm/trunk/src/c/Bamgx/objects/ListofIntersectionTriangles.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/ListofIntersectionTriangles.cpp	(revision 3241)
+++ /issm/trunk/src/c/Bamgx/objects/ListofIntersectionTriangles.cpp	(revision 3242)
@@ -197,5 +197,5 @@
 							deti = dt[i];
 							detj = dt[j];
-							Real4 dij = detj-deti;
+							double dij = detj-deti;
 							ba[i] =  detj/dij;
 							ba[j] = -deti/dij;
Index: /issm/trunk/src/c/Bamgx/objects/Metric.h
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/Metric.h	(revision 3241)
+++ /issm/trunk/src/c/Bamgx/objects/Metric.h	(revision 3242)
@@ -39,5 +39,5 @@
 			R2    Orthogonal(const I2 x){return R2(-(a21*x.x+a22*x.y),a11*x.x+a21*x.y);}
 			int   IntersectWith(const Metric M2);
-			inline void Box(Real4 &hx,Real4 &hy) const ;  
+			inline void Box(double &hx,double &hy) const ;  
 			//operators
 			Metric operator*(Real8 c) const {Real8 c2=c*c;return  Metric(a11*c2,a21*c2,a22*c2);} 
@@ -116,5 +116,5 @@
 		a22=v00*M.lambda2+v11*M.lambda1;
 	}
-	inline   void  Metric::Box(Real4 &hx,Real4 &hy) const {
+	inline   void  Metric::Box(double &hx,double &hy) const {
 		Real8 d=  a11*a22-a21*a21;
 		hx = sqrt(a22/d);
Index: /issm/trunk/src/c/Bamgx/objects/Triangle.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/Triangle.cpp	(revision 3241)
+++ /issm/trunk/src/c/Bamgx/objects/Triangle.cpp	(revision 3242)
@@ -92,5 +92,5 @@
 	/*}}}*/
 	/*FUNCTION Triangle::Optim{{{1*/
-	Int4  Triangle::Optim(Int2 i,int koption) {
+	Int4  Triangle::Optim(short i,int koption) {
 		// turn around (positive direction)
 		Triangle *t=this;
@@ -123,9 +123,9 @@
 	/*}}}1*/
 	/*FUNCTION Triangle::swap{{{1*/
-	int Triangle::swap(Int2 a,int koption){
+	int Triangle::swap(short a,int koption){
 		if(a/4 !=0) return 0;// arete lock or MarkUnSwap
 
 		register Triangle *t1=this,*t2=TriaAdjTriangles[a];// les 2 triangles adjacent
-		register Int1 a1=a,a2=TriaAdjSharedEdge[a];// les 2 numero de l arete dans les 2 triangles
+		register short a1=a,a2=TriaAdjSharedEdge[a];// les 2 numero de l arete dans les 2 triangles
 		if(a2/4 !=0) return 0; // arete lock or MarkUnSwap
 
Index: /issm/trunk/src/c/Bamgx/objects/Triangle.h
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/Triangle.h	(revision 3241)
+++ /issm/trunk/src/c/Bamgx/objects/Triangle.h	(revision 3242)
@@ -23,5 +23,5 @@
 			Vertex*   TriaVertices[3];      // 3 vertices if t is triangle, t[i] allowed by access function, (*t)[i] if pointer
 			Triangle* TriaAdjTriangles[3];  // 3 pointers toward the adjacent triangles
-			Int1      TriaAdjSharedEdge[3]; // number of the edges in the adjacent triangles the edge number 1 is the edge number TriaAdjSharedEdge[1] in the Adjacent triangle 1
+			short     TriaAdjSharedEdge[3]; // number of the edges in the adjacent triangles the edge number 1 is the edge number TriaAdjSharedEdge[1] in the Adjacent triangle 1
 
 		public: 
@@ -45,6 +45,6 @@
 			//Methods
 			void   Echo();
-			int    swap(Int2 a1,int=0);
-			Int4   Optim(Int2 a,int =0);
+			int    swap(short a1,int=0);
+			Int4   Optim(short a,int =0);
 			int    Locked(int a)const { return TriaAdjSharedEdge[a]&4;} 
 			int    Hidden(int a)const { return TriaAdjSharedEdge[a]&16;} 
@@ -53,5 +53,5 @@
 			void   SetAllFlag(int a,int f){TriaAdjSharedEdge[a] = (TriaAdjSharedEdge[a] &3) + (1020 & f);}
 			double QualityQuad(int a,int option=1) const;
-			Int1   NuEdgeTriangleAdj(int i) const {return TriaAdjSharedEdge[i&3]&3;} // Number of the  adjacent edge in adj tria  
+			short  NuEdgeTriangleAdj(int i) const {return TriaAdjSharedEdge[i&3]&3;} // Number of the  adjacent edge in adj tria  
 			TriangleAdjacent FindBoundaryEdge(int i) const;
 			TriangleAdjacent Adj(int i)  const {return TriangleAdjacent(TriaAdjTriangles[i],TriaAdjSharedEdge[i]&3);};
@@ -69,14 +69,14 @@
 				if (TriaVertices[2] >=vb && TriaVertices[2] <ve) TriaVertices[2] = vb + renu[TriaVertices[2]-vb];    
 			}
-			void SetAdjAdj(Int1 a){
+			void SetAdjAdj(short a){
 				a &= 3;
 				register Triangle *tt=TriaAdjTriangles[a];
 				TriaAdjSharedEdge [a] &= 55; // remove MarkUnSwap
-				register Int1 aatt = TriaAdjSharedEdge[a] & 3;
+				register short aatt = TriaAdjSharedEdge[a] & 3;
 				if(tt){ 
 					tt->TriaAdjTriangles[aatt]=this;
 					tt->TriaAdjSharedEdge[aatt]=a + (TriaAdjSharedEdge[a] & 60 ) ;}// Copy all the mark 
 			  }
-			void SetAdj2(Int1 a,Triangle *t,Int1 aat){
+			void SetAdj2(short a,Triangle *t,short aat){
 				TriaAdjTriangles[a]=t;   //the adjacent triangle to the edge a is t
 				TriaAdjSharedEdge[a]=aat; //position of the edge in the adjacent triangle
@@ -126,5 +126,5 @@
 
 			//Inline methods
-			inline Real4 qualite() ;
+			inline double qualite() ;
 			inline void  Set(const Triangle &,const Triangles &,Triangles &);
 			inline int   In(Vertex *v) const { return TriaVertices[0]==v || TriaVertices[1]==v || TriaVertices[2]==v ;}
Index: /issm/trunk/src/c/Bamgx/objects/Triangles.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/Triangles.cpp	(revision 3241)
+++ /issm/trunk/src/c/Bamgx/objects/Triangles.cpp	(revision 3242)
@@ -369,5 +369,5 @@
 			for (i=0;i< nbv;i++){
 				if (!isnan(bamgmesh->hVertices[i])){
-					vertices[i].m=Metric((Real4)bamgmesh->hVertices[i]);
+					vertices[i].m=Metric((double)bamgmesh->hVertices[i]);
 				}
 			}
@@ -399,5 +399,5 @@
 			int i1,i2;
 			R2 zero2(0,0);
-			Real4 *len =0;
+			double *len =0;
 
 			if(verbose>5) printf("      processing Edges\n");
@@ -406,5 +406,5 @@
 
 			if (!hvertices) {
-				len = new Real4[nbv];
+				len = new double[nbv];
 				for(i=0;i<nbv;i++)
 				 len[i]=0;
@@ -434,5 +434,5 @@
 				for (i=0;i<nbv;i++) 
 				 if (vertices[i].color > 0) 
-				  vertices[i].m=  Metric(len[i] /(Real4) vertices[i].color);
+				  vertices[i].m=  Metric(len[i] /(double) vertices[i].color);
 				 else 
 				  vertices[i].m=  Metric(Hmin);
@@ -1467,5 +1467,5 @@
 
 		//initialize len as 0
-		Real4 * len = new Real4[Gh.nbv];
+		double * len = new double[Gh.nbv];
 		for(i=0;i<Gh.nbv;i++) len[i]=0;
 
@@ -1519,5 +1519,5 @@
 		for (i=0;i<Gh.nbv;i++){
 		 if (Gh.vertices[i].color > 0) 
-		  Gh.vertices[i].m=  Metric(len[i] /(Real4) Gh.vertices[i].color);
+		  Gh.vertices[i].m=  Metric(len[i] /(double) Gh.vertices[i].color);
 		 else 
 		  Gh.vertices[i].m=  Metric(hmin);
@@ -3715,5 +3715,5 @@
 			vi.i=toI2(vi.r);
 			vi.r=toR2(vi.i);
-			Real4 hx,hy;
+			double hx,hy;
 			vi.m.Box(hx,hy);
 			Icoor1 hi=(Icoor1) (hx*coefIcoor),hj=(Icoor1) (hy*coefIcoor);
@@ -5361,7 +5361,7 @@
 	/*Intermediary*/
 	/*FUNCTION swap{{{1*/
-	void  swap(Triangle *t1,Int1 a1, Triangle *t2,Int1 a2, Vertex *s1,Vertex *s2,Icoor2 det1,Icoor2 det2){ 
+	void  swap(Triangle *t1,short a1, Triangle *t2,short a2, Vertex *s1,Vertex *s2,Icoor2 det1,Icoor2 det2){ 
 		// --------------------------------------------------------------
-		// Int1 a2=aa[a];// les 2 numero de l arete dans les 2 triangles
+		// short a2=aa[a];// les 2 numero de l arete dans les 2 triangles
 		//                               
 		//               sb                     sb    
@@ -5631,5 +5631,5 @@
 		TriangleAdjacent tt2 = Adj(tt1);
 		Triangle *t1=tt1,*t2=tt2;// les 2 triangles adjacent
-		Int1 a1=tt1,a2=tt2;// les 2 numero de l arete dans les 2 triangles
+		short a1=tt1,a2=tt2;// les 2 numero de l arete dans les 2 triangles
 		if ( a1<0 || a1>=3 ){
 			throw ErrorException(__FUNCT__,exprintf("a1<0 || a1>=3"));
Index: /issm/trunk/src/c/Bamgx/objects/Vertex.h
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/Vertex.h	(revision 3241)
+++ /issm/trunk/src/c/Bamgx/objects/Vertex.h	(revision 3242)
@@ -27,5 +27,5 @@
 			Int4 ReferenceNumber;
 			Direction DirOfSearch;
-			Int1 vint;  // the vertex number in triangle; varies between 0 and 2 in t
+			short vint;  // the vertex number in triangle; varies between 0 and 2 in t
 			union {
 				Triangle* t; // one triangle which is containing the vertex
