Module: Sharing::Polynomial::Tools

Included in:
Shamir::V1, Shamir::V1
Defined in:
lib/sharing/polynomial/tools.rb

Overview

helper tool for computations with polynomials

Instance Method Summary collapse

Instance Method Details

#f(poly_var, secret, random_coefficients) ⇒ Object



19
20
21
# File 'lib/sharing/polynomial/tools.rb', line 19

def f(poly_var, secret, random_coefficients)
  secret + random_coefficients.each_with_index.inject(0) { |sum, (c, i)| sum + (c * (poly_var**(i + 1))) }
end

#lagrange_basis_polynomial(xs_) ⇒ Object



15
16
17
# File 'lib/sharing/polynomial/tools.rb', line 15

def lagrange_basis_polynomial(xs_)
  (0..xs_.size - 1).map { |i| lagrange_basis_polynomial_inner_loop(i, xs_) }
end

#lagrange_basis_polynomial_inner_loop(index, xs_) ⇒ Object



7
8
9
10
11
12
13
# File 'lib/sharing/polynomial/tools.rb', line 7

def lagrange_basis_polynomial_inner_loop(index, xs_)
  product = 1
  (0..xs_.size - 1).reject { |l| l == index }.each do |j|
    product *= Rational(-xs_[j], xs_[index] - xs_[j])
  end
  product
end