utilities.h#
Defines
-
real#
Real type to be used for floating point calculations. Choose between double and long double.
-
PI#
Value of PI.
-
RAD2DEG#
Conversion factor from radians to degrees.
-
DEG2RAD#
Conversion factor from degrees to radians.
-
EARTH_OBLIQUITY#
Value of Earth’s obliquity in radians.
-
EARTH_RAD_WGS84#
Value of Earth’s WGS84 radius in AU.
-
EARTH_FLAT_WGS84#
Value of Earth’s WGS84 flattening.
Functions
-
void wrap_to_2pi(real &angle)#
Wrap an angle to the range [0, 2*pi).
- Parameters:
angle – [inout] Angle to be wrapped.
-
void rad_to_deg(const real &rad, real °)#
Convert an angle from radians to degrees.
- Parameters:
rad – [in] Angle in radians.
deg – [out] Angle in degrees.
-
real rad_to_deg(const real rad)#
Convert an angle from radians to degrees.
- Parameters:
rad – [in] Angle in radians.
- Returns:
real Angle in degrees.
-
void deg_to_rad(const real °, real &rad)#
Convert an angle from degrees to radians.
- Parameters:
deg – [in] Angle in degrees.
rad – [out] Angle in radians.
-
real deg_to_rad(const real deg)#
Convert an angle from degrees to radians.
- Parameters:
deg – [in] Angle in degrees.
- Returns:
real Angle in radians.
-
void sort_vector(std::vector<real> &v, const bool &ascending, std::vector<size_t> &sortedIdx)#
Sort a vector in ascending or descending order.
- Parameters:
v – [inout] Vector to be sorted.
ascending – [in] True for ascending order, false for descending order.
sortedIdx – [out] Vector of sorted indices from the original vector.
-
void sort_vector_by_idx(std::vector<std::vector<real>> &v, const std::vector<size_t> &sortedIdx)#
Sort a vector of vectors based on the indices of another vector.
- Parameters:
v – [inout] Vector of vectors to be sorted.
sortedIdx – [in] Vector of sorted indices.
-
void vdot(const std::vector<real> &v1, const std::vector<real> &v2, real &dot)#
Dot product of two vectors.
- Parameters:
v1 – [in] Vector 1.
v2 – [in] Vector 2.
dot – [out] Dot product of v1 and v2.
-
void vdot(const real *v1, const real *v2, const size_t &dim, real &dot)#
Dot product of two vectors.
- Parameters:
v1 – [in] Vector 1.
v2 – [in] Vector 2.
dim – [in] Dimension of the vectors.
dot – [out] Dot product of v1 and v2.
-
void vnorm(const std::vector<real> &v, real &norm)#
Norm of a vector.
- Parameters:
v – [in] Vector.
norm – [out] Norm of v.
-
void vnorm(const real *v, const size_t &dim, real &norm)#
Norm of a vector.
- Parameters:
v – [in] Vector.
dim – [in] Dimension of the vector.
norm – [out] Norm of v.
-
void vunit(const std::vector<real> &v, std::vector<real> &unit)#
Unit vector of a vector.
- Parameters:
v – [in] Vector.
vunit – [out] Unit vector of v.
-
void vunit(const real *v, const size_t &dim, real *unit)#
Unit vector of a vector.
- Parameters:
v – [in] Vector.
dim – [in] Dimension of the vector.
unit – [out] Unit vector of v.
-
void vcross(const std::vector<real> &v1, const std::vector<real> &v2, std::vector<real> &cross)#
Cross product of two vectors.
- Parameters:
v1 – [in] Vector 1.
v2 – [in] Vector 2.
v3 – [out] Cross product of v1 and v2.
-
void vcross(const real *v1, const real *v2, real *cross)#
Cross product of two vectors.
- Parameters:
v1 – [in] Vector 1.
v2 – [in] Vector 2.
v3 – [out] Cross product of v1 and v2.
-
void vadd(const std::vector<real> &v1, const std::vector<real> &v2, std::vector<real> &sum)#
Add two vectors.
- Parameters:
v1 – [in] Vector 1.
v2 – [in] Vector 2.
v3 – [out] Sum of v1 and v2.
-
void vsub(const std::vector<real> &v1, const std::vector<real> &v2, std::vector<real> &diff)#
Subtract two vectors.
- Parameters:
v1 – [in] Vector 1.
v2 – [in] Vector 2.
v3 – [out] Difference of v1 and v2.
-
void vcmul(const std::vector<real> &v, const real &c, std::vector<real> &vc)#
Multiply a vector by a constant.
- Parameters:
v – [in] Vector.
c – [in] Constant.
vc – [out] Product of v and c.
-
void vvmul(const std::vector<real> &v1, const std::vector<real> &v2, std::vector<real> &v3)#
Multiply two vectors element-wise.
- Parameters:
v1 – [in] Vector 1.
v2 – [in] Vector 2.
v3 – [out] Element-wise product of v1 and v2.
-
void vabs_max(const std::vector<real> &v, real &max)#
Find the maximum absolute value in a vector.
- Parameters:
v – [in] Vector.
max – [out] Maximum absolute value in v.
-
void vabs_max(const real *v, const size_t &dim, real &max)#
Find the maximum absolute value in a vector.
- Parameters:
v – [in] Vector.
dim – [in] Dimension of the vector.
max – [out] Maximum absolute value in v.
-
void mat_vec_mul(const std::vector<std::vector<real>> &A, const std::vector<real> &v, std::vector<real> &Av)#
Multiply a matrix by a vector.
- Parameters:
A – [in] Matrix.
v – [in] Vector.
Av – [out] Product of A and v.
-
void vec_mat_mul(const std::vector<real> &v, real **A, const size_t &dim, std::vector<real> &vA)#
Multiply a vector by a matrix.
- Parameters:
v – [in] Vector.
A – [in] Matrix.
dim – [in] Dimension of the vector and matrix.
vA – [out] Product of v and A.
-
void mat_mat_mul(const std::vector<std::vector<real>> &A, const std::vector<std::vector<real>> &B, std::vector<std::vector<real>> &AB)#
Multiply two matrices.
- Parameters:
A – [in] Matrix 1.
B – [in] Matrix 2.
AB – [out] Product of A and B.
-
void mat3_inv(const std::vector<std::vector<real>> &A, std::vector<std::vector<real>> &Ainv)#
Invert a 3x3 matrix.
- Parameters:
A – [in] Matrix to be inverted.
Ainv – [out] Inverted matrix.
-
void mat3_mat3_mul(const real *A, const real *B, real *prod)#
Multiply two 3x3 matrices.
- Parameters:
A – [in] Matrix 1.
B – [in] Matrix 2.
prod – [out] Product of A and B.
-
void mat3_mat3_add(const real *A, const real *B, real *sum)#
Add two 3x3 matrices.
- Parameters:
A – [in] Matrix 1.
B – [in] Matrix 2.
sum – [out] Sum of A and B.
-
void rot_mat_x(const real &theta, std::vector<std::vector<real>> &R)#
Rotation matrix about the x-axis.
- Parameters:
theta – [in] Angle of rotation in radians.
R – [out] Rotation matrix.
-
void rot_mat_y(const real &theta, std::vector<std::vector<real>> &R)#
Rotation matrix about the y-axis.
- Parameters:
theta – [in] Angle of rotation in radians.
R – [out] Rotation matrix.
-
void rot_mat_z(const real &theta, std::vector<std::vector<real>> &R)#
Rotation matrix about the z-axis.
- Parameters:
theta – [in] Angle of rotation in radians.
R – [out] Rotation matrix.
-
void LU_decompose(std::vector<std::vector<real>> &A, const size_t &N, const real &tol, size_t *P)#
Decompose a matrix into its LU form.
- Parameters:
A – [inout] Matrix to be decomposed.
N – [in] Size of the matrix.
tol – [in] Tolerance for degeneracy.
P – [out] Permutation matrix.
-
void LU_inverse(std::vector<std::vector<real>> &A, const size_t *P, const size_t &N, std::vector<std::vector<real>> &AInv)#
Invert a matrix using its LU decomposition.
- Parameters:
A – [in] Matrix to be inverted.
P – [in] Permutation matrix.
N – [in] Size of the matrix.
AInv – [out] Inverted matrix.
-
void mat_inv(std::vector<std::vector<real>> mat, std::vector<std::vector<real>> &matInv, const real &tol = 1.0e-16L)#
Invert a matrix.
- Parameters:
mat – [in] Matrix to be inverted.
matInv – [out] Inverted matrix.
tol – [in] Tolerance for degeneracy.