docs: @Override
      public void ger(char order, double alpha, INDArray X, INDArray Y, INDArray A) {
          if (Nd4j.getExecutioner().getProfilingMode() == OpExecutioner.ProfilingMode.ALL)
              OpProfiler.getInstance().processBlasCall(false, A, X, Y);
  
          // FIXME: int cast
  
          if (X.data().dataType() == DataType.DOUBLE) {
              DefaultOpExecutioner.validateDataType(DataType.DOUBLE, A, X, Y);
              dger(order, (int) A.rows(), (int) A.columns(), alpha, X, X.stride(-1), Y, Y.stride(-1), A, (int) A.size(0));
          } else {
              DefaultOpExecutioner.validateDataType(DataType.FLOAT, A, X, Y);
              sger(order, (int) A.rows(), (int) A.columns(), (float) alpha, X, X.stride(-1), Y, Y.stride(-1), A, (int) A.size(0));
          }
  
          OpExecutionerUtil.checkForAny(A);
      }