code: @Override
      public void gbmv(char order, char TransA, int KL, int KU, double alpha, INDArray A, INDArray X, double beta,
                      INDArray Y) {
          if (Nd4j.getExecutioner().getProfilingMode() == OpExecutioner.ProfilingMode.ALL)
              OpProfiler.getInstance().processBlasCall(false, A, X, Y);
  
          // FIXME: int cast
  
          if (A.data().dataType() == DataType.DOUBLE) {
              DefaultOpExecutioner.validateDataType(DataType.DOUBLE, A, X, Y);
              dgbmv(order, TransA, (int) A.rows(), (int) A.columns(), KL, KU, alpha, A, (int) A.size(0), X, X.stride(-1), beta, Y,
                              Y.stride(-1));
          } else {
              DefaultOpExecutioner.validateDataType(DataType.FLOAT, A, X, Y);
              sgbmv(order, TransA, (int) A.rows(), (int) A.columns(), KL, KU, (float) alpha, A, (int) A.size(0), X, X.stride(-1), (float) beta, Y, Y.stride(-1));
          }
  
          OpExecutionerUtil.checkForAny(Y);
      }
docs: gbmv computes a matrix-vector product using a general band matrix and performs one of the following matrix-vector operations:
  y := alpha*a*x + beta*y  for trans = 'N'or'n';
  y := alpha*a'*x + beta*y  for trans = 'T'or't';
  y := alpha*conjg(a')*x + beta*y  for trans = 'C'or'c'.
  Here a is an m-by-n band matrix with ku superdiagonals and kl subdiagonals, x and y are vectors, alpha and beta are scalars.
  
  @param order
  @param TransA
  @param KL
  @param KU
  @param alpha
  @param A
  @param X
  @param beta
  @param Y