for (double abw = 0.0; abw <= 1.0; abw += 0.1) {
printf("%lf, %lf, %lf, %lf\n", abw, calc_abv(abw), calc_abv2(abw), calc_abv3(abw));


Nice lesson in display. Thank you for that.

I didn't notice that the "coefficients" were being added backwards and the implementation is using methods described here:
Astute.

I don't know which of the below implementations below I prefer, but I do know that comments should be added (if there was comments in the initial code I'd not have initially thought it was implemented incorrectly, for example )
I'm also getting a lesson on the importance of comment, particularly when the code is reviewed by others.

The original Horner form. It may have been more obvious had I stuck with it.
abw * ( -0.000039705486746795932 +
abw * ( 1.2709666849144778 +
abw * ( -0.40926819348115739 +
abw * ( 2.0463351302912738 +
abw * ( -7.8964816507513707 +
abw * ( 15.009692673927390 +
abw * ( -15.765836469736477 +
( 8.8142267038252680 -
2.0695760421183493 * abw) * abw))))))

Though I was partial to my original construct I'm intrigued by the FOR loop proposed by laserlight and yourself. Calc_abv(abw) has a compliment calc_abw(abv). Same algorithm, different coefficients. Its not in the code yet but will be implemented. I see now, I think, that instead of two functions I can pass an array of either set of coefficients to a single convert() function.

I'm going to revise my code to all of laserlight's and your suggestions. This is my first C program and I muddled through ad hoc, focusing on the trees not the forest. I truly appreciate the all advice and insight I've gotten.

Much thanks to you both.

Don