Blender V4.3
math_matrix.h File Reference

Go to the source code of this file.

Macros

#define MAT(A, size, row, col)   A[(row) * (size) + (col)]
 
#define MATS(A, n, r, c, s)   MAT(A, n, r, c)
 
#define MATHS(A, r, c, s)   A[(r) * ((r) + 1) / 2 + (c)]
 
#define VECS(V, i, s)   V[i]
 
#define ROT(M, r1, c1, r2, c2, stride)
 

Functions

ccl_device_inline void math_vector_zero (ccl_private float *v, int n)
 
ccl_device_inline void math_matrix_zero (ccl_private float *A, int n)
 
ccl_device_inline void math_vector_add (ccl_private float *a, ccl_private const float *ccl_restrict b, int n)
 
ccl_device_inline void math_vector_mul (ccl_private float *a, ccl_private const float *ccl_restrict b, int n)
 
ccl_device_inline void math_vector_mul_strided (ccl_global float *a, ccl_private const float *ccl_restrict b, int astride, int n)
 
ccl_device_inline void math_vector_scale (ccl_private float *a, float b, int n)
 
ccl_device_inline void math_vector_max (ccl_private float *a, ccl_private const float *ccl_restrict b, int n)
 
ccl_device_inline void math_vec3_add (ccl_private float3 *v, int n, ccl_private float *x, float3 w)
 
ccl_device_inline void math_vec3_add_strided (ccl_global float3 *v, int n, ccl_private float *x, float3 w, int stride)
 
ccl_device_inline void math_trimatrix_add_diagonal (ccl_global float *A, int n, float val, int stride)
 
ccl_device_inline void math_matrix_add_gramian (ccl_private float *A, int n, ccl_private const float *ccl_restrict v, float weight)
 
ccl_device_inline void math_trimatrix_add_gramian_strided (ccl_global float *A, int n, ccl_private const float *ccl_restrict v, float weight, int stride)
 
ccl_device_inline void math_trimatrix_add_gramian (ccl_global float *A, int n, ccl_private const float *ccl_restrict v, float weight)
 
ccl_device_inline void math_matrix_transpose (ccl_global float *A, int n, int stride)
 
ccl_device void math_trimatrix_cholesky (ccl_global float *A, int n, int stride)
 
ccl_device_inline void math_trimatrix_vec3_solve (ccl_global float *A, ccl_global float3 *y, int n, int stride)
 
ccl_device void math_matrix_jacobi_eigendecomposition (ccl_private float *A, ccl_global float *V, int n, int v_stride)
 

Macro Definition Documentation

◆ MAT

#define MAT ( A,
size,
row,
col )   A[(row) * (size) + (col)]

◆ MATHS

#define MATHS ( A,
r,
c,
s )   A[(r) * ((r) + 1) / 2 + (c)]

◆ MATS

#define MATS ( A,
n,
r,
c,
s )   MAT(A, n, r, c)

Definition at line 19 of file math_matrix.h.

Referenced by math_matrix_jacobi_eigendecomposition(), and math_matrix_transpose().

◆ ROT

#define ROT ( M,
r1,
c1,
r2,
c2,
stride )
Value:
{ \
float M1 = MATS(M, n, r1, c1, stride); \
float M2 = MATS(M, n, r2, c2, stride); \
MATS(M, n, r1, c1, stride) -= s * (M2 + tan_phi_2 * M1); \
MATS(M, n, r2, c2, stride) += s * (M1 - tan_phi_2 * M2); \
}
#define MATS(A, n, r, c, s)
Definition math_matrix.h:19
#define M

Referenced by math_matrix_jacobi_eigendecomposition().

◆ VECS

#define VECS ( V,
i,
s )   V[i]

Definition at line 21 of file math_matrix.h.

Referenced by math_trimatrix_vec3_solve().

Function Documentation

◆ math_matrix_add_gramian()

ccl_device_inline void math_matrix_add_gramian ( ccl_private float * A,
int n,
ccl_private const float *ccl_restrict v,
float weight )

Definition at line 122 of file math_matrix.h.

