#NEWLINE# def is_reduction( expr ) : #NEWLINE# #INDENT# def has_reduction( op ) : #NEWLINE# #INDENT# if getattr ( op , '_reduction' , False ) : #NEWLINE# #INDENT# return True #NEWLINE# #UNINDENT# for arg in op . args : #NEWLINE# #INDENT# if ( isinstance ( arg , ir . ScalarExpr ) and has_reduction ( arg . op ( ) ) ) : #NEWLINE# #INDENT# return True #NEWLINE# #UNINDENT# #UNINDENT# return False #NEWLINE# #UNINDENT# return has_reduction ( ( expr . op ( ) if isinstance ( has_reduction , ir . Expr ) else expr ) )