#!/usr/bin/perl # zeta.pl c.2011 stan kulikowski ii, stankuli@etherways.com, pensacola, fl 32514 $SERIES_DEPTH = 1000000; &QUERY_DIRICHLET; sub QUERY_DIRICHLET { my $POWERS = 1; my $PRECISION = 0; print "\n Dirichlet's zeta function. \n"; my $OK = 0; until ($OK) { print " How many powers : "; chop($POWERS = <>); $POWERS = int $POWERS; ($POWERS > 1) ? $OK = 1 : print " value must be greater than 1 \n"; } # until $OK # $OK = 0; until ($OK) { print " To what precision : "; chop($PRECISION = <>); ($PRECISION < 1 && $PRECISION > 0) ? $OK = 1 : print " value must be between 1 and 0 \n"; } # until $OK # &DIRICHLET ($POWERS,$PRECISION); print "\n\n"; } # QUERY_DIRICHLET # sub HARMONIC_SERIES { my ($POWER) = @_; my $RESULT = 1; my $SERIES = $SERIES_DEPTH; while ($SERIES > 1) { $RESULT += 1/($SERIES-- **$POWER); } # while ($SERIES > 1) # return $RESULT; } # HARMONIC_SERIES # sub DIRICHLET { my ($POWERS,$PRECISION) = @_; my $POWER = 2; print "\n\n\t Power \t Dirichlet's zeta result (harmonic series depth = $SERIES_DEPTH)\n\n"; while ($POWER < $POWERS+1) { print "\t $POWER \t " . &HARMONIC_SERIES ($POWER) . " \n"; $POWER += $PRECISION; # problem here at 5.9? } # while ($POWER <= $POWERS) # } # DIRICHLET # # eof zeta.pl