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
>