References col, MAT, and v.

◆ math_matrix_jacobi_eigendecomposition()

ccl_device void math_matrix_jacobi_eigendecomposition ( ccl_private float * A,
ccl_global float * V,
int n,
int v_stride )

Definition at line 241 of file math_matrix.h.

References col, element, fabsf, MAT, MATS, ROT, sqrtf, V, and v.

◆ math_matrix_transpose()

ccl_device_inline void math_matrix_transpose ( ccl_global float * A,
int n,
int stride )

Definition at line 159 of file math_matrix.h.

References MATS.

◆ math_matrix_zero()

ccl_device_inline void math_matrix_zero ( ccl_private float * A,
int n )

Definition at line 33 of file math_matrix.h.

References col, and MAT.

◆ math_trimatrix_add_diagonal()

ccl_device_inline void math_trimatrix_add_diagonal ( ccl_global float * A,
int n,
float val,
int stride )

Definition at line 110 of file math_matrix.h.

References MATHS.

Referenced by math_trimatrix_vec3_solve().

◆ math_trimatrix_add_gramian()

ccl_device_inline void math_trimatrix_add_gramian ( ccl_global float * A,
int n,
ccl_private const float *ccl_restrict v,
float weight )

Definition at line 146 of file math_matrix.h.

References atomic_add_and_fetch_float, col, MATHS, and v.

◆ math_trimatrix_add_gramian_strided()

ccl_device_inline void math_trimatrix_add_gramian_strided ( ccl_global float * A,
int n,
ccl_private const float *ccl_restrict v,
float weight,
int stride )

Definition at line 136 of file math_matrix.h.

References atomic_add_and_fetch_float, col, MATHS, and v.

◆ math_trimatrix_cholesky()

ccl_device void math_trimatrix_cholesky ( ccl_global float * A,
int n,
int stride )

Definition at line 175 of file math_matrix.h.

References col, MATHS, max, and sqrtf.

Referenced by math_trimatrix_vec3_solve().

◆ math_trimatrix_vec3_solve()

ccl_device_inline void math_trimatrix_vec3_solve ( ccl_global float * A,
ccl_global float3 * y,
int n,
int stride )

Definition at line 205 of file math_matrix.h.

References col, math_trimatrix_add_diagonal(), math_trimatrix_cholesky(), MATHS, sum(), and VECS.

◆ math_vec3_add()

ccl_device_inline void math_vec3_add ( ccl_private float3 * v,
int n,
ccl_private float * x,
float3 w )

Definition at line 88 of file math_matrix.h.

References v, and w().

◆ math_vec3_add_strided()

ccl_device_inline void math_vec3_add_strided ( ccl_global float3 * v,
int n,
ccl_private float * x,
float3 w,
int stride )

Definition at line 95 of file math_matrix.h.

References atomic_add_and_fetch_float, ccl_global, v, and w().

◆ math_vector_add()

ccl_device_inline void math_vector_add ( ccl_private float * a,
ccl_private const float *ccl_restrict b,
int n )

Definition at line 44 of file math_matrix.h.

References b.

◆ math_vector_max()

ccl_device_inline void math_vector_max ( ccl_private float * a,
ccl_private const float *ccl_restrict b,
int n )

Definition at line 79 of file math_matrix.h.

References b, and max.

◆ math_vector_mul()

ccl_device_inline void math_vector_mul ( ccl_private float * a,
ccl_private const float *ccl_restrict b,
int n )

Definition at line 53 of file math_matrix.h.

References b.

◆ math_vector_mul_strided()

ccl_device_inline void math_vector_mul_strided ( ccl_global float * a,
ccl_private const float *ccl_restrict b,
int astride,
int n )

Definition at line 62 of file math_matrix.h.

References b.

◆ math_vector_scale()

ccl_device_inline void math_vector_scale ( ccl_private float * a,
float b,
int n )

Definition at line 72 of file math_matrix.h.

References b.

◆ math_vector_zero()

ccl_device_inline void math_vector_zero ( ccl_private float * v,
int n )

Definition at line 26 of file math_matrix.h.

References v.