xref: /freebsd/lib/libc/softfloat/unorddf2.c (revision 15144b0f960e6044ec23ad91c5f76f37d1de36ba)
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 #include <sys/cdefs.h>
1215144b0fSOlivier Houchard __FBSDID("$FreeBSD$");
1315144b0fSOlivier Houchard 
1415144b0fSOlivier Houchard flag __unorddf2(float64, float64);
1515144b0fSOlivier Houchard 
1615144b0fSOlivier Houchard flag
1715144b0fSOlivier Houchard __unorddf2(float64 a, float64 b)
1815144b0fSOlivier Houchard {
1915144b0fSOlivier Houchard 	/*
2015144b0fSOlivier Houchard 	 * The comparison is unordered if either input is a NaN.
2115144b0fSOlivier Houchard 	 * Test for this by comparing each operand with itself.
2215144b0fSOlivier Houchard 	 * We must perform both comparisons to correctly check for
2315144b0fSOlivier Houchard 	 * signalling NaNs.
2415144b0fSOlivier Houchard 	 */
2515144b0fSOlivier Houchard 	return 1 ^ (float64_eq(a, a) & float64_eq(b, b));
2615144b0fSOlivier Houchard }
27