From: <arj...@us...> - 2008-08-30 13:16:28
|
Revision: 8727 http://plplot.svn.sourceforge.net/plplot/?rev=8727&view=rev Author: arjenmarkus Date: 2008-08-30 13:16:38 +0000 (Sat, 30 Aug 2008) Log Message: ----------- Solved the mysterious bug that caused strange interpolation results (computation of yy was using x-coordinate) and a few typos. Also needed to check for a specific string representation of the NaNs - specific possibly to the underlying C compiler (MSVC 6.0) Modified Paths: -------------- trunk/examples/tcl/x21.tcl Modified: trunk/examples/tcl/x21.tcl =================================================================== --- trunk/examples/tcl/x21.tcl 2008-08-30 11:15:19 UTC (rev 8726) +++ trunk/examples/tcl/x21.tcl 2008-08-30 13:16:38 UTC (rev 8727) @@ -94,12 +94,12 @@ } if {$rosen == 0} { set xx [x $i] - set yy [x $i] + set yy [y $i] set r [expr {sqrt($xx*$xx + $yy*$yy)}] z $i = [expr {exp(-$r*$r)*cos(2.*$PI*$r)}] } else { set xx [x $i] - set yy [x $i] + set yy [y $i] z $i = [expr {log((1.-$xx)**2 + 100.*($yy-$xx**2)**2)}] } } @@ -113,11 +113,9 @@ for {set i 0} {$i < $xp} {incr i} { xg $i = [expr {$xmin + ($xmax-$xmin)*$i/double($xp-1.)}] - puts "xg: $i [xg $i]" } for {set i 0} {$i < $yp} {incr i} { yg $i = [expr {$ymin + ($ymax-$ymin)*$i/double($yp-1.)}] - puts "yg: $i [yg $i]" } $w cmd plcol0 1 @@ -151,7 +149,7 @@ for {set i 0} {$i < $xp} {incr i} { for {set j 0} {$j < $yp} {incr j} { - if { [zg $i $j] == NaN } { + if { [isnan [zg $i $j]] } { # average (IDW) over the 8 neighbors zg $i $j = 0. @@ -163,7 +161,7 @@ while {($jj <= $j+1) && ($jj < $yp)} { if {($ii >= 0) && ($jj >= 0) && ![isnan [zg $ii $jj]] } { - if {abs($ii-$i) + abs($jj-$j) == 1)} { + if {abs($ii-$i) + abs($jj-$j) == 1} { set d 1. } else { set d 1.4142 @@ -239,6 +237,19 @@ $w cmd plend } +#---------------------------------------------------------------------------- +# isnan +# +# Note: the current string interface makes it necessary to check for the +# special string "-1.#IND" - at least with MSVC 6.0 +# +proc isnan {x} { + if {$x == NaN || $x eq "-1.#IND"} { + return 1 + } else { + return 0 + } +} #---------------------------------------------------------------------------- # proc max and min This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-08-31 10:27:49
|
Revision: 8730 http://plplot.svn.sourceforge.net/plplot/?rev=8730&view=rev Author: andrewross Date: 2008-08-31 10:27:59 +0000 (Sun, 31 Aug 2008) Log Message: ----------- Tcl example 21 - change use of ** operator to pow function for portability. ** was only introduced in tcl8.5. Note the example still requires tcl8.5 for NaN support, but at least it compiles now and fails gracefully at run time with the version check at the beginning of the code. Modified Paths: -------------- trunk/examples/tcl/x21.tcl Modified: trunk/examples/tcl/x21.tcl =================================================================== --- trunk/examples/tcl/x21.tcl 2008-08-31 10:21:45 UTC (rev 8729) +++ trunk/examples/tcl/x21.tcl 2008-08-31 10:27:59 UTC (rev 8730) @@ -100,7 +100,7 @@ } else { set xx [x $i] set yy [y $i] - z $i = [expr {log((1.-$xx)**2 + 100.*($yy-$xx**2)**2)}] + z $i = [expr {log(pow(1.-$xx,2)) + 100.*pow($yy-pow($xx,2),2)}] } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-09-03 19:59:23
|
Revision: 8747 http://plplot.svn.sourceforge.net/plplot/?rev=8747&view=rev Author: andrewross Date: 2008-09-03 19:59:31 +0000 (Wed, 03 Sep 2008) Log Message: ----------- Update tcl isnan test in example 21 to work on Linux. Modified Paths: -------------- trunk/examples/tcl/x21.tcl Modified: trunk/examples/tcl/x21.tcl =================================================================== --- trunk/examples/tcl/x21.tcl 2008-09-03 09:42:31 UTC (rev 8746) +++ trunk/examples/tcl/x21.tcl 2008-09-03 19:59:31 UTC (rev 8747) @@ -242,9 +242,10 @@ # # Note: the current string interface makes it necessary to check for the # special string "-1.#IND" - at least with MSVC 6.0 +# On linux it looks like the relevant string is nan. # proc isnan {x} { - if {$x == NaN || $x eq "-1.#IND"} { + if {$x == NaN || $x eq "nan" || $x eq "-1.#IND"} { return 1 } else { return 0 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <arj...@us...> - 2009-02-24 04:40:31
|
Revision: 9596 http://plplot.svn.sourceforge.net/plplot/?rev=9596&view=rev Author: arjenmarkus Date: 2009-02-24 04:40:27 +0000 (Tue, 24 Feb 2009) Log Message: ----------- Reimplemented the isnan procedure to take care of the wide variety of strings that represent NaN. Modified Paths: -------------- trunk/examples/tcl/x21.tcl Modified: trunk/examples/tcl/x21.tcl =================================================================== --- trunk/examples/tcl/x21.tcl 2009-02-24 01:02:57 UTC (rev 9595) +++ trunk/examples/tcl/x21.tcl 2009-02-24 04:40:27 UTC (rev 9596) @@ -242,12 +242,20 @@ #---------------------------------------------------------------------------- # isnan # -# Note: the current string interface makes it necessary to check for the -# special string "-1.#IND" - at least with MSVC 6.0 -# On linux it looks like the relevant string is nan. +# Note: the current string interface exposes the string representation +# of NaNs to the Tcl side. As there is a very wide variety of such +# represetations (NAN, nan, "-1.#IND", "1.#QNAN" being but a few +# - see also: http://wiki.apache.org/stdcxx/FloatingPoint) +# we take a shortcut: +# - x is supposed to be a valid number, finite or NaN +# - if it is not recognised as a double precision number, it is assumed +# to be NaN +# - if it is not equal to itself, it definitely is a NaN, as that is +# the distinguishing property of NaNs. # +# proc isnan {x} { - if {$x == NaN || $x eq "nan" || $x eq "-1.#IND"} { + if {![string is double $x] || $x ne $x} { return 1 } else { return 0 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <arj...@us...> - 2009-02-25 04:58:30
|
Revision: 9605 http://plplot.svn.sourceforge.net/plplot/?rev=9605&view=rev Author: arjenmarkus Date: 2009-02-25 04:58:24 +0000 (Wed, 25 Feb 2009) Log Message: ----------- Use numerical comparison, not string comparison to check for NaN Modified Paths: -------------- trunk/examples/tcl/x21.tcl Modified: trunk/examples/tcl/x21.tcl =================================================================== --- trunk/examples/tcl/x21.tcl 2009-02-24 23:32:12 UTC (rev 9604) +++ trunk/examples/tcl/x21.tcl 2009-02-25 04:58:24 UTC (rev 9605) @@ -255,7 +255,7 @@ # # proc isnan {x} { - if {![string is double $x] || $x ne $x} { + if {![string is double $x] || $x != $x} { return 1 } else { return 0 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <arj...@us...> - 2012-01-23 20:42:56
|
Revision: 12148 http://plplot.svn.sourceforge.net/plplot/?rev=12148&view=rev Author: arjenmarkus Date: 2012-01-23 20:42:50 +0000 (Mon, 23 Jan 2012) Log Message: ----------- Propagate the recent changes in example 21 to the Tcl version Modified Paths: -------------- trunk/examples/tcl/x21.tcl Modified: trunk/examples/tcl/x21.tcl =================================================================== --- trunk/examples/tcl/x21.tcl 2012-01-22 00:39:02 UTC (rev 12147) +++ trunk/examples/tcl/x21.tcl 2012-01-23 20:42:50 UTC (rev 12148) @@ -68,6 +68,8 @@ $w cmd plseed 5489 + cmap1_init $w + for {set i 0} {$i < $pts} {incr i} { set xt [expr {($xmax-$xmin)*[$w cmd plrandd]}] set yt [expr {($ymax-$ymin)*[$w cmd plrandd]}] @@ -108,8 +110,27 @@ $w cmd plenv $xmin $xmax $ymin $ymax 2 0 $w cmd plcol0 15 $w cmd pllab "X" "Y" "The original data sampling" - $w cmd plcol0 2 - $w cmd plpoin $pts x y 5 + + matrix xstr f 1 = {0.0} + matrix ystr f 1 = {0.0} + + for {set i 0} {$i < $pts} {incr i} { + $w cmd plcol1 [expr {([z $i] - $zmin ) / ( $zmax - $zmin )}] + # The following plstring call should be the the equivalent of + # plpoin( 1, &x[i], &y[i], 5 ); Use plstring because it is + # not deprecated like plpoin and has much more powerful + # capabilities. N.B. symbol 141 works for Hershey devices + # (e.g., -dev xwin) only if plfontld( 0 ) has been called + # while symbol 727 works only if plfontld( 1 ) has been + # called. The latter is the default which is why we use 727 + # here to represent a centred X (multiplication) symbol. + # This dependence on plfontld is one of the limitations of + # the Hershey escapes for PLplot, but the upside is you get + # reasonable results for both Hershey and Unicode devices. + xstr 0 = [x $i] + ystr 0 = [y $i] + $w cmd plstring 1 xstr ystr "#(727)" + } $w cmd pladv 0 $w cmd plssub 3 2 @@ -195,7 +216,6 @@ for {set i 0} {$i < $nl} {incr i} { clev $i = [expr {$lzmin + ($lzmax-$lzmin)/double($nl-1.)*$i}] } - cmap1_init $w $w cmd plvpor 0. 1. 0. 0.9 $w cmd plwind -1.1 0.75 -0.65 1.20 # This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <arj...@us...> - 2010-05-19 06:44:38
|
Revision: 11010 http://plplot.svn.sourceforge.net/plplot/?rev=11010&view=rev Author: arjenmarkus Date: 2010-05-19 06:44:32 +0000 (Wed, 19 May 2010) Log Message: ----------- Drop the requirement that for example 21 we need Tcl 8.5 or later. The isnan procedure takes care of this. Modified Paths: -------------- trunk/examples/tcl/x21.tcl Modified: trunk/examples/tcl/x21.tcl =================================================================== --- trunk/examples/tcl/x21.tcl 2010-05-19 06:36:53 UTC (rev 11009) +++ trunk/examples/tcl/x21.tcl 2010-05-19 06:44:32 UTC (rev 11010) @@ -27,11 +27,6 @@ proc x21 {{w loopback}} { - if { [catch {package require Tcl 8.5}] } { - puts "This example require Tcl 8.5 or later: use of NaNs" - return - } - set PI [expr {4.0*atan(1.0)}] set GRID_CSA 1 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |