Skip to content

Commit de42549

Browse files
committed
WIP: EigWorkImpl for c32 and f32
1 parent 60946d1 commit de42549

File tree

1 file changed

+12
-18
lines changed

1 file changed

+12
-18
lines changed

Diff for: lax/src/eig.rs

+12-18
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,11 @@ impl EigWorkImpl for EigWork<c64> {
9696
} else {
9797
(JobEv::None, JobEv::None)
9898
};
99-
let mut eigs: Vec<MaybeUninit<c64>> = vec_uninit(n as usize);
100-
let mut rwork: Vec<MaybeUninit<f64>> = vec_uninit(2 * n as usize);
99+
let mut eigs = vec_uninit(n as usize);
100+
let mut rwork = vec_uninit(2 * n as usize);
101101

102-
let mut vc_l: Option<Vec<MaybeUninit<c64>>> = jobvl.then(|| vec_uninit((n * n) as usize));
103-
let mut vc_r: Option<Vec<MaybeUninit<c64>>> = jobvr.then(|| vec_uninit((n * n) as usize));
102+
let mut vc_l = jobvl.then(|| vec_uninit((n * n) as usize));
103+
let mut vc_r = jobvr.then(|| vec_uninit((n * n) as usize));
104104

105105
// calc work size
106106
let mut info = 0;
@@ -165,9 +165,6 @@ impl EigWorkImpl for EigWork<c64> {
165165
)
166166
};
167167
info.as_lapack_result()?;
168-
169-
let eigs = unsafe { self.eigs.slice_assume_init_ref() };
170-
171168
// Hermite conjugate
172169
if let Some(vl) = self.vc_l.as_mut() {
173170
for value in vl {
@@ -176,7 +173,7 @@ impl EigWorkImpl for EigWork<c64> {
176173
}
177174
}
178175
Ok(EigRef {
179-
eigs,
176+
eigs: unsafe { self.eigs.slice_assume_init_ref() },
180177
vl: self
181178
.vc_l
182179
.as_ref()
@@ -210,8 +207,6 @@ impl EigWorkImpl for EigWork<c64> {
210207
)
211208
};
212209
info.as_lapack_result()?;
213-
let eigs = unsafe { self.eigs.assume_init() };
214-
215210
// Hermite conjugate
216211
if let Some(vl) = self.vc_l.as_mut() {
217212
for value in vl {
@@ -220,7 +215,7 @@ impl EigWorkImpl for EigWork<c64> {
220215
}
221216
}
222217
Ok(Eig {
223-
eigs,
218+
eigs: unsafe { self.eigs.assume_init() },
224219
vl: self.vc_l.map(|v| unsafe { v.assume_init() }),
225220
vr: self.vc_r.map(|v| unsafe { v.assume_init() }),
226221
})
@@ -240,13 +235,12 @@ impl EigWorkImpl for EigWork<f64> {
240235
} else {
241236
(JobEv::None, JobEv::None)
242237
};
243-
let mut eigs_re: Vec<MaybeUninit<f64>> = vec_uninit(n as usize);
244-
let mut eigs_im: Vec<MaybeUninit<f64>> = vec_uninit(n as usize);
245-
246-
let mut vr_l: Option<Vec<MaybeUninit<f64>>> = jobvl.then(|| vec_uninit((n * n) as usize));
247-
let mut vr_r: Option<Vec<MaybeUninit<f64>>> = jobvr.then(|| vec_uninit((n * n) as usize));
248-
let vc_l: Option<Vec<MaybeUninit<c64>>> = jobvl.then(|| vec_uninit((n * n) as usize));
249-
let vc_r: Option<Vec<MaybeUninit<c64>>> = jobvr.then(|| vec_uninit((n * n) as usize));
238+
let mut eigs_re = vec_uninit(n as usize);
239+
let mut eigs_im = vec_uninit(n as usize);
240+
let mut vr_l = jobvl.then(|| vec_uninit((n * n) as usize));
241+
let mut vr_r = jobvr.then(|| vec_uninit((n * n) as usize));
242+
let vc_l = jobvl.then(|| vec_uninit((n * n) as usize));
243+
let vc_r = jobvr.then(|| vec_uninit((n * n) as usize));
250244

251245
// calc work size
252246
let mut info = 0;

0 commit comments

Comments
 (0)