コード例 #1
0
ファイル: tslider.c プロジェクト: DINKIN/nip2
/* from/to/value have changed ... update the widgets.
 */
static void
tslider_real_changed( Tslider *tslider )
{
	GtkAdjustment *adj = tslider->adj;
	GtkWidget *entry = tslider->entry;

#ifdef DEBUG
	printf( "tslider_real_changed: %p, val = %g\n", 
		tslider, tslider->value );
#endif /*DEBUG*/

	if( tslider->auto_link ) 
		tslider->svalue = tslider_value_to_slider( tslider, 
			tslider->value );

	gtk_signal_handler_block_by_data( GTK_OBJECT( adj ), tslider );
	gtk_signal_handler_block_by_data( GTK_OBJECT( entry ), tslider );

	/* Some libc's hate out-of-bounds precision, so clip, just in case.
	 */
	set_gentry( tslider->entry, "%.*f", 
		IM_CLIP( 0, tslider->digits, 100 ), tslider->value );
	gtk_scale_set_digits( GTK_SCALE( tslider->slider ), tslider->digits );

	if( !DEQ( tslider->from, tslider->last_from ) || 
		!DEQ( tslider->to, tslider->last_to ) ) {
		double range = tslider->to - tslider->from;

		adj->step_increment = range / 100;
		adj->page_increment = range / 10;
		adj->page_size = range / 10;

		adj->lower = tslider->from;
		adj->upper = tslider->to + adj->page_size;

		tslider->last_to = tslider->to;
		tslider->last_from = tslider->from;

		gtk_adjustment_changed( adj );
	}

	if( !DEQ( tslider->svalue, tslider->last_svalue ) ) {
		adj->value = tslider->svalue;
		tslider->last_svalue = tslider->svalue;

		gtk_adjustment_value_changed( adj );
	}

	gtk_signal_handler_unblock_by_data( GTK_OBJECT( adj ), tslider );
	gtk_signal_handler_unblock_by_data( GTK_OBJECT( entry ), tslider );
}
コード例 #2
0
ファイル: problem02-2.c プロジェクト: koturn/C-study
/*!
 * @brief An entry point of this program
 * @return exit-status
 */
int main(void) {
  static const double x = 7.9;
  double y = x;
  uint cnt = 0;

  double prev_y = 0.0;
  while (!DEQ(y, prev_y)) {
    cnt++;
    prev_y = y;
    y = convert(y);
  }
  printf("%fに関数を%u回用いると%fになります\n", x, cnt, y);
  return EXIT_SUCCESS;
}
コード例 #3
0
ファイル: psc.c プロジェクト: KonstantinosKr/solfec
/* after the body has been imported via MPI calls,
 * read body data from file and compare */
void PSC_Test_Body (BODY *bod)
{
  char txt [1024];
  FILE *f;
  BODY a;
  int i;

  snprintf (txt, 1024, "%s/body%d.data", bod->dom->solfec->outpath, bod->id);
  ASSERT (f = fopen (txt, "r"), ERR_FILE_OPEN);

  fread (&a.kind, sizeof (a.kind), 1, f);

  if (a.kind != bod->kind)
  {
    ASSERT_TEXT (0, "PSC ERROR: kind");
  }

#if 0
  fread (&i, sizeof (int), 1, f);
  fread (txt, sizeof (char), i, f);
  txt[i] = '\0';

  if (strcmp (txt, bod->mat->label) != 0)
  {
    ASSERT_TEXT (0, "PSC ERROR: material");
  }
#endif

  fread (&a.ref_mass, sizeof (double), 1, f);

  if (a.ref_mass != bod->ref_mass)
  {
    ASSERT_TEXT (0, "PSC ERROR: ref_mass");
  }

  fread (&a.ref_volume, sizeof (double), 1, f);

  if (a.ref_volume != bod->ref_volume)
  {
    ASSERT_TEXT (0, "PSC ERROR: ref_volume");
  }

  fread (&a.ref_center, sizeof (double), 3, f);

  for (i = 0; i < 3; i ++)
  {
    if (a.ref_center [i]!= bod->ref_center [i])
    {
      ASSERT_TEXT (0, "PSC ERROR: ref_center");
    }
  }

  fread (&a.ref_tensor, sizeof (double), 9, f);

  for (i = 0; i < 9; i ++)
  {
    if (a.ref_tensor [i]!= bod->ref_tensor [i])
    {
      ASSERT_TEXT (0, "PSC ERROR: ref_tensor");
    }
  }

  fread (&a.dofs, sizeof (int), 1, f);

  if (a.dofs != bod->dofs)
  {
    ASSERT_TEXT (0, "PSC ERROR: dofs");
  }

  fread (&a.form, sizeof (a.form), 1, f);

  if (a.form != bod->form)
  {
    ASSERT_TEXT (0, "PSC ERROR: form");
  }

  int confsize = bod->kind != FEM ? 12 : bod->form == REDUCED_ORDER ? bod->dofs + 9 : bod->dofs;

  ERRMEM (a.conf = malloc (sizeof (double [confsize])));

  fread (a.conf, sizeof (double), confsize, f);

  for (i = 0; i < confsize; i ++)
  {
    if (a.conf [i] != bod->conf [i])
    {
      ASSERT_TEXT (0, "PSC ERROR: conf");
    }
  }

  free (a.conf);

  ERRMEM (a.velo = malloc (sizeof (double [a.dofs])));

  fread (a.velo, sizeof (double), a.dofs, f);

  for (i = 0; i < bod->dofs; i ++)
  {
    if (!DEQ(a.velo[i], bod->velo[i])) /* XXX: differs after 15th decimal place => why is ONLY velocity giving this kind of trouble? */
    {
      double x = fabs (a.velo[i]-bod->velo[i]), y = DBL_EPSILON;
      printf ("%.17f > %.17f\n", x, y);
      ASSERT_TEXT (0, "PSC ERROR: velo => %d => %.17f != %.17f", i, a.velo[i], bod->velo[i]);
    }
  }

  free (a.velo);

  /* TODO => bod->forces */

  /* TODO => bod->cra */

  a.shape = psc_read_shape (f);

  if (psc_compare_shapes (a.shape, bod->shape) == 0)
  {
    ASSERT_TEXT (0, "PSC ERROR: shape");
  }

  SHAPE_Destroy (a.shape);

  fread (&a.scheme, sizeof (a.scheme), 1, f);

  if (a.scheme != bod->scheme)
  {
    ASSERT_TEXT (0, "PSC ERROR: scheme");
  }

  a.inverse = psc_read_matrix (f);

  if (psc_compare_matrices (a.inverse, bod->inverse) == 0)
  {
    ASSERT_TEXT (0, "PSC ERROR: inverse");
  }

  psc_matrix_free (a.inverse);

  a.M = psc_read_matrix (f);

  if (psc_compare_matrices (a.M, bod->M) == 0)
  {
    ASSERT_TEXT (0, "PSC ERROR: M");
  }

  psc_matrix_free (a.M);

  a.K = psc_read_matrix (f);

  if (psc_compare_matrices (a.K, bod->K) == 0)
  {
    ASSERT_TEXT (0, "PSC ERROR: K");
  }

  psc_matrix_free (a.K);

  fread (&a.damping, sizeof (double), 1, f);

  if (a.damping != bod->damping)
  {
    ASSERT_TEXT (0, "PSC ERROR: damping");
  }

  fread (&i, sizeof (int), 1, f);

  if (i && bod->evec == NULL)
  {
    ASSERT_TEXT (0, "PSC ERROR: evec existence");
  }

  if (i)
  {
    a.evec = psc_read_matrix (f);

    if (psc_compare_matrices (a.evec, bod->evec) == 0)
    {
      ASSERT_TEXT (0, "PSC ERROR: evec");
    }

    ERRMEM (a.eval = malloc (sizeof (double [a.evec->n])));

    fread (a.eval, sizeof (double), a.evec->n, f);

    for (i = 0; i < a.evec->n; i ++)
    {
      if (a.eval [i]!= bod->eval [i])
      {
	ASSERT_TEXT (0, "PSC ERROR: eval");
      }
    }

    psc_matrix_free (a.evec);

    free (a.eval);
  }

  /* XXX: skip bod->label as non-essential */

  /* XXX: skip bod->mesh for the moment */

  /* XXX: skip bod->energy as non-essential */

  /* XXX: skip bod->fracture as non-essential */

  fclose (f);
}