|
LMMC
Lamina Mathematic core
|
宏定义 | |
| #define | LMMC_PI (3.14159265358979323846) |
| \(\pi\) 常量. | |
| #define | LMMC_INV_PI (0.31830988618379067154) |
| \(1/\pi\) 常量. | |
| #define | LMMC_SQRT2 (1.41421356237309504880) |
| \(\sqrt{2}\) 常量. | |
| #define | LMMC_INV_E (0.36787944117144232160) |
| \(1/e\) 常量,用于 Lambert W 函数域检查. | |
| #define | LMMC_DEFAULT_ABS_TOL 1e-12 |
| 库默认的绝对容差. | |
| #define | LMMC_DEFAULT_REL_TOL 1e-10 |
| 库默认的相对容差. | |
| #define LMMC_PI (3.14159265358979323846) |
| #define LMMC_INV_PI (0.31830988618379067154) |
\(1/\pi\) 常量.
在文件 numeric_scalar.h 第 18 行定义.
| #define LMMC_SQRT2 (1.41421356237309504880) |
\(\sqrt{2}\) 常量.
在文件 numeric_scalar.h 第 22 行定义.
| #define LMMC_INV_E (0.36787944117144232160) |
\(1/e\) 常量,用于 Lambert W 函数域检查.
在文件 numeric_scalar.h 第 26 行定义.
| #define LMMC_DEFAULT_ABS_TOL 1e-12 |
库默认的绝对容差.
在文件 numeric_scalar.h 第 31 行定义.
被这些函数引用 lmmc_double_nearly_equal(), lmmc_itersolve_default_config(), lmmc_nonlinear_default_config() , 以及 lmmc_ode_default_config().
| #define LMMC_DEFAULT_REL_TOL 1e-10 |
库默认的相对容差.
在文件 numeric_scalar.h 第 35 行定义.
被这些函数引用 lmmc_cholesky_decompose_inplace(), lmmc_double_nearly_equal(), lmmc_nonlinear_default_config() , 以及 lmmc_ode_default_config().
| lmmc_status_t lmmc_inf | ( | lmmc_real_t * | out_inf | ) |
写入 IEEE-754 正无穷.
引用了 lmmc_inf(), LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_inf().
| lmmc_status_t lmmc_nan | ( | lmmc_real_t * | out_nan | ) |
写入 IEEE-754 NaN.
引用了 lmmc_nan(), LMMC_REAL_CLEAR, LMMC_REAL_DIV, LMMC_REAL_INIT, LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_nan().
| lmmc_status_t lmmc_eps | ( | lmmc_real_t * | out_eps | ) |
写入机器精度(1 与下一个可表示数的差).
引用了 lmmc_eps(), LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_eps().
| lmmc_status_t lmmc_isnan | ( | lmmc_real_t | x, |
| int * | out_isnan ) |
检测是否为 NaN ,结果写入 *out_isnan (0/1).
引用了 lmmc_isnan(), LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_isnan().
| lmmc_status_t lmmc_isinf | ( | lmmc_real_t | x, |
| int * | out_isinf ) |
检测是否为 +/-infinity .
引用了 lmmc_isinf(), LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_isinf().
| lmmc_status_t lmmc_isfinite | ( | lmmc_real_t | x, |
| int * | out_isfinite ) |
检测是否为有限数(非 NaN 且非 +/-infinity).
引用了 lmmc_isfinite(), LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_isfinite().
| lmmc_status_t lmmc_signbit | ( | lmmc_real_t | x, |
| int * | out_signbit ) |
检测符号位(含 -0 ).
引用了 lmmc_signbit(), LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_signbit().
| lmmc_status_t lmmc_atan2 | ( | lmmc_real_t | y, |
| lmmc_real_t | x, | ||
| lmmc_real_t * | out_res ) |
计算 \(\mathrm{atan2}(y,x)\) .
在文件 numeric_scalar.c 第 4 行定义.
引用了 lmmc_atan2(), LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_atan2().
| lmmc_status_t lmmc_sincos | ( | lmmc_real_t | x, |
| lmmc_real_t * | out_sin, | ||
| lmmc_real_t * | out_cos ) |
计算同一有限弧度值的正弦和余弦.
| [in] | x | 有限输入弧度. |
| [out] | out_sin | x 的正弦. |
| [out] | out_cos | x 的余弦. |
x 非有限; LMMC_STATUS_NUMERICAL_FAILURE 若任一计算结果超出有限值范围. 两个输出仅在参数与结果验证均成功后写入. 在文件 numeric_scalar.c 第 10 行定义.
引用了 LMMC_REAL_SET_D, lmmc_sincos(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_sincos().
| lmmc_status_t lmmc_hypot | ( | lmmc_real_t | x, |
| lmmc_real_t | y, | ||
| lmmc_real_t * | out_res ) |
缩放计算欧氏距离 \(\sqrt{x^2+y^2}\)。
在文件 numeric_scalar.c 第 25 行定义.
引用了 lmmc_hypot(), LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_hypot().
| lmmc_status_t lmmc_exp2 | ( | lmmc_real_t | x, |
| lmmc_real_t * | out_res ) |
计算 \(2^x\) .
x 非有限; LMMC_STATUS_NUMERICAL_FAILURE 若结果上溢为非有限值. 输出仅在成功时写入。 在文件 numeric_scalar.c 第 38 行定义.
引用了 lmmc_exp2(), LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_exp2().
| lmmc_status_t lmmc_log2 | ( | lmmc_real_t | x, |
| lmmc_real_t * | out_res ) |
计算 \(\log_2 x\) .
x 非有限; LMMC_STATUS_OUT_OF_RANGE 若 x 小于或等于零; LMMC_STATUS_NUMERICAL_FAILURE 若结果不可表示为有限值. 输出仅在成功时写入。 在文件 numeric_scalar.c 第 51 行定义.
引用了 lmmc_log2(), LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK , 以及 LMMC_STATUS_OUT_OF_RANGE.
被这些函数引用 lmmc_log2().
| lmmc_status_t lmmc_expm1 | ( | lmmc_real_t | x, |
| lmmc_real_t * | out_res ) |
计算 \(e^x-1\) ,对小 x 更精确.
x 非有限; LMMC_STATUS_NUMERICAL_FAILURE 若结果上溢为非有限值. 输出仅在成功时写入. 在文件 numeric_scalar.c 第 67 行定义.
引用了 lmmc_expm1(), LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_expm1().
| lmmc_status_t lmmc_log1p | ( | lmmc_real_t | x, |
| lmmc_real_t * | out_res ) |
计算 \(\log(1+x)\) ,对小 x 更精确.
x 非有限; LMMC_STATUS_OUT_OF_RANGE 若 x 小于或等于 -1; LMMC_STATUS_NUMERICAL_FAILURE 若结果不可表示为有限值. 输出仅在成功时写入。 在文件 numeric_scalar.c 第 80 行定义.
引用了 lmmc_log1p(), LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK , 以及 LMMC_STATUS_OUT_OF_RANGE.
被这些函数引用 lmmc_log1p().
| lmmc_status_t lmmc_split_int_frac | ( | lmmc_real_t | x, |
| lmmc_real_t * | out_iptr, | ||
| lmmc_real_t * | out_frac ) |
拆分整数部分与小数部分: \(x=\mathrm{iptr}+\mathrm{frac}\) .
| [in] | x | 待拆分值. |
| [out] | out_iptr | 整数部分. |
| [out] | out_frac | 带 x 符号的小数部分. |
在文件 numeric_scalar.c 第 96 行定义.
引用了 LMMC_REAL_SET_D, lmmc_split_int_frac(), LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_split_int_frac().
| lmmc_status_t lmmc_fmod | ( | lmmc_real_t | x, |
| lmmc_real_t | y, | ||
| lmmc_real_t * | out_res ) |
计算浮点余数,结果符号与 x 相同,幅值小于 y 的幅值.
x 为无穷或 y 为正零或负零; LMMC_STATUS_NUMERICAL_FAILURE 若结果超出有限值范围. 有限 x 与无穷 y 的余数为 x;零结果保留 x 的符号. 输出仅在成功时写入. 在文件 numeric_scalar.c 第 109 行定义.
引用了 lmmc_fmod(), LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK , 以及 LMMC_STATUS_OUT_OF_RANGE.
被这些函数引用 lmmc_fmod().
| lmmc_status_t lmmc_ldexp | ( | lmmc_real_t | x, |
| int | exp, | ||
| lmmc_real_t * | out_res ) |
计算 \(x \cdot 2^{exp}\) .
x 非有限; LMMC_STATUS_NUMERICAL_FAILURE 若结果上溢为非有限值,或非零结果下溢为零. 输出仅在成功时写入. 在文件 numeric_scalar.c 第 121 行定义.
引用了 lmmc_ldexp(), LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_ldexp().
| lmmc_status_t lmmc_nextafter | ( | lmmc_real_t | x, |
| lmmc_real_t | y, | ||
| lmmc_real_t * | out_res ) |
计算 x 朝 y 方向的下一个可表示浮点数.
在文件 numeric_scalar.c 第 134 行定义.
引用了 lmmc_nextafter(), LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_nextafter().
| lmmc_status_t lmmc_approx_eq | ( | lmmc_real_t | a, |
| lmmc_real_t | b, | ||
| lmmc_real_t | epsilon, | ||
| int * | out_equal ) |
按绝对容差比较: \(|a-b| \le \epsilon\)。
| [in] | a | 第一个比较值. |
| [in] | b | 第二个比较值. |
| [in] | epsilon | 有限且非负的绝对容差. |
| [out] | out_equal | 输出比较结果. |
引用了 lmmc_approx_eq(), LMMC_REAL_CLEAR, LMMC_REAL_CMP, LMMC_REAL_INIT, LMMC_REAL_SET, LMMC_REAL_SET_D, LMMC_REAL_SUB, LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_approx_eq().
| lmmc_status_t lmmc_double_nearly_equal_tol | ( | lmmc_real_t | a, |
| lmmc_real_t | b, | ||
| lmmc_real_t | abs_tol, | ||
| lmmc_real_t | rel_tol, | ||
| int * | out_equal ) |
同时考虑绝对与相对容差的近似相等判定.
判定条件: \(|a-b| \le \max(\mathrm{abs\_tol},\; \mathrm{rel\_tol}\cdot\max(|a|,|b|))\) .
| [in] | a | 第一个比较值. |
| [in] | b | 第二个比较值. |
| [in] | abs_tol | 绝对容差(>= 0). |
| [in] | rel_tol | 相对容差(>= 0). |
| [out] | out_equal | 输出比较结果:1 表示近似相等,0 表示不等. |
引用了 lmmc_double_nearly_equal_tol(), LMMC_REAL_ABS, LMMC_REAL_CLEAR, LMMC_REAL_CMP, LMMC_REAL_INIT, LMMC_REAL_IS_FINITE, LMMC_REAL_MUL, LMMC_REAL_SET_D, LMMC_REAL_SUB, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_double_nearly_equal() , 以及 lmmc_double_nearly_equal_tol().
| lmmc_status_t lmmc_double_nearly_equal | ( | lmmc_real_t | a, |
| lmmc_real_t | b, | ||
| int * | out_equal ) |
使用默认容差的近似相等比较,等价于以 LMMC_DEFAULT_ABS_TOL / LMMC_DEFAULT_REL_TOL 调用 lmmc_double_nearly_equal_tol .
引用了 LMMC_DEFAULT_ABS_TOL, LMMC_DEFAULT_REL_TOL, lmmc_double_nearly_equal(), lmmc_double_nearly_equal_tol(), LMMC_REAL_CLEAR, LMMC_REAL_INIT , 以及 LMMC_REAL_SET_D.
被这些函数引用 lmmc_double_nearly_equal().
| lmmc_status_t lmmc_asin | ( | lmmc_real_t | x, |
| lmmc_real_t * | out ) |
实标量函数的公共状态约定。
所有输入必须有限,否则返回 LMMC_STATUS_INVALID_ARGUMENT。定义域或极点 错误返回 LMMC_STATUS_OUT_OF_RANGE;有限输入产生不可表示结果时返回 LMMC_STATUS_NUMERICAL_FAILURE。输出仅在成功时写入。
计算反正弦 \(\arcsin(x)\) .
| [in] | x | 输入值,必须满足 \(|x| \le 1\) . |
| [out] | out | 输出 \(\arcsin(x)\) ,结果在 \([-\pi/2, \pi/2]\) . |
在文件 numeric_scalar.c 第 146 行定义.
引用了 lmmc_asin(), LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OUT_OF_RANGE.
被这些函数引用 lmmc_asin().
| lmmc_status_t lmmc_acos | ( | lmmc_real_t | x, |
| lmmc_real_t * | out ) |
计算反余弦 \(\arccos(x)\) .
| [in] | x | 输入值,必须满足 \(|x| \le 1\) . |
| [out] | out | 输出 \(\arccos(x)\) ,结果在 \([0, \pi]\) . |
在文件 numeric_scalar.c 第 152 行定义.
引用了 lmmc_acos(), LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OUT_OF_RANGE.
被这些函数引用 lmmc_acos().
| lmmc_status_t lmmc_atan | ( | lmmc_real_t | x, |
| lmmc_real_t * | out ) |
计算反正切 \(\arctan(x)\) .
| [in] | x | 输入值,无定义域限制. |
| [out] | out | 输出 \(\arctan(x)\) ,结果在 \((-\pi/2, \pi/2)\) . |
在文件 numeric_scalar.c 第 158 行定义.
引用了 lmmc_atan() , 以及 LMMC_STATUS_INVALID_ARGUMENT.
被这些函数引用 lmmc_atan().
| lmmc_status_t lmmc_sinh | ( | lmmc_real_t | x, |
| lmmc_real_t * | out ) |
计算双曲正弦 \(\sinh(x)\) .
| [in] | x | 输入值,无定义域限制. |
| [out] | out | 输出 \(\sinh(x)\) . |
在文件 numeric_scalar.c 第 163 行定义.
引用了 lmmc_sinh() , 以及 LMMC_STATUS_INVALID_ARGUMENT.
被这些函数引用 lmmc_sinh().
| lmmc_status_t lmmc_cosh | ( | lmmc_real_t | x, |
| lmmc_real_t * | out ) |
计算双曲余弦 \(\cosh(x)\) .
| [in] | x | 输入值,无定义域限制. |
| [out] | out | 输出 \(\cosh(x)\) . |
在文件 numeric_scalar.c 第 168 行定义.
引用了 lmmc_cosh() , 以及 LMMC_STATUS_INVALID_ARGUMENT.
被这些函数引用 lmmc_cosh().
| lmmc_status_t lmmc_tanh | ( | lmmc_real_t | x, |
| lmmc_real_t * | out ) |
计算双曲正切 \(\tanh(x)\) .
| [in] | x | 输入值,无定义域限制. |
| [out] | out | 输出 \(\tanh(x)\) . |
在文件 numeric_scalar.c 第 173 行定义.
引用了 LMMC_STATUS_INVALID_ARGUMENT , 以及 lmmc_tanh().
被这些函数引用 lmmc_tanh().
| lmmc_status_t lmmc_asinh | ( | lmmc_real_t | x, |
| lmmc_real_t * | out ) |
计算反双曲正弦 \(\mathrm{asinh}(x)\) .
| [in] | x | 输入值,无定义域限制. |
| [out] | out | 输出 \(\mathrm{asinh}(x)\) . |
在文件 numeric_scalar.c 第 178 行定义.
引用了 lmmc_asinh() , 以及 LMMC_STATUS_INVALID_ARGUMENT.
被这些函数引用 lmmc_asinh().
| lmmc_status_t lmmc_acosh | ( | lmmc_real_t | x, |
| lmmc_real_t * | out ) |
计算反双曲余弦 \(\mathrm{acosh}(x)\) ,要求 \(x \ge 1\) .
| [in] | x | 输入值,必须满足 \(x \ge 1\) . |
| [out] | out | 输出 \(\mathrm{acosh}(x)\) . |
在文件 numeric_scalar.c 第 183 行定义.
引用了 lmmc_acosh(), LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OUT_OF_RANGE.
被这些函数引用 lmmc_acosh().
| lmmc_status_t lmmc_atanh | ( | lmmc_real_t | x, |
| lmmc_real_t * | out ) |
计算反双曲正切 \(\mathrm{atanh}(x)\) ,要求 \(|x| < 1\) .
| [in] | x | 输入值,必须满足 \(|x| < 1\) . |
| [out] | out | 输出 \(\mathrm{atanh}(x)\) . |
在文件 numeric_scalar.c 第 189 行定义.
引用了 lmmc_atanh(), LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OUT_OF_RANGE.
被这些函数引用 lmmc_atanh().
| lmmc_status_t lmmc_pow | ( | lmmc_real_t | x, |
| lmmc_real_t | y, | ||
| lmmc_real_t * | out ) |
计算幂 \(x^y\) .
当 \(x = 0,y < 0\),或 \(x < 0\) 且 \(y\) 非整数时返回域错误。
| [in] | x | 底数. |
| [in] | y | 指数. |
| [out] | out | 输出 \(x^y\) . |
在文件 numeric_scalar.c 第 195 行定义.
引用了 lmmc_pow(), LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OUT_OF_RANGE.
被这些函数引用 lmmc_pow().
| lmmc_status_t lmmc_ceil | ( | lmmc_real_t | x, |
| lmmc_real_t * | out ) |
计算向上取整 \(\lceil x \rceil\) .
| [in] | x | 输入值. |
| [out] | out | 输出 \(\lceil x \rceil\) . |
在文件 numeric_scalar.c 第 204 行定义.
引用了 lmmc_ceil() , 以及 LMMC_STATUS_INVALID_ARGUMENT.
被这些函数引用 lmmc_ceil().
| lmmc_status_t lmmc_floor | ( | lmmc_real_t | x, |
| lmmc_real_t * | out ) |
计算向下取整 \(\lfloor x \rfloor\) .
| [in] | x | 输入值. |
| [out] | out | 输出 \(\lfloor x \rfloor\) . |
在文件 numeric_scalar.c 第 209 行定义.
引用了 lmmc_floor() , 以及 LMMC_STATUS_INVALID_ARGUMENT.
被这些函数引用 lmmc_floor().
| lmmc_status_t lmmc_round | ( | lmmc_real_t | x, |
| lmmc_real_t * | out ) |
计算四舍五入 \(\mathrm{round}(x)\) .
| [in] | x | 输入值. |
| [out] | out | 输出四舍五入结果. |
在文件 numeric_scalar.c 第 214 行定义.
引用了 lmmc_round() , 以及 LMMC_STATUS_INVALID_ARGUMENT.
被这些函数引用 lmmc_round().
| lmmc_status_t lmmc_trunc | ( | lmmc_real_t | x, |
| lmmc_real_t * | out ) |
计算截断取整 \(\mathrm{trunc}(x)\) (向零方向取整).
| [in] | x | 输入值. |
| [out] | out | 输出截断取整结果. |
在文件 numeric_scalar.c 第 219 行定义.
引用了 LMMC_STATUS_INVALID_ARGUMENT , 以及 lmmc_trunc().
被这些函数引用 lmmc_trunc().