diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 41 | ||||
-rw-r--r-- | src/algebra/Makefile.in | 16 | ||||
-rw-r--r-- | src/algebra/Makefile.pamphlet | 16 | ||||
-rw-r--r-- | src/algebra/ffcat.spad.pamphlet | 3 | ||||
-rw-r--r-- | src/algebra/fff.spad.pamphlet | 4 | ||||
-rw-r--r-- | src/algebra/groebsol.spad.pamphlet | 8 | ||||
-rw-r--r-- | src/algebra/intfact.spad.pamphlet | 6 | ||||
-rw-r--r-- | src/algebra/mkfunc.spad.pamphlet | 2 | ||||
-rw-r--r-- | src/algebra/numtheor.spad.pamphlet | 3 | ||||
-rw-r--r-- | src/algebra/permgrps.spad.pamphlet | 5 | ||||
-rw-r--r-- | src/algebra/random.spad.pamphlet | 1 | ||||
-rw-r--r-- | src/algebra/sgcf.spad.pamphlet | 2 | ||||
-rw-r--r-- | src/algebra/triset.spad.pamphlet | 1 | ||||
-rw-r--r-- | src/algebra/twofact.spad.pamphlet | 1 | ||||
-rw-r--r-- | src/interp/compiler.boot | 2 | ||||
-rw-r--r-- | src/interp/g-error.boot | 21 | ||||
-rw-r--r-- | src/interp/iterator.boot | 5 | ||||
-rw-r--r-- | src/interp/wi1.boot | 5 |
18 files changed, 104 insertions, 38 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index c3c975ba..9f26d1d3 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,44 @@ +2008-05-10 Gabriel Dos Reis <gdr@cs.tamu.edu> + + * interp/iterator.boot (compRepeatOrCollect): Don't iterator + variables and variables declared in a loop are local to that loop. + * interp/g-error.boot (needsToSplitMessage): New. + (errorSupervisor): Use it. + * interp/compiler.boot (compSymbol): Highlight erron=eous symbol. + * interp/wi1.boot (stackMessage): Remove duplicate. + * algebra/ffcat.spad.pamphlet (FiniteFieldCategory): Tidy. + * algebra/fff.spad.pamphlet (FiniteFieldFunctions): Likewie. + * algebra/groebsol.spad.pamphlet (GroebnerSolve): Likewise. + * algebra/intfact.spad.pamphlet (IntegerRoots): Likewise. + * algebra/mkfunc.spad.pamphlet (InputForm): Likewise. + * algebra/numtheor.spad.pamphlet (IntegerNumberTheoryFunctions): + Likewise. + * algebra/permgrps.spad.pamphlet (PermutationGroup): Likewise. + * algebra/random.spad.pamphlet (RandomFloatDistributions): Likewise. + * algebra/sgcf.spad.pamphlet + (SymmetricGroupCombinatoricFunctions): Likewise. + * algebra/triset.spad.pamphlet (PolynomialSetUtilitiesPackage): + Likewise. + * algebra/twofact.spad.pamphlet (TwoFactorize): Likewise. + + * interp/apply.boot: Miscellanous cleanup. + * interp/compiler.boot: Likewise. + * interp/c-util.boot: Likewise. + * interp/define.boot: Likewise. + * interp/format.boot: Likewise. + * interp/functor.boot: Likewise. + * interp/i-output.boot: Likewise. + * interp/info.boot: Likewise. + * interp/i-toplev.boot: Likewise. + * interp/int-top.boot: Likewise. + * interp/iterator.boot: Likewise. + * interp/lisplib.boot: Likewise. + * interp/modemap.boot: Likewise. + * interp/msgdb.boot: Likewise. + * interp/nrunopt.boot: Likewise. + * interp/package.boot: Likewise. + * interp/sys-driver.boot: Likewise. + 2008-05-09 Gabriel Dos Reis <gdr@cs.tamu.edu> * interp/as.boot: Remove Old Boot semantics. diff --git a/src/algebra/Makefile.in b/src/algebra/Makefile.in index 361f341b..b39027df 100644 --- a/src/algebra/Makefile.in +++ b/src/algebra/Makefile.in @@ -571,7 +571,7 @@ axiom_algebra_layer_13 = \ ODESYS ODETOOLS ORDFUNS PERMAN \ PFECAT PFECAT- POINT PSEUDLIN \ PTPACK REP2 SETMN SEX \ - SYMFUNC VECTOR2 CHAR + SYMFUNC VECTOR2 CHAR axiom_algebra_layer_13_nrlibs = \ $(addsuffix .NRLIB/code.$(FASLEXT),$(axiom_algebra_layer_13)) @@ -596,7 +596,7 @@ axiom_algebra_layer_14 = \ FFCGX FFHOM FFNB FFNBX \ FFPOLY FFX FFSLPE FGLMICPK \ FILE FINAALG FINAALG- FINRALG \ - FINRALG- FFF FLOATRP FNAME \ + FINRALG- FLOATRP FNAME \ FOP FORMULA FORT FRAC \ FTEM GENEEZ GENMFACT GENPGCD \ GALFACTU GALPOLYU GB GBEUCLID \ @@ -638,7 +638,7 @@ axiom_algebra_layer_14 = \ VOID WEIER WP \ EQTBL GSTBL HASHTBL \ INTABL INTFTBL STBL STRTBL\ - TABLE + TABLE FST SYMS SYMTAB axiom_algebra_layer_14_nrlibs = \ @@ -652,7 +652,7 @@ axiom_algebra_layer_15 = \ FRAMALG FRAMALG- MDAGG ODPOL \ PLOT RMCAT2 ROIRC SDPOL \ SMATCAT SMATCAT- TUBETOOL UPXSCCA \ - UPXSCCA- JAVACODE + UPXSCCA- JAVACODE POLY axiom_algebra_layer_15_nrlibs = \ $(addsuffix .NRLIB/code.$(FASLEXT),$(axiom_algebra_layer_15)) @@ -665,7 +665,7 @@ axiom_algebra_layer_16 = \ FRIDEAL2 FRMOD \ IBATOOL INTFACT \ MSETAGG MONOGEN MONOGEN- NFINTBAS \ - SPACE3 + SPACE3 FFF axiom_algebra_layer_16_nrlibs = \ $(addsuffix .NRLIB/code.$(FASLEXT),$(axiom_algebra_layer_16)) @@ -708,7 +708,7 @@ axiom_algebra_layer_19 = \ FFCAT FFCAT- FFCGP FFNBP \ FFP FLOAT FPARFRAC FR \ FRNAALG FRNAALG- \ - FST FUNCTION GDMP HACKPI \ + FUNCTION GDMP HACKPI \ IDEAL INFORM INFORM1 IPRNTPK \ IR ISUPS KERNEL LIB \ LMDICT LODOOPS MATRIX MKFLCFN \ @@ -718,13 +718,13 @@ axiom_algebra_layer_19 = \ NREP NUMFMT OC OC- \ ODEPACK ODERAT OMERR OMERRK \ OPTPACK OSI PATTERN OVAR \ - PMKERNEL PMSYM POLY PRIMELT \ + PMKERNEL PMSYM PRIMELT \ QALGSET2 QEQUAT RECLOS REP1 \ RESULT QUATCAT QUATCAT- RFFACT \ RMATRIX ROMAN ROUTINE RPOLCAT \ RPOLCAT- RULECOLD SAOS SEGBIND \ SET SPECOUT SQMATRIX SWITCH \ - SYMS SYMTAB SYSSOLP UTSCAT \ + SYSSOLP UTSCAT \ UTSCAT- VARIABLE WFFINTBS SPADPRSR \ PARSER PROPFRML diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet index 417a0713..2a69bec4 100644 --- a/src/algebra/Makefile.pamphlet +++ b/src/algebra/Makefile.pamphlet @@ -594,7 +594,7 @@ axiom_algebra_layer_13 = \ ODESYS ODETOOLS ORDFUNS PERMAN \ PFECAT PFECAT- POINT PSEUDLIN \ PTPACK REP2 SETMN SEX \ - SYMFUNC VECTOR2 CHAR + SYMFUNC VECTOR2 CHAR axiom_algebra_layer_13_nrlibs = \ $(addsuffix .NRLIB/code.$(FASLEXT),$(axiom_algebra_layer_13)) @@ -716,7 +716,7 @@ axiom_algebra_layer_14 = \ FFCGX FFHOM FFNB FFNBX \ FFPOLY FFX FFSLPE FGLMICPK \ FILE FINAALG FINAALG- FINRALG \ - FINRALG- FFF FLOATRP FNAME \ + FINRALG- FLOATRP FNAME \ FOP FORMULA FORT FRAC \ FTEM GENEEZ GENMFACT GENPGCD \ GALFACTU GALPOLYU GB GBEUCLID \ @@ -758,7 +758,7 @@ axiom_algebra_layer_14 = \ VOID WEIER WP \ EQTBL GSTBL HASHTBL \ INTABL INTFTBL STBL STRTBL\ - TABLE + TABLE FST SYMS SYMTAB axiom_algebra_layer_14_nrlibs = \ @@ -785,7 +785,7 @@ axiom_algebra_layer_15 = \ FRAMALG FRAMALG- MDAGG ODPOL \ PLOT RMCAT2 ROIRC SDPOL \ SMATCAT SMATCAT- TUBETOOL UPXSCCA \ - UPXSCCA- JAVACODE + UPXSCCA- JAVACODE POLY axiom_algebra_layer_15_nrlibs = \ $(addsuffix .NRLIB/code.$(FASLEXT),$(axiom_algebra_layer_15)) @@ -811,7 +811,7 @@ axiom_algebra_layer_16 = \ FRIDEAL2 FRMOD \ IBATOOL INTFACT \ MSETAGG MONOGEN MONOGEN- NFINTBAS \ - SPACE3 + SPACE3 FFF axiom_algebra_layer_16_nrlibs = \ $(addsuffix .NRLIB/code.$(FASLEXT),$(axiom_algebra_layer_16)) @@ -966,7 +966,7 @@ axiom_algebra_layer_19 = \ FFCAT FFCAT- FFCGP FFNBP \ FFP FLOAT FPARFRAC FR \ FRNAALG FRNAALG- \ - FST FUNCTION GDMP HACKPI \ + FUNCTION GDMP HACKPI \ IDEAL INFORM INFORM1 IPRNTPK \ IR ISUPS KERNEL LIB \ LMDICT LODOOPS MATRIX MKFLCFN \ @@ -976,13 +976,13 @@ axiom_algebra_layer_19 = \ NREP NUMFMT OC OC- \ ODEPACK ODERAT OMERR OMERRK \ OPTPACK OSI PATTERN OVAR \ - PMKERNEL PMSYM POLY PRIMELT \ + PMKERNEL PMSYM PRIMELT \ QALGSET2 QEQUAT RECLOS REP1 \ RESULT QUATCAT QUATCAT- RFFACT \ RMATRIX ROMAN ROUTINE RPOLCAT \ RPOLCAT- RULECOLD SAOS SEGBIND \ SET SPECOUT SQMATRIX SWITCH \ - SYMS SYMTAB SYSSOLP UTSCAT \ + SYSSOLP UTSCAT \ UTSCAT- VARIABLE WFFINTBS SPADPRSR \ PARSER PROPFRML diff --git a/src/algebra/ffcat.spad.pamphlet b/src/algebra/ffcat.spad.pamphlet index fa336a5d..fea2d28a 100644 --- a/src/algebra/ffcat.spad.pamphlet +++ b/src/algebra/ffcat.spad.pamphlet @@ -585,8 +585,9 @@ FiniteFieldCategory() : Category ==_ representationType = "polynomial" => characteristic()::Integer 1 found : Boolean := false + e : $ for i in start.. while not found repeat - e : $ := index(i::PositiveInteger) + e := index(i::PositiveInteger) found := (order(e) = sm1) e primitive? a == diff --git a/src/algebra/fff.spad.pamphlet b/src/algebra/fff.spad.pamphlet index 0cfca8d4..3eb3d683 100644 --- a/src/algebra/fff.spad.pamphlet +++ b/src/algebra/fff.spad.pamphlet @@ -115,10 +115,12 @@ FiniteFieldFunctions(GF): Exports == Implementation where p:=characteristic()$GF -- search of a suitable parameter k k:NNI:=0 + a:NNI + t1: PF(k*n+1) -- all that matters is the syntax of the type for i in 1..n-1 while (k=0) repeat if prime?(i*n+1) and not(p = (i*n+1)) then primitive?(q::PF(i*n+1))$PF(i*n+1) => - a:NNI:=1 + a := 1 k:=i t1:PF(k*n+1):=(q::PF(k*n+1))**n gcd(n,a:=discreteLog(q::PF(n*i+1))$PF(n*i+1))$I = 1 => diff --git a/src/algebra/groebsol.spad.pamphlet b/src/algebra/groebsol.spad.pamphlet index 482c960f..a25c60d5 100644 --- a/src/algebra/groebsol.spad.pamphlet +++ b/src/algebra/groebsol.spad.pamphlet @@ -107,12 +107,16 @@ GroebnerSolve(lv,F,R) : C == T lnp:=[dmpToHdmp(f) for f in lp] x := first rlvar;rlvar:=rest rlvar testfail:=true + ranvals: L I + gb: L HDPoly + gbt: L DPoly + gb1: Union(L DPoly,"failed") for count in 1.. while testfail repeat - ranvals:L I:=[1+(random()$I rem (count*(# lvar))) for vv in rlvar] + ranvals := [1+(random()$I rem (count*(# lvar))) for vv in rlvar] val:=+/[rv*(vv::HDPoly) for vv in rlvar for rv in ranvals] val:=val+x::HDPoly - gb:L HDPoly:= [elt(univariate(p,x),val) for p in lnp] + gb := [elt(univariate(p,x),val) for p in lnp] gb:=groebner gb gbt:=totolex gb (gb1:=testGenPos(gbt,lvar)) case "failed"=>"try again" diff --git a/src/algebra/intfact.spad.pamphlet b/src/algebra/intfact.spad.pamphlet index 316da86a..f5485d51 100644 --- a/src/algebra/intfact.spad.pamphlet +++ b/src/algebra/intfact.spad.pamphlet @@ -304,6 +304,7 @@ IntegerRoots(I:IntegerNumberSystem): Exports == Implementation where y := max(two, shift(1, (n::I+l-1) quo (n::I))) z:I := 1 n1:= (n-1)::NNI + x: I while z > 0 repeat x := y xn:= x**n1 @@ -401,12 +402,15 @@ IntegerFactorizationPackage(I): Exports == Implementation where r:I := 1 q:I := 1 G:I := 1 + ys: I + x: I until G > 1 repeat x := y + k: I for i in 1..convert(r)@Integer repeat y := (y*y+5::I) rem n q := (q*abs(x-y)) rem n - k:I := 0 + k := 0 until (k>=r) or (G>1) repeat ys := y for i in 1..convert(min(m,r-k))@Integer repeat diff --git a/src/algebra/mkfunc.spad.pamphlet b/src/algebra/mkfunc.spad.pamphlet index 770cfd42..8e7f6c39 100644 --- a/src/algebra/mkfunc.spad.pamphlet +++ b/src/algebra/mkfunc.spad.pamphlet @@ -129,7 +129,7 @@ InputForm(): strsym s == string? s => string s symbol? s => string symbol s - error "strsym: form is neither a string or symbol" + error ["strsym: form", s, "is neither a string or symbol"] unparse x == atom?(s:% := form2String(x)$Lisp) => strsym s diff --git a/src/algebra/numtheor.spad.pamphlet b/src/algebra/numtheor.spad.pamphlet index 6df112a7..907bb9f7 100644 --- a/src/algebra/numtheor.spad.pamphlet +++ b/src/algebra/numtheor.spad.pamphlet @@ -435,8 +435,9 @@ IntegerNumberTheoryFunctions(): Exports == Implementation where divisors n == oldList : List Integer := concat(1,nil()) + newList : List Integer for f in factors factor n repeat - newList : List Integer := nil() + newList := nil() for k in 0..f.exponent repeat pow := f.factor ** k for m in oldList repeat diff --git a/src/algebra/permgrps.spad.pamphlet b/src/algebra/permgrps.spad.pamphlet index ee97d7ed..2014f7b4 100644 --- a/src/algebra/permgrps.spad.pamphlet +++ b/src/algebra/permgrps.spad.pamphlet @@ -342,6 +342,8 @@ PermutationGroup(S:SetCategory): public == private where bsgs1 (group:L V NNI,number1:NNI,words:L L NNI,maxLoops:I,gp:%,diff:I)_ : NNI == -- try to get a good approximation for the strong generators and base + ort: REC + k1: NNI for i in number1..degree repeat ort := orbitWithSvc ( group , i ) k := ort.orb @@ -484,6 +486,7 @@ PermutationGroup(S:SetCategory): public == private where kkk : I := 1 newGroup := reverse newGroup noAnswer : B := true + z: V NNI while noAnswer repeat reduceGenerators kkk -- *** Here is former "bsgs2" *** -- @@ -494,6 +497,8 @@ PermutationGroup(S:SetCategory): public == private where sgs := append ( sgs , out.i ) if wordProblem then wordlist := append ( wordlist , outword.i ) noresult : B := true + word3: L NNI + word: L NNI for i in kkk..#baseOfGroup while noresult repeat sgs := append ( sgs , out.i ) if wordProblem then wordlist := append ( wordlist , outword.i ) diff --git a/src/algebra/random.spad.pamphlet b/src/algebra/random.spad.pamphlet index 9699789c..b4459bb2 100644 --- a/src/algebra/random.spad.pamphlet +++ b/src/algebra/random.spad.pamphlet @@ -265,6 +265,7 @@ RandomFloatDistributions(): Cat == Body where -- This method is correct but slow. normal01() == s := 2::Float + v1: Float while s >= 1 repeat v1 := 2 * uniform01() - 1 v2 := 2 * uniform01() - 1 diff --git a/src/algebra/sgcf.spad.pamphlet b/src/algebra/sgcf.spad.pamphlet index c871cb18..a86554a0 100644 --- a/src/algebra/sgcf.spad.pamphlet +++ b/src/algebra/sgcf.spad.pamphlet @@ -210,6 +210,7 @@ SymmetricGroupCombinatoricFunctions(): public == private where error"there are not so many partitions" for t in 0..(m-2) repeat s : I := 0 + sOld: I for y in 0..n repeat sOld := s s := s + numberOfImproperPartitions(n-y,m-t-1) @@ -237,6 +238,7 @@ SymmetricGroupCombinatoricFunctions(): public == private where while n ~= 0 repeat s : I := 0 cm := cm - 1 + sOld : I for y in n..1 by -1 repeat --determination of the next son sOld := s -- remember old s -- this functions counts the number of elements in a subtree diff --git a/src/algebra/triset.spad.pamphlet b/src/algebra/triset.spad.pamphlet index e86987ca..0d4f93ca 100644 --- a/src/algebra/triset.spad.pamphlet +++ b/src/algebra/triset.spad.pamphlet @@ -2279,6 +2279,7 @@ PolynomialSetUtilitiesPackage (R,E,V,P) : Exports == Implementation where rec := roughBasicSet(lp) contradiction := (rec case "failed")@B finished : B := false + rs: LP while (not finished) and (not contradiction) repeat bs := (rec::RBT).bas rs := (rec::RBT).top diff --git a/src/algebra/twofact.spad.pamphlet b/src/algebra/twofact.spad.pamphlet index 541157b7..68f48bf9 100644 --- a/src/algebra/twofact.spad.pamphlet +++ b/src/algebra/twofact.spad.pamphlet @@ -224,6 +224,7 @@ TwoFactorize(F) : C == T i:Integer:=0 lcm := leadingCoefficient m umv : R + vval : F while look and i < try repeat vval := random()$F i:=i+1 diff --git a/src/interp/compiler.boot b/src/interp/compiler.boot index 0a8162d3..b120fc9d 100644 --- a/src/interp/compiler.boot +++ b/src/interp/compiler.boot @@ -333,7 +333,7 @@ compSymbol(s,m,e) == not isFunction(s,e) and null ($compForModeIfTrue=true) then errorRef s [s,m',e] --s is a declared argument MEMQ(s,$FormalMapVariableList) => - stackMessage('"no mode found for %1",[s]) + stackMessage('"no mode found for %1b",[s]) m = $OutputForm or m = $Symbol => [['QUOTE,s],m,e] not isFunction(s,e) => errorRef s diff --git a/src/interp/g-error.boot b/src/interp/g-error.boot index c3bcdf5a..32ed1d72 100644 --- a/src/interp/g-error.boot +++ b/src/interp/g-error.boot @@ -78,6 +78,12 @@ queryUser msg == errorSupervisor(errorType,errorMsg) == errorSupervisor1(errorType,errorMsg,$BreakMode) +needsToSplitMessage msg == + member("%b", msg) or member('"%b",msg) => false + member("%d",msg) or member('"%d",msg) => false + member("%l",msg) or member('"%l",msg) => false + true + errorSupervisor1(errorType,errorMsg,$BreakMode) == BUMPERRORCOUNT "semantic" errorLabel := @@ -90,11 +96,7 @@ errorSupervisor1(errorType,errorMsg,$BreakMode) == msg := errorMsg is ['mathprint, :.] => errorMsg not PAIRP errorMsg => ['" ", errorMsg] - splitmsg := true - if member('%b,errorMsg) then splitmsg := nil - else if member('%d,errorMsg) then splitmsg := nil - else if member('%l,errorMsg) then splitmsg := nil - splitmsg => CDR [:['%l,'" ",u] for u in errorMsg] + needsToSplitMessage errorMsg => rest [:['%l,'" ",u] for u in errorMsg] ['" ",:errorMsg] sayErrorly(errorLabel, msg) handleLispBreakLoop($BreakMode) @@ -170,14 +172,17 @@ sayErrorly1(errorLabel, msg) == sayBrightly msg -- systemError is being phased out. Please use keyedSystemError. -systemError(:x) == errorSupervisor($SystemError,IFCAR x) +systemError(:x) == + errorSupervisor($SystemError,IFCAR x) -- unexpectedSystemError() == -- systemError '"Oh, no. Unexpected internal error." -userError x == errorSupervisor($UserError,x) +userError x == + errorSupervisor($UserError,x) -error(x) == errorSupervisor($AlgebraError,x) +error(x) == + errorSupervisor($AlgebraError,x) IdentityError(op) == error(["No identity element for reduce of empty list using operation",op]) diff --git a/src/interp/iterator.boot b/src/interp/iterator.boot index 70a52f6d..d62f4939 100644 --- a/src/interp/iterator.boot +++ b/src/interp/iterator.boot @@ -132,7 +132,10 @@ compRepeatOrCollect(form,m,e) == (u:=modeIsAggregateOf('Vector,targetMode,e)) => CAR u ["Vector",m'] m' - coerceExit([form',m'',e'],targetMode) + T := coerceExit([form',m'',e'],targetMode) or return nil + -- iterator variables and other variables declared in + -- in a loop are local to the loop. + [T.expr,T.mode,e] --constructByModemap([x,source,e],target) == -- u:= diff --git a/src/interp/wi1.boot b/src/interp/wi1.boot index 7d327fa4..02f0c892 100644 --- a/src/interp/wi1.boot +++ b/src/interp/wi1.boot @@ -56,11 +56,6 @@ tr fn == CATCH("SPAD__READER",compiler [INTERN sfn]) SHUT $outStream -stackMessage msg == ---if msg isnt ["cannot coerce: ",:.] then foobum msg - $compErrorMessageStack:= [msg,:$compErrorMessageStack] - nil - ppFull x == SETQ(_*PRINT_-LEVEL_*,nil) SETQ(_*PRINT_-LENGTH_*,nil) |