#!/usr/bin/perl
use warnings;
use strict;

my $a2m = 0.31;
my $a1m = 0.42;
my $a0  = 1.14;
my $a1  = 0.97;
my $a2  = 0.55;
my $a3  = 0.26;

my $z   = 2.09;
my $zo  = 2.0;
my $z1  = 2.3;
my $d   = $z1 - $zo;
my $jmax= 180;

my $c2m = (1.0/($d*$d))*$a2m;
my $c1m = (1.0/$d)*$a1m;
my $c0  = $a0;
my $c1  = $d*$a1;
my $c2  = $d*$d*$a2;
my $c3  = $d*$d*$d*$a3;

sub que ($) {
  my $i = shift;
  return $c1m + ($i+1.0)*$c2m;
}
sub p ($) {
  my $i = shift;
  $i == 0 and return $c0+$c1+$c2+$c3;
  $i == 1 and return -$c1-2.0*$c2-3.0*$c3;
  $i == 2 and return $c2+3.0*$c3;
  $i == 3 and return -$c3;
  return 0.0;
}

my $w = ($z-$z1)/($zo-$z1);

my $res = 0.0;
my $wj  = 1.0;
for (my $j = 0; $j<=$jmax; ++$j) {
  my $u1 = p($j);
  my $u2 = que($j);
  $res += ($u1+$u2)*$wj;
  $wj *= $w;
}

print "$res\n";

my $pre = $a2m/(($z-$zo)*($z-$zo)) + $a1m/($z-$zo) + $a0 + $a1*($z-$zo)
  + $a2*($z-$zo)*($z-$zo) + $a3*($z-$zo)*($z-$zo)*($z-$zo);

print "$pre\n";

