<s> from sympy import ( S , Tuple , symbols , Interval , EmptySequence , oo , SeqPer , <EOL> SeqFormula , sequence , SeqAdd , SeqMul , Indexed , Idx ) <EOL> from sympy . series . sequences import SeqExpr , SeqExprOp <EOL> from sympy . utilities . pytest import raises <EOL> x , y , z = symbols ( '<STR_LIT>' ) <EOL> n , m = symbols ( '<STR_LIT>' ) <EOL> def test_EmptySequence ( ) : <EOL> assert isinstance ( S . EmptySequence , EmptySequence ) <EOL> assert S . EmptySequence . interval is S . EmptySet <EOL> assert S . EmptySequence . length is S . Zero <EOL> assert list ( S . EmptySequence ) == [ ] <EOL> def test_SeqExpr ( ) : <EOL> s = SeqExpr ( ( <NUM_LIT:1> , n , y ) , ( x , <NUM_LIT:0> , <NUM_LIT:10> ) ) <EOL> assert isinstance ( s , SeqExpr ) <EOL> assert s . gen == ( <NUM_LIT:1> , n , y ) <EOL> assert s . interval == Interval ( <NUM_LIT:0> , <NUM_LIT:10> ) <EOL> assert s . start == <NUM_LIT:0> <EOL> assert s . stop == <NUM_LIT:10> <EOL> assert s . length == <NUM_LIT:11> <EOL> assert s . variables == ( x , ) <EOL> assert SeqExpr ( ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ) , ( x , <NUM_LIT:0> , oo ) ) . length is oo <EOL> def test_SeqPer ( ) : <EOL> s = SeqPer ( ( <NUM_LIT:1> , n , <NUM_LIT:3> ) , ( x , <NUM_LIT:0> , <NUM_LIT:5> ) ) <EOL> assert isinstance ( s , SeqPer ) <EOL> assert s . periodical == Tuple ( <NUM_LIT:1> , n , <NUM_LIT:3> ) <EOL> assert s . period == <NUM_LIT:3> <EOL> assert s . coeff ( <NUM_LIT:3> ) == <NUM_LIT:1> <EOL> assert s . free_symbols == { n } <EOL> assert list ( s ) == [ <NUM_LIT:1> , n , <NUM_LIT:3> , <NUM_LIT:1> , n , <NUM_LIT:3> ] <EOL> assert s [ : ] == [ <NUM_LIT:1> , n , <NUM_LIT:3> , <NUM_LIT:1> , n , <NUM_LIT:3> ] <EOL> assert SeqPer ( ( <NUM_LIT:1> , n , <NUM_LIT:3> ) , ( x , - oo , <NUM_LIT:0> ) ) [ <NUM_LIT:0> : <NUM_LIT:6> ] == [ <NUM_LIT:1> , n , <NUM_LIT:3> , <NUM_LIT:1> , n , <NUM_LIT:3> ] <EOL> raises ( ValueError , lambda : SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ) , ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:2> ) ) ) <EOL> raises ( ValueError , lambda : SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ) , ( x , - oo , oo ) ) ) <EOL> raises ( ValueError , lambda : SeqPer ( n ** <NUM_LIT:2> , ( <NUM_LIT:0> , oo ) ) ) <EOL> assert SeqPer ( ( n , n ** <NUM_LIT:2> , n ** <NUM_LIT:3> ) , ( m , <NUM_LIT:0> , oo ) ) [ : <NUM_LIT:6> ] == [ n , n ** <NUM_LIT:2> , n ** <NUM_LIT:3> , n , n ** <NUM_LIT:2> , n ** <NUM_LIT:3> ] <EOL> assert SeqPer ( ( n , n ** <NUM_LIT:2> , n ** <NUM_LIT:3> ) , ( n , <NUM_LIT:0> , oo ) ) [ : <NUM_LIT:6> ] == [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:8> , <NUM_LIT:3> , <NUM_LIT:16> , <NUM_LIT> ] <EOL> assert SeqPer ( ( n , m ) , ( n , <NUM_LIT:0> , oo ) ) [ : <NUM_LIT:6> ] == [ <NUM_LIT:0> , m , <NUM_LIT:2> , m , <NUM_LIT:4> , m ] <EOL> def test_SeqFormula ( ) : <EOL> s = SeqFormula ( n ** <NUM_LIT:2> , ( n , <NUM_LIT:0> , <NUM_LIT:5> ) ) <EOL> assert isinstance ( s , SeqFormula ) <EOL> assert s . formula == n ** <NUM_LIT:2> <EOL> assert s . coeff ( <NUM_LIT:3> ) == <NUM_LIT:9> <EOL> assert list ( s ) == [ i ** <NUM_LIT:2> for i in range ( <NUM_LIT:6> ) ] <EOL> assert s [ : ] == [ i ** <NUM_LIT:2> for i in range ( <NUM_LIT:6> ) ] <EOL> assert SeqFormula ( n ** <NUM_LIT:2> , ( n , - oo , <NUM_LIT:0> ) ) [ <NUM_LIT:0> : <NUM_LIT:6> ] == [ i ** <NUM_LIT:2> for i in range ( <NUM_LIT:6> ) ] <EOL> assert SeqFormula ( n ** <NUM_LIT:2> , ( <NUM_LIT:0> , oo ) ) == SeqFormula ( n ** <NUM_LIT:2> , ( n , <NUM_LIT:0> , oo ) ) <EOL> assert SeqFormula ( n ** <NUM_LIT:2> , ( <NUM_LIT:0> , m ) ) . subs ( m , x ) == SeqFormula ( n ** <NUM_LIT:2> , ( <NUM_LIT:0> , x ) ) <EOL> assert SeqFormula ( m * n ** <NUM_LIT:2> , ( n , <NUM_LIT:0> , oo ) ) . subs ( m , x ) == SeqFormula ( x * n ** <NUM_LIT:2> , ( n , <NUM_LIT:0> , oo ) ) <EOL> raises ( ValueError , lambda : SeqFormula ( n ** <NUM_LIT:2> , ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:2> ) ) ) <EOL> raises ( ValueError , lambda : SeqFormula ( n ** <NUM_LIT:2> , ( n , - oo , oo ) ) ) <EOL> raises ( ValueError , lambda : SeqFormula ( m * n ** <NUM_LIT:2> , ( <NUM_LIT:0> , oo ) ) ) <EOL> def test_sequence ( ) : <EOL> form = SeqFormula ( n ** <NUM_LIT:2> , ( n , <NUM_LIT:0> , <NUM_LIT:5> ) ) <EOL> per = SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ) , ( n , <NUM_LIT:0> , <NUM_LIT:5> ) ) <EOL> inter = SeqFormula ( n ** <NUM_LIT:2> ) <EOL> assert sequence ( n ** <NUM_LIT:2> , ( n , <NUM_LIT:0> , <NUM_LIT:5> ) ) == form <EOL> assert sequence ( ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ) , ( n , <NUM_LIT:0> , <NUM_LIT:5> ) ) == per <EOL> assert sequence ( n ** <NUM_LIT:2> ) == inter <EOL> def test_SeqExprOp ( ) : <EOL> form = SeqFormula ( n ** <NUM_LIT:2> , ( n , <NUM_LIT:0> , <NUM_LIT:10> ) ) <EOL> per = SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ) , ( m , <NUM_LIT:5> , <NUM_LIT:10> ) ) <EOL> s = SeqExprOp ( form , per ) <EOL> assert s . gen == ( n ** <NUM_LIT:2> , ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ) ) <EOL> assert s . interval == Interval ( <NUM_LIT:5> , <NUM_LIT:10> ) <EOL> assert s . start == <NUM_LIT:5> <EOL> assert s . stop == <NUM_LIT:10> <EOL> assert s . length == <NUM_LIT:6> <EOL> assert s . variables == ( n , m ) <EOL> def test_SeqAdd ( ) : <EOL> per = SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ) , ( n , <NUM_LIT:0> , oo ) ) <EOL> form = SeqFormula ( n ** <NUM_LIT:2> ) <EOL> per_bou = SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:2> ) , ( n , <NUM_LIT:1> , <NUM_LIT:5> ) ) <EOL> form_bou = SeqFormula ( n ** <NUM_LIT:2> , ( <NUM_LIT:6> , <NUM_LIT:10> ) ) <EOL> form_bou2 = SeqFormula ( n ** <NUM_LIT:2> , ( <NUM_LIT:1> , <NUM_LIT:5> ) ) <EOL> assert SeqAdd ( ) == S . EmptySequence <EOL> assert SeqAdd ( S . EmptySequence ) == S . EmptySequence <EOL> assert SeqAdd ( per ) == per <EOL> assert SeqAdd ( per , S . EmptySequence ) == per <EOL> assert SeqAdd ( per_bou , form_bou ) == S . EmptySequence <EOL> s = SeqAdd ( per_bou , form_bou2 , evaluate = False ) <EOL> assert s . args == ( form_bou2 , per_bou ) <EOL> assert s [ : ] == [ <NUM_LIT:2> , <NUM_LIT:6> , <NUM_LIT:10> , <NUM_LIT> , <NUM_LIT> ] <EOL> assert list ( s ) == [ <NUM_LIT:2> , <NUM_LIT:6> , <NUM_LIT:10> , <NUM_LIT> , <NUM_LIT> ] <EOL> assert isinstance ( SeqAdd ( per , per_bou , evaluate = False ) , SeqAdd ) <EOL> s1 = SeqAdd ( per , per_bou ) <EOL> assert isinstance ( s1 , SeqPer ) <EOL> assert s1 == SeqPer ( ( <NUM_LIT:2> , <NUM_LIT:4> , <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:5> ) , ( n , <NUM_LIT:1> , <NUM_LIT:5> ) ) <EOL> s2 = SeqAdd ( form , form_bou ) <EOL> assert isinstance ( s2 , SeqFormula ) <EOL> assert s2 == SeqFormula ( <NUM_LIT:2> * n ** <NUM_LIT:2> , ( <NUM_LIT:6> , <NUM_LIT:10> ) ) <EOL> assert SeqAdd ( form , form_bou , per ) == SeqAdd ( per , SeqFormula ( <NUM_LIT:2> * n ** <NUM_LIT:2> , ( <NUM_LIT:6> , <NUM_LIT:10> ) ) ) <EOL> assert SeqAdd ( form , SeqAdd ( form_bou , per ) ) == SeqAdd ( per , SeqFormula ( <NUM_LIT:2> * n ** <NUM_LIT:2> , ( <NUM_LIT:6> , <NUM_LIT:10> ) ) ) <EOL> assert SeqAdd ( per , SeqAdd ( form , form_bou ) , evaluate = False ) == SeqAdd ( per , SeqFormula ( <NUM_LIT:2> * n ** <NUM_LIT:2> , ( <NUM_LIT:6> , <NUM_LIT:10> ) ) ) <EOL> assert SeqAdd ( SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:2> ) , ( n , <NUM_LIT:0> , oo ) ) , SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:2> ) , ( m , <NUM_LIT:0> , oo ) ) ) == SeqPer ( ( <NUM_LIT:2> , <NUM_LIT:4> ) , ( n , <NUM_LIT:0> , oo ) ) <EOL> def test_SeqMul ( ) : <EOL> per = SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ) , ( n , <NUM_LIT:0> , oo ) ) <EOL> form = SeqFormula ( n ** <NUM_LIT:2> ) <EOL> per_bou = SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:2> ) , ( n , <NUM_LIT:1> , <NUM_LIT:5> ) ) <EOL> form_bou = SeqFormula ( n ** <NUM_LIT:2> , ( n , <NUM_LIT:6> , <NUM_LIT:10> ) ) <EOL> form_bou2 = SeqFormula ( n ** <NUM_LIT:2> , ( <NUM_LIT:1> , <NUM_LIT:5> ) ) <EOL> assert SeqMul ( ) == S . EmptySequence <EOL> assert SeqMul ( S . EmptySequence ) == S . EmptySequence <EOL> assert SeqMul ( per ) == per <EOL> assert SeqMul ( per , S . EmptySequence ) == S . EmptySequence <EOL> assert SeqMul ( per_bou , form_bou ) == S . EmptySequence <EOL> s = SeqMul ( per_bou , form_bou2 , evaluate = False ) <EOL> assert s . args == ( form_bou2 , per_bou ) <EOL> assert s [ : ] == [ <NUM_LIT:1> , <NUM_LIT:8> , <NUM_LIT:9> , <NUM_LIT:32> , <NUM_LIT> ] <EOL> assert list ( s ) == [ <NUM_LIT:1> , <NUM_LIT:8> , <NUM_LIT:9> , <NUM_LIT:32> , <NUM_LIT> ] <EOL> assert isinstance ( SeqMul ( per , per_bou , evaluate = False ) , SeqMul ) <EOL> s1 = SeqMul ( per , per_bou ) <EOL> assert isinstance ( s1 , SeqPer ) <EOL> assert s1 == SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:6> ) , ( n , <NUM_LIT:1> , <NUM_LIT:5> ) ) <EOL> s2 = SeqMul ( form , form_bou ) <EOL> assert isinstance ( s2 , SeqFormula ) <EOL> assert s2 == SeqFormula ( n ** <NUM_LIT:4> , ( <NUM_LIT:6> , <NUM_LIT:10> ) ) <EOL> assert SeqMul ( form , form_bou , per ) == SeqMul ( per , SeqFormula ( n ** <NUM_LIT:4> , ( <NUM_LIT:6> , <NUM_LIT:10> ) ) ) <EOL> assert SeqMul ( form , SeqMul ( form_bou , per ) ) == SeqMul ( per , SeqFormula ( n ** <NUM_LIT:4> , ( <NUM_LIT:6> , <NUM_LIT:10> ) ) ) <EOL> assert SeqMul ( per , SeqMul ( form , form_bou2 , <EOL> evaluate = False ) , evaluate = False ) == SeqMul ( form , per , form_bou2 , evaluate = False ) <EOL> assert SeqMul ( SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:2> ) , ( n , <NUM_LIT:0> , oo ) ) , SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:2> ) , ( n , <NUM_LIT:0> , oo ) ) ) == SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:4> ) , ( n , <NUM_LIT:0> , oo ) ) <EOL> def test_add ( ) : <EOL> per = SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:2> ) , ( n , <NUM_LIT:0> , oo ) ) <EOL> form = SeqFormula ( n ** <NUM_LIT:2> ) <EOL> assert per + ( SeqPer ( ( <NUM_LIT:2> , <NUM_LIT:3> ) ) ) == SeqPer ( ( <NUM_LIT:3> , <NUM_LIT:5> ) , ( n , <NUM_LIT:0> , oo ) ) <EOL> assert form + SeqFormula ( n ** <NUM_LIT:3> ) == SeqFormula ( n ** <NUM_LIT:2> + n ** <NUM_LIT:3> ) <EOL> assert per + form == SeqAdd ( per , form ) <EOL> raises ( TypeError , lambda : per + n ) <EOL> raises ( TypeError , lambda : n + per ) <EOL> def test_sub ( ) : <EOL> per = SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:2> ) , ( n , <NUM_LIT:0> , oo ) ) <EOL> form = SeqFormula ( n ** <NUM_LIT:2> ) <EOL> assert per - ( SeqPer ( ( <NUM_LIT:2> , <NUM_LIT:3> ) ) ) == SeqPer ( ( - <NUM_LIT:1> , - <NUM_LIT:1> ) , ( n , <NUM_LIT:0> , oo ) ) <EOL> assert form - ( SeqFormula ( n ** <NUM_LIT:3> ) ) == SeqFormula ( n ** <NUM_LIT:2> - n ** <NUM_LIT:3> ) <EOL> assert per - form == SeqAdd ( per , - form ) <EOL> raises ( TypeError , lambda : per - n ) <EOL> raises ( TypeError , lambda : n - per ) <EOL> def test_mul__coeff_mul ( ) : <EOL> assert SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:2> ) , ( n , <NUM_LIT:0> , oo ) ) . coeff_mul ( <NUM_LIT:2> ) == SeqPer ( ( <NUM_LIT:2> , <NUM_LIT:4> ) , ( n , <NUM_LIT:0> , oo ) ) <EOL> assert SeqFormula ( n ** <NUM_LIT:2> ) . coeff_mul ( <NUM_LIT:2> ) == SeqFormula ( <NUM_LIT:2> * n ** <NUM_LIT:2> ) <EOL> assert S . EmptySequence . coeff_mul ( <NUM_LIT:100> ) == S . EmptySequence <EOL> assert SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:2> ) , ( n , <NUM_LIT:0> , oo ) ) * ( SeqPer ( ( <NUM_LIT:2> , <NUM_LIT:3> ) ) ) == SeqPer ( ( <NUM_LIT:2> , <NUM_LIT:6> ) , ( n , <NUM_LIT:0> , oo ) ) <EOL> assert SeqFormula ( n ** <NUM_LIT:2> ) * SeqFormula ( n ** <NUM_LIT:3> ) == SeqFormula ( n ** <NUM_LIT:5> ) <EOL> assert S . EmptySequence * SeqFormula ( n ** <NUM_LIT:2> ) == S . EmptySequence <EOL> assert SeqFormula ( n ** <NUM_LIT:2> ) * S . EmptySequence == S . EmptySequence <EOL> raises ( TypeError , lambda : sequence ( n ** <NUM_LIT:2> ) * n ) <EOL> raises ( TypeError , lambda : n * sequence ( n ** <NUM_LIT:2> ) ) <EOL> def test_neg ( ) : <EOL> assert - SeqPer ( ( <NUM_LIT:1> , - <NUM_LIT:2> ) , ( n , <NUM_LIT:0> , oo ) ) == SeqPer ( ( - <NUM_LIT:1> , <NUM_LIT:2> ) , ( n , <NUM_LIT:0> , oo ) ) <EOL> assert - SeqFormula ( n ** <NUM_LIT:2> ) == SeqFormula ( - n ** <NUM_LIT:2> ) <EOL> def test_operations ( ) : <EOL> per = SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:2> ) , ( n , <NUM_LIT:0> , oo ) ) <EOL> per2 = SeqPer ( ( <NUM_LIT:2> , <NUM_LIT:4> ) , ( n , <NUM_LIT:0> , oo ) ) <EOL> form = SeqFormula ( n ** <NUM_LIT:2> ) <EOL> form2 = SeqFormula ( n ** <NUM_LIT:3> ) <EOL> assert per + form + form2 == SeqAdd ( per , form , form2 ) <EOL> assert per + form - form2 == SeqAdd ( per , form , - form2 ) <EOL> assert per + form - S . EmptySequence == SeqAdd ( per , form ) <EOL> assert per + per2 + form == SeqAdd ( SeqPer ( ( <NUM_LIT:3> , <NUM_LIT:6> ) , ( n , <NUM_LIT:0> , oo ) ) , form ) <EOL> assert S . EmptySequence - per == - per <EOL> assert form + form == SeqFormula ( <NUM_LIT:2> * n ** <NUM_LIT:2> ) <EOL> assert per * form * form2 == SeqMul ( per , form , form2 ) <EOL> assert form * form == SeqFormula ( n ** <NUM_LIT:4> ) <EOL> assert form * - form == SeqFormula ( - n ** <NUM_LIT:4> ) <EOL> assert form * ( per + form2 ) == SeqMul ( form , SeqAdd ( per , form2 ) ) <EOL> assert form * ( per + per ) == SeqMul ( form , per2 ) <EOL> assert form . coeff_mul ( m ) == SeqFormula ( m * n ** <NUM_LIT:2> , ( n , <NUM_LIT:0> , oo ) ) <EOL> assert per . coeff_mul ( m ) == SeqPer ( ( m , <NUM_LIT:2> * m ) , ( n , <NUM_LIT:0> , oo ) ) <EOL> def test_Idx_limits ( ) : <EOL> i = symbols ( '<STR_LIT:i>' , cls = Idx ) <EOL> r = Indexed ( '<STR_LIT:r>' , i ) <EOL> assert SeqFormula ( r , ( i , <NUM_LIT:0> , <NUM_LIT:5> ) ) [ : ] == [ r . subs ( i , j ) for j in range ( <NUM_LIT:6> ) ] <EOL> assert SeqPer ( ( <NUM_LIT:1> , <NUM_LIT:2> ) , ( i , <NUM_LIT:0> , <NUM_LIT:5> ) ) [ : ] == [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:1> , <NUM_LIT:2> ] </s>
