Index: doc/uC++toCFA/uC++toCFA.tex
===================================================================
--- doc/uC++toCFA/uC++toCFA.tex	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ doc/uC++toCFA/uC++toCFA.tex	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -11,6 +11,6 @@
 %% Created On       : Wed Apr  6 14:53:29 2016
 %% Last Modified By : Peter A. Buhr
-%% Last Modified On : Sat Apr 13 11:11:39 2024
-%% Update Count     : 5969
+%% Last Modified On : Fri Sep 13 07:48:54 2024
+%% Update Count     : 5987
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -154,5 +154,5 @@
 \begin{tabular}{@{}l|l@{}}
 \multicolumn{2}{@{}l}{\lstinline{	int x = 1, y = 2, * p1x = &x, * p1y = &y, ** p2i = &p1x,}} \\
-\multicolumn{2}{@{}l}{\lstinline{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ && r1x = x, & r1y = y, && r2i = r1x;}} \\
+\multicolumn{2}{@{}l}{\lstinline{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ & r1x = x, & r1y = y, && r2i = r1x;}} \\
 \begin{uC++}
 **p2i = 3;
@@ -384,5 +384,5 @@
 \multicolumn{2}{@{}l@{}}{\lstinline{string s1, s2;}} \\
 \begin{uC++}
-s1 = "hi";
+s1 = "abcdefg";
 s2 = s1;
 s1 += s2;
@@ -393,7 +393,7 @@
 s1.substr( 2 ); s1.substr( 2, 3 );
 s1.replace( 2, 5, s2 );
-s1.find( s2 ), s1.rfind( s2 );
+s1.find( s2 ); s1.rfind( s2 );
 s1.find_first_of( s2 ); s1.find_last_of( s2 );
-s1.find_first_not_of(s2 ); s1.find_last_not_of( s2 );
+s1.find_first_not_of( s2 ); s1.find_last_not_of( s2 );
 getline( cin, s1 );
 cout << s1 << endl;
@@ -401,5 +401,5 @@
 &
 \begin{cfa}
-s1 = "hi";
+s1 = "abcdefg";
 s2 = s1;
 s1 += s2;
@@ -409,8 +409,8 @@
 s1[3];
 s1( 2 ); s1( 2, 3 );
-//s1.replace( 2, 5, s2 );
-find( s1, s2 ), rfind( s1, s2 );
-find_first_of( .substr, s2 ); s1.find_last_of( s2 );
-s1.find_first_not_of(s2 ); s1.find_last_not_of( s2 );
+// replace( s1, 2, 5, s2 );
+// find( s1, s2 ), rfind( s1, s2 );
+// find_first_of( s2 ); find_last_of( s2 );
+// find_first_not_of( s1, s2 ); find_last_not_of( s1, s2 );
 sin | getline( s1 );
 sout | s1;
@@ -451,10 +451,11 @@
 
 
-\section{\texorpdfstring{\lstinline{uNoCtor}}{uNoCtor}}
+\section{\texorpdfstring{\lstinline{uArray}}{uArray}}
 
 \begin{cquote}
 \begin{tabular}{@{}l|l@{}}
 \begin{uC++}
