[perl] Title

Viewer

  1. use warnings;
  2.  
  3. # introduction
  4. print("This program computes several functions using Taylor series.\n");
  5.  
  6. # input
  7. print("Enter x: ");
  8. my $x = <>;
  9. print("Enter alpha (for (1+x)^a): ");
  10. my $a = <>;
  11. print("Enter accuracy (eps): ");
  12. my $eps = <>;
  13.  
  14. # service strings
  15. my $bold_limiter = "\t" . "="x59 . "\n";
  16. my $regular_limiter = "\t" . "-"x59 . "\n";
  17. my $control_str = "\t| %-10s| %-10.6f| %-+15.11f| %-15.11f|\n";
  18.  
  19. # table header
  20. print("Table of values of some functions at a given point.\n");
  21. print($bold_limiter);
  22. printf("\t| %-10s| %-10s| %-15s| %-15s|\n", "Function", "x", "Value", "Accuracy");
  23. print($bold_limiter);
  24.  
  25. # exp() row
  26. printf($control_str, "exp(x)", $x, &exp($x, $eps), $eps);
  27. print($regular_limiter);
  28.  
  29. # alpha_exp() row
  30. printf($control_str, "(1+x)^a", $x, &alpha_exp($x, $a, $eps), $eps);
  31. print($regular_limiter);
  32.  
  33. sub exp {
  34.     (my $x, my $eps) = @_;
  35.     my $member = 1;
  36.     my $answer = $member;
  37.     my $n = 1;
  38.     do {
  39.             $member *= $x / $n;
  40.                 $answer += $member;
  41.                 $n++;
  42.     } while (abs($member) > $eps);
  43.     return $answer;
  44. }
  45.  
  46. sub alpha_exp {
  47.     (my $x, my $a, my $eps) = @_;
  48.     if ($a >= 0) {
  49.                 if (abs($x) > 1) {
  50.                         printf("Error: x is not correct for entered alpha (%f).\n", $a);
  51.                         return 0;
  52.                 }
  53.     } elsif ($a > -1 && $a < 0) {
  54.                 if ($x <= -1 || $x > 1) {
  55.                         printf("Error: x is not correct for entered alpha (%f).", $a);
  56.                         return 0;
  57.                 }
  58.     } else {
  59.                 if (abs($x) >= 1) {
  60.                         printf("Error: x is not correct for entered alpha (%f).\n", $a);
  61.                         return 0;
  62.                 }
  63.     }
  64.     my $member = 1;
  65.     my $answer = $member;
  66.     my $n = 1;
  67.     do {
  68.                 $member *= $a * $x / $n;
  69.                 $answer += $member;
  70.                 $n++;
  71.                 $a--;
  72.     } while (abs($member) > $eps);
  73.     return $answer;
  74. }

Editor

You can edit this paste and save as new:


File Description
  • Title
  • Paste Code
  • 29 Nov-2020
  • 1.71 Kb
You can Share it: