-/** Symmetrize expression over a set of objects (symbols, indices). */
-ex symmetrize(const ex & e, exvector::const_iterator first, exvector::const_iterator last);
-
-/** Symmetrize expression over a set of objects (symbols, indices). */
-inline ex symmetrize(const ex & e, const exvector & v)
-{
- return symmetrize(e, v.begin(), v.end());
-}
-
-/** Antisymmetrize expression over a set of objects (symbols, indices). */
-ex antisymmetrize(const ex & e, exvector::const_iterator first, exvector::const_iterator last);
-
-/** Antisymmetrize expression over a set of objects (symbols, indices). */
-inline ex antisymmetrize(const ex & e, const exvector & v)
-{
- return antisymmetrize(e, v.begin(), v.end());
-}
-
-/** Symmetrize expression by cyclic permuation over a set of objects
- * (symbols, indices). */
-ex symmetrize_cyclic(const ex & e, exvector::const_iterator first, exvector::const_iterator last);
-
-/** Symmetrize expression by cyclic permutation over a set of objects
- * (symbols, indices). */
-inline ex symmetrize_cyclic(const ex & e, const exvector & v)
-{
- return symmetrize(e, v.begin(), v.end());
-}
+/** Find a real root of real-valued function f(x) numerically within a given
+ * interval. The function must change sign across interval. Uses Newton-
+ * Raphson method combined with bisection in order to guarantee convergence.
+ *
+ * @param f Function f(x)
+ * @param x Symbol f(x)
+ * @param x1 lower interval limit
+ * @param x2 upper interval limit
+ * @exception runtime_error (if interval is invalid). */
+const numeric fsolve(const ex& f, const symbol& x, const numeric& x1, const numeric& x2);