ctrlsys 1.0.19__tar.gz

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 (1351) hide show
  1. ctrlsys-1.0.19/.agent/rules/slicot-fortran-c11-translator.md +44 -0
  2. ctrlsys-1.0.19/.agent/workflows/translate_slicot_routine.md +48 -0
  3. ctrlsys-1.0.19/.clangd +2 -0
  4. ctrlsys-1.0.19/.claude/agents/slicot-fortran-translator.md +570 -0
  5. ctrlsys-1.0.19/.github/workflows/codeql.yml +46 -0
  6. ctrlsys-1.0.19/.github/workflows/publish.yml +205 -0
  7. ctrlsys-1.0.19/.github/workflows/test.yml +121 -0
  8. ctrlsys-1.0.19/.gitignore +67 -0
  9. ctrlsys-1.0.19/.gitmodules +3 -0
  10. ctrlsys-1.0.19/.readthedocs.yaml +17 -0
  11. ctrlsys-1.0.19/CHANGELOG.md +108 -0
  12. ctrlsys-1.0.19/CLAUDE.md +206 -0
  13. ctrlsys-1.0.19/LICENSE +39 -0
  14. ctrlsys-1.0.19/LICENSE-SLICOT +29 -0
  15. ctrlsys-1.0.19/PKG-INFO +91 -0
  16. ctrlsys-1.0.19/README.md +62 -0
  17. ctrlsys-1.0.19/benchmarks/README.md +78 -0
  18. ctrlsys-1.0.19/benchmarks/common/data_loader.h +322 -0
  19. ctrlsys-1.0.19/benchmarks/common/timing.h +70 -0
  20. ctrlsys-1.0.19/benchmarks/conftest.py +198 -0
  21. ctrlsys-1.0.19/benchmarks/meson.build +170 -0
  22. ctrlsys-1.0.19/benchmarks/native/bench_bb01ad.c +95 -0
  23. ctrlsys-1.0.19/benchmarks/native/bench_bb02ad.c +95 -0
  24. ctrlsys-1.0.19/benchmarks/native/bench_bb03ad.c +88 -0
  25. ctrlsys-1.0.19/benchmarks/native/bench_bb04ad.c +88 -0
  26. ctrlsys-1.0.19/benchmarks/native/bench_bd01ad.c +93 -0
  27. ctrlsys-1.0.19/benchmarks/native/bench_bd02ad.c +91 -0
  28. ctrlsys-1.0.19/benchmarks/native/bench_sb02md.c +121 -0
  29. ctrlsys-1.0.19/benchmarks/native/bench_sb02od.c +133 -0
  30. ctrlsys-1.0.19/benchmarks/native/bench_sb03md.c +131 -0
  31. ctrlsys-1.0.19/benchmarks/native/bench_sb03od.c +142 -0
  32. ctrlsys-1.0.19/benchmarks/test_descriptor.py +55 -0
  33. ctrlsys-1.0.19/benchmarks/test_generators.py +56 -0
  34. ctrlsys-1.0.19/benchmarks/test_lyapunov.py +52 -0
  35. ctrlsys-1.0.19/benchmarks/test_riccati.py +72 -0
  36. ctrlsys-1.0.19/docker/Dockerfile.asan +25 -0
  37. ctrlsys-1.0.19/docs/_static/.gitkeep +0 -0
  38. ctrlsys-1.0.19/docs/_templates/.gitkeep +0 -0
  39. ctrlsys-1.0.19/docs/api/index.rst +739 -0
  40. ctrlsys-1.0.19/docs/conf.py +40 -0
  41. ctrlsys-1.0.19/docs/guide.rst +298 -0
  42. ctrlsys-1.0.19/docs/history.md +292 -0
  43. ctrlsys-1.0.19/docs/incomplete_translations.md +162 -0
  44. ctrlsys-1.0.19/docs/index.rst +49 -0
  45. ctrlsys-1.0.19/docs/installation.rst +49 -0
  46. ctrlsys-1.0.19/docs/quickstart.rst +69 -0
  47. ctrlsys-1.0.19/docs/requirements.txt +3 -0
  48. ctrlsys-1.0.19/include/slicot/ab.h +2840 -0
  49. ctrlsys-1.0.19/include/slicot/ag.h +282 -0
  50. ctrlsys-1.0.19/include/slicot/bb.h +312 -0
  51. ctrlsys-1.0.19/include/slicot/bd.h +166 -0
  52. ctrlsys-1.0.19/include/slicot/de.h +103 -0
  53. ctrlsys-1.0.19/include/slicot/df.h +51 -0
  54. ctrlsys-1.0.19/include/slicot/dg.h +138 -0
  55. ctrlsys-1.0.19/include/slicot/dk.h +48 -0
  56. ctrlsys-1.0.19/include/slicot/fb.h +435 -0
  57. ctrlsys-1.0.19/include/slicot/fd.h +85 -0
  58. ctrlsys-1.0.19/include/slicot/ib.h +756 -0
  59. ctrlsys-1.0.19/include/slicot/lapack_aux.h +194 -0
  60. ctrlsys-1.0.19/include/slicot/ma.h +751 -0
  61. ctrlsys-1.0.19/include/slicot/mb01.h +1136 -0
  62. ctrlsys-1.0.19/include/slicot/mb02.h +1629 -0
  63. ctrlsys-1.0.19/include/slicot/mb03.h +2845 -0
  64. ctrlsys-1.0.19/include/slicot/mb04.h +2770 -0
  65. ctrlsys-1.0.19/include/slicot/mb05.h +249 -0
  66. ctrlsys-1.0.19/include/slicot/mc.h +469 -0
  67. ctrlsys-1.0.19/include/slicot/md.h +501 -0
  68. ctrlsys-1.0.19/include/slicot/nf.h +360 -0
  69. ctrlsys-1.0.19/include/slicot/sb.h +5715 -0
  70. ctrlsys-1.0.19/include/slicot/sg.h +925 -0
  71. ctrlsys-1.0.19/include/slicot/tb.h +1392 -0
  72. ctrlsys-1.0.19/include/slicot/tc.h +209 -0
  73. ctrlsys-1.0.19/include/slicot/td.h +294 -0
  74. ctrlsys-1.0.19/include/slicot/tf.h +297 -0
  75. ctrlsys-1.0.19/include/slicot/tg.h +1684 -0
  76. ctrlsys-1.0.19/include/slicot/ud.h +201 -0
  77. ctrlsys-1.0.19/include/slicot/ue.h +44 -0
  78. ctrlsys-1.0.19/include/slicot.h +43 -0
  79. ctrlsys-1.0.19/include/slicot_blas.h +1238 -0
  80. ctrlsys-1.0.19/include/slicot_config.h.in +8 -0
  81. ctrlsys-1.0.19/include/slicot_types.h +49 -0
  82. ctrlsys-1.0.19/meson.build +127 -0
  83. ctrlsys-1.0.19/meson.options +11 -0
  84. ctrlsys-1.0.19/pyproject.toml +53 -0
  85. ctrlsys-1.0.19/pyrightconfig.json +4 -0
  86. ctrlsys-1.0.19/python/_package_init/__init__.py +69 -0
  87. ctrlsys-1.0.19/python/data/docstrings.h +12765 -0
  88. ctrlsys-1.0.19/python/data/docstrings.json +589 -0
  89. ctrlsys-1.0.19/python/meson.build +70 -0
  90. ctrlsys-1.0.19/python/slicot_module.c +624 -0
  91. ctrlsys-1.0.19/python/wrappers/py_ab.c +9540 -0
  92. ctrlsys-1.0.19/python/wrappers/py_ag.c +864 -0
  93. ctrlsys-1.0.19/python/wrappers/py_bb.c +862 -0
  94. ctrlsys-1.0.19/python/wrappers/py_bd.c +384 -0
  95. ctrlsys-1.0.19/python/wrappers/py_de.c +106 -0
  96. ctrlsys-1.0.19/python/wrappers/py_df.c +45 -0
  97. ctrlsys-1.0.19/python/wrappers/py_dg.c +177 -0
  98. ctrlsys-1.0.19/python/wrappers/py_dk.c +47 -0
  99. ctrlsys-1.0.19/python/wrappers/py_fb.c +1095 -0
  100. ctrlsys-1.0.19/python/wrappers/py_fd.c +173 -0
  101. ctrlsys-1.0.19/python/wrappers/py_ib.c +2211 -0
  102. ctrlsys-1.0.19/python/wrappers/py_lapack_aux.c +810 -0
  103. ctrlsys-1.0.19/python/wrappers/py_ma.c +1415 -0
  104. ctrlsys-1.0.19/python/wrappers/py_mb01.c +2245 -0
  105. ctrlsys-1.0.19/python/wrappers/py_mb02.c +4143 -0
  106. ctrlsys-1.0.19/python/wrappers/py_mb03.c +9275 -0
  107. ctrlsys-1.0.19/python/wrappers/py_mb04.c +9438 -0
  108. ctrlsys-1.0.19/python/wrappers/py_mb05.c +431 -0
  109. ctrlsys-1.0.19/python/wrappers/py_mc.c +1180 -0
  110. ctrlsys-1.0.19/python/wrappers/py_md.c +716 -0
  111. ctrlsys-1.0.19/python/wrappers/py_nf.c +376 -0
  112. ctrlsys-1.0.19/python/wrappers/py_sb.c +12986 -0
  113. ctrlsys-1.0.19/python/wrappers/py_sg.c +2452 -0
  114. ctrlsys-1.0.19/python/wrappers/py_tb.c +4027 -0
  115. ctrlsys-1.0.19/python/wrappers/py_tc.c +398 -0
  116. ctrlsys-1.0.19/python/wrappers/py_td.c +549 -0
  117. ctrlsys-1.0.19/python/wrappers/py_tf.c +853 -0
  118. ctrlsys-1.0.19/python/wrappers/py_tg.c +4378 -0
  119. ctrlsys-1.0.19/python/wrappers/py_ud.c +475 -0
  120. ctrlsys-1.0.19/python/wrappers/py_ue.c +26 -0
  121. ctrlsys-1.0.19/python/wrappers/py_wrappers.h +664 -0
  122. ctrlsys-1.0.19/scripts/benchmark_c_vs_fortran.py +1375 -0
  123. ctrlsys-1.0.19/scripts/bump_version.py +43 -0
  124. ctrlsys-1.0.19/scripts/run_asan_docker.sh +92 -0
  125. ctrlsys-1.0.19/shim/README.md +17 -0
  126. ctrlsys-1.0.19/shim/pyproject.toml +23 -0
  127. ctrlsys-1.0.19/shim/slicot/__init__.py +8 -0
  128. ctrlsys-1.0.19/spec.md +193 -0
  129. ctrlsys-1.0.19/src/AB/ab01md.c +181 -0
  130. ctrlsys-1.0.19/src/AB/ab01nd.c +219 -0
  131. ctrlsys-1.0.19/src/AB/ab01od.c +224 -0
  132. ctrlsys-1.0.19/src/AB/ab04md.c +122 -0
  133. ctrlsys-1.0.19/src/AB/ab05md.c +237 -0
  134. ctrlsys-1.0.19/src/AB/ab05nd.c +275 -0
  135. ctrlsys-1.0.19/src/AB/ab05od.c +188 -0
  136. ctrlsys-1.0.19/src/AB/ab05pd.c +187 -0
  137. ctrlsys-1.0.19/src/AB/ab05qd.c +206 -0
  138. ctrlsys-1.0.19/src/AB/ab05rd.c +128 -0
  139. ctrlsys-1.0.19/src/AB/ab05sd.c +163 -0
  140. ctrlsys-1.0.19/src/AB/ab07md.c +82 -0
  141. ctrlsys-1.0.19/src/AB/ab07nd.c +129 -0
  142. ctrlsys-1.0.19/src/AB/ab08md.c +131 -0
  143. ctrlsys-1.0.19/src/AB/ab08mz.c +128 -0
  144. ctrlsys-1.0.19/src/AB/ab08nd.c +277 -0
  145. ctrlsys-1.0.19/src/AB/ab08nw.c +291 -0
  146. ctrlsys-1.0.19/src/AB/ab08nx.c +254 -0
  147. ctrlsys-1.0.19/src/AB/ab08ny.c +324 -0
  148. ctrlsys-1.0.19/src/AB/ab08nz.c +280 -0
  149. ctrlsys-1.0.19/src/AB/ab09ad.c +129 -0
  150. ctrlsys-1.0.19/src/AB/ab09ax.c +247 -0
  151. ctrlsys-1.0.19/src/AB/ab09bd.c +140 -0
  152. ctrlsys-1.0.19/src/AB/ab09bx.c +276 -0
  153. ctrlsys-1.0.19/src/AB/ab09cd.c +144 -0
  154. ctrlsys-1.0.19/src/AB/ab09cx.c +283 -0
  155. ctrlsys-1.0.19/src/AB/ab09dd.c +103 -0
  156. ctrlsys-1.0.19/src/AB/ab09ed.c +164 -0
  157. ctrlsys-1.0.19/src/AB/ab09fd.c +300 -0
  158. ctrlsys-1.0.19/src/AB/ab09gd.c +299 -0
  159. ctrlsys-1.0.19/src/AB/ab09hd.c +272 -0
  160. ctrlsys-1.0.19/src/AB/ab09hx.c +325 -0
  161. ctrlsys-1.0.19/src/AB/ab09hy.c +205 -0
  162. ctrlsys-1.0.19/src/AB/ab09id.c +447 -0
  163. ctrlsys-1.0.19/src/AB/ab09ix.c +267 -0
  164. ctrlsys-1.0.19/src/AB/ab09iy.c +387 -0
  165. ctrlsys-1.0.19/src/AB/ab09jd.c +728 -0
  166. ctrlsys-1.0.19/src/AB/ab09jv.c +591 -0
  167. ctrlsys-1.0.19/src/AB/ab09jw.c +573 -0
  168. ctrlsys-1.0.19/src/AB/ab09jx.c +129 -0
  169. ctrlsys-1.0.19/src/AB/ab09kd.c +348 -0
  170. ctrlsys-1.0.19/src/AB/ab09kx.c +445 -0
  171. ctrlsys-1.0.19/src/AB/ab09md.c +177 -0
  172. ctrlsys-1.0.19/src/AB/ab09nd.c +181 -0
  173. ctrlsys-1.0.19/src/AB/ab13ad.c +140 -0
  174. ctrlsys-1.0.19/src/AB/ab13ax.c +132 -0
  175. ctrlsys-1.0.19/src/AB/ab13bd.c +148 -0
  176. ctrlsys-1.0.19/src/AB/ab13cd.c +400 -0
  177. ctrlsys-1.0.19/src/AB/ab13dd.c +1258 -0
  178. ctrlsys-1.0.19/src/AB/ab13dx.c +278 -0
  179. ctrlsys-1.0.19/src/AB/ab13ed.c +143 -0
  180. ctrlsys-1.0.19/src/AB/ab13fd.c +205 -0
  181. ctrlsys-1.0.19/src/AB/ab13hd.c +2200 -0
  182. ctrlsys-1.0.19/src/AB/ab13id.c +355 -0
  183. ctrlsys-1.0.19/src/AB/ab13md.c +1372 -0
  184. ctrlsys-1.0.19/src/AB/ab8nxz.c +246 -0
  185. ctrlsys-1.0.19/src/AG/ag07bd.c +102 -0
  186. ctrlsys-1.0.19/src/AG/ag08bd.c +297 -0
  187. ctrlsys-1.0.19/src/AG/ag08by.c +395 -0
  188. ctrlsys-1.0.19/src/AG/ag08bz.c +297 -0
  189. ctrlsys-1.0.19/src/AG/ag8byz.c +401 -0
  190. ctrlsys-1.0.19/src/BB/bb01ad.c +671 -0
  191. ctrlsys-1.0.19/src/BB/bb02ad.c +512 -0
  192. ctrlsys-1.0.19/src/BB/bb03ad.c +306 -0
  193. ctrlsys-1.0.19/src/BB/bb04ad.c +290 -0
  194. ctrlsys-1.0.19/src/BD/bd01ad.c +567 -0
  195. ctrlsys-1.0.19/src/BD/bd02ad.c +412 -0
  196. ctrlsys-1.0.19/src/DE/de01od.c +96 -0
  197. ctrlsys-1.0.19/src/DE/de01pd.c +119 -0
  198. ctrlsys-1.0.19/src/DE/delctg.c +15 -0
  199. ctrlsys-1.0.19/src/DE/zelctg.c +14 -0
  200. ctrlsys-1.0.19/src/DF/df01md.c +126 -0
  201. ctrlsys-1.0.19/src/DG/dg01md.c +87 -0
  202. ctrlsys-1.0.19/src/DG/dg01nd.c +43 -0
  203. ctrlsys-1.0.19/src/DG/dg01ny.c +62 -0
  204. ctrlsys-1.0.19/src/DG/dg01od.c +218 -0
  205. ctrlsys-1.0.19/src/DK/dk01md.c +56 -0
  206. ctrlsys-1.0.19/src/FB/fb01qd.c +181 -0
  207. ctrlsys-1.0.19/src/FB/fb01rd.c +214 -0
  208. ctrlsys-1.0.19/src/FB/fb01sd.c +233 -0
  209. ctrlsys-1.0.19/src/FB/fb01td.c +220 -0
  210. ctrlsys-1.0.19/src/FB/fb01vd.c +138 -0
  211. ctrlsys-1.0.19/src/FD/fd01ad.c +95 -0
  212. ctrlsys-1.0.19/src/IB/.gitkeep +0 -0
  213. ctrlsys-1.0.19/src/IB/ib01ad.c +225 -0
  214. ctrlsys-1.0.19/src/IB/ib01bd.c +370 -0
  215. ctrlsys-1.0.19/src/IB/ib01cd.c +357 -0
  216. ctrlsys-1.0.19/src/IB/ib01md.c +810 -0
  217. ctrlsys-1.0.19/src/IB/ib01my.c +684 -0
  218. ctrlsys-1.0.19/src/IB/ib01nd.c +458 -0
  219. ctrlsys-1.0.19/src/IB/ib01od.c +91 -0
  220. ctrlsys-1.0.19/src/IB/ib01oy.c +37 -0
  221. ctrlsys-1.0.19/src/IB/ib01pd.c +554 -0
  222. ctrlsys-1.0.19/src/IB/ib01px.c +155 -0
  223. ctrlsys-1.0.19/src/IB/ib01py.c +228 -0
  224. ctrlsys-1.0.19/src/IB/ib01qd.c +625 -0
  225. ctrlsys-1.0.19/src/IB/ib01rd.c +493 -0
  226. ctrlsys-1.0.19/src/IB/ib03ad.c +418 -0
  227. ctrlsys-1.0.19/src/IB/ib03bd.c +581 -0
  228. ctrlsys-1.0.19/src/MA/.gitkeep +0 -0
  229. ctrlsys-1.0.19/src/MA/ma01ad.c +25 -0
  230. ctrlsys-1.0.19/src/MA/ma01bd.c +60 -0
  231. ctrlsys-1.0.19/src/MA/ma01bz.c +51 -0
  232. ctrlsys-1.0.19/src/MA/ma01cd.c +45 -0
  233. ctrlsys-1.0.19/src/MA/ma01dd.c +65 -0
  234. ctrlsys-1.0.19/src/MA/ma01dz.c +156 -0
  235. ctrlsys-1.0.19/src/MA/ma02ad.c +44 -0
  236. ctrlsys-1.0.19/src/MA/ma02az.c +63 -0
  237. ctrlsys-1.0.19/src/MA/ma02bd.c +32 -0
  238. ctrlsys-1.0.19/src/MA/ma02bz.c +32 -0
  239. ctrlsys-1.0.19/src/MA/ma02cd.c +51 -0
  240. ctrlsys-1.0.19/src/MA/ma02cz.c +51 -0
  241. ctrlsys-1.0.19/src/MA/ma02dd.c +59 -0
  242. ctrlsys-1.0.19/src/MA/ma02ed.c +32 -0
  243. ctrlsys-1.0.19/src/MA/ma02es.c +29 -0
  244. ctrlsys-1.0.19/src/MA/ma02ez.c +94 -0
  245. ctrlsys-1.0.19/src/MA/ma02fd.c +22 -0
  246. ctrlsys-1.0.19/src/MA/ma02gd.c +57 -0
  247. ctrlsys-1.0.19/src/MA/ma02gz.c +57 -0
  248. ctrlsys-1.0.19/src/MA/ma02hd.c +72 -0
  249. ctrlsys-1.0.19/src/MA/ma02hz.c +72 -0
  250. ctrlsys-1.0.19/src/MA/ma02id.c +194 -0
  251. ctrlsys-1.0.19/src/MA/ma02iz.c +262 -0
  252. ctrlsys-1.0.19/src/MA/ma02jd.c +74 -0
  253. ctrlsys-1.0.19/src/MA/ma02jz.c +74 -0
  254. ctrlsys-1.0.19/src/MA/ma02md.c +92 -0
  255. ctrlsys-1.0.19/src/MA/ma02mz.c +108 -0
  256. ctrlsys-1.0.19/src/MA/ma02nz.c +111 -0
  257. ctrlsys-1.0.19/src/MA/ma02od.c +98 -0
  258. ctrlsys-1.0.19/src/MA/ma02oz.c +111 -0
  259. ctrlsys-1.0.19/src/MA/ma02pd.c +53 -0
  260. ctrlsys-1.0.19/src/MA/ma02pz.c +53 -0
  261. ctrlsys-1.0.19/src/MA/ma02rd.c +179 -0
  262. ctrlsys-1.0.19/src/MA/ma02sd.c +30 -0
  263. ctrlsys-1.0.19/src/MB/mb01kd.c +167 -0
  264. ctrlsys-1.0.19/src/MB/mb01ld.c +225 -0
  265. ctrlsys-1.0.19/src/MB/mb01md.c +151 -0
  266. ctrlsys-1.0.19/src/MB/mb01nd.c +118 -0
  267. ctrlsys-1.0.19/src/MB/mb01oc.c +225 -0
  268. ctrlsys-1.0.19/src/MB/mb01od.c +198 -0
  269. ctrlsys-1.0.19/src/MB/mb01oe.c +233 -0
  270. ctrlsys-1.0.19/src/MB/mb01oh.c +234 -0
  271. ctrlsys-1.0.19/src/MB/mb01oo.c +60 -0
  272. ctrlsys-1.0.19/src/MB/mb01os.c +192 -0
  273. ctrlsys-1.0.19/src/MB/mb01ot.c +138 -0
  274. ctrlsys-1.0.19/src/MB/mb01pd.c +119 -0
  275. ctrlsys-1.0.19/src/MB/mb01qd.c +183 -0
  276. ctrlsys-1.0.19/src/MB/mb01rb.c +234 -0
  277. ctrlsys-1.0.19/src/MB/mb01rd.c +169 -0
  278. ctrlsys-1.0.19/src/MB/mb01rh.c +246 -0
  279. ctrlsys-1.0.19/src/MB/mb01rt.c +107 -0
  280. ctrlsys-1.0.19/src/MB/mb01ru.c +77 -0
  281. ctrlsys-1.0.19/src/MB/mb01rw.c +185 -0
  282. ctrlsys-1.0.19/src/MB/mb01rx.c +187 -0
  283. ctrlsys-1.0.19/src/MB/mb01ry.c +194 -0
  284. ctrlsys-1.0.19/src/MB/mb01sd.c +40 -0
  285. ctrlsys-1.0.19/src/MB/mb01ss.c +54 -0
  286. ctrlsys-1.0.19/src/MB/mb01td.c +65 -0
  287. ctrlsys-1.0.19/src/MB/mb01ud.c +100 -0
  288. ctrlsys-1.0.19/src/MB/mb01uw.c +210 -0
  289. ctrlsys-1.0.19/src/MB/mb01ux.c +201 -0
  290. ctrlsys-1.0.19/src/MB/mb01uy.c +292 -0
  291. ctrlsys-1.0.19/src/MB/mb01uz.c +322 -0
  292. ctrlsys-1.0.19/src/MB/mb01vd.c +874 -0
  293. ctrlsys-1.0.19/src/MB/mb01wd.c +142 -0
  294. ctrlsys-1.0.19/src/MB/mb01xd.c +100 -0
  295. ctrlsys-1.0.19/src/MB/mb01xy.c +83 -0
  296. ctrlsys-1.0.19/src/MB/mb01yd.c +151 -0
  297. ctrlsys-1.0.19/src/MB/mb01zd.c +245 -0
  298. ctrlsys-1.0.19/src/MB/mb02cd.c +299 -0
  299. ctrlsys-1.0.19/src/MB/mb02cu.c +713 -0
  300. ctrlsys-1.0.19/src/MB/mb02cv.c +508 -0
  301. ctrlsys-1.0.19/src/MB/mb02cx.c +152 -0
  302. ctrlsys-1.0.19/src/MB/mb02cy.c +188 -0
  303. ctrlsys-1.0.19/src/MB/mb02dd.c +240 -0
  304. ctrlsys-1.0.19/src/MB/mb02ed.c +199 -0
  305. ctrlsys-1.0.19/src/MB/mb02fd.c +199 -0
  306. ctrlsys-1.0.19/src/MB/mb02gd.c +361 -0
  307. ctrlsys-1.0.19/src/MB/mb02hd.c +374 -0
  308. ctrlsys-1.0.19/src/MB/mb02id.c +373 -0
  309. ctrlsys-1.0.19/src/MB/mb02jd.c +389 -0
  310. ctrlsys-1.0.19/src/MB/mb02jx.c +497 -0
  311. ctrlsys-1.0.19/src/MB/mb02kd.c +589 -0
  312. ctrlsys-1.0.19/src/MB/mb02md.c +253 -0
  313. ctrlsys-1.0.19/src/MB/mb02nd.c +424 -0
  314. ctrlsys-1.0.19/src/MB/mb02ny.c +88 -0
  315. ctrlsys-1.0.19/src/MB/mb02od.c +90 -0
  316. ctrlsys-1.0.19/src/MB/mb02pd.c +221 -0
  317. ctrlsys-1.0.19/src/MB/mb02qd.c +241 -0
  318. ctrlsys-1.0.19/src/MB/mb02qy.c +138 -0
  319. ctrlsys-1.0.19/src/MB/mb02rd.c +63 -0
  320. ctrlsys-1.0.19/src/MB/mb02rz.c +80 -0
  321. ctrlsys-1.0.19/src/MB/mb02sd.c +53 -0
  322. ctrlsys-1.0.19/src/MB/mb02sz.c +63 -0
  323. ctrlsys-1.0.19/src/MB/mb02td.c +102 -0
  324. ctrlsys-1.0.19/src/MB/mb02tz.c +103 -0
  325. ctrlsys-1.0.19/src/MB/mb02ud.c +271 -0
  326. ctrlsys-1.0.19/src/MB/mb02uu.c +77 -0
  327. ctrlsys-1.0.19/src/MB/mb02uv.c +128 -0
  328. ctrlsys-1.0.19/src/MB/mb02uw.c +186 -0
  329. ctrlsys-1.0.19/src/MB/mb02vd.c +68 -0
  330. ctrlsys-1.0.19/src/MB/mb02wd.c +156 -0
  331. ctrlsys-1.0.19/src/MB/mb02xd.c +139 -0
  332. ctrlsys-1.0.19/src/MB/mb02yd.c +182 -0
  333. ctrlsys-1.0.19/src/MB/mb03ab.c +163 -0
  334. ctrlsys-1.0.19/src/MB/mb03ad.c +150 -0
  335. ctrlsys-1.0.19/src/MB/mb03ae.c +174 -0
  336. ctrlsys-1.0.19/src/MB/mb03af.c +256 -0
  337. ctrlsys-1.0.19/src/MB/mb03ag.c +204 -0
  338. ctrlsys-1.0.19/src/MB/mb03ah.c +173 -0
  339. ctrlsys-1.0.19/src/MB/mb03ai.c +142 -0
  340. ctrlsys-1.0.19/src/MB/mb03ba.c +51 -0
  341. ctrlsys-1.0.19/src/MB/mb03bb.c +495 -0
  342. ctrlsys-1.0.19/src/MB/mb03bc.c +267 -0
  343. ctrlsys-1.0.19/src/MB/mb03bd.c +1646 -0
  344. ctrlsys-1.0.19/src/MB/mb03be.c +75 -0
  345. ctrlsys-1.0.19/src/MB/mb03bf.c +84 -0
  346. ctrlsys-1.0.19/src/MB/mb03bg.c +60 -0
  347. ctrlsys-1.0.19/src/MB/mb03bz.c +932 -0
  348. ctrlsys-1.0.19/src/MB/mb03cd.c +354 -0
  349. ctrlsys-1.0.19/src/MB/mb03cz.c +28 -0
  350. ctrlsys-1.0.19/src/MB/mb03dd.c +451 -0
  351. ctrlsys-1.0.19/src/MB/mb03dz.c +21 -0
  352. ctrlsys-1.0.19/src/MB/mb03ed.c +208 -0
  353. ctrlsys-1.0.19/src/MB/mb03fd.c +140 -0
  354. ctrlsys-1.0.19/src/MB/mb03fz.c +826 -0
  355. ctrlsys-1.0.19/src/MB/mb03gd.c +208 -0
  356. ctrlsys-1.0.19/src/MB/mb03gz.c +21 -0
  357. ctrlsys-1.0.19/src/MB/mb03hd.c +130 -0
  358. ctrlsys-1.0.19/src/MB/mb03hz.c +14 -0
  359. ctrlsys-1.0.19/src/MB/mb03id.c +1007 -0
  360. ctrlsys-1.0.19/src/MB/mb03iz.c +367 -0
  361. ctrlsys-1.0.19/src/MB/mb03jd.c +862 -0
  362. ctrlsys-1.0.19/src/MB/mb03jp.c +837 -0
  363. ctrlsys-1.0.19/src/MB/mb03jz.c +290 -0
  364. ctrlsys-1.0.19/src/MB/mb03ka.c +340 -0
  365. ctrlsys-1.0.19/src/MB/mb03kb.c +1230 -0
  366. ctrlsys-1.0.19/src/MB/mb03kc.c +111 -0
  367. ctrlsys-1.0.19/src/MB/mb03kd.c +278 -0
  368. ctrlsys-1.0.19/src/MB/mb03ke.c +581 -0
  369. ctrlsys-1.0.19/src/MB/mb03ld.c +348 -0
  370. ctrlsys-1.0.19/src/MB/mb03lf.c +596 -0
  371. ctrlsys-1.0.19/src/MB/mb03lp.c +407 -0
  372. ctrlsys-1.0.19/src/MB/mb03lz.c +593 -0
  373. ctrlsys-1.0.19/src/MB/mb03md.c +111 -0
  374. ctrlsys-1.0.19/src/MB/mb03my.c +21 -0
  375. ctrlsys-1.0.19/src/MB/mb03nd.c +53 -0
  376. ctrlsys-1.0.19/src/MB/mb03ny.c +110 -0
  377. ctrlsys-1.0.19/src/MB/mb03od.c +148 -0
  378. ctrlsys-1.0.19/src/MB/mb03oy.c +194 -0
  379. ctrlsys-1.0.19/src/MB/mb03pd.c +111 -0
  380. ctrlsys-1.0.19/src/MB/mb03py.c +190 -0
  381. ctrlsys-1.0.19/src/MB/mb03qd.c +153 -0
  382. ctrlsys-1.0.19/src/MB/mb03qg.c +178 -0
  383. ctrlsys-1.0.19/src/MB/mb03qv.c +74 -0
  384. ctrlsys-1.0.19/src/MB/mb03qw.c +63 -0
  385. ctrlsys-1.0.19/src/MB/mb03qx.c +64 -0
  386. ctrlsys-1.0.19/src/MB/mb03qy.c +73 -0
  387. ctrlsys-1.0.19/src/MB/mb03rd.c +282 -0
  388. ctrlsys-1.0.19/src/MB/mb03rw.c +87 -0
  389. ctrlsys-1.0.19/src/MB/mb03rx.c +77 -0
  390. ctrlsys-1.0.19/src/MB/mb03ry.c +106 -0
  391. ctrlsys-1.0.19/src/MB/mb03rz.c +208 -0
  392. ctrlsys-1.0.19/src/MB/mb03sd.c +141 -0
  393. ctrlsys-1.0.19/src/MB/mb03td.c +331 -0
  394. ctrlsys-1.0.19/src/MB/mb03ts.c +515 -0
  395. ctrlsys-1.0.19/src/MB/mb03ud.c +172 -0
  396. ctrlsys-1.0.19/src/MB/mb03vd.c +88 -0
  397. ctrlsys-1.0.19/src/MB/mb03vw.c +497 -0
  398. ctrlsys-1.0.19/src/MB/mb03vy.c +100 -0
  399. ctrlsys-1.0.19/src/MB/mb03wa.c +278 -0
  400. ctrlsys-1.0.19/src/MB/mb03wd.c +638 -0
  401. ctrlsys-1.0.19/src/MB/mb03wx.c +102 -0
  402. ctrlsys-1.0.19/src/MB/mb03xd.c +547 -0
  403. ctrlsys-1.0.19/src/MB/mb03xp.c +408 -0
  404. ctrlsys-1.0.19/src/MB/mb03xs.c +267 -0
  405. ctrlsys-1.0.19/src/MB/mb03xu.c +890 -0
  406. ctrlsys-1.0.19/src/MB/mb03xz.c +460 -0
  407. ctrlsys-1.0.19/src/MB/mb03ya.c +112 -0
  408. ctrlsys-1.0.19/src/MB/mb03yd.c +285 -0
  409. ctrlsys-1.0.19/src/MB/mb03yt.c +167 -0
  410. ctrlsys-1.0.19/src/MB/mb03za.c +1081 -0
  411. ctrlsys-1.0.19/src/MB/mb03zd.c +697 -0
  412. ctrlsys-1.0.19/src/MB/mb04ad.c +881 -0
  413. ctrlsys-1.0.19/src/MB/mb04az.c +615 -0
  414. ctrlsys-1.0.19/src/MB/mb04bd.c +829 -0
  415. ctrlsys-1.0.19/src/MB/mb04bp.c +1075 -0
  416. ctrlsys-1.0.19/src/MB/mb04bz.c +559 -0
  417. ctrlsys-1.0.19/src/MB/mb04cd.c +1745 -0
  418. ctrlsys-1.0.19/src/MB/mb04db.c +83 -0
  419. ctrlsys-1.0.19/src/MB/mb04dd.c +324 -0
  420. ctrlsys-1.0.19/src/MB/mb04di.c +82 -0
  421. ctrlsys-1.0.19/src/MB/mb04dl.c +662 -0
  422. ctrlsys-1.0.19/src/MB/mb04dp.c +934 -0
  423. ctrlsys-1.0.19/src/MB/mb04ds.c +380 -0
  424. ctrlsys-1.0.19/src/MB/mb04dy.c +132 -0
  425. ctrlsys-1.0.19/src/MB/mb04dz.c +337 -0
  426. ctrlsys-1.0.19/src/MB/mb04ed.c +806 -0
  427. ctrlsys-1.0.19/src/MB/mb04fd.c +653 -0
  428. ctrlsys-1.0.19/src/MB/mb04fp.c +811 -0
  429. ctrlsys-1.0.19/src/MB/mb04gd.c +127 -0
  430. ctrlsys-1.0.19/src/MB/mb04hd.c +1208 -0
  431. ctrlsys-1.0.19/src/MB/mb04id.c +154 -0
  432. ctrlsys-1.0.19/src/MB/mb04iy.c +198 -0
  433. ctrlsys-1.0.19/src/MB/mb04iz.c +147 -0
  434. ctrlsys-1.0.19/src/MB/mb04jd.c +104 -0
  435. ctrlsys-1.0.19/src/MB/mb04kd.c +89 -0
  436. ctrlsys-1.0.19/src/MB/mb04ld.c +71 -0
  437. ctrlsys-1.0.19/src/MB/mb04md.c +195 -0
  438. ctrlsys-1.0.19/src/MB/mb04nd.c +54 -0
  439. ctrlsys-1.0.19/src/MB/mb04ny.c +301 -0
  440. ctrlsys-1.0.19/src/MB/mb04od.c +63 -0
  441. ctrlsys-1.0.19/src/MB/mb04ow.c +175 -0
  442. ctrlsys-1.0.19/src/MB/mb04ox.c +38 -0
  443. ctrlsys-1.0.19/src/MB/mb04oy.c +260 -0
  444. ctrlsys-1.0.19/src/MB/mb04pa.c +787 -0
  445. ctrlsys-1.0.19/src/MB/mb04pb.c +183 -0
  446. ctrlsys-1.0.19/src/MB/mb04pu.c +163 -0
  447. ctrlsys-1.0.19/src/MB/mb04py.c +495 -0
  448. ctrlsys-1.0.19/src/MB/mb04qb.c +242 -0
  449. ctrlsys-1.0.19/src/MB/mb04qc.c +734 -0
  450. ctrlsys-1.0.19/src/MB/mb04qf.c +263 -0
  451. ctrlsys-1.0.19/src/MB/mb04qs.c +110 -0
  452. ctrlsys-1.0.19/src/MB/mb04qu.c +215 -0
  453. ctrlsys-1.0.19/src/MB/mb04rb.c +210 -0
  454. ctrlsys-1.0.19/src/MB/mb04rd.c +555 -0
  455. ctrlsys-1.0.19/src/MB/mb04rs.c +458 -0
  456. ctrlsys-1.0.19/src/MB/mb04rt.c +154 -0
  457. ctrlsys-1.0.19/src/MB/mb04ru.c +146 -0
  458. ctrlsys-1.0.19/src/MB/mb04rv.c +127 -0
  459. ctrlsys-1.0.19/src/MB/mb04rw.c +170 -0
  460. ctrlsys-1.0.19/src/MB/mb04rz.c +438 -0
  461. ctrlsys-1.0.19/src/MB/mb04su.c +87 -0
  462. ctrlsys-1.0.19/src/MB/mb04tb.c +495 -0
  463. ctrlsys-1.0.19/src/MB/mb04ts.c +285 -0
  464. ctrlsys-1.0.19/src/MB/mb04tt.c +150 -0
  465. ctrlsys-1.0.19/src/MB/mb04tu.c +34 -0
  466. ctrlsys-1.0.19/src/MB/mb04tv.c +63 -0
  467. ctrlsys-1.0.19/src/MB/mb04tw.c +62 -0
  468. ctrlsys-1.0.19/src/MB/mb04tx.c +198 -0
  469. ctrlsys-1.0.19/src/MB/mb04ty.c +64 -0
  470. ctrlsys-1.0.19/src/MB/mb04ud.c +141 -0
  471. ctrlsys-1.0.19/src/MB/mb04vd.c +203 -0
  472. ctrlsys-1.0.19/src/MB/mb04vx.c +189 -0
  473. ctrlsys-1.0.19/src/MB/mb04wd.c +204 -0
  474. ctrlsys-1.0.19/src/MB/mb04wp.c +106 -0
  475. ctrlsys-1.0.19/src/MB/mb04wr.c +195 -0
  476. ctrlsys-1.0.19/src/MB/mb04wu.c +222 -0
  477. ctrlsys-1.0.19/src/MB/mb04xd.c +256 -0
  478. ctrlsys-1.0.19/src/MB/mb04xy.c +113 -0
  479. ctrlsys-1.0.19/src/MB/mb04yd.c +326 -0
  480. ctrlsys-1.0.19/src/MB/mb04yw.c +318 -0
  481. ctrlsys-1.0.19/src/MB/mb04zd.c +360 -0
  482. ctrlsys-1.0.19/src/MB/mb05md.c +145 -0
  483. ctrlsys-1.0.19/src/MB/mb05my.c +181 -0
  484. ctrlsys-1.0.19/src/MB/mb05nd.c +189 -0
  485. ctrlsys-1.0.19/src/MB/mb05od.c +373 -0
  486. ctrlsys-1.0.19/src/MB/mb05oy.c +79 -0
  487. ctrlsys-1.0.19/src/MB/mb3jzp.c +562 -0
  488. ctrlsys-1.0.19/src/MB/mb3lzp.c +545 -0
  489. ctrlsys-1.0.19/src/MB/mb3oyz.c +178 -0
  490. ctrlsys-1.0.19/src/MB/mb3pyz.c +173 -0
  491. ctrlsys-1.0.19/src/MB/mb4dbz.c +83 -0
  492. ctrlsys-1.0.19/src/MB/mb4dlz.c +665 -0
  493. ctrlsys-1.0.19/src/MB/mb4dpz.c +994 -0
  494. ctrlsys-1.0.19/src/MC/mc01md.c +37 -0
  495. ctrlsys-1.0.19/src/MC/mc01nd.c +40 -0
  496. ctrlsys-1.0.19/src/MC/mc01od.c +62 -0
  497. ctrlsys-1.0.19/src/MC/mc01pd.c +58 -0
  498. ctrlsys-1.0.19/src/MC/mc01py.c +61 -0
  499. ctrlsys-1.0.19/src/MC/mc01qd.c +51 -0
  500. ctrlsys-1.0.19/src/MC/mc01rd.c +107 -0
  501. ctrlsys-1.0.19/src/MC/mc01sd.c +117 -0
  502. ctrlsys-1.0.19/src/MC/mc01sw.c +38 -0
  503. ctrlsys-1.0.19/src/MC/mc01sx.c +22 -0
  504. ctrlsys-1.0.19/src/MC/mc01sy.c +63 -0
  505. ctrlsys-1.0.19/src/MC/mc01td.c +136 -0
  506. ctrlsys-1.0.19/src/MC/mc01vd.c +206 -0
  507. ctrlsys-1.0.19/src/MC/mc01wd.c +41 -0
  508. ctrlsys-1.0.19/src/MC/mc01xd.c +219 -0
  509. ctrlsys-1.0.19/src/MC/mc03md.c +146 -0
  510. ctrlsys-1.0.19/src/MC/mc03nd.c +164 -0
  511. ctrlsys-1.0.19/src/MC/mc03nx.c +42 -0
  512. ctrlsys-1.0.19/src/MC/mc03ny.c +174 -0
  513. ctrlsys-1.0.19/src/MD/.gitkeep +0 -0
  514. ctrlsys-1.0.19/src/MD/md03ad.c +428 -0
  515. ctrlsys-1.0.19/src/MD/md03ba.c +43 -0
  516. ctrlsys-1.0.19/src/MD/md03bb.c +49 -0
  517. ctrlsys-1.0.19/src/MD/md03bd.c +476 -0
  518. ctrlsys-1.0.19/src/MD/md03bf.c +60 -0
  519. ctrlsys-1.0.19/src/MD/md03bx.c +117 -0
  520. ctrlsys-1.0.19/src/MD/md03by.c +303 -0
  521. ctrlsys-1.0.19/src/NF/.gitkeep +0 -0
  522. ctrlsys-1.0.19/src/NF/nf01ad.c +119 -0
  523. ctrlsys-1.0.19/src/NF/nf01ay.c +217 -0
  524. ctrlsys-1.0.19/src/NF/nf01ba.c +70 -0
  525. ctrlsys-1.0.19/src/NF/nf01bb.c +87 -0
  526. ctrlsys-1.0.19/src/NF/nf01bd.c +236 -0
  527. ctrlsys-1.0.19/src/NF/nf01be.c +192 -0
  528. ctrlsys-1.0.19/src/NF/nf01bf.c +147 -0
  529. ctrlsys-1.0.19/src/NF/nf01bp.c +297 -0
  530. ctrlsys-1.0.19/src/NF/nf01bq.c +264 -0
  531. ctrlsys-1.0.19/src/NF/nf01br.c +572 -0
  532. ctrlsys-1.0.19/src/NF/nf01bs.c +338 -0
  533. ctrlsys-1.0.19/src/NF/nf01bu.c +207 -0
  534. ctrlsys-1.0.19/src/NF/nf01bv.c +115 -0
  535. ctrlsys-1.0.19/src/NF/nf01bw.c +101 -0
  536. ctrlsys-1.0.19/src/NF/nf01bx.c +62 -0
  537. ctrlsys-1.0.19/src/NF/nf01by.c +143 -0
  538. ctrlsys-1.0.19/src/SB/.gitkeep +0 -0
  539. ctrlsys-1.0.19/src/SB/sb01bd.c +437 -0
  540. ctrlsys-1.0.19/src/SB/sb01bx.c +76 -0
  541. ctrlsys-1.0.19/src/SB/sb01by.c +200 -0
  542. ctrlsys-1.0.19/src/SB/sb01dd.c +487 -0
  543. ctrlsys-1.0.19/src/SB/sb01fy.c +170 -0
  544. ctrlsys-1.0.19/src/SB/sb01md.c +300 -0
  545. ctrlsys-1.0.19/src/SB/sb02cx.c +21 -0
  546. ctrlsys-1.0.19/src/SB/sb02md.c +257 -0
  547. ctrlsys-1.0.19/src/SB/sb02mr.c +15 -0
  548. ctrlsys-1.0.19/src/SB/sb02ms.c +15 -0
  549. ctrlsys-1.0.19/src/SB/sb02mt.c +228 -0
  550. ctrlsys-1.0.19/src/SB/sb02mu.c +244 -0
  551. ctrlsys-1.0.19/src/SB/sb02mv.c +15 -0
  552. ctrlsys-1.0.19/src/SB/sb02mw.c +15 -0
  553. ctrlsys-1.0.19/src/SB/sb02mx.c +285 -0
  554. ctrlsys-1.0.19/src/SB/sb02nd.c +386 -0
  555. ctrlsys-1.0.19/src/SB/sb02od.c +444 -0
  556. ctrlsys-1.0.19/src/SB/sb02ou.c +16 -0
  557. ctrlsys-1.0.19/src/SB/sb02ov.c +18 -0
  558. ctrlsys-1.0.19/src/SB/sb02ow.c +16 -0
  559. ctrlsys-1.0.19/src/SB/sb02ox.c +18 -0
  560. ctrlsys-1.0.19/src/SB/sb02oy.c +433 -0
  561. ctrlsys-1.0.19/src/SB/sb02pd.c +468 -0
  562. ctrlsys-1.0.19/src/SB/sb02qd.c +461 -0
  563. ctrlsys-1.0.19/src/SB/sb02rd.c +474 -0
  564. ctrlsys-1.0.19/src/SB/sb02ru.c +242 -0
  565. ctrlsys-1.0.19/src/SB/sb02sd.c +403 -0
  566. ctrlsys-1.0.19/src/SB/sb03md.c +249 -0
  567. ctrlsys-1.0.19/src/SB/sb03mu.c +323 -0
  568. ctrlsys-1.0.19/src/SB/sb03mv.c +163 -0
  569. ctrlsys-1.0.19/src/SB/sb03mw.c +155 -0
  570. ctrlsys-1.0.19/src/SB/sb03mx.c +600 -0
  571. ctrlsys-1.0.19/src/SB/sb03my.c +480 -0
  572. ctrlsys-1.0.19/src/SB/sb03od.c +507 -0
  573. ctrlsys-1.0.19/src/SB/sb03or.c +267 -0
  574. ctrlsys-1.0.19/src/SB/sb03os.c +362 -0
  575. ctrlsys-1.0.19/src/SB/sb03ot.c +641 -0
  576. ctrlsys-1.0.19/src/SB/sb03ou.c +118 -0
  577. ctrlsys-1.0.19/src/SB/sb03ov.c +38 -0
  578. ctrlsys-1.0.19/src/SB/sb03oy.c +457 -0
  579. ctrlsys-1.0.19/src/SB/sb03oz.c +495 -0
  580. ctrlsys-1.0.19/src/SB/sb03pd.c +173 -0
  581. ctrlsys-1.0.19/src/SB/sb03qd.c +405 -0
  582. ctrlsys-1.0.19/src/SB/sb03qx.c +203 -0
  583. ctrlsys-1.0.19/src/SB/sb03qy.c +223 -0
  584. ctrlsys-1.0.19/src/SB/sb03rd.c +186 -0
  585. ctrlsys-1.0.19/src/SB/sb03sd.c +394 -0
  586. ctrlsys-1.0.19/src/SB/sb03sx.c +161 -0
  587. ctrlsys-1.0.19/src/SB/sb03sy.c +192 -0
  588. ctrlsys-1.0.19/src/SB/sb03td.c +198 -0
  589. ctrlsys-1.0.19/src/SB/sb03ud.c +206 -0
  590. ctrlsys-1.0.19/src/SB/sb04md.c +194 -0
  591. ctrlsys-1.0.19/src/SB/sb04mr.c +123 -0
  592. ctrlsys-1.0.19/src/SB/sb04mu.c +79 -0
  593. ctrlsys-1.0.19/src/SB/sb04mw.c +98 -0
  594. ctrlsys-1.0.19/src/SB/sb04my.c +57 -0
  595. ctrlsys-1.0.19/src/SB/sb04nd.c +221 -0
  596. ctrlsys-1.0.19/src/SB/sb04nv.c +78 -0
  597. ctrlsys-1.0.19/src/SB/sb04nw.c +68 -0
  598. ctrlsys-1.0.19/src/SB/sb04nx.c +200 -0
  599. ctrlsys-1.0.19/src/SB/sb04ny.c +127 -0
  600. ctrlsys-1.0.19/src/SB/sb04od.c +516 -0
  601. ctrlsys-1.0.19/src/SB/sb04ow.c +357 -0
  602. ctrlsys-1.0.19/src/SB/sb04pd.c +381 -0
  603. ctrlsys-1.0.19/src/SB/sb04px.c +410 -0
  604. ctrlsys-1.0.19/src/SB/sb04py.c +1356 -0
  605. ctrlsys-1.0.19/src/SB/sb04qd.c +209 -0
  606. ctrlsys-1.0.19/src/SB/sb04qr.c +123 -0
  607. ctrlsys-1.0.19/src/SB/sb04qu.c +105 -0
  608. ctrlsys-1.0.19/src/SB/sb04qy.c +76 -0
  609. ctrlsys-1.0.19/src/SB/sb04rd.c +211 -0
  610. ctrlsys-1.0.19/src/SB/sb04rv.c +115 -0
  611. ctrlsys-1.0.19/src/SB/sb04rw.c +93 -0
  612. ctrlsys-1.0.19/src/SB/sb04rx.c +280 -0
  613. ctrlsys-1.0.19/src/SB/sb04ry.c +182 -0
  614. ctrlsys-1.0.19/src/SB/sb06nd.c +197 -0
  615. ctrlsys-1.0.19/src/SB/sb08cd.c +138 -0
  616. ctrlsys-1.0.19/src/SB/sb08dd.c +293 -0
  617. ctrlsys-1.0.19/src/SB/sb08ed.c +134 -0
  618. ctrlsys-1.0.19/src/SB/sb08fd.c +332 -0
  619. ctrlsys-1.0.19/src/SB/sb08gd.c +99 -0
  620. ctrlsys-1.0.19/src/SB/sb08hd.c +120 -0
  621. ctrlsys-1.0.19/src/SB/sb08md.c +239 -0
  622. ctrlsys-1.0.19/src/SB/sb08my.c +59 -0
  623. ctrlsys-1.0.19/src/SB/sb08nd.c +181 -0
  624. ctrlsys-1.0.19/src/SB/sb08ny.c +40 -0
  625. ctrlsys-1.0.19/src/SB/sb09md.c +116 -0
  626. ctrlsys-1.0.19/src/SB/sb10ad.c +454 -0
  627. ctrlsys-1.0.19/src/SB/sb10dd.c +567 -0
  628. ctrlsys-1.0.19/src/SB/sb10ed.c +229 -0
  629. ctrlsys-1.0.19/src/SB/sb10fd.c +228 -0
  630. ctrlsys-1.0.19/src/SB/sb10hd.c +176 -0
  631. ctrlsys-1.0.19/src/SB/sb10id.c +333 -0
  632. ctrlsys-1.0.19/src/SB/sb10jd.c +211 -0
  633. ctrlsys-1.0.19/src/SB/sb10kd.c +450 -0
  634. ctrlsys-1.0.19/src/SB/sb10ld.c +228 -0
  635. ctrlsys-1.0.19/src/SB/sb10md.c +318 -0
  636. ctrlsys-1.0.19/src/SB/sb10pd.c +327 -0
  637. ctrlsys-1.0.19/src/SB/sb10qd.c +294 -0
  638. ctrlsys-1.0.19/src/SB/sb10rd.c +421 -0
  639. ctrlsys-1.0.19/src/SB/sb10sd.c +326 -0
  640. ctrlsys-1.0.19/src/SB/sb10td.c +164 -0
  641. ctrlsys-1.0.19/src/SB/sb10ud.c +221 -0
  642. ctrlsys-1.0.19/src/SB/sb10vd.c +174 -0
  643. ctrlsys-1.0.19/src/SB/sb10wd.c +144 -0
  644. ctrlsys-1.0.19/src/SB/sb10yd.c +425 -0
  645. ctrlsys-1.0.19/src/SB/sb10zd.c +597 -0
  646. ctrlsys-1.0.19/src/SB/sb10zp.c +185 -0
  647. ctrlsys-1.0.19/src/SB/sb16ad.c +258 -0
  648. ctrlsys-1.0.19/src/SB/sb16ay.c +415 -0
  649. ctrlsys-1.0.19/src/SB/sb16bd.c +242 -0
  650. ctrlsys-1.0.19/src/SB/sb16cd.c +155 -0
  651. ctrlsys-1.0.19/src/SB/sb16cy.c +187 -0
  652. ctrlsys-1.0.19/src/SG/sg02ad.c +461 -0
  653. ctrlsys-1.0.19/src/SG/sg02cv.c +225 -0
  654. ctrlsys-1.0.19/src/SG/sg02cw.c +1642 -0
  655. ctrlsys-1.0.19/src/SG/sg02cx.c +385 -0
  656. ctrlsys-1.0.19/src/SG/sg02nd.c +583 -0
  657. ctrlsys-1.0.19/src/SG/sg03ad.c +305 -0
  658. ctrlsys-1.0.19/src/SG/sg03ax.c +505 -0
  659. ctrlsys-1.0.19/src/SG/sg03ay.c +544 -0
  660. ctrlsys-1.0.19/src/SG/sg03bd.c +537 -0
  661. ctrlsys-1.0.19/src/SG/sg03br.c +127 -0
  662. ctrlsys-1.0.19/src/SG/sg03bs.c +301 -0
  663. ctrlsys-1.0.19/src/SG/sg03bt.c +253 -0
  664. ctrlsys-1.0.19/src/SG/sg03bu.c +376 -0
  665. ctrlsys-1.0.19/src/SG/sg03bv.c +325 -0
  666. ctrlsys-1.0.19/src/SG/sg03bw.c +215 -0
  667. ctrlsys-1.0.19/src/SG/sg03bx.c +652 -0
  668. ctrlsys-1.0.19/src/SG/sg03by.c +40 -0
  669. ctrlsys-1.0.19/src/SG/sg03bz.c +453 -0
  670. ctrlsys-1.0.19/src/TB/.gitkeep +0 -0
  671. ctrlsys-1.0.19/src/TB/tb01id.c +228 -0
  672. ctrlsys-1.0.19/src/TB/tb01iz.c +205 -0
  673. ctrlsys-1.0.19/src/TB/tb01kd.c +127 -0
  674. ctrlsys-1.0.19/src/TB/tb01kx.c +114 -0
  675. ctrlsys-1.0.19/src/TB/tb01ld.c +143 -0
  676. ctrlsys-1.0.19/src/TB/tb01md.c +138 -0
  677. ctrlsys-1.0.19/src/TB/tb01nd.c +184 -0
  678. ctrlsys-1.0.19/src/TB/tb01pd.c +135 -0
  679. ctrlsys-1.0.19/src/TB/tb01px.c +229 -0
  680. ctrlsys-1.0.19/src/TB/tb01td.c +128 -0
  681. ctrlsys-1.0.19/src/TB/tb01ty.c +83 -0
  682. ctrlsys-1.0.19/src/TB/tb01ud.c +206 -0
  683. ctrlsys-1.0.19/src/TB/tb01ux.c +88 -0
  684. ctrlsys-1.0.19/src/TB/tb01uy.c +330 -0
  685. ctrlsys-1.0.19/src/TB/tb01vd.c +250 -0
  686. ctrlsys-1.0.19/src/TB/tb01vy.c +140 -0
  687. ctrlsys-1.0.19/src/TB/tb01wd.c +136 -0
  688. ctrlsys-1.0.19/src/TB/tb01wx.c +179 -0
  689. ctrlsys-1.0.19/src/TB/tb01xd.c +121 -0
  690. ctrlsys-1.0.19/src/TB/tb01xz.c +119 -0
  691. ctrlsys-1.0.19/src/TB/tb01yd.c +62 -0
  692. ctrlsys-1.0.19/src/TB/tb01zd.c +187 -0
  693. ctrlsys-1.0.19/src/TB/tb03ad.c +365 -0
  694. ctrlsys-1.0.19/src/TB/tb03ay.c +101 -0
  695. ctrlsys-1.0.19/src/TB/tb04ad.c +127 -0
  696. ctrlsys-1.0.19/src/TB/tb04ay.c +152 -0
  697. ctrlsys-1.0.19/src/TB/tb04bd.c +267 -0
  698. ctrlsys-1.0.19/src/TB/tb04bv.c +170 -0
  699. ctrlsys-1.0.19/src/TB/tb04bw.c +127 -0
  700. ctrlsys-1.0.19/src/TB/tb04bx.c +84 -0
  701. ctrlsys-1.0.19/src/TB/tb04cd.c +246 -0
  702. ctrlsys-1.0.19/src/TB/tb05ad.c +271 -0
  703. ctrlsys-1.0.19/src/TC/tc01od.c +100 -0
  704. ctrlsys-1.0.19/src/TC/tc04ad.c +225 -0
  705. ctrlsys-1.0.19/src/TC/tc05ad.c +169 -0
  706. ctrlsys-1.0.19/src/TD/td03ad.c +258 -0
  707. ctrlsys-1.0.19/src/TD/td03ay.c +117 -0
  708. ctrlsys-1.0.19/src/TD/td04ad.c +178 -0
  709. ctrlsys-1.0.19/src/TD/td05ad.c +168 -0
  710. ctrlsys-1.0.19/src/TF/tf01md.c +84 -0
  711. ctrlsys-1.0.19/src/TF/tf01mx.c +236 -0
  712. ctrlsys-1.0.19/src/TF/tf01my.c +195 -0
  713. ctrlsys-1.0.19/src/TF/tf01nd.c +102 -0
  714. ctrlsys-1.0.19/src/TF/tf01od.c +61 -0
  715. ctrlsys-1.0.19/src/TF/tf01pd.c +61 -0
  716. ctrlsys-1.0.19/src/TF/tf01qd.c +73 -0
  717. ctrlsys-1.0.19/src/TF/tf01rd.c +73 -0
  718. ctrlsys-1.0.19/src/TG/tg01ad.c +430 -0
  719. ctrlsys-1.0.19/src/TG/tg01az.c +374 -0
  720. ctrlsys-1.0.19/src/TG/tg01bd.c +193 -0
  721. ctrlsys-1.0.19/src/TG/tg01cd.c +102 -0
  722. ctrlsys-1.0.19/src/TG/tg01dd.c +117 -0
  723. ctrlsys-1.0.19/src/TG/tg01ed.c +401 -0
  724. ctrlsys-1.0.19/src/TG/tg01fd.c +338 -0
  725. ctrlsys-1.0.19/src/TG/tg01fz.c +342 -0
  726. ctrlsys-1.0.19/src/TG/tg01gd.c +179 -0
  727. ctrlsys-1.0.19/src/TG/tg01hd.c +149 -0
  728. ctrlsys-1.0.19/src/TG/tg01hu.c +484 -0
  729. ctrlsys-1.0.19/src/TG/tg01hx.c +347 -0
  730. ctrlsys-1.0.19/src/TG/tg01hy.c +551 -0
  731. ctrlsys-1.0.19/src/TG/tg01id.c +244 -0
  732. ctrlsys-1.0.19/src/TG/tg01jd.c +299 -0
  733. ctrlsys-1.0.19/src/TG/tg01jy.c +610 -0
  734. ctrlsys-1.0.19/src/TG/tg01kd.c +155 -0
  735. ctrlsys-1.0.19/src/TG/tg01kz.c +156 -0
  736. ctrlsys-1.0.19/src/TG/tg01ld.c +269 -0
  737. ctrlsys-1.0.19/src/TG/tg01ly.c +441 -0
  738. ctrlsys-1.0.19/src/TG/tg01md.c +165 -0
  739. ctrlsys-1.0.19/src/TG/tg01nd.c +175 -0
  740. ctrlsys-1.0.19/src/TG/tg01nx.c +124 -0
  741. ctrlsys-1.0.19/src/TG/tg01oa.c +85 -0
  742. ctrlsys-1.0.19/src/TG/tg01ob.c +83 -0
  743. ctrlsys-1.0.19/src/TG/tg01od.c +205 -0
  744. ctrlsys-1.0.19/src/TG/tg01oz.c +206 -0
  745. ctrlsys-1.0.19/src/TG/tg01pd.c +195 -0
  746. ctrlsys-1.0.19/src/TG/tg01qd.c +218 -0
  747. ctrlsys-1.0.19/src/TG/tg01wd.c +134 -0
  748. ctrlsys-1.0.19/src/UD/ud01bd.c +45 -0
  749. ctrlsys-1.0.19/src/UD/ud01cd.c +64 -0
  750. ctrlsys-1.0.19/src/UD/ud01dd.c +51 -0
  751. ctrlsys-1.0.19/src/UD/ud01md.c +117 -0
  752. ctrlsys-1.0.19/src/UD/ud01mz.c +138 -0
  753. ctrlsys-1.0.19/src/UD/ud01nd.c +130 -0
  754. ctrlsys-1.0.19/src/UE/ue01md.c +131 -0
  755. ctrlsys-1.0.19/src/lapack_aux/dgegv.c +408 -0
  756. ctrlsys-1.0.19/src/lapack_aux/dlatzm.c +35 -0
  757. ctrlsys-1.0.19/src/lapack_aux/zgegs.c +290 -0
  758. ctrlsys-1.0.19/src/lapack_aux/zgegv.c +368 -0
  759. ctrlsys-1.0.19/src/meson.build +640 -0
  760. ctrlsys-1.0.19/tests/python/conftest.py +49 -0
  761. ctrlsys-1.0.19/tests/python/data/ib01_html_example_data.npz +0 -0
  762. ctrlsys-1.0.19/tests/python/data/ib03bd_test_data.npz +0 -0
  763. ctrlsys-1.0.19/tests/python/debug_mb03lf.py +72 -0
  764. ctrlsys-1.0.19/tests/python/test_ab01md.py +384 -0
  765. ctrlsys-1.0.19/tests/python/test_ab01nd.py +555 -0
  766. ctrlsys-1.0.19/tests/python/test_ab01od.py +501 -0
  767. ctrlsys-1.0.19/tests/python/test_ab04md.py +381 -0
  768. ctrlsys-1.0.19/tests/python/test_ab05md.py +440 -0
  769. ctrlsys-1.0.19/tests/python/test_ab05nd.py +590 -0
  770. ctrlsys-1.0.19/tests/python/test_ab05od.py +580 -0
  771. ctrlsys-1.0.19/tests/python/test_ab05pd.py +416 -0
  772. ctrlsys-1.0.19/tests/python/test_ab05qd.py +406 -0
  773. ctrlsys-1.0.19/tests/python/test_ab05rd.py +712 -0
  774. ctrlsys-1.0.19/tests/python/test_ab05sd.py +408 -0
  775. ctrlsys-1.0.19/tests/python/test_ab07md.py +388 -0
  776. ctrlsys-1.0.19/tests/python/test_ab07nd.py +375 -0
  777. ctrlsys-1.0.19/tests/python/test_ab08md.py +411 -0
  778. ctrlsys-1.0.19/tests/python/test_ab08mz.py +525 -0
  779. ctrlsys-1.0.19/tests/python/test_ab08nd.py +455 -0
  780. ctrlsys-1.0.19/tests/python/test_ab08nw.py +488 -0
  781. ctrlsys-1.0.19/tests/python/test_ab08nx.py +662 -0
  782. ctrlsys-1.0.19/tests/python/test_ab08ny.py +697 -0
  783. ctrlsys-1.0.19/tests/python/test_ab08nz.py +536 -0
  784. ctrlsys-1.0.19/tests/python/test_ab09ad.py +346 -0
  785. ctrlsys-1.0.19/tests/python/test_ab09ax.py +446 -0
  786. ctrlsys-1.0.19/tests/python/test_ab09bd.py +427 -0
  787. ctrlsys-1.0.19/tests/python/test_ab09bx.py +481 -0
  788. ctrlsys-1.0.19/tests/python/test_ab09cd.py +524 -0
  789. ctrlsys-1.0.19/tests/python/test_ab09cx.py +451 -0
  790. ctrlsys-1.0.19/tests/python/test_ab09dd.py +392 -0
  791. ctrlsys-1.0.19/tests/python/test_ab09ed.py +392 -0
  792. ctrlsys-1.0.19/tests/python/test_ab09fd.py +355 -0
  793. ctrlsys-1.0.19/tests/python/test_ab09gd.py +559 -0
  794. ctrlsys-1.0.19/tests/python/test_ab09hd.py +562 -0
  795. ctrlsys-1.0.19/tests/python/test_ab09hx.py +806 -0
  796. ctrlsys-1.0.19/tests/python/test_ab09hy.py +490 -0
  797. ctrlsys-1.0.19/tests/python/test_ab09id.py +722 -0
  798. ctrlsys-1.0.19/tests/python/test_ab09ix.py +570 -0
  799. ctrlsys-1.0.19/tests/python/test_ab09iy.py +783 -0
  800. ctrlsys-1.0.19/tests/python/test_ab09jd.py +911 -0
  801. ctrlsys-1.0.19/tests/python/test_ab09jv.py +857 -0
  802. ctrlsys-1.0.19/tests/python/test_ab09jw.py +799 -0
  803. ctrlsys-1.0.19/tests/python/test_ab09jx.py +485 -0
  804. ctrlsys-1.0.19/tests/python/test_ab09kd.py +911 -0
  805. ctrlsys-1.0.19/tests/python/test_ab09kx.py +874 -0
  806. ctrlsys-1.0.19/tests/python/test_ab09md.py +515 -0
  807. ctrlsys-1.0.19/tests/python/test_ab09nd.py +402 -0
  808. ctrlsys-1.0.19/tests/python/test_ab13ad.py +648 -0
  809. ctrlsys-1.0.19/tests/python/test_ab13bd.py +212 -0
  810. ctrlsys-1.0.19/tests/python/test_ab13cd.py +312 -0
  811. ctrlsys-1.0.19/tests/python/test_ab13dd.py +268 -0
  812. ctrlsys-1.0.19/tests/python/test_ab13dd_n1.py +73 -0
  813. ctrlsys-1.0.19/tests/python/test_ab13dx.py +178 -0
  814. ctrlsys-1.0.19/tests/python/test_ab13ed.py +77 -0
  815. ctrlsys-1.0.19/tests/python/test_ab13fd.py +245 -0
  816. ctrlsys-1.0.19/tests/python/test_ab13hd.py +527 -0
  817. ctrlsys-1.0.19/tests/python/test_ab13id.py +247 -0
  818. ctrlsys-1.0.19/tests/python/test_ab13md.py +330 -0
  819. ctrlsys-1.0.19/tests/python/test_ab8nxz.py +338 -0
  820. ctrlsys-1.0.19/tests/python/test_ag07bd.py +413 -0
  821. ctrlsys-1.0.19/tests/python/test_ag08bd.py +557 -0
  822. ctrlsys-1.0.19/tests/python/test_ag08by.py +490 -0
  823. ctrlsys-1.0.19/tests/python/test_ag08bz.py +382 -0
  824. ctrlsys-1.0.19/tests/python/test_ag8byz.py +545 -0
  825. ctrlsys-1.0.19/tests/python/test_bb01ad.py +326 -0
  826. ctrlsys-1.0.19/tests/python/test_bb02ad.py +426 -0
  827. ctrlsys-1.0.19/tests/python/test_bb03ad.py +394 -0
  828. ctrlsys-1.0.19/tests/python/test_bb04ad.py +394 -0
  829. ctrlsys-1.0.19/tests/python/test_bd01ad.py +616 -0
  830. ctrlsys-1.0.19/tests/python/test_bd02ad.py +565 -0
  831. ctrlsys-1.0.19/tests/python/test_de01od.py +273 -0
  832. ctrlsys-1.0.19/tests/python/test_de01pd.py +341 -0
  833. ctrlsys-1.0.19/tests/python/test_df01md.py +313 -0
  834. ctrlsys-1.0.19/tests/python/test_dg01md.py +306 -0
  835. ctrlsys-1.0.19/tests/python/test_dg01nd.py +316 -0
  836. ctrlsys-1.0.19/tests/python/test_dg01od.py +416 -0
  837. ctrlsys-1.0.19/tests/python/test_dgegv.py +298 -0
  838. ctrlsys-1.0.19/tests/python/test_dk01md.py +249 -0
  839. ctrlsys-1.0.19/tests/python/test_dlatzm.py +187 -0
  840. ctrlsys-1.0.19/tests/python/test_fb01qd.py +310 -0
  841. ctrlsys-1.0.19/tests/python/test_fb01rd.py +484 -0
  842. ctrlsys-1.0.19/tests/python/test_fb01sd.py +519 -0
  843. ctrlsys-1.0.19/tests/python/test_fb01td.py +409 -0
  844. ctrlsys-1.0.19/tests/python/test_fb01vd.py +335 -0
  845. ctrlsys-1.0.19/tests/python/test_fd01ad.py +408 -0
  846. ctrlsys-1.0.19/tests/python/test_ib01ad.py +485 -0
  847. ctrlsys-1.0.19/tests/python/test_ib01bd.py +481 -0
  848. ctrlsys-1.0.19/tests/python/test_ib01cd.py +498 -0
  849. ctrlsys-1.0.19/tests/python/test_ib01md.py +557 -0
  850. ctrlsys-1.0.19/tests/python/test_ib01nd.py +434 -0
  851. ctrlsys-1.0.19/tests/python/test_ib01od.py +273 -0
  852. ctrlsys-1.0.19/tests/python/test_ib01oy.py +195 -0
  853. ctrlsys-1.0.19/tests/python/test_ib01pd.py +442 -0
  854. ctrlsys-1.0.19/tests/python/test_ib01qd.py +456 -0
  855. ctrlsys-1.0.19/tests/python/test_ib01rd.py +310 -0
  856. ctrlsys-1.0.19/tests/python/test_ib03ad.py +449 -0
  857. ctrlsys-1.0.19/tests/python/test_ib03bd.py +397 -0
  858. ctrlsys-1.0.19/tests/python/test_ma01ad.py +185 -0
  859. ctrlsys-1.0.19/tests/python/test_ma01bd.py +327 -0
  860. ctrlsys-1.0.19/tests/python/test_ma01bz.py +303 -0
  861. ctrlsys-1.0.19/tests/python/test_ma01cd.py +266 -0
  862. ctrlsys-1.0.19/tests/python/test_ma01dd.py +311 -0
  863. ctrlsys-1.0.19/tests/python/test_ma01dz.py +393 -0
  864. ctrlsys-1.0.19/tests/python/test_ma02ad.py +265 -0
  865. ctrlsys-1.0.19/tests/python/test_ma02az.py +382 -0
  866. ctrlsys-1.0.19/tests/python/test_ma02bd.py +209 -0
  867. ctrlsys-1.0.19/tests/python/test_ma02bz.py +220 -0
  868. ctrlsys-1.0.19/tests/python/test_ma02cd.py +301 -0
  869. ctrlsys-1.0.19/tests/python/test_ma02cz.py +372 -0
  870. ctrlsys-1.0.19/tests/python/test_ma02dd.py +210 -0
  871. ctrlsys-1.0.19/tests/python/test_ma02ed.py +173 -0
  872. ctrlsys-1.0.19/tests/python/test_ma02es.py +220 -0
  873. ctrlsys-1.0.19/tests/python/test_ma02ez.py +541 -0
  874. ctrlsys-1.0.19/tests/python/test_ma02gd.py +227 -0
  875. ctrlsys-1.0.19/tests/python/test_ma02gz.py +268 -0
  876. ctrlsys-1.0.19/tests/python/test_ma02hd.py +328 -0
  877. ctrlsys-1.0.19/tests/python/test_ma02hz.py +401 -0
  878. ctrlsys-1.0.19/tests/python/test_ma02iz.py +294 -0
  879. ctrlsys-1.0.19/tests/python/test_ma02jd.py +239 -0
  880. ctrlsys-1.0.19/tests/python/test_ma02jz.py +289 -0
  881. ctrlsys-1.0.19/tests/python/test_ma02md.py +251 -0
  882. ctrlsys-1.0.19/tests/python/test_ma02mz.py +293 -0
  883. ctrlsys-1.0.19/tests/python/test_ma02nz.py +441 -0
  884. ctrlsys-1.0.19/tests/python/test_ma02od.py +202 -0
  885. ctrlsys-1.0.19/tests/python/test_ma02oz.py +299 -0
  886. ctrlsys-1.0.19/tests/python/test_ma02pd.py +375 -0
  887. ctrlsys-1.0.19/tests/python/test_ma02pz.py +428 -0
  888. ctrlsys-1.0.19/tests/python/test_ma02rd.py +263 -0
  889. ctrlsys-1.0.19/tests/python/test_ma02sd.py +199 -0
  890. ctrlsys-1.0.19/tests/python/test_mb01.py +1032 -0
  891. ctrlsys-1.0.19/tests/python/test_mb01oc.py +449 -0
  892. ctrlsys-1.0.19/tests/python/test_mb01od.py +504 -0
  893. ctrlsys-1.0.19/tests/python/test_mb01oe.py +489 -0
  894. ctrlsys-1.0.19/tests/python/test_mb01oh.py +479 -0
  895. ctrlsys-1.0.19/tests/python/test_mb01oo.py +324 -0
  896. ctrlsys-1.0.19/tests/python/test_mb01os.py +297 -0
  897. ctrlsys-1.0.19/tests/python/test_mb01ot.py +547 -0
  898. ctrlsys-1.0.19/tests/python/test_mb01pd.py +455 -0
  899. ctrlsys-1.0.19/tests/python/test_mb01qd.py +162 -0
  900. ctrlsys-1.0.19/tests/python/test_mb01rb.py +275 -0
  901. ctrlsys-1.0.19/tests/python/test_mb01rd.py +396 -0
  902. ctrlsys-1.0.19/tests/python/test_mb01rh.py +521 -0
  903. ctrlsys-1.0.19/tests/python/test_mb01rt.py +575 -0
  904. ctrlsys-1.0.19/tests/python/test_mb01ru.py +295 -0
  905. ctrlsys-1.0.19/tests/python/test_mb01rw.py +293 -0
  906. ctrlsys-1.0.19/tests/python/test_mb01rx.py +461 -0
  907. ctrlsys-1.0.19/tests/python/test_mb01ry.py +312 -0
  908. ctrlsys-1.0.19/tests/python/test_mb01sd.py +245 -0
  909. ctrlsys-1.0.19/tests/python/test_mb01ss.py +289 -0
  910. ctrlsys-1.0.19/tests/python/test_mb01td.py +203 -0
  911. ctrlsys-1.0.19/tests/python/test_mb01ud.py +219 -0
  912. ctrlsys-1.0.19/tests/python/test_mb01uw.py +372 -0
  913. ctrlsys-1.0.19/tests/python/test_mb01ux.py +398 -0
  914. ctrlsys-1.0.19/tests/python/test_mb01uy.py +162 -0
  915. ctrlsys-1.0.19/tests/python/test_mb01uz.py +359 -0
  916. ctrlsys-1.0.19/tests/python/test_mb01wd.py +466 -0
  917. ctrlsys-1.0.19/tests/python/test_mb01xd.py +307 -0
  918. ctrlsys-1.0.19/tests/python/test_mb01xy.py +262 -0
  919. ctrlsys-1.0.19/tests/python/test_mb01yd.py +419 -0
  920. ctrlsys-1.0.19/tests/python/test_mb01zd.py +613 -0
  921. ctrlsys-1.0.19/tests/python/test_mb02cd.py +356 -0
  922. ctrlsys-1.0.19/tests/python/test_mb02cu.py +316 -0
  923. ctrlsys-1.0.19/tests/python/test_mb02cv.py +628 -0
  924. ctrlsys-1.0.19/tests/python/test_mb02cx.py +226 -0
  925. ctrlsys-1.0.19/tests/python/test_mb02cy.py +235 -0
  926. ctrlsys-1.0.19/tests/python/test_mb02dd.py +456 -0
  927. ctrlsys-1.0.19/tests/python/test_mb02ed.py +247 -0
  928. ctrlsys-1.0.19/tests/python/test_mb02fd.py +260 -0
  929. ctrlsys-1.0.19/tests/python/test_mb02gd.py +391 -0
  930. ctrlsys-1.0.19/tests/python/test_mb02hd.py +361 -0
  931. ctrlsys-1.0.19/tests/python/test_mb02id.py +385 -0
  932. ctrlsys-1.0.19/tests/python/test_mb02jd.py +242 -0
  933. ctrlsys-1.0.19/tests/python/test_mb02jx.py +258 -0
  934. ctrlsys-1.0.19/tests/python/test_mb02kd.py +386 -0
  935. ctrlsys-1.0.19/tests/python/test_mb02md.py +251 -0
  936. ctrlsys-1.0.19/tests/python/test_mb02nd.py +258 -0
  937. ctrlsys-1.0.19/tests/python/test_mb02ny.py +395 -0
  938. ctrlsys-1.0.19/tests/python/test_mb02od.py +269 -0
  939. ctrlsys-1.0.19/tests/python/test_mb02pd.py +335 -0
  940. ctrlsys-1.0.19/tests/python/test_mb02qd.py +395 -0
  941. ctrlsys-1.0.19/tests/python/test_mb02rd.py +123 -0
  942. ctrlsys-1.0.19/tests/python/test_mb02rz.py +291 -0
  943. ctrlsys-1.0.19/tests/python/test_mb02sd.py +119 -0
  944. ctrlsys-1.0.19/tests/python/test_mb02sz.py +241 -0
  945. ctrlsys-1.0.19/tests/python/test_mb02td.py +237 -0
  946. ctrlsys-1.0.19/tests/python/test_mb02tz.py +283 -0
  947. ctrlsys-1.0.19/tests/python/test_mb02ud.py +320 -0
  948. ctrlsys-1.0.19/tests/python/test_mb02uu.py +246 -0
  949. ctrlsys-1.0.19/tests/python/test_mb02uv.py +241 -0
  950. ctrlsys-1.0.19/tests/python/test_mb02uw.py +262 -0
  951. ctrlsys-1.0.19/tests/python/test_mb02vd.py +180 -0
  952. ctrlsys-1.0.19/tests/python/test_mb02wd.py +94 -0
  953. ctrlsys-1.0.19/tests/python/test_mb02xd.py +189 -0
  954. ctrlsys-1.0.19/tests/python/test_mb02yd.py +210 -0
  955. ctrlsys-1.0.19/tests/python/test_mb03ab.py +345 -0
  956. ctrlsys-1.0.19/tests/python/test_mb03ad.py +382 -0
  957. ctrlsys-1.0.19/tests/python/test_mb03ae.py +306 -0
  958. ctrlsys-1.0.19/tests/python/test_mb03ag.py +387 -0
  959. ctrlsys-1.0.19/tests/python/test_mb03ah.py +358 -0
  960. ctrlsys-1.0.19/tests/python/test_mb03ai.py +386 -0
  961. ctrlsys-1.0.19/tests/python/test_mb03ba.py +230 -0
  962. ctrlsys-1.0.19/tests/python/test_mb03bc.py +257 -0
  963. ctrlsys-1.0.19/tests/python/test_mb03bd.py +385 -0
  964. ctrlsys-1.0.19/tests/python/test_mb03be.py +278 -0
  965. ctrlsys-1.0.19/tests/python/test_mb03bf.py +324 -0
  966. ctrlsys-1.0.19/tests/python/test_mb03bg.py +293 -0
  967. ctrlsys-1.0.19/tests/python/test_mb03bz.py +301 -0
  968. ctrlsys-1.0.19/tests/python/test_mb03cd.py +461 -0
  969. ctrlsys-1.0.19/tests/python/test_mb03cz.py +221 -0
  970. ctrlsys-1.0.19/tests/python/test_mb03dd.py +367 -0
  971. ctrlsys-1.0.19/tests/python/test_mb03dz.py +237 -0
  972. ctrlsys-1.0.19/tests/python/test_mb03ed.py +265 -0
  973. ctrlsys-1.0.19/tests/python/test_mb03fd.py +501 -0
  974. ctrlsys-1.0.19/tests/python/test_mb03fz.py +346 -0
  975. ctrlsys-1.0.19/tests/python/test_mb03gd.py +298 -0
  976. ctrlsys-1.0.19/tests/python/test_mb03gz.py +193 -0
  977. ctrlsys-1.0.19/tests/python/test_mb03hd.py +236 -0
  978. ctrlsys-1.0.19/tests/python/test_mb03hz.py +150 -0
  979. ctrlsys-1.0.19/tests/python/test_mb03id.py +482 -0
  980. ctrlsys-1.0.19/tests/python/test_mb03iz.py +359 -0
  981. ctrlsys-1.0.19/tests/python/test_mb03jd.py +320 -0
  982. ctrlsys-1.0.19/tests/python/test_mb03jp.py +294 -0
  983. ctrlsys-1.0.19/tests/python/test_mb03jz.py +375 -0
  984. ctrlsys-1.0.19/tests/python/test_mb03ka.py +483 -0
  985. ctrlsys-1.0.19/tests/python/test_mb03kb.py +558 -0
  986. ctrlsys-1.0.19/tests/python/test_mb03kc.py +295 -0
  987. ctrlsys-1.0.19/tests/python/test_mb03kd.py +542 -0
  988. ctrlsys-1.0.19/tests/python/test_mb03ke.py +302 -0
  989. ctrlsys-1.0.19/tests/python/test_mb03ld.py +455 -0
  990. ctrlsys-1.0.19/tests/python/test_mb03lf.py +375 -0
  991. ctrlsys-1.0.19/tests/python/test_mb03lp.py +350 -0
  992. ctrlsys-1.0.19/tests/python/test_mb03lz.py +345 -0
  993. ctrlsys-1.0.19/tests/python/test_mb03md.py +271 -0
  994. ctrlsys-1.0.19/tests/python/test_mb03od.py +138 -0
  995. ctrlsys-1.0.19/tests/python/test_mb03oy.py +202 -0
  996. ctrlsys-1.0.19/tests/python/test_mb03pd.py +326 -0
  997. ctrlsys-1.0.19/tests/python/test_mb03py.py +356 -0
  998. ctrlsys-1.0.19/tests/python/test_mb03qd.py +204 -0
  999. ctrlsys-1.0.19/tests/python/test_mb03qg.py +286 -0
  1000. ctrlsys-1.0.19/tests/python/test_mb03qv.py +316 -0
  1001. ctrlsys-1.0.19/tests/python/test_mb03qw.py +218 -0
  1002. ctrlsys-1.0.19/tests/python/test_mb03qx.py +216 -0
  1003. ctrlsys-1.0.19/tests/python/test_mb03qy.py +218 -0
  1004. ctrlsys-1.0.19/tests/python/test_mb03rd.py +302 -0
  1005. ctrlsys-1.0.19/tests/python/test_mb03rw.py +260 -0
  1006. ctrlsys-1.0.19/tests/python/test_mb03rx.py +296 -0
  1007. ctrlsys-1.0.19/tests/python/test_mb03ry.py +250 -0
  1008. ctrlsys-1.0.19/tests/python/test_mb03rz.py +406 -0
  1009. ctrlsys-1.0.19/tests/python/test_mb03sd.py +259 -0
  1010. ctrlsys-1.0.19/tests/python/test_mb03td.py +470 -0
  1011. ctrlsys-1.0.19/tests/python/test_mb03ts.py +411 -0
  1012. ctrlsys-1.0.19/tests/python/test_mb03ud.py +277 -0
  1013. ctrlsys-1.0.19/tests/python/test_mb03vd.py +346 -0
  1014. ctrlsys-1.0.19/tests/python/test_mb03vw.py +343 -0
  1015. ctrlsys-1.0.19/tests/python/test_mb03vy.py +323 -0
  1016. ctrlsys-1.0.19/tests/python/test_mb03wa.py +309 -0
  1017. ctrlsys-1.0.19/tests/python/test_mb03wd.py +437 -0
  1018. ctrlsys-1.0.19/tests/python/test_mb03wx.py +391 -0
  1019. ctrlsys-1.0.19/tests/python/test_mb03xd.py +223 -0
  1020. ctrlsys-1.0.19/tests/python/test_mb03xp.py +307 -0
  1021. ctrlsys-1.0.19/tests/python/test_mb03xs.py +467 -0
  1022. ctrlsys-1.0.19/tests/python/test_mb03xu.py +307 -0
  1023. ctrlsys-1.0.19/tests/python/test_mb03xz.py +330 -0
  1024. ctrlsys-1.0.19/tests/python/test_mb03ya.py +220 -0
  1025. ctrlsys-1.0.19/tests/python/test_mb03yd.py +362 -0
  1026. ctrlsys-1.0.19/tests/python/test_mb03yt.py +145 -0
  1027. ctrlsys-1.0.19/tests/python/test_mb03za.py +336 -0
  1028. ctrlsys-1.0.19/tests/python/test_mb03zd.py +417 -0
  1029. ctrlsys-1.0.19/tests/python/test_mb04ad.py +255 -0
  1030. ctrlsys-1.0.19/tests/python/test_mb04az.py +220 -0
  1031. ctrlsys-1.0.19/tests/python/test_mb04bd.py +251 -0
  1032. ctrlsys-1.0.19/tests/python/test_mb04bp.py +244 -0
  1033. ctrlsys-1.0.19/tests/python/test_mb04bz.py +201 -0
  1034. ctrlsys-1.0.19/tests/python/test_mb04cd.py +276 -0
  1035. ctrlsys-1.0.19/tests/python/test_mb04db.py +274 -0
  1036. ctrlsys-1.0.19/tests/python/test_mb04dd.py +134 -0
  1037. ctrlsys-1.0.19/tests/python/test_mb04di.py +268 -0
  1038. ctrlsys-1.0.19/tests/python/test_mb04dl.py +355 -0
  1039. ctrlsys-1.0.19/tests/python/test_mb04dp.py +417 -0
  1040. ctrlsys-1.0.19/tests/python/test_mb04ds.py +305 -0
  1041. ctrlsys-1.0.19/tests/python/test_mb04dy.py +316 -0
  1042. ctrlsys-1.0.19/tests/python/test_mb04dz.py +247 -0
  1043. ctrlsys-1.0.19/tests/python/test_mb04ed.py +307 -0
  1044. ctrlsys-1.0.19/tests/python/test_mb04fd.py +367 -0
  1045. ctrlsys-1.0.19/tests/python/test_mb04fp.py +329 -0
  1046. ctrlsys-1.0.19/tests/python/test_mb04gd.py +287 -0
  1047. ctrlsys-1.0.19/tests/python/test_mb04hd.py +309 -0
  1048. ctrlsys-1.0.19/tests/python/test_mb04id.py +228 -0
  1049. ctrlsys-1.0.19/tests/python/test_mb04iy.py +329 -0
  1050. ctrlsys-1.0.19/tests/python/test_mb04iz.py +331 -0
  1051. ctrlsys-1.0.19/tests/python/test_mb04jd.py +278 -0
  1052. ctrlsys-1.0.19/tests/python/test_mb04kd.py +274 -0
  1053. ctrlsys-1.0.19/tests/python/test_mb04ld.py +255 -0
  1054. ctrlsys-1.0.19/tests/python/test_mb04md.py +256 -0
  1055. ctrlsys-1.0.19/tests/python/test_mb04nd.py +321 -0
  1056. ctrlsys-1.0.19/tests/python/test_mb04ny.py +379 -0
  1057. ctrlsys-1.0.19/tests/python/test_mb04od.py +297 -0
  1058. ctrlsys-1.0.19/tests/python/test_mb04ow.py +258 -0
  1059. ctrlsys-1.0.19/tests/python/test_mb04ox.py +193 -0
  1060. ctrlsys-1.0.19/tests/python/test_mb04oy.py +299 -0
  1061. ctrlsys-1.0.19/tests/python/test_mb04pa.py +268 -0
  1062. ctrlsys-1.0.19/tests/python/test_mb04pb.py +496 -0
  1063. ctrlsys-1.0.19/tests/python/test_mb04pu.py +288 -0
  1064. ctrlsys-1.0.19/tests/python/test_mb04py.py +526 -0
  1065. ctrlsys-1.0.19/tests/python/test_mb04qb.py +193 -0
  1066. ctrlsys-1.0.19/tests/python/test_mb04qc.py +304 -0
  1067. ctrlsys-1.0.19/tests/python/test_mb04qf.py +244 -0
  1068. ctrlsys-1.0.19/tests/python/test_mb04qs.py +266 -0
  1069. ctrlsys-1.0.19/tests/python/test_mb04qu.py +312 -0
  1070. ctrlsys-1.0.19/tests/python/test_mb04rb.py +449 -0
  1071. ctrlsys-1.0.19/tests/python/test_mb04rd.py +406 -0
  1072. ctrlsys-1.0.19/tests/python/test_mb04rs.py +359 -0
  1073. ctrlsys-1.0.19/tests/python/test_mb04rt.py +437 -0
  1074. ctrlsys-1.0.19/tests/python/test_mb04ru.py +325 -0
  1075. ctrlsys-1.0.19/tests/python/test_mb04rv.py +345 -0
  1076. ctrlsys-1.0.19/tests/python/test_mb04rw.py +379 -0
  1077. ctrlsys-1.0.19/tests/python/test_mb04rz.py +451 -0
  1078. ctrlsys-1.0.19/tests/python/test_mb04su.py +280 -0
  1079. ctrlsys-1.0.19/tests/python/test_mb04tb.py +341 -0
  1080. ctrlsys-1.0.19/tests/python/test_mb04ts.py +292 -0
  1081. ctrlsys-1.0.19/tests/python/test_mb04tt.py +417 -0
  1082. ctrlsys-1.0.19/tests/python/test_mb04tu.py +247 -0
  1083. ctrlsys-1.0.19/tests/python/test_mb04tv.py +371 -0
  1084. ctrlsys-1.0.19/tests/python/test_mb04tw.py +473 -0
  1085. ctrlsys-1.0.19/tests/python/test_mb04tx.py +240 -0
  1086. ctrlsys-1.0.19/tests/python/test_mb04ty.py +511 -0
  1087. ctrlsys-1.0.19/tests/python/test_mb04ud.py +336 -0
  1088. ctrlsys-1.0.19/tests/python/test_mb04vd.py +594 -0
  1089. ctrlsys-1.0.19/tests/python/test_mb04vx.py +255 -0
  1090. ctrlsys-1.0.19/tests/python/test_mb04wd.py +396 -0
  1091. ctrlsys-1.0.19/tests/python/test_mb04wp.py +352 -0
  1092. ctrlsys-1.0.19/tests/python/test_mb04wr.py +406 -0
  1093. ctrlsys-1.0.19/tests/python/test_mb04wu.py +312 -0
  1094. ctrlsys-1.0.19/tests/python/test_mb04xd.py +393 -0
  1095. ctrlsys-1.0.19/tests/python/test_mb04xy.py +362 -0
  1096. ctrlsys-1.0.19/tests/python/test_mb04yd.py +455 -0
  1097. ctrlsys-1.0.19/tests/python/test_mb04yw.py +441 -0
  1098. ctrlsys-1.0.19/tests/python/test_mb04zd.py +333 -0
  1099. ctrlsys-1.0.19/tests/python/test_mb05md.py +424 -0
  1100. ctrlsys-1.0.19/tests/python/test_mb05my.py +306 -0
  1101. ctrlsys-1.0.19/tests/python/test_mb05nd.py +260 -0
  1102. ctrlsys-1.0.19/tests/python/test_mb05od.py +294 -0
  1103. ctrlsys-1.0.19/tests/python/test_mb05oy.py +335 -0
  1104. ctrlsys-1.0.19/tests/python/test_mb3jzp.py +419 -0
  1105. ctrlsys-1.0.19/tests/python/test_mb3lzp.py +444 -0
  1106. ctrlsys-1.0.19/tests/python/test_mb3oyz.py +206 -0
  1107. ctrlsys-1.0.19/tests/python/test_mb3pyz.py +227 -0
  1108. ctrlsys-1.0.19/tests/python/test_mb4dbz.py +389 -0
  1109. ctrlsys-1.0.19/tests/python/test_mb4dlz.py +288 -0
  1110. ctrlsys-1.0.19/tests/python/test_mb4dpz.py +278 -0
  1111. ctrlsys-1.0.19/tests/python/test_mc01md.py +334 -0
  1112. ctrlsys-1.0.19/tests/python/test_mc01nd.py +387 -0
  1113. ctrlsys-1.0.19/tests/python/test_mc01od.py +328 -0
  1114. ctrlsys-1.0.19/tests/python/test_mc01pd.py +245 -0
  1115. ctrlsys-1.0.19/tests/python/test_mc01py.py +239 -0
  1116. ctrlsys-1.0.19/tests/python/test_mc01qd.py +238 -0
  1117. ctrlsys-1.0.19/tests/python/test_mc01rd.py +393 -0
  1118. ctrlsys-1.0.19/tests/python/test_mc01sd.py +192 -0
  1119. ctrlsys-1.0.19/tests/python/test_mc01sw.py +114 -0
  1120. ctrlsys-1.0.19/tests/python/test_mc01sx.py +142 -0
  1121. ctrlsys-1.0.19/tests/python/test_mc01sy.py +113 -0
  1122. ctrlsys-1.0.19/tests/python/test_mc01td.py +387 -0
  1123. ctrlsys-1.0.19/tests/python/test_mc01vd.py +240 -0
  1124. ctrlsys-1.0.19/tests/python/test_mc01wd.py +143 -0
  1125. ctrlsys-1.0.19/tests/python/test_mc01xd.py +312 -0
  1126. ctrlsys-1.0.19/tests/python/test_mc03md.py +372 -0
  1127. ctrlsys-1.0.19/tests/python/test_mc03nd.py +263 -0
  1128. ctrlsys-1.0.19/tests/python/test_mc03nx.py +193 -0
  1129. ctrlsys-1.0.19/tests/python/test_mc03ny.py +243 -0
  1130. ctrlsys-1.0.19/tests/python/test_md03ba.py +158 -0
  1131. ctrlsys-1.0.19/tests/python/test_md03bb.py +201 -0
  1132. ctrlsys-1.0.19/tests/python/test_md03bd.py +135 -0
  1133. ctrlsys-1.0.19/tests/python/test_md03bf.py +179 -0
  1134. ctrlsys-1.0.19/tests/python/test_md03by.py +282 -0
  1135. ctrlsys-1.0.19/tests/python/test_nf01ay.py +166 -0
  1136. ctrlsys-1.0.19/tests/python/test_nf01br.py +288 -0
  1137. ctrlsys-1.0.19/tests/python/test_nf01bs.py +254 -0
  1138. ctrlsys-1.0.19/tests/python/test_nf01by.py +253 -0
  1139. ctrlsys-1.0.19/tests/python/test_sb01bd.py +467 -0
  1140. ctrlsys-1.0.19/tests/python/test_sb01bx.py +194 -0
  1141. ctrlsys-1.0.19/tests/python/test_sb01by.py +281 -0
  1142. ctrlsys-1.0.19/tests/python/test_sb01dd.py +241 -0
  1143. ctrlsys-1.0.19/tests/python/test_sb01fy.py +224 -0
  1144. ctrlsys-1.0.19/tests/python/test_sb01md.py +414 -0
  1145. ctrlsys-1.0.19/tests/python/test_sb02cx.py +166 -0
  1146. ctrlsys-1.0.19/tests/python/test_sb02md.py +578 -0
  1147. ctrlsys-1.0.19/tests/python/test_sb02mr.py +141 -0
  1148. ctrlsys-1.0.19/tests/python/test_sb02ms.py +188 -0
  1149. ctrlsys-1.0.19/tests/python/test_sb02mt.py +371 -0
  1150. ctrlsys-1.0.19/tests/python/test_sb02mu.py +388 -0
  1151. ctrlsys-1.0.19/tests/python/test_sb02mv.py +141 -0
  1152. ctrlsys-1.0.19/tests/python/test_sb02mw.py +188 -0
  1153. ctrlsys-1.0.19/tests/python/test_sb02mx.py +455 -0
  1154. ctrlsys-1.0.19/tests/python/test_sb02nd.py +507 -0
  1155. ctrlsys-1.0.19/tests/python/test_sb02od.py +653 -0
  1156. ctrlsys-1.0.19/tests/python/test_sb02ou.py +134 -0
  1157. ctrlsys-1.0.19/tests/python/test_sb02ov.py +156 -0
  1158. ctrlsys-1.0.19/tests/python/test_sb02ow.py +161 -0
  1159. ctrlsys-1.0.19/tests/python/test_sb02ox.py +208 -0
  1160. ctrlsys-1.0.19/tests/python/test_sb02oy.py +593 -0
  1161. ctrlsys-1.0.19/tests/python/test_sb02pd.py +297 -0
  1162. ctrlsys-1.0.19/tests/python/test_sb02qd.py +361 -0
  1163. ctrlsys-1.0.19/tests/python/test_sb02rd.py +844 -0
  1164. ctrlsys-1.0.19/tests/python/test_sb02ru.py +328 -0
  1165. ctrlsys-1.0.19/tests/python/test_sb02sd.py +293 -0
  1166. ctrlsys-1.0.19/tests/python/test_sb03md.py +611 -0
  1167. ctrlsys-1.0.19/tests/python/test_sb03mu.py +327 -0
  1168. ctrlsys-1.0.19/tests/python/test_sb03mv.py +236 -0
  1169. ctrlsys-1.0.19/tests/python/test_sb03mw.py +109 -0
  1170. ctrlsys-1.0.19/tests/python/test_sb03mx.py +194 -0
  1171. ctrlsys-1.0.19/tests/python/test_sb03my.py +217 -0
  1172. ctrlsys-1.0.19/tests/python/test_sb03od.py +360 -0
  1173. ctrlsys-1.0.19/tests/python/test_sb03or.py +294 -0
  1174. ctrlsys-1.0.19/tests/python/test_sb03os.py +416 -0
  1175. ctrlsys-1.0.19/tests/python/test_sb03ot.py +494 -0
  1176. ctrlsys-1.0.19/tests/python/test_sb03ou.py +199 -0
  1177. ctrlsys-1.0.19/tests/python/test_sb03ov.py +186 -0
  1178. ctrlsys-1.0.19/tests/python/test_sb03oy.py +270 -0
  1179. ctrlsys-1.0.19/tests/python/test_sb03oz.py +449 -0
  1180. ctrlsys-1.0.19/tests/python/test_sb03pd.py +291 -0
  1181. ctrlsys-1.0.19/tests/python/test_sb03qd.py +380 -0
  1182. ctrlsys-1.0.19/tests/python/test_sb03qx.py +322 -0
  1183. ctrlsys-1.0.19/tests/python/test_sb03qy.py +293 -0
  1184. ctrlsys-1.0.19/tests/python/test_sb03rd.py +379 -0
  1185. ctrlsys-1.0.19/tests/python/test_sb03sd.py +376 -0
  1186. ctrlsys-1.0.19/tests/python/test_sb03sx.py +200 -0
  1187. ctrlsys-1.0.19/tests/python/test_sb03sy.py +231 -0
  1188. ctrlsys-1.0.19/tests/python/test_sb03td.py +348 -0
  1189. ctrlsys-1.0.19/tests/python/test_sb03ud.py +291 -0
  1190. ctrlsys-1.0.19/tests/python/test_sb04md.py +224 -0
  1191. ctrlsys-1.0.19/tests/python/test_sb04mr.py +145 -0
  1192. ctrlsys-1.0.19/tests/python/test_sb04mw.py +117 -0
  1193. ctrlsys-1.0.19/tests/python/test_sb04nd.py +279 -0
  1194. ctrlsys-1.0.19/tests/python/test_sb04nv.py +237 -0
  1195. ctrlsys-1.0.19/tests/python/test_sb04nw.py +261 -0
  1196. ctrlsys-1.0.19/tests/python/test_sb04nx.py +361 -0
  1197. ctrlsys-1.0.19/tests/python/test_sb04ny.py +395 -0
  1198. ctrlsys-1.0.19/tests/python/test_sb04od.py +428 -0
  1199. ctrlsys-1.0.19/tests/python/test_sb04ow.py +376 -0
  1200. ctrlsys-1.0.19/tests/python/test_sb04pd.py +359 -0
  1201. ctrlsys-1.0.19/tests/python/test_sb04px.py +256 -0
  1202. ctrlsys-1.0.19/tests/python/test_sb04py.py +482 -0
  1203. ctrlsys-1.0.19/tests/python/test_sb04qd.py +224 -0
  1204. ctrlsys-1.0.19/tests/python/test_sb04qr.py +123 -0
  1205. ctrlsys-1.0.19/tests/python/test_sb04rd.py +307 -0
  1206. ctrlsys-1.0.19/tests/python/test_sb04rv.py +308 -0
  1207. ctrlsys-1.0.19/tests/python/test_sb04rw.py +264 -0
  1208. ctrlsys-1.0.19/tests/python/test_sb04rx.py +367 -0
  1209. ctrlsys-1.0.19/tests/python/test_sb04ry.py +297 -0
  1210. ctrlsys-1.0.19/tests/python/test_sb06nd.py +244 -0
  1211. ctrlsys-1.0.19/tests/python/test_sb08cd.py +200 -0
  1212. ctrlsys-1.0.19/tests/python/test_sb08dd.py +186 -0
  1213. ctrlsys-1.0.19/tests/python/test_sb08ed.py +369 -0
  1214. ctrlsys-1.0.19/tests/python/test_sb08fd.py +277 -0
  1215. ctrlsys-1.0.19/tests/python/test_sb08gd.py +338 -0
  1216. ctrlsys-1.0.19/tests/python/test_sb08hd.py +287 -0
  1217. ctrlsys-1.0.19/tests/python/test_sb08md.py +190 -0
  1218. ctrlsys-1.0.19/tests/python/test_sb08my.py +186 -0
  1219. ctrlsys-1.0.19/tests/python/test_sb08nd.py +208 -0
  1220. ctrlsys-1.0.19/tests/python/test_sb08ny.py +206 -0
  1221. ctrlsys-1.0.19/tests/python/test_sb09md.py +308 -0
  1222. ctrlsys-1.0.19/tests/python/test_sb10ad.py +325 -0
  1223. ctrlsys-1.0.19/tests/python/test_sb10dd.py +507 -0
  1224. ctrlsys-1.0.19/tests/python/test_sb10ed.py +505 -0
  1225. ctrlsys-1.0.19/tests/python/test_sb10fd.py +386 -0
  1226. ctrlsys-1.0.19/tests/python/test_sb10hd.py +358 -0
  1227. ctrlsys-1.0.19/tests/python/test_sb10id.py +326 -0
  1228. ctrlsys-1.0.19/tests/python/test_sb10jd.py +449 -0
  1229. ctrlsys-1.0.19/tests/python/test_sb10kd.py +295 -0
  1230. ctrlsys-1.0.19/tests/python/test_sb10ld.py +209 -0
  1231. ctrlsys-1.0.19/tests/python/test_sb10md.py +326 -0
  1232. ctrlsys-1.0.19/tests/python/test_sb10pd.py +533 -0
  1233. ctrlsys-1.0.19/tests/python/test_sb10rd.py +217 -0
  1234. ctrlsys-1.0.19/tests/python/test_sb10sd.py +539 -0
  1235. ctrlsys-1.0.19/tests/python/test_sb10td.py +335 -0
  1236. ctrlsys-1.0.19/tests/python/test_sb10ud.py +372 -0
  1237. ctrlsys-1.0.19/tests/python/test_sb10vd.py +241 -0
  1238. ctrlsys-1.0.19/tests/python/test_sb10wd.py +410 -0
  1239. ctrlsys-1.0.19/tests/python/test_sb10yd.py +248 -0
  1240. ctrlsys-1.0.19/tests/python/test_sb10zd.py +322 -0
  1241. ctrlsys-1.0.19/tests/python/test_sb10zp.py +149 -0
  1242. ctrlsys-1.0.19/tests/python/test_sb16ad.py +509 -0
  1243. ctrlsys-1.0.19/tests/python/test_sb16ay.py +280 -0
  1244. ctrlsys-1.0.19/tests/python/test_sb16bd.py +449 -0
  1245. ctrlsys-1.0.19/tests/python/test_sb16cd.py +612 -0
  1246. ctrlsys-1.0.19/tests/python/test_sb16cy.py +354 -0
  1247. ctrlsys-1.0.19/tests/python/test_sg02ad.py +428 -0
  1248. ctrlsys-1.0.19/tests/python/test_sg02cv.py +387 -0
  1249. ctrlsys-1.0.19/tests/python/test_sg02cw.py +761 -0
  1250. ctrlsys-1.0.19/tests/python/test_sg02cx.py +592 -0
  1251. ctrlsys-1.0.19/tests/python/test_sg02nd.py +337 -0
  1252. ctrlsys-1.0.19/tests/python/test_sg03ad.py +625 -0
  1253. ctrlsys-1.0.19/tests/python/test_sg03ax.py +255 -0
  1254. ctrlsys-1.0.19/tests/python/test_sg03ay.py +200 -0
  1255. ctrlsys-1.0.19/tests/python/test_sg03bd.py +218 -0
  1256. ctrlsys-1.0.19/tests/python/test_sg03br.py +120 -0
  1257. ctrlsys-1.0.19/tests/python/test_sg03bs.py +303 -0
  1258. ctrlsys-1.0.19/tests/python/test_sg03bt.py +298 -0
  1259. ctrlsys-1.0.19/tests/python/test_sg03bu.py +273 -0
  1260. ctrlsys-1.0.19/tests/python/test_sg03bv.py +306 -0
  1261. ctrlsys-1.0.19/tests/python/test_sg03bw.py +268 -0
  1262. ctrlsys-1.0.19/tests/python/test_sg03bx.py +275 -0
  1263. ctrlsys-1.0.19/tests/python/test_sg03by.py +252 -0
  1264. ctrlsys-1.0.19/tests/python/test_sg03bz.py +662 -0
  1265. ctrlsys-1.0.19/tests/python/test_tb01id.py +471 -0
  1266. ctrlsys-1.0.19/tests/python/test_tb01iz.py +409 -0
  1267. ctrlsys-1.0.19/tests/python/test_tb01kd.py +377 -0
  1268. ctrlsys-1.0.19/tests/python/test_tb01kx.py +385 -0
  1269. ctrlsys-1.0.19/tests/python/test_tb01ld.py +282 -0
  1270. ctrlsys-1.0.19/tests/python/test_tb01md.py +280 -0
  1271. ctrlsys-1.0.19/tests/python/test_tb01nd.py +328 -0
  1272. ctrlsys-1.0.19/tests/python/test_tb01pd.py +485 -0
  1273. ctrlsys-1.0.19/tests/python/test_tb01px.py +517 -0
  1274. ctrlsys-1.0.19/tests/python/test_tb01td.py +276 -0
  1275. ctrlsys-1.0.19/tests/python/test_tb01ty.py +410 -0
  1276. ctrlsys-1.0.19/tests/python/test_tb01ud.py +414 -0
  1277. ctrlsys-1.0.19/tests/python/test_tb01ux.py +333 -0
  1278. ctrlsys-1.0.19/tests/python/test_tb01uy.py +445 -0
  1279. ctrlsys-1.0.19/tests/python/test_tb01vd.py +415 -0
  1280. ctrlsys-1.0.19/tests/python/test_tb01vy.py +359 -0
  1281. ctrlsys-1.0.19/tests/python/test_tb01wd.py +201 -0
  1282. ctrlsys-1.0.19/tests/python/test_tb01wx.py +465 -0
  1283. ctrlsys-1.0.19/tests/python/test_tb01xd.py +508 -0
  1284. ctrlsys-1.0.19/tests/python/test_tb01xz.py +591 -0
  1285. ctrlsys-1.0.19/tests/python/test_tb01zd.py +291 -0
  1286. ctrlsys-1.0.19/tests/python/test_tb03ad.py +455 -0
  1287. ctrlsys-1.0.19/tests/python/test_tb03ay.py +446 -0
  1288. ctrlsys-1.0.19/tests/python/test_tb04ad.py +372 -0
  1289. ctrlsys-1.0.19/tests/python/test_tb04bd.py +365 -0
  1290. ctrlsys-1.0.19/tests/python/test_tb04bv.py +374 -0
  1291. ctrlsys-1.0.19/tests/python/test_tb04bw.py +374 -0
  1292. ctrlsys-1.0.19/tests/python/test_tb04bx.py +320 -0
  1293. ctrlsys-1.0.19/tests/python/test_tb04cd.py +314 -0
  1294. ctrlsys-1.0.19/tests/python/test_tb05ad.py +366 -0
  1295. ctrlsys-1.0.19/tests/python/test_tc01od.py +257 -0
  1296. ctrlsys-1.0.19/tests/python/test_tc04ad.py +318 -0
  1297. ctrlsys-1.0.19/tests/python/test_tc05ad.py +407 -0
  1298. ctrlsys-1.0.19/tests/python/test_td03ad.py +475 -0
  1299. ctrlsys-1.0.19/tests/python/test_td03ay.py +315 -0
  1300. ctrlsys-1.0.19/tests/python/test_td04ad.py +450 -0
  1301. ctrlsys-1.0.19/tests/python/test_td05ad.py +416 -0
  1302. ctrlsys-1.0.19/tests/python/test_tf01md.py +235 -0
  1303. ctrlsys-1.0.19/tests/python/test_tf01mx.py +417 -0
  1304. ctrlsys-1.0.19/tests/python/test_tf01my.py +384 -0
  1305. ctrlsys-1.0.19/tests/python/test_tf01nd.py +317 -0
  1306. ctrlsys-1.0.19/tests/python/test_tf01od.py +196 -0
  1307. ctrlsys-1.0.19/tests/python/test_tf01pd.py +257 -0
  1308. ctrlsys-1.0.19/tests/python/test_tf01qd.py +343 -0
  1309. ctrlsys-1.0.19/tests/python/test_tf01rd.py +343 -0
  1310. ctrlsys-1.0.19/tests/python/test_tg01ad.py +401 -0
  1311. ctrlsys-1.0.19/tests/python/test_tg01az.py +450 -0
  1312. ctrlsys-1.0.19/tests/python/test_tg01bd.py +244 -0
  1313. ctrlsys-1.0.19/tests/python/test_tg01cd.py +316 -0
  1314. ctrlsys-1.0.19/tests/python/test_tg01dd.py +339 -0
  1315. ctrlsys-1.0.19/tests/python/test_tg01ed.py +525 -0
  1316. ctrlsys-1.0.19/tests/python/test_tg01fd.py +264 -0
  1317. ctrlsys-1.0.19/tests/python/test_tg01fz.py +298 -0
  1318. ctrlsys-1.0.19/tests/python/test_tg01gd.py +383 -0
  1319. ctrlsys-1.0.19/tests/python/test_tg01hd.py +407 -0
  1320. ctrlsys-1.0.19/tests/python/test_tg01hu.py +458 -0
  1321. ctrlsys-1.0.19/tests/python/test_tg01hx.py +406 -0
  1322. ctrlsys-1.0.19/tests/python/test_tg01hy.py +481 -0
  1323. ctrlsys-1.0.19/tests/python/test_tg01id.py +434 -0
  1324. ctrlsys-1.0.19/tests/python/test_tg01jd.py +416 -0
  1325. ctrlsys-1.0.19/tests/python/test_tg01jy.py +538 -0
  1326. ctrlsys-1.0.19/tests/python/test_tg01kd.py +340 -0
  1327. ctrlsys-1.0.19/tests/python/test_tg01kz.py +428 -0
  1328. ctrlsys-1.0.19/tests/python/test_tg01ld.py +338 -0
  1329. ctrlsys-1.0.19/tests/python/test_tg01ly.py +364 -0
  1330. ctrlsys-1.0.19/tests/python/test_tg01md.py +275 -0
  1331. ctrlsys-1.0.19/tests/python/test_tg01nd.py +421 -0
  1332. ctrlsys-1.0.19/tests/python/test_tg01nx.py +484 -0
  1333. ctrlsys-1.0.19/tests/python/test_tg01oa.py +228 -0
  1334. ctrlsys-1.0.19/tests/python/test_tg01ob.py +359 -0
  1335. ctrlsys-1.0.19/tests/python/test_tg01od.py +355 -0
  1336. ctrlsys-1.0.19/tests/python/test_tg01oz.py +398 -0
  1337. ctrlsys-1.0.19/tests/python/test_tg01pd.py +462 -0
  1338. ctrlsys-1.0.19/tests/python/test_tg01qd.py +458 -0
  1339. ctrlsys-1.0.19/tests/python/test_tg01wd.py +395 -0
  1340. ctrlsys-1.0.19/tests/python/test_ud01bd.py +213 -0
  1341. ctrlsys-1.0.19/tests/python/test_ud01cd.py +288 -0
  1342. ctrlsys-1.0.19/tests/python/test_ud01dd.py +269 -0
  1343. ctrlsys-1.0.19/tests/python/test_ud01md.py +279 -0
  1344. ctrlsys-1.0.19/tests/python/test_ud01mz.py +279 -0
  1345. ctrlsys-1.0.19/tests/python/test_ud01nd.py +354 -0
  1346. ctrlsys-1.0.19/tests/python/test_ue01md.py +273 -0
  1347. ctrlsys-1.0.19/tests/python/test_zgegs.py +267 -0
  1348. ctrlsys-1.0.19/tests/python/test_zgegv.py +290 -0
  1349. ctrlsys-1.0.19/tools/extract_examples.py +323 -0
  1350. ctrlsys-1.0.19/tools/generate_docstrings.py +102 -0
  1351. ctrlsys-1.0.19/uv.lock +715 -0
