79      size_t  i, row, col, 
root;
 
   95      P.resize(this->
size());
 
   99      for (root = 0; 
root != this->
size(); ++root) {
 
  104        for (row = 
root; ++row != this->
size(); ) {
 
  105          if (fabs((*
this)(row, 
root)) > fabs(value)) {
 
  106            value = (*this)(row, 
root);
 
  116          this->
rswap(root, pivot);
 
  121        for (row = 
root + 1; row + 4 <= this->
size(); row += 4) {            
 
  123          p0 = (*this)[row + 0]  +  
root;
 
  124          p1 = (*this)[row + 1]  +  
root;
 
  125          p2 = (*this)[row + 2]  +  
root;
 
  126          p3 = (*this)[row + 3]  +  
root;
 
  128          v0 = (*p0++ /= value);
 
  129          v1 = (*
p1++ /= value);
 
  130          v2 = (*p2++ /= value);
 
  131          v3 = (*p3++ /= value);
 
  135          for (i = 
root + 1; i + 4 <= this->
size(); i += 4, p0 += 4, 
p1 += 4, p2 += 4, p3 += 4, c0 += 4) {
 
  136            p0[0] -= v0 * c0[0];  p0[1] -= v0 * c0[1];  p0[2] -= v0 * c0[2];  p0[3] -= v0 * c0[3];
 
  137            p1[0] -= v1 * c0[0];  
p1[1] -= v1 * c0[1];  
p1[2] -= v1 * c0[2];  
p1[3] -= v1 * c0[3];
 
  138            p2[0] -= v2 * c0[0];  p2[1] -= v2 * c0[1];  p2[2] -= v2 * c0[2];  p2[3] -= v2 * c0[3];
 
  139            p3[0] -= v3 * c0[0];  p3[1] -= v3 * c0[1];  p3[2] -= v3 * c0[2];  p3[3] -= v3 * c0[3];
 
  142          for ( ; i != this->
size(); ++i, ++p0, ++
p1, ++p2, ++p3, ++c0) {
 
  150        for ( ; row != this->
size(); ++row) {                                
 
  152          p0 = (*this)[row + 0]  +  
root;
 
  154          v0 = (*p0++ /= value);
 
  158          for (i = 
root + 1; i + 4 <= this->
size(); i += 4, p0 += 4, c0 += 4) {
 
  159            *p0 -= v0 * c0[0];  p0[1] -= v0 * c0[1];  p0[2] -= v0 * c0[2];  p0[3] -= v0 * c0[3];
 
  162          for ( ; i != this->
size(); ++i, ++p0, ++c0) {
 
  173      for (i = 0; i != this->
size(); ++i) {
 
  182      for ( ; col + 4 <= this->
size(); col += 4) {
 
  184        for (row = 0; row != this->
size(); ++row) {
 
  203          for (i = 0, c0 = (*
this)[row]; i != row; ++c0, ++p0, ++
p1, ++p2, ++p3, ++i) {
 
  210          A[col + 0][row] = v0;
 
  211          A[col + 1][row] = v1;
 
  212          A[col + 2][row] = v2;
 
  213          A[col + 3][row] = v3;
 
  217      for ( ; col != this->
size(); ++col) {
 
  219        for (row = 0; row != this->
size(); ++row) {
 
  229          for (i = 0, c0 = (*
this)[row] + i; i != row; ++c0, ++p0, ++i) {
 
  241      for ( ; col + 4 <= this->
size(); col += 4) {
 
  243        for (
int row = this->
size() - 1; row >= 0; --row) {
 
  245          p0 = A[col + 0] + row;
 
  246          p1 = A[col + 1] + row;
 
  247          p2 = A[col + 2] + row;
 
  248          p3 = A[col + 3] + row;
 
  260          for (i = row + 1, c0 = (*
this)[row] + i; i != this->
size(); ++c0, ++p0, ++
p1, ++p2, ++p3, ++i) {
 
  267          w0 = 1.0 / (*this)[row][row];
 
  269          A[col + 0][row] = v0 * w0;
 
  270          A[col + 1][row] = v1 * w0;
 
  271          A[col + 2][row] = v2 * w0;
 
  272          A[col + 3][row] = v3 * w0;
 
  276      for ( ; col != this->
size(); ++col) {
 
  278        for (
int row = this->
size() - 1; row >= 0; --row) {
 
  286          for (i = row + 1, c0 = (*
this)[row] + i; i != this->
size(); ++c0, ++p0, ++i) {
 
  290          w0 = 1.0 / (*this)[row][row];
 
  292          A[col][row] = v0 * w0;
 
 
  326      P.resize(this->
size());
 
  330      for (root = 0; 
root != this->
size(); ++root) {
 
  335        for (row = 
root; ++row != this->
size(); ) {
 
  336          if (fabs((*
this)(row, 
root)) > fabs(value)) {
 
  337            value = (*this)(row, 
root);
 
  347          this->
rswap(root, pivot);
 
  352        for (row = 
root + 1; row + 4 <= this->
size(); row += 4) {            
 
  354          p0 = (*this)[row + 0]  +  
root;
 
  355          p1 = (*this)[row + 1]  +  
root;
 
  356          p2 = (*this)[row + 2]  +  
root;
 
  357          p3 = (*this)[row + 3]  +  
root;
 
  359          v0 = (*p0++ /= value);
 
  360          v1 = (*
p1++ /= value);
 
  361          v2 = (*p2++ /= value);
 
  362          v3 = (*p3++ /= value);
 
  366          for (i = 
root + 1; i + 4 <= this->
size(); i += 4, p0 += 4, 
p1 += 4, p2 += 4, p3 += 4, c0 += 4) {
 
  367            p0[0] -= v0 * c0[0];  p0[1] -= v0 * c0[1];  p0[2] -= v0 * c0[2];  p0[3] -= v0 * c0[3];
 
  368            p1[0] -= v1 * c0[0];  
p1[1] -= v1 * c0[1];  
p1[2] -= v1 * c0[2];  
p1[3] -= v1 * c0[3];
 
  369            p2[0] -= v2 * c0[0];  p2[1] -= v2 * c0[1];  p2[2] -= v2 * c0[2];  p2[3] -= v2 * c0[3];
 
  370            p3[0] -= v3 * c0[0];  p3[1] -= v3 * c0[1];  p3[2] -= v3 * c0[2];  p3[3] -= v3 * c0[3];
 
  373          for ( ; i != this->
size(); ++i, ++p0, ++
p1, ++p2, ++p3, ++c0) {
 
  381        for ( ; row != this->
size(); ++row) {                                
 
  383          p0 = (*this)[row + 0]  +  
root;
 
  385          v0 = (*p0++ /= value);
 
  389          for (i = 
root + 1; i + 4 <= this->
size(); i += 4, p0 += 4, c0 += 4) {
 
  390            *p0 -= v0 * c0[0];  p0[1] -= v0 * c0[1];  p0[2] -= v0 * c0[2];  p0[3] -= v0 * c0[3];
 
  393          for ( ; i != this->
size(); ++i, ++p0, ++c0) {
 
  401      for (row = 0; row != this->
size(); ++row) {
 
  407        for (i = 0, c0 = (*
this)[row] + i; i != row; ++c0, ++i) {
 
  416      for (
int row = this->
size() - 1; row >= 0; --row) {
 
  420        for (i = row + 1, c0 = (*
this)[row] + i; i < this->
size(); ++c0, ++i) {
 
  424        u[row] = v0 / (*this)[row][row];