1
2(SDEFUN |VECREC2;modInverse| ((|c| |Integer|) (|p| |Integer|) ($ |Integer|))
3        (SPROG ((#1=#:G415 NIL))
4               (QCAR
5                (PROG2 (LETT #1# (SPADCALL |c| |p| 1 (QREFELT $ 10)))
6                    (QCDR #1#)
7                  (|check_union2| (QEQCAR #1# 0)
8                                  (|Record| (|:| |coef1| (|Integer|))
9                                            (|:| |coef2| (|Integer|)))
10                                  (|Union|
11                                   (|Record| (|:| |coef1| (|Integer|))
12                                             (|:| |coef2| (|Integer|)))
13                                   "failed")
14                                  #1#)))))
15
16(SDEFUN |VECREC2;empty;I$;2| ((|nint| |Integer|) ($ $))
17        (SPROG ((|intvec| (|PrimitiveArray| (|Integer|))) (#1=#:G419 NIL))
18               (SEQ
19                (LETT |intvec|
20                      (MAKEARR1
21                       (PROG1 (LETT #1# |nint|)
22                         (|check_subtype2| (>= #1# 0) '(|NonNegativeInteger|)
23                                           '(|Integer|) #1#))
24                       0))
25                (EXIT
26                 (VECTOR 1 0 0 |nint| |intvec| (MAKE-ARRAY 0) 1 0 0
27                         (MAKE-ARRAY 0) (MAKE-ARRAY 0))))))
28
29(SDEFUN |VECREC2;chinese_update;UvI$V;3|
30        ((|vec| |U32Vector|) (|p| |Integer|) (|statearg| $) ($ |Void|))
31        (SPROG
32         ((|nmp| #1=(|Integer|)) (|cor| #2=(|Integer|)) (|ii| (|Integer|))
33          (#3=#:G440 NIL) (|i| NIL) (|mpfact| #1#) (|nbmp| #1#)
34          (|mpcor| (|Integer|)) (|mpval| #2#) (|bmp| (|Integer|))
35          (|bintvec| (|PrimitiveArray| (|Integer|))) (#4=#:G439 NIL)
36          (#5=#:G425 NIL) (#6=#:G438 NIL)
37          (|intvec| (|PrimitiveArray| (|Integer|))) (|mp| (|Integer|))
38          (|state| (|Rep|)))
39         (SEQ (LETT |state| |statearg|) (LETT |mp| (QVELT |state| 0))
40              (LETT |mpval| (SPADCALL |mp| |p| (QREFELT $ 12)))
41              (EXIT
42               (COND ((EQL |mpval| 0) (|error| "Duplicate modulus in update"))
43                     (#7='T
44                      (SEQ (LETT |mpcor| (|VECREC2;modInverse| |mpval| |p| $))
45                           (LETT |mpfact| (* |mpcor| |mp|))
46                           (LETT |nmp| (* |mp| |p|))
47                           (LETT |mpfact|
48                                 (SPADCALL |mpfact| |nmp| (QREFELT $ 12)))
49                           (QSETVELT |state| 2 (+ (QVELT |state| 2) 1))
50                           (LETT |intvec| (QVELT |state| 4))
51                           (SEQ (LETT |i| 0) (LETT #6# (- (QVELT |state| 3) 1))
52                                G190 (COND ((|greater_SI| |i| #6#) (GO G191)))
53                                (SEQ (LETT |ii| (QAREF1 |intvec| |i|))
54                                     (LETT |cor|
55                                           (SPADCALL
56                                            (- (ELT_U32 |vec| |i|) |ii|) |p|
57                                            (QREFELT $ 12)))
58                                     (EXIT
59                                      (QSETAREF1 |intvec| |i|
60                                                 (SPADCALL
61                                                  (+ |ii| (* |mpfact| |cor|))
62                                                  |nmp| (QREFELT $ 12)))))
63                                (LETT |i| (|inc_SI| |i|)) (GO G190) G191
64                                (EXIT NIL))
65                           (COND
66                            ((>= (QVELT |state| 2) 200)
67                             (COND
68                              ((EQL
69                                (SPADCALL (QVELT |state| 2) 100 (QREFELT $ 12))
70                                0)
71                               (SEQ (QSETVELT |state| 7 (QVELT |state| 2))
72                                    (EXIT
73                                     (COND
74                                      ((SPADCALL (QVELT |state| 5)
75                                                 (QREFELT $ 15))
76                                       (SEQ
77                                        (QSETVELT |state| 5
78                                                  (MAKEARR1
79                                                   (PROG1
80                                                       (LETT #5#
81                                                             (QVELT |state| 3))
82                                                     (|check_subtype2|
83                                                      (>= #5# 0)
84                                                      '(|NonNegativeInteger|)
85                                                      '(|Integer|) #5#))
86                                                   0))
87                                        (LETT |bintvec| (QVELT |state| 5))
88                                        (SEQ (LETT |i| 0)
89                                             (LETT #4# (- (QVELT |state| 3) 1))
90                                             G190
91                                             (COND
92                                              ((|greater_SI| |i| #4#)
93                                               (GO G191)))
94                                             (SEQ
95                                              (QSETAREF1 |bintvec| |i|
96                                                         (QAREF1 |intvec| |i|))
97                                              (EXIT
98                                               (QSETAREF1 |intvec| |i| 0)))
99                                             (LETT |i| (|inc_SI| |i|))
100                                             (GO G190) G191 (EXIT NIL))
101                                        (QSETVELT |state| 6 |nmp|)
102                                        (EXIT (LETT |nmp| 1))))
103                                      (#7#
104                                       (SEQ (LETT |bintvec| (QVELT |state| 5))
105                                            (LETT |bmp| (QVELT |state| 6))
106                                            (LETT |mpval|
107                                                  (SPADCALL |bmp| |nmp|
108                                                            (QREFELT $ 12)))
109                                            (LETT |mpcor|
110                                                  (|VECREC2;modInverse| |mpval|
111                                                   |nmp| $))
112                                            (LETT |mpfact| (* |mpcor| |bmp|))
113                                            (LETT |nbmp| (* |bmp| |nmp|))
114                                            (LETT |mpfact|
115                                                  (SPADCALL |mpfact| |nbmp|
116                                                            (QREFELT $ 12)))
117                                            (SEQ (LETT |i| 0)
118                                                 (LETT #3#
119                                                       (- (QVELT |state| 3) 1))
120                                                 G190
121                                                 (COND
122                                                  ((|greater_SI| |i| #3#)
123                                                   (GO G191)))
124                                                 (SEQ
125                                                  (LETT |ii|
126                                                        (QAREF1 |bintvec| |i|))
127                                                  (LETT |cor|
128                                                        (SPADCALL
129                                                         (-
130                                                          (QAREF1 |intvec| |i|)
131                                                          |ii|)
132                                                         |nmp| (QREFELT $ 12)))
133                                                  (QSETAREF1 |bintvec| |i|
134                                                             (SPADCALL
135                                                              (+ |ii|
136                                                                 (* |mpfact|
137                                                                    |cor|))
138                                                              |nbmp|
139                                                              (QREFELT $ 12)))
140                                                  (EXIT
141                                                   (QSETAREF1 |intvec| |i| 0)))
142                                                 (LETT |i| (|inc_SI| |i|))
143                                                 (GO G190) G191 (EXIT NIL))
144                                            (QSETVELT |state| 6 |nbmp|)
145                                            (EXIT (LETT |nmp| 1)))))))))))
146                           (EXIT (QSETVELT |state| 0 |nmp|)))))))))
147
148(SDEFUN |VECREC2;hensel_update;UvI$V;4|
149        ((|vec| |U32Vector|) (|p| |Integer|) (|statearg| $) ($ |Void|))
150        (SPROG
151         ((#1=#:G445 NIL) (|i| NIL) (|intvec| (|PrimitiveArray| (|Integer|)))
152          (|mp| (|Integer|)) (|state| (|Rep|)))
153         (SEQ (LETT |state| |statearg|) (LETT |mp| (QVELT |state| 0))
154              (LETT |intvec| (QVELT |state| 4))
155              (SEQ (LETT |i| 0) (LETT #1# (- (QVELT |state| 3) 1)) G190
156                   (COND ((|greater_SI| |i| #1#) (GO G191)))
157                   (SEQ
158                    (EXIT
159                     (QSETAREF1 |intvec| |i|
160                                (+ (QAREF1 |intvec| |i|)
161                                   (* (ELT_U32 |vec| |i|) |mp|)))))
162                   (LETT |i| (|inc_SI| |i|)) (GO G190) G191 (EXIT NIL))
163              (EXIT (QSETVELT |state| 0 (* |p| |mp|))))))
164
165(SDEFUN |VECREC2;rational_reconstruction;4IU;5|
166        ((|x| |Integer|) (|y| |Integer|) (|i| |Integer|) (|j| |Integer|)
167         ($ |Union| (|Record| (|:| |num| (|Integer|)) (|:| |den| (|Integer|)))
168          "failed"))
169        (SPROG
170         ((|r1| (|Integer|)) (|s1| (|Integer|)) (|s0| (|Integer|))
171          (|tmp| (|Integer|)) (|r0| (|Integer|))
172          (|qr|
173           (|Record| (|:| |quotient| (|Integer|))
174                     (|:| |remainder| (|Integer|)))))
175         (SEQ (LETT |r0| |y|) (LETT |s0| 0)
176              (LETT |r1| (SPADCALL |x| |y| (QREFELT $ 12))) (LETT |s1| 1)
177              (SEQ G190 (COND ((NULL (> |r1| |i|)) (GO G191)))
178                   (SEQ (LETT |qr| (DIVIDE2 |r0| |r1|)) (LETT |r0| |r1|)
179                        (LETT |r1| (QCDR |qr|))
180                        (LETT |tmp| (- |s0| (* (QCAR |qr|) |s1|)))
181                        (LETT |s0| |s1|) (EXIT (LETT |s1| |tmp|)))
182                   NIL (GO G190) G191 (EXIT NIL))
183              (COND
184               ((< |s1| 0)
185                (SEQ (LETT |s1| (- |s1|)) (EXIT (LETT |r1| (- |r1|))))))
186              (EXIT
187               (COND
188                ((OR (> |s1| |j|) (SPADCALL (GCD |s1| |y|) 1 (QREFELT $ 20)))
189                 (CONS 1 "failed"))
190                ('T (CONS 0 (CONS |r1| |s1|))))))))
191
192(SDEFUN |VECREC2;rational_reconstruction2|
193        ((|statearg| $) (|block_offsets| |Vector| (|Integer|))
194         ($ |Union|
195          (|Record| (|:| |numers| (|PrimitiveArray| (|Integer|)))
196                    (|:| |denoms| (|PrimitiveArray| (|Integer|))))
197          "failed"))
198        (SPROG
199         ((#1=#:G500 NIL) (|cden| #2=(|Integer|))
200          (|ppr| (|Record| (|:| |num| (|Integer|)) (|:| |den| (|Integer|))))
201          (|pp|
202           (|Union| (|Record| (|:| |num| (|Integer|)) (|:| |den| #2#))
203                    "failed"))
204          (|r1| (|Integer|)) (|co| (|Integer|)) (|cb| (|Integer|))
205          (|j| #3=(|Integer|)) (#4=#:G499 NIL) (|ctmp| (|Integer|))
206          (#5=#:G501 NIL) (|jj| NIL) (|dens| (|PrimitiveArray| (|Integer|)))
207          (|nums| (|PrimitiveArray| (|Integer|))) (#6=#:G479 NIL)
208          (#7=#:G477 NIL) (|mm| (|NonNegativeInteger|)) (|n| (|Integer|))
209          (|ok| (|Boolean|)) (|bound2| (|Integer|)) (|bound| (|Integer|))
210          (|j0| #3#) (|intvec| (|PrimitiveArray| (|Integer|)))
211          (|modulus| (|Integer|)) (|state| (|Rep|)))
212         (SEQ
213          (EXIT
214           (SEQ (LETT |state| |statearg|) (LETT |modulus| (QVELT |state| 0))
215                (LETT |intvec| (QVELT |state| 4))
216                (COND
217                 ((>= (QVELT |state| 2) 200)
218                  (SEQ
219                   (COND
220                    ((< (- (QVELT |state| 2) (QVELT |state| 8)) 150)
221                     (COND
222                      ((SPADCALL (QVELT |state| 0) 1 (QREFELT $ 20))
223                       (EXIT
224                        (COND
225                         ((EQL (SPADCALL (QVELT |state| 2) 100 (QREFELT $ 12))
226                               0)
227                          (|error| "impossible"))
228                         (#8='T
229                          (PROGN
230                           (LETT #1# (CONS 1 "failed"))
231                           (GO #9=#:G498)))))))))
232                   (QSETVELT |state| 8 (QVELT |state| 7))
233                   (LETT |modulus| (QVELT |state| 6))
234                   (EXIT (LETT |intvec| (QVELT |state| 5))))))
235                (LETT |j0| (QVELT |state| 1))
236                (LETT |bound|
237                      (QUOTIENT2 (SPADCALL |modulus| (QREFELT $ 25)) 10))
238                (LETT |bound2| (- |modulus| |bound|)) (LETT |ok| 'T)
239                (LETT |pp|
240                      (SPADCALL (QAREF1 |intvec| |j0|) |modulus| |bound|
241                                |bound| (QREFELT $ 23)))
242                (EXIT
243                 (COND ((QEQCAR |pp| 1) (CONS 1 "failed"))
244                       (#8#
245                        (SEQ (LETT |n| (QVELT |state| 3))
246                             (LETT |mm| (QVSIZE |block_offsets|))
247                             (COND
248                              ((SPADCALL (QVELT |state| 9) (QREFELT $ 15))
249                               (SEQ
250                                (QSETVELT |state| 9
251                                          (MAKEARR1
252                                           (PROG1 (LETT #7# |n|)
253                                             (|check_subtype2| (>= #7# 0)
254                                                               '(|NonNegativeInteger|)
255                                                               '(|Integer|)
256                                                               #7#))
257                                           0))
258                                (EXIT
259                                 (QSETVELT |state| 10
260                                           (MAKEARR1
261                                            (PROG1 (LETT #6# |n|)
262                                              (|check_subtype2| (>= #6# 0)
263                                                                '(|NonNegativeInteger|)
264                                                                '(|Integer|)
265                                                                #6#))
266                                            0))))))
267                             (LETT |nums| (QVELT |state| 9))
268                             (LETT |dens| (QVELT |state| 10))
269                             (LETT |ppr| (QCDR |pp|))
270                             (QSETAREF1 |nums| |j0| (QCAR |ppr|))
271                             (QSETAREF1 |dens| |j0| (QCDR |ppr|))
272                             (LETT |cden| (QCDR |ppr|)) (LETT |co| 0)
273                             (LETT |cb| 1)
274                             (SEQ
275                              (EXIT
276                               (SEQ (LETT |jj| 1) (LETT #5# |mm|) G190
277                                    (COND ((|greater_SI| |jj| #5#) (GO G191)))
278                                    (SEQ
279                                     (LETT |ctmp|
280                                           (SPADCALL |block_offsets| |jj|
281                                                     (QREFELT $ 27)))
282                                     (EXIT
283                                      (COND
284                                       ((> |ctmp| |j0|)
285                                        (SEQ (LETT |cb| |jj|)
286                                             (LETT |co| |ctmp|)
287                                             (EXIT
288                                              (PROGN
289                                               (LETT #4# |$NoValue|)
290                                               (GO #10=#:G484))))))))
291                                    (LETT |jj| (|inc_SI| |jj|)) (GO G190) G191
292                                    (EXIT NIL)))
293                              #10# (EXIT #4#))
294                             (LETT |j| |j0|)
295                             (EXIT
296                              (SEQ G190 NIL
297                                   (SEQ (LETT |j| (+ |j| 1))
298                                        (COND
299                                         ((>= |j| |n|) (LETT |j| (- |j| |n|))))
300                                        (COND
301                                         ((EQL |j| |co|)
302                                          (COND
303                                           ((> |mm| 1)
304                                            (SEQ (LETT |cden| 1)
305                                                 (LETT |cb|
306                                                       (COND
307                                                        ((EQL |cb| |mm|) 1)
308                                                        ('T (+ |cb| 1))))
309                                                 (EXIT
310                                                  (LETT |co|
311                                                        (SPADCALL
312                                                         |block_offsets| |cb|
313                                                         (QREFELT $ 27)))))))))
314                                        (EXIT
315                                         (COND
316                                          ((EQL |j| |j0|)
317                                           (PROGN
318                                            (LETT #1#
319                                                  (CONS 0
320                                                        (CONS |nums| |dens|)))
321                                            (GO #9#)))
322                                          ('T
323                                           (SEQ
324                                            (LETT |r1|
325                                                  (SPADCALL
326                                                   (* |cden|
327                                                      (QAREF1 |intvec| |j|))
328                                                   |modulus| (QREFELT $ 12)))
329                                            (EXIT
330                                             (COND
331                                              ((< |r1| |bound|)
332                                               (SEQ (QSETAREF1 |nums| |j| |r1|)
333                                                    (EXIT
334                                                     (QSETAREF1 |dens| |j|
335                                                                |cden|))))
336                                              ((> |r1| |bound2|)
337                                               (SEQ
338                                                (QSETAREF1 |nums| |j|
339                                                           (- |r1| |modulus|))
340                                                (EXIT
341                                                 (QSETAREF1 |dens| |j|
342                                                            |cden|))))
343                                              ('T
344                                               (SEQ
345                                                (LETT |pp|
346                                                      (SPADCALL |r1| |modulus|
347                                                                |bound| |bound|
348                                                                (QREFELT $
349                                                                         23)))
350                                                (EXIT
351                                                 (COND
352                                                  ((QEQCAR |pp| 1)
353                                                   (SEQ
354                                                    (QSETVELT |state| 1 |j|)
355                                                    (EXIT
356                                                     (PROGN
357                                                      (LETT #1#
358                                                            (CONS 1 "failed"))
359                                                      (GO #9#)))))
360                                                  ('T
361                                                   (SEQ
362                                                    (LETT |ppr| (QCDR |pp|))
363                                                    (LETT |cden|
364                                                          (* |cden|
365                                                             (QCDR |ppr|)))
366                                                    (EXIT
367                                                     (COND
368                                                      ((> |cden| |bound|)
369                                                       (SEQ
370                                                        (QSETVELT |state| 1
371                                                                  |j|)
372                                                        (EXIT
373                                                         (PROGN
374                                                          (LETT #1#
375                                                                (CONS 1
376                                                                      "failed"))
377                                                          (GO #9#)))))
378                                                      ('T
379                                                       (SEQ
380                                                        (QSETAREF1 |nums| |j|
381                                                                   (QCAR
382                                                                    |ppr|))
383                                                        (EXIT
384                                                         (QSETAREF1 |dens| |j|
385                                                                    |cden|)))))))))))))))))))
386                                   NIL (GO G190) G191 (EXIT NIL)))))))))
387          #9# (EXIT #1#))))
388
389(SDEFUN |VECREC2;rational_reconstruction;$U;7|
390        ((|statearg| $)
391         ($ |Union|
392          (|Record| (|:| |numers| (|PrimitiveArray| (|Integer|)))
393                    (|:| |denoms| (|PrimitiveArray| (|Integer|))))
394          "failed"))
395        (|VECREC2;rational_reconstruction2| |statearg| (MAKEARR1 1 0) $))
396
397(SDEFUN |VECREC2;lcm|
398        ((|nums| |PrimitiveArray| (|Integer|)) (|lo| |Integer|)
399         (|hi| |Integer|) ($ |Integer|))
400        (SPROG ((|res| (|Integer|)) (#1=#:G510 NIL) (|i| NIL))
401               (SEQ (LETT |res| (QAREF1 |nums| |lo|))
402                    (SEQ (LETT |i| (+ |lo| 1)) (LETT #1# |hi|) G190
403                         (COND ((> |i| #1#) (GO G191)))
404                         (SEQ
405                          (EXIT
406                           (LETT |res|
407                                 (SPADCALL |res| (QAREF1 |nums| |i|)
408                                           (QREFELT $ 31)))))
409                         (LETT |i| (+ |i| 1)) (GO G190) G191 (EXIT NIL))
410                    (EXIT |res|))))
411
412(SDEFUN |VECREC2;gcd|
413        ((|nums| |PrimitiveArray| (|Integer|)) (|lo| |Integer|)
414         (|hi| |Integer|) ($ |Integer|))
415        (SPROG ((|res| (|Integer|)) (#1=#:G514 NIL) (|i| NIL))
416               (SEQ (LETT |res| (QAREF1 |nums| |lo|))
417                    (SEQ (LETT |i| (+ |lo| 1)) (LETT #1# |hi|) G190
418                         (COND ((> |i| #1#) (GO G191)))
419                         (SEQ
420                          (EXIT (LETT |res| (GCD |res| (QAREF1 |nums| |i|)))))
421                         (LETT |i| (+ |i| 1)) (GO G190) G191 (EXIT NIL))
422                    (EXIT |res|))))
423
424(SDEFUN |VECREC2;remove_denoms;V3Pa;10|
425        ((|block_offsets| |Vector| (|Integer|))
426         (|nums| |PrimitiveArray| (|Integer|))
427         (|dens| |PrimitiveArray| (|Integer|))
428         ($ |PrimitiveArray| (|Integer|)))
429        (SPROG
430         ((#1=#:G517 NIL) (#2=#:G529 NIL) (|i| NIL) (|cfactor| (|Integer|))
431          (|tmpp2| (|Integer|)) (#3=#:G528 NIL) (|cden| (|Integer|))
432          (|hi| #4=(|Integer|)) (|li| #4#) (#5=#:G527 NIL) (|ib| NIL)
433          (|res| (|PrimitiveArray| (|Integer|))) (|np| (|NonNegativeInteger|))
434          (|nb| (|NonNegativeInteger|)))
435         (SEQ (LETT |nb| (QVSIZE |block_offsets|)) (LETT |np| (QVSIZE |nums|))
436              (LETT |res| (MAKEARR1 |np| 0))
437              (SEQ (LETT |ib| 1) (LETT #5# |nb|) G190
438                   (COND ((|greater_SI| |ib| #5#) (GO G191)))
439                   (SEQ
440                    (LETT |li| (SPADCALL |block_offsets| |ib| (QREFELT $ 27)))
441                    (LETT |hi|
442                          (COND ((EQL |ib| |nb|) |np|)
443                                ('T
444                                 (SPADCALL |block_offsets| (+ |ib| 1)
445                                           (QREFELT $ 27)))))
446                    (LETT |hi| (- |hi| 1))
447                    (LETT |cden| (|VECREC2;lcm| |dens| |li| |hi| $))
448                    (SEQ (LETT |i| |li|) (LETT #3# |hi|) G190
449                         (COND ((> |i| #3#) (GO G191)))
450                         (SEQ
451                          (LETT |tmpp2|
452                                (PROG2
453                                    (LETT #1#
454                                          (SPADCALL |cden| (QAREF1 |dens| |i|)
455                                                    (QREFELT $ 33)))
456                                    (QCDR #1#)
457                                  (|check_union2| (QEQCAR #1# 0) (|Integer|)
458                                                  (|Union| (|Integer|)
459                                                           #6="failed")
460                                                  #1#)))
461                          (EXIT
462                           (QSETAREF1 |res| |i|
463                                      (* (QAREF1 |nums| |i|) |tmpp2|))))
464                         (LETT |i| (+ |i| 1)) (GO G190) G191 (EXIT NIL))
465                    (LETT |cfactor| (|VECREC2;gcd| |res| |li| |hi| $))
466                    (EXIT
467                     (COND
468                      ((SPADCALL |cfactor| 1 (QREFELT $ 20))
469                       (COND
470                        ((SPADCALL |cfactor| 0 (QREFELT $ 20))
471                         (SEQ (LETT |i| |li|) (LETT #2# |hi|) G190
472                              (COND ((> |i| #2#) (GO G191)))
473                              (SEQ
474                               (EXIT
475                                (QSETAREF1 |res| |i|
476                                           (PROG2
477                                               (LETT #1#
478                                                     (SPADCALL
479                                                      (QAREF1 |res| |i|)
480                                                      |cfactor|
481                                                      (QREFELT $ 33)))
482                                               (QCDR #1#)
483                                             (|check_union2| (QEQCAR #1# 0)
484                                                             (|Integer|)
485                                                             (|Union|
486                                                              (|Integer|) #6#)
487                                                             #1#)))))
488                              (LETT |i| (+ |i| 1)) (GO G190) G191
489                              (EXIT NIL))))))))
490                   (LETT |ib| (|inc_SI| |ib|)) (GO G190) G191 (EXIT NIL))
491              (EXIT |res|))))
492
493(SDEFUN |VECREC2;reconstruct;$VU;11|
494        ((|statearg| $) (|block_offsets| |Vector| (|Integer|))
495         ($ |Union| (|PrimitiveArray| (|Integer|)) "failed"))
496        (SPROG
497         ((|ppr|
498           (|Record| (|:| |numers| (|PrimitiveArray| (|Integer|)))
499                     (|:| |denoms| (|PrimitiveArray| (|Integer|)))))
500          (#1=#:G539 NIL)
501          (|pp|
502           (|Union|
503            (|Record| (|:| |numers| (|PrimitiveArray| (|Integer|)))
504                      (|:| |denoms| (|PrimitiveArray| (|Integer|))))
505            "failed")))
506         (SEQ
507          (EXIT
508           (SEQ
509            (LETT |pp|
510                  (|VECREC2;rational_reconstruction2| |statearg|
511                   |block_offsets| $))
512            (EXIT
513             (COND
514              ((QEQCAR |pp| 1)
515               (PROGN (LETT #1# (CONS 1 "failed")) (GO #2=#:G538)))
516              ('T
517               (SEQ (LETT |ppr| (QCDR |pp|))
518                    (EXIT
519                     (CONS 0
520                           (SPADCALL |block_offsets| (QCAR |ppr|) (QCDR |ppr|)
521                                     (QREFELT $ 34))))))))))
522          #2# (EXIT #1#))))
523
524(DECLAIM (NOTINLINE |VectorIntegerReconstructor;|))
525
526(DEFUN |VectorIntegerReconstructor| ()
527  (SPROG NIL
528         (PROG (#1=#:G541)
529           (RETURN
530            (COND
531             ((LETT #1#
532                    (HGET |$ConstructorCache| '|VectorIntegerReconstructor|))
533              (|CDRwithIncrement| (CDAR #1#)))
534             ('T
535              (UNWIND-PROTECT
536                  (PROG1
537                      (CDDAR
538                       (HPUT |$ConstructorCache| '|VectorIntegerReconstructor|
539                             (LIST
540                              (CONS NIL
541                                    (CONS 1
542                                          (|VectorIntegerReconstructor;|))))))
543                    (LETT #1# T))
544                (COND
545                 ((NOT #1#)
546                  (HREM |$ConstructorCache|
547                        '|VectorIntegerReconstructor|))))))))))
548
549(DEFUN |VectorIntegerReconstructor;| ()
550  (SPROG ((|dv$| NIL) ($ NIL) (|pv$| NIL))
551         (PROGN
552          (LETT |dv$| '(|VectorIntegerReconstructor|))
553          (LETT $ (GETREFV 37))
554          (QSETREFV $ 0 |dv$|)
555          (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL)))
556          (|haddProp| |$ConstructorCache| '|VectorIntegerReconstructor| NIL
557                      (CONS 1 $))
558          (|stuffDomainSlots| $)
559          (SETF |pv$| (QREFELT $ 3))
560          (QSETREFV $ 6
561                    (|Record| (|:| |cmod| (|Integer|)) (|:| |curj| (|Integer|))
562                              (|:| |nmods| (|Integer|))
563                              (|:| |nints| (|Integer|))
564                              (|:| |ints| (|PrimitiveArray| (|Integer|)))
565                              (|:| |bints| (|PrimitiveArray| (|Integer|)))
566                              (|:| |bcmod| (|Integer|))
567                              (|:| |bnmods| (|Integer|))
568                              (|:| |nrecs| (|Integer|))
569                              (|:| |numers| (|PrimitiveArray| (|Integer|)))
570                              (|:| |denoms| (|PrimitiveArray| (|Integer|)))))
571          $)))
572
573(MAKEPROP '|VectorIntegerReconstructor| '|infovec|
574          (LIST
575           '#(NIL NIL NIL NIL NIL NIL '|Rep|
576              (|Record| (|:| |coef1| $) (|:| |coef2| $)) (|Union| 7 '"failed")
577              (|Integer|) (0 . |extendedEuclidean|) |VECREC2;empty;I$;2|
578              (7 . |positiveRemainder|) (|Boolean|) (|PrimitiveArray| 9)
579              (13 . |empty?|) (|Void|) (|U32Vector|)
580              |VECREC2;chinese_update;UvI$V;3| |VECREC2;hensel_update;UvI$V;4|
581              (18 . ~=) (|Record| (|:| |num| 9) (|:| |den| 9))
582              (|Union| 21 '"failed") |VECREC2;rational_reconstruction;4IU;5|
583              (|IntegerRoots| 9) (24 . |approxSqrt|) (|Vector| 9) (29 . |elt|)
584              (|Record| (|:| |numers| 14) (|:| |denoms| 14))
585              (|Union| 28 '"failed") |VECREC2;rational_reconstruction;$U;7|
586              (35 . |lcm|) (|Union| $ '"failed") (41 . |exquo|)
587              |VECREC2;remove_denoms;V3Pa;10| (|Union| 14 '"failed")
588              |VECREC2;reconstruct;$VU;11|)
589           '#(|remove_denoms| 47 |reconstruct| 54 |rational_reconstruction| 60
590              |hensel_update| 73 |empty| 80 |chinese_update| 85)
591           'NIL
592           (CONS (|makeByteWordVec2| 1 '(0))
593                 (CONS '#(NIL)
594                       (CONS
595                        '#((|Join|
596                            (|mkCategory|
597                             (LIST '((|empty| ($$ (|Integer|))) T)
598                                   '((|chinese_update|
599                                      ((|Void|) (|U32Vector|) (|Integer|) $$))
600                                     T)
601                                   '((|hensel_update|
602                                      ((|Void|) (|U32Vector|) (|Integer|) $$))
603                                     T)
604                                   '((|rational_reconstruction|
605                                      ((|Union|
606                                        (|Record| (|:| |num| (|Integer|))
607                                                  (|:| |den| (|Integer|)))
608                                        "failed")
609                                       (|Integer|) (|Integer|) (|Integer|)
610                                       (|Integer|)))
611                                     T)
612                                   '((|rational_reconstruction|
613                                      ((|Union|
614                                        (|Record|
615                                         (|:| |numers|
616                                              (|PrimitiveArray| (|Integer|)))
617                                         (|:| |denoms|
618                                              (|PrimitiveArray| (|Integer|))))
619                                        "failed")
620                                       $$))
621                                     T)
622                                   '((|remove_denoms|
623                                      ((|PrimitiveArray| (|Integer|))
624                                       (|Vector| (|Integer|))
625                                       (|PrimitiveArray| (|Integer|))
626                                       (|PrimitiveArray| (|Integer|))))
627                                     T)
628                                   '((|reconstruct|
629                                      ((|Union| (|PrimitiveArray| (|Integer|))
630                                                "failed")
631                                       $$ (|Vector| (|Integer|))))
632                                     T))
633                             (LIST) NIL NIL)))
634                        (|makeByteWordVec2| 36
635                                            '(3 9 8 0 0 0 10 2 9 0 0 0 12 1 14
636                                              13 0 15 2 9 13 0 0 20 1 24 9 9 25
637                                              2 26 9 0 9 27 2 9 0 0 0 31 2 9 32
638                                              0 0 33 3 0 14 26 14 14 34 2 0 35
639                                              0 26 36 1 0 29 0 30 4 0 22 9 9 9
640                                              9 23 3 0 16 17 9 0 19 1 0 0 9 11
641                                              3 0 16 17 9 0 18)))))
642           '|lookupComplete|))
643
644(MAKEPROP '|VectorIntegerReconstructor| 'NILADIC T)
645