#!/usr/bin/perl
#Varun Bhalerao
#http://www.astro.caltech.edu/~varun/ay20/ps2/blackbodysun.pl

#cgs units !

$h=6.63e-27;
$c=2.998e10;
$k=1.38e-16;
$hc2=$h*$c*$c*2; #per steradian is wanted, so no pi !

#print "Enter the temperature: ";
$t=5777;
#$t=shift;

$hckt=$h*$c/$k/$t;
$lmax=0.3/$t;
$factor=100;            #factor above and below lambda_max in which to integrate
$step=100;              #step size as a fraction of wavelength, 1/$step = dlambda / lambda
#$lstart=$lmax/$factor;
#$lend=$lmax*$factor;
$lstart=300e-7;
$lend=1100e-7;
print "Calculating from $lstart to $lend \n";
$dlambda=$lstart/$step;

$lambda=$lstart;
while ($lambda<$lend){
        $bldl=$hc2/$lambda**5/ (exp($hckt/$lambda) -1) *$dlambda;
        $integral+=$bldl;
        $dlambda=$lambda/$step;
        $lambda+=$dlambda;
        #print "$lambda $bldl\n";
}

$sigma=5.67e-5;
$exp=$sigma*$t**4/3.1416; #per steradian is wanted, so divide by pi !
print "$t $integral\n";
print "expected $exp\n";
printf("%E\n",$integral);
printf("%E\n",$exp);