Return Spiral Indexes! Spirals are cool , so are numbers, and number spirals are even cooler. But what if I want a specific number, in a specific place using xy coordinates...

Challenge

Using an infinite spiral moving down first, curling in a counterclockwise manner

ex:

 6  5  4
 7  0  3
 8  1  2
 9 10 11



Take negative and positive inputs(integers) in the form of (x, y)
When given those coordinates return the number at that position in the spiral
The integer inputs must be the maximum that your language can use


ex:

 6  5  4
 7  0  3
 8  1  2
 9 10 11


input : (0,0)
output : 0

input : (1,1)
output : 4

input : (-1,-1)
output : 8

input : (5,5)
output : 100

input : (-5, -6)
output : 121

input : (2, -5)
output : 87

input : (-9, 2)
output : 349

input : (-7, 8)
output : 271

input : (-5, -7)
output : 170


Scores

This is a codegolf, so smallest code wins!!!
JavaScript (ES7), 50 bytes
This is using a slightly modified version of the formula that I've used and explained in this post.

x=&gt;y=&gt;(i=4*(x*x&gt;y*y?x:y)**2)-(x&lt;y||-1)*(i**.5-x-y)

Try it online!
or Try a version that displays the spiral.