use strict; use warnings; use Math::Trig; # why settle for less (precision)? my ( @sigmas, @rads ); my ( $a1, $c ) = ( 1.18, .28e6 ); my $i = 1; while ( $i < 20 ) { my $r = $i * 1e-6; push @rads, $r; push @sigmas, pi * ($r**2) * $a1 * (1-exp(-$c*$r)); $i += 2; } while ( $i < 100 ) { my $r = $i * 1e-6; push @rads, $r; push @sigmas, 2 * pi * ($r**2); $i += 2; } for $i ( 0 .. $#rads ) { printf "rad= %8.3g sigma= %8.3g\n", $rads[$i], $sigmas[$i]; }