Index: Pi/C/Hybrid/Pi_Hybrid.c
===================================================================
--- Pi/C/Hybrid/Pi_Hybrid.c	(revision 78)
+++ Pi/C/Hybrid/Pi_Hybrid.c	(revision 79)
@@ -27,11 +27,13 @@
 #define CONG  (jcong=69069*jcong+1234567)
 #define KISS  ((MWC^CONG)+SHR3)
 
+#define ITERATIONS 1000000000
+
 #define MWCfp MWC * 2.328306435454494e-10f
 #define KISSfp KISS * 2.328306435454494e-10f
+#define SHR3fp SHR3 * 2.328306435454494e-10f
+#define CONGfp CONG * 2.328306435454494e-10f
 
-#define ITERATIONS 1000000000
-
 #define PROCESS 1
 
 #ifdef LONG
@@ -55,18 +57,89 @@
 
 LENGTH MainLoopGlobal(LENGTH iterations,unsigned int seed_w,unsigned int seed_z)
 {
+
+#if defined TCONG
+   unsigned int jcong=seed_z;
+#elif defined TSHR3
+   unsigned int jsr=seed_w;
+#elif defined TMWC
    unsigned int z=seed_z;
    unsigned int w=seed_w;
-
+#elif defined TKISS
+   unsigned int jcong=seed_z;
+   unsigned int jsr=seed_w;
+   unsigned int z=seed_z;
+   unsigned int w=seed_w;
+#endif
+   
    LENGTH total=0;
 
    for (LENGTH i=0;i<iterations;i++) {
 
-      float x=MWCfp ;
-      float y=MWCfp ;
+#if defined TINT32
+    #define THEONE 1073741824
+    #if defined TCONG
+        unsigned int x=CONG>>17 ;
+        unsigned int y=CONG>>17 ;
+    #elif defined TSHR3
+        unsigned int x=SHR3>>17 ;
+        unsigned int y=SHR3>>17 ;
+    #elif defined TMWC
+        unsigned int x=MWC>>17 ;
+        unsigned int y=MWC>>17 ;
+    #elif defined TKISS
+        unsigned int x=KISS>>17 ;
+        unsigned int y=KISS>>17 ;
+    #endif
+#elif defined TINT64
+    #define THEONE 4611686018427387904
+    #if defined TCONG
+        unsigned long x=(unsigned long)(CONG>>1) ;
+        unsigned long y=(unsigned long)(CONG>>1) ;
+    #elif defined TSHR3
+        unsigned long x=(unsigned long)(SHR3>>1) ;
+        unsigned long y=(unsigned long)(SHR3>>1) ;
+    #elif defined TMWC
+        unsigned long x=(unsigned long)(MWC>>1) ;
+        unsigned long y=(unsigned long)(MWC>>1) ;
+    #elif defined TKISS
+        unsigned long x=(unsigned long)(KISS>>1) ;
+        unsigned long y=(unsigned long)(KISS>>1) ;
+    #endif
+#elif defined TFP32
+    #define THEONE 1.0f
+    #if defined TCONG
+        float x=CONGfp ;
+        float y=CONGfp ;
+    #elif defined TSHR3
+        float x=SHR3fp ;
+        float y=SHR3fp ;
+    #elif defined TMWC
+        float x=MWCfp ;
+        float y=MWCfp ;
+    #elif defined TKISS
+      float x=KISSfp ;
+      float y=KISSfp ;
+    #endif
+#elif defined TFP64
+    #define THEONE 1.0f
+    #if defined TCONG
+        double x=(double)CONGfp ;
+        double y=(double)CONGfp ;
+    #elif defined TSHR3
+        double x=(double)SHR3fp ;
+        double y=(double)SHR3fp ;
+    #elif defined TMWC
+        double x=(double)MWCfp ;
+        double y=(double)MWCfp ;
+    #elif defined TKISS
+        double x=(double)KISSfp ;
+        double y=(double)KISSfp ;
+    #endif
+#endif
 
       // Matching test
-      int inside=((x*x+y*y) < 1.0f) ? 1:0;
+      unsigned long inside=((x*x+y*y) < THEONE) ? 1:0;
       total+=inside;
    }
 
Index: Pi/C/Hybrid/Makefile
===================================================================
--- Pi/C/Hybrid/Makefile	(revision 78)
+++ Pi/C/Hybrid/Makefile	(revision 79)
@@ -1,33 +1,20 @@
-EXECUTABLE=Pi_Hybrid_LONG Pi_Hybrid_INT Pi_Hybrid_LONG_TIME Pi_Hybrid_INT_TIME
+COMPUTING=INT32 INT64 FP32 FP64
 
+MARSAGLIA=SHR3 CONG MWC KISS
+
 SOURCE=Pi_Hybrid.c
 
 CC=mpicc.openmpi
 CFLAGS=-Wall -O3 -std=c99 -fopenmp 
 LIBRARY=-lm
 
-all: $(EXECUTABLE)
+all: $(SOURCE)
+	$(foreach TVAR,$(COMPUTING),$(foreach TRND,$(MARSAGLIA),$(CC) $(CFLAGS) -DT$(TVAR) -DT$(TRND) -DLONG -DTIME -o $(<:.c=)_$(TVAR)_$(TRND) $< $(LIBRARY); ) )
 
-Pi_Hybrid_LONG_TIME: $(SOURCE)
-
-	$(CC) $(CFLAGS) $(DIRECTIVES) -DLONG -DTIME -o $@ $< $(LIBRARY)
-
-Pi_Hybrid_INT_TIME: $(SOURCE)
-
-	$(CC) $(CFLAGS) $(DIRECTIVES) -DINTEGER -DTIME -o $@ $< $(LIBRARY)
-
-Pi_Hybrid_LONG: $(SOURCE)
-
-	$(CC) $(CFLAGS) $(DIRECTIVES) -DLONG -o $@ $< $(LIBRARY)
-
-Pi_Hybrid_INT: $(SOURCE)
-
-	$(CC) $(CFLAGS) $(DIRECTIVES) -DINTEGER -o $@ $< $(LIBRARY)
-
 .PHONY: clean check mrproper
 
-mrproper: 
-	rm -rf $(EXECUTABLE)
+mrproper: $(SOURCE)
+	rm -rf $(foreach TVAR,$(TVARS),$(foreach TRND,$(MARSAGLIA),$(<:.c=)_$(TVAR)_$(TRND) ) )
 	find . -name "*~" -exec rm {} \;
 
 clean:
