LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
LMCAS::anonymous_namespace{property_store.cpp} 命名空间参考

类型定义

using BoundsCandidateResult = Result<std::optional<Interval>>

函数

BoundsCandidateResult bounded_interval_candidate (const Interval &bounds, const std::optional< Interval > &existing, ComputationContext &context)
std::string sign_str (Sign s)
bool signs_conflict (Sign a, Sign b)

变量

constexpr Domain domain_order []

类型定义说明

◆ BoundsCandidateResult

using LMCAS::anonymous_namespace{property_store.cpp}::BoundsCandidateResult = Result<std::optional<Interval>>

在文件 property_store.cpp 第 346 行定义.

函数说明

◆ bounded_interval_candidate()

BoundsCandidateResult LMCAS::anonymous_namespace{property_store.cpp}::bounded_interval_candidate ( const Interval & bounds,
const std::optional< Interval > & existing,
ComputationContext & context )

在文件 property_store.cpp 第 348 行定义.

350 {
351 constexpr const char* operation = "declare_bounded";
352 auto incoming = IntervalUnion::from_intervals_checked(
353 {bounds}, context);
354 if (!incoming) {
355 if (incoming.error().code != CasErrc::Inconclusive || existing) {
356 return BoundsCandidateResult::failure(incoming.error());
357 }
358 return BoundsCandidateResult::success(bounds);
359 }
360 if (incoming.value().is_empty()) {
363 "bounded interval must not be empty", operation);
364 }
365
366 std::optional<Interval> candidate =
367 incoming.value().intervals().front();
368 if (!existing) {
369 return BoundsCandidateResult::success(std::move(candidate));
370 }
371
372 auto current = IntervalUnion::from_intervals_checked(
373 {*existing}, context);
374 if (!current) {
375 return BoundsCandidateResult::failure(current.error());
376 }
377 auto intersection = current.value().intersect_checked(
378 incoming.value(), context);
379 if (!intersection) {
380 return BoundsCandidateResult::failure(intersection.error());
381 }
382 if (intersection.value().is_empty()) {
385 "bounded interval contradicts existing bounds", operation);
386 }
387 candidate = intersection.value().intervals().front();
388 return BoundsCandidateResult::success(std::move(candidate));
389}
static Result failure(CasErrc code, std::string message, std::string operation={})
static Result success(std::optional< Interval > value)
const std::vector< Polynomial< BigInt > > const BigInt ComputationContext & context

引用了 bounded_interval_candidate(), LMCAS::context, LMCAS::Result< std::optional< Interval > >::failure(), LMCAS::Inconclusive, LMCAS::InvalidArgument , 以及 LMCAS::Result< std::optional< Interval > >::success().

被这些函数引用 bounded_interval_candidate().

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

◆ sign_str()

std::string LMCAS::anonymous_namespace{property_store.cpp}::sign_str ( Sign s)

在文件 property_store.cpp 第 39 行定义.

39 {
40 switch (s) {
41 case Sign::Positive: return "Positive";
42 case Sign::Negative: return "Negative";
43 case Sign::NonNegative: return "NonNegative";
44 case Sign::NonPositive: return "NonPositive";
45 case Sign::Zero: return "Zero";
46 case Sign::NonZero: return "NonZero";
47 }
48 return "Unknown";
49}

引用了 LMCAS::Negative, LMCAS::NonNegative, LMCAS::NonPositive, LMCAS::NonZero, LMCAS::Positive, sign_str() , 以及 LMCAS::Zero.

被这些函数引用 sign_str().

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

◆ signs_conflict()

bool LMCAS::anonymous_namespace{property_store.cpp}::signs_conflict ( Sign a,
Sign b )

在文件 property_store.cpp 第 50 行定义.

50 {
51 struct Conflict {
52 Sign incoming;
53 std::initializer_list<Sign> existing;
54 };
55 const Conflict conflicts[] = {
62 };
63 for (const auto& conflict : conflicts) {
64 if (conflict.incoming != a) {
65 continue;
66 }
67 return std::find(conflict.existing.begin(), conflict.existing.end(), b)
68 != conflict.existing.end();
69 }
70 return false;
71}
const MultiPoly & b
__attribute__((visibility("default"))) VectorCalculusExprResult curve_integral_scalar_checked(const std __attribute__((visibility("default"))) VectorCalculusExprResult curve_integral_scalar_checked(const std __attribute__((visibility("default"))) std const VectorField const std::string const std::shared_ptr< SymbolicExpr > & a
Sign
Sign classification for symbols and expressions.

引用了 LMCAS::a, LMCAS::b, LMCAS::Negative, LMCAS::NonNegative, LMCAS::NonPositive, LMCAS::NonZero, LMCAS::Positive, signs_conflict() , 以及 LMCAS::Zero.

被这些函数引用 signs_conflict().

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

变量说明

◆ domain_order

Domain LMCAS::anonymous_namespace{property_store.cpp}::domain_order[]
constexpr
初始值:
= {
}
@ Complex
Complex numbers (default, least specific)
@ Rational
Rational numbers
@ Natural
Non-negative integers (0, 1, 2, ...)
@ Real
Real numbers
@ Algebraic
Algebraic numbers (roots of polynomials with rational coefficients)
@ PositiveInt
Positive integers (1, 2, 3, ...)

在文件 property_store.cpp 第 34 行定义.