void Sieve::CalculateOffsets2(void)
{
	if (factorbase.size() == 0) return;
	if (Q(0) % 2 == 0)
	{
		OffsetValue off2(0, 2, std::log(2.0));
		offsets.push_back(off2);
		CalculateOffsetsRec(0, 2, 2, std::log(2.0));
	}
	else
	{
		OffsetValue off2(1, 2, std::log(2.0));
		offsets.push_back(off2);
		CalculateOffsetsRec(1, 2, 2, std::log(2.0));
	}
	for (std::vector<unsigned long int>::iterator it = factorbase.begin() + 1;
			it != factorbase.end(); ++it)
	{
		mpz_class retv = Tonelli_Shanks(*it, N);
		mpz_class cof = *it - retv;
		retv = (retv - N_sqrt) % *it;
		if (retv < 0)
			retv += *it;
		cof = (cof - N_sqrt) % *it;
		if (cof < 0)
			cof += *it;
		if (retv < SIEVESIZE && retv >= 0)
		{
			OffsetValue off(retv.get_ui(), *it, std::log((float)*it));
			offsets.push_back(off);
			CalculateOffsetsRec(retv.get_ui(), *it, *it, std::log((float)*it));
		}
		if (cof < SIEVESIZE && cof >= 0)
		{
			OffsetValue off(cof.get_ui(), *it, std::log((float)*it));
			offsets.push_back(off);
			CalculateOffsetsRec(cof.get_ui(), *it, *it, std::log((float)*it));
		}
	}
}
Exemple #2
0
CSeqDBIdxFile::CSeqDBIdxFile(CSeqDBAtlas    & atlas,
                             const string   & dbname,
                             char             prot_nucl,
                             CSeqDBLockHold & locked)
    : CSeqDBExtFile(atlas, dbname + ".-in", prot_nucl, locked),
      m_NumOIDs       (0),
      m_VolLen        (0),
      m_MaxLen        (0),
      m_MinLen        (0),
      m_HdrLease      (atlas),
      m_SeqLease      (atlas),
      m_AmbLease      (atlas),
      m_OffHdr        (0),
      m_EndHdr        (0),
      m_OffSeq        (0),
      m_EndSeq        (0),
      m_OffAmb        (0),
      m_EndAmb        (0)
{
    Verify();
    
    // Input validation
    
    if (dbname.empty()) {
        NCBI_THROW(CSeqDBException,
                   eArgErr,
                   "Error: dbname should not be an empty string.");
    }
    
    if ((prot_nucl != 'p') && (prot_nucl != 'n')) {
        NCBI_THROW(CSeqDBException,
                   eArgErr,
                   "Error: Invalid sequence type requested.");
    }
    
    TIndx offset = 0;
    
    Uint4 f_format_version = 0;
    Uint4 f_db_seqtype = 0;
    
    CSeqDBMemLease lease  (m_Atlas);
    
    offset = x_ReadSwapped(lease, offset, & f_format_version, locked);
    
    TIndx off1(0), off2(0), off3(0), offend(0);
    
    try {
        if (f_format_version != 4) {
            NCBI_THROW(CSeqDBException,
                       eFileErr,
                       "Error: Not a valid version 4 database.");
        }
        
        offset = x_ReadSwapped(lease, offset, & f_db_seqtype, locked);
        offset = x_ReadSwapped(lease, offset, & m_Title,      locked);
        offset = x_ReadSwapped(lease, offset, & m_Date,       locked);
        offset = x_ReadSwapped(lease, offset, & m_NumOIDs,    locked);
        offset = x_ReadSwapped(lease, offset, & m_VolLen,     locked);
        offset = x_ReadSwapped(lease, offset, & m_MaxLen,     locked);
        
        TIndx region_bytes = 4 * (m_NumOIDs + 1);
        
        off1   = offset;
        off2   = off1 + region_bytes;
        off3   = off2 + region_bytes;
        offend = off3 + region_bytes;
    }
    catch(...) {
        m_Atlas.RetRegion(lease);
        throw;
    }
    
    m_Atlas.RetRegion(lease);
    
    char db_seqtype = ((f_db_seqtype == 1) ? 'p' : 'n');
    
    if (db_seqtype != x_GetSeqType()) {
        NCBI_THROW(CSeqDBException,
                   eFileErr,
                   "Error: requested sequence type does not match DB.");
    }
    
    m_OffHdr = off1; m_EndHdr = off2;
    m_OffSeq = off2; m_EndSeq = off3;
    
    if (db_seqtype == 'n') {
        m_OffAmb = off3; m_EndAmb = offend;
    } else {
        m_OffAmb = m_EndAmb = 0;
    }
}
Exemple #3
0
void Tie::layout()
      {
      qreal _spatium = spatium();

      //
      //    show short bow
      //
      if (startNote() == 0 || endNote() == 0) {
            if (startNote() == 0) {
                  qDebug("Tie::layout(): no start note");
                  return;
                  }
            Chord* c1 = startNote()->chord();
            if (_slurDirection == MScore::Direction::AUTO) {
                  if (c1->measure()->mstaff(c1->staffIdx())->hasVoices) {
                        // in polyphonic passage, ties go on the stem side
                        _up = c1->up();
                        }
                  else
                        _up = !c1->up();
                  }
            else
                  _up = _slurDirection == MScore::Direction::UP ? true : false;
            fixupSegments(1);
            SlurSegment* segment = segmentAt(0);
            segment->setSpannerSegmentType(SpannerSegmentType::SINGLE);
            segment->setSystem(startNote()->chord()->segment()->measure()->system());
            SlurPos sPos;
            slurPos(&sPos);
            segment->layout(sPos.p1, sPos.p2);
            return;
            }

      calculateDirection();

      qreal w   = startNote()->headWidth();
      qreal xo1 = w * 1.12;
      qreal h   = w * 0.3;
      qreal yo  = _up ? -h : h;

      QPointF off1(xo1, yo);
      QPointF off2(0.0, yo);

#if 0 // yet(?) unused
      QPointF ppos(pagePos());
#endif

      // TODO: cleanup

      SlurPos sPos;
      slurPos(&sPos);

      // p1, p2, s1, s2

      QList<System*>* systems = score()->systems();
      setPos(0, 0);

      //---------------------------------------------------------
      //   count number of segments, if no change, all
      //    user offsets (drags) are retained
      //---------------------------------------------------------

      int sysIdx1 = systems->indexOf(sPos.system1);
      if (sysIdx1 == -1) {
            qDebug("system not found");
            foreach(System* s, *systems)
                  qDebug("   search %p in %p", sPos.system1, s);
            return;
            }

      int sysIdx2     = systems->indexOf(sPos.system2);
      if (sysIdx2 < 0)
            sysIdx2 = sysIdx1;
      unsigned nsegs  = sysIdx2 - sysIdx1 + 1;
      fixupSegments(nsegs);

      int i = 0;
      for (uint ii = 0; ii < nsegs; ++ii) {
            System* system = (*systems)[sysIdx1++];
            if (system->isVbox())
                  continue;
            SlurSegment* segment = segmentAt(i);
            segment->setSystem(system);

            // case 1: one segment
            if (sPos.system1 == sPos.system2) {
                  segment->layout(sPos.p1, sPos.p2);
                  segment->setSpannerSegmentType(SpannerSegmentType::SINGLE);
                  }
            // case 2: start segment
            else if (i == 0) {
                  qreal x = system->bbox().width();
                  segment->layout(sPos.p1, QPointF(x, sPos.p1.y()));
                  segment->setSpannerSegmentType(SpannerSegmentType::BEGIN);
                  }
            // case 4: end segment
            else {
                  qreal x = firstNoteRestSegmentX(system) - 2 * _spatium;

                  segment->layout(QPointF(x, sPos.p2.y()), sPos.p2);
                  segment->setSpannerSegmentType(SpannerSegmentType::END);
                  }
            ++i;
            }
      }
