Safe and Effective Determinant Evaluation: February 25, 1994
Safe and Effective Determinant Evaluation: February 25, 1994
Safe and Effective Determinant Evaluation: February 25, 1994
Kenneth L. Clarkson
AT&T Bell Laboratories
Murray Hill, New Jersey 07974
e-mail: clarkson@research.att.com
February 25, 1994
Abstract
The problem of evaluating the sign of the determinant of a small
matrix arises in many geometric algorithms. Given an n n matrix
A with integer entries, whose columns are all smaller than M in Eu-
clidean norm, the algorithm given here evaluates the sign of the deter-
minant det A exactly. The algorithm requires an arithmetic precision of
less than 1.5n+2 lg M bits. The number of arithmetic operations needed
is O(n
3
) + O(n
2
) log OD(A)/, where OD(A)| det A| is the product of
the lengths of the columns of A, and is the number of extra bits of
precision,
min{lg(1/u) 1.1n 2 lg n 2, lg N lg M 1.5n 1},
where u is the roundo error in approximate arithmetic, and N is the
largest representable integer. Since OD(A) M
n
, the algorithm requires
O(n
3
lg M) time, and O(n
3
) time when = (log M).
1 Introduction
Many geometric algorithms require the evaluations of the determinants of small
matrices, and testing the signs () of such determinants. Such testing is fun-
damental to algorithms for nding convex hulls, arrangements of lines and line
segments and hyperplanes, Voronoi diagrams, and many others. By such nu-
merical tests, a combinatorial structure is dened. If the tests are incorrect, the
resulting structure may be wildly dierent from a sensible result[11, 6], and
programs for computing the structures may crash.
Two basic approaches to this problem have been proposed: the use of exact
arithmetic, and the design of algorithms to properly use inaccurate numerical
tests. While the former solution is general, it can be quite slow: naively, n-tuple
precision appears to be necessary for exact computation of the determinant of an
nn matrix with integer entries. While adaptive precision has been proposed
and used[7], the resulting code and time complexity are still substantially larger
than one might hope.
1
The second approach is the design (or redesign) of algorithms to use limited
precision arithmetic and still guarantee sensible answers. (For example, [4, 2,
13, 6, 14, 12, 11, 9, 17].) Such an approach can be quite satisfactory, when
obtainable, but seems applicable only on an ad hoc and limited basis: results
for only a fairly restricted collection of algorithms are available so far.
This paper takes the approach of exact evaluation of the sign of the deter-
minant, or more generally, the evaluation of the determinant with low relative
error. However, the algorithm requires relatively low precision: less than 3n/2
bits, and additionally some number more bits than were used to specify the ma-
trix entries. The algorithm is naturally adaptive, in the sense that the running
time is proportional to the logarithm of the orthogonality defect OT(A) of the
matrix A, where
OT(A)
1in
|a
i
|
[ det A[
.
Here a
i
is the ith column of A. (We let |a
i
|
_
a
2
i
denote the Euclidean norm
of a
i
, with a
2
i
a
i
a
i
.) In geometric problems, the orthogonality defect may be
small for most matrices, so such adaptivity should be a signicant advantage in
running time. Note that the limited precision required by the algorithm implies
that native machine arithmetic can be used and still allow the input precision
to be reasonably high. For example, the algorithm can handle 10 10 matrices
with 32-bit entries in the 53 bits available in double precision on many modern
machines.
The algorithm is amenable to rank-one updates, so det B can be evaluated
quickly (in about O(n
2
) time) after det A is evaluated, if B is the same as A in
all but one column.
One limitation of the approach here is that the matrix entries are required
to be integers, rather than say rational numbers. This may entail preliminary
scaling and rounding of input to a geometric algorithm; this limitation can be
ameliorated by allowing input expressed in homogeneous coordinates, as noted
by Fortune[1]. The resulting output is plainly the output for inputs that are
near the originals, so such an algorithm is stable in Fortunes sense.[2]
The new algorithm uses ideas from Lovaszs basis reduction scheme [8, 10,
16], and can be viewed as a low-rent version of that algorithm: a result of
both algorithms is a new matrix A
for k := 1 upto n do
c
k
:= a
k
;
for j := k 1 downto 1 do c
k
= a
j
(c
k
/c
j
);
return C;
1j<k
R
jk
c
j
, for some values
R
jk
= a
k
/c
j
. (In variance with some usage, in this paper orthogonal matrices
have pairwise orthogonal columns: they need not have unit length. If they do,
the matrix will be termed orthonormal.)
The vector c
k
is initially a
k
, and is then reduced by the c
j
components of a
k
:
after step j of the inner loop, c
k
c
j
= 0. Note that even though a
j
is used in the
reduction, rather than c
j
, the condition c
k
c
i
= 0 for j < i < k is unchanged,
since a
j
has no c
i
components for i > j.
Since A = CR where R is unit upper triangular, det A = det C; since C is
an orthogonal matrix, [ det C[ =
1jn
|c
j
|, and it remains only to determine
the sign of the determinant of a perfectly conditioned matrix.
When the same algorithm is used with oating-point arithmetic to nd a
matrix B approximating C, the algorithm may fail if at some stage k a column
b
k
of B is very small: the vector a
k
is very nearly a linear combination of the
vectors a
1
, . . . , a
k1
: it is close to the linear span of those vectors. Here the
usual algorithm might simply halt and return the answer that the determinant
is nearly zero. However, since b
k
is small, we can multiply a
k
by some large
scaling factor s, reduce sa
k
by its c
j
components for j < k, and have a small
resulting vector. Indeed, that vector will be small even if we reduce using
rounded coecients for a
j
. With such integer coecients, and using the columns
3
oat det safe(matrix A)
oat denom := 1;
S
b
:= 0;
for k := 1 upto n do
loop
b
k
:= a
k
;
for j := k 1 . . . 1 b
k
= a
j
(b
k
/b
j
);
if a
2
k
2b
2
k
then S
b
+= b
2
k
; exit loop;
s := S
b
/4(b
2
k
+ 2
k
a
2
k
);
s := mins, (N/1.58
k
S
b
)
2
/a
2
k
;
if s < 1/2 then s := 1 else s :=
s |;
if s = 1 and a
2
k
0.9S
b
then s := 2;
denom = s;
a
k
= s;
for j := k 1 . . . 1 a
k
= a
j
(a
k
/b
j
)|;
if a
k
= 0 then return 0;
end loop;
return det approx(B)/denom;
1j<k
j
c
j
,
where c
k
is the old value of that vector, and the coecients
j
1/2. Hence the
new a
k
is more orthogonal to earlier vectors than the old one. The processing
of a
k
repeats until a
k
is nearly orthogonal to the previous vectors a
1
, . . . , a
k1
,
as indicated by the condition a
2
k
2b
2
k
.
The algorithm is shown in Figure 2. All arithmetic is approximate, with
unit roundo u, except the all-integer operations a
k
= s and the reduction
steps for a
k
(although a
k
/b
j
is computed approximately). The value N is no
more than the largest representable integer. For a real number x, the integer
x| is the least integer no smaller than x, and x| is x 1/2|. The quantity
k
is dened in Notation 3.4 below.
4
The precision requirements of the algorithm can be reduced somewhat by
reorthogonalization, that is, simply applying the reduction step to b
k
again
after computing it, or just before exiting the loop for stage k. Homan discusses
and analyzes this technique; his analysis can be sharpened in our situation.[5]
Note that the condition a
2
k
2b
2
k
may hold frequently or all the time; if the
latter, the algorithm is very little more than Modied Gram-Schmidt, plus the
procedure for nding the determinant of the very-well-conditioned matrix B.
3 Analysis
The analysis requires some elementary facts about the error in computing the
dot product and Euclidean norm.
Lemma 3.1 For n-vectors a and b and using arithmetic with roundo u, a b
can be estimated with error at most 1.01nu|a||b|, for nu .01. The rela-
tive error in computing a
2
is therefore 1.01nu, under these conditions. The
termination condition for stage j implies a
2
j
2b
2
j
(1 + 2.03nu).
Proof: For a proof of the rst statement, see [3], p. 35. The remaining
statements are simple corollaries.
Well need a lemma that will help bound the error due to reductions using
b
j
, rather than c
j
.
Lemma 3.2 For vectors a, b, and c, let d b c, and let |d|/|b|. Then
a/b a/c |a||d|/|c||b| = |a|/|c|.
Note also a/b |a|/|b|.
Proof: The Cauchy-Schwartz inequality implies the second statement, and
also implies
a/b a/c |a||b/b
2
c/c
2
|.
Using elementary manipulations
b
b
2
c
c
2
=
(dc
2
cd c) c(d c + d
2
)
c
2
b
2
.
The two terms in the numerator are orthogonal, so the norm of this vector is
_
(dc
2
cd c)
2
+ c
2
(d c + d
2
)
2
c
2
b
2
=
c
2
d
2
b
2
c
2
b
2
= /|c|,
as desired.
Lemma 3.3 For vectors a, b and c, and d, and as in the previous lemma,
suppose a
2
2b
2
(1 + ), a/c = 1, and < 1. Then |a b|/|b| 1 + 4 + .
5
Proof: We have
(a b)
2
b
2
=
a
2
2a b + b
2
b
2
3 + 2 2a b/b
2
,
using a
2
2b
2
(1 + ). By the assumption a/c = 1,
a b
b
2
=
a (c + d)
b
2
=
c
2
+ a d
b
2
(1 )
2
_
2(1 + ),
where the last inequality follows using the triangle and Cauchy-Schwartz in-
equalities and the assumption a
2
2b
2
(1 + ). Hence
(a b)
2
b
2
3 + 2 2((1 )
2
_
2(1 + )) 1 + 2 + 8,
giving |a b|/|b| 1 + 4 + , as claimed.
Notation 3.4 Let
3(n + 2)u,
and for j = 1 . . . n, let
j
L
j
,
where
L
2
j
j
2
(
2
+ 2.04)
j1
,
and
1.58.
Let
1 + 2.04/
2
.
Let
d
k
b
k
c
k
for k = 1 . . . n.
Theorem 3.5 Suppose the reductions for b
k
are performed using rounded arith-
metic with unit roundo u. Assume that (n + 2)u < .01 and
n
< 1/32. (For
the latter, lg(1/u) 1.1n + 2 lg n + 7 suces.) Then:
(i) |b
k
a
j
(b
k
/b
j
)| 1.54|b
k
|.
(ii) The computed value of a single reduction step for b
k
, or b
k
(b
k
/b
j
)a
j
,
diers from the exact value by a vector of norm no more than |b
k
|.
Before a reduction of b
k
by a
j
, |b
k
| |a
k
|
k1j
.
(ii) After the reduction loop for b
k
, d
k
satises
|d
k
|
k
|a
k
|/
2,
and after stage k, |d
k
|
k
|b
k
|.
6
Proof: First, part (i): let
a
j
(a
j
b
j
) ((a
j
b
j
)/b
j
)b
j
,
which is orthogonal to b
j
, and express b
k
a
j
(b
k
/b
j
) as
b
k
(b
k
/b
j
)b
j
(b
k
/b
j
)a
j
(b
k
/b
j
)((a
j
b
j
)/b
j
)b
j
.
Since b
2
k
=
2
+
2
b
2
j
+
2
(a
j
)
2
, for some , = b
k
/b
j
, and = b
k
/a
j
, we have
(b
k
(b
k
/b
j
)(b
j
+ a
j
))
2
=
2
+ ( )
2
(a
j
)
2
,
and so
(b
k
(b
k
/b
j
)(b
j
+ a
j
))
2
/b
2
k
( )
2
/(
2
b
2
j
/(a
j
)
2
+
2
),
which has a maximum value
1 + (a
j
)
2
/b
2
j
2 + 4
j
+ 2.03nu,
and so
|b
k
(b
k
/b
j
)(b
j
+ a
j
)| 1.47|b
k
|. (1)
Using part (ii) inductively and Lemmas 3.3 and 3.1, and the assumption
j
1/32,
|(b
k
/b
j
)((a
j
b
j
)/b
j
)b
j
|
|b
k
|
b
2
j
(a
j
c
j
d
j
) (c
j
+ d
j
)
=
|b
k
|
b
2
j
(c
j
d
j
+ d
j
(a
j
b
j
))
|b
k
|(
j
(1 +
j
) +
j
(1 + 4
j
+ 2.03nu))
|b
k
|
j
(2.15)
Thus with (1),
|b
k
a
j
(b
k
/b
j
)| (1.47 + 2.15/32)|b
k
| 1.54|b
k
|.
This completes part (i).
Now for part (ii). From Lemma 3.1 and Lemma 3.2, the error in computing
b
k
/b
j
= b
k
b
j
/b
2
j
is at most
((1 +u)(1 + 2.03nu) 1)|b
k
|/|b
j
|,
and |a
j
|
2(1+1.02nu)|b
j
|, and so the dierence between a
j
(b
k
b
j
/b
2
j
) and
its computed value is a vector with norm no more than |b
k
| times
, where
|
| u|b
k
a
j
(b
k
/b
j
) + |
u(|b
k
a
j
(b
k
/b
j
)| +||).
With this and (2), the computed value of b
k
after the reduction step, diers
from its real value by a vector that has norm no more than |b
k
| times
2.9002(n + 1)u(1 +u) + 1.54u
< 3(n + 2)u
= .
Using part (i), the norm of b
k
after the reduction step is no more than (1.54 + )|b
k
| < |b
k
|.
We turn to part (iii), using (ii) and inductively (iii) for j < k. (We have
d
1
= 0 for the inductive basis.)
The vector b
k
is initially a
k
, which is c
k
plus a vector in the linear span of
a
1
. . . a
k1
, which is the linear span of c
1
. . . c
k1
. When b
k
is reduced by a
j
, it
is replaced by a vector
b
k
(b
k
/b
j
)a
j
+
j
, (4)
where
j
is the roundo. Except for
j
, the vector b
k
c
k
continues to be in
the linear span of c
1
. . . c
k1
. Hence d
k
b
k
c
k
can be expressed as e
k
+,
where e
k
=
1j<k
j
c
j
, for some values
j
, and is no longer than the sum
of the roundo vectors, so
|| |a
k
|
k1
/( 1), (5)
using part (ii). From the triangle inequality,
d
2
k
(|e
k
| + )
2
. (6)
The quantity
j
is
1
c
j
[b
k
(b
k
/c
j
)a
j
+ (b
k
/c
j
)a
j
(b
k
/b
j
)a
j
]
= b
k
/c
j
b
k
/b
j
,
where b
k
is the value of that vector for the a
j
reduction. (Note that except for
roundo, b
k
/c
j
does not change after the reduction by a
j
.) By Lemma 3.2 and
this part of Theorem 3.5 as applied to d
j
,
[
j
[ |b
k
|
j
/|c
j
|, (7)
Using part (ii) and (7),
e
2
k
=
1j<k
2
j
c
2
j
1j<k
2
j
2(k1j)
a
2
k
.
8
Using (5),(6), and
j
< L
j
,
d
2
k
a
2
k
2k
2
2
_
_
1
1
+
1j<k
L
2
j
/
2j
_
_
2
. (8)
It suces for part (iii) that
k
k
_
2(1 + )
_
_
1
1
+
1j<k
L
2
j
/
2j
_
_
,
where the (1 + ) term allows the statement
d
2
k
2
k
a
2
k
/2(1 + 2.03nu). (9)
Letting M
k
= L
k
/
k
, we need
M
k
1
k
+
_
2(1 + )
_
_
1
1
+
1j<k
M
2
j
_
_
,
Since L
1
= 1 allows
|d
1
| = 0 =
1
= ,
M
k
=
_
j(1 + 2(1 + )/
2
)
k1
, or L
2
k
= k
2
(
2
+ 2.04)
k1
for k > 1, gives
suciently large
k
, using the facts
1j<k
jx
j1
=
kx
k1
x 1
x
k
1
(x 1)
2
and
x y
x y/2
x.
The last statement of part (iii) follows from the termination condition for
stage k, which from Lemma 3.1 implies a
2
k
2b
2
k
(1 + 2.03nu) < 2b
2
k
(1 + ).
Lemma 3.6 With Notation 3.4 and the assumptions of Theorem 3.5, let S
c
k
1j<k
c
2
j
and S
b
k
the computed value of
1j<k
b
2
j
. Then
[S
c
k
S
b
k
[/S
k
c
< 1/10.
Proof: With Theorem 3.5(iii), we have
b
2
j
/c
2
j
1/(1
j
)
2
,
implying
1j<k
b
2
j
/S
c
k
1/(1
j
)
2
.
9
Lemma 3.1 implies S
b
k
/
1j<k
b
2
j
1 + 1.03(k + n)u, and so
S
b
k
S
c
k
1 + 1.03(k + n)u
(1
j
)
2
,
implying S
b
k
S
c
k
< S
c
k
/10. A similar argument shows that S
c
k
S
b
k
< S
c
k
/10.
For the remaining discussion well need even more notation:
Notation 3.7 Let
f
k
a
k
%c
k
a
k
(a
k
/c
k
)c
k
,
so that a
k
= c
k
+f
k
, c
k
and f
k
are perpendicular, and a
2
k
= c
2
k
+f
2
k
. Suppose a
reduction loop for a
k
is done. Let a
k
denote a
k
before scaling it by s, and let c
k
and
f
k
denote the components c
k
and f
k
at that time. Let a
(j)
k
denote the vector
a
k
when reducing by a
j
, so a
(k1)
k
is a
k
before the reduction loop, and a
(0)
k
is a
k
after the reduction loop. Well use z
jk
to refer to a computed value of a
k
/b
j
.
Lemma 3.8 With assumptions as in the previous theorem, before a reduction
of a
k
by a
j
,
|a
k
| s| a
k
|
k1j
+ (3/4)
j<i<k
|c
i
|
i1j
.
Proof: When reducing by a
j
, a
k
= a
(j)
k
is replaced by
a
(j1)
k
= a
k
z
jk
a
j
+ a
j
,
for some [[ 1/2. As in Theorem 3.5(ii), the norm of a
k
z
jk
a
j
is no more
than |a
k
|, so
|a
(j1)
k
| |a
(j)
k
| +|a
j
|/2.
Thus
|a
(j)
k
| s| a
k
|
k1j
+
j<i<k
|a
i
|
i1j
/2
s| a
k
|
k1j
+ (3/4)
j<i<k
|c
i
|
i1j
, (10)
where the last inequality follows from Lemma 3.1 and Theorem 3.5(ii).
Lemma 3.9 With the assumptions of Theorem 3.5, in a reduction loop for a
k
,
c
2
k
0.55 a
2
k
and
f
2
k
0.45 a
2
k
.
10
Proof: Since the reduction loop is done, the conditional a
2
k
2b
2
k
returned
false. Therefore, using Theorem 3.5(iii) and reasoning as in Lemma 3.1,
| a
k
| >
2|b
k
|(1 2.03nu)
2(| c
k
|
k
| a
k
|/
2)(1 2.03nu),
which implies
c
2
k
0.55 a
2
k
, (11)
using the assumption
k
< 1/32. The last statement of the lemma follows from
a
2
k
= c
2
k
+
f
2
k
.
Theorem 3.10 With assumptions as Theorem 3.5, after the reduction loop for
a
k
it satises
a
2
k
max a
2
k
, 2.6S
c
k
.
Also
S
c
k
M
2
(3.3)
k2
.
The condition
lg N lg M + 1.5n + 1
allows the algorithm to execute.
Proof: We begin by bounding the c
j
components of a
k
for j < k, and use
these to bound |f
k
|, after the reduction loop. Note that the c
j
component of
a
k
remains xed after the reduction of a
k
by a
j
. That is, using Notation 3.7,
a
(0)
k
/c
j
= a
(j1)
k
/c
j
= (a
(j)
k
z
jk
|a
j
)/c
j
.
Using a
j
/c
j
= 1, this implies
[a
(0)
k
/c
j
[
[a
(j)
k
/c
j
a
(j)
k
/b
j
[ +[a
(j)
k
/b
j
z
jk
|[
|a
(j)
k
|
j
/|c
j
| +
_
1/2 + 2.2(n + 1)u|a
(j)
k
|/|c
j
|
_
< 1/2 +|a
(j)
k
|(
j
+ )/|c
j
|, (12)
where the next-to-last inequality follows from Theorem 3.5(iii) and from rea-
soning as for (2). Since
f
2
k
= |a
(0)
k
|
2
s
2
c
2
k
=
1j<k
(a
(0)
k
/c
j
)
2
c
2
j
,
and the triangle inequality implies |x+y|
2
(|x|+|y|)
2
, we have f
2
k
no more
than
1j<k
(|c
j
|/2 +|a
(j)
k
|(
j
+ ))
2
_
_
S
c
k
/2 +
1j<k
(|a
(j)
k
|(
j
+ ))
2
_
2
. (13)
11
From the denition of
j
and (10),
1j<k
|a
(j)
k
|
2
(
j
+ )
2
2
k
1j<k
_
s| a
k
|
kj
+
3
4
j<i<k
|c
i
|
ij
_
2
(
2
)
j
2
k
_
_
1j<k
s
2
a
2
k
2k
j
+
3
4
1j<k
_
j<i<k
|c
i
|
i
_
2
j
_
_
2
2
k
(s| a
k
|/
2 + 3
_
S
c
k
/4)
2
With (13), f
2
k
is no more than
_
_
S
c
k
/2 +
k
(s| a
k
|/
2 + 3
_
S
c
k
/4)
_
2
_
_
S
c
k
(1/2 +
k
) + 1.2
k
s| a
k
|
_
2
. (14)
If s = 1, then using Lemma 3.9 and
k
1/32,
a
2
k
= c
2
k
+ f
2
k
0.55 a
2
k
+ (
_
S
c
k
(1/2 +
k
) + 1.2
k
| a
k
|)
2
0.55 a
2
k
+ (0.54
_
S
c
k
+ 1.2| a
k
/32|)
2
max a
2
k
, S
c
k
. (15)
If s = 2 because the conditional s = 1 and a
2
k
0.9S
b
returned true,
then | a
k
| 1.01
_
S
c
k
, and
a
2
k
4(0.55) a
2
k
+ (
_
S
c
k
(1/2 +
k
) + 2(1.2)
k
| a
k
|)
2
(16)
2.6S
c
k
. (17)
Now suppose s > 1 and the conditional s = 1 and a
2
k
0.9S
b
returned
false. By Theorem 3.5(iii), c
2
k
b
2
k
+ 2
k
a
2
k
, so that when
s| is evaluated it
is no more than
_
S
b
/4c
2
k
(1.03) + 1/2, where the 1.03 factor bounds the error
in computing s. Thus
c
2
k
s
2
c
2
k
(
_
S
b
/4(1.03) +| c
k
|/2)
2
(0.55
_
S
c
k
+| c
k
|/2)
2
(0.55
_
S
c
k
+ 0.375| a
k
|)
2
, (18)
using Lemma 3.9. When
k
S
c
k
+
k
| a
k
|/2.
With (14) and the assumption
k
1/32,
f
2
k
(
_
S
c
k
(1/2 +
k
) + 0.55
_
k
S
c
k
+
k
| a
k
|/2)
2
(0.63
_
S
c
k
+
k
| a
k
|/2)
2
, (19)
and so with (18),
a
2
k
= c
2
k
+ f
2
k
(0.55
_
S
c
k
+ 0.375| a
k
|)
2
+ (0.63
_
S
c
k
+| a
k
|/64)
2
max a
2
k
, 1.4S
c
k
. (20)
With (15), (16), and (20), we have a
2
k
max a
2
k
, 2.6S
c
k
. First we show that
c
2
k
max c
2
k
, 2.2S
c
k
. It remains to bound S
c
k
inductively. If s = 1 then c
2
k
= c
2
k
.
If s = 2 because the conditional s = 1 and a
2
k
0.9S
b
returned true, then
c
2
k
2.2S
c
k
. If s > 1 and the conditional s = 1 and a
2
k
0.9S
b
returned
false, then with (18),
c
2
k
(0.55
_
S
c
k
+| c
k
|/2)
2
max c
2
k
, 2.2S
c
k
,
Let
c
k
be an upper bound for S
c
k
, so
c
2
= M
2
suces, and when stage k is
nished,
c
k+1
=
c
k
+ 2.2
c
k
is large enough, so
c
k
= (3.2)
k2
M
2
is an upper
bound for S
c
k
.
Theorem 3.11 Let be the minimum of
lg(1/u) 1.1n 2 lg n 2
and
lg N lg M 1.5n 1.
(The conditions of Theorems 3.5 and 3.10 are implied by > 4.) The algorithm
requires O(n
3
) + O(n
2
) log OT(A)/ time.
Proof: Clearly each iteration of the main loop requires O(n
2
) time. The idea
is to show that for each stage k, the loop body is executed O(1) times except
for executions that reduce OT(A) by a large factor; such reductions may occur
when a
k
is multiplied by a large scale factor s, increasing det A, or by reducing
|a
k
| substantially when s is small.
We consider some cases, remembering that c
2
k
never decreases during stage k.
The discussion below assumes that S
b
/4(b
2
k
+2
k
a
2
k
) evaluates to no more than
(N/1.58
k
S
b
)
2
/a
2
k
; if not, s is limited by the latter, and is bounded to the
second term in its denition.
s > 2, b
2
k
k
a
2
k
.
After two iterations with this condition, either s 2 or c
2
k
will be suciently
large that 2b
2
k
a
2
k
.
13
s > 2, b
2
k
k
a
2
k
.
Here (19) and Lemma 3.9 show that
|f
k
| 0.62
_
S
c
k
+
k
| a
k
|/2,
and s > 2 implies
k
| a
k
|/2
k
_
S
b
/
k
/
_
4(2.5)2/2 < 0.04
_
S
c
k
,
so | a
k
| 0.66
_
S
c
k
/
.45 <
_
S
c
k
during the second iteration under these con-
ditions. Thus s 0.37/
k
here for all but possibly the rst iteration, while a
2
k
is bounded. Hence lg OT(A) decreases by 0.5 lg(1/
k
) 2 during these steps.
s 2.
From (14) and Lemma 3.9,
|f
k
| (1/2 +
k
)
_
S
c
k
+ 2.4
k
|
f
k
|/
.45
0.54
_
S
c
k
+ 4delta
k
|
f
k
|,
so y
k
|f
k
|/0.54
_
S
c
k
converges to 1/(1 4
k
).
Suppose y
k
1/(4
k
)
2
/(1 4
k
); here s = 1, and y
k
decreases by a factor
of 4
k
/(1 4
k
) 4.6
k
at each reduction loop. Hence |a
k
| is reduced by a
factor of 4.6
k
, while det A remains the same. Hence lg OT(A) decreases by at
least lg(1/
k
) 2.3.
Suppose y
k
< 1/(4
k
)
2
/(1 4
k
); then in O(1) (less than 7) reductions,
y
k
1.01/(1 4
k
), so that
a
2
k
f
2
k
/0.45
1.01(0.54)
2
S
c
k
/(1 4
k
)
2
/0.45
0.75S
c
k
,
and so the conditional a
2
k
0.9S
b
will return true. Thereafter O(1) execu-
tions suce before stage k completes, as c
k
doubles in magnitude at each step.
Here is one way to get the estimate det approx(B): estimate the norms |b
i
|,
normalize each column of B to obtain a matrix
B with columns
b
j
b
j
/|b
j
|,
for j = 1, . . . , n, and then return det
B 1 times
1in
|b
i
|. To suggest
that det
B can be estimated using low-precision arithmetic, we show that indeed
[ det
B[ 1 and that the condition number of
B is small. In the proof, we use
the matrix
C whose columns are c
j
c
j
/|c
j
|, for j = 1, . . . , n. (Note that
the truly orthonormal matrix
C has det
C = 1 and Euclidean condition number
2
(
C) = 1.)
Theorem 3.12 With assumptions as in Theorem 3.5, for any x R
n
,
[|
B
T
x|/|x| 1[ 1.68
n
,
and so [ det
B[ 1 2n
n
, and
B has condition number
2
(
B) 1 + 3
n
.
14
Proof: Its easy to show that for x R
n
,
[
b
j
x c
j
x[ (
j
+ )|x|,
where the on the right accounts for roundo in computing
b
j
from b
j
. Thus
(
B
T
x
C
T
x)
2
x
2
1jn
(
j
+ )
2
x
2
2
n
1jn
(
2
+ 2.04)
j1
2
2
n
x
2
.
Since |
C
T
x| = |x|,
[|
B
T
x|/|x| 1[
2
n
.
Recall that
B
T
and
B have the same singular values.[3] Since the bound above
holds for any x, the singular values
j
of
B satisfy [
j
1[
n
, for j = 1, . . . , n,
and so
2
(
B) =
1
/
n
1 +
2
n
1
2
n
1 + 3
n
,
using (1 + x)/(1 x) = 1 + 2x/(1 x) and 1/(1 x) increasing in x. Since
[ det
B[ =
1
2
n
, we have
[ det
B[ (1
2
n
)
n
exp(1.5n
n
) 1 1.5n
n
,
where we use 1 x exp(x
log(1)
n2
n1
|