18#ifdef BLI_MATH_GCC_WARN_PRAGMA
19# pragma GCC diagnostic push
20# pragma GCC diagnostic ignored "-Wredundant-decls"
35 float r_eigen_values[3],
36 float r_eigen_vectors[3][3]);
46void BLI_svd_m3(
const float m3[3][3],
float r_U[3][3],
float r_S[3],
float r_V[3][3]);
65 const float *a,
const float *
b,
const float *c,
const float *d,
float *r_x,
int count);
73 const float *a,
const float *
b,
const float *c,
const float *d,
float *r_x,
int count);
107 const float x_init[3],
110#ifdef BLI_MATH_GCC_WARN_PRAGMA
111# pragma GCC diagnostic pop
bool(* Newton3D_CorrectionFunc)(void *userdata, const float x[3], float step[3], float x_next[3])
bool BLI_newton3d_solve(Newton3D_DeltaFunc func_delta, Newton3D_JacobianFunc func_jacobian, Newton3D_CorrectionFunc func_correction, void *userdata, float epsilon, int max_iterations, bool trace, const float x_init[3], float result[3])
Solve a generic f(x) = 0 equation using Newton's method.
bool BLI_tridiagonal_solve_cyclic(const float *a, const float *b, const float *c, const float *d, float *r_x, int count)
Solve a possibly cyclic tridiagonal system using the Sherman-Morrison formula.
void(* Newton3D_JacobianFunc)(void *userdata, const float x[3], float r_jacobian[3][3])
void BLI_svd_m3(const float m3[3][3], float r_U[3][3], float r_S[3], float r_V[3][3])
Compute the SVD (Singular Values Decomposition) of given 3D matrix (m3 = USV*).
void(* Newton3D_DeltaFunc)(void *userdata, const float x[3], float r_delta[3])
bool BLI_eigen_solve_selfadjoint_m3(const float m3[3][3], float r_eigen_values[3], float r_eigen_vectors[3][3])
Compute the eigen values and/or vectors of given 3D symmetric (aka adjoint) matrix.
bool BLI_tridiagonal_solve(const float *a, const float *b, const float *c, const float *d, float *r_x, int count)
Solve a tridiagonal system of equations:
local_group_size(16, 16) .push_constant(Type b