Found here: igraph/regular.c at 941e2d2ade8f486c5756fc95da5c7f0c22eb2ede · igraph/igraph · GitHub

As far as I can tell from the original article where they are proposed (https://www.researchgate.net/publication/2662897_Interconnection_Topologies_for_Parallel_Processing_Systems) it is not supposed to. It just says an edge should exist if a certain condition holds. The given degree in the examples are not correct for the multigraph we produce.

One weird thing about the definition in the article is that for undirected graphs you’re specifying edges twice, and it is possible to make a matrix which leads to inconsistencies:

a-b iff true

b-a iff false

Should we call a simplify in the constructor after the graph is created? Should we check matrices which lead to inconsistent results?