NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.

To learn about what's going on, see About the Archive Site.

RE: corrupted Low-Hi values in SampledSet

Thanks Bill,

I updated to the latest version of VisAD and the NullPointerException
disappeared.  I guess it was related to something else that goes on during
the interpolation.

Thanks again,
Sylvain


> -----Original Message-----
> From: Bill Hibbard [mailto:hibbard@xxxxxxxxxxxxxxxxx]
> Sent: May 30, 2002 6:13 AM
> To: Letourneau, Sylvain
> Cc: visad-list@xxxxxxxxxxxxx
> Subject: Re: corrupted Low-Hi values in SampledSet
> 
> 
> Dear Sylvain,
> 
> I compiled and ran your test program and did not get any
> NullPointerException. In fact, all the results were correct.
> Note that Float.MIN_VALUE is the smallest positive float,
> rather than the least negative. So in Test1 the low value
> is a negative number rather than Float.MIN_VALUE. Here is
> the output I got:
> 
>   doll% java TestIrregular1DSet
>   Test 1: low=-1124.069   hi=3.4028235E38
>           aSet is  visad.Irregular1DSet: Dimension = 1 Length = 4
>      Dimension 0: Range = -1124.069 to 3.4028235E38
> 
>   Test 2: low=1.4E-45   hi=3.4028235E38
>           aSet is  visad.Irregular1DSet: Dimension = 1 Length = 4
>      Dimension 0: Range = 1.4E-45 to 3.4028235E38
> 
>   Test 3: interField.evaluate(-2000.0f)
>   missing
> 
> Cheers,
> Bill
> 
> 
> "Letourneau, Sylvain" wrote:
> > 
> > Hi,
> > 
> > I got a NullPointerException during interpolation (with the 
> evaluate method)
> > and finally found out that the error was due to a bad LowX 
> value in my
> > Irregular1DSet. The problem seems to be related to the use 
> of extreme values
> > (e.g. Float.MIN_VALUES, Float.MAX_VALUE) as samples for the 
> set but doesn't
> > happen in a consistent manner.  Please find below a small 
> program which
> > illustrates the problem:
> > 1- method test1() provides an example for which the Low 
> value gets corrupted
> > 2- method test2() provides a similar example but for which 
> the Low and Hi
> > values are correct
> > 3- method test3() generates the NullPointerException
> > 
> > The output of the program is:
> > 
> > Test 1: low=-1124.069   hi=3.4028235E38
> >         aSet is  visad.Irregular1DSet: Dimension = 1 Length = 4
> >    Dimension 0: Range = -1124.069 to 3.4028235E38
> > 
> > Test 2: low=1.4E-45   hi=3.4028235E38
> >         aSet is  visad.Irregular1DSet: Dimension = 1 Length = 4
> >    Dimension 0: Range = 1.4E-45 to 3.4028235E38
> > 
> > Test 3: interField.evaluate(-2000.0f)
> > java.lang.NullPointerException
> >         at 
> visad.Irregular1DSet.valueToInterp(Irregular1DSet.java:127)
> >         at visad.FlatField.resample(FlatField.java:3446)
> >         at visad.FunctionImpl.evaluate(FunctionImpl.java:169)
> >         at visad.FunctionImpl.evaluate(FunctionImpl.java:128)
> >         at TestIrregular1DSet.test3(TestIrregular1DSet.java:51)
> >         at TestIrregular1DSet.main(TestIrregular1DSet.java:60)
> > Exception in thread "main"
> > Process TestIrregular1DSet exited abnormally with code 1
> > 
> > I got the same error with jdk1.1.3 and jdk1.1.4.  I also replaced
> > Float.MIN_VALUE by Float.NEGATIVE_INFINITE, no luck. I'm really not
> > convinced that the problem is in the VisAD logic.  
> Nevertheless, it would be
> > good to have a solution.
> > 
> > Thanks,
> > Sylvain
> > 
> > import java.rmi.RemoteException;
> > import visad.*;
> > 
> > public class TestIrregular1DSet {
> > 
> >   public TestIrregular1DSet() {
> >   }
> > 
> >   public void test1() throws VisADException {
> >          float[][] samples = new float[][] {
> >                 {Float.MIN_VALUE, -1124.06897f, -1047.077026f,
> > Float.MAX_VALUE}};
> > 
> >          Irregular1DSet aSet = new Irregular1DSet(
> >                 RealType.getRealType("x1", null, null), samples);
> >          float[] hi = aSet.getHi();
> >          float[] low = aSet.getLow();
> > 
> >          System.out.println("Test 1: low=" + low[0] + "   
> hi=" + hi[0]);
> >          System.out.println("        aSet is " + 
> aSet.longString(" "));
> > 
> >   }
> > 
> >   public void test2() throws VisADException {
> >          float[][] samples = new float[][] {
> >                 {Float.MIN_VALUE, 208.561829f, 326.168915f,
> > Float.MAX_VALUE}};
> >          Irregular1DSet aSet
> >                 new 
> Irregular1DSet(RealType.getRealType("x2", null, null),
> >                 samples);
> > 
> >          float[] hi = aSet.getHi();
> >          float[] low = aSet.getLow();
> >          System.out.println("Test 2: low=" + low[0] + "   
> hi=" + hi[0]);
> >          System.out.println("        aSet is " + 
> aSet.longString(" "));
> >   }
> > 
> >   public void test3() throws VisADException, RemoteException {
> >          float[][] samples = new float[][] {
> >                 {Float.MIN_VALUE, -1124.06897f, -1047.077026f,
> > Float.MAX_VALUE}};
> > 
> >          Irregular1DSet aSet
> >                 new Irregular1DSet(RealType.getRealType("x1", null,
> > null),samples);
> > 
> >          RealType x1RT = RealType.getRealType("x1");
> >          FunctionType interFuncType
> >                 new FunctionType(x1RT, 
> RealType.getRealType("value", null,
> > null));
> >          FlatField interField = new FlatField(interFuncType, aSet);
> >          interField.setSamples(new float[][] {
> >                 {100.0f, 150.0f, 110.0f, 75.0f}});
> >          System.out.println("Test 3: 
> interField.evaluate(-2000.0f)=");
> >          System.out.println(interField.evaluate(new 
> Real(x1RT, -2000.0),
> > 
> > Data.WEIGHTED_AVERAGE,
> >                                                          
> Data.NO_ERRORS));
> >   }
> > 
> >   public static void main(String[] args) throws VisADException,
> > RemoteException {
> >          TestIrregular1DSet aTest = new TestIrregular1DSet();
> >          aTest.test1();
> >          aTest.test2();
> >          aTest.test3();
> >   }
> > 
> > }
> > 
> > ===
> > Sylvain Létourneau
> > Research Officer
> > National Research Council of Canada
> > 1500 Montreal road, Build. M-50, Rm 367A
> > Ottawa, Ontario Canada K1A 0R6
> > Phone:(613) 990-1178
> > Fax:(613) 952-0215
> 
> -- 
> ----------------------------------------------------------
> Bill Hibbard, SSEC, 1225 W. Dayton St., Madison, WI  53706
> hibbard@xxxxxxxxxxxxxxxxx  608-263-4427  fax: 608-263-6738
> http://www.ssec.wisc.edu/~billh/vis.html
> 


  • 2002 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the visad archives: