%module FactorizedPolynomialRational %{ #include #include #include "gmp.h" #include "gmpxx.h" typedef mpq_class Rational; typedef carl::Term Term; typedef carl::MultivariatePolynomial Polynomial; typedef carl::FactorizedPolynomial FactorizedPolynomial; typedef carl::PolynomialFactorizationPair FactorizationPair; typedef unsigned int uint; typedef std::pair VarIntPair; typedef FactorizedPolynomial::CACHE FactorizationCache; %} %include "std_string.i" %include "std_shared_ptr.i" %shared_ptr(carl::Cache); %import "variable.i" %import "polynomial.i" typedef mpq_class Rational; typedef carl::Term Term; typedef carl::MultivariatePolynomial Polynomial; typedef carl::FactorizedPolynomial FactorizedPolynomial; typedef carl::PolynomialFactorizationPair FactorizationPair; typedef FactorizedPolynomial::CACHE FactorizationCache; namespace carl { %rename(FactorizationCache) Cache; class Cache { public: Cache( size_t _maxCacheSize = 10000, double _cacheReductionAmount = 0.2, double _decay = 0.98 ); }; template class FactorizedPolynomial { public: typedef typename P::CoeffType CoeffType; typedef carl::Cache> CACHE; explicit FactorizedPolynomial( const CoeffType& ); explicit FactorizedPolynomial( const P& _polynomial, const std::shared_ptr&, bool = false ); CoeffType constantPart() const; template SubstitutionType evaluate(const std::map& substitutions) const; std::string toString( bool _infix = true, bool _friendlyVarNames = true ) const; %extend { std::vector gatherVariables() const { std::set asSet = $self->gatherVariables(); return std::vector(asSet.begin(),asSet.end()); } } %extend { carl::FactorizedPolynomial

add(const carl::FactorizedPolynomial

& rhs) { return *$self+rhs; } carl::FactorizedPolynomial

sub(const carl::FactorizedPolynomial

& rhs) { return *$self-rhs; } carl::FactorizedPolynomial

mul(const carl::FactorizedPolynomial

& rhs) { return *$self*rhs; } bool equals(const carl::FactorizedPolynomial

& rhs) { return *$self==rhs; } bool notEquals(const carl::FactorizedPolynomial

& rhs) { return *$self!=rhs; } } }; %template(evaluate) carl::FactorizedPolynomial::evaluate; } %template(FactorizedPolynomialRational) carl::FactorizedPolynomial;