chiark / gitweb /
before check svd
[moebius2.git] / mgraph.h
index 0991a7ff98ff0e92da1dbc6061a3b873c69ae8d9..a33014b3dfe345f27c91a76758ab1b708cfaa8ae 100644 (file)
--- a/mgraph.h
+++ b/mgraph.h
@@ -52,6 +52,8 @@
 #ifndef MGRAPH_H
 #define MGRAPH_H
 
+#include "common.h"
+
 #define XBITS 4
 #define X (1<<XBITS)
 #define YBITS 4
 #define XMASK (X-1)
 #define YSHIFT XBITS
 #define Y1 (1 << YSHIFT)
-#define YMASK (Y-1 << YSHIFT)
+#define YMASK ((Y-1) << YSHIFT)
 
-#define V6 6
+#define DIM (N*D3)
 
-#define D3 3
+#define V6 6
 
 #define FOR_VERTEX(v) \
   for ((v)=0; (v)<N; (v)++)
@@ -87,7 +89,7 @@ extern int edge_end2(unsigned v1, int e);
   FOR_VPEDGE((v1),(e))                         \
     if (((v2)= EDGE_END2((v1),(e)),            \
         (init),                                \
-        (v2)) < 0) { otherwise } else
+        (v2)) < 0) { otherwise; } else
 
 #define NOTHING ((void)0)
 
@@ -98,10 +100,9 @@ extern int edge_end2(unsigned v1, int e);
   FOR_VERTEX((v1))                             \
     FOR_VEDGE((v1),(e),(v2))
 
-#define FOR_COORD(k) \
-  for ((k)=0; (k)<D3; (k)++)
-
-#define K FOR_COORD(k)
+#define FOR_RIM_VERTEX(vy,vx,v)                                        \
+  for ((vy)=0; (vy)<Y; (vy)+=Y-1)                              \
+    for ((vx)=0; (v)= (vy)<<YSHIFT | (vx), (vx)<X; (vx)++)
 
 typedef double Vertices[N][D3];