Class: Daimyo::Pi
- Inherits:
-
Object
- Object
- Daimyo::Pi
- Defined in:
- lib/daimyo/pi.rb,
lib/daimyo/pi/version.rb
Constant Summary collapse
- VERSION =
"0.1.0"
Instance Attribute Summary collapse
-
#precision ⇒ Object
readonly
Returns the value of attribute precision.
Instance Method Summary collapse
- #gauss_l(iter: 3) ⇒ Object
-
#initialize(precision: 10) ⇒ Pi
constructor
A new instance of Pi.
- #leibniz(iter: 10) ⇒ Object
Constructor Details
#initialize(precision: 10) ⇒ Pi
Returns a new instance of Pi.
6 7 8 |
# File 'lib/daimyo/pi.rb', line 6 def initialize(precision: 10) @precision = precision end |
Instance Attribute Details
#precision ⇒ Object (readonly)
Returns the value of attribute precision.
9 10 11 |
# File 'lib/daimyo/pi.rb', line 9 def precision @precision end |
Instance Method Details
#gauss_l(iter: 3) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/daimyo/pi.rb', line 20 def gauss_l(iter: 3) a = BigDecimal("1") b = BigDecimal("1") / BigDecimal("2").sqrt(precision) t = BigDecimal("0.25") p_ = BigDecimal("1") iter.times do an = (a + b) / 2 b = (a * b).sqrt(precision) t -= p_ * (an - a) * (an - a) p_ *= 2 a = an end ((a + b) * (a + b) / (4 * t)).truncate(precision) end |
#leibniz(iter: 10) ⇒ Object
11 12 13 14 15 16 17 18 |
# File 'lib/daimyo/pi.rb', line 11 def leibniz(iter: 10) ans = BigDecimal("0") (0...iter).each do |n| ans += (BigDecimal("-1") ** n) / (2 * n + 1) end return (ans * 4).truncate(precision) end |