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 +4 -4
- data/lib/magick/maths.rb +22 -6
- data/lib/magick/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b0239f6b8fc615275fa674559061c52c111913e971a49b3ab292630cca826b96
|
|
4
|
+
data.tar.gz: fa2a9c746508d7d10d89d883a84745509435e8ca2e931f8b862ef9a0409ec184
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
|
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
|
|
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)).(
|
|
67
|
-
op.(f.(op.(b).(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
|
|
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
|
|
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).
|
data/lib/magick/version.rb
CHANGED