Skip to content

Commit 2a6154f

Browse files
committed
Drop unsafe
1 parent 46b0dcd commit 2a6154f

File tree

1 file changed

+38
-38
lines changed

1 file changed

+38
-38
lines changed

lax/src/tridiagonal.rs

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,11 @@ impl<A: Scalar> IndexMut<[i32; 2]> for Tridiagonal<A> {
130130
pub trait Tridiagonal_: Scalar + Sized {
131131
/// Computes the LU factorization of a tridiagonal `m x n` matrix `a` using
132132
/// partial pivoting with row interchanges.
133-
unsafe fn lu_tridiagonal(a: Tridiagonal<Self>) -> Result<LUFactorizedTridiagonal<Self>>;
133+
fn lu_tridiagonal(a: Tridiagonal<Self>) -> Result<LUFactorizedTridiagonal<Self>>;
134134

135-
unsafe fn rcond_tridiagonal(lu: &LUFactorizedTridiagonal<Self>) -> Result<Self::Real>;
135+
fn rcond_tridiagonal(lu: &LUFactorizedTridiagonal<Self>) -> Result<Self::Real>;
136136

137-
unsafe fn solve_tridiagonal(
137+
fn solve_tridiagonal(
138138
lu: &LUFactorizedTridiagonal<Self>,
139139
bl: MatrixLayout,
140140
t: Transpose,
@@ -151,18 +151,14 @@ macro_rules! impl_tridiagonal {
151151
};
152152
(@body, $scalar:ty, $gttrf:path, $gtcon:path, $gttrs:path, $($iwork:ident)*) => {
153153
impl Tridiagonal_ for $scalar {
154-
unsafe fn lu_tridiagonal(
155-
mut a: Tridiagonal<Self>,
156-
) -> Result<LUFactorizedTridiagonal<Self>> {
154+
fn lu_tridiagonal(mut a: Tridiagonal<Self>) -> Result<LUFactorizedTridiagonal<Self>> {
157155
let (n, _) = a.l.size();
158156
let mut du2 = vec![Zero::zero(); (n - 2) as usize];
159157
let mut ipiv = vec![0; n as usize];
160158
// We have to calc one-norm before LU factorization
161159
let a_opnorm_one = a.opnorm_one();
162160
let mut info = 0;
163-
$gttrf(
164-
n, &mut a.dl, &mut a.d, &mut a.du, &mut du2, &mut ipiv, &mut info,
165-
);
161+
unsafe { $gttrf(n, &mut a.dl, &mut a.d, &mut a.du, &mut du2, &mut ipiv, &mut info,) };
166162
info.as_lapack_result()?;
167163
Ok(LUFactorizedTridiagonal {
168164
a,
@@ -172,7 +168,7 @@ macro_rules! impl_tridiagonal {
172168
})
173169
}
174170

175-
unsafe fn rcond_tridiagonal(lu: &LUFactorizedTridiagonal<Self>) -> Result<Self::Real> {
171+
fn rcond_tridiagonal(lu: &LUFactorizedTridiagonal<Self>) -> Result<Self::Real> {
176172
let (n, _) = lu.a.l.size();
177173
let ipiv = &lu.ipiv;
178174
let mut work = vec![Self::zero(); 2 * n as usize];
@@ -181,25 +177,27 @@ macro_rules! impl_tridiagonal {
181177
)*
182178
let mut rcond = Self::Real::zero();
183179
let mut info = 0;
184-
$gtcon(
185-
NormType::One as u8,
186-
n,
187-
&lu.a.dl,
188-
&lu.a.d,
189-
&lu.a.du,
190-
&lu.du2,
191-
ipiv,
192-
lu.a_opnorm_one,
193-
&mut rcond,
194-
&mut work,
195-
$(&mut $iwork,)*
196-
&mut info,
197-
);
180+
unsafe {
181+
$gtcon(
182+
NormType::One as u8,
183+
n,
184+
&lu.a.dl,
185+
&lu.a.d,
186+
&lu.a.du,
187+
&lu.du2,
188+
ipiv,
189+
lu.a_opnorm_one,
190+
&mut rcond,
191+
&mut work,
192+
$(&mut $iwork,)*
193+
&mut info,
194+
);
195+
}
198196
info.as_lapack_result()?;
199197
Ok(rcond)
200198
}
201199

202-
unsafe fn solve_tridiagonal(
200+
fn solve_tridiagonal(
203201
lu: &LUFactorizedTridiagonal<Self>,
204202
b_layout: MatrixLayout,
205203
t: Transpose,
@@ -218,19 +216,21 @@ macro_rules! impl_tridiagonal {
218216
};
219217
let (ldb, nrhs) = b_layout.size();
220218
let mut info = 0;
221-
$gttrs(
222-
t as u8,
223-
n,
224-
nrhs,
225-
&lu.a.dl,
226-
&lu.a.d,
227-
&lu.a.du,
228-
&lu.du2,
229-
ipiv,
230-
b_t.as_mut().map(|v| v.as_mut_slice()).unwrap_or(b),
231-
ldb,
232-
&mut info,
233-
);
219+
unsafe {
220+
$gttrs(
221+
t as u8,
222+
n,
223+
nrhs,
224+
&lu.a.dl,
225+
&lu.a.d,
226+
&lu.a.du,
227+
&lu.du2,
228+
ipiv,
229+
b_t.as_mut().map(|v| v.as_mut_slice()).unwrap_or(b),
230+
ldb,
231+
&mut info,
232+
);
233+
}
234234
info.as_lapack_result()?;
235235
if let Some(b_t) = b_t {
236236
transpose(b_layout, &b_t, b);

0 commit comments

Comments
 (0)