#NEWLINE# def test_sum_of_squares_powers( ) : #NEWLINE# #INDENT# tru = set ( [ ( 0 , 0 , 1 , 1 , 11 ) , ( 0 , 0 , 5 , 7 , 7 ) , ( 0 , 1 , 3 , 7 , 8 ) , ( 0 , 1 , 4 , 5 , 9 ) , ( 0 , 3 , 4 , 7 , 7 ) , ( 0 , 3 , 5 , 5 , 8 ) , ( 1 , 1 , 2 , 6 , 9 ) , ( 1 , 1 , 6 , 6 , 7 ) , ( 1 , 2 , 3 , 3 , 10 ) , ( 1 , 3 , 4 , 4 , 9 ) , ( 1 , 5 , 5 , 6 , 6 ) , ( 2 , 2 , 3 , 5 , 9 ) , ( 2 , 3 , 5 , 6 , 7 ) , ( 3 , 3 , 4 , 5 , 8 ) ] ) #NEWLINE# eq = ( ( ( ( ( ( u ** 2 ) + ( v ** 2 ) ) + ( x ** 2 ) ) + ( y ** 2 ) ) + ( z ** 2 ) ) - 123 ) #NEWLINE# ans = diop_general_sum_of_squares ( eq , oo ) #NEWLINE# assert ( len ( ans ) == 14 ) #NEWLINE# raises ( ValueError , ( lambda : list ( sum_of_squares ( 10 , ( - 1 ) ) ) ) ) #NEWLINE# assert ( list ( sum_of_squares ( ( - 10 ) , 2 ) ) == [ ] ) #NEWLINE# assert ( list ( sum_of_squares ( 2 , 3 ) ) == [ ] ) #NEWLINE# assert ( list ( sum_of_squares ( 0 , 3 , True ) ) == [ ( 0 , 0 , 0 ) ] ) #NEWLINE# assert ( list ( sum_of_squares ( 0 , 3 ) ) == [ ] ) #NEWLINE# assert ( list ( sum_of_squares ( 4 , 1 ) ) == [ ( 2 , ) ] ) #NEWLINE# assert ( list ( sum_of_squares ( 5 , 1 ) ) == [ ] ) #NEWLINE# assert ( list ( sum_of_squares ( 50 , 2 ) ) == [ ( 1 , 7 ) , ( 5 , 5 ) ] ) #NEWLINE# assert ( list ( sum_of_squares ( 11 , 5 , True ) ) == [ ( 1 , 1 , 1 , 2 , 2 ) , ( 0 , 0 , 1 , 1 , 3 ) ] ) #NEWLINE# assert ( list ( sum_of_squares ( 8 , 8 ) ) == [ ( 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ) ] ) #NEWLINE# assert ( [ len ( list ( sum_of_squares ( i , 5 , True ) ) ) for i in range ( 30 ) ] == [ 1 , 1 , 1 , 1 , 2 , 2 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 3 , 2 , 1 , 3 , 3 , 3 , 3 , 4 , 3 , 3 , 2 , 2 , 4 , 4 , 4 , 4 , 5 ] ) #NEWLINE# assert ( [ len ( list ( sum_of_squares ( i , 5 ) ) ) for i in range ( 30 ) ] == [ 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 1 , 0 , 1 , 2 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 3 ] ) #NEWLINE# for i in range ( 30 ) : #NEWLINE# #INDENT# s1 = set ( sum_of_squares ( i , 5 , True ) ) #NEWLINE# assert ( ( not s1 ) or all ( ( ( sum ( ( ( j ** 2 ) for j in t ) ) == i ) for t in s1 ) ) ) #NEWLINE# s2 = set ( sum_of_squares ( i , 5 ) ) #NEWLINE# assert all ( ( ( sum ( ( ( j ** 2 ) for j in t ) ) == i ) for t in s2 ) ) #NEWLINE# #UNINDENT# raises ( ValueError , ( lambda : list ( sum_of_powers ( 2 , ( - 1 ) , 1 ) ) ) ) #NEWLINE# raises ( ValueError , ( lambda : list ( sum_of_powers ( 2 , 1 , ( - 1 ) ) ) ) ) #NEWLINE# assert ( list ( sum_of_powers ( ( - 2 ) , 3 , 2 ) ) == [ ( ( - 1 ) , ( - 1 ) ) ] ) #NEWLINE# assert ( list ( sum_of_powers ( ( - 2 ) , 4 , 2 ) ) == [ ] ) #NEWLINE# assert ( list ( sum_of_powers ( 2 , 1 , 1 ) ) == [ ( 2 , ) ] ) #NEWLINE# assert ( list ( sum_of_powers ( 2 , 1 , 3 , True ) ) == [ ( 0 , 0 , 2 ) , ( 0 , 1 , 1 ) ] ) #NEWLINE# assert ( list ( sum_of_powers ( 5 , 1 , 2 , True ) ) == [ ( 0 , 5 ) , ( 1 , 4 ) , ( 2 , 3 ) ] ) #NEWLINE# assert ( list ( sum_of_powers ( 6 , 2 , 2 ) ) == [ ] ) #NEWLINE# assert ( list ( sum_of_powers ( ( 3 ** 5 ) , 3 , 1 ) ) == [ ] ) #NEWLINE# assert ( ( list ( sum_of_powers ( ( 3 ** 6 ) , 3 , 1 ) ) == [ ( 9 , ) ] ) and ( ( 9 ** 3 ) == ( 3 ** 6 ) ) ) #NEWLINE# assert ( list ( sum_of_powers ( ( 2 ** 1000 ) , 5 , 2 ) ) == [ ] )