Fix preferred serialization of subnormals (#192)

Preferred Serialization now fully supports conversion to/from half, single and double subnormals. This includes NaN payloads.

The tests for floating-point are much better organized and give greater coverage. 

IEEE 754 code is better organized and cleaner.



* Fix preferred serialization of subnormals (checkpoint)

* Check point progress

* Preferred float mostly working and tests passing

* added NaN tests

* Fix up ieee754.h; a few other compiler warnings

* decoding NaN payloads fix; rework half-double; tests

* Code tidyness

* indent to 3, not 4

* TODO's are done in other test; code tidy

* test running with float HW use disabled

* Remove / rearrange float tests

* Fix full float ifdef test fan out

* Code tidiness; sort out final TODO's

---------

Co-authored-by: Laurence Lundblade <lgl@securitytheory.com>
diff --git a/test/run_tests.c b/test/run_tests.c
index f2baaf1..34495ab 100644
--- a/test/run_tests.c
+++ b/test/run_tests.c
@@ -118,12 +118,11 @@
     TEST_ENTRY(SetUpAllocatorTest),
     TEST_ENTRY(CBORTestIssue134),
 #endif /* #ifndef QCBOR_DISABLE_INDEFINITE_LENGTH_STRINGS */
-#ifndef QCBOR_DISABLE_PREFERRED_FLOAT
-    TEST_ENTRY(HalfPrecisionDecodeBasicTests),
-    TEST_ENTRY(DoubleAsSmallestTest),
-    TEST_ENTRY(HalfPrecisionAgainstRFCCodeTest),
-#endif /* QCBOR_DISABLE_PREFERRED_FLOAT */
 #ifndef USEFULBUF_DISABLE_ALL_FLOAT
+#ifndef QCBOR_DISABLE_PREFERRED_FLOAT
+   TEST_ENTRY(HalfPrecisionAgainstRFCCodeTest),
+   TEST_ENTRY(FloatValuesTests),
+#endif /* QCBOR_DISABLE_PREFERRED_FLOAT */
     TEST_ENTRY(GeneralFloatEncodeTests),
     TEST_ENTRY(GeneralFloatDecodeTests),
 #endif /* USEFULBUF_DISABLE_ALL_FLOAT */