Is this the right way to create a Hermitian matrix in C++?
/**
* Generate a hermitian matrix with random values.
* Source: http://ift.tt/1A9dCaT
*
* @param n : input, size of the matrix
* @param out_mat : output, a random hermitian matrix of size n*n
*/
void create_hermitian(uint n, float2* out_mat) {
std::default_random_engine generator((unsigned int)time(0));
generator.seed(std::random_device{}());
uniform_real_distribution<float> distribution(-1.0f,1.0f);
for (uint i = 0; i < n; i++) {
out_mat[i*n+i].x = distribution(generator);
out_mat[i*n+i].y = 0.0f;
}
for (uint i = 0; i < n-1; i++) {
for (uint j = i+1; j < n; j++) {
out_mat[i*n+j].x = out_mat[j*n+i].x = distribution(generator);
out_mat[i*n+j].y = distribution(generator);
out_mat[j*n+i].y = -out_mat[i*n+j].y;
}
}
}
It should work, but not sure if this is efficient.
Aucun commentaire:
Enregistrer un commentaire