public void test_query_disc_strict() throws Exception { System.out.println("Testing non-inclusive queryDisc()"); Random rng = new Random(5); for (int o = 0; o <= 5; ++o) { int npix = (int) HealpixProc.order2Npix(o); boolean[] map = new boolean[npix]; Vec3[] vmap = new Vec3[npix]; for (int m = 0; m < npix; ++m) { map[m] = false; vmap[m] = HealpixProc.pix2vecRing(o, m); } for (int m = 0; m < nsamples; ++m) { Pointing ptg = random_dir(rng); double rad = Math.PI * rng.nextDouble(); RangeSet rs = HealpixProc.queryDiscRing(o, ptg, rad); Vec3 vptg = new Vec3(ptg); double cosrad = Math.cos(rad); for (int i = 0; i < rs.nranges(); ++i) for (long j = rs.ivbegin(i); j < rs.ivend(i); ++j) map[(int) j] = true; for (int i = 0; i < npix; ++i) { boolean inside = vmap[i].dot(vptg) > cosrad; assertFalse("query_disc_strict problem", inside ^ map[i]); } for (int i = 0; i < rs.nranges(); ++i) for (long j = rs.ivbegin(i); j < rs.ivend(i); ++j) map[(int) j] = false; } } }
public void test_ringnestring() throws Exception { System.out.println("Testing identity ring2nest(nest2ring(i))==i"); Random rng = new Random(5); for (int o = 0; o <= HealpixBase.order_max; ++o) { for (int m = 0; m < nsamples; ++m) { long pix = (long) (rng.nextDouble() * HealpixProc.order2Npix(o)); assertEquals( "ringnestring problem", HealpixProc.ring2nest(o, HealpixProc.nest2ring(o, pix)), pix); } } }
public void test_pixangpix() throws Exception { System.out.println("Testing identity pix2ang(ang2pix(i))==i"); int omax = HealpixBase.order_max; Random rng = new Random(5); for (int o = 0; o <= omax; ++o) { for (int m = 0; m < nsamples; ++m) { long pix = (long) (rng.nextDouble() * HealpixProc.order2Npix(o)); assertEquals( "pixangpix problem", pix, HealpixProc.ang2pixNest(o, HealpixProc.pix2angNest(o, pix))); assertEquals( "pixangpix problem", pix, HealpixProc.ang2pixRing(o, HealpixProc.pix2angRing(o, pix))); } } }
public void testQueryPolygon() throws Exception { System.out.println("Testing queryPolygon()"); Pointing[] corner = new Pointing[4]; corner[0] = new Pointing(new Vec3(1, 0.01, 0.01)); corner[1] = new Pointing(new Vec3(1, 1, -0.3)); corner[2] = new Pointing(new Vec3(0.01, 1, 0.01)); corner[3] = new Pointing(new Vec3(0.01, 0.01, 1)); RangeSet lrs = HealpixProc.queryPolygonNest(10, corner); assertEquals("QueryPolygon problem", lrs.nval(), 1696714); lrs = HealpixProc.queryPolygonInclusiveNest(10, corner, 4); assertEquals("QueryPolygon problem", lrs.nval(), 1700206); lrs = HealpixProc.queryPolygonRing(10, corner); assertEquals("QueryPolygon problem", lrs.nval(), 1696714); lrs = HealpixProc.queryPolygonInclusiveRing(10, corner, 4); assertEquals("QueryPolygon problem", lrs.nval(), 1700206); }
public void test_query_disc() throws Exception { System.out.println("Testing queryDisc() empirically"); int omax = 17; Random rng = new Random(5); for (int o = 0; o <= omax; ++o) { int niter = Math.max(1, Math.min(nsamples / 1000, 100000 >> o)); for (int m = 0; m < niter; ++m) { Pointing ptg = random_dir(rng); double rad = Math.PI * rng.nextDouble(); RangeSet rs = HealpixProc.queryDiscRing(o, ptg, rad); long nval = rs.nval(); rs = HealpixProc.queryDiscNest(o, ptg, rad); assertEquals("queryDisc problem 1", nval, rs.nval()); rs = HealpixProc.queryDiscInclusiveRing(o, ptg, rad, 4); long nv1 = rs.nval(); rs = HealpixProc.queryDiscInclusiveNest(o, ptg, rad, 4); long nv2 = rs.nval(); assertTrue("queryDisc problem 2", nv1 >= nv2); assertTrue("queryDisc problem 3", nv2 >= nval); } } }
public void testQueryPolygon2() throws Exception { System.out.println("Testing queryPolygon() empirically"); int omax = 17; Random rng = new Random(5); for (int o = 0; o <= omax; ++o) { int niter = Math.max(1, Math.min(nsamples / 1000, 100000 >> o)); for (int m = 0; m < niter; ++m) { Pointing[] corner = new Pointing[3]; corner[0] = random_dir(rng); corner[1] = random_dir(rng); corner[2] = random_dir(rng); RangeSet rs = HealpixProc.queryPolygonRing(o, corner); long nval = rs.nval(); rs = HealpixProc.queryPolygonNest(o, corner); assertEquals("queryPolygon problem 1", nval, rs.nval()); rs = HealpixProc.queryPolygonInclusiveRing(o, corner, 4); long nv1 = rs.nval(); rs = HealpixProc.queryPolygonInclusiveNest(o, corner, 4); long nv2 = rs.nval(); assertTrue("queryPolygon problem 2", nv1 >= nv2); assertTrue("queryPolygon problem 3", nv2 >= nval); } } }
public void test_neighbours() throws Exception { System.out.println("Testing neighbour function"); int omax = HealpixBase.order_max; Random rng = new Random(5); for (int o = 0; o <= omax; ++o) { double maxang = 2.01 * HealpixProc.maxPixrad(o); for (int m = 0; m < nsamples; ++m) { long pix = (long) (rng.nextDouble() * HealpixProc.order2Npix(o)); Vec3 v = HealpixProc.pix2vecRing(o, pix); long[] nb = HealpixProc.neighboursRing(o, pix); long[] nb2 = HealpixProc.neighboursNest(o, HealpixProc.ring2nest(o, pix)); int nnb = 0; for (int n = 0; n < 8; ++n) { if (nb[n] < 0) assertTrue("neighbour problem 1", nb2[n] < 0); else { ++nnb; assertEquals("neighbour problem 2", HealpixProc.ring2nest(o, nb[n]), nb2[n]); assertTrue("neighbour problem 3", HealpixProc.pix2vecRing(o, nb[n]).angle(v) < maxang); } } assertTrue("neighbour problem 4 " + o + " " + nnb, (nnb >= 7) || ((o == 0) && (nnb >= 6))); } } }
public void test_accuracy() throws Exception { System.out.println("Testing accuracy near the poles"); for (int order = 0; order <= HealpixBase.order_max; ++order) assertTrue("incorrect pix2ang", HealpixProc.pix2angRing(order, 1).theta > 0.0); }
public void test() throws Exception { int o = 8; for (int i = 0; i < HealpixProc.order2Npix(o); ++i) { assertEquals( "pixel mismatch_nest", i, HealpixProc.ang2pixNest(o, HealpixProc.pix2angNest(o, i))); assertEquals( "pixel mismatch_nest", i, HealpixProc.vec2pixNest(o, HealpixProc.pix2vecNest(o, i))); assertEquals( "pixel mismatch_ring", i, HealpixProc.ang2pixRing(o, HealpixProc.pix2angRing(o, i))); assertEquals( "pixel mismatch_ring", i, HealpixProc.vec2pixRing(o, HealpixProc.pix2vecRing(o, i))); assertEquals( "pixel mismatch", i, HealpixProc.ring2nest(o, HealpixProc.ang2pixRing(o, HealpixProc.pix2angNest(o, i)))); assertEquals( "pixel mismatch_ringnestring", i, HealpixProc.ring2nest(o, HealpixProc.nest2ring(o, i))); } }