DIRECTORY JaM USING [PopInt, PushInt, PushReal, PopReal, Register, RegisterInit, State], Polynomial; PolynomialJaM: CEDAR PROGRAM IMPORTS JaM, Polynomial = BEGIN State: TYPE = JaM.State; PopPoly: PROC[s: State] RETURNS [p: Polynomial.Ref] = BEGIN d: NAT _ JaM.PopInt[s]; p _ Polynomial.Create[d]; FOR i:NAT IN [0..d] DO p[i] _ JaM.PopReal[s] ENDLOOP; END; PushPoly: PROC[s: State, p: Polynomial.Ref] = BEGIN d: NAT _ Polynomial.Degree[p]; FOR i:NAT DECREASING IN [0..d] DO JaM.PushReal[s,p[i]] ENDLOOP; JaM.PushInt[s,d]; END; PolyEval: PROC[s: State] = BEGIN x: REAL _ JaM.PopReal[s]; f: Polynomial.Ref _ PopPoly[s]; JaM.PushReal[s,Polynomial.Eval[f,x]] END; PolyAdd: PROC[s: State] = BEGIN g: Polynomial.Ref _ PopPoly[s]; f: Polynomial.Ref _ PopPoly[s]; PushPoly[s,Polynomial.Sum[f,g]] END; PolySub: PROC[s: State] = BEGIN g: Polynomial.Ref _ PopPoly[s]; f: Polynomial.Ref _ PopPoly[s]; PushPoly[s,Polynomial.Difference[f,g]] END; PolyMul: PROC[s: State] = BEGIN g: Polynomial.Ref _ PopPoly[s]; f: Polynomial.Ref _ PopPoly[s]; PushPoly[s,Polynomial.Product[f,g]] END; PolyDerivative: PROC[s: State] = BEGIN f: Polynomial.Ref _ PopPoly[s]; PushPoly[s,Polynomial.Derivative[f]] END; PolyIntegral: PROC[s: State] = BEGIN f: Polynomial.Ref _ PopPoly[s]; PushPoly[s,Polynomial.Integral[f]] END; PolyRealRoots: PROC[s: State] = BEGIN f: Polynomial.Ref _ PopPoly[s]; r: REF Polynomial.RealRootRec _ Polynomial.RealRoots[f]; FOR i:NAT IN [0..r.nRoots) DO JaM.PushReal[s,r[i]] ENDLOOP; JaM.PushInt[s,r.nRoots]; END; Init: PROC [s: State] = { JaM.Register[s,"Polynomial.Eval",PolyEval]; JaM.Register[s,"Polynomial.Add",PolyAdd]; JaM.Register[s,"Polynomial.Sub",PolySub]; JaM.Register[s,"Polynomial.Mul",PolyMul]; JaM.Register[s,"Polynomial.Differentiate",PolyDerivative]; JaM.Register[s,"Polynomial.Integrate",PolyIntegral]; JaM.Register[s,"Polynomial.Roots",PolyRealRoots]; }; JaM.RegisterInit["PolynomialJaM", Init]; END. –PolynomialJaM.mesa Michael Plass, December 2, 1982 11:08 am Last edit by Maureen Stone February 8, 1984 6:48:13 pm PST (Cedar5.1 and new JaM) ʶ˜J˜Jšœ™Jšœ(™(JšœQ™QJ™J˜šÏk ˜ JšœœE˜NJšœ ˜ —J˜Jšœ œœ˜6Jš˜Jšœœ ˜J˜šÏnœœ œ˜5Jš˜Jšœœ˜J˜Jš œœœœœ˜5Jšœ˜J˜—šžœœ˜-Jš˜Jšœœ˜Jš œœ œœœœ˜?J˜Jšœ˜J˜—šžœœ ˜Jš˜Jšœœ˜J˜Jšœ$˜$Jšœ˜J˜—šžœœ ˜Jš˜J˜J˜J˜Jšœ˜J˜—šžœœ ˜Jš˜J˜J˜J˜&Jšœ˜J˜—šžœœ ˜Jš˜J˜J˜J˜#Jšœ˜J˜—šžœœ ˜ Jš˜J˜J˜$Jšœ˜J˜—šž œœ ˜Jš˜J˜J˜"Jšœ˜J˜—šž œœ ˜Jš˜J˜Jšœœ2˜8Jš œœœœœ˜;J˜Jšœ˜J˜—šžœœ˜Jšœ+˜+Jšœ)˜)Jšœ)˜)Jšœ)˜)Jšœ:˜:Jšœ4˜4Jšœ1˜1J˜—J˜(J˜Jšœ˜J˜J˜—…—Œ Ø