From: Alan W. I. <ir...@be...> - 2003-09-17 19:33:31
|
For the 8th examples for all language interfaces, wouldn't it be simpler to check whether the argument of the log was zero or less for the rosen case? Here is the code in question (for the python case where the code is less obfuscated than the C case, but essentially the same): z = log((1. - x)*(1. - x) + 100 * (x*x - y)*(x*x - y)) Each factor in the argument is proportional to the square of some quantity so the argument must be zero or positive for perfect floating-point arithmetic. Instead of worrying about whether the result is a NaN or inf when the argument is zero (or less in an imperfect world), why not simply check the argument before taking the log? z = (1. - x)*(1. - x) + 100 * (x*x - y)*(x*x - y) if(z <= 0. (for any array element)) replace that array element by -5, otherwise replace by z = log(z). What do you think of this simplification, Joao? In an attempt to debug what was going on for the 8th C++ example I used this simplification in examples/c++/x08.cc. It turned out the screwy RH7.3 results for this example were due to a different problem (uninitialized variables) which I fixed, and now RH7.3 produces identical results to Debian stable for this example. I left the log argument check in my cvs commit of x08.cc subject to additional discussion here. Alan __________________________ Alan W. Irwin email: ir...@be... phone: 250-727-2902 Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the PLplot scientific plotting software package (plplot.org), the Yorick front-end to PLplot (yplot.sf.net), the Loads of Linux Links project (loll.sf.net), and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ |
From: <jc...@fe...> - 2003-09-18 14:14:48
|
On Wednesday 17 September 2003 20:32, Alan W. Irwin wrote: | For the 8th examples for all language interfaces, wouldn't it be | simpler to check whether the argument of the log was zero or less for | the rosen case? | | Here is the code in question (for the python case where the code is | less obfuscated than the C case, but essentially the same): | | z = log((1. - x)*(1. - x) + 100 * (x*x - y)*(x*x - y)) | | Each factor in the argument is proportional to the square of some | quantity so the argument must be zero or positive for perfect | floating-point arithmetic. | | Instead of worrying about whether the result is a NaN or inf when the | argument is zero (or less in an imperfect world), why not simply | check the argument before taking the log? | | z = (1. - x)*(1. - x) + 100 * (x*x - y)*(x*x - y) | if(z <= 0. (for any array element)) replace that array element by -5, | otherwise replace by z = log(z). | | What do you think of this simplification, Joao? That's fine for me. | In an attempt to debug what was going on for the 8th C++ example BTH, on my system, SuSE-8.2 with gcc-3.3, some c++ examples don't compile because of "endl" being undeclared. The fix is to use "std::endl" instead, or use "using namespace std;" after the include directives (and removing all "std::" from the file) Joao | I | used this simplification in examples/c++/x08.cc. It turned out the | screwy RH7.3 results for this example were due to a different problem | (uninitialized variables) which I fixed, and now RH7.3 produces | identical results to Debian stable for this example. I left the log | argument check in my cvs commit of x08.cc subject to additional | discussion here. | | Alan | __________________________ | Alan W. Irwin | email: ir...@be... | phone: 250-727-2902 | | Astronomical research affiliation with Department of Physics and | Astronomy, University of Victoria (astrowww.phys.uvic.ca). | | Programming affiliations with the PLplot scientific plotting software | package (plplot.org), the Yorick front-end to PLplot (yplot.sf.net), | the Loads of Linux Links project (loll.sf.net), and the Linux | Brochure Project (lbproject.sf.net). | __________________________ | | Linux-powered Science | __________________________ | | | ------------------------------------------------------- | This sf.net email is sponsored by:ThinkGeek | Welcome to geek heaven. | http://thinkgeek.com/sf | _______________________________________________ | Plplot-devel mailing list | Plp...@li... | https://lists.sourceforge.net/lists/listinfo/plplot-devel |
From: Alan W. I. <ir...@be...> - 2003-09-18 16:15:05
|
On 2003-09-18 15:20+0100 Jo=E3o Cardoso wrote: > BTH, on my system, SuSE-8.2 with gcc-3.3, some c++ examples don't > compile because of "endl" being undeclared. The fix is to use > "std::endl" instead, or use "using namespace std;" after the include > directives (and removing all "std::" from the file) Thanks for that suggestion. I tried that endl =3D=3D> std::endl change for= my gcc-2.9.5 version and it worked here as well so I committed it. Alan __________________________ Alan W. Irwin email: ir...@be... phone: 250-727-2902 Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the PLplot scientific plotting software package (plplot.org), the Yorick front-end to PLplot (yplot.sf.net), the Loads of Linux Links project (loll.sf.net), and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ |
From: Alan W. I. <ir...@be...> - 2003-09-18 18:04:27
|
On 2003-09-18 15:20+0100 Jo=E3o Cardoso wrote: > On Wednesday 17 September 2003 20:32, Alan W. Irwin wrote: > | Instead of worrying about whether the result is a NaN or inf when the > | argument is zero (or less in an imperfect world), why not simply > | check the argument before taking the log? > > That's fine for me. Argument check now done for c, java, python, and tcl 8th examples. The c++ eighth example was done before. I will leave the corresponding change to the eighth octave example up to Joao since I didn't quite understand that syntax (and because my head is ringing already from all the rapid language changes this morning...;-)) Alan __________________________ Alan W. Irwin email: ir...@be... phone: 250-727-2902 Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the PLplot scientific plotting software package (plplot.org), the Yorick front-end to PLplot (yplot.sf.net), the Loads of Linux Links project (loll.sf.net), and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ |
From: Maurice L. <mj...@ga...> - 2003-09-20 19:27:27
|
Jo=E3o Cardoso writes: > BTH, on my system, SuSE-8.2 with gcc-3.3, some c++ examples don't=20= > compile because of "endl" being undeclared. The fix is to use=20 > "std::endl" instead, or use "using namespace std;" after the include= =20 > directives (and removing all "std::" from the file) The way I like best for this situation is: - generally put "using namespace std;" after the include directives in the C++ source files (never in the header file). I hate having a= ll those std::endl's and such all over the place. - in header files and function declarations, use explicit std:: namesp= ace declarations. In the former, it's necessary, and in the latter lets= you use the exact same arglist in the source file declaration as the hea= der file, good for avoiding errors. --=20 Maurice LeBrun Lightspeed Semiconductor Corp |
From: Andrew R. <an...@co...> - 2003-09-22 08:23:40
|
On Sat, Sep 20, 2003 at 02:26:47PM -0500, Maurice LeBrun wrote: > Jo?o Cardoso writes: > > BTH, on my system, SuSE-8.2 with gcc-3.3, some c++ examples don't > > compile because of "endl" being undeclared. The fix is to use > > "std::endl" instead, or use "using namespace std;" after the include > > directives (and removing all "std::" from the file) > > The way I like best for this situation is: > - generally put "using namespace std;" after the include directives > in the C++ source files (never in the header file). I hate having all > those std::endl's and such all over the place. > > - in header files and function declarations, use explicit std:: namespace > declarations. In the former, it's necessary, and in the latter lets you > use the exact same arglist in the source file declaration as the header > file, good for avoiding errors. Yeah - sorry about the missing std:: . GCC 2.95 isn't that picky about it. I also realised I'd forgot to add any to example 21. Personally I'm happy to switch to using namespace std if people think that is neater. I've converted the examples and I'll send a patch to Alan. I think for plstream.cc and plstream.h this is not an issue as they basically don't make use of anything other than the plplot API. I think there is one occurence of std:: in plstream.cc which should probably be changed for consistency. Cheers Andrew |
From: Alan W. I. <ir...@be...> - 2003-09-22 17:08:31
|
On 2003-09-22 09:23+0100 Andrew Ross wrote: > On Sat, Sep 20, 2003 at 02:26:47PM -0500, Maurice LeBrun wrote: > > Jo?o Cardoso writes: > > > BTH, on my system, SuSE-8.2 with gcc-3.3, some c++ examples don't > > > compile because of "endl" being undeclared. The fix is to use > > > "std::endl" instead, or use "using namespace std;" after the include > > > directives (and removing all "std::" from the file) > > > > The way I like best for this situation is: > > - generally put "using namespace std;" after the include directives > > in the C++ source files (never in the header file). I hate having all > > those std::endl's and such all over the place. > > > > - in header files and function declarations, use explicit std:: namespace > > declarations. In the former, it's necessary, and in the latter lets you > > use the exact same arglist in the source file declaration as the header > > file, good for avoiding errors. > > Yeah - sorry about the missing std:: . GCC 2.95 isn't that picky about > it. I also realised I'd forgot to add any to example 21. Personally I'm > happy to switch to using namespace std if people think that is neater. > I've converted the examples and I'll send a patch to Alan. I applied the patch, resolved the few minor conflicts. made sure it built okay with gcc 2.9.5, and committed it. With those of you with access to gcc 3.x (which apparently is more sensitive to namespace issues) please give it a try? Alan __________________________ Alan W. Irwin email: ir...@be... phone: 250-727-2902 Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the PLplot scientific plotting software package (plplot.org), the Yorick front-end to PLplot (yplot.sf.net), the Loads of Linux Links project (loll.sf.net), and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ |