1
+ use std:: ops:: SubAssign ;
2
+
1
3
use crate :: {
2
4
util:: {
3
5
self ,
@@ -6,7 +8,7 @@ use crate::{
6
8
} ,
7
9
DataCache , Error , Flag ,
8
10
} ;
9
- use faer:: { prelude :: SolverCore , Mat } ;
11
+ use faer:: { linalg :: solvers :: DenseSolveCore , Mat } ;
10
12
11
13
/// Specific arguments to sct, broken into a struct to make the function
12
14
/// signature more readable.
@@ -422,7 +424,7 @@ pub fn sct(
422
424
let mut dh_vector = Vec :: with_capacity ( box_size - 1 ) ;
423
425
for j in 0 ..box_size {
424
426
if i != j {
425
- dh_vector. push ( disth. read ( i, j) ) ;
427
+ dh_vector. push ( disth. get ( i, j) . to_owned ( ) ) ;
426
428
}
427
429
}
428
430
compute_quantile ( 0.10 , & dh_vector)
@@ -434,8 +436,8 @@ pub fn sct(
434
436
. max ( dh. into_iter ( ) . sum :: < f32 > ( ) / box_size as f32 ) ;
435
437
436
438
let mut s: Mat < f32 > = Mat :: from_fn ( box_size, box_size, |i, j| {
437
- let value = ( -0.5 * ( disth. read ( i, j) / dh_mean) . powi ( 2 )
438
- - 0.5 * ( distz. read ( i, j) / args. vertical_scale ) . powi ( 2 ) )
439
+ let value = ( -0.5 * ( disth. get ( i, j) / dh_mean) . powi ( 2 )
440
+ - 0.5 * ( distz. get ( i, j) / args. vertical_scale ) . powi ( 2 ) )
439
441
. exp ( ) ;
440
442
// weight the diagonal?? (0.5 default)
441
443
if i == j {
@@ -459,18 +461,19 @@ pub fn sct(
459
461
460
462
// unweight the diagonal
461
463
for i in 0 ..box_size {
462
- s. write ( i, i, s. read ( i, i) - eps2_box. index ( i) )
464
+ let elem = s. get_mut ( i, i) ;
465
+ elem. sub_assign ( eps2_box. index ( i) ) ;
463
466
}
464
467
465
468
let s_inv_d: Vec < f32 > = ( 0 ..box_size)
466
- . map ( |i| ( 0 ..box_size) . map ( |j| s_inv. read ( i, j) * d[ j] ) . sum ( ) )
469
+ . map ( |i| ( 0 ..box_size) . map ( |j| s_inv. get ( i, j) * d[ j] ) . sum ( ) )
467
470
. collect ( ) ;
468
471
469
472
let ares_temp: Vec < f32 > = ( 0 ..box_size)
470
- . map ( |i| ( 0 ..box_size) . map ( |j| s. read ( i, j) * s_inv_d[ j] ) . sum ( ) )
473
+ . map ( |i| ( 0 ..box_size) . map ( |j| s. get ( i, j) * s_inv_d[ j] ) . sum ( ) )
471
474
. collect ( ) ;
472
475
473
- let z_inv: Vec < f32 > = ( 0 ..box_size) . map ( |i| 1. / s_inv. read ( i, i) ) . collect ( ) ;
476
+ let z_inv: Vec < f32 > = ( 0 ..box_size) . map ( |i| 1. / s_inv. get ( i, i) ) . collect ( ) ;
474
477
475
478
let ares: Vec < f32 > = ( 0 ..box_size) . map ( |i| ares_temp[ i] - d[ i] ) . collect ( ) ;
476
479
0 commit comments