LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
numeric.c 文件参考

数值常量、标量分类与近似比较。 更多...

#include <math.h>
#include <float.h>
#include "lmmc/numeric_scalar.h"
numeric.c 的引用(Include)关系图:

浏览该文件的源代码.

函数

lmmc_status_t lmmc_inf (lmmc_real_t *out_inf)
 写入 IEEE-754 正无穷.
lmmc_status_t lmmc_nan (lmmc_real_t *out_nan)
 写入 IEEE-754 NaN.
lmmc_status_t lmmc_eps (lmmc_real_t *out_eps)
 写入机器精度(1 与下一个可表示数的差).
lmmc_status_t lmmc_isnan (lmmc_real_t x, int *out_isnan)
 检测是否为 NaN ,结果写入 *out_isnan (0/1).
lmmc_status_t lmmc_isinf (lmmc_real_t x, int *out_isinf)
 检测是否为 +/-infinity .
lmmc_status_t lmmc_isfinite (lmmc_real_t x, int *out_isfinite)
 检测是否为有限数(非 NaN 且非 +/-infinity).
lmmc_status_t lmmc_signbit (lmmc_real_t x, int *out_signbit)
 检测符号位(含 -0 ).
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\)。
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_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 .

详细描述

数值常量、标量分类与近似比较。

在文件 numeric.c 中定义.

函数说明

◆ lmmc_inf()

lmmc_status_t lmmc_inf ( lmmc_real_t * out_inf)

写入 IEEE-754 正无穷.

在文件 numeric.c 第 17 行定义.

引用了 lmmc_inf(), LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.

被这些函数引用 lmmc_inf().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_nan()

lmmc_status_t lmmc_nan ( lmmc_real_t * out_nan)

写入 IEEE-754 NaN.

在文件 numeric.c 第 27 行定义.

引用了 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_eps()

lmmc_status_t lmmc_eps ( lmmc_real_t * out_eps)

写入机器精度(1 与下一个可表示数的差).

在文件 numeric.c 第 41 行定义.

引用了 lmmc_eps(), LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.

被这些函数引用 lmmc_eps().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_isnan()

lmmc_status_t lmmc_isnan ( lmmc_real_t x,
int * out_isnan )

检测是否为 NaN ,结果写入 *out_isnan (0/1).

在文件 numeric.c 第 47 行定义.

引用了 lmmc_isnan(), LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.

被这些函数引用 lmmc_isnan().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_isinf()

lmmc_status_t lmmc_isinf ( lmmc_real_t x,
int * out_isinf )

检测是否为 +/-infinity .

在文件 numeric.c 第 53 行定义.

引用了 lmmc_isinf(), LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.

被这些函数引用 lmmc_isinf().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_isfinite()

lmmc_status_t lmmc_isfinite ( lmmc_real_t x,
int * out_isfinite )

检测是否为有限数(非 NaN 且非 +/-infinity).

在文件 numeric.c 第 59 行定义.

引用了 lmmc_isfinite(), LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.

被这些函数引用 lmmc_isfinite().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_signbit()

lmmc_status_t lmmc_signbit ( lmmc_real_t x,
int * out_signbit )

检测符号位(含 -0 ).

在文件 numeric.c 第 65 行定义.

引用了 lmmc_signbit(), LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.

被这些函数引用 lmmc_signbit().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_approx_eq()

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_STATUS_OK 成功; LMMC_STATUS_INVALID_ARGUMENT 若输出为空或容差无效.

在文件 numeric.c 第 71 行定义.

引用了 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_double_nearly_equal_tol()

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_STATUS_OK 成功; LMMC_STATUS_INVALID_ARGUMENT 若 out_equal 为 NULL 或容差为负.
注解
不分配内存,输入保持原值。

在文件 numeric.c 第 106 行定义.

引用了 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_double_nearly_equal()

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 .

在文件 numeric.c 第 181 行定义.

引用了 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().

函数调用图:
这是这个函数的调用关系图: