Index: libcfa/src/rational.cfa
===================================================================
--- libcfa/src/rational.cfa	(revision 71f3d451a20b646c3cbac740abcef70143e86e9a)
+++ libcfa/src/rational.cfa	(revision 730992a46db1e678f1efc3eadd79eb3111ea6ef9)
@@ -10,6 +10,6 @@
 // Created On       : Wed Apr  6 17:54:28 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Nov 11 22:37:12 2024
-// Update Count     : 206
+// Last Modified On : Wed Nov 27 18:06:43 2024
+// Update Count     : 208
 //
 
@@ -19,4 +19,6 @@
 
 #pragma GCC visibility push(default)
+
+// Arithmetic, Relational
 
 forall( T | arithmetic( T ) ) {
@@ -190,8 +192,10 @@
 		return l = l / r;
 	} // ?/?
-
-	// I/O
-
-	forall( istype & | istream( istype ) | { istype & ?|?( istype &, T & ); } )
+} // distribution
+
+// I/O
+
+forall( T ) {
+	forall( istype & | istream( istype ) | { istype & ?|?( istype &, T & ); } | arithmetic( T ) )
 	istype & ?|?( istype & is, rational(T) & r ) {
 		is | r.numerator | r.denominator;
@@ -201,7 +205,5 @@
 		return is;
 	} // ?|?
-} // distribution
-
-forall( T ) {
+
 	forall( ostype & | ostream( ostype ) | { ostype & ?|?( ostype &, T ); } ) {
 	ostype & ?|?( ostype & os, rational(T) r ) {
@@ -212,4 +214,6 @@
 } // distribution
 
+// Exponentiation
+
 forall( T | arithmetic( T ) | { T ?\?( T, unsigned long ); } ) {
 	rational(T) ?\?( rational(T) x, long int y ) {
@@ -226,5 +230,5 @@
 } // distribution
 
-// conversion
+// Conversion
 
 forall( T | arithmetic( T ) | { double convert( T ); } )
Index: libcfa/src/rational.hfa
===================================================================
--- libcfa/src/rational.hfa	(revision 71f3d451a20b646c3cbac740abcef70143e86e9a)
+++ libcfa/src/rational.hfa	(revision 730992a46db1e678f1efc3eadd79eb3111ea6ef9)
@@ -12,6 +12,6 @@
 // Created On       : Wed Apr  6 17:56:25 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Nov  8 17:02:09 2024
-// Update Count     : 126
+// Last Modified On : Wed Nov 27 18:11:07 2024
+// Update Count     : 128
 //
 
@@ -21,5 +21,5 @@
 #include "math.trait.hfa"								// arithmetic
 
-// implementation
+// Implementation
 
 forall( T ) {
@@ -28,4 +28,6 @@
 	}; // rational
 }
+
+// Arithmetic, Relational
 
 forall( T | arithmetic( T ) ) {
@@ -73,11 +75,12 @@
 	rational(T) ?/?( rational(T) l, rational(T) r );
 	rational(T) ?/=?( rational(T) & l, rational(T) r );
-
-	// I/O
-	forall( istype & | istream( istype ) | { istype & ?|?( istype &, T & ); } )
-	istype & ?|?( istype &, rational(T) & );
 } // distribution
 
+// I/O
+
 forall( T ) {
+	forall( istype & | istream( istype ) | { istype & ?|?( istype &, T & ); } | arithmetic( T ) )
+	istype & ?|?( istype &, rational(T) & );
+
 	forall( ostype & | ostream( ostype ) | { ostype & ?|?( ostype &, T ); } ) {
 		ostype & ?|?( ostype &, rational(T) );
@@ -86,4 +89,6 @@
 } // distribution
 
+// Exponentiation
+
 forall( T | arithmetic( T ) | { T ?\?( T, unsigned long ); } ) {
 	rational(T) ?\?( rational(T) x, long int y );
@@ -91,5 +96,6 @@
 } // distribution
 
-// conversion
+// Conversion
+
 forall( T | arithmetic( T ) | { double convert( T ); } )
 double widen( rational(T) r );
