diff --git a/contrib/ops/ops-compile.lisp b/contrib/ops/ops-compile.lisp
index a94da3bde80f3bb17395e85fd43256a4db9d5b53..bdf7960ffd3e602e70396770d3a7249e51b2d6ac 100644
--- a/contrib/ops/ops-compile.lisp
+++ b/contrib/ops/ops-compile.lisp
@@ -405,8 +405,8 @@
 ; the following two functions encode indices so that gelm can
 ; decode them as fast as possible
 
-(defun encode-pair (a b) (+ (* 10000. (1- a)) (1- b))) 
-;"plus" changed to "+" by gdw
+(defun encode-pair (a b)
+  (logior (ash (1- a) encode-pair-shift) (1- b))) 
 
 (defun encode-singleton (a) (1- a))