xref: /freebsd/lib/libc/softfloat/unorddf2.c (revision 559a218c9b257775fb249b67945fe4a05b7a6b9f)
115144b0fSOlivier Houchard /* $NetBSD: unorddf2.c,v 1.1 2003/05/06 08:58:19 rearnsha Exp $ */
215144b0fSOlivier Houchard 
315144b0fSOlivier Houchard /*
415144b0fSOlivier Houchard  * Written by Richard Earnshaw, 2003.  This file is in the Public Domain.
515144b0fSOlivier Houchard  */
615144b0fSOlivier Houchard 
715144b0fSOlivier Houchard #include "softfloat-for-gcc.h"
815144b0fSOlivier Houchard #include "milieu.h"
915144b0fSOlivier Houchard #include "softfloat.h"
1015144b0fSOlivier Houchard 
1115144b0fSOlivier Houchard flag __unorddf2(float64, float64);
1215144b0fSOlivier Houchard 
1315144b0fSOlivier Houchard flag
__unorddf2(float64 a,float64 b)1415144b0fSOlivier Houchard __unorddf2(float64 a, float64 b)
1515144b0fSOlivier Houchard {
1615144b0fSOlivier Houchard 	/*
1715144b0fSOlivier Houchard 	 * The comparison is unordered if either input is a NaN.
1815144b0fSOlivier Houchard 	 * Test for this by comparing each operand with itself.
1915144b0fSOlivier Houchard 	 * We must perform both comparisons to correctly check for
2015144b0fSOlivier Houchard 	 * signalling NaNs.
2115144b0fSOlivier Houchard 	 */
2215144b0fSOlivier Houchard 	return 1 ^ (float64_eq(a, a) & float64_eq(b, b));
2315144b0fSOlivier Houchard }
24