fork(1) download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4.  
  5. int a, b;
  6. int mm, nn;
  7. int t;
  8.  
  9. float pi = 3.1415926535897932384626433832795;
  10. float pi7 = 0.4487989505128276054946633404685;
  11. float r7 = 2.6457513110645905905016157536393;
  12.  
  13. float sn2, sn4, sn8;
  14. float cs2, cs4, cs8;
  15. float tn2, tn4, tn8;
  16.  
  17. float alpha, beta, gamma;
  18.  
  19.  
  20. #define MAX 128
  21. typedef char Str[MAX];
  22.  
  23. ///////////////////////////////
  24. int ct = 1;
  25.  
  26.  
  27.  
  28.  
  29. int cvt(float x) {
  30. if (x > 0.0)
  31. return (int)(x+0.9);
  32. if (x < 0.0)
  33. return (int)(x-0.9);
  34.  
  35. return 0;
  36. }
  37.  
  38.  
  39. float xabs(float x) {
  40. if (x < 0.0)
  41. return -x;
  42. return x;
  43. }
  44.  
  45. float croot(float num) {
  46. int flag = 1.0;
  47. float x;
  48. if (num < 0.0) {
  49. flag = -1.0;
  50. num = -num;
  51. }
  52. x = flag * exp(log(num)/3.0);
  53.  
  54. // printf("croot: num = %f, x = %f\n", num, x);
  55.  
  56. return x;
  57. }
  58.  
  59. float xsqrt(float num) {
  60. int flag = 1.0;
  61. float x;
  62. if (num < 0.0) {
  63. flag = -1.0;
  64. num = -num;
  65. }
  66. x = flag * exp(log(num)/2.0);
  67.  
  68. // printf("croot: num = %f, x = %f\n", num, x);
  69.  
  70. return x;
  71. }
  72.  
  73. float pwrf(float f, int p) {
  74. int i, neg;
  75. float x = 1.0;
  76.  
  77. if (p == 0)
  78. return 1.0;
  79.  
  80. neg = 0;
  81. if (p < 0) {
  82. neg = 1;
  83. p = -p;
  84. }
  85.  
  86. for (i=0; i< p; i++)
  87. x = x*f;
  88.  
  89. if (neg == 1)
  90. x = 1.0/x;
  91.  
  92. return x;
  93. }
  94.  
  95. int isInt(float x) {
  96. float y = 1.0*cvt(x);
  97.  
  98. if (xabs(x-y) < 0.01)
  99. return 1;
  100.  
  101. return 0;
  102. }
  103.  
  104. //////////////////////////////
  105. int toInt(float x) {
  106. float y;
  107. int u;
  108.  
  109. if (x > 0.1) {
  110. y = x+0.1;
  111. }
  112. else if (x < 0.1) {
  113. y = x-0.1;
  114. }
  115. else
  116. y = 0.0;
  117.  
  118. u = (int)(y);
  119.  
  120.  
  121.  
  122. return u;
  123. }
  124.  
  125.  
  126.  
  127.  
  128. // p >= 0
  129. int pwri(int f, int p) {
  130. int i;
  131. int x = 1;
  132.  
  133. if (p == 0)
  134. return 1;
  135.  
  136.  
  137. for (i=0; i< p; i++)
  138. x = x*f;
  139.  
  140. return x;
  141. }
  142.  
  143.  
  144. void make_eq(int a, int b, int c, Str eq){
  145.  
  146. sprintf(eq, "x^3");
  147. if (a < -1) {
  148. sprintf(eq, "%s - %d x^2", eq, -a);
  149. }
  150. else if (a == -1) {
  151. sprintf(eq, "%s - x^2", eq);
  152. }
  153. else if (a > 1) {
  154. sprintf(eq, "%s + %d x^2", eq, a);
  155. }
  156. else if (a == 1) {
  157. sprintf(eq, "%s + x^2", eq);
  158. }
  159.  
  160. if (b < -1) {
  161. sprintf(eq, "%s - %d x", eq, -b);
  162. }
  163. else if (b == -1) {
  164. sprintf(eq, "%s - x^2", eq);
  165. }
  166. else if (b > 1) {
  167. sprintf(eq, "%s + %d x^2", eq, b);
  168. }
  169. else if (b == 1) {
  170. sprintf(eq, "%s + x^2", eq);
  171. }
  172.  
  173.  
  174. if (c < -1) {
  175. sprintf(eq, "%s - %d", eq, -c);
  176. }
  177. else if (c == -1) {
  178. sprintf(eq, "%s - 1", eq);
  179. }
  180. else if (c > 1) {
  181. sprintf(eq, "%s + %d", eq, c);
  182. }
  183. else if (c == 1) {
  184. sprintf(eq, "%s + 1", eq);
  185. }
  186.  
  187.  
  188. sprintf(eq, "%s = 0", eq);
  189.  
  190.  
  191. }
  192.  
  193.  
  194. //////////////////////////////////////////////
  195.  
  196. int tt(int k) {
  197. int x;
  198. x = k*k*k - 3*(a+b+3)*k-(a*b + 6*(a + b) + 9);
  199. return x;
  200. }
  201.  
  202.  
  203. void print_abg(){
  204.  
  205. printf("\\alpha = \\frac{(2\\cos(2\\theta)^%d}{(2\\cos(4\\theta)^%d},\n", mm, nn);
  206. printf("\\beta = \\frac{(2\\cos(4\\theta)^%d}{(2\\cos(8\\theta)^%d},\n", mm, nn);
  207. printf("\\gamma = \\frac{(2\\cos(8\\theta)^%d}{(2\\cos(2\\theta)^%d}.\n", mm, nn);
  208.  
  209. }
  210.  
  211.  
  212. void process(int sel) {
  213. int k, t;
  214. int x, y;
  215. Str eq;
  216.  
  217. if (sel == 1) {
  218. if ((a+b+3) == 0) {
  219. x = a*b-9;
  220.  
  221. make_eq(-a, b, -1, eq);
  222.  
  223.  
  224.  
  225. printf("\\begin{theorem} \\label{tmn_%d_%d} \n", mm, nn);
  226. printf("Let \n");
  227. printf("$$\n");
  228. print_abg();
  229. printf("$$\n");
  230.  
  231.  
  232. printf("Then $ \\{ \\alpha, \\beta, \\gamma \\} $ are roots of the equation:\n");
  233.  
  234. printf("\\begin{equation} \\label{emn_%d_%d} \n", mm, nn);
  235. printf("%s\n", eq);
  236. printf("\\end{equation} \n");
  237. printf("which satisfies Rammnujan condition. \n");
  238. printf("And \n");
  239.  
  240. if (x >= 0) {
  241. printf("\\begin{equation} \\label{fmn_%d_%d} \n", mm, nn);
  242. printf("\\sqrt[3]{\\alpha} + \\sqrt[3]{\\beta} + \\sqrt[3]{\\gamma} = \n");
  243. printf("\\sqrt[3]{%d + 3\\sqrt[3]{%d}} \n", a+6, x);
  244. printf("\\end{equation} \n");
  245. printf("\\begin{equation} \\label{gmn_%d_%d} \n", mm, nn);
  246. printf("\\frac{1}{\\sqrt[3]{\\alpha}} + \\frac{1}{\\sqrt[3]{\\beta}} + \\frac{1}{\\sqrt[3]{\\gamma}} = \n");
  247. printf("\\sqrt[3]{%d + 3\\sqrt[3]{%d}} \n", b+6, x);
  248. printf("\\end{equation} \n");
  249. }
  250.  
  251. else {
  252. printf("\\begin{equation} \\label{fmn_%d_%d} \n", mm, nn);
  253. printf("\\sqrt[3]{\\alpha} + \\sqrt[3]{\\beta} + \\sqrt[3]{\\gamma} = \n");
  254. printf("\\sqrt[3]{%d - 3\\sqrt[3]{%d}} \n", a+6, -x);
  255. printf("\\end{equation} \n");
  256. printf("\\begin{equation} \\label{gmn_%d_%d} \n", mm, nn);
  257. printf("\\frac{1}{\\sqrt[3]{\\alpha}} + \\frac{1}{\\sqrt[3]{\\beta}} + \\frac{1}{\\sqrt[3]{\\gamma}} = \n");
  258. printf("\\sqrt[3]{%d - 3\\sqrt[3]{%d}} \n", b+6, -x);
  259. printf("\\end{equation} \n");
  260. }
  261.  
  262. printf("\\end{theorem}\n\n");
  263.  
  264.  
  265. return;
  266. }
  267. }
  268.  
  269. if (sel == 2) {
  270. for (k = -1000; k<= 1000; k++) {
  271. if (tt(k) == 0) {
  272. t = k;
  273.  
  274. // printf("(%3d,%3d}: a = %6d, b = %6d, t = %6d \n", mm, nn, a, b, t);
  275.  
  276. // sum a = \sqrt[3]{a+6+3t},
  277. // sum b = \sqrt[3]{b+6+3t},
  278. x = a+6+3*t;
  279. y = b+6+3*t;
  280.  
  281. make_eq(-a, b, -1, eq);
  282.  
  283.  
  284. printf("\\begin{theorem} \\label{tmn_%d_%d} \n", mm, nn);
  285. printf("Let \n");
  286. printf("$$\n");
  287. print_abg();
  288. printf("$$\n");
  289.  
  290. printf("Then $ \\{ \\alpha, \\beta, \\gamma \\} $ are roots of the equation:\n");
  291.  
  292. printf("\\begin{equation} \\label{emn_%d_%d} \n", mm, nn);
  293. printf("%s\n", eq);
  294. printf("\\end{equation} \n");
  295. printf("The associatd Rammnujan equation has integer solution $ %d $. \n", t);
  296. printf("And \n");
  297.  
  298. if (x >= 0) {
  299. printf("\\begin{equation} \\label{fmn_%d_%d} \n", mm, nn);
  300. printf("\\sqrt[3]{\\alpha} + \\sqrt[3]{\\beta} + \\sqrt[3]{\\gamma} = \n");
  301. printf("\\sqrt[3]{%d} \n", x);
  302. printf("\\end{equation} \n");
  303. }
  304.  
  305. else {
  306. printf("\\begin{equation} \\label{fmn_%d_%d} \n", mm, nn);
  307. printf("\\sqrt[3]{\\alpha} + \\sqrt[3]{\\beta} + \\sqrt[3]{\\gamma} = \n");
  308. printf("-\\sqrt[3]{%d} \n", -x);
  309. printf("\\end{equation} \n");
  310. }
  311.  
  312. if (y >= 0) {
  313. printf("\\begin{equation} \\label{gmn_%d_%d} \n", mm, nn);
  314. printf("\\frac{1}{\\sqrt[3]{\\alpha}} + \\frac{1}{\\sqrt[3]{\\beta}} + \\frac{1}{\\sqrt[3]{\\gamma}} = \n");
  315. printf(" \\sqrt[3]{%d} \n", y);
  316. printf("\\end{equation} \n");
  317. }
  318.  
  319. else {
  320. printf("\\begin{equation} \\label{gmn_%d_%d} \n", mm, nn);
  321. printf("\\frac{1}{\\sqrt[3]{\\alpha}} + \\frac{1}{\\sqrt[3]{\\beta}} + \\frac{1}{\\sqrt[3]{\\gamma}} = \n");
  322. printf("-\\sqrt[3]{%d} \n", -y);
  323. printf("\\end{equation} \n");
  324. }
  325. printf("\\end{theorem}\n\n");
  326.  
  327.  
  328. /*
  329.   printf(" sum a = %f, expect: %f\n",
  330.   croot(1.0*x), croot(alpha) + croot(beta) + croot(gamma));
  331.   printf(" sum b = %f, expect: %f\n",
  332.   croot(1.0*y), croot(1.0/alpha) + croot(1.0/beta) + croot(1.0/gamma));
  333.   if (x >= 0)
  334.   printf(" sum a = \\sqrt[3]{%d} \n", x);
  335.   else
  336.   printf(" sum a = -\\sqrt[3]{%d} \n", -x);
  337.  
  338.   if (y >= 0)
  339.   printf(" sum b = \\sqrt[3]{%d} \n", y);
  340.   else
  341.   printf(" sum b = -\\sqrt[3]{%d} \n", -y);
  342. */
  343.  
  344. return;
  345. }
  346. }
  347. }
  348.  
  349. };
  350.  
  351. ////////////////////////////////////////////////////////
  352.  
  353.  
  354. void init () {
  355. sn2 = sin(2*pi7);
  356. sn4 = sin(4*pi7);
  357. sn8 = sin(8*pi7);
  358.  
  359. cs2 = cos(2*pi7);
  360. cs4 = cos(4*pi7);
  361. cs8 = cos(8*pi7);
  362.  
  363. tn2 = tan(2*pi7);
  364. tn4 = tan(4*pi7);
  365. tn8 = tan(8*pi7);
  366.  
  367.  
  368.  
  369.  
  370. }
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377. void comp_ram(int sel) {
  378.  
  379.  
  380. /*
  381. float pf, qf, rf, root, r1f, r2f;
  382. int p, q, rr, r2, r12, r22;
  383.  
  384. printf("alpha = %f\n", alpha);
  385. printf("beta = %f\n", beta);
  386. printf("gammma = %f\n", gamma);
  387.  
  388.  
  389.  
  390.  
  391. printf("***** (%d,%d) *****\n", mm, nn);
  392.  
  393.  
  394.  
  395. printf("alpha+beta+gamma = %f\n", alpha +beta+gamma);
  396. printf("alpha*beta+beta*gamma+gamma*alpha = %f\n", alpha *beta+beta*gamma+gamma*alpha );
  397. printf("alpha*beta*gamma = %f\n", alpha *beta*gamma);
  398.  
  399.  
  400. printf("alpha^(1/3) + beta^(1/3) + gamma^(1/3) = %f\n",
  401. croot(alpha) + croot(beta) + croot(gamma));
  402.  
  403. printf("(1/alpha)^(1/3) + (1/beta)^(1/3) + 1/(gamma)^(1/3) = %f\n",
  404. croot(1.0/alpha) + croot(1.0/beta) + croot(1.0/gamma));
  405.  
  406. */
  407.  
  408. a = cvt(alpha +beta+gamma);
  409. b = cvt(alpha *beta+beta*gamma+gamma*alpha);
  410.  
  411.  
  412.  
  413.  
  414.  
  415. /*
  416.  
  417. // printf("a = %d, b = %d\n", a, b);
  418.  
  419. // x = k*k*k - 3*(a+b+3)*k - (a*b + 6*(a + b) + 9);
  420.  
  421. printf("Ramanujan eq: x^3 - %d x - %d = 0 \n",
  422.  3*(a+b+3), a*b + 6*(a + b) + 9);
  423.  
  424. // x^3 + px = q = 0
  425. // Cardano formula
  426. // root = (-q/2 + (q^2/4+p^3/27)^(1/2))^(1/3) + (-q/2 - (q^2/4+p^3/27)^(1/2))^(1/3)
  427. // r = (q^2/4+p^3/27)^(1/2)
  428. p = -(3*(a+b+3));
  429. q = -(a*b + 6*(a + b) + 9);
  430.  
  431. printf("p = %d, q = %d\n", p, q);
  432. pf = 1.0*p;
  433. qf = 1.0*q;
  434.  
  435. rf = sqrt( pwrf(qf,2)/4.0 + pwrf(pf,3)/27.0 );
  436. r2 = q*q + 4*p*p*p /27;
  437. rr = cvt(sqrt(1.0*r2));
  438.  
  439. printf(" rr = sqrt(%d)/2 = %d/2\n", r2, rr );
  440. printf(" rf = %f\n", rf);
  441.  
  442. r12 = (-q + rr)/2;
  443. r22 = (-q - rr)/2;
  444.  
  445. printf("r12 = %d\n", r12);
  446. printf("r22 = %d\n", r22);
  447.  
  448.  
  449. r1f = croot(-qf/2.0 + rf );
  450. r2f = croot(-qf/2.0 - rf );
  451.  
  452. printf(" r12 = (%d)^(1/3) \n", r12);
  453. printf(" r22 = (%d)^(1/3) \n", r22);
  454. printf("root = (%d)^(1/3) + (%d)^(1/3)\n", r12, r22);
  455.  
  456. root = r1f + r2f;
  457. printf("root = %f, %f + %f \n", root, r1f, r2f);
  458.  
  459. */
  460.  
  461.  
  462. process(sel);
  463.  
  464.  
  465. }
  466.  
  467. void set_cos_mn(int m, int n) {
  468.  
  469.  
  470. alpha = pwrf(2.0*cs2, m)/(pwrf(2.0*cs4, n));
  471. beta = pwrf(2.0*cs4, m)/(pwrf(2.0*cs8, n));
  472. gamma = pwrf(2.0*cs8, m)/(pwrf(2.0*cs2, n));
  473.  
  474.  
  475. }
  476.  
  477.  
  478.  
  479. ///////////////////////////////////////////////
  480.  
  481.  
  482.  
  483. int main(int argc, char *argv[]) {
  484. int i, j;
  485. int nterm = 100;
  486. init();
  487.  
  488.  
  489. for (i=0; i<nterm; i++) {
  490. for (j=0; j<nterm; j++) {
  491. mm = i;
  492. nn = j;
  493.  
  494. set_cos_mn(i, j);
  495. comp_ram(1);
  496.  
  497. }
  498. }
  499.  
  500.  
  501.  
  502.  
  503. printf("End of JOB (%d,%d)\n", mm, nn);
  504. return 1;
  505.  
  506. }
  507.  
  508.  
