1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//! Module with [parameter objects] for both safe and unsafe implementations of [elementary row operations]
//!
//! [elementary row operations]: https://www.math.ucdavis.edu/~linear/old/notes3.pdf
//! [parameter objects]: https://en.wikipedia.org/wiki/Parameter_object
/// The trait whose implementors represent [elementary row operations][ero] acting on a given structure
/// (for example, on a matrix).
///
/// [Functionally defined], its implementers are [parameter objects] for
/// [`MatrixReprOfLinSys::perform_elem_row_op`][`crate::MatrixReprOfLinSys::perform_elem_row_op`].
///
/// # Generic arguments
///
/// `T` - the type on which the [elementary row operations][ero] act.
///
/// # Notes
///
/// The library provides implementations of the trait parameterization over T =
/// [`MatrixReprOfLinSys`][`crate::MatrixReprOfLinSys`]. You may want to implement it
/// for your own type if you want to, for example, output intermediate results in the chain of
/// transformations.
///
/// [ero]: https://www.math.ucdavis.edu/~linear/old/notes3.pdf
/// [parameter objects]: http://principles-wiki.net/patterns:parameter_object
/// [Functionally defined]: https://www.ucfmapper.com/education/various-types-definitions/#:~:text=Functional%20definitions