text: // This file is part of Eigen, a lightweight C++ template library
  // for linear algebra.
  //
  // Copyright (C) 2019 Rasmus Munk Larsen <rmlarsen@google.com>
  //
  // This Source Code Form is subject to the terms of the Mozilla
  // Public License v. 2.0. If a copy of the MPL was not distributed
  // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
  
  #ifndef EIGEN_TYPE_CASTING_AVX512_H
  #define EIGEN_TYPE_CASTING_AVX512_H
  
  namespace Eigen {
  
  namespace internal {
  
  template <>
  struct type_casting_traits<half, float> {
    enum {
      VectorizedCast = 1,
      SrcCoeffRatio = 1,
      TgtCoeffRatio = 1
    };
  };
  
  template<> EIGEN_STRONG_INLINE Packet16f pcast<Packet16h, Packet16f>(const Packet16h& a) {
    return half2float(a);
  }
  
  template <>
  struct type_casting_traits<float, half> {
    enum {
      VectorizedCast = 1,
      SrcCoeffRatio = 1,
      TgtCoeffRatio = 1
    };
  };
  
  template<> EIGEN_STRONG_INLINE Packet16h pcast<Packet16f, Packet16h>(const Packet16f& a) {
    return float2half(a);
  }
  
  } // end namespace internal
  
  } // end namespace Eigen
  
  #endif // EIGEN_TYPE_CASTING_AVX512_H
  