Browse Source
			
			
			Merge branch 'gspn' of https://sselab.de/lab9/private/git/storm into gspn
			
				
		Merge branch 'gspn' of https://sselab.de/lab9/private/git/storm into gspn
	
		
	
			
				Former-commit-id: f014b6d412
			
			
				main
			
			
		
				 6 changed files with 341 additions and 476 deletions
			
			
		- 
					2CMakeLists.txt
- 
					10src/solver/stateelimination/EliminatorBase.cpp
- 
					9src/solver/stateelimination/LongRunAverageEliminator.cpp
- 
					613src/utility/constants.cpp
- 
					177src/utility/constants.h
- 
					6src/utility/vector.h
| @ -1,306 +1,307 @@ | |||
| //#include "src/utility/constants.h"
 | |||
| //
 | |||
| //#include "src/storage/sparse/StateType.h"
 | |||
| #include "src/storage/SparseMatrix.h"
 | |||
| //#include "src/settings/SettingsManager.h"
 | |||
| //#include "src/settings/modules/GeneralSettings.h"
 | |||
| //
 | |||
| //#include "src/adapters/CarlAdapter.h"
 | |||
| //
 | |||
| namespace storm { | |||
|     namespace utility { | |||
| 
 | |||
| //        template<typename ValueType>
 | |||
| //        ValueType one() {
 | |||
| //            return ValueType(1);
 | |||
| //        }
 | |||
| //
 | |||
| //        template<typename ValueType>
 | |||
| //        ValueType zero() {
 | |||
| //            return ValueType(0);
 | |||
| //        }
 | |||
| //
 | |||
| //        template<typename ValueType>
 | |||
| //        ValueType infinity() {
 | |||
| //            return std::numeric_limits<ValueType>::infinity();
 | |||
| //        }
 | |||
| //
 | |||
| //        template<typename ValueType>
 | |||
| //        bool isOne(ValueType const& a) {
 | |||
| //            return a == one<ValueType>();
 | |||
| //        }
 | |||
| //
 | |||
| //        template<typename ValueType>
 | |||
| //        bool isZero(ValueType const& a) {
 | |||
| //            return a == zero<ValueType>();
 | |||
| //        }
 | |||
| //
 | |||
| //        template<typename ValueType>
 | |||
| //        bool isConstant(ValueType const& a) {
 | |||
| //            return true;
 | |||
| //        }
 | |||
| //
 | |||
| //        template<>
 | |||
| //        bool isOne(storm::RationalNumber const& a) {
 | |||
| //            return carl::isOne(a);
 | |||
| //        }
 | |||
| //
 | |||
| //        template<>
 | |||
| //        bool isZero(storm::RationalNumber const& a) {
 | |||
| //            return carl::isZero(a);
 | |||
| //        }
 | |||
| //
 | |||
| //        template<>
 | |||
| //        storm::RationalNumber infinity() {
 | |||
| //            // FIXME: this should be treated more properly.
 | |||
| //            return storm::RationalNumber(-1);
 | |||
| //        }
 | |||
| //
 | |||
| //        template<>
 | |||
| //        bool isOne(storm::RationalFunction const& a) {
 | |||
| //            return a.isOne();
 | |||
| //        }
 | |||
| //
 | |||
| //        template<>
 | |||
| //        bool isZero(storm::RationalFunction const& a) {
 | |||
| //            return a.isZero();
 | |||
| //        }
 | |||
| //
 | |||
| //        template<>
 | |||
| //        bool isConstant(storm::RationalFunction const& a) {
 | |||
| //            return a.isConstant();
 | |||
| //        }
 | |||
| //
 | |||
| //        template<>
 | |||
| //        bool isOne(storm::Polynomial const& a) {
 | |||
| //            return a.isOne();
 | |||
| //        }
 | |||
| //
 | |||
| //        template<>
 | |||
| //        bool isZero(storm::Polynomial const& a) {
 | |||
| //            return a.isZero();
 | |||
| //        }
 | |||
| //
 | |||
| //        template<>
 | |||
| //        bool isConstant(storm::Polynomial const& a) {
 | |||
| //            return a.isConstant();
 | |||
| //        }
 | |||
| //
 | |||
| //        template<>
 | |||
| //        storm::RationalFunction infinity() {
 | |||
| //            // FIXME: this should be treated more properly.
 | |||
| //            return storm::RationalFunction(-1.0);
 | |||
| //        }
 | |||
| //
 | |||
| //        template<typename ValueType>
 | |||
| //        ValueType pow(ValueType const& value, uint_fast64_t exponent) {
 | |||
| //            return std::pow(value, exponent);
 | |||
| //        }
 | |||
| //
 | |||
| //		template<typename ValueType>
 | |||
| //		ValueType simplify(ValueType value) {
 | |||
| //            // In the general case, we don't do anything here, but merely return the value. If something else is
 | |||
| //            // supposed to happen here, the templated function can be specialized for this particular type.
 | |||
| //			return value;
 | |||
| //		}
 | |||
| //
 | |||
| //        template<>
 | |||
| //        double convertNumber(double const& number){
 | |||
| //            return number;
 | |||
| //        }
 | |||
| //
 | |||
| //        template<typename ValueType>
 | |||
| //        ValueType abs(ValueType const& number) {
 | |||
| //            return carl::abs(number);
 | |||
| //        }
 | |||
| //
 | |||
| //        template<>
 | |||
| //        RationalFunction& simplify(RationalFunction& value);
 | |||
| //
 | |||
| //        template<>
 | |||
| //        RationalFunction&& simplify(RationalFunction&& value);
 | |||
| //
 | |||
| //        template<>
 | |||
| //        RationalFunction pow(RationalFunction const& value, uint_fast64_t exponent) {
 | |||
| //            return carl::pow(value, exponent);
 | |||
| //        }
 | |||
| //
 | |||
| //        template<>
 | |||
| //        RationalFunction simplify(RationalFunction value) {
 | |||
| //            value.simplify();
 | |||
| //            return value;
 | |||
| //        }
 | |||
| //
 | |||
| //        template<>
 | |||
| //        RationalFunction& simplify(RationalFunction& value) {
 | |||
| //            value.simplify();
 | |||
| //            return value;
 | |||
| //        }
 | |||
| //
 | |||
| //        template<>
 | |||
| //        RationalFunction&& simplify(RationalFunction&& value) {
 | |||
| //            value.simplify();
 | |||
| //            return std::move(value);
 | |||
| //        }
 | |||
| //
 | |||
| //        template<>
 | |||
| //        double convertNumber(RationalNumber const& number){
 | |||
| //            return carl::toDouble(number);
 | |||
| //        }
 | |||
| //
 | |||
| //        template<>
 | |||
| //        RationalNumber convertNumber(double const& number){
 | |||
| //            return carl::rationalize<RationalNumber>(number);
 | |||
| //        }
 | |||
| //
 | |||
| //        template<>
 | |||
| //        RationalFunction convertNumber(double const& number){
 | |||
| //            return RationalFunction(carl::rationalize<RationalNumber>(number));
 | |||
| //        }
 | |||
| ////
 | |||
| ////        template<>
 | |||
| ////        storm::RationalNumber abs(storm::RationalNumber const& number) {
 | |||
| ////            return carl::abs(number);
 | |||
| ////        }
 | |||
| //
 | |||
|         template<typename IndexType, typename ValueType> | |||
|         storm::storage::MatrixEntry<IndexType, ValueType> simplify(storm::storage::MatrixEntry<IndexType, ValueType> matrixEntry) { | |||
|             simplify(matrixEntry.getValue()); | |||
|             return matrixEntry; | |||
|         } | |||
| 
 | |||
|         template<typename IndexType, typename ValueType> | |||
|         storm::storage::MatrixEntry<IndexType, ValueType>& simplify(storm::storage::MatrixEntry<IndexType, ValueType>& matrixEntry) { | |||
|             simplify(matrixEntry.getValue()); | |||
|             return matrixEntry; | |||
|         } | |||
| 
 | |||
|         template<typename IndexType, typename ValueType> | |||
|         storm::storage::MatrixEntry<IndexType, ValueType>&& simplify(storm::storage::MatrixEntry<IndexType, ValueType>&& matrixEntry) { | |||
|             simplify(matrixEntry.getValue()); | |||
|             return std::move(matrixEntry); | |||
|         } | |||
| //
 | |||
| //        // Explicit instantiations.
 | |||
| //        template bool isOne(double const& value);
 | |||
| //        template bool isZero(double const& value);
 | |||
| //        template bool isConstant(double const& value);
 | |||
| //
 | |||
| //		template double one();
 | |||
| //		template double zero();
 | |||
| //		template double infinity();
 | |||
| //
 | |||
| //		template double pow(double const& value, uint_fast64_t exponent);
 | |||
| //
 | |||
| //		template double simplify(double value);
 | |||
| 
 | |||
| 		template storm::storage::MatrixEntry<storm::storage::sparse::state_type, double> simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, double> matrixEntry); | |||
| 		template storm::storage::MatrixEntry<storm::storage::sparse::state_type, double>& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, double>& matrixEntry); | |||
| 		template storm::storage::MatrixEntry<storm::storage::sparse::state_type, double>&& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, double>&& matrixEntry); | |||
| //
 | |||
