roots 1.0.2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/roots.rb +37 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 621674bdf8c59b430f02c803c10a5800e25b2614
|
4
|
+
data.tar.gz: bad4f31ed0d85622a2cfc4b62c574f9f36d51d5b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6bca29dc614a4096eedfad0a94222517086517a9ab9605c247183d404bdd498004789a681e7139133e7d404fb4e8f9e25589e199c4bb64ce99bc81327bb9117a
|
7
|
+
data.tar.gz: ce3b88891a24f6c3d5f0a46e58db2271c7e686708fc98299c227d4ff67fd3d6d8e38239b74a65605b4277e3f9ca0445b5d9bc995ca4f094b7933e33315b3f31c
|
data/lib/roots.rb
CHANGED
@@ -47,7 +47,36 @@ For Ruby 1.9.x can also use symbol as option: 384.roots 4,:r
|
|
47
47
|
Can ask: How many complex roots of x: x.roots(n,'c').size
|
48
48
|
What's the 3rd 5th root of (4+9i): Complex(4,9).root(5,3)
|
49
49
|
|
50
|
+
Use syntax: Roots.digits_to_show
|
51
|
+
With gem version 1.1.0 this method was added to allow users to set
|
52
|
+
and see the number of decimal digits displayed. If no input is
|
53
|
+
given, the number of digits previously set is shown. The default
|
54
|
+
value is 8. Providing an input value sets the number of digits to
|
55
|
+
display. An input value < 1 will be set to a value of 1, to
|
56
|
+
display at least one decimal digit. An input greater than the
|
57
|
+
maximum digits shown for a given Ruby will display that maximum
|
58
|
+
|
59
|
+
Roots.digits_to_show => 8
|
60
|
+
|
61
|
+
10.root 5 => 1.58489319
|
62
|
+
|
63
|
+
Roots.digits_to_show 11 => 11
|
64
|
+
|
65
|
+
10.root 5 => 1.58489319246
|
66
|
+
|
67
|
+
Roots.digits_to_show 16 => 16
|
68
|
+
|
69
|
+
10.root 5 => 1.5848931924611136
|
70
|
+
|
71
|
+
Roots.digits_to_show 17 => 17
|
72
|
+
|
73
|
+
10.root 5 => 1.5848931924611136
|
74
|
+
|
75
|
+
Roots.digits_to_show 0 => 1
|
76
|
+
|
77
|
+
10.root 5 => 1.6
|
50
78
|
---------------
|
79
|
+
|
51
80
|
Mathematical Foundations
|
52
81
|
|
53
82
|
For complex number (x+iy) = a*e^(i*arg) = a*[cos(arg) + i*sin(arg)]
|
@@ -91,8 +120,8 @@ module Roots
|
|
91
120
|
mag = abs**n**-1 ; theta = arg/n ; delta = 2*PI/n
|
92
121
|
return rootn(mag,theta,delta,k>1 ? k-1:0) if kind_of?(Complex)
|
93
122
|
return rootn(mag,theta,delta,k-1) if k>0 # kth root of n for any real
|
94
|
-
return mag if self > 0
|
95
|
-
return -mag if n&1 == 1
|
123
|
+
return mag.round(Roots.digits_to_show) if self > 0 # pos real default
|
124
|
+
return -mag.round(Roots.digits_to_show) if n&1 == 1 # neg real default, n odd
|
96
125
|
return rootn(mag,theta) # neg real default, n even, 1st ccw root
|
97
126
|
end
|
98
127
|
|
@@ -123,12 +152,16 @@ module Roots
|
|
123
152
|
# Alias sin|cos to fix C lib errors to get 0.0 values for X|Y axis angles.
|
124
153
|
def sine(x); cos(x).abs == 1 ? 0 : sin(x) end
|
125
154
|
def cosine(x); sin(x).abs == 1 ? 0 : cos(x) end
|
155
|
+
def self.digits_to_show(n = @digits_to_show || 8)
|
156
|
+
@digits_to_show = n < 1 ? 1 : n
|
157
|
+
end
|
126
158
|
|
127
159
|
def rootn(mag,theta,delta=0,k=0) # root k of n of real|complex
|
128
160
|
angle_n = theta + k*delta
|
129
|
-
mag*Complex(cosine(angle_n),sine(angle_n))
|
161
|
+
x = mag*Complex(cosine(angle_n),sine(angle_n))
|
162
|
+
Complex(x.real.round(Roots.digits_to_show), x.imag.round(Roots.digits_to_show))
|
130
163
|
end
|
131
164
|
end
|
132
165
|
|
133
|
-
# Mixin 'root' and 'roots' as methods for all number classes
|
166
|
+
# Mixin 'root' and 'roots' as methods for all number classes.
|
134
167
|
class Numeric; include Roots end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roots
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jabari Zakiya
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -67,7 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
67
67
|
version: '0'
|
68
68
|
requirements: []
|
69
69
|
rubyforge_project:
|
70
|
-
rubygems_version: 2.
|
70
|
+
rubygems_version: 2.5.1
|
71
71
|
signing_key:
|
72
72
|
specification_version: 4
|
73
73
|
summary: two methods 'root' and 'roots' to compute all n roots of real/complex numbers
|