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