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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65df30d3f96fe5550514270600cc924f65c474889636576cf9be72c6a00879e6
4
- data.tar.gz: b44e9faebbfa2a4460eb73473bce524c436cb51b632b3840374844790acf96c3
3
+ metadata.gz: d3f4d7010877464feeb604a9d0edfba71524afe0d36e11c26066016ac25dd0d8
4
+ data.tar.gz: 361d966444b85299c04a5776e6da889c6fa18d39c60fb2719aa94d33e9fe6a29
5
5
  SHA512:
6
- metadata.gz: 7681c208a10a33e12f18f4950071390f06b39f9acae485f7f3959f31b32f6902941bb5ea563dc5a0300ac49898e144da7286e1e2761cd0cf8065e896d214eae2
7
- data.tar.gz: 27861552dd8c9d13cecaac96b29bd788a62e88c6910d7bbdff0efe2ae33e7c939c8d2bb50dc36d8473c932d4fc452f41c09a41a57c3fb1b14272bee0c65a9ce6
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.7
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
- def lg(anti_logarithm)
15
- log(2.0, anti_logarithm)
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
- class Integer
26
- module SuuConstantsAndSubFunctions
27
- Ichi = ['', '', '', '', '四', '五', '六', '七', '八', '九'].freeze
28
- Juu = ['', '', '', ''].freeze
29
- Man = ['', '', '', '', '', '垓', '杼', '穣', '溝', '澗', '正', '載', '極',
30
- '恒河沙', '阿僧祇', '那由他', '不可思議', '無量大数'].freeze
31
- Mi = ['', 'm', 'b', 'tr', 'quadr', 'quint', 'sext', 'sept', 'oct', 'non'].freeze
32
- Un = ['', 'un', 'do', 'tre', 'quattuor', 'quin', 'sex', 'septen', 'octo', 'novem'].freeze
33
- Gin = ['', 'dec', 'vigin', 'trigin', 'quadragin', 'quinquagin',
34
- 'sexagin', 'septuagin', 'octogin', 'nonagin'].freeze
35
- Cen = ['', 'cen', 'ducen', 'trecen', 'quadringen', 'quingen',
36
- 'sescen', 'septingen', 'octingen', 'nongen'].freeze
37
- One = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine','ten', 'eleven',
38
- 'twelve', 'thirteen', 'forteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'].freeze
39
- Ten = ['', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'].freeze
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
- include SuuConstantsAndSubFunctions
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
@@ -1,3 +1,3 @@
1
1
  module Kgl
2
- VERSION = '0.0.7'
2
+ VERSION = '0.0.9'
3
3
  end
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
- `openssl rand #{n}`.bytes.map do |i|
19
- while m <= i
20
- i = `openssl rand 1`.bytes[0]
21
- end
22
- ls[i]
23
- end.join
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kgl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - KAZOON