aboutsummaryrefslogtreecommitdiff
path: root/elymas/lib/math.ey
blob: db04c7b7c198cb2e16169d6e0e82bbbf890a4e35 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Discrete mathematics useful in computer stuff
# More complicated stuff in sublibs

<
  # converts an array of digits into an integer
  # i.e. [ 1 2 3 ] 10 unbase => 321
  # i.e. [ ] 10 unbase => 0
  # 0 -> base to convert from
  # 1 -> array of digits
  # 0 <- resulting integer
  { ==b
    _ len _ ==l dearray
    0 l { b mul add } rep
  } /unbase deff

  # converts an integer into an array of digits
  # i.e. 123 10 base => [ 3 2 1 ]
  # i.e. 0 10 base => [ ]
  # 0 <- base to convert to
  # 1 <- integer to convert
  # 0 -> resulting array of digits
  { ==b
    [ -01 { _ } { _ b mod -01 b div } loop -- ]
  } /base deff
> /math defv

# vim: syn=elymas