@amermathsoc/texml-to-html 18.0.0 → 18.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +4 -2
  3. package/lib/elements/abstract.js +1 -0
  4. package/lib/elements/app.js +2 -1
  5. package/lib/elements/attrib.js +2 -17
  6. package/lib/elements/book-meta-json.js +1 -1
  7. package/lib/elements/disp-formula-group.js +7 -0
  8. package/lib/elements/disp-quote.js +6 -3
  9. package/lib/elements/fig.js +7 -2
  10. package/lib/elements/formula.js +1 -2
  11. package/lib/elements/label.js +5 -49
  12. package/lib/elements/notes.js +1 -0
  13. package/lib/elements/ref-list.js +1 -1
  14. package/lib/elements/sec.js +4 -1
  15. package/lib/elements/secheading.js +3 -2
  16. package/lib/elements/statement.js +11 -0
  17. package/lib/elements/subtitle.js +1 -4
  18. package/lib/elements/tag.js +2 -2
  19. package/lib/elements/target.js +3 -6
  20. package/lib/elements/{subject.js → title-group.js} +3 -5
  21. package/lib/head.js +1 -1
  22. package/lib/postProcessing.js +81 -0
  23. package/lib/transformer.js +44 -14
  24. package/package.json +3 -1
  25. package/test/article.xml +40 -33
  26. package/test/book.xml +30 -7
  27. package/test/element-attrib.js +2 -2
  28. package/test/element-disp-quote.js +2 -1
  29. package/test/element-fig-subfig-label.js +2 -1
  30. package/test/element-fn.js +6 -3
  31. package/test/element-formula.js +63 -0
  32. package/test/element-front.js +2 -1
  33. package/test/{element-sec-app-front-matter-part-dedication-title-label.js → element-sec.js} +3 -1
  34. package/test/element-tag.js +5 -1
  35. package/test/element-tex-math.js +64 -0
  36. package/test/helper.js +4 -0
  37. package/test/postProcessing.js +45 -0
  38. package/test/snapshots/article--alttitle.html +121 -0
  39. package/test/snapshots/article--nometa.html +56 -0
  40. package/test/snapshots/article.html +561 -0
  41. package/test/snapshots/book.html +160 -0
  42. package/test/snapshots/texml-tests/LGR.html +104 -0
  43. package/test/snapshots/texml-tests/LGR.xml +82 -0
  44. package/test/snapshots/texml-tests/NLMnote.html +10 -0
  45. package/test/snapshots/texml-tests/NLMnote.xml +12 -0
  46. package/test/snapshots/texml-tests/OT1.html +61 -0
  47. package/test/snapshots/texml-tests/OT1.xml +39 -0
  48. package/test/snapshots/texml-tests/OT1ti.html +61 -0
  49. package/test/snapshots/texml-tests/OT1ti.xml +39 -0
  50. package/test/snapshots/texml-tests/OT1tt.html +60 -0
  51. package/test/snapshots/texml-tests/OT1tt.xml +38 -0
  52. package/test/snapshots/texml-tests/OT2.html +119 -0
  53. package/test/snapshots/texml-tests/OT2.xml +97 -0
  54. package/test/snapshots/texml-tests/OT4.html +68 -0
  55. package/test/snapshots/texml-tests/OT4.xml +46 -0
  56. package/test/snapshots/texml-tests/OT6.html +49 -0
  57. package/test/snapshots/texml-tests/OT6.xml +27 -0
  58. package/test/snapshots/texml-tests/T1.html +44 -0
  59. package/test/snapshots/texml-tests/T1.xml +22 -0
  60. package/test/snapshots/texml-tests/T4.html +48 -0
  61. package/test/snapshots/texml-tests/T4.xml +26 -0
  62. package/test/snapshots/texml-tests/T5.html +45 -0
  63. package/test/snapshots/texml-tests/T5.xml +23 -0
  64. package/test/snapshots/texml-tests/Uchar.html +9 -0
  65. package/test/snapshots/texml-tests/Uchar.xml +11 -0
  66. package/test/snapshots/texml-tests/Ucharcat.html +45 -0
  67. package/test/snapshots/texml-tests/Ucharcat.xml +23 -0
  68. package/test/snapshots/texml-tests/accent.html +54 -0
  69. package/test/snapshots/texml-tests/accent.xml +32 -0
  70. package/test/snapshots/texml-tests/algorithm.html +55 -0
  71. package/test/snapshots/texml-tests/algorithm.xml +35 -0
  72. package/test/snapshots/texml-tests/algorithmic.html +706 -0
  73. package/test/snapshots/texml-tests/algorithmic.xml +712 -0
  74. package/test/snapshots/texml-tests/algpseudocode.html +520 -0
  75. package/test/snapshots/texml-tests/algpseudocode.xml +538 -0
  76. package/test/snapshots/texml-tests/ams_measure.html +46 -0
  77. package/test/snapshots/texml-tests/ams_measure.xml +24 -0
  78. package/test/snapshots/texml-tests/amsart.html +66 -0
  79. package/test/snapshots/texml-tests/amsart.xml +39 -0
  80. package/test/snapshots/texml-tests/amscyr.html +53 -0
  81. package/test/snapshots/texml-tests/amscyr.xml +35 -0
  82. package/test/snapshots/texml-tests/amsfonts.html +41 -0
  83. package/test/snapshots/texml-tests/amsfonts.xml +21 -0
  84. package/test/snapshots/texml-tests/amsrefs.html +82 -0
  85. package/test/snapshots/texml-tests/amsrefs.xml +87 -0
  86. package/test/snapshots/texml-tests/amsthm.html +83 -0
  87. package/test/snapshots/texml-tests/amsthm.xml +61 -0
  88. package/test/snapshots/texml-tests/amsviet.html +42 -0
  89. package/test/snapshots/texml-tests/amsviet.xml +20 -0
  90. package/test/snapshots/texml-tests/appendix.html +69 -0
  91. package/test/snapshots/texml-tests/appendix.xml +43 -0
  92. package/test/snapshots/texml-tests/array.html +58 -0
  93. package/test/snapshots/texml-tests/array.xml +36 -0
  94. package/test/snapshots/texml-tests/arydshln.html +69 -0
  95. package/test/snapshots/texml-tests/arydshln.xml +47 -0
  96. package/test/snapshots/texml-tests/autoref.html +76 -0
  97. package/test/snapshots/texml-tests/autoref.xml +79 -0
  98. package/test/snapshots/texml-tests/begincsname.html +46 -0
  99. package/test/snapshots/texml-tests/begincsname.xml +24 -0
  100. package/test/snapshots/texml-tests/boldline.html +93 -0
  101. package/test/snapshots/texml-tests/boldline.xml +71 -0
  102. package/test/snapshots/texml-tests/book-app.html +22 -0
  103. package/test/snapshots/texml-tests/book-app.xml +26 -0
  104. package/test/snapshots/texml-tests/booktabs.html +7 -0
  105. package/test/snapshots/texml-tests/booktabs.xml +9 -0
  106. package/test/snapshots/texml-tests/boxes.html +54 -0
  107. package/test/snapshots/texml-tests/boxes.xml +32 -0
  108. package/test/snapshots/texml-tests/cases.html +13 -0
  109. package/test/snapshots/texml-tests/cases.xml +19 -0
  110. package/test/snapshots/texml-tests/cite.html +48 -0
  111. package/test/snapshots/texml-tests/cite.xml +40 -0
  112. package/test/snapshots/texml-tests/citesort.html +62 -0
  113. package/test/snapshots/texml-tests/citesort.xml +74 -0
  114. package/test/snapshots/texml-tests/cleveref.html +25 -0
  115. package/test/snapshots/texml-tests/cleveref.xml +28 -0
  116. package/test/snapshots/texml-tests/codes.html +7 -0
  117. package/test/snapshots/texml-tests/codes.xml +9 -0
  118. package/test/snapshots/texml-tests/colortbl.html +46 -0
  119. package/test/snapshots/texml-tests/colortbl.xml +24 -0
  120. package/test/snapshots/texml-tests/combinetoks.html +49 -0
  121. package/test/snapshots/texml-tests/combinetoks.xml +27 -0
  122. package/test/snapshots/texml-tests/constants.html +45 -0
  123. package/test/snapshots/texml-tests/constants.xml +23 -0
  124. package/test/snapshots/texml-tests/csstring.html +44 -0
  125. package/test/snapshots/texml-tests/csstring.xml +22 -0
  126. package/test/snapshots/texml-tests/detokenize.html +56 -0
  127. package/test/snapshots/texml-tests/detokenize.xml +34 -0
  128. package/test/snapshots/texml-tests/diacritics.html +41 -0
  129. package/test/snapshots/texml-tests/diacritics.xml +19 -0
  130. package/test/snapshots/texml-tests/dimexpr.html +42 -0
  131. package/test/snapshots/texml-tests/dimexpr.xml +20 -0
  132. package/test/snapshots/texml-tests/doi.html +6 -0
  133. package/test/snapshots/texml-tests/doi.xml +8 -0
  134. package/test/snapshots/texml-tests/drm.html +12 -0
  135. package/test/snapshots/texml-tests/drm.xml +76 -0
  136. package/test/snapshots/texml-tests/dz.html +25 -0
  137. package/test/snapshots/texml-tests/dz.xml +27 -0
  138. package/test/snapshots/texml-tests/edef.html +8 -0
  139. package/test/snapshots/texml-tests/edef.xml +10 -0
  140. package/test/snapshots/texml-tests/empheq.html +9 -0
  141. package/test/snapshots/texml-tests/empheq.xml +13 -0
  142. package/test/snapshots/texml-tests/enclose.html +27 -0
  143. package/test/snapshots/texml-tests/enclose.xml +45 -0
  144. package/test/snapshots/texml-tests/everyeof.html +42 -0
  145. package/test/snapshots/texml-tests/everyeof.xml +20 -0
  146. package/test/snapshots/texml-tests/expanded.html +44 -0
  147. package/test/snapshots/texml-tests/expanded.xml +22 -0
  148. package/test/snapshots/texml-tests/footnote.html +28 -0
  149. package/test/snapshots/texml-tests/footnote.xml +59 -0
  150. package/test/snapshots/texml-tests/frac.html +15 -0
  151. package/test/snapshots/texml-tests/frac.xml +21 -0
  152. package/test/snapshots/texml-tests/framebox.html +43 -0
  153. package/test/snapshots/texml-tests/framebox.xml +23 -0
  154. package/test/snapshots/texml-tests/glueexpr.html +42 -0
  155. package/test/snapshots/texml-tests/glueexpr.xml +20 -0
  156. package/test/snapshots/texml-tests/graphics.html +9 -0
  157. package/test/snapshots/texml-tests/graphics.xml +13 -0
  158. package/test/snapshots/texml-tests/gsm_l.html +35 -0
  159. package/test/snapshots/texml-tests/gsm_l.xml +71 -0
  160. package/test/snapshots/texml-tests/halign.html +78 -0
  161. package/test/snapshots/texml-tests/halign.xml +56 -0
  162. package/test/snapshots/texml-tests/hbox.html +11 -0
  163. package/test/snapshots/texml-tests/hbox.xml +17 -0
  164. package/test/snapshots/texml-tests/hello.html +38 -0
  165. package/test/snapshots/texml-tests/hello.xml +16 -0
  166. package/test/snapshots/texml-tests/hhline.html +101 -0
  167. package/test/snapshots/texml-tests/hhline.xml +79 -0
  168. package/test/snapshots/texml-tests/hline.html +40 -0
  169. package/test/snapshots/texml-tests/hline.xml +18 -0
  170. package/test/snapshots/texml-tests/href.html +6 -0
  171. package/test/snapshots/texml-tests/href.xml +8 -0
  172. package/test/snapshots/texml-tests/hyperams.html +43 -0
  173. package/test/snapshots/texml-tests/hyperams.xml +21 -0
  174. package/test/snapshots/texml-tests/hyperref.html +10 -0
  175. package/test/snapshots/texml-tests/hyperref.xml +12 -0
  176. package/test/snapshots/texml-tests/ifcondition.html +39 -0
  177. package/test/snapshots/texml-tests/ifcondition.xml +17 -0
  178. package/test/snapshots/texml-tests/ifcsname.html +40 -0
  179. package/test/snapshots/texml-tests/ifcsname.xml +18 -0
  180. package/test/snapshots/texml-tests/ifdefined.html +40 -0
  181. package/test/snapshots/texml-tests/ifdefined.xml +18 -0
  182. package/test/snapshots/texml-tests/ifdim.html +40 -0
  183. package/test/snapshots/texml-tests/ifdim.xml +18 -0
  184. package/test/snapshots/texml-tests/ifnum.html +40 -0
  185. package/test/snapshots/texml-tests/ifnum.xml +18 -0
  186. package/test/snapshots/texml-tests/ifprimitive.html +48 -0
  187. package/test/snapshots/texml-tests/ifprimitive.xml +26 -0
  188. package/test/snapshots/texml-tests/immediateassigned.html +44 -0
  189. package/test/snapshots/texml-tests/immediateassigned.xml +22 -0
  190. package/test/snapshots/texml-tests/immediateassignment.html +44 -0
  191. package/test/snapshots/texml-tests/immediateassignment.xml +22 -0
  192. package/test/snapshots/texml-tests/lastbox.html +40 -0
  193. package/test/snapshots/texml-tests/lastbox.xml +18 -0
  194. package/test/snapshots/texml-tests/lastnamedcs.html +40 -0
  195. package/test/snapshots/texml-tests/lastnamedcs.xml +18 -0
  196. package/test/snapshots/texml-tests/let.html +43 -0
  197. package/test/snapshots/texml-tests/let.xml +21 -0
  198. package/test/snapshots/texml-tests/letcharcode.html +41 -0
  199. package/test/snapshots/texml-tests/letcharcode.xml +19 -0
  200. package/test/snapshots/texml-tests/ligatures.html +69 -0
  201. package/test/snapshots/texml-tests/ligatures.xml +47 -0
  202. package/test/snapshots/texml-tests/list.html +12 -0
  203. package/test/snapshots/texml-tests/list.xml +14 -0
  204. package/test/snapshots/texml-tests/listings.html +46 -0
  205. package/test/snapshots/texml-tests/listings.xml +24 -0
  206. package/test/snapshots/texml-tests/longtable.html +61 -0
  207. package/test/snapshots/texml-tests/longtable.xml +39 -0
  208. package/test/snapshots/texml-tests/ltxcodes.html +1330 -0
  209. package/test/snapshots/texml-tests/ltxcodes.xml +1332 -0
  210. package/test/snapshots/texml-tests/ltxthm.html +6 -0
  211. package/test/snapshots/texml-tests/ltxthm.xml +8 -0
  212. package/test/snapshots/texml-tests/makecell.html +40 -0
  213. package/test/snapshots/texml-tests/makecell.xml +18 -0
  214. package/test/snapshots/texml-tests/maketitle.html +82 -0
  215. package/test/snapshots/texml-tests/maketitle.xml +67 -0
  216. package/test/snapshots/texml-tests/math.html +35 -0
  217. package/test/snapshots/texml-tests/math.xml +47 -0
  218. package/test/snapshots/texml-tests/mathscinet.html +41 -0
  219. package/test/snapshots/texml-tests/mathscinet.xml +19 -0
  220. package/test/snapshots/texml-tests/meaning.html +44 -0
  221. package/test/snapshots/texml-tests/meaning.xml +22 -0
  222. package/test/snapshots/texml-tests/metadata.html +125 -0
  223. package/test/snapshots/texml-tests/metadata.xml +137 -0
  224. package/test/snapshots/texml-tests/missingfile.html +3 -0
  225. package/test/snapshots/texml-tests/missingfile.xml +5 -0
  226. package/test/snapshots/texml-tests/muexpr.html +42 -0
  227. package/test/snapshots/texml-tests/muexpr.xml +20 -0
  228. package/test/snapshots/texml-tests/multicolumn.html +47 -0
  229. package/test/snapshots/texml-tests/multicolumn.xml +25 -0
  230. package/test/snapshots/texml-tests/multirow.html +47 -0
  231. package/test/snapshots/texml-tests/multirow.xml +25 -0
  232. package/test/snapshots/texml-tests/multirowcell.html +50 -0
  233. package/test/snapshots/texml-tests/multirowcell.xml +28 -0
  234. package/test/snapshots/texml-tests/multline.html +71 -0
  235. package/test/snapshots/texml-tests/multline.xml +55 -0
  236. package/test/snapshots/texml-tests/nameref.html +45 -0
  237. package/test/snapshots/texml-tests/nameref.xml +23 -0
  238. package/test/snapshots/texml-tests/noexpand.html +44 -0
  239. package/test/snapshots/texml-tests/noexpand.xml +22 -0
  240. package/test/snapshots/texml-tests/noindent.html +39 -0
  241. package/test/snapshots/texml-tests/noindent.xml +17 -0
  242. package/test/snapshots/texml-tests/null_cs.html +4 -0
  243. package/test/snapshots/texml-tests/null_cs.xml +6 -0
  244. package/test/snapshots/texml-tests/numexpr.html +48 -0
  245. package/test/snapshots/texml-tests/numexpr.xml +26 -0
  246. package/test/snapshots/texml-tests/parshape.html +41 -0
  247. package/test/snapshots/texml-tests/parshape.xml +19 -0
  248. package/test/snapshots/texml-tests/protected.html +47 -0
  249. package/test/snapshots/texml-tests/protected.xml +25 -0
  250. package/test/snapshots/texml-tests/quote.html +43 -0
  251. package/test/snapshots/texml-tests/quote.xml +21 -0
  252. package/test/snapshots/texml-tests/read.html +13 -0
  253. package/test/snapshots/texml-tests/read.xml +15 -0
  254. package/test/snapshots/texml-tests/refrange.html +126 -0
  255. package/test/snapshots/texml-tests/refrange.xml +110 -0
  256. package/test/snapshots/texml-tests/scantokens.html +45 -0
  257. package/test/snapshots/texml-tests/scantokens.xml +23 -0
  258. package/test/snapshots/texml-tests/secmeta.html +27 -0
  259. package/test/snapshots/texml-tests/secmeta.xml +39 -0
  260. package/test/snapshots/texml-tests/section.html +86 -0
  261. package/test/snapshots/texml-tests/section.xml +64 -0
  262. package/test/snapshots/texml-tests/showonlyrefs.html +95 -0
  263. package/test/snapshots/texml-tests/showonlyrefs.xml +85 -0
  264. package/test/snapshots/texml-tests/smash.html +41 -0
  265. package/test/snapshots/texml-tests/smash.xml +21 -0
  266. package/test/snapshots/texml-tests/strcmp.html +41 -0
  267. package/test/snapshots/texml-tests/strcmp.xml +19 -0
  268. package/test/snapshots/texml-tests/string.html +44 -0
  269. package/test/snapshots/texml-tests/string.xml +22 -0
  270. package/test/snapshots/texml-tests/sub_sup.html +50 -0
  271. package/test/snapshots/texml-tests/sub_sup.xml +28 -0
  272. package/test/snapshots/texml-tests/subcaption.html +54 -0
  273. package/test/snapshots/texml-tests/subcaption.xml +32 -0
  274. package/test/snapshots/texml-tests/subfig.html +45 -0
  275. package/test/snapshots/texml-tests/subfig.xml +23 -0
  276. package/test/snapshots/texml-tests/subfigure.html +44 -0
  277. package/test/snapshots/texml-tests/subfigure.xml +22 -0
  278. package/test/snapshots/texml-tests/tableofcontents.html +42 -0
  279. package/test/snapshots/texml-tests/tableofcontents.xml +95 -0
  280. package/test/snapshots/texml-tests/tabular.html +47 -0
  281. package/test/snapshots/texml-tests/tabular.xml +25 -0
  282. package/test/snapshots/texml-tests/tag.html +16 -0
  283. package/test/snapshots/texml-tests/tag.xml +20 -0
  284. package/test/snapshots/texml-tests/tcolorbox.html +43 -0
  285. package/test/snapshots/texml-tests/tcolorbox.xml +21 -0
  286. package/test/snapshots/texml-tests/textequation.html +55 -0
  287. package/test/snapshots/texml-tests/textequation.xml +33 -0
  288. package/test/snapshots/texml-tests/thm-restate.html +94 -0
  289. package/test/snapshots/texml-tests/thm-restate.xml +86 -0
  290. package/test/snapshots/texml-tests/tracingnodes.html +38 -0
  291. package/test/snapshots/texml-tests/tracingnodes.xml +16 -0
  292. package/test/snapshots/texml-tests/unexpanded.html +44 -0
  293. package/test/snapshots/texml-tests/unexpanded.xml +22 -0
  294. package/test/snapshots/texml-tests/unless.html +40 -0
  295. package/test/snapshots/texml-tests/unless.xml +18 -0
  296. package/test/snapshots/texml-tests/upgreek.html +79 -0
  297. package/test/snapshots/texml-tests/upgreek.xml +57 -0
  298. package/test/snapshots/texml-tests/uri.html +12 -0
  299. package/test/snapshots/texml-tests/uri.xml +14 -0
  300. package/test/snapshots/texml-tests/url.html +41 -0
  301. package/test/snapshots/texml-tests/url.xml +19 -0
  302. package/test/snapshots/texml-tests/vlist.html +48 -0
  303. package/test/snapshots/texml-tests/vlist.xml +28 -0
  304. package/test/snapshots/texml-tests/xcolor.html +50 -0
  305. package/test/snapshots/texml-tests/xcolor.xml +28 -0
  306. package/test/snapshots/updateTexmlSnapshots.js +14 -0
  307. package/texml-to-html.js +2 -2
  308. package/lib/elements/article-title.js +0 -26
  309. package/lib/elements/book-title.js +0 -26
  310. package/lib/elements/meta-name.js +0 -29
  311. package/lib/elements/meta-value.js +0 -27
  312. package/lib/elements/subj-group.js +0 -29
  313. package/lib/hacks.js +0 -43
  314. package/out.html +0 -696
  315. package/out2.html +0 -707
  316. package/test/element-inline-formula-disp-formula-tex-math.js +0 -98
  317. package/test/hacks.js +0 -39
@@ -0,0 +1,712 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE article PUBLIC "-//AMS TEXML//DTD MODIFIED JATS (Z39.96) Journal Archiving and Interchange DTD with MathML3 v1.3d2 20201130//EN" "texml-jats-1-3d2.dtd">
3
+ <article xmlns:xlink="http://www.w3.org/1999/xlink">
4
+ <front id="ltxid1">
5
+ <article-meta>
6
+ <title-group>
7
+ <article-title>algorithmic</article-title>
8
+ </title-group>
9
+ </article-meta>
10
+ </front>
11
+ <body id="ltxid2">
12
+ <sec disp-level="1" id="ltxid3" specific-use="section">
13
+ <p>hello, world</p>
14
+ </sec>
15
+ <sec disp-level="1" id="ltxid4" specific-use="section">
16
+ <label>1<x>.</x></label>
17
+ <title>Basic forms</title>
18
+ <sec disp-level="2" id="ltxid5" specific-use="subsection">
19
+ <label>1.1<x>.</x></label>
20
+ <title>The Simple Statement<x>.</x></title>
21
+ <alg:algorithm linenodelimiter=":">
22
+ <alg:line lineno="1">
23
+ <alg:statement>
24
+ <inline-formula content-type="math/tex">
25
+ <tex-math>S \leftarrow O</tex-math>
26
+ </inline-formula>
27
+ </alg:statement>
28
+ </alg:line>
29
+ </alg:algorithm>
30
+ </sec>
31
+ <sec disp-level="2" id="ltxid6" specific-use="subsection">
32
+ <label>1.2<x>.</x></label>
33
+ <title>Simple Statement with Comment<x>.</x></title>
34
+ <alg:algorithm linenodelimiter=":">
35
+ <alg:line lineno="1">
36
+ <alg:statement>
37
+ <inline-formula content-type="math/tex">
38
+ <tex-math>S \leftarrow O</tex-math>
39
+ </inline-formula>
40
+ </alg:statement>
41
+ <alg:comment>comment</alg:comment>
42
+ </alg:line>
43
+ </alg:algorithm>
44
+ </sec>
45
+ <sec disp-level="2" id="ltxid7" specific-use="subsection">
46
+ <label>1.3<x>.</x></label>
47
+ <title>The Precondition (never numbered)<x>.</x></title>
48
+ <alg:algorithm linenodelimiter=":">
49
+ <alg:line>
50
+ <alg:require><bold>Require:</bold> <inline-formula content-type="math/tex"><tex-math>x \neq 0</tex-math></inline-formula> and <inline-formula content-type="math/tex"><tex-math>n \geq 0</tex-math></inline-formula></alg:require>
51
+ <alg:comment>blah blah blah</alg:comment>
52
+ </alg:line>
53
+ </alg:algorithm>
54
+ </sec>
55
+ <sec disp-level="2" id="ltxid8" specific-use="subsection">
56
+ <label>1.4<x>.</x></label>
57
+ <title>The Postcondition (never numbered)<x>.</x></title>
58
+ <alg:algorithm linenodelimiter=":">
59
+ <alg:line>
60
+ <alg:ensure><bold>Ensure:</bold> <inline-formula content-type="math/tex"><tex-math>x \neq 0</tex-math></inline-formula> and <inline-formula content-type="math/tex"><tex-math>n \geq 0</tex-math></inline-formula></alg:ensure>
61
+ <alg:comment>blah blah blah</alg:comment>
62
+ </alg:line>
63
+ </alg:algorithm>
64
+ </sec>
65
+ <sec disp-level="2" id="ltxid9" specific-use="subsection">
66
+ <label>1.5<x>.</x></label>
67
+ <title>Globals<x>.</x></title>
68
+ <alg:algorithm linenodelimiter=":">
69
+ <alg:line lineno="1">
70
+ <alg:globals><bold>globals</bold> <inline-formula content-type="math/tex"><tex-math>x</tex-math></inline-formula>, <inline-formula content-type="math/tex"><tex-math>y</tex-math></inline-formula></alg:globals>
71
+ <alg:comment>blah blah blah</alg:comment>
72
+ </alg:line>
73
+ </alg:algorithm>
74
+ </sec>
75
+ <sec disp-level="2" id="ltxid10" specific-use="subsection">
76
+ <label>1.6<x>.</x></label>
77
+ <title>Inputs<x>.</x></title>
78
+ <alg:algorithm linenodelimiter=":">
79
+ <alg:inputs>
80
+ <alg:line lineno="1">
81
+ <alg:statement>
82
+ <bold>inputs</bold>
83
+ </alg:statement>
84
+ <alg:comment>comment</alg:comment>
85
+ </alg:line>
86
+ <alg:block>
87
+ <alg:line lineno="2">
88
+ <alg:statement><inline-formula content-type="math/tex"><tex-math>x</tex-math></inline-formula>, <inline-formula content-type="math/tex"><tex-math>y</tex-math></inline-formula></alg:statement>
89
+ </alg:line>
90
+ </alg:block>
91
+ </alg:inputs>
92
+ </alg:algorithm>
93
+ </sec>
94
+ <sec disp-level="2" id="ltxid11" specific-use="subsection">
95
+ <label>1.7<x>.</x></label>
96
+ <title>Outputs<x>.</x></title>
97
+ <alg:algorithm linenodelimiter=":">
98
+ <alg:outputs>
99
+ <alg:line lineno="1">
100
+ <alg:statement>
101
+ <bold>outputs</bold>
102
+ </alg:statement>
103
+ <alg:comment>comment</alg:comment>
104
+ </alg:line>
105
+ <alg:block>
106
+ <alg:line lineno="2">
107
+ <alg:statement><inline-formula content-type="math/tex"><tex-math>x</tex-math></inline-formula>, <inline-formula content-type="math/tex"><tex-math>y</tex-math></inline-formula></alg:statement>
108
+ </alg:line>
109
+ </alg:block>
110
+ </alg:outputs>
111
+ </alg:algorithm>
112
+ </sec>
113
+ <sec disp-level="2" id="ltxid12" specific-use="subsection">
114
+ <label>1.8<x>.</x></label>
115
+ <title>The body<x>.</x></title>
116
+ <alg:algorithm linenodelimiter=":">
117
+ <alg:body>
118
+ <alg:line lineno="1">
119
+ <alg:statement>
120
+ <bold>do</bold>
121
+ </alg:statement>
122
+ <alg:comment>comment</alg:comment>
123
+ </alg:line>
124
+ <alg:block>
125
+ <alg:line lineno="2">
126
+ <alg:statement>something 1</alg:statement>
127
+ </alg:line>
128
+ <alg:line lineno="3">
129
+ <alg:statement>something 2</alg:statement>
130
+ </alg:line>
131
+ </alg:block>
132
+ </alg:body>
133
+ </alg:algorithm>
134
+ </sec>
135
+ <sec disp-level="2" id="ltxid13" specific-use="subsection">
136
+ <label>1.9<x>.</x></label>
137
+ <title>The <italic toggle="yes">if-then-else</italic> Statement<x>.</x></title>
138
+ <alg:algorithm linenodelimiter=":">
139
+ <alg:if>
140
+ <alg:condition>
141
+ <alg:line lineno="1">
142
+ <alg:statement><bold>if</bold> some condition is true <bold>then</bold></alg:statement>
143
+ <alg:comment>comment</alg:comment>
144
+ </alg:line>
145
+ </alg:condition>
146
+ <alg:block>
147
+ <alg:line lineno="2">
148
+ <alg:statement>do some processing</alg:statement>
149
+ </alg:line>
150
+ </alg:block>
151
+ <alg:elsif>
152
+ <alg:condition>
153
+ <alg:line lineno="3">
154
+ <alg:statement><bold>else</bold> <bold>if</bold> some other condition is true <bold>then</bold></alg:statement>
155
+ <alg:comment>comment</alg:comment>
156
+ </alg:line>
157
+ </alg:condition>
158
+ <alg:block>
159
+ <alg:line lineno="4">
160
+ <alg:statement>do some different processing</alg:statement>
161
+ </alg:line>
162
+ </alg:block>
163
+ </alg:elsif>
164
+ <alg:elsif>
165
+ <alg:condition>
166
+ <alg:line lineno="5">
167
+ <alg:statement><bold>else</bold> <bold>if</bold> some even more bizarre condition is met <bold>then</bold></alg:statement>
168
+ <alg:comment>comment</alg:comment>
169
+ </alg:line>
170
+ </alg:condition>
171
+ <alg:block>
172
+ <alg:line lineno="6">
173
+ <alg:statement>do something else</alg:statement>
174
+ </alg:line>
175
+ </alg:block>
176
+ </alg:elsif>
177
+ <alg:else>
178
+ <alg:line lineno="7">
179
+ <alg:statement>
180
+ <bold>else</bold>
181
+ </alg:statement>
182
+ <alg:comment>comment</alg:comment>
183
+ </alg:line>
184
+ <alg:block>
185
+ <alg:line lineno="8">
186
+ <alg:statement>do the default actions</alg:statement>
187
+ </alg:line>
188
+ </alg:block>
189
+ </alg:else>
190
+ <alg:line lineno="9">
191
+ <alg:statement><bold>end</bold> <bold>if</bold></alg:statement>
192
+ </alg:line>
193
+ </alg:if>
194
+ </alg:algorithm>
195
+ </sec>
196
+ <sec disp-level="2" id="ltxid14" specific-use="subsection">
197
+ <label>1.10<x>.</x></label>
198
+ <title>The <italic toggle="yes">for</italic> Loop<x>.</x></title>
199
+ <alg:algorithm linenodelimiter=":">
200
+ <alg:for>
201
+ <alg:condition>
202
+ <alg:line lineno="1">
203
+ <alg:statement><bold>for</bold> <inline-formula content-type="math/tex"><tex-math>i=0</tex-math></inline-formula> to <inline-formula content-type="math/tex"><tex-math>10</tex-math></inline-formula> <bold>do</bold></alg:statement>
204
+ <alg:comment>comment</alg:comment>
205
+ </alg:line>
206
+ </alg:condition>
207
+ <alg:block>
208
+ <alg:line lineno="2">
209
+ <alg:statement>carry out some processing</alg:statement>
210
+ </alg:line>
211
+ </alg:block>
212
+ <alg:line lineno="3">
213
+ <alg:statement><bold>end</bold> <bold>for</bold></alg:statement>
214
+ </alg:line>
215
+ </alg:for>
216
+ </alg:algorithm>
217
+ <alg:algorithm linenodelimiter=":">
218
+ <alg:forall>
219
+ <alg:condition>
220
+ <alg:line lineno="1">
221
+ <alg:statement><bold>for all</bold> <inline-formula content-type="math/tex"><tex-math>i</tex-math></inline-formula> such that <inline-formula content-type="math/tex"><tex-math>0\leq i\leq 10</tex-math></inline-formula> <bold>do</bold></alg:statement>
222
+ <alg:comment>comment</alg:comment>
223
+ </alg:line>
224
+ </alg:condition>
225
+ <alg:block>
226
+ <alg:line lineno="2">
227
+ <alg:statement>carry out some processing</alg:statement>
228
+ </alg:line>
229
+ </alg:block>
230
+ <alg:line lineno="3">
231
+ <alg:statement><bold>end</bold> <bold>for</bold></alg:statement>
232
+ </alg:line>
233
+ </alg:forall>
234
+ </alg:algorithm>
235
+ <alg:algorithm linenodelimiter=":">
236
+ <alg:for>
237
+ <alg:condition>
238
+ <alg:line lineno="1">
239
+ <alg:statement><bold>for</bold> <inline-formula content-type="math/tex"><tex-math>i=0</tex-math></inline-formula> <bold>to</bold> <inline-formula content-type="math/tex"><tex-math>10</tex-math></inline-formula> <bold>do</bold></alg:statement>
240
+ <alg:comment>comment</alg:comment>
241
+ </alg:line>
242
+ </alg:condition>
243
+ <alg:block>
244
+ <alg:line lineno="2">
245
+ <alg:statement>carry out some processing</alg:statement>
246
+ </alg:line>
247
+ </alg:block>
248
+ <alg:line lineno="3">
249
+ <alg:statement><bold>end</bold> <bold>for</bold></alg:statement>
250
+ </alg:line>
251
+ </alg:for>
252
+ </alg:algorithm>
253
+ </sec>
254
+ <sec disp-level="2" id="ltxid15" specific-use="subsection">
255
+ <label>1.11<x>.</x></label>
256
+ <title>The <italic toggle="yes">while</italic> Loop<x>.</x></title>
257
+ <alg:algorithm linenodelimiter=":">
258
+ <alg:while>
259
+ <alg:condition>
260
+ <alg:line lineno="1">
261
+ <alg:statement><bold>while</bold> some condition holds <bold>do</bold></alg:statement>
262
+ <alg:comment>comment</alg:comment>
263
+ </alg:line>
264
+ </alg:condition>
265
+ <alg:block>
266
+ <alg:line lineno="2">
267
+ <alg:statement>carry out some processing</alg:statement>
268
+ </alg:line>
269
+ </alg:block>
270
+ <alg:line lineno="3">
271
+ <alg:statement><bold>end</bold> <bold>while</bold></alg:statement>
272
+ </alg:line>
273
+ </alg:while>
274
+ </alg:algorithm>
275
+ </sec>
276
+ <sec disp-level="2" id="ltxid16" specific-use="subsection">
277
+ <label>1.12<x>.</x></label>
278
+ <title>The <italic toggle="yes">repeat-until</italic> Loop<x>.</x></title>
279
+ <alg:algorithm linenodelimiter=":">
280
+ <alg:repeat>
281
+ <alg:condition>
282
+ <alg:line lineno="1">
283
+ <alg:statement>
284
+ <bold>repeat</bold>
285
+ </alg:statement>
286
+ <alg:comment>comment</alg:comment>
287
+ </alg:line>
288
+ </alg:condition>
289
+ <alg:block>
290
+ <alg:line lineno="2">
291
+ <alg:statement>carry out some processing</alg:statement>
292
+ </alg:line>
293
+ </alg:block>
294
+ <alg:until>
295
+ <alg:condition>
296
+ <alg:line lineno="3">
297
+ <alg:statement><bold>until</bold> some condition is met</alg:statement>
298
+ </alg:line>
299
+ </alg:condition>
300
+ </alg:until>
301
+ </alg:repeat>
302
+ </alg:algorithm>
303
+ </sec>
304
+ <sec disp-level="2" id="ltxid17" specific-use="subsection">
305
+ <label>1.13<x>.</x></label>
306
+ <title>The Infinite Loop<x>.</x></title>
307
+ <alg:algorithm linenodelimiter=":">
308
+ <alg:loop>
309
+ <alg:condition>
310
+ <alg:line lineno="1">
311
+ <alg:statement>
312
+ <bold>loop</bold>
313
+ </alg:statement>
314
+ <alg:comment>comment</alg:comment>
315
+ </alg:line>
316
+ </alg:condition>
317
+ <alg:block>
318
+ <alg:line lineno="2">
319
+ <alg:statement>this processing will be repeated forever</alg:statement>
320
+ </alg:line>
321
+ </alg:block>
322
+ <alg:line lineno="3">
323
+ <alg:statement><bold>end</bold> <bold>loop</bold></alg:statement>
324
+ </alg:line>
325
+ </alg:loop>
326
+ </alg:algorithm>
327
+ </sec>
328
+ <sec disp-level="2" id="ltxid18" specific-use="subsection">
329
+ <label>1.14<x>.</x></label>
330
+ <title>Returning Values<x>.</x></title>
331
+ <alg:algorithm linenodelimiter=":">
332
+ <alg:line lineno="1">
333
+ <alg:statement><bold>return</bold> <inline-formula content-type="math/tex"><tex-math>(x+y)/2</tex-math></inline-formula></alg:statement>
334
+ </alg:line>
335
+ </alg:algorithm>
336
+ </sec>
337
+ <sec disp-level="2" id="ltxid19" specific-use="subsection">
338
+ <label>1.15<x>.</x></label>
339
+ <title>Printing Messages<x>.</x></title>
340
+ <alg:algorithm linenodelimiter=":">
341
+ <alg:line lineno="1">
342
+ <alg:statement><bold>print</bold> <monospace>``Hello, World!''</monospace></alg:statement>
343
+ </alg:line>
344
+ </alg:algorithm>
345
+ </sec>
346
+ </sec>
347
+ <sec disp-level="1" id="ltxid20" specific-use="section">
348
+ <label>2<x>.</x></label>
349
+ <title>Some longer examples</title>
350
+ <sec disp-level="2" id="ltxid21" specific-use="subsection">
351
+ <label>2.1<x>.</x></label>
352
+ <title><italic toggle="yes">if-elsif-else</italic><x>.</x></title>
353
+ <alg:algorithm linenodelimiter=":">
354
+ <alg:line>
355
+ <alg:statement>
356
+ <inline-formula content-type="math/tex">
357
+ <tex-math>a \leftarrow 1</tex-math>
358
+ </inline-formula>
359
+ </alg:statement>
360
+ </alg:line>
361
+ <alg:if>
362
+ <alg:condition>
363
+ <alg:line>
364
+ <alg:statement><bold>if</bold> <inline-formula content-type="math/tex"><tex-math>a</tex-math></inline-formula> is even <bold>then</bold></alg:statement>
365
+ </alg:line>
366
+ </alg:condition>
367
+ <alg:block>
368
+ <alg:line lineno="3">
369
+ <alg:statement><bold>print</bold> “<inline-formula content-type="math/tex"><tex-math>a</tex-math></inline-formula> is even”</alg:statement>
370
+ </alg:line>
371
+ </alg:block>
372
+ <alg:elsif>
373
+ <alg:condition>
374
+ <alg:line>
375
+ <alg:statement><bold>else</bold> <bold>if</bold> <inline-formula content-type="math/tex"><tex-math>a</tex-math></inline-formula> is odd <bold>then</bold></alg:statement>
376
+ </alg:line>
377
+ </alg:condition>
378
+ <alg:block>
379
+ <alg:line>
380
+ <alg:statement><bold>print</bold> “<inline-formula content-type="math/tex"><tex-math>a</tex-math></inline-formula> is odd”</alg:statement>
381
+ </alg:line>
382
+ </alg:block>
383
+ </alg:elsif>
384
+ <alg:else>
385
+ <alg:line lineno="6">
386
+ <alg:statement>
387
+ <bold>else</bold>
388
+ </alg:statement>
389
+ </alg:line>
390
+ <alg:block>
391
+ <alg:line>
392
+ <alg:statement><bold>print</bold> “<inline-formula content-type="math/tex"><tex-math>a</tex-math></inline-formula> is really weird”</alg:statement>
393
+ </alg:line>
394
+ </alg:block>
395
+ </alg:else>
396
+ <alg:line>
397
+ <alg:statement><bold>end</bold> <bold>if</bold></alg:statement>
398
+ </alg:line>
399
+ </alg:if>
400
+ </alg:algorithm>
401
+ </sec>
402
+ <sec disp-level="2" id="ltxid22" specific-use="subsection">
403
+ <label>2.2<x>.</x></label>
404
+ <title>Nested structures<x>.</x></title>
405
+ <alg:algorithm linenodelimiter=":">
406
+ <alg:line>
407
+ <alg:require><bold>Require:</bold> <inline-formula content-type="math/tex"><tex-math>n \geq 0</tex-math></inline-formula></alg:require>
408
+ </alg:line>
409
+ <alg:line>
410
+ <alg:ensure><bold>Ensure:</bold> <inline-formula content-type="math/tex"><tex-math>y = x^n</tex-math></inline-formula></alg:ensure>
411
+ </alg:line>
412
+ <alg:line>
413
+ <alg:statement>
414
+ <inline-formula content-type="math/tex">
415
+ <tex-math>y \leftarrow 1</tex-math>
416
+ </inline-formula>
417
+ </alg:statement>
418
+ </alg:line>
419
+ <alg:line>
420
+ <alg:statement>
421
+ <inline-formula content-type="math/tex">
422
+ <tex-math>X \leftarrow x</tex-math>
423
+ </inline-formula>
424
+ </alg:statement>
425
+ </alg:line>
426
+ <alg:line>
427
+ <alg:statement>
428
+ <inline-formula content-type="math/tex">
429
+ <tex-math>N \leftarrow n</tex-math>
430
+ </inline-formula>
431
+ </alg:statement>
432
+ </alg:line>
433
+ <alg:while>
434
+ <alg:condition>
435
+ <alg:line>
436
+ <alg:statement><bold>while</bold> <inline-formula content-type="math/tex"><tex-math>N \neq 0</tex-math></inline-formula> <bold>do</bold></alg:statement>
437
+ </alg:line>
438
+ </alg:condition>
439
+ <alg:block>
440
+ <alg:if>
441
+ <alg:condition>
442
+ <alg:line>
443
+ <alg:statement><bold>if</bold> <inline-formula content-type="math/tex"><tex-math>N</tex-math></inline-formula> is even <bold>then</bold></alg:statement>
444
+ </alg:line>
445
+ </alg:condition>
446
+ <alg:block>
447
+ <alg:line>
448
+ <alg:statement>
449
+ <inline-formula content-type="math/tex">
450
+ <tex-math>X \leftarrow X \times X</tex-math>
451
+ </inline-formula>
452
+ </alg:statement>
453
+ </alg:line>
454
+ <alg:line>
455
+ <alg:statement>
456
+ <inline-formula content-type="math/tex">
457
+ <tex-math>N \leftarrow N / 2</tex-math>
458
+ </inline-formula>
459
+ </alg:statement>
460
+ </alg:line>
461
+ </alg:block>
462
+ <alg:else>
463
+ <alg:line>
464
+ <alg:statement>
465
+ <bold>else</bold>
466
+ </alg:statement>
467
+ <alg:comment><inline-formula content-type="math/tex"><tex-math>N</tex-math></inline-formula> is odd</alg:comment>
468
+ </alg:line>
469
+ <alg:block>
470
+ <alg:line>
471
+ <alg:statement>
472
+ <inline-formula content-type="math/tex">
473
+ <tex-math>y \leftarrow y \times X</tex-math>
474
+ </inline-formula>
475
+ </alg:statement>
476
+ </alg:line>
477
+ <alg:line>
478
+ <alg:statement>
479
+ <inline-formula content-type="math/tex">
480
+ <tex-math>N \leftarrow N - 1</tex-math>
481
+ </inline-formula>
482
+ </alg:statement>
483
+ </alg:line>
484
+ </alg:block>
485
+ </alg:else>
486
+ <alg:line>
487
+ <alg:statement><bold>end</bold> <bold>if</bold></alg:statement>
488
+ </alg:line>
489
+ </alg:if>
490
+ </alg:block>
491
+ <alg:line>
492
+ <alg:statement><bold>end</bold> <bold>while</bold></alg:statement>
493
+ </alg:line>
494
+ </alg:while>
495
+ </alg:algorithm>
496
+ </sec>
497
+ <sec disp-level="2" id="ltxid23" specific-use="subsection">
498
+ <label>2.3<x>.</x></label>
499
+ <title>mcom3655<x>.</x></title>
500
+ <alg:algorithm linenodelimiter=":">
501
+ <alg:line>
502
+ <alg:statement><bold>Input:</bold> Choose an arbitrary <inline-formula content-type="math/tex"><tex-math>\alpha _{{{L}}}^{0}\in \mathbb{C}^{{{(L+1)^2}}}</tex-math></inline-formula>, <inline-formula content-type="math/tex"><tex-math>\{\epsilon ^{k}\}</tex-math></inline-formula> with <inline-formula content-type="math/tex"><tex-math>\epsilon ^{k}&gt;0</tex-math></inline-formula>. Set <inline-formula content-type="math/tex"><tex-math>k=0</tex-math></inline-formula>.</alg:statement>
503
+ </alg:line>
504
+ <alg:while>
505
+ <alg:condition>
506
+ <alg:line>
507
+ <alg:statement><bold>while</bold> a termination criterion is not met, <bold>do</bold></alg:statement>
508
+ </alg:line>
509
+ </alg:condition>
510
+ <alg:block>
511
+ <alg:line>
512
+ <alg:statement>1) Solve the weighted <inline-formula content-type="math/tex"><tex-math>\ell _{2}</tex-math></inline-formula> minimization problem<disp-formula content-type="math/tex"><tex-math>\begin{equation}
513
+ \alpha ^{k+1}_{l\cdot }=\arg \min \limits _{\alpha _{l\cdot }\in \mathbb{C}^{2l+1}} \left\{ \frac{1}{2}\|\alpha _{l\cdot }-\alpha _{l\cdot }^{\circ }\|_{2}^{2}+\frac{1}{2}\lambda p\beta _{l}w_{l}^{k}\|\alpha _{l\cdot }\|_{2}^{2}\right\},{{l=0,1,\ldots ,L}}, <target id="alpha"><tag parens="yes">1</tag></target>
514
+ \end{equation}</tex-math></disp-formula>where <inline-formula content-type="math/tex"><tex-math>w_{l}^{k}=(\|\alpha ^{k}_{l\cdot }\|_{2}^{2}+\epsilon ^{k})^{\frac{p}{2}-1}</tex-math></inline-formula>.</alg:statement>
515
+ </alg:line>
516
+ <alg:line>
517
+ <alg:statement>2) Set <inline-formula content-type="math/tex"><tex-math>k\leftarrow k+1</tex-math></inline-formula> and go to step 1).</alg:statement>
518
+ </alg:line>
519
+ </alg:block>
520
+ <alg:line>
521
+ <alg:statement><bold>end</bold> <bold>while</bold></alg:statement>
522
+ </alg:line>
523
+ </alg:while>
524
+ </alg:algorithm>
525
+ </sec>
526
+ <sec disp-level="2" id="ltxid24" specific-use="subsection">
527
+ <label>2.4<x>.</x></label>
528
+ <title>mcom3356<x>.</x></title>
529
+ <alg:algorithm linenodelimiter=":">
530
+ <alg:line>
531
+ <alg:require><bold>Require:</bold> A lower trapezoidal <inline-formula content-type="math/tex"><tex-math>n\times (n-1)</tex-math></inline-formula> matrix <inline-formula content-type="math/tex"><tex-math>\mathbf{H}=(h_{i,j})</tex-math></inline-formula> with <inline-formula content-type="math/tex"><tex-math>h_{i,j}=0</tex-math></inline-formula> if <inline-formula content-type="math/tex"><tex-math>j&gt;i</tex-math></inline-formula> and <inline-formula content-type="math/tex"><tex-math>h_{j,j}\ne 0</tex-math></inline-formula>.</alg:require>
532
+ </alg:line>
533
+ <alg:line>
534
+ <alg:ensure><bold>Ensure:</bold> A unimodular matrix <inline-formula content-type="math/tex"><tex-math>\mathbf{D}</tex-math></inline-formula> such that <inline-formula content-type="math/tex"><tex-math>\mathbf{H}:=\mathbf{D}\cdot \mathbf{H} = (h_{i,j})</tex-math></inline-formula> satisfying <inline-formula content-type="math/tex"><tex-math>|h_{i,j}|\le |h_{j,j}|/2</tex-math></inline-formula> for <inline-formula content-type="math/tex"><tex-math>1\le j&lt;i\le n</tex-math></inline-formula>.</alg:ensure>
535
+ </alg:line>
536
+ <alg:line lineno="1">
537
+ <alg:statement><inline-formula content-type="math/tex"><tex-math>\mathbf{D} := \mathbf{I}_n</tex-math></inline-formula>.</alg:statement>
538
+ </alg:line>
539
+ <alg:for>
540
+ <alg:condition>
541
+ <alg:line lineno="2">
542
+ <alg:statement><bold>for</bold> <inline-formula content-type="math/tex"><tex-math>i</tex-math></inline-formula> from <inline-formula content-type="math/tex"><tex-math>2</tex-math></inline-formula> to <inline-formula content-type="math/tex"><tex-math>n</tex-math></inline-formula> <bold>do</bold></alg:statement>
543
+ </alg:line>
544
+ </alg:condition>
545
+ <alg:block>
546
+ <alg:for>
547
+ <alg:condition>
548
+ <alg:line lineno="3">
549
+ <alg:statement><bold>for</bold> <inline-formula content-type="math/tex"><tex-math>j</tex-math></inline-formula> from <inline-formula content-type="math/tex"><tex-math>i-1</tex-math></inline-formula> to <inline-formula content-type="math/tex"><tex-math>1</tex-math></inline-formula> by stepsize <inline-formula content-type="math/tex"><tex-math>-1</tex-math></inline-formula> <bold>do</bold></alg:statement>
550
+ </alg:line>
551
+ </alg:condition>
552
+ <alg:block>
553
+ <alg:line lineno="4">
554
+ <alg:statement><inline-formula content-type="math/tex"><tex-math>q :=\lfloor h_{i,j}/h_{j,j}+0.5\rfloor </tex-math></inline-formula>.</alg:statement>
555
+ </alg:line>
556
+ <alg:for>
557
+ <alg:condition>
558
+ <alg:line lineno="5">
559
+ <alg:statement><bold>for</bold> <inline-formula content-type="math/tex"><tex-math>k</tex-math></inline-formula> from <inline-formula content-type="math/tex"><tex-math>1</tex-math></inline-formula> to <inline-formula content-type="math/tex"><tex-math>n</tex-math></inline-formula> <bold>do</bold></alg:statement>
560
+ </alg:line>
561
+ </alg:condition>
562
+ <alg:block>
563
+ <alg:line lineno="6">
564
+ <alg:statement><inline-formula content-type="math/tex"><tex-math>d_{i,k}:= d_{i,k}-qd_{j,k}</tex-math></inline-formula>.</alg:statement>
565
+ </alg:line>
566
+ </alg:block>
567
+ <alg:line lineno="7">
568
+ <alg:statement><bold>end</bold> <bold>for</bold></alg:statement>
569
+ </alg:line>
570
+ </alg:for>
571
+ </alg:block>
572
+ <alg:line lineno="8">
573
+ <alg:statement><bold>end</bold> <bold>for</bold></alg:statement>
574
+ </alg:line>
575
+ </alg:for>
576
+ </alg:block>
577
+ <alg:line lineno="9">
578
+ <alg:statement><bold>end</bold> <bold>for</bold></alg:statement>
579
+ </alg:line>
580
+ </alg:for>
581
+ </alg:algorithm>
582
+ </sec>
583
+ <sec disp-level="2" id="ltxid25" specific-use="subsection">
584
+ <label>2.5<x>.</x></label>
585
+ <title>mcom3363<x>.</x></title>
586
+ <alg:algorithm linenodelimiter=":">
587
+ <alg:line>
588
+ <alg:require><bold>Require:</bold> A polynomial <inline-formula content-type="math/tex"><tex-math>h</tex-math></inline-formula> with irreducible factors of degree <inline-formula content-type="math/tex"><tex-math>d</tex-math></inline-formula> over <inline-formula content-type="math/tex"><tex-math>k=\mathbb{F}_q[X]/f(X)</tex-math></inline-formula>.</alg:require>
589
+ </alg:line>
590
+ <alg:line>
591
+ <alg:ensure><bold>Ensure:</bold> An irreducible factor of <inline-formula content-type="math/tex"><tex-math>h</tex-math></inline-formula> over <inline-formula content-type="math/tex"><tex-math>k</tex-math></inline-formula>.</alg:ensure>
592
+ </alg:line>
593
+ <alg:line lineno="1">
594
+ <alg:statement>If <inline-formula content-type="math/tex"><tex-math>\deg h = d</tex-math></inline-formula> return <inline-formula content-type="math/tex"><tex-math>h</tex-math></inline-formula>.</alg:statement>
595
+ </alg:line>
596
+ <alg:line lineno="2">
597
+ <alg:statement>Take a random polynomial <inline-formula content-type="math/tex"><tex-math>a_0\in k[Z]</tex-math></inline-formula> of degree less than <inline-formula content-type="math/tex"><tex-math>\deg h</tex-math></inline-formula>,</alg:statement>
598
+ </alg:line>
599
+ <alg:line lineno="3">
600
+ <alg:statement>Compute <inline-formula content-type="math/tex"><tex-math>a_1 \leftarrow \sum _{i=0}^{md-1} a_0^{q^i} \mod h</tex-math></inline-formula>,</alg:statement>
601
+ </alg:line>
602
+ <alg:if>
603
+ <alg:condition>
604
+ <alg:line lineno="4">
605
+ <alg:statement><bold>if</bold> <inline-formula content-type="math/tex"><tex-math>q</tex-math></inline-formula> is an even power <inline-formula content-type="math/tex"><tex-math>q=2^e</tex-math></inline-formula> <bold>then</bold></alg:statement>
606
+ </alg:line>
607
+ </alg:condition>
608
+ <alg:block>
609
+ <alg:line lineno="5">
610
+ <alg:statement>Compute <inline-formula content-type="math/tex"><tex-math>a_2 \leftarrow \sum _{i=0}^{e-1} a_1^{2^i}\mod h</tex-math></inline-formula></alg:statement>
611
+ </alg:line>
612
+ </alg:block>
613
+ <alg:else>
614
+ <alg:line lineno="6">
615
+ <alg:statement>
616
+ <bold>else</bold>
617
+ </alg:statement>
618
+ </alg:line>
619
+ <alg:block>
620
+ <alg:line lineno="7">
621
+ <alg:statement>Compute <inline-formula content-type="math/tex"><tex-math>a_2 \leftarrow a_1^{(q-1)/2}\mod h</tex-math></inline-formula></alg:statement>
622
+ </alg:line>
623
+ </alg:block>
624
+ </alg:else>
625
+ <alg:line lineno="8">
626
+ <alg:statement><bold>end</bold> <bold>if</bold></alg:statement>
627
+ </alg:line>
628
+ </alg:if>
629
+ <alg:line lineno="9">
630
+ <alg:statement>Compute <inline-formula content-type="math/tex"><tex-math>h_0\leftarrow \gcd (a_2,h)</tex-math></inline-formula> and <inline-formula content-type="math/tex"><tex-math>h_1\leftarrow \gcd (a_2-1,h)</tex-math></inline-formula> and <inline-formula content-type="math/tex"><tex-math>h_{-1}\leftarrow h/(h_0h_1)</tex-math></inline-formula>,</alg:statement>
631
+ </alg:line>
632
+ <alg:line lineno="10">
633
+ <alg:statement>Apply recursively to the smallest non-constant polynomial among <inline-formula content-type="math/tex"><tex-math>h_0,h_1,h_{-1}</tex-math></inline-formula>.</alg:statement>
634
+ </alg:line>
635
+ </alg:algorithm>
636
+ </sec>
637
+ <sec disp-level="2" id="ltxid26" specific-use="subsection">
638
+ <label>2.6<x>.</x></label>
639
+ <title>mcom3385 (with endtags=no)<x>.</x></title>
640
+ <alg:algorithm linenodelimiter=":">
641
+ <alg:line>
642
+ <alg:require><bold>Require:</bold> A rational number <inline-formula content-type="math/tex"><tex-math>\alpha =a/b</tex-math></inline-formula>.</alg:require>
643
+ </alg:line>
644
+ <alg:line>
645
+ <alg:ensure><bold>Ensure:</bold> The algorithm tells whether the RCF expansion of <inline-formula content-type="math/tex"><tex-math>\alpha </tex-math></inline-formula> is finite or periodic.</alg:ensure>
646
+ </alg:line>
647
+ <alg:line lineno="1">
648
+ <alg:statement>
649
+ <inline-formula content-type="math/tex">
650
+ <tex-math>x:=\alpha </tex-math>
651
+ </inline-formula>
652
+ </alg:statement>
653
+ </alg:line>
654
+ <alg:line lineno="2">
655
+ <alg:statement>
656
+ <inline-formula content-type="math/tex">
657
+ <tex-math>B_1:=\max \left(\frac{\log b}{\log \ell },2\right)</tex-math>
658
+ </inline-formula>
659
+ </alg:statement>
660
+ </alg:line>
661
+ <alg:for>
662
+ <alg:condition>
663
+ <alg:line lineno="3">
664
+ <alg:statement><bold>for</bold> <inline-formula content-type="math/tex"><tex-math>i=1</tex-math></inline-formula> to <inline-formula content-type="math/tex"><tex-math>B_1</tex-math></inline-formula> <bold>do</bold></alg:statement>
665
+ </alg:line>
666
+ </alg:condition>
667
+ <alg:block>
668
+ <alg:if>
669
+ <alg:condition>
670
+ <alg:line lineno="4">
671
+ <alg:statement><bold>if</bold> <inline-formula content-type="math/tex"><tex-math>x&lt;0</tex-math></inline-formula> <bold>then</bold></alg:statement>
672
+ </alg:line>
673
+ </alg:condition>
674
+ <alg:block>
675
+ <alg:line lineno="5">
676
+ <alg:statement><bold>return</bold> The expansion is periodic.</alg:statement>
677
+ </alg:line>
678
+ </alg:block>
679
+ </alg:if>
680
+ <alg:line lineno="6">
681
+ <alg:statement>
682
+ <inline-formula content-type="math/tex">
683
+ <tex-math>y:=x-\lfloor x\rfloor _\ell </tex-math>
684
+ </inline-formula>
685
+ </alg:statement>
686
+ </alg:line>
687
+ <alg:if>
688
+ <alg:condition>
689
+ <alg:line lineno="7">
690
+ <alg:statement><bold>if</bold> <inline-formula content-type="math/tex"><tex-math>y==0</tex-math></inline-formula> <bold>then</bold></alg:statement>
691
+ </alg:line>
692
+ </alg:condition>
693
+ <alg:block>
694
+ <alg:line lineno="8">
695
+ <alg:statement><bold>return</bold> The expansion is finite.</alg:statement>
696
+ </alg:line>
697
+ </alg:block>
698
+ </alg:if>
699
+ <alg:line lineno="9">
700
+ <alg:statement>
701
+ <inline-formula content-type="math/tex">
702
+ <tex-math>x:=1/y</tex-math>
703
+ </inline-formula>
704
+ </alg:statement>
705
+ </alg:line>
706
+ </alg:block>
707
+ </alg:for>
708
+ </alg:algorithm>
709
+ </sec>
710
+ </sec>
711
+ </body>
712
+ </article>