fixed.inc
fixed.inc
CPP1/* Fixed point arithmetic2 *3 * (c) Copyright 1998-2011, ITB CompuPhase4 * This file is provided as is (no warranties).5 */6#pragma library Fixed78const fround_method: {9 fround_round = 0,10 fround_floor,11 fround_ceil,12 fround_tozero,13 fround_unbiased14};1516native Fixed:fixed(value);17native Fixed:strfixed(const string[]);18native Fixed:fmul(Fixed:oper1, Fixed:oper2);19native Fixed:fdiv(Fixed:dividend, Fixed:divisor);20native Fixed:ffract(Fixed:value);21native fround(Fixed:value, fround_method:method=fround_round);22native Fixed:fpower(Fixed:value, exponent);23native Fixed:fsqroot(Fixed:value);24native Fixed:fabs(Fixed:value);25native fint(Fixed:value);2627#pragma rational Fixed(3)2829/* user defined operators */30native Fixed:operator*(Fixed:oper1, Fixed:oper2) = fmul;31native Fixed:operator/(Fixed:oper1, Fixed:oper2) = fdiv;32native Fixed:operator=(oper) = fixed;3334stock Fixed:operator++(Fixed:oper)35 return oper + fixed(1);3637stock Fixed:operator--(Fixed:oper)38 return oper - fixed(1);3940stock Fixed:operator*(Fixed:oper1, oper2)41 return Fixed: (_:oper1 * oper2); /* "*" is commutative */4243stock Fixed:operator/(Fixed:oper1, oper2)44 return oper1 / fixed(oper2);4546stock Fixed:operator/(oper1, Fixed:oper2)47 return fdiv(fixed(oper1), oper2);4849stock Fixed:operator+(Fixed:oper1, oper2)50 return oper1 + fixed(oper2); /* "+" is commutative */5152stock Fixed:operator-(Fixed:oper1, oper2)53 return oper1 - fixed(oper2);5455stock Fixed:operator-(oper1, Fixed:oper2)56 return fixed(oper1) - oper2;5758stock bool:operator>(Fixed:oper1, oper2)59 return oper1 > fixed(oper2);6061stock bool:operator>(oper1, Fixed:oper2)62 return fixed(oper1) > oper2;6364stock bool:operator>=(Fixed:oper1, oper2)65 return oper1 >= fixed(oper2);6667stock bool:operator>=(oper1, Fixed:oper2)68 return fixed(oper1) >= oper2;6970stock bool:operator<(Fixed:oper1, oper2)71 return oper1 < fixed(oper2);7273stock bool:operator<(oper1, Fixed:oper2)74 return fixed(oper1) < oper2;7576stock bool:operator<=(Fixed:oper1, oper2)77 return oper1 <= fixed(oper2);7879stock bool:operator<=(oper1, Fixed:oper2)80 return fixed(oper1) <= oper2;8182stock bool:operator==(Fixed:oper1, oper2) /* "==" is commutative */83 return oper1 == fixed(oper2);8485stock bool:operator!=(Fixed:oper1, oper2) /* "!=" is commutative */86 return oper1 != fixed(oper2);8788/* forbidden operations */89forward operator%(Fixed:oper1, Fixed:oper2);90forward operator%(Fixed:oper1, oper2);91forward operator%(oper1, Fixed:oper2);929394
Wrapped for easier reading. Turn wrap off to inspect exact line lengths.