kgl 0.0.2 → 0.0.4
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 +9 -3
- data/README.md +4 -0
- data/lib/kgl/kmath.rb +22 -14
- data/lib/kgl/suu.rb +5 -5
- data/lib/kgl/version.rb +1 -1
- data/lib/kgl.rb +15 -0
- metadata +3 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bd117b9cbf076dbaf0e603b4bf8782c486dac9ed4ca0b8aca2b132a4c2cad9c6
|
|
4
|
+
data.tar.gz: 277a4f5825763bda9fb3d0ffa574f218bb8d1d36d7be83a51bc8b73691ce131e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 864878ddf6cc7b145fcd33fc2186babdd06bf8f3126dc662c66e746fa62346ba30b11e47cfcb504975aa1367115563a5dfc10adc2e1a17f70ff01b5d6e98e750
|
|
7
|
+
data.tar.gz: d191f15fa644cda1a619094901de5fab04239ec6d4d983fd20c06b43f6f61b9ec11877aa0bb3003f0c122b80306b47861811380d87dc4405233b8d00309d1a41
|
data/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
-
## 0.0.
|
|
4
|
-
-
|
|
3
|
+
## 0.0.4 2026/04/02
|
|
4
|
+
- Add `Float#to_r_exact` that returns exact Rational value expressed by self.
|
|
5
|
+
|
|
6
|
+
## 0.0.3 2024/12/03
|
|
7
|
+
- Add `Kgl.#rpw`.
|
|
5
8
|
|
|
6
9
|
## 0.0.2 2020/04/23
|
|
7
|
-
- Change default value of the Integer#to_msm's argument to 59.94
|
|
10
|
+
- Change default value of the `Integer#to_msm`'s argument to `59.94`.
|
|
11
|
+
|
|
12
|
+
## 0.0.1 2019/08/31
|
|
13
|
+
- First release.
|
data/README.md
CHANGED
|
@@ -28,6 +28,10 @@ Returns the logarithm of `anti_logarithm` to base 2.
|
|
|
28
28
|
### `Float#to_r`, `String#to_r`
|
|
29
29
|
Returns `Rational` value of `self`.
|
|
30
30
|
|
|
31
|
+
### `Float#to_r_exact`
|
|
32
|
+
Returns exact `Rational` value of `self`, that may not be desirable for usual usage.
|
|
33
|
+
For instance, (0.1).to_r_exact returns (3602879701896397/36028797018963968) while (0.1).to_r returns (1/10).
|
|
34
|
+
|
|
31
35
|
### `Integer#to_msm(fps=59.94)`
|
|
32
36
|
Returns `"[minutes]:[seconds].[milliseconds]"` which corresponds to `self` frames.
|
|
33
37
|
The submilliseconds will be rounded. `fps` is frames per second.
|
data/lib/kgl/kmath.rb
CHANGED
|
@@ -15,28 +15,36 @@ end
|
|
|
15
15
|
|
|
16
16
|
class Float
|
|
17
17
|
def to_r
|
|
18
|
-
str=self.to_s
|
|
19
|
-
(decimal,power)=str.split(/e/)
|
|
20
|
-
(integer,decimal)=decimal.split(/\./)
|
|
21
|
-
length=decimal.length
|
|
22
|
-
numerator=integer.to_i*10**length+decimal.to_i
|
|
23
|
-
denominator=10**length
|
|
24
|
-
power=power.to_i
|
|
25
|
-
if power>0
|
|
26
|
-
numerator*=10**power
|
|
18
|
+
str = self.to_s
|
|
19
|
+
(decimal, power) = str.split(/e/)
|
|
20
|
+
(integer, decimal) = decimal.split(/\./)
|
|
21
|
+
length = decimal.length
|
|
22
|
+
numerator = integer.to_i*10**length+decimal.to_i
|
|
23
|
+
denominator = 10**length
|
|
24
|
+
power = power.to_i
|
|
25
|
+
if power > 0
|
|
26
|
+
numerator *= 10**power
|
|
27
27
|
else
|
|
28
|
-
denominator*=10**(-power)
|
|
28
|
+
denominator *= 10**(-power)
|
|
29
|
+
end
|
|
30
|
+
return Rational(numerator, denominator)
|
|
31
|
+
end
|
|
32
|
+
def to_r_exact
|
|
33
|
+
s, e = Math.frexp(self)
|
|
34
|
+
if e < 53
|
|
35
|
+
Rational(Math.ldexp(s, 53).to_i, 1<<(53-e))
|
|
36
|
+
else
|
|
37
|
+
Rational(self.to_i, 1)
|
|
29
38
|
end
|
|
30
|
-
return Rational(numerator,denominator)
|
|
31
39
|
end
|
|
32
40
|
end
|
|
33
41
|
class String
|
|
34
42
|
def to_r
|
|
35
|
-
(numerator,denominator)=self.split(/\//)
|
|
43
|
+
(numerator, denominator) = self.split(/\//)
|
|
36
44
|
if self.match(/\.|e/)
|
|
37
|
-
return numerator.to_f.to_r/denominator.to_f.to_r
|
|
45
|
+
return numerator.to_f.to_r / denominator.to_f.to_r
|
|
38
46
|
else
|
|
39
|
-
return Rational(numerator.to_i,denominator.to_i)
|
|
47
|
+
return Rational(numerator.to_i, denominator.to_i)
|
|
40
48
|
end
|
|
41
49
|
end
|
|
42
50
|
end
|
data/lib/kgl/suu.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# 整数を日本語等で表した時の文字列(self<0なら
|
|
1
|
+
# 整数を日本語等で表した時の文字列(self<0ならRangeError)を返すメソッド Integer#express を提供する。
|
|
2
2
|
# 補助的に使用する定数や関数は Integer::SuuConstantsAndSubFunctions モジュールで定義されている。
|
|
3
3
|
# Integer クラスでこのモジュールを include している。
|
|
4
4
|
# 第一引数 lang には文字列を与える。
|
|
@@ -8,20 +8,20 @@
|
|
|
8
8
|
# ただの Integer#to_s 。
|
|
9
9
|
# f: 浮動小数点数
|
|
10
10
|
# 第二引数 acc を使用する。
|
|
11
|
-
# ほぼ "%1.#{acc-1}e" % self.to_f と同じだが,Floatの範囲外の大きな整数でも使える。
|
|
11
|
+
# ほぼ "%1.#{acc-1}e" % self.to_f と同じだが,Float の範囲外の大きな整数でも使える。
|
|
12
12
|
# acc が1未満の場合は ArgumentError を発生。
|
|
13
13
|
# j: 日本語
|
|
14
14
|
# 一般に用いられる万進法による中数である。極以上を万万進とすることや,無量大数を分けることはしない。
|
|
15
15
|
# 千~においては省略しないこともままあるが,ここでは十,百,千~の位が1のとき一の文字を省略する。
|
|
16
16
|
# 千無量大数の十倍以上の数は表わせないので RangeError を発生。
|
|
17
|
-
# 参考:無量大数の彼方へ(http://www.sf.airnet.ne.jp/ts/language/largenumber.html)
|
|
17
|
+
# 参考:無量大数の彼方へ (http://www.sf.airnet.ne.jp/ts/language/largenumber.html)
|
|
18
18
|
# m: 中数(万万進)。
|
|
19
19
|
# 日本語のように十,百,千~の位が1のとき一の文字を省略するのか定かでないが,ここでは省略しないことにした。
|
|
20
20
|
# 一千万無量大数の十倍以上の数は表わせないので RangeError を発生。
|
|
21
|
-
# 参考:無量大数の彼方へ(http://www.sf.airnet.ne.jp/ts/language/largenumber.html)
|
|
21
|
+
# 参考:無量大数の彼方へ (http://www.sf.airnet.ne.jp/ts/language/largenumber.html)
|
|
22
22
|
# a: 英語(アメリカ式)
|
|
23
23
|
# b: 英語(ヨーロッパ式)
|
|
24
|
-
# 参考:Name of a Number(http://isthe.com/chongo/tech/math/number/number.html)
|
|
24
|
+
# 参考:Name of a Number (http://isthe.com/chongo/tech/math/number/number.html)
|
|
25
25
|
class Integer
|
|
26
26
|
module SuuConstantsAndSubFunctions
|
|
27
27
|
Ichi = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'].freeze
|
data/lib/kgl/version.rb
CHANGED
data/lib/kgl.rb
CHANGED
|
@@ -10,3 +10,18 @@ class Integer
|
|
|
10
10
|
%Q|#{m}:#{s}.#{ms}|
|
|
11
11
|
end
|
|
12
12
|
end
|
|
13
|
+
|
|
14
|
+
module Kgl
|
|
15
|
+
module_function def rpw(n, sym='!#$%&*+,-./:;<=>?@')
|
|
16
|
+
ls = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' + sym
|
|
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
|
|
24
|
+
rescue Errno::ENOENT => e
|
|
25
|
+
raise 'Kgl.#rpw requires openssl command'
|
|
26
|
+
end
|
|
27
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kgl
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- KAZOON
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: bundler
|
|
@@ -52,7 +51,6 @@ dependencies:
|
|
|
52
51
|
- - ">="
|
|
53
52
|
- !ruby/object:Gem::Version
|
|
54
53
|
version: 0.12.2
|
|
55
|
-
description:
|
|
56
54
|
email:
|
|
57
55
|
- cycloawaodorin+gem@gmail.com
|
|
58
56
|
executables: []
|
|
@@ -81,7 +79,6 @@ metadata:
|
|
|
81
79
|
homepage_uri: https://github.com/cycloawaodorin/
|
|
82
80
|
source_code_uri: https://github.com/cycloawaodorin/kgl
|
|
83
81
|
changelog_uri: https://github.com/cycloawaodorin/kgl/blob/master/CHANGELOG.md
|
|
84
|
-
post_install_message:
|
|
85
82
|
rdoc_options: []
|
|
86
83
|
require_paths:
|
|
87
84
|
- lib
|
|
@@ -96,8 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
96
93
|
- !ruby/object:Gem::Version
|
|
97
94
|
version: '0'
|
|
98
95
|
requirements: []
|
|
99
|
-
rubygems_version:
|
|
100
|
-
signing_key:
|
|
96
|
+
rubygems_version: 4.0.9
|
|
101
97
|
specification_version: 4
|
|
102
98
|
summary: A gem for personal use.
|
|
103
99
|
test_files: []
|