(loader '((title q)))
(if (not (>= (version) 15.2)) (progn (syserror 'load "fichier non compatible" 'q)))
(add-feature 'q)
(if (not (featurep 'z)) (progn (libload "bnz.ll")))
(setq #:backup:majuscules #:system:read-case-flag #:system:read-case-flag ())
(setq #:sys-package:colon '#:r:q)
(putprop '#:r:q:/ '((() ()) n d) 'defstruct)
(loader'((entry #:r:q:/:make subr0)
(push (@ 101))
(push nil)
(push nil)
(mov '2 a4)
(jmp vector)
101
(eval ())
(push a1)
(push (@ 102))
(push a1)
(push '#:r:q:/)
(mov '2 a4)
(jmp typevector)
102
(eval ())
(mov (& 0) a1)
(adjstk '1)
(return)
))
(when (featurep 'compiler) (defmacro-open #:r:q:/:n (struct . valeur) (ifn valeur (list 'vref struct 0) (list 'vset struct 0 (car valeur)))))
(when (featurep 'compiler) (defmacro-open #:r:q:/:d (struct . valeur) (ifn valeur (list 'vref struct 1) (list 'vset struct 1 (car valeur)))))
'#:r:q:/
(loader'((entry #:r:q:/x subr2)
(push a2)
(push a1)
(call #:r:q:/:make)
(hpmovx (& 0) a1 '0)
(hpmovx (& 1) a1 '1)
(adjstk '2)
(return)
))
(loader'((entry qx subr2)
(cabne a2 '1 #:r:q:/x)
(return)
))
(loader'((fentry #:r:q:n:1/ subr1)
(entry #:r:q:n:1/ subr1)
(mov a1 a2)
(mov '1 a1)
(bra #:r:q:/x)
))
(loader'((fentry #:r:q:z:1/ subr1)
(entry #:r:q:z:1/ subr1)
(jcall abs)
(mov a1 a2)
(mov '-1 a1)
(bra #:r:q:/x)
))
(loader'((fentry numerator subr1)
(entry numerator subr1)
(push a1)
(jcall type-of)
(cabne '#:r:q:/ a1 101)
(hpxmov (& 0) '0 a1)
(adjstk '1)
(return)
101
(mov (& 0) a1)
(jcall numberp)
(btnil a1 103)
(mov (& 0) a1)
(adjstk '1)
(return)
103
(push (@ 105))
(push 'numerator)
(push (& 2))
(mov '2 a4)
(jmp list)
105
(eval ())
(mov a1 a3)
(mov 'errnna a2)
(mov 'numerator a1)
(adjstk '1)
(jmp #:r:error)
))
(loader'((fentry denominator subr1)
(entry denominator subr1)
(push a1)
(jcall type-of)
(cabne '#:r:q:/ a1 101)
(hpxmov (& 0) '1 a1)
(adjstk '1)
(return)
101
(mov (& 0) a1)
(jcall numberp)
(btnil a1 103)
(mov '1 a1)
(adjstk '1)
(return)
103
(push (@ 105))
(push 'denominator)
(push (& 2))
(mov '2 a4)
(jmp list)
105
(eval ())
(mov a1 a3)
(mov 'errnna a2)
(mov 'denominator a1)
(adjstk '1)
(jmp #:r:error)
))
(loader'((fentry #:r:q:rationalp subr1)
(entry #:r:q:rationalp subr1)
(return)
))
(setq #:sys-package:colon '#:r:q:/)
(loader'((fentry #:r:q:/:integerp subr1)
(entry #:r:q:/:integerp subr1)
(push a1)
(hpxmov a1 '0 a4)
(hpxmov a1 '1 a3)
(push nil)
(push a3)
(push a4)
(push (cvalq gcd))
(mov (& 3) (cvalq gcd))
(push '1)
(push '(gcd))
(push 'lambda)
(push llink)
(push dlink)
(push cbindn)
(stack dlink)
(mov a3 a2)
(mov a4 a1)
(jcall pgcd)
(mov a1 (cvalq gcd))
(cabne '0 a1 101)
(cabeq '0 (& 7) 102)
(mov (& 7) a1)
(jcall abs)
(mov a1 a2)
(mov (& 7) a1)
(jcall quotient)
(hpmovx a1 (& 10) '0)
(bra 102)
101
(cabeq '1 a1 102)
(mov a1 a2)
(mov (& 7) a1)
(jcall quotient)
(mov a1 (& 7))
(hpmovx a1 (& 10) '0)
(mov (cvalq gcd) a2)
(mov (& 8) a1)
(jcall quotient)
(mov a1 (& 8))
(hpmovx a1 (& 10) '1)
102
(mov '1 a2)
(mov (& 8) a1)
(jcall eq)
(btnil a1 107)
(mov (& 7) a1)
107
(mov (& 1) dlink)
(mov (& 6) (cvalq gcd))
(adjstk '11)
(return)
))
(loader'((fentry #:r:q:/:0- subr1)
(entry #:r:q:/:0- subr1)
(push a1)
(hpxmov a1 '0 a1)
(jcall 0-)
(hpxmov (& 0) '1 a2)
(adjstk '1)
(bra qx)
))
(loader'((fentry #:r:q:/:abs subr1)
(entry #:r:q:/:abs subr1)
(push a1)
(push (@ 103))
(hpxmov a1 '0 a4)
(push a4)
(push '0)
(mov '2 a4)
(jmp <)
103
(eval ())
(btnil a1 101)
(hpxmov (& 0) '0 a1)
(jcall abs)
(hpxmov (& 0) '1 a2)
(adjstk '1)
(bra qx)
101
(mov (& 0) a1)
(adjstk '1)
(return)
))
(loader'((fentry #:r:q:/:floor subr1)
(entry #:r:q:/:floor subr1)
(push a1)
(hpxmov a1 '0 a1)
(hpxmov (& 0) '1 a2)
(jcall quomod)
(push a1)
(hpxmov (& 1) '1 a2)
(mov (cvalq #:ex:mod) a1)
(call qx)
(mov a1 (cvalq #:ex:mod))
(mov (& 0) a1)
(adjstk '2)
(return)
))
(loader'((fentry #:r:q:/:truncate subr1)
(entry #:r:q:/:truncate subr1)
(jcall #:r:q:/:floor)
(push a1)
(push (@ 103))
(push a1)
(push '0)
(mov '2 a4)
(jmp <)
103
(eval ())
(btnil a1 102)
(push (@ 104))
(push '1)
(push (& 2))
(mov '2 a4)
(jmp +)
104
(eval ())
(mov a1 (& 0))
(push (@ 105))
(push (cvalq #:ex:mod))
(push '1)
(mov '2 a4)
(jmp -)
105
(eval ())
(mov a1 (cvalq #:ex:mod))
102
(mov (& 0) a1)
(adjstk '1)
(return)
))
(loader'((fentry #:r:q:/:float subr1)
(entry #:r:q:/:float subr1)
(push a1)
(hpxmov a1 '1 a4)
(cabeq '0 a4 101)
(hpxmov a1 '0 a1)
(jcall float)
(push a1)
(hpxmov (& 1) '1 a1)
(jcall float)
(pop a4)
(fquo a1 a4)
(mov a4 a1)
(adjstk '1)
(return)
101
(push (@ 103))
(push 'float)
(push a1)
(mov '2 a4)
(jmp list)
103
(eval ())
(mov a1 a3)
(mov 'rdiv0 a2)
(mov 'float a1)
(adjstk '1)
(jmp #:r:error)
))
(loader'((fentry #:r:q:/:1/ subr1)
(entry #:r:q:/:1/ subr1)
(push a1)
(push (@ 103))
(hpxmov a1 '0 a4)
(push a4)
(push '0)
(mov '2 a4)
(jmp <)
103
(eval ())
(btnil a1 101)
(hpxmov (& 0) '1 a1)
(jcall 0-)
(push a1)
(hpxmov (& 1) '0 a1)
(jcall abs)
(mov a1 a2)
(pop a1)
(adjstk '1)
(bra qx)
101
(hpxmov (& 0) '1 a1)
(hpxmov (& 0) '0 a2)
(adjstk '1)
(bra qx)
))
(loader'((fentry #:r:q:/:<?> subr2)
(entry #:r:q:/:<?> subr2)
(push a2)
(push a1)
(mov a2 a1)
(jcall type-of)
(cabne a1 '#:r:q:/ 102)
(push (@ 103))
(hpxmov (& 1) '0 a4)
(push a4)
(hpxmov (& 3) '1 a4)
(push a4)
(mov '2 a4)
(jmp *)
103
(eval ())
(push a1)
(push (@ 104))
(hpxmov (& 3) '0 a4)
(push a4)
(hpxmov (& 3) '1 a4)
(push a4)
(mov '2 a4)
(jmp *)
104
(eval ())
(mov a1 a2)
(pop a1)
(adjstk '2)
(jmp <?>)
102
(mov (& 1) a1)
(jcall integerp)
(btnil a1 106)
(hpxmov (& 0) '0 a1)
(push a1)
(push (@ 108))
(push (& 3))
(hpxmov (& 3) '1 a4)
(push a4)
(mov '2 a4)
(jmp *)
108
(eval ())
(mov a1 a2)
(pop a1)
(adjstk '2)
(jmp <?>)
106
(mov (& 0) a2)
(mov (& 1) a1)
(jcall <?>)
(adjstk '2)
(jmp 0-)
))
(loader'((fentry #:r:q:/:+ subr2)
(entry #:r:q:/:+ subr2)
(push a2)
(push a1)
(mov a2 a1)
(jcall type-of)
(cabne a1 '#:r:q:/ 102)
(hpxmov (& 0) '1 a4)
(hpxmov (& 1) '1 a3)
(cabne a4 a3 103)
(push (@ 105))
(hpxmov (& 1) '0 a4)
(push a4)
(hpxmov (& 3) '0 a4)
(push a4)
(mov '2 a4)
(jmp +)
105
(eval ())
(hpxmov (& 0) '1 a2)
(adjstk '2)
(bra qx)
103
(push (@ 106))
(push (@ 107))
(hpxmov (& 2) '0 a4)
(push a4)
(hpxmov (& 4) '1 a4)
(push a4)
(mov '2 a4)
(jmp *)
107
(eval ())
(push a1)
(push (@ 108))
(hpxmov (& 3) '1 a4)
(push a4)
(hpxmov (& 5) '0 a4)
(push a4)
(mov '2 a4)
(jmp *)
108
(eval ())
(push a1)
(mov '2 a4)
(jmp +)
106
(eval ())
(push a1)
(push (@ 109))
(hpxmov (& 2) '1 a4)
(push a4)
(hpxmov (& 4) '1 a4)
(push a4)
(mov '2 a4)
(jmp *)
109
(eval ())
(mov a1 a2)
(pop a1)
(adjstk '2)
(bra qx)
102
(mov (& 1) a1)
(jcall integerp)
(btnil a1 111)
(mov (& 1) a2)
(mov (& 0) a1)
(adjstk '2)
(bra #:r:q:/:q+z)
111
(push (@ 113))
(push (& 2))
(push (& 2))
(mov '2 a4)
(jmp +)
113
(eval ())
(adjstk '2)
(return)
))
(loader'((entry #:r:q:/:q+z subr2)
(push a1)
(push (@ 101))
(hpxmov a1 '0 a4)
(push a4)
(push (@ 102))
(hpxmov a1 '1 a4)
(push a4)
(push a2)
(mov '2 a4)
(jmp *)
102
(eval ())
(push a1)
(mov '2 a4)
(jmp +)
101
(eval ())
(hpxmov (& 0) '1 a2)
(adjstk '1)
(bra qx)
))
(loader'((fentry #:r:q:/:* subr2)
(entry #:r:q:/:* subr2)
(push a2)
(push a1)
(mov a2 a1)
(jcall type-of)
(cabne a1 '#:r:q:/ 102)
(push (@ 103))
(hpxmov (& 1) '0 a4)
(push a4)
(hpxmov (& 3) '0 a4)
(push a4)
(mov '2 a4)
(jmp *)
103
(eval ())
(push a1)
(push (@ 104))
(hpxmov (& 2) '1 a4)
(push a4)
(hpxmov (& 4) '1 a4)
(push a4)
(mov '2 a4)
(jmp *)
104
(eval ())
(mov a1 a2)
(pop a1)
(adjstk '2)
(bra qx)
102
(mov (& 1) a1)
(jcall integerp)
(btnil a1 106)
(mov (& 1) a2)
(mov (& 0) a1)
(adjstk '2)
(bra #:r:q:/:q*z)
106
(push (@ 108))
(push (& 2))
(push (& 2))
(mov '2 a4)
(jmp *)
108
(eval ())
(adjstk '2)
(return)
))
(loader'((entry #:r:q:/:q*z subr2)
(push a1)
(push (@ 101))
(hpxmov a1 '0 a4)
(push a4)
(push a2)
(mov '2 a4)
(jmp *)
101
(eval ())
(hpxmov (& 0) '1 a2)
(adjstk '1)
(bra qx)
))
(loader'((fentry #:r:q:/:prin subr1)
(entry #:r:q:/:prin subr1)
(push (cvalq q))
(mov a1 (cvalq q))
(push '1)
(push '(q))
(push (@ #:r:q:/:prin))
(push llink)
(mov nil llink)
(push dlink)
(push cbindn)
(stack dlink)
(push (@ 103))
(push '0)
(hpxmov a1 '1 a4)
(push a4)
(mov '2 a4)
(jmp =)
103
(eval ())
(btnil a1 101)
(hpxmov (cvalq q) '0 a4)
(cabne '0 a4 104)
(push (@ 106))
(push '"0/0")
(mov '1 a4)
(jmp prin)
106
(eval ())
(bra 102)
104
(push (@ 107))
(push '"1/0")
(mov '1 a4)
(jmp prin)
107
(eval ())
(bra 102)
101
(mov (cvalq q) a1)
(jcall #:r:q:/:integerp)
(btnil a1 108)
(push (@ 110))
(hpxmov (cvalq q) '0 a4)
(push a4)
(mov '1 a4)
(jmp prin)
110
(eval ())
(bra 102)
108
(push (@ 111))
(mov '0 a4)
(jmp precision)
111
(eval ())
(hpxmov (cvalq q) '0 a4)
(hpxmov (cvalq q) '1 a3)
(push a3)
(push a4)
(push a1)
(jcall type-of)
(cabne a1 'fix 113)
(push (@ 114))
(push (& 2))
(push (& 4))
(push (@ 117))
(push '0)
(push (& 5))
(mov '2 a4)
(jmp =)
117
(eval ())
(btnil a1 115)
(mov '1 a4)
(bra 116)
115
(mov (& 3) a4)
116
(push a4)
(mov (& 4) a1)
(jcall abs)
(push a1)
(mov '4 a4)
(bra ecrit-fc)
114
(eval ())
(bra 112)
113
(cabne a1 'float 118)
(push (@ 121))
(mov (& 1) a1)
(jcall fix)
(mov a1 (& 1))
(push a1)
(push '0)
(mov '2 a4)
(jmp >)
121
(eval ())
(btnil a1 119)
(push (@ 122))
(push (& 2))
(push (& 4))
(push '10)
(push (& 4))
(mov '4 a4)
(bra ecrit-10)
122
(eval ())
(bra 112)
119
(push (@ 123))
(push (& 2))
(push (& 4))
(push '0)
(push (@ 124))
(push (& 5))
(mov '1 a4)
(jmp -)
124
(eval ())
(push a1)
(mov '4 a4)
(bra ecrit-fc)
123
(eval ())
(bra 112)
118
(push (@ 126))
(hpxmov (cvalq q) '0 a4)
(push a4)
(mov '1 a4)
(jmp prin)
126
(eval ())
(push (@ 127))
(push '47)
(mov '1 a4)
(jmp princn)
127
(eval ())
(push (@ 128))
(hpxmov (cvalq q) '1 a4)
(push a4)
(mov '1 a4)
(jmp prin)
128
(eval ())
112
(adjstk '3)
102
(mov (& 1) dlink)
(mov (& 2) llink)
(mov (& 6) (cvalq q))
(adjstk '7)
(return)
))
(loader'((entry division- subr2)
(push a2)
(push a1)
(push (@ 103))
(push a1)
(push a2)
(mov '2 a4)
(jmp <)
103
(eval ())
(btnil a1 101)
(mov (& 0) (cvalq #:ex:mod))
(mov '0 (& 0))
(bra 102)
101
(push (@ 104))
(push (& 1))
(push (& 3))
(mov '2 a4)
(jmp -)
104
(eval ())
(mov a1 (cvalq #:ex:mod))
(mov '1 (& 0))
102
(mov (& 0) a1)
(adjstk '2)
(return)
))
(loader'((entry ecrit-fc nsubr)
(push (@ 101))
(push '"/")
(mov '1 a4)
(jmp prin)
101
(eval ())
102
(push (@ 104))
(push (& 1))
(push '0)
(mov '2 a4)
(jmp >)
104
(eval ())
(btnil a1 103)
(push (@ 105))
(mov '0 a2)
(mov (& 2) a1)
(jcall <?>)
(cabne a1 '1 107)
(mov (& 3) a2)
(mov (& 4) a1)
(jcall quomod)
(mov a1 a4)
(bra 106)
107
(cabne a1 '0 108)
(mov (& 3) a2)
(mov (& 4) a1)
(call division-)
(mov a1 a4)
(bra 106)
108
(cabne a1 '-1 109)
(mov (& 3) a2)
(mov (& 4) a1)
(jcall round)
(mov a1 a4)
(bra 106)
109
(mov nil a4)
106
(push a4)
(mov '1 a4)
(jmp prin)
105
(eval ())
(mov (& 2) (& 3))
(mov (cvalq #:ex:mod) (& 2))
(cabne (& 2) '0 110)
(mov '0 (& 0))
(bra 102)
110
(push (@ 114))
(push '0)
(push (& 3))
(mov '2 a4)
(jmp =)
114
(eval ())
(bfnil a1 113)
(push (@ 115))
(push '" ")
(mov '1 a4)
(jmp prin)
115
(eval ())
113
(push (@ 116))
(push (& 1))
(push '1)
(mov '2 a4)
(jmp -)
116
(eval ())
(mov a1 (& 0))
(bra 102)
103
(push (@ 119))
(push '0)
(push (& 4))
(mov '2 a4)
(jmp =)
119
(eval ())
(bfnil a1 118)
(push (@ 122))
(push '0)
(push (& 3))
(mov '2 a4)
(jmp =)
122
(eval ())
(btnil a1 121)
(push (@ 123))
(push '" ")
(mov '1 a4)
(jmp prin)
123
(eval ())
121
(push (@ 126))
(push '0)
(push (& 4))
(push '100)
(mov '3 a4)
(jmp <)
126
(eval ())
(btnil a1 118)
(push (@ 129))
(push (& 4))
(push '0)
(mov '2 a4)
(jmp >)
129
(eval ())
(btnil a1 127)
(push (@ 130))
(push (& 4))
(push (& 4))
(push '10)
(push '1)
(mov '4 a4)
(bra ecrit-10)
130
(eval ())
(bra 118)
127
(push (@ 131))
(hpxmov (cvalq q) '0 a4)
(push a4)
(mov '1 a4)
(jmp prin)
131
(eval ())
(push (@ 132))
(push '47)
(mov '1 a4)
(jmp princn)
132
(eval ())
(push (@ 133))
(hpxmov (cvalq q) '1 a4)
(push a4)
(mov '1 a4)
(jmp prin)
133
(eval ())
118
(push (@ 134))
(push '"/")
(mov '1 a4)
(jmp prin)
134
(eval ())
(adjstk '4)
(return)
))
(loader'((entry ecrit-10 nsubr)
(push (@ 103))
(push (& 4))
(push '0)
(mov '2 a4)
(jmp <)
103
(eval ())
(btnil a1 102)
(push (@ 104))
(push '"-")
(mov '1 a4)
(jmp prin)
104
(eval ())
(push (@ 105))
(push (& 4))
(mov '1 a4)
(jmp -)
105
(eval ())
(mov a1 (& 3))
102
(push (@ 106))
(mov (& 3) a2)
(mov (& 4) a1)
(jcall quomod)
(push a1)
(mov '1 a4)
(jmp prin)
106
(eval ())
(mov (cvalq #:ex:mod) (& 3))
(mov (& 1) a2)
(mov (& 2) a1)
(jcall pgcd)
(mov a1 (cvalq gcd))
(push (@ 109))
(push '1)
(push a1)
(mov '2 a4)
(jmp =)
109
(eval ())
(bfnil a1 111)
(push (@ 110))
(push '".")
(mov '1 a4)
(jmp prin)
110
(eval ())
111
(push (@ 113))
(push (cvalq gcd))
(push '1)
(mov '2 a4)
(jmp >)
113
(eval ())
(btnil a1 112)
(mov (cvalq gcd) a2)
(mov (& 2) a1)
(jcall quotient)
(mov a1 (& 2))
(push (@ 114))
(push (& 1))
(push '1)
(mov '2 a4)
(jmp -)
114
(eval ())
(mov a1 (& 0))
(push (@ 115))
(push (@ 116))
(mov (cvalq gcd) a2)
(mov (& 3) a1)
(jcall quotient)
(push a1)
(push (& 6))
(mov '2 a4)
(jmp *)
116
(eval ())
(mov (& 3) a2)
(jcall quomod)
(push a1)
(mov '1 a4)
(jmp prin)
115
(eval ())
(mov (cvalq #:ex:mod) (& 3))
(mov (& 1) a2)
(mov (& 2) a1)
(jcall pgcd)
(mov a1 (cvalq gcd))
(bra 111)
112
(push (@ 119))
(push '0)
(push (& 5))
(mov '2 a4)
(jmp =)
119
(eval ())
(bfnil a1 117)
(push (@ 120))
(push '",")
(push (@ 121))
(push (& 4))
(push (& 7))
(mov '2 a4)
(jmp *)
121
(eval ())
(mov (& 4) a2)
(jcall quotient)
(push a1)
(mov '2 a4)
(jmp prin)
120
(eval ())
(mov (& 3) (cvalq gcd))
(mov (cvalq #:ex:mod) (& 3))
(push (@ 122))
(push (& 1))
(push '1)
(mov '2 a4)
(jmp -)
122
(eval ())
(mov a1 (& 0))
123
(push (@ 125))
(push (cvalq gcd))
(push (& 5))
(mov '2 a4)
(jmp =)
125
(eval ())
(bfnil a1 124)
(push (@ 126))
(push (@ 127))
(push (& 3))
(push (& 6))
(mov '2 a4)
(jmp *)
127
(eval ())
(mov (& 3) a2)
(jcall quomod)
(push a1)
(mov '1 a4)
(jmp prin)
126
(eval ())
(mov (cvalq #:ex:mod) (& 3))
(push (@ 130))
(mov (& 1) a1)
(jcall 1-)
(mov a1 (& 1))
(push a1)
(push '1)
(mov '2 a4)
(jmp <)
130
(eval ())
(btnil a1 123)
(push (@ 131))
(push '".")
(mov '1 a4)
(jmp prin)
131
(eval ())
(mov (cvalq gcd) (& 3))
(bra 123)
124
(adjstk '4)
(return)
117
(mov nil a1)
(adjstk '4)
(return)
))
(setq #:sys-package:colon 'fix)
(loader'((fentry #:fix:1/ subr1)
(entry #:fix:1/ subr1)
(cnblt a1 '0 101)
(mov a1 a2)
(mov '1 a1)
(bra qx)
101
(jcall 0-)
(mov a1 a2)
(mov '-1 a1)
(bra qx)
))
(loader'((fentry #:fix:/ subr2)
(entry #:fix:/ subr2)
(push a1)
(push (@ 101))
(mov a2 a1)
(jcall 1/)
(push a1)
(push (& 2))
(mov '2 a4)
(jmp *)
101
(eval ())
(adjstk '1)
(return)
))
(setq #:sys-package:colon '#:r:q)
(loader'((fentry #:r:q:quomod subr2)
(entry #:r:q:quomod subr2)
(jmp #:r:quomod)
))
(loader '((end)))