| //        template double abs(double const& number);
 | |||
| //
 | |||
| //        template bool isOne(float const& value);
 | |||
| //        template bool isZero(float const& value);
 | |||
| //        template bool isConstant(float const& value);
 | |||
| //
 | |||
| //		template float one();
 | |||
| //		template float zero();
 | |||
| //		template float infinity();
 | |||
| //
 | |||
| //		template float pow(float const& value, uint_fast64_t exponent);
 | |||
| //
 | |||
| //		template float simplify(float value);
 | |||
| 
 | |||
| 		template storm::storage::MatrixEntry<storm::storage::sparse::state_type, float> simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, float> matrixEntry); | |||
| 		template storm::storage::MatrixEntry<storm::storage::sparse::state_type, float>& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, float>& matrixEntry); | |||
| 		template storm::storage::MatrixEntry<storm::storage::sparse::state_type, float>&& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, float>&& matrixEntry); | |||
| 
 | |||
| //        template bool isOne(int const& value);
 | |||
| //        template bool isZero(int const& value);
 | |||
| //        template bool isConstant(int const& value);
 | |||
| //
 | |||
| //        template int one();
 | |||
| //        template int zero();
 | |||
| //        template int infinity();
 | |||
| //
 | |||
| //        template int pow(int const& value, uint_fast64_t exponent);
 | |||
