X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?a=blobdiff_plain;ds=sidebyside;f=ginac%2Finifcns.h;h=ecfe561fd9a5167b5f245710562f402bf9a8fa4d;hb=55c9e750f7d9dd94e7cb15ae43752da9a402973a;hp=9ce66942b9556cd524395d40a28667693cc32de1;hpb=da64e515abf7243bc4c84ca3631470931c4e6691;p=ginac.git diff --git a/ginac/inifcns.h b/ginac/inifcns.h index 9ce66942..ecfe561f 100644 --- a/ginac/inifcns.h +++ b/ginac/inifcns.h @@ -3,7 +3,7 @@ * Interface to GiNaC's initially known functions. */ /* - * GiNaC Copyright (C) 1999-2005 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2009 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 @@ -20,9 +20,10 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef __GINAC_INIFCNS_H__ -#define __GINAC_INIFCNS_H__ +#ifndef GINAC_INIFCNS_H +#define GINAC_INIFCNS_H +#include "numeric.h" #include "function.h" #include "ex.h" @@ -30,10 +31,19 @@ namespace GiNaC { /** Complex conjugate. */ DECLARE_FUNCTION_1P(conjugate_function) + +/** Real part. */ +DECLARE_FUNCTION_1P(real_part_function) + +/** Imaginary part. */ +DECLARE_FUNCTION_1P(imag_part_function) /** Absolute value. */ DECLARE_FUNCTION_1P(abs) +/** Step function. */ +DECLARE_FUNCTION_1P(step) + /** Complex sign. */ DECLARE_FUNCTION_1P(csgn) @@ -178,6 +188,17 @@ DECLARE_FUNCTION_1P(Order) ex lsolve(const ex &eqns, const ex &symbols, unsigned options = solve_algo::automatic); +/** 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); + /** Check whether a function is the Order (O(n)) function. */ inline bool is_order_function(const ex & e) { @@ -191,4 +212,4 @@ ex convert_H_to_Li(const ex& parameterlst, const ex& arg); } // namespace GiNaC -#endif // ndef __GINAC_INIFCNS_H__ +#endif // ndef GINAC_INIFCNS_H