code: def _floor_divide(g: jit_utils.GraphContext, self, other):
      if symbolic_helper._is_fp(self) or symbolic_helper._is_fp(other):
          out = opset9.true_divide(g, self, other)
          return g.op("Floor", out)
      else:
          # Integer division does trunction rounding
          div = g.op("Div", self, other)
          # Division is negative if: self < 0 != other < 0
          zero = g.op(
              "Constant", value_t=torch.tensor(0, dtype=torch.int64)
          )
          negative = g.op(
              "Xor", g.op("Less", self, zero), g.op("Less", other, zero)
          )
  
          # For negative numbers with self % other != 0, subtract 1 to round down instead of up
          mod = g.op("Mod", self, other, fmod_i=0)
          fixup_mask = g.op(
              "And", negative, g.op("Not", g.op("Equal", mod, zero))
          )
  
          one = g.op(
              "Constant", value_t=torch.tensor(1, dtype=torch.int64)
          )
          fixup = g.op("Sub", div, one)
          return g.op("Where", fixup_mask, fixup, div)
  
imports: from __future__ import annotations
  import functools
  import sys
  import warnings
  from typing import List, Optional, Sequence, Tuple, Union
  import torch
  import torch._C._onnx
  import torch.onnx
  from torch import _C
  from torch.onnx import _constants, _type_utils, errors, symbolic_helper, symbolic_opset9
  from torch.onnx._globals import GLOBALS
  from torch.onnx._internal import _beartype, jit_utils, registration
label_desc: Use image node_id 4 for calling a global function with example usage: _floor_divide(g, other) and returns: g, g