LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
numeric_scalar.h
浏览该文件的文档.
1#ifndef LMMC_NUMERIC_SCALAR_H
2#define LMMC_NUMERIC_SCALAR_H
3
4#include <stddef.h>
5#include "lmmc/config.h"
6#include "lmmc/status.h"
7
8#ifdef __cplusplus
9extern "C" {
10#endif
11
12#ifndef LMMC_PI
14#define LMMC_PI (3.14159265358979323846)
15#endif
16#ifndef LMMC_INV_PI
18#define LMMC_INV_PI (0.31830988618379067154)
19#endif
20#ifndef LMMC_SQRT2
22#define LMMC_SQRT2 (1.41421356237309504880)
23#endif
24#ifndef LMMC_INV_E
26#define LMMC_INV_E (0.36787944117144232160)
27#endif
28
29#ifndef LMMC_DEFAULT_ABS_TOL
31#define LMMC_DEFAULT_ABS_TOL 1e-12
32#endif
33#ifndef LMMC_DEFAULT_REL_TOL
35#define LMMC_DEFAULT_REL_TOL 1e-10
36#endif
37
38
45
46
48lmmc_status_t lmmc_isnan(lmmc_real_t x, int* out_isnan);
50lmmc_status_t lmmc_isinf(lmmc_real_t x, int* out_isinf);
52lmmc_status_t lmmc_isfinite(lmmc_real_t x, int* out_isfinite);
54lmmc_status_t lmmc_signbit(lmmc_real_t x, int* out_signbit);
55
56
80
81
116
117
147lmmc_status_t lmmc_ldexp(lmmc_real_t x, int exp, lmmc_real_t* out_res);
150
151
161lmmc_status_t lmmc_approx_eq(lmmc_real_t a, lmmc_real_t b, lmmc_real_t epsilon, int* out_equal);
162
180 lmmc_real_t a,
181 lmmc_real_t b,
182 lmmc_real_t abs_tol,
183 lmmc_real_t rel_tol,
184 int* out_equal
185);
186
196
208
220
231
243
255
266
277
289
301
317
328
339
350
361
362#ifdef __cplusplus
363}
364#endif
365
366#endif
LMMC binary real type and arithmetic spelling.
double lmmc_real_t
Public and internal LMMC real type.
lmmc_status_t lmmc_expm1(lmmc_real_t x, lmmc_real_t *out_res)
计算 ,对小 x 更精确.
lmmc_status_t lmmc_asin(lmmc_real_t x, lmmc_real_t *out)
实标量函数的公共状态约定。
lmmc_status_t lmmc_cosh(lmmc_real_t x, lmmc_real_t *out)
计算双曲余弦 .
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_status_t lmmc_log1p(lmmc_real_t x, lmmc_real_t *out_res)
计算 ,对小 x 更精确.
lmmc_status_t lmmc_atan2(lmmc_real_t y, lmmc_real_t x, lmmc_real_t *out_res)
计算 .
lmmc_status_t lmmc_sinh(lmmc_real_t x, lmmc_real_t *out)
计算双曲正弦 .
lmmc_status_t lmmc_fmod(lmmc_real_t x, lmmc_real_t y, lmmc_real_t *out_res)
计算浮点余数,结果符号与 x 相同,幅值小于 y 的幅值.
lmmc_status_t lmmc_isfinite(lmmc_real_t x, int *out_isfinite)
检测是否为有限数(非 NaN 且非 +/-infinity).
lmmc_status_t lmmc_isnan(lmmc_real_t x, int *out_isnan)
检测是否为 NaN ,结果写入 *out_isnan (0/1).
lmmc_status_t lmmc_ceil(lmmc_real_t x, lmmc_real_t *out)
计算向上取整 .
lmmc_status_t lmmc_hypot(lmmc_real_t x, lmmc_real_t y, lmmc_real_t *out_res)
缩放计算欧氏距离 。
lmmc_status_t lmmc_floor(lmmc_real_t x, lmmc_real_t *out)
计算向下取整 .
lmmc_status_t lmmc_signbit(lmmc_real_t x, int *out_signbit)
检测符号位(含 -0 ).
lmmc_status_t lmmc_asinh(lmmc_real_t x, lmmc_real_t *out)
计算反双曲正弦 .
lmmc_status_t lmmc_tanh(lmmc_real_t x, lmmc_real_t *out)
计算双曲正切 .
lmmc_status_t lmmc_inf(lmmc_real_t *out_inf)
写入 IEEE-754 正无穷.
lmmc_status_t lmmc_eps(lmmc_real_t *out_eps)
写入机器精度(1 与下一个可表示数的差).
lmmc_status_t lmmc_sincos(lmmc_real_t x, lmmc_real_t *out_sin, lmmc_real_t *out_cos)
计算同一有限弧度值的正弦和余弦.
lmmc_status_t lmmc_nextafter(lmmc_real_t x, lmmc_real_t y, lmmc_real_t *out_res)
计算 x 朝 y 方向的下一个可表示浮点数.
lmmc_status_t lmmc_ldexp(lmmc_real_t x, int exp, lmmc_real_t *out_res)
计算 .
lmmc_status_t lmmc_round(lmmc_real_t x, lmmc_real_t *out)
计算四舍五入 .
lmmc_status_t lmmc_acos(lmmc_real_t x, lmmc_real_t *out)
计算反余弦 .
lmmc_status_t lmmc_exp2(lmmc_real_t x, lmmc_real_t *out_res)
计算 .
lmmc_status_t lmmc_log2(lmmc_real_t x, lmmc_real_t *out_res)
计算 .
lmmc_status_t lmmc_pow(lmmc_real_t x, lmmc_real_t y, lmmc_real_t *out)
计算幂 .
lmmc_status_t lmmc_split_int_frac(lmmc_real_t x, lmmc_real_t *out_iptr, lmmc_real_t *out_frac)
拆分整数部分与小数部分: .
lmmc_status_t lmmc_atanh(lmmc_real_t x, lmmc_real_t *out)
计算反双曲正切 ,要求 .
lmmc_status_t lmmc_isinf(lmmc_real_t x, int *out_isinf)
检测是否为 +/-infinity .
lmmc_status_t lmmc_approx_eq(lmmc_real_t a, lmmc_real_t b, lmmc_real_t epsilon, int *out_equal)
按绝对容差比较: 。
lmmc_status_t lmmc_atan(lmmc_real_t x, lmmc_real_t *out)
计算反正切 .
lmmc_status_t lmmc_acosh(lmmc_real_t x, lmmc_real_t *out)
计算反双曲余弦 ,要求 .
lmmc_status_t lmmc_trunc(lmmc_real_t x, lmmc_real_t *out)
计算截断取整 (向零方向取整).
lmmc_status_t lmmc_nan(lmmc_real_t *out_nan)
写入 IEEE-754 NaN.
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)
同时考虑绝对与相对容差的近似相等判定.
LMMC 通用状态码定义.
lmmc_status_t
LMMC 库统一返回的状态码.