Remove Twitter links.
[SquirrelJME.git] / nanocoat / include / sjme / fixed.h
bloba3fc56495fe82f0e648332576afd97b50c0512ad
1 /* -*- Mode: C; indent-tabs-mode: t; tab-width: 4 -*-
2 // ---------------------------------------------------------------------------
3 // SquirrelJME
4 // Copyright (C) Stephanie Gawroriski <xer@multiphasicapps.net>
5 // ---------------------------------------------------------------------------
6 // SquirrelJME is under the Mozilla Public License Version 2.0.
7 // See license.mkd for licensing and copyright information.
8 // -------------------------------------------------------------------------*/
10 /**
11 * Fixed point math.
13 * @since 2024/06/27
16 #ifndef SQUIRRELJME_FIXED_H
17 #define SQUIRRELJME_FIXED_H
19 #include "sjme/stdTypes.h"
21 /* Anti-C++. */
22 #ifdef __cplusplus
23 #ifndef SJME_CXX_IS_EXTERNED
24 #define SJME_CXX_IS_EXTERNED
25 #define SJME_CXX_SQUIRRELJME_FIXED_H
26 extern "C" {
27 #endif /* #ifdef SJME_CXX_IS_EXTERNED */
28 #endif /* #ifdef __cplusplus */
30 /*--------------------------------------------------------------------------*/
32 /**
33 * Ceiling a fixed point number, removing any fractional value.
35 * @param v The value to ceiling.
36 * @return The resultant ceiling value.
37 * @since 2024/07/10
39 sjme_fixed sjme_fixed_ceil(
40 sjme_attrInValue sjme_jint v);
42 /**
43 * Divides two fixed values.
45 * @param num The numerator.
46 * @param den The denominator.
47 * @return The resultant fixed value.
48 * @since 2024/06/27
50 sjme_fixed sjme_fixed_div(
51 sjme_attrInValue sjme_fixed num,
52 sjme_attrInValue sjme_fixed den);
54 /**
55 * Floors a fixed point number, removing any fractional value.
57 * @param v The value to floor.
58 * @return The resultant floored value.
59 * @since 2024/07/10
61 sjme_fixed sjme_fixed_floor(
62 sjme_attrInValue sjme_jint v);
64 /**
65 * Calculates a fraction from two integers.
67 * @param num The numerator.
68 * @param den The denominator.
69 * @return The resultant fixed value.
70 * @since 2024/06/27
72 sjme_fixed sjme_fixed_fraction(
73 sjme_attrInValue sjme_jint num,
74 sjme_attrInValue sjme_jint den);
76 /**
77 * Converts an integer to a fixed value.
79 * @param val The input value to convert.
80 * @return The resultant fixed value.
81 * @since 2024/06/27
83 sjme_fixed sjme_fixed_hi(
84 sjme_attrInValue sjme_jint val);
86 /**
87 * Converts a fixed to an integer value.
89 * @param val The input value to convert.
90 * @return The resultant integer value.
91 * @since 2024/06/27
93 sjme_jint sjme_fixed_int(
94 sjme_attrInValue sjme_fixed val);
96 /**
97 * Multiplies two fixed values.
99 * @param a The first value.
100 * @param b The second value.
101 * @return The resultant fixed value.
102 * @since 2024/06/27
104 sjme_fixed sjme_fixed_mul(
105 sjme_attrInValue sjme_fixed a,
106 sjme_attrInValue sjme_fixed b);
109 * Rounds a fixed point number, removing any fractional value.
111 * @param v The value to round.
112 * @return The resultant rounded value.
113 * @since 2024/07/10
115 sjme_fixed sjme_fixed_round(
116 sjme_attrInValue sjme_jint v);
118 /*--------------------------------------------------------------------------*/
120 /* Anti-C++. */
121 #ifdef __cplusplus
122 #ifdef SJME_CXX_SQUIRRELJME_FIXED_H
124 #undef SJME_CXX_SQUIRRELJME_FIXED_H
125 #undef SJME_CXX_IS_EXTERNED
126 #endif /* #ifdef SJME_CXX_SQUIRRELJME_FIXED_H */
127 #endif /* #ifdef __cplusplus */
129 #endif /* SQUIRRELJME_FIXED_H */