rtxFloat.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2003-2010 Objective Systems, Inc.
00003  *
00004  * This software is furnished under a license and may be used and copied
00005  * only in accordance with the terms of such license and with the
00006  * inclusion of the above copyright notice. This software or any other
00007  * copies thereof may not be provided or otherwise made available to any
00008  * other person. No title to and ownership of the software is hereby
00009  * transferred.
00010  *
00011  * The information in this software is subject to change without notice
00012  * and should not be construed as a commitment by Objective Systems, Inc.
00013  *
00014  * PROPRIETARY NOTICE
00015  *
00016  * This software is an unpublished work subject to a confidentiality agreement
00017  * and is protected by copyright and trade secret law.  Unauthorized copying,
00018  * redistribution or other use of this work is prohibited.
00019  *
00020  * The above notice of copyright on this source code product does not indicate
00021  * any actual or intended publication of such source code.
00022  *
00023  *****************************************************************************/
00028 #ifndef _RTXFLOAT_H_
00029 #define _RTXFLOAT_H_
00030 
00031 #include "rtxsrc/rtxCommon.h"
00032 
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036 
00037 #ifdef _NO_ULP_EQUAL
00038 
00039 /* Fall back to normal equality test */
00040 #define rtxFloatEqual(a, b)           (a == b)
00041 #define rtxFloatGreater(a, b)         (a >  b)
00042 #define rtxFloatGreaterOrEqual(a, b)  (a >= b)
00043 #define rtxFloatSmaller(a, b)         (a <  b)
00044 #define rtxFloatSmallerOrEqual(a, b)  (a <= b)
00045 #ifndef __SYMBIAN32__
00046 #define rtxDoubleEqual(a, b)          (a == b)
00047 #define rtxDoubleGreater(a, b)        (a >  b)
00048 #define rtxDoubleGreaterOrEqual(a, b) (a >= b)
00049 #define rtxDoubleSmaller(a, b)        (a <  b)
00050 #define rtxDoubleSmallerOrEqual(a, b) (a <= b)
00051 #endif /* not building for Symbian */
00052 
00053 #else /* _NO_ULP_EQUAL */
00054 
00055 #define rtxFloatEqual(a, b) rtxFloatEqualImpl(a, b)
00056 #define rtxFloatGreater(a, b)         ((a>b) && !rtxFloatEqual(a,b))
00057 #define rtxFloatGreaterOrEqual(a, b)  ((a>b) ||  rtxFloatEqual(a,b))
00058 #define rtxFloatSmaller(a, b)         ((a<b) && !rtxFloatEqual(a,b))
00059 #define rtxFloatSmallerOrEqual(a, b)  ((a<b) ||  rtxFloatEqual(a,b))
00060 #ifndef __SYMBIAN32__
00061 #define rtxDoubleEqual(a, b) rtxDoubleEqualImpl(a, b)
00062 #define rtxDoubleGreater(a, b)        ((a>b) && !rtxDoubleEqual(a,b))
00063 #define rtxDoubleGreaterOrEqual(a, b) ((a>b) ||  rtxDoubleEqual(a,b))
00064 #define rtxDoubleSmaller(a, b)        ((a<b) && !rtxDoubleEqual(a,b))
00065 #define rtxDoubleSmallerOrEqual(a, b) ((a<b) ||  rtxDoubleEqual(a,b))
00066 #endif /* not building for Symbian */
00067 
00068 #endif /* _NO_ULP_EQUAL */
00069 
00070 EXTERNRT OSBOOL rtxFloatEqualImpl(float a, float b);
00071 
00072 #ifndef __SYMBIAN32__
00073 EXTERNRT OSBOOL rtxDoubleEqualImpl(double a, double b);
00074 #endif
00075 
00076 #ifdef __cplusplus
00077 }
00078 #endif
00079 
00080 #endif /* _RTXFLOAT_H_ */
00081