narrowing to support 32-bit floats
diff --git a/tests/tests-asn1c-compiler/154-with-REAL-components-OK.asn1 b/tests/tests-asn1c-compiler/154-with-REAL-components-OK.asn1
new file mode 100644
index 0000000..bfc3ef6
--- /dev/null
+++ b/tests/tests-asn1c-compiler/154-with-REAL-components-OK.asn1
@@ -0,0 +1,45 @@
+
+-- OK: Everything is fine
+
+-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
+-- .spelio.software.asn1c.test (9363.1.5.1)
+-- .154
+
+ModuleREALWithComponents
+	{ iso org(3) dod(6) internet(1) private(4) enterprise(1)
+		spelio(9363) software(1) asn1c(5) test(1) 154 }
+DEFINITIONS ::= BEGIN
+
+    UnconstrainedREAL ::= REAL
+
+    WeirdlyConstrainedREAL ::= REAL (3, ...)    -- Not really constrained
+
+    -- X.696 (08/2005) #12.2 and #12.3
+
+    -- IEEE 754 encoding single precision 
+    IEEE-binary32-w ::= REAL (WITH COMPONENTS { 
+                mantissa (-16777215..16777215),
+                base (2), exponent (-126..126)})
+
+    IEEE-binary32-0w ::= REAL (0 | WITH COMPONENTS { 
+                mantissa (-16777215..16777215),
+                base (2), exponent (-126..126)})
+
+    IEEE-binary32-w0 ::= REAL (WITH COMPONENTS { 
+                mantissa (-16777215..16777215),
+                base (2), exponent (-126..126)} | 0)
+
+    -- IEEE 754 encoding double precision 
+    IEEE-binary64-w ::= REAL (WITH COMPONENTS { 
+                mantissa (-9007199254740991..9007199254740991),
+                base (2), exponent (-1022..1023)})
+
+    IEEE-binary64-0w ::= REAL (0 | WITH COMPONENTS { 
+                mantissa (-9007199254740991..9007199254740991),
+                base (2), exponent (-1022..1023)})
+
+    IEEE-binary64-w0 ::= REAL (WITH COMPONENTS { 
+                mantissa (-9007199254740991..9007199254740991),
+                base (2), exponent (-1022..1023)} | 0)
+
+END
diff --git a/tests/tests-asn1c-compiler/154-with-REAL-components-OK.asn1.-Pgen-OER b/tests/tests-asn1c-compiler/154-with-REAL-components-OK.asn1.-Pgen-OER
new file mode 100644
index 0000000..18d2726
--- /dev/null
+++ b/tests/tests-asn1c-compiler/154-with-REAL-components-OK.asn1.-Pgen-OER
@@ -0,0 +1,573 @@
+
+/*** <<< INCLUDES [UnconstrainedREAL] >>> ***/
+
+#include <NativeReal.h>
+
+/*** <<< TYPE-DECLS [UnconstrainedREAL] >>> ***/
+
+typedef double	 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;
+oer_type_decoder_f UnconstrainedREAL_decode_oer;
+oer_type_encoder_f UnconstrainedREAL_encode_oer;
+
+/*** <<< CODE [UnconstrainedREAL] >>> ***/
+
+/*
+ * This type is implemented using NativeReal,
+ * 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_NativeReal,
+	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, NativeReal_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [WeirdlyConstrainedREAL] >>> ***/
+
+#include <NativeReal.h>
+
+/*** <<< TYPE-DECLS [WeirdlyConstrainedREAL] >>> ***/
+
+typedef double	 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;
+oer_type_decoder_f WeirdlyConstrainedREAL_decode_oer;
+oer_type_encoder_f WeirdlyConstrainedREAL_encode_oer;
+
+/*** <<< CODE [WeirdlyConstrainedREAL] >>> ***/
+
+int
+WeirdlyConstrainedREAL_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	double value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const double *)sptr;
+	
+	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 NativeReal,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< CTDEFS [WeirdlyConstrainedREAL] >>> ***/
+
+static asn_oer_constraints_t asn_OER_type_WeirdlyConstrainedREAL_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+
+/*** <<< 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_NativeReal,
+	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 */
+	{ &asn_OER_type_WeirdlyConstrainedREAL_constr_1, 0, WeirdlyConstrainedREAL_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [IEEE-binary32-w] >>> ***/
+
+#include <NativeReal.h>
+
+/*** <<< TYPE-DECLS [IEEE-binary32-w] >>> ***/
+
+typedef double	 IEEE_binary32_w_t;
+
+/*** <<< FUNC-DECLS [IEEE-binary32-w] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_IEEE_binary32_w;
+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;
+oer_type_decoder_f IEEE_binary32_w_decode_oer;
+oer_type_encoder_f IEEE_binary32_w_encode_oer;
+
+/*** <<< 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) {
+	
+	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 */) {
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeReal,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< CTDEFS [IEEE-binary32-w] >>> ***/
+
+static asn_oer_constraints_t asn_OER_type_IEEE_binary32_w_constr_1 CC_NOTUSED = {
+	{ 4, 0 },
+	-1};
+
+/*** <<< STAT-DEFS [IEEE-binary32-w] >>> ***/
+
+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_NativeReal,
+	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 */
+	{ &asn_OER_type_IEEE_binary32_w_constr_1, 0, IEEE_binary32_w_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [IEEE-binary32-0w] >>> ***/
+
+#include <NativeReal.h>
+
+/*** <<< TYPE-DECLS [IEEE-binary32-0w] >>> ***/
+
+typedef double	 IEEE_binary32_0w_t;
+
+/*** <<< FUNC-DECLS [IEEE-binary32-0w] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_IEEE_binary32_0w;
+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;
+oer_type_decoder_f IEEE_binary32_0w_decode_oer;
+oer_type_encoder_f IEEE_binary32_0w_encode_oer;
+
+/*** <<< 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) {
+	
+	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 */) {
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeReal,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< CTDEFS [IEEE-binary32-0w] >>> ***/
+
+static asn_oer_constraints_t asn_OER_type_IEEE_binary32_0w_constr_1 CC_NOTUSED = {
+	{ 4, 0 },
+	-1};
+
+/*** <<< STAT-DEFS [IEEE-binary32-0w] >>> ***/
+
+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_NativeReal,
+	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 */
+	{ &asn_OER_type_IEEE_binary32_0w_constr_1, 0, IEEE_binary32_0w_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [IEEE-binary32-w0] >>> ***/
+
+#include <NativeReal.h>
+
+/*** <<< TYPE-DECLS [IEEE-binary32-w0] >>> ***/
+
+typedef double	 IEEE_binary32_w0_t;
+
+/*** <<< FUNC-DECLS [IEEE-binary32-w0] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_IEEE_binary32_w0;
+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;
+oer_type_decoder_f IEEE_binary32_w0_decode_oer;
+oer_type_encoder_f IEEE_binary32_w0_encode_oer;
+
+/*** <<< 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) {
+	
+	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 */) {
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeReal,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< CTDEFS [IEEE-binary32-w0] >>> ***/
+
+static asn_oer_constraints_t asn_OER_type_IEEE_binary32_w0_constr_1 CC_NOTUSED = {
+	{ 4, 0 },
+	-1};
+
+/*** <<< STAT-DEFS [IEEE-binary32-w0] >>> ***/
+
+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_NativeReal,
+	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 */
+	{ &asn_OER_type_IEEE_binary32_w0_constr_1, 0, IEEE_binary32_w0_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [IEEE-binary64-w] >>> ***/
+
+#include <NativeReal.h>
+
+/*** <<< TYPE-DECLS [IEEE-binary64-w] >>> ***/
+
+typedef double	 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;
+oer_type_decoder_f IEEE_binary64_w_decode_oer;
+oer_type_encoder_f IEEE_binary64_w_encode_oer;
+
+/*** <<< 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) {
+	
+	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 */) {
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeReal,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< CTDEFS [IEEE-binary64-w] >>> ***/
+
+static asn_oer_constraints_t asn_OER_type_IEEE_binary64_w_constr_1 CC_NOTUSED = {
+	{ 8, 0 },
+	-1};
+
+/*** <<< 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_NativeReal,
+	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 */
+	{ &asn_OER_type_IEEE_binary64_w_constr_1, 0, IEEE_binary64_w_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [IEEE-binary64-0w] >>> ***/
+
+#include <NativeReal.h>
+
+/*** <<< TYPE-DECLS [IEEE-binary64-0w] >>> ***/
+
+typedef double	 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;
+oer_type_decoder_f IEEE_binary64_0w_decode_oer;
+oer_type_encoder_f IEEE_binary64_0w_encode_oer;
+
+/*** <<< 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) {
+	
+	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 */) {
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeReal,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< CTDEFS [IEEE-binary64-0w] >>> ***/
+
+static asn_oer_constraints_t asn_OER_type_IEEE_binary64_0w_constr_1 CC_NOTUSED = {
+	{ 8, 0 },
+	-1};
+
+/*** <<< 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_NativeReal,
+	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 */
+	{ &asn_OER_type_IEEE_binary64_0w_constr_1, 0, IEEE_binary64_0w_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [IEEE-binary64-w0] >>> ***/
+
+#include <NativeReal.h>
+
+/*** <<< TYPE-DECLS [IEEE-binary64-w0] >>> ***/
+
+typedef double	 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;
+oer_type_decoder_f IEEE_binary64_w0_decode_oer;
+oer_type_encoder_f IEEE_binary64_w0_encode_oer;
+
+/*** <<< 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) {
+	
+	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 */) {
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeReal,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< CTDEFS [IEEE-binary64-w0] >>> ***/
+
+static asn_oer_constraints_t asn_OER_type_IEEE_binary64_w0_constr_1 CC_NOTUSED = {
+	{ 8, 0 },
+	-1};
+
+/*** <<< 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_NativeReal,
+	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 */
+	{ &asn_OER_type_IEEE_binary64_w0_constr_1, 0, IEEE_binary64_w0_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/tests/tests-asn1c-compiler/154-with-REAL-components-OK.asn1.-Pgen-PER b/tests/tests-asn1c-compiler/154-with-REAL-components-OK.asn1.-Pgen-PER
new file mode 100644
index 0000000..76fec49
--- /dev/null
+++ b/tests/tests-asn1c-compiler/154-with-REAL-components-OK.asn1.-Pgen-PER
@@ -0,0 +1,587 @@
+
+/*** <<< INCLUDES [UnconstrainedREAL] >>> ***/
+
+#include <NativeReal.h>
+
+/*** <<< TYPE-DECLS [UnconstrainedREAL] >>> ***/
+
+typedef double	 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;
+per_type_decoder_f UnconstrainedREAL_decode_uper;
+per_type_encoder_f UnconstrainedREAL_encode_uper;
+
+/*** <<< CODE [UnconstrainedREAL] >>> ***/
+
+/*
+ * This type is implemented using NativeReal,
+ * 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_NativeReal,
+	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, NativeReal_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [WeirdlyConstrainedREAL] >>> ***/
+
+#include <NativeReal.h>
+
+/*** <<< TYPE-DECLS [WeirdlyConstrainedREAL] >>> ***/
+
+typedef double	 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;
+per_type_decoder_f WeirdlyConstrainedREAL_decode_uper;
+per_type_encoder_f WeirdlyConstrainedREAL_encode_uper;
+
+/*** <<< CODE [WeirdlyConstrainedREAL] >>> ***/
+
+int
+WeirdlyConstrainedREAL_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	double value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const double *)sptr;
+	
+	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 NativeReal,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< CTDEFS [WeirdlyConstrainedREAL] >>> ***/
+
+static asn_per_constraints_t asn_PER_type_WeirdlyConstrainedREAL_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+
+/*** <<< 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_NativeReal,
+	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, &asn_PER_type_WeirdlyConstrainedREAL_constr_1, WeirdlyConstrainedREAL_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [IEEE-binary32-w] >>> ***/
+
+#include <NativeReal.h>
+
+/*** <<< TYPE-DECLS [IEEE-binary32-w] >>> ***/
+
+typedef double	 IEEE_binary32_w_t;
+
+/*** <<< FUNC-DECLS [IEEE-binary32-w] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_IEEE_binary32_w;
+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;
+per_type_decoder_f IEEE_binary32_w_decode_uper;
+per_type_encoder_f IEEE_binary32_w_encode_uper;
+
+/*** <<< 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) {
+	
+	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 */) {
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeReal,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< CTDEFS [IEEE-binary32-w] >>> ***/
+
+static asn_per_constraints_t asn_PER_type_IEEE_binary32_w_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+
+/*** <<< STAT-DEFS [IEEE-binary32-w] >>> ***/
+
+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_NativeReal,
+	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, &asn_PER_type_IEEE_binary32_w_constr_1, IEEE_binary32_w_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [IEEE-binary32-0w] >>> ***/
+
+#include <NativeReal.h>
+
+/*** <<< TYPE-DECLS [IEEE-binary32-0w] >>> ***/
+
+typedef double	 IEEE_binary32_0w_t;
+
+/*** <<< FUNC-DECLS [IEEE-binary32-0w] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_IEEE_binary32_0w;
+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;
+per_type_decoder_f IEEE_binary32_0w_decode_uper;
+per_type_encoder_f IEEE_binary32_0w_encode_uper;
+
+/*** <<< 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) {
+	
+	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 */) {
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeReal,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< CTDEFS [IEEE-binary32-0w] >>> ***/
+
+static asn_per_constraints_t asn_PER_type_IEEE_binary32_0w_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+
+/*** <<< STAT-DEFS [IEEE-binary32-0w] >>> ***/
+
+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_NativeReal,
+	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, &asn_PER_type_IEEE_binary32_0w_constr_1, IEEE_binary32_0w_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [IEEE-binary32-w0] >>> ***/
+
+#include <NativeReal.h>
+
+/*** <<< TYPE-DECLS [IEEE-binary32-w0] >>> ***/
+
+typedef double	 IEEE_binary32_w0_t;
+
+/*** <<< FUNC-DECLS [IEEE-binary32-w0] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_IEEE_binary32_w0;
+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;
+per_type_decoder_f IEEE_binary32_w0_decode_uper;
+per_type_encoder_f IEEE_binary32_w0_encode_uper;
+
+/*** <<< 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) {
+	
+	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 */) {
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeReal,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< CTDEFS [IEEE-binary32-w0] >>> ***/
+
+static asn_per_constraints_t asn_PER_type_IEEE_binary32_w0_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+
+/*** <<< STAT-DEFS [IEEE-binary32-w0] >>> ***/
+
+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_NativeReal,
+	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, &asn_PER_type_IEEE_binary32_w0_constr_1, IEEE_binary32_w0_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [IEEE-binary64-w] >>> ***/
+
+#include <NativeReal.h>
+
+/*** <<< TYPE-DECLS [IEEE-binary64-w] >>> ***/
+
+typedef double	 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;
+per_type_decoder_f IEEE_binary64_w_decode_uper;
+per_type_encoder_f IEEE_binary64_w_encode_uper;
+
+/*** <<< 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) {
+	
+	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 */) {
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeReal,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< CTDEFS [IEEE-binary64-w] >>> ***/
+
+static asn_per_constraints_t asn_PER_type_IEEE_binary64_w_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+
+/*** <<< 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_NativeReal,
+	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, &asn_PER_type_IEEE_binary64_w_constr_1, IEEE_binary64_w_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [IEEE-binary64-0w] >>> ***/
+
+#include <NativeReal.h>
+
+/*** <<< TYPE-DECLS [IEEE-binary64-0w] >>> ***/
+
+typedef double	 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;
+per_type_decoder_f IEEE_binary64_0w_decode_uper;
+per_type_encoder_f IEEE_binary64_0w_encode_uper;
+
+/*** <<< 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) {
+	
+	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 */) {
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeReal,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< CTDEFS [IEEE-binary64-0w] >>> ***/
+
+static asn_per_constraints_t asn_PER_type_IEEE_binary64_0w_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+
+/*** <<< 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_NativeReal,
+	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, &asn_PER_type_IEEE_binary64_0w_constr_1, IEEE_binary64_0w_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
+
+/*** <<< INCLUDES [IEEE-binary64-w0] >>> ***/
+
+#include <NativeReal.h>
+
+/*** <<< TYPE-DECLS [IEEE-binary64-w0] >>> ***/
+
+typedef double	 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;
+per_type_decoder_f IEEE_binary64_w0_decode_uper;
+per_type_encoder_f IEEE_binary64_w0_encode_uper;
+
+/*** <<< 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) {
+	
+	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 */) {
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeReal,
+ * so here we adjust the DEF accordingly.
+ */
+
+/*** <<< CTDEFS [IEEE-binary64-w0] >>> ***/
+
+static asn_per_constraints_t asn_PER_type_IEEE_binary64_w0_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+
+/*** <<< 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_NativeReal,
+	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, &asn_PER_type_IEEE_binary64_w0_constr_1, IEEE_binary64_w0_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+