| 314 |
void putBuergerReducedMonoclinicP(const Int4& i, const Int4& j, |
void putBuergerReducedMonoclinicP(const Int4& i, const Int4& j, |
| 315 |
SymMat<T>& S_red, NRMat<Int4>& trans_mat2) |
SymMat<T>& S_red, NRMat<Int4>& trans_mat2) |
| 316 |
{ |
{ |
| 317 |
T zerro = 0; |
static const T zerro = 0; |
| 318 |
|
|
| 319 |
assert(S_red.size()==3); |
assert(S_red.size()==3); |
| 320 |
assert(trans_mat2.ncols()==3); |
assert(trans_mat2.ncols()==3); |
| 340 |
const Int8 m = iceil( S_red(i,j) / S_red(j,j) ); |
const Int8 m = iceil( S_red(i,j) / S_red(j,j) ); |
| 341 |
|
|
| 342 |
S_red(i,i) += ( S_red(j,j) * m - S_red(i,j) * 2 ) * m; |
S_red(i,i) += ( S_red(j,j) * m - S_red(i,j) * 2 ) * m; |
| 343 |
assert( !(S_red(i,i) < zerro) ); |
assert( zerro < S_red(i,i) ); |
| 344 |
S_red(i,j) = S_red(j,j) * m - S_red(i,j); |
S_red(i,j) = S_red(j,j) * m - S_red(i,j); |
| 345 |
|
|
| 346 |
for(Int4 l=0; l<irow; l++) |
for(Int4 l=0; l<irow; l++) |
| 362 |
const Int8 n = iceil( S_red(i,j) / S_red(i,i) ); |
const Int8 n = iceil( S_red(i,j) / S_red(i,i) ); |
| 363 |
|
|
| 364 |
S_red(j,j) += ( S_red(i,i) * n - S_red(i,j) * 2 ) * n; |
S_red(j,j) += ( S_red(i,i) * n - S_red(i,j) * 2 ) * n; |
| 365 |
assert( !( S_red(j,j) < zerro ) ); |
assert( zerro < S_red(j,j) ); |
| 366 |
S_red(i,j) = S_red(i,i) * n - S_red(i,j); |
S_red(i,j) = S_red(i,i) * n - S_red(i,j); |
| 367 |
|
|
| 368 |
for(Int4 l=0; l<irow; l++) |
for(Int4 l=0; l<irow; l++) |
| 405 |
const Int4 iabc_axis = monoclinic_b_type.enumABCaxis(); |
const Int4 iabc_axis = monoclinic_b_type.enumABCaxis(); |
| 406 |
const Int4 ir = put_complement_set3(iabc_axis, ibase_axis); |
const Int4 ir = put_complement_set3(iabc_axis, ibase_axis); |
| 407 |
|
|
| 408 |
T zerro = 0; |
static const T zerro = 0; |
| 409 |
|
|
| 410 |
assert(S_red.size()==3); |
assert(S_red.size()==3); |
| 411 |
assert(trans_mat2.nrows()==0 || trans_mat2.ncols()==3); |
assert(trans_mat2.nrows()==0 || trans_mat2.ncols()==3); |
| 431 |
const Int8 m2 = m1*2; |
const Int8 m2 = m1*2; |
| 432 |
|
|
| 433 |
S_red( ibase_axis, ibase_axis ) += ( S_red( ir, ir ) * m2 - S_red( ibase_axis, ir ) * 2 ) * m2; |
S_red( ibase_axis, ibase_axis ) += ( S_red( ir, ir ) * m2 - S_red( ibase_axis, ir ) * 2 ) * m2; |
| 434 |
assert( !( S_red( ibase_axis, ibase_axis ) < zerro ) ); |
assert( zerro < S_red( ibase_axis, ibase_axis ) ); |
| 435 |
S_red( ibase_axis, ir ) = S_red( ir, ir ) * m2 - S_red( ibase_axis, ir ); |
S_red( ibase_axis, ir ) = S_red( ir, ir ) * m2 - S_red( ibase_axis, ir ); |
| 436 |
|
|
| 437 |
for(Int4 l=0; l<irow; l++) |
for(Int4 l=0; l<irow; l++) |
| 453 |
const Int4 n = iceil( S_red( ibase_axis, ir ) / S_red( ibase_axis, ibase_axis ) ); |
const Int4 n = iceil( S_red( ibase_axis, ir ) / S_red( ibase_axis, ibase_axis ) ); |
| 454 |
|
|
| 455 |
S_red( ir, ir ) += ( S_red( ibase_axis, ibase_axis ) * n - S_red( ibase_axis, ir ) * 2 ) * n; |
S_red( ir, ir ) += ( S_red( ibase_axis, ibase_axis ) * n - S_red( ibase_axis, ir ) * 2 ) * n; |
| 456 |
assert( !( S_red( ir, ir ) < zerro ) ); |
assert( zerro < S_red( ir, ir ) ); |
| 457 |
S_red( ibase_axis, ir ) = S_red( ibase_axis, ibase_axis ) * n - S_red( ibase_axis, ir ); |
S_red( ibase_axis, ir ) = S_red( ibase_axis, ibase_axis ) * n - S_red( ibase_axis, ir ); |
| 458 |
|
|
| 459 |
for(Int4 l=0; l<irow; l++) |
for(Int4 l=0; l<irow; l++) |