| //
 | |||
| //        template int simplify(int value);
 | |||
| 
 | |||
|         template storm::storage::MatrixEntry<storm::storage::sparse::state_type, int> simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, int> matrixEntry); | |||
|         template storm::storage::MatrixEntry<storm::storage::sparse::state_type, int>& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, int>& matrixEntry); | |||
|         template storm::storage::MatrixEntry<storm::storage::sparse::state_type, int>&& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, int>&& matrixEntry); | |||
| 
 | |||
| //        template bool isOne(storm::storage::sparse::state_type const& value);
 | |||
| //        template bool isZero(storm::storage::sparse::state_type const& value);
 | |||
| //        template bool isConstant(storm::storage::sparse::state_type const& value);
 | |||
| //
 | |||
| //        template uint32_t one();
 | |||
| //        template uint32_t zero();
 | |||
| //        template uint32_t infinity();
 | |||
| //
 | |||
| //        template storm::storage::sparse::state_type one();
 | |||
| //        template storm::storage::sparse::state_type zero();
 | |||
| //        template storm::storage::sparse::state_type infinity();
 | |||
| //
 | |||
| //        template storm::storage::sparse::state_type pow(storm::storage::sparse::state_type const& value, uint_fast64_t exponent);
 | |||
| //
 | |||
| //        template storm::storage::sparse::state_type simplify(storm::storage::sparse::state_type value);
 | |||
| //
 | |||
|         template storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::storage::sparse::state_type> simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::storage::sparse::state_type> matrixEntry); | |||
|         template storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::storage::sparse::state_type>& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::storage::sparse::state_type>& matrixEntry); | |||
|         template storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::storage::sparse::state_type>&& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::storage::sparse::state_type>&& matrixEntry); | |||
| //
 | |||
