X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Ffunction.cppy;h=6739eb9ebafdf6ebf8108e4b3a30125f0493ef78;hp=0c551908678d57718feb0f227ddc6174170a4874;hb=HEAD;hpb=82df718524319471d3a92fb051329aa8cd529c22 diff --git a/ginac/function.cppy b/ginac/function.cppy index 0c551908..115845e1 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-2024 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 @@ -75,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 = nullptr; - info_f = 0; + info_f = nullptr; evalf_params_first = true; use_return_type = false; eval_use_exvector_args = false; @@ -104,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; @@ -259,18 +259,20 @@ function::function(unsigned ser, exvector && v) void function::read_archive(const archive_node& n, lst& sym_lst) { inherited::read_archive(n, sym_lst); - // Find serial number by function name + // Find serial number by function name and number of parameters + unsigned np = seq.size(); std::string s; if (n.find_string("name", s)) { unsigned int ser = 0; for (auto & it : registered_functions()) { - if (s == it.name) { + if (s == it.name && np == registered_functions()[ser].nparams) { serial = ser; return; } ++ser; } - throw (std::runtime_error("unknown function '" + s + "' in archive")); + throw (std::runtime_error("unknown function '" + s + + "' with " + std::to_string(np) + " parameters in archive")); } else throw (std::runtime_error("unnamed function in archive")); } @@ -414,31 +416,28 @@ ex function::eval() const return eval_result; } -ex function::evalf(int level) const +ex function::evalf() const { GINAC_ASSERT(serial