Closed BrunoLevy closed 1 year ago
GEO_HAS_BIG_STACK
macro in basic/memory.h
, only defined under Linuxnumerics/exact_geometry.h
and numerics/expansion_nt.h
are only activated if GEO_HAS_BIG_STACK
is defined (else the defaut implementation that allocates expansions on heap is used)numerics/multi_precision.cpp
, now allocates temporaries on heap if length is larger than a certain threshold (1024 components).Note:
intersect PR12_ter remove_internal_shells=true
takes 322 seconds with expansions on heap (GEO_HAS_BIG_STACK
undefined) rather than 112 secondsexpansion_product()
and doing a single allocation for all subterms.
Crash under Windows and MacOS with:
Windows and MacOSX have smaller stacks than Linux:
expansion
andexpansion_nt
make a massive usage of the stack (to represent intermediate computations). It is OK for standard predicates, but not for creating new points with exact coordinates.