in reply to Re^13: PDL and srand puzzle
in thread PDL and srand puzzle

To get a single SV out of an ndarray, use $pdl->at($offset1, ...)

Thanks - that's what I was looking for.

By the way, this is as marioroy has been doing with some of your test scripts


The only thing I noticed was marioroy's use of $pdl->at.(0) which returned a 15-significant-decimal-digit representation of the value - not what I was looking for:
C:\>perl -MPDL -MDevel::Peek -le "$pdl = random(); Dump $pdl->at.(0);" SV = PV(0x1c544eeb140) at 0x1c544eeaa10 REFCNT = 1 FLAGS = (PADTMP,POK,pPOK) PV = 0x1c5474d1ca0 "0.2684813620074430"\0 CUR = 18 LEN = 20
That construct threw me a bit, and I'm way too dense to realize that all I needed to do was to remove the ".":
C:\>perl -MPDL -MDevel::Peek -le "$pdl = random(); Dump $pdl->at(0);" SV = NV(0x1426b33a8f0) at 0x1426b33a908 REFCNT = 1 FLAGS = (TEMP,NOK,pNOK) NV = 0.32972986684150651
Cheers,
Rob

Replies are listed 'Best First'.
Re^15: PDL and srand puzzle
by etj (Priest) on Jun 11, 2024 at 08:31 UTC
    Recent PDLs, given too few offsets to at (whether because of a syntax mistake or otherwise), throws an error. It allows "too many" offsets, so long as they're all 0, in line with the PDL convention of being able to pretend an ndarray has infinite higher dims all length 1. Your snippet here creates a zero-dim scalar, which then can be either correctly offsetted with no offsets, or over-offsetted with 1 offset.