Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.05 KB | None | 0 0
  1. let leading_row = thetas
  2.             .iter()
  3.             .enumerate()
  4.             .filter_map(|(i, b)| {
  5.                 if let Some(sb) = b {
  6.                     Some((i, sb))
  7.                 } else {
  8.                     None
  9.                 }
  10.             })
  11.             .min_by(|(_, x), (_, y)| x.partial_cmp(y).unwrap())
  12.             .ok_or(SimplexError::NoSolutions)?
  13.             .0;
  14.  
  15.         println!("lead_row\n{:.2}", &leading_row);
  16.  
  17.         // update leading row
  18.         let lead_element = table_datas[(leading_row, leading_column + 1)];
  19.         azip!((row_elem in &mut table_datas.index_axis_mut(Axis(0), leading_row))
  20.             *row_elem = *row_elem / lead_element);
  21.  
  22.         let l_row = table_datas.index_axis(Axis(0), leading_row).to_owned();
  23.         let l_col = table_datas
  24.             .index_axis(Axis(1), leading_column + 1)
  25.             .to_owned();
  26.  
  27.         // update everything else
  28.         azip!((index (i, j), data in &mut table_datas)
  29.             *data = if i != leading_row { *data - l_row[j] * l_col[i] } else { *data });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement