Skip to content

Commit 8c63bc7

Browse files
committed
Use vec_uninit2 in eigh.rs
1 parent e6d03a5 commit 8c63bc7

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

lax/src/eigh.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@ macro_rules! impl_eigh {
4242
assert_eq!(layout.len(), layout.lda());
4343
let n = layout.len();
4444
let jobz = if calc_v { EigenVectorFlag::Calc } else { EigenVectorFlag::Not };
45-
let mut eigs = unsafe { vec_uninit(n as usize) };
45+
let mut eigs: Vec<MaybeUninit<Self::Real>> = unsafe { vec_uninit2(n as usize) };
4646

4747
$(
48-
let mut $rwork_ident: Vec<Self::Real> = unsafe { vec_uninit(3 * n as usize - 2 as usize) };
48+
let mut $rwork_ident: Vec<MaybeUninit<Self::Real>> = unsafe { vec_uninit2(3 * n as usize - 2 as usize) };
4949
)*
5050

5151
// calc work size
@@ -69,7 +69,7 @@ macro_rules! impl_eigh {
6969

7070
// actual ev
7171
let lwork = work_size[0].to_usize().unwrap();
72-
let mut work: Vec<Self> = unsafe { vec_uninit(lwork) };
72+
let mut work: Vec<MaybeUninit<Self>> = unsafe { vec_uninit2(lwork) };
7373
let lwork = lwork as i32;
7474
unsafe {
7575
$ev(
@@ -86,6 +86,8 @@ macro_rules! impl_eigh {
8686
);
8787
}
8888
info.as_lapack_result()?;
89+
90+
let eigs = unsafe { eigs.assume_init() };
8991
Ok(eigs)
9092
}
9193

@@ -99,10 +101,10 @@ macro_rules! impl_eigh {
99101
assert_eq!(layout.len(), layout.lda());
100102
let n = layout.len();
101103
let jobz = if calc_v { EigenVectorFlag::Calc } else { EigenVectorFlag::Not };
102-
let mut eigs = unsafe { vec_uninit(n as usize) };
104+
let mut eigs: Vec<MaybeUninit<Self::Real>> = unsafe { vec_uninit2(n as usize) };
103105

104106
$(
105-
let mut $rwork_ident: Vec<Self::Real> = unsafe { vec_uninit(3 * n as usize - 2) };
107+
let mut $rwork_ident: Vec<MaybeUninit<Self::Real>> = unsafe { vec_uninit2(3 * n as usize - 2) };
106108
)*
107109

108110
// calc work size
@@ -129,7 +131,7 @@ macro_rules! impl_eigh {
129131

130132
// actual evg
131133
let lwork = work_size[0].to_usize().unwrap();
132-
let mut work: Vec<Self> = unsafe { vec_uninit(lwork) };
134+
let mut work: Vec<MaybeUninit<Self>> = unsafe { vec_uninit2(lwork) };
133135
let lwork = lwork as i32;
134136
unsafe {
135137
$evg(
@@ -149,6 +151,7 @@ macro_rules! impl_eigh {
149151
);
150152
}
151153
info.as_lapack_result()?;
154+
let eigs = unsafe { eigs.assume_init() };
152155
Ok(eigs)
153156
}
154157
}

0 commit comments

Comments
 (0)