Index: src/examples/abs.c
===================================================================
--- src/examples/abs.c	(revision d3b7937ae7ab8afece0824b5729b7e86a9f0bd63)
+++ src/examples/abs.c	(revision 5721a6da612c3a9661eb16d198fe90326b196c40)
@@ -10,11 +10,8 @@
 // Created On       : Thu Jan 28 18:26:16 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jan 29 15:44:41 2016
-// Update Count     : 20
+// Last Modified On : Sun Jan 31 09:24:45 2016
+// Update Count     : 41
 //
 
-extern "C" {
-#include <complex.h>
-} // extern
 #include <fstream>
 #include <algorithm>
@@ -24,5 +21,5 @@
 
 	char ch = -65;
-	sout | "char\t\t\t"					| -65    | "\tabs " | abs( ch ) | endl;
+	sout | "char\t\t\t"					| ch     | "\tabs " | abs( ch ) | endl;
 	sout | "signed int\t\t"				| -65    | "\tabs " | abs( -65 ) | endl;
 	sout | "signed long int\t\t" 		| -65l   | "\tabs " | abs( -65l ) | endl;
@@ -31,6 +28,7 @@
 	sout | "double\t\t\t"				| -65.0  | "\tabs " | abs( -65.0 ) | endl;
 	sout | "long double\t\t"			| -65.0l | "\tabs " | abs( -65.0l ) | endl;
-	double _Complex c = -65.0+2.0 * I;
-	sout | "double _Complex\t\t"		| c | "\tabs " | abs( c ) | endl;
+	sout | "float _Complex\t\t"			| -65.0F-2.0iF | "\tabs " | abs( -65.0F-2.0iF ) | endl;
+	sout | "double _Complex\t\t"		| -65.0D-2.0iD | "\tabs " | abs( -65.0D-2.0iD ) | endl;
+	sout | "long double _Complex\t"		| -65.0L-2.0iL | "\tabs " | abs( -65.0L-2.0iL ) | endl;
 } // main
 
Index: src/examples/minmax.c
===================================================================
--- src/examples/minmax.c	(revision d3b7937ae7ab8afece0824b5729b7e86a9f0bd63)
+++ src/examples/minmax.c	(revision 5721a6da612c3a9661eb16d198fe90326b196c40)
@@ -5,11 +5,11 @@
 // file "LICENCE" distributed with Cforall.
 //
-// min.c -- 
+// minmax.c -- 
 //
 // Author           : Richard C. Bilson
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jan 28 22:15:14 2016
-// Update Count     : 42
+// Last Modified On : Mon Feb  1 11:35:53 2016
+// Update Count     : 44
 //
 
@@ -33,5 +33,7 @@
 	sout | "double\t\t\t"				| 4.0 | ' ' | 3.1 | "\tmin " | min( 4.0, 3.1 ) | endl;
 	sout | "long double\t\t"			| 4.0l | ' ' | 3.1l | "\tmin " | min( 4.0l, 3.1l ) | endl;
+
 	sout | endl;
+
 	sout | "char\t\t\t"					| 'z' | ' ' | 'a' | "\tmax " | max( 'z', 'a' ) | endl;
 	sout | "signed int\t\t"				| 4 | ' ' | 3 | "\tmax " | max( 4, 3 ) | endl;