@@ -0,0 +1,44 @@
1
+ ---
2
+ trigger: always_on
3
+ ---
4
+
5
+ C11 translation of SLICOT (Subroutine Library In Control Theory) from Fortran77.
6
+
7
+ **Source of truth:** See `/CLAUDE.md` for complete instructions.
8
+
9
+ **Reference:** `SLICOT-Reference/src/` (Fortran77), `SLICOT-Reference/doc/` (HTML docs)
10
+
11
+ ## Quick Commands (macOS)
12
+
13
+ ```bash
14
+ # Setup
15
+ uv venv && uv pip install ".[test]"
16
+
17
+ # Build & test
18
+ cmake --preset macos-arm64-debug
19
+ cmake --build --preset macos-arm64-debug-build
20
+ uv pip install .
21
+ .venv/bin/pytest tests/python/ -v
22
+
23
+ # Clean rebuild
24
+ rm -rf build/macos-arm64-debug && cmake --preset macos-arm64-debug && cmake --build --preset macos-arm64-debug-build && uv pip install .
25
+ ```
26
+
27
+ ## Memory Debugging
28
+
29
+ ```bash
30
+ # ASAN via Docker (required before PR)
31
+ ./scripts/run_asan_docker.sh # full suite
32
+ ./scripts/run_asan_docker.sh tests/python/test_x.py -v # single file
33
+
34
+ # macOS quick checks (assumes venv active)
35
+ MallocScribble=1 pytest tests/python/ -v # use-after-free
36
+ DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib pytest tests/python/test_x.py -v # overflow
37
+ ```
38
+
39
+ ## Translation Workflow
40
+
41
+ > [!NOTE]
42
+ > See `/.agent/workflows/translate_slicot_routine.md` for the step-by-step TDD process.
43
+
44
+ **Check deps:** `python3 tools/extract_dependencies.py SLICOT-Reference/src/ ROUTINE_NAME`
@@ -0,0 +1,48 @@
1
+ ---
2
+ description: Translate a SLICOT Fortran routine to C following strict TDD and memory safety guidelines.
3
+ ---
4
+
5
+ 1. **Parse Documentation**
6
+ - Follow the workflow: `.agent/workflows/parse_slicot_documentation.md`
7
+ - **Goal**: Understand the routine's purpose, inputs, outputs, and algorithm.
8
+
9
+ 2. **Analyze Dependencies**
10
+ - Follow the workflow: `.agent/workflows/analyze_slicot_dependencies.md`
11
+ - **Goal**: Ensure the routine is ready for translation (Level 0 or all dependencies met).
12
+
13
+ 3. **Extract Test Data (RED Phase)**
14
+ - Follow the workflow: `.agent/workflows/extract_slicot_test_data.md`
15
+ - **Goal**: Create accurate test data (NPZ or inline) with correct column/row-major parsing.
16
+
17
+ 4. **Write Tests (RED Phase)**
18
+ - Create `tests/python/test_[routine].py`.
19
+ - **Requirements**:
20
+ - `np.random.seed(N)` for ANY random data.
21
+ - Validate actual numerical values (not just shapes).
22
+ - Mathematical property tests (e.g. eigenvalue preservation, residual checks).
23
+ - Minimum 3 tests: Basic, Edge Case, Error Handling.
24
+ - Run `pytest tests/python/test_[routine].py` and confirm it FAILS.
25
+
26
+ 5. **Implement C Code (GREEN Phase)**
27
+ - Create `src/[XX]/[routine].c` (lowercase).
28
+ - **Checklist**:
29
+ - [ ] Includes: `slicot.h` and `slicot_blas.h`.
30
+ - [ ] Use `SLC_*` macros for BLAS/LAPACK.
31
+ - [ ] Verify **Critical Patterns** (Types, Indexing, Memory) in `.agent/rules/slicot-fortran-c11-translator.md`.
32
+ - [ ] Bounds check ALL array accesses.
33
+ - [ ] Validate 1-based to 0-based index conversions.
34
+ - Update `src/CMakeLists.txt` to include the new file.
35
+ - Update `include/slicot.h` with the function declaration and Doxygen comments.
36
+ - Update `python/slicot_module.c` to wrap the function.
37
+ - Update `python/slicot/__init__.py` to export it.
38
+
39
+ 6. **Build and Verify (GREEN Phase)**
40
+ - Run `cmake --build --preset linux-x64-debug-build`.
41
+ - Run `uv pip install .`.
42
+ - Run `.venv/bin/pytest tests/python/test_[routine].py`.
43
+ - Ensure all tests PASS.
44
+
45
+ 7. **Refactor and Finalize**
46
+ - Clean up code, remove debug prints.
47
+ - Ensure no double-free issues in Python wrappers.
48
+ - Run full test suite: `pytest tests/python/`.
ctrlsys-1.0.19/.clangd ADDED
@@ -0,0 +1,2 @@
1
+ CompileFlags:
2
+ CompilationDatabase: build/
@@ -0,0 +1,570 @@
1
+ ---
2
+ name: slicot-fortran-translator
3
+ description: Use this agent when the user needs to translate SLICOT Fortran77 routines to C11, implement new SLICOT functions, or work with SLICOT test cases. Examples:\n\n<example>\nContext: User wants to translate the AB01MD routine from Fortran to C.\nuser: "I need to implement AB01MD from the SLICOT library"\nassistant: "I'll use the slicot-fortran-translator agent to handle this translation following the TDD workflow."\n<commentary>The user is requesting SLICOT routine implementation, which requires the specialized translation workflow including parsing Fortran source, extracting test data, and following RED-GREEN-REFACTOR-VERIFY pattern.</commentary>\n</example>\n\n<example>\nContext: User has just completed some work and mentions SLICOT routine translation.\nuser: "Can you help translate MB03OY to C?"\nassistant: "I'm going to use the slicot-fortran-translator agent to translate MB03OY following the strict TDD workflow."\n<commentary>SLICOT translation request requires the specialized agent to ensure proper test-first development, dependency analysis, and memory-safe C11 implementation.</commentary>\n</example>\n\n<example>\nContext: User is working on SLICOT codebase and needs dependency analysis.\nuser: "What are the dependencies for implementing SB04MD?"\nassistant: "Let me use the slicot-fortran-translator agent to analyze SB04MD dependencies and plan the implementation."\n<commentary>Dependency analysis is part of the RED phase in SLICOT translation workflow, requiring the specialized agent's knowledge of dependency extraction tools.</commentary>\n</example>
4
+ model: opus
5
+ color: green
6
+ ---
7
+
8
+ You are an elite Fortran-to-C translation specialist with deep expertise in numerical computing, memory safety, and the SLICOT control theory library. Your mission is to produce production-grade C11 implementations that are memory-safe, performant, and fully tested.
9
+
10
+ ## Operating Principles
11
+
12
+ 1. **TDD is Non-Negotiable**: Always follow RED → GREEN → REFACTOR → VERIFY. Never write implementation code before tests exist and fail.
13
+
14
+ 2. **Complete Implementation**: Handle entire TDD cycle yourself - write tests, implement code, iterate until passing.
15
+
16
+ 3. **Numerical Library Standards (NO TOLERANCE FOR ERRORS)**:
17
+ - **NEVER test only shapes** - always validate actual numerical values
18
+ - **ALL random data must use `np.random.seed(N)`** with documented seed for cross-platform reproducibility
19
+ - **Mathematical property tests are REQUIRED** - validate invariants (eigenvalue preservation, state equations, etc.)
20
+ - **Appropriate tolerances**: `rtol=1e-14` for exact math, algorithm-specific for iterative methods
21
+ - Tests must be deterministic and reproducible across all platforms
22
+
23
+ 4. **Memory Safety First**: Every array access must be bounds-checked. Every allocation must have corresponding cleanup. Index conversions from 1-based (Fortran) to 0-based (C) must be validated.
24
+
25
+ 5. **Performance Matters**: Use column-major storage. Never copy data unnecessarily. Leverage BLAS/LAPACK directly via `SLC_*` wrappers.
26
+
27
+ 6. **Documentation is Code**: Extract precise requirements from HTML docs using `/skill slicot-knowledge`. Test data must come from authoritative sources in priority order: HTML docs, examples, benchmark data, then synthetic (with approval).
28
+
29
+ 7. **Large File Awareness**: Never read entire files > 500 lines. Use targeted strategies:
30
+ - Wrapper files (`py_*.c`, up to 8000+ lines): `tail -30` to see end, then append
31
+ - Header files (`*.h`, up to 1400+ lines): `tail -40` to see end, insert before `#endif`
32
+ - Use `grep -n` to find insertion points
33
+ - Files < 400 lines (module.c, wrappers.h, docstrings.json, __init__.py, CMakeLists.txt): OK to read fully
34
+
35
+ ## Workflow Execution
36
+
37
+ ### Issue Tracking Integration
38
+
39
+ Use `bd` (beads) for ALL tracking - **NEVER use TodoWrite for future work**.
40
+
41
+ ```bash
42
+ # Before starting - check for existing issue or create one
43
+ bd ready --json # Check ready work queue
44
+ bd create --title="[ROUTINE] to C" --type=task --priority=2 --json
45
+
46
+ # When starting work
47
+ bd update <id> --status in_progress --json
48
+
49
+ # When complete (after VERIFY phase passes)
50
+ bd close <id> --reason "[ROUTINE] translated with N passing tests" --json
51
+ ```
52
+
53
+ **Discovered Work During Translation** - Create beads issues immediately:
54
+
55
+ ```bash
56
+ # Technical debt found (e.g., missing bounds check in dependency)
57
+ bd create --title="[ROUTINE] missing bounds check on IPIV" --type=bug --priority=2 --json
58
+
59
+ # Future enhancement opportunity
60
+ bd create --title="Optimize [ROUTINE] BLAS calls" --type=task --priority=3 --json
61
+
62
+ # Dependency needed
63
+ bd create --title="[DEP_ROUTINE] to C (blocks [ROUTINE])" --type=task --priority=2 --json
64
+ bd dep add <new-id> <current-id> # Mark dependency relationship
65
+
66
+ # Update existing issue with findings
67
+ bd update <existing-id> --description="Additional context: found X during Y translation" --json
68
+ ```
69
+
70
+ **When to Create Issues:**
71
+ - Bug: Memory safety issue, incorrect output, missing validation
72
+ - Task: Missing dependency, refactoring opportunity, optimization candidate
73
+ - Feature: New capability needed, API improvement
74
+
75
+ **Do NOT:**
76
+ - Use TodoWrite for anything beyond current session execution
77
+ - Create todos for future work - use `bd create` instead
78
+ - Leave discovered issues undocumented - capture in beads immediately
79
+
80
+ **Do NOT commit after each TDD phase.** Complete entire RED→GREEN→REFACTOR→VERIFY cycle, then make a single commit with the completed work.
81
+
82
+ ### Platform Detection (run once at start)
83
+
84
+ ```bash
85
+ # Detect platform and set preset
86
+ uname -s # Darwin = macOS, Linux = Linux
87
+ # Use: macos-arm64-debug-build (macOS) or linux-x64-debug-build (Linux)
88
+ ```
89
+
90
+ ### Phase 1: RED (Test First)
91
+
92
+ 1. **Parse Documentation**: Use `/skill slicot-knowledge` to extract routine specifications, parameters, and example data from `SLICOT-Reference/doc/[ROUTINE].html`
93
+
94
+ 2. **Analyze Dependencies**: Run `python3 tools/extract_dependencies.py SLICOT-Reference/src/ [ROUTINE]` to identify dependency level and required subroutines
95
+
96
+ 3. **Extract Test Data** (priority order):
97
+ - HTML doc examples (parse with skill)
98
+ - `SLICOT-Reference/examples/T[ROUTINE].f` + data files
99
+ - `SLICOT-Reference/benchmark_data/` files
100
+ - Python control/scipy packages (generate valid test data, then extract to hardcoded values)
101
+ - Synthetic NumPy data (only with explicit approval)
102
+
103
+ **CRITICAL - Test Dependencies**: Tests must NOT depend on control, scipy, or other external packages (except NumPy).
104
+
105
+ **Test Data Storage Strategy** (threshold: ≥50 values or >10 lines):
106
+ | Data Size | Storage | Example |
107
+ |-----------|---------|---------|
108
+ | Small (<50 values) | Inline `np.array([...])` | 3x3 matrix |
109
+ | Large (≥50 values) | NPZ file `tests/python/data/` | 1000-sample time series |
110
+ | Shared between tests | ALWAYS NPZ | IB01AD/IB01BD share I/O data |
111
+
112
+ **Goal**: Test files <400 lines. If embedded data makes file >500 lines, extract to NPZ:
113
+ ```python
114
+ # Save (one-time): np.savez('tests/python/data/routine_test_data.npz', u=u, y=y)
115
+ # Load: data = np.load(os.path.join(os.path.dirname(__file__), 'data', 'routine_test_data.npz'))
116
+ ```
117
+
118
+ **Using Python Control/SciPy for Data Generation**: When authoritative examples unavailable, use temporary Python script to generate test data, then hardcode values in tests:
119
+
120
+ **Step 1 - Create temporary generation script** (e.g., `temp_gen_[routine]_data.py`):
121
+ ```python
122
+ import control as ct
123
+ import scipy.linalg
124
+ import numpy as np
125
+
126
+ # Generate stable random system
127
+ sys = ct.rss(states=4, outputs=2, inputs=1)
128
+ A, B, C, D = sys.A, sys.B, sys.C, sys.D
129
+
130
+ # Or create specific state-space system
131
+ A = np.array([[...]], order='F', dtype=float)
132
+ B = np.array([[...]], order='F', dtype=float)
133
+
134
+ # Compute expected outputs using control/scipy
135
+ X = ct.lyap(A, Q) # Continuous Lyapunov
136
+ X = ct.dlyap(A, Q) # Discrete Lyapunov
137
+ X = ct.care(A, B, Q, R) # Continuous Riccati
138
+ K = ct.lqr(A, B, Q, R) # LQR gain
139
+ # or scipy.linalg.solve_continuous_lyapunov(A, Q)
140
+
141
+ # Print arrays with full precision for hardcoding
142
+ np.set_printoptions(precision=16, suppress=False)
143
+ print("A =", repr(A))
144
+ print("Expected X =", repr(X))
145
+ ```
146
+
147
+ **Step 2 - Run script and extract values**:
148
+ ```bash
149
+ python temp_gen_[routine]_data.py
150
+ ```
151
+
152
+ **Step 3 - Hardcode extracted values in test** (`tests/python/test_[routine].py`):
153
+ ```python
154
+ import numpy as np
155
+ from ctrlsys import [routine]
156
+
157
+ def test_[routine]_basic():
158
+ # Input data (from generation script)
159
+ A = np.array([[...]], order='F', dtype=float)
160
+ Q = np.array([[...]], order='F', dtype=float)
161
+
162
+ # Expected output (from generation script)
163
+ X_expected = np.array([[...]], order='F', dtype=float)
164
+
165
+ # Call SLICOT routine
166
+ X, info = [routine](A, Q)
167
+
168
+ # Only NumPy used in test
169
+ np.testing.assert_allclose(X, X_expected, rtol=1e-14)
170
+ ```
171
+
172
+ **Step 4 - Delete temporary script** after extracting all needed data. Tests must run with only NumPy dependency.
173
+
174
+ Ensure generated systems satisfy routine preconditions (controllability, stability, etc.)
175
+
176
+ 4. **Write Tests**: Create `tests/python/test_[routine].py` following **NUMERICAL LIBRARY STANDARDS**:
177
+
178
+ **Test Requirements** (minimum 3 tests):
179
+ - Basic functionality (from HTML doc example)
180
+ - Edge case (boundary conditions)
181
+ - Error handling (invalid parameters, info > 0)
182
+ - **Mathematical property validation** (see below)
183
+
184
+ **Deterministic & Reproducible Tests**:
185
+ - ALWAYS use `np.random.seed(N)` before ANY random data generation
186
+ - Document seed in test docstring: `Random seed: 42 (for reproducibility)`
187
+ - Different seeds for different tests (42, 123, 456, 789, etc.)
188
+ - Never use `np.random.RandomState()` - use `np.random.seed()` for cross-platform reproducibility
189
+
190
+ **Numerical Accuracy Standards** (NO TOLERANCE FOR ERRORS):
191
+ - Use `order='F'` for ALL NumPy arrays (column-major)
192
+ - **NEVER test only output shapes** - always validate numerical correctness
193
+ - Test actual values with appropriate tolerance:
194
+ * `rtol=1e-14`: Machine precision tests (property-based, exact math)
195
+ * `rtol=1e-13, atol=1e-14`: Iterative algorithms (Lyapunov, Riccati)
196
+ * `rtol=1e-3, atol=1e-4`: HTML doc data (matches 4-decimal display precision)
197
+ * `rtol=1e-6` to `1e-13`: Control package cross-validation (algorithm-dependent)
198
+
199
+ **Mathematical Property Tests** (REQUIRED for numerical correctness):
200
+ Based on routine type, add property validation tests:
201
+
202
+ - **Transpose/Permutation**:
203
+ * Involution: `(A^T)^T = A`
204
+ * Orthogonality preservation: `(Q^T)Q = I`
205
+ * Symmetry preservation: `A^T = A` for symmetric A
206
+
207
+ - **Similarity Transformations** (Schur, QR, etc.):
208
+ * Eigenvalue preservation: `λ(A) = λ(U^T A U)`
209
+ * Orthogonality: `U^T U = I`
210
+ * Determinant preservation: `det(A) = det(A_transformed)`
211
+
212
+ - **State-Space Systems**:
213
+ * State evolution: `x(k+1) = A*x(k) + B*u(k)` holds exactly
214
+ * Output equation: `y(k) = C*x(k) + D*u(k)` holds exactly
215
+ * Markov parameters: `h(0)=D, h(1)=CB, h(2)=CAB, ...`
216
+ * Controllability/observability rank
217
+
218
+ - **Lyapunov/Riccati Equations**:
219
+ * Residual: `A*X + X*A^T + Q = 0` (continuous)
220
+ * Residual: `A*X*A^T - X + Q = 0` (discrete)
221
+ * Symmetry: `X = X^T`
222
+ * Positive definiteness: eigenvalues > 0
223
+
224
+ **Example Test Structure**:
225
+ ```python
226
+ def test_routine_basic():
227
+ """
228
+ Validate basic functionality using SLICOT HTML doc example.
229
+
230
+ Tests numerical correctness of transformation, not just shapes.
231
+ """
232
+ # Input from HTML doc
233
+ a = np.array([[...]], order='F', dtype=float)
234
+
235
+ # Expected output from HTML doc
236
+ x_expected = np.array([[...]], order='F', dtype=float)
237
+
238
+ # Call routine
239
+ x, info = routine(a)
240
+
241
+ assert info == 0
242
+ # Validate actual values (rtol based on source precision)
243
+ np.testing.assert_allclose(x, x_expected, rtol=1e-3, atol=1e-4)
244
+
245
+ def test_routine_eigenvalue_preservation():
246
+ """
247
+ Validate mathematical property: eigenvalues preserved under transformation.
248
+
249
+ Random seed: 42 (for reproducibility)
250
+ """
251
+ np.random.seed(42)
252
+ n = 4
253
+ a = np.random.randn(n, n).astype(float, order='F')
254
+
255
+ # Compute eigenvalues before
256
+ eig_before = np.linalg.eigvals(a)
257
+
258
+ # Apply transformation
259
+ a_transformed, u, info = routine(a)
260
+ assert info == 0
261
+
262
+ # Compute eigenvalues after
263
+ eig_after = np.linalg.eigvals(a_transformed)
264
+
265
+ # Validate preservation (machine precision)
266
+ np.testing.assert_allclose(
267
+ sorted(eig_before.real),
268
+ sorted(eig_after.real),
269
+ rtol=1e-14
270
+ )
271
+
272
+ def test_routine_state_space_equations():
273
+ """
274
+ Validate state-space equations hold exactly for discrete-time system.
275
+
276
+ Tests: x(k+1) = A*x(k) + B*u(k) and y(k) = C*x(k) + D*u(k)
277
+ Random seed: 888 (for reproducibility)
278
+ """
279
+ np.random.seed(888)
280
+ n, m, l = 3, 1, 2
281
+
282
+ # Generate system from routine
283
+ a, b, c, d, x0, info = routine(n, m, l, theta)
284
+ assert info == 0
285
+
286
+ # Manual simulation
287
+ x = x0.copy()
288
+ u = np.array([[1.0]], order='F')
289
+
290
+ for k in range(10):
291
+ # Compute expected next state
292
+ x_next_expected = a @ x + b @ u
293
+ y_expected = c @ x + d @ u
294
+
295
+ # Compare with routine output (machine precision)
296
+ np.testing.assert_allclose(x_next, x_next_expected, rtol=1e-14, atol=1e-15)
297
+ np.testing.assert_allclose(y, y_expected, rtol=1e-14, atol=1e-15)
298
+
299
+ x = x_next
300
+ ```
301
+
302
+ 5. **Verify Failure**: `pytest tests/python/test_[routine].py -v` must fail
303
+
304
+ ### Phase 2: GREEN (Implementation)
305
+
306
+ 1. **Read Fortran Source**: Analyze `SLICOT-Reference/src/[ROUTINE].f`
307
+
308
+ 2. **Write C Implementation** (`src/[XX]/[routine].c`):
309
+ - Column-major indexing: `a[i + j*lda]`
310
+ - Index conversion with bounds check: `k = ipiv[j] - 1; if (k < 0 || k >= n) ...`
311
+ - BLAS/LAPACK via SLC_* wrappers, scalars by pointer
312
+ - LAPACK SELECT callbacks return `int`, not `bool`
313
+
314
+ 3. **Write Header** (`include/slicot/[xx].h`): Add function declaration
315
+ - **Large file strategy**: Use `tail -40 include/slicot/[xx].h` to see end
316
+ - Insert new declaration before `#endif` guard
317
+ - Never read entire header file (can be 1000+ lines)
318
+
319
+ 4. **Write Python Wrapper** (`python/wrappers/py_[xx].c`):
320
+ - Input arrays: `NPY_ARRAY_FARRAY | NPY_ARRAY_WRITEBACKIFCOPY`
321
+ - Output arrays: `PyArray_New` with column-major strides + `NPY_ARRAY_OWNDATA`
322
+ - In-place: return input array directly, no double-wrap
323
+ - **Large file strategy**: Use `tail -30 python/wrappers/py_[xx].c` to see end
324
+ - Append new function after final `}` - never read entire file (can be 8000+ lines)
325
+
326
+ 5. **Update Module** (these files < 400 lines, OK to read in full):
327
+ - `python/wrappers/py_wrappers.h` - extern declaration
328
+ - `python/slicot_module.c` - method table entry
329
+ - `python/data/docstrings.json` - docstring
330
+ - `python/slicot/__init__.py` - export
331
+ - `src/CMakeLists.txt` - add to SLICOT_SOURCES
332
+
333
+ 6. **Build & Test**:
334
+ ```bash
335
+ # Single command - build, install, test (use appropriate preset)
336
+ # macOS:
337
+ cmake --build --preset macos-arm64-debug-build && uv pip install . && .venv/bin/pytest tests/python/test_[routine].py -v
338
+ # Linux:
339
+ cmake --build --preset linux-x64-debug-build && uv pip install . && .venv/bin/pytest tests/python/test_[routine].py -v
340
+ ```
341
+
342
+ **IMPORTANT**:
343
+ - Venv is pre-activated in this environment - just run commands directly
344
+ - Always chain build → install → test in single command (avoids stale module)
345
+ - If pip fails with network error, the sandbox is blocking - build already succeeded, tests ran earlier
346
+
347
+ 7. **Iterate**: Fix failures until all tests pass
348
+
349
+ ### Phase 3: REFACTOR (Clean Up)
350
+
351
+ 1. **Code Quality**:
352
+ - Remove unnecessary comments (only keep bugs/TODOs/known issues)
353
+ - Verify BLAS/LAPACK usage is optimal
354
+ - Check memory cleanup paths
355
+ - Validate all index conversions have bounds checks
356
+
357
+ 2. **Verify Tests Still Pass**: `uv pip install . && .venv/bin/pytest tests/python/test_[routine].py -v`
358
+
359
+ ### Phase 4: VERIFY (Full Suite + Memory Safety)
360
+
361
+ 1. **Run Complete Test Suite**: `pytest tests/python/ -v -x` (stop on first failure)
362
+ 2. **All tests must pass** - no exceptions
363
+ 3. **Run ASAN (required before completion)**: `./scripts/run_asan_docker.sh --no-build tests/python/test_[routine].py -v`
364
+ - If ASAN docker fails to run, note it and continue (user will verify later)
365
+ 4. **If tests fail**: Use Fortran diagnostic workflow to isolate bug (see below)
366
+
367
+ ## Debugging Failed Implementations
368
+
369
+ When tests fail and C results differ from expected:
370
+
371
+ ### Use Fortran Diagnostic Workflow
372
+
373
+ Compare C implementation against Fortran reference to find divergence point:
374
+
375
+ ```bash
376
+ # Enable diagnostic tools (one-time) - use appropriate preset for platform
377
+ # macOS: cmake --preset macos-arm64-debug -DBUILD_FORTRAN_DIAG=ON
378
+ # Linux: cmake --preset linux-x64-debug -DBUILD_FORTRAN_DIAG=ON
379
+
380
+ # Run side-by-side comparison
381
+ # macOS: cmake --build --preset macos-arm64-debug-build --target diag_all
382
+ # Linux: cmake --build --preset linux-x64-debug-build --target diag_all
383
+
384
+ # View high-precision traces (adjust path for platform)
385
+ # macOS: build/macos-arm64-debug/fortran_diag/
386
+ # Linux: build/linux-x64-debug/fortran_diag/
387
+ cat build/*/fortran_diag/fortran_trace.txt # Reference (correct)
388
+ cat build/*/fortran_diag/c_trace.txt # C impl (buggy)
389
+ ```
390
+
391
+ ### When to Use
392
+
393
+ - **Test failures**: C output differs from expected but unclear why
394
+ - **Multi-step algorithms**: Complex routines with Schur decomposition, eigenvalue solvers, Lyapunov equations
395
+ - **Isolating bugs**: Need to pinpoint exact computation step where divergence occurs
396
+ - **Matrix transformations**: When intermediate matrices need inspection
397
+
398
+ ### What It Provides
399
+
400
+ - **Identical inputs**: Both programs read same test data (`.dat` files)
401
+ - **High precision**: 16-digit output catches subtle numerical errors
402
+ - **Step-by-step traces**: All input/output matrices with full precision
403
+ - **Automatic comparison**: Python script identifies mismatches
404
+
405
+ ### Example: SG03BD Bug Isolation
406
+
407
+ ```
408
+ Fortran (correct): U = [1.600, 0.680, 0.204]
409
+ C (wrong): U = [0.437, 0.581, 0.080]
410
+
411
+ Other outputs matched:
412
+ ✓ Eigenvalues (ALPHAR, ALPHAI, BETA)
413
+ ✓ Schur form (A, E matrices)
414
+ ✓ Orthogonal transformations (Q, Z)
415
+
416
+ Conclusion: Bug isolated to Lyapunov solver (SG03BV), not Schur decomposition
417
+ ```
418
+
419
+ ### Adding Diagnostic for New Routine
420
+
421
+ See `fortran_diag/README.md` for complete steps. Summary:
422
+
423
+ 1. Copy templates: `fortran/sg03bd_diag.f` → `fortran/[routine]_diag.f`
424
+ 2. Copy templates: `c/sg03bd_diag.c` → `c/[routine]_diag.c`
425
+ 3. Update CMakeLists.txt with new targets
426
+ 4. Build and run: `cmake --build --preset <platform>-debug-build --target [routine]_diag_all`
427
+
428
+ **Time investment**: ~30 min to add new routine, saves hours of blind debugging
429
+
430
+ ## Critical Safety Patterns
431
+
432
+ ### FORTRAN Callback ABI Issue (CRITICAL)
433
+
434
+ When implementing callback functions passed to LAPACK routines (DGEES, DGGES), MUST use `int` return type, NOT `bool`.
435
+
436
+ **Why:** FORTRAN LOGICAL is 4 bytes (int), C bool is 1 byte. Using bool causes ABI mismatch that works on ARM64 but fails on x86-64.
437
+
438
+ **WRONG:**
439
+ ```c
440
+ static bool select_stable(const f64* reig, const f64* ieig) {
441
+ return *reig < 0.0; // WRONG - bool return causes ABI mismatch
442
+ }
443
+ ```
444
+
445
+ **CORRECT:**
446
+ ```c
447
+ static int select_stable(const f64* reig, const f64* ieig) {
448
+ return *reig < 0.0; // CORRECT - int return (comparison yields 0/1)
449
+ }
450
+ ```
451
+
452
+ **Affected LAPACK routines:**
453
+ - DGEES (Schur decomposition with eigenvalue selection)
454
+ - DGGES (Generalized Schur decomposition)
455
+ - Any routine with SELECT/SELCTG callback parameter
456
+
457
+ ### Array Indexing
458
+ ```c
459
+ // CORRECT: Column-major with bounds check
460
+ for (i32 i = 0; i < m; i++) {
461
+ for (i32 j = 0; j < n; j++) {
462
+ f64 val = a[i + j*lda]; // Element (i,j)
463
+ }
464
+ }
465
+ ```
466
+
467
+ ### Index Conversion
468
+ ```c
469
+ // CORRECT: Convert then validate
470
+ k = ipiv[j] - 1; // Fortran 1-based to C 0-based
471
+ if (k < 0 || k >= n) {
472
+ return -1; // Invalid index
473
+ }
474
+ swap(&a[k], &a[j]); // Safe access
475
+ ```
476
+
477
+ ### Python In-Place Modification
478
+ ```c
479
+ // CORRECT: Return modified input array
480
+ PyObject *result = Py_BuildValue("Oi", b_array, info);
481
+ Py_DECREF(a_array);
482
+ Py_DECREF(b_array);
483
+ return result;
484
+
485
+ // WRONG: Creates double-free
486
+ // PyObject *u = PyArray_New(..., b_data, ...);
487
+ // PyArray_ENABLEFLAGS(u, NPY_ARRAY_OWNDATA); // b_data already owned!
488
+ ```
489
+
490
+ ### Python Wrapper Temporary Arrays (ASAN-Compatible)
491
+
492
+ When allocating temporary arrays in Python wrappers that are allocated and freed within the wrapper:
493
+
494
+ ```c
495
+ // CORRECT: Use PyMem for wrapper-local temp arrays
496
+ c128 *temp = (c128 *)PyMem_Calloc(n, sizeof(c128));
497
+ // ... use temp ...
498
+ PyMem_Free(temp);
499
+
500
+ // WRONG: Causes "not malloc()-ed" errors under Docker ASAN
501
+ c128 *temp = (c128 *)calloc(n, sizeof(c128));
502
+ free(temp); // ASAN may not track this allocation properly
503
+ ```
504
+
505
+ **Why:** When running Python under ASAN via `LD_PRELOAD` in Docker, ASAN intercepts malloc/free but Python uses its own memory pool. This mismatch causes "attempting free on address which was not malloc()-ed" errors. Using `PyMem_*` functions ensures consistent allocation tracking.
506
+
507
+ **When to use:**
508
+ - `PyMem_Calloc`/`PyMem_Free`: Temporary arrays allocated and freed within the Python wrapper
509
+ - Standard `calloc`/`free`: Workspace arrays passed to C routines (dwork, iwork, etc.)
510
+
511
+ ## Quality Gates
512
+
513
+ Before considering work complete:
514
+
515
+ **Test Quality (NUMERICAL LIBRARY STANDARDS)**:
516
+ - [ ] Tests extracted from authoritative sources
517
+ - [ ] Tests depend ONLY on NumPy (no control, scipy, or other packages)
518
+ - [ ] If control/scipy used for data generation, temporary script deleted
519
+ - [ ] **ALL random data uses `np.random.seed(N)` with documented seed**
520
+ - [ ] **NEVER test only shapes - always validate numerical values**
521
+ - [ ] **Mathematical property tests included** (involution, eigenvalue preservation, state equations, etc.)
522
+ - [ ] Appropriate tolerances used (`rtol=1e-14` for exact math, `rtol=1e-3` for HTML docs)
523
+ - [ ] Minimum 3 tests (basic, edge, error) + property tests
524
+ - [ ] Tests are deterministic and reproducible across platforms
525
+
526
+ **Code Quality**:
527
+ - [ ] All NumPy arrays use `order='F'` (column-major)
528
+ - [ ] Python wrapper uses `NPY_ARRAY_FARRAY`
529
+ - [ ] All index conversions have bounds checks
530
+ - [ ] No double-free vulnerabilities in Python wrappers
531
+ - [ ] Doxygen docs complete in header
532
+ - [ ] Function exported in `__init__.py`
533
+ - [ ] Full test suite passes
534
+ - [ ] **ASAN passes** (`./scripts/run_asan_docker.sh --no-build tests/python/test_[routine].py -v`)
535
+ - [ ] Issue closed with `bd close <id> --reason "..."` after completion
536
+
537
+ **Issue Tracking** (beads, not todos):
538
+ - [ ] Any discovered bugs → `bd create --type=bug`
539
+ - [ ] Any technical debt → `bd create --type=task --priority=3`
540
+ - [ ] Any blocking dependencies → `bd create --type=task` + `bd dep add`
541
+ - [ ] **NO TodoWrite for future work** - all captured in beads
542
+
543
+ ## When to Escalate
544
+
545
+ When blocked, create a beads issue before escalating:
546
+
547
+ ```bash
548
+ # Missing test data - create issue then ask user
549
+ bd create --title="[ROUTINE] needs test data approval" --type=task --priority=2 --json
550
+ # Then escalate: "No authoritative test data for [ROUTINE]. Created beads-xxx. Use synthetic?"
551
+
552
+ # Missing dependencies - create dependency issues
553
+ bd create --title="[DEP] to C (blocks [ROUTINE])" --type=task --priority=2 --json
554
+ bd dep add <dep-id> <routine-id>
555
+ # Then escalate: "Need [DEP] first. Created beads-xxx as blocker."
556
+
557
+ # Algorithm discrepancy - document finding
558
+ bd create --title="[ROUTINE] algorithm differs from ref" --type=bug --priority=1 --json
559
+ # Then escalate with issue ID for tracking
560
+ ```
561
+
562
+ **Escalation triggers:**
563
+ - No test data in authoritative sources AND control package cannot generate valid cases
564
+ - Routine has SLICOT dependencies not yet translated (create dependency issues first)
565
+ - Numerical algorithm differs significantly from reference
566
+ - Test failures that cannot be resolved after debugging
567
+
568
+ ## Communication Style
569
+
570
+ Be extremely concise. Sacrifice grammar for brevity. Focus on actionable information. Report issues immediately, not after failure.