code: public SDVariable scatterMax(String name, SDVariable ref, SDVariable indices, SDVariable updates) {
          validateInteger("scatterMax", "indices", indices);
          SDVariable ret = f().scatterMax(ref, indices, updates);
          return updateVariableNameAndReference(ret, name);
      }
docs: Scatter max operation.<br>
  If indices is rank 0 (a scalar), then out[index, ...] = max(updates[...], in[index,...])<br>
  If indices is rank 1 (a vector), then for each position i, out[indices[i], ...] = max(updates[i,...], in[indices[i],...])<br>
  If indices is rank 2+, then for each position (i,...,k), out[indices[i], ..., indices[k], ...] = max(updates[i, ..., k, ...], in[indices[i], ..., indices[k], ...]<br>
  Note that if multiple indices refer to the same location, the contributions from each is handled correctly.
  
  @param name    Name of the output variable
  @param ref     Initial/source variable
  @param indices Indices array
  @param updates Updates to add to the initial/source array
  @return The updated variable