use strict; use warnings; my $G=6.67428*10**-11; # m^3/kg/s^2 my $c= 299792458; # m/s my $PI= 3.14159265358979323846264338327950288; my $eV= 1.60217653*10**-19; # J sub e2m { my $e= shift; return $e/$c**2; } # gravitational force sub Fg { my ($m1, $m2, $r)= @_; return $G*$m1*$m2/$r; } # escape velocity: sub ve { my ($m, $r)= @_; return sqrt(2*$G*$m/$r); } # volume of sphere = 4/3*PI*r**3 sub Vsphere { my $r= shift; return 4/3*$PI*$r**3; } # density: sub density { my ($m, $r)= @_; return $m/Vsphere($r); } my $mspoon= 0.005; # kg my $Melectron= 9.10938215*10**-31; my $Mneutron= 1.67492729*10**-27; my $Rneutron= 0.877*10**-15; my $rho_neutronium= density($Mneutron, $Rneutron); printf("neutron density: %g\n", $rho_neutronium); my $vspoon= 0.05*10**-3; # m^3 my $Mneutronium_spoon= $rho_neutronium*$vspoon; printf("weight of neutronium: %g\n", $Mneutronium_spoon); my $l_spoon= 0.1; my $m_spoon= 0.01; my $Fspoon_neutronium= Fg($Mneutronium_spoon, $m_spoon, $l_spoon); printf("force on spoon: %g\n", $Fspoon_neutronium);