Skip to content

Commit

Permalink
Add tests for as_real and constants
Browse files Browse the repository at this point in the history
  • Loading branch information
jfalcou committed Nov 8, 2023
1 parent 0ba83fa commit 2ba0e5a
Show file tree
Hide file tree
Showing 4 changed files with 159 additions and 105 deletions.
10 changes: 7 additions & 3 deletions include/kyosu/types/cayley_dickson.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -183,11 +183,15 @@ namespace kyosu
}

// TODO: Move to tag_invoke when EVE catch up on this front
template<typename Tag, eve::floating_scalar_value Type, unsigned int N>
KYOSU_FORCEINLINE constexpr auto tagged_dispatch(Tag const&, eve::as<cayley_dickson<Type,N>> const&) noexcept
template<typename Tag, concepts::cayley_dickson T>
KYOSU_FORCEINLINE constexpr auto tagged_dispatch(Tag const&, eve::as<T> const&) noexcept
{
eve::detail::callable_object<Tag> cst;
return cayley_dickson<Type,N>( cst(eve::as<Type>{}) );
auto val = cst( eve::as<as_real_type_t<T>>{} );
using val_t = std::remove_cvref_t<decltype(val)>;

if constexpr(!eve::floating_value<val_t>) return val;
else return as_cayley_dickson_n_t<eve::element_type_t<T>::static_size,val_t>(val);
}

template<typename Tag, typename T>
Expand Down
200 changes: 100 additions & 100 deletions test/unit/infra/as_cayley_dickinson.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,117 +8,117 @@
#include <kyosu/kyosu.hpp>
#include <test.hpp>

// TTS_CASE( "Check as_cayley_dickson_n<N,T> with scalar reals")
// {
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, std::int32_t > ), kyosu::complex<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, float > ), kyosu::complex<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, std::int64_t > ), kyosu::complex<double> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, double > ), kyosu::complex<double> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, std::int32_t > ), kyosu::quaternion<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, float > ), kyosu::quaternion<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, std::int64_t > ), kyosu::quaternion<double>);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, double > ), kyosu::quaternion<double>);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, std::int32_t > ), kyosu::octonion<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, float > ), kyosu::octonion<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, std::int64_t > ), kyosu::octonion<double> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, double > ), kyosu::octonion<double> );
// };
TTS_CASE( "Check as_cayley_dickson_n<N,T> with scalar reals")
{
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, std::int32_t > ), kyosu::complex_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, float > ), kyosu::complex_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, std::int64_t > ), kyosu::complex_t<double> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, double > ), kyosu::complex_t<double> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, std::int32_t > ), kyosu::quaternion_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, float > ), kyosu::quaternion_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, std::int64_t > ), kyosu::quaternion_t<double>);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, double > ), kyosu::quaternion_t<double>);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, std::int32_t > ), kyosu::octonion_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, float > ), kyosu::octonion_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, std::int64_t > ), kyosu::octonion_t<double> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, double > ), kyosu::octonion_t<double> );
};

// TTS_CASE( "Check as_cayley_dickson_n<N,T> with scalar non-reals")
// {
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, kyosu::complex<float> > ), kyosu::complex<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, kyosu::complex<double> > ), kyosu::complex<double> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, kyosu::complex<float> > ), kyosu::quaternion<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, kyosu::complex<double> > ), kyosu::quaternion<double>);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, kyosu::complex<float> > ), kyosu::octonion<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, kyosu::complex<double> > ), kyosu::octonion<double> );
TTS_CASE( "Check as_cayley_dickson_n<N,T> with scalar non-reals")
{
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, kyosu::complex_t<float> > ), kyosu::complex_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, kyosu::complex_t<double> > ), kyosu::complex_t<double> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, kyosu::complex_t<float> > ), kyosu::quaternion_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, kyosu::complex_t<double> > ), kyosu::quaternion_t<double>);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, kyosu::complex_t<float> > ), kyosu::octonion_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, kyosu::complex_t<double> > ), kyosu::octonion_t<double> );

// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, kyosu::quaternion<float> > ), kyosu::complex<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, kyosu::quaternion<double> > ), kyosu::complex<double> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, kyosu::quaternion<float> > ), kyosu::quaternion<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, kyosu::quaternion<double> > ), kyosu::quaternion<double>);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, kyosu::quaternion<float> > ), kyosu::octonion<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, kyosu::quaternion<double> > ), kyosu::octonion<double> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, kyosu::quaternion_t<float> > ), kyosu::complex_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, kyosu::quaternion_t<double> > ), kyosu::complex_t<double> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, kyosu::quaternion_t<float> > ), kyosu::quaternion_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, kyosu::quaternion_t<double> > ), kyosu::quaternion_t<double>);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, kyosu::quaternion_t<float> > ), kyosu::octonion_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, kyosu::quaternion_t<double> > ), kyosu::octonion_t<double> );

// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, kyosu::octonion<float> > ), kyosu::complex<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, kyosu::octonion<double> > ), kyosu::complex<double> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, kyosu::octonion<float> > ), kyosu::quaternion<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, kyosu::octonion<double> > ), kyosu::quaternion<double>);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, kyosu::octonion<float> > ), kyosu::octonion<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, kyosu::octonion<double> > ), kyosu::octonion<double> );
// };
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, kyosu::octonion_t<float> > ), kyosu::complex_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, kyosu::octonion_t<double> > ), kyosu::complex_t<double> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, kyosu::octonion_t<float> > ), kyosu::quaternion_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, kyosu::octonion_t<double> > ), kyosu::quaternion_t<double>);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, kyosu::octonion_t<float> > ), kyosu::octonion_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, kyosu::octonion_t<double> > ), kyosu::octonion_t<double> );
};

// TTS_CASE( "Check as_cayley_dickson_n<N,Ts...> with mixed scalar")
// {
// using kyosu::complex;
// using kyosu::quaternion;
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex<float> , complex<float>> ), complex<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex<float> , int > ), complex<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex<float> , std::int64_t > ), complex<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex<float> , float > ), complex<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex<float> , double > ), complex<float> );
TTS_CASE( "Check as_cayley_dickson_n<N,Ts...> with mixed scalar")
{
using kyosu::complex_t;
using kyosu::quaternion_t;
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex_t<float> , complex_t<float>> ), complex_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex_t<float> , int > ), complex_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex_t<float> , std::int64_t > ), complex_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex_t<float> , float > ), complex_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex_t<float> , double > ), complex_t<float> );

// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex<float> , complex<float>> ), complex<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, int , complex<float>> ), complex<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, std::int64_t , complex<float>> ), complex<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, float , complex<float>> ), complex<float> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, double , complex<float>> ), complex<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex_t<float> , complex_t<float>> ), complex_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, int , complex_t<float>> ), complex_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, std::int64_t , complex_t<float>> ), complex_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, float , complex_t<float>> ), complex_t<float> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, double , complex_t<float>> ), complex_t<float> );

// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex<double>, complex<double>>), complex<double> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex<double>, int > ), complex<double> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex<double>, std::int64_t > ), complex<double> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex<double>, float > ), complex<double> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex<double>, double > ), complex<double> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex_t<double>, complex_t<double>>), complex_t<double> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex_t<double>, int > ), complex_t<double> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex_t<double>, std::int64_t > ), complex_t<double> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex_t<double>, float > ), complex_t<double> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex_t<double>, double > ), complex_t<double> );

// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex<double>, complex<double>> ), complex<double> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, int , complex<double>> ), complex<double> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, std::int64_t , complex<double>> ), complex<double> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, float , complex<double>> ), complex<double> );
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, double , complex<double>> ), complex<double> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, complex_t<double>, complex_t<double>> ), complex_t<double> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, int , complex_t<double>> ), complex_t<double> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, std::int64_t , complex_t<double>> ), complex_t<double> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, float , complex_t<double>> ), complex_t<double> );
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, double , complex_t<double>> ), complex_t<double> );

// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, complex<double>, quaternion<double>> ), quaternion<double> );
// };
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, complex_t<double>, quaternion_t<double>> ), quaternion_t<double> );
};

// TTS_CASE( "Check as_cayley_dickson_n<N,T> on SIMD reals")
// {
// using eve::wide;
TTS_CASE( "Check as_cayley_dickson_n<N,T> on SIMD reals")
{
using eve::wide;

// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<std::int32_t >> ), wide<kyosu::complex<float> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<float >> ), wide<kyosu::complex<float> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<std::int64_t >> ), wide<kyosu::complex<double> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<double >> ), wide<kyosu::complex<double> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<std::int32_t >> ), wide<kyosu::quaternion<float> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<float >> ), wide<kyosu::quaternion<float> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<std::int64_t >> ), wide<kyosu::quaternion<double>>);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<double >> ), wide<kyosu::quaternion<double>>);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<std::int32_t >> ), wide<kyosu::octonion<float> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<float >> ), wide<kyosu::octonion<float> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<std::int64_t >> ), wide<kyosu::octonion<double> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<double >> ), wide<kyosu::octonion<double> >);
// };
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<std::int32_t >> ), wide<kyosu::complex_t<float> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<float >> ), wide<kyosu::complex_t<float> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<std::int64_t >> ), wide<kyosu::complex_t<double> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<double >> ), wide<kyosu::complex_t<double> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<std::int32_t >> ), wide<kyosu::quaternion_t<float> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<float >> ), wide<kyosu::quaternion_t<float> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<std::int64_t >> ), wide<kyosu::quaternion_t<double>>);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<double >> ), wide<kyosu::quaternion_t<double>>);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<std::int32_t >> ), wide<kyosu::octonion_t<float> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<float >> ), wide<kyosu::octonion_t<float> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<std::int64_t >> ), wide<kyosu::octonion_t<double> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<double >> ), wide<kyosu::octonion_t<double> >);
};

