00001
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _SpecialValues_h
00025 #define _SpecialValues_h
00026
00027
00028 #include "Quantities/Quantity/Constant.h"
00029 #include "Quantities/Quantity/UniqueConstant.h"
00030
00031 namespace quantity {
00032
00034
00036 template<typename Q> struct SpecialValues;
00037
00038
00040
00042 template<template<typename, typename> class M, typename QT, typename ST,
00043 typename DQSU, typename DQT>
00044 struct SpecialValues<M<Quantity<QT, ST>, DerivedQuantity<QT, DQSU, DQT> > >
00045 {
00046 static const Constant<Quantity<QT,ST>, DerivedQuantity<QT, DQSU, DQT> >
00047 unity (void)
00048 {return Constant<Quantity<QT,ST>, DerivedQuantity<QT, DQSU, DQT> > (1);}
00049 static const Constant<Quantity<QT,ST>, DerivedQuantity<QT, DQSU, DQT> >
00050 zero (void) {return Constant<Quantity<QT,ST>,
00051 DerivedQuantity<QT, DQSU, DQT> > (0);}
00052 static const Constant<Quantity<QT,ST>, DerivedQuantity<QT, DQSU, DQT> >
00053 NaN (void) {return Constant<Quantity<QT,ST>,
00054 DerivedQuantity<QT, DQSU, DQT> >
00055 (std::numeric_limits<ST>::signaling_NaN ());}
00056 static const Constant<Quantity<QT,ST>, DerivedQuantity<QT, DQSU, DQT> >
00057 infinity (void) {return Constant<Quantity<QT,ST>,
00058 DerivedQuantity<QT, DQSU, DQT> >
00059 (std::numeric_limits<ST>::infinity ());}
00060 };
00061
00062
00064
00068 template<typename QT, typename ST, typename DQSU, typename DQT>
00069 struct SpecialValues<UniqueConstant<Quantity<QT, ST>,
00070 DerivedQuantity<QT, DQSU, DQT> > >;
00071
00072 }
00073
00074 #endif