Skip to content

v0.32.1

Choose a tag to compare

@kaspermunch kaspermunch released this 03 Jun 17:47
· 20 commits to master since this release
Fix remaining MSVC OpenMP C3015 in ptd_expected_sojourn_time

The prior commit (f235e7b5) switched the reward-column omp-for index
from size_t to ptrdiff_t but kept the declaration inside the loop init
(`for (ptrdiff_t r = 0; ...)`). MSVC's OpenMP 2.0 rejects a declaration
in the init regardless of type (C3015 at phasic.c:9739); the canonical
form requires a signed index declared *above* the pragma with a
plain-assignment init.

Mirror the proven pattern already compiling under this MSVC in
scc_compose.c: declare `int r` inside the parallel region (private per
thread) and use `for (r = 0; r < (int) n; r++)` for both column loops.

Verified locally: serial vs PHASIC_HIERAR_ELIMINATION=1 parallel are
bit-identical (max diff 0.0) on a 601-vertex coalescent, and values
match the analytic 2/(k(k-1)) sojourn times to machine precision.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>