kgl 0.0.7 → 0.0.9
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/CHANGELOG.md +7 -1
- data/lib/kgl/kmath.rb +15 -5
- data/lib/kgl/suu.rb +19 -16
- data/lib/kgl/version.rb +1 -1
- data/lib/kgl.rb +6 -6
- 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: d3f4d7010877464feeb604a9d0edfba71524afe0d36e11c26066016ac25dd0d8
|
|
4
|
+
data.tar.gz: 361d966444b85299c04a5776e6da889c6fa18d39c60fb2719aa94d33e9fe6a29
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 21895c609c451cd90b3d690eacbda283474aa5ee992f542722925302d47f9980522a9bf9d1a74016b4f52862cdddf90173db96ed5bccad4dbf2b51afab7d8bee
|
|
7
|
+
data.tar.gz: 3cd4225cf2b298a4adae8bfb9d8b2e77ab6e1d3a26e020dc794d6f422e9d3aa1c5a5570d5e144ca85a52da244e9a28c09a9ffec075deaf06ff0f2885d07796fd
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
-
## 0.0.
|
|
3
|
+
## 0.0.9 2026/04/23
|
|
4
|
+
- Refine `Kgl.#rpw`.
|
|
5
|
+
|
|
6
|
+
## 0.0.8 2026/04/15
|
|
7
|
+
- `Rational#approx_reduction(true)` includes only better approximations.
|
|
8
|
+
|
|
9
|
+
## 0.0.7 2026/04/15
|
|
4
10
|
- Fix missing the alias of `Math.ln` from `Math.log`.
|
|
5
11
|
- Refine `Float#to_r` and `Rational#approx_reduction`.
|
|
6
12
|
|
data/lib/kgl/kmath.rb
CHANGED
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
class << Math
|
|
2
2
|
alias ln log
|
|
3
|
+
if method_defined?(:log2)
|
|
4
|
+
alias lg log2
|
|
5
|
+
else
|
|
6
|
+
def lg(anti_logarithm)
|
|
7
|
+
log(2.0, anti_logarithm)
|
|
8
|
+
end
|
|
9
|
+
end
|
|
3
10
|
end
|
|
4
11
|
module Math
|
|
5
12
|
alias ln log
|
|
6
|
-
module_function
|
|
7
|
-
def log(base, anti_logarithm=base.tap{base=nil})
|
|
13
|
+
module_function def log(base, anti_logarithm=base.tap{base=nil})
|
|
8
14
|
if base.nil?
|
|
9
15
|
ln(anti_logarithm)
|
|
10
16
|
else
|
|
11
17
|
ln(anti_logarithm).quo(ln(base))
|
|
12
18
|
end
|
|
13
19
|
end
|
|
14
|
-
|
|
15
|
-
|
|
20
|
+
if method_defined?(:log2)
|
|
21
|
+
alias lg log2
|
|
22
|
+
else
|
|
23
|
+
def lg(anti_logarithm)
|
|
24
|
+
log(2.0, anti_logarithm)
|
|
25
|
+
end
|
|
16
26
|
end
|
|
17
27
|
end
|
|
18
28
|
|
|
@@ -103,7 +113,7 @@ class Rational
|
|
|
103
113
|
else
|
|
104
114
|
h = m
|
|
105
115
|
end
|
|
106
|
-
res << r*s
|
|
116
|
+
res << r*s if (r-q).abs < (res[-1]-q).abs
|
|
107
117
|
end
|
|
108
118
|
end
|
|
109
119
|
end
|
data/lib/kgl/suu.rb
CHANGED
|
@@ -22,21 +22,21 @@
|
|
|
22
22
|
# a: 英語(アメリカ式)
|
|
23
23
|
# b: 英語(ヨーロッパ式)
|
|
24
24
|
# 参考:Name of a Number (http://isthe.com/chongo/tech/math/number/number.html)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
25
|
+
module Kgl::SuuMod
|
|
26
|
+
Ichi = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'].freeze
|
|
27
|
+
Juu = ['', '十', '百', '千'].freeze
|
|
28
|
+
Man = ['', '万', '億', '兆', '京', '垓', '杼', '穣', '溝', '澗', '正', '載', '極',
|
|
29
|
+
'恒河沙', '阿僧祇', '那由他', '不可思議', '無量大数'].freeze
|
|
30
|
+
Mi = ['', 'm', 'b', 'tr', 'quadr', 'quint', 'sext', 'sept', 'oct', 'non'].freeze
|
|
31
|
+
Un = ['', 'un', 'do', 'tre', 'quattuor', 'quin', 'sex', 'septen', 'octo', 'novem'].freeze
|
|
32
|
+
Gin = ['', 'dec', 'vigin', 'trigin', 'quadragin', 'quinquagin',
|
|
33
|
+
'sexagin', 'septuagin', 'octogin', 'nonagin'].freeze
|
|
34
|
+
Cen = ['', 'cen', 'ducen', 'trecen', 'quadringen', 'quingen',
|
|
35
|
+
'sescen', 'septingen', 'octingen', 'nongen'].freeze
|
|
36
|
+
One = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine','ten', 'eleven',
|
|
37
|
+
'twelve', 'thirteen', 'forteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'].freeze
|
|
38
|
+
Ten = ['', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'].freeze
|
|
39
|
+
refine Integer do
|
|
40
40
|
module_function
|
|
41
41
|
def us(p)
|
|
42
42
|
if p == -1
|
|
@@ -151,7 +151,10 @@ class Integer
|
|
|
151
151
|
end
|
|
152
152
|
end
|
|
153
153
|
end
|
|
154
|
-
|
|
154
|
+
end
|
|
155
|
+
class Integer
|
|
156
|
+
include Kgl::SuuMod
|
|
157
|
+
using Kgl::SuuMod
|
|
155
158
|
def express(lang='j', acc=7)
|
|
156
159
|
raise RangeError, 'negative integer' if self < 0
|
|
157
160
|
ni = self.to_s
|
data/lib/kgl/version.rb
CHANGED
data/lib/kgl.rb
CHANGED
|
@@ -15,12 +15,12 @@ module Kgl
|
|
|
15
15
|
module_function def rpw(n, sym='!#$%&*+,-./:;<=>?@')
|
|
16
16
|
ls = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' + sym
|
|
17
17
|
m = ls.length
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
nn = ((255+128)*n).ceildiv(m)
|
|
19
|
+
begin
|
|
20
|
+
ary = `openssl rand #{nn}`.bytes.select{ |i| i < m }
|
|
21
|
+
nn += n
|
|
22
|
+
end while ary.size < n
|
|
23
|
+
ary[...n].map{ |i| ls[i] }.join
|
|
24
24
|
rescue Errno::ENOENT => e
|
|
25
25
|
raise 'Kgl.#rpw requires openssl command'
|
|
26
26
|
end
|