Status compare(std::string file1, std::string file2) {
    PcapFileIn pf1(0, file1);
    PcapFileIn pf2(0, file2);

    while (true) {
      bool f1 = pf1.moveNext();
      bool f2 = pf2.moveNext();

      if (f1 != f2) {
        if (f1 == false)
          return this->reportDifference(file1 + " is shorter");
        if (f2 == false)
          return this->reportDifference(file2 + " is shorter");
      }

      if (!f1)
        break;

      std::unique_ptr<PcapPacket> p1 = pf1.current();
      std::unique_ptr<PcapPacket> p2 = pf2.current();

      Status cp = this->comparePackets(std::move(p1), std::move(p2));
      if (cp != Status::OK)
        return cp;

      this->packetIndex++;
    }
        
    return Status::OK;
  }
int main(void) {
    f4(); f5();
    // CHECK: call void @f4()
    // CHECK: call void @f5()
    pf1(); pf2(); pf4(); pf5();
    // CHECK: call void %{{.*}}()
    // CHECK: call void %{{.*}}()
    // CHECK: call void %{{.*}}()
    // CHECK: call void %{{.*}}()
    return 0;
}
 void update(const Real val, const Vector<Real> &g, const Real gv, const Vector<Real> &hv,
             const Real weight) {
   Real pf1(0), pf2(0), c(0), one(1);
   for (int i = 0; i < size_; i++) {
     pf1 = plusFunction_->evaluate(val-xvar_[i],1);
     pf2 = plusFunction_->evaluate(val-xvar_[i],2);
     c   = weight*coeff_[i]/(one-prob_[i])*pf2*(gv-vvar_[i]);
     vec_[i] -= c;
     //c  *= (gv-vvar_[i]);
     RiskMeasure<Real>::hv_->axpy(c,g);
     c = weight*coeff_[i]/(one-prob_[i])*pf1;
     RiskMeasure<Real>::hv_->axpy(c,hv);
   }
 }
