generate float instead of double if constraints suggest this
diff --git a/tests/tests-asn1c-compiler/154-with-REAL-components-OK.asn1.-Pfwide-types b/tests/tests-asn1c-compiler/154-with-REAL-components-OK.asn1.-Pfwide-types
new file mode 100644
index 0000000..8304905
--- /dev/null
+++ b/tests/tests-asn1c-compiler/154-with-REAL-components-OK.asn1.-Pfwide-types
@@ -0,0 +1,947 @@
+
+/*** <<< INCLUDES [UnconstrainedREAL] >>> ***/
+
+#include <REAL.h>
+
+/*** <<< TYPE-DECLS [UnconstrainedREAL] >>> ***/
+
+typedef REAL_t	 UnconstrainedREAL_t;
+
+/*** <<< FUNC-DECLS [UnconstrainedREAL] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_UnconstrainedREAL;
+asn_struct_free_f UnconstrainedREAL_free;
+asn_struct_print_f UnconstrainedREAL_print;
+asn_constr_check_f UnconstrainedREAL_constraint;
+ber_type_decoder_f UnconstrainedREAL_decode_ber;
+der_type_encoder_f UnconstrainedREAL_encode_der;
+xer_type_decoder_f UnconstrainedREAL_decode_xer;
+xer_type_encoder_f UnconstrainedREAL_encode_xer;
+
+/*** <<< CODE [UnconstrainedREAL] >>> ***/
+
+/*
+ * This type is implemented using REAL,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< STAT-DEFS [UnconstrainedREAL] >>> ***/
+
+static const ber_tlv_tag_t asn_DEF_UnconstrainedREAL_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_UnconstrainedREAL = {
+	"UnconstrainedREAL",
+	"UnconstrainedREAL",
+	&asn_OP_REAL,
+	asn_DEF_UnconstrainedREAL_tags_1,
+	sizeof(asn_DEF_UnconstrainedREAL_tags_1)
+		/sizeof(asn_DEF_UnconstrainedREAL_tags_1[0]), /* 1 */
+	asn_DEF_UnconstrainedREAL_tags_1,	/* Same as above */
+	sizeof(asn_DEF_UnconstrainedREAL_tags_1)
+		/sizeof(asn_DEF_UnconstrainedREAL_tags_1[0]), /* 1 */
+	{ 0, 0, REAL_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [WeirdlyConstrainedREAL] >>> ***/
+
+#include <REAL.h>
+
+/*** <<< TYPE-DECLS [WeirdlyConstrainedREAL] >>> ***/
+
+typedef REAL_t	 WeirdlyConstrainedREAL_t;
+
+/*** <<< FUNC-DECLS [WeirdlyConstrainedREAL] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_WeirdlyConstrainedREAL;
+asn_struct_free_f WeirdlyConstrainedREAL_free;
+asn_struct_print_f WeirdlyConstrainedREAL_print;
+asn_constr_check_f WeirdlyConstrainedREAL_constraint;
+ber_type_decoder_f WeirdlyConstrainedREAL_decode_ber;
+der_type_encoder_f WeirdlyConstrainedREAL_encode_der;
+xer_type_decoder_f WeirdlyConstrainedREAL_decode_xer;
+xer_type_encoder_f WeirdlyConstrainedREAL_encode_xer;
+
+/*** <<< CODE [WeirdlyConstrainedREAL] >>> ***/
+
+int
+WeirdlyConstrainedREAL_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const REAL_t *st = (const REAL_t *)sptr;
+	double value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	if(asn_REAL2double(st, &value)) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value too large (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	if((value == 3)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using REAL,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< STAT-DEFS [WeirdlyConstrainedREAL] >>> ***/
+
+static const ber_tlv_tag_t asn_DEF_WeirdlyConstrainedREAL_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_WeirdlyConstrainedREAL = {
+	"WeirdlyConstrainedREAL",
+	"WeirdlyConstrainedREAL",
+	&asn_OP_REAL,
+	asn_DEF_WeirdlyConstrainedREAL_tags_1,
+	sizeof(asn_DEF_WeirdlyConstrainedREAL_tags_1)
+		/sizeof(asn_DEF_WeirdlyConstrainedREAL_tags_1[0]), /* 1 */
+	asn_DEF_WeirdlyConstrainedREAL_tags_1,	/* Same as above */
+	sizeof(asn_DEF_WeirdlyConstrainedREAL_tags_1)
+		/sizeof(asn_DEF_WeirdlyConstrainedREAL_tags_1[0]), /* 1 */
+	{ 0, 0, WeirdlyConstrainedREAL_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [Indirect-IEEE-binary32] >>> ***/
+
+#include "UnconstrainedREAL.h"
+
+/*** <<< TYPE-DECLS [Indirect-IEEE-binary32] >>> ***/
+
+typedef UnconstrainedREAL_t	 Indirect_IEEE_binary32_t;
+
+/*** <<< FUNC-DECLS [Indirect-IEEE-binary32] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_Indirect_IEEE_binary32;
+extern const asn_REAL_specifics_t asn_SPC_Indirect_IEEE_binary32_specs_1;
+asn_struct_free_f Indirect_IEEE_binary32_free;
+asn_struct_print_f Indirect_IEEE_binary32_print;
+asn_constr_check_f Indirect_IEEE_binary32_constraint;
+ber_type_decoder_f Indirect_IEEE_binary32_decode_ber;
+der_type_encoder_f Indirect_IEEE_binary32_encode_der;
+xer_type_decoder_f Indirect_IEEE_binary32_decode_xer;
+xer_type_encoder_f Indirect_IEEE_binary32_encode_xer;
+
+/*** <<< CODE [Indirect-IEEE-binary32] >>> ***/
+
+int
+Indirect_IEEE_binary32_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const UnconstrainedREAL_t *st = (const UnconstrainedREAL_t *)sptr;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	
+	if(1 /* No applicable constraints whatsoever */) {
+		(void)st; /* Unused variable */
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using UnconstrainedREAL,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< STAT-DEFS [Indirect-IEEE-binary32] >>> ***/
+
+const asn_NativeReal_specifics_t asn_SPC_Indirect_IEEE_binary32_specs_1 = {
+	4	/* Use 'float' type. */
+};
+static const ber_tlv_tag_t asn_DEF_Indirect_IEEE_binary32_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_Indirect_IEEE_binary32 = {
+	"Indirect-IEEE-binary32",
+	"Indirect-IEEE-binary32",
+	&asn_OP_REAL,
+	asn_DEF_Indirect_IEEE_binary32_tags_1,
+	sizeof(asn_DEF_Indirect_IEEE_binary32_tags_1)
+		/sizeof(asn_DEF_Indirect_IEEE_binary32_tags_1[0]), /* 1 */
+	asn_DEF_Indirect_IEEE_binary32_tags_1,	/* Same as above */
+	sizeof(asn_DEF_Indirect_IEEE_binary32_tags_1)
+		/sizeof(asn_DEF_Indirect_IEEE_binary32_tags_1[0]), /* 1 */
+	{ 0, 0, Indirect_IEEE_binary32_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_Indirect_IEEE_binary32_specs_1	/* Additional specs */
+};
+
+
+/*** <<< INCLUDES [IEEE-binary32-w] >>> ***/
+
+#include <REAL.h>
+
+/*** <<< TYPE-DECLS [IEEE-binary32-w] >>> ***/
+
+typedef REAL_t	 IEEE_binary32_w_t;
+
+/*** <<< FUNC-DECLS [IEEE-binary32-w] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_IEEE_binary32_w;
+extern const asn_REAL_specifics_t asn_SPC_IEEE_binary32_w_specs_1;
+asn_struct_free_f IEEE_binary32_w_free;
+asn_struct_print_f IEEE_binary32_w_print;
+asn_constr_check_f IEEE_binary32_w_constraint;
+ber_type_decoder_f IEEE_binary32_w_decode_ber;
+der_type_encoder_f IEEE_binary32_w_encode_der;
+xer_type_decoder_f IEEE_binary32_w_decode_xer;
+xer_type_encoder_f IEEE_binary32_w_encode_xer;
+
+/*** <<< CODE [IEEE-binary32-w] >>> ***/
+
+int
+IEEE_binary32_w_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const REAL_t *st = (const REAL_t *)sptr;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	
+	if(1 /* No applicable constraints whatsoever */) {
+		(void)st; /* Unused variable */
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using REAL,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< STAT-DEFS [IEEE-binary32-w] >>> ***/
+
+const asn_NativeReal_specifics_t asn_SPC_IEEE_binary32_w_specs_1 = {
+	4	/* Use 'float' type. */
+};
+static const ber_tlv_tag_t asn_DEF_IEEE_binary32_w_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_IEEE_binary32_w = {
+	"IEEE-binary32-w",
+	"IEEE-binary32-w",
+	&asn_OP_REAL,
+	asn_DEF_IEEE_binary32_w_tags_1,
+	sizeof(asn_DEF_IEEE_binary32_w_tags_1)
+		/sizeof(asn_DEF_IEEE_binary32_w_tags_1[0]), /* 1 */
+	asn_DEF_IEEE_binary32_w_tags_1,	/* Same as above */
+	sizeof(asn_DEF_IEEE_binary32_w_tags_1)
+		/sizeof(asn_DEF_IEEE_binary32_w_tags_1[0]), /* 1 */
+	{ 0, 0, IEEE_binary32_w_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_IEEE_binary32_w_specs_1	/* Additional specs */
+};
+
+
+/*** <<< INCLUDES [IEEE-binary32-0w] >>> ***/
+
+#include <REAL.h>
+
+/*** <<< TYPE-DECLS [IEEE-binary32-0w] >>> ***/
+
+typedef REAL_t	 IEEE_binary32_0w_t;
+
+/*** <<< FUNC-DECLS [IEEE-binary32-0w] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_IEEE_binary32_0w;
+extern const asn_REAL_specifics_t asn_SPC_IEEE_binary32_0w_specs_1;
+asn_struct_free_f IEEE_binary32_0w_free;
+asn_struct_print_f IEEE_binary32_0w_print;
+asn_constr_check_f IEEE_binary32_0w_constraint;
+ber_type_decoder_f IEEE_binary32_0w_decode_ber;
+der_type_encoder_f IEEE_binary32_0w_encode_der;
+xer_type_decoder_f IEEE_binary32_0w_decode_xer;
+xer_type_encoder_f IEEE_binary32_0w_encode_xer;
+
+/*** <<< CODE [IEEE-binary32-0w] >>> ***/
+
+int
+IEEE_binary32_0w_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const REAL_t *st = (const REAL_t *)sptr;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	
+	if(1 /* No applicable constraints whatsoever */) {
+		(void)st; /* Unused variable */
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using REAL,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< STAT-DEFS [IEEE-binary32-0w] >>> ***/
+
+const asn_NativeReal_specifics_t asn_SPC_IEEE_binary32_0w_specs_1 = {
+	4	/* Use 'float' type. */
+};
+static const ber_tlv_tag_t asn_DEF_IEEE_binary32_0w_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_IEEE_binary32_0w = {
+	"IEEE-binary32-0w",
+	"IEEE-binary32-0w",
+	&asn_OP_REAL,
+	asn_DEF_IEEE_binary32_0w_tags_1,
+	sizeof(asn_DEF_IEEE_binary32_0w_tags_1)
+		/sizeof(asn_DEF_IEEE_binary32_0w_tags_1[0]), /* 1 */
+	asn_DEF_IEEE_binary32_0w_tags_1,	/* Same as above */
+	sizeof(asn_DEF_IEEE_binary32_0w_tags_1)
+		/sizeof(asn_DEF_IEEE_binary32_0w_tags_1[0]), /* 1 */
+	{ 0, 0, IEEE_binary32_0w_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_IEEE_binary32_0w_specs_1	/* Additional specs */
+};
+
+
+/*** <<< INCLUDES [IEEE-binary32-w0] >>> ***/
+
+#include <REAL.h>
+
+/*** <<< TYPE-DECLS [IEEE-binary32-w0] >>> ***/
+
+typedef REAL_t	 IEEE_binary32_w0_t;
+
+/*** <<< FUNC-DECLS [IEEE-binary32-w0] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_IEEE_binary32_w0;
+extern const asn_REAL_specifics_t asn_SPC_IEEE_binary32_w0_specs_1;
+asn_struct_free_f IEEE_binary32_w0_free;
+asn_struct_print_f IEEE_binary32_w0_print;
+asn_constr_check_f IEEE_binary32_w0_constraint;
+ber_type_decoder_f IEEE_binary32_w0_decode_ber;
+der_type_encoder_f IEEE_binary32_w0_encode_der;
+xer_type_decoder_f IEEE_binary32_w0_decode_xer;
+xer_type_encoder_f IEEE_binary32_w0_encode_xer;
+
+/*** <<< CODE [IEEE-binary32-w0] >>> ***/
+
+int
+IEEE_binary32_w0_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const REAL_t *st = (const REAL_t *)sptr;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	
+	if(1 /* No applicable constraints whatsoever */) {
+		(void)st; /* Unused variable */
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using REAL,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< STAT-DEFS [IEEE-binary32-w0] >>> ***/
+
+const asn_NativeReal_specifics_t asn_SPC_IEEE_binary32_w0_specs_1 = {
+	4	/* Use 'float' type. */
+};
+static const ber_tlv_tag_t asn_DEF_IEEE_binary32_w0_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_IEEE_binary32_w0 = {
+	"IEEE-binary32-w0",
+	"IEEE-binary32-w0",
+	&asn_OP_REAL,
+	asn_DEF_IEEE_binary32_w0_tags_1,
+	sizeof(asn_DEF_IEEE_binary32_w0_tags_1)
+		/sizeof(asn_DEF_IEEE_binary32_w0_tags_1[0]), /* 1 */
+	asn_DEF_IEEE_binary32_w0_tags_1,	/* Same as above */
+	sizeof(asn_DEF_IEEE_binary32_w0_tags_1)
+		/sizeof(asn_DEF_IEEE_binary32_w0_tags_1[0]), /* 1 */
+	{ 0, 0, IEEE_binary32_w0_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_IEEE_binary32_w0_specs_1	/* Additional specs */
+};
+
+
+/*** <<< INCLUDES [IEEE-binary64-w] >>> ***/
+
+#include <REAL.h>
+
+/*** <<< TYPE-DECLS [IEEE-binary64-w] >>> ***/
+
+typedef REAL_t	 IEEE_binary64_w_t;
+
+/*** <<< FUNC-DECLS [IEEE-binary64-w] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_IEEE_binary64_w;
+asn_struct_free_f IEEE_binary64_w_free;
+asn_struct_print_f IEEE_binary64_w_print;
+asn_constr_check_f IEEE_binary64_w_constraint;
+ber_type_decoder_f IEEE_binary64_w_decode_ber;
+der_type_encoder_f IEEE_binary64_w_encode_der;
+xer_type_decoder_f IEEE_binary64_w_decode_xer;
+xer_type_encoder_f IEEE_binary64_w_encode_xer;
+
+/*** <<< CODE [IEEE-binary64-w] >>> ***/
+
+int
+IEEE_binary64_w_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const REAL_t *st = (const REAL_t *)sptr;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	
+	if(1 /* No applicable constraints whatsoever */) {
+		(void)st; /* Unused variable */
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using REAL,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< STAT-DEFS [IEEE-binary64-w] >>> ***/
+
+static const ber_tlv_tag_t asn_DEF_IEEE_binary64_w_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_IEEE_binary64_w = {
+	"IEEE-binary64-w",
+	"IEEE-binary64-w",
+	&asn_OP_REAL,
+	asn_DEF_IEEE_binary64_w_tags_1,
+	sizeof(asn_DEF_IEEE_binary64_w_tags_1)
+		/sizeof(asn_DEF_IEEE_binary64_w_tags_1[0]), /* 1 */
+	asn_DEF_IEEE_binary64_w_tags_1,	/* Same as above */
+	sizeof(asn_DEF_IEEE_binary64_w_tags_1)
+		/sizeof(asn_DEF_IEEE_binary64_w_tags_1[0]), /* 1 */
+	{ 0, 0, IEEE_binary64_w_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [IEEE-binary64-0w] >>> ***/
+
+#include <REAL.h>
+
+/*** <<< TYPE-DECLS [IEEE-binary64-0w] >>> ***/
+
+typedef REAL_t	 IEEE_binary64_0w_t;
+
+/*** <<< FUNC-DECLS [IEEE-binary64-0w] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_IEEE_binary64_0w;
+asn_struct_free_f IEEE_binary64_0w_free;
+asn_struct_print_f IEEE_binary64_0w_print;
+asn_constr_check_f IEEE_binary64_0w_constraint;
+ber_type_decoder_f IEEE_binary64_0w_decode_ber;
+der_type_encoder_f IEEE_binary64_0w_encode_der;
+xer_type_decoder_f IEEE_binary64_0w_decode_xer;
+xer_type_encoder_f IEEE_binary64_0w_encode_xer;
+
+/*** <<< CODE [IEEE-binary64-0w] >>> ***/
+
+int
+IEEE_binary64_0w_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const REAL_t *st = (const REAL_t *)sptr;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	
+	if(1 /* No applicable constraints whatsoever */) {
+		(void)st; /* Unused variable */
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using REAL,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< STAT-DEFS [IEEE-binary64-0w] >>> ***/
+
+static const ber_tlv_tag_t asn_DEF_IEEE_binary64_0w_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_IEEE_binary64_0w = {
+	"IEEE-binary64-0w",
+	"IEEE-binary64-0w",
+	&asn_OP_REAL,
+	asn_DEF_IEEE_binary64_0w_tags_1,
+	sizeof(asn_DEF_IEEE_binary64_0w_tags_1)
+		/sizeof(asn_DEF_IEEE_binary64_0w_tags_1[0]), /* 1 */
+	asn_DEF_IEEE_binary64_0w_tags_1,	/* Same as above */
+	sizeof(asn_DEF_IEEE_binary64_0w_tags_1)
+		/sizeof(asn_DEF_IEEE_binary64_0w_tags_1[0]), /* 1 */
+	{ 0, 0, IEEE_binary64_0w_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [IEEE-binary64-w0] >>> ***/
+
+#include <REAL.h>
+
+/*** <<< TYPE-DECLS [IEEE-binary64-w0] >>> ***/
+
+typedef REAL_t	 IEEE_binary64_w0_t;
+
+/*** <<< FUNC-DECLS [IEEE-binary64-w0] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_IEEE_binary64_w0;
+asn_struct_free_f IEEE_binary64_w0_free;
+asn_struct_print_f IEEE_binary64_w0_print;
+asn_constr_check_f IEEE_binary64_w0_constraint;
+ber_type_decoder_f IEEE_binary64_w0_decode_ber;
+der_type_encoder_f IEEE_binary64_w0_encode_der;
+xer_type_decoder_f IEEE_binary64_w0_decode_xer;
+xer_type_encoder_f IEEE_binary64_w0_encode_xer;
+
+/*** <<< CODE [IEEE-binary64-w0] >>> ***/
+
+int
+IEEE_binary64_w0_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const REAL_t *st = (const REAL_t *)sptr;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	
+	if(1 /* No applicable constraints whatsoever */) {
+		(void)st; /* Unused variable */
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using REAL,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< STAT-DEFS [IEEE-binary64-w0] >>> ***/
+
+static const ber_tlv_tag_t asn_DEF_IEEE_binary64_w0_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_IEEE_binary64_w0 = {
+	"IEEE-binary64-w0",
+	"IEEE-binary64-w0",
+	&asn_OP_REAL,
+	asn_DEF_IEEE_binary64_w0_tags_1,
+	sizeof(asn_DEF_IEEE_binary64_w0_tags_1)
+		/sizeof(asn_DEF_IEEE_binary64_w0_tags_1[0]), /* 1 */
+	asn_DEF_IEEE_binary64_w0_tags_1,	/* Same as above */
+	sizeof(asn_DEF_IEEE_binary64_w0_tags_1)
+		/sizeof(asn_DEF_IEEE_binary64_w0_tags_1[0]), /* 1 */
+	{ 0, 0, IEEE_binary64_w0_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [Test] >>> ***/
+
+#include "Indirect-IEEE-binary32.h"
+#include "IEEE-binary32-w.h"
+#include "IEEE-binary32-0w.h"
+#include "IEEE-binary32-w0.h"
+#include "IEEE-binary64-w.h"
+#include "IEEE-binary64-0w.h"
+#include "IEEE-binary64-w0.h"
+#include <constr_SEQUENCE.h>
+
+/*** <<< TYPE-DECLS [Test] >>> ***/
+
+typedef struct Test {
+	Indirect_IEEE_binary32_t	 indirect_ieee_binary32;
+	IEEE_binary32_w_t	 ieee_binary32_w;
+	IEEE_binary32_0w_t	 ieee_binary32_0w;
+	IEEE_binary32_w0_t	 ieee_binary32_w0;
+	IEEE_binary64_w_t	 ieee_binary64_w;
+	IEEE_binary64_0w_t	 ieee_binary64_0w;
+	IEEE_binary64_w0_t	 ieee_binary64_w0;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} Test_t;
+
+/*** <<< FUNC-DECLS [Test] >>> ***/
+
+/* extern asn_TYPE_descriptor_t asn_DEF_indirect_ieee_binary32_2;	// (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ieee_binary32_w_3;	// (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ieee_binary32_0w_4;	// (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ieee_binary32_w0_5;	// (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_Test;
+
+/*** <<< CODE [Test] >>> ***/
+
+static int
+indirect_ieee_binary32_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const Indirect_IEEE_binary32_t *st = (const Indirect_IEEE_binary32_t *)sptr;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	
+	if(1 /* No applicable constraints whatsoever */) {
+		(void)st; /* Unused variable */
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using Indirect_IEEE_binary32,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+ieee_binary32_w_3_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const IEEE_binary32_w_t *st = (const IEEE_binary32_w_t *)sptr;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	
+	if(1 /* No applicable constraints whatsoever */) {
+		(void)st; /* Unused variable */
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using IEEE_binary32_w,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+ieee_binary32_0w_4_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const IEEE_binary32_0w_t *st = (const IEEE_binary32_0w_t *)sptr;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	
+	if(1 /* No applicable constraints whatsoever */) {
+		(void)st; /* Unused variable */
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using IEEE_binary32_0w,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+ieee_binary32_w0_5_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const IEEE_binary32_w0_t *st = (const IEEE_binary32_w0_t *)sptr;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	
+	if(1 /* No applicable constraints whatsoever */) {
+		(void)st; /* Unused variable */
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using IEEE_binary32_w0,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< STAT-DEFS [Test] >>> ***/
+
+static const asn_NativeReal_specifics_t asn_SPC_indirect_ieee_binary32_specs_2 = {
+	4	/* Use 'float' type. */
+};
+static const ber_tlv_tag_t asn_DEF_indirect_ieee_binary32_tags_2[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_indirect_ieee_binary32_2 = {
+	"indirect-ieee-binary32",
+	"indirect-ieee-binary32",
+	&asn_OP_REAL,
+	asn_DEF_indirect_ieee_binary32_tags_2,
+	sizeof(asn_DEF_indirect_ieee_binary32_tags_2)
+		/sizeof(asn_DEF_indirect_ieee_binary32_tags_2[0]), /* 1 */
+	asn_DEF_indirect_ieee_binary32_tags_2,	/* Same as above */
+	sizeof(asn_DEF_indirect_ieee_binary32_tags_2)
+		/sizeof(asn_DEF_indirect_ieee_binary32_tags_2[0]), /* 1 */
+	{ 0, 0, indirect_ieee_binary32_2_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_indirect_ieee_binary32_specs_2	/* Additional specs */
+};
+
+static const asn_NativeReal_specifics_t asn_SPC_ieee_binary32_w_specs_3 = {
+	4	/* Use 'float' type. */
+};
+static const ber_tlv_tag_t asn_DEF_ieee_binary32_w_tags_3[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ieee_binary32_w_3 = {
+	"ieee-binary32-w",
+	"ieee-binary32-w",
+	&asn_OP_REAL,
+	asn_DEF_ieee_binary32_w_tags_3,
+	sizeof(asn_DEF_ieee_binary32_w_tags_3)
+		/sizeof(asn_DEF_ieee_binary32_w_tags_3[0]), /* 1 */
+	asn_DEF_ieee_binary32_w_tags_3,	/* Same as above */
+	sizeof(asn_DEF_ieee_binary32_w_tags_3)
+		/sizeof(asn_DEF_ieee_binary32_w_tags_3[0]), /* 1 */
+	{ 0, 0, ieee_binary32_w_3_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_ieee_binary32_w_specs_3	/* Additional specs */
+};
+
+static const asn_NativeReal_specifics_t asn_SPC_ieee_binary32_0w_specs_4 = {
+	4	/* Use 'float' type. */
+};
+static const ber_tlv_tag_t asn_DEF_ieee_binary32_0w_tags_4[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ieee_binary32_0w_4 = {
+	"ieee-binary32-0w",
+	"ieee-binary32-0w",
+	&asn_OP_REAL,
+	asn_DEF_ieee_binary32_0w_tags_4,
+	sizeof(asn_DEF_ieee_binary32_0w_tags_4)
+		/sizeof(asn_DEF_ieee_binary32_0w_tags_4[0]), /* 1 */
+	asn_DEF_ieee_binary32_0w_tags_4,	/* Same as above */
+	sizeof(asn_DEF_ieee_binary32_0w_tags_4)
+		/sizeof(asn_DEF_ieee_binary32_0w_tags_4[0]), /* 1 */
+	{ 0, 0, ieee_binary32_0w_4_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_ieee_binary32_0w_specs_4	/* Additional specs */
+};
+
+static const asn_NativeReal_specifics_t asn_SPC_ieee_binary32_w0_specs_5 = {
+	4	/* Use 'float' type. */
+};
+static const ber_tlv_tag_t asn_DEF_ieee_binary32_w0_tags_5[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ieee_binary32_w0_5 = {
+	"ieee-binary32-w0",
+	"ieee-binary32-w0",
+	&asn_OP_REAL,
+	asn_DEF_ieee_binary32_w0_tags_5,
+	sizeof(asn_DEF_ieee_binary32_w0_tags_5)
+		/sizeof(asn_DEF_ieee_binary32_w0_tags_5[0]), /* 1 */
+	asn_DEF_ieee_binary32_w0_tags_5,	/* Same as above */
+	sizeof(asn_DEF_ieee_binary32_w0_tags_5)
+		/sizeof(asn_DEF_ieee_binary32_w0_tags_5[0]), /* 1 */
+	{ 0, 0, ieee_binary32_w0_5_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_ieee_binary32_w0_specs_5	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_Test_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct Test, indirect_ieee_binary32),
+		.tag = (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)),
+		.tag_mode = 0,
+		.type = &asn_DEF_Indirect_IEEE_binary32,
+		.type_selector = 0,
+		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
+		.default_value = 0,
+		.name = "indirect-ieee-binary32"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct Test, ieee_binary32_w),
+		.tag = (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)),
+		.tag_mode = 0,
+		.type = &asn_DEF_IEEE_binary32_w,
+		.type_selector = 0,
+		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
+		.default_value = 0,
+		.name = "ieee-binary32-w"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct Test, ieee_binary32_0w),
+		.tag = (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)),
+		.tag_mode = 0,
+		.type = &asn_DEF_IEEE_binary32_0w,
+		.type_selector = 0,
+		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
+		.default_value = 0,
+		.name = "ieee-binary32-0w"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct Test, ieee_binary32_w0),
+		.tag = (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)),
+		.tag_mode = 0,
+		.type = &asn_DEF_IEEE_binary32_w0,
+		.type_selector = 0,
+		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
+		.default_value = 0,
+		.name = "ieee-binary32-w0"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct Test, ieee_binary64_w),
+		.tag = (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)),
+		.tag_mode = 0,
+		.type = &asn_DEF_IEEE_binary64_w,
+		.type_selector = 0,
+		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
+		.default_value = 0,
+		.name = "ieee-binary64-w"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct Test, ieee_binary64_0w),
+		.tag = (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)),
+		.tag_mode = 0,
+		.type = &asn_DEF_IEEE_binary64_0w,
+		.type_selector = 0,
+		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
+		.default_value = 0,
+		.name = "ieee-binary64-0w"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct Test, ieee_binary64_w0),
+		.tag = (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)),
+		.tag_mode = 0,
+		.type = &asn_DEF_IEEE_binary64_w0,
+		.type_selector = 0,
+		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
+		.default_value = 0,
+		.name = "ieee-binary64-w0"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_Test_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_Test_tag2el_1[] = {
+    { (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)), 0, 0, 6 }, /* indirect-ieee-binary32 */
+    { (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)), 1, -1, 5 }, /* ieee-binary32-w */
+    { (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)), 2, -2, 4 }, /* ieee-binary32-0w */
+    { (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)), 3, -3, 3 }, /* ieee-binary32-w0 */
+    { (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)), 4, -4, 2 }, /* ieee-binary64-w */
+    { (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)), 5, -5, 1 }, /* ieee-binary64-0w */
+    { (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)), 6, -6, 0 } /* ieee-binary64-w0 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_Test_specs_1 = {
+	sizeof(struct Test),
+	offsetof(struct Test, _asn_ctx),
+	.tag2el = asn_MAP_Test_tag2el_1,
+	.tag2el_count = 7,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	-1,	/* Start extensions */
+	-1	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_Test = {
+	"Test",
+	"Test",
+	&asn_OP_SEQUENCE,
+	asn_DEF_Test_tags_1,
+	sizeof(asn_DEF_Test_tags_1)
+		/sizeof(asn_DEF_Test_tags_1[0]), /* 1 */
+	asn_DEF_Test_tags_1,	/* Same as above */
+	sizeof(asn_DEF_Test_tags_1)
+		/sizeof(asn_DEF_Test_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_Test_1,
+	7,	/* Elements count */
+	&asn_SPC_Test_specs_1	/* Additional specs */
+};
+