38 #include "../vector.h" 39 #include "../fixed_point.h" dvec3 dv_imul(dvec3 a, int16_t b)
Multiply double precision vector by integer having the same width as frac.
efrac f_to_ef(frac x)
Extend a single precision fractional to an extended-fractional.
dfrac df_shiftr(dfrac a, int16_t b)
Arithmetic shift right a double precision fractional.
#define MAKE_VEC_SCALAR_F2(name, typeR, typeA, typeB, f)
Macro to create functions with function-operations between vectors and scalars.
efrac f_imul_ef(frac a, int16_t b)
Multiply single precision by integer, yield extended precision.
16 bit fractional number in Q8.8 format.
dfrac df_imul(dfrac a, int16_t b)
Multiply double precision by integer, yield double precision.
frac f_imul(frac a, int16_t b)
Multiply single precision by integer, yield single precision.
frac f_sub(frac a, frac b)
Substract two single precision fractional numbers - may overflow.
frac df_to_f(dfrac x)
Truncate to single precision.
evec3 ev_idiv(evec3 a, int16_t b)
Divide extended precision vector by integer having the same width as frac.
dfrac f_to_df(frac x)
Extend a single precision number to double precision.
evec3 v_mvmul_ev(vec3 a, mvec3 b)
Element-by-element mutiplication of a single precision vector by mixed precision, yieding extended pr...
Mixed integer/fractional 3D vector.
dfrac df_shiftl(dfrac a, int16_t b)
Arithmetic shift left a double precision fractional.
frac f_idiv(frac a, int16_t b)
Divide single precision by integer, yield single precision.
efrac ef_idiv(efrac a, int16_t b)
Divide extended precision by integer, yield extended precision.
dvec3 dv_shiftr(dvec3 a, int8_t b)
Arithmetic shift components right.
dvec3 dv_add(dvec3 a, dvec3 b)
Add two double precision vectors.
#define MAKE_VEC_VEC_F(name, type, f)
Macro to create functions with element by element operations between vectors.
vec3 dv_to_v(dvec3 a)
Convert double precision vector to single precision, by clipping and truncating.
evec3 v_to_ev(vec3 a)
Extend a single precision vector.
dfrac df_sub(dfrac a, dfrac b)
Substract two double precision fractional numbers - may overflow.
vec3 v_imul(vec3 a, int16_t b)
Multiply vector by integer having the same width as frac.
dvec3 dv_shiftl(dvec3 a, int8_t b)
Arithmetic shift components left.
vec3 v_fmul(vec3 a, frac b)
Multiply a single precision vector by a fractional, yield single precision.
dfrac df_idiv(dfrac a, int16_t b)
Divide double precision by integer, yield double precision.
efrac ef_sub(efrac a, efrac b)
Substract two extended precision fractional numbers - may overflow.
dvec3 dv_addsat(dvec3 a, dvec3 b)
Sum two double precision vectors with saturation.
frac f_clip(frac x, frac limit)
Clip a number to lie between -limit and limit.
dfrac f_mul_df(frac a, frac b)
Multiply single precision, yield double precision.
frac ef_to_f(efrac x)
Saturate an extended fractional to yield a fractional.
vec3 v_add(vec3 a, vec3 b)
Add two single precision vectors.
evec3 ev_sub(evec3 a, evec3 b)
Substract two extended precision vectors.
Double precision 3D vector.
dvec3 dv_idiv(dvec3 a, int16_t b)
Divide double precision vector by integer having the same width as frac.
#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.
frac f_add(frac a, frac b)
Add two single precision fractional numbers - may overflow.
evec3 v_mfmul_ev(vec3 a, mfrac b)
Multiply a single precision vector by a mixed fractional, yield extended precision.
16 bit fractional number in Q1.15 format.
vec3 v_idiv(vec3 a, int16_t b)
Divide vector by integer having the same width as frac.
evec3 ev_add(evec3 a, evec3 b)
Add two extended precision vectors.
efrac ef_add(efrac a, efrac b)
Add two extended precision fractional numbers - may overflow.
vec3 v_clip(vec3 a, frac b)
Clip components between -b and b.
#define MAKE_VEC_VEC_F3(name, typeR, typeA, typeB, f)
Macro to create functions with element by element operations between vectors.
Extended precision 3D vector.
evec3 v_efdiv_ev(vec3 a, efrac b)
Divide a vector by an extended frac, yield an extended vector.
efrac f_ef_div(frac dividend, efrac divisor)
Divide a frac by an efrac and return an efrac.
dvec3 dv_sub(dvec3 a, dvec3 b)
Substract two double precision vectors.
dfrac df_add(dfrac a, dfrac b)
Add two double precision fractional numbers - may overflow.
#define MAKE_VEC_SCALAR_F(name, typeA, typeB, f)
Macro to create functions with function-operations between vectors and scalars.
frac f_mul(frac a, frac b)
Multiply single precision, yield single precision.
dvec3 v_to_dv(vec3 a)
Convert single precision vector to double precision.
Single precision 3D vector.
vec3 ev_to_v(evec3 a)
Clip an extended precision vector to the range of a single precision.
dfrac df_addsat(dfrac x1, dfrac x2)
Add with saturation.
efrac ef_imul(efrac a, int16_t b)
Multiply extended precision by integer, yield extended precision.
32 bit fractional number in Q17.15 format.
efrac f_mf_mul_ef(frac a, mfrac b)
Multiply single precision by mixed fractional, yield extended precision,.
dvec3 v_fmul_dv(vec3 a, frac b)
Multiply a single precision vector by a fractional, yield double precision.
evec3 ev_imul(evec3 a, int b)
Multiply extended precision vector by integer.
evec3 v_imul_ev(vec3 a, int b)
Multiply single precicion vector by integer, yield extended precision vector.
vec3 v_sub(vec3 a, vec3 b)
Substract two single precision vectors.