code: def perform(self, node, inputs, output_storage):
      a = inputs[0]
      s = inputs[1]
  
      # Reconstruct complex array from two float dimensions
      inp = a[..., 0] + 1j * a[..., 1]
      out = np.fft.irfftn(inp, s=tuple(s))
      # Remove numpy's default normalization
      # Cast to input type (numpy outputs float64 by default)
      output_storage[0][0] = (out * s.prod()).astype(a.dtype)
  
imports: import numpy
  from pytensor.gradient import DisconnectedType
  from pytensor.graph.basic import Apply
  from pytensor.graph.op import Op
  from pytensor.tensor.basic import as_tensor_variable
  from pytensor.tensor.math import sqrt
  from pytensor.tensor.subtensor import set_subtensor
  from pytensor.tensor.type import TensorType, integer_dtypes
label_desc: Use image node_id 3 for calling the IRFFTOp obj's underlying member method code with example usage: obj.perform(node, inputs, output_storage) without return types