-
+#include <iostream>
+using namespace std;
 struct S {
 	int i;
@@ -464,6 +465,6 @@
 int main() {
 	enum { N = 5 };
-	@uNoCtor<S>@ s[N];   // no constructor calls
-	for ( int i = 0; i < N; i += 1 ) @s[i].ctor( i )@;
+	@uArray( S, s, N );@   // no constructor calls
+	for ( int i = 0; i < N; i += 1 ) @s[i]( i )@; // constructor calls
 	for ( int i = 0; i < N; i += 1 ) cout << s[i]@->@i << endl;
 }
@@ -471,5 +472,6 @@
 &
 \begin{cfa}
-#include @<raii.hfa>@          // uninit
+#include <fstream.hfa>
+#include <array.hfa>
 struct S {
 	int i;
@@ -479,6 +481,6 @@
 int main() {
 	enum { N = 5 };
-	@uninit(S)@ s[N];   // no constructor calls
-	for ( i; N ) @s[i]{ i }@;
+	@array( S, N ) s = { delay_init };@ // no constructor calls
+	for ( i; N ) @s[i]{ i }@; // constructor calls
 	for ( i; N ) sout | s[i]@.@i;
 }
@@ -522,5 +524,5 @@
 \end{cfa}
 \\
-\multicolumn{2}{l}{\lstinline{C c;}}
+\multicolumn{2}{@{}l@{}}{\lstinline{C c;}}
 \end{tabular}
 \end{cquote}
@@ -594,5 +596,5 @@
 \end{cfa}
 \\
-\multicolumn{2}{l}{\lstinline{M m;}}
+\multicolumn{2}{@{}l@{}}{\lstinline{M m;}}
 \end{tabular}
 \end{cquote}
@@ -625,5 +627,5 @@
 \end{cfa}
 \\
-\multicolumn{2}{l}{\lstinline{T t; // start thread in main routine}}
+\multicolumn{2}{@{}l@{}}{\lstinline{T t; // start thread in main routine}}
 \end{tabular}
 \end{cquote}
Index: libcfa/src/collections/array.hfa
===================================================================
--- libcfa/src/collections/array.hfa	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ libcfa/src/collections/array.hfa	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -156,9 +156,18 @@
 //	other two.  This solution offers ?{}() that needs only ?{}(), and similar for ^?{}.
 
+// skip initializing elements
+//   array(float, 5) x = { delay_init };
+enum () delay_init_t { delay_init };
+forall( [N], S & | sized(S), Timmed &, Tbase & )
+static inline void ?{}( arpk( N, S, Timmed, Tbase ) & this, delay_init_t ) {
+	void ?{}( S (&)[N] ) {}
+	?{}(this.strides);
+}
+
+// call default ctor on elements
+//   array(float, 5) x;
 forall( [N], S & | sized(S), Timmed &, Tbase & | { void ?{}( Timmed & ); } )
 static inline void ?{}( arpk( N, S, Timmed, Tbase ) & this ) {	
-	void ?{}( S (&)[N] ) {}
-	?{}(this.strides);
-
+	?{}( this, delay_init );
 	for (i; N) ?{}( (Timmed &)this.strides[i] );
 }
@@ -173,4 +182,5 @@
 	}
 }
+
 
 //
Index: src/AST/BasicKind.hpp
===================================================================
--- src/AST/BasicKind.hpp	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ src/AST/BasicKind.hpp	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -9,7 +9,7 @@
 // Author           : Andrew Beach
 // Created On       : Thu Apr 18 14:00:00 2024
-// Last Modified By : Andrew Beach
-// Last Modified On : Thu Apr 18 14:00:00 2024
-// Update Count     : 0
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Sep  9 20:51:13 2024
+// Update Count     : 2
 //
 
@@ -35,26 +35,26 @@
 	SignedInt128,
 	UnsignedInt128,
-	uFloat16,
-	uFloat16Complex,
-	uFloat32,
-	uFloat32Complex,
+	Float16,
+	Float16Complex,
+	Float32,
+	Float32Complex,
 	Float,
 	FloatComplex,
-	uFloat32x,
-	uFloat32xComplex,
-	uFloat64,
-	uFloat64Complex,
+	Float32x,
+	Float32xComplex,
+	Float64,
+	Float64Complex,
 	Double,
 	DoubleComplex,
-	uFloat64x,
-	uFloat64xComplex,
-	uuFloat80,
-	uFloat128,
-	uFloat128Complex,
+	Float64x,
+	Float64xComplex,
+	Float80,
+	Float128,
+	Float128Complex,
 	uuFloat128,
 	LongDouble,
 	LongDoubleComplex,
-	uFloat128x,
-	uFloat128xComplex,
+	Float128x,
+	Float128xComplex,
 	NUMBER_OF_BASIC_TYPES,
 	MAX_INTEGER_TYPE = UnsignedInt128,
Index: src/BasicTypes-gen.cpp
===================================================================
--- src/BasicTypes-gen.cpp	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ src/BasicTypes-gen.cpp	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -9,5 +9,5 @@
 #include <assert.h>
 #include <string.h>										// strlen
-#include "config.h"									// configure info
+#include "config.h"										// configure info
 
 enum Kind {
@@ -26,30 +26,36 @@
 	SignedInt128,
 	UnsignedInt128,
-	uFloat16,
-	uFloat16Complex,
-	uFloat32,
-	uFloat32Complex,
+	Float16,
+	Float16Complex,
+	Float32,
+	Float32Complex,
 	Float,
 	FloatComplex,
 	// FloatImaginary,
-	uFloat32x,
-	uFloat32xComplex,
-	uFloat64,
-	uFloat64Complex,
+	Float32x,
+	Float32xComplex,
+	Float64,
+	Float64Complex,
 	Double,
 	DoubleComplex,
 	// DoubleImaginary,
-	uFloat64x,
-	uFloat64xComplex,
-	uuFloat80,
-	uFloat128,
-	uFloat128Complex,
+	Float64x,
+	Float64xComplex,
+	Float80,
+	Float128,
+	Float128Complex,
 	uuFloat128,
 	LongDouble,
 	LongDoubleComplex,
 	// LongDoubleImaginary,
-	uFloat128x,
-	uFloat128xComplex,
-	NUMBER_OF_BASIC_TYPES
+	Float128x,
+	Float128xComplex,
+	NUMBER_OF_BASIC_TYPES,
+
+	Float32x4,											// ARM, gcc-14
+	Float64x2,
+	Svfloat32,
+	Svfloat64,
+	Svbool,
 };
 
@@ -88,35 +94,35 @@
 	{ LongLongUnsignedInt, "LongLongUnsignedInt", "LLUI", "unsigned long long int", "y", Unsigned, SignedInt128, UnsignedInt128, -1, 5 },
 
-	{ SignedInt128, "SignedInt128", "IB", "__int128", "n", Signed, UnsignedInt128, uFloat16, -1, 6 },
-	{ UnsignedInt128, "UnsignedInt128", "UIB", "unsigned __int128", "o", Unsigned, uFloat16, -1, -1, 6 },
-
-	{ uFloat16, "uFloat16", "_FH", "_Float16", "DF16_", Floating, uFloat32, uFloat16Complex, -1, 7 },
-	{ uFloat16Complex, "uFloat16Complex", "_FH", "_Float16 _Complex", "CDF16_", Floating, uFloat32Complex, -1, -1, 7 },
-	{ uFloat32, "uFloat32", "_F", "_Float32", "DF32_", Floating, Float, uFloat32Complex, -1, 8 },
-	{ uFloat32Complex, "uFloat32Complex", "_FC", "_Float32 _Complex", "CDF32_", Floating, FloatComplex, -1, -1, 8 },
-	{ Float, "Float", "F", "float", "f", Floating, uFloat32x, FloatComplex, -1, 9 },
-	{ FloatComplex, "FloatComplex", "FC", "float _Complex", "Cf", Floating, uFloat32xComplex, -1, -1, 9 },
+	{ SignedInt128, "SignedInt128", "IB", "__int128", "n", Signed, UnsignedInt128, Float16, -1, 6 },
+	{ UnsignedInt128, "UnsignedInt128", "UIB", "unsigned __int128", "o", Unsigned, Float16, -1, -1, 6 },
+
+	{ Float16, "Float16", "_FH", "_Float16", "DF16_", Floating, Float32, Float16Complex, -1, 7 },
+	{ Float16Complex, "Float16Complex", "_FH", "_Float16 _Complex", "CDF16_", Floating, Float32Complex, -1, -1, 7 },
+	{ Float32, "Float32", "_F", "_Float32", "DF32_", Floating, Float, Float32Complex, -1, 8 },
+	{ Float32Complex, "Float32Complex", "_FC", "_Float32 _Complex", "CDF32_", Floating, FloatComplex, -1, -1, 8 },
+	{ Float, "Float", "F", "float", "f", Floating, Float32x, FloatComplex, -1, 9 },
+	{ FloatComplex, "FloatComplex", "FC", "float _Complex", "Cf", Floating, Float32xComplex, -1, -1, 9 },
 	// { FloatImaginary, "FloatImaginary", "FI", "float _Imaginary", "If", false, DoubleImaginary, FloatComplex, -1, 9 },
 
-	{ uFloat32x, "uFloat32x", "_FX", "_Float32x", "DF32x_", Floating, uFloat64, uFloat32xComplex, -1, 10 },
-	{ uFloat32xComplex, "uFloat32xComplex", "_FXC", "_Float32x _Complex", "CDF32x_", Floating, uFloat64Complex, -1, -1, 10 },
-	{ uFloat64, "uFloat64", "FD", "_Float64", "DF64_", Floating, Double, uFloat64Complex, -1, 11 },
-	{ uFloat64Complex, "uFloat64Complex", "_FDC", "_Float64 _Complex", "CDF64_", Floating, DoubleComplex, -1, -1, 11 },
-	{ Double, "Double", "D", "double", "d", Floating, uFloat64x, DoubleComplex, -1, 12 },
-	{ DoubleComplex, "DoubleComplex", "DC", "double _Complex", "Cd", Floating, uFloat64xComplex, -1, -1, 12 },
+	{ Float32x, "Float32x", "_FX", "_Float32x", "DF32x_", Floating, Float64, Float32xComplex, -1, 10 },
+	{ Float32xComplex, "Float32xComplex", "_FXC", "_Float32x _Complex", "CDF32x_", Floating, Float64Complex, -1, -1, 10 },
+	{ Float64, "Float64", "FD", "_Float64", "DF64_", Floating, Double, Float64Complex, -1, 11 },
+	{ Float64Complex, "Float64Complex", "_FDC", "_Float64 _Complex", "CDF64_", Floating, DoubleComplex, -1, -1, 11 },
+	{ Double, "Double", "D", "double", "d", Floating, Float64x, DoubleComplex, -1, 12 },
+	{ DoubleComplex, "DoubleComplex", "DC", "double _Complex", "Cd", Floating, Float64xComplex, -1, -1, 12 },
 	// { DoubleImaginary, "DoubleImaginary", "DI", "double _Imaginary", "Id", false, LongDoubleImaginary, DoubleComplex, -1, 12 },
 
-	{ uFloat64x, "uFloat64x", "F80X", "_Float64x", "DF64x_", Floating, uuFloat80, uFloat64xComplex, -1, 13 },
-	{ uFloat64xComplex, "uFloat64xComplex", "_FDXC", "_Float64x _Complex", "CDF64x_", Floating, uFloat128Complex, -1, -1, 13 },
-	{ uuFloat80, "uuFloat80", "F80", "__float80", "Dq", Floating, uFloat128, uFloat64xComplex, -1, 14 },
-	{ uFloat128, "uFloat128", "_FB", "_Float128", "DF128_", Floating, uuFloat128, uFloat128Complex, -1, 15 },
-	{ uFloat128Complex, "uFloat128Complex", "_FLDC", "_Float128 _Complex", "CDF128_", Floating, LongDoubleComplex, -1, -1, 15 },
-	{ uuFloat128, "uuFloat128", "FB", "__float128", "g", Floating, LongDouble, uFloat128Complex, -1, 16 },
-	{ LongDouble, "LongDouble", "LD", "long double", "e", Floating, uFloat128x, LongDoubleComplex, -1, 17 },
-	{ LongDoubleComplex, "LongDoubleComplex", "LDC", "long double _Complex", "Ce", Floating, uFloat128xComplex, -1, -1, 17 },
+	{ Float64x, "Float64x", "F80X", "_Float64x", "DF64x_", Floating, Float80, Float64xComplex, -1, 13 },
+	{ Float64xComplex, "Float64xComplex", "_FDXC", "_Float64x _Complex", "CDF64x_", Floating, Float128Complex, -1, -1, 13 },
+	{ Float80, "Float80", "F80", "__float80", "Dq", Floating, Float128, Float64xComplex, -1, 14 },
+	{ Float128, "Float128", "_FB", "_Float128", "DF128_", Floating, uuFloat128, Float128Complex, -1, 15 },
+	{ Float128Complex, "Float128Complex", "_FLDC", "_Float128 _Complex", "CDF128_", Floating, LongDoubleComplex, -1, -1, 15 },
+	{ uuFloat128, "uuFloat128", "FB", "__float128", "g", Floating, LongDouble, Float128Complex, -1, 16 },
+	{ LongDouble, "LongDouble", "LD", "long double", "e", Floating, Float128x, LongDoubleComplex, -1, 17 },
+	{ LongDoubleComplex, "LongDoubleComplex", "LDC", "long double _Complex", "Ce", Floating, Float128xComplex, -1, -1, 17 },
 	// { LongDoubleImaginary, "LongDoubleImaginary", "LDI", "long double _Imaginary", "Ie", false, LongDoubleComplex, -1, -1, 17 },
 
-	{ uFloat128x, "uFloat128x", "_FBX", "_Float128x", "DF128x_", Floating, uFloat128xComplex, -1, -1, 18 },
-	{ uFloat128xComplex, "uFloat128xComplex", "_FLDXC", "_Float128x _Complex", "CDF128x_", Floating, -1, -1, -1, 18 }
+	{ Float128x, "Float128x", "_FBX", "_Float128x", "DF128x_", Floating, Float128xComplex, -1, -1, 18 },
+	{ Float128xComplex, "Float128xComplex", "_FLDXC", "_Float128x _Complex", "CDF128x_", Floating, -1, -1, -1, 18 }
 }; // graph
 
Index: src/ControlStruct/TranslateEnumRange.cpp
===================================================================
--- src/ControlStruct/TranslateEnumRange.cpp	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ src/ControlStruct/TranslateEnumRange.cpp	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -6,67 +6,59 @@
 namespace ControlStruct {
 
-struct addInit {
-    const ast::Stmt * postvisit( const ast::ForStmt * stmt );
+namespace {
+
+struct TranslateEnumRangeCore {
+	const ast::Stmt * postvisit( const ast::ForStmt * stmt );
 };
 
-struct translateEnumRangeCore {
-    const ast::Stmt * postvisit( const ast::ForStmt * stmt );
-};
+const ast::Stmt * TranslateEnumRangeCore::postvisit( const ast::ForStmt * stmt ) {
+	if ( !stmt->range_over ) return stmt;
+	auto mutStmt = ast::mutate( stmt );
+	auto & location = mutStmt->location;
 
-const ast::Stmt* addInit::postvisit( const ast::ForStmt * stmt ) {
-    if ( stmt->range_over ) {
-        auto inits = stmt->inits;
-        auto init = stmt->inits.front();
+	if ( auto declStmt = mutStmt->inits.front().as<ast::DeclStmt>() ) {
+		if ( auto objDecl = declStmt->decl.as<ast::ObjectDecl>() ) {
+			if ( !objDecl->init ) {
+				ast::SingleInit * newInit = new ast::SingleInit( location,
+					ast::UntypedExpr::createCall( location,
+						mutStmt->is_inc ? "lowerBound" : "upperBound", {} ),
+					ast::ConstructFlag::MaybeConstruct
+				);
+				auto objDeclWithInit = ast::mutate_field( objDecl, &ast::ObjectDecl::init, newInit );
+				auto declWithInit = ast::mutate_field( declStmt, &ast::DeclStmt::decl, objDeclWithInit );
+				mutStmt->inits[0] = declWithInit;
+			}
+		}
+	}
 
-        if (auto declStmt = init.as<ast::DeclStmt>()) {
-            auto decl = declStmt->decl;
-            if ( auto objDecl = decl.as<ast::ObjectDecl>()) {
-                if ( !objDecl->init ) {
-                    auto location = stmt->location;
-                    ast::SingleInit * newInit = new ast::SingleInit( location, 
-                        stmt->is_inc?
-                        ast::UntypedExpr::createCall( location, "lowerBound", {} ):
-                        ast::UntypedExpr::createCall( location, "upperBound", {} ),
-                        ast::ConstructFlag::MaybeConstruct
-                    );
-                    auto objDeclWithInit = ast::mutate_field( objDecl, &ast::ObjectDecl::init, newInit );
-                    auto declWithInit = ast::mutate_field( declStmt, &ast::DeclStmt::decl, objDeclWithInit );
-                    stmt = ast::mutate_field_index( stmt, &ast::ForStmt::inits, 0, declWithInit );
-                }
-            }
-        }
-    }
-    return stmt;
+	auto declStmt = mutStmt->inits.front().strict_as<ast::DeclStmt>();
+	auto initDecl = declStmt->decl.strict_as<ast::ObjectDecl>();
+	auto indexName = initDecl->name;
+
+	// Both inc and dec check if the current posn less than the number of enumerator
+	// for dec, it keeps call pred until it passes 0 (the first enumerator) and underflow,
+	// it wraps around and become unsigned max
+	ast::UntypedExpr * condition = ast::UntypedExpr::createCall( location,
+		mutStmt->is_inc ? "?<=?" : "?>=?",
+		{
+			new ast::NameExpr( location, indexName ),
+			ast::UntypedExpr::createCall( location,
+				mutStmt->is_inc ? "upperBound" : "lowerBound", {} )
+		} );
+	auto increment = ast::UntypedExpr::createCall( location,
+		mutStmt->is_inc ? "succ_unsafe" : "pred_unsafe",
+		{ new ast::NameExpr( location, indexName ) } );
+	auto assig = ast::UntypedExpr::createAssign( location,
+		new ast::NameExpr( location, indexName ), increment );
+	mutStmt->cond = condition;
+	mutStmt->inc = assig;
+	return mutStmt;
 }
 
-const ast::Stmt* translateEnumRangeCore::postvisit( const ast::ForStmt * stmt ) {
-    if ( !stmt->range_over ) return stmt;
-    auto location = stmt->location;
-    auto declStmt = stmt->inits.front().strict_as<ast::DeclStmt>();
-    auto initDecl = declStmt->decl.strict_as<ast::ObjectDecl>();
-    auto indexName = initDecl->name;
-
-    // Both inc and dec check if the current posn less than the number of enumerator
-    // for dec, it keeps call pred until it passes 0 (the first enumerator) and underflow,
-    // it wraps around and become unsigned max
-    ast::UntypedExpr * condition = ast::UntypedExpr::createCall( location,
-        stmt->is_inc? "?<=?": "?>=?",
-        {   new ast::NameExpr( location, indexName ),
-            stmt->is_inc?
-                ast::UntypedExpr::createCall( location, "upperBound", {} ):
-                ast::UntypedExpr::createCall( location, "lowerBound", {} )
-        });
-    auto increment = ast::UntypedExpr::createCall( location, 
-        stmt->is_inc? "succ_unsafe": "pred_unsafe",
-        { new ast::NameExpr( location, indexName ) });
-    auto assig = ast::UntypedExpr::createAssign( location, new ast::NameExpr( location, indexName ), increment );
-    auto mut = ast::mutate_field( stmt, &ast::ForStmt::cond, condition );
-    mut = ast::mutate_field(stmt, &ast::ForStmt::inc, assig );
-    return mut;
-}  
+} // namespace
 
 void translateEnumRange( ast::TranslationUnit & translationUnit ) {
-    ast::Pass<addInit>::run( translationUnit );
-    ast::Pass<translateEnumRangeCore>::run( translationUnit );
+	ast::Pass<TranslateEnumRangeCore>::run( translationUnit );
 }
-}
+
+} // namespace ControlStruct
Index: src/Parser/ExpressionNode.cpp
===================================================================
--- src/Parser/ExpressionNode.cpp	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ src/Parser/ExpressionNode.cpp	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -9,7 +9,7 @@
 // Author           : Peter A. Buhr
 // Created On       : Sat May 16 13:17:07 2015
-// Last Modified By : Andrew Beach
-// Last Modified On : Fri Aug 23 10:22:00 2024
-// Update Count     : 1088
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Sep 12 22:40:35 2024
+// Update Count     : 1090
 //
 
@@ -381,6 +381,6 @@
 		const CodeLocation & location, string & str ) {
 	static const ast::BasicKind kind[2][12] = {
-		{ ast::BasicKind::Float, ast::BasicKind::Double, ast::BasicKind::LongDouble, ast::BasicKind::uuFloat80, ast::BasicKind::uuFloat128, ast::BasicKind::uFloat16, ast::BasicKind::uFloat32, ast::BasicKind::uFloat32x, ast::BasicKind::uFloat64, ast::BasicKind::uFloat64x, ast::BasicKind::uFloat128, ast::BasicKind::uFloat128x },
-		{ ast::BasicKind::FloatComplex, ast::BasicKind::DoubleComplex, ast::BasicKind::LongDoubleComplex, ast::BasicKind::NUMBER_OF_BASIC_TYPES, ast::BasicKind::NUMBER_OF_BASIC_TYPES, ast::BasicKind::uFloat16Complex, ast::BasicKind::uFloat32Complex, ast::BasicKind::uFloat32xComplex, ast::BasicKind::uFloat64Complex, ast::BasicKind::uFloat64xComplex, ast::BasicKind::uFloat128Complex, ast::BasicKind::uFloat128xComplex },
+		{ ast::BasicKind::Float, ast::BasicKind::Double, ast::BasicKind::LongDouble, ast::BasicKind::Float80, ast::BasicKind::uuFloat128, ast::BasicKind::Float16, ast::BasicKind::Float32, ast::BasicKind::Float32x, ast::BasicKind::Float64, ast::BasicKind::Float64x, ast::BasicKind::Float128, ast::BasicKind::Float128x },
+		{ ast::BasicKind::FloatComplex, ast::BasicKind::DoubleComplex, ast::BasicKind::LongDoubleComplex, ast::BasicKind::NUMBER_OF_BASIC_TYPES, ast::BasicKind::NUMBER_OF_BASIC_TYPES, ast::BasicKind::Float16Complex, ast::BasicKind::Float32Complex, ast::BasicKind::Float32xComplex, ast::BasicKind::Float64Complex, ast::BasicKind::Float64xComplex, ast::BasicKind::Float128Complex, ast::BasicKind::Float128xComplex },
 	};
 
@@ -460,4 +460,43 @@
 	return ret;
 } // build_constantChar
+
+static bool isoctal( char ch ) {
+	return ('0' <= ch && ch <= '7');
+}
+
+// A "sequence" is the series of characters in a character/string literal
+// that becomes a single character value in the runtime value.
+static size_t sequenceLength( const std::string & str, size_t pos ) {
+	// Most "sequences" are just a single character, filter those out:
+	if ( '\\' != str[pos] ) return 1;
+	switch ( str[pos + 1] ) {
+		// Simple Escape Sequence (\_ where _ is one of the following):
+	  case '\'': case '\"': case '?': case '\\':
+	  case 'a': case 'b': case 'f': case 'n': case 'r': case 't': case 'v':
+		// GCC Escape Sequence (as simple, just some different letters):
+	  case 'e':
+		return 2;
+		// Numeric Escape Sequence (\___ where _ is 1-3 octal digits):
+	  case '0': case '1': case '2': case '3':
+	  case '4': case '5': case '6': case '7':
+		return ( !isoctal( str[pos + 2] ) ) ? 2 :
+		  ( !isoctal( str[pos + 3] ) ) ? 3 : 4;
+		  // Numeric Escape Sequence (\x_ where _ is 1 or more hexadecimal digits):
+	  case 'x': {
+		  size_t length = 2;
+		  while ( isxdigit( str[pos + length] ) ) ++length;
+		  return length;
+	  }
+		// Universal Character Name (\u____ where _ is 4 decimal digits):
+	  case 'u':
+		return 6;
+		// Universal Character Name (\U________ where _ is 8 decimal digits):
+	  case 'U':
+		return 10;
+	  default:
+		assertf( false, "Unknown escape sequence (start %c).", str[pos] );
+		return 1;
+	}
+}
 
 ast::Expr * build_constantStr(
@@ -485,8 +524,17 @@
 		strtype = new ast::BasicType( ast::BasicKind::Char );
 	} // switch
+
+	// The dimension value of the type is equal to the number of "sequences"
+	// not including the openning and closing quotes in the literal plus 1
+	// for the implicit null terminator.
+	size_t dimension = 1;
+	for ( size_t pos = 1 ; pos < str.size() - 1 ;
+			pos += sequenceLength( str, pos ) ) {
+		dimension += 1;
+	}
+
 	ast::ArrayType * at = new ast::ArrayType(
 		strtype,
-		// Length is adjusted: +1 for '\0' and -2 for '"'
-		ast::ConstantExpr::from_ulong( location, str.size() + 1 - 2 ),
+		ast::ConstantExpr::from_ulong( location, dimension ),
 		ast::FixedLen,
 		ast::DynamicDim );
Index: src/Parser/StatementNode.cpp
===================================================================
--- src/Parser/StatementNode.cpp	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ src/Parser/StatementNode.cpp	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -11,6 +11,6 @@
 // Created On       : Sat May 16 14:59:41 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Sep  9 11:28:07 2024
-// Update Count     : 430
+// Last Modified On : Mon Sep  9 21:49:15 2024
+// Update Count     : 431
 //
 
@@ -184,5 +184,5 @@
 
 ast::Stmt * build_while( const CodeLocation & location, CondCtl * ctl, StatementNode * stmt, StatementNode * else_ ) {
-	std::vector<ast::ptr<ast::Stmt>> astinit;						// maybe empty
+	std::vector<ast::ptr<ast::Stmt>> astinit;			// maybe empty
 	ast::Expr * astcond = build_if_control( ctl, astinit ); // ctl deleted, cond/init set
 
Index: src/Parser/TypeData.cpp
===================================================================
--- src/Parser/TypeData.cpp	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ src/Parser/TypeData.cpp	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:12:51 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Feb 23 08:58:30 2024
-// Update Count     : 734
+// Last Modified On : Thu Sep 12 22:43:59 2024
+// Update Count     : 735
 //
 
@@ -1158,16 +1158,16 @@
 	case TypeData::Double:
 	case TypeData::LongDouble:					// not set until below
-	case TypeData::uuFloat80:
+	case TypeData::Float80:
 	case TypeData::uuFloat128:
-	case TypeData::uFloat16:
-	case TypeData::uFloat32:
-	case TypeData::uFloat32x:
-	case TypeData::uFloat64:
-	case TypeData::uFloat64x:
-	case TypeData::uFloat128:
-	case TypeData::uFloat128x:
+	case TypeData::Float16:
+	case TypeData::Float32:
+	case TypeData::Float32x:
+	case TypeData::Float64:
+	case TypeData::Float64x:
+	case TypeData::Float128:
+	case TypeData::Float128x:
 		static ast::BasicKind floattype[2][12] = {
-			{ ast::BasicKind::FloatComplex, ast::BasicKind::DoubleComplex, ast::BasicKind::LongDoubleComplex, (ast::BasicKind)-1, (ast::BasicKind)-1, ast::BasicKind::uFloat16Complex, ast::BasicKind::uFloat32Complex, ast::BasicKind::uFloat32xComplex, ast::BasicKind::uFloat64Complex, ast::BasicKind::uFloat64xComplex, ast::BasicKind::uFloat128Complex, ast::BasicKind::uFloat128xComplex, },
-			{ ast::BasicKind::Float, ast::BasicKind::Double, ast::BasicKind::LongDouble, ast::BasicKind::uuFloat80, ast::BasicKind::uuFloat128, ast::BasicKind::uFloat16, ast::BasicKind::uFloat32, ast::BasicKind::uFloat32x, ast::BasicKind::uFloat64, ast::BasicKind::uFloat64x, ast::BasicKind::uFloat128, ast::BasicKind::uFloat128x, },
+			{ ast::BasicKind::FloatComplex, ast::BasicKind::DoubleComplex, ast::BasicKind::LongDoubleComplex, (ast::BasicKind)-1, (ast::BasicKind)-1, ast::BasicKind::Float16Complex, ast::BasicKind::Float32Complex, ast::BasicKind::Float32xComplex, ast::BasicKind::Float64Complex, ast::BasicKind::Float64xComplex, ast::BasicKind::Float128Complex, ast::BasicKind::Float128xComplex, },
+			{ ast::BasicKind::Float, ast::BasicKind::Double, ast::BasicKind::LongDouble, ast::BasicKind::Float80, ast::BasicKind::uuFloat128, ast::BasicKind::Float16, ast::BasicKind::Float32, ast::BasicKind::Float32x, ast::BasicKind::Float64, ast::BasicKind::Float64x, ast::BasicKind::Float128, ast::BasicKind::Float128x, },
 		};
 
@@ -1185,5 +1185,5 @@
 			genTSError( TypeData::complexTypeNames[ td->complextype ], td->basictype );
 		} // if
-		if ( (td->basictype == TypeData::uuFloat80 || td->basictype == TypeData::uuFloat128) && td->complextype == TypeData::Complex ) { // gcc unsupported
+		if ( (td->basictype == TypeData::Float80 || td->basictype == TypeData::uuFloat128) && td->complextype == TypeData::Complex ) { // gcc unsupported
 			genTSError( TypeData::complexTypeNames[ td->complextype ], td->basictype );
 		} // if
@@ -1205,4 +1205,7 @@
 		const_cast<TypeData *>(td)->basictype = TypeData::Int;
 		goto Integral;
+
+	  case TypeData::Float32x4: case TypeData::Float64x2: case TypeData::Svfloat32: case TypeData:: Svfloat64: case TypeData::Svbool:
+		return nullptr;
 	default:
 		assertf( false, "unknown basic type" );
@@ -1483,6 +1486,6 @@
 			ast::Expr * initValue;
 			if ( ret->isCfa && ret->base ) {
-				CodeLocation location = cur->enumeratorValue->location;
-				initValue = new ast::CastExpr( location, maybeMoveBuild( cur->consume_enumeratorValue() ), ret->base );
+				initValue = new ast::CastExpr( cur->enumeratorValue->location, maybeMoveBuild( cur->consume_enumeratorValue() ),
+											   ret->base );
 			} else {
 				initValue = maybeMoveBuild( cur->consume_enumeratorValue() );
Index: src/Parser/TypeData.hpp
===================================================================
--- src/Parser/TypeData.hpp	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ src/Parser/TypeData.hpp	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:18:36 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb 22 16:30:31 2024
-// Update Count     : 210
+// Last Modified On : Fri Sep 13 08:13:01 2024
+// Update Count     : 216
 //
 
@@ -28,7 +28,8 @@
 	enum BasicType {
 		Void, Bool, Char, Int, Int128,
-		Float, Double, LongDouble, uuFloat80, uuFloat128,
-		uFloat16, uFloat32, uFloat32x, uFloat64, uFloat64x, uFloat128, uFloat128x,
-		NoBasicType
+		Float, Double, LongDouble, Float80, uuFloat128,
+		Float16, Float32, Float32x, Float64, Float64x, Float128, Float128x,
+		NoBasicType,
+		Float32x4, Float64x2, Svfloat32, Svfloat64, Svbool,
 	};
 	static const char * basicTypeNames[];
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ src/Parser/lex.ll	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Thu Jun 27 14:38:27 2024
- * Update Count     : 780
+ * Last Modified On : Wed Sep 11 17:16:23 2024
+ * Update Count     : 791
  */
 
@@ -234,4 +234,5 @@
 basetypeof		{ KEYWORD_RETURN(BASETYPEOF); }			// CFA
 _Bool			{ KEYWORD_RETURN(BOOL); }				// C99
+__SVBool_t		{ KEYWORD_RETURN(SVBOOL); }				// gcc (ARM)
 break			{ KEYWORD_RETURN(BREAK); }
 case			{ KEYWORD_RETURN(CASE); }
@@ -270,15 +271,19 @@
 fixup			{ QKEYWORD_RETURN(FIXUP); }				// CFA
 float			{ KEYWORD_RETURN(FLOAT); }
-__float80		{ KEYWORD_RETURN(uuFLOAT80); }			// GCC
-float80			{ KEYWORD_RETURN(uuFLOAT80); }			// GCC
+__float80		{ KEYWORD_RETURN(FLOAT80); }			// GCC
+float80			{ KEYWORD_RETURN(FLOAT80); }			// GCC
 __float128		{ KEYWORD_RETURN(uuFLOAT128); }			// GCC
 float128		{ KEYWORD_RETURN(uuFLOAT128); }			// GCC
-_Float16		{ FLOATXX(uFLOAT16); }					// GCC
-_Float32		{ FLOATXX(uFLOAT32); }					// GCC
-_Float32x		{ FLOATXX(uFLOAT32X); }					// GCC
-_Float64		{ FLOATXX(uFLOAT64); }					// GCC
-_Float64x		{ FLOATXX(uFLOAT64X); }					// GCC
-_Float128		{ FLOATXX(uFLOAT128); }					// GCC
-_Float128x		{ FLOATXX(uFLOAT128); }					// GCC
+_Float16		{ FLOATXX(FLOAT16); }					// GCC
+_Float32		{ FLOATXX(FLOAT32); }					// GCC
+_Float32x		{ FLOATXX(FLOAT32X); }					// GCC
+_Float64		{ FLOATXX(FLOAT64); }					// GCC
+_Float64x		{ FLOATXX(FLOAT64X); }					// GCC
+_Float128		{ FLOATXX(FLOAT128); }					// GCC
+_Float128x		{ FLOATXX(FLOAT128X); }					// GCC
+__Float32x4_t	{ FLOATXX(FLOAT32X4); }					// GCC (ARM)
+__Float64x2_t	{ FLOATXX(FLOAT64X2); }					// GCC (ARM)
+__SVFloat32_t	{ FLOATXX(SVFLOAT32); }					// GCC (ARM)
+__SVFloat64_t	{ FLOATXX(SVFLOAT64); }					// GCC (ARM)
 for				{ KEYWORD_RETURN(FOR); }
 forall			{ KEYWORD_RETURN(FORALL); }				// CFA
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ src/Parser/parser.yy	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Aug 13 11:25:16 2024
-// Update Count     : 6740
+// Last Modified On : Thu Sep 12 22:48:32 2024
+// Update Count     : 6741
 //
 
@@ -366,6 +366,7 @@
 %token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED
 %token BOOL COMPLEX IMAGINARY							// C99
-%token INT128 UINT128 uuFLOAT80 uuFLOAT128				// GCC
-%token uFLOAT16 uFLOAT32 uFLOAT32X uFLOAT64 uFLOAT64X uFLOAT128 // GCC
+%token INT128 UINT128 FLOAT80 uuFLOAT128				// GCC
+%token FLOAT16 FLOAT32 FLOAT32X FLOAT64 FLOAT64X FLOAT128 FLOAT128X // GCC
+%token FLOAT32X4 FLOAT64X2 SVFLOAT32 SVFLOAT64 SVBOOL	// GCC (ARM)
 %token DECIMAL32 DECIMAL64 DECIMAL128					// GCC
 %token ZERO_T ONE_T										// CFA
@@ -2364,20 +2365,32 @@
 	| DOUBLE
 		{ $$ = build_basic_type( TypeData::Double ); }
-	| uuFLOAT80
-		{ $$ = build_basic_type( TypeData::uuFloat80 ); }
+	| FLOAT80
+		{ $$ = build_basic_type( TypeData::Float80 ); }
 	| uuFLOAT128
 		{ $$ = build_basic_type( TypeData::uuFloat128 ); }
-	| uFLOAT16
-		{ $$ = build_basic_type( TypeData::uFloat16 ); }
-	| uFLOAT32
-		{ $$ = build_basic_type( TypeData::uFloat32 ); }
-	| uFLOAT32X
-		{ $$ = build_basic_type( TypeData::uFloat32x ); }
-	| uFLOAT64
-		{ $$ = build_basic_type( TypeData::uFloat64 ); }
-	| uFLOAT64X
-		{ $$ = build_basic_type( TypeData::uFloat64x ); }
-	| uFLOAT128
-		{ $$ = build_basic_type( TypeData::uFloat128 ); }
+	| FLOAT16
+		{ $$ = build_basic_type( TypeData::Float16 ); }
+	| FLOAT32
+		{ $$ = build_basic_type( TypeData::Float32 ); }
+	| FLOAT32X
+		{ $$ = build_basic_type( TypeData::Float32x ); }
+	| FLOAT64
+		{ $$ = build_basic_type( TypeData::Float64 ); }
+	| FLOAT64X
+		{ $$ = build_basic_type( TypeData::Float64x ); }
+	| FLOAT128
+		{ $$ = build_basic_type( TypeData::Float128 ); }
+	| FLOAT128X
+		{ $$ = build_basic_type( TypeData::Float128x ); }
+	| FLOAT32X4
+		{ $$ = build_basic_type( TypeData::Float32x4 ); }
+	| FLOAT64X2
+		{ $$ = build_basic_type( TypeData::Float64x2 ); }
+	| SVFLOAT32
+		{ $$ = build_basic_type( TypeData::Svfloat32 ); }
+	| SVFLOAT64
+		{ $$ = build_basic_type( TypeData::Svfloat64 ); }
+	| SVBOOL
+		{ $$ = build_basic_type( TypeData::Svbool ); }
 	| DECIMAL32
 		{ SemanticError( yylloc, "_Decimal32 is currently unimplemented." ); $$ = nullptr; }
Index: src/ResolvExpr/CommonType.cpp
===================================================================
--- src/ResolvExpr/CommonType.cpp	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ src/ResolvExpr/CommonType.cpp	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -52,144 +52,144 @@
 		/*      B */                BT Bool,                BT Char,          BT SignedChar,        BT UnsignedChar,      BT ShortSignedInt,    BT ShortUnsignedInt,
 				             BT SignedInt,         BT UnsignedInt,       BT LongSignedInt,     BT LongUnsignedInt,   BT LongLongSignedInt, BT LongLongUnsignedInt,
-				          BT SignedInt128,      BT UnsignedInt128,            BT uFloat16,     BT uFloat16Complex,            BT uFloat32,     BT uFloat32Complex,
-				                 BT Float,        BT FloatComplex,           BT uFloat32x,    BT uFloat32xComplex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
+				          BT SignedInt128,      BT UnsignedInt128,             BT Float16,      BT Float16Complex,             BT Float32,      BT Float32Complex,
+				                 BT Float,        BT FloatComplex,            BT Float32x,     BT Float32xComplex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
 				  },
 				  {
 		/*      C */                BT Char,                BT Char,          BT SignedChar,        BT UnsignedChar,      BT ShortSignedInt,    BT ShortUnsignedInt,
 				             BT SignedInt,         BT UnsignedInt,       BT LongSignedInt,     BT LongUnsignedInt,   BT LongLongSignedInt, BT LongLongUnsignedInt,
-				          BT SignedInt128,      BT UnsignedInt128,            BT uFloat16,     BT uFloat16Complex,            BT uFloat32,     BT uFloat32Complex,
-				                 BT Float,        BT FloatComplex,           BT uFloat32x,    BT uFloat32xComplex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
+				          BT SignedInt128,      BT UnsignedInt128,             BT Float16,      BT Float16Complex,             BT Float32,      BT Float32Complex,
+				                 BT Float,        BT FloatComplex,            BT Float32x,     BT Float32xComplex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
 				  },
 				  {
 		/*     SC */          BT SignedChar,          BT SignedChar,          BT SignedChar,        BT UnsignedChar,      BT ShortSignedInt,    BT ShortUnsignedInt,
 				             BT SignedInt,         BT UnsignedInt,       BT LongSignedInt,     BT LongUnsignedInt,   BT LongLongSignedInt, BT LongLongUnsignedInt,
-				          BT SignedInt128,      BT UnsignedInt128,            BT uFloat16,     BT uFloat16Complex,            BT uFloat32,     BT uFloat32Complex,
-				                 BT Float,        BT FloatComplex,           BT uFloat32x,    BT uFloat32xComplex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
+				          BT SignedInt128,      BT UnsignedInt128,             BT Float16,      BT Float16Complex,             BT Float32,      BT Float32Complex,
+				                 BT Float,        BT FloatComplex,            BT Float32x,     BT Float32xComplex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
 				  },
 				  {
 		/*     UC */        BT UnsignedChar,        BT UnsignedChar,        BT UnsignedChar,        BT UnsignedChar,      BT ShortSignedInt,    BT ShortUnsignedInt,
 				             BT SignedInt,         BT UnsignedInt,       BT LongSignedInt,     BT LongUnsignedInt,   BT LongLongSignedInt, BT LongLongUnsignedInt,
-				          BT SignedInt128,      BT UnsignedInt128,            BT uFloat16,     BT uFloat16Complex,            BT uFloat32,     BT uFloat32Complex,
-				                 BT Float,        BT FloatComplex,           BT uFloat32x,    BT uFloat32xComplex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
+				          BT SignedInt128,      BT UnsignedInt128,             BT Float16,      BT Float16Complex,             BT Float32,      BT Float32Complex,
+				                 BT Float,        BT FloatComplex,            BT Float32x,     BT Float32xComplex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
 				  },
 				  {
 		/*     SI */      BT ShortSignedInt,      BT ShortSignedInt,      BT ShortSignedInt,      BT ShortSignedInt,      BT ShortSignedInt,    BT ShortUnsignedInt,
 				             BT SignedInt,         BT UnsignedInt,       BT LongSignedInt,     BT LongUnsignedInt,   BT LongLongSignedInt, BT LongLongUnsignedInt,
-				          BT SignedInt128,      BT UnsignedInt128,            BT uFloat16,     BT uFloat16Complex,            BT uFloat32,     BT uFloat32Complex,
-				                 BT Float,        BT FloatComplex,           BT uFloat32x,    BT uFloat32xComplex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
+				          BT SignedInt128,      BT UnsignedInt128,             BT Float16,      BT Float16Complex,             BT Float32,      BT Float32Complex,
+				                 BT Float,        BT FloatComplex,            BT Float32x,     BT Float32xComplex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
 				  },
 				  {
 		/*    SUI */    BT ShortUnsignedInt,    BT ShortUnsignedInt,    BT ShortUnsignedInt,    BT ShortUnsignedInt,    BT ShortUnsignedInt,    BT ShortUnsignedInt,
 				             BT SignedInt,         BT UnsignedInt,       BT LongSignedInt,     BT LongUnsignedInt,   BT LongLongSignedInt, BT LongLongUnsignedInt,
-				          BT SignedInt128,      BT UnsignedInt128,            BT uFloat16,     BT uFloat16Complex,            BT uFloat32,     BT uFloat32Complex,
-				                 BT Float,        BT FloatComplex,           BT uFloat32x,    BT uFloat32xComplex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
+				          BT SignedInt128,      BT UnsignedInt128,             BT Float16,      BT Float16Complex,             BT Float32,      BT Float32Complex,
+				                 BT Float,        BT FloatComplex,            BT Float32x,     BT Float32xComplex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
 				  },
 				  {
 		/*      I */           BT SignedInt,           BT SignedInt,           BT SignedInt,           BT SignedInt,           BT SignedInt,           BT SignedInt,
 				             BT SignedInt,         BT UnsignedInt,       BT LongSignedInt,     BT LongUnsignedInt,   BT LongLongSignedInt, BT LongLongUnsignedInt,
-				          BT SignedInt128,      BT UnsignedInt128,            BT uFloat16,     BT uFloat16Complex,            BT uFloat32,     BT uFloat32Complex,
-				                 BT Float,        BT FloatComplex,           BT uFloat32x,    BT uFloat32xComplex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
+				          BT SignedInt128,      BT UnsignedInt128,             BT Float16,      BT Float16Complex,             BT Float32,      BT Float32Complex,
+				                 BT Float,        BT FloatComplex,            BT Float32x,     BT Float32xComplex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
 				  },
 				  {
 		/*     UI */         BT UnsignedInt,         BT UnsignedInt,         BT UnsignedInt,         BT UnsignedInt,         BT UnsignedInt,         BT UnsignedInt,
 				           BT UnsignedInt,         BT UnsignedInt,       BT LongSignedInt,     BT LongUnsignedInt,   BT LongLongSignedInt, BT LongLongUnsignedInt,
-				          BT SignedInt128,      BT UnsignedInt128,            BT uFloat16,     BT uFloat16Complex,            BT uFloat32,     BT uFloat32Complex,
-				                 BT Float,        BT FloatComplex,           BT uFloat32x,    BT uFloat32xComplex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
+				          BT SignedInt128,      BT UnsignedInt128,             BT Float16,      BT Float16Complex,             BT Float32,      BT Float32Complex,
+				                 BT Float,        BT FloatComplex,            BT Float32x,     BT Float32xComplex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
 				  },
 				  {
 		/*     LI */       BT LongSignedInt,       BT LongSignedInt,       BT LongSignedInt,       BT LongSignedInt,       BT LongSignedInt,       BT LongSignedInt,
 				         BT LongSignedInt,       BT LongSignedInt,       BT LongSignedInt,     BT LongUnsignedInt,   BT LongLongSignedInt, BT LongLongUnsignedInt,
-				          BT SignedInt128,      BT UnsignedInt128,            BT uFloat16,     BT uFloat16Complex,            BT uFloat32,     BT uFloat32Complex,
-				                 BT Float,        BT FloatComplex,           BT uFloat32x,    BT uFloat32xComplex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
+				          BT SignedInt128,      BT UnsignedInt128,             BT Float16,      BT Float16Complex,             BT Float32,      BT Float32Complex,
+				                 BT Float,        BT FloatComplex,            BT Float32x,     BT Float32xComplex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
 				  },
 				  {
 		/*    LUI */     BT LongUnsignedInt,     BT LongUnsignedInt,     BT LongUnsignedInt,     BT LongUnsignedInt,     BT LongUnsignedInt,     BT LongUnsignedInt,
 				       BT LongUnsignedInt,     BT LongUnsignedInt,     BT LongUnsignedInt,     BT LongUnsignedInt,   BT LongLongSignedInt, BT LongLongUnsignedInt,
-				          BT SignedInt128,      BT UnsignedInt128,            BT uFloat16,     BT uFloat16Complex,            BT uFloat32,     BT uFloat32Complex,
-				                 BT Float,        BT FloatComplex,           BT uFloat32x,    BT uFloat32xComplex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
+				          BT SignedInt128,      BT UnsignedInt128,             BT Float16,      BT Float16Complex,             BT Float32,      BT Float32Complex,
+				                 BT Float,        BT FloatComplex,            BT Float32x,     BT Float32xComplex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
 				  },
 				  {
 		/*    LLI */   BT LongLongSignedInt,   BT LongLongSignedInt,   BT LongLongSignedInt,   BT LongLongSignedInt,   BT LongLongSignedInt,   BT LongLongSignedInt,
 				     BT LongLongSignedInt,   BT LongLongSignedInt,   BT LongLongSignedInt,   BT LongLongSignedInt,   BT LongLongSignedInt, BT LongLongUnsignedInt,
-				          BT SignedInt128,      BT UnsignedInt128,            BT uFloat16,     BT uFloat16Complex,            BT uFloat32,     BT uFloat32Complex,
-				                 BT Float,        BT FloatComplex,           BT uFloat32x,    BT uFloat32xComplex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
+				          BT SignedInt128,      BT UnsignedInt128,             BT Float16,      BT Float16Complex,             BT Float32,      BT Float32Complex,
+				                 BT Float,        BT FloatComplex,            BT Float32x,     BT Float32xComplex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
 				  },
 				  {
 		/*   LLUI */ BT LongLongUnsignedInt, BT LongLongUnsignedInt, BT LongLongUnsignedInt, BT LongLongUnsignedInt, BT LongLongUnsignedInt, BT LongLongUnsignedInt,
 				   BT LongLongUnsignedInt, BT LongLongUnsignedInt, BT LongLongUnsignedInt, BT LongLongUnsignedInt, BT LongLongUnsignedInt, BT LongLongUnsignedInt,
-				          BT SignedInt128,      BT UnsignedInt128,            BT uFloat16,     BT uFloat16Complex,            BT uFloat32,     BT uFloat32Complex,
-				                 BT Float,        BT FloatComplex,           BT uFloat32x,    BT uFloat32xComplex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
+				          BT SignedInt128,      BT UnsignedInt128,             BT Float16,      BT Float16Complex,             BT Float32,      BT Float32Complex,
+				                 BT Float,        BT FloatComplex,            BT Float32x,     BT Float32xComplex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
 				  },
 				  {
 		/*     IB */        BT SignedInt128,        BT SignedInt128,        BT SignedInt128,        BT SignedInt128,        BT SignedInt128,        BT SignedInt128,
 				          BT SignedInt128,        BT SignedInt128,        BT SignedInt128,        BT SignedInt128,        BT SignedInt128,        BT SignedInt128,
-				          BT SignedInt128,      BT UnsignedInt128,            BT uFloat16,     BT uFloat16Complex,            BT uFloat32,     BT uFloat32Complex,
-				                 BT Float,        BT FloatComplex,           BT uFloat32x,    BT uFloat32xComplex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
+				          BT SignedInt128,      BT UnsignedInt128,             BT Float16,      BT Float16Complex,             BT Float32,      BT Float32Complex,
+				                 BT Float,        BT FloatComplex,            BT Float32x,     BT Float32xComplex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
 				  },
 				  {
 		/*    UIB */      BT UnsignedInt128,      BT UnsignedInt128,      BT UnsignedInt128,      BT UnsignedInt128,      BT UnsignedInt128,      BT UnsignedInt128,
 				        BT UnsignedInt128,      BT UnsignedInt128,      BT UnsignedInt128,      BT UnsignedInt128,      BT UnsignedInt128,      BT UnsignedInt128,
-				        BT UnsignedInt128,      BT UnsignedInt128,            BT uFloat16,     BT uFloat16Complex,            BT uFloat32,     BT uFloat32Complex,
-				                 BT Float,        BT FloatComplex,           BT uFloat32x,    BT uFloat32xComplex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
-				  },
-				  {
-		/*    _FH */            BT uFloat16,            BT uFloat16,            BT uFloat16,            BT uFloat16,            BT uFloat16,            BT uFloat16,
-				              BT uFloat16,            BT uFloat16,            BT uFloat16,            BT uFloat16,            BT uFloat16,            BT uFloat16,
-				              BT uFloat16,            BT uFloat16,            BT uFloat16,     BT uFloat16Complex,            BT uFloat32,     BT uFloat32Complex,
-				                 BT Float,        BT FloatComplex,           BT uFloat32x,    BT uFloat32xComplex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
-				  },
-				  {
-		/*    _FH */     BT uFloat16Complex,     BT uFloat16Complex,     BT uFloat16Complex,     BT uFloat16Complex,     BT uFloat16Complex,     BT uFloat16Complex,
-				       BT uFloat16Complex,     BT uFloat16Complex,     BT uFloat16Complex,     BT uFloat16Complex,     BT uFloat16Complex,     BT uFloat16Complex,
-				       BT uFloat16Complex,     BT uFloat16Complex,     BT uFloat16Complex,     BT uFloat16Complex,     BT uFloat32Complex,     BT uFloat32Complex,
-				          BT FloatComplex,        BT FloatComplex,    BT uFloat32xComplex,    BT uFloat32xComplex,     BT uFloat64Complex,     BT uFloat64Complex,
-				         BT DoubleComplex,       BT DoubleComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat128Complex,
-				      BT uFloat128Complex,    BT uFloat128Complex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,
-				  },
-				  {
-		/*     _F */            BT uFloat32,            BT uFloat32,            BT uFloat32,            BT uFloat32,            BT uFloat32,            BT uFloat32,
-				              BT uFloat32,            BT uFloat32,            BT uFloat32,            BT uFloat32,            BT uFloat32,            BT uFloat32,
-				              BT uFloat32,            BT uFloat32,            BT uFloat32,     BT uFloat32Complex,            BT uFloat32,     BT uFloat32Complex,
-				                 BT Float,        BT FloatComplex,           BT uFloat32x,    BT uFloat32xComplex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
-				  },
-				  {
-		/*    _FC */     BT uFloat32Complex,     BT uFloat32Complex,     BT uFloat32Complex,     BT uFloat32Complex,     BT uFloat32Complex,     BT uFloat32Complex,
-				       BT uFloat32Complex,     BT uFloat32Complex,     BT uFloat32Complex,     BT uFloat32Complex,     BT uFloat32Complex,     BT uFloat32Complex,
-				       BT uFloat32Complex,     BT uFloat32Complex,     BT uFloat32Complex,     BT uFloat32Complex,     BT uFloat32Complex,     BT uFloat32Complex,
-				          BT FloatComplex,        BT FloatComplex,    BT uFloat32xComplex,    BT uFloat32xComplex,     BT uFloat64Complex,     BT uFloat64Complex,
-				         BT DoubleComplex,       BT DoubleComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat128Complex,
-				      BT uFloat128Complex,    BT uFloat128Complex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,
+				        BT UnsignedInt128,      BT UnsignedInt128,             BT Float16,      BT Float16Complex,             BT Float32,      BT Float32Complex,
+				                 BT Float,        BT FloatComplex,            BT Float32x,     BT Float32xComplex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
+				  },
+				  {
+		/*    _FH */             BT Float16,             BT Float16,             BT Float16,             BT Float16,             BT Float16,             BT Float16,
+				               BT Float16,             BT Float16,             BT Float16,             BT Float16,             BT Float16,             BT Float16,
+				               BT Float16,             BT Float16,             BT Float16,      BT Float16Complex,             BT Float32,      BT Float32Complex,
+				                 BT Float,        BT FloatComplex,            BT Float32x,     BT Float32xComplex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
+				  },
+				  {
+		/*    _FH */      BT Float16Complex,      BT Float16Complex,      BT Float16Complex,      BT Float16Complex,      BT Float16Complex,      BT Float16Complex,
+				        BT Float16Complex,      BT Float16Complex,      BT Float16Complex,      BT Float16Complex,      BT Float16Complex,      BT Float16Complex,
+				        BT Float16Complex,      BT Float16Complex,      BT Float16Complex,      BT Float16Complex,      BT Float32Complex,      BT Float32Complex,
+				          BT FloatComplex,        BT FloatComplex,     BT Float32xComplex,     BT Float32xComplex,      BT Float64Complex,      BT Float64Complex,
+				         BT DoubleComplex,       BT DoubleComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float128Complex,
+				       BT Float128Complex,     BT Float128Complex,   BT LongDoubleComplex,   BT LongDoubleComplex,    BT Float128xComplex,    BT Float128xComplex,
+				  },
+				  {
+		/*     _F */             BT Float32,             BT Float32,             BT Float32,             BT Float32,             BT Float32,             BT Float32,
+				               BT Float32,             BT Float32,             BT Float32,             BT Float32,             BT Float32,             BT Float32,
+				               BT Float32,             BT Float32,             BT Float32,      BT Float32Complex,             BT Float32,      BT Float32Complex,
+				                 BT Float,        BT FloatComplex,            BT Float32x,     BT Float32xComplex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
+				  },
+				  {
+		/*    _FC */      BT Float32Complex,      BT Float32Complex,      BT Float32Complex,      BT Float32Complex,      BT Float32Complex,      BT Float32Complex,
+				        BT Float32Complex,      BT Float32Complex,      BT Float32Complex,      BT Float32Complex,      BT Float32Complex,      BT Float32Complex,
+				        BT Float32Complex,      BT Float32Complex,      BT Float32Complex,      BT Float32Complex,      BT Float32Complex,      BT Float32Complex,
+				          BT FloatComplex,        BT FloatComplex,     BT Float32xComplex,     BT Float32xComplex,      BT Float64Complex,      BT Float64Complex,
+				         BT DoubleComplex,       BT DoubleComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float128Complex,
+				       BT Float128Complex,     BT Float128Complex,   BT LongDoubleComplex,   BT LongDoubleComplex,    BT Float128xComplex,    BT Float128xComplex,
 				  },
 				  {
@@ -197,7 +197,7 @@
 				                 BT Float,               BT Float,               BT Float,               BT Float,               BT Float,               BT Float,
 				                 BT Float,               BT Float,               BT Float,        BT FloatComplex,               BT Float,        BT FloatComplex,
-				                 BT Float,        BT FloatComplex,           BT uFloat32x,    BT uFloat32xComplex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
+				                 BT Float,        BT FloatComplex,            BT Float32x,     BT Float32xComplex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
 				  },
 				  {
@@ -205,39 +205,39 @@
 				          BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,
 				          BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,
-				          BT FloatComplex,        BT FloatComplex,    BT uFloat32xComplex,    BT uFloat32xComplex,     BT uFloat64Complex,     BT uFloat64Complex,
-				         BT DoubleComplex,       BT DoubleComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat128Complex,
-				      BT uFloat128Complex,    BT uFloat128Complex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,
-				  },
-				  {
-		/*    _FX */           BT uFloat32x,           BT uFloat32x,           BT uFloat32x,           BT uFloat32x,           BT uFloat32x,           BT uFloat32x,
-				             BT uFloat32x,           BT uFloat32x,           BT uFloat32x,           BT uFloat32x,           BT uFloat32x,           BT uFloat32x,
-				             BT uFloat32x,           BT uFloat32x,           BT uFloat32x,    BT uFloat32xComplex,           BT uFloat32x,    BT uFloat32xComplex,
-				             BT uFloat32x,    BT uFloat32xComplex,           BT uFloat32x,    BT uFloat32xComplex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
-				  },
-				  {
-		/*   _FXC */    BT uFloat32xComplex,    BT uFloat32xComplex,    BT uFloat32xComplex,    BT uFloat32xComplex,    BT uFloat32xComplex,    BT uFloat32xComplex,
-				      BT uFloat32xComplex,    BT uFloat32xComplex,    BT uFloat32xComplex,    BT uFloat32xComplex,    BT uFloat32xComplex,    BT uFloat32xComplex,
-				      BT uFloat32xComplex,    BT uFloat32xComplex,    BT uFloat32xComplex,    BT uFloat32xComplex,    BT uFloat32xComplex,    BT uFloat32xComplex,
-				      BT uFloat32xComplex,    BT uFloat32xComplex,    BT uFloat32xComplex,    BT uFloat32xComplex,     BT uFloat64Complex,     BT uFloat64Complex,
-				         BT DoubleComplex,       BT DoubleComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat128Complex,
-				      BT uFloat128Complex,    BT uFloat128Complex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,
-				  },
-				  {
-		/*     FD */            BT uFloat64,            BT uFloat64,            BT uFloat64,            BT uFloat64,            BT uFloat64,            BT uFloat64,
-				              BT uFloat64,            BT uFloat64,            BT uFloat64,            BT uFloat64,            BT uFloat64,            BT uFloat64,
-				              BT uFloat64,            BT uFloat64,            BT uFloat64,     BT uFloat64Complex,            BT uFloat64,     BT uFloat64Complex,
-				              BT uFloat64,     BT uFloat64Complex,            BT uFloat64,     BT uFloat64Complex,            BT uFloat64,     BT uFloat64Complex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
-				  },
-				  {
-		/*   _FDC */     BT uFloat64Complex,     BT uFloat64Complex,     BT uFloat64Complex,     BT uFloat64Complex,     BT uFloat64Complex,     BT uFloat64Complex,
-				       BT uFloat64Complex,     BT uFloat64Complex,     BT uFloat64Complex,     BT uFloat64Complex,     BT uFloat64Complex,     BT uFloat64Complex,
-				       BT uFloat64Complex,     BT uFloat64Complex,     BT uFloat64Complex,     BT uFloat64Complex,     BT uFloat64Complex,     BT uFloat64Complex,
-				       BT uFloat64Complex,     BT uFloat64Complex,     BT uFloat64Complex,     BT uFloat64Complex,     BT uFloat64Complex,     BT uFloat64Complex,
-				         BT DoubleComplex,       BT DoubleComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat128Complex,
-				      BT uFloat128Complex,    BT uFloat128Complex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,
+				          BT FloatComplex,        BT FloatComplex,     BT Float32xComplex,     BT Float32xComplex,      BT Float64Complex,      BT Float64Complex,
+				         BT DoubleComplex,       BT DoubleComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float128Complex,
+				       BT Float128Complex,     BT Float128Complex,   BT LongDoubleComplex,   BT LongDoubleComplex,    BT Float128xComplex,    BT Float128xComplex,
+				  },
+				  {
+		/*    _FX */            BT Float32x,            BT Float32x,            BT Float32x,            BT Float32x,            BT Float32x,            BT Float32x,
+				              BT Float32x,            BT Float32x,            BT Float32x,            BT Float32x,            BT Float32x,            BT Float32x,
+				              BT Float32x,            BT Float32x,            BT Float32x,     BT Float32xComplex,            BT Float32x,     BT Float32xComplex,
+				              BT Float32x,     BT Float32xComplex,            BT Float32x,     BT Float32xComplex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
+				  },
+				  {
+		/*   _FXC */     BT Float32xComplex,     BT Float32xComplex,     BT Float32xComplex,     BT Float32xComplex,     BT Float32xComplex,     BT Float32xComplex,
+				       BT Float32xComplex,     BT Float32xComplex,     BT Float32xComplex,     BT Float32xComplex,     BT Float32xComplex,     BT Float32xComplex,
+				       BT Float32xComplex,     BT Float32xComplex,     BT Float32xComplex,     BT Float32xComplex,     BT Float32xComplex,     BT Float32xComplex,
+				       BT Float32xComplex,     BT Float32xComplex,     BT Float32xComplex,     BT Float32xComplex,      BT Float64Complex,      BT Float64Complex,
+				         BT DoubleComplex,       BT DoubleComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float128Complex,
+				       BT Float128Complex,     BT Float128Complex,   BT LongDoubleComplex,   BT LongDoubleComplex,    BT Float128xComplex,    BT Float128xComplex,
+				  },
+				  {
+		/*     FD */             BT Float64,             BT Float64,             BT Float64,             BT Float64,             BT Float64,             BT Float64,
+				               BT Float64,             BT Float64,             BT Float64,             BT Float64,             BT Float64,             BT Float64,
+				               BT Float64,             BT Float64,             BT Float64,      BT Float64Complex,             BT Float64,      BT Float64Complex,
+				               BT Float64,      BT Float64Complex,             BT Float64,      BT Float64Complex,             BT Float64,      BT Float64Complex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
+				  },
+				  {
+		/*   _FDC */      BT Float64Complex,      BT Float64Complex,      BT Float64Complex,      BT Float64Complex,      BT Float64Complex,      BT Float64Complex,
+				        BT Float64Complex,      BT Float64Complex,      BT Float64Complex,      BT Float64Complex,      BT Float64Complex,      BT Float64Complex,
+				        BT Float64Complex,      BT Float64Complex,      BT Float64Complex,      BT Float64Complex,      BT Float64Complex,      BT Float64Complex,
+				        BT Float64Complex,      BT Float64Complex,      BT Float64Complex,      BT Float64Complex,      BT Float64Complex,      BT Float64Complex,
+				         BT DoubleComplex,       BT DoubleComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float128Complex,
+				       BT Float128Complex,     BT Float128Complex,   BT LongDoubleComplex,   BT LongDoubleComplex,    BT Float128xComplex,    BT Float128xComplex,
 				  },
 				  {
@@ -246,6 +246,6 @@
 				                BT Double,              BT Double,              BT Double,       BT DoubleComplex,              BT Double,       BT DoubleComplex,
 				                BT Double,       BT DoubleComplex,              BT Double,       BT DoubleComplex,              BT Double,       BT DoubleComplex,
-				                BT Double,       BT DoubleComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
+				                BT Double,       BT DoubleComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
 				  },
 				  {
@@ -254,54 +254,54 @@
 				         BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,
 				         BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,
-				         BT DoubleComplex,       BT DoubleComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat128Complex,
-				      BT uFloat128Complex,    BT uFloat128Complex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,
-				  },
-				  {
-		/*   F80X */           BT uFloat64x,           BT uFloat64x,           BT uFloat64x,           BT uFloat64x,           BT uFloat64x,           BT uFloat64x,
-				             BT uFloat64x,           BT uFloat64x,           BT uFloat64x,           BT uFloat64x,           BT uFloat64x,           BT uFloat64x,
-				             BT uFloat64x,           BT uFloat64x,           BT uFloat64x,    BT uFloat64xComplex,           BT uFloat64x,    BT uFloat64xComplex,
-				             BT uFloat64x,    BT uFloat64xComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uFloat64x,    BT uFloat64xComplex,
-				             BT uFloat64x,    BT uFloat64xComplex,           BT uFloat64x,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
-				  },
-				  {
-		/*  _FDXC */    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,
-				      BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,
-				      BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,
-				      BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,
-				      BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat64xComplex,    BT uFloat128Complex,
-				      BT uFloat128Complex,    BT uFloat128Complex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,
-				  },
-				  {
-		/*    F80 */           BT uuFloat80,           BT uuFloat80,           BT uuFloat80,           BT uuFloat80,           BT uuFloat80,           BT uuFloat80,
-				             BT uuFloat80,           BT uuFloat80,           BT uuFloat80,           BT uuFloat80,           BT uuFloat80,           BT uuFloat80,
-				             BT uuFloat80,           BT uuFloat80,           BT uuFloat80,    BT uFloat64xComplex,           BT uuFloat80,    BT uFloat64xComplex,
-				             BT uuFloat80,    BT uFloat64xComplex,           BT uuFloat80,    BT uFloat64xComplex,           BT uuFloat80,    BT uFloat64xComplex,
-				             BT uuFloat80,    BT uFloat64xComplex,           BT uuFloat80,    BT uFloat64xComplex,           BT uuFloat80,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
-				  },
-				  {
-		/*    _FB */           BT uFloat128,           BT uFloat128,           BT uFloat128,           BT uFloat128,           BT uFloat128,           BT uFloat128,
-				             BT uFloat128,           BT uFloat128,           BT uFloat128,           BT uFloat128,           BT uFloat128,           BT uFloat128,
-				             BT uFloat128,           BT uFloat128,           BT uFloat128,    BT uFloat128Complex,           BT uFloat128,    BT uFloat128Complex,
-				             BT uFloat128,    BT uFloat128Complex,           BT uFloat128,    BT uFloat128Complex,           BT uFloat128,    BT uFloat128Complex,
-				             BT uFloat128,    BT uFloat128Complex,           BT uFloat128,    BT uFloat128Complex,           BT uFloat128,           BT uFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
-				  },
-				  {
-		/*  _FLDC */    BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,
-				      BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,
-				      BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,
-				      BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,
-				      BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,    BT uFloat128Complex,
-				      BT uFloat128Complex,    BT uFloat128Complex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,
+				         BT DoubleComplex,       BT DoubleComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float128Complex,
+				       BT Float128Complex,     BT Float128Complex,   BT LongDoubleComplex,   BT LongDoubleComplex,    BT Float128xComplex,    BT Float128xComplex,
+				  },
+				  {
+		/*   F80X */            BT Float64x,            BT Float64x,            BT Float64x,            BT Float64x,            BT Float64x,            BT Float64x,
+				              BT Float64x,            BT Float64x,            BT Float64x,            BT Float64x,            BT Float64x,            BT Float64x,
+				              BT Float64x,            BT Float64x,            BT Float64x,     BT Float64xComplex,            BT Float64x,     BT Float64xComplex,
+				              BT Float64x,     BT Float64xComplex,            BT Float64x,     BT Float64xComplex,            BT Float64x,     BT Float64xComplex,
+				              BT Float64x,     BT Float64xComplex,            BT Float64x,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
+				  },
+				  {
+		/*  _FDXC */     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,
+				       BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,
+				       BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,
+				       BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,
+				       BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float64xComplex,     BT Float128Complex,
+				       BT Float128Complex,     BT Float128Complex,   BT LongDoubleComplex,   BT LongDoubleComplex,    BT Float128xComplex,    BT Float128xComplex,
+				  },
+				  {
+		/*    F80 */             BT Float80,             BT Float80,             BT Float80,             BT Float80,             BT Float80,             BT Float80,
+				               BT Float80,             BT Float80,             BT Float80,             BT Float80,             BT Float80,             BT Float80,
+				               BT Float80,             BT Float80,             BT Float80,     BT Float64xComplex,             BT Float80,     BT Float64xComplex,
+				               BT Float80,     BT Float64xComplex,             BT Float80,     BT Float64xComplex,             BT Float80,     BT Float64xComplex,
+				               BT Float80,     BT Float64xComplex,             BT Float80,     BT Float64xComplex,             BT Float80,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
+				  },
+				  {
+		/*    _FB */            BT Float128,            BT Float128,            BT Float128,            BT Float128,            BT Float128,            BT Float128,
+				              BT Float128,            BT Float128,            BT Float128,            BT Float128,            BT Float128,            BT Float128,
+				              BT Float128,            BT Float128,            BT Float128,     BT Float128Complex,            BT Float128,     BT Float128Complex,
+				              BT Float128,     BT Float128Complex,            BT Float128,     BT Float128Complex,            BT Float128,     BT Float128Complex,
+				              BT Float128,     BT Float128Complex,            BT Float128,     BT Float128Complex,            BT Float128,            BT Float128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
+				  },
+				  {
+		/*  _FLDC */     BT Float128Complex,     BT Float128Complex,     BT Float128Complex,     BT Float128Complex,     BT Float128Complex,     BT Float128Complex,
+				       BT Float128Complex,     BT Float128Complex,     BT Float128Complex,     BT Float128Complex,     BT Float128Complex,     BT Float128Complex,
+				       BT Float128Complex,     BT Float128Complex,     BT Float128Complex,     BT Float128Complex,     BT Float128Complex,     BT Float128Complex,
+				       BT Float128Complex,     BT Float128Complex,     BT Float128Complex,     BT Float128Complex,     BT Float128Complex,     BT Float128Complex,
+				       BT Float128Complex,     BT Float128Complex,     BT Float128Complex,     BT Float128Complex,     BT Float128Complex,     BT Float128Complex,
+				       BT Float128Complex,     BT Float128Complex,   BT LongDoubleComplex,   BT LongDoubleComplex,    BT Float128xComplex,    BT Float128xComplex,
 				  },
 				  {
 		/*     FB */          BT uuFloat128,          BT uuFloat128,          BT uuFloat128,          BT uuFloat128,          BT uuFloat128,          BT uuFloat128,
 				            BT uuFloat128,          BT uuFloat128,          BT uuFloat128,          BT uuFloat128,          BT uuFloat128,          BT uuFloat128,
-				            BT uuFloat128,          BT uuFloat128,          BT uuFloat128,    BT uFloat128Complex,          BT uuFloat128,    BT uFloat128Complex,
-				            BT uuFloat128,    BT uFloat128Complex,          BT uuFloat128,    BT uFloat128Complex,          BT uuFloat128,    BT uFloat128Complex,
-				            BT uuFloat128,    BT uFloat128Complex,          BT uuFloat128,    BT uFloat128Complex,          BT uuFloat128,          BT uuFloat128,
-				      BT uFloat128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
+				            BT uuFloat128,          BT uuFloat128,          BT uuFloat128,     BT Float128Complex,          BT uuFloat128,     BT Float128Complex,
+				            BT uuFloat128,     BT Float128Complex,          BT uuFloat128,     BT Float128Complex,          BT uuFloat128,     BT Float128Complex,
+				            BT uuFloat128,     BT Float128Complex,          BT uuFloat128,     BT Float128Complex,          BT uuFloat128,          BT uuFloat128,
+				       BT Float128Complex,          BT uuFloat128,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
 				  },
 				  {
@@ -311,5 +311,5 @@
 				            BT LongDouble,   BT LongDoubleComplex,          BT LongDouble,   BT LongDoubleComplex,          BT LongDouble,   BT LongDoubleComplex,
 				            BT LongDouble,   BT LongDoubleComplex,          BT LongDouble,   BT LongDoubleComplex,          BT LongDouble,          BT LongDouble,
-				     BT LongDoubleComplex,          BT LongDouble,          BT LongDouble,   BT LongDoubleComplex,          BT uFloat128x,   BT uFloat128xComplex,
+				     BT LongDoubleComplex,          BT LongDouble,          BT LongDouble,   BT LongDoubleComplex,           BT Float128x,    BT Float128xComplex,
 				  },
 				  {
@@ -319,21 +319,21 @@
 				     BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,
 				     BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,
-				     BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,
-				  },
-				  {
-		/*   _FBX */          BT uFloat128x,          BT uFloat128x,          BT uFloat128x,          BT uFloat128x,          BT uFloat128x,          BT uFloat128x,
-				            BT uFloat128x,          BT uFloat128x,          BT uFloat128x,          BT uFloat128x,          BT uFloat128x,          BT uFloat128x,
-				            BT uFloat128x,          BT uFloat128x,          BT uFloat128x,   BT uFloat128xComplex,          BT uFloat128x,   BT uFloat128xComplex,
-				            BT uFloat128x,   BT uFloat128xComplex,          BT uFloat128x,   BT uFloat128xComplex,          BT uFloat128x,   BT uFloat128xComplex,
-				            BT uFloat128x,   BT uFloat128xComplex,          BT uFloat128x,   BT uFloat128xComplex,          BT uFloat128x,          BT uFloat128x,
-				     BT uFloat128xComplex,          BT uFloat128x,          BT uFloat128x,   BT uFloat128xComplex,          BT uFloat128x,   BT uFloat128xComplex,
-				  },
-				  {
-		/* _FLDXC */   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,
-				     BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,
-				     BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,
-				     BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,
-				     BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,
-				     BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,   BT uFloat128xComplex,
+				     BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,    BT Float128xComplex,    BT Float128xComplex,
+				  },
+				  {
+		/*   _FBX */           BT Float128x,           BT Float128x,           BT Float128x,           BT Float128x,           BT Float128x,           BT Float128x,
+				             BT Float128x,           BT Float128x,           BT Float128x,           BT Float128x,           BT Float128x,           BT Float128x,
+				             BT Float128x,           BT Float128x,           BT Float128x,    BT Float128xComplex,           BT Float128x,    BT Float128xComplex,
+				             BT Float128x,    BT Float128xComplex,           BT Float128x,    BT Float128xComplex,           BT Float128x,    BT Float128xComplex,
+				             BT Float128x,    BT Float128xComplex,           BT Float128x,    BT Float128xComplex,           BT Float128x,           BT Float128x,
+				      BT Float128xComplex,           BT Float128x,           BT Float128x,    BT Float128xComplex,           BT Float128x,    BT Float128xComplex,
+				  },
+				  {
+		/* _FLDXC */    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,
+				      BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,
+				      BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,
+				      BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,
+				      BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,
+				      BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,    BT Float128xComplex,
 				  },
 	}; // commonTypes
Index: tests/Makefile.am
===================================================================
--- tests/Makefile.am	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ tests/Makefile.am	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -81,11 +81,6 @@
 	avltree/avl-private.h \
 	avltree/avl.h \
-	configs/.in/parseconfig-all.txt \
-	configs/.in/parseconfig-errors.txt \
-	configs/.in/parseconfig-missing.txt \
 	exceptions/except-io.hfa \
 	exceptions/with-threads.hfa \
-	io/.in/io.data \
-	io/.in/many_read.data \
 	meta/fork+exec.hfa \
 	concurrency/clib_tls.c \
@@ -100,7 +95,7 @@
 	echo "Gathering test files"
 	for file in `${TEST_PY} --list-dist`; do \
-		if test -f ${srcdir}/$${file}; then \
+		if ls ${srcdir}/$${file} > /dev/null 2>&1; then \
 			${MKDIR_P} $$(dirname ${distdir}/$${file}); \
-			cp -df ${srcdir}/$${file} ${distdir}/$${file}; \
+			cp -df ${srcdir}/$${file} $$(dirname ${distdir}/$${file}); \
 		fi; \
 	done
Index: tests/array-collections/.expect/array-raii-c.txt
===================================================================
--- tests/array-collections/.expect/array-raii-c.txt	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ tests/array-collections/.expect/array-raii-c.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -70,5 +70,5 @@
 dtor 1
 dtor 0
-=== uninit
+=== uninit ( uNoCtor[] )
  [1]
 before ctors
Index: tests/array-collections/.expect/array-raii-cfa.txt
===================================================================
--- tests/array-collections/.expect/array-raii-cfa.txt	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ tests/array-collections/.expect/array-raii-cfa.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -70,5 +70,5 @@
 dtor 1
 dtor 0
-=== uninit
+=== uninit ( uNoCtor[] )
  [1]
 before ctors
@@ -108,2 +108,56 @@
 dtor 101
 dtor 100
+=== uninit alt ( uArray )
+ [1]
+before ctors
+ctor 0
+ctor 999
+ctor 888
+ctor 3
+ctor 4
+func 0
+func 999
+func 888
+func 3
+func 4
+dtor 4
+dtor 3
+dtor 888
+dtor 999
+dtor 0
+ [2]
+before ctors
+ctor 100
+ctor 101
+ctor 102
+ctor 110
+ctor 999
+ctor 888
+func 100 at (0, 0)
+func 101 at (0, 1)
+func 102 at (0, 2)
+func 110 at (1, 0)
+func 999 at (1, 1)
+func 888 at (1, 2)
+dtor 888
+dtor 999
+dtor 110
+dtor 102
+dtor 101
+dtor 100
+=== uC++ cheat sheet
+ctor 0
+ctor 1
+ctor 2
+ctor 3
+ctor 4
+0
+1
+2
+3
+4
+dtor 4
+dtor 3
+dtor 2
+dtor 1
+dtor 0
Index: tests/array-collections/array-raii-c.cfa
===================================================================
--- tests/array-collections/array-raii-c.cfa	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ tests/array-collections/array-raii-c.cfa	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -20,2 +20,4 @@
 
 #include "array-raii.hfa"
+
+void test_extras() {}
Index: tests/array-collections/array-raii-cfa.cfa
===================================================================
--- tests/array-collections/array-raii-cfa.cfa	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ tests/array-collections/array-raii-cfa.cfa	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -16,4 +16,6 @@
 // CFA array means like `array(float, 17) x;`
 
+
+#include <fstream.hfa>
 #include <collections/array.hfa>
 
@@ -22,2 +24,58 @@
 
 #include "array-raii.hfa"
+
+void test_uninit_alt() {
+    printf(" [1]\n");
+    {
+        array(thing, 5) a = { delay_init };
+        printf("before ctors\n");
+        for(i; 5) {
+            if (i == 1)
+                (a[i]){};  // no need for `emplace` bc no-arg ctor call means elem's real ctor
+            else if (i == 2)
+                (a[i]){888};
+            else
+                (a[i]){i};
+        }
+        for(i; 5) printf("func %d\n", a[i].mem);
+    }
+    printf(" [2]\n");
+    {
+        array(thing, 2, 3) a = { delay_init };
+        printf("before ctors\n");
+        for(i; 2) for(j; 3) {
+            if (i == 1 && j == 1)
+                (a[i][j]){};
+            else if (i == 1 && j == 2)
+                (a[i][j]){888};
+            else
+                (a[i][j]){100 + 10 * i + j};
+        }
+        for(i; 2) for(j; 3) {
+            printf("func %d at (%d, %d)\n", a[i][j].mem, i, j);
+        }
+    }
+}
+
+void test_uCxxCheatSheet() {
+    struct S {
+        int i;
+    };
+    void ?{}( S & s, int i ) { s.i = i; sout | "ctor" | s.i; }
+    void ^?{}( S & s ) { sout | "dtor" | s.i; }
+//  int main() {
+        enum { N = 5 };
+        array(S, N) s = { delay_init };   // no constructor calls
+        for ( i; N ) s[i]{ i };
+        for ( i; N ) sout | s[i].i;
+//  }
+}
+
+void test_extras() {
+
+    printf("=== uninit alt ( uArray )\n");
+    test_uninit_alt();
+
+    printf("=== uC++ cheat sheet\n");
+    test_uCxxCheatSheet();
+}
Index: tests/array-collections/array-raii.hfa
===================================================================
--- tests/array-collections/array-raii.hfa	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ tests/array-collections/array-raii.hfa	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -118,17 +118,18 @@
 }
 
+struct thing { int mem; };
+void ?{}( thing & this, int i ) {
+    (this.mem){ i };
+    printf("ctor %d\n", this.mem);
+}
+void ?{}( thing & this ) {
+    (this){ 999 };
+}
+void ^?{}( thing & this ) {
+    printf("dtor %d\n", this.mem);
+}
+
 // Array of uninits sees explicit ctor calls (only), and implied dtor calls
 void test_uninit() {
-    struct thing { int mem; };
-    void ?{}( thing & this, int i ) {
-        (this.mem){ i };
-        printf("ctor %d\n", this.mem);
-    }
-    void ?{}( thing & this ) {
-        (this){ 999 };
-    }
-    void ^?{}( thing & this ) {
-        printf("dtor %d\n", this.mem);
-    }
     printf(" [1]\n");
     {
@@ -163,4 +164,6 @@
 }
 
+void test_extras();
+
 int main() {
     printf("=== builtins\n");
@@ -170,5 +173,7 @@
     test_custom();
 
-    printf("=== uninit\n");
+    printf("=== uninit ( uNoCtor[] )\n");
     test_uninit();
+
+    test_extras();
 }
Index: sts/configs/.in/parseconfig-all.txt
===================================================================
--- tests/configs/.in/parseconfig-all.txt	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ 	(revision )
@@ -1,12 +1,0 @@
-StopCost				1	# amount to charge per train stop
-NumStudents				2	# number of students to create
-NumStops				2	# number of train stops; minimum of 2
-MaxNumStudents 			5  	# maximum students each train can carry
-TimerDelay 				2	# length of time between each tick of the timer
-# Going to add a comment here
-MaxStudentDelay			10	# maximum random student delay between trips
-MaxStudentTrips 		3	# maximum number of train trips each student takes
-GroupoffDelay			10	# length of time between initializing gift cards
-ConductorDelay			5  	# length of time between checking on passenger POPs
-ParentalDelay			5	# length of time between cash deposits
-NumCouriers				1	# number of WATCard office couriers in the pool
Index: sts/configs/.in/parseconfig-errors.txt
===================================================================
--- tests/configs/.in/parseconfig-errors.txt	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ 	(revision )
@@ -1,12 +1,0 @@
-StopCost				-1	# amount to charge per train stop
-NumStudents				2	# number of students to create
-NumStops				2	# number of train stops; minimum of 2
-MaxNumStudents 			5  	# maximum students each train can carry
-TimerDelay 				2	# length of time between each tick of the timer
-MaxStudentDelay			10	# maximum random student delay between trips
-MaxStudentTrips 		3	# maximum number of train trips each student takes
-GroupoffDelay			10	# length of time between initializing gift cards
-ConductorDelay			5  	# length of time between checking on passenger POPs
-ParentalDelay			5	# length of time between cash deposits
-NumCouriers				1	# number of WATCard office couriers in the pool
-AnothaOne               DjKhaled    # this one will not be used by the user
Index: sts/configs/.in/parseconfig-missing.txt
===================================================================
--- tests/configs/.in/parseconfig-missing.txt	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ 	(revision )
@@ -1,12 +1,0 @@
-StopCost				-1	# amount to charge per train stop
-NumStudents				2	# number of students to create
-NumStops				2	# number of train stops; minimum of 2
-MaxNumStudents 			5  	# maximum students each train can carry
-TimerDelay 				2	# length of time between each tick of the timer
-MaxStudentDelay			10	# maximum random student delay between trips
-MaxStudentTrips 		3	# maximum number of train trips each student takes
-GroupoffDelay			10	# length of time between initializing gift cards
-ConductorDelay			5  	# length of time between checking on passenger POPs
-# ParentalDelay			5	# length of time between cash deposits
-NumCouriers				1	# number of WATCard office couriers in the pool
-# Notice I've commented out one of the wanted entries
Index: tests/configs/.in/parseconfig.all.txt
===================================================================
--- tests/configs/.in/parseconfig.all.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/configs/.in/parseconfig.all.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,12 @@
+StopCost				1	# amount to charge per train stop
+NumStudents				2	# number of students to create
+NumStops				2	# number of train stops; minimum of 2
+MaxNumStudents 			5  	# maximum students each train can carry
+TimerDelay 				2	# length of time between each tick of the timer
+# Going to add a comment here
+MaxStudentDelay			10	# maximum random student delay between trips
+MaxStudentTrips 		3	# maximum number of train trips each student takes
+GroupoffDelay			10	# length of time between initializing gift cards
+ConductorDelay			5  	# length of time between checking on passenger POPs
+ParentalDelay			5	# length of time between cash deposits
+NumCouriers				1	# number of WATCard office couriers in the pool
Index: tests/configs/.in/parseconfig.errors.txt
===================================================================
--- tests/configs/.in/parseconfig.errors.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/configs/.in/parseconfig.errors.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,12 @@
+StopCost				-1	# amount to charge per train stop
+NumStudents				2	# number of students to create
+NumStops				2	# number of train stops; minimum of 2
+MaxNumStudents 			5  	# maximum students each train can carry
+TimerDelay 				2	# length of time between each tick of the timer
+MaxStudentDelay			10	# maximum random student delay between trips
+MaxStudentTrips 		3	# maximum number of train trips each student takes
+GroupoffDelay			10	# length of time between initializing gift cards
+ConductorDelay			5  	# length of time between checking on passenger POPs
+ParentalDelay			5	# length of time between cash deposits
+NumCouriers				1	# number of WATCard office couriers in the pool
+AnothaOne               DjKhaled    # this one will not be used by the user
Index: tests/configs/.in/parseconfig.missing.txt
===================================================================
--- tests/configs/.in/parseconfig.missing.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/configs/.in/parseconfig.missing.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,12 @@
+StopCost				-1	# amount to charge per train stop
+NumStudents				2	# number of students to create
+NumStops				2	# number of train stops; minimum of 2
+MaxNumStudents 			5  	# maximum students each train can carry
+TimerDelay 				2	# length of time between each tick of the timer
+MaxStudentDelay			10	# maximum random student delay between trips
+MaxStudentTrips 		3	# maximum number of train trips each student takes
+GroupoffDelay			10	# length of time between initializing gift cards
+ConductorDelay			5  	# length of time between checking on passenger POPs
+# ParentalDelay			5	# length of time between cash deposits
+NumCouriers				1	# number of WATCard office couriers in the pool
+# Notice I've commented out one of the wanted entries
Index: tests/configs/parsebools.cfa
===================================================================
--- tests/configs/parsebools.cfa	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ tests/configs/parsebools.cfa	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -50,5 +50,5 @@
 }
 
-int true_main( const char * path, char * env[] ) {
+int true_main( const char * path, const char * env[] ) {
 	printf( "no arg:\n" );
 	if ( pid_t child = strict_fork(); child == 0 ) {
Index: tests/configs/parseconfig.cfa
===================================================================
--- tests/configs/parseconfig.cfa	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ tests/configs/parseconfig.cfa	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -50,5 +50,5 @@
 	sout | "Different types of destination addresses";
 
-	parse_config( xstr(IN_DIR) "parseconfig-all.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
+	parse_config( xstr(IN_DIR) "parseconfig.all.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
 
     sout | "Stop cost: " | config_params.stop_cost;
@@ -77,5 +77,5 @@
 	sout | "Missing_Config_Entries thrown when config file is missing entries we want";
 	try {
-		parse_config( xstr(IN_DIR) "parseconfig-missing.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
+		parse_config( xstr(IN_DIR) "parseconfig.missing.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
 	} catch( Missing_Config_Entries * ex ) {
 		msg( ex );
@@ -92,5 +92,5 @@
 
 	try {
-		parse_config( xstr(IN_DIR) "parseconfig-errors.txt", entry, 1, parse_tabular_config_format );
+		parse_config( xstr(IN_DIR) "parseconfig.errors.txt", entry, 1, parse_tabular_config_format );
 	} catch( Parse_Failure * ex ) {
 		msg( ex );
@@ -106,5 +106,5 @@
 
 	try {
-		parse_config( xstr(IN_DIR) "parseconfig-errors.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
+		parse_config( xstr(IN_DIR) "parseconfig.errors.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
 	} catch( Validation_Failure * ex ) {
 		msg( ex );
@@ -115,5 +115,5 @@
 	sout | "No error is thrown when validation succeeds";
 	config_params.stop_cost = -1; // Reset value
-	parse_config( xstr(IN_DIR) "parseconfig-all.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
+	parse_config( xstr(IN_DIR) "parseconfig.all.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
 	sout | "Stop cost: " | config_params.stop_cost;
 	sout | nl;
@@ -126,5 +126,5 @@
 
 	config_params.stop_cost = -1; // Reset value
-	parse_config( xstr(IN_DIR) "parseconfig-all.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
+	parse_config( xstr(IN_DIR) "parseconfig.all.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
 
 	sout | "Stop cost: " | config_params.stop_cost;
@@ -139,5 +139,5 @@
 
 	config_params.stop_cost = -1; // Reset value
-	parse_config( xstr(IN_DIR) "parseconfig-all.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
+	parse_config( xstr(IN_DIR) "parseconfig.all.txt", entries, NUM_ENTRIES, parse_tabular_config_format );
 
 	sout | "Stop cost: " | config_params.stop_cost;
Index: tests/configs/parsenums.cfa
===================================================================
--- tests/configs/parsenums.cfa	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ tests/configs/parsenums.cfa	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -61,5 +61,5 @@
 }
 
-int true_main( const char * path, char * env[] ) {
+int true_main( const char * path, const char * env[] ) {
 	printf( "no arg:\n" );
 	if ( pid_t child = strict_fork(); child == 0 ) {
Index: tests/configs/usage.cfa
===================================================================
--- tests/configs/usage.cfa	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ tests/configs/usage.cfa	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -108,3 +108,3 @@
 
 // no used
-static int true_main( const char * path, char * env[]) { return 0; }
+static int true_main( const char * path, const char * env[]) { return 0; }
Index: tests/io/.expect/manipulatorsInput-uchunk.txt
===================================================================
--- tests/io/.expect/manipulatorsInput-uchunk.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.expect/manipulatorsInput-uchunk.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,124 @@
+--- default.1 ---
+BGN "---"x
+END "---"x
+--- default.2 ---
+BGN "---"x
+GOT "123"x
+END "---"x
+--- default.3 ---
+BGN "---"x
+GOT "12345678"x
+END "---"x
+--- default.4 ---
+BGN "---"x
+END "---"x
+--- default.5 ---
+BGN "---"x
+GOT "123"x
+END "---"x
+--- default.6 ---
+BGN "---"x
+GOT "12345678"x
+END "---"x
+--- default.7 ---
+BGN "---"x
+GOT "1"x
+END "---"x
+--- default.8 ---
+BGN "---"x
+GOT "1123"x
+END "---"x
+--- default.9 ---
+BGN "---"x
+GOT "1"x
+END "---"x
+--- default.10 ---
+BGN "---"x
+GOT "1"x
+END "---"x
+--- default.11 ---
+BGN "---"x
+GOT "1"x
+GOT "123"x
+END "---"x
+--- default.12 ---
+BGN "---"x
+GOT "123"x
+GOT "12345678"x
+END "---"x
+--- default.13 ---
+BGN "---"x
+GOT "12345678"x
+GOT "1"x
+END "---"x
+--- default.14 ---
+BGN "---"x
+END "---"x
+--- getline.1 ---
+BGN "---"x
+END "---"x
+--- getline.2 ---
+BGN "---"x
+GOT "123"x
+END "---"x
+--- getline.3 ---
+BGN "---"x
+GOT "12345678"x
+END "---"x
+--- getline.4 ---
+BGN "---"x
+GOT ""x
+END "---"x
+--- getline.5 ---
+BGN "---"x
+GOT "123"x
+END "---"x
+--- getline.6 ---
+BGN "---"x
+GOT "12345678"x
+END "---"x
+--- getline.7 ---
+BGN "---"x
+GOT "1"x
+END "---"x
+--- getline.8 ---
+BGN "---"x
+GOT ""x
+GOT "123"x
+END "---"x
+--- getline.9 ---
+BGN "---"x
+GOT ""x
+GOT ""x
+GOT "1"x
+END "---"x
+--- getline.10 ---
+BGN "---"x
+GOT "1"x
+GOT ""x
+END "---"x
+--- getline.11 ---
+BGN "---"x
+GOT ""x
+GOT ""x
+GOT "1"x
+GOT "123 "x
+END "---"x
+--- getline.12 ---
+BGN "---"x
+GOT "123"x
+GOT ""x
+GOT "12345678"x
+GOT ""x
+END "---"x
+--- getline.13 ---
+BGN "---"x
+GOT ""x
+GOT "12345678"x
+GOT "1"x
+END "---"x
+--- getline.14 ---
+BGN "---"x
+GOT ""x
+GOT ""x
+END "---"x
Index: tests/io/.in/manipulatorsInput-uchunk.default.10.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.default.10.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.default.10.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+1  
Index: tests/io/.in/manipulatorsInput-uchunk.default.11.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.default.11.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.default.11.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+  1 123 
Index: tests/io/.in/manipulatorsInput-uchunk.default.12.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.default.12.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.default.12.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+123  12345678  
Index: tests/io/.in/manipulatorsInput-uchunk.default.13.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.default.13.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.default.13.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+ 12345678 1
Index: tests/io/.in/manipulatorsInput-uchunk.default.14.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.default.14.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.default.14.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+  
Index: tests/io/.in/manipulatorsInput-uchunk.default.2.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.default.2.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.default.2.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+123
Index: tests/io/.in/manipulatorsInput-uchunk.default.3.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.default.3.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.default.3.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+12345678
Index: tests/io/.in/manipulatorsInput-uchunk.default.4.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.default.4.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.default.4.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+ 
Index: tests/io/.in/manipulatorsInput-uchunk.default.5.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.default.5.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.default.5.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+123 
Index: tests/io/.in/manipulatorsInput-uchunk.default.6.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.default.6.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.default.6.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+12345678 
Index: tests/io/.in/manipulatorsInput-uchunk.default.7.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.default.7.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.default.7.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+1
Index: tests/io/.in/manipulatorsInput-uchunk.default.8.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.default.8.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.default.8.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+ 1123 
Index: tests/io/.in/manipulatorsInput-uchunk.default.9.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.default.9.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.default.9.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+  1
Index: tests/io/.in/manipulatorsInput-uchunk.getline.10.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.getline.10.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.getline.10.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,2 @@
+1
+
Index: tests/io/.in/manipulatorsInput-uchunk.getline.11.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.getline.11.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.getline.11.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,4 @@
+
+
+1
+123 
Index: tests/io/.in/manipulatorsInput-uchunk.getline.12.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.getline.12.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.getline.12.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,4 @@
+123
+
+12345678
+
Index: tests/io/.in/manipulatorsInput-uchunk.getline.13.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.getline.13.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.getline.13.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,3 @@
+
+12345678
+1
Index: tests/io/.in/manipulatorsInput-uchunk.getline.14.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.getline.14.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.getline.14.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,2 @@
+
+
Index: tests/io/.in/manipulatorsInput-uchunk.getline.2.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.getline.2.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.getline.2.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+123
Index: tests/io/.in/manipulatorsInput-uchunk.getline.3.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.getline.3.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.getline.3.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+12345678
Index: tests/io/.in/manipulatorsInput-uchunk.getline.4.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.getline.4.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.getline.4.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+
Index: tests/io/.in/manipulatorsInput-uchunk.getline.5.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.getline.5.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.getline.5.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+123
Index: tests/io/.in/manipulatorsInput-uchunk.getline.6.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.getline.6.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.getline.6.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+12345678
Index: tests/io/.in/manipulatorsInput-uchunk.getline.7.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.getline.7.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.getline.7.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,1 @@
+1
Index: tests/io/.in/manipulatorsInput-uchunk.getline.8.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.getline.8.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.getline.8.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,2 @@
+
+123
Index: tests/io/.in/manipulatorsInput-uchunk.getline.9.txt
===================================================================
--- tests/io/.in/manipulatorsInput-uchunk.getline.9.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/.in/manipulatorsInput-uchunk.getline.9.txt	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,3 @@
+
+
+1
Index: tests/io/manipulatorsInput-uchunk.cfa
===================================================================
--- tests/io/manipulatorsInput-uchunk.cfa	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/manipulatorsInput-uchunk.cfa	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,185 @@
+/*
+uchunk - user-visible chunking: how a user's input-consuming loop experiences a presence/absence of qualifying input
+         slight generalization of "eof handling"; we called many of these cases the "eof tests" while first devising them
+
+Coverage criteria include when an input-provided chunk exactly fills a user-provided buffer,
+because the double-boundary case of "this happens just before eof" is (white-box) uchunk-relevant.
+But cases of input-provided chunks exceeding the user's buffer live under
+manipulatorsInput#pre* and ../collections/string-io-istream-manip#pre*.
+
+Test design with subprocesses and auxiliary inputs is cargo-culted from
+configs/parseconfig, configs/usage and io/many_read.
+If you're here to cargo-cult, start there.
+
+*/
+
+#ifdef __cplusplus
+  #include <iostream>
+  #include <iomanip>
+  #include <cstring>
+  using namespace std;
+  #define TRYREAD(str)      tryread(sizeof(str)-1, str);
+  #define DETECT_EOF( ... ) __VA_ARGS__
+  #define POLL_EOF          if ( cin.fail() ) break;
+  #define ECHO(stg, str)    cout << #stg << " \"" << str << "\"" << str[sizeof(str)-1] << endl
+#elif defined __cforall
+  #include <fstream.hfa>
+  extern "C" {
+    char* strcpy(char*, const char*);
+  }
+  #define DETECT_EOF( ... ) \
+    try { \
+      __VA_ARGS__ \
+    } catch ( end_of_file * ) {}
+  #define TRYREAD(str)      try {                                             \
+                                  tryread(sizeof(str)-1, str);                \
+                            }                                                 \
+                            catch ( cstring_length* ) {                       \
+                                /* never expected; just harness robustness */ \
+                                sout | "cstring_length and " | nonl;          \
+                            }
+  #define POLL_EOF
+  #define ECHO(stg, str)    sout | #stg | " \"" | str | "\"" | str[sizeof(str)-1]
+#else
+  #error no
+#endif
+
+
+
+//
+// BEGIN: functions only used in child process
+//
+// Parent process does not use test.py-provided stdin.
+// Parent process uses test.py-provided IN_DIR, from which it explicitly opens files.
+// Each child process sees content from one such file on its stdin.
+// The functions in this section echo, from this distinct child stdin, to parent-bridged stdout.
+//
+
+void subcaseHarness( void (*tryread)(size_t, char*) ) {
+    char s[10];
+    DETECT_EOF (
+      for (bool first = true ;; ) {
+          strcpy(s, "---");  // every time: restore "---"x
+          s[9] = 'x';
+          if (first) {
+            ECHO(BGN, s);    // first time: show it
+            first = false;
+          }
+
+          TRYREAD(s)
+          POLL_EOF
+          ECHO(GOT, s);
+      }
+    )
+    ECHO(END, s);
+}
+
+void tryread_default(size_t sizeof_s, char *s) {
+  #ifdef __cplusplus
+    cin >> setw( sizeof_s ) >> s;
+  #else
+    sin | wdi( sizeof_s, s );
+  #endif
+}
+
+void tryread_getline(size_t sizeof_s, char *s) {
+  #ifdef __cplusplus
+    cin.getline(s, sizeof_s);
+  #else
+    sin | getline( wdi( sizeof_s, s ) );
+  #endif
+}
+
+//
+// END: functions only used in child process
+//
+
+
+extern "C" {
+	#include <sys/types.h>
+	#include <sys/stat.h>
+	#include <fcntl.h>
+	#include <unistd.h>
+}
+
+#ifdef SUBCASE_ISOLATION
+
+    #define x(s) s
+    #define TRYREAD_FUNCTION x(tryread_ ## x(SUBCASE_ISOLATION))
+
+    #define MK_TRYREAD_FUNCTION(x) tryread_ ## x
+
+    #define _MAKEDATA(n) tryread_ ## n
+    #define MAKEDATA(n) _MAKEDATA(n)
+
+    int main() {
+        subcaseHarness( MAKEDATA(SUBCASE_ISOLATION) );
+    }
+
+#else 
+    #define xstr(s) str(s)
+    #define str(s) #s
+
+    #include "../meta/fork+exec.hfa"
+
+    void forkJoinSubcase( void (*tryread)(size_t, char*), const char* subcase_name, const char* aux_in_fname ) {
+        printf("--- %s ---\n", subcase_name);
+        int aux_in_fd = open(aux_in_fname, 0);
+        if( aux_in_fd < 0 ) {
+            printf("Failed to open file: %s\n", aux_in_fname);
+            exit(1);
+        }
+        if ( pid_t child_pid = strict_fork() ) {
+            // in parent
+            do_wait(child_pid);
+        } else {
+            // in child
+            dup2(aux_in_fd, 0);  // make stdin pull from aux
+            subcaseHarness( tryread );
+            exit(0);
+        }
+    }
+
+    #define SUBCASE_( TRYREAD_FUNCTION, IN_FILE_SLUG ) forkJoinSubcase( TRYREAD_FUNCTION, (IN_FILE_SLUG), (xstr(IN_DIR) "manipulatorsInput-uchunk." IN_FILE_SLUG ".txt") )
+    #define SUBCASE( MANIP, IN_FILE_SUFFIX ) SUBCASE_( tryread_ ## MANIP, #MANIP "." #IN_FILE_SUFFIX )
+
+    int main() {
+
+        SUBCASE( default, 1 );
+        SUBCASE( default, 2 );
+        SUBCASE( default, 3 );
+        SUBCASE( default, 4 );
+        SUBCASE( default, 5 );
+        SUBCASE( default, 6 );
+        SUBCASE( default, 7 );
+        SUBCASE( default, 8 );
+        SUBCASE( default, 9 );
+        SUBCASE( default, 10 );
+        SUBCASE( default, 11 );
+        SUBCASE( default, 12 );
+        SUBCASE( default, 13 );
+        SUBCASE( default, 14 );
+
+        SUBCASE( getline, 1 );
+        SUBCASE( getline, 2 );
+        SUBCASE( getline, 3 );
+        SUBCASE( getline, 4 );
+        SUBCASE( getline, 5 );
+        SUBCASE( getline, 6 );
+        SUBCASE( getline, 7 );
+        SUBCASE( getline, 8 );
+        SUBCASE( getline, 9 );
+        SUBCASE( getline, 10 );
+        SUBCASE( getline, 11 );
+        SUBCASE( getline, 12 );
+        SUBCASE( getline, 13 );
+        SUBCASE( getline, 14 );
+
+        return 0;
+    }
+
+    // not used
+    static int true_main(const char * path, const char * env[]) { return 0; }
+
+
+#endif
Index: tests/io/manipulatorsInput-uchunk.extra.sh
===================================================================
--- tests/io/manipulatorsInput-uchunk.extra.sh	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
+++ tests/io/manipulatorsInput-uchunk.extra.sh	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -0,0 +1,56 @@
+#!/usr/bin/env bash
+
+# A utility for manual ...
+# (a) validation: helping you agree that what's in .expect is right
+# (b) failure replay: helping you debug one subcase, without using parent--child processes
+
+# Usage:
+# mkdir ~/uchunk-temp
+# cd ~/uchunk-temp
+# rm *
+# ~/mywork/cfa-cc/tests/io/manipulatorsInput-uchunk.extra.sh
+# ls
+# diff -y all-noend.expect.txt all-noend.cpp-actual.txt | nl
+# ./uchunk-getline-cfa < ~/mywork/cfa-cc/tests/io/.in/manipulatorsInput-uchunk.getline.1.txt
+
+SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
+cfa=${cfa:-cfa}
+CXX=${CXX:-g++}
+
+set -v
+$CXX -x c++ $SCRIPT_DIR/manipulatorsInput-uchunk.cfa -DIN_DIR=$SCRIPT_DIR/.in/ -o uchunk-all-cpp
+$cfa        $SCRIPT_DIR/manipulatorsInput-uchunk.cfa -DIN_DIR=$SCRIPT_DIR/.in/ -o uchunk-all-cfa
+
+$CXX -x c++ $SCRIPT_DIR/manipulatorsInput-uchunk.cfa -DSUBCASE_ISOLATION=default -o uchunk-default-cpp
+$cfa        $SCRIPT_DIR/manipulatorsInput-uchunk.cfa -DSUBCASE_ISOLATION=default -o uchunk-default-cfa
+$CXX -x c++ $SCRIPT_DIR/manipulatorsInput-uchunk.cfa -DSUBCASE_ISOLATION=getline -o uchunk-getline-cpp
+$cfa        $SCRIPT_DIR/manipulatorsInput-uchunk.cfa -DSUBCASE_ISOLATION=getline -o uchunk-getline-cfa
+
+
+cp $SCRIPT_DIR/.expect/manipulatorsInput-uchunk.txt all.expect.txt
+./uchunk-all-cpp > all.cpp-actual.txt
+./uchunk-all-cfa > all.cfa-actual.txt
+
+sed 's/^END.*/END -/g' < all.expect.txt      > all-noend.expect.txt
+sed 's/^END.*/END -/g' < all.cpp-actual.txt  > all-noend.cpp-actual.txt
+sed 's/^END.*/END -/g' < all.cfa-actual.txt  > all-noend.cfa-actual.txt
+
+ls -v $SCRIPT_DIR/.in/manipulatorsInput-uchunk* | xargs -n 1 -I {} bash -c 'echo {}; printf \"; cat {}; echo \"' > all.in.txt
+
+diff -q all-noend.expect.txt all-noend.cpp-actual.txt
+diff -q all.expect.txt all.cfa-actual.txt
+diff -q all.cpp-actual.txt all.cfa-actual.txt  # noisy: shows getline's cfa--cpp END semantic difference
+diff -q all-noend.cpp-actual.txt all-noend.cfa-actual.txt
+
+ls
+
+set +v
+
+echo Done.  Further useful commands might include:
+echo cat all.in.txt
+echo diff -y all-noend.expect.txt all-noend.cpp-actual.txt '|' nl
+echo diff -y all.expect.txt all.cfa-actual.txt '|' nl
+echo diff -y all.cpp-actual.txt all.cfa-actual.txt '|' nl
+echo diff -y all-noend.cpp-actual.txt all-noend.cfa-actual.txt '|' nl
+echo './uchunk-getline-cfa <' $SCRIPT_DIR/.in/manipulatorsInput-uchunk.getline.1.txt
+echo './uchunk-default-cfa <' $SCRIPT_DIR/.in/manipulatorsInput-uchunk.default.1.txt
Index: tests/meta/fork+exec.cfa
===================================================================
--- tests/meta/fork+exec.cfa	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ tests/meta/fork+exec.cfa	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -32,5 +32,5 @@
 
 
-int true_main(const char * path, char * env[]) {
+int true_main(const char * path, const char * env[]) {
 	printf("no arg:\n");
 	if(pid_t child = strict_fork(); child == 0) {
Index: tests/meta/fork+exec.hfa
===================================================================
--- tests/meta/fork+exec.hfa	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ tests/meta/fork+exec.hfa	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -28,5 +28,5 @@
 }
 
-static int true_main(const char * path, char * env[]);
+static int true_main(const char * path, const char * env[]);
 
 static int do_wait(pid_t pid) {
@@ -70,5 +70,5 @@
 	if(getenv("CFATEST_FORK_EXEC_TEXT")) return;
 
-	char * env[] = { "CFATEST_FORK_EXEC_TEXT=1", 0p };
+	const char * env[] = { "CFATEST_FORK_EXEC_TEXT=1", (char*)0 };
 	exit( true_main(path, env) );
 }
Index: tests/pybin/test_run.py
===================================================================
--- tests/pybin/test_run.py	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ tests/pybin/test_run.py	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -29,6 +29,11 @@
 		return os.path.normpath( os.path.join(settings.BUILDDIR, self.path, ".out"   , "%s.log" % self.name) )
 
+	# one file that goes to the test's stdin
 	def input(self):
 		return os.path.normpath( os.path.join(settings.SRCDIR  , self.path, ".in"    , "%s.txt" % self.name) )
+
+	# several files available for this test to open
+	def inputs_all(self):
+		return os.path.normpath( os.path.join(settings.SRCDIR  , self.path, ".in"    , "%s.*" % self.name) )
 
 	def target_output(self):
Index: tests/test.py
===================================================================
--- tests/test.py	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ tests/test.py	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -352,5 +352,5 @@
 		for t in tests:
 			print(os.path.relpath(t.expect(), settings.SRCDIR), end=' ')
-			print(os.path.relpath(t.input() , settings.SRCDIR), end=' ')
+			print(os.path.relpath(t.inputs_all() , settings.SRCDIR), end=' ')
 			code, out, err = make_recon(t.target())
 
@@ -360,6 +360,4 @@
 
 			print(' '.join(re.findall(r'([^\s]+\.cfa)', out)), end=' ')
-
-		print('')
 
 		# done
Index: tests/time.cfa
===================================================================
--- tests/time.cfa	(revision c494b84f8d8be86bded8840569749f2bc29a8458)
+++ tests/time.cfa	(revision 5ef40081d5c9518d76ce6485b419fae34629a673)
@@ -10,6 +10,6 @@
 // Created On       : Tue Mar 27 17:24:56 2018
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Aug 13 09:09:47 2024
-// Update Count     : 76
+// Last Modified On : Fri Sep 13 00:57:15 2024
+// Update Count     : 77
 //
 
@@ -18,5 +18,5 @@
 #include <stdlib.h>										// putenv
 
-extern "C" size_t malloc_unfreed() { return 2048; }		// guess at unfreed storage from putenv/tzset
+extern "C" size_t malloc_unfreed() { return 4096; }		// guess at unfreed storage from putenv/tzset
 
 int main() {
