ps_2_0
//  arcus tangent approximation by nine term taylor polynom
//  tex0 to rendertarget
dcl t0
dcl_2d s0
def c5,-3,5,-7,9
def c6,-128,256,128,0
def c7,2,4,-1,0
def c8,-11,13,-15,17
def c9,1.5707963267948966192313216916398,3.1415926535897932384626433832795,0,0     // pi/2,pi
texld r7,t0,s0
rcp r3.y,r7.y
mul r1.x,r7.x,r3.y       // a = x/y
mov r7,r1.x
abs r7.y,r7.y
add r7.y,r7.y,c7.z
rcp r7.z,r1.x
mul r1.x,r1.x,c7.z
cmp r1.x,r7.y,r7.z,r1.x
mul r1.y,r1.x,r1.x       // a^2
mul r2.x,r1.x,r1.y       // a^3
mul r2.y,r2.x,r1.y       // a^5
mul r2.z,r2.y,r1.y       // a^7
mul r2.w,r2.z,r1.y       // a^9
mul r3.x,r2.w,r1.y
mul r3.y,r3.x,r1.y
mul r3.z,r3.y,r1.y
mul r3.w,r3.z,r1.y
rcp r5.x,c5.x
rcp r5.y,c5.y
rcp r5.z,c5.z
rcp r5.w,c5.w
rcp r8.x,c8.x
rcp r8.y,c8.y
rcp r8.z,c8.z
rcp r8.w,c8.w
mul r2,r2,r5             // -(a^3/3),(a^5/5),-(a^7/7),(a^9/9)
mul r3,r3,r8
add r2.x,r2.x,r2.y
add r2.x,r2.x,r2.z
add r2.x,r2.x,r2.w
add r2.x,r2.x,r3.x
add r2.x,r2.x,r3.y
add r2.x,r2.x,r3.z
add r2.x,r2.x,r3.w
add r1.z,r2.x,r1.x       // the full polynom
add r1.x,r1.z,c9.x
cmp r1.z,r7.y,r1.x,r1.z
// todo: handle y = 0 cases
mov r1,r1.z
add r1,r1,c9.x
rcp r6.y,c9.y
mul r1,r1,r6.y
mov oC0,r1
