X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Finifcns.h;h=b8349d1bba898d93e292debc4aef6ecbc313639d;hp=9ce66942b9556cd524395d40a28667693cc32de1;hb=6ff92476a4dcd32f9a0c6f59c95c74812ea86fef;hpb=da64e515abf7243bc4c84ca3631470931c4e6691 diff --git a/ginac/inifcns.h b/ginac/inifcns.h index 9ce66942..b8349d1b 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-2008 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 @@ -23,6 +23,7 @@ #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) {