A few comments:
- The symmetry of the problem leads to 10 different cases only. We can assume that 1<=$c<$b<$a<=$rep.
- This also implies that $a is always at least 3, and $b at least 2.
- This way the loops are simpler and no check for equality is required.
- I think that $a, $b, $c are the correct parameters to store the results rather than the polynomials itself.
Here is my proposed code:
use strict;
use warnings;
use Math::Polynomial::Solve qw!poly_derivative poly_roots!;
use Data::Dumper;
my %haystack;
my $rep = int 5; # $rep means right endpoint of the interval [0, $rep]
foreach my $a (3..$rep ) {
foreach my $b (2..$a-1 ) {
foreach my $c (1..$b-1 ) {
my @quintic = (1, -$a - $b - $c, $a*$b + $a*$c + $b*$c, -$a*$b*$
+c, 0, 0);
my @derivative = poly_derivative(@quintic);
my @zeros = poly_roots(@derivative);
$haystack{"$a,$b,$c"}{"p"} = \@quintic;
$haystack{"$a,$b,$c"}{"d"} = \@derivative;
$haystack{"$a,$b,$c"}{"z"} = \@zeros;
}
}
}
print Dumper{%haystack};
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.