mirror of
https://github.com/recp/cglm.git
synced 2025-10-04 01:00:46 +00:00
vec: implement muladd's scalar version
This commit is contained in:
@@ -49,6 +49,7 @@ Functions:
|
||||
#. :c:func:`glm_vec_addadd`
|
||||
#. :c:func:`glm_vec_subadd`
|
||||
#. :c:func:`glm_vec_muladd`
|
||||
#. :c:func:`glm_vec_muladds`
|
||||
#. :c:func:`glm_vec_flipsign`
|
||||
#. :c:func:`glm_vec_flipsign_to`
|
||||
#. :c:func:`glm_vec_inv`
|
||||
@@ -253,6 +254,16 @@ Functions documentation
|
||||
| *[in]* **b** vector 2
|
||||
| *[out]* **dest** dest += (a * b)
|
||||
|
||||
.. c:function:: void glm_vec_muladds(vec3 a, float s, vec3 dest)
|
||||
|
||||
| mul vector with scalar and add result to sum
|
||||
| it applies += operator so dest must be initialized
|
||||
|
||||
Parameters:
|
||||
| *[in]* **a** vector
|
||||
| *[in]* **s** scalar
|
||||
| *[out]* **dest** dest += (a * b)
|
||||
|
||||
.. c:function:: void glm_vec_flipsign(vec3 v)
|
||||
|
||||
flip sign of all vec3 members
|
||||
|
@@ -41,6 +41,7 @@ Functions:
|
||||
#. :c:func:`glm_vec4_addadd`
|
||||
#. :c:func:`glm_vec4_subadd`
|
||||
#. :c:func:`glm_vec4_muladd`
|
||||
#. :c:func:`glm_vec4_muladds`
|
||||
#. :c:func:`glm_vec4_flipsign`
|
||||
#. :c:func:`glm_vec_flipsign_to`
|
||||
#. :c:func:`glm_vec4_inv`
|
||||
@@ -238,6 +239,16 @@ Functions documentation
|
||||
| *[in]* **b** vector 2
|
||||
| *[out]* **dest** dest += (a * b)
|
||||
|
||||
.. c:function:: void glm_vec4_muladds(vec4 a, float s, vec4 dest)
|
||||
|
||||
| mul vector with scalar and add result to sum
|
||||
| it applies += operator so dest must be initialized
|
||||
|
||||
Parameters:
|
||||
| *[in]* **a** vector
|
||||
| *[in]* **s** scalar
|
||||
| *[out]* **dest** dest += (a * b)
|
||||
|
||||
.. c:function:: void glm_vec4_flipsign(vec4 v)
|
||||
|
||||
flip sign of all vec4 members
|
||||
|
@@ -104,6 +104,10 @@ CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_muladd(vec3 a, vec3 b, vec3 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_muladds(vec3 a, float s, vec3 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_flipsign(vec3 v);
|
||||
|
@@ -105,6 +105,10 @@ CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_muladd(vec4 a, vec4 b, vec4 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_muladds(vec4 a, float s, vec4 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_flipsign(vec4 v);
|
||||
|
@@ -389,6 +389,23 @@ glm_vec_muladd(vec3 a, vec3 b, vec3 dest) {
|
||||
dest[2] += a[2] * b[2];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief mul vector with scalar and add result to sum
|
||||
*
|
||||
* it applies += operator so dest must be initialized
|
||||
*
|
||||
* @param[in] a vector
|
||||
* @param[in] s scalar
|
||||
* @param[out] dest dest += (a * b)
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec_muladds(vec3 a, float s, vec3 dest) {
|
||||
dest[0] += a[0] * s;
|
||||
dest[1] += a[1] * s;
|
||||
dest[2] += a[2] * s;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief flip sign of all vec3 members
|
||||
*
|
||||
|
@@ -472,6 +472,30 @@ glm_vec4_muladd(vec4 a, vec4 b, vec4 dest) {
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief mul vector with scalar and add result to sum
|
||||
*
|
||||
* it applies += operator so dest must be initialized
|
||||
*
|
||||
* @param[in] a vector
|
||||
* @param[in] s scalar
|
||||
* @param[out] dest dest += (a * b)
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_muladds(vec4 a, float s, vec4 dest) {
|
||||
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||
_mm_store_ps(dest, _mm_add_ps(_mm_load_ps(dest),
|
||||
_mm_mul_ps(_mm_load_ps(a),
|
||||
_mm_set1_ps(s))));
|
||||
#else
|
||||
dest[0] += a[0] * s;
|
||||
dest[1] += a[1] * s;
|
||||
dest[2] += a[2] * s;
|
||||
dest[3] += a[3] * s;
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief flip sign of all vec4 members
|
||||
*
|
||||
|
@@ -140,6 +140,12 @@ glmc_vec_muladd(vec3 a, vec3 b, vec3 dest) {
|
||||
glm_vec_muladd(a, b, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_muladds(vec3 a, float s, vec3 dest) {
|
||||
glm_vec_muladds(a, s, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_flipsign(vec3 v) {
|
||||
|
@@ -140,6 +140,12 @@ glmc_vec4_muladd(vec4 a, vec4 b, vec4 dest) {
|
||||
glm_vec4_muladd(a, b, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_muladds(vec4 a, float s, vec4 dest) {
|
||||
glm_vec4_muladds(a, s, dest);
|
||||
}
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_flipsign(vec4 v) {
|
||||
|
Reference in New Issue
Block a user