eml_rand_mt19937ar.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. //
  2. // File: eml_rand_mt19937ar.cpp
  3. //
  4. // MATLAB Coder version : 5.2
  5. // C/C++ source code generated on : 04-Mar-2023 17:44:30
  6. //
  7. // Include Files
  8. #include "eml_rand_mt19937ar.h"
  9. // Function Definitions
  10. //
  11. // Arguments : unsigned int mt[625]
  12. // unsigned int u[2]
  13. // Return Type : void
  14. //
  15. namespace coder {
  16. void genrand_uint32_vector(unsigned int mt[625], unsigned int u[2])
  17. {
  18. for (int j{0}; j < 2; j++) {
  19. unsigned int mti;
  20. unsigned int y;
  21. mti = mt[624] + 1U;
  22. if (mti >= 625U) {
  23. int kk;
  24. for (kk = 0; kk < 227; kk++) {
  25. y = (mt[kk] & 2147483648U) | (mt[kk + 1] & 2147483647U);
  26. if ((y & 1U) == 0U) {
  27. y >>= 1U;
  28. } else {
  29. y = y >> 1U ^ 2567483615U;
  30. }
  31. mt[kk] = mt[kk + 397] ^ y;
  32. }
  33. for (kk = 0; kk < 396; kk++) {
  34. y = (mt[kk + 227] & 2147483648U) | (mt[kk + 228] & 2147483647U);
  35. if ((y & 1U) == 0U) {
  36. y >>= 1U;
  37. } else {
  38. y = y >> 1U ^ 2567483615U;
  39. }
  40. mt[kk + 227] = mt[kk] ^ y;
  41. }
  42. y = (mt[623] & 2147483648U) | (mt[0] & 2147483647U);
  43. if ((y & 1U) == 0U) {
  44. y >>= 1U;
  45. } else {
  46. y = y >> 1U ^ 2567483615U;
  47. }
  48. mt[623] = mt[396] ^ y;
  49. mti = 1U;
  50. }
  51. y = mt[static_cast<int>(mti) - 1];
  52. mt[624] = mti;
  53. y ^= y >> 11U;
  54. y ^= y << 7U & 2636928640U;
  55. y ^= y << 15U & 4022730752U;
  56. u[j] = y ^ y >> 18U;
  57. }
  58. }
  59. } // namespace coder
  60. //
  61. // File trailer for eml_rand_mt19937ar.cpp
  62. //
  63. // [EOF]
  64. //