예제 #1
0
	EZ::Punkt2D WegstueckSchlange::endpunkt()
	{
		if (anzahl()>0)
			return letztesWegstueck()->endpunkt();
		else 
			return Punkt2D(NaN(),NaN()); 
	}
예제 #2
0
	void CascadingDescriptor::initializeCascadingDescriptor() {
		typeSet.insert("CascadingDescriptor");

		id = "";
		explicitDuration = NaN();
		playerName = "";
		repetitions = 0;
		freeze = false;
		region = NULL;
		formatterRegion = NULL;

		focusIndex = "";
		moveUp = "";
		moveDown = "";
		moveLeft = "";
		moveRight = "";

		focusSrc = "";
		selectionSrc = "";
		focusBorderColor = NULL;
		selBorderColor = NULL;
		focusBorderWidth = 0;
		focusBorderTransparency = NaN();
		inputTransitions = new vector<Transition*>;
		outputTransitions = new vector<Transition*>;
		parameters = new map<string, string>;
		descriptors = new vector<GenericDescriptor*>;
		unsolvedDescriptors = new vector<GenericDescriptor*>;
	}
예제 #3
0
QString ReadableNumber::makeReadable(const char *s) const
{
    QString qs;
    bool ok;

    auto parts = QString(s).split('.');
    auto integer_part = parts[0].toLong(&ok);
    if (!ok) return NaN();

    qs += makeReadable(integer_part);

    if (1 == parts.size()) return qs;

    QString fractional_part = parts[1];
    if (0 == fractional_part.size()) return qs;

    qs += " POINT";

    foreach(auto c, fractional_part)
    {
        auto digit = (long)c.digitValue();
        if (-1 == digit) return NaN();

        qs += " " + makeReadable((long)digit);
    }
예제 #4
0
	EZ::Punkt2D WegstueckSchlange::endpunkt( int nummer )
	{
		sWegstueck::Zeiger weg = wegstueck(nummer);
		if (weg!= NULL)
			return weg->endpunkt();
		else
			return Punkt2D(NaN(),NaN());
	}
예제 #5
0
	EZ::Punkt2D WegstueckSchlange::endpunkt( double definitionswert )
	{
		sWegstueck::Zeiger weg = wegstueck(definitionswert);
		if (weg!= NULL)
			return weg->endpunkt();
		else
			return Punkt2D(NaN(),NaN());
	}
예제 #6
0
	FlexibleTimeMeasurement::FlexibleTimeMeasurement(
		    double expectedValue, double minValue, double maxValue) :
		     TimeMeasurement(expectedValue) {

		computedValue = NaN();
		minFeasibleValue = NaN();
		maxFeasibleValue = NaN();
		setBoundaryValues(minValue, maxValue);
	}
예제 #7
0
파일: first.c 프로젝트: rycle/SPL14
/* ParseDataArray: Stores in the data array.
 * Returns the number of entries used. */
int ParseDataArray()
{
	size_t originalDC;
	int number;
	bool notNumber;

	originalDC = DC;
	notNumber = false;
	/* construct a word for each element in the array and store it */
	while ((part = strtok(NULL, DELIMITERS_AND_COMMA)) != NULL)
	{
		NaN(part, notNumber);
		number = atoi(part);
		if (notNumber == true || (number == ZERO && *part != ZERO_CHAR))
		{
			DC = originalDC;
			SYNTAX_ASSERT(false, DATA_DEF_CONTAINS_NAN);
			return ERROR;
		}
		data[DC].Bits = number;
		DC++;
	}
	SYNTAX_ASSERT(ZERO < DC - originalDC, DATA_DEF_NO_NUMBERS);
	return DC - originalDC;
}
예제 #8
0
파일: asin.c 프로젝트: 99years/plan9
double
acos(double arg)
{
	if(arg > 1 || arg < -1)
		return NaN();
	return PIO2 - asin(arg);
}
예제 #9
0
	double WegstueckSchlange::endausrichtung()
	{
		if (anzahl()>0)
			return letztesWegstueck()->endausrichtung();
		else
			return NaN();
	}
예제 #10
0
	double WegstueckSchlange::laenge( int nummer )
	{
		if (nummer<anzahl())
			return (wegstueck(nummer)->weglaenge());
		else
			return NaN();
	}
예제 #11
0
	double WegstueckSchlange::winkel( int nummer )
	{
		Kreiswegstueck::Zeiger kreisweg = Kreiswegstueck::Zeiger::konvertiere(wegstueck(nummer));
		if (kreisweg!=NULL)
			return kreisweg->winkel();
		else 
			return NaN();
	}
예제 #12
0
	double WegstueckSchlange::winkel( double definitionswert )
	{
		Kreiswegstueck::Zeiger kreisweg = Kreiswegstueck::Zeiger::konvertiere(wegstueck(definitionswert));
		if (kreisweg!=NULL)
			return kreisweg->winkel();
		else 
			return NaN();
	}
예제 #13
0
	double WegstueckSchlange::endausrichtung( double defintionswert )
	{
		sWegstueck::Zeiger weg = wegstueck(defintionswert);
		if (weg!= NULL)
			return weg->endausrichtung();
		else
			return NaN(); 
	}
예제 #14
0
	double WegstueckSchlange::endausrichtung( int nummer )
	{
		sWegstueck::Zeiger weg = wegstueck(nummer);
		if (weg!= NULL)
			return weg->endausrichtung();
		else
			return NaN();
	}
예제 #15
0
	double WegstueckSchlange::laenge( double definitionswert )
	{
		sWegstueck::Zeiger weg = wegstueck(definitionswert);
		if (weg!= NULL)
			return weg->weglaenge();
		else
			return NaN();
	}
예제 #16
0
	double WegstueckSchlange::startDefinitionswert( int nummer )
	{
		double definitionswert = 0.0;
		for (deque<sWegstueck::Zeiger>::iterator iter = m_schlange.begin();iter < m_schlange.end();iter++)
		{
			if (nummer-- == 0)
				return definitionswert;
			definitionswert=definitionswert+=(*iter)->weglaenge();
		}
		return NaN();
	}
예제 #17
0
	double WegstueckSchlange::startDefinitionswert( double def )
	{
		double definitionswert = 0.0;
		for (deque<sWegstueck::Zeiger>::iterator iter = m_schlange.begin();iter < m_schlange.end();iter++)
		{
			double alterDefwert = definitionswert;
			definitionswert += (*iter)->weglaenge();
			if (def<definitionswert)
				return alterDefwert;
		}
		return NaN();
	}
예제 #18
0
int
main ()
{
  /* Finite values.  */
  ASSERT (!isnanf (3.141f));
  ASSERT (!isnanf (3.141e30f));
  ASSERT (!isnanf (3.141e-30f));
  ASSERT (!isnanf (-2.718f));
  ASSERT (!isnanf (-2.718e30f));
  ASSERT (!isnanf (-2.718e-30f));
  ASSERT (!isnanf (0.0f));
  ASSERT (!isnanf (-0.0f));
  /* Infinite values.  */
  ASSERT (!isnanf (1.0f / 0.0f));
  ASSERT (!isnanf (-1.0f / 0.0f));
  /* Quiet NaN.  */
  ASSERT (isnanf (NaN ()));
#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
  /* Signalling NaN.  */
  {
    #define NWORDS \
      ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
    typedef union { float value; unsigned int word[NWORDS]; } memory_float;
    memory_float m;
    m.value = NaN ();
# if FLT_EXPBIT0_BIT > 0
    m.word[FLT_EXPBIT0_WORD] ^= (unsigned int) 1 << (FLT_EXPBIT0_BIT - 1);
# else
    m.word[FLT_EXPBIT0_WORD + (FLT_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
      ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
# endif
    if (FLT_EXPBIT0_WORD < NWORDS / 2)
      m.word[FLT_EXPBIT0_WORD + 1] |= (unsigned int) 1 << FLT_EXPBIT0_BIT;
    else
      m.word[0] |= (unsigned int) 1;
    ASSERT (isnanf (m.value));
  }
#endif
  return 0;
}
예제 #19
0
/***********************************************************************
 * Free dynamic memory used by one motif. 
 ***********************************************************************/
void free_motif
  (MOTIF_T *a_motif)
{
  /* Don't bother with empty motifs. */
  if (a_motif == NULL) 
    return;

  // Reset all memeber values
  a_motif->id[0] = 0;
  a_motif->id2[0] = 0;
  a_motif->length = 0;
  a_motif->alph_size = 0;
  a_motif->ambigs = 0;
  a_motif->evalue = NaN();
  a_motif->num_sites = NaN();
  a_motif->complexity = NaN();
  free_matrix(a_motif->freqs);
  a_motif->freqs = NULL;
  free_matrix(a_motif->scores);
  a_motif->freqs = NULL;
  if (a_motif->url) free(a_motif->url);
  a_motif->url = NULL;
}
예제 #20
0
std::string FloatConstantGenerator::GenFloatConstantImpl(
    const FieldDef &field) const {
  const auto &constant = field.value.constant;
  T v;
  auto done = StringToNumber(constant.c_str(), &v);
  FLATBUFFERS_ASSERT(done);
  if (done) {
#if (!defined(_MSC_VER) || (_MSC_VER >= 1800))
    if (std::isnan(v)) return NaN(v);
    if (std::isinf(v)) return Inf(v);
#endif
    return Value(v, constant);
  }
  return "#";  // compile time error
}
예제 #21
0
	Descriptor::Descriptor(string id) :
			    GenericDescriptor(id) {

		explicitDuration = NaN();
		presentationTool = "";
		repetitions = 0;
		freeze = false;
		region = NULL;
		parameters = new map<string, Parameter*>;

		keyNavigation = NULL;
		focusDecoration = NULL;
		inputTransitions = new vector<Transition*>;
		outputTransitions = new vector<Transition*>;

		typeSet.insert("Descriptor");
	}
예제 #22
0
파일: sqrt.c 프로젝트: aahud/harvey
/*
	sqrtC returns the square root of its floating
	point argument. Newton's method.

	calls frexp
*/
double
sqrtC(double arg)
{
	double x, temp;
	int exp, i;

	if(arg <= 0) {
		if(arg < 0)
			return NaN();
		return 0;
	}
	if(isInf(arg, 1))
		return arg;
	x = frexp(arg, &exp);
	while(x < 0.5) {
		x *= 2;
		exp--;
	}
	/*
	 * NOTE
	 * this wont work on 1's comp
	 */
	if(exp & 1) {
		x *= 2;
		exp--;
	}
	temp = 0.5 * (1.0+x);

	while(exp > 60) {
		temp *= (1L<<30);
		exp -= 60;
	}
	while(exp < -60) {
		temp /= (1L<<30);
		exp += 60;
	}
	if(exp >= 0)
		temp *= 1L << (exp/2);
	else
		temp /= 1L << (-exp/2);
	for(i=0; i<=4; i++)
		temp = 0.5*(temp + arg/temp);
	return temp;
}
예제 #23
0
    void SolveGEIP(const Matrix& A, Vector &x, const Vector& b)
    { 
      // Verify that the system is well-formed
      const int size = A.Rows();
      if ((A.Cols() != size) || (b.Size() != size)) {
        throw NonconformableShapesError();
      }

      // Prepare the augmented matrix
      Matrix aug(size, size+1, NaN());
      for (int i = 0; i < size; ++i) {
        aug.Col(i) = A.Col(i);
      }
      aug.Col(size) = b;
      
      // Go to town...
      eliminate(aug, size, fabs(1e-14));
      back_substitute(aug, size);

      x = aug.Col(size);
    }
예제 #24
0
파일: asin.c 프로젝트: 99years/plan9
double
asin(double arg)
{
	double temp;
	int sign;

	sign = 0;
	if(arg < 0) {
		arg = -arg;
		sign++;
	}
	if(arg > 1)
		return NaN();
	temp = sqrt(1 - arg*arg);
	if(arg > 0.7)
		temp = PIO2 - atan(temp/arg);
	else
		temp = atan(arg/temp);
	if(sign)
		temp = -temp;
	return temp;
}
예제 #25
0
bool Steuerfunktionen::aktualisiereRaender()
{
	// die definierten Definitionsmaxima und -minima in Vektoren speichern,
	// um dann daraus den größten bzw. kleinsten Wert zu ermitteln.
	
	std::vector <double> minima;
	std::vector <double> maxima;

	if (m_geschwindigkeitFunktion!=NULL)
	{
		minima.push_back(m_geschwindigkeitFunktion->definitionsminimum());
		maxima.push_back(m_geschwindigkeitFunktion->definitionsmaximum());
	}

	if (m_lenkwinkelAenderungFunktion!=NULL)
	{
		minima.push_back(m_lenkwinkelAenderungFunktion->definitionsminimum());
		maxima.push_back(m_lenkwinkelAenderungFunktion->definitionsmaximum());
	}

	// Alle NaN Werte entfernen
	minima.erase(remove_if(minima.begin(),minima.end(),&istNaN),minima.end());
	maxima.erase(remove_if(maxima.begin(),maxima.end(),&istNaN),maxima.end());
	
	if (minima.empty()||maxima.empty())
	{
		// Ränder können nicht bestimmt werden
		m_definitionsmaximum = m_definitionsmaximum = NaN();
		return false;
	}
	else
	{
		m_definitionsminimum = *std::max_element(minima.begin(),minima.end());	// Maximum der Minima
		m_definitionsmaximum = *std::min_element(maxima.begin(),maxima.end());	// Minimum der Maxima
		m_definitionsmaximum = std::max(m_definitionsmaximum,m_definitionsminimum); //Maximum >= Minimum
		return true;
	}
};
예제 #26
0
double Steuerfunktionen::lenkwinkelAenderung( double d ) const
{
	if (m_lenkwinkelAenderungFunktion == NULL)
		return NaN();
	return (*m_lenkwinkelAenderungFunktion)(d);
}
예제 #27
0
double Steuerfunktionen::geschwindigkeit( double d ) const
{
	if (m_geschwindigkeitFunktion == NULL)
		return NaN();
	return (*m_geschwindigkeitFunktion)(d);
}
예제 #28
0
파일: Interval.cpp 프로젝트: amutu/SFCGAL
Interval::Interval():
	_lower( NaN() ),
	_upper( NaN() )
{

}
BOOLEAN_T get_next_data_block_from_prior_reader_from_psp(
  DATA_BLOCK_READER_T *reader, 
  DATA_BLOCK_T *data_block
) {

  BOOLEAN_T result = FALSE;
  const int buffer_size = 100;
  char buffer[buffer_size];
  int num_read = 0;

  PSP_DATA_BLOCK_READER_T *psp_reader 
    = (PSP_DATA_BLOCK_READER_T *) get_data_block_reader_data(reader);

  double *output_prior = get_prior_from_data_block(data_block);
  *output_prior = NaN();

  int c = 0;

  // Skip over leading white space
  while((c = fgetc(psp_reader->psp_file)) != EOF) {

    if (isspace(c)) {
      if (c == '\n') {
        psp_reader->at_start_of_line = TRUE;
      }
      else {
        psp_reader->at_start_of_line = FALSE;
      }
      continue;
    }
    else {
      break;
    }
  }

  if (c == '>' && psp_reader->at_start_of_line == TRUE) {
    // We found the start of a new sequence while trying
    // to find a prior.
    c = ungetc(c, psp_reader->psp_file);
    if (ferror(psp_reader->psp_file)) {
      die(
        "Error reading file:%s.\nError message: %s\n", 
        psp_reader->filename,
        strerror(ferror(psp_reader->psp_file))
      );
    }
  }
  else {
    // We are at start of a prior.
    // Read prior string until next space or EOF.
    int buffer_index = 0;
    while(c != EOF && !isspace(c)) {
      buffer[buffer_index] = c;
      ++buffer_index;
      if (buffer_index >= (buffer_size - 1)) {
        // No prior string should be this long
        buffer[buffer_size - 1] = 0;
        die("File %s contains invalid prior value: %s\n", psp_reader->filename, buffer);
      }
      c = fgetc(psp_reader->psp_file);
    }

    if (c == '\n') {
      psp_reader->at_start_of_line = TRUE;
    }
    else {
      psp_reader->at_start_of_line = FALSE;
    }

    buffer[buffer_index] = '\0';

    // If the buffer is not empty, it should contain a string
    // representing the prior. Convert it to a double.
    if (buffer_index != 0) {
      char *end_ptr = NULL;
      double prior = strtod(buffer, &end_ptr);
      if (end_ptr == buffer 
          || *end_ptr != '\0' 
          || prior < 0.0L 
          || prior > 1.0L
      ) {
        die("File %s contains invalid prior value: %s\n", psp_reader->filename, buffer);
      }
      *output_prior = prior;
      num_read = 1;
      ++psp_reader->current_position;
      result = TRUE;
    }

  }

  if (c == EOF && ferror(psp_reader->psp_file)) {
    die(
      "Error while reading file:%s.\nError message: %s\n", 
      psp_reader->filename,
      strerror(ferror(psp_reader->psp_file))
    );
  }

  set_start_pos_for_data_block(data_block, psp_reader->current_position);
  set_num_read_into_data_block(data_block, num_read);
  return result;
}
예제 #30
0
double
charstod(int(*f)(void*), void *vp)
{
	char str[400], *s, *e, *start;
	int c;

	s = str;
	e = str + sizeof str - 1;
	c = (*f)(vp);
	while(c == ' ' || c == '\t')
		c = (*f)(vp);
	if(c == '-' || c == '+'){
		ADVANCE;
	}
	start = s;
	while(c >= '0' && c <= '9'){
		ADVANCE;
	}
	if(c == '.'){
		ADVANCE;
		while(c >= '0' && c <= '9'){
			ADVANCE;
		}
	}
	if(s > start && (c == 'e' || c == 'E')){
		ADVANCE;
		if(c == '-' || c == '+'){
			ADVANCE;
		}
		while(c >= '0' && c <= '9'){
			ADVANCE;
		}
	}else if(s == start && (c == 'i' || c == 'I')){
		ADVANCE;
		if(c != 'n' && c != 'N')
			return NaN();
		ADVANCE;
		if(c != 'f' && c != 'F')
			return NaN();
		ADVANCE;
		if(c != 'i' && c != 'I')
			return NaN();
		ADVANCE;
		if(c != 'n' && c != 'N')
			return NaN();
		ADVANCE;
		if(c != 'i' && c != 'I')
			return NaN();
		ADVANCE;
		if(c != 't' && c != 'T')
			return NaN();
		ADVANCE;
		if(c != 'y' && c != 'Y')
			return NaN();
		ADVANCE;  /* so caller can back up uniformly */
		USED(c);
	}else if(s == str && (c == 'n' || c == 'N')){
		ADVANCE;
		if(c != 'a' && c != 'A')
			return NaN();
		ADVANCE;
		if(c != 'n' && c != 'N')
			return NaN();
		ADVANCE;  /* so caller can back up uniformly */
		USED(c);
	}
	*s = 0;
	return strtod(str, &s);
}