X-Git-Url: https://ginac.de/ginac.git//ginac.git?a=blobdiff_plain;f=ginac%2Ffunction.cppy;h=3b2ee05b770df5c7782e6d0e9e096626c1b81136;hb=refs%2Ftags%2Frelease_1-7-6;hp=fb1d879192a4b0e1a42712f4776d5a730b1b0ca4;hpb=85f46b3d72dbafb6fe1fbb9bca32ec612cf8b480;p=ginac.git diff --git a/ginac/function.cppy b/ginac/function.cppy index fb1d8791..3b2ee05b 100644 --- a/ginac/function.cppy +++ b/ginac/function.cppy @@ -7,7 +7,7 @@ * Please do not modify it directly, edit function.cppy instead! * function.py options: maxargs=@maxargs@ * - * GiNaC Copyright (C) 1999-2015 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2019 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 @@ -34,7 +34,6 @@ #include "power.h" #include "archive.h" #include "inifcns.h" -#include "tostring.h" #include "utils.h" #include "hash_seed.h" #include "remember.h" @@ -76,11 +75,11 @@ function_options::~function_options() void function_options::initialize() { - set_name("unnamed_function", "\\\\mbox{unnamed}"); + set_name("unnamed_function", "\\mbox{unnamed}"); nparams = 0; eval_f = evalf_f = real_part_f = imag_part_f = conjugate_f = expand_f - = derivative_f = expl_derivative_f = power_f = series_f = 0; - info_f = 0; + = derivative_f = expl_derivative_f = power_f = series_f = nullptr; + info_f = nullptr; evalf_params_first = true; use_return_type = false; eval_use_exvector_args = false; @@ -105,7 +104,7 @@ function_options & function_options::set_name(std::string const & n, { name = n; if (tn==std::string()) - TeX_name = "\\\\mbox{"+name+"}"; + TeX_name = "\\mbox{"+name+"}"; else TeX_name = tn; return *this; @@ -143,7 +142,7 @@ function_options & function_options::set_return_type(unsigned rt, const return_t { use_return_type = true; return_type = rt; - if (rtt != 0) + if (rtt != nullptr) return_type_tinfo = *rtt; else return_type_tinfo = make_return_type_t(); @@ -229,7 +228,7 @@ function::function(unsigned ser) : serial(ser) // the following lines have been generated for max. @maxargs@ parameters +++ for N in range(1, maxargs + 1): function::function(unsigned ser, @seq('const ex & param%(n)d', N)@) - : exprseq(@seq('param%(n)d', N)@), serial(ser) + : exprseq{@seq('param%(n)d', N)@}, serial(ser) { } --- @@ -363,11 +362,10 @@ next_context: } } -ex function::eval(int level) const +ex function::eval() const { - if (level>1) { - // first evaluate children, then we will end up here again - return function(serial,evalchildren(level)); + if (flags & status_flags::evaluated) { + return *this; } GINAC_ASSERT(serialhold(); } @@ -416,26 +414,23 @@ ex function::eval(int level) const return eval_result; } -ex function::evalf(int level) const +ex function::evalf() const { GINAC_ASSERT(serialsetflag(status_flags::dynallocated | - status_flags::evaluated); + return dynallocate(*this, power_param).setflag(status_flags::evaluated); } ex function::expand(unsigned options) const @@ -844,8 +838,8 @@ void function::store_remember_table(ex const & result) const unsigned function::register_new(function_options const & opt) { size_t same_name = 0; - for (size_t i=0; i