コード例 #1
0
float __addsf3(float a, float b)
{
	float_t fa;
	float_t fb;
	float_t res;
	
	fa.val = a;
	fb.val = b;
	
	if (fa.data.parts.sign != fb.data.parts.sign) {
		if (fa.data.parts.sign) {
			fa.data.parts.sign = 0;
			res.data = sub_float(fb.data, fa.data);
			
			return res.val;
		}
		
		fb.data.parts.sign = 0;
		res.data = sub_float(fa.data, fb.data);
		
		return res.val;
	}
	
	res.data = add_float(fa.data, fb.data);
	return res.val;
}
コード例 #2
0
ファイル: CodeBuilder.cpp プロジェクト: noname007/EasyFront
int32_t CodeBuilder::addop_float( Op opcode,double t_double )
{
    int arg = add_float(t_double);
    if (arg < 0)
        return 0;
    return addop_i(opcode, arg);
}
コード例 #3
0
ObjectSettings
BicyclePlatform::get_settings()
{
  auto result = GameObject::get_settings();

  result.add_float(_("X"), &m_center.x, "x", 0.0f, OPTION_HIDDEN);
  result.add_float(_("Y"), &m_center.y, "y", 0.0f, OPTION_HIDDEN);

  result.add_int(_("Platforms"), &m_platforms, "platforms", 2);
  result.add_float(_("Radius"), &m_radius, "radius", 128);
  result.add_float(_("Momentum change rate"), &m_momentum_change_rate, "momentum-change-rate", 0.1f);

  result.reorder({"platforms", "x", "y"});

  return result;
}
コード例 #4
0
ファイル: faarith.c プロジェクト: ciolben/asmv
/*
 * PROCEDURE	: main
 *
 * GLOBAL	:
 *		Toutes les variables globales.
 *
 * INPUT	:
 * argc		Nombre de parametres   de la ligne de commande du programme.
 * argv		Tableau des parametres de la ligne de commande du programme.
 *		argv[0]		Nom du programme.
 * envp		Tableau des parametres d'environnement du programme.
 *
 * DESCRIPTION	:
 * La procedure teste le fonctionnement et le temps execution des procedures
 * du fichier.
 *
 * RETOUR	:
 * La valeur nulle est retournee si le programme s'execute sans erreur.
 * Sinon une valeur non nulle est retournee.
 *
 * HISTORIQUE	:
 * 1.00 - 06/07/95 - Original.
 */
void	main (int argc, char *argv[])
{
	extern	long	atol (const char *);

	long	basen;	/* base d'iterations	*/
	size_t	i;

	if (argc != 2) {
		print_usage ();
		exit (1);
	}

	basen = atol (argv[1]);

	/* initailise les tableaux	*/
	for (i = 0; i < BUFSIZE; i++)
		a[i] = (float) rand ();
	for (i = 0; i < BUFSIZE; i++)
		b[i] = 1.F;


	LOOP(add_float (a, b, BUFSIZE), basen);
	LOOP(addinc_float (a, b, BUFSIZE, 1, 1), basen);
	LOOP(subtract_float (a, b, BUFSIZE), basen);
	LOOP(subinc_float (a, b, BUFSIZE, 1, 1), basen);
	LOOP(multiply_float (a, b, BUFSIZE), basen);
#if	0
	LOOP(addconst_float (a, (float) 1.0, BUFSIZE), basen);
	LOOP(dot_float (a, b, BUFSIZE), basen);
	LOOP(dotinc_float (a, b, BUFSIZE, 1, -1), basen);
	LOOP(multconst_float (a, (float) 1.0, BUFSIZE), basen);
	LOOP(multiply_float (a, b, BUFSIZE), basen);
#endif

	exit (0);
}
コード例 #5
0
ファイル: gradient.c プロジェクト: ciolben/asmv
/*
 * PROCEDURE	: firy_n_float
 *
 * INPUT       :
 * ima_in         Pointeur sur la pyramide de l'image.
 *
 * OUTPUT       :
 * ima_filt       Pointeur sur la pyramide de gradient spatial.
 *                On obtient les gradients suivant x ou y en fonction de
 *                la valeur des coefficients du filtre contenus dans "coefs".
 *
 * INPUTS      :
 * coefs          Pointeur sur les coefficients du filtre.
 * taille	 Taille du filtre.
 *
 * DESCRIPTION	:
 * La procedure effectue un filtrage taille X taille de
 * l'image "ima_in". Ce filtrage correspond au calcul d'un gradients,
 * suivant x ou y, selon la valeur des coefficients du filtre contenus
 * dans "coefs"
 *
 * HISTORIQUE   :
 * 1.00 - 01/01/95 - Original.
 */
static	bool	firy_n_float (TImageShort *ima_in, TImageFloat *ima_filt,
			      float *coefs, size_t taille)
{
  size_t	midsize  = taille / 2;
  size_t	xsize	 = (size_t) ima_in->nbco;
  size_t	ysize	 = (size_t) ima_in->nbli;
  void		(*fir_float) (const float *, float *, size_t, const float *);
  float		*src;
  float		*dst;
  size_t	y;

  // Test si filtre applicable
  if ((xsize < midsize) || (ysize < midsize)) {
    return false;
  }

  switch (taille) {
  case 3	: fir_float = firf3sym_float; break;
  case 5	: fir_float = firf5sym_float; break;
  case 7	: fir_float = firf7sym_float; break;
  default : return false;
  }

  if ((src = (float *) malloc (xsize * sizeof(float))) == (float *) NULL)
    return false;

  if ((dst = (float *) malloc (xsize * sizeof(float))) == (float *) NULL) {
    free ((void *) src);
    return false;
  }

  set_float (ima_filt->ad, 0.F, xsize * ysize);

  for (y = 0; y < ysize; y++) {
    int	i;

    cast_short_float (MIJ(ima_in->ad, y, 0, xsize), src, xsize);

    for (i = 0; i < (int) midsize; i++) {
      (*fir_float) (src, dst, xsize - (taille - 1),
		    MIJ(coefs, i, 0, taille));

      if ((y + midsize >= (size_t) i) && (y + midsize < ysize + i))
	add_float (
		   MIJ(ima_filt->ad, y + midsize - i, midsize, xsize),
		   dst, xsize - (taille - 1));

      if (y + i >= midsize && y + i < ysize + midsize)
	subtract_float (
			MIJ(ima_filt->ad, y + i - midsize, midsize, xsize),
			dst, xsize - (taille - 1));
    }
  }

  for (y = 0; y < midsize; y++) {
    set_float (MIJ(ima_filt->ad, y, 0, xsize), 0.F, xsize);
    set_float (MIJ(ima_filt->ad, ysize - y - 1, 0, xsize), 0.F,
	       xsize);
  }

  free ((void *) src);
  free ((void *) dst);

  return true;
}