@@ -2516,13 +2516,13 @@ fn test_split_re_im_view() {
2516
2516
2517
2517
#[ test]
2518
2518
fn test_split_re_im_view_roundtrip ( ) {
2519
- let a_re = Array3 :: from_shape_fn ( ( 3 , 4 , 5 ) , |( i, j, _k) | {
2519
+ let a_re = Array3 :: from_shape_fn ( ( 3 , 1 , 5 ) , |( i, j, _k) | {
2520
2520
i * j
2521
2521
} ) ;
2522
- let a_im = Array3 :: from_shape_fn ( ( 3 , 4 , 5 ) , |( _i, _j, k) | {
2522
+ let a_im = Array3 :: from_shape_fn ( ( 3 , 1 , 5 ) , |( _i, _j, k) | {
2523
2523
k
2524
2524
} ) ;
2525
- let a = Array3 :: from_shape_fn ( ( 3 , 4 , 5 ) , |( i, j, k) | {
2525
+ let a = Array3 :: from_shape_fn ( ( 3 , 1 , 5 ) , |( i, j, k) | {
2526
2526
Complex :: new ( a_re[ [ i, j, k] ] , a_im[ [ i, j, k] ] )
2527
2527
} ) ;
2528
2528
let Complex { re, im } = a. view ( ) . split_re_im ( ) ;
@@ -2540,3 +2540,34 @@ fn test_split_re_im_view_mut() {
2540
2540
assert_eq ! ( im. sum( ) , 0 ) ;
2541
2541
assert_eq ! ( a, eye_complex) ;
2542
2542
}
2543
+
2544
+ #[ test]
2545
+ fn test_split_re_im_zerod ( ) {
2546
+ let mut a = Array0 :: from_elem ( ( ) , Complex :: new ( 42 , 32 ) ) ;
2547
+ let Complex { re, im } = a. view ( ) . split_re_im ( ) ;
2548
+ assert_eq ! ( re. get( ( ) ) , Some ( & 42 ) ) ;
2549
+ assert_eq ! ( im. get( ( ) ) , Some ( & 32 ) ) ;
2550
+ let cmplx = a. view_mut ( ) . split_re_im ( ) ;
2551
+ cmplx. re . assign_to ( cmplx. im ) ;
2552
+ assert_eq ! ( a. get( ( ) ) . unwrap( ) . im, 42 ) ;
2553
+ }
2554
+
2555
+ #[ test]
2556
+ fn test_split_re_im_permuted ( ) {
2557
+ let a = Array3 :: from_shape_fn ( ( 3 , 4 , 5 ) , |( i, j, k) | {
2558
+ Complex :: new ( i * k + j, k)
2559
+ } ) ;
2560
+ let permuted = a. view ( ) . permuted_axes ( [ 1 , 0 , 2 ] ) ;
2561
+ let Complex { re, im } = permuted. split_re_im ( ) ;
2562
+ assert_eq ! ( re. get( ( 3 , 2 , 4 ) ) . unwrap( ) , & 11 ) ;
2563
+ assert_eq ! ( im. get( ( 3 , 2 , 4 ) ) . unwrap( ) , & 4 ) ;
2564
+ }
2565
+
2566
+ #[ test]
2567
+ fn test_split_re_im_invert_axis ( ) {
2568
+ let mut a = Array :: from_shape_fn ( ( 2 , 3 , 2 ) , |( i, j, k) | Complex :: new ( i as f64 + j as f64 , i as f64 + k as f64 ) ) ;
2569
+ a. invert_axis ( Axis ( 1 ) ) ;
2570
+ let cmplx = a. view ( ) . split_re_im ( ) ;
2571
+ assert_eq ! ( cmplx. re, a. mapv( |z| z. re) ) ;
2572
+ assert_eq ! ( cmplx. im, a. mapv( |z| z. im) ) ;
2573
+ }
0 commit comments