

//---- Pattern_Fn_Add (REAL value1, REAL value2) -> (REAL result)

pattern_def( Pattern_Fn_Add )
{
  pattern_input(PATTERN_REAL, value1, 0);
  pattern_input(PATTERN_REAL, value2, 1);

  pattern_output(PATTERN_REAL, result, 0);

  result->value = value1->value + value2->value;
}



//---- Pattern_Fn_Sub (REAL value1, REAL value2) -> (REAL result)

pattern_def( Pattern_Fn_Sub )
{
  pattern_input(PATTERN_REAL, value1, 0);
  pattern_input(PATTERN_REAL, value2, 1);

  pattern_output(PATTERN_REAL, result, 0);

  result->value = value1->value - value2->value;
}



//---- Pattern_Fn_Mul (REAL value1, REAL value2) -> (REAL result)

pattern_def( Pattern_Fn_Mul )
{
  pattern_input(PATTERN_REAL, value1, 0);
  pattern_input(PATTERN_REAL, value2, 1);

  pattern_output(PATTERN_REAL, result, 0);

  result->value = value1->value * value2->value;
}



//---- Pattern_Fn_Div (REAL value1, REAL value2) -> (REAL result)

pattern_def( Pattern_Fn_Div )
{
  pattern_input(PATTERN_REAL, value1, 0);
  pattern_input(PATTERN_REAL, value2, 1);

  pattern_output(PATTERN_REAL, result, 0);

  result->value = value1->value / value2->value;
}



//---- Pattern_Fn_Diff (REAL value1, REAL value2) -> (REAL result)

pattern_def( Pattern_Fn_Diff )
{
  pattern_input(PATTERN_REAL, value1, 0);
  pattern_input(PATTERN_REAL, value2, 1);

  pattern_output(PATTERN_REAL, result, 0);

  result->value = value1->value - value2->value;
  if(result->value < 0) result->value =- result->value;
}



//---- Pattern_Fn_Abs (REAL value) -> (REAL result)

pattern_def( Pattern_Fn_Abs )
{
  pattern_input(PATTERN_REAL, value, 0);

  pattern_output(PATTERN_REAL, result, 0);

  result->value = value->value;
  if(result->value < 0) result->value =- result->value;
}



//---- Pattern_Fn_Range (REAL value1, REAL value2, REAL t) -> (REAL result)

pattern_def( Pattern_Fn_Range )
{
  pattern_input(PATTERN_REAL, value1, 0);
  pattern_input(PATTERN_REAL, value2, 1);
  pattern_input(PATTERN_REAL, t, 2);

  pattern_output(PATTERN_REAL, result, 0);

  result->value = value1->value + (value2->value - value1->value) * t->value;
}



