33 #ifdef BLI_MATH_GCC_WARN_PRAGMA
34 # pragma GCC diagnostic push
35 # pragma GCC diagnostic ignored "-Wredundant-decls"
41 float r_eigen_values[3],
42 float r_eigen_vectors[3][3]);
44 void BLI_svd_m3(
const float m3[3][3],
float r_U[3][3],
float r_S[],
float r_V[3][3]);
49 const float *
a,
const float *b,
const float *
c,
const float *d,
float *r_x,
const int count);
51 const float *
a,
const float *b,
const float *
c,
const float *d,
float *r_x,
const int count);
68 const float x_init[3],
71 #ifdef BLI_MATH_GCC_WARN_PRAGMA
72 # 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.
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[], float r_V[3][3])
bool BLI_tridiagonal_solve(const float *a, const float *b, const float *c, const float *d, float *r_x, const int count)
Solve a tridiagonal system of equations:
void(* Newton3D_DeltaFunc)(void *userdata, const float x[3], float r_delta[3])
bool BLI_tridiagonal_solve_cyclic(const float *a, const float *b, const float *c, const float *d, float *r_x, const int count)
Solve a possibly cyclic tridiagonal system using the Sherman-Morrison formula.
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.