#NEWLINE# @ XFAIL #NEWLINE# def test_solve_lambert( ) : #NEWLINE# #INDENT# assert ( solveset_real ( ( ( x * exp ( x ) ) - 1 ) , x ) == FiniteSet ( LambertW ( 1 ) ) ) #NEWLINE# assert ( solveset_real ( ( x + ( 2 ** x ) ) , x ) == FiniteSet ( ( ( - LambertW ( log ( 2 ) ) ) / log ( 2 ) ) ) ) #NEWLINE# assert ( solveset_real ( ( exp ( ( log ( 5 ) * x ) ) - ( 2 ** x ) ) , x ) == FiniteSet ( 0 ) ) #NEWLINE# ans = solveset_real ( ( ( ( 3 * x ) + 5 ) + ( 2 ** ( ( ( - 5 ) * x ) + 3 ) ) ) , x ) #NEWLINE# assert ( ans == FiniteSet ( ( ( - Rational ( 5 , 3 ) ) + ( LambertW ( ( ( ( ( - 10240 ) * ( 2 ** ( S ( 1 ) / 3 ) ) ) * log ( 2 ) ) / 3 ) ) / ( 5 * log ( 2 ) ) ) ) ) ) #NEWLINE# eq = ( ( 2 * ( ( ( 3 * x ) + 4 ) ** 5 ) ) - ( 6 * ( 7 ** ( ( 3 * x ) + 9 ) ) ) ) #NEWLINE# result = solveset_real ( eq , x ) #NEWLINE# ans = FiniteSet ( ( ( ( log ( 2401 ) + ( 5 * LambertW ( ( - log ( ( 7 ** ( ( 7 * ( 3 ** Rational ( 1 , 5 ) ) ) / 5 ) ) ) ) ) ) ) / ( 3 * log ( 7 ) ) ) / ( - 1 ) ) ) #NEWLINE# assert ( result == ans ) #NEWLINE# assert ( solveset_real ( eq . expand ( ) , x ) == result ) #NEWLINE# assert ( solveset_real ( ( ( ( 5 * x ) - 1 ) + ( 3 * exp ( ( 2 - ( 7 * x ) ) ) ) ) , x ) == FiniteSet ( ( Rational ( 1 , 5 ) + ( LambertW ( ( ( ( - 21 ) * exp ( Rational ( 3 , 5 ) ) ) / 5 ) ) / 7 ) ) ) ) #NEWLINE# assert ( solveset_real ( ( ( ( 2 * x ) + 5 ) + log ( ( ( 3 * x ) - 2 ) ) ) , x ) == FiniteSet ( ( Rational ( 2 , 3 ) + ( LambertW ( ( ( 2 * exp ( ( - Rational ( 19 , 3 ) ) ) ) / 3 ) ) / 2 ) ) ) ) #NEWLINE# assert ( solveset_real ( ( ( 3 * x ) + log ( ( 4 * x ) ) ) , x ) == FiniteSet ( ( LambertW ( Rational ( 3 , 4 ) ) / 3 ) ) ) #NEWLINE# assert ( solveset_complex ( ( ( ( x ** z ) * ( y ** z ) ) - 2 ) , z ) == FiniteSet ( ( log ( 2 ) / ( log ( x ) + log ( y ) ) ) ) ) #NEWLINE# assert ( solveset_real ( ( ( x ** x ) - 2 ) ) == FiniteSet ( exp ( LambertW ( log ( 2 ) ) ) ) ) #NEWLINE# a = Symbol ( 'a' ) #NEWLINE# assert ( solveset_real ( ( ( ( - a ) * x ) + ( ( 2 * x ) * log ( x ) ) ) , x ) == FiniteSet ( exp ( ( a / 2 ) ) ) ) #NEWLINE# a = Symbol ( 'a' , real = True ) #NEWLINE# assert ( solveset_real ( ( ( a / x ) + exp ( ( x / 2 ) ) ) , x ) == FiniteSet ( ( 2 * LambertW ( ( ( - a ) / 2 ) ) ) ) ) #NEWLINE# assert ( solveset_real ( ( ( a / x ) + exp ( ( x / 2 ) ) ) . diff ( x ) , x ) == FiniteSet ( ( 4 * LambertW ( ( ( sqrt ( 2 ) * sqrt ( a ) ) / 4 ) ) ) ) ) #NEWLINE# assert ( solveset_real ( ( 1 / ( ( ( 1 / x ) - y ) + exp ( y ) ) ) , x ) == EmptySet ( ) ) #NEWLINE# p = Symbol ( 'p' , positive = True ) #NEWLINE# w = Symbol ( 'w' ) #NEWLINE# assert ( solveset_real ( ( ( ( 1 / p ) + 1 ) ** ( p + 1 ) ) , p ) == EmptySet ( ) ) #NEWLINE# assert ( solveset_real ( ( ( tanh ( ( x + 3 ) ) * tanh ( ( x - 3 ) ) ) - 1 ) , x ) == EmptySet ( ) ) #NEWLINE# assert ( solveset_real ( ( ( 2 * ( x ** w ) ) - ( 4 * ( y ** w ) ) ) , w ) == solveset_real ( ( ( ( x / y ) ** w ) - 2 ) , w ) ) #NEWLINE# assert ( solveset_real ( ( ( ( x ** 2 ) - ( 2 * x ) ) + 1 ) . subs ( x , ( log ( x ) + ( 3 * x ) ) ) , x ) == FiniteSet ( ( LambertW ( ( 3 * S . Exp1 ) ) / 3 ) ) ) #NEWLINE# assert ( solveset_real ( ( ( ( x ** 2 ) - ( 2 * x ) ) + 1 ) . subs ( x , ( ( ( log ( x ) + ( 3 * x ) ) ** 2 ) - 1 ) ) , x ) == FiniteSet ( ( LambertW ( ( 3 * exp ( ( - sqrt ( 2 ) ) ) ) ) / 3 ) , ( LambertW ( ( 3 * exp ( sqrt ( 2 ) ) ) ) / 3 ) ) ) #NEWLINE# assert ( solveset_real ( ( ( ( x ** 2 ) - ( 2 * x ) ) - 2 ) . subs ( x , ( log ( x ) + ( 3 * x ) ) ) , x ) == FiniteSet ( ( LambertW ( ( 3 * exp ( ( 1 + sqrt ( 3 ) ) ) ) ) / 3 ) , ( LambertW ( ( 3 * exp ( ( ( - sqrt ( 3 ) ) + 1 ) ) ) ) / 3 ) ) ) #NEWLINE# assert ( solveset_real ( ( ( ( x * log ( x ) ) + ( 3 * x ) ) + 1 ) , x ) == FiniteSet ( exp ( ( ( - 3 ) + LambertW ( ( - exp ( 3 ) ) ) ) ) ) ) #NEWLINE# eq = ( ( x * exp ( x ) ) - 3 ) . subs ( x , ( x * exp ( x ) ) ) #NEWLINE# assert ( solveset_real ( eq , x ) == FiniteSet ( LambertW ( ( 3 * exp ( ( - LambertW ( 3 ) ) ) ) ) ) ) #NEWLINE# assert ( solveset_real ( ( ( 3 * log ( ( a ** ( ( 3 * x ) + 5 ) ) ) ) + ( a ** ( ( 3 * x ) + 5 ) ) ) , x ) == FiniteSet ( ( - ( ( log ( ( a ** 5 ) ) + LambertW ( ( S ( 1 ) / 3 ) ) ) / ( 3 * log ( a ) ) ) ) ) ) #NEWLINE# p = symbols ( 'p' , positive = True ) #NEWLINE# assert ( solveset_real ( ( ( 3 * log ( ( p ** ( ( 3 * x ) + 5 ) ) ) ) + ( p ** ( ( 3 * x ) + 5 ) ) ) , x ) == FiniteSet ( ( log ( ( ( ( ( - ( 3 ** ( S ( 1 ) / 3 ) ) ) - ( ( 3 ** ( S ( 5 ) / 6 ) ) * I ) ) * ( LambertW ( ( S ( 1 ) / 3 ) ) ** ( S ( 1 ) / 3 ) ) ) / ( 2 * ( b ** ( S ( 5 ) / 3 ) ) ) ) ) / log ( p ) ) , ( log ( ( ( ( ( - ( 3 ** ( S ( 1 ) / 3 ) ) ) + ( ( 3 ** ( S ( 5 ) / 6 ) ) * I ) ) * ( LambertW ( ( S ( 1 ) / 3 ) ) ** ( S ( 1 ) / 3 ) ) ) / ( 2 * ( p ** ( S ( 5 ) / 3 ) ) ) ) ) / log ( p ) ) , log ( ( ( ( 3 * LambertW ( ( S ( 1 ) / 3 ) ) ) / ( p ** 5 ) ) ** ( 1 / ( 3 * log ( p ) ) ) ) ) ) ) #NEWLINE# b = Symbol ( 'b' ) #NEWLINE# eq = ( ( ( 3 * log ( ( a ** ( ( 3 * x ) + 5 ) ) ) ) + ( b * log ( ( a ** ( ( 3 * x ) + 5 ) ) ) ) ) + ( a ** ( ( 3 * x ) + 5 ) ) ) #NEWLINE# assert ( solveset_real ( eq , x ) == FiniteSet ( ( - ( ( log ( ( a ** 5 ) ) + LambertW ( ( 1 / ( b + 3 ) ) ) ) / ( 3 * log ( a ) ) ) ) ) ) #NEWLINE# assert ( solveset_real ( ( ( a / x ) + exp ( ( x / 2 ) ) ) . diff ( x , 2 ) , x ) == FiniteSet ( ( 6 * LambertW ( ( ( ( ( - 1 ) ** ( S ( 1 ) / 3 ) ) * ( a ** ( S ( 1 ) / 3 ) ) ) / 3 ) ) ) ) ) #NEWLINE# assert ( solveset_real ( ( ( x ** 3 ) - ( 3 ** x ) ) , x ) == FiniteSet ( ( ( ( - 3 ) / log ( 3 ) ) * LambertW ( ( ( - log ( 3 ) ) / 3 ) ) ) ) ) #NEWLINE# assert ( solveset_real ( ( ( x ** 2 ) - ( 2 ** x ) ) , x ) == FiniteSet ( 2 ) ) #NEWLINE# assert ( solveset_real ( ( ( - ( x ** 2 ) ) + ( 2 ** x ) ) , x ) == FiniteSet ( 2 ) ) #NEWLINE# assert ( solveset_real ( ( ( 3 ** cos ( x ) ) - ( cos ( x ) ** 3 ) ) ) == FiniteSet ( acos ( ( ( ( - 3 ) * LambertW ( ( ( - log ( 3 ) ) / 3 ) ) ) / log ( 3 ) ) ) ) ) #NEWLINE# assert ( solveset_real ( ( ( 4 ** ( x / 2 ) ) - ( 2 ** ( x / 3 ) ) ) , x ) == FiniteSet ( 0 ) ) #NEWLINE# assert ( solveset_real ( ( ( 5 ** ( x / 2 ) ) - ( 2 ** ( x / 3 ) ) ) , x ) == FiniteSet ( 0 ) ) #NEWLINE# b = ( ( sqrt ( 6 ) * sqrt ( log ( 2 ) ) ) / sqrt ( log ( 5 ) ) ) #NEWLINE# assert ( solveset_real ( ( ( 5 ** ( x / 2 ) ) - ( 2 ** ( 3 / x ) ) ) , x ) == FiniteSet ( ( - b ) , b ) )