C/igraph 0.10.13 is released now, with several new additions, bug fixes and performance improvements. As usual, the source can be obtained from the GitHub releases page.
A summary of changes is below.
Added
igraph_bitset_fill()sets all elements of a bitset to the same value (experimental function).igraph_bitset_null()clears all elements of a bitset (experimental function).igraph_bitset_is_all_zero(),igraph_bitset_is_all_one(),igraph_bitset_is_any_zero(),igraph_bitset_is_any_one()check if any/all elements of a bitset are zeros/ones (experimental functions).igraph_chung_lu_game()implements the classic Chung-Lu model, as well as a number of its variants (experimental function).igraph_mean_degree()computes the average of vertex degrees (experimental function).igraph_count_loops()counts self-loops in the graph (experimental function).igraph_is_clique()checks if all pairs within a set of vertices are connected (experimental function).igraph_is_independent_vertex_set()checks if no pairs within a set of vertices are connected (experimental function).igraph_hypercube()creates a hypercube graph (experimental function).igraph_vector_intersection_size_sorted()counts elements common to two sorted vectors (experimental function).igraph_stack_capacity()returns the allocated capacity of a stack.igraph_vector_is_all_finite()checks if all elements in a vector are finite (i.e. neither NaN nor Inf).
Fixed
- Fixed a bug that incorrectly cached that a graph has no multiple edges when
igraph_init_adjlist()was called withIGRAPH_NO_LOOPSandIGRAPH_NO_MULTIPLEand all the multi-edges were loop edges. igraph_is_forest()would fail to set the result variable when testing for a directed forest, and it was already cached that the graph was not an undirected forest.igraph_hub_and_authority_scores()no longer clips negative results to zeros when negative weights are present.- Fixed an assertion failure in
igraph_realize_bipartite_degree_sequence()with some non-graphical degree sequences when requesting simple bipartite graphs. igraph_static_fitness_game()checks the input more carefully, and avoids an infinite loop in rare edge cases, such as when (almost) all fitness scores are zero.igraph_arpack_rnsolve()used the incorrect error message text for some errors. This is now corrected.- Corrected the detection of some MSVC-specific bitset intrinsics during configuration.
- Corrected a bug in the fallback implementation of
igraph_bitset_countl_zero()whenIGRAPH_INTEGER_SIZEwas set to 32. This fallback implementation was not used with GCC, Clang, or MSVC.
Changed
igraph_is_graphical()andigraph_is_bigraphical()are now linear-time in all cases, and generally several times faster than before (thanks to @gendelpiekel, contributed in #2605).igraph_erdos_renyi_game_gnp()can now generate graphs with more than a hundred million vertices.igraph_hub_and_authority_scores()now warns when negative edge weights are present.igraph_layout_lgl()now uses a BFS tree rooted in the vertex specified asprootto guide the layout. Previously it used an unspecified (arbitrary) spanning tree.- Updated the internal heuristics used by igraph’s ARPACK interface,
igraph_arpack_rssolve()andigraph_arpack_rnsolve(), to improve the robustness of calculations. - Updated the initial vector construction in
igraph_hub_and_authority_scores(),igraph_eigenvector_centrality()andigraph_(personalized_)pagerank()withIGRAPH_PAGERANK_ALGO_ARPACK. This improves the robustness and convergence of calculations.
Other
- Documentation improvements.
- Reduced the memory usage of several functions by using bitsets instead of Boolean vectors.
igraph_vector_intersect_sorted()has better performance when the input vector sizes are similar.