Class: SweetPi::PI

Inherits:
Object
  • Object
show all
Defined in:
lib/sweet_pi/pi.rb

Instance Method Summary collapse

Constructor Details

#initializePI

Returns a new instance of PI.



19
20
21
# File 'lib/sweet_pi/pi.rb', line 19

def initialize()
  @process_count = 1
end

Instance Method Details

#calc(digit) ⇒ Object

Raises:

  • (ArgumentError)


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/sweet_pi/pi.rb', line 28

def calc(digit)
  raise ArgumentError unless digit.is_a?(Integer) and 1 <= digit
  accuracy = calc_accuracy(digit)

  result = if @process_count == 1
    single_process(accuracy)
  else
    multi_process(accuracy, @process_count)
  end

  @prev_acc = accuracy
  @prev_result = result

  fix(digit, result)
end

#calc_next(digit) ⇒ Object

Raises:

  • (ArgumentError)


44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/sweet_pi/pi.rb', line 44

def calc_next(digit)
  raise ArgumentError unless digit.is_a?(Integer) and 1 <= digit
  accuracy = calc_accuracy(digit)

  if @prev_result == nil
    calc(digit)
  elsif @prev_acc&.< accuracy
    result = @prev_result + single_process(@prev_acc + 1, accuracy)

    @prev_acc = accuracy
    @prev_result = result

    fix(digit, result)
  else
    fix(digit, @prev_result)
  end
end

#process_count=(count) ⇒ Object

Raises:

  • (ArgumentError)


23
24
25
26
# File 'lib/sweet_pi/pi.rb', line 23

def process_count=(count)
  raise ArgumentError unless count.is_a?(Integer) and 1 <= count
  @process_count = count
end