dSFMT-params521.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #ifndef DSFMT_PARAMS521_H
  2. #define DSFMT_PARAMS521_H
  3. /* #define DSFMT_N 4 */
  4. /* #define DSFMT_MAXDEGREE 544 */
  5. #define DSFMT_POS1 3
  6. #define DSFMT_SL1 25
  7. #define DSFMT_MSK1 UINT64_C(0x000fbfefff77efff)
  8. #define DSFMT_MSK2 UINT64_C(0x000ffeebfbdfbfdf)
  9. #define DSFMT_MSK32_1 0x000fbfefU
  10. #define DSFMT_MSK32_2 0xff77efffU
  11. #define DSFMT_MSK32_3 0x000ffeebU
  12. #define DSFMT_MSK32_4 0xfbdfbfdfU
  13. #define DSFMT_FIX1 UINT64_C(0xcfb393d661638469)
  14. #define DSFMT_FIX2 UINT64_C(0xc166867883ae2adb)
  15. #define DSFMT_PCV1 UINT64_C(0xccaa588000000000)
  16. #define DSFMT_PCV2 UINT64_C(0x0000000000000001)
  17. #define DSFMT_IDSTR "dSFMT2-521:3-25:fbfefff77efff-ffeebfbdfbfdf"
  18. /* PARAMETERS FOR ALTIVEC */
  19. #if defined(__APPLE__) /* For OSX */
  20. #define ALTI_SL1 (vector unsigned char)(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
  21. #define ALTI_SL1_PERM \
  22. (vector unsigned char)(3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2)
  23. #define ALTI_SL1_MSK \
  24. (vector unsigned int)(0xffffffffU,0xfe000000U,0xffffffffU,0xfe000000U)
  25. #define ALTI_MSK (vector unsigned int)(DSFMT_MSK32_1, \
  26. DSFMT_MSK32_2, DSFMT_MSK32_3, DSFMT_MSK32_4)
  27. #else /* For OTHER OSs(Linux?) */
  28. #define ALTI_SL1 {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
  29. #define ALTI_SL1_PERM \
  30. {3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2}
  31. #define ALTI_SL1_MSK \
  32. {0xffffffffU,0xfe000000U,0xffffffffU,0xfe000000U}
  33. #define ALTI_MSK \
  34. {DSFMT_MSK32_1, DSFMT_MSK32_2, DSFMT_MSK32_3, DSFMT_MSK32_4}
  35. #endif
  36. #endif /* DSFMT_PARAMS521_H */