Example #1
0
File: vector.c Project: qyqx/wisp
object_t *vector_concat (object_t * a, object_t * b)
{
  size_t al = VLENGTH (a), bl = VLENGTH (b);
  object_t *c = c_vec (al + bl, NIL);
  size_t i;
  for (i = 0; i < al; i++)
    vset (c, i, UPREF (vget (a, i)));
  for (i = 0; i < bl; i++)
    vset (c, i + al, UPREF (vget (b, i)));
  return c;
}
Example #2
0
File: vector.c Project: qyqx/wisp
object_t *vector_sub (object_t * vo, int start, int end)
{
  vector_t *v = OVAL (vo);
  if (end == -1)
    end = v->len - 1;
  object_t *newv = c_vec (1 + end - start, NIL);
  int i;
  for (i = start; i <= end; i++)
    vset (newv, i - start, UPREF (vget (vo, i)));
  return newv;
}
Example #3
0
File: vector.c Project: qyqx/wisp
object_t *list2vector (object_t * lst)
{
  int cnt = 0;
  object_t *p = lst;
  while (p != NIL)
    {
      cnt++;
      p = CDR (p);
    }
  object_t *v = c_vec (cnt, NIL);
  p = lst;
  size_t i = 0;
  while (p != NIL)
    {
      vset (v, i, UPREF (CAR (p)));
      i++;
      p = CDR (p);
    }
  return v;
}
Example #4
0
TEST(PerfGraphTest, test)
{
  PerfGraph graph("Unit");

  auto a_id = graph.registerSection("a", 1);
  auto b_id = graph.registerSection("b", 1);
  auto c_id = graph.registerSection("c", 1);

  unsigned int a = 0;
  unsigned int b = 0;
  unsigned int c = 0;

  std::vector<double> a_vec(100000, 2);
  std::vector<double> b_vec(100000, 3);
  std::vector<double> c_vec(100000, 2);

  {
    PerfGuard guard(graph, a_id);
    for (auto & aval : a_vec)
      aval += a++;

    {
      PerfGuard guard(graph, c_id);
      for (auto & cval : c_vec)
        cval += c++;
    }
  }

  {
    PerfGuard guard(graph, b_id);
    for (auto & bval : b_vec)
      bval += b++;

    {
      PerfGuard guard(graph, c_id);
      for (auto & cval : c_vec)
        cval += c++;
    }
  }
}