on master help sign in
3a
commit06b7fced02c0948e50155d28118ca11ed3876256 authorHenry Ault <henry@tlon.io> dateThu 17 Mar 2016, 13:32 (11 years ago) parentadf3d95
3 files changed+61−59
docs/system/hoon/library/src/3a/core/fe.md+25−24 docs/system/hoon/library/src/3a/core/si.md+32−32 docs/system/hoon/library/src/3a/gate/egcd.md+4−3
docs/system/hoon/library/src/3a/core/fe.md+25−24
@@ -7,22 +7,22 @@ Core containing XX
77Accepts
88-------
99
10−`a` is a [`++bloq`]().
10+`a` is a `++bloq`.
1111
1212Source
1313------
1414
15− |_ a=bloq
15+ |_ a=bloq
1616
1717### `++dif`
1818
19−Produces the difference between two [atom]()s in the modular basis
19+Produces the difference between two atoms in the modular basis
2020representation.
2121
2222Accepts
2323-------
2424
25−`a` is a [`++bloq`]().
25+`a` is a `++bloq`.
2626
2727`b` is an atom.
2828
@@ -31,12 +31,12 @@ Accepts
3131Produces
3232--------
3333
34−A [`@s`]()
34+A `@s`
3535
3636Source
3737------
3838
39− ++ dif |=([b=@ c=@] (sit (sub (add out (sit b)) (sit c))))
39+ ++ dif |=([b/@ c/@] (sit (sub (add out (sit b)) (sit c))))
4040
4141Examples
4242--------
@@ -69,7 +69,7 @@ Inverts the order of the modular field.
6969Accepts
7070-------
7171
72−`b` is a [`++bloq`]().
72+`b` is a `++bloq`.
7373
7474Produces
7575--------
@@ -80,7 +80,7 @@ An atom.
8080Source
8181------
8282
83− ++ inv |=(b=@ (sub (dec out) (sit b)))
83+ ++ inv |=(b/@ (sub (dec out) (sit b)))
8484
8585Examples
8686--------
@@ -109,17 +109,17 @@ Revereses bytes within block.
109109Accepts
110110-------
111111
112−`b` is a [`++bloq`]().
112+`b` is a `++bloq`.
113113
114114Produces
115115--------
116116
117−An atom.=
117+An atom.
118118
119119Source
120120------
121121
122− ++ net |= b=@ ^- @
122+ ++ net |= b/@ ^- @
123123 => .(b (sit b))
124124 ?: (lte a 3)
125125 b
@@ -189,12 +189,12 @@ The maximum integer value that the current block can store.
189189Accepts
190190-------
191191
192−A [`++bloq`]().
192+A `++bloq`.
193193
194194Produces
195195--------
196196
197−An [atom]().
197+An atom.
198198
199199Source
200200------
@@ -234,7 +234,7 @@ Roll `d` to the left by `c` `b`-sized blocks.
234234Accepts
235235-------
236236
237−`a` is a [`++bloq`]().
237+`a` is a `++bloq`.
238238
239239`b` is a `++bloq`.
240240
@@ -250,7 +250,7 @@ An atom.
250250Source
251251------
252252
253− ++ rol |= [b=bloq c=@ d=@] ^- @ :: roll left
253+ ++ rol |= [b/bloq c/@ d/@] ^- @ :: roll left
254254 =+ e=(sit d)
255255 =+ f=(bex (sub a b))
256256 =+ g=(mod c f)
@@ -281,11 +281,11 @@ Roll `d` to the right by `c` `b`-sized blocks.
281281Accepts
282282-------
283283
284−`a` is a [`++bloq`]().
284+`a` is a `++bloq`.
285285
286286`b` is a `++bloq`.
287287
288−`c` is an [atom]().
288+`c` is an atom.
289289
290290`d` is an atom.
291291
@@ -297,12 +297,13 @@ An atom.
297297Source
298298------
299299
300− ++ ror |= [b=bloq c=@ d=@] ^- @ :: roll right
300+ ++ ror |= {b/bloq c/@ d/@} ^- @ :: roll right
301301 =+ e=(sit d)
302302 =+ f=(bex (sub a b))
303303 =+ g=(mod c f)
304304 (sit (con (rsh b g e) (lsh b (sub f g) e)))
305305
306+
306307Examples
307308--------
308309
@@ -330,9 +331,9 @@ Sum two numbers in this modular field.
330331Accepts
331332-------
332333
333−`a` is a [`++bloq`]().
334+`a` is a `++bloq`.
334335
335−`b` is an [atom]().
336+`b` is an atom.
336337
337338`c` is an atom.
338339
@@ -344,7 +345,7 @@ An atom.
344345Source
345346------
346347
347− ++ sum |=([b=@ c=@] (sit (add b c))) :: wrapping add
348+ ++ sum |=([b/@ c/@] (sit (add b c))) :: wrapping add
348349
349350Examples
350351--------
@@ -368,12 +369,12 @@ Examples
368369
369370Atom in mod block representation
370371
371−Produce an [atom]() in the current modular block representation.
372+Produce an atom in the current modular block representation.
372373
373374Accepts
374375-------
375376
376−`a` is a [`++bloq`]().
377+`a` is a `++bloq`.
377378
378379`b` is an atom.
379380
@@ -385,7 +386,7 @@ An atom.
385386Source
386387------
387388
388− ++ sit |=(b=@ (end a 1 b)) :: enforce modulo
389+ ++ sit |=(b/@ (end a 1 b)) :: enforce modulo
389390
390391Examples
391392--------
docs/system/hoon/library/src/3a/core/si.md+32−32
@@ -16,17 +16,17 @@ Produces the absolute value of a signed integer.
1616Accepts
1717-------
1818
19−`a` is a signed integer, [`@s`]().
19+`a` is a signed integer, `@s`.
2020
2121Produces
2222--------
2323
24−An [atom]().
24+An atom.
2525
2626Source
2727------
2828
29− ++ abs |=(a=@s (add (end 0 1 a) (rsh 0 1 a))) :: absolute value
29+ ++ abs |=(a/@s (add (end 0 1 a) (rsh 0 1 a))) :: absolute value
3030
3131Examples
3232--------
@@ -49,20 +49,20 @@ Produces the difference between two signed integers `b` and `c`.
4949Accepts
5050-------
5151
52−`a` is a signed integer, [`@s`]().
52+`a` is a signed integer, `@s`.
5353
5454`b` is a signed integer, `@s`.
5555
5656Produces
5757--------
5858
59−A [`@s`]().
59+A `@s`.
6060
6161
6262Source
6363------
6464
65− ++ dif |= [a=@s b=@s] :: subtraction
65+ ++ dif |= [a/@s b/@s] :: subtraction
6666 (sum a (new !(syn b) (abs b)))
6767
6868Examples
@@ -90,7 +90,7 @@ Accepts
9090
9191`a` is a signed integer, `@s`.
9292
93−`b` is an [atom]().
93+`b` is an atom.
9494
9595Produces
9696--------
@@ -100,7 +100,7 @@ An atom.
100100Source
101101------
102102
103− ++ dul |= [a=@s b=@] :: modulus
103+ ++ dul |= [a/@s b/@] :: modulus
104104 =+(c=(old a) ?:(-.c (mod +.c b) (sub b +.c)))
105105
106106Examples
@@ -128,19 +128,19 @@ Produces the quotient of two signed integers.
128128Accepts
129129-------
130130
131−`a` is a signed integer, [`@s`].
131+`a` is a signed integer, `@s`.
132132
133133`b` is a signed integer, `@s`.
134134
135135Produces
136136--------
137137
138−An [atom]().
138+An atom.
139139
140140Source
141141------
142142
143− ++ fra |= [a=@s b=@s] :: divide
143+ ++ fra |= [a/@s b/@s] :: divide
144144 (new =(0 (mix (syn a) (syn b))) (div (abs a) (abs b)))
145145
146146Examples
@@ -157,7 +157,7 @@ Examples
157157
158158Signed integer
159159
160−Produces a signed integer from a loobean sign value `a` and an [atom]() `b`.
160+Produces a signed integer from a loobean sign value `a` and an atom `b`.
161161
162162Accepts
163163-------
@@ -169,12 +169,12 @@ Accepts
169169Produces
170170--------
171171
172−A [`@s`]()
172+A `@s`
173173
174174Source
175175------
176176
177− ++ new |= [a=? b=@] :: [sign value] to @s
177+ ++ new |= [a/? b/@] :: [sign value] to @s
178178 `@s`?:(a (mul 2 b) ?:(=(0 b) 0 +((mul 2 (dec b)))))
179179
180180Examples
@@ -191,24 +191,24 @@ Examples
191191
192192### `++old`
193193
194−[sign value]
194+sign value
195195
196196Produces the cell `[sign value]` representations of a signed integer.
197197
198198Accepts
199199-------
200200
201−`a` is a [`@s`]().
201+`a` is a `@s`.
202202
203203Produces
204204--------
205205
206−A cell of a boolean and an [atom]().
206+A cell of a boolean and an atom.
207207
208208Source
209209------
210210
211− ++ old |=(a=@s [(syn a) (abs a)]) :: [sign value]
211+ ++ old |=(a/@s [(syn a) (abs a)]) :: [sign value]
212212
213213Examples
214214--------
@@ -236,7 +236,7 @@ Produces the product of two signed integers.
236236Accepts
237237-------
238238
239−`a` is a [`@s`]().
239+`a` is a `@s`.
240240
241241`b` is a `@s`.
242242
@@ -248,7 +248,7 @@ A `@s`.
248248Source
249249------
250250
251− ++ pro |= [a=@s b=@s] :: multiplication
251+ ++ pro |= [a/@s b/@s] :: multiplication
252252 (new =(0 (mix (syn a) (syn b))) (mul (abs a) (abs b)))
253253
254254Examples
@@ -274,7 +274,7 @@ Produces the remainder from a division of two signed integers.
274274Accepts
275275-------
276276
277−`a` is a [`@s`]().
277+`a` is a `@s`.
278278
279279`b` is a `@s`.
280280
@@ -286,7 +286,7 @@ A `@sd`.
286286Source
287287------
288288
289− ++ rem |=([a=@s b=@s] (dif a (pro b (fra a b)))) :: remainder
289+ ++ rem |=([a/@s b/@s] (dif a (pro b (fra a b)))) :: remainder
290290
291291Examples
292292--------
@@ -313,7 +313,7 @@ Sum two signed integers.
313313Accepts
314314-------
315315
316−`b` is a [`@s`]().
316+`b` is a `@s`.
317317
318318`c` is a signed integer `@s`.
319319
@@ -325,7 +325,7 @@ A `@s`.
325325Source
326326------
327327
328− ++ sum |= [a=@s b=@s] :: addition
328+ ++ sum |= [a/@s b/@s] :: addition
329329 ~| %si-sum
330330 =+ [c=(old a) d=(old b)]
331331 ?: -.c
@@ -360,23 +360,23 @@ Signed from unsigned
360360
361361Produces a signed integer from an unsigned integer.
362362
363−Note that the result must be manually cast to some [`@s`]() odor to be
363+Note that the result must be manually cast to some `@s` odor to be
364364inferred as an unsigned integer in the type system.
365365
366366Accepts
367367-------
368368
369−`a` is a [`@u`]().
369+`a` is a `@u`.
370370
371371Produces
372372--------
373373
374−A [`@s`]().
374+A `@s`.
375375
376376Source
377377------
378378
379− ++ sun |=(a=@u (mul 2 a)) :: @u to @s
379+ ++ sun |=(a/@u (mul 2 a)) :: @u to @s
380380
381381Examples
382382--------
@@ -403,7 +403,7 @@ Produce the sign of a signed integer, where `&` is posiitve, and `|` is negative
403403Accepts
404404-------
405405
406−`a` is a [`@s`]().
406+`a` is a `@s`.
407407
408408Produces
409409--------
@@ -413,7 +413,7 @@ A boolean.
413413Source
414414------
415415
416− ++ syn |=(a=@s =(0 (end 0 1 a))) :: sign test
416+ ++ syn |=(a/@s =(0 (end 0 1 a))) :: sign test
417417
418418Examples
419419--------
@@ -436,7 +436,7 @@ Compare two signed integers.
436436Accepts
437437-------
438438
439−`b` is a [`@s`]().
439+`b` is a `@s`.
440440
441441`c` is a `@s`.
442442
@@ -448,7 +448,7 @@ A `@s`.
448448Source
449449------
450450
451− ++ cmp |= [a=@s b=@s] :: compare
451+ ++ cmp |= [a/@s b/@s] :: compare
452452 ^- @s
453453 ?: =(a b)
454454 --0
docs/system/hoon/library/src/3a/gate/egcd.md+4−3
@@ -2,12 +2,12 @@
22
33GCD
44
5− ++ egcd :: schneier's egcd
6− |= [a=@ b=@]
5+ ++ egcd !: :: schneier's egcd
6+ |= {a/@ b/@}
77 =+ si
88 =+ [c=(sun a) d=(sun b)]
99 =+ [u=[c=(sun 1) d=--0] v=[c=--0 d=(sun 1)]]
10− |- ^- [d=@ u=@ v=@]
10+ |- ^- {d/@ u/@s v/@s}
1111 ?: =(--0 c)
1212 [(abs d) d.u d.v]
1313 :: ?> ?& =(c (sum (pro (sun a) c.u) (pro (sun b) c.v)))
@@ -22,6 +22,7 @@ GCD
2222 ==
2323 ::
2424
25+
2526Greatest common denominator
2627
2728 ~zod/try=> (egcd 20 15)