@normalize_types<EOL><INDENT>def bitwise_or(self, t):<DEDENT>
"""<STR_LIT>"""<EOL>s = self<EOL>result_interval = list()<EOL>for u in s._ssplit():<EOL><INDENT>for v in t._ssplit():<EOL><INDENT>w = u.bits<EOL>if u.is_integer:<EOL><INDENT>s_t = StridedInterval._ntz(v.stride)<EOL><DEDENT>elif v.is_integer:<EOL><INDENT>s_t = StridedInterval._ntz(u.stride)<EOL><DEDENT>else:<EOL><INDENT>s_t = min(StridedInterval._ntz(u.stride), StridedInterval._ntz(v.stride))<EOL><DEDENT>if u.is_integer and u.lower_bound == <NUM_LIT:0>:<EOL><INDENT>new_stride = v.stride<EOL><DEDENT>elif v.is_integer and v.lower_bound == <NUM_LIT:0>:<EOL><INDENT>new_stride = u.stride<EOL><DEDENT>else:<EOL><INDENT>new_stride = <NUM_LIT:2> ** s_t<EOL><DEDENT>mask = (<NUM_LIT:1> << s_t) - <NUM_LIT:1><EOL>r = (u.lower_bound & mask) | (v.lower_bound & mask)<EOL>m = (<NUM_LIT:2> ** w) - <NUM_LIT:1><EOL>low_bound = WarrenMethods.min_or(u.lower_bound & (~mask & m), u.upper_bound & (~mask & m), v.lower_bound & (~mask & m), v.upper_bound & (~mask & m), w)<EOL>upper_bound = WarrenMethods.max_or(u.lower_bound & (~mask & m), u.upper_bound & (~mask & m), v.lower_bound & (~mask & m), v.upper_bound & (~mask & m), w)<EOL>if low_bound == upper_bound:<EOL><INDENT>new_stride = <NUM_LIT:0><EOL><DEDENT>new_interval = StridedInterval(lower_bound=((low_bound & (~mask & m)) | r), upper_bound=((upper_bound & (~mask & m)) | r), bits=w, stride=new_stride)<EOL>result_interval.append(new_interval)<EOL><DEDENT><DEDENT>return StridedInterval.least_upper_bound(*result_interval).normalize()<EOL>
Binary operation: logical or

:param b: The other operand
:return: self | b