summaryrefslogtreecommitdiff log msg author committer range
path: root/src/utils/fpmath.h
blob: edf6471e9f9443208ded9684345fed8d14298c8c (plain)
 ```1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 ``` ``````/* * This file is part of LibCSS. * Licensed under the MIT License, * http://www.opensource.org/licenses/mit-license.php * Copyright 2008 John-Mark Bell */ #ifndef css_utils_fpmath_h_ #define css_utils_fpmath_h_ #include /* 22:10 fixed point math */ typedef int32_t fixed; /* Add two fixed point values */ #define FADD(a, b) ((a) + (b)) /* Subtract two fixed point values */ #define FSUB(a, b) ((a) - (b)) /* Multiply two fixed point values */ #define FMUL(a, b) (((a) * (b)) >> 10) /* Divide two fixed point values */ #define FDIV(a, b) (((a) << 10) / (b)) /* Add an integer to a fixed point value */ #define FADDI(a, b) ((a) + ((b) << 10)) /* Subtract an integer from a fixed point value */ #define FSUBI(a, b) ((a) - ((b) << 10)) /* Multiply a fixed point value by an integer */ #define FMULI(a, b) ((a) * (b)) /* Divide a fixed point value by an integer */ #define FDIVI(a, b) ((a) / (b)) /* Convert a floating point value to fixed point */ #define FLTTOFIX(a) ((fixed) ((a) * (float) (1 << 10))) /* Convert a fixed point value to floating point */ #define FIXTOFLT(a) ((float) (a) / (float) (1 << 10)) /* Convert an integer to a fixed point value */ #define INTTOFIX(a) ((a) << 10) /* Convert a fixed point value to an integer */ #define FIXTOINT(a) ((a) >> 10) #endif ``````