Exemple #4
0
int main(void) {
    f4(); f5(); f6();
    // CHECK: call x86_fastcallcc void @f4()
    // CHECK: call x86_stdcallcc void @f5()
    // CHECK: call x86_thiscallcc void @f6()
    pf1(); pf2(); pf3(); pf4(); pf5(); pf6();
    // CHECK: call x86_fastcallcc void %{{.*}}()
    // CHECK: call x86_stdcallcc void %{{.*}}()
    // CHECK: call x86_thiscallcc void %{{.*}}()
    // CHECK: call x86_fastcallcc void %{{.*}}()
    // CHECK: call x86_stdcallcc void %{{.*}}()
    // CHECK: call x86_thiscallcc void %{{.*}}()
    return 0;
}
bool Surface::collapse(Edge& e)
{

    timespec t0,t1,t;
    clock_gettime(CLOCK_REALTIME,&t0);
    Point* p1 = e.p1;
    Point* p2 = e.p2;

    assert(p1);
    assert(p2);



    if(p1->faces.size() ==0 || p2->faces.size()==0) //Do not simplify boundary corners
    {
        //cerr << "*ERROR: EMPTY VERTEX.\n";
        failed_collapses++;
        //cout << redtty << "failed.\n" << deftty;
        return false;
    }

    //Iterating faces
  vector<Face*> for_removal;
  //clock_gettime(CLOCK_REALTIME,&t0);
    for(vector<Face*>::iterator fit = p1->faces.begin(); fit!=p1->faces.end(); ++fit)
    {
        bool removeface = false;
        vector<Point*>::iterator auxp1;
        for(vector<Point*>::iterator pit = (*fit)->points.begin(); pit != (*fit)->points.end() ; ++pit)
        {
            if((*pit) == p2)
            {
                removeface = true;
                break;
            }
            else if ((*pit) == p1)
            {
                auxp1 = pit;
            }
        }
        if(removeface) //p1 and p2 share face, remove it.
        {
            for_removal.push_back((*fit));
        }
        else //Swap p1 for p2 for this face
        {
            //Face is about to be modified. Checking intersection.
            Point3 p30((*fit)->points[0]->x,(*fit)->points[0]->y,(*fit)->points[0]->z);
            Point3 p31((*fit)->points[1]->x,(*fit)->points[1]->y,(*fit)->points[1]->z);
            Point3 p32((*fit)->points[2]->x,(*fit)->points[2]->y,(*fit)->points[2]->z);

            Triangle3 face(p30,p31,p32);

            for(face_vec_it fit2 = m_faces.begin(); fit2 != m_faces.end(); ++fit2)
            {
              Face* f = (*fit2);
              Point3 pf0(f->points[0]->x,f->points[0]->y,f->points[0]->z);
              Point3 pf1(f->points[1]->x,f->points[1]->y,f->points[1]->z);
              Point3 pf2(f->points[2]->x,f->points[2]->y,f->points[2]->z);
              Triangle3 face2(pf0,pf1,pf2);

              if(CGAL::do_intersect(face,face2))
              {
                cerr << "***Faces " << (*fit)->id << " X " << f->id << endl;
              }
            }

            (*auxp1) = p2;
            p2->faces.push_back((*fit));
        }
    }



    //cerr << "Removing faces: ";
    for(vector<Face*>::iterator it = for_removal.begin(); it != for_removal.end(); ++it)
    {
      //cerr << (*it)->id << " ";
       removeFace(*it);
       (*it)->removed = true;
       //delete (*it);
    }

    //Set position of p2 as midpoint between p1-p2
    p2->x = e.placement->x;
    p2->y = e.placement->y;
    p2->z = e.placement->z;


    clock_gettime(CLOCK_REALTIME,&t1);
    t = diff(t0,t1);
    time_faces+= getNanoseconds(t);


    //TODO: more efficient to use std::remove_if
    clock_gettime(CLOCK_REALTIME,&t0);
    removeEdge(m_edges[e.id]);

    vector<Edge*> edges_to_remove;
    edge_vec_it eit = p1->to.begin();
    //Remove double edges to
    while(eit != p1->to.end())
    {
      Edge* e = (*eit);
      bool found = false;
      edge_vec_it it = p2->to.begin();
      while(it != p2->to.end())
      {
        Edge* e2 = (*it);
        if(e->p1->id == e2->p1->id)
        {
          //cerr << "Found " << e->id << " " << e->p1->id << " " << e->p2->id << endl;
          edges_to_remove.push_back(e);
          found = true;
          break;
        }

        it++;
      }
      if(!found)
      {
        e->p2 = p2;
        if(e->p1->id == e->p2->id)
          edges_to_remove.push_back(e);
      }
      eit++;
    }

    //Remove double edges from
    eit = p1->from.begin();
    while(eit!=p1->from.end())
    {
      Edge* e = (*eit);
      bool found = false;
      edge_vec_it it = p2->from.begin();
      while(it != p2->from.end())
      {
        Edge* e2 = (*it);
        if(e->p2->id == e2->p2->id)
        {
          //cerr << "Found from " << e->id << " " << e->p1->id << " " <<e->p2->id << endl;
          edges_to_remove.push_back(e);
          found =true;
          break;
        }
        it++;
      }
      if(!found)
      {
        e->p1=p2;
        if(e->p1->id == e->p2->id)
          edges_to_remove.push_back(e);
      }
      eit++;
    }

    eit = edges_to_remove.begin();
    while(eit != edges_to_remove.end())
    {
      removeEdge(*eit);
      eit++;
    }

    //Append p1 edges to p2
    p2->to.insert(p2->to.end(), p1->to.begin(), p1->to.end());
    p2->from.insert(p2->from.end(),p1->from.begin(), p1->from.end());

    clock_gettime(CLOCK_REALTIME,&t1);
    t = diff(t0,t1);
    time_edges += getNanoseconds(t);

    //Can remove point p1
    clock_gettime(CLOCK_REALTIME,&t0);
    removePoint(p1);
    clock_gettime(CLOCK_REALTIME,&t1);
    t = diff(t0,t1);
    time_point+=getNanoseconds(t);

    return true;
}
void CoreAudioOutDriver::open(device_id_t device,
			      int sample_rate,
			      sample_format form,
			      int channels,
			      int num_samples,
			      int num_periods)
{
  if (this->is_open())
    throw std::logic_error("Device already open");


  if (form != SF_16LE)
    throw std::invalid_argument("Unknown sample format");

  m_impl->m_logger = logger;

  AudioDeviceID devid = GetDeviceID(logger, device);

  if (devid == kAudioDeviceUnknown)
    throw std::invalid_argument("Unknown device id");

  OSStatus err;
  const bool isInput = false;
  UInt32 propsize;
  
  AudioValueRange bufferRange;

  // check that the desired value is within the allowed range
  propsize = sizeof(bufferRange);
  err = AudioDeviceGetProperty(devid, 0, false,
			       kAudioDevicePropertyBufferFrameSizeRange,
			       &propsize,
			       &bufferRange);


  if (err != kAudioHardwareNoError)
    {
      throw std::runtime_error("Could not get buffer range");
    }

  propsize = sizeof(UInt32);
  UInt32 frames = my_min<int>(my_max<int>(num_samples,
					  (int) bufferRange.mMinimum),
			      (int) bufferRange.mMaximum);

  err = AudioDeviceSetProperty(devid, NULL, 0, isInput,
			       kAudioDevicePropertyBufferFrameSize,
			       propsize, &frames);
    
  if (err != kAudioHardwareNoError)
    {
      throw std::runtime_error("Could not set buffer size");
    }


  propsize = sizeof(frames);
  err = AudioDeviceGetProperty(devid, 0, isInput,
			       kAudioDevicePropertyBufferFrameSize,
			       &propsize, &frames);
    
  if (err != kAudioHardwareNoError)
    {
      throw std::runtime_error("Could not read buffer size");
    }

  char bbc[256] = {0};
  sprintf(bbc, "Buffer size in frames: %i", frames);
  logger(2, bbc);

  Float64 sampleRate = sample_rate;
  propsize = sizeof(sampleRate);
  err = AudioDeviceSetProperty(devid, NULL, 0, isInput,
			       kAudioDevicePropertyNominalSampleRate,
			       propsize, &sampleRate);
    
  if (err != kAudioHardwareNoError)
    {
      throw std::runtime_error("Could not set sample rate");
    }

  print_info(devid, logger, isInput);

  propsize = sizeof(m_impl->m_format);
  err = AudioDeviceGetProperty(devid, 0, isInput,
			       kAudioDevicePropertyStreamFormat,
			       &propsize,
			       &m_impl->m_format);

  if (err != kAudioHardwareNoError)
    {
      throw std::runtime_error("Could not get audio format");
    }


  // Desired format
  memset(&m_impl->m_input_format, 0, sizeof(m_impl->m_input_format));
  

  // set channels, format to SF_16LE

  m_impl->m_input_format.mSampleRate       = sample_rate;
  m_impl->m_input_format.mFormatID         = kAudioFormatLinearPCM;
  m_impl->m_input_format.mFormatFlags
         = kLinearPCMFormatFlagIsSignedInteger |
           kLinearPCMFormatFlagIsPacked;

  m_impl->m_input_format.mBytesPerPacket   = 2*channels;
  m_impl->m_input_format.mFramesPerPacket  = 1;
  m_impl->m_input_format.mBytesPerFrame    = m_impl->m_input_format.mBytesPerPacket;
  m_impl->m_input_format.mChannelsPerFrame = channels;
  m_impl->m_input_format.mBitsPerChannel   = 16;

#define USE_COMPLEX_AUDIO_CONVERTER
  //#define USE_SIMPLE_AUDIO_CONVERTER

#if defined(USE_SIMPLE_AUDIO_CONVERTER)
  m_impl->m_converter = new SimpleConverter(m_impl->m_input_format,
					    m_impl->m_format);
#elif defined (USE_COMPLEX_AUDIO_CONVERTER)
  m_impl->m_converter = new ComplexConverter(m_impl->m_input_format,
					     m_impl->m_format);
#else
    // TODO: this works only for 2 channels float to 1 channel mono 16LE!
  m_impl->m_converter = new Mono16LEPCMToStereoFloat;
#endif

  print_format pf1(logger, "Device Format\n");
  pf1(m_impl->m_format);

  print_format pf2(logger, "Input Format\n");
  pf2(m_impl->m_input_format);

  // Set the buffer latency (audio output is only started after
  // the buffer contains m_min_buffer samples).
  m_impl->m_min_buffer = num_samples*num_periods;
  m_impl->m_ID = devid;

  AudioDeviceAddIOProc(devid, Impl::OutputIOProc, m_impl.get());
}
Exemple #7
0
void pf(double* fvals, int N, int df1, int df2){
	int i;
	for(i=0; i<N; i++){fvals[i]=pf1(fvals[i], df1, df2);}
}