|
LMCAS
Lamina Computer Algebra System
|
#include </home/runner/work/docs/docs/LMCAS/src/internal/rewrite_budget.hpp>
类 | |
| struct | Entry |
| class | Measurement |
| struct | Shape |
Public 成员函数 | |
| RewriteBudget (ComputationContext &context, std::size_t max_depth, std::size_t max_nodes, const char *operation) | |
| RewriteBudget (ComputationContext &context, std::size_t max_steps, std::size_t max_depth, std::size_t max_nodes, const char *operation) | |
| RewriteBudget (const RewriteBudget &)=delete | |
| std::size_t | append_size (std::size_t current, std::size_t child) |
| void | consume () |
| ComputationContext & | context () const noexcept |
| void | enter () |
| void | leave () noexcept |
| std::size_t | max_nodes () const noexcept |
| std::size_t | measure (const std::shared_ptr< const SymbolicNode > &node) |
| std::size_t | measure_result (const std::shared_ptr< const SymbolicNode > &node) |
| RewriteBudget & | operator= (const RewriteBudget &)=delete |
| void | require_nodes (std::size_t nodes) const |
静态 Public 成员函数 | |
| static std::size_t | input_nodes (const std::shared_ptr< const SymbolicNode > &lhs, const std::shared_ptr< const SymbolicNode > &rhs, ComputationContext &context, std::size_t max_depth, const char *operation) |
Private 成员函数 | |
| void | check_step_access () const |
| void | commit_step () |
| Shape | measure_shape (const std::shared_ptr< const SymbolicNode > &node, std::size_t path_depth, std::size_t active_depth) |
| void | require_shape (const Shape &shape, std::size_t path_depth, std::size_t active_depth) const |
Private 属性 | |
| ComputationContext & | context_ |
| std::size_t | depth_ = 0 |
| bool | limit_steps_ |
| std::size_t | max_depth_ |
| std::size_t | max_nodes_ |
| const std::string | operation_ |
| std::size_t | remaining_steps_ |
| std::unordered_map< const SymbolicNode *, Entry > | shapes_ |
友元 | |
| struct | RewriteBudgetTestAccess |
在文件 rewrite_budget.hpp 第 15 行定义.
| struct LMCAS::detail::RewriteBudget::Entry |
在文件 rewrite_budget.hpp 第 45 行定义.
| 类成员 | ||
|---|---|---|
| weak_ptr< const SymbolicNode > | owner | |
| Shape | shape | |
| struct LMCAS::detail::RewriteBudget::Shape |
在文件 rewrite_budget.hpp 第 41 行定义.
| 类成员 | ||
|---|---|---|
| size_t | height = 0 | |
| size_t | nodes = 0 | |
| LMCAS::detail::RewriteBudget::RewriteBudget | ( | ComputationContext & | context, |
| std::size_t | max_depth, | ||
| std::size_t | max_nodes, | ||
| const char * | operation ) |
在文件 rewrite_budget.cpp 第 70 行定义.
引用了 context(), context_, limit_steps_, max_depth_, max_nodes(), max_nodes_, LMCAS::detail::operation, operation_ , 以及 remaining_steps_.
被这些函数引用 LMCAS::detail::RewriteBudget::Measurement::Measurement(), RewriteBudget(), input_nodes() , 以及 operator=().
| LMCAS::detail::RewriteBudget::RewriteBudget | ( | ComputationContext & | context, |
| std::size_t | max_steps, | ||
| std::size_t | max_depth, | ||
| std::size_t | max_nodes, | ||
| const char * | operation ) |
在文件 rewrite_budget.cpp 第 77 行定义.
引用了 context(), context_, limit_steps_, max_depth_, max_nodes(), max_nodes_, LMCAS::detail::operation, operation_ , 以及 remaining_steps_.
|
delete |
| std::size_t LMCAS::detail::RewriteBudget::append_size | ( | std::size_t | current, |
| std::size_t | child ) |
在文件 rewrite_budget.cpp 第 188 行定义.
引用了 consume(), LMCAS::ComputationContext::consume_steps(), context_, max_nodes_, operation_ , 以及 LMCAS::ResourceLimit.
被这些函数引用 LMCAS::equivalence_detail::anonymous_namespace{equivalence_complex.cpp}::ComplexProduct::accumulate(), LMCAS::anonymous_namespace{poly_utils.cpp}::add_checked_coefficients(), LMCAS::ExpandVisitor::append_child(), LMCAS::anonymous_namespace{inequality_solver_polynomial.cpp}::append_exact_factor_roots(), LMCAS::DifferentiationVisitor::append_result(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_complex.cpp}::canonicalize_product(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_complex.cpp}::canonicalize_sum(), LMCAS::ExpandVisitor::check_child_count(), LMCAS::anonymous_namespace{inequality_solver_polynomial.cpp}::check_interval_forest(), LMCAS::anonymous_namespace{inequality_solver_parametric.cpp}::checked_piecewise(), LMCAS::anonymous_namespace{poly_utils.cpp}::constant_to_poly(), LMCAS::SymbolicFactory::create_add(), LMCAS::SymbolicFactory::create_multiply(), LMCAS::vector_calculus_detail::curl_impl(), LMCAS::exterior_derivative_checked(), LMCAS::anonymous_namespace{normalization_products.cpp}::ProductAccumulator::finish(), LMCAS::vector_calculus_detail::gradient_impl(), LMCAS::vector_calculus_detail::hessian_impl(), LMCAS::vector_calculus_detail::jacobian_impl(), LMCAS::make_normalized_multiply_node(), LMCAS::anonymous_namespace{poly_utils.cpp}::multiply_checked_coefficients(), LMCAS::anonymous_namespace{symbolic_gcd.cpp}::multivariate_polynomial_to_expression(), LMCAS::normalization_append(), LMCAS::normalization_check_arithmetic(), LMCAS::normalization_check_arithmetic(), LMCAS::normalization_check_children(), LMCAS::normalization_check_children(), LMCAS::normalization_check_count(), LMCAS::NormalizationVisitor::normalize_matrix_product(), LMCAS::anonymous_namespace{symbolic_gcd.cpp}::polynomial_term_to_expression(), LMCAS::anonymous_namespace{residual_verification.cpp}::FormalResidual::register_canonical_radical(), LMCAS::anonymous_namespace{residual_verification.cpp}::FormalResidual::register_regular_atom(), LMCAS::anonymous_namespace{residual_verification.cpp}::FormalResidual::register_replacement(), LMCAS::anonymous_namespace{residual_verification.cpp}::FormalResidual::remember_angle(), LMCAS::anonymous_namespace{residual_verification.cpp}::replace_root_operands(), LMCAS::anonymous_namespace{residual_verification.cpp}::replace_root_power(), LMCAS::detail::anonymous_namespace{facts_query.cpp}::DomainTraversal::require(), LMCAS::equivalence_detail::rewrite_exp_log_basic_identity(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_exp_log.cpp}::rewrite_operands(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_trig.cpp}::rewrite_operands(), LMCAS::equivalence_detail::rewrite_trig_basic_identity(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_trig.cpp}::rewrite_trig_function(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_trig.cpp}::rewrite_trig_sum(), LMCAS::equivalence_detail::rewritten_complex(), LMCAS::anonymous_namespace{inequality_solver_parametric.cpp}::simplify_coefficients(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_trig.cpp}::unwrap_trig_negated_argument(), LMCAS::verified_quadratic_boundaries(), LMCAS::DifferentiationVisitor::visit(), LMCAS::DifferentiationVisitor::visit(), LMCAS::DifferentiationVisitor::visit(), LMCAS::DifferentiationVisitor::visit(), LMCAS::ExpandVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit() , 以及 LMCAS::detail::RewriteBudget::Measurement::visit_child().
|
private |
在文件 rewrite_budget.cpp 第 84 行定义.
引用了 LMCAS::ComputationContext::consume_steps(), context_, limit_steps_, operation_, remaining_steps_ , 以及 LMCAS::ResourceLimit.
被这些函数引用 consume(), enter() , 以及 measure_shape().
|
private |
在文件 rewrite_budget.cpp 第 92 行定义.
引用了 LMCAS::ComputationContext::consume_steps(), context_, limit_steps_, operation_ , 以及 remaining_steps_.
被这些函数引用 consume().
| void LMCAS::detail::RewriteBudget::consume | ( | ) |
在文件 rewrite_budget.cpp 第 98 行定义.
引用了 check_step_access() , 以及 commit_step().
被这些函数引用 append_size(), LMCAS::anonymous_namespace{equivalence_engine.cpp}::apply_profile(), LMCAS::detail::transcendental::anonymous_namespace{transcendental_inversion.cpp}::capture_free_integer_parameter(), LMCAS::anonymous_namespace{inequality_solver_parametric.cpp}::checked_piecewise(), LMCAS::detail::differentiate_node(), LMCAS::anonymous_namespace{residual_verification.cpp}::FormalResidual::double_angle_multiple(), LMCAS::detail::expand_node(), LMCAS::lookup_integral(), LMCAS::detail::materialize_integral(), LMCAS::detail::normalize_node(), LMCAS::anonymous_namespace{equivalence_engine.cpp}::prove_checked_operands(), LMCAS::anonymous_namespace{equivalence_engine.cpp}::prove_operands(), LMCAS::anonymous_namespace{residual_verification.cpp}::FormalResidual::remember_angle(), LMCAS::detail::substitute_node() , 以及 LMCAS::DifferentiationVisitor::visit().
|
inlinenoexcept |
在文件 rewrite_budget.hpp 第 24 行定义.
引用了 context_.
被这些函数引用 RewriteBudget(), RewriteBudget(), LMCAS::anonymous_namespace{inequality_solver_polynomial.cpp}::append_exact_factor_roots(), LMCAS::anonymous_namespace{poly_utils.cpp}::checked_coefficient_count(), LMCAS::anonymous_namespace{residual_verification.cpp}::classify_residual(), LMCAS::detail::AssumptionFacts::collect_names(), LMCAS::anonymous_namespace{symbolic_factory.cpp}::discardable_zero_factor(), LMCAS::double_root_inequality_intervals(), LMCAS::anonymous_namespace{differential_geometry.cpp}::exterior_derivative_term(), LMCAS::anonymous_namespace{assumption_context.cpp}::has_visible_proof(), input_nodes(), LMCAS::anonymous_namespace{inequality_solver_parametric.cpp}::linear_interval(), LMCAS::lookup_integral(), LMCAS::detail::mixed_evaluate_at(), LMCAS::anonymous_namespace{poly_utils.cpp}::normalize_coefficient(), LMCAS::anonymous_namespace{symbolic_gcd.cpp}::polynomial_term_to_expression(), LMCAS::anonymous_namespace{residual_verification.cpp}::prove_exact_root_residual(), LMCAS::anonymous_namespace{residual_verification.cpp}::prove_normalized_residual(), LMCAS::anonymous_namespace{residual_verification.cpp}::prove_piecewise_residual(), LMCAS::anonymous_namespace{residual_verification.cpp}::replace_exact_root(), LMCAS::anonymous_namespace{inequality_solver_parametric.cpp}::simplify_coefficients(), LMCAS::anonymous_namespace{poly_utils.cpp}::trim_checked_coefficients(), LMCAS::verified_quadratic_boundaries() , 以及 LMCAS::ExpandVisitor::visit().
| void LMCAS::detail::RewriteBudget::enter | ( | ) |
在文件 rewrite_budget.cpp 第 103 行定义.
引用了 check_step_access(), context_, depth_, LMCAS::ComputationContext::enter_recursion(), limit_steps_, max_depth_, operation_, remaining_steps_ , 以及 LMCAS::ResourceLimit.
被这些函数引用 LMCAS::detail::RewriteScope::RewriteScope().
|
static |
在文件 rewrite_budget.cpp 第 198 行定义.
引用了 RewriteBudget(), LMCAS::detail::budget, context(), measure(), LMCAS::detail::operation, LMCAS::ResourceLimit, LMCAS::detail::rhs , 以及 LMCAS::right.
被这些函数引用 LMCAS::anonymous_namespace{equivalence_engine.cpp}::equivalent_with_budget().
|
noexcept |
在文件 rewrite_budget.cpp 第 114 行定义.
引用了 context_, depth_ , 以及 LMCAS::ComputationContext::leave_recursion().
被这些函数引用 LMCAS::detail::SymbolicVisitor::DepthGuard::~DepthGuard() , 以及 LMCAS::detail::RewriteScope::~RewriteScope().
|
inlinenoexcept |
在文件 rewrite_budget.hpp 第 25 行定义.
引用了 max_nodes_.
被这些函数引用 RewriteBudget() , 以及 RewriteBudget().
| std::size_t LMCAS::detail::RewriteBudget::measure | ( | const std::shared_ptr< const SymbolicNode > & | node | ) |
在文件 rewrite_budget.cpp 第 179 行定义.
引用了 depth_, measure_shape(), LMCAS::detail::node() , 以及 LMCAS::detail::RewriteBudget::Shape::nodes.
被这些函数引用 LMCAS::anonymous_namespace{normalization_products.cpp}::ProductAccumulator::add_base(), LMCAS::anonymous_namespace{poly_utils.cpp}::add_checked_coefficients(), LMCAS::detail::all_variable_names(), LMCAS::ExpandVisitor::append_child(), LMCAS::anonymous_namespace{inequality_solver_polynomial.cpp}::append_exact_factor_roots(), LMCAS::equivalence_detail::canonicalize_complex_product(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_complex.cpp}::canonicalize_power(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_complex.cpp}::canonicalize_product(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_complex.cpp}::canonicalize_sum(), LMCAS::check_equivalent(), LMCAS::anonymous_namespace{inequality_solver_polynomial.cpp}::check_interval_forest(), LMCAS::check_zero_residual(), LMCAS::anonymous_namespace{inequality_solver_parametric.cpp}::checked_piecewise(), LMCAS::detail::AssumptionFacts::collect_names(), LMCAS::NormalizationVisitor::collect_sum(), LMCAS::anonymous_namespace{poly_utils.cpp}::constant_to_poly(), LMCAS::SymbolicFactory::create_add(), LMCAS::SymbolicFactory::create_multiply(), LMCAS::vector_calculus_detail::curl_impl(), LMCAS::detail::differentiate_node(), LMCAS::anonymous_namespace{differentiation_functions.cpp}::elementary_outer(), LMCAS::detail::expand_node(), LMCAS::exterior_derivative_checked(), LMCAS::anonymous_namespace{differential_geometry.cpp}::exterior_derivative_term(), LMCAS::vector_calculus_detail::gradient_impl(), LMCAS::vector_calculus_detail::hessian_impl(), LMCAS::anonymous_namespace{differentiation_functions.cpp}::hyperbolic_outer(), input_nodes(), LMCAS::anonymous_namespace{differentiation_functions.cpp}::inverse_trigonometric_outer(), LMCAS::vector_calculus_detail::jacobian_impl(), LMCAS::lookup_integral(), LMCAS::detail::anonymous_namespace{facts_query.cpp}::DomainTraversal::make(), LMCAS::make_normalized_multiply_node(), LMCAS::detail::materialize_integral(), LMCAS::matrix_multiply_checked(), LMCAS::anonymous_namespace{poly_utils.cpp}::multiply_checked_coefficients(), LMCAS::anonymous_namespace{symbolic_gcd.cpp}::multivariate_polynomial_to_expression(), LMCAS::normalization_append(), LMCAS::normalization_check_arithmetic(), LMCAS::normalization_check_children(), LMCAS::normalization_check_children(), LMCAS::detail::anonymous_namespace{complex_quadratic.cpp}::normalize(), LMCAS::NormalizationVisitor::normalize_matrix_product(), LMCAS::detail::normalize_node(), LMCAS::anonymous_namespace{symbolic_gcd.cpp}::polynomial_term_to_expression(), LMCAS::InferenceEngine::Impl::positive_relation_chain(), LMCAS::anonymous_namespace{equivalence_engine.cpp}::prove_checked_operands(), LMCAS::anonymous_namespace{residual_verification.cpp}::prove_piecewise_residual(), LMCAS::anonymous_namespace{inequality_solver_polynomial.cpp}::rational_polynomial_expression(), LMCAS::anonymous_namespace{residual_verification.cpp}::FormalResidual::register_canonical_radical(), LMCAS::anonymous_namespace{residual_verification.cpp}::FormalResidual::register_regular_atom(), LMCAS::anonymous_namespace{residual_verification.cpp}::FormalResidual::register_replacement(), LMCAS::anonymous_namespace{residual_verification.cpp}::FormalResidual::remember_angle(), LMCAS::anonymous_namespace{residual_verification.cpp}::replace_root_operands(), LMCAS::anonymous_namespace{residual_verification.cpp}::replace_root_power(), LMCAS::detail::anonymous_namespace{facts_query.cpp}::DomainTraversal::require(), LMCAS::equivalence_detail::rewrite_exp_log_basic_identity(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_exp_log.cpp}::rewrite_negative_lambert_exponential(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_exp_log.cpp}::rewrite_operands(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_trig.cpp}::rewrite_operands(), LMCAS::equivalence_detail::rewrite_trig_basic_identity(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_trig.cpp}::rewrite_trig_function(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_trig.cpp}::rewrite_trig_sum(), LMCAS::equivalence_detail::rewritten_complex(), LMCAS::scale_integral_field(), LMCAS::anonymous_namespace{inequality_solver_parametric.cpp}::simplify_coefficients(), LMCAS::anonymous_namespace{differentiation_functions.cpp}::special_outer(), LMCAS::detail::substitute_expression(), LMCAS::detail::substitute_node(), LMCAS::symbolic_polynomial_content(), LMCAS::symbolic_polynomial_gcd(), LMCAS::detail::symbolic_to_poly_checked(), LMCAS::anonymous_namespace{differentiation_functions.cpp}::trigonometric_outer(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_trig.cpp}::unwrap_trig_negated_argument() , 以及 LMCAS::verified_quadratic_boundaries().
| std::size_t LMCAS::detail::RewriteBudget::measure_result | ( | const std::shared_ptr< const SymbolicNode > & | node | ) |
在文件 rewrite_budget.cpp 第 183 行定义.
引用了 depth_, measure_shape(), LMCAS::detail::node() , 以及 LMCAS::detail::RewriteBudget::Shape::nodes.
被这些函数引用 LMCAS::DifferentiationVisitor::set_result(), LMCAS::ExpandVisitor::set_result() , 以及 LMCAS::NormalizationVisitor::set_result().
|
private |
在文件 rewrite_budget.cpp 第 139 行定义.
引用了 check_step_access(), LMCAS::ComputationContext::consume_steps(), context_, max_depth_, max_nodes_, LMCAS::detail::node(), operation_, require_shape(), LMCAS::ResourceLimit, LMCAS::detail::RewriteBudget::Measurement::shape , 以及 shapes_.
被这些函数引用 measure(), measure_result() , 以及 LMCAS::detail::RewriteBudget::Measurement::visit_child().
|
delete |
| void LMCAS::detail::RewriteBudget::require_nodes | ( | std::size_t | nodes | ) | const |
在文件 rewrite_budget.cpp 第 119 行定义.
引用了 context_, max_nodes_, operation_, LMCAS::ComputationContext::require_ast_nodes() , 以及 LMCAS::ResourceLimit.
被这些函数引用 LMCAS::equivalence_detail::anonymous_namespace{equivalence_complex.cpp}::ComplexProduct::accumulate(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_complex.cpp}::canonicalize_power(), LMCAS::check_negative_arg(), LMCAS::anonymous_namespace{poly_utils.cpp}::checked_coefficient_count(), LMCAS::anonymous_namespace{normalization_numeric_powers.cpp}::extract_small_square_factor(), LMCAS::anonymous_namespace{normalization_products.cpp}::ProductAccumulator::finish(), LMCAS::vector_calculus_detail::gradient_impl(), LMCAS::vector_calculus_detail::hessian_impl(), LMCAS::vector_calculus_detail::jacobian_impl(), LMCAS::anonymous_namespace{symbolic_gcd.cpp}::multivariate_polynomial_to_expression(), LMCAS::normalization_check_arithmetic(), LMCAS::normalization_check_children(), LMCAS::normalization_check_children(), LMCAS::normalization_imaginary_power(), LMCAS::normalization_numeric_function(), LMCAS::normalization_numeric_power(), LMCAS::normalization_pi_function(), LMCAS::anonymous_namespace{residual_verification.cpp}::FormalResidual::number(), LMCAS::anonymous_namespace{residual_verification.cpp}::replace_exact_root(), require_shape(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_exp_log.cpp}::rewrite_exp_log_function(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_exp_log.cpp}::rewrite_negative_lambert_exponential(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_exp_log.cpp}::rewrite_operands(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_trig.cpp}::rewrite_operands(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_trig.cpp}::rewrite_trig_sum(), LMCAS::anonymous_namespace{normalization_trigonometric.cpp}::scaled_radical(), LMCAS::ExpandVisitor::set_result(), LMCAS::equivalence_detail::anonymous_namespace{equivalence_trig.cpp}::unwrap_trig_negated_argument(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit() , 以及 LMCAS::NormalizationVisitor::visit().
|
private |
在文件 rewrite_budget.cpp 第 127 行定义.
引用了 context_, LMCAS::detail::RewriteBudget::Shape::height, LMCAS::ComputationContext::limits(), max_depth_, LMCAS::ResourceLimits::max_recursion_depth, LMCAS::detail::RewriteBudget::Shape::nodes, operation_, LMCAS::ComputationContext::recursion_depth(), require_nodes() , 以及 LMCAS::ResourceLimit.
被这些函数引用 measure_shape().
|
friend |
|
private |
|
private |
在文件 rewrite_budget.hpp 第 61 行定义.
被这些函数引用 enter(), leave(), measure() , 以及 measure_result().
|
private |
在文件 rewrite_budget.hpp 第 62 行定义.
被这些函数引用 RewriteBudget(), RewriteBudget(), check_step_access(), commit_step() , 以及 enter().
|
private |
在文件 rewrite_budget.hpp 第 59 行定义.
被这些函数引用 RewriteBudget(), RewriteBudget(), enter(), measure_shape() , 以及 require_shape().
|
private |
在文件 rewrite_budget.hpp 第 60 行定义.
被这些函数引用 RewriteBudget(), RewriteBudget(), append_size(), max_nodes(), measure_shape() , 以及 require_nodes().
|
private |
在文件 rewrite_budget.hpp 第 63 行定义.
被这些函数引用 RewriteBudget(), RewriteBudget(), append_size(), check_step_access(), commit_step(), enter(), measure_shape(), LMCAS::detail::RewriteBudget::Measurement::require_bits(), require_nodes(), require_shape() , 以及 LMCAS::detail::RewriteBudget::Measurement::visit_child().
|
private |
在文件 rewrite_budget.hpp 第 58 行定义.
被这些函数引用 RewriteBudget(), RewriteBudget(), check_step_access(), commit_step() , 以及 enter().
|
private |
在文件 rewrite_budget.hpp 第 64 行定义.
被这些函数引用 measure_shape().