DIRECTORY IO, Rope; Histograms: CEDAR DEFINITIONS = { Error: ERROR [msg: ROPE]; ROPE: TYPE = Rope.ROPE; Dim: TYPE ~ {X, Y}; BoolPair: TYPE ~ ARRAY Dim OF BOOL; RealRange1: TYPE ~ RECORD [min, max: REAL]; RealRange2: TYPE ~ ARRAY Dim OF RealRange1; Range1: TYPE = RECORD [min, max: INT]; Range2: TYPE = ARRAY Dim OF Range1; nullRange1: Range1 = [INT.LAST, INT.FIRST]; fullRange1: Range1 = [INT.FIRST, INT.LAST]; nullRange2: Range2 = ALL[nullRange1]; fullRange2: Range2 = ALL[fullRange1]; Histogram: TYPE = REF HistogramRep; HistogramRep: TYPE; Create1D: PROC --makes a 1D histogram [ factor: REAL _ 1.0, offset: REAL _ 0.0, logarithmic: BOOL _ FALSE, BinNamer: BinNameProc _ NIL, clientData: REF ANY _ NIL] RETURNS [Histogram]; Create2D: PROC [ iFactor, jFactor: REAL _ 1.0, iOffset, jOffset: REAL _ 0.0, logI, logJ: BOOL _ FALSE, BinNamer: BinNameProc _ NIL, clientData: REF ANY _ NIL] RETURNS [Histogram]; BinNameProc: TYPE ~ PROC [clientData: REF ANY, i, j: NATURAL] RETURNS [ROPE]; Increment: PROC [h: Histogram, i: NATURAL] = INLINE {Change[h, i, 1]}; Decrement: PROC [h: Histogram, i: NATURAL] = INLINE {Change[h, i, -1]}; Change: PROC [h: Histogram, i: NATURAL, howMuch: INTEGER]; IncrementTransformed: PROC [h: Histogram, xmin, xmax, x: REAL]; ChangeTransformed: PROC [h: Histogram, x: REAL, y: REAL _ 0.0, delta: INTEGER _ 1]; Change1DTransformed: PROC [h: Histogram, x: REAL, delta: INTEGER _ 1]; ClearAll: PROC [h: Histogram]; AddFrom: PROC [h: Histogram, from: IO.STREAM]; }. ˆHistograms.Mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Last tweaked by Mike Spreitzer on June 28, 1988 3:26:49 pm PDT A Histogram is a simple 1D or 2D data collector. A 1D Histogram: is a sequence of counters addressed by an integer I in the range [0..IMax). IMax is automatically maintained to be about as big as needed. IMax cells are actually allocated, so keep IMax within reason. A 2D Histogram: is a 2D array of counters addressed by two integers in the range [0..IMax) and [0..JMax), where IMax and JMax are automatically maintained. IMax*JMax cells are actually allocated, so keep IMax*JMax within reason. See the DF file for other interfaces dealing with Histograms. Make a new one. All counters start at zero. If logarithmic, then center x of bin I is offset*factor^i; otherwise it is offset+factor*I. For giving bin names. increment counter number i. decrement counter number i: Change counter number i. Works only for 1D histograms. Force x inside [xmin .. xmax], inverse transform by factor & offset, round, and Increment. Works for 1D or 2D Histograms. Works only for 1D Histograms. Sets all counters to 0. Κ…˜codešœ™Kšœ Οmœ1™—K˜Kšœ0™0™KšœΙ™Ι—™Kšœά™ά—Kšœ=™=K˜KšΟk œžœ˜K˜KšΡbnx œžœž œ˜!K˜KšΟnœžœžœ˜K˜Kšžœžœžœ˜K˜Kšœžœ ˜Kš œ žœžœžœžœ˜#Kšœ žœžœ žœ˜+Kšœ žœžœžœ ˜+Kšœžœžœ žœ˜&Kšœžœžœžœ˜#K˜Kš œžœžœžœžœ˜+Kš œžœžœžœžœ˜+Kšœžœ ˜%Kšœžœ ˜%K˜Kšœ žœžœ˜#Kšœžœ˜K˜š œžœΟc˜%šœ˜Kšœžœ˜Kšœžœ˜Kšœ žœžœ˜Kš œžœ˜Kšœ žœžœžœ˜—Kšžœ ˜Kšœˆ™ˆ—K˜š œž˜šœ˜Kšœžœ˜Kšœžœ˜Kšœ žœžœ˜Kš œžœ˜Kšœ žœžœžœ˜—Kšžœ ˜—K˜šœ žœžœžœžœžœžœžœ˜MK™—K˜š  œžœžœ˜,Kšžœ˜K˜Kšœ™K˜—š  œžœžœ˜,Kšžœ˜K˜Kšœ™K˜—š œžœžœ žœ˜:Kšœ7™7—K˜š œžœžœ˜?K™Z—K˜š  œžœžœžœžœ˜SK™—K˜š œžœžœ žœ˜FK™—K˜š œžœ˜K™—K˜Kš œžœžœžœ˜.K˜Kšœ˜K˜—…—θ υ