@@ -2516,13 +2516,13 @@ fn test_split_re_im_view() {
25162516
25172517#[ test]
25182518fn 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) | {
25202520 i * j
25212521 } ) ;
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) | {
25232523 k
25242524 } ) ;
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) | {
25262526 Complex :: new ( a_re[ [ i, j, k] ] , a_im[ [ i, j, k] ] )
25272527 } ) ;
25282528 let Complex { re, im } = a. view ( ) . split_re_im ( ) ;
@@ -2540,3 +2540,34 @@ fn test_split_re_im_view_mut() {
25402540 assert_eq ! ( im. sum( ) , 0 ) ;
25412541 assert_eq ! ( a, eye_complex) ;
25422542}
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