int main(void)
{
	//int flag;
	
	TWI_init_master();
	_delay_ms(100);
	//sei();
	//_delay_ms(1000);
	InitLCD(0);
	_delay_ms(50);
	LCDClear();
	_delay_ms(10);
    uart_0_ini();
	uart_1_ini();
        Init_LED();
		sei();
		_delay_ms(50);
		
		LCD(0,0,"VIT");
		_delay_ms(500);
		LCDClear();
		_delay_ms(10);
		LCD(0,0,"SURACSHA");
		_delay_ms(100);
		LCDClear();
		_delay_ms(100);
	
	
		while (1)
		{
LCDvar(0,0,Y_Data,5);
 		if (Y_Data > 2000 || Y_Data < -2000 ||X_Data > 2000 || X_Data < -2000||Z_Data > 2000 || Z_Data < -2000)
 		{
				_delay_ms(50);
 					LCDClear();
 					_delay_ms(70);
 				LCD(0,1,"accident Happned");
 				//flag=1;
 				glow3();
 				glow4();

 				 LCDGotoXY(0,0);
			LCDWriteString("Waiting for GPS");
 			while(valid!='A');
 			 LCDClear();
				 _delay_ms(100);
			 LCDGotoXY(0,0);
 			LCDWriteString("Fix Available");
 				_delay_ms(2000);
				 LCDClear();
				 _delay_ms(100);
 				 sendlocation("9503139115");
 				//break;
 		}		
 		else
 		{_delay_ms(70);
 		 LCDGotoXY(0,1);
	LCDWriteString("Normal");
 		glow2();
 		glow3();
 		_delay_ms(50);
 		off2();
 		off3();
 
	}

			
		 }}