code: def execute(cls, ctx, op):
      a = ctx[op.inputs[0].key]
      xp = get_array_module(a)
      fun = _get_fft_func(op, xp)
      res = fun(a, n=op.n, axis=op.axis, norm=op.norm)
      if res.dtype != op.dtype:
          res = res.astype(op.dtype)
      ctx[op.outputs[0].key] = res
  
imports: from collections.abc import Iterable
  from ...core import recursive_tile
  from ...serialization.serializables import FieldTypes, KeyField, StringField, Int32Field, Int64Field, TupleField
  from ...utils import has_unknown_shape
  from ..utils import validate_axis, decide_chunk_sizes
  from ..operands import TensorHasInput, TensorOperandMixin
  from ..array_utils import get_array_module
label_desc: Use image node_id 3 for calling the TensorBaseSingleDimensionFFT obj's underlying member method code with example usage: obj.execute(cls, ctx, op) without return types