You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							123 lines
						
					
					
						
							2.7 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							123 lines
						
					
					
						
							2.7 KiB
						
					
					
				| 
 | |
| 
 | |
| 
 | |
| 
 | |
| %module FactorizedPolynomialRational | |
| %{ | |
| #include <carl/core/MultivariatePolynomial.h> | |
| #include <carl/core/FactorizedPolynomial.h> | |
| #include "gmp.h" | |
| #include "gmpxx.h" | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| typedef mpq_class Rational; | |
| 
 | |
| 
 | |
| typedef carl::Term<Rational> Term; | |
| typedef carl::MultivariatePolynomial<Rational> Polynomial; | |
| typedef carl::FactorizedPolynomial<Polynomial> FactorizedPolynomial; | |
| typedef carl::PolynomialFactorizationPair<Polynomial> FactorizationPair; | |
| 
 | |
| typedef unsigned int uint; | |
| typedef std::pair<carl::Variable,uint> VarIntPair; | |
| 
 | |
| 
 | |
| typedef FactorizedPolynomial::CACHE FactorizationCache; | |
| 
 | |
| 
 | |
| %} | |
| 
 | |
| %include "std_string.i" | |
| %include "std_shared_ptr.i" | |
| %shared_ptr(carl::Cache<FactorizationPair>); | |
| 
 | |
| %import "variable.i" | |
| %import "polynomial.i" | |
| 
 | |
| typedef mpq_class Rational; | |
| typedef carl::Term<Rational> Term; | |
| typedef carl::MultivariatePolynomial<Rational> Polynomial; | |
| typedef carl::FactorizedPolynomial<Polynomial> FactorizedPolynomial; | |
| typedef carl::PolynomialFactorizationPair<Polynomial> FactorizationPair; | |
| 
 | |
| typedef FactorizedPolynomial::CACHE FactorizationCache; | |
| 
 | |
| 
 | |
| 
 | |
| namespace carl { | |
| 
 | |
| %rename(FactorizationCache) Cache<FactorizationPair>; | |
| class Cache<FactorizationPair> { | |
| public: | |
| Cache( size_t _maxCacheSize = 10000, double _cacheReductionAmount = 0.2, double _decay = 0.98 ); | |
| 
 | |
| }; | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| template<typename P> | |
| class FactorizedPolynomial { | |
| public: | |
| typedef typename P::CoeffType CoeffType; | |
| typedef carl::Cache<carl::PolynomialFactorizationPair<P>> CACHE; | |
| 
 | |
| 
 | |
| explicit FactorizedPolynomial( const CoeffType& ); | |
| 
 | |
| explicit FactorizedPolynomial( const P& _polynomial, const std::shared_ptr<carl::FactorizedPolynomial::CACHE>&, bool = false ); | |
| CoeffType constantPart() const; | |
| template<typename SubstitutionType = CoeffType> | |
| SubstitutionType evaluate(const std::map<carl::Variable, SubstitutionType>& substitutions) const; | |
|          | |
| 
 | |
| 
 | |
| std::string toString( bool _infix = true, bool _friendlyVarNames = true ) const; | |
| 
 | |
| %extend { | |
| std::vector<carl::Variable> gatherVariables() const { | |
|    std::set<carl::Variable> asSet = $self->gatherVariables(); | |
|    return std::vector<carl::Variable>(asSet.begin(),asSet.end()); | |
| } | |
| 
 | |
| } | |
| 
 | |
| %extend { | |
| 
 | |
| carl::FactorizedPolynomial<P> add(const carl::FactorizedPolynomial<P>& rhs) { | |
| 	return *$self+rhs; | |
| } | |
| 
 | |
| carl::FactorizedPolynomial<P> sub(const carl::FactorizedPolynomial<P>& rhs) { | |
| 	return *$self-rhs; | |
| } | |
| 
 | |
| carl::FactorizedPolynomial<P> mul(const carl::FactorizedPolynomial<P>& rhs) { | |
| 	return *$self*rhs; | |
| } | |
| 
 | |
| 
 | |
| bool equals(const carl::FactorizedPolynomial<P>& rhs) { | |
| 	return *$self==rhs; | |
| } | |
| 
 | |
| bool notEquals(const carl::FactorizedPolynomial<P>& rhs) { | |
| 	return *$self!=rhs; | |
| } | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| } | |
| 
 | |
| }; | |
| 
 | |
| %template(evaluate) carl::FactorizedPolynomial::evaluate<Rational>; | |
| 
 | |
| } | |
| 
 | |
| %template(FactorizedPolynomialRational) carl::FactorizedPolynomial<Polynomial>; | |
| 
 |