| //        // Instantiations for rational number.
 | |||
| //        template bool isOne(storm::RationalNumber const& value);
 | |||
| //        template bool isZero(storm::RationalNumber const& value);
 | |||
| //        template bool isConstant(storm::RationalNumber const& value);
 | |||
| //
 | |||
| //        template storm::RationalNumber one();
 | |||
| //        template storm::RationalNumber zero();
 | |||
| //        template storm::RationalNumber infinity();
 | |||
| //
 | |||
| //        template double convertNumber(storm::RationalNumber const& number);
 | |||
| //        template storm::RationalNumber convertNumber(double const& number);
 | |||
| //
 | |||
| //        template storm::RationalNumber abs(storm::RationalNumber const& number);
 | |||
| //
 | |||
| ////        template storm::RationalNumber pow(storm::RationalNumber const& value, uint_fast64_t exponent);
 | |||
| //
 | |||
| //        template storm::RationalNumber simplify(storm::RationalNumber value);
 | |||
|         template storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::RationalNumber> simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::RationalNumber> matrixEntry); | |||
|         template storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::RationalNumber>& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::RationalNumber>& matrixEntry); | |||
|         template storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::RationalNumber>&& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::RationalNumber>&& matrixEntry); | |||
| 
 | |||
| #ifdef STORM_HAVE_CARL
 | |||
| //        template bool isOne(RationalFunction const& value);
 | |||
| //        template bool isZero(RationalFunction const& value);
 | |||
| //        template bool isConstant(RationalFunction const& value);
 | |||
| //
 | |||
| //        template RationalFunction one();
 | |||
| //        template RationalFunction zero();
 | |||
| //        template storm::RationalFunction infinity();
 | |||
| //
 | |||
| //        template RationalFunction pow(RationalFunction const& value, uint_fast64_t exponent);
 | |||
| //        template RationalFunction simplify(RationalFunction value);
 | |||
| //        template RationalFunction& simplify(RationalFunction& value);
 | |||
| //        template RationalFunction&& simplify(RationalFunction&& value);
 | |||
| //
 | |||
| //        template Polynomial one();
 | |||
| //        template Polynomial zero();
 | |||
| //
 | |||
| //        template bool isOne(Interval const& value);
 | |||
| //        template bool isZero(Interval const& value);
 | |||
| //        template bool isConstant(Interval const& value);
 | |||
| //
 | |||
| //        template Interval one();
 | |||
| //        template Interval zero();
 | |||
| 
 | |||
|         template storm::storage::MatrixEntry<storm::storage::sparse::state_type, RationalFunction> simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, RationalFunction> matrixEntry); | |||
|         template storm::storage::MatrixEntry<storm::storage::sparse::state_type, RationalFunction>& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, RationalFunction>& matrixEntry); | |||
|         template storm::storage::MatrixEntry<storm::storage::sparse::state_type, RationalFunction>&& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, RationalFunction>&& matrixEntry); | |||
| #endif
 | |||
| //
 | |||
|     } | |||
| } | |||
|     #include "src/utility/constants.h"
 | |||
|      | |||
|     #include "src/storage/sparse/StateType.h"
 | |||
|   #include "src/storage/SparseMatrix.h"
 | |||
|     #include "src/settings/SettingsManager.h"
 | |||
|     #include "src/settings/modules/GeneralSettings.h"
 | |||
|      | |||
|     #include "src/adapters/CarlAdapter.h"
 | |||
|      | |||
|   namespace storm { | |||
|       namespace utility { | |||
|    | |||
|             template<typename ValueType> | |||
|             ValueType one() { | |||
|                 return ValueType(1); | |||
|             } | |||
|      | |||
|             template<typename ValueType> | |||
|             ValueType zero() { | |||
|                 return ValueType(0); | |||
|             } | |||
|      | |||
|             template<typename ValueType> | |||
|             ValueType infinity() { | |||
|                 return std::numeric_limits<ValueType>::infinity(); | |||
|             } | |||
|      | |||
|             template<typename ValueType> | |||
|             bool isOne(ValueType const& a) { | |||
|                 return a == one<ValueType>(); | |||
|             } | |||
|      | |||
|             template<typename ValueType> | |||
|             bool isZero(ValueType const& a) { | |||
|                 return a == zero<ValueType>(); | |||
|             } | |||
|      | |||
|             template<typename ValueType> | |||
|             bool isConstant(ValueType const& a) { | |||
|                 return true; | |||
|             } | |||
|      | |||
|             template<> | |||
|             bool isOne(storm::RationalNumber const& a) { | |||
|                 return carl::isOne(a); | |||
|             } | |||
|      | |||
|             template<> | |||
|             bool isZero(storm::RationalNumber const& a) { | |||
|                 return carl::isZero(a); | |||
|             } | |||
|      | |||
|             template<> | |||
|             storm::RationalNumber infinity() { | |||
|                   // FIXME: this should be treated more properly.
 | |||
|                 return storm::RationalNumber(-1); | |||
|             } | |||
|      | |||
|             template<> | |||
|             bool isOne(storm::RationalFunction const& a) { | |||
|                 return a.isOne(); | |||
|             } | |||
|      | |||
|             template<> | |||
|             bool isZero(storm::RationalFunction const& a) { | |||
|                 return a.isZero(); | |||
|             } | |||
|      | |||
|             template<> | |||
|             bool isConstant(storm::RationalFunction const& a) { | |||
|                 return a.isConstant(); | |||
|             } | |||
|      | |||
|             template<> | |||
|             bool isOne(storm::Polynomial const& a) { | |||
|                 return a.isOne(); | |||
|             } | |||
|      | |||
|             template<> | |||
|             bool isZero(storm::Polynomial const& a) { | |||
|                 return a.isZero(); | |||
|             } | |||
|      | |||
|             template<> | |||
|             bool isConstant(storm::Polynomial const& a) { | |||
|                 return a.isConstant(); | |||
|             } | |||
|      | |||
|             template<> | |||
|             storm::RationalFunction infinity() { | |||
|                    //FIXME: this should be treated more properly.
 | |||
|                 return storm::RationalFunction(-1.0); | |||
|             } | |||
|      | |||
|             template<typename ValueType> | |||
|             ValueType pow(ValueType const& value, uint_fast64_t exponent) { | |||
|                 assert(false); | |||
|                 //return std::pow(value, exponent);
 | |||
|             } | |||
|      | |||
|     		template<typename ValueType> | |||
|     		ValueType simplify(ValueType value) { | |||
|                  //  In the general case, we don't do anything here, but merely return the value. If something else is
 | |||
|                  //  supposed to happen here, the templated function can be specialized for this particular type.
 | |||
|     			return value; | |||
|     		} | |||
|      | |||
|             template<> | |||
|             double convertNumber(double const& number){ | |||
|                 return number; | |||
|             } | |||
|      | |||
|             template<typename ValueType> | |||
|             ValueType abs(ValueType const& number) { | |||
|                 return carl::abs(number); | |||
|             } | |||
|      | |||
|             template<> | |||
|             RationalFunction& simplify(RationalFunction& value); | |||
|      | |||
|             template<> | |||
|             RationalFunction&& simplify(RationalFunction&& value); | |||
|      | |||
|             template<> | |||
|             RationalFunction pow(RationalFunction const& value, uint_fast64_t exponent) { | |||
|                 return carl::pow(value, exponent); | |||
|             } | |||
|      | |||
|             template<> | |||
|             RationalFunction simplify(RationalFunction value) { | |||
|                 value.simplify(); | |||
|                 return value; | |||
|             } | |||
|      | |||
|             template<> | |||
|             RationalFunction& simplify(RationalFunction& value) { | |||
|                 value.simplify(); | |||
|                 return value; | |||
|             } | |||
|      | |||
|             template<> | |||
|             RationalFunction&& simplify(RationalFunction&& value) { | |||
|                 value.simplify(); | |||
|                 return std::move(value); | |||
|             } | |||
|      | |||
|             template<> | |||
|             double convertNumber(RationalNumber const& number){ | |||
|                 return carl::toDouble(number); | |||
|             } | |||
|      | |||
|             template<> | |||
|             RationalNumber convertNumber(double const& number){ | |||
|                 return carl::rationalize<RationalNumber>(number); | |||
|             } | |||
|      | |||
|             template<> | |||
|             RationalFunction convertNumber(double const& number){ | |||
|                 return RationalFunction(carl::rationalize<RationalNumber>(number)); | |||
|             } | |||
|        | |||
|               template<> | |||
|               storm::RationalNumber abs(storm::RationalNumber const& number) { | |||
|                   return carl::abs(number); | |||
|               } | |||
|      | |||
|           template<typename IndexType, typename ValueType> | |||
|           storm::storage::MatrixEntry<IndexType, ValueType> simplify(storm::storage::MatrixEntry<IndexType, ValueType> matrixEntry) { | |||
|               simplify(matrixEntry.getValue()); | |||
|               return matrixEntry; | |||
|           } | |||
|    | |||
|           template<typename IndexType, typename ValueType> | |||
|           storm::storage::MatrixEntry<IndexType, ValueType>& simplify(storm::storage::MatrixEntry<IndexType, ValueType>& matrixEntry) { | |||
|               simplify(matrixEntry.getValue()); | |||
|               return matrixEntry; | |||
|           } | |||
|    | |||
|           template<typename IndexType, typename ValueType> | |||
|           storm::storage::MatrixEntry<IndexType, ValueType>&& simplify(storm::storage::MatrixEntry<IndexType, ValueType>&& matrixEntry) { | |||
|               simplify(matrixEntry.getValue()); | |||
|               return std::move(matrixEntry); | |||
|           } | |||
|      | |||
|             //   Explicit instantiations.
 | |||
|             template bool isOne(double const& value); | |||
|             template bool isZero(double const& value); | |||
|             template bool isConstant(double const& value); | |||
|      | |||
|     		template double one(); | |||
|     		template double zero(); | |||
|     		template double infinity(); | |||
|      | |||
|     		template double pow(double const& value, uint_fast64_t exponent); | |||
|      | |||
|     		template double simplify(double value); | |||
|    | |||
|   		template storm::storage::MatrixEntry<storm::storage::sparse::state_type, double> simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, double> matrixEntry); | |||
|   		template storm::storage::MatrixEntry<storm::storage::sparse::state_type, double>& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, double>& matrixEntry); | |||
|   		template storm::storage::MatrixEntry<storm::storage::sparse::state_type, double>&& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, double>&& matrixEntry); | |||
|      | |||
|             template double abs(double const& number); | |||
|      | |||
|             template bool isOne(float const& value); | |||
|             template bool isZero(float const& value); | |||
|             template bool isConstant(float const& value); | |||
|      | |||
|     		template float one(); | |||
|     		template float zero(); | |||
|     		template float infinity(); | |||
|      | |||
|     		template float pow(float const& value, uint_fast64_t exponent); | |||
|      | |||
|     		template float simplify(float value); | |||
|    | |||
|   		template storm::storage::MatrixEntry<storm::storage::sparse::state_type, float> simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, float> matrixEntry); | |||
|   		template storm::storage::MatrixEntry<storm::storage::sparse::state_type, float>& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, float>& matrixEntry); | |||
|   		template storm::storage::MatrixEntry<storm::storage::sparse::state_type, float>&& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, float>&& matrixEntry); | |||
|    | |||
|             template bool isOne(int const& value); | |||
|             template bool isZero(int const& value); | |||
|             template bool isConstant(int const& value); | |||
|      | |||
|             template int one(); | |||
|             template int zero(); | |||
|             template int infinity(); | |||
|      | |||
|             template int pow(int const& value, uint_fast64_t exponent); | |||
|      | |||
|             template int simplify(int value); | |||
|      | |||
|             template storm::storage::MatrixEntry<storm::storage::sparse::state_type, int> simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, int> matrixEntry); | |||
|             template storm::storage::MatrixEntry<storm::storage::sparse::state_type, int>& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, int>& matrixEntry); | |||
|             template storm::storage::MatrixEntry<storm::storage::sparse::state_type, int>&& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, int>&& matrixEntry); | |||
|      | |||
|             template bool isOne(storm::storage::sparse::state_type const& value); | |||
|             template bool isZero(storm::storage::sparse::state_type const& value); | |||
|             template bool isConstant(storm::storage::sparse::state_type const& value); | |||
|      | |||
|             template uint32_t one(); | |||
|             template uint32_t zero(); | |||
|             template uint32_t infinity(); | |||
|      | |||
|             template storm::storage::sparse::state_type one(); | |||
|             template storm::storage::sparse::state_type zero(); | |||
|             template storm::storage::sparse::state_type infinity(); | |||
|      | |||
|             template storm::storage::sparse::state_type pow(storm::storage::sparse::state_type const& value, uint_fast64_t exponent); | |||
|      | |||
|             template storm::storage::sparse::state_type simplify(storm::storage::sparse::state_type value); | |||
|      | |||
|             template storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::storage::sparse::state_type> simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::storage::sparse::state_type> matrixEntry); | |||
|             template storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::storage::sparse::state_type>& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::storage::sparse::state_type>& matrixEntry); | |||
|             template storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::storage::sparse::state_type>&& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::storage::sparse::state_type>&& matrixEntry); | |||
|      | |||
|              // Instantiations for rational number.
 | |||
