From: <and...@us...> - 2008-08-13 12:04:49
|
Revision: 8637 http://plplot.svn.sourceforge.net/plplot/?rev=8637&view=rev Author: andrewross Date: 2008-08-13 12:04:56 +0000 (Wed, 13 Aug 2008) Log Message: ----------- Small modifications to example 21 to avoid rounding errors and produce consistent results with different languages. Modified Paths: -------------- trunk/bindings/octave/demos/x21c.m trunk/examples/ada/x21a.adb.cmake trunk/examples/c/x21c.c trunk/examples/c++/x21.cc trunk/examples/f77/x21f.fm4 trunk/examples/f95/x21f.f90 trunk/examples/java/x21.java Modified: trunk/bindings/octave/demos/x21c.m =================================================================== --- trunk/bindings/octave/demos/x21c.m 2008-08-12 22:22:00 UTC (rev 8636) +++ trunk/bindings/octave/demos/x21c.m 2008-08-13 12:04:56 UTC (rev 8637) @@ -50,7 +50,7 @@ pts = 500; xp = 25; yp = 20; - nl = 15; + nl = 16; knn_order = 20; threshold = 1.001; wmin = -1e3; @@ -147,13 +147,14 @@ lzM = max(max(zg)); lzm = min(min(zg)); + lzm = min(lzm, zmin)-0.01; + lzM = max(lzM, zmax)+0.01; + plcol0(1); pladv(alg); if (k == 0) - lzm = min(lzm, zmin); - lzM = max(lzM, zmax); i = (0:nl-1)'; clev = lzm + (lzM-lzm)/(nl-1)*i; @@ -178,7 +179,7 @@ ## plw3d(1., 1., 1., xm, xM, ym, yM, zmin, zmax, 30, -60); ## - plw3d(1., 1., 1., xm, xM, ym, yM, lzm, lzM, 30, -40); + plw3d(1., 1., 1., xm, xM, ym, yM, lzm, lzM, 30., -40.); plbox3("bntu", "X", 0.0, 0, "bntu", "Y", 0.0, 0, "bcdfntu", "Z", 0.5, 0); Modified: trunk/examples/ada/x21a.adb.cmake =================================================================== --- trunk/examples/ada/x21a.adb.cmake 2008-08-12 22:22:00 UTC (rev 8636) +++ trunk/examples/ada/x21a.adb.cmake 2008-08-13 12:04:56 UTC (rev 8637) @@ -59,7 +59,7 @@ pts : Integer := 500; xp : Integer := 25; yp : Integer := 20; - nl : Integer := 15; + nl : Integer := 16; knn_order : Integer := 20; threshold : Long_Float := 1.001; wmin : Long_Float := -1.0e3; @@ -239,12 +239,16 @@ lzm := Matrix_Min(zg); lzMM := Matrix_Max(zg); + lzm := Vector_Min((lzm, zmin)); + lzMM := Vector_Max((lzMM, zmax)); + + lzm := lzm - 0.01; + lzMM := lzMM + 0.01; + plcol0(1); pladv(alg); if k = 0 then - lzm := Vector_Min((lzm, zmin)); - lzMM := Vector_Max((lzMM, zmax)); for i in 0 .. nl - 1 loop clev(i) := lzm + (lzMM - lzm) / Long_Float(nl-1) * Long_Float(i); end loop; Modified: trunk/examples/c/x21c.c =================================================================== --- trunk/examples/c/x21c.c 2008-08-12 22:22:00 UTC (rev 8636) +++ trunk/examples/c/x21c.c 2008-08-13 12:04:56 UTC (rev 8637) @@ -37,7 +37,7 @@ static PLINT pts = 500; static PLINT xp = 25; static PLINT yp = 20; -static PLINT nl = 15; +static PLINT nl = 16; static int knn_order = 20; static PLFLT threshold = 1.001; static PLFLT wmin = -1e3; @@ -252,13 +252,20 @@ plMinMax2dGrid(zg, xp, yp, &lzM, &lzm); + lzm = MIN(lzm, zmin); + lzM = MAX(lzM, zmax); + + /* Increase limits slightly to prevent spurious contours + due to rounding errors */ + lzm = lzm-0.01; + lzM = lzM+0.01; + plcol0(1); + pladv(alg); if (k == 0) { - lzm = MIN(lzm, zmin); - lzM = MAX(lzM, zmax); for (i=0; i<nl; i++) clev[i] = lzm + (lzM-lzm)/(nl-1)*i; Modified: trunk/examples/c++/x21.cc =================================================================== --- trunk/examples/c++/x21.cc 2008-08-12 22:22:00 UTC (rev 8636) +++ trunk/examples/c++/x21.cc 2008-08-13 12:04:56 UTC (rev 8637) @@ -84,7 +84,7 @@ PLINT x21::pts = 500; PLINT x21::xp = 25; PLINT x21::yp = 20; -PLINT x21::nl = 15; +PLINT x21::nl = 16; PLINT x21::knn_order = 20; PLFLT x21::threshold = 1.001; PLFLT x21::wmin = -1e3; @@ -272,13 +272,17 @@ pls->MinMax2dGrid(zg, xp, yp, &lzM, &lzm); + lzm = MIN(lzm, zmin); + lzM = MAX(lzM, zmax); + + lzm = lzm-0.01; + lzM = lzM+0.01; + pls->col0(1); pls->adv(alg); if (k == 0) { - lzm = MIN(lzm, zmin); - lzM = MAX(lzM, zmax); for (i=0; i<nl; i++) clev[i] = lzm + (lzM-lzm)/(nl-1)*i; @@ -304,7 +308,7 @@ * plw3d(1., 1., 1., xm, xM, ym, yM, zmin, zmax, 30, -60); */ - pls->w3d(1., 1., 1., xm, xM, ym, yM, lzm, lzM, 30, -40); + pls->w3d(1., 1., 1., xm, xM, ym, yM, lzm, lzM, 30., -40.); pls->box3("bntu", "X", 0.0, 0, "bntu", "Y", 0.0, 0, "bcdfntu", "Z", 0.5, 0); Modified: trunk/examples/f77/x21f.fm4 =================================================================== --- trunk/examples/f77/x21f.fm4 2008-08-12 22:22:00 UTC (rev 8636) +++ trunk/examples/f77/x21f.fm4 2008-08-13 12:04:56 UTC (rev 8637) @@ -53,7 +53,7 @@ parameter (pts = 500) parameter (xp = 25) parameter (yp = 20) - parameter (nl = 15) + parameter (nl = 16) parameter (knn_order = 20) parameter (threshold = 1.001d0) parameter (wmin = -1d3) @@ -200,15 +200,19 @@ enddo endif - call a2mnmx(zg, xp, yp, lzmin, lzmax, xp); + call a2mnmx(zg, xp, yp, lzmin, lzmax, xp) + lzmin = min(lzmin, zmin) + lzmax = max(lzmax, zmax) + + lzmin = lzmin - 0.01d0 + lzmax = lzmax + 0.01d0 + call plcol0(1) call pladv(alg) if (k.eq.1) then - lzmin = min(lzmin, zmin) - lzmax = max(lzmax, zmax) do i=1,nl clev(i) = lzmin + (lzmax-lzmin)/(nl-1.d0)*(i-1.d0); enddo Modified: trunk/examples/f95/x21f.f90 =================================================================== --- trunk/examples/f95/x21f.f90 2008-08-12 22:22:00 UTC (rev 8636) +++ trunk/examples/f95/x21f.f90 2008-08-13 12:04:56 UTC (rev 8637) @@ -48,7 +48,7 @@ parameter (pts = 500) parameter (xp = 25) parameter (yp = 20) - parameter (nl = 15) + parameter (nl = 16) parameter (knn_order = 20) parameter (threshold = 1.001_plflt) parameter (wmin = -1e3_plflt) @@ -194,15 +194,19 @@ enddo endif - call a2mnmx(zg, xp, yp, lzmin, lzmax, xp); + call a2mnmx(zg, xp, yp, lzmin, lzmax, xp) + lzmin = min(lzmin, zmin) + lzmax = max(lzmax, zmax) + + lzmin = lzmin - 0.01_plflt + lzmax = lzmax + 0.01_plflt + call plcol0(1) call pladv(alg) if (k.eq.1) then - lzmin = min(lzmin, zmin) - lzmax = max(lzmax, zmax) do i=1,nl clev(i) = lzmin + (lzmax-lzmin)/(nl-1._plflt)*(i-1._plflt); enddo Modified: trunk/examples/java/x21.java =================================================================== --- trunk/examples/java/x21.java 2008-08-12 22:22:00 UTC (rev 8636) +++ trunk/examples/java/x21.java 2008-08-13 12:04:56 UTC (rev 8637) @@ -43,7 +43,7 @@ static int pts = 500; static int xp = 25; static int yp = 20; - static int nl = 15; + static int nl = 16; static int knn_order = 20; static double threshold = 1.001; static double wmin = -1e3; @@ -102,7 +102,7 @@ // &nl, // PL_OPT_INT, // "-nlevel ", - // "Specify number of contour levels [15]" }, + // "Specify number of contour levels [16]" }, // { // "knn_order", // NULL, @@ -254,14 +254,16 @@ lzm = new double[1]; lzM = new double[1]; pls.minMax2dGrid(zg, lzM, lzm); + lzm[0] = Math.min(lzm[0], zmin); + lzM[0] = Math.max(lzM[0], zmax); + lzm[0] = lzm[0] - 0.01; + lzM[0] = lzM[0] + 0.01; pls.col0(1); pls.adv(alg); if (k == 0) { - lzm[0] = Math.min(lzm[0], zmin); - lzM[0] = Math.max(lzM[0], zmax); for (i=0; i<nl; i++) clev[i] = lzm[0] + (lzM[0]-lzm[0])/(nl-1)*i; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |