newa = tadd( tsub( tpow(a,8) , tmul(tpow(a,10),0.5) ) , point ); q --> q^8 - q^10/2 + c ...Or more explicitly: q --> tadd( tsub( tpow(a,8) , tmul(tpow(a,10),0.5) ) , c ); ... where the above functions are defined as follows: triplex tadd(triplex a, triplex b) { triplex n; n.x = a.x + b.x; n.y = a.y + b.y; n.z = a.z + b.z; return n; } triplex tsub(triplex a, triplex b) { triplex n; n.x = a.x - b.x; n.y = a.y - b.y; n.z = a.z - b.z; return n; } triplex tdiv(triplex a, double b) { triplex n; n.x = a.x / b; n.y = a.y / b; n.z = a.z / b; return n; } triplex tmul(triplex a, double b) { triplex n; n.x = a.x * b; n.y = a.y * b; n.z = a.z * b; return n; } triplex tpow(triplex a, double p) { triplex n; double r = sqrt(a.x*a.x + a.y*a.y + a.z*a.z) ; double phi = atan2( pow(a.x*a.x + a.y*a.y, 0.5) , a.z) ; double theta = atan2(a.y , a.x) ; r=pow(r,p); yang*=p; zang*=p; n.x = r * sin(phi) * cos(theta); n.y = r * sin(phi) * sin(theta); n.z = r * cos(phi); return n; }