* Provides additional custom types so that it can be more easily be overwritten.
* Specifically, there is support for using 32-bit, 64-bit, or 128-bit lengths.
*
- * 64-bit is the designed default.
+ * 64-bit is the designed default on most and 32-bit on i386, i486, i586, and i686.
*/
-#ifndef _di_f_type_number_64_t_
+#if !defined(_di_f_type_number_64_t_) && (!defined(__i386__) && !defined(__i486__) && !defined(__i586__) && !defined(__i686__) || defined(__x86_64__))
typedef int64_t f_number_signed_t;
typedef uint64_t f_number_unsigned_t;
#define F_number_t_size_max_unsigned_d F_type_size_max_64_unsigned_d
#define F_number_t_size_max_positive_d F_type_size_max_64_positive_d
#define F_number_t_size_max_negative_d F_type_size_max_64_negative_d
-#elif defined(_en_f_type_number_32_t_)
+#elif (defined(_en_f_type_number_32_t_) || !defined(_di_f_type_number_32_t_) && !defined(_en_f_type_number_128_t_) && (!defined(__i386__) && !defined(__i486__) && !defined(__i586__) && !defined(__i686__) || defined(__x86_64__)))
typedef int32_t f_number_signed_t;
typedef uint32_t f_number_unsigned_t;