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};