Skip to content
Snippets Groups Projects
Commit 5d5481d2 authored by Tobias Winkler's avatar Tobias Winkler
Browse files

filter now works for unknown variables

parent bdae9ded
No related branches found
No related tags found
No related merge requests found
When using d = prodigy.Dist("1") and then checking whether d.filterLess("s<10") results in a variable not known error.
......@@ -361,9 +361,13 @@ namespace prodigy {
ex eExp = parse(e);
EXPECTS(eExp.info(info_flags::nonnegint), "given expression must be non-neg int");
int order = ex_to<numeric>(eExp).to_int();
EXPECTS(isKnownAsVar(x), "given variable is not known");
// todo one might accept unknown vars as well
const auto &xExp = _vars.at(x);
ex xExp;
if(!isKnownAsVar(x)) {
xExp = symbol {x};
Dist::registerAsVar(ex_to<symbol>(xExp));
} else {
xExp = _vars.at(x);
}
ex series = _gf.series(xExp, order);
return Dist{series_to_poly(series)};
}
......
......@@ -55,3 +55,10 @@ TEST(Dist, filter) {
ASSERT_EQ(dist.filterLess("x", "3").mass(), GiNaC::numeric(7,8));
ASSERT_EQ(dist.filterLeq("x", "2").mass(), GiNaC::numeric(7,8));
}
TEST(Dist, filterUnknownVar) {
Dist::resetSymbolCache();
Dist dist {"1"};
ASSERT_TRUE(dist.isTrivial() == troolean::YES);
ASSERT_EQ(dist.filterLess("x", "1").mass(), GiNaC::numeric(1));
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment