Example #1
0
File: rat.c Project: ptigwe/gte
/* GSoC12: Tobenna Peter, Igwe */
    Rat parseRat(char* srat, const char* info, int j)
{
    char snum[MAXSTR], sden[MAXSTR];
    mp num, den;

    atoaa(srat, snum, sden);
    atomp(snum, num);
    if (sden[0]=='\0') 
        itomp(1, den);
    else
    {
        atomp(sden, den);
        if (negative(den) || zero(den))
        {
            char str[MAXSTR];
            mptoa(den, str);
            fprintf(stderr, "Warning: Denominator "); 
            fprintf(stderr, "%s of %s[%d] set to 1 since not positive\n", 
                str, info, j+1);
            itomp(1, den);  
        }
    }
    Rat r = mptorat(num, den);
    return r;
}
Example #2
0
long
readrat ( lrs_mp Na, lrs_mp Da )
/* read a rational or integer and convert to lrs_mp with base BASE */
/* returns true if denominator is not one                      */
/* returns 999 if premature end of file                        */
{
  char in[MAXINPUT], num[MAXINPUT], den[MAXINPUT];

  if ( fscanf ( lrs_ifp, "%s", in ) == EOF ) {
    fprintf ( lrs_ofp, "\nInvalid rational input" );
    exit ( 1 );
  }

  if ( !strcmp ( in, "end" ) ) { /*premature end of input file */
    return ( 999L );
  }

  atoaa ( in, num, den ); /*convert rational to num/dem strings */
  atomp ( num, Na );

  if ( den[0] == '\0' ) {
    itomp ( 1L, Da );
    return ( FALSE );
  }

  atomp ( den, Da );
  return ( TRUE );
}
Example #3
0
/* returns 999 if premature end of file                        */
long plrs_readrat (lrs_mp Na, lrs_mp Da, const char* rat)
{
  	char in[MAXINPUT], num[MAXINPUT], den[MAXINPUT];
 	strcpy(in, rat);
	atoaa (in, num, den);		/*convert rational to num/dem strings */
	atomp (num, Na);
	if (den[0] == '\0')
	{
		itomp (1L, Da);
		return (FALSE);
	}
	atomp (den, Da);
	return (TRUE);
}