* Implementation of GiNaC's light-weight expression handles. */
/*
- * GiNaC Copyright (C) 1999-2015 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2023 Johannes Gutenberg University Mainz, Germany
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
bp->dbgprinttree();
}
+/** Expand an expression.
+ * @param options see GiNaC::expand_options */
ex ex::expand(unsigned options) const
{
if (options == 0 && (bp->flags & status_flags::expanded)) // The "expanded" flag only covers the standard options; someone might want to re-expand with different options
// Convert the lists to a map
exmap m;
- for (lst::const_iterator its = ls.begin(), itr = lr.begin(); its != ls.end(); ++its, ++itr) {
+ for (auto its = ls.begin(), itr = lr.begin(); its != ls.end(); ++its, ++itr) {
m.insert(std::make_pair(*its, *itr));
// Search for products and powers in the expressions to be substituted
return dynallocate<numeric>(i);
}
}
-
+
+basic & ex::construct_from_longlong(long long i)
+{
+ if (i >= -12 && i <= 12) {
+ return construct_from_int(static_cast<int>(i));
+ } else {
+ return dynallocate<numeric>(i);
+ }
+}
+
+basic & ex::construct_from_ulonglong(unsigned long long i)
+{
+ if (i <= 12) {
+ return construct_from_uint(static_cast<unsigned>(i));
+ } else {
+ return dynallocate<numeric>(i);
+ }
+}
+
basic & ex::construct_from_double(double d)
{
return dynallocate<numeric>(d);