예제 #1
0
파일: aufg09b.cpp 프로젝트: acpanna/coding
int main(void)
{
  int i;
  float h;
  float ergebnis, differenz;

  printf("\nWert von i   exp(1 + h) - exp(1)) / h      Fehler:");
  printf("\n==================================================\n");

  for (i=1; i<=22; i++)
    {
      h = float_pow(10,-i);   

      ergebnis = (float_exp(1 + h) - float_exp(1)) / h;

      differenz = ergebnis - float_exp(1);

      if (differenz<0)
        differenz = differenz * (-1.0);

      printf(" i = %d\t:  \t%.15f  ",i,ergebnis);
      printf(" \t%.15f\n",differenz);

    }
  return 0;
}
예제 #2
0
파일: utils.c 프로젝트: AEUG/400plus
void calculate_dof(int focal_length, int focus_distance, int av, char *min, char *max) {
	float fl =    1.0f * focal_length;
	float fd = 1000.0f * focus_distance;

	float fn = float_pow(2.0f, ((float)av / 8.0f - 1) / 2.0f); // Precise F-Number = 2^(n/2), 1/8 EV resolution
	float cof = 0.019f; // Circle of confusion

	// Hyperfocal
	float hf  = fl + fl * fl / (fn * cof);
	float aux = fd * (hf - fl) / 1000.0f;

	// Min distance
	display_float(min, aux / (hf + fd - 2.0f * fl));

	// Max distance
	if (hf >= fd)
		display_float(max, aux / (hf - fd));
	else
		sprintf(max, "%s", LP_WORD(L_S_INFINITE));
}