#include #include #include #include long double B01LogFromE( long double x, long double k ); long double A02LogFromE( long double x, long double k ); long double A03LogFromE( long double x, long double k ); long double B10LogFromE( long double x, long double k ); int main(int argc, char **argv) { long double x; long double k = 2.; char pszString[256] = "2"; if ( argc < 2 ) { printf( "Enter a number to find logarithm base e of:" ); fgets( pszString, sizeof( pszString ), stdin ); puts( pszString ); } else strncpy( pszString, argv[1], sizeof( pszString ) ); k = atof( pszString ); x = logl( k ); /* CORRECT ANSWER */ printf("k = %30.20LeL\nanswer = %30.20LeL\n", k, logl( k ) ); x = logl( k ) * 1.00001; /* form a extimate correct to 5 digits */ printf( "B01LogFromE = %30.20LeL\n", B01LogFromE( x, k ) ); printf( "A02LogFromE = %30.20LeL\n", A02LogFromE( x, k ) ); printf( "A03LogFromE = %30.20LeL\n", A03LogFromE( x, k ) ); printf( "B10LogFromE = %30.20LeL\n", B10LogFromE( x, k ) ); return 0; } long double B01LogFromE( long double x, long double k ) { return ( k * x - expl( x ) + k ) / k; } long double A02LogFromE( long double x, long double k ) { long double ex = expl( x ); return x + 2. * ( -ex + k ) / ( ex + k ); } long double A03LogFromE( long double x, long double k ) { long double ex = expl( x ); long double ex2 = ex * ex; long double k2 = k * k; long double term = 4.0 * ex * k + ex2 + k2; return ( x * term - 3.0 * ex2 + 3.0 * k2 ) / term; } long double B10LogFromE(long double x, long double k) { long double t19 = exp(x); long double t13 = t19*t19; long double t38 = t13*t19; long double t51 = t38*t19; long double t10 = t51*t19; long double t1 = t10*t19; long double t59 = t1*t19; long double t26 = t59*t19; long double t148 = t26*t19; long double t148 = t13*t19; long double t2 = x * t1; long double t3 = k * k; long double t4 = t3 * k; long double t6 = x * x; long double t7 = t6 * t6; long double t8 = t3 * t3; long double t12 = t7 * t7; long double t14 = t12 * t13; long double t15 = t8 * t4; long double t17 = t7 * t13; long double t20 = t7 * t19; long double t21 = t8 * t8; long double t23 = t7 * x; long double t24 = t23 * t1; long double t27 = t6 * t26; long double t29 = t12 * x; long double t30 = t29 * t10; long double t32 = t6 * x; long double t33 = t7 * t32; long double t34 = t33 * t1; long double t36 = t21 * k; long double t39 = t8 * t3; long double t41 = t7 * t38; long double t44 = t7 * t26; long double t46 = t7 * t1; long double t48 = t7 * t6; long double t49 = t48 * t38; long double t52 = x * t51; long double t53 = t8 * k; long double t56 = t32 * t38; long double t60 = t7 * t59; long double t62 = -304819200.0 * t38 * t39 + 175271040.0 * t41 * t39 + 3240.0 * t33 * t36 - 3810240.0 * t44 * k + 129548160.0 * t46 * t4 - 26248320.0 * t49 * t39 + 1143072000.0 * t52 * t53 + 60480.0 * t48 * t36 + 431827200.0 * t56 * t39 + 635040.0 * t23 * t36 - 22861440.0 * t60 * t3; long double t66 = t32 * t26; long double t70 = t48 * t19; long double t72 = t32 * t13; long double t74 = t32 * t1; long double t76 = t32 * t10; long double t79 = t6 * t38; long double t81 = 12700800.0 * t32 * t36 + 90.0 * t12 * t36 + 12700800.0 * t66 * k + t29 * t36 + 3810240.0 * t7 * t36 + 3265920.0 * t70 * t21 - 101606400.0 * t72 * t15 - 101606400.0 * t74 * t4 + 431827200.0 * t76 * t8 + 21772800.0 * t6 * t36 - 304819200.0 * t79 * t39; long double t82 = t6 * t13; long double t84 = t6 * t59; long double t86 = t6 * t1; long double t89 = x * t59; long double t91 = t12 * t19; long double t93 = t32 * t51; long double t96 = t32 * t19; long double t99 = x * t26; long double t101 = 304819200.0 * t82 * t15 + 130636800.0 * t84 * t3 - 304819200.0 * t86 * t4 + 16329600.0 * x * t36 - 130636800.0 * t89 * t3 + 22140.0 * t91 * t21 - 635040000.0 * t93 * t53 + 304819200.0 * t1 * t4 - 25401600.0 * t96 * t21 + 457228800.0 * t51 * t53 + 16329600.0 * t99 * k; long double t105 = t23 * t38; long double t109 = x * t13; long double t111 = x * t38; long double t116 = x * t10; long double t118 = t29 * t38; long double t120 = t48 * t26; long double t122 = 32659200.0 * t26 * k - 54613440.0 * t105 * t39 - 457228800.0 * t10 * t8 - 32659200.0 * t19 * t21 + 457228800.0 * t109 * t15 - 914457600.0 * t111 * t39 - 130636800.0 * t59 * t3 + 304819200.0 * t6 * t8 * t10 - 914457600.0 * t116 * t8 + 88234.0 * t118 * t39 - 60480.0 * t120 * k; long double t123 = t33 * t59; long double t125 = t23 * t10; long double t127 = t29 * t59; long double t129 = t29 * t13; long double t131 = t32 * t59; long double t133 = t29 * t51; long double t137 = t29 * t1; long double t140 = t12 * t1; long double t142 = t12 * t26; long double t144 = 382320.0 * t123 * t3 - 54613440.0 * t125 * t8 + 502.0 * t127 * t3 + 14608.0 * t129 * t15 - 25401600.0 * t131 * t3 + 156190.0 * t133 * t53 - 1019340.0 * t12 * t8 * t10 + 14608.0 * t137 * t4 + 130636800.0 * t13 * t15 - 364140.0 * t140 * t4 - 90.0 * t142 * k; long double t146 = t12 * t59; long double t149 = t29 * t26; long double t151 = t12 * t38; long double t153 = t33 * t26; long double t155 = t33 * t51; long double t157 = t33 * t38; long double t159 = t33 * t13; long double t161 = t33 * t10; long double t163 = t48 * t1; long double t165 = t48 * t59; long double t167 = -22140.0 * t146 * t3 - 3628800.0 * t148 + t149 * k + 1019340.0 * t151 * t39 + 3240.0 * t153 * k - 7938000.0 * t155 * t53 + 498960.0 * t157 * t39 + 3084480.0 * t159 * t15 + 498960.0 * t161 * t8 - 8104320.0 * t163 * t4 - 3265920.0 * t165 * t3; long double t168 = x * t19; long double t170 = t6 * t19; long double t172 = t29 * t19; long double t174 = t48 * t13; long double t176 = t33 * t19; long double t178 = t23 * t19; long double t180 = t23 * t51; long double t182 = t23 * t26; long double t184 = t23 * t59; long double t186 = t23 * t13; long double t190 = -130636800.0 * t168 * t21 - 130636800.0 * t170 * t21 + 502.0 * t172 * t21 + 8104320.0 * t174 * t15 + 382320.0 * t176 * t21 + 13970880.0 * t178 * t21 + 120657600.0 * t180 * t53 + 635040.0 * t182 * k + 13970880.0 * t184 * t3 - 20321280.0 * t186 * t15 + 26248320.0 * t48 * t8 * t10; long double t211 = 1410600.0 * t129 * t21 - 411505920.0 * t186 * t21 - 2103252480.0 * t125 * t53 - 1460592000.0 * t7 * t51 * t39 + 2540160000.0 * t46 * t8 + 411505920.0 * t184 * t4 + 158760000.0 * t20 * t36 - 326592000.0 * t168 * t36 + 992250.0 * t91 * t36 + 56095200.0 * t70 * t36 - 435456000.0 * t72 * t21 - 601171200.0 * t49 * t15 + 459345600.0 * t48 * t10 * t53; long double t212 = t12 * t6; long double t233 = t212 * t148 * k + 1310354.0 * t212 * t10 * t53 + 47840.0 * t212 * t59 * t4 - 1270080000.0 * t17 * t21 + 1013.0 * t212 * t26 * t3 + 47840.0 * t212 * t13 * t21 - 571536000.0 * t170 * t36 - 36288000.0 * t19 * t36 - 914457600.0 * t10 * t53 + 7362600.0 * t118 * t15 + 3048192000.0 * t56 * t15 - 7620480.0 * t23 * t148 * k - 36288000.0 * t148 * k + 762048000.0 * t51 * t39; long double t253 = -1270080000.0 * t60 * t4 + 81648000.0 * t6 * t148 * k + 1632960000.0 * t84 * t4 + 29484000.0 * t151 * t15 + 1013.0 * t212 * t19 * t36 + 1143072000.0 * t6 * t10 * t53 + 3628800.0 * t0 + 160030080.0 * t178 * t36 + 84672000.0 * t165 * t4 - 45870300.0 * t12 * t10 * t53 + 10108800.0 * t176 * t36 + 50100.0 * t172 * t36 + 435456000.0 * t131 * t4 + 1632960000.0 * t82 * t21; long double t272 = 455192.0 * t212 * t38 * t15 + 4572288000.0 * t52 * t39 - 217728000.0 * t96 * t36 + 2103252480.0 * t180 * t39 + 31752000.0 * t7 * t148 * k - 160030080.0 * t182 * t3 + 15390000.0 * t14 * t21 + 1143072000.0 * t6 * t51 * t39 - 50100.0 * t149 * t3 + 326592000.0 * t99 * t3 - 68947200.0 * t157 * t15 - 6096384000.0 * t93 * t39 - 72576000.0 * t32 * t148 * k + 56095200.0 * t120 * t3; long double t280 = t21 * t3; long double t292 = 3048192000.0 * t2 * t8 - 86400.0 * t33 * t148 * k - 100.0 * t29 * t148 * k + 100.0 * t29 * t280 + 15390000.0 * t146 * t4 + t212 * t280 - 6795600.0 * t30 * t53 - 36288000.0 * x * t148 * k + 217728000.0 * t66 * t3 + 1058400.0 * t48 * t280 + 4050.0 * t12 * t280 + 3628800.0 * t280 - 411505920.0 * t105 * t15 + 86400.0 * t33 * t280; long double t308 = 68947200.0 * t34 * t8 + 36288000.0 * x * t280 + 81648000.0 * t6 * t280 + 7620480.0 * t23 * t280 + 72576000.0 * t32 * t280 + 31752000.0 * t7 * t280 + 2540160000.0 * t41 * t15 + 1306368000.0 * t109 * t21 - 3048192000.0 * t111 * t15 - 4572288000.0 * t116 * t53 + 4050.0 * t12 * t148 * k + 992250.0 * t142 * t3 + 29484000.0 * t140 * t8 + 762048000.0 * t1 * t8; long double t326 = -2286144000.0 * t79 * t15 + 411505920.0 * t24 * t8 - 435456000.0 * t59 * t4 - 601171200.0 * t163 * t8 + 163296000.0 * t26 * t3 - 1306368000.0 * t89 * t4 - 435456000.0 * t38 * t15 - 7362600.0 * t137 * t8 + 459345600.0 * t48 * t51 * t39 - 10108800.0 * t153 * t3 + 6795600.0 * t133 * t39 + 1310354.0 * t212 * t51 * t39 - 72057600.0 * t123 * t4 + 224985600.0 * t161 * t53; long double t345 = -224985600.0 * t155 * t39 - 45870300.0 * t12 * t51 * t39 - 1460592000.0 * t7 * t10 * t53 + 6096384000.0 * t76 * t53 - 2286144000.0 * t86 * t8 + 163296000.0 * t13 * t21 + 84672000.0 * t174 * t21 + 1058400.0 * t48 * t148 * k - 571536000.0 * t27 * t3 - 1410600.0 * t127 * t4 + 455192.0 * t212 * t1 * t8 + 158760000.0 * t44 * t3 + 72057600.0 * t159 * t21 - 3048192000.0 * t74 * t8; return x + 10.0 * x * (457228800.0 * t2 * t4 - 175271040.0 * t7 * t8 * t10 + 364140.0 * t14 * t15 - 129548160.0 * t17 * t15 + 22861440.0 * t20 * t21 - 20321280.0 * t24 * t4 - 21772800.0 * t27 * k + 88234.0 * t30 * t8 + 3084480.0 * t34 * t4 + 3628800.0 * t36 + t62 + t81 + t101 + t122 + t144 + t167 + t190) * (-t19 + k) / (t211 + t233 + t253 + t272 + t292 + t308 + t326 + t345); }