 (sys2big 1)

(bplus2 (sys2big 1) (sys2big 1))
(bplus2 (sys2big -1) (sys2big 1))

(setq z11 (l2big '(0 1 1)))
(setq z01 (l2big '(0 0 1)))
(dumpo z11 4)
(dumpo (bplus2 z11 z11) 4)
(dumpo (bplus2 z11 bone*) 4)
(dumpo (bplus2 z11 z01) 4)

% Plus carry

(setq z-1  (l2big '(0 -1 -1)))
(dumpo z-1 4)
(dumpo (bplus2 z-1 bone*) 4)

% sub carry

(dumpo (bdifference z01 bone*) 4)
(dumpo (bdifference z11 bone*) 4)

% smalltimes 

(dumpo ( bsmalltimes2 z-1 2 0) 4)
(dumpo ( bsmalltimes2 z-1 10 0) 4)

% harddivide

psl
(load nbig32)
(setq outputbase* 16)
(setq z-2  (l2big '(0 -1 -1)))
(setq z-3  (l2big '(0 -1 -1 -1)))
(divide z-3 z-2)

(setq z--1 (l2big '(0 0 256)))
(setq u z-2 v z--1)
(setq d (divide u v))

(divide 333333333333333333333333333333 333333333333333333333)
% times

 (times z-2 16#100000)

% sysx2int

(load nbig32)
(setq outputbase* 16)
(times 16#10000 16#10000)
(times 16#10000 16#8000)
(times 16#10000 16#4000)
(times 16#1000000 16#1000000)

--------------------------------------------------------------


(setq big1 (sub1 (expt 123456 30)))
(setq big2 (sub1 (expt 654321 24)))
(setq big3 (times big1 big2))

(divide big3 big2)

(setq lcv 16#FFFEF4D7)
(setq lcv1 (plus 16#100000000 -16#701C1BBC))
(setq qbar (plus 16#100000000  -16#6C99A9C0))
(setq p (l2big '(0 -16#6C9A4394 -16#502ED947)))

(setq qbar(sub1 qbar))
(setq f (times qbar lcv1))
(difference p (times qbar lcv))
(divide 1111111111111111111111111111 111111111111111111111)

%----------- generic divide test -------------------------------------

(de random ()
  % Returns a pseudo-random number between 0 and RandomModulus-1 (inclusive).
  (setq randomseed
        (remainder (plus (times 232 randomseed) 65537) randommodulus)))

(setq randommodulus 10000)
(setq randomseed 500)

(de testdivide()
  (prog (n m big1 big2 q)
  lupe
    (setq n (random))
    (setq m (random))
    (setq big1 (number n))
    (setq big2 (number m))
    (setq q (divide big1 big2))
    (when (not (equal big1 (plus (times (car q) big2) (cdr q))))
          (print (list "FEHLER " n m))
          (exitlisp))
    (prin2 (list n m))
    (go lupe) ))

(de number(n)
  (if (eq n 0) 0
      (plus (times 10 (number (sub1 n))) 1)))


(biggcdn 51270610000 2468392683802982500)
