rataprx.rlg 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104
  1. Tue Feb 10 12:29:51 2004 run on Linux
  2. % Tests of the rataprx package.
  3. % Authors: Lisa Temme, Wolfram Koepf (koepf@zib.de)
  4. % periodic decimal representations
  5. rational2periodic(1/3);
  6. _
  7. 0.3
  8. periodic2rational(ws);
  9. 1
  10. ---
  11. 3
  12. rational2periodic(-1/3);
  13. _
  14. -0.3
  15. periodic2rational(ws);
  16. - 1
  17. ------
  18. 3
  19. rational2periodic(1.2/3);
  20. 0.4
  21. periodic2rational(ws);
  22. 2
  23. ---
  24. 5
  25. rational2periodic(1/3.4);
  26. ________________
  27. 0.2941176470588235
  28. periodic2rational(ws);
  29. 5
  30. ----
  31. 17
  32. rational2periodic(1.2/3.4);
  33. ________________
  34. 0.3529411764705882
  35. periodic2rational(ws);
  36. 6
  37. ----
  38. 17
  39. rational2periodic(352673/3124);
  40. periodic({11289,100},{1,
  41. 4,
  42. 8,
  43. 5,
  44. 2,
  45. 7,
  46. 5,
  47. 2,
  48. 8,
  49. 8,
  50. 0,
  51. 9,
  52. 2,
  53. 1,
  54. 8,
  55. 9,
  56. 5,
  57. 0,
  58. 0,
  59. 6,
  60. 4,
  61. 0,
  62. 2,
  63. 0,
  64. 4,
  65. 8,
  66. 6,
  67. 5,
  68. 5,
  69. 5,
  70. 6,
  71. 9,
  72. 7,
  73. 8,
  74. 2,
  75. 3,
  76. 3,
  77. 0,
  78. 3,
  79. 4,
  80. 5,
  81. 7,
  82. 1,
  83. 0,
  84. 6,
  85. 2,
  86. 7,
  87. 4,
  88. 0,
  89. 0,
  90. 7,
  91. 6,
  92. 8,
  93. 2,
  94. 4,
  95. 5,
  96. 8,
  97. 3,
  98. 8,
  99. 6,
  100. 6,
  101. 8,
  102. 3,
  103. 7,
  104. 3,
  105. 8,
  106. 7,
  107. 9,
  108. 6,
  109. 4})
  110. periodic2rational(ws);
  111. 352673
  112. --------
  113. 3124
  114. rational2periodic(53765/5216);
  115. periodic({1030770,100000},{7,
  116. 0,
  117. 5,
  118. 5,
  119. 2,
  120. 1,
  121. 4,
  122. 7,
  123. 2,
  124. 3,
  125. 9,
  126. 2,
  127. 6,
  128. 3,
  129. 8,
  130. 0,
  131. 3,
  132. 6,
  133. 8,
  134. 0,
  135. 9,
  136. 8,
  137. 1,
  138. 5,
  139. 9,
  140. 5,
  141. 0,
  142. 9,
  143. 2,
  144. 0,
  145. 2,
  146. 4,
  147. 5,
  148. 3,
  149. 9,
  150. 8,
  151. 7,
  152. 7,
  153. 3,
  154. 0,
  155. 0,
  156. 6,
  157. 1,
  158. 3,
  159. 4,
  160. 9,
  161. 6,
  162. 9,
  163. 3,
  164. 2,
  165. 5,
  166. 1,
  167. 5,
  168. 3,
  169. 3,
  170. 7,
  171. 4,
  172. 2,
  173. 3,
  174. 3,
  175. 1,
  176. 2,
  177. 8,
  178. 8,
  179. 3,
  180. 4,
  181. 3,
  182. 5,
  183. 5,
  184. 8,
  185. 2,
  186. 8,
  187. 2,
  188. 2,
  189. 0,
  190. 8,
  191. 5,
  192. 8,
  193. 8,
  194. 9,
  195. 5})
  196. periodic2rational(ws);
  197. 53765
  198. -------
  199. 5216
  200. % continued fractions
  201. % of numbers
  202. cfrac pi;
  203. 1146408
  204. {---------,
  205. 364913
  206. 1
  207. 3 + ------------------------------------------------------}
  208. 1
  209. 7 + ------------------------------------------------
  210. 1
  211. 15 + -----------------------------------------
  212. 1
  213. 1 + -----------------------------------
  214. 1
  215. 292 + ---------------------------
  216. 1
  217. 1 + ---------------------
  218. 1
  219. 1 + ---------------
  220. 1
  221. 1 + ---------
  222. 1
  223. 2 + ---
  224. 1
  225. cfrac(pi,3);
  226. 355 1
  227. {-----,3 + ----------------}
  228. 113 1
  229. 7 + ----------
  230. 1
  231. 15 + ---
  232. 1
  233. cfrac(pi,20);
  234. 1146408
  235. {---------,
  236. 364913
  237. 1
  238. 3 + ------------------------------------------------------}
  239. 1
  240. 7 + ------------------------------------------------
  241. 1
  242. 15 + -----------------------------------------
  243. 1
  244. 1 + -----------------------------------
  245. 1
  246. 292 + ---------------------------
  247. 1
  248. 1 + ---------------------
  249. 1
  250. 1 + ---------------
  251. 1
  252. 1 + ---------
  253. 1
  254. 2 + ---
  255. 1
  256. oldprec:=precision 20;
  257. oldprec := 12
  258. cfrac pi;
  259. 14885392687
  260. contfrac(-------------,{3,
  261. 4738167652
  262. {1,7},
  263. {1,15},
  264. {1,1},
  265. {1,292},
  266. {1,1},
  267. {1,1},
  268. {1,1},
  269. {1,2},
  270. {1,1},
  271. {1,3},
  272. {1,1},
  273. {1,14},
  274. {1,2},
  275. {1,1},
  276. {1,1},
  277. {1,2},
  278. {1,2},
  279. {1,2},
  280. {1,2}})
  281. cfrac(pi^2);
  282. 27053934029
  283. contfrac(-------------,{9,
  284. 2741136618
  285. {1,1},
  286. {1,6},
  287. {1,1},
  288. {1,2},
  289. {1,47},
  290. {1,1},
  291. {1,8},
  292. {1,1},
  293. {1,1},
  294. {1,2},
  295. {1,2},
  296. {1,1},
  297. {1,1},
  298. {1,8},
  299. {1,3},
  300. {1,1},
  301. {1,10},
  302. {1,5},
  303. {1,1},
  304. {1,3}})
  305. cfrac(pi*e*sqrt(2));
  306. 22809995021
  307. contfrac(-------------,{12,
  308. 1888712428
  309. {1,12},
  310. {1,1},
  311. {1,68},
  312. {1,1},
  313. {1,3},
  314. {1,1},
  315. {1,2},
  316. {1,1},
  317. {1,6},
  318. {1,1},
  319. {1,15},
  320. {1,1},
  321. {1,5},
  322. {1,1},
  323. {1,1},
  324. {1,2},
  325. {1,1},
  326. {1,8},
  327. {1,2}})
  328. precision oldprec;
  329. 20
  330. % of rational functions
  331. cfrac((x+2/3)^2/(6*x-5),x);
  332. 2
  333. 9*x + 12*x + 4
  334. {-----------------,
  335. 54*x - 45
  336. 6*x + 13 1
  337. ---------- + -------------}
  338. 36 24*x - 20
  339. -----------
  340. 9
  341. cfrac((x+2/3)^2/(6*x-5),x,0);
  342. 6*x + 13 6*x + 13
  343. {----------,----------}
  344. 36 36
  345. cfrac((x+2/3)^2/(6*x-5),x,1);
  346. 2
  347. 9*x + 12*x + 4
  348. {-----------------,
  349. 54*x - 45
  350. 6*x + 13 1
  351. ---------- + -------------}
  352. 36 24*x - 20
  353. -----------
  354. 9
  355. cfrac((x+2/3)^2/(6*x-5),x,10);
  356. 2
  357. 9*x + 12*x + 4
  358. {-----------------,
  359. 54*x - 45
  360. 6*x + 13 1
  361. ---------- + -------------}
  362. 36 24*x - 20
  363. -----------
  364. 9
  365. cfrac((x*8-7/2)^4/(x^5-2/3),x);
  366. 4 3 2
  367. 196608*x - 344064*x + 225792*x - 65856*x + 7203
  368. {----------------------------------------------------,
  369. 5
  370. 48*x - 32
  371. 4*x + 7 524288*x - 458752 144060*x - 574709
  372. 1/(--------- + 1/(------------------- + 1/(------------------- + 1/(
  373. 16384 245 29503488
  374. 1428871832845410168479416320*x + 5604409773009942380402638848
  375. --------------------------------------------------------------- + 1
  376. 110370509467032373008840289
  377. /(4638094170692621015213105500565148574652*x
  378. - 3747067916403980284808800355871185905903)/365473525943308099\
  379. 0834049614798549893120))))}
  380. cfrac((x*8-7/2)^4/(x^5-2/3),x,2);
  381. 524288*x - 458752
  382. {---------------------,
  383. 2
  384. 128*x + 112*x + 49
  385. 1
  386. -----------------------------------}
  387. 4*x + 7 1
  388. --------- + ---------------------
  389. 16384 524288*x - 458752
  390. -------------------
  391. 245
  392. % of analytic functions
  393. cfrac(e^x,x,10);
  394. 5 4 3 2
  395. - x - 30*x - 420*x - 3360*x - 15120*x - 30240
  396. {----------------------------------------------------,
  397. 5 4 3 2
  398. x - 30*x + 420*x - 3360*x + 15120*x - 30240
  399. x
  400. 1 + ------------------------------------------------------------}
  401. - x
  402. 1 + ------------------------------------------------------
  403. x
  404. 2 + ------------------------------------------------
  405. - x
  406. 3 + ------------------------------------------
  407. x
  408. 2 + ------------------------------------
  409. - x
  410. 5 + ------------------------------
  411. x
  412. 2 + ------------------------
  413. - x
  414. 7 + ------------------
  415. x
  416. 2 + ------------
  417. - x
  418. 9 + ------
  419. 2
  420. % default order is 4
  421. cfrac(e^x,x);
  422. 3 2
  423. x + 9*x + 36*x + 60
  424. {-----------------------,
  425. 2
  426. 3*x - 24*x + 60
  427. x
  428. 1 + ---------------------------}
  429. - x
  430. 1 + ---------------------
  431. x
  432. 2 + ---------------
  433. - x
  434. 3 + ---------
  435. x
  436. 2 + ---
  437. 5
  438. cfrac(x^2/(x-1)*e^x,x);
  439. 6 4 2
  440. x + 3*x + x
  441. {----------------,
  442. 4 2
  443. 3*x - x - 1
  444. 2
  445. - x
  446. ----------------------------}
  447. 2
  448. - 2*x
  449. 1 + ----------------------
  450. 2
  451. x
  452. 1 + ----------------
  453. 2
  454. x
  455. 1 + ----------
  456. 2
  457. x
  458. 1 + ----
  459. 1
  460. cfrac(x^2/(x-1)*e^x,x,2);
  461. 2
  462. x
  463. {----------,
  464. 2
  465. 2*x - 1
  466. 2
  467. - x
  468. ---------------}
  469. 2
  470. - 2*x
  471. 1 + ---------
  472. 1
  473. cfrac(atan(x),x,10);
  474. 9 7 5 3
  475. 307835*x + 4813380*x + 19801782*x + 29609580*x + 14549535*x
  476. {----------------------------------------------------------------------------,
  477. 10 8 6 4 2
  478. 19845*x + 1091475*x + 9459450*x + 28378350*x + 34459425*x + 14549535
  479. x
  480. -----------------------------------------------------------------}
  481. 2
  482. x
  483. 1 + -----------------------------------------------------------
  484. 2
  485. 4*x
  486. 3 + -----------------------------------------------------
  487. 2
  488. 9*x
  489. 5 + -----------------------------------------------
  490. 2
  491. 16*x
  492. 7 + -----------------------------------------
  493. 2
  494. 25*x
  495. 9 + -----------------------------------
  496. 2
  497. 36*x
  498. 11 + ----------------------------
  499. 2
  500. 49*x
  501. 13 + ---------------------
  502. 2
  503. 64*x
  504. 15 + --------------
  505. 2
  506. 81*x
  507. 17 + -------
  508. 19
  509. cfrac(asin(x),x,5);
  510. 5 3
  511. 69049*x - 717780*x + 922320*x
  512. {---------------------------------,
  513. 4 2
  514. 145125*x - 871500*x + 922320
  515. x
  516. ----------------------------------------}
  517. 2
  518. - x
  519. 1 + ----------------------------------
  520. 2
  521. - 17*x
  522. 6 + ----------------------------
  523. 2
  524. - 549*x
  525. 10 + ---------------------
  526. 2
  527. - 69049*x
  528. 238 + -------------
  529. 1098
  530. % not implemented
  531. cfrac(log(x),x,4);
  532. ***** not yet implemented
  533. cfrac(asech(x),x,5);
  534. ***** not yet implemented
  535. cfrac(sin sqrt x,x,4);
  536. ***** not yet implemented
  537. % wrong input
  538. cfrac(1,x);
  539. cfrac(1,x)
  540. cfrac(x,x,x);
  541. cfrac(x,x,x)
  542. cfrac(x,x,x,5);
  543. cfrac(x,x,x,5)
  544. % Pade representations
  545. pade(sin(x),x,0,3,3);
  546. 2
  547. x*( - 7*x + 60)
  548. ------------------
  549. 2
  550. 3*(x + 20)
  551. pade(tanh(x),x,0,5,5);
  552. 4 2
  553. x*(x + 105*x + 945)
  554. -----------------------
  555. 4 2
  556. 15*(x + 28*x + 63)
  557. pade(atan(x),x,0,5,5);
  558. 4 2
  559. x*(64*x + 735*x + 945)
  560. --------------------------
  561. 4 2
  562. 15*(15*x + 70*x + 63)
  563. pade(1/(x*sin(x)),x,0,3,2);
  564. 2
  565. x + 6
  566. --------
  567. 2
  568. 6*x
  569. pade(sin(x)/x^2,x,0,10,1);
  570. 10 8 6 4 2
  571. - x + 110*x - 7920*x + 332640*x - 6652800*x + 39916800
  572. ---------------------------------------------------------------
  573. 39916800*x
  574. pade(sin(x)/x^2,x,0,10,2);
  575. 10 8 6 4 2
  576. - x + 110*x - 7920*x + 332640*x - 6652800*x + 39916800
  577. ---------------------------------------------------------------
  578. 39916800*x
  579. pade(sin(x)/x^2,x,0,10,3);
  580. 10 8 6 4 2
  581. - 23*x + 4620*x - 451440*x + 22619520*x - 498960000*x + 3113510400
  582. ---------------------------------------------------------------------------
  583. 2
  584. 19958400*x*(x + 156)
  585. pade(exp(x),x,0,10,10);
  586. 10 9 8 7 6 5 4
  587. (x + 110*x + 5940*x + 205920*x + 5045040*x + 90810720*x + 1210809600*x
  588. 3 2 10
  589. + 11762150400*x + 79394515200*x + 335221286400*x + 670442572800)/(x
  590. 9 8 7 6 5 4
  591. - 110*x + 5940*x - 205920*x + 5045040*x - 90810720*x + 1210809600*x
  592. 3 2
  593. - 11762150400*x + 79394515200*x - 335221286400*x + 670442572800)
  594. pade(sin(x),x,0,20,20);
  595. 18
  596. (420*x*( - 1670454796485655407005204111896505853962882149730473*x
  597. 16
  598. + 3750723201144687025399857898162770954823924964685652842*x
  599. 14
  600. - 3582506072289078352047596683909246967322825072732178695360*x
  601. 12
  602. + 1869589702800106132374452333905246037435005346891034203856000*x
  603. 10
  604. - 573228615690533362277150976788354558105622438150759712792761600*x
  605. 8
  606. + 103954806107838160002753187442833010398502453693126706480803904000*x
  607. - 10728835421367893971671793497263049404983813914658053829579862016000
  608. 6
  609. *x +
  610. 4
  611. 575186523659337692549014637994968894181652462542936979129823993856000*x
  612. -
  613. 13299404753182468245973779380302173780050163417906548608594453340160000
  614. 2
  615. *x + 8461166135144631096871438729757765368229020614386275136075764211\
  616. 20
  617. 7120000))/(9703514253649496804459335098386178033709237613*x
  618. 18
  619. + 26693188916859840432281615685297667671827346329880*x
  620. 16
  621. + 40131841713883475746635715860433350742371877282920840*x
  622. 14
  623. + 42773075706893663042738071933996865427898294402559424000*x
  624. 12
  625. + 35329791607150874190393563954056763271257094118524405024000*x
  626. 10
  627. + 23367407211060385995097426988941972393423826920849430345472000*x
  628. 8
  629. + 12411237061763347778639777646354605230793727402242210950475520000*x
  630. 6
  631. + 5182014156622335713728846799235531962702355938650410017404846080000*x
  632. 4
  633. + 1615241584293926563589087600285609358152611856120931412435087564800000*x
  634. 2
  635. + 337066298264605104501019771103522770139245794549642179643364545331200000*x
  636. + 35536897767607450606860042664982614546561886580422355571518209689190400000
  637. )
  638. % no Pade Approximation exists
  639. pade(exp(1/x),x,0,5,5);
  640. ***** no Pade Approximation exists
  641. % wrong order
  642. pade(sin(x)/x^2,x,0,10,0);
  643. ***** Pade Approximation of this order does not exist
  644. % not implemented
  645. pade(factorial(x),x,1,3,3);
  646. ***** not yet implemented
  647. % extended Pade representations
  648. pade(asech(x),x,0,3,3);
  649. 2 2 2
  650. - 3*log(x)*x + 8*log(x) + 3*log(2)*x - 8*log(2) + 2*x
  651. -----------------------------------------------------------
  652. 2
  653. 3*x - 8
  654. taylor(ws-asech(x),x,0,10);
  655. 11 13 6 43 8 1611 10 11
  656. log(x)*(0 + O(x )) + (-----*x + ------*x + -------*x + O(x ))
  657. 768 2048 81920
  658. pade(sin(sqrt(x)),x,0,3,3);
  659. 3 2
  660. sqrt(x)*(56447*x - 4851504*x + 132113520*x - 885487680)
  661. -----------------------------------------------------------
  662. 3 2
  663. 7*(179*x - 7200*x - 2209680*x - 126498240)
  664. taylor(ws-sin(sqrt(x)),x,0,10);
  665. 1 13/2 1399187 15/2
  666. - ------------*x + --------------------*x
  667. 6227020800 229747925062656000
  668. 1364974757 17/2 12300718539103 19/2
  669. - -------------------------*x + ------------------------------*x
  670. 10397012600785434624000 6310321239870308548952064000
  671. 21/2
  672. + O(x )
  673. end;
  674. Time for test: 870 ms, plus GC time: 20 ms