memory not mapped) reached by the
rsnwelev() example on the CRAN gcc build. The example
passed zero-length talr/pxtemp vectors to the
Fortran routine, which reads them as dimension(n_hrus),
causing an out-of-bounds read. rsnwelev() now selects one
parameter value per forcing zone and raises a clear R error when
elev, talr or pxtemp are missing,
and the example supplies the required parameters.pin7/fka7 compared an uninitialised
dimension string (setup calls were disabled in the wrapper port) and
flag7 read unwritten slots of its scratch array; all three
are now initialised. Model output is unchanged.-Wlto-type-mismatch warnings reported by the
CRAN LTO and gcc-ASAN builds. The SNOW-17 /SNUP19/ common
block left its first member MFC implicitly typed (INTEGER)
in aesc19 while it is REAL elsewhere, and
/SNCO19/ carried an extra trailing TAPREV
member in zero19 that the other units do not (in this port
TAPREV is a subroutine argument, not a common member). Both
are now declared consistently. Model output is unchanged.umemst dummy array as assumed-size
(IARRAY(*)) instead of the legacy IARRAY(1),
which made a gfortran -fcheck=all build abort with a
spurious out-of-bounds error on the first real write. This lets the
package run under Fortran runtime bounds checking. Model output is
unchanged.a*b+c into a
single-rounding fused multiply-add, and whether they do varies by
compiler version and CPU; in this iterated single-precision model chain
the one-ulp differences are amplified by snow model thresholds into
visibly different simulations (macOS/arm64 vs Linux/x86-64 differed by
up to a few hundred cfs at individual flow peaks over a 43 year run). A
new configure script probes the Fortran compiler for
-ffp-contract=off and applies it via a generated
src/Makevars (Makevars.win sets it directly
since Rtools is always gfortran). With contraction off, results agree
across macOS, Linux, x86-64 and arm64 to within libm rounding, which
totals ~1e-4 mm of runoff over four decades. Model output changes very
slightly on platforms that previously contracted.make -j)
by declaring the missing Fortran module dependencies
(sorting.o: types.o and
sac_snow.o: utilities.o) in src/Makevars and
src/Makevars.win.
Need a high-speed mirror for your open-source project?
Contact our mirror admin team at info@clientvps.com.
This archive is provided as a free public service to the community.
Proudly supported by infrastructure from VPSPulse , RxServers , BuyNumber , UnitVPS , OffshoreName and secure payment technology by ArionPay.