5 #include "../sequence_store.h" 6 #include "../sequence_context.h" 12 void check_sequences_defined_by(
double result[2][10],
Sequence::Type typeU,
const char * definitionU,
const char * conditionU1 =
nullptr,
const char * conditionU2 =
nullptr,
Sequence::Type typeV = Sequence::Type::Explicit,
const char * definitionV =
nullptr,
const char * conditionV1 =
nullptr,
const char * conditionV2 =
nullptr) {
50 for (
int j = 0; j < 10; j++) {
64 double result0[2][10] = {{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}, {}};
68 double result1[2][10] = {{0.0, 0.0, 1.0, 3.0, 6.0, 10.0, 15.0, 21.0, 28.0, 36.0}, {}};
72 double result2[2][10] = {{0.0, 0.0, 0.0, 1.0, 3.0, 7.0, 14.0, 26.0, 46.0, 79.0}, {}};
77 double result3[2][10] = {{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0},
78 {0.0, 2.0, 4.0, 6.0, 8.0, 10.0, 12.0, 14.0, 16.0, 18.0}};
82 double result4[2][10] = {{0.0, 0.0, 1.0, 3.0, 6.0, 10.0, 15.0, 21.0, 28.0, 36.0},
83 {0.0, 1.0, 3.0, 6.0, 10.0, 15.0, 21.0, 28.0, 36.0, 45.0}};
84 check_sequences_defined_by(result4, Sequence::Type::SingleRecurrence,
"n+u(n)",
"0",
nullptr, Sequence::Type::Explicit,
"u(n)+n");
87 double result5[2][10] = {{0.0, 0.0, 0.0, 1.0, 3.0, 7.0, 14.0, 26.0, 46.0, 79.0},
88 {0.0, 1.0, 2.0, 4.0, 7.0, 12.0, 20.0, 33.0, 54.0, 88.0}};
89 check_sequences_defined_by(result5, Sequence::Type::DoubleRecurrence,
"n+u(n)+u(n+1)",
"0",
"0", Sequence::Type::Explicit,
"u(n)+n");
92 double result6[2][10] = {{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0},
93 {0.0, 1.0, 4.0, 7.0, 10.0, 13.0, 16.0, 19.0, 22.0, 25.0}};
94 check_sequences_defined_by(result6, Sequence::Type::Explicit,
"n",
nullptr,
nullptr, Sequence::Type::SingleRecurrence,
"u(n)+u(n+1)+n",
"0");
97 double result7[2][10] = {{0.0, 0.0, 1.0, 3.0, 6.0, 10.0, 15.0, 21.0, 28.0, 36.0},
98 {0.0, 0.0, 2.0, 6.0, 12.0, 20.0, 30.0, 42.0, 56.0, 72.0}};
99 check_sequences_defined_by(result7, Sequence::Type::SingleRecurrence,
"n+u(n)",
"0",
nullptr, Sequence::Type::SingleRecurrence,
"u(n)+u(n+1)+n",
"0");
102 double result8[2][10] = {{0.0, 0.0, 0.0, 1.0, 3.0, 7.0, 14.0, 26.0, 46.0, 79.0},
103 {0.0, 0.0, 1.0, 3.0, 7.0, 14.0, 26.0, 46.0, 79.0, 133.0}};
104 check_sequences_defined_by(result8, Sequence::Type::DoubleRecurrence,
"n+u(n)+u(n+1)",
"0",
"0", Sequence::Type::SingleRecurrence,
"u(n)+u(n+1)+n",
"0");
107 double result9[2][10] = {{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0},
108 {0.0, 0.0, 1.0, 4.0, 7.0, 10.0, 13.0, 16.0, 19.0, 22.0}};
109 check_sequences_defined_by(result9, Sequence::Type::Explicit,
"n",
nullptr,
nullptr, Sequence::Type::DoubleRecurrence,
"u(n)+u(n+1)+n",
"0",
"0");
112 double result10[2][10] = {{0.0, 0.0, 1.0, 3.0, 6.0, 10.0, 15.0, 21.0, 28.0, 36.0},
113 {0.0, 0.0, 0.0, 2.0, 6.0, 12.0, 20.0, 30.0, 42.0, 56.0}};
114 check_sequences_defined_by(result10, Sequence::Type::SingleRecurrence,
"n+u(n)",
"0",
nullptr, Sequence::Type::DoubleRecurrence,
"u(n)+u(n+1)+n",
"0",
"0");
117 double result11[2][10] = {{0.0, 0.0, 0.0, 1.0, 3.0, 7.0, 14.0, 26.0, 46.0, 79.0},
118 {0.0, 0.0, 0.0, 1.0, 3.0, 7.0, 14.0, 26.0, 46.0, 79.0}};
119 check_sequences_defined_by(result11, Sequence::Type::DoubleRecurrence,
"n+u(n)+u(n+1)",
"0",
"0", Sequence::Type::DoubleRecurrence,
"u(n)+u(n+1)+n",
"0",
"0");
124 double result12[2][10] = {{
NAN,
NAN,
NAN,
NAN,
NAN,
NAN,
NAN,
NAN,
NAN,
NAN},
129 double result13[2][10] = {{0.0, 0.0, 2.0, 6.0, 12.0, 20.0, 30.0, 42.0, 56.0, 72.0}, {0.0, 1.0, 4.0, 9.0, 16.0, 25.0, 36.0, 49.0, 64.0, 81}};
130 check_sequences_defined_by(result13, Sequence::Type::SingleRecurrence,
"v(n)+n",
"0",
nullptr, Sequence::Type::Explicit,
"u(n)+n");
133 double result14[2][10] = {{0.0, 0.0, 1.0, 6.0, 21.0, 64.0, 183.0, 510.0, 1405.0, 3852.0}, {0.0, 1.0, 3.0, 9.0, 25.0, 69.0, 189.0, 517.0, 1413.0, 3861.0}};
134 check_sequences_defined_by(result14, Sequence::Type::DoubleRecurrence,
"v(n+1)+v(n)+u(n+1)+u(n)+n",
"0",
"0", Sequence::Type::Explicit,
"u(n)+n");
137 double result15[2][10] = {{0.0, 1.0, 4.0, 9.0, 16.0, 25.0, 36.0, 49.0, 64.0, 81},
138 {0.0, 0.0, 2.0, 6.0, 12.0, 20.0, 30.0, 42.0, 56.0, 72.0}};
139 check_sequences_defined_by(result15, Sequence::Type::Explicit,
"v(n)+n",
nullptr,
nullptr, Sequence::Type::SingleRecurrence,
"u(n)+n",
"0");
142 double result16[2][10] = {{0.0, 0.0, 1.0, 3.0, 6.0, 10.0, 15.0, 21.0, 28.0, 36.0}, {0.0, 0.0, 1.0, 3.0, 6.0, 10.0, 15.0, 21.0, 28.0, 36.0}};
143 check_sequences_defined_by(result16, Sequence::Type::SingleRecurrence,
"v(n)+n",
"0",
nullptr, Sequence::Type::SingleRecurrence,
"u(n)+n",
"0");
146 double result17[2][10] = {{0.0, 0.0, 0.0, 2.0, 7.0, 19.0, 46.0, 105.0, 233.0, 509.0}, {0.0, 0.0, 1.0, 2.0, 5.0, 11.0, 24.0, 52.0, 112.0, 241.0}};
147 check_sequences_defined_by(result17, Sequence::Type::DoubleRecurrence,
"v(n+1)+v(n)+u(n+1)+u(n)+n",
"0",
"0", Sequence::Type::SingleRecurrence,
"u(n)+n",
"0");
150 double result18[2][10] = {{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}, {
NAN,
NAN,
NAN,
NAN,
NAN,
NAN,
NAN,
NAN,
NAN,
NAN}};
154 double result19[2][10] = {{
NAN,
NAN,
NAN,
NAN,
NAN,
NAN,
NAN,
NAN,
NAN,
NAN}, {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}};
void setFirstInitialConditionContent(const char *c)
Sequence * functionAtIndex(int i) override
void check_sequences_defined_by(double result[2][10], Sequence::Type typeU, const char *definitionU, const char *conditionU1=nullptr, const char *conditionU2=nullptr, Sequence::Type typeV=Sequence::Type::Explicit, const char *definitionV=nullptr, const char *conditionV1=nullptr, const char *conditionV2=nullptr)
bool isDefined() override
void setSecondInitialConditionContent(const char *c)
const char * name() const
Sequence * addEmptyFunction() override
void setContent(const char *c) override
QUIZ_CASE(sequence_evaluation)
float evaluateAtAbscissa(float x, Poincare::Context *context) const override
void removeFunction(Shared::Function *f) override