You don't.
The gradian is a unit of plane angle, equivalent to 1⁄400 of a turn. It is also known as gon, grad, or grade. One grad equals 9⁄10 of a degree or π⁄200 of a radian.
A gradian is an angle. Whether in degrees, radians, or gradians, inv tan takes a slope and returns an angle. Doing an inv tan of a gradian doesn't make sense.
gradians = 200 / Math.PI * Math.atan(slope)
If you're going to be working with gradians much, having conversion methods might be handy.
double gradianToRadian(double gradian) {
return gradians * Math.PI / 200;
}
double radianToGradian(double radian) {
return radians / Math.PI * 200;
}
Putting that together gives:
gradians = radianToGradian( Math.atan(slope) )
Testing your example problem:
assertEquals(87.43, radianToGradian( Math.atan(5) ), 0.001);
assertEquals(gradianToRadian(87.43), Math.atan(5), 0.001);
assertEquals(Math.tan( gradianToRadian(87.43) ), 5, 0.001);
I think the numbers you gave are correct. Just mislabeled. 5 is a slope not a gradian. 87.43 is the gradian.
Gradians are angles. You don't do an "inverse tan of a gradian". You convert to gradian after doing an inverse tan on a slope.