///////////////////////////////////// // DLLFormula01.cpp // // stephen c. ferguson // created 3/29/98 // http://www.HiWAAY.com/~stephenf/ // ///////////////////////////////////// #define STRICT #define WIN32_LEAN_AND_MEAN #include #include "fll01.h" int Formula_Total(); #define FORMULA_TOTAL 20 typedef struct { // export pointer to address DLL int count; // number of formulas in DLL } TOTAL; TOTAL Total; int APIENTRY LibMain(HANDLE hInst, DWORD fdwReason, LPVOID lpReserved) { if (fdwReason == DLL_PROCESS_ATTACH) { wsprintf (cstr, "LibMain(): DLL loaded"); Total.count = FORMULA_TOTAL; } else if (fdwReason == DLL_PROCESS_DETACH) wsprintf (cstr, "LibMain(): DLL unloaded"); return TRUE; } //////////////////////////////////////////// void post00 (CDATA *v); void formula41 (CDATA *v); void formula42 (CDATA *v); void formula43 (CDATA *v); void formula44 (CDATA *v); void formula45 (CDATA *v); void formula46 (CDATA *v); void formula47 (CDATA *v); void formula48 (CDATA *v); void formula49 (CDATA *v); void formula50 (CDATA *v); void formula51 (CDATA *v); void formula52 (CDATA *v); void formula53 (CDATA *v); void formula54 (CDATA *v); void formula55 (CDATA *v); void formula56 (CDATA *v); void formula57 (CDATA *v); void formula58 (CDATA *v); void formula59 (CDATA *v); void formula60 (CDATA *v); void initimage00 (CDATA *v); void initpixel41 (CDATA *v); void initpixel42 (CDATA *v); void initpixel43 (CDATA *v); void initpixel44 (CDATA *v); void initpixel45 (CDATA *v); void initpixel46 (CDATA *v); void initpixel47 (CDATA *v); void initpixel48 (CDATA *v); void initpixel49 (CDATA *v); void initpixel50 (CDATA *v); void initpixel51 (CDATA *v); void initpixel52 (CDATA *v); void initpixel53 (CDATA *v); void initpixel54 (CDATA *v); void initpixel55 (CDATA *v); void initpixel56 (CDATA *v); void initpixel57 (CDATA *v); void initpixel58 (CDATA *v); void initpixel59 (CDATA *v); void initpixel60 (CDATA *v); //////////////////////////////////////////// typedef struct { // info structure void (*initimage) (CDATA *v); // image initialize void (*initpixel) (CDATA *v); // pixel initialize void (*action) (CDATA *v); // action iteration char *title; // for selection purposes char *description; // identification string(allocated by dll) }INFO; INFO Info[FORMULA_TOTAL] = { initimage00,initpixel41,formula41,"41 z=z-(z*z2*c-z-1)/(3*z2*c-z);"," ", initimage00,initpixel42,formula42,"42 z=z-(z*z2*c-z*c-1)/(3*z2*c-z);"," ", initimage00,initpixel43,formula43,"43 z=z-(z*z2*c-z2-1)/(3*z2*c-3*z2-3*z);"," ", initimage00,initpixel44,formula44,"44 z=z-(z*z2*c-z2*c-1)/(3*z2*c-z*c-z);"," ", initimage00,initpixel45,formula45,"45 z=(z-(z*z2-z)/(3*z2-1)); z=z*z*c;"," ", initimage00,initpixel46,formula46,"46 z=cos(z*c)*c;"," ", initimage00,initpixel47,formula47,"47 test"," ", initimage00,initpixel48,formula48,"48 z=log(sin(z*z))+c "," ", initimage00,initpixel49,formula49,"49 z=z*z*sin(__real__ z)+c*z*cos(__imag__ z)+c; "," ", initimage00,initpixel50,formula50,"50 init c=cos_c(); iterate z=sin(z)*c; "," ", initimage00,initpixel51,formula51,"51 z=c*sin(z*z*z*z); "," ", initimage00,initpixel52,formula52,"52 6th order NMSet, init z=-(3*z)/4; iterate z=z-(z4*z4+z4*z2*z1*c-z)/(8*z4*z2*z1+7*z4*z2*c - 1); "," ", initimage00,initpixel53,formula53,"53 6th order NMSet, init z=-(2*z)/3, iterate z=z-(z4*z2+z4*z*c-1)/(6*z4*z+5*z2*z2*c); "," ", initimage00,initpixel54,formula54,"54 15th order NMSet, init z = -(13*z)/15; iterate z=z-(z12*z2*z+z12*z2*c-z)/(15*z12*z2+14*z12*z*c-1);"," ", initimage00,initpixel55,formula55,"55 Newtons apple, init z = 1/(4*z); iterate z=z-(4*z2*z*c-3*z2-2*z)/(12*z2*c-6*z-2);"," ", initimage00,initpixel56,formula56,"56 25th order NMSet, init z = -(23*z)/25; iterate z=z-(z24*z+z24*c-z)/(25*z24+24*z12*z8*z2*z*c-1);"," ", initimage00,initpixel57,formula57,"57 38th order NMSet, init z = -(18*z)/19; iterate z=z-(z36*z2+z36*z*c-z)/(38*z36*z+37*z36*c-1); "," ", initimage00,initpixel58,formula58,"58 50th order NMSet, init z = -(24*z)/25; iterate z=z-(z48*z2+z48*z*c-z)/(50*z48*z+49*z48*c-1);"," ", initimage00,initpixel59,formula59,"59 6th order NMSet, init z = -1/(2*z); iterate z=z-(6*z4*z*c+5*z4-1)/(30*z4*c+20*z2*z);"," ", initimage00,initpixel60,formula60,"60 19th order NMSet, init z = -4896/(5814*z); iterate z=z-(19*z16*z2*c+18*z16*z-z)/(342*z16*z*c + 306*z16-1);"," " } ; int Formula_Total() { return FORMULA_TOTAL; } void post00 (CDATA *v) { } // does nothing in the formula DLL void initimage00 (CDATA *v) { } void initpixel41 (CDATA *v) { //z = 1; c = v->c; c = csin_c(); //v->z = z; } //MessageBox(NULL, "step 1", "bug", MB_OK); //////////////////////////////////// void formula41(CDATA *v) { //MessageBox(NULL, "step 1", "bug", MB_OK); z = v->z; z2 = z*z; z = z - (z*z2 - 1 - csin_z())/(3*z2*c - ccos_z()); v->z = z; } ///////////////////////////// void initpixel42 (CDATA *v) { c = v->c; //z = ctan_c() + 1; } void formula42(CDATA *v) { z = v->z; z2 = z*z; z=z-(z*z2*c-z*c-1+csin_z())/(3*z2*c-z-ccos_z()); v->z = z; } //////////////////////////////////// void initpixel43 (CDATA *v) { c = v->c; c = csin_c(); } void formula43(CDATA *v) { z = v->z; z2 = z*z; z=z-(z*z2*c-z2 + csin_z())/(3*z2*c-3*z2-3*z + ccos_z()); v->z = z; } //////////////////////////////////// void initpixel44 (CDATA *v) { c = v->c; c = ccos_c(); } void formula44(CDATA *v) { z = v->z; z2 = z*z; z = z-(z*z2*c-z2*c + csin_z())/(3*z2* c - z * c-z + ccos_z()); v->z = z; } //////////////////////////////////// void initpixel45 (CDATA *v) { c = v->c; } void formula45(CDATA *v) { z = v->z; z2=z*z; z=(z-(z*z2-z-csin_z())/(3*z2-1-ccos_z())); z=z*z*c; v->z = z; } //////////////////////////////////// void initpixel46 (CDATA *v) { c = v->c; } void formula46(CDATA *v) { z = v->z; z2 = z*z; z3 = z2*z; z4 = z2*z2; z5 = z4*z; sine_cosine(); z = z-(z5*zsin-z4*zsin-zsin*z*c-z)/(5*z4*zcos-z4*zcos-zcos*z*c-1); v->z = z; } //////////////////////////////////// void initpixel47 (CDATA *v) { //c = v->c; c = v->c; //c = c*cexp_c(); z = v->z; //v->z += 1; //c2 = csin_z(); } void formula47(CDATA *v) { // z2 = z; // z1 = ((z*z).csin())*z/2; // z = z1*z1 + c; z = v->z; zexp = cexp_z(); sine_cosine(); z2 = z*z; //z3 = z2*z; //z4 = z2*z2; //v->z = z - (zsin - zsin*c)/(zcos - c); //v->z = z - (z*zsin-zsin)/(z*zcos-zcos-c); //v->z = z - (z*z - c - zsin)/(2*z*z*zcos); //v->z = z - (zsin + c + clog_z())/(zcos + 1/z); //z = z - ((z3+z2+z*zsin)/(2*z2+2*z+zcos) + c); //v->z = z-(z4-zsin*cexp_z())/(4*z2-zcos)+c; //v->z = z-(z4-z3+zsin*cexp_z()+c)/(4*z-3*z2+zcos*cexp_z()); //v->z = z-((z4-z*zexp+z)/(4*z3-zexp*zcos)+c); //v->z = z - (zexp-zsin-c)/(zexp-zcos-1); // fltz4171-07-16-21.bmp //zexp += (c*z); // fltz4171-07-18-04.bmp (1) //v->z = z - (zexp+zsin+c)/(zexp+zcos); // fltz4171-07-18-04.bmp (2) //zexp += c; // fltz4171-07-18-06.bmp (1) //zsin += c; //zcos += c; //v->z = z - (zsin-zexp-clog_z())/(zcos-zexp); // fltz4171-07-18-06.bmp (4) //zexp += c; // fltz4171-07-18-06.bmp (1) //zsin += c; //zcos += c; //v->z = z - (zsin-zexp + z + c)/(zcos-zexp + z); // fltz4171-07-18-06.bmp (4) //zexp; //zsin += z; //zcos += z; v->z = z - (zsin - zexp - c)/(zcos-zexp-1); //zexp += zexp; //zsin += zsin; //zcos += zcos; //v->z = z - (z-zexp-zsin)/(zexp-zcos-z); //v->z = z; } //////////////////////////////////// void initpixel48 (CDATA *v) { c = v->c; } void formula48(CDATA *v) { z = v->z; z=z*z; z=csin_z(); z=clog_z(); z=z+c; v->z = z; } //////////////////////////////////// void initpixel49 (CDATA *v) { c = v->c; } void formula49(CDATA *v) { z = v->z; z = z*z*sin(__real__ z) + c*z*cos(__imag__ z) + c; v->z = z; } //////////////////////////////////// void initpixel50 (CDATA *v) { c = v->c; c=ccos_c(); } void formula50 (CDATA *v) { z = v->z; // z=csin(z)*ccos(c); z=csin_z(); z=z*c; v->z = z; } //////////////////////////////////// void initpixel51 (CDATA *v) { c = v->c; } void formula51 (CDATA *v) { z = v->z; // z=c*csin(z*z*z*z); z=z*z; z=z*z; z=csin_z(); z=z*c; v->z = z; } //////////////////////////////////// void initpixel52 (CDATA *v) { /* Solve the roots of the function. Initialize z to one of the roots. Apply Newton's method for solving roots. z = z - f(z)/f(z') z = z^8 + z^7*c - z; // the function z' = 8*z^7 + 7*(z^6)*c - 1; // 1st derivative z'' = 7*8*(z^6) + 7*6*(z^5)*c; // 2nd derivative 7*8*(z^6) = -7*6*(z^5)*c; z = -(6*(z^5)*c)/(8*(z^5)); z = -(6*c)/8; z = -(3*c)/4; */ z = v->z; v->z = -(3*z)/4; c = z; } void formula52 (CDATA *v) { z = v->z; z2 = z*z; z4 = z2*z2; z = z-(z4*z4 + z4*z2*z1 - 1 - csin_z())/(8*z4*z2*z1 + 7*z4*z2*c - ccos_z()); v->z = z; } //////////////////////////////////// void initpixel53 (CDATA *v) { /* Solve the roots of the function. Initialize z to one of the roots. Apply Newton's method for solving roots. z = z - f(z)/f(z') z = (z^6) + (z^5)*c - 1; // the function z' = 6*(z^5) + 5*(z^4)*c; // 1st derivative z'' = 30*(z^4) + 20*(z^3)*c; // 2nd derivative 30*(z^3) = -20*(z^3)*c; z = -20*c/30; z = -2*c/3; */ c = v->c; z = v->z; z = -(2*z)/3; z = z; } void formula53 (CDATA *v) { z = v->z; z2 = z*z; z4 = z2*z2; z = z-(z4*z2 + z4*z*c + csin_z())/(6*z4*z + 5*z2*z2*c + ccos_z()); v->z = z; } //////////////////////////////////// void initpixel54 (CDATA *v) { /* Solve the roots of the function. Initialize z to one of the roots. Apply Newton's method for solving roots. z = z - f(z)/f(z') z = z^15 + z^14*c - z; // the function z' = 15*z^14 + 14*(z^13)*c - 1; // 1st derivative z'' = 15*14*(z^13) + 14*13*(z^12)*c; // 2nd derivative 15*14*(z^13) = -14*13*(z^12)*c; z = -(13*(z^12)*c)/(15*(z^12)); z = -(13*c)/15; z = -(13*c)/15; */ c = v->c; z = v->z; z = -(13*z)/15; v->z = z; } void formula54 (CDATA *v) { z = v->z; z2 = z*z; z4 = z2*z2; z8 = z4*z4; z12= z8*z4; z = z-(z12*z2*z + z12*z2*c - z)/(15*z12*z2 + 14*z12*z*c - 1); v->z = z; } //////////////////////////////////// void initpixel55 (CDATA *v) { /* // A derivation of Newtons apple Solve the roots of the function. Initialize z to one of the roots. Apply Newton's method for solving roots. z = z - f(z)/f(z') z = (z^4)*c - z^3 - z^2; // the function z' = 4*(z^3)*c - 3*(z^2) - 2*z; // 1st derivative z'' = 12*(z^2)*c - 6*z - 2; // 2nd derivative z'' = 24*z*c - 6; // 3rd derivative 24*z*c = 6; z = 6/24*c z = 1/(4*c) */ z = v->z; z = 1/(4*z); v->z = z; c = v->c; } void formula55 (CDATA *v) { // A derivation of Newtons apple z = v->z; z2 = z*z; z4 = z2*z2; z = z-(4*z2*z*c - 3*z2 - 2*z)/(12*z2*c - 6*z - 2); v->z = z; } //////////////////////////////////// void initpixel56 (CDATA *v) { /* Solve the roots of the function. Initialize z to one of the roots. Apply Newton's method for solving roots. z = z - f(z)/f(z') z = z^25 + z^24*c - z; // the function z' = 25*z^24 + 24*(z^23)*c - 1; // 1st derivative z'' = 25*24*(z^23) + 24*23*(z^22)*c; // 2nd derivative 25*24*(z^23) = -24*23*(z^22)*c; z = -(23*(z^22)*c)/(25*(z^22)); z = -(23*c)/25; z = -(23*c)/25; */ z = v->z; z = -(23*z)/25; v->z = z; c = v->c; } void formula56 (CDATA *v) { z = v->z; z2 = z*z; z4 = z2*z2; z8 = z4*z4; z12 = z8*z4; z24 = z12*z12; z = z-(z24*z + z24*c - z)/(25*z24 + 24*z12*z8*z2*z*c - 1); v->z = z; } //////////////////////////////////// void initpixel57 (CDATA *v) { /* Solve the roots of the function. Initialize z to one of the roots. Apply Newton's method for solving roots. z = z - f(z)/f(z') z = z^38 + z^37*c - z; // the function z' = 38*z^37 + 37*(z^36)*c - 1; // 1st derivative z'' = 38*37*(z^36) + 37*36*(z^35)*c; // 2nd derivative 38*37*(z^36) = -37*36*(z^35)*c; z = -(36*(z^35)*c)/(38*(z^35)); z = -(36*c)/38; z = -(18*c)/19; */ z = v->z; z = -(18*z)/19; v->z = z; c = v->c; } void formula57 (CDATA *v) { z = v->z; z2 = z*z; z4 = z2*z2; z8 = z4*z4; z12 = z8*z4; z24 = z12*z12; z36 = z24*z12; z = z-(z36*z2 + z36*z*c - z)/(38*z36*z + 37*z36*c - 1); v->z = z; } //////////////////////////////////// void initpixel58 (CDATA *v) { /* Solve the roots of the function. Initialize z to one of the roots. Apply Newton's method for solving roots. z = z - f(z)/f(z') z = z^50 + z^49*c - z; // the function z' = 50*z^49 + 49*(z^48)*c - 1; // 1st derivative z'' = 50*49*(z^48) + 49*48*(z^47)*c; // 2nd derivative 50*49*(z^48) = -49*48*(z^47)*c; z = -(48*(z^47)*c)/(50*(z^47)); z = -(48*c)/50; z = -(24*c)/25; */ z = v->z; z = -(24*z)/25; v->z = z; c = v->c; } void formula58 (CDATA *v) { z = v->z; z2 = z*z; z4 = z2*z2; z8 = z4*z4; z12 = z8*z4; z24 = z12*z12; //z36 = z24*z12; z48 = z24*z24; z = z-(z48*z2 + z48*z*c - z)/(50*z48*z + 49*z48*c - 1); v->z = z; } //////////////////////////////////// void initpixel59 (CDATA *v) { /* Solve the roots of the function. Initialize z to one of the roots. Apply Newton's method for solving roots. z = z - f(z)/f(z') z' = 6*(z^5)*c + 5*(z^4) - 1; z'' = 30*(z^4)*c + 20*(z^3); z'' = 120*(z^3)*c + 60*(z^2); 120*(z^3)*c = -60*(z^2); z = -60/120*c z = -1/(2*c) */ z = v->z; z = -1/(2*z); v->z = z; c = v->c; } void formula59 (CDATA *v) { z = v->z; z2 = z*z; z4 = z2*z2; z = z-(6*z4*z*c + 5*z4 - 1)/(30*z4*c + 20*z2*z); v->z = z; } //////////////////////////////////// void initpixel60 (CDATA *v) { /* Solve the roots of the function. Initialize z to one of the roots. Apply Newton's method for solving roots. z = z - f(z)/f(z') z' = 19*(z^18)*c + 18*(z^17); z'' = 342*(z^17)*c + 306*(z^16); z'' = 5814*(z^16)*c + 4896*(z^15); 5814*(z^16)*c = -4896*(z^15); z = -4896/(5814*c); */ z = v->z; z = -4896/(5814*z); v->z = z; c = v->c; } void formula60 (CDATA *v) { z = v->z; z2 = z*z; z4 = z2*z2; z8 = z4*z4; z16 = z8*z8; z = z-(19*z16*z2*c + 18*z16*z - z)/(342*z16*z*c + 306*z16 - 1); v->z = z; }