+/**
+ * Operations involving NaN's must return NaN
+ */
+#define handle_NAN(a, b, result) \
+do { \
+ if (_desc(a).clss == NAN) { \
+ if (a != result) memcpy(result, a, calc_buffer_size); \
+ return result; \
+ } \
+ if (_desc(b).clss == NAN) { \
+ if (b != result) memcpy(result, b, calc_buffer_size); \
+ return result; \
+ } \
+}while (0)
+
+
+/**