xref: /freebsd-src/lib/libc/softfloat/unordsf2.c (revision 559a218c9b257775fb249b67945fe4a05b7a6b9f)
1*15144b0fSOlivier Houchard /* $NetBSD: unordsf2.c,v 1.1 2003/05/06 08:58:20 rearnsha Exp $ */
2*15144b0fSOlivier Houchard 
3*15144b0fSOlivier Houchard /*
4*15144b0fSOlivier Houchard  * Written by Richard Earnshaw, 2003.  This file is in the Public Domain.
5*15144b0fSOlivier Houchard  */
6*15144b0fSOlivier Houchard 
7*15144b0fSOlivier Houchard #include "softfloat-for-gcc.h"
8*15144b0fSOlivier Houchard #include "milieu.h"
9*15144b0fSOlivier Houchard #include "softfloat.h"
10*15144b0fSOlivier Houchard 
11*15144b0fSOlivier Houchard flag __unordsf2(float32, float32);
12*15144b0fSOlivier Houchard 
13*15144b0fSOlivier Houchard flag
__unordsf2(float32 a,float32 b)14*15144b0fSOlivier Houchard __unordsf2(float32 a, float32 b)
15*15144b0fSOlivier Houchard {
16*15144b0fSOlivier Houchard 	/*
17*15144b0fSOlivier Houchard 	 * The comparison is unordered if either input is a NaN.
18*15144b0fSOlivier Houchard 	 * Test for this by comparing each operand with itself.
19*15144b0fSOlivier Houchard 	 * We must perform both comparisons to correctly check for
20*15144b0fSOlivier Houchard 	 * signalling NaNs.
21*15144b0fSOlivier Houchard 	 */
22*15144b0fSOlivier Houchard 	return 1 ^ (float32_eq(a, a) & float32_eq(b, b));
23*15144b0fSOlivier Houchard }
24