IF pp.keywordPresent("-fractality") THEN o.fractality := pp.getNextLongReal(0.5d0, 2.0d0) ELSE o.fractality := 1.0d0 END; PROCEDURE ReduceSampleIndex(x: LONGREAL; m: CARDINAL): LONGREAL = (* Reduces the sample index "x" modulo the sample count "m". *) BEGIN WITH fm = FLOAT(m, LONGREAL) DO WHILE x < 0.0d0 DO x := x + fm END; WHILE x >= fm DO x := x - fm END; RETURN x END END ReduceSampleIndex; PROCEDURE SymbolDist(a, b: PZSymbol.T; minCurvature: LONGREAL): LONGREAL = BEGIN WITH va = FLOAT(+PZSymbol.ToInt(a), LONGREAL), vb = FLOAT(-PZSymbol.ToInt(b), LONGREAL), pa = MAX(0.0d0, minCurvature - ABS(va)), pb = MAX(0.0d0, minCurvature - ABS(vb)) DO RETURN ABS(va - vb) + pa + pb END; END SymbolDist; PROCEDURE ComputeMeanStepLength( READONLY chain: ARRAY OF PZSymbolChain.ReadData; ): LONGREAL = BEGIN RETURN chain[0].length / FLOAT(chain[0].samples, LONGREAl) END ComputeMeanStepLength; PROCEDURE GetNumSamples(READONLY chain: ARRAY OF REF PZSymbolChain.T): REF ARRAY OF CARDINAL = BEGIN WITH nCurves = NUMBER(chain), m = NEW(REF ARRAY OF CARDINAL, nCurves) DO FOR i := 0 TO nCurves-1 DO m[i] := NUMBER(chain[i]^) END; RETURN m END END GetNumSamples; Wr.PutText(stderr, "\n" & Fmt.Int(ia) & ".." & Fmt.Int(k MOD ma)); Wr.PutText(stderr, " count = " & Fmt.Int(count));