spop_htrans_meat.hpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // Copyright 2008-2016 Conrad Sanderson (http://conradsanderson.id.au)
  2. // Copyright 2008-2016 National ICT Australia (NICTA)
  3. //
  4. // Licensed under the Apache License, Version 2.0 (the "License");
  5. // you may not use this file except in compliance with the License.
  6. // You may obtain a copy of the License at
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. // ------------------------------------------------------------------------
  15. //! \addtogroup spop_htrans
  16. //! @{
  17. template<typename T1>
  18. inline
  19. void
  20. spop_htrans::apply(SpMat<typename T1::elem_type>& out, const SpOp<T1,spop_htrans>& in, const typename arma_not_cx<typename T1::elem_type>::result* junk)
  21. {
  22. arma_extra_debug_sigprint();
  23. arma_ignore(junk);
  24. spop_strans::apply(out, in);
  25. }
  26. template<typename T1>
  27. inline
  28. void
  29. spop_htrans::apply(SpMat<typename T1::elem_type>& out, const SpOp<T1,spop_htrans>& in, const typename arma_cx_only<typename T1::elem_type>::result* junk)
  30. {
  31. arma_extra_debug_sigprint();
  32. arma_ignore(junk);
  33. typedef typename T1::elem_type eT;
  34. spop_strans::apply(out, in);
  35. const uword N = out.n_nonzero;
  36. for(uword i=0; i<N; ++i)
  37. {
  38. eT& val = access::rw(out.values[i]);
  39. val = eop_aux::conj(val);
  40. }
  41. }
  42. //! @}