DIRECTORY Basics; Scaled: CEDAR DEFINITIONS = BEGIN Value: TYPE = Basics.LongNumber.pair; zero: Value = [pair[0, 0]]; one: Value = [pair[hi: 1, lo: 0]]; unit: Value = one; epsilon: Value = [pair[hi: 0, lo: 1]]; oneMinusEpsilon: Value = [pair[hi: 0, lo: LAST[CARD16]]]; half: Value = [pair[hi: 0, lo: (LAST[CARD16]/2)+1]]; infinity: Value = LOOPHOLE[LAST[INT]]; negInfinity: Value = LOOPHOLE[FIRST[INT]]; IntRep: PROC [v: Value] RETURNS [INT] = INLINE { RETURN[LOOPHOLE[v]] }; ValRep: PROC [i: INT] RETURNS [Value] = INLINE { RETURN[LOOPHOLE[i]] }; FromInt: PROC [int: INTEGER] RETURNS [Value] = INLINE { RETURN[[pair[hi: LOOPHOLE[int], lo: 0]]] }; FromReal: PROC [real: REAL] RETURNS [Value]; PLUS: PROC [a, b: Value] RETURNS [Value] = INLINE { RETURN[ValRep[IntRep[a] + IntRep[b]]] }; MINUS: PROC [a, b: Value] RETURNS [Value] = INLINE { RETURN[ValRep[IntRep[a] - IntRep[b]]] }; UMINUS: PROC [a: Value] RETURNS [Value] = INLINE { RETURN[ValRep[-IntRep[a]]] }; TIMES: PROC [a, b: Value] RETURNS [Value]; DIVIDE: PROC [a, b: Value] RETURNS [Value]; GREATER: PROC [a, b: Value] RETURNS [BOOL] = INLINE { RETURN[IntRep[a] > IntRep[b]] }; LESS: PROC [a, b: Value] RETURNS [BOOL] = INLINE { RETURN[IntRep[a] < IntRep[b]] }; Max: PROC [a, b: Value] RETURNS [Value] = INLINE { RETURN[ValRep[MAX[IntRep[a], IntRep[b]]]] }; Min: PROC [a, b: Value] RETURNS [Value] = INLINE { RETURN[ValRep[MIN[IntRep[a], IntRep[b]]]] }; Floor: PROC [a: Value] RETURNS [INT16] = INLINE { RETURN[LOOPHOLE[a.hi]] }; Ceiling: PROC [a: Value] RETURNS [INT16] = INLINE { RETURN[Floor[PLUS[a, oneMinusEpsilon]]] }; Round: PROC [a: Value] RETURNS [INT16] = INLINE { RETURN[Floor[PLUS[a, half]]] }; Float: PROC [a: Value] RETURNS [REAL]; Scale: PROC [a: Value, scale: INTEGER] RETURNS [Value]; Halve: PROC [a: Value] RETURNS [Value]; END. δ Scaled.mesa Copyright Σ 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights reserved. Created February 4, 1983 Edited by Michael Plass, August 27, 1991 10:29 am PDT Doug Wyatt, January 19, 1987 7:44:39 pm PST ΚΆ–(cedarcode) style•NewlineDelimiter ™codešœ ™ Kšœ ΟeœH™SK™K™5K™+—K˜KšΟk œ˜K˜KšΠblœžœž ˜Kšœž˜˜šœžœ˜%K˜—šœ˜K˜—Kšœ"˜"šœ˜K˜—šœ&˜&K˜—šœ*žœžœ˜9K˜—šœ žœžœ ˜4K˜—šœžœžœžœ˜&K˜—šœžœžœžœ˜*K˜—KšΟnœžœ žœžœžœžœžœ˜GKš œžœžœžœ žœžœžœ˜GK˜š œžœžœžœ˜,Kšœžœžœ žœ˜6K˜—š œžœžœžœ ˜,K™—šΠknœžœžœ˜(Kšœžœžœ"˜3K˜—š‘œžœžœ˜)Kšœžœžœ"˜3K˜—š‘œžœ žœ˜'Kšœžœžœ˜(K˜—š‘œžœžœ ˜*K˜—š‘œžœžœ ˜+K˜—š‘œžœžœžœ˜*Kšœžœžœ˜+K˜—š‘œžœžœžœ˜'Kšœžœžœ˜+K˜—š œžœžœ˜'Kšœžœžœžœ˜7K˜—š œžœžœ˜'Kšœžœžœžœ˜7K˜—š œžœ žœžœ˜&Kšœžœžœžœ ˜$K˜—š œžœ žœžœ˜(Kšœžœžœžœ˜5K˜—š œžœ žœžœ˜&Kšœžœžœžœ˜*K˜—š œžœ žœžœ˜&K™—š œžœžœžœ ˜7K˜—š œžœ žœ ˜'K˜——K˜Kšžœ˜—…—( Β