30 #define Rnd64_A 6364136223846793005ULL
32 #define RndF_Mul 5.4210108624275222e-20f
33 #define RndD_Mul 5.4210108624275222e-20
41 static unsigned long long int
42 Rnd64_jump(
unsigned long long int n,
unsigned long long int seed ) {
43 unsigned long long int a_k, c_k, ran;
50 for (i = 0; n; n >>= 1, i++) {
52 ran = a_k * ran + c_k;
60 #if defined(PLASMA_HAVE_WEAK)
61 #pragma weak CORE_zplghe = PCORE_zplghe
62 #define CORE_zplghe PCORE_zplghe
65 int bigM,
int m0,
int n0,
unsigned long long int seed )
69 unsigned long long int ran, jump;
71 jump = m0 + n0 * bigM;
77 for (j = 0; j < n; j++) {
78 ran = Rnd64_jump(
NBELEM * jump, seed );
80 for (i = j; i < m; i++) {
89 tmp += (lda - i + j + 1);
93 for (j = 0; j < n; j++) {
95 A[j+j*lda] += bump - I*
cimag( A[j+j*lda] );
100 for (i=0; i<j; i++) {
101 A[lda*j+i] =
conj( A[lda*i+j] );
108 else if ( m0 > n0 ) {
109 for (j = 0; j < n; j++) {
110 ran = Rnd64_jump(
NBELEM * jump, seed );
112 for (i = 0; i < m; i++) {
128 else if ( m0 < n0 ) {
130 jump = n0 + m0 * bigM;
132 for (i = 0; i < m; i++) {
133 ran = Rnd64_jump(
NBELEM * jump, seed );
135 for (j = 0; j < n; j++) {
139 A[j*lda+i] -= I*(0.5f - ran *
RndF_Mul);
153 int bigM,
int m0,
int n0,
unsigned long long int seed )
157 sizeof(
double), &bump,
VALUE,
158 sizeof(
int), &m,
VALUE,
159 sizeof(
int), &n,
VALUE,
161 sizeof(
int), &lda,
VALUE,
162 sizeof(
int), &bigM,
VALUE,
163 sizeof(
int), &m0,
VALUE,
164 sizeof(
int), &n0,
VALUE,
165 sizeof(
unsigned long long int), &seed,
VALUE,
172 #if defined(PLASMA_HAVE_WEAK)
173 #pragma weak CORE_zplghe_quark = PCORE_zplghe_quark
174 #define CORE_zplghe_quark PCORE_zplghe_quark
186 unsigned long long int seed;
189 CORE_zplghe( bump, m, n, A, lda, bigM, m0, n0, seed );