1use super::*;
2
3pub struct Node {
4 leaf: Box<ThreadSafeNode>,
5}
6
7impl super::Node for Node {
8 fn new(seqs: Vec<Vec<Token>>) -> (Box<ThreadSafeNode>, Vec<(usize, usize)>) {
9 let (leaf, leaf_refs) = parse(&seqs[0]);
10 (Box::new(Self { leaf }), leaf_refs)
11 }
12 fn calc(
13 &mut self,
14 calculated_table: &Vec<Vec<Value>>,
15 ) -> (Value, Vec<(usize, usize)>, Vec<(usize, usize)>) {
16 let leaf = self.leaf.calc(calculated_table);
17
18 let value = match leaf.0 {
19 Value::Integer(x) => Value::Float((x as f64).tanh()),
20 Value::Float(x) => Value::Float(x.tanh()),
21 _ => Value::Error,
22 };
23
24 (value, leaf.1, leaf.2)
25 }
26}