tenferro_internal_ad_surface/core/dynamic/
results.rs

1use crate::Tensor;
2use tenferro_internal_ad_linalg::{
3    DynEigValues, DynEigenValues, DynLuValues, DynQrValues, DynSlogdetValues, DynSvdValues,
4};
5
6#[derive(Debug)]
7pub struct QrResult {
8    pub q: Tensor,
9    pub r: Tensor,
10}
11
12#[derive(Debug)]
13pub struct LstsqResult {
14    pub solution: Tensor,
15    pub residuals: Tensor,
16    pub rank: Vec<usize>,
17    pub singular_values: Tensor,
18}
19
20#[derive(Debug)]
21pub struct LuResult {
22    pub p: Tensor,
23    pub l: Tensor,
24    pub u: Tensor,
25}
26
27#[derive(Debug)]
28pub struct EigResult {
29    pub values: Tensor,
30    pub vectors: Tensor,
31}
32
33#[derive(Debug)]
34pub struct EighResult {
35    pub values: Tensor,
36    pub vectors: Tensor,
37}
38
39#[derive(Debug)]
40pub struct SvdResult {
41    pub u: Tensor,
42    pub s: Tensor,
43    pub vt: Tensor,
44}
45
46#[derive(Debug)]
47pub struct SlogdetResult {
48    pub sign: Tensor,
49    pub logabsdet: Tensor,
50}
51
52impl From<DynQrValues> for QrResult {
53    fn from(value: DynQrValues) -> Self {
54        Self {
55            q: Tensor::from_value(value.q),
56            r: Tensor::from_value(value.r),
57        }
58    }
59}
60
61impl From<DynLuValues> for LuResult {
62    fn from(value: DynLuValues) -> Self {
63        Self {
64            p: Tensor::from_value(value.p),
65            l: Tensor::from_value(value.l),
66            u: Tensor::from_value(value.u),
67        }
68    }
69}
70
71impl From<DynEigValues> for EigResult {
72    fn from(value: DynEigValues) -> Self {
73        Self {
74            values: Tensor::from_value(value.values),
75            vectors: Tensor::from_value(value.vectors),
76        }
77    }
78}
79
80impl From<DynEigenValues> for EighResult {
81    fn from(value: DynEigenValues) -> Self {
82        Self {
83            values: Tensor::from_value(value.values),
84            vectors: Tensor::from_value(value.vectors),
85        }
86    }
87}
88
89impl From<DynSvdValues> for SvdResult {
90    fn from(value: DynSvdValues) -> Self {
91        Self {
92            u: Tensor::from_value(value.u),
93            s: Tensor::from_value(value.s),
94            vt: Tensor::from_value(value.vt),
95        }
96    }
97}
98
99impl From<DynSlogdetValues> for SlogdetResult {
100    fn from(value: DynSlogdetValues) -> Self {
101        Self {
102            sign: Tensor::from_value(value.sign),
103            logabsdet: Tensor::from_value(value.logabsdet),
104        }
105    }
106}