fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. double norm(double p, int n, double *a) {
  5. int i;
  6. double r;
  7. r = 0.0;
  8. for (i = 0; i < n; i++)
  9. r += fabs(pow(a[i], p));
  10. return pow(r, 1.0 / p);
  11. }
  12.  
  13. int main() {
  14. double a[] = { 0.5, -0.5 };
  15. double b[] = { 1.0, 1.0, 1.0, 1.0, 1.0 };
  16. double c[] = { -1.0, 2.0, 0.0, 3.0 };
  17. printf("%f\n", norm(1.0, sizeof(a) / sizeof(double), a));
  18. printf("%f\n", norm(1.0, sizeof(b) / sizeof(double), b));
  19. printf("%f\n", norm(1.0, sizeof(c) / sizeof(double), c));
  20. putchar('\n');
  21. printf("%f\n", norm(2.0, sizeof(a) / sizeof(double), a));
  22. printf("%f\n", norm(2.0, sizeof(b) / sizeof(double), b));
  23. printf("%f\n", norm(2.0, sizeof(c) / sizeof(double), c));
  24. putchar('\n');
  25. printf("%f\n", norm(3.0, sizeof(a) / sizeof(double), a));
  26. printf("%f\n", norm(3.0, sizeof(b) / sizeof(double), b));
  27. printf("%f\n", norm(3.0, sizeof(c) / sizeof(double), c));
  28. putchar('\n');
  29. return 0;
  30. }
  31. /* end */
  32.  
Success #stdin #stdout 0.01s 1720KB
stdin
Standard input is empty
stdout
1.000000
5.000000
6.000000

0.707107
2.236068
3.741657

0.629961
1.709976
3.301927