mirror of
https://github.com/boostorg/ublas.git
synced 2026-02-22 03:42:19 +00:00
From uBLAS project. Ready for regression testing for 1.32.0
svn path=/trunk/boost/boost/numeric/ublas/; revision=23437
This commit is contained in:
37
include/boost/numeric/ublas/documentation.hpp
Normal file
37
include/boost/numeric/ublas/documentation.hpp
Normal file
@@ -0,0 +1,37 @@
|
||||
//
|
||||
// Copyright (c) 2000-2004
|
||||
// Joerg Walter, Mathias Koch and uBLAS developers
|
||||
//
|
||||
// Permission to use, copy, modify, distribute and sell this software
|
||||
// and its documentation for any purpose is hereby granted without fee,
|
||||
// provided that the above copyright notice appear in all copies and
|
||||
// that both that copyright notice and this permission notice appear
|
||||
// in supporting documentation. The authors make no representations
|
||||
// about the suitability of this software for any purpose.
|
||||
// It is provided "as is" without express or implied warranty.
|
||||
//
|
||||
// The authors gratefully acknowledge the support of
|
||||
// GeNeSys mbH & Co. KG in producing this work.
|
||||
//
|
||||
|
||||
// this file should not contain any code, but the documentation
|
||||
// global to all files
|
||||
|
||||
/** \namespace boost::numeric::ublas
|
||||
\brief contains all important classes and functions of uBLAS
|
||||
|
||||
all ublas definitions ...
|
||||
\todo expand this section
|
||||
*/
|
||||
|
||||
/** \defgroup blas1 Level 1 BLAS
|
||||
\brief level 1 basic linear algebra subroutines
|
||||
*/
|
||||
|
||||
/** \defgroup blas2 Level 2 BLAS
|
||||
\brief level 2 basic linear algebra subroutines
|
||||
*/
|
||||
|
||||
/** \defgroup blas3 Level 3 BLAS
|
||||
\brief level 3 basic linear algebra subroutines
|
||||
*/
|
||||
171
include/boost/numeric/ublas/returntype_deduction.hpp
Normal file
171
include/boost/numeric/ublas/returntype_deduction.hpp
Normal file
@@ -0,0 +1,171 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2003 Joel de Guzman
|
||||
|
||||
Use, modification and distribution is subject to the Boost Software
|
||||
License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
http://www.boost.org/LICENSE_1_0.txt)
|
||||
==============================================================================*/
|
||||
#ifndef BOOST_NUMERIC_UBLAS_NUMERICTYPE_DEDUCTION_IPP
|
||||
#define BOOST_NUMERIC_UBLAS_NUMERICTYPE_DEDUCTION_IPP
|
||||
|
||||
/* See original boost/utility/type_deduction.hpp for comments */
|
||||
|
||||
#include <boost/mpl/vector/vector20.hpp>
|
||||
#include <boost/mpl/at.hpp>
|
||||
#include <boost/mpl/or.hpp>
|
||||
#include <boost/mpl/identity.hpp>
|
||||
#include <boost/type_traits/remove_reference.hpp>
|
||||
#include <boost/type_traits/remove_cv.hpp>
|
||||
#include <boost/type_traits/is_const.hpp>
|
||||
#include <boost/type_traits/is_same.hpp>
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
|
||||
namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
struct error_cant_deduce_type {};
|
||||
|
||||
namespace type_deduction_detail
|
||||
{
|
||||
typedef char(&bool_value_type)[1];
|
||||
typedef char(&float_value_type)[2];
|
||||
typedef char(&double_value_type)[3];
|
||||
typedef char(&long_double_value_type)[4];
|
||||
typedef char(&schar_value_type)[5];
|
||||
typedef char(&uchar_value_type)[6];
|
||||
typedef char(&short_value_type)[7];
|
||||
typedef char(&ushort_value_type)[8];
|
||||
typedef char(&int_value_type)[9];
|
||||
typedef char(&uint_value_type)[10];
|
||||
typedef char(&long_value_type)[11];
|
||||
typedef char(&ulong_value_type)[12];
|
||||
|
||||
typedef char(&x_value_type)[13];
|
||||
typedef char(&y_value_type)[14];
|
||||
|
||||
typedef char(&cant_deduce_type)[14];
|
||||
|
||||
template <typename T, typename PlainT = typename remove_cv<T>::type>
|
||||
struct is_basic
|
||||
: mpl::or_<
|
||||
typename mpl::or_<
|
||||
is_same<PlainT, bool>
|
||||
, is_same<PlainT, float>
|
||||
, is_same<PlainT, double>
|
||||
, is_same<PlainT, long double>
|
||||
> ::type,
|
||||
typename mpl::or_<
|
||||
is_same<PlainT, signed char>
|
||||
, is_same<PlainT, unsigned char>
|
||||
, is_same<PlainT, short>
|
||||
, is_same<PlainT, unsigned short>
|
||||
> ::type,
|
||||
typename mpl::or_<
|
||||
is_same<PlainT, int>
|
||||
, is_same<PlainT, unsigned int>
|
||||
, is_same<PlainT, long>
|
||||
, is_same<PlainT, unsigned long>
|
||||
> ::type
|
||||
> {};
|
||||
|
||||
struct asymmetric;
|
||||
|
||||
template <typename X, typename Y>
|
||||
cant_deduce_type
|
||||
test(...); // The black hole !!!
|
||||
|
||||
template <typename X, typename Y>
|
||||
bool_value_type
|
||||
test(bool const&);
|
||||
|
||||
template <typename X, typename Y>
|
||||
float_value_type
|
||||
test(float const&);
|
||||
|
||||
template <typename X, typename Y>
|
||||
double_value_type
|
||||
test(double const&);
|
||||
|
||||
template <typename X, typename Y>
|
||||
long_double_value_type
|
||||
test(long double const&);
|
||||
|
||||
template <typename X, typename Y>
|
||||
schar_value_type
|
||||
test(signed char const&);
|
||||
|
||||
template <typename X, typename Y>
|
||||
uchar_value_type
|
||||
test(unsigned char const&);
|
||||
|
||||
template <typename X, typename Y>
|
||||
short_value_type
|
||||
test(short const&);
|
||||
|
||||
template <typename X, typename Y>
|
||||
ushort_value_type
|
||||
test(unsigned short const&);
|
||||
|
||||
template <typename X, typename Y>
|
||||
int_value_type
|
||||
test(int const&);
|
||||
|
||||
template <typename X, typename Y>
|
||||
uint_value_type
|
||||
test(unsigned int const&);
|
||||
|
||||
template <typename X, typename Y>
|
||||
long_value_type
|
||||
test(long const&);
|
||||
|
||||
template <typename X, typename Y>
|
||||
ulong_value_type
|
||||
test(unsigned long const&);
|
||||
|
||||
template <typename X, typename Y>
|
||||
typename disable_if<
|
||||
mpl::or_<is_basic<X>, is_const<X> >
|
||||
, x_value_type
|
||||
>::type
|
||||
test(X const&);
|
||||
|
||||
template <typename X, typename Y>
|
||||
typename disable_if<
|
||||
mpl::or_<
|
||||
is_basic<Y>
|
||||
, is_same<Y, asymmetric>
|
||||
, is_const<Y>
|
||||
, is_same<X, Y>
|
||||
>
|
||||
, y_value_type
|
||||
>::type
|
||||
test(Y const&);
|
||||
|
||||
template <typename X, typename Y>
|
||||
struct base_result_of
|
||||
{
|
||||
typedef typename remove_reference<X>::type x_type;
|
||||
typedef typename remove_reference<Y>::type y_type;
|
||||
|
||||
typedef mpl::vector15<
|
||||
mpl::identity<bool>
|
||||
, mpl::identity<float>
|
||||
, mpl::identity<double>
|
||||
, mpl::identity<long double>
|
||||
, mpl::identity<signed char>
|
||||
, mpl::identity<unsigned char>
|
||||
, mpl::identity<short>
|
||||
, mpl::identity<unsigned short>
|
||||
, mpl::identity<int>
|
||||
, mpl::identity<unsigned int>
|
||||
, mpl::identity<long>
|
||||
, mpl::identity<unsigned long>
|
||||
, mpl::identity<x_type>
|
||||
, mpl::identity<y_type>
|
||||
, mpl::identity<error_cant_deduce_type>
|
||||
>
|
||||
types;
|
||||
};
|
||||
|
||||
}}} } // namespace boost::numeric::ublas ::type_deduction_detail
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user