MCPcopy Create free account
hub / github.com/ciphermodelabs/ciphercore / evaluate_node

Method evaluate_node

ciphercore-base/src/evaluators/simple_evaluator.rs:646–1386  ·  view source on GitHub ↗
(&mut self, node: Node, dependencies_values: Vec<Value>)

Source from the content-addressed store, hash-verified

644
645impl Evaluator for SimpleEvaluator {
646 fn evaluate_node(&mut self, node: Node, dependencies_values: Vec<Value>) -> Result<Value> {
647 match node.get_operation() {
648 Operation::Input(_) | Operation::Call | Operation::Iterate => {
649 panic!("Should not be here!");
650 }
651 Operation::Zeros(t) => Ok(Value::zero_of_type(t)),
652 Operation::Ones(t) => Ok(Value::one_of_type(t)?),
653 Operation::Add
654 | Operation::Subtract
655 | Operation::Multiply
656 | Operation::MixedMultiply => {
657 let dependencies = node.get_node_dependencies();
658 let value0_rc = dependencies_values[0].clone();
659 let value1_rc = dependencies_values[1].clone();
660 let type0 = dependencies[0].get_type()?;
661 let type1 = dependencies[1].get_type()?;
662 let result_value = if node.get_operation() == Operation::MixedMultiply {
663 evaluate_mixed_multiply(type0, value0_rc, type1, value1_rc, node.get_type()?)?
664 } else {
665 evaluate_add_subtract_multiply(
666 type0,
667 value0_rc,
668 type1,
669 value1_rc,
670 node.get_operation(),
671 node.get_type()?,
672 )?
673 };
674 Ok(result_value)
675 }
676 Operation::JoinWithColumnMasks(join_t, headers) => {
677 let dependencies = node.get_node_dependencies();
678 let res_t = node.get_type()?;
679
680 let set0 = TypedValue {
681 value: dependencies_values[0].clone(),
682 t: dependencies[0].get_type()?,
683 name: None,
684 };
685 let set1 = TypedValue {
686 value: dependencies_values[1].clone(),
687 t: dependencies[1].get_type()?,
688 name: None,
689 };
690
691 evaluate_join(join_t, set0, set1, true, &headers, res_t)
692 }
693 Operation::Join(join_t, headers) => {
694 let dependencies = node.get_node_dependencies();
695 let res_t = node.get_type()?;
696
697 let set0 = TypedValue {
698 value: dependencies_values[0].clone(),
699 t: dependencies[0].get_type()?,
700 name: None,
701 };
702 let set1 = TypedValue {
703 value: dependencies_values[1].clone(),

Callers 2

evaluate_graphMethod · 0.80
optimize_graph_constantsFunction · 0.80

Calls 15

evaluate_mixed_multiplyFunction · 0.85
evaluate_joinFunction · 0.85
broadcast_to_shapeFunction · 0.85
index_to_numberFunction · 0.85
number_to_indexFunction · 0.85
slice_indexFunction · 0.85
evaluate_permute_axesFunction · 0.85
evaluate_sumFunction · 0.85
evaluate_cum_sumFunction · 0.85
flatten_valueFunction · 0.85

Tested by

no test coverage detected