aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog6
-rw-r--r--src/algebra/gaussian.spad.pamphlet1
-rw-r--r--src/algebra/intfact.spad.pamphlet32
-rw-r--r--src/testsuite/interpreter/aw-210.input3
4 files changed, 37 insertions, 5 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 4d1dc7b4..2525ae03 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
+2008-10-17 Alfredo Portes <doyenatccny@gmail.com>
+
+ Fix AW/293
+ * algebra/gaussian.spad.pamphlet (ComplexCategory): Remove complex
+ attribute.
+
2008-10-17 Waldek Hebisch <hebisch@math.uni.wroc.pl>
Gabriel Dos Reis <gdr@cs.tamu.edu>
diff --git a/src/algebra/gaussian.spad.pamphlet b/src/algebra/gaussian.spad.pamphlet
index e09ed0c5..a7d5c1dd 100644
--- a/src/algebra/gaussian.spad.pamphlet
+++ b/src/algebra/gaussian.spad.pamphlet
@@ -28,7 +28,6 @@ ComplexCategory(R:CommutativeRing): Category ==
Join(MonogenicAlgebra(R, SparseUnivariatePolynomial R), FullyRetractableTo R,
DifferentialExtension R, FullyEvalableOver R, FullyPatternMatchable(R),
Patternable(R), FullyLinearlyExplicitRingOver R, CommutativeRing) with
- complex ++ indicates that % has sqrt(-1)
imaginary: () -> % ++ imaginary() = sqrt(-1) = %i.
conjugate: % -> % ++ conjugate(x + %i y) returns x - %i y.
complex : (R, R) -> % ++ complex(x,y) constructs x + %i*y.
diff --git a/src/algebra/intfact.spad.pamphlet b/src/algebra/intfact.spad.pamphlet
index 4d4cc811..8e21b097 100644
--- a/src/algebra/intfact.spad.pamphlet
+++ b/src/algebra/intfact.spad.pamphlet
@@ -407,28 +407,52 @@ IntegerFactorizationPackage(I): Exports == Implementation where
G:I := 1
ys: I
x: I
+ l: I
+ k: I
until G > 1 repeat
x := y
- k: I
+ ys := y
for i in 1..convert(r)@Integer repeat
y := (y*y+5::I) rem n
q := (q*abs(x-y)) rem n
- k := 0
+ k := 0::I
+ G := gcd(q,n)
until (k>=r) or (G>1) repeat
ys := y
for i in 1..convert(min(m,r-k))@Integer repeat
y := (y*y+5::I) rem n
- q := q*abs(x-y) rem n
+ q := (q*abs(x-y)) rem n
G := gcd(q,n)
k := k+m
+ k := k + r
r := 2*r
if G=n then
+ l := k - m
+ G := 1::I
until G>1 repeat
ys := (ys*ys+5::I) rem n
G := gcd(abs(x-ys),n)
+ l := l + 1
+ if G = n then
+ y := x0
+ x := x0
+ for i in 1..convert(l)@Integer repeat
+ y := (y*y + 5::I) rem n
+ G := gcd(abs(x-y),n)
+ until G > 1 repeat
+ y := (y*y + 5::I) rem n
+ x := (x*x + 5::I) rem n
+ G := gcd(abs(x-y),n)
G=n => "failed"
G
+ PollardSmallFactor20(n: I): Union(I,"failed") ==
+ r: Union(I,"failed")
+ for i in 1..20 repeat
+ r := PollardSmallFactor n
+ r case I => return r
+ r
+
BasicSieve(r, lim) ==
l:List(I) :=
[1::I,2::I,2::I,4::I,2::I,4::I,2::I,4::I,6::I,2::I,6::I]
@@ -480,7 +504,7 @@ IntegerFactorizationPackage(I): Exports == Implementation where
(y:=perfectSqrt (x**2-n)) case I =>
insert_!(x+y,a,c)
insert_!(x-y,a,c)
- (d := PollardSmallFactor n) case I =>
+ (d := PollardSmallFactor20 n) case I =>
m' : NonNegativeInteger
for m' in 0.. while zero?(n rem d) repeat n := n quo d
insert_!(d, a, m' * c)
diff --git a/src/testsuite/interpreter/aw-210.input b/src/testsuite/interpreter/aw-210.input
new file mode 100644
index 00000000..6a235d7a
--- /dev/null
+++ b/src/testsuite/interpreter/aw-210.input
@@ -0,0 +1,3 @@
+integrate(1/(1 + x^4),x=%minusInfinity..%plusInfinity)
+integrate(1/(1 + x^4),x)
+