/****************************************************************************/
/*                                                                          */
/*                      Chaine de CAO & VLSI   Alliance                     */
/*                                                                          */
/*    Produit : SAX                                                         */
/*    Fichier : ConvMacro (Macro for double/int conversion)                 */
/*                                                                          */
/*    (c) copyright 1991 Laboratoire MASI equipe CAO & VLSI                 */
/*    Tous droits reserves                                                  */
/*    Support : e-mail cao-vlsi@masi.ibp.fr                                 */
/*                                                                          */
/*    Auteur(s) : Michel DELVAL                         le : 12/05/1992     */
/*                                                                          */
/*    Modifie par : Vincent POUILLEY                    le : 20/09/1992     */
/*    Modifie par :                                     le : ../../....     */
/*    Modifie par :                                     le : ../../....     */
/*                                                                          */
/*    $Id: ConvMacro.h,v 2.1.1.1 1993/09/23 16:04:30 sax Exp sax $              */
/*                                                                          */
/****************************************************************************/

#ifndef _ConvMacro_h_
#define _ConvMacro_h_


/* #define ROUND(n)						((int) ((n) + 0.5)) */

#ifndef ____SAX_PV_ROUND_VARIABLE____
#define ____SAX_PV_ROUND_VARIABLE____
double __SAX_PV_ROUND_VARIABLE__;
#endif

#define ROUND(n) (((__SAX_PV_ROUND_VARIABLE__ = (n)) < 0.) ? \
				  ((int)(__SAX_PV_ROUND_VARIABLE__ - 0.49)) : \
				  ((int)(__SAX_PV_ROUND_VARIABLE__ + 0.49)))

#define SCALE_TO_DOUBLE(scale,number)	((scale) * ((double) (number)))
#define SCALE_TO_INT(scale,number)		ROUND (SCALE_TO_DOUBLE ((scale), (number)))

#define UNSCALE_TO_DOUBLE(scale,number)	(((double) (number)) / (scale))
#define UNSCALE_TO_INT(scale,number)	ROUND (UNSCALE_TO_DOUBLE ((scale), (number)))

#endif /* _ConvMacro_h_ */