Index: src/examples/random.c
===================================================================
--- src/examples/random.c	(revision 5721a6da612c3a9661eb16d198fe90326b196c40)
+++ src/examples/random.c	(revision 5721a6da612c3a9661eb16d198fe90326b196c40)
@@ -0,0 +1,39 @@
+extern "C" {
+#include <unistd.h>										// getpid
+} // extern "C"
+
+#include <fstream>
+#include <algorithm>									// random
+
+int main() {
+	ofstream *sout = ofstream_stdout();
+
+	randseed( getpid() );								// set random seed
+
+	// test polymorphic calls to random and stream
+	char c = random();
+	sout | c | endl;
+	int i = random();
+    sout | i | endl;
+	unsigned int ui = random();
+    sout | ui | endl;
+	long int li = random();
+    sout | li | endl;
+	unsigned long int uli = random();
+    sout | uli | endl;
+    float f = random();
+    sout | f | endl;
+    double d = random();
+    sout | d | endl;
+    float _Complex fc = random();
+    sout | fc | endl;
+    double _Complex dc = random();
+    sout | dc | endl;
+    long double _Complex ldc = random();
+    sout | ldc | endl;
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa random.c" //
+// End: //
Index: src/examples/swap.c
===================================================================
--- src/examples/swap.c	(revision d3b7937ae7ab8afece0824b5729b7e86a9f0bd63)
+++ src/examples/swap.c	(revision 5721a6da612c3a9661eb16d198fe90326b196c40)
@@ -10,24 +10,85 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jan 26 16:49:41 2016
-// Update Count     : 7
+// Last Modified On : Mon Feb  1 12:30:15 2016
+// Update Count     : 61
 //
 
 #include <fstream>
-
-forall( type T )
-void swap( T *left, T *right ) {
-	T temp = *left;
-	*left = *right;
-	*right = temp;
-}
+#include <algorithm>
 
 int main( void ) {
-	int x = 1, y = 2;
 	ofstream *sout = ofstream_stdout();
-	sout | x | ' ' | y | endl;
-	swap( &x, &y );
-	sout | x | ' ' | y | endl;
-}
+
+	char c1 = 'a', c2 = 'b';
+	sout | "char\t\t\t" | c1 | ' ' | c2 | "\t\t\tswap ";
+	swap( &c1, &c2 );
+	sout | '\t' | c1 | ' ' | c2 | endl;
+
+	signed int i1 = -1, i2 = -2;
+	sout | "signed int\t\t" | i1 | ' ' | i2 | "\t\t\tswap ";
+	swap( &i1, &i2 );
+	sout | '\t' | i1 | ' ' | i2 | endl;
+
+	unsigned int ui1 = 1, ui2 = 2;
+	sout | "unsigned int\t\t" | ui1 | ' ' | ui2 | "\t\t\tswap ";
+	swap( &ui1, &ui2 );
+	sout | '\t' | ui1 | ' ' | ui2 | endl;
+
+	signed long int li1 = -1, li2 = -2;
+	sout | "signed long int\t\t" | li1 | ' ' | li2 | "\t\t\tswap ";
+	swap( &li1, &li2 );
+	sout | '\t' | li1 | ' ' | li2 | endl;
+
+	unsigned long int uli1 = 1, uli2 = 2;
+	sout | "unsigned long int\t" | uli1 | ' ' | uli2 | "\t\t\tswap ";
+	swap( &uli1, &uli2 );
+	sout | '\t' | uli1 | ' ' | uli2 | endl;
+
+	signed long long int lli1 = -1, lli2 = -2;
+	sout | "signed long long int\t" | lli1 | ' ' | lli2 | "\t\t\tswap ";
+	swap( &lli1, &lli2 );
+	sout | '\t' | lli1 | ' ' | lli2 | endl;
+
+	unsigned long long int ulli1 = 1, ulli2 = 2;
+	sout | "unsigned long long int\t" | ulli1 | ' ' | ulli2 | "\t\t\tswap ";
+	swap( &ulli1, &ulli2 );
+	sout | '\t' | ulli1 | ' ' | ulli2 | endl;
+
+	float f1 = 1.5, f2 = 2.5;
+	sout | "float\t\t\t" | f1 | ' ' | f2 | "\t\t\tswap ";
+	swap( &f1, &f2 );
+	sout | '\t' | f1 | ' ' | f2 | endl;
+
+	double d1 = 1.5, d2 = 2.5;
+	sout | "double\t\t\t" | d1 | ' ' | d2 | "\t\t\tswap ";
+	swap( &d1, &d2 );
+	sout | '\t' | d1 | ' ' | d2 | endl;
+
+	long double ld1 = 1.5, ld2 = 2.5;
+	sout | "long double\t\t" | ld1 | ' ' | ld2 | "\t\t\tswap ";
+	swap( &ld1, &ld2 );
+	sout | '\t' | ld1 | ' ' | ld2 | endl;
+
+	float _Complex fc1 = 1.5f+1.5if, fc2 = 2.5f+2.5if;
+	sout | "float _Complex\t\t" | fc1 | ' ' | fc2 | "\tswap ";
+	swap( &fc1, &fc2 );
+	sout | '\t' | fc1 | ' ' | fc2 | endl;
+
+	double _Complex dc1 = 1.5d+1.5id, dc2 = 2.5d+2.5id;
+	sout | "double _Complex\t\t" | dc1 | ' ' | dc2 | "\tswap ";
+	swap( &dc1, &dc2 );
+	sout | '\t' | dc1 | ' ' | dc2 | endl;
+
+	long double _Complex ldc1 = 1.5d+1.5il, ldc2 = 2.5d+2.5il;
+	sout | "long double _Complex\t" | ldc1 | ' ' | ldc2 | "\tswap ";
+	swap( &ldc1, &ldc2 );
+	sout | '\t' | ldc1 | ' ' | ldc2 | endl;
+
+	struct S { int i, j; } s1 = { 1, 2 }, s2 = { 2, 1 };
+	ofstream * ?|?( ofstream * os, S s ) { return os | s.i | ' ' | s.j; }
+	sout | "struct S\t\t" | s1 | "  " | s2 | "\t\tswap ";
+	swap( &s1, &s2 );
+	sout | '\t' | s1 | "  " | s2 | endl;
+} // main
 
 // Local Variables: //
