From git at ginac.de Fri Mar 5 21:40:44 2010 From: git at ginac.de (Jens Vollinga) Date: Fri, 5 Mar 2010 21:40:44 +0100 (CET) Subject: [GiNaC-devel] [SCM] GiNaC -- a C++ library for symbolic computations branch, ginac_1-5, updated. release_1-4-0-225-gc28e61d Message-ID: <20100305204045.0661AF00169@cebix.net> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GiNaC -- a C++ library for symbolic computations". The branch, ginac_1-5 has been updated via c28e61da33905ddc69abf893aaffec98aa30d053 (commit) from 630e59f66af9fcebb56a442f3aef433b0cc1c0e0 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c28e61da33905ddc69abf893aaffec98aa30d053 Author: Jens Vollinga Date: Fri Mar 5 21:37:19 2010 +0100 Copyright goes 2010. (cherry picked from commit 95ede03f00106be5fb087d76c86ca5c27edb9122) ----------------------------------------------------------------------- Summary of changes: check/bugme_chinrem_gcd.cpp | 2 +- check/check_inifcns.cpp | 2 +- check/check_lsolve.cpp | 2 +- check/check_matrices.cpp | 2 +- check/check_numeric.cpp | 2 +- check/error_report.h | 2 +- check/exam_archive.cpp | 2 +- check/exam_clifford.cpp | 2 +- check/exam_color.cpp | 2 +- check/exam_cra.cpp | 2 +- check/exam_differentiation.cpp | 2 +- check/exam_factor.cpp | 2 +- check/exam_hashmap.cpp | 2 +- check/exam_indexed.cpp | 2 +- check/exam_inifcns.cpp | 2 +- check/exam_inifcns_nstdsums.cpp | 2 +- check/exam_inifcns_nstdsums.h | 2 +- check/exam_lsolve.cpp | 2 +- check/exam_matrices.cpp | 2 +- check/exam_misc.cpp | 2 +- check/exam_mod_gcd.cpp | 2 +- check/exam_normalization.cpp | 2 +- check/exam_numeric.cpp | 2 +- check/exam_paranoia.cpp | 2 +- check/exam_polygcd.cpp | 2 +- check/exam_powerlaws.cpp | 2 +- check/exam_pseries.cpp | 2 +- check/exam_structure.cpp | 2 +- check/genex.cpp | 2 +- check/heur_gcd_bug.cpp | 2 +- check/match_bug.cpp | 2 +- check/mul_eval_memleak.cpp | 2 +- check/numeric_archive.cpp | 2 +- check/parser_bugs.cpp | 2 +- check/parser_memleak.cpp | 2 +- check/randomize_serials.cpp | 2 +- check/test_runner.h | 2 +- check/time_antipode.cpp | 2 +- check/time_dennyfliegner.cpp | 2 +- check/time_fateman_expand.cpp | 2 +- check/time_gammaseries.cpp | 2 +- check/time_hashmap.cpp | 2 +- check/time_lw_A.cpp | 2 +- check/time_lw_B.cpp | 2 +- check/time_lw_C.cpp | 2 +- check/time_lw_D.cpp | 2 +- check/time_lw_E.cpp | 2 +- check/time_lw_F.cpp | 2 +- check/time_lw_G.cpp | 2 +- check/time_lw_H.cpp | 2 +- check/time_lw_IJKL.cpp | 2 +- check/time_lw_M1.cpp | 2 +- check/time_lw_M2.cpp | 2 +- check/time_lw_N.cpp | 2 +- check/time_lw_O.cpp | 2 +- check/time_lw_P.cpp | 2 +- check/time_lw_Pprime.cpp | 2 +- check/time_lw_Q.cpp | 2 +- check/time_lw_Qprime.cpp | 2 +- check/time_parser.cpp | 2 +- check/time_toeplitz.cpp | 2 +- check/time_uvar_gcd.cpp | 2 +- check/time_vandermonde.cpp | 2 +- check/timer.cpp | 2 +- check/timer.h | 2 +- doc/tutorial/ginac.texi | 6 +++--- ginac/add.cpp | 2 +- ginac/add.h | 2 +- ginac/archive.cpp | 2 +- ginac/archive.h | 2 +- ginac/assertion.h | 2 +- ginac/basic.cpp | 2 +- ginac/basic.h | 2 +- ginac/class_info.h | 2 +- ginac/clifford.cpp | 2 +- ginac/clifford.h | 2 +- ginac/color.cpp | 2 +- ginac/color.h | 2 +- ginac/compiler.h | 2 +- ginac/constant.cpp | 2 +- ginac/constant.h | 2 +- ginac/container.h | 2 +- ginac/ex.cpp | 2 +- ginac/ex.h | 2 +- ginac/excompiler.cpp | 2 +- ginac/excompiler.h | 2 +- ginac/expair.cpp | 2 +- ginac/expair.h | 2 +- ginac/expairseq.cpp | 2 +- ginac/expairseq.h | 2 +- ginac/exprseq.cpp | 2 +- ginac/exprseq.h | 2 +- ginac/factor.cpp | 2 +- ginac/factor.h | 2 +- ginac/fail.cpp | 2 +- ginac/fail.h | 2 +- ginac/fderivative.cpp | 2 +- ginac/fderivative.h | 2 +- ginac/flags.h | 2 +- ginac/function.pl | 6 +++--- ginac/ginac.h | 2 +- ginac/hash_map.h | 2 +- ginac/idx.cpp | 2 +- ginac/idx.h | 2 +- ginac/indexed.cpp | 2 +- ginac/indexed.h | 2 +- ginac/inifcns.cpp | 2 +- ginac/inifcns.h | 2 +- ginac/inifcns_gamma.cpp | 2 +- ginac/inifcns_nstdsums.cpp | 2 +- ginac/inifcns_trans.cpp | 2 +- ginac/integral.cpp | 2 +- ginac/integral.h | 2 +- ginac/lst.cpp | 2 +- ginac/lst.h | 2 +- ginac/matrix.cpp | 2 +- ginac/matrix.h | 2 +- ginac/mul.cpp | 2 +- ginac/mul.h | 2 +- ginac/ncmul.cpp | 2 +- ginac/ncmul.h | 2 +- ginac/normal.cpp | 2 +- ginac/normal.h | 2 +- ginac/numeric.cpp | 2 +- ginac/numeric.h | 2 +- ginac/operators.cpp | 2 +- ginac/operators.h | 2 +- ginac/parser/debug.h | 2 +- ginac/parser/lexer.cpp | 2 +- ginac/parser/lexer.h | 2 +- ginac/parser/parse_binop_rhs.cpp | 2 +- ginac/parser/parse_context.cpp | 2 +- ginac/parser/parse_context.h | 2 +- ginac/parser/parser.cpp | 2 +- ginac/parser/parser.h | 2 +- ginac/parser/parser_compat.cpp | 2 +- ginac/polynomial/chinrem_gcd.cpp | 2 +- ginac/polynomial/chinrem_gcd.h | 2 +- ginac/polynomial/collect_vargs.cpp | 2 +- ginac/polynomial/collect_vargs.h | 2 +- ginac/polynomial/cra_garner.cpp | 2 +- ginac/polynomial/cra_garner.h | 2 +- ginac/polynomial/debug.h | 2 +- ginac/polynomial/divide_in_z_p.cpp | 2 +- ginac/polynomial/divide_in_z_p.h | 2 +- ginac/polynomial/euclid_gcd_wrap.h | 2 +- ginac/polynomial/eval_point_finder.h | 2 +- ginac/polynomial/eval_uvar.h | 2 +- ginac/polynomial/gcd_euclid.h | 2 +- ginac/polynomial/gcd_uvar.cpp | 2 +- ginac/polynomial/heur_gcd_uvar.h | 2 +- ginac/polynomial/interpolate_padic_uvar.h | 2 +- ginac/polynomial/mgcd.cpp | 2 +- ginac/polynomial/mod_gcd.cpp | 2 +- ginac/polynomial/mod_gcd.h | 2 +- ginac/polynomial/newton_interpolate.h | 2 +- ginac/polynomial/normalize.h | 2 +- ginac/polynomial/optimal_vars_finder.cpp | 2 +- ginac/polynomial/optimal_vars_finder.h | 2 +- ginac/polynomial/pgcd.cpp | 2 +- ginac/polynomial/pgcd.h | 2 +- ginac/polynomial/poly_cra.h | 2 +- ginac/polynomial/prem_uvar.h | 2 +- ginac/polynomial/primes_factory.h | 2 +- ginac/polynomial/primpart_content.cpp | 2 +- ginac/polynomial/remainder.h | 2 +- ginac/polynomial/ring_traits.h | 2 +- ginac/polynomial/smod_helpers.h | 2 +- ginac/polynomial/sr_gcd_uvar.h | 2 +- ginac/polynomial/upoly.h | 2 +- ginac/polynomial/upoly_io.cpp | 2 +- ginac/polynomial/upoly_io.h | 2 +- ginac/power.cpp | 2 +- ginac/power.h | 2 +- ginac/print.cpp | 2 +- ginac/print.h | 2 +- ginac/pseries.cpp | 2 +- ginac/pseries.h | 2 +- ginac/ptr.h | 2 +- ginac/registrar.cpp | 2 +- ginac/registrar.h | 2 +- ginac/relational.cpp | 2 +- ginac/relational.h | 2 +- ginac/remember.cpp | 2 +- ginac/remember.h | 2 +- ginac/structure.h | 2 +- ginac/symbol.cpp | 2 +- ginac/symbol.h | 2 +- ginac/symmetry.cpp | 2 +- ginac/symmetry.h | 2 +- ginac/tensor.cpp | 2 +- ginac/tensor.h | 2 +- ginac/tostring.h | 2 +- ginac/utils.cpp | 2 +- ginac/utils.h | 2 +- ginac/wildcard.cpp | 2 +- ginac/wildcard.h | 2 +- ginsh/ginsh.1.in | 2 +- ginsh/ginsh.h | 2 +- ginsh/ginsh_extensions.h | 2 +- ginsh/ginsh_lexer.ll | 2 +- ginsh/ginsh_parser.yy | 4 ++-- tools/viewgar.1.in | 2 +- tools/viewgar.cpp | 2 +- 204 files changed, 209 insertions(+), 209 deletions(-) hooks/post-receive -- GiNaC -- a C++ library for symbolic computations From git at ginac.de Fri Mar 5 21:40:45 2010 From: git at ginac.de (Jens Vollinga) Date: Fri, 5 Mar 2010 21:40:45 +0100 (CET) Subject: [GiNaC-devel] [SCM] GiNaC -- a C++ library for symbolic computations branch, master, updated. release_1-4-0-205-g95ede03 Message-ID: <20100305204045.809B2F00167@cebix.net> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GiNaC -- a C++ library for symbolic computations". The branch, master has been updated via 95ede03f00106be5fb087d76c86ca5c27edb9122 (commit) from 6afbb9793e359cf388462c471ea256a6662b0cd4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 95ede03f00106be5fb087d76c86ca5c27edb9122 Author: Jens Vollinga Date: Fri Mar 5 21:37:19 2010 +0100 Copyright goes 2010. ----------------------------------------------------------------------- Summary of changes: check/bugme_chinrem_gcd.cpp | 2 +- check/check_inifcns.cpp | 2 +- check/check_lsolve.cpp | 2 +- check/check_matrices.cpp | 2 +- check/check_numeric.cpp | 2 +- check/error_report.h | 2 +- check/exam_archive.cpp | 2 +- check/exam_clifford.cpp | 2 +- check/exam_color.cpp | 2 +- check/exam_cra.cpp | 2 +- check/exam_differentiation.cpp | 2 +- check/exam_factor.cpp | 2 +- check/exam_hashmap.cpp | 2 +- check/exam_indexed.cpp | 2 +- check/exam_inifcns.cpp | 2 +- check/exam_inifcns_nstdsums.cpp | 2 +- check/exam_inifcns_nstdsums.h | 2 +- check/exam_lsolve.cpp | 2 +- check/exam_matrices.cpp | 2 +- check/exam_misc.cpp | 2 +- check/exam_mod_gcd.cpp | 2 +- check/exam_normalization.cpp | 2 +- check/exam_numeric.cpp | 2 +- check/exam_paranoia.cpp | 2 +- check/exam_polygcd.cpp | 2 +- check/exam_powerlaws.cpp | 2 +- check/exam_pseries.cpp | 2 +- check/exam_structure.cpp | 2 +- check/genex.cpp | 2 +- check/heur_gcd_bug.cpp | 2 +- check/match_bug.cpp | 2 +- check/mul_eval_memleak.cpp | 2 +- check/numeric_archive.cpp | 2 +- check/parser_bugs.cpp | 2 +- check/parser_memleak.cpp | 2 +- check/randomize_serials.cpp | 2 +- check/test_runner.h | 2 +- check/time_antipode.cpp | 2 +- check/time_dennyfliegner.cpp | 2 +- check/time_fateman_expand.cpp | 2 +- check/time_gammaseries.cpp | 2 +- check/time_hashmap.cpp | 2 +- check/time_lw_A.cpp | 2 +- check/time_lw_B.cpp | 2 +- check/time_lw_C.cpp | 2 +- check/time_lw_D.cpp | 2 +- check/time_lw_E.cpp | 2 +- check/time_lw_F.cpp | 2 +- check/time_lw_G.cpp | 2 +- check/time_lw_H.cpp | 2 +- check/time_lw_IJKL.cpp | 2 +- check/time_lw_M1.cpp | 2 +- check/time_lw_M2.cpp | 2 +- check/time_lw_N.cpp | 2 +- check/time_lw_O.cpp | 2 +- check/time_lw_P.cpp | 2 +- check/time_lw_Pprime.cpp | 2 +- check/time_lw_Q.cpp | 2 +- check/time_lw_Qprime.cpp | 2 +- check/time_parser.cpp | 2 +- check/time_toeplitz.cpp | 2 +- check/time_uvar_gcd.cpp | 2 +- check/time_vandermonde.cpp | 2 +- check/timer.cpp | 2 +- check/timer.h | 2 +- doc/tutorial/ginac.texi | 6 +++--- ginac/add.cpp | 2 +- ginac/add.h | 2 +- ginac/archive.cpp | 2 +- ginac/archive.h | 2 +- ginac/assertion.h | 2 +- ginac/basic.cpp | 2 +- ginac/basic.h | 2 +- ginac/class_info.h | 2 +- ginac/clifford.cpp | 2 +- ginac/clifford.h | 2 +- ginac/color.cpp | 2 +- ginac/color.h | 2 +- ginac/compiler.h | 2 +- ginac/constant.cpp | 2 +- ginac/constant.h | 2 +- ginac/container.h | 2 +- ginac/ex.cpp | 2 +- ginac/ex.h | 2 +- ginac/excompiler.cpp | 2 +- ginac/excompiler.h | 2 +- ginac/expair.cpp | 2 +- ginac/expair.h | 2 +- ginac/expairseq.cpp | 2 +- ginac/expairseq.h | 2 +- ginac/exprseq.cpp | 2 +- ginac/exprseq.h | 2 +- ginac/factor.cpp | 2 +- ginac/factor.h | 2 +- ginac/fail.cpp | 2 +- ginac/fail.h | 2 +- ginac/fderivative.cpp | 2 +- ginac/fderivative.h | 2 +- ginac/flags.h | 2 +- ginac/function.pl | 6 +++--- ginac/ginac.h | 2 +- ginac/hash_map.h | 2 +- ginac/idx.cpp | 2 +- ginac/idx.h | 2 +- ginac/indexed.cpp | 2 +- ginac/indexed.h | 2 +- ginac/inifcns.cpp | 2 +- ginac/inifcns.h | 2 +- ginac/inifcns_gamma.cpp | 2 +- ginac/inifcns_nstdsums.cpp | 2 +- ginac/inifcns_trans.cpp | 2 +- ginac/integral.cpp | 2 +- ginac/integral.h | 2 +- ginac/lst.cpp | 2 +- ginac/lst.h | 2 +- ginac/matrix.cpp | 2 +- ginac/matrix.h | 2 +- ginac/mul.cpp | 2 +- ginac/mul.h | 2 +- ginac/ncmul.cpp | 2 +- ginac/ncmul.h | 2 +- ginac/normal.cpp | 2 +- ginac/normal.h | 2 +- ginac/numeric.cpp | 2 +- ginac/numeric.h | 2 +- ginac/operators.cpp | 2 +- ginac/operators.h | 2 +- ginac/parser/debug.h | 2 +- ginac/parser/lexer.cpp | 2 +- ginac/parser/lexer.h | 2 +- ginac/parser/parse_binop_rhs.cpp | 2 +- ginac/parser/parse_context.cpp | 2 +- ginac/parser/parse_context.h | 2 +- ginac/parser/parser.cpp | 2 +- ginac/parser/parser.h | 2 +- ginac/parser/parser_compat.cpp | 2 +- ginac/polynomial/chinrem_gcd.cpp | 2 +- ginac/polynomial/chinrem_gcd.h | 2 +- ginac/polynomial/collect_vargs.cpp | 2 +- ginac/polynomial/collect_vargs.h | 2 +- ginac/polynomial/cra_garner.cpp | 2 +- ginac/polynomial/cra_garner.h | 2 +- ginac/polynomial/debug.h | 2 +- ginac/polynomial/divide_in_z_p.cpp | 2 +- ginac/polynomial/divide_in_z_p.h | 2 +- ginac/polynomial/euclid_gcd_wrap.h | 2 +- ginac/polynomial/eval_point_finder.h | 2 +- ginac/polynomial/eval_uvar.h | 2 +- ginac/polynomial/gcd_euclid.h | 2 +- ginac/polynomial/gcd_uvar.cpp | 2 +- ginac/polynomial/heur_gcd_uvar.h | 2 +- ginac/polynomial/interpolate_padic_uvar.h | 2 +- ginac/polynomial/mgcd.cpp | 2 +- ginac/polynomial/mod_gcd.cpp | 2 +- ginac/polynomial/mod_gcd.h | 2 +- ginac/polynomial/newton_interpolate.h | 2 +- ginac/polynomial/normalize.h | 2 +- ginac/polynomial/optimal_vars_finder.cpp | 2 +- ginac/polynomial/optimal_vars_finder.h | 2 +- ginac/polynomial/pgcd.cpp | 2 +- ginac/polynomial/pgcd.h | 2 +- ginac/polynomial/poly_cra.h | 2 +- ginac/polynomial/prem_uvar.h | 2 +- ginac/polynomial/primes_factory.h | 2 +- ginac/polynomial/primpart_content.cpp | 2 +- ginac/polynomial/remainder.h | 2 +- ginac/polynomial/ring_traits.h | 2 +- ginac/polynomial/smod_helpers.h | 2 +- ginac/polynomial/sr_gcd_uvar.h | 2 +- ginac/polynomial/upoly.h | 2 +- ginac/polynomial/upoly_io.cpp | 2 +- ginac/polynomial/upoly_io.h | 2 +- ginac/power.cpp | 2 +- ginac/power.h | 2 +- ginac/print.cpp | 2 +- ginac/print.h | 2 +- ginac/pseries.cpp | 2 +- ginac/pseries.h | 2 +- ginac/ptr.h | 2 +- ginac/registrar.cpp | 2 +- ginac/registrar.h | 2 +- ginac/relational.cpp | 2 +- ginac/relational.h | 2 +- ginac/remember.cpp | 2 +- ginac/remember.h | 2 +- ginac/structure.h | 2 +- ginac/symbol.cpp | 2 +- ginac/symbol.h | 2 +- ginac/symmetry.cpp | 2 +- ginac/symmetry.h | 2 +- ginac/tensor.cpp | 2 +- ginac/tensor.h | 2 +- ginac/tostring.h | 2 +- ginac/utils.cpp | 2 +- ginac/utils.h | 2 +- ginac/wildcard.cpp | 2 +- ginac/wildcard.h | 2 +- ginsh/ginsh.1.in | 2 +- ginsh/ginsh.h | 2 +- ginsh/ginsh_extensions.h | 2 +- ginsh/ginsh_lexer.ll | 2 +- ginsh/ginsh_parser.yy | 4 ++-- tools/viewgar.1.in | 2 +- tools/viewgar.cpp | 2 +- 204 files changed, 209 insertions(+), 209 deletions(-) hooks/post-receive -- GiNaC -- a C++ library for symbolic computations From g.c.b.at.work at gmail.com Thu Mar 25 00:17:28 2010 From: g.c.b.at.work at gmail.com (G B) Date: Wed, 24 Mar 2010 16:17:28 -0700 Subject: [GiNaC-devel] atan2 throws divide by zero Message-ID: <485c07ff1003241617h6a18df75s6cce0f010ed584d9@mail.gmail.com> I stumbled upon this using Sage, but developers there have traced it to a problem in GiNaC by running the following in ginsh: > atan2(-Pi,0); The response is: power::eval(): division by zero atan2 appears to work for other values, including (positive) (Pi,0), but (-Pi,0) fails. -------------- next part -------------- An HTML attachment was scrubbed... URL: From git at ginac.de Thu Mar 25 10:38:40 2010 From: git at ginac.de (Jens Vollinga) Date: Thu, 25 Mar 2010 10:38:40 +0100 (CET) Subject: [GiNaC-devel] [SCM] GiNaC -- a C++ library for symbolic computations branch, ginac_1-5, updated. release_1-4-0-226-geff5558 Message-ID: <20100325093840.4A8CBF0016F@cebix.net> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GiNaC -- a C++ library for symbolic computations". The branch, ginac_1-5 has been updated via eff5558e5d0c6dcc70883962ed3a72a1cc6ad03b (commit) from c28e61da33905ddc69abf893aaffec98aa30d053 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit eff5558e5d0c6dcc70883962ed3a72a1cc6ad03b Author: Jens Vollinga Date: Thu Mar 25 10:36:41 2010 +0100 Fixed a bug in atan2. It gave a division by zero error for calls like atan2(-Pi,0), because arguments like -Pi were not recognized (via info_flags) as negative but as real nevertheless. (cherry picked from commit 9e13d46552bb7852399867b9eb355732b9ded59e) ----------------------------------------------------------------------- Summary of changes: ginac/inifcns_trans.cpp | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) hooks/post-receive -- GiNaC -- a C++ library for symbolic computations From git at ginac.de Thu Mar 25 10:38:40 2010 From: git at ginac.de (Jens Vollinga) Date: Thu, 25 Mar 2010 10:38:40 +0100 (CET) Subject: [GiNaC-devel] [SCM] GiNaC -- a C++ library for symbolic computations branch, master, updated. release_1-4-0-206-g9e13d46 Message-ID: <20100325093840.9A17EF0016C@cebix.net> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GiNaC -- a C++ library for symbolic computations". The branch, master has been updated via 9e13d46552bb7852399867b9eb355732b9ded59e (commit) from 95ede03f00106be5fb087d76c86ca5c27edb9122 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 9e13d46552bb7852399867b9eb355732b9ded59e Author: Jens Vollinga Date: Thu Mar 25 10:36:41 2010 +0100 Fixed a bug in atan2. It gave a division by zero error for calls like atan2(-Pi,0), because arguments like -Pi were not recognized (via info_flags) as negative but as real nevertheless. ----------------------------------------------------------------------- Summary of changes: ginac/inifcns_trans.cpp | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) hooks/post-receive -- GiNaC -- a C++ library for symbolic computations From jensv at nikhef.nl Thu Mar 25 10:44:16 2010 From: jensv at nikhef.nl (Jens Vollinga) Date: Thu, 25 Mar 2010 10:44:16 +0100 Subject: [GiNaC-devel] atan2 throws divide by zero In-Reply-To: <485c07ff1003241617h6a18df75s6cce0f010ed584d9@mail.gmail.com> References: <485c07ff1003241617h6a18df75s6cce0f010ed584d9@mail.gmail.com> Message-ID: <4BAB3070.1010702@nikhef.nl> Hi GeeBee, Am 25.03.2010 00:17, schrieb G B: > I stumbled upon this using Sage, but developers there have traced it to > a problem in GiNaC by running the following in ginsh: > > > atan2(-Pi,0); > > The response is: > power::eval(): division by zero > > atan2 appears to work for other values, including (positive) (Pi,0), but > (-Pi,0) fails. thanks for the bug report. I fixed that bug in the repository. Finally it is time to make a new release ... :-) Regards, Jens From kreckel at ginac.de Thu Mar 25 22:41:06 2010 From: kreckel at ginac.de (Richard B. Kreckel) Date: Thu, 25 Mar 2010 22:41:06 +0100 Subject: [GiNaC-devel] atan2 throws divide by zero In-Reply-To: <4BAB3070.1010702@nikhef.nl> References: <485c07ff1003241617h6a18df75s6cce0f010ed584d9@mail.gmail.com> <4BAB3070.1010702@nikhef.nl> Message-ID: <4BABD872.9020204@ginac.de> Hi! Jens Vollinga wrote: > Am 25.03.2010 00:17, schrieb G B: >> I stumbled upon this using Sage, but developers there have traced it to >> a problem in GiNaC by running the following in ginsh: >> >> > atan2(-Pi,0); >> >> The response is: >> power::eval(): division by zero >> >> atan2 appears to work for other values, including (positive) (Pi,0), but >> (-Pi,0) fails. > > thanks for the bug report. I fixed that bug in the repository. > Finally it is time to make a new release ... :-) Wait a minute, I think your fix is wrong. It assumes that if y.info(info_flags::real) and not y.info(info_flags::positive) and not y.is_zero(), then y must be negative. But that's not correct, because info returns true if the predicate is known to be true and false if it os known to be false or if it is unknown. Consider, for instance, positive symbols a and b and ex x = a-b. So, the patch introduces actually a new bug. What's really wrong is the last part in atan2_eval, where atan(real, real) -> atan(y/x) +/- Pi. Ironically, it is suffering from the same mistake as your patch. This ought to fix it: @@ -877,10 +877,13 @@ static ex atan2_eval(const ex & y, const ex & x) if (y.info(info_flags::real) && x.info(info_flags::real)) { if (x.info(info_flags::positive)) return atan(y/x); - else if (y.info(info_flags::positive)) - return atan(y/x)+Pi; - else - return atan(y/x)-Pi; + + if (x.info(info_flags::negative)) { + if (y.info(info_flags::positive)) + return atan(y/x)+Pi; + if (y.info(info_flags::negative)) + return atan(y/x)-Pi; + } } return atan2(y, x).hold(); It appears that this bug has been latent until Vladimir's patch c7299e51d5ecf6. The bad news is that with my patch atan2(-Pi,0) isn't simplified at all any more. One could argue that GiNaC should evaluate ex(-Pi).info(info_flags::negative) -> true. This would make atan2(-Pi,0) evaluate to -Pi/2 again. -richy. -- Richard B. Kreckel From git at ginac.de Thu Mar 25 23:17:38 2010 From: git at ginac.de (Richard B. Kreckel) Date: Thu, 25 Mar 2010 23:17:38 +0100 (CET) Subject: [GiNaC-devel] [SCM] GiNaC -- a C++ library for symbolic computations branch, ginac_1-5, updated. release_1-4-0-227-gcb39052 Message-ID: <20100325221738.47977F00205@cebix.net> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GiNaC -- a C++ library for symbolic computations". The branch, ginac_1-5 has been updated via cb390522ea713a08a43799fbc1884fb7ad480784 (commit) from eff5558e5d0c6dcc70883962ed3a72a1cc6ad03b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit cb390522ea713a08a43799fbc1884fb7ad480784 Author: Richard Kreckel Date: Thu Mar 25 23:08:54 2010 +0100 Really fixed the atan2(-Pi, 0) bug. The problem was that atan2_eval assumed that if y is real and not positive, it must be negative. But this neglects the fact that in symbolic compution it may just not be possible to determine the sign. Now, the expression is returned as it is. Ugly, but correct. ----------------------------------------------------------------------- Summary of changes: ginac/inifcns_trans.cpp | 39 +++++++++++++++++++++------------------ 1 files changed, 21 insertions(+), 18 deletions(-) hooks/post-receive -- GiNaC -- a C++ library for symbolic computations From git at ginac.de Thu Mar 25 23:17:38 2010 From: git at ginac.de (Richard B. Kreckel) Date: Thu, 25 Mar 2010 23:17:38 +0100 (CET) Subject: [GiNaC-devel] [SCM] GiNaC -- a C++ library for symbolic computations branch, master, updated. release_1-4-0-209-g704fe31 Message-ID: <20100325221738.7F118F0016F@cebix.net> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GiNaC -- a C++ library for symbolic computations". The branch, master has been updated via 704fe31c78553ffe2058c72bc4d17e6a1ae31350 (commit) via 7b3b8236e72d939ee9a9c0e83ca3bcf66eec1ce2 (commit) via 67edef78ce992a8f6ad704bfac228b8dec6eacd2 (commit) from 9e13d46552bb7852399867b9eb355732b9ded59e (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 704fe31c78553ffe2058c72bc4d17e6a1ae31350 Author: Richard Kreckel Date: Thu Mar 25 23:08:54 2010 +0100 Really fixed the atan2(-Pi, 0) bug. The problem was that atan2_eval assumed that if y is real and not positive, it must be negative. But this neglects the fact that in symbolic compution it may just not be possible to determine the sign. Now, the expression is returned as it is. Ugly, but correct. commit 7b3b8236e72d939ee9a9c0e83ca3bcf66eec1ce2 Merge: 67edef78ce992a8f6ad704bfac228b8dec6eacd2 9e13d46552bb7852399867b9eb355732b9ded59e Author: Richard Kreckel Date: Thu Mar 25 22:23:13 2010 +0100 Merge branch 'master' of ssh://www.ginac.de/srv/git/ginac commit 67edef78ce992a8f6ad704bfac228b8dec6eacd2 Author: Richard Kreckel Date: Sat Feb 27 15:00:22 2010 +0100 Update copyright notice. ----------------------------------------------------------------------- Summary of changes: ginac/inifcns_trans.cpp | 39 +++++++++++++++++++++------------------ 1 files changed, 21 insertions(+), 18 deletions(-) hooks/post-receive -- GiNaC -- a C++ library for symbolic computations From g.c.b.at.work at gmail.com Fri Mar 26 01:11:21 2010 From: g.c.b.at.work at gmail.com (G B) Date: Thu, 25 Mar 2010 17:11:21 -0700 Subject: [GiNaC-devel] atan2 throws divide by zero In-Reply-To: <4BABD872.9020204@ginac.de> References: <485c07ff1003241617h6a18df75s6cce0f010ed584d9@mail.gmail.com> <4BAB3070.1010702@nikhef.nl> <4BABD872.9020204@ginac.de> Message-ID: <485c07ff1003251711i3e7b18d1t2b9be707ca1df079@mail.gmail.com> Thanks, All. I'll look forward to the changes percolating through. Cheers-- Greg On Thu, Mar 25, 2010 at 2:41 PM, Richard B. Kreckel wrote: > Hi! > > > Jens Vollinga wrote: > >> Am 25.03.2010 00:17, schrieb G B: >> >>> I stumbled upon this using Sage, but developers there have traced it to >>> a problem in GiNaC by running the following in ginsh: >>> >>> > atan2(-Pi,0); >>> >>> The response is: >>> power::eval(): division by zero >>> >>> atan2 appears to work for other values, including (positive) (Pi,0), but >>> (-Pi,0) fails. >>> >> >> thanks for the bug report. I fixed that bug in the repository. >> Finally it is time to make a new release ... :-) >> > > Wait a minute, I think your fix is wrong. It assumes that if y.info(info_flags::real) > and not y.info(info_flags::positive) and not y.is_zero(), then y must be > negative. But that's not correct, because info returns true if the predicate > is known to be true and false if it os known to be false or if it is > unknown. Consider, for instance, positive symbols a and b and ex x = a-b. > So, the patch introduces actually a new bug. > > What's really wrong is the last part in atan2_eval, where atan(real, real) > -> atan(y/x) +/- Pi. Ironically, it is suffering from the same mistake as > your patch. This ought to fix it: > > @@ -877,10 +877,13 @@ static ex atan2_eval(const ex & y, const ex & x) > if (y.info(info_flags::real) && x.info(info_flags::real)) { > if (x.info(info_flags::positive)) > return atan(y/x); > - else if (y.info(info_flags::positive)) > - return atan(y/x)+Pi; > - else > - return atan(y/x)-Pi; > + > + if (x.info(info_flags::negative)) { > + if (y.info(info_flags::positive)) > + return atan(y/x)+Pi; > + if (y.info(info_flags::negative)) > + return atan(y/x)-Pi; > + } > } > > return atan2(y, x).hold(); > > It appears that this bug has been latent until Vladimir's patch > c7299e51d5ecf6. The bad news is that with my patch atan2(-Pi,0) isn't > simplified at all any more. One could argue that GiNaC should evaluate > ex(-Pi).info(info_flags::negative) -> true. This would make atan2(-Pi,0) > evaluate to -Pi/2 again. > > -richy. > -- > Richard B. Kreckel > > > _______________________________________________ > GiNaC-devel mailing list > GiNaC-devel at ginac.de > https://www.cebix.net/mailman/listinfo/ginac-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From git at ginac.de Mon Mar 29 01:39:42 2010 From: git at ginac.de (Jens Vollinga) Date: Mon, 29 Mar 2010 01:39:42 +0200 (CEST) Subject: [GiNaC-devel] [SCM] GiNaC -- a C++ library for symbolic computations branch, ginac_1-5, updated. release_1-4-0-228-gf30ea8e Message-ID: <20100328233942.F1878F002E0@cebix.net> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GiNaC -- a C++ library for symbolic computations". The branch, ginac_1-5 has been updated via f30ea8e711499ac166c4cd54357a4bc6f5e7264c (commit) from cb390522ea713a08a43799fbc1884fb7ad480784 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit f30ea8e711499ac166c4cd54357a4bc6f5e7264c Author: Jens Vollinga Date: Mon Mar 29 00:21:18 2010 +0200 Products (class mul) now answer correctly to info_flags::negative and info_flags::negint. (cherry picked from commit 8a30acc990818792ec4e8f8f4d48f5dd8286dbed) ----------------------------------------------------------------------- Summary of changes: ginac/mul.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 files changed, 34 insertions(+), 0 deletions(-) hooks/post-receive -- GiNaC -- a C++ library for symbolic computations From git at ginac.de Mon Mar 29 01:39:43 2010 From: git at ginac.de (Jens Vollinga) Date: Mon, 29 Mar 2010 01:39:43 +0200 (CEST) Subject: [GiNaC-devel] [SCM] GiNaC -- a C++ library for symbolic computations branch, master, updated. release_1-4-0-210-g8a30acc Message-ID: <20100328233943.35C83F0027F@cebix.net> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GiNaC -- a C++ library for symbolic computations". The branch, master has been updated via 8a30acc990818792ec4e8f8f4d48f5dd8286dbed (commit) from 704fe31c78553ffe2058c72bc4d17e6a1ae31350 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 8a30acc990818792ec4e8f8f4d48f5dd8286dbed Author: Jens Vollinga Date: Mon Mar 29 00:21:18 2010 +0200 Products (class mul) now answer correctly to info_flags::negative and info_flags::negint. ----------------------------------------------------------------------- Summary of changes: ginac/mul.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 files changed, 34 insertions(+), 0 deletions(-) hooks/post-receive -- GiNaC -- a C++ library for symbolic computations From git at ginac.de Mon Mar 29 02:54:50 2010 From: git at ginac.de (Jens Vollinga) Date: Mon, 29 Mar 2010 02:54:50 +0200 (CEST) Subject: [GiNaC-devel] [SCM] GiNaC -- a C++ library for symbolic computations branch, ginac_1-5, updated. release_1-4-0-229-gc48424b Message-ID: <20100329005450.EDF0BF002E0@cebix.net> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GiNaC -- a C++ library for symbolic computations". The branch, ginac_1-5 has been updated via c48424be67d8c6b05b0e040acd49b3e904acf6f9 (commit) from f30ea8e711499ac166c4cd54357a4bc6f5e7264c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c48424be67d8c6b05b0e040acd49b3e904acf6f9 Author: Jens Vollinga Date: Mon Mar 29 02:34:52 2010 +0200 Preparing for release 1.5.7. ----------------------------------------------------------------------- Summary of changes: NEWS | 6 ++++++ configure.ac | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) hooks/post-receive -- GiNaC -- a C++ library for symbolic computations From git at ginac.de Mon Mar 29 21:58:12 2010 From: git at ginac.de (Jens Vollinga) Date: Mon, 29 Mar 2010 21:58:12 +0200 (CEST) Subject: [GiNaC-devel] [SCM] GiNaC -- a C++ library for symbolic computations tag, release_1-5-7, created. release_1-4-0-229-gc48424b Message-ID: <20100329195812.A012AF002E0@cebix.net> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GiNaC -- a C++ library for symbolic computations". The tag, release_1-5-7 has been created at c48424be67d8c6b05b0e040acd49b3e904acf6f9 (commit) - Log ----------------------------------------------------------------- commit c48424be67d8c6b05b0e040acd49b3e904acf6f9 Author: Jens Vollinga Date: Mon Mar 29 02:34:52 2010 +0200 Preparing for release 1.5.7. ----------------------------------------------------------------------- hooks/post-receive -- GiNaC -- a C++ library for symbolic computations From jensv at nikhef.nl Mon Mar 29 22:01:47 2010 From: jensv at nikhef.nl (Jens Vollinga) Date: Mon, 29 Mar 2010 22:01:47 +0200 Subject: [GiNaC-devel] GiNaC release 1.5.7 Message-ID: <4BB1072B.30202@nikhef.nl> Hi everybody, GiNaC 1.5.7 is out and available. The changes are: * Fixed a bug in the GCD code (infinite loop in pgcd()). * Fixed a bug in atan2() (division by zero error for atan2(x,0) if x is a negative and composite term). * Products now correctly set info_flags::negative and info_flags::negint. As always, this release can be downloaded from http://www.ginac.de/Download.html Best wishes, Jens