Runtime error #stdin #stdout 0s 9432KB
stdin
Standard input is empty
stdout
\begin{theorem} \label{tmn_0_1} 
Let 
$$
\alpha = \frac{(2\cos(2\theta)^0}{(2\cos(4\theta)^1},
\beta  = \frac{(2\cos(4\theta)^0}{(2\cos(8\theta)^1},
\gamma = \frac{(2\cos(8\theta)^0}{(2\cos(2\theta)^1}.
$$
Then $ \{ \alpha, \beta, \gamma \} $ are roots of the equation:
\begin{equation} \label{emn_0_1} 
x^3 + 2 x^2 - x^2 - 1 = 0
\end{equation}  
which satisfies Rammnujan condition. 
And 
\begin{equation} \label{fmn_0_1} 
\sqrt[3]{\alpha} + \sqrt[3]{\beta} + \sqrt[3]{\gamma} = 
\sqrt[3]{4 - 3\sqrt[3]{7}}  
\end{equation}  
\begin{equation} \label{gmn_0_1} 
\frac{1}{\sqrt[3]{\alpha}} + \frac{1}{\sqrt[3]{\beta}} + \frac{1}{\sqrt[3]{\gamma}} = 
\sqrt[3]{5 - 3\sqrt[3]{7}}  
\end{equation}  
\end{theorem}

\begin{theorem} \label{tmn_1_0} 
Let 
$$
\alpha = \frac{(2\cos(2\theta)^1}{(2\cos(4\theta)^0},
\beta  = \frac{(2\cos(4\theta)^1}{(2\cos(8\theta)^0},
\gamma = \frac{(2\cos(8\theta)^1}{(2\cos(2\theta)^0}.
$$
Then $ \{ \alpha, \beta, \gamma \} $ are roots of the equation:
\begin{equation} \label{emn_1_0} 
x^3 + x^2 - 2 x - 1 = 0
\end{equation}  
which satisfies Rammnujan condition. 
And 
\begin{equation} \label{fmn_1_0} 
\sqrt[3]{\alpha} + \sqrt[3]{\beta} + \sqrt[3]{\gamma} = 
\sqrt[3]{5 - 3\sqrt[3]{7}}  
\end{equation}  
\begin{equation} \label{gmn_1_0} 
\frac{1}{\sqrt[3]{\alpha}} + \frac{1}{\sqrt[3]{\beta}} + \frac{1}{\sqrt[3]{\gamma}} = 
\sqrt[3]{4 - 3\sqrt[3]{7}}  
\end{equation}  
\end{theorem}

\begin{theorem} \label{tmn_1_2} 
Let 
$$
\alpha = \frac{(2\cos(2\theta)^1}{(2\cos(4\theta)^2},
\beta  = \frac{(2\cos(4\theta)^1}{(2\cos(8\theta)^2},
\gamma = \frac{(2\cos(8\theta)^1}{(2\cos(2\theta)^2}.
$$
Then $ \{ \alpha, \beta, \gamma \} $ are roots of the equation:
\begin{equation} \label{emn_1_2} 
x^3 - 5 x^2 - 8 x - 1 = 0
\end{equation}  
which satisfies Rammnujan condition. 
And 
\begin{equation} \label{fmn_1_2} 
\sqrt[3]{\alpha} + \sqrt[3]{\beta} + \sqrt[3]{\gamma} = 
\sqrt[3]{11 - 3\sqrt[3]{49}}  
\end{equation}  
\begin{equation} \label{gmn_1_2} 
\frac{1}{\sqrt[3]{\alpha}} + \frac{1}{\sqrt[3]{\beta}} + \frac{1}{\sqrt[3]{\gamma}} = 
\sqrt[3]{-2 - 3\sqrt[3]{49}}  
\end{equation}  
\end{theorem}

\begin{theorem} \label{tmn_1_3} 
Let 
$$
\alpha = \frac{(2\cos(2\theta)^1}{(2\cos(4\theta)^3},
\beta  = \frac{(2\cos(4\theta)^1}{(2\cos(8\theta)^3},
\gamma = \frac{(2\cos(8\theta)^1}{(2\cos(2\theta)^3}.
$$
Then $ \{ \alpha, \beta, \gamma \} $ are roots of the equation:
\begin{equation} \label{emn_1_3} 
x^3 + 15 x^2 + 12 x^2 - 1 = 0
\end{equation}  
which satisfies Rammnujan condition. 
And 
\begin{equation} \label{fmn_1_3} 
\sqrt[3]{\alpha} + \sqrt[3]{\beta} + \sqrt[3]{\gamma} = 
\sqrt[3]{-9 - 3\sqrt[3]{189}}  
\end{equation}  
\begin{equation} \label{gmn_1_3} 
\frac{1}{\sqrt[3]{\alpha}} + \frac{1}{\sqrt[3]{\beta}} + \frac{1}{\sqrt[3]{\gamma}} = 
\sqrt[3]{18 - 3\sqrt[3]{189}}  
\end{equation}  
\end{theorem}

\begin{theorem} \label{tmn_3_8} 
Let 
$$
\alpha = \frac{(2\cos(2\theta)^3}{(2\cos(4\theta)^8},
\beta  = \frac{(2\cos(4\theta)^3}{(2\cos(8\theta)^8},
\gamma = \frac{(2\cos(8\theta)^3}{(2\cos(2\theta)^8}.
$$
Then $ \{ \alpha, \beta, \gamma \} $ are roots of the equation:
\begin{equation} \label{emn_3_8} 
x^3 - 1259 x^2 - 1262 x - 1 = 0
\end{equation}  
which satisfies Rammnujan condition. 
And 
\begin{equation} \label{fmn_3_8} 
\sqrt[3]{\alpha} + \sqrt[3]{\beta} + \sqrt[3]{\gamma} = 
\sqrt[3]{1265 - 3\sqrt[3]{1588867}}  
\end{equation}  
\begin{equation} \label{gmn_3_8} 
\frac{1}{\sqrt[3]{\alpha}} + \frac{1}{\sqrt[3]{\beta}} + \frac{1}{\sqrt[3]{\gamma}} = 
\sqrt[3]{-1256 - 3\sqrt[3]{1588867}}  
\end{equation}  
\end{theorem}

End of JOB (99,99)