#!/usr/bin/perl -w
$x = $ARGV[0];
$y = $ARGV[1];
print "<$x, $y> ";
$x = posneg($x);
$y = posneg($y);

$p = .5*($x+$y-2)*($x+$y-1)+$x;

$c = int(sqrt(2*$p)-.5);

$xi = $p -.5*$c*($c+1);
$yi = negpos($c -$xi+2);
$xi = negpos($xi);
print "= $p =? <$xi, $yi>\n";

sub posneg {
my($N) = $_[0];
return (2*$N) if ($N > 0);
return (-2*$N+1); # for $N>=0
}

sub negpos {
my($R) = $_[0];
return (int($R/2)) if (int($R/2)*2 == $R);
return (-int($R/2));
}
