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

函数

std::shared_ptr< const SymbolicNode > halves_pi (FunctionNode::FuncType type, const BigInt &numerator)
std::shared_ptr< const SymbolicNode > integer_pi (FunctionNode::FuncType type, const BigInt &numerator)
std::shared_ptr< const SymbolicNode > quarters_pi (FunctionNode::FuncType type, const BigInt &numerator, detail::RewriteBudget *budget)
std::shared_ptr< const SymbolicNode > scaled_radical (const Rational &coefficient, const BigInt &radicand, detail::RewriteBudget *budget)
std::shared_ptr< const SymbolicNode > sixths_pi (FunctionNode::FuncType type, const BigInt &numerator, detail::RewriteBudget *budget)
std::shared_ptr< const SymbolicNode > thirds_pi (FunctionNode::FuncType type, const BigInt &numerator, detail::RewriteBudget *budget)

函数说明

◆ halves_pi()

std::shared_ptr< const SymbolicNode > LMCAS::anonymous_namespace{normalization_trigonometric.cpp}::halves_pi ( FunctionNode::FuncType type,
const BigInt & numerator )

在文件 normalization_trigonometric.cpp 第 73 行定义.

73 {
74 if (type == FunctionNode::FuncType::Sin) {
75 return detail::make_node<NumberNode>(BigInt(numerator == BigInt(1) ? 1 : -1));
76 }
77 if (type == FunctionNode::FuncType::Cos) {
78 return detail::make_node<NumberNode>(BigInt(0));
79 }
80 return nullptr;
81}
std::shared_ptr< const Node > make_node(Args &&... args)

引用了 LMCAS::FunctionNode::Cos, halves_pi(), LMCAS::detail::make_node() , 以及 LMCAS::FunctionNode::Sin.

被这些函数引用 halves_pi().

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

◆ integer_pi()

std::shared_ptr< const SymbolicNode > LMCAS::anonymous_namespace{normalization_trigonometric.cpp}::integer_pi ( FunctionNode::FuncType type,
const BigInt & numerator )

在文件 normalization_trigonometric.cpp 第 83 行定义.

83 {
85 return detail::make_node<NumberNode>(BigInt(0));
86 }
87 if (type == FunctionNode::FuncType::Cos) {
88 return detail::make_node<NumberNode>(BigInt(numerator.is_zero() ? 1 : -1));
89 }
90 return nullptr;
91}

引用了 LMCAS::FunctionNode::Cos, integer_pi(), LMCAS::detail::make_node(), LMCAS::FunctionNode::Sin , 以及 LMCAS::FunctionNode::Tan.

被这些函数引用 integer_pi().

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

◆ quarters_pi()

std::shared_ptr< const SymbolicNode > LMCAS::anonymous_namespace{normalization_trigonometric.cpp}::quarters_pi ( FunctionNode::FuncType type,
const BigInt & numerator,
detail::RewriteBudget * budget )

在文件 normalization_trigonometric.cpp 第 37 行定义.

38 {
39 switch (type) {
41 return scaled_radical(numerator < BigInt(4) ? Rational(1, 2) : Rational(-1, 2), BigInt(2), budget);
43 const bool positive = numerator == BigInt(1) || numerator == BigInt(7);
44 return scaled_radical(positive ? Rational(1, 2) : Rational(-1, 2), BigInt(2), budget);
45 }
47 const bool positive = numerator == BigInt(1) || numerator == BigInt(5);
48 return detail::make_node<NumberNode>(BigInt(positive ? 1 : -1));
49 }
50 default:
51 return nullptr;
52 }
53}
std::shared_ptr< const SymbolicNode > scaled_radical(const Rational &coefficient, const BigInt &radicand, detail::RewriteBudget *budget)

引用了 LMCAS::FunctionNode::Cos, LMCAS::detail::make_node(), quarters_pi(), scaled_radical(), LMCAS::FunctionNode::Sin , 以及 LMCAS::FunctionNode::Tan.

被这些函数引用 quarters_pi().

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

◆ scaled_radical()

std::shared_ptr< const SymbolicNode > LMCAS::anonymous_namespace{normalization_trigonometric.cpp}::scaled_radical ( const Rational & coefficient,
const BigInt & radicand,
detail::RewriteBudget * budget )

在文件 normalization_trigonometric.cpp 第 5 行定义.

6 {
7 if (budget) { budget->require_nodes(coefficient == Rational(1) ? 3 : 5); }
9 detail::make_node<NumberNode>(Rational(1, 2)));
10 if (coefficient == Rational(1)) {
11 return root;
12 }
13 if (coefficient == Rational(-1)) {
15 }
17}
void require_nodes(std::size_t nodes) const
std::shared_ptr< const SymbolicNode > make_normalized_multiply_node(const std::vector< std::shared_ptr< const SymbolicNode > > &operands, detail::RewriteBudget *budget=nullptr)

引用了 LMCAS::detail::make_node(), LMCAS::make_normalized_multiply_node(), LMCAS::detail::RewriteBudget::require_nodes() , 以及 scaled_radical().

被这些函数引用 quarters_pi(), scaled_radical(), sixths_pi() , 以及 thirds_pi().

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

◆ sixths_pi()

std::shared_ptr< const SymbolicNode > LMCAS::anonymous_namespace{normalization_trigonometric.cpp}::sixths_pi ( FunctionNode::FuncType type,
const BigInt & numerator,
detail::RewriteBudget * budget )

在文件 normalization_trigonometric.cpp 第 55 行定义.

56 {
57 switch (type) {
59 return detail::make_node<NumberNode>(numerator < BigInt(6) ? Rational(1, 2) : Rational(-1, 2));
61 const bool positive = numerator == BigInt(1) || numerator == BigInt(11);
62 return scaled_radical(positive ? Rational(1, 2) : Rational(-1, 2), BigInt(3), budget);
63 }
65 const bool positive = numerator == BigInt(1) || numerator == BigInt(7);
66 return scaled_radical(positive ? Rational(1, 3) : Rational(-1, 3), BigInt(3), budget);
67 }
68 default:
69 return nullptr;
70 }
71}

引用了 LMCAS::FunctionNode::Cos, LMCAS::detail::make_node(), scaled_radical(), LMCAS::FunctionNode::Sin, sixths_pi() , 以及 LMCAS::FunctionNode::Tan.

被这些函数引用 sixths_pi().

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

◆ thirds_pi()

std::shared_ptr< const SymbolicNode > LMCAS::anonymous_namespace{normalization_trigonometric.cpp}::thirds_pi ( FunctionNode::FuncType type,
const BigInt & numerator,
detail::RewriteBudget * budget )

在文件 normalization_trigonometric.cpp 第 19 行定义.

20 {
21 switch (type) {
23 return scaled_radical(numerator < BigInt(3) ? Rational(1, 2) : Rational(-1, 2), BigInt(3), budget);
25 const bool positive = numerator == BigInt(1) || numerator == BigInt(5);
26 return detail::make_node<NumberNode>(positive ? Rational(1, 2) : Rational(-1, 2));
27 }
29 const bool positive = numerator == BigInt(1) || numerator == BigInt(4);
30 return scaled_radical(positive ? Rational(1) : Rational(-1), BigInt(3), budget);
31 }
32 default:
33 return nullptr;
34 }
35}

引用了 LMCAS::FunctionNode::Cos, LMCAS::detail::make_node(), scaled_radical(), LMCAS::FunctionNode::Sin, LMCAS::FunctionNode::Tan , 以及 thirds_pi().

被这些函数引用 thirds_pi().

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