I noticed that the Drotmg implementation is different than the Netlib reference implementation. When d1 <= rgamsq, there is a do-while loop controlling how many times to multiply by gamma on line 109 of ATL_rotmg.c. The while loop states "while (d1 <= gamsq)"; d1 will be multiplied until it is greater than gamsq. However, in the netlib reference implementation , the while loop is "while (d1 <= rgamsq || d1 > gamsq)"; d1 will be multiplied until it is greater than rgamsq, not gamsq. Is this behavioral difference an error in the Netlib reference implementation or an error in ATLAS?
Thank you very much