00001
00002
00003 #ifndef MATH_CONCEPT_MAPS_INCLUDE
00004 #define MATH_CONCEPT_MAPS_INCLUDE
00005
00006 #include <boost/numeric/linear_algebra/intrinsic_concept_maps.hpp>
00007 #include <boost/numeric/linear_algebra/new_concepts.hpp>
00008
00009
00010 namespace math {
00011
00012 #if 0 // Why this doesn't work???
00013 template <typename T>
00014 requires IntrinsicUnsignedIntegral<T>
00015 concept_map UnsignedIntegral<T> {}
00016
00017 template <typename T>
00018 requires IntrinsicSignedIntegral<T>
00019 concept_map SignedIntegral<T> {}
00020 #endif
00021
00022 concept_map UnsignedIntegral<unsigned int> {}
00023 concept_map AdditiveMonoid<unsigned int> {}
00024
00025 concept_map SignedIntegral<int> {}
00026 concept_map AdditiveSemiGroup<int> {}
00027
00028 concept_map Commutative< add<int>, int > {}
00029 concept_map Monoid< add<int>, int > {}
00030 concept_map AbelianGroup< add<int>, int > {}
00031
00032 concept_map Commutative< mult<int>, int > {}
00033 concept_map Monoid< mult<int>, int > {}
00034 concept_map PIMonoid< mult<int>, int > {}
00035
00036 concept_map Commutative< min<int>, int > {}
00037 concept_map Monoid< min<int>, int > {}
00038
00039 concept_map Commutative< max<int>, int > {}
00040
00041
00042
00043 concept_map Commutative< add<float>, float > {}
00044 concept_map Monoid< add<float>, float > {}
00045 concept_map AbelianGroup< add<float>, float > {}
00046
00047 concept_map Commutative< mult<float>, float > {}
00048 concept_map Monoid< mult<float>, float > {}
00049 concept_map PIMonoid< mult<float>, float > {}
00050
00051 concept_map AdditiveMonoid< float > {}
00052
00053
00054
00055
00056 concept_map Commutative< min<float>, float > {}
00057 concept_map Monoid< min<float>, float > {}
00058
00059 concept_map Commutative< max<float>, float > {}
00060 concept_map Monoid< max<float>, float > {}
00061
00062
00063
00064 concept_map Commutative< add<double>, double > {}
00065 concept_map Monoid< add<double>, double > {}
00066 concept_map AbelianGroup< add<double>, double > {}
00067
00068 concept_map Commutative< mult<double>, double > {}
00069 concept_map Monoid< mult<double>, double > {}
00070 concept_map PIMonoid< mult<double>, double > {}
00071
00072 concept_map AdditiveMonoid< double > {}
00073
00074
00075
00076
00077 concept_map Commutative< min<double>, double > {}
00078 concept_map Monoid< min<double>, double > {}
00079
00080 concept_map Commutative< max<double>, double > {}
00081 concept_map Monoid< max<double>, double > {}
00082
00083
00084
00085 }
00086
00087 #endif // MATH_CONCEPT_MAPS_INCLUDE