kgl 0.0.3 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4bc114cb34920ec7950a6874a45e45cc62ffcc6451adeb30382ed64d892b265c
4
- data.tar.gz: e06a04ee09a85dec8c6a68c08cf226955f1ed0d73f4bcb59d9cf64634a824481
3
+ metadata.gz: bd117b9cbf076dbaf0e603b4bf8782c486dac9ed4ca0b8aca2b132a4c2cad9c6
4
+ data.tar.gz: 277a4f5825763bda9fb3d0ffa574f218bb8d1d36d7be83a51bc8b73691ce131e
5
5
  SHA512:
6
- metadata.gz: 919d930965c4975a63f0421195eaa0b1125b0f6e3142cca2fc2c4b077353876076dc82d5c4858be623235f4a8d06fb4dfeef034f0ee70c83e87341134ce2ea4f
7
- data.tar.gz: e72edc905d3658ab0b90993c5f8a868579b1aa8e6790db2ca711ae41f7ff21d6263f1f904018230be715b303e10a5eebbf4c3621fd0e826ed380aa64b5e831f1
6
+ metadata.gz: 864878ddf6cc7b145fcd33fc2186babdd06bf8f3126dc662c66e746fa62346ba30b11e47cfcb504975aa1367115563a5dfc10adc2e1a17f70ff01b5d6e98e750
7
+ data.tar.gz: d191f15fa644cda1a619094901de5fab04239ec6d4d983fd20c06b43f6f61b9ec11877aa0bb3003f0c122b80306b47861811380d87dc4405233b8d00309d1a41
data/CHANGELOG.md CHANGED
@@ -1,10 +1,13 @@
1
1
  # Change Log
2
2
 
3
+ ## 0.0.4 2026/04/02
4
+ - Add `Float#to_r_exact` that returns exact Rational value expressed by self.
5
+
3
6
  ## 0.0.3 2024/12/03
4
- - Add Kgl.#rpw.
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`.
8
11
 
9
12
  ## 0.0.1 2019/08/31
10
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ならnil)を返すメソッド Integer#express を提供する。
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
@@ -1,3 +1,3 @@
1
1
  module Kgl
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  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.3
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: 2024-12-03 00:00:00.000000000 Z
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: 3.5.23
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: []