ROT13 one ASCII character This kind of question has been asked before, but I wanted to make it more specific. The linked question asks to read from stdin and rot13 the input. I don't want the disadvantage of I/O code that differs a lot for each language in length.

The challenge:


  Write a function that will ROT13 (wiki link) one char (as defined by the ASCII table).
  No built-in ROT13 functionality allowed.


Shortest code wins.



You can use this kind of C-family loop to test your function:

for (int i = '!'; i &lt;= '~'; ++i)
{
    char c = (char) i;
    System.out.println(c + "   -&gt;   " + f(c));
}
C (77 64 chars)

char f(char c){return(c&gt;64&amp;&amp;c&lt;91)?65+(c-52)%26:(c&gt;96&amp;&amp;c&lt;123)?97+(c-84)%26:c;}

char f(char c){return(isalpha(c))?65+(c&amp;32)+(c-52-(c&amp;32))%26:c;}