nd4j-backends/nd4j-api-parent/nd4j-api/src/main/java/org/nd4j/linalg/factory/Broadcast.java
public static INDArray add(INDArray x, INDArray y, INDArray z, int... dimensions) {
        if(dimensions == null) {
            Preconditions.checkArgument(Arrays.equals(x.shape(),y.shape()),getFormattedShapeErrorMessageXy(x,y));
            Preconditions.checkArgument(Arrays.equals(x.shape(),z.shape()),getFormattedShapeErrorMessageXResult(x,z));
            return Nd4j.getExecutioner().execAndReturn(new OldAddOp(x,y,z));
        }

        return Nd4j.getExecutioner().execAndReturn(new BroadcastAddOp(x,y,z,dimensions));
    }
public static INDArray add(INDArray x, INDArray y, INDArray z, int... dimensions) {
        if(dimensions == null) {
            Preconditions.checkArgument(Arrays.equals(x.shape(),y.shape()),getFormattedShapeErrorMessageXy(x,y));
            Preconditions.checkArgument(Arrays.equals(x.shape(),z.shape()),getFormattedShapeErrorMessageXResult(x,z));
            return Nd4j.getExecutioner().execAndReturn(new OldAddOp(x,y,z));
        }

        return Nd4j.getExecutioner().execAndReturn(new BroadcastAddOp(x,y,z,dimensions));
    }
Broadcast add op. See: {@link BroadcastAddOp}