// TTS_CASE( "Check as_cayley_dickson_n<N,T> on SIMD non-reals")
// {
// using eve::wide;
TTS_CASE( "Check as_cayley_dickson_n<N,T> on SIMD non-reals")
{
using eve::wide;

// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<kyosu::complex<float> >> ), wide<kyosu::complex<float> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<kyosu::complex<double> >> ), wide<kyosu::complex<double> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<kyosu::quaternion<float> >> ), wide<kyosu::complex<float> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<kyosu::quaternion<double> >> ), wide<kyosu::complex<double> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<kyosu::octonion<float> >> ), wide<kyosu::complex<float> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<kyosu::octonion<double> >> ), wide<kyosu::complex<double> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<kyosu::complex_t<float> >> ), wide<kyosu::complex_t<float> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<kyosu::complex_t<double> >> ), wide<kyosu::complex_t<double> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<kyosu::quaternion_t<float> >> ), wide<kyosu::complex_t<float> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<kyosu::quaternion_t<double> >> ), wide<kyosu::complex_t<double> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<kyosu::octonion_t<float> >> ), wide<kyosu::complex_t<float> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<2, wide<kyosu::octonion_t<double> >> ), wide<kyosu::complex_t<double> >);

// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<kyosu::complex<float> >> ), wide<kyosu::quaternion<float> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<kyosu::complex<double> >> ), wide<kyosu::quaternion<double>>);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<kyosu::quaternion<float> >> ), wide<kyosu::quaternion<float> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<kyosu::quaternion<double> >> ), wide<kyosu::quaternion<double>>);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<kyosu::octonion<float> >> ), wide<kyosu::quaternion<float> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<kyosu::octonion<double> >> ), wide<kyosu::quaternion<double>>);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<kyosu::complex_t<float> >> ), wide<kyosu::quaternion_t<float> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<kyosu::complex_t<double> >> ), wide<kyosu::quaternion_t<double>>);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<kyosu::quaternion_t<float> >> ), wide<kyosu::quaternion_t<float> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<kyosu::quaternion_t<double> >> ), wide<kyosu::quaternion_t<double>>);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<kyosu::octonion_t<float> >> ), wide<kyosu::quaternion_t<float> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<4, wide<kyosu::octonion_t<double> >> ), wide<kyosu::quaternion_t<double>>);

// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<kyosu::complex<float> >> ), wide<kyosu::octonion<float> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<kyosu::complex<double> >> ), wide<kyosu::octonion<double>>);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<kyosu::quaternion<float> >> ), wide<kyosu::octonion<float> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<kyosu::quaternion<double> >> ), wide<kyosu::octonion<double>>);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<kyosu::octonion<float> >> ), wide<kyosu::octonion<float> >);
// TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<kyosu::octonion<double> >> ), wide<kyosu::octonion<double>>);
// };
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<kyosu::complex_t<float> >> ), wide<kyosu::octonion_t<float> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<kyosu::complex_t<double> >> ), wide<kyosu::octonion_t<double>>);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<kyosu::quaternion_t<float> >> ), wide<kyosu::octonion_t<float> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<kyosu::quaternion_t<double> >> ), wide<kyosu::octonion_t<double>>);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<kyosu::octonion_t<float> >> ), wide<kyosu::octonion_t<float> >);
TTS_TYPE_IS((kyosu::as_cayley_dickson_n_t<8, wide<kyosu::octonion_t<double> >> ), wide<kyosu::octonion_t<double>>);
};
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
#include <kyosu/kyosu.hpp>
#include <test.hpp>

TTS_CASE_TPL( "Check as_real behavior on real types", kyosu::real_types)
TTS_CASE_TPL( "Check as_real_type_t behavior on real types", kyosu::real_types)
<typename T>(tts::type<T>)
{
TTS_TYPE_IS(kyosu::as_real_type_t<T>, T);
};

TTS_CASE_TPL( "Check as_real behavior on non-real types", kyosu::real_types)
TTS_CASE_TPL( "Check as_real_type_t behavior on non-real types", kyosu::real_types)
<typename T>(tts::type<T>)
{
TTS_TYPE_IS(kyosu::as_real_type_t<kyosu::complex_t<T>> , T);
Expand Down
Loading

0 comments on commit 2ba0e5a

Please sign in to comment.