/* * Copyright (c) 1992,1993-1995 by Argonaut Technologies Limited. All rights reserved. * * $Id: fixed.h 2.5 1996/12/06 13:04:01 sam Exp $ * $Locker: $ */ #ifndef _FIXED_H_ #define _FIXED_H_ #ifndef INLINE_FIXED #define INLINE_FIXED 1 #endif /* * Fixed point types */ typedef long br_fixed_ls; /* Long Signed fixed 15.16 */ typedef short br_fixed_lsf; /* Long Signed fraction 0.15 */ typedef unsigned long br_fixed_lu; /* Long unsigned fixed 16.16 */ typedef unsigned short br_fixed_luf;/* Long unsigned fixed fraction 0.16 */ typedef short br_fixed_ss; /* Short Signed fixed 7.8 */ typedef char br_fixed_ssf; /* Short Signed fraction 0.7 */ typedef unsigned short br_fixed_su; /* Short unsigned fixed 8.8 */ typedef unsigned char br_fixed_suf; /* Short unsigned fixed fraction 0.8 */ /* * 1 in various fixed point forms */ #define BR_ONE_LS 65536 /* (1<<16) */ #define BR_ONE_LSF 32768 /* (1<<15) */ #define BR_ONE_LU 65536 /* (1<<16) */ #define BR_ONE_LUF 65536 /* (1<<16) */ #define BR_ONE_SS 256 /* (1<<8) */ #define BR_ONE_SSF 128 /* (1<<7) */ #define BR_ONE_SU 256 /* (1<<8) */ #define BR_ONE_SUF 256 /* (1<<8) */ #define BrIntToFixed(i) ((i) << 16) #define BrFixedToInt(i) ((i) >> 16) #define BrFloatToFixed(f) ((br_fixed_ls)((f)*(float)BR_ONE_LS)) #define BrFixedToFloat(s) ((float)((s)*(1.0/(float)BR_ONE_LS))) #define BrFloatToFixedLS(f) ((br_fixed_ls)((f)*(float)BR_ONE_LS)) #define BrFixedLSToFloat(s) ((float)((s)*(1.0/(float)BR_ONE_LS))) #define BrFixedLSFToFloat(s) ((float)((s)*(1.0/(float)BR_ONE_LSF))) #define BrFixedLUFToFloat(s) ((float)((s)*(1.0/(float)BR_ONE_LUF))) #define BrFloatToFixedLSF(f) ((br_fixed_lsf)((f)*(float)BR_ONE_LSF)) #define BrFloatToFixedLUF(f) ((br_fixed_luf)((f)*(float)BR_ONE_LUF)) #endif