Skip to Content.
Sympa Menu

cgal-discuss - [cgal-discuss] Possible bug (Nef_polyhedron_3 stream)

Subject: CGAL users discussion list

List archive

[cgal-discuss] Possible bug (Nef_polyhedron_3 stream)


Chronological Thread 
  • From: Noel Warren <>
  • To:
  • Subject: [cgal-discuss] Possible bug (Nef_polyhedron_3 stream)
  • Date: Mon, 19 Nov 2012 09:50:59 +0100

I'm using the Exact_predicates_exact_constructions kernel to construct my Nef polyhedra and I believe I've run into a bug.  The Nef seems to have no problem being stringified.  When I try to rebuild the nef with the string it will often fail.

I try a simple tetrahedron with points (0,0,0)(1,0,0)(0,1,0)(0,0,1) and everything works fine.  But if I change the last point to have a value of (0,0,1.1) it fails.  You might think that the problem has something to do with floats, but it doesn't.  1.5 works fine as does 0.75

As you probably know, the points are represented as a quotient with both the numerator and denominator being integers.  The problem seems to be that when these integers (gmpz) are being output with the << operator they get abbreviated when too long (eg: 2.47698e+15).  This not only leads to a loss in precision but means the file can not be read, as gmpz cannot parse the integer in that format.  Here is my failing tetrahedron example (see fourth point) ...

Selective Nef Complex
standard
vertices   4
halfedges  12
facets     8
volumes    2
shalfedges 24
shalfloops 0
sfaces     8
0 { 0 2, 0 5, 0 1, -2 | 0 0 0 1 } 1
1 { 3 5, 6 11, 2 3, -2 | 1 0 0 1 } 1
2 { 6 8, 12 17, 4 5, -2 | 0 1 0 1 } 1
3 { 9 11, 18 23, 6 7, -2 | 0 0 2.47698e+15 2.2518e+15 } 1
0 { 4, 0, 0 0 | 1 0 0 1 } 1
1 { 6, 0, 0 1 | 0 1 0 1 } 1
2 { 9, 0, 0 3 | 0 0 1 1 } 1
3 { 7, 1, 0 6 | -1 1 0 1 } 1
4 { 0, 1, 0 7 | -1 0 0 1 } 1
5 { 11, 1, 0 9 | -2.2518e+15 0 2.47698e+15 1 } 1
6 { 1, 2, 0 12 | 0 -1 0 1 } 1
7 { 3, 2, 0 13 | 1 -1 0 1 } 1
8 { 10, 2, 0 15 | 0 -2.2518e+15 2.47698e+15 1 } 1
9 { 2, 3, 0 18 | 0 0 -1 1 } 1
10 { 8, 3, 0 19 | 0 2.2518e+15 -2.47698e+15 1 } 1
11 { 5, 3, 0 21 | 2.2518e+15 0 -2.47698e+15 1 } 1
0 { 1, 4 , , 0 | 0 -1 0 0 } 1
1 { 0, 5 , , 1 | 0 1 0 0 } 1
2 { 3, 20 , , 0 | 2.47698e+15 2.47698e+15 2.2518e+15 -2.47698e+15 } 1
3 { 2, 21 , , 1 | -2.47698e+15 -2.47698e+15 -2.2518e+15 2.47698e+15 } 1
4 { 5, 2 , , 0 | -1 0 0 0 } 1
5 { 4, 3 , , 1 | 1 0 0 0 } 1
6 { 7, 0 , , 0 | 0 0 -1 0 } 1
7 { 6, 1 , , 1 | 0 0 1 0 } 1
0 { 0 } 0
1 { 1 } 1
0 { 1, 4, 2, 0, 1, 6, 12, 6 | 0 0 1 0 } 1
1 { 0, 3, 5, 1, 0, 13, 7, 7 | 0 0 -1 0 } 1
2 { 3, 0, 4, 1, 1, 16, 18, 4 | 1 0 0 0 } 1
3 { 2, 5, 1, 2, 0, 19, 17, 5 | -1 0 0 0 } 1
4 { 5, 2, 0, 2, 1, 22, 8, 0 | 0 1 0 0 } 1
5 { 4, 1, 3, 0, 0, 9, 23, 1 | 0 -1 0 0 } 1
6 { 7, 10, 8, 3, 3, 12, 0, 6 | 0 0 1 0 } 1
7 { 6, 9, 11, 4, 2, 1, 13, 7 | 0 0 -1 0 } 1
8 { 9, 6, 10, 4, 3, 4, 22, 0 | 0 1 0 0 } 1
9 { 8, 11, 7, 5, 2, 23, 5, 1 | 0 -1 0 0 } 1
10 { 11, 8, 6, 5, 3, 20, 14, 2 | -2.47698e+15 -2.47698e+15 -2.2518e+15 0 } 1
11 { 10, 7, 9, 3, 2, 15, 21, 3 | 2.47698e+15 2.47698e+15 2.2518e+15 0 } 1
12 { 13, 16, 14, 6, 5, 0, 6, 6 | 0 0 1 0 } 1
13 { 12, 15, 17, 7, 4, 7, 1, 7 | 0 0 -1 0 } 1
14 { 15, 12, 16, 7, 5, 10, 20, 2 | -2.47698e+15 -2.47698e+15 -2.2518e+15 0 } 1
15 { 14, 17, 13, 8, 4, 21, 11, 3 | 2.47698e+15 2.47698e+15 2.2518e+15 0 } 1
16 { 17, 14, 12, 8, 5, 18, 2, 4 | 1 0 0 0 } 1
17 { 16, 13, 15, 6, 4, 3, 19, 5 | -1 0 0 0 } 1
18 { 19, 22, 20, 9, 7, 2, 16, 4 | 1 0 0 0 } 1
19 { 18, 21, 23, 10, 6, 17, 3, 5 | -1 0 0 0 } 1
20 { 21, 18, 22, 10, 7, 14, 10, 2 | -2.47698e+15 -2.47698e+15 -2.2518e+15 0 } 1
21 { 20, 23, 19, 11, 6, 11, 15, 3 | 2.47698e+15 2.47698e+15 2.2518e+15 0 } 1
22 { 23, 20, 18, 11, 7, 8, 4, 0 | 0 1 0 0 } 1
23 { 22, 19, 21, 9, 6, 5, 9, 1 | 0 -1 0 0 } 1
0 { 0, 1 , , , 0 } 0
1 { 0, 0 , , , 1 } 1
2 { 1, 7 , , , 0 } 0
3 { 1, 6 , , , 1 } 1
4 { 2, 13 , , , 0 } 0
5 { 2, 12 , , , 1 } 1
6 { 3, 19 , , , 0 } 0
7 { 3, 18 , , , 1 } 1
/* end Selective Nef complex */



Archive powered by MHonArc 2.6.18.

Top of Page