code: def c_support_code(self):
      return "\n".join(
          """
          void cpu_rng_mrg_uniform_%(dtype)s(PyArrayObject* o_sample, PyArrayObject* o_rstate,
                                             npy_int64 n_elements, int n_streams) {
              const npy_int32 i0 = 0;
              const npy_int32 i7 = 7;
              const npy_int32 i9 = 9;
              const npy_int32 i15 = 15;
              const npy_int32 i16 = 16;
              const npy_int32 i22 = 22;
              const npy_int32 i24 = 24;
  
              const npy_int32 M1 = 2147483647;      //2^31 - 1
              const npy_int32 M2 = 2147462579;      //2^31 - 21069
              const npy_int32 MASK12 = 511;       //2^9 - 1
              const npy_int32 MASK13 = 16777215;  //2^24 - 1
              const npy_int32 MASK2 = 65535;      //2^16 - 1
              const npy_int32 MULT2 = 21069;
  
              %(dtype)s* sample_data = (%(dtype)s *) PyArray_DATA(o_sample);
              npy_int32* state_data = (npy_int32 *) PyArray_DATA(o_rstate);
              for (int i = 0; i < n_elements; ++i)
              {
                  npy_int32 * state_data_i = state_data + (i%%n_streams)*6;
                  npy_int32 y1, y2, x11, x12, x13, x21, x22, x23;
  
                  x11 = state_data_i[0];
                  x12 = state_data_i[1];
                  x13 = state_data_i[2];
                  x21 = state_data_i[3];
                  x22 = state_data_i[4];
                  x23 = state_data_i[5];
  
                  y1 = ((x12 & MASK12) << i22) + (x12 >> i9) + ((x13 & MASK13) << i7) + (x13 >> i24);
                  if ((y1 < 0 || y1 >= M1))     //must also check overflow
                      y1 -= M1;
                  y1 += x13;
                  if ((y1 < 0 or y1 >= M1))
                      y1 -= M1;
                  x13 = x12;
                  x12 = x11;
                  x11 = y1;
  
                  y1 = ((x21 & MASK2) << i15) + (MULT2 * (x21 >> i16));
                  if (y1 < 0 || y1 >= M2)
                      y1 -= M2;
                  y2 = ((x23 & MASK2) << i15) + (MULT2 * (x23 >> i16));
                  if (y2 < 0 || y2 >= M2)
                      y2 -= M2;
                  y2 += x23;
                  if (y2 < 0 || y2 >= M2)
                      y2 -= M2;
                  y2 += y1;
                  if (y2 < 0 or y2 >= M2)
                      y2 -= M2;
  
                  x23 = x22;
                  x22 = x21;
                  x21 = y2;
  
                  if (x11 <= x21) {
                      assert((x11 - x21 + M1) <= M1);
                      sample_data[i] = (x11 - x21 + M1) * %(NORM)s;
                  }
                  else
                  {
                      assert(x11 - x21 <= M1);
                      sample_data[i] = (x11 - x21) * %(NORM)s;
                  }
  
                  state_data_i[0]= x11;
                  state_data_i[1]= x12;
                  state_data_i[2]= x13;
                  state_data_i[3]= x21;
                  state_data_i[4]= x22;
                  state_data_i[5]= x23;
              }
          }
          """
          % dict(dtype=dtype, NORM=NORM)
          for dtype, NORM in (
              ("npy_float32", "4.6566126e-10f"),
              ("npy_float64", "4.656612873077392578125e-10"),
          )
      )
  
imports: from __future__ import absolute_import, print_function, division
  import warnings
  import numpy
  from six import integer_types, string_types
  from six.moves import xrange
  import theano
  from theano import Op, Apply, shared, config, Variable
  from theano import gradient, function
  from theano.gradient import undefined_grad
  from theano import tensor
  from theano.tensor import TensorType, as_tensor_variable, get_vector_length, cast, opt, scal
  from theano.compile import optdb
  from theano.gof import local_optimizer, ParamsType
  from theano.scalar import bool, int32
  from .None import multinomial
label_desc: Use image node_id 4 for calling the mrg_uniform obj's underlying member method code with example usage: obj.c_support_code() and returns: str