magick 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5ae8b9cd9f9526ea3adac12fd63ab30cd38895c035493a3f4866c83d25df015b
4
- data.tar.gz: d60e88dbedd1c8d9c7bedf778beeefed2c3012678ce5022a741c02471ba76abd
3
+ metadata.gz: b0239f6b8fc615275fa674559061c52c111913e971a49b3ab292630cca826b96
4
+ data.tar.gz: fa2a9c746508d7d10d89d883a84745509435e8ca2e931f8b862ef9a0409ec184
5
5
  SHA512:
6
- metadata.gz: 9f033baf4e66b21b0c542d7f99ab95a717fb864acb48e5f51ba06e3c7eec9cd8e68f3d659272942fe4ffb487c618bb563e2b6c6765f4e016e196826cfd6cc45b
7
- data.tar.gz: c967a3d6c062ee01b0f804cae609d8f281d4a33f66ba7449edaf2a08f8c505f52607090f769811c1db205745bf458bebdcd506cacfadc2f29b6295b3acf74bf9
6
+ metadata.gz: 16881788b5f302b8a6a06276351ec676e65cd97c21818347ce76910190e7068cce0cb52dc0338d28cbb1d5f747d64ab2129b3f71b19d482e917c00ae7497eeeb
7
+ data.tar.gz: 077b86c81e1e46d236fea5b4ed40492d9f646ae89da69c89987a5fdc1d0e7c6587b6c5a11a80a69e5b7797297ee5a12910537cb98278d5091ec38eee71172de2
data/lib/magick/maths.rb CHANGED
@@ -15,17 +15,26 @@ module Magick
15
15
  end
16
16
  alias :mult :multiply
17
17
 
18
+ # See note on `mod`
18
19
  def divide
19
20
  Smullyan::Birds::Y.(->(f){
20
21
  ->(n){
21
22
  ->(d){
22
- n < d ? 0 : 1 + f.(n - d).(d)
23
+ n < d ? 0 : 1 + f.(subtract.(n).(d)).(d)
23
24
  }
24
25
  }
25
26
  })
26
27
  end
27
28
  alias :div :divide
28
29
 
30
+ def div
31
+ ->(n){
32
+ ->(d){
33
+ n/d
34
+ }
35
+ }
36
+ end
37
+
29
38
  def div_to_f
30
39
  ->(n){
31
40
  ->(d){
@@ -37,11 +46,16 @@ module Magick
37
46
  }
38
47
  end
39
48
 
49
+ # This implementation of mod _works_ but is mostly
50
+ # provided as a curiousity: ie, how could we implement
51
+ # modulus with the Y combinator and repeated subtraction?
52
+ # It isn't efficient, as you will find if you ever try, say,
53
+ # mod.(65536).(2)
40
54
  def mod
41
55
  Smullyan::Birds::Y.(->(f){
42
56
  ->(n){
43
57
  ->(d){
44
- n < d ? n : f.(n - d).(d)
58
+ n < d ? n : f.(subtract.(n).(d)).(d)
45
59
  }
46
60
  }
47
61
  })
@@ -63,8 +77,8 @@ module Magick
63
77
  ->(b) {
64
78
  ->(e) {
65
79
  e == 1 ? b :
66
- mod.(e).(2) == 0 ? f.(op.(b).(b)).(divide.(e).(2)) :
67
- op.(f.(op.(b).(b)).(divide.(e).(2))).(b)
80
+ mod.(e).(2) == 0 ? f.(op.(b).(b)).(div.(e).(2)) :
81
+ op.(f.(op.(b).(b)).(div.(e).(2))).(b)
68
82
  }
69
83
  }
70
84
  }).(base).(exponent)
@@ -90,7 +104,7 @@ module Magick
90
104
  return r if n == 1
91
105
  end
92
106
  a = op.(a).(a)
93
- n = n/2
107
+ n = div.(n).(2)
94
108
  end
95
109
  }
96
110
  }
@@ -119,7 +133,7 @@ module Magick
119
133
  b = op.(b).(b)
120
134
  e = e/2
121
135
  end
122
- e = e / 2
136
+ e = e/2
123
137
  return b if e == 0
124
138
  power_accumulate.(op).(b).(op.(b).(b)).(e)
125
139
  }
@@ -127,6 +141,8 @@ module Magick
127
141
  }
128
142
  end
129
143
 
144
+ # average expects an array
145
+ # eg: average.([1,2,3]) => 2.0
130
146
  def average
131
147
  Smullyan::Birds::Phi.
132
148
  (Magick::Maths::div_to_f).
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Magick
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.3"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magick
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Phil Crissman