LMCAS
Lamina Computer Algebra System
Toggle main menu visibility
载入中...
搜索中...
未找到
numeric_probe.hpp
浏览该文件的文档.
1
#pragma once
2
3
#include "
numeric_evaluation.hpp
"
4
5
#include <cmath>
6
#include <optional>
7
8
namespace
LMCAS::detail
{
9
10
inline
std::optional<double>
try_finite_numeric
(
11
const
SymbolicExpr& expression,
12
ComputationContext
&
context
)
13
{
14
auto
evaluated =
evaluate_numeric
(expression,
NumericBindings
{},
context
);
15
if
(!evaluated) {
16
switch
(evaluated.error().code) {
17
case
CasErrc::UnboundSymbol
:
18
case
CasErrc::UnsupportedExpression
:
19
case
CasErrc::DomainError
:
20
return
std::nullopt;
21
default
:
22
throw
evaluated.error();
23
}
24
}
25
if
(!evaluated.value().is_finite()) {
26
return
std::nullopt;
27
}
28
if
(!std::isfinite(evaluated.value().value)) {
29
throw
CasError
{
CasErrc::NumericFailure
,
30
"numeric evaluation produced a nonfinite result"
,
31
"evaluate_numeric"
};
32
}
33
return
evaluated.value().value;
34
}
35
36
37
}
// namespace LMCAS::detail
LMCAS::ComputationContext
定义
computation_context.hpp:99
LMCAS::detail
多元 Hensel 提升(单变量步)
定义
assumption_context.hpp:31
LMCAS::detail::try_finite_numeric
std::optional< double > try_finite_numeric(const SymbolicExpr &expression, ComputationContext &context)
定义
numeric_probe.hpp:10
LMCAS::detail::context
std::size_t std::size_t ComputationContext & context
定义
exact_algebraic.hpp:27
LMCAS::CasErrc::UnboundSymbol
@ UnboundSymbol
定义
result.hpp:15
LMCAS::CasErrc::UnsupportedExpression
@ UnsupportedExpression
定义
result.hpp:23
LMCAS::CasErrc::NumericFailure
@ NumericFailure
定义
result.hpp:27
LMCAS::CasErrc::DomainError
@ DomainError
定义
result.hpp:16
LMCAS::evaluate_numeric
Result< ApproxReal > evaluate_numeric(const SymbolicExpr &expression, const NumericBindings &bindings={})
定义
numeric_evaluation.hpp:44
LMCAS::NumericBindings
std::unordered_map< std::string, double > NumericBindings
定义
numeric_evaluation.hpp:14
LMCAS::CasError
定义
result.hpp:31
numeric_evaluation.hpp
src
internal
numeric_probe.hpp
生成于
, 为 LMCAS使用
1.18.0