const Value &
SimpleTensorEngine::join(const Value &a, const Value &b, join_fun_t function, Stash &stash) const
{
    if (a.is_double() && b.is_double()) {
        return stash.create<DoubleValue>(function(a.as_double(), b.as_double()));
    }
    return to_value(SimpleTensor::join(to_simple(a, stash), to_simple(b, stash), function), stash);
}
Exemple #2
0
/*
** brief : for a cone determine its luminosity
** @scene : our scene
** @cone : our cone
** @point : our vector point P
** return : the color
*/
t_color		*lumi_cone(t_scene *scene, t_cone *cone, t_vector *point)
{
  t_color	*color;
  int		nb_l;
  t_light	*light;

  nb_l = 0;
  light = scene->list_light;
  if (light == NULL)
    return (cone->color);
  color = create_color(0, 0, 0);
  while (light != NULL)
    {
      ++nb_l;
      to_simple(&(light)->coord, cone->coord, cone->rot);
      if (scene->ambiance)
	_normal_cone_amb(light, point, cone, &color);
      else
	_normal_cone(light, point, cone, &color);
      to_real_life(&(light)->coord, cone->coord, cone->rot);
      light = light->next;
    }
  div_color(&color, nb_l);
  return (color);
}
const Value &
SimpleTensorEngine::map(const Value &a, map_fun_t function, Stash &stash) const
{
    if (a.is_double()) {
        return stash.create<DoubleValue>(function(a.as_double()));
    }
    return to_value(to_simple(a, stash).map(function), stash);
}
const Value &
SimpleTensorEngine::rename(const Value &a, const std::vector<vespalib::string> &from, const std::vector<vespalib::string> &to, Stash &stash) const
{
    return to_value(to_simple(a, stash).rename(from, to), stash);
}
const Value &
SimpleTensorEngine::concat(const Value &a, const Value &b, const vespalib::string &dimension, Stash &stash) const
{
    return to_value(SimpleTensor::concat(to_simple(a, stash), to_simple(b, stash), dimension), stash);
}
const Value &
SimpleTensorEngine::reduce(const Value &a, Aggr aggr, const std::vector<vespalib::string> &dimensions, Stash &stash) const
{
    return to_value(to_simple(a, stash).reduce(Aggregator::create(aggr, stash), dimensions), stash);
}