| 397 |
} |
} |
| 398 |
|
|
| 399 |
template<class T> |
template<class T> |
| 400 |
void putBuergerReducedMonoclinicB( |
bool putBuergerReducedMonoclinicB( |
| 401 |
const BravaisType& monoclinic_b_type, |
const BravaisType& monoclinic_b_type, |
| 402 |
SymMat<T>& S_red, NRMat<Int4>& trans_mat2) |
SymMat<T>& S_red, NRMat<Int4>& trans_mat2) |
| 403 |
{ |
{ |
| 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 ) ); |
if( S_red( ibase_axis, ibase_axis ) < zerro ) return false; |
| 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 Int8 n = iceil( S_red( ibase_axis, ir ) / S_red( ibase_axis, ibase_axis ) ); |
const Int8 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 ) ); |
if( S_red( ir, ir ) < zerro ) return false; |
| 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++) |
| 467 |
} |
} |
| 468 |
} |
} |
| 469 |
while( S_red( ir, ir ) < S_red( ibase_axis, ir ) || S_red( ibase_axis, ibase_axis ) < S_red( ibase_axis, ir ) * 2 ); |
while( S_red( ir, ir ) < S_red( ibase_axis, ir ) || S_red( ibase_axis, ibase_axis ) < S_red( ibase_axis, ir ) * 2 ); |
| 470 |
|
|
| 471 |
|
return true; |
| 472 |
} |
} |
| 473 |
|
|
| 474 |
|
|