on master help sign in
3a
06b7fceHenry Ault
docs/system/hoon/library/src/3a/core/fe.md+25−24
@@ -7,22 +7,22 @@ Core containing XX
7Accepts
7Accepts
8-------
8-------
9
9
10−`a` is a [`++bloq`]().
10+`a` is a `++bloq`.
11
11
12Source
12Source
13------
13------
14
14
15− |_ a=bloq
15+ |_ a=bloq
16
16
17### `++dif`
17### `++dif`
18
18
19−Produces the difference between two [atom]()s in the modular basis
19+Produces the difference between two atoms in the modular basis
20representation.
20representation.
21
21
22Accepts
22Accepts
23-------
23-------
24
24
25−`a` is a [`++bloq`]().
25+`a` is a `++bloq`.
26
26
27`b` is an atom.
27`b` is an atom.
28
28
@@ -31,12 +31,12 @@ Accepts
31Produces
31Produces
32--------
32--------
33
33
34−A [`@s`]()
34+A `@s`
35
35
36Source
36Source
37------
37------
38
38
39− ++ dif |=([b=@ c=@] (sit (sub (add out (sit b)) (sit c))))
39+ ++ dif |=([b/@ c/@] (sit (sub (add out (sit b)) (sit c))))
40
40
41Examples
41Examples
42--------
42--------
@@ -69,7 +69,7 @@ Inverts the order of the modular field.
69Accepts
69Accepts
70-------
70-------
71
71
72−`b` is a [`++bloq`]().
72+`b` is a `++bloq`.
73
73
74Produces
74Produces
75--------
75--------
@@ -80,7 +80,7 @@ An atom.
80Source
80Source
81------
81------
82
82
83− ++ inv |=(b=@ (sub (dec out) (sit b)))
83+ ++ inv |=(b/@ (sub (dec out) (sit b)))
84
84
85Examples
85Examples
86--------
86--------
@@ -109,17 +109,17 @@ Revereses bytes within block.
109Accepts
109Accepts
110-------
110-------
111
111
112−`b` is a [`++bloq`]().
112+`b` is a `++bloq`.
113
113
114Produces
114Produces
115--------
115--------
116
116
117−An atom.=
117+An atom.
118
118
119Source
119Source
120------
120------
121
121
122− ++ net |= b=@ ^- @
122+ ++ net |= b/@ ^- @
123 => .(b (sit b))
123 => .(b (sit b))
124 ?: (lte a 3)
124 ?: (lte a 3)
125 b
125 b
@@ -189,12 +189,12 @@ The maximum integer value that the current block can store.
189Accepts
189Accepts
190-------
190-------
191
191
192−A [`++bloq`]().
192+A `++bloq`.
193
193
194Produces
194Produces
195--------
195--------
196
196
197−An [atom]().
197+An atom.
198
198
199Source
199Source
200------
200------
@@ -234,7 +234,7 @@ Roll `d` to the left by `c` `b`-sized blocks.
234Accepts
234Accepts
235-------
235-------
236
236
237−`a` is a [`++bloq`]().
237+`a` is a `++bloq`.
238
238
239`b` is a `++bloq`.
239`b` is a `++bloq`.
240
240
@@ -250,7 +250,7 @@ An atom.
250Source
250Source
251------
251------
252
252
253− ++ rol |= [b=bloq c=@ d=@] ^- @ :: roll left
253+ ++ rol |= [b/bloq c/@ d/@] ^- @ :: roll left
254 =+ e=(sit d)
254 =+ e=(sit d)
255 =+ f=(bex (sub a b))
255 =+ f=(bex (sub a b))
256 =+ g=(mod c f)
256 =+ g=(mod c f)
@@ -281,11 +281,11 @@ Roll `d` to the right by `c` `b`-sized blocks.
281Accepts
281Accepts
282-------
282-------
283
283
284−`a` is a [`++bloq`]().
284+`a` is a `++bloq`.
285
285
286`b` is a `++bloq`.
286`b` is a `++bloq`.
287
287
288−`c` is an [atom]().
288+`c` is an atom.
289
289
290`d` is an atom.
290`d` is an atom.
291
291
@@ -297,12 +297,13 @@ An atom.
297Source
297Source
298------
298------
299
299
300− ++ ror |= [b=bloq c=@ d=@] ^- @ :: roll right
300+ ++ ror |= {b/bloq c/@ d/@} ^- @ :: roll right
301 =+ e=(sit d)
301 =+ e=(sit d)
302 =+ f=(bex (sub a b))
302 =+ f=(bex (sub a b))
303 =+ g=(mod c f)
303 =+ g=(mod c f)
304 (sit (con (rsh b g e) (lsh b (sub f g) e)))
304 (sit (con (rsh b g e) (lsh b (sub f g) e)))
305
305
306+
306Examples
307Examples
307--------
308--------
308
309
@@ -330,9 +331,9 @@ Sum two numbers in this modular field.
330Accepts
331Accepts
331-------
332-------
332
333
333−`a` is a [`++bloq`]().
334+`a` is a `++bloq`.
334
335
335−`b` is an [atom]().
336+`b` is an atom.
336
337
337`c` is an atom.
338`c` is an atom.
338
339
@@ -344,7 +345,7 @@ An atom.
344Source
345Source
345------
346------
346
347
347− ++ sum |=([b=@ c=@] (sit (add b c))) :: wrapping add
348+ ++ sum |=([b/@ c/@] (sit (add b c))) :: wrapping add
348
349
349Examples
350Examples
350--------
351--------
@@ -368,12 +369,12 @@ Examples
368
369
369Atom in mod block representation
370Atom in mod block representation
370
371
371−Produce an [atom]() in the current modular block representation.
372+Produce an atom in the current modular block representation.
372
373
373Accepts
374Accepts
374-------
375-------
375
376
376−`a` is a [`++bloq`]().
377+`a` is a `++bloq`.
377
378
378`b` is an atom.
379`b` is an atom.
379
380
@@ -385,7 +386,7 @@ An atom.
385Source
386Source
386------
387------
387
388
388− ++ sit |=(b=@ (end a 1 b)) :: enforce modulo
389+ ++ sit |=(b/@ (end a 1 b)) :: enforce modulo
389
390
390Examples
391Examples
391--------
392--------
docs/system/hoon/library/src/3a/core/si.md+32−32
@@ -16,17 +16,17 @@ Produces the absolute value of a signed integer.
16Accepts
16Accepts
17-------
17-------
18
18
19−`a` is a signed integer, [`@s`]().
19+`a` is a signed integer, `@s`.
20
20
21Produces
21Produces
22--------
22--------
23
23
24−An [atom]().
24+An atom.
25
25
26Source
26Source
27------
27------
28
28
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
30
30
31Examples
31Examples
32--------
32--------
@@ -49,20 +49,20 @@ Produces the difference between two signed integers `b` and `c`.
49Accepts
49Accepts
50-------
50-------
51
51
52−`a` is a signed integer, [`@s`]().
52+`a` is a signed integer, `@s`.
53
53
54`b` is a signed integer, `@s`.
54`b` is a signed integer, `@s`.
55
55
56Produces
56Produces
57--------
57--------
58
58
59−A [`@s`]().
59+A `@s`.
60
60
61
61
62Source
62Source
63------
63------
64
64
65− ++ dif |= [a=@s b=@s] :: subtraction
65+ ++ dif |= [a/@s b/@s] :: subtraction
66 (sum a (new !(syn b) (abs b)))
66 (sum a (new !(syn b) (abs b)))
67
67
68Examples
68Examples
@@ -90,7 +90,7 @@ Accepts
90
90
91`a` is a signed integer, `@s`.
91`a` is a signed integer, `@s`.
92
92
93−`b` is an [atom]().
93+`b` is an atom.
94
94
95Produces
95Produces
96--------
96--------
@@ -100,7 +100,7 @@ An atom.
100Source
100Source
101------
101------
102
102
103− ++ dul |= [a=@s b=@] :: modulus
103+ ++ dul |= [a/@s b/@] :: modulus
104 =+(c=(old a) ?:(-.c (mod +.c b) (sub b +.c)))
104 =+(c=(old a) ?:(-.c (mod +.c b) (sub b +.c)))
105
105
106Examples
106Examples
@@ -128,19 +128,19 @@ Produces the quotient of two signed integers.
128Accepts
128Accepts
129-------
129-------
130
130
131−`a` is a signed integer, [`@s`].
131+`a` is a signed integer, `@s`.
132
132
133`b` is a signed integer, `@s`.
133`b` is a signed integer, `@s`.
134
134
135Produces
135Produces
136--------
136--------
137
137
138−An [atom]().
138+An atom.
139
139
140Source
140Source
141------
141------
142
142
143− ++ fra |= [a=@s b=@s] :: divide
143+ ++ fra |= [a/@s b/@s] :: divide
144 (new =(0 (mix (syn a) (syn b))) (div (abs a) (abs b)))
144 (new =(0 (mix (syn a) (syn b))) (div (abs a) (abs b)))
145
145
146Examples
146Examples
@@ -157,7 +157,7 @@ Examples
157
157
158Signed integer
158Signed integer
159
159
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`.
161
161
162Accepts
162Accepts
163-------
163-------
@@ -169,12 +169,12 @@ Accepts
169Produces
169Produces
170--------
170--------
171
171
172−A [`@s`]()
172+A `@s`
173
173
174Source
174Source
175------
175------
176
176
177− ++ new |= [a=? b=@] :: [sign value] to @s
177+ ++ new |= [a/? b/@] :: [sign value] to @s
178 `@s`?:(a (mul 2 b) ?:(=(0 b) 0 +((mul 2 (dec b)))))
178 `@s`?:(a (mul 2 b) ?:(=(0 b) 0 +((mul 2 (dec b)))))
179
179
180Examples
180Examples
@@ -191,24 +191,24 @@ Examples
191
191
192### `++old`
192### `++old`
193
193
194−[sign value]
194+sign value
195
195
196Produces the cell `[sign value]` representations of a signed integer.
196Produces the cell `[sign value]` representations of a signed integer.
197
197
198Accepts
198Accepts
199-------
199-------
200
200
201−`a` is a [`@s`]().
201+`a` is a `@s`.
202
202
203Produces
203Produces
204--------
204--------
205
205
206−A cell of a boolean and an [atom]().
206+A cell of a boolean and an atom.
207
207
208Source
208Source
209------
209------
210
210
211− ++ old |=(a=@s [(syn a) (abs a)]) :: [sign value]
211+ ++ old |=(a/@s [(syn a) (abs a)]) :: [sign value]
212
212
213Examples
213Examples
214--------
214--------
@@ -236,7 +236,7 @@ Produces the product of two signed integers.
236Accepts
236Accepts
237-------
237-------
238
238
239−`a` is a [`@s`]().
239+`a` is a `@s`.
240
240
241`b` is a `@s`.
241`b` is a `@s`.
242
242
@@ -248,7 +248,7 @@ A `@s`.
248Source
248Source
249------
249------
250
250
251− ++ pro |= [a=@s b=@s] :: multiplication
251+ ++ pro |= [a/@s b/@s] :: multiplication
252 (new =(0 (mix (syn a) (syn b))) (mul (abs a) (abs b)))
252 (new =(0 (mix (syn a) (syn b))) (mul (abs a) (abs b)))
253
253
254Examples
254Examples
@@ -274,7 +274,7 @@ Produces the remainder from a division of two signed integers.
274Accepts
274Accepts
275-------
275-------
276
276
277−`a` is a [`@s`]().
277+`a` is a `@s`.
278
278
279`b` is a `@s`.
279`b` is a `@s`.
280
280
@@ -286,7 +286,7 @@ A `@sd`.
286Source
286Source
287------
287------
288
288
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
290
290
291Examples
291Examples
292--------
292--------
@@ -313,7 +313,7 @@ Sum two signed integers.
313Accepts
313Accepts
314-------
314-------
315
315
316−`b` is a [`@s`]().
316+`b` is a `@s`.
317
317
318`c` is a signed integer `@s`.
318`c` is a signed integer `@s`.
319
319
@@ -325,7 +325,7 @@ A `@s`.
325Source
325Source
326------
326------
327
327
328− ++ sum |= [a=@s b=@s] :: addition
328+ ++ sum |= [a/@s b/@s] :: addition
329 ~| %si-sum
329 ~| %si-sum
330 =+ [c=(old a) d=(old b)]
330 =+ [c=(old a) d=(old b)]
331 ?: -.c
331 ?: -.c
@@ -360,23 +360,23 @@ Signed from unsigned
360
360
361Produces a signed integer from an unsigned integer.
361Produces a signed integer from an unsigned integer.
362
362
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
364inferred as an unsigned integer in the type system.
364inferred as an unsigned integer in the type system.
365
365
366Accepts
366Accepts
367-------
367-------
368
368
369−`a` is a [`@u`]().
369+`a` is a `@u`.
370
370
371Produces
371Produces
372--------
372--------
373
373
374−A [`@s`]().
374+A `@s`.
375
375
376Source
376Source
377------
377------
378
378
379− ++ sun |=(a=@u (mul 2 a)) :: @u to @s
379+ ++ sun |=(a/@u (mul 2 a)) :: @u to @s
380
380
381Examples
381Examples
382--------
382--------
@@ -403,7 +403,7 @@ Produce the sign of a signed integer, where `&` is posiitve, and `|` is negative
403Accepts
403Accepts
404-------
404-------
405
405
406−`a` is a [`@s`]().
406+`a` is a `@s`.
407
407
408Produces
408Produces
409--------
409--------
@@ -413,7 +413,7 @@ A boolean.
413Source
413Source
414------
414------
415
415
416− ++ syn |=(a=@s =(0 (end 0 1 a))) :: sign test
416+ ++ syn |=(a/@s =(0 (end 0 1 a))) :: sign test
417
417
418Examples
418Examples
419--------
419--------
@@ -436,7 +436,7 @@ Compare two signed integers.
436Accepts
436Accepts
437-------
437-------
438
438
439−`b` is a [`@s`]().
439+`b` is a `@s`.
440
440
441`c` is a `@s`.
441`c` is a `@s`.
442
442
@@ -448,7 +448,7 @@ A `@s`.
448Source
448Source
449------
449------
450
450
451− ++ cmp |= [a=@s b=@s] :: compare
451+ ++ cmp |= [a/@s b/@s] :: compare
452 ^- @s
452 ^- @s
453 ?: =(a b)
453 ?: =(a b)
454 --0
454 --0
docs/system/hoon/library/src/3a/gate/egcd.md+4−3
@@ -2,12 +2,12 @@
2
2
3GCD
3GCD
4
4
5− ++ egcd :: schneier's egcd
5+ ++ egcd !: :: schneier's egcd
6− |= [a=@ b=@]
6+ |= {a/@ b/@}
7 =+ si
7 =+ si
8 =+ [c=(sun a) d=(sun b)]
8 =+ [c=(sun a) d=(sun b)]
9 =+ [u=[c=(sun 1) d=--0] v=[c=--0 d=(sun 1)]]
9 =+ [u=[c=(sun 1) d=--0] v=[c=--0 d=(sun 1)]]
10− |- ^- [d=@ u=@ v=@]
10+ |- ^- {d/@ u/@s v/@s}
11 ?: =(--0 c)
11 ?: =(--0 c)
12 [(abs d) d.u d.v]
12 [(abs d) d.u d.v]
13 :: ?> ?& =(c (sum (pro (sun a) c.u) (pro (sun b) c.v)))
13 :: ?> ?& =(c (sum (pro (sun a) c.u) (pro (sun b) c.v)))
@@ -22,6 +22,7 @@ GCD
22 ==
22 ==
23 ::
23 ::
24
24
25+
25Greatest common denominator
26Greatest common denominator
26
27
27 ~zod/try=> (egcd 20 15)
28 ~zod/try=> (egcd 20 15)