X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?a=blobdiff_plain;f=ginac%2Finifcns_trans.cpp;h=232db8c59a25e2b0ab3fb1b06607d5e2a656ca1d;hb=3d962a6ef2acd92207cdfc164a33d13c5c827dc9;hp=9982853961286be457af33ee445339aeb4651f65;hpb=47ecb72dce5ea9c917d1e1e77863c45a8b2b1bba;p=ginac.git diff --git a/ginac/inifcns_trans.cpp b/ginac/inifcns_trans.cpp index 99828539..232db8c5 100644 --- a/ginac/inifcns_trans.cpp +++ b/ginac/inifcns_trans.cpp @@ -4,7 +4,7 @@ * functions. */ /* - * GiNaC Copyright (C) 1999-2016 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 @@ -265,8 +265,12 @@ static ex log_series(const ex &arg, const ex &point = rel.rhs(); const symbol foo; const ex replarg = series(log(arg), s==foo, order).subs(foo==point, subs_options::no_pattern); - epvector seq { expair(-I*csgn(arg*I)*Pi, _ex0), - expair(Order(_ex1), order) }; + epvector seq; + if (order > 0) { + seq.reserve(2); + seq.push_back(expair(-I*csgn(arg*I)*Pi, _ex0)); + } + seq.push_back(expair(Order(_ex1), order)); return series(replarg - I*Pi + pseries(rel, std::move(seq)), rel, order); } throw do_taylor(); // caught by function::series() @@ -928,8 +932,12 @@ static ex atan_series(const ex &arg, Order0correction += log((I*arg_pt+_ex_1)/(I*arg_pt+_ex1))*I*_ex_1_2; else Order0correction += log((I*arg_pt+_ex1)/(I*arg_pt+_ex_1))*I*_ex1_2; - epvector seq { expair(Order0correction, _ex0), - expair(Order(_ex1), order) }; + epvector seq; + if (order > 0) { + seq.reserve(2); + seq.push_back(expair(Order0correction, _ex0)); + } + seq.push_back(expair(Order(_ex1), order)); return series(replarg - pseries(rel, std::move(seq)), rel, order); } throw do_taylor(); @@ -1534,8 +1542,12 @@ static ex atanh_series(const ex &arg, Order0correction += log((arg_pt+_ex_1)/(arg_pt+_ex1))*_ex1_2; else Order0correction += log((arg_pt+_ex1)/(arg_pt+_ex_1))*_ex_1_2; - epvector seq { expair(Order0correction, _ex0), - expair(Order(_ex1), order) }; + epvector seq; + if (order > 0) { + seq.reserve(2); + seq.push_back(expair(Order0correction, _ex0)); + } + seq.push_back(expair(Order(_ex1), order)); return series(replarg - pseries(rel, std::move(seq)), rel, order); } throw do_taylor();