| 25 | # and crashed. |
| 26 | |
| 27 | def _select_fwd(op_range_lo, op_range_hi, ops, selected_op_idx, op_args, op_kwargs): |
| 28 | assert op_range_lo <= op_range_hi |
| 29 | if op_range_lo == op_range_hi: |
| 30 | return ops[op_range_lo](*op_args, **op_kwargs) |
| 31 | mid = (op_range_lo + op_range_hi) // 2 |
| 32 | if selected_op_idx <= mid: |
| 33 | ret = _select_fwd(op_range_lo, mid, ops, selected_op_idx, op_args, op_kwargs) |
| 34 | else: |
| 35 | ret = _select_fwd(mid + 1, op_range_hi, ops, selected_op_idx, op_args, op_kwargs) |
| 36 | return ret |
| 37 | |
| 38 | def _select_unpack(op_range_lo, op_range_hi, ops, selected_op_idx, op_args, op_kwargs): |
| 39 | assert op_range_lo <= op_range_hi |