|             template bool isOne(storm::RationalNumber const& value); | |||
|             template bool isZero(storm::RationalNumber const& value); | |||
|             template bool isConstant(storm::RationalNumber const& value); | |||
|      | |||
|             template storm::RationalNumber one(); | |||
|             template storm::RationalNumber zero(); | |||
|             template storm::RationalNumber infinity(); | |||
|      | |||
|             template double convertNumber(storm::RationalNumber const& number); | |||
|             template storm::RationalNumber convertNumber(double const& number); | |||
|      | |||
|             template storm::RationalNumber abs(storm::RationalNumber const& number); | |||
|      | |||
|               template storm::RationalNumber pow(storm::RationalNumber const& value, uint_fast64_t exponent); | |||
|      | |||
|             template storm::RationalNumber simplify(storm::RationalNumber value); | |||
|             template storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::RationalNumber> simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::RationalNumber> matrixEntry); | |||
|             template storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::RationalNumber>& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::RationalNumber>& matrixEntry); | |||
|             template storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::RationalNumber>&& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, storm::RationalNumber>&& matrixEntry); | |||
|      | |||
|     #ifdef STORM_HAVE_CARL
 | |||
|             template bool isOne(RationalFunction const& value); | |||
|             template bool isZero(RationalFunction const& value); | |||
|             template bool isConstant(RationalFunction const& value); | |||
|      | |||
|             template RationalFunction one(); | |||
|             template RationalFunction zero(); | |||
|             template storm::RationalFunction infinity(); | |||
|      | |||
|             template RationalFunction pow(RationalFunction const& value, uint_fast64_t exponent); | |||
|             template RationalFunction simplify(RationalFunction value); | |||
|             template RationalFunction& simplify(RationalFunction& value); | |||
|             template RationalFunction&& simplify(RationalFunction&& value); | |||
|      | |||
|             template Polynomial one(); | |||
|             template Polynomial zero(); | |||
|      | |||
|             template bool isOne(Interval const& value); | |||
|             template bool isZero(Interval const& value); | |||
|             template bool isConstant(Interval const& value); | |||
|      | |||
|             template Interval one(); | |||
|             template Interval zero(); | |||
|      | |||
|             template storm::storage::MatrixEntry<storm::storage::sparse::state_type, RationalFunction> simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, RationalFunction> matrixEntry); | |||
|             template storm::storage::MatrixEntry<storm::storage::sparse::state_type, RationalFunction>& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, RationalFunction>& matrixEntry); | |||
|             template storm::storage::MatrixEntry<storm::storage::sparse::state_type, RationalFunction>&& simplify(storm::storage::MatrixEntry<storm::storage::sparse::state_type, RationalFunction>&& matrixEntry); | |||
|     #endif
 | |||
|      | |||
|       } | |||
|   } | |||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue