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