1 /* $NetBSD: unorddf2.c,v 1.1 2003/05/06 08:58:19 rearnsha Exp $ */ 2 /** @file 3 * 4 * Copyright (c) 2013 - 2014, ARM Limited. All rights reserved. 5 * 6 * This program and the accompanying materials 7 * are licensed and made available under the terms and conditions of the BSD License 8 * which accompanies this distribution. The full text of the license may be found at 9 * http://opensource.org/licenses/bsd-license.php 10 * 11 * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 13 * 14 **/ 15 /* 16 * Written by Richard Earnshaw, 2003. This file is in the Public Domain. 17 */ 18 19 #include "softfloat-for-gcc.h" 20 #include "milieu.h" 21 #include "softfloat.h" 22 23 #include <sys/cdefs.h> 24 #if defined(LIBC_SCCS) && !defined(lint) 25 __RCSID("$NetBSD: unorddf2.c,v 1.1 2003/05/06 08:58:19 rearnsha Exp $"); 26 #endif /* LIBC_SCCS and not lint */ 27 28 flag __unorddf2(float64, float64); 29 30 flag 31 __unorddf2(float64 a, float64 b) 32 { 33 /* 34 * The comparison is unordered if either input is a NaN. 35 * Test for this by comparing each operand with itself. 36 * We must perform both comparisons to correctly check for 37 * signalling NaNs. 38 */ 39 return 1 ^ (float64_eq(a, a) & float64_eq(b, b)); 40 } 41