| 466 let im = DVector::from((0..9).map(|t| t as f64).collect::<Vec<_>>()); |
466 let im = DVector::from((0..9).map(|t| t as f64).collect::<Vec<_>>()); |
| 467 let v = DVector::from((0..18).map(|t| t as f64).collect::<Vec<_>>()); |
467 let v = DVector::from((0..18).map(|t| t as f64).collect::<Vec<_>>()); |
| 468 |
468 |
| 469 let grad = Grad::new_for(&im, 1.0, [3, 3], ForwardNeumann).unwrap(); |
469 let grad = Grad::new_for(&im, 1.0, [3, 3], ForwardNeumann).unwrap(); |
| 470 let a = grad.apply(&im).dot(&v); |
470 let a = grad.apply(&im).dot(&v); |
| 471 let b = grad.adjoint().apply(&v).dot(&im); |
471 let b = SimplyAdjointable::adjoint(&grad).apply(&v).dot(&im); |
| 472 assert_eq!(a, b); |
472 assert_eq!(a, b); |
| 473 |
473 |
| 474 let grad = Grad::new_for(&im, 1.0, [3, 3], ForwardDirichlet).unwrap(); |
474 let grad = Grad::new_for(&im, 1.0, [3, 3], ForwardDirichlet).unwrap(); |
| 475 let a = grad.apply(&im).dot(&v); |
475 let a = grad.apply(&im).dot(&v); |
| 476 let b = grad.adjoint().apply(&v).dot(&im); |
476 let b = SimplyAdjointable::adjoint(&grad).apply(&v).dot(&im); |
| 477 assert_eq!(a, b); |
477 assert_eq!(a, b); |
| 478 } |
478 } |
| 479 } |
479 } |