@@ -132,7 +132,7 @@ struct LOC_Lattice_Read
132
132
};
133
133
134
134
135
- const bool debug_lat = true ;
135
+ const bool debug_lat = false ;
136
136
137
137
// Set operations
138
138
@@ -1439,6 +1439,7 @@ static void InsideParent(long k4, struct LOC_GetBlock *LINK)
1439
1439
1440
1440
static void Doinverse (struct LOC_GetBlock *LINK)
1441
1441
{
1442
+ bool rev;
1442
1443
long b, b1, b2, b3, k1, k4, block_no;
1443
1444
symset SET;
1444
1445
long FORLIM;
@@ -1449,7 +1450,8 @@ static void Doinverse(struct LOC_GetBlock *LINK)
1449
1450
GetSym_ (LINK->LINK );
1450
1451
GetBlock (LINK->LINK );
1451
1452
b2 = LINK->LINK ->LINK ->Bpointer ;
1452
- /* Bug fix: INV(A, B, ...) for 2 elements
1453
+ if (debug_lat) printf (" \n Doinverse: b2-b1+1 = %ld\n " , b2-b1+1 );
1454
+ /* Bug fix: INV(A, B, ...) for 2 elements
1453
1455
k4 = b2 - b1 */
1454
1456
k4 = b2 - b1 + 1 ;
1455
1457
if (k4 >= 2 ) {
@@ -1458,40 +1460,42 @@ static void Doinverse(struct LOC_GetBlock *LINK)
1458
1460
/* Bug fix: INV(A, B, ...) for 2 elements
1459
1461
for (b = b1-1; b < FORLIM; b++) { */
1460
1462
for (b = b1-1 ; b < FORLIM-1 ; b++) {
1463
+ b3 = LINK->LINK ->LINK ->Bstack [b];
1464
+ LINK->LINK ->LINK ->Bstack [b] = LINK->LINK ->LINK ->Bstack [b2-k1-1 ];
1465
+ LINK->LINK ->LINK ->Bstack [b2-k1-1 ] = b3;
1466
+
1467
+ rev = LINK->LINK ->LINK ->Reverse_stack [b];
1461
1468
LINK->LINK ->LINK ->Reverse_stack [b] =
1462
- !LINK->LINK ->LINK ->Reverse_stack [b];
1463
- LINK->LINK ->LINK ->Reverse_stack [b2-k1-1 ] =
1464
1469
!LINK->LINK ->LINK ->Reverse_stack [b2-k1-1 ];
1465
- block_no =
1466
- CheckBLOCKStable (
1467
- LINK->LINK ->LINK ->BlockS [LINK->LINK ->LINK ->NoB -1 ].Bname ,
1468
- LINK->LINK ->LINK );
1469
- if (debug_lat)
1470
+ LINK->LINK ->LINK ->Reverse_stack [b2-k1-1 ] = !rev;
1471
+
1472
+ if (debug_lat) {
1473
+ block_no =
1474
+ CheckBLOCKStable (
1475
+ LINK->LINK ->LINK ->BlockS [LINK->LINK ->LINK ->NoB -1 ].Bname ,
1476
+ LINK->LINK ->LINK );
1470
1477
printf (" Doinverse: |%s| 2%ld %2ld %2ld %1d %2ld %1d\n " ,
1471
1478
LINK->LINK ->LINK ->BlockS [LINK->LINK ->LINK ->NoB -1 ].Bname ,
1472
1479
block_no, LINK->LINK ->LINK ->NoB ,
1473
1480
LINK->LINK ->LINK ->Bstack [b],
1474
1481
LINK->LINK ->LINK ->Reverse_stack [b],
1475
1482
LINK->LINK ->LINK ->Bstack [b2-k1-1 ],
1476
1483
LINK->LINK ->LINK ->Reverse_stack [b2-k1-1 ]);
1477
-
1478
- b3 = LINK->LINK ->LINK ->Bstack [b];
1479
- LINK->LINK ->LINK ->Bstack [b] = LINK->LINK ->LINK ->Bstack [b2-k1-1 ];
1480
- LINK->LINK ->LINK ->Bstack [b2-k1-1 ] = b3;
1484
+ }
1481
1485
1482
1486
k1++;
1483
1487
}
1484
- if ((b3-b1) % 2 == 0 ) {
1485
- // If odd number of elements.
1486
- LINK-> LINK -> LINK -> Reverse_stack [b2-k1- 1 ] =
1487
- ! LINK->LINK ->LINK ->Reverse_stack [b2-k1-1 ];
1488
- if (debug_lat)
1489
- printf ( " Doinverse (odd): |%s| 2%ld %2ld %2ld %1d \n " ,
1490
- LINK-> LINK -> LINK -> BlockS [LINK-> LINK -> LINK -> NoB - 1 ]. Bname ,
1491
- block_no, LINK->LINK ->LINK ->NoB ,
1492
- LINK->LINK ->LINK ->Bstack [b2-k1- 1 ] ,
1493
- LINK->LINK ->LINK ->Reverse_stack [b2-k1-1 ]);
1494
- }
1488
+ }
1489
+ if ((b2-b1+ 1 ) % 2 == 1 ) {
1490
+ // If odd number of elements.
1491
+ LINK->LINK ->LINK ->Reverse_stack [b2-k1-1 ] =
1492
+ !LINK-> LINK -> LINK -> Reverse_stack [b2-k1- 1 ];
1493
+ if (debug_lat)
1494
+ printf ( " Doinverse (odd): |%s| 2%ld %2ld %2ld %1d \n " ,
1495
+ LINK->LINK ->LINK ->BlockS [LINK-> LINK -> LINK -> NoB - 1 ]. Bname ,
1496
+ block_no, LINK->LINK ->LINK ->NoB ,
1497
+ LINK->LINK ->LINK ->Bstack [b2-k1-1 ],
1498
+ LINK-> LINK -> LINK -> Reverse_stack [b2-k1- 1 ]);
1495
1499
}
1496
1500
test_ (P_expset (SET, 1 << ((long )rparent)), " <)> expected" , LINK->LINK );
1497
1501
getest_ (P_expset (SET, (1 << ((long )comma)) | (1 << ((long )semicolon)) |
0 commit comments