Method: ExoCrypto::CryptoCalc.apply_fun

Defined in:
lib/exocrypto/crypto_calc.rb

.apply_fun(f, args) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/exocrypto/crypto_calc.rb', line 80

def self.apply_fun(f, args)
  args_prime = args.map { |i| BigDecimal(i) }

  lambdas = {
    'fst'         => lambda { |args| args[0] },
    '1/fst'       => lambda { |args| 1.0 / args[0] },
    'fst,snd'     => lambda { |args| [args[0], args[1]] },
    'fst*snd'     => lambda { |args| args[0] * args[1] },
    'fst/snd'     => lambda { |args| args[0] / args[1] },
    'snd/fst'     => lambda { |args| args[1] / args[0] },
    '1/(fst*snd)' => lambda { |args| 1.0 / (args[0] * args[1]) },
  }

  lambdas[f].call(args_prime)
end