Fixed Point Arithmetic  0
Fixed-point math library.
vector.h
Go to the documentation of this file.
1 
38 #include "../vector.h"
39 #include "../fixed_point.h"
40 
50 
51 
55 
60 
65 
70 
75 
80 
86 
91 
96 
101 
106 
111 
116 
121 
126 
131 
136 
141 
146 
151 
156 
161 
166 
171 
179 
180 
dvec3 dv_imul(dvec3 a, int16_t b)
Multiply double precision vector by integer having the same width as frac.
Definition: vector.h:95
efrac f_to_ef(frac x)
Extend a single precision fractional to an extended-fractional.
Definition: fixed_point.h:435
dfrac df_shiftr(dfrac a, int16_t b)
Arithmetic shift right a double precision fractional.
Definition: fixed_point.h:389
#define MAKE_VEC_SCALAR_F2(name, typeR, typeA, typeB, f)
Macro to create functions with function-operations between vectors and scalars.
Definition: vector.h:91
efrac f_imul_ef(frac a, int16_t b)
Multiply single precision by integer, yield extended precision.
Definition: fixed_point.h:286
16 bit fractional number in Q8.8 format.
Definition: types.h:76
dfrac df_imul(dfrac a, int16_t b)
Multiply double precision by integer, yield double precision.
Definition: fixed_point.h:301
frac f_imul(frac a, int16_t b)
Multiply single precision by integer, yield single precision.
Definition: fixed_point.h:257
frac f_sub(frac a, frac b)
Substract two single precision fractional numbers - may overflow.
Definition: fixed_point.h:162
frac df_to_f(dfrac x)
Truncate to single precision.
Definition: fixed_point.h:406
evec3 ev_idiv(evec3 a, int16_t b)
Divide extended precision vector by integer having the same width as frac.
Definition: vector.h:115
dfrac f_to_df(frac x)
Extend a single precision number to double precision.
Definition: fixed_point.h:426
evec3 v_mvmul_ev(vec3 a, mvec3 b)
Element-by-element mutiplication of a single precision vector by mixed precision, yieding extended pr...
Definition: vector.h:85
Mixed integer/fractional 3D vector.
Definition: vector_types.h:52
dfrac df_shiftl(dfrac a, int16_t b)
Arithmetic shift left a double precision fractional.
Definition: fixed_point.h:375
frac f_idiv(frac a, int16_t b)
Divide single precision by integer, yield single precision.
Definition: fixed_point.h:331
efrac ef_idiv(efrac a, int16_t b)
Divide extended precision by integer, yield extended precision.
Definition: fixed_point.h:361
dvec3 dv_shiftr(dvec3 a, int8_t b)
Arithmetic shift components right.
Definition: vector.h:125
dvec3 dv_add(dvec3 a, dvec3 b)
Add two double precision vectors.
Definition: vector.h:69
#define MAKE_VEC_VEC_F(name, type, f)
Macro to create functions with element by element operations between vectors.
Definition: vector.h:80
vec3 dv_to_v(dvec3 a)
Convert double precision vector to single precision, by clipping and truncating.
Definition: vector.h:178
evec3 v_to_ev(vec3 a)
Extend a single precision vector.
Definition: vector.h:165
dfrac df_sub(dfrac a, dfrac b)
Substract two double precision fractional numbers - may overflow.
Definition: fixed_point.h:168
vec3 v_imul(vec3 a, int16_t b)
Multiply vector by integer having the same width as frac.
Definition: vector.h:90
dvec3 dv_shiftl(dvec3 a, int8_t b)
Arithmetic shift components left.
Definition: vector.h:120
vec3 v_fmul(vec3 a, frac b)
Multiply a single precision vector by a fractional, yield single precision.
Definition: vector.h:145
dfrac df_idiv(dfrac a, int16_t b)
Divide double precision by integer, yield double precision.
Definition: fixed_point.h:346
efrac ef_sub(efrac a, efrac b)
Substract two extended precision fractional numbers - may overflow.
Definition: fixed_point.h:174
dvec3 dv_addsat(dvec3 a, dvec3 b)
Sum two double precision vectors with saturation.
Definition: vector.h:74
frac f_clip(frac x, frac limit)
Clip a number to lie between -limit and limit.
Definition: fixed_point.h:478
dfrac f_mul_df(frac a, frac b)
Multiply single precision, yield double precision.
Definition: fixed_point.h:228
frac ef_to_f(efrac x)
Saturate an extended fractional to yield a fractional.
Definition: fixed_point.h:460
vec3 v_add(vec3 a, vec3 b)
Add two single precision vectors.
Definition: vector.h:49
evec3 ev_sub(evec3 a, evec3 b)
Substract two extended precision vectors.
Definition: vector.h:64
Double precision 3D vector.
Definition: vector_types.h:70
dvec3 dv_idiv(dvec3 a, int16_t b)
Divide double precision vector by integer having the same width as frac.
Definition: vector.h:110
#define MAKE_VEC_ELEM_F(name, typeR, typeA, f)
Macro to make a function that applies a scalar function to all elements of a vector.
Definition: vector.h:121
frac f_add(frac a, frac b)
Add two single precision fractional numbers - may overflow.
Definition: fixed_point.h:159
evec3 v_mfmul_ev(vec3 a, mfrac b)
Multiply a single precision vector by a mixed fractional, yield extended precision.
Definition: vector.h:155
16 bit fractional number in Q1.15 format.
Definition: types.h:86
vec3 v_idiv(vec3 a, int16_t b)
Divide vector by integer having the same width as frac.
Definition: vector.h:105
evec3 ev_add(evec3 a, evec3 b)
Add two extended precision vectors.
Definition: vector.h:59
efrac ef_add(efrac a, efrac b)
Add two extended precision fractional numbers - may overflow.
Definition: fixed_point.h:171
vec3 v_clip(vec3 a, frac b)
Clip components between -b and b.
Definition: vector.h:130
#define MAKE_VEC_VEC_F3(name, typeR, typeA, typeB, f)
Macro to create functions with element by element operations between vectors.
Definition: vector.h:63
Extended precision 3D vector.
Definition: vector_types.h:79
evec3 v_efdiv_ev(vec3 a, efrac b)
Divide a vector by an extended frac, yield an extended vector.
Definition: vector.h:140
efrac f_ef_div(frac dividend, efrac divisor)
Divide a frac by an efrac and return an efrac.
Definition: fixed_point.h:444
dvec3 dv_sub(dvec3 a, dvec3 b)
Substract two double precision vectors.
Definition: vector.h:79
dfrac df_add(dfrac a, dfrac b)
Add two double precision fractional numbers - may overflow.
Definition: fixed_point.h:165
#define MAKE_VEC_SCALAR_F(name, typeA, typeB, f)
Macro to create functions with function-operations between vectors and scalars.
Definition: vector.h:109
frac f_mul(frac a, frac b)
Multiply single precision, yield single precision.
Definition: fixed_point.h:214
dvec3 v_to_dv(vec3 a)
Convert single precision vector to double precision.
Definition: vector.h:170
Single precision 3D vector.
Definition: vector_types.h:61
vec3 ev_to_v(evec3 a)
Clip an extended precision vector to the range of a single precision.
Definition: vector.h:160
dfrac df_addsat(dfrac x1, dfrac x2)
Add with saturation.
Definition: fixed_point.h:492
efrac ef_imul(efrac a, int16_t b)
Multiply extended precision by integer, yield extended precision.
Definition: fixed_point.h:316
32 bit fractional number in Q17.15 format.
Definition: types.h:112
efrac f_mf_mul_ef(frac a, mfrac b)
Multiply single precision by mixed fractional, yield extended precision,.
Definition: fixed_point.h:242
dvec3 v_fmul_dv(vec3 a, frac b)
Multiply a single precision vector by a fractional, yield double precision.
Definition: vector.h:150
evec3 ev_imul(evec3 a, int b)
Multiply extended precision vector by integer.
Definition: vector.h:100
evec3 v_imul_ev(vec3 a, int b)
Multiply single precicion vector by integer, yield extended precision vector.
Definition: vector.h:135
vec3 v_sub(vec3 a, vec3 b)
Substract two single precision vectors.
Definition: vector.h:54