Inspired by a Project Euler problem, I recently started playing around with Ulam spirals. My first thought was that an Ulam spiral could be a (rather useless) coordinate system, and how I might be able to convert from "Ulam coordinates" (i.e. just the number on the spiral at a given point) to rectangular coordinates and vice versa.

So the question is: Is there a single function that would return the number on the Ulam spiral given (x,y)? And also (and perhaps more of a challenge), one to convert back?

I'm just a sophomore computer science student, and not terribly competent in math compared to the people on these site, sadly (I'm in Calc III right now). I was able to work out four separate equations to find the number on the spiral given an ordered pair, but that's one for each of four sections in between the 'diagonal axes' (I'm not sure what to call them). Unfortunately, I have yet to make this more simple. Any ideas?