Index: libcfa/prelude/builtins.c
===================================================================
--- libcfa/prelude/builtins.c	(revision ec43cf9bd03a6adc6b7f40ae9daa3cae62acd7e1)
+++ libcfa/prelude/builtins.c	(revision 88ac8672a08ca14066f7e8eb9ca7d5b64c838120)
@@ -9,7 +9,7 @@
 // Author           : Peter A. Buhr
 // Created On       : Fri Jul 21 16:21:03 2017
-// Last Modified By : Andrew Beach
-// Last Modified On : Tue Oct 27 14:42:00 2020
-// Update Count     : 111
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Apr 13 17:26:32 2021
+// Update Count     : 117
 //
 
@@ -125,6 +125,6 @@
 } // distribution
 
-#define __CFA_BASE_COMP_1__() if ( ep == 1 ) return 1
-#define __CFA_BASE_COMP_2__() if ( ep == 2 ) return ep << (y - 1)
+#define __CFA_BASE_COMP_1__() if ( x == 1 ) return 1
+#define __CFA_BASE_COMP_2__() if ( x == 2 ) return x << (y - 1)
 #define __CFA_EXP_OVERFLOW__() if ( y >= sizeof(y) * CHAR_BIT ) return 0
 
@@ -134,17 +134,19 @@
 	__CFA_BASE_COMP_2__();								/* special case, positive shifting for integral types */ \
 	__CFA_EXP_OVERFLOW__();								/* immediate overflow, negative exponent > 2^size-1 */ \
-	typeof(ep) op = 1;									/* accumulate odd product */ \
+	typeof(x) op = 1;									/* accumulate odd product */ \
 	for ( ; y > 1; y >>= 1 ) {							/* squaring exponentiation, O(log2 y) */ \
-		if ( (y & 1) == 1 ) op = op * ep;				/* odd ? */ \
-		ep = ep * ep; \
+		if ( (y & 1) == 1 ) op = op * x;				/* odd ? */ \
+		x = x * x; \
 	} \
-	return ep * op
+	return x * op
 
 static inline {
-	long int ?\?( int ep, unsigned int y ) { __CFA_EXP__(); }
-	long int ?\?( long int ep, unsigned long int y ) { __CFA_EXP__(); }
+	long int ?\?( int x, unsigned int y ) { __CFA_EXP__(); }
+	long int ?\?( long int x, unsigned long int y ) { __CFA_EXP__(); }
+	long long int ?\?( long long int x, unsigned long long int y ) { __CFA_EXP__(); }
 	// unsigned computation may be faster and larger
-	unsigned long int ?\?( unsigned int ep, unsigned int y ) { __CFA_EXP__(); }
-	unsigned long int ?\?( unsigned long int ep, unsigned long int y ) { __CFA_EXP__(); }
+	unsigned long int ?\?( unsigned int x, unsigned int y ) { __CFA_EXP__(); }
+	unsigned long int ?\?( unsigned long int x, unsigned long int y ) { __CFA_EXP__(); }
+	unsigned long long int ?\?( unsigned long long int x, unsigned long long int y ) { __CFA_EXP__(); }
 } // distribution
 
@@ -157,6 +159,7 @@
 
 static inline forall( OT | { void ?{}( OT & this, one_t ); OT ?*?( OT, OT ); } ) {
-	OT ?\?( OT ep, unsigned int y ) { __CFA_EXP__(); }
-	OT ?\?( OT ep, unsigned long int y ) { __CFA_EXP__(); }
+	OT ?\?( OT x, unsigned int y ) { __CFA_EXP__(); }
+	OT ?\?( OT x, unsigned long int y ) { __CFA_EXP__(); }
+	OT ?\?( OT x, unsigned long long int y ) { __CFA_EXP__(); }
 } // distribution
 
@@ -166,8 +169,10 @@
 
 static inline {
+	long int ?\=?( int & x, unsigned int y ) { x = x \ y; return x; }
 	long int ?\=?( long int & x, unsigned long int y ) { x = x \ y; return x; }
+	long long int ?\=?( long long int & x, unsigned long long int y ) { x = x \ y; return x; }
+	unsigned long int ?\=?( unsigned int & x, unsigned int y ) { x = x \ y; return x; }
 	unsigned long int ?\=?( unsigned long int & x, unsigned long int y ) { x = x \ y; return x; }
-	int ?\=?( int & x, unsigned long int y ) { x = x \ y; return x; }
-	unsigned int ?\=?( unsigned int & x, unsigned long int y ) { x = x \ y; return x; }
+	unsigned long long int ?\=?( unsigned long long int & x, unsigned long long int y ) { x = x \ y; return x; }
 } // distribution
 
