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
- #f(poly_var, secret, random_coefficients) ⇒ Object
- #lagrange_basis_polynomial(xs_) ⇒ Object
- #lagrange_basis_polynomial_inner_loop(index, xs_) ⇒ Object
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 |