csvx/node/
fn_tanh.rs

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}