* Implementation of GiNaC's indices. */
/*
- * GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2003 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
ex idx::minimal_dim(const idx & other) const
{
- if (dim.is_equal(other.dim) || dim < other.dim || (is_exactly_a<numeric>(dim) && is_a<symbol>(other.dim)))
- return dim;
- else if (dim > other.dim || (is_a<symbol>(dim) && is_exactly_a<numeric>(other.dim)))
- return other.dim;
- else
- throw (std::runtime_error("idx::minimal_dim: index dimensions cannot be ordered"));
+ return GiNaC::minimal_dim(dim, other.dim);
}
ex varidx::toggle_variance(void) const
out_free.push_back(*last);
}
+ex minimal_dim(const ex & dim1, const ex & dim2)
+{
+ if (dim1.is_equal(dim2) || dim1 < dim2 || (is_exactly_a<numeric>(dim1) && is_a<symbol>(dim2)))
+ return dim1;
+ else if (dim1 > dim2 || (is_a<symbol>(dim1) && is_exactly_a<numeric>(dim2)))
+ return dim2;
+ else
+ throw (std::runtime_error("minimal_dim(): index dimensions cannot be ordered"));
+}
+
} // namespace GiNaC