Index: src/libcfa/Makefile.am
===================================================================
--- src/libcfa/Makefile.am	(revision d3b7937ae7ab8afece0824b5729b7e86a9f0bd63)
+++ src/libcfa/Makefile.am	(revision 2a4b0884c14643e09650daaeb3a6667b5bff6b48)
@@ -11,6 +11,6 @@
 ## Created On       : Sun May 31 08:54:01 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Fri Jan 29 11:39:09 2016
-## Update Count     : 108
+## Last Modified On : Sat Jan 30 18:56:45 2016
+## Update Count     : 110
 ###############################################################################
 
@@ -54,5 +54,5 @@
 
 # extension-less header files are overridden by default make rules => explicitly override rule
-% : %.c
+% : %.c ${abs_top_srcdir}/src/driver/cfa-cpp
 	true
 
Index: src/libcfa/Makefile.in
===================================================================
--- src/libcfa/Makefile.in	(revision d3b7937ae7ab8afece0824b5729b7e86a9f0bd63)
+++ src/libcfa/Makefile.in	(revision 2a4b0884c14643e09650daaeb3a6667b5bff6b48)
@@ -585,5 +585,5 @@
 
 # extension-less header files are overridden by default make rules => explicitly override rule
-% : %.c
+% : %.c ${abs_top_srcdir}/src/driver/cfa-cpp
 	true
 
Index: src/libcfa/algorithm
===================================================================
--- src/libcfa/algorithm	(revision d3b7937ae7ab8afece0824b5729b7e86a9f0bd63)
+++ src/libcfa/algorithm	(revision 2a4b0884c14643e09650daaeb3a6667b5bff6b48)
@@ -10,7 +10,9 @@
 // Created On       : Thu Jan 28 17:12:35 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jan 29 14:57:51 2016
-// Update Count     : 20
+// Last Modified On : Mon Feb  1 13:41:51 2016
+// Update Count     : 26
 //
+
+//---------------------------------------
 
 forall( type T | { int ?<?( T, T ); } )
@@ -19,4 +21,11 @@
 forall( type T | { int ?>?( T, T ); } )
 T max( const T t1, const T t2 );
+
+//---------------------------------------
+
+forall( type T )
+void swap( T * t1, T * t2 );
+
+//---------------------------------------
 
 char abs( char );
@@ -33,4 +42,18 @@
 long double _Complex abs( long double _Complex );
 
+//---------------------------------------
+
+void randseed( long int s );
+char random();
+int random();
+unsigned int random();
+long int random();
+unsigned long int random();
+float random();
+double random();
+float _Complex random();
+double _Complex random();
+long double _Complex random();
+
 // Local Variables: //
 // mode: c //
Index: src/libcfa/algorithm.c
===================================================================
--- src/libcfa/algorithm.c	(revision d3b7937ae7ab8afece0824b5729b7e86a9f0bd63)
+++ src/libcfa/algorithm.c	(revision 2a4b0884c14643e09650daaeb3a6667b5bff6b48)
@@ -10,6 +10,6 @@
 // Created On       : Thu Jan 28 17:10:29 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jan 29 15:49:59 2016
-// Update Count     : 29
+// Last Modified On : Mon Feb  1 13:42:05 2016
+// Update Count     : 52
 //
 
@@ -26,9 +26,21 @@
 } // max
 
+//---------------------------------------
+
+forall( type T )
+void swap( T * t1, T * t2 ) {
+	T temp = *t1;
+	*t1 = *t2;
+	*t2 = temp;
+} // swap
+
+//---------------------------------------
 
 extern "C" {
+#define _XOPEN_SOURCE									// required to access "rand48" routines
 #include <stdlib.h>										// abs, labs, llabs
 #include <math.h>										// fabsf, fabs, fabsl
 #include <complex.h>									// cabsf, cabs, cabsl
+#undef I												// free name
 } // extern
 
@@ -43,4 +55,17 @@
 long double _Complex abs( long double _Complex v ) { return cabsl( v ); }
 
+//---------------------------------------
+
+void randseed( long int s ) { srand48( s ); }
+char random() { return lrand48(); }
+int random() { return mrand48(); }
+unsigned int random() { return lrand48(); }
+long int random() { return mrand48(); }
+unsigned long int random() { return lrand48(); }
+float random() { return (float)drand48(); }				// otherwise float uses lrand48
+double random() { return drand48(); }
+float _Complex random() { return (float)drand48() + (float _Complex)(drand48() * _Complex_I); }
+double _Complex random() { return drand48() + (double _Complex)(drand48() * _Complex_I); }
+long double _Complex random() { return (long double)drand48() + (long double _Complex)(drand48() * _Complex_I); }
 
 // Local Variables: //
Index: src/libcfa/iostream.c
===================================================================
--- src/libcfa/iostream.c	(revision d3b7937ae7ab8afece0824b5729b7e86a9f0bd63)
+++ src/libcfa/iostream.c	(revision 2a4b0884c14643e09650daaeb3a6667b5bff6b48)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jan 29 15:38:34 2016
-// Update Count     : 47
+// Last Modified On : Mon Feb  1 14:20:30 2016
+// Update Count     : 60
 //
 
@@ -83,18 +83,15 @@
 forall( dtype ostype | ostream( ostype ) )
 ostype * ?|?( ostype *os, float _Complex c ) {
-	char buffer[64];
-	return write( os, buffer, sprintf( buffer, "%g+i%g", crealf( c ), cimagf( c ) ) );
+	return os | crealf( c ) | (cimagf( c ) < 0 ? "" : "+") | cimagf( c ) | 'i';
 } // ?|?
 
 forall( dtype ostype | ostream( ostype ) )
 ostype * ?|?( ostype *os, double _Complex c ) {
-	char buffer[64];
-	return write( os, buffer, sprintf( buffer, "%g+i%g", creal( c ), cimag( c ) ) );
+	return os | creal( c ) | (cimag( c ) < 0 ? "" : "+") | cimag( c ) | 'i';
 } // ?|?
 
 forall( dtype ostype | ostream( ostype ) )
 ostype * ?|?( ostype *os, long double _Complex c ) {
-	char buffer[64];
-	return write( os, buffer, sprintf( buffer, "%Lg+i%Lg", creall( c ), cimagl( c ) ) );
+	return os | creall( c ) | (cimagl( c ) < 0 ? "" : "+") | cimagl( c ) | 'i';
 } // ?|?
 
