democracy 0.0.56

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.

Potentially problematic release.


This version of democracy might be problematic. Click here for more details.

Files changed (647) hide show
  1. checksums.yaml +7 -0
  2. data/LIBERTY +310 -0
  3. data/README +310 -0
  4. data/README2 +14 -0
  5. data/READ_THIS_TO_CHANGE_THINGS +310 -0
  6. data/Resume.pdf +0 -0
  7. data/Ruby Installer.exe +0 -0
  8. data/VERSION_NUMBER +1 -0
  9. data/WE_NEEDNT_BE_ENSLAVED +310 -0
  10. data/_.html +460 -0
  11. data/__index.html +11 -0
  12. data/a.html +21 -0
  13. data/ac +73 -0
  14. data/all_code.cpp +280 -0
  15. data/all_code.js +30 -0
  16. data/app_topics +93 -0
  17. data/background.jpg +0 -0
  18. data/better_string +26 -0
  19. data/bin/abs +0 -0
  20. data/bin/ac +34 -0
  21. data/bin/add +0 -0
  22. data/bin/append +14 -0
  23. data/bin/args +0 -0
  24. data/bin/autorequire +85 -0
  25. data/bin/big_num +155 -0
  26. data/bin/black +0 -0
  27. data/bin/blue +0 -0
  28. data/bin/bold +0 -0
  29. data/bin/c_repl +76 -0
  30. data/bin/close +3 -0
  31. data/bin/copy +0 -0
  32. data/bin/count +0 -0
  33. data/bin/cpy +0 -0
  34. data/bin/cyan +0 -0
  35. data/bin/democracyinstall.exe +0 -0
  36. data/bin/div +0 -0
  37. data/bin/down_all_links +50 -0
  38. data/bin/dump +0 -0
  39. data/bin/email +127 -0
  40. data/bin/emerald-browser +0 -0
  41. data/bin/emoji +176 -0
  42. data/bin/executable +1 -0
  43. data/bin/exp +0 -0
  44. data/bin/files +0 -0
  45. data/bin/floor +0 -0
  46. data/bin/foreach +49 -0
  47. data/bin/g+ +557 -0
  48. data/bin/get_all_links +11 -0
  49. data/bin/github +55 -0
  50. data/bin/green +0 -0
  51. data/bin/gsearch +159 -0
  52. data/bin/gsub +0 -0
  53. data/bin/gsub_in_place +0 -0
  54. data/bin/last_nth +0 -0
  55. data/bin/lines +0 -0
  56. data/bin/magenta +0 -0
  57. data/bin/mkfile +47 -0
  58. data/bin/mul +0 -0
  59. data/bin/nth +0 -0
  60. data/bin/open +0 -0
  61. data/bin/play +0 -0
  62. data/bin/prepend +14 -0
  63. data/bin/processes +3 -0
  64. data/bin/qt_download +21 -0
  65. data/bin/record +121 -0
  66. data/bin/red +0 -0
  67. data/bin/replace_in_place +0 -0
  68. data/bin/replace_not_in_place +0 -0
  69. data/bin/selectlines +0 -0
  70. data/bin/sort_in_place +0 -0
  71. data/bin/splitfiles +16 -0
  72. data/bin/squeeze +17 -0
  73. data/bin/string +161 -0
  74. data/bin/strip_extensions +13 -0
  75. data/bin/sub +0 -0
  76. data/bin/t +63 -0
  77. data/bin/tracefile +555 -0
  78. data/bin/underline +0 -0
  79. data/bin/undump +0 -0
  80. data/bin/viu +0 -0
  81. data/bin/white +0 -0
  82. data/bin/yellow +0 -0
  83. data/bin/youtube_video +45 -0
  84. data/bin/youtube_video2 +45 -0
  85. data/code.js +28490 -0
  86. data/crystal-gobject/.git/HEAD +1 -0
  87. data/crystal-gobject/.git/config +11 -0
  88. data/crystal-gobject/.git/description +1 -0
  89. data/crystal-gobject/.git/hooks/applypatch-msg.sample +15 -0
  90. data/crystal-gobject/.git/hooks/commit-msg.sample +24 -0
  91. data/crystal-gobject/.git/hooks/fsmonitor-watchman.sample +109 -0
  92. data/crystal-gobject/.git/hooks/post-update.sample +8 -0
  93. data/crystal-gobject/.git/hooks/pre-applypatch.sample +14 -0
  94. data/crystal-gobject/.git/hooks/pre-commit.sample +49 -0
  95. data/crystal-gobject/.git/hooks/pre-merge-commit.sample +13 -0
  96. data/crystal-gobject/.git/hooks/pre-push.sample +53 -0
  97. data/crystal-gobject/.git/hooks/pre-rebase.sample +169 -0
  98. data/crystal-gobject/.git/hooks/pre-receive.sample +24 -0
  99. data/crystal-gobject/.git/hooks/prepare-commit-msg.sample +42 -0
  100. data/crystal-gobject/.git/hooks/update.sample +128 -0
  101. data/crystal-gobject/.git/index +0 -0
  102. data/crystal-gobject/.git/info/exclude +6 -0
  103. data/crystal-gobject/.git/logs/HEAD +1 -0
  104. data/crystal-gobject/.git/logs/refs/heads/main +1 -0
  105. data/crystal-gobject/.git/logs/refs/remotes/origin/HEAD +1 -0
  106. data/crystal-gobject/.git/objects/pack/pack-c21cfd88c6eef3076f2c2aebb658b750e87e10b6.idx +0 -0
  107. data/crystal-gobject/.git/objects/pack/pack-c21cfd88c6eef3076f2c2aebb658b750e87e10b6.pack +0 -0
  108. data/crystal-gobject/.git/packed-refs +15 -0
  109. data/crystal-gobject/.git/refs/heads/main +1 -0
  110. data/crystal-gobject/.git/refs/remotes/origin/HEAD +1 -0
  111. data/crystal-gobject/.github/workflows/ci.yml +22 -0
  112. data/crystal-gobject/.gitignore +14 -0
  113. data/crystal-gobject/LICENSE +27 -0
  114. data/crystal-gobject/README.md +143 -0
  115. data/crystal-gobject/samples/base_class_container.cr +15 -0
  116. data/crystal-gobject/samples/connect_after.cr +35 -0
  117. data/crystal-gobject/samples/crout/crout.cr +59 -0
  118. data/crystal-gobject/samples/e +0 -0
  119. data/crystal-gobject/samples/gdk_window.cr +36 -0
  120. data/crystal-gobject/samples/glist.cr +16 -0
  121. data/crystal-gobject/samples/greeter.cr +34 -0
  122. data/crystal-gobject/samples/greeter.glade +91 -0
  123. data/crystal-gobject/samples/gtk_accel_group.cr +13 -0
  124. data/crystal-gobject/samples/gtk_application.cr +12 -0
  125. data/crystal-gobject/samples/gtk_boxes.cr +44 -0
  126. data/crystal-gobject/samples/gtk_css_styling/css_window.cr +37 -0
  127. data/crystal-gobject/samples/gtk_css_styling/css_window.css +3 -0
  128. data/crystal-gobject/samples/gtk_css_styling/css_window.glade +104 -0
  129. data/crystal-gobject/samples/gtk_editable.cr +14 -0
  130. data/crystal-gobject/samples/gtk_entry.cr +10 -0
  131. data/crystal-gobject/samples/gtk_hello_world.cr +13 -0
  132. data/crystal-gobject/samples/gtk_menu_and_actions.cr +69 -0
  133. data/crystal-gobject/samples/gtk_message_dialog.cr +9 -0
  134. data/crystal-gobject/samples/gtk_subclasses.cr +30 -0
  135. data/crystal-gobject/samples/gtk_tree_view.cr +30 -0
  136. data/crystal-gobject/samples/gtk_tree_view.glade +44 -0
  137. data/crystal-gobject/samples/hello +0 -0
  138. data/crystal-gobject/samples/libgdk-3.a +0 -0
  139. data/crystal-gobject/samples/libgdk_pixbuf-2.0.a +0 -0
  140. data/crystal-gobject/samples/libgtk-3.a +0 -0
  141. data/crystal-gobject/samples/timeout.cr +34 -0
  142. data/crystal-gobject/script/ci.sh +17 -0
  143. data/crystal-gobject/script/release.sh +31 -0
  144. data/crystal-gobject/script/run_with_timeout.cr +14 -0
  145. data/crystal-gobject/script/test +7 -0
  146. data/crystal-gobject/shard.yml +16 -0
  147. data/crystal-gobject/spec/basic_spec.cr +46 -0
  148. data/crystal-gobject/spec/libsample/Makefile +28 -0
  149. data/crystal-gobject/spec/libsample/test-subject.c +107 -0
  150. data/crystal-gobject/spec/libsample/test-subject.h +65 -0
  151. data/crystal-gobject/spec/spec_helper.cr +5 -0
  152. data/crystal-gobject/src/atk/atk.cr +2 -0
  153. data/crystal-gobject/src/closure_data_manager.cr +62 -0
  154. data/crystal-gobject/src/crout.cr +601 -0
  155. data/crystal-gobject/src/g_i_repository/dumper.cr +116 -0
  156. data/crystal-gobject/src/g_i_repository/g_i_repository.cr +46 -0
  157. data/crystal-gobject/src/g_i_repository/info/arg_info.cr +157 -0
  158. data/crystal-gobject/src/g_i_repository/info/base_info.cr +169 -0
  159. data/crystal-gobject/src/g_i_repository/info/callable_info.cr +266 -0
  160. data/crystal-gobject/src/g_i_repository/info/callback_info.cr +54 -0
  161. data/crystal-gobject/src/g_i_repository/info/constant_info.cr +115 -0
  162. data/crystal-gobject/src/g_i_repository/info/enum_info.cr +88 -0
  163. data/crystal-gobject/src/g_i_repository/info/field_info.cr +97 -0
  164. data/crystal-gobject/src/g_i_repository/info/function_info.cr +237 -0
  165. data/crystal-gobject/src/g_i_repository/info/interface_info.cr +97 -0
  166. data/crystal-gobject/src/g_i_repository/info/object_info.cr +170 -0
  167. data/crystal-gobject/src/g_i_repository/info/property_info.cr +93 -0
  168. data/crystal-gobject/src/g_i_repository/info/registered_type_info.cr +62 -0
  169. data/crystal-gobject/src/g_i_repository/info/signal_info.cr +119 -0
  170. data/crystal-gobject/src/g_i_repository/info/struct_info.cr +139 -0
  171. data/crystal-gobject/src/g_i_repository/info/type_info.cr +326 -0
  172. data/crystal-gobject/src/g_i_repository/info/union_info.cr +136 -0
  173. data/crystal-gobject/src/g_i_repository/info/v_func_info.cr +33 -0
  174. data/crystal-gobject/src/g_i_repository/info/value_info.cr +62 -0
  175. data/crystal-gobject/src/g_i_repository/repository.cr +68 -0
  176. data/crystal-gobject/src/g_i_repository/wrapper_generator.cr +103 -0
  177. data/crystal-gobject/src/g_lib/error.cr +34 -0
  178. data/crystal-gobject/src/g_lib/g_lib.cr +81 -0
  179. data/crystal-gobject/src/g_lib/list_iterator.cr +81 -0
  180. data/crystal-gobject/src/g_lib/s_list_iterator.cr +54 -0
  181. data/crystal-gobject/src/g_object/closure.cr +40 -0
  182. data/crystal-gobject/src/g_object/g_object.cr +7 -0
  183. data/crystal-gobject/src/g_object/module_functions.cr +38 -0
  184. data/crystal-gobject/src/g_object/object.cr +104 -0
  185. data/crystal-gobject/src/g_object/type.cr +68 -0
  186. data/crystal-gobject/src/g_object/value.cr +308 -0
  187. data/crystal-gobject/src/gdk/event.cr +34 -0
  188. data/crystal-gobject/src/gdk/gdk.cr +35 -0
  189. data/crystal-gobject/src/generated/g_i_repository/argument.cr +130 -0
  190. data/crystal-gobject/src/generated/g_i_repository/array_type.cr +34 -0
  191. data/crystal-gobject/src/generated/g_i_repository/attribute_iter.cr +65 -0
  192. data/crystal-gobject/src/generated/g_i_repository/base_info.cr +134 -0
  193. data/crystal-gobject/src/generated/g_i_repository/direction.cr +33 -0
  194. data/crystal-gobject/src/generated/g_i_repository/field_info_flags.cr +34 -0
  195. data/crystal-gobject/src/generated/g_i_repository/function_info_flags.cr +38 -0
  196. data/crystal-gobject/src/generated/g_i_repository/g_i_repository.cr +7 -0
  197. data/crystal-gobject/src/generated/g_i_repository/info_type.cr +50 -0
  198. data/crystal-gobject/src/generated/g_i_repository/module_functions.cr +816 -0
  199. data/crystal-gobject/src/generated/g_i_repository/repository.cr +214 -0
  200. data/crystal-gobject/src/generated/g_i_repository/repository_class.cr +55 -0
  201. data/crystal-gobject/src/generated/g_i_repository/repository_error.cr +34 -0
  202. data/crystal-gobject/src/generated/g_i_repository/repository_load_flags.cr +33 -0
  203. data/crystal-gobject/src/generated/g_i_repository/repository_private.cr +46 -0
  204. data/crystal-gobject/src/generated/g_i_repository/scope_type.cr +34 -0
  205. data/crystal-gobject/src/generated/g_i_repository/transfer.cr +33 -0
  206. data/crystal-gobject/src/generated/g_i_repository/type_tag.cr +52 -0
  207. data/crystal-gobject/src/generated/g_i_repository/typelib.cr +61 -0
  208. data/crystal-gobject/src/generated/g_i_repository/unresolved_info.cr +45 -0
  209. data/crystal-gobject/src/generated/g_i_repository/v_func_info_flags.cr +36 -0
  210. data/crystal-gobject/src/generated/g_object/param_flags.cr +44 -0
  211. data/crystal-gobject/src/generated/g_object/signal_flags.cr +42 -0
  212. data/crystal-gobject/src/generated/lib_g_i_repository.cr +302 -0
  213. data/crystal-gobject/src/generated/lib_g_lib.cr +2261 -0
  214. data/crystal-gobject/src/generated/lib_g_object.cr +874 -0
  215. data/crystal-gobject/src/generator/build_namespace.cr +22 -0
  216. data/crystal-gobject/src/generator/doc.cr +259 -0
  217. data/crystal-gobject/src/generator/dump.cr +55 -0
  218. data/crystal-gobject/src/generator/generator.cr +22 -0
  219. data/crystal-gobject/src/generator/namespace.cr +192 -0
  220. data/crystal-gobject/src/generator/stage2.cr +113 -0
  221. data/crystal-gobject/src/generator/stage3.cr +3 -0
  222. data/crystal-gobject/src/gio/gio.cr +4 -0
  223. data/crystal-gobject/src/gobject.cr +54 -0
  224. data/crystal-gobject/src/gtk/autorun.cr +16 -0
  225. data/crystal-gobject/src/gtk/gtk.cr +61 -0
  226. data/crystal-gobject/src/notify/notification.cr +158 -0
  227. data/crystal-gobject/src/notify/notify.cr +4 -0
  228. data/crystal-gobject/src/pointer_iterator.cr +49 -0
  229. data/crystal-gobject/src/wrapped_type.cr +53 -0
  230. data/democracy.gemspec +14 -0
  231. data/dictate +183 -0
  232. data/emerald-browser/.qmake.stash +23 -0
  233. data/emerald-browser/Makefile +469 -0
  234. data/emerald-browser/OUT +90 -0
  235. data/emerald-browser/a.out +0 -0
  236. data/emerald-browser/empty +0 -0
  237. data/emerald-browser/empty.c +1 -0
  238. data/emerald-browser/open +0 -0
  239. data/emerald-browser/open.c +57 -0
  240. data/emerald-browser/qmake.pro +23 -0
  241. data/emerald-browser/src/OUT +438 -0
  242. data/emerald-browser/src/a.cpp +303 -0
  243. data/emerald-browser/src/a.out +0 -0
  244. data/emerald-browser/src/ss.h +12 -0
  245. data/emerald-browser/src/t/fullscreennotification.cpp +98 -0
  246. data/emerald-browser/src/t/fullscreennotification.h +72 -0
  247. data/emerald-browser/src/t/fullscreenwindow.cpp +99 -0
  248. data/emerald-browser/src/t/fullscreenwindow.h +76 -0
  249. data/emerald-browser/src/t/main.cpp +64 -0
  250. data/emerald-browser/src/t/mainwindow.cpp +83 -0
  251. data/emerald-browser/src/t/mainwindow.h +75 -0
  252. data/emerald-browser/test/a.cpp +2 -0
  253. data/f +0 -0
  254. data/faster_googler +31 -0
  255. data/favicon.ico +0 -0
  256. data/foo +80 -0
  257. data/foo.c +39 -0
  258. data/foo.cpp +36 -0
  259. data/foo.js +25 -0
  260. data/free_icons/site/bulb +0 -0
  261. data/free_icons/site/chess +0 -0
  262. data/free_icons/site/compiz.svg +463 -0
  263. data/free_icons/site/cursor.svg +1 -0
  264. data/free_icons/site/dock +0 -0
  265. data/free_icons/site/gnu +0 -0
  266. data/free_icons/site/info.svg +200 -0
  267. data/free_icons/site/iphone.svg +222 -0
  268. data/free_icons/site/laptop +0 -0
  269. data/free_icons/site/magic.svg +856 -0
  270. data/free_icons/site/man +0 -0
  271. data/free_icons/site/mint +0 -0
  272. data/free_icons/site/mouse +0 -0
  273. data/free_icons/site/paint.svg +2640 -0
  274. data/free_icons/site/present +0 -0
  275. data/free_icons/site/python +0 -0
  276. data/free_icons/site/reality +0 -0
  277. data/free_icons/site/ruby +0 -0
  278. data/free_icons/site/skeptic +0 -0
  279. data/free_icons/site/terminal +0 -0
  280. data/free_icons/site/video.svg +358 -0
  281. data/free_icons/site/warning +0 -0
  282. data/free_icons/site/wikipedia.svg +553 -0
  283. data/free_icons/site/write.svg +287 -0
  284. data/g +0 -0
  285. data/graphical_help.c +6 -0
  286. data/gregory_coreutils/DOC +14 -0
  287. data/gregory_coreutils/build/Makefile +12 -0
  288. data/gregory_coreutils/build/code +1 -0
  289. data/gregory_coreutils/build/functions +465 -0
  290. data/gregory_coreutils/build/make +93 -0
  291. data/gregory_coreutils/build/mk +74 -0
  292. data/gregory_coreutils/build/regex +2 -0
  293. data/gregory_coreutils/build/ruby_functions +0 -0
  294. data/gregory_coreutils/utilities/abs +0 -0
  295. data/gregory_coreutils/utilities/add +0 -0
  296. data/gregory_coreutils/utilities/args +0 -0
  297. data/gregory_coreutils/utilities/black +0 -0
  298. data/gregory_coreutils/utilities/blue +0 -0
  299. data/gregory_coreutils/utilities/bold +0 -0
  300. data/gregory_coreutils/utilities/copy +0 -0
  301. data/gregory_coreutils/utilities/count +0 -0
  302. data/gregory_coreutils/utilities/cpy +0 -0
  303. data/gregory_coreutils/utilities/cyan +0 -0
  304. data/gregory_coreutils/utilities/div +0 -0
  305. data/gregory_coreutils/utilities/dump +0 -0
  306. data/gregory_coreutils/utilities/exp +0 -0
  307. data/gregory_coreutils/utilities/files +0 -0
  308. data/gregory_coreutils/utilities/floor +0 -0
  309. data/gregory_coreutils/utilities/green +0 -0
  310. data/gregory_coreutils/utilities/gsub +0 -0
  311. data/gregory_coreutils/utilities/gsub_in_place +0 -0
  312. data/gregory_coreutils/utilities/last_nth +0 -0
  313. data/gregory_coreutils/utilities/lines +0 -0
  314. data/gregory_coreutils/utilities/magenta +0 -0
  315. data/gregory_coreutils/utilities/mul +0 -0
  316. data/gregory_coreutils/utilities/nth +0 -0
  317. data/gregory_coreutils/utilities/red +0 -0
  318. data/gregory_coreutils/utilities/replace_in_place +0 -0
  319. data/gregory_coreutils/utilities/replace_not_in_place +0 -0
  320. data/gregory_coreutils/utilities/selectlines +0 -0
  321. data/gregory_coreutils/utilities/sort_in_place +0 -0
  322. data/gregory_coreutils/utilities/sub +0 -0
  323. data/gregory_coreutils/utilities/underline +0 -0
  324. data/gregory_coreutils/utilities/undump +0 -0
  325. data/gregory_coreutils/utilities/white +0 -0
  326. data/gregory_coreutils/utilities/yellow +0 -0
  327. data/gtk +3 -0
  328. data/html_file +0 -0
  329. data/html_file.html +92 -0
  330. data/i +181 -0
  331. data/index.html +38 -0
  332. data/index2.html +344 -0
  333. data/inspect.rb +209 -0
  334. data/lib/README +310 -0
  335. data/lib/__index.html +11 -0
  336. data/lib/because.rb +41 -0
  337. data/lib/code.js +28490 -0
  338. data/lib/compile +5 -0
  339. data/lib/conjunction.rb +49 -0
  340. data/lib/evidence.rb +45 -0
  341. data/lib/graphical_help +90 -0
  342. data/lib/however.rb +42 -0
  343. data/lib/index.html +49 -0
  344. data/lib/index2.html +344 -0
  345. data/lib/inputreceiver.rb +135 -0
  346. data/lib/item.rb +77 -0
  347. data/lib/itemlist.rb +50 -0
  348. data/lib/negative.rb +43 -0
  349. data/lib/neutral.rb +43 -0
  350. data/lib/outputter.rb +60 -0
  351. data/lib/p.rb +71 -0
  352. data/lib/positive.rb +41 -0
  353. data/lib/script.js +423 -0
  354. data/lib/string__.rb +110 -0
  355. data/lib/sub/file +5 -0
  356. data/man/foo.rb +6 -0
  357. data/man/gtk.html +1 -0
  358. data/man/out +7288 -0
  359. data/more/ac.desktop +12 -0
  360. data/more/res +1 -0
  361. data/more/web-speech-api/.git/HEAD +1 -0
  362. data/more/web-speech-api/.git/config +11 -0
  363. data/more/web-speech-api/.git/description +1 -0
  364. data/more/web-speech-api/.git/hooks/applypatch-msg.sample +15 -0
  365. data/more/web-speech-api/.git/hooks/commit-msg.sample +24 -0
  366. data/more/web-speech-api/.git/hooks/fsmonitor-watchman.sample +109 -0
  367. data/more/web-speech-api/.git/hooks/post-update.sample +8 -0
  368. data/more/web-speech-api/.git/hooks/pre-applypatch.sample +14 -0
  369. data/more/web-speech-api/.git/hooks/pre-commit.sample +49 -0
  370. data/more/web-speech-api/.git/hooks/pre-merge-commit.sample +13 -0
  371. data/more/web-speech-api/.git/hooks/pre-push.sample +53 -0
  372. data/more/web-speech-api/.git/hooks/pre-rebase.sample +169 -0
  373. data/more/web-speech-api/.git/hooks/pre-receive.sample +24 -0
  374. data/more/web-speech-api/.git/hooks/prepare-commit-msg.sample +42 -0
  375. data/more/web-speech-api/.git/hooks/update.sample +128 -0
  376. data/more/web-speech-api/.git/index +0 -0
  377. data/more/web-speech-api/.git/info/exclude +6 -0
  378. data/more/web-speech-api/.git/logs/HEAD +1 -0
  379. data/more/web-speech-api/.git/logs/refs/heads/master +1 -0
  380. data/more/web-speech-api/.git/logs/refs/remotes/origin/HEAD +1 -0
  381. data/more/web-speech-api/.git/objects/pack/pack-4d2adae000c513b287d53e24937e9e836954f901.idx +0 -0
  382. data/more/web-speech-api/.git/objects/pack/pack-4d2adae000c513b287d53e24937e9e836954f901.pack +0 -0
  383. data/more/web-speech-api/.git/packed-refs +2 -0
  384. data/more/web-speech-api/.git/refs/heads/master +1 -0
  385. data/more/web-speech-api/.git/refs/remotes/origin/HEAD +1 -0
  386. data/more/web-speech-api/CODE_OF_CONDUCT.md +15 -0
  387. data/more/web-speech-api/LICENSE +116 -0
  388. data/more/web-speech-api/README.md +23 -0
  389. data/more/web-speech-api/index.html +25 -0
  390. data/more/web-speech-api/phrase-matcher/index.html +30 -0
  391. data/more/web-speech-api/phrase-matcher/script.js +124 -0
  392. data/more/web-speech-api/phrase-matcher/style.css +54 -0
  393. data/more/web-speech-api/speak-easy-synthesis/img/ws128.png +0 -0
  394. data/more/web-speech-api/speak-easy-synthesis/img/ws512.png +0 -0
  395. data/more/web-speech-api/speak-easy-synthesis/index.html +43 -0
  396. data/more/web-speech-api/speak-easy-synthesis/manifest.webapp +14 -0
  397. data/more/web-speech-api/speak-easy-synthesis/script.js +87 -0
  398. data/more/web-speech-api/speak-easy-synthesis/style.css +74 -0
  399. data/more/web-speech-api/speech-color-changer/img/ws128.png +0 -0
  400. data/more/web-speech-api/speech-color-changer/img/ws512.png +0 -0
  401. data/more/web-speech-api/speech-color-changer/index.html +26 -0
  402. data/more/web-speech-api/speech-color-changer/manifest.webapp +23 -0
  403. data/more/web-speech-api/speech-color-changer/script.js +58 -0
  404. data/more/web-speech-api/speech-color-changer/style.css +38 -0
  405. data/opensrc +68 -0
  406. data/out +39 -0
  407. data/playsrc +14 -0
  408. data/program.c +11 -0
  409. data/program.prog +568 -0
  410. data/proj/a +0 -0
  411. data/proj/a.c +1 -0
  412. data/proj/a.o +0 -0
  413. data/proj/a.rs +18 -0
  414. data/proj/b.rs +22 -0
  415. data/proj/linker.sh +8 -0
  416. data/proj/save_last +4 -0
  417. data/push +16 -0
  418. data/q.cpp +175 -0
  419. data/qt/.qmake.stash +23 -0
  420. data/qt/Qt5Core.dll +0 -0
  421. data/qt/Qt5Gui.dll +0 -0
  422. data/qt/Qt5Multimedia.dll +0 -0
  423. data/qt/Qt5MultimediaWidgets.dll +0 -0
  424. data/qt/Qt5Network.dll +0 -0
  425. data/qt/Qt5PrintSupport.dll +0 -0
  426. data/qt/Qt5Qml.dll +0 -0
  427. data/qt/Qt5QmlModels.dll +0 -0
  428. data/qt/Qt5Quick.dll +0 -0
  429. data/qt/Qt5Sensors.dll +0 -0
  430. data/qt/Qt5WebChannel.dll +0 -0
  431. data/qt/Qt5WebKit.dll +0 -0
  432. data/qt/Qt5WebKitWidgets.dll +0 -0
  433. data/qt/Qt5Widgets.dll +0 -0
  434. data/qt/a.cpp +39 -0
  435. data/qt/a.out +0 -0
  436. data/qt/a.sh +7 -0
  437. data/qt/icudt66.dll +0 -0
  438. data/qt/icuin66.dll +0 -0
  439. data/qt/icuuc66.dll +0 -0
  440. data/qt/libbz2.dll +0 -0
  441. data/qt/libcrypto-1_1-x64.dll +0 -0
  442. data/qt/libfreetype-6.dll +0 -0
  443. data/qt/libgcc_s_seh-1.dll +0 -0
  444. data/qt/libglib-2.0-0.dll +0 -0
  445. data/qt/libharfbuzz-0.dll +0 -0
  446. data/qt/libiconv-2.dll +0 -0
  447. data/qt/libintl-8.dll +0 -0
  448. data/qt/libjpeg-9.dll +0 -0
  449. data/qt/liblzma-5.dll +0 -0
  450. data/qt/libpcre-1.dll +0 -0
  451. data/qt/libpcre2-16-0.dll +0 -0
  452. data/qt/libpng16-16.dll +0 -0
  453. data/qt/libsqlite3-0.dll +0 -0
  454. data/qt/libssl-1_1-x64.dll +0 -0
  455. data/qt/libstdc++-6.dll +0 -0
  456. data/qt/libwebp-7.dll +0 -0
  457. data/qt/libwinpthread-1.dll +0 -0
  458. data/qt/libxml2-2.dll +0 -0
  459. data/qt/libxslt-1.dll +0 -0
  460. data/qt/libzstd.dll +0 -0
  461. data/qt/prog +1 -0
  462. data/qt/qwindows.dll +0 -0
  463. data/qt/zlib1.dll +0 -0
  464. data/quickjs/.git/HEAD +1 -0
  465. data/quickjs/.git/config +11 -0
  466. data/quickjs/.git/description +1 -0
  467. data/quickjs/.git/hooks/applypatch-msg.sample +15 -0
  468. data/quickjs/.git/hooks/commit-msg.sample +24 -0
  469. data/quickjs/.git/hooks/fsmonitor-watchman.sample +109 -0
  470. data/quickjs/.git/hooks/post-update.sample +8 -0
  471. data/quickjs/.git/hooks/pre-applypatch.sample +14 -0
  472. data/quickjs/.git/hooks/pre-commit.sample +49 -0
  473. data/quickjs/.git/hooks/pre-merge-commit.sample +13 -0
  474. data/quickjs/.git/hooks/pre-push.sample +53 -0
  475. data/quickjs/.git/hooks/pre-rebase.sample +169 -0
  476. data/quickjs/.git/hooks/pre-receive.sample +24 -0
  477. data/quickjs/.git/hooks/prepare-commit-msg.sample +42 -0
  478. data/quickjs/.git/hooks/update.sample +128 -0
  479. data/quickjs/.git/index +0 -0
  480. data/quickjs/.git/info/exclude +6 -0
  481. data/quickjs/.git/logs/HEAD +1 -0
  482. data/quickjs/.git/logs/refs/heads/master +1 -0
  483. data/quickjs/.git/logs/refs/remotes/origin/HEAD +1 -0
  484. data/quickjs/.git/objects/pack/pack-744a13dba8773a756b22372ba65ded3aca50cdeb.idx +0 -0
  485. data/quickjs/.git/objects/pack/pack-744a13dba8773a756b22372ba65ded3aca50cdeb.pack +0 -0
  486. data/quickjs/.git/packed-refs +2 -0
  487. data/quickjs/.git/refs/heads/master +1 -0
  488. data/quickjs/.git/refs/remotes/origin/HEAD +1 -0
  489. data/quickjs/.obj/.d +1 -0
  490. data/quickjs/.obj/cutils.nolto.o +0 -0
  491. data/quickjs/.obj/cutils.o +0 -0
  492. data/quickjs/.obj/cutils.o.d +1 -0
  493. data/quickjs/.obj/hello.o +0 -0
  494. data/quickjs/.obj/hello.o.d +1 -0
  495. data/quickjs/.obj/libbf.nolto.o +0 -0
  496. data/quickjs/.obj/libbf.o +0 -0
  497. data/quickjs/.obj/libbf.o.d +1 -0
  498. data/quickjs/.obj/libregexp.nolto.o +0 -0
  499. data/quickjs/.obj/libregexp.o +0 -0
  500. data/quickjs/.obj/libregexp.o.d +2 -0
  501. data/quickjs/.obj/libunicode.nolto.o +0 -0
  502. data/quickjs/.obj/libunicode.o +0 -0
  503. data/quickjs/.obj/libunicode.o.d +1 -0
  504. data/quickjs/.obj/qjs.check.o +0 -0
  505. data/quickjs/.obj/qjs.check.o.d +1 -0
  506. data/quickjs/.obj/qjs.o +0 -0
  507. data/quickjs/.obj/qjs.o.d +1 -0
  508. data/quickjs/.obj/qjsc.o +0 -0
  509. data/quickjs/.obj/qjsc.o.d +1 -0
  510. data/quickjs/.obj/qjscalc.o +0 -0
  511. data/quickjs/.obj/qjscalc.o.d +1 -0
  512. data/quickjs/.obj/quickjs-libc.nolto.o +0 -0
  513. data/quickjs/.obj/quickjs-libc.o +0 -0
  514. data/quickjs/.obj/quickjs-libc.o.d +2 -0
  515. data/quickjs/.obj/quickjs.check.o +0 -0
  516. data/quickjs/.obj/quickjs.check.o.d +2 -0
  517. data/quickjs/.obj/quickjs.nolto.o +0 -0
  518. data/quickjs/.obj/quickjs.o +0 -0
  519. data/quickjs/.obj/quickjs.o.d +2 -0
  520. data/quickjs/.obj/repl.o +0 -0
  521. data/quickjs/.obj/repl.o.d +1 -0
  522. data/quickjs/.obj/run-test262.o +0 -0
  523. data/quickjs/.obj/run-test262.o.d +2 -0
  524. data/quickjs/COMPILE_WIN +1 -0
  525. data/quickjs/Changelog +148 -0
  526. data/quickjs/LICENSE +22 -0
  527. data/quickjs/Makefile +470 -0
  528. data/quickjs/TODO +70 -0
  529. data/quickjs/VERSION +1 -0
  530. data/quickjs/a.c +50038 -0
  531. data/quickjs/a.js +26075 -0
  532. data/quickjs/a.rb +3 -0
  533. data/quickjs/cutils.c +631 -0
  534. data/quickjs/cutils.h +297 -0
  535. data/quickjs/doc/jsbignum.texi +589 -0
  536. data/quickjs/doc/quickjs.texi +1097 -0
  537. data/quickjs/examples/fib.c +72 -0
  538. data/quickjs/examples/fib_module.js +10 -0
  539. data/quickjs/examples/hello +0 -0
  540. data/quickjs/examples/hello.js +1 -0
  541. data/quickjs/examples/hello_module.js +6 -0
  542. data/quickjs/examples/pi_bigdecimal.js +68 -0
  543. data/quickjs/examples/pi_bigfloat.js +66 -0
  544. data/quickjs/examples/pi_bigint.js +118 -0
  545. data/quickjs/examples/point.c +151 -0
  546. data/quickjs/examples/test_fib.js +6 -0
  547. data/quickjs/examples/test_point.js +40 -0
  548. data/quickjs/hello.c +44 -0
  549. data/quickjs/libbf.c +8466 -0
  550. data/quickjs/libbf.h +535 -0
  551. data/quickjs/libquickjs.a +0 -0
  552. data/quickjs/libquickjs.lto.a +0 -0
  553. data/quickjs/libregexp-opcode.h +58 -0
  554. data/quickjs/libregexp.c +2610 -0
  555. data/quickjs/libregexp.h +92 -0
  556. data/quickjs/libunicode-table.h +4368 -0
  557. data/quickjs/libunicode.c +1556 -0
  558. data/quickjs/libunicode.h +124 -0
  559. data/quickjs/libwinpthread-1.dll +0 -0
  560. data/quickjs/list.h +100 -0
  561. data/quickjs/out.c +24 -0
  562. data/quickjs/out55.c +59 -0
  563. data/quickjs/out56.c +79 -0
  564. data/quickjs/out57.c +24 -0
  565. data/quickjs/out58.c +4 -0
  566. data/quickjs/p.exe +0 -0
  567. data/quickjs/qjs +0 -0
  568. data/quickjs/qjs.c +570 -0
  569. data/quickjs/qjsc +0 -0
  570. data/quickjs/qjsc.c +762 -0
  571. data/quickjs/qjsc.exe +0 -0
  572. data/quickjs/qjscalc.c +4005 -0
  573. data/quickjs/qjscalc.js +2657 -0
  574. data/quickjs/quickjs-atom.h +273 -0
  575. data/quickjs/quickjs-libc.c +3927 -0
  576. data/quickjs/quickjs-libc.h +59 -0
  577. data/quickjs/quickjs-opcode.h +365 -0
  578. data/quickjs/quickjs.c +54036 -0
  579. data/quickjs/quickjs.h +1049 -0
  580. data/quickjs/readme.txt +1 -0
  581. data/quickjs/release.sh +158 -0
  582. data/quickjs/repl.c +2020 -0
  583. data/quickjs/repl.js +1566 -0
  584. data/quickjs/run-test262 +0 -0
  585. data/quickjs/run-test262.c +2107 -0
  586. data/quickjs/test262.conf +199 -0
  587. data/quickjs/test262_errors.txt +35 -0
  588. data/quickjs/test262o.conf +410 -0
  589. data/quickjs/test262o_errors.txt +0 -0
  590. data/quickjs/tests/bjson.c +96 -0
  591. data/quickjs/tests/microbench.js +1065 -0
  592. data/quickjs/tests/test262.patch +71 -0
  593. data/quickjs/tests/test_bignum.js +326 -0
  594. data/quickjs/tests/test_bjson.js +191 -0
  595. data/quickjs/tests/test_builtin.js +685 -0
  596. data/quickjs/tests/test_closure.js +221 -0
  597. data/quickjs/tests/test_language.js +547 -0
  598. data/quickjs/tests/test_loop.js +368 -0
  599. data/quickjs/tests/test_op_overloading.js +207 -0
  600. data/quickjs/tests/test_qjscalc.js +256 -0
  601. data/quickjs/tests/test_std.js +281 -0
  602. data/quickjs/tests/test_worker.js +62 -0
  603. data/quickjs/tests/test_worker_module.js +31 -0
  604. data/quickjs/unicode_download.sh +19 -0
  605. data/quickjs/unicode_gen.c +3057 -0
  606. data/quickjs/unicode_gen_def.h +284 -0
  607. data/readline +3 -0
  608. data/rm_com +1 -0
  609. data/run.sh +13 -0
  610. data/scaling +6 -0
  611. data/script.js +572 -0
  612. data/server_creator/__ +307 -0
  613. data/server_creator/a/a (1).tar.gz +0 -0
  614. data/server_creator/a/a.out +0 -0
  615. data/server_creator/a/hello_world +0 -0
  616. data/server_creator/a/help +57 -0
  617. data/server_creator/a/main_v1.cpp +83 -0
  618. data/server_creator/a/my_libs_gregory/.deps +0 -0
  619. data/server_creator/a/my_libs_gregory/.libs/mod_my_libs_gregory.lai +41 -0
  620. data/server_creator/a/my_libs_gregory/.libs/mod_my_libs_gregory.o +0 -0
  621. data/server_creator/a/my_libs_gregory/.libs/mod_my_libs_gregory.so +0 -0
  622. data/server_creator/a/my_libs_gregory/mod_my_libs_gregory.c +72 -0
  623. data/server_creator/a/my_libs_gregory/mod_my_libs_gregory.la +41 -0
  624. data/server_creator/a/my_libs_gregory/mod_my_libs_gregory.lo +12 -0
  625. data/server_creator/a/my_libs_gregory/mod_my_libs_gregory.slo +0 -0
  626. data/server_creator/a/nginx.conf +32 -0
  627. data/server_creator/a/six +1 -0
  628. data/server_creator/a.out +0 -0
  629. data/server_creator/all_code.cpp +448 -0
  630. data/server_creator/all_code.js +27 -0
  631. data/server_creator/code +510 -0
  632. data/server_creator/make_application +64 -0
  633. data/server_creator/prog.cpp +33 -0
  634. data/server_creator/prog.js +22 -0
  635. data/server_creator/program.js +745 -0
  636. data/server_creator/rm_com +1 -0
  637. data/server_creator/test.sh +82 -0
  638. data/speakcat.rb +9 -0
  639. data/string +48 -0
  640. data/super_trans +83 -0
  641. data/test.sh +21 -0
  642. data/todo +8 -0
  643. data/version_decrement +3 -0
  644. data/viu_license +21 -0
  645. data/windows/program.c +21 -0
  646. data/windows/program.exe +0 -0
  647. metadata +759 -0
@@ -0,0 +1,589 @@
1
+ \input texinfo
2
+
3
+ @iftex
4
+ @afourpaper
5
+ @headings double
6
+ @end iftex
7
+
8
+ @titlepage
9
+ @afourpaper
10
+ @sp 7
11
+ @center @titlefont{Javascript Bignum Extensions}
12
+ @sp 3
13
+ @center Version 2020-01-11
14
+ @sp 3
15
+ @center Author: Fabrice Bellard
16
+ @end titlepage
17
+
18
+ @setfilename jsbignum.info
19
+ @settitle Javascript Bignum Extensions
20
+
21
+ @contents
22
+
23
+ @chapter Introduction
24
+
25
+ The Bignum extensions add the following features to the Javascript
26
+ language while being 100% backward compatible:
27
+
28
+ @itemize
29
+
30
+ @item Operator overloading with a dispatch logic inspired from the proposal available at @url{https://github.com/tc39/proposal-operator-overloading/}.
31
+
32
+ @item Arbitrarily large floating point numbers (@code{BigFloat}) in base 2 using the IEEE 754 semantics.
33
+
34
+ @item Arbitrarily large floating point numbers (@code{BigDecimal}) in base 10 based on the proposal available at
35
+ @url{https://github.com/littledan/proposal-bigdecimal}.
36
+
37
+ @item @code{math} mode: arbitrarily large integers and floating point numbers are available by default. The integer division and power can be overloaded for example to return a fraction. The modulo operator (@code{%}) is defined as the Euclidian
38
+ remainder. @code{^} is an alias to the power operator
39
+ (@code{**}). @code{^^} is used as the exclusive or operator.
40
+
41
+ @end itemize
42
+
43
+ The extensions are independent from each other except the @code{math}
44
+ mode which relies on BigFloat and operator overloading.
45
+
46
+ @chapter Operator overloading
47
+
48
+ Operator overloading is inspired from the proposal available at
49
+ @url{https://github.com/tc39/proposal-operator-overloading/}. It
50
+ implements the same dispatch logic but finds the operator sets by
51
+ looking at the @code{Symbol.operatorSet} property in the objects. The
52
+ changes were done in order to simplify the implementation.
53
+
54
+ More precisely, the following modifications were made:
55
+
56
+ @itemize
57
+
58
+ @item @code{with operators from} is not supported. Operator overloading is always enabled.
59
+
60
+ @item The dispatch is not based on a static @code{[[OperatorSet]]} field in all instances. Instead, a dynamic lookup of the @code{Symbol.operatorSet} property is done. This property is typically added in the prototype of each object.
61
+
62
+ @item @code{Operators.create(...dictionaries)} is used to create a new OperatorSet object. The @code{Operators} function is supported as an helper to be closer to the TC39 proposal.
63
+
64
+ @item @code{[]} cannot be overloaded.
65
+
66
+ @item In math mode, the BigInt division and power operators can be overloaded with @code{Operators.updateBigIntOperators(dictionary)}.
67
+
68
+ @end itemize
69
+
70
+ @chapter BigInt extensions
71
+
72
+ A few properties are added to the BigInt object:
73
+
74
+ @table @code
75
+
76
+ @item tdiv(a, b)
77
+ Return @math{trunc(a/b)}. @code{b = 0} raises a RangeError
78
+ exception.
79
+
80
+ @item fdiv(a, b)
81
+ Return @math{\lfloor a/b \rfloor}. @code{b = 0} raises a RangeError
82
+ exception.
83
+
84
+ @item cdiv(a, b)
85
+ Return @math{\lceil a/b \rceil}. @code{b = 0} raises a RangeError
86
+ exception.
87
+
88
+ @item ediv(a, b)
89
+ Return @math{sgn(b) \lfloor a/{|b|} \rfloor} (Euclidian
90
+ division). @code{b = 0} raises a RangeError exception.
91
+
92
+ @item tdivrem(a, b)
93
+ @item fdivrem(a, b)
94
+ @item cdivrem(a, b)
95
+ @item edivrem(a, b)
96
+ Return an array of two elements. The first element is the quotient,
97
+ the second is the remainder. The same rounding is done as the
98
+ corresponding division operation.
99
+
100
+ @item sqrt(a)
101
+ Return @math{\lfloor \sqrt(a) \rfloor}. A RangeError exception is
102
+ raised if @math{a < 0}.
103
+
104
+ @item sqrtrem(a)
105
+ Return an array of two elements. The first element is @math{\lfloor
106
+ \sqrt{a} \rfloor}. The second element is @math{a-\lfloor \sqrt{a}
107
+ \rfloor^2}. A RangeError exception is raised if @math{a < 0}.
108
+
109
+ @item floorLog2(a)
110
+ Return -1 if @math{a \leq 0} otherwise return @math{\lfloor \log2(a) \rfloor}.
111
+
112
+ @item ctz(a)
113
+ Return the number of trailing zeros in the two's complement binary representation of a. Return -1 if @math{a=0}.
114
+
115
+ @end table
116
+
117
+ @chapter BigFloat
118
+
119
+ @section Introduction
120
+
121
+ This extension adds the @code{BigFloat} primitive type. The
122
+ @code{BigFloat} type represents floating point numbers in base 2
123
+ with the IEEE 754 semantics. A floating
124
+ point number is represented as a sign, mantissa and exponent. The
125
+ special values @code{NaN}, @code{+/-Infinity}, @code{+0} and @code{-0}
126
+ are supported. The mantissa and exponent can have any bit length with
127
+ an implementation specific minimum and maximum.
128
+
129
+ @section Floating point rounding
130
+
131
+ Each floating point operation operates with infinite precision and
132
+ then rounds the result according to the specified floating point
133
+ environment (@code{BigFloatEnv} object). The status flags of the
134
+ environment are also set according to the result of the operation.
135
+
136
+ If no floating point environment is provided, the global floating
137
+ point environment is used.
138
+
139
+ The rounding mode of the global floating point environment is always
140
+ @code{RNDN} (``round to nearest with ties to even'')@footnote{The
141
+ rationale is that the rounding mode changes must always be
142
+ explicit.}. The status flags of the global environment cannot be
143
+ read@footnote{The rationale is to avoid side effects for the built-in
144
+ operators.}. The precision of the global environment is
145
+ @code{BigFloatEnv.prec}. The number of exponent bits of the global
146
+ environment is @code{BigFloatEnv.expBits}. The global environment
147
+ subnormal flag is set to @code{true}.
148
+
149
+ For example, @code{prec = 53} and @code{ expBits = 11} exactly give
150
+ the same precision as the IEEE 754 64 bit floating point format. The
151
+ default precision is @code{prec = 113} and @code{ expBits = 15} (IEEE
152
+ 754 128 bit floating point format).
153
+
154
+ The global floating point environment can only be modified temporarily
155
+ when calling a function (see @code{BigFloatEnv.setPrec}). Hence a
156
+ function can change the global floating point environment for its
157
+ callees but not for its caller.
158
+
159
+ @section Operators
160
+
161
+ The builtin operators are extended so that a BigFloat is returned if
162
+ at least one operand is a BigFloat. The computations are always done
163
+ with infinite precision and rounded according to the global floating
164
+ point environment.
165
+
166
+ @code{typeof} applied on a @code{BigFloat} returns @code{bigfloat}.
167
+
168
+ BigFloat can be compared with all the other numeric types and the
169
+ result follows the expected mathematical relations.
170
+
171
+ However, since BigFloat and Number are different types they are never
172
+ equal when using the strict comparison operators (e.g. @code{0.0 ===
173
+ 0.0l} is false).
174
+
175
+ @section BigFloat literals
176
+
177
+ BigFloat literals are floating point numbers with a trailing @code{l}
178
+ suffix. BigFloat literals have an infinite precision. They are rounded
179
+ according to the global floating point environment when they are
180
+ evaluated.@footnote{Base 10 floating point literals cannot usually be
181
+ exactly represented as base 2 floating point number. In order to
182
+ ensure that the literal is represented accurately with the current
183
+ precision, it must be evaluated at runtime.}
184
+
185
+ @section Builtin Object changes
186
+
187
+ @subsection @code{BigFloat} function
188
+
189
+ The @code{BigFloat} function cannot be invoked as a constructor. When
190
+ invoked as a function: the parameter is converted to a primitive
191
+ type. If the result is a numeric type, it is converted to BigFloat
192
+ without rounding. If the result is a string, it is converted to
193
+ BigFloat using the precision of the global floating point environment.
194
+
195
+ @code{BigFloat} properties:
196
+
197
+ @table @code
198
+
199
+ @item LN2
200
+ @item PI
201
+ Getter. Return the value of the corresponding mathematical constant
202
+ rounded to nearest, ties to even with the current global
203
+ precision. The constant values are cached for small precisions.
204
+
205
+ @item MIN_VALUE
206
+ @item MAX_VALUE
207
+ @item EPSILON
208
+ Getter. Return the minimum, maximum and epsilon @code{BigFloat} values
209
+ (same definition as the corresponding @code{Number} constants).
210
+
211
+ @item fpRound(a[, e])
212
+ Round the floating point number @code{a} according to the floating
213
+ point environment @code{e} or the global environment if @code{e} is
214
+ undefined.
215
+
216
+ @item parseFloat(a[, radix[, e]])
217
+ Parse the string @code{a} as a floating point number in radix
218
+ @code{radix}. The radix is 0 (default) or from 2 to 36. The radix 0
219
+ means radix 10 unless there is a hexadecimal or binary prefix. The
220
+ result is rounded according to the floating point environment @code{e}
221
+ or the global environment if @code{e} is undefined.
222
+
223
+ @item isFinite(a)
224
+ Return true if @code{a} is a finite bigfloat.
225
+
226
+ @item isNaN(a)
227
+ Return true if @code{a} is a NaN bigfloat.
228
+
229
+ @item add(a, b[, e])
230
+ @item sub(a, b[, e])
231
+ @item mul(a, b[, e])
232
+ @item div(a, b[, e])
233
+ Perform the specified floating point operation and round the floating
234
+ point number @code{a} according to the floating point environment
235
+ @code{e} or the global environment if @code{e} is undefined. If
236
+ @code{e} is specified, the floating point status flags are updated.
237
+
238
+ @item floor(x)
239
+ @item ceil(x)
240
+ @item round(x)
241
+ @item trunc(x)
242
+ Round to an integer. No additional rounding is performed.
243
+
244
+ @item abs(x)
245
+ Return the absolute value of x. No additional rounding is performed.
246
+
247
+ @item fmod(x, y[, e])
248
+ @item remainder(x, y[, e])
249
+ Floating point remainder. The quotient is truncated to zero (fmod) or
250
+ to the nearest integer with ties to even (remainder). @code{e} is an
251
+ optional floating point environment.
252
+
253
+ @item sqrt(x[, e])
254
+ Square root. Return a rounded floating point number. @code{e} is an
255
+ optional floating point environment.
256
+
257
+ @item sin(x[, e])
258
+ @item cos(x[, e])
259
+ @item tan(x[, e])
260
+ @item asin(x[, e])
261
+ @item acos(x[, e])
262
+ @item atan(x[, e])
263
+ @item atan2(x, y[, e])
264
+ @item exp(x[, e])
265
+ @item log(x[, e])
266
+ @item pow(x, y[, e])
267
+ Transcendental operations. Return a rounded floating point
268
+ number. @code{e} is an optional floating point environment.
269
+
270
+ @end table
271
+
272
+ @subsection @code{BigFloat.prototype}
273
+
274
+ The following properties are modified:
275
+
276
+ @table @code
277
+ @item valueOf()
278
+ Return the bigfloat primitive value corresponding to @code{this}.
279
+
280
+ @item toString(radix)
281
+
282
+ For floating point numbers:
283
+
284
+ @itemize
285
+ @item
286
+ If the radix is a power of two, the conversion is done with infinite
287
+ precision.
288
+ @item
289
+ Otherwise, the number is rounded to nearest with ties to even using
290
+ the global precision. It is then converted to string using the minimum
291
+ number of digits so that its conversion back to a floating point using
292
+ the global precision and round to nearest gives the same number.
293
+
294
+ @end itemize
295
+
296
+ The exponent letter is @code{e} for base 10, @code{p} for bases 2, 8,
297
+ 16 with a binary exponent and @code{@@} for the other bases.
298
+
299
+ @item toPrecision(p, rnd_mode = BigFloatEnv.RNDNA, radix = 10)
300
+ @item toFixed(p, rnd_mode = BigFloatEnv.RNDNA, radix = 10)
301
+ @item toExponential(p, rnd_mode = BigFloatEnv.RNDNA, radix = 10)
302
+ Same semantics as the corresponding @code{Number} functions with
303
+ BigFloats. There is no limit on the accepted precision @code{p}. The
304
+ rounding mode and radix can be optionally specified. The radix must be
305
+ between 2 and 36.
306
+
307
+ @end table
308
+
309
+ @subsection @code{BigFloatEnv} constructor
310
+
311
+ The @code{BigFloatEnv([p, [,rndMode]]} constructor cannot be invoked as a
312
+ function. The floating point environment contains:
313
+
314
+ @itemize
315
+ @item the mantissa precision in bits
316
+
317
+ @item the exponent size in bits assuming an IEEE 754 representation;
318
+
319
+ @item the subnormal flag (if true, subnormal floating point numbers can
320
+ be generated by the floating point operations).
321
+
322
+ @item the rounding mode
323
+
324
+ @item the floating point status. The status flags can only be set by the floating point operations. They can be reset with @code{BigFloatEnv.prototype.clearStatus()} or with the various status flag setters.
325
+
326
+ @end itemize
327
+
328
+ @code{new BigFloatEnv([p, [,rndMode]]} creates a new floating point
329
+ environment. The status flags are reset. If no parameter is given the
330
+ precision, exponent bits and subnormal flags are copied from the
331
+ global floating point environment. Otherwise, the precision is set to
332
+ @code{p}, the number of exponent bits is set to @code{expBitsMax} and the
333
+ subnormal flags is set to @code{false}. If @code{rndMode} is
334
+ @code{undefined}, the rounding mode is set to @code{RNDN}.
335
+
336
+ @code{BigFloatEnv} properties:
337
+
338
+ @table @code
339
+
340
+ @item prec
341
+ Getter. Return the precision in bits of the global floating point
342
+ environment. The initial value is @code{113}.
343
+
344
+ @item expBits
345
+ Getter. Return the exponent size in bits of the global floating point
346
+ environment assuming an IEEE 754 representation. The initial value is
347
+ @code{15}.
348
+
349
+ @item setPrec(f, p[, e])
350
+ Set the precision of the global floating point environment to @code{p}
351
+ and the exponent size to @code{e} then call the function
352
+ @code{f}. Then the Float precision and exponent size are reset to
353
+ their precious value and the return value of @code{f} is returned (or
354
+ an exception is raised if @code{f} raised an exception). If @code{e}
355
+ is @code{undefined} it is set to @code{BigFloatEnv.expBitsMax}.
356
+
357
+ @item precMin
358
+ Read-only integer. Return the minimum allowed precision. Must be at least 2.
359
+
360
+ @item precMax
361
+ Read-only integer. Return the maximum allowed precision. Must be at least 113.
362
+
363
+ @item expBitsMin
364
+ Read-only integer. Return the minimum allowed exponent size in
365
+ bits. Must be at least 3.
366
+
367
+ @item expBitsMax
368
+ Read-only integer. Return the maximum allowed exponent size in
369
+ bits. Must be at least 15.
370
+
371
+ @item RNDN
372
+ Read-only integer. Round to nearest, with ties to even rounding mode.
373
+
374
+ @item RNDZ
375
+ Read-only integer. Round to zero rounding mode.
376
+
377
+ @item RNDD
378
+ Read-only integer. Round to -Infinity rounding mode.
379
+
380
+ @item RNDU
381
+ Read-only integer. Round to +Infinity rounding mode.
382
+
383
+ @item RNDNA
384
+ Read-only integer. Round to nearest, with ties away from zero rounding mode.
385
+
386
+ @item RNDA
387
+ Read-only integer. Round away from zero rounding mode.
388
+
389
+ @item RNDF@footnote{Could be removed in case a deterministic behavior for floating point operations is required.}
390
+ Read-only integer. Faithful rounding mode. The result is
391
+ non-deterministically rounded to -Infinity or +Infinity. This rounding
392
+ mode usually gives a faster and deterministic running time for the
393
+ floating point operations.
394
+
395
+ @end table
396
+
397
+ @code{BigFloatEnv.prototype} properties:
398
+
399
+ @table @code
400
+
401
+ @item prec
402
+ Getter and setter (Integer). Return or set the precision in bits.
403
+
404
+ @item expBits
405
+ Getter and setter (Integer). Return or set the exponent size in bits
406
+ assuming an IEEE 754 representation.
407
+
408
+ @item rndMode
409
+ Getter and setter (Integer). Return or set the rounding mode.
410
+
411
+ @item subnormal
412
+ Getter and setter (Boolean). subnormal flag. It is false when
413
+ @code{expBits = expBitsMax}.
414
+
415
+ @item clearStatus()
416
+ Clear the status flags.
417
+
418
+ @item invalidOperation
419
+ @item divideByZero
420
+ @item overflow
421
+ @item underflow
422
+ @item inexact
423
+ Getter and setter (Boolean). Status flags.
424
+
425
+ @end table
426
+
427
+ @chapter BigDecimal
428
+
429
+ This extension adds the @code{BigDecimal} primitive type. The
430
+ @code{BigDecimal} type represents floating point numbers in base
431
+ 10. It is inspired from the proposal available at
432
+ @url{https://github.com/littledan/proposal-bigdecimal}.
433
+
434
+ The @code{BigDecimal} floating point numbers are always normalized and
435
+ finite. There is no concept of @code{-0}, @code{Infinity} or
436
+ @code{NaN}. By default, all the computations are done with infinite
437
+ precision.
438
+
439
+ @section Operators
440
+
441
+ The following builtin operators support BigDecimal:
442
+
443
+ @table @code
444
+
445
+ @item +
446
+ @item -
447
+ @item *
448
+ Both operands must be BigDecimal. The result is computed with infinite
449
+ precision.
450
+ @item %
451
+ Both operands must be BigDecimal. The result is computed with infinite
452
+ precision. A range error is throws in case of division by zero.
453
+
454
+ @item /
455
+ Both operands must be BigDecimal. A range error is throws in case of
456
+ division by zero or if the result cannot be represented with infinite
457
+ precision (use @code{BigDecimal.div} to specify the rounding).
458
+
459
+ @item **
460
+ Both operands must be BigDecimal. The exponent must be a positive
461
+ integer. The result is computed with infinite precision.
462
+
463
+ @item ===
464
+ When one of the operand is a BigDecimal, return true if both operands
465
+ are a BigDecimal and if they are equal.
466
+
467
+ @item ==
468
+ @item !=
469
+ @item <=
470
+ @item >=
471
+ @item <
472
+ @item >
473
+
474
+ Numerical comparison. When one of the operand is not a BigDecimal, it is
475
+ converted to BigDecimal by using ToString(). Hence comparisons between
476
+ Number and BigDecimal do not use the exact mathematical value of the
477
+ Number value.
478
+
479
+ @end table
480
+
481
+ @section BigDecimal literals
482
+
483
+ BigDecimal literals are decimal floating point numbers with a trailing
484
+ @code{m} suffix.
485
+
486
+ @section Builtin Object changes
487
+
488
+ @subsection The @code{BigDecimal} function.
489
+
490
+ It returns @code{0m} if no parameter is provided. Otherwise the first
491
+ parameter is converted to a bigdecimal by using ToString(). Hence
492
+ Number values are not converted to their exact numerical value as
493
+ BigDecimal.
494
+
495
+ @subsection Properties of the @code{BigDecimal} object
496
+
497
+ @table @code
498
+
499
+ @item add(a, b[, e])
500
+ @item sub(a, b[, e])
501
+ @item mul(a, b[, e])
502
+ @item div(a, b[, e])
503
+ @item mod(a, b[, e])
504
+ @item sqrt(a, e)
505
+ @item round(a, e)
506
+ Perform the specified floating point operation and round the floating
507
+ point result according to the rounding object @code{e}. If the
508
+ rounding object is not present, the operation is executed with
509
+ infinite precision.
510
+
511
+ For @code{div}, a @code{RangeError} exception is thrown in case of
512
+ division by zero or if the result cannot be represented with infinite
513
+ precision if no rounding object is present.
514
+
515
+ For @code{sqrt}, a range error is thrown if @code{a} is less than
516
+ zero.
517
+
518
+ The rounding object must contain the following properties:
519
+ @code{roundingMode} is a string specifying the rounding mode
520
+ (@code{"floor"}, @code{"ceiling"}, @code{"down"}, @code{"up"},
521
+ @code{"half-even"}, @code{"half-up"}). Either
522
+ @code{maximumSignificantDigits} or @code{maximumFractionDigits} must
523
+ be present to specify respectively the number of significant digits
524
+ (must be >= 1) or the number of digits after the decimal point (must
525
+ be >= 0).
526
+
527
+ @end table
528
+
529
+ @subsection Properties of the @code{BigDecimal.prototype} object
530
+
531
+ @table @code
532
+ @item valueOf()
533
+ Return the bigdecimal primitive value corresponding to @code{this}.
534
+
535
+ @item toString()
536
+ Convert @code{this} to a string with infinite precision in base 10.
537
+
538
+ @item toPrecision(p, rnd_mode = "half-up")
539
+ @item toFixed(p, rnd_mode = "half-up")
540
+ @item toExponential(p, rnd_mode = "half-up")
541
+ Convert the BigDecimal @code{this} to string with the specified
542
+ precision @code{p}. There is no limit on the accepted precision
543
+ @code{p}. The rounding mode can be optionally
544
+ specified. @code{toPrecision} outputs either in decimal fixed notation
545
+ or in decimal exponential notation with a @code{p} digits of
546
+ precision. @code{toExponential} outputs in decimal exponential
547
+ notation with @code{p} digits after the decimal point. @code{toFixed}
548
+ outputs in decimal notation with @code{p} digits after the decimal
549
+ point.
550
+
551
+ @end table
552
+
553
+ @chapter Math mode
554
+
555
+ A new @emph{math mode} is enabled with the @code{"use math"}
556
+ directive. It propagates the same way as the @emph{strict mode}. It is
557
+ designed so that arbitrarily large integers and floating point numbers
558
+ are available by default. In order to minimize the number of changes
559
+ in the Javascript semantics, integers are represented either as Number
560
+ or BigInt depending on their magnitude. Floating point numbers are
561
+ always represented as BigFloat.
562
+
563
+ The following changes are made to the Javascript semantics:
564
+
565
+ @itemize
566
+
567
+ @item Floating point literals (i.e. number with a decimal point or an exponent) are @code{BigFloat} by default (i.e. a @code{l} suffix is implied). Hence @code{typeof 1.0 === "bigfloat"}.
568
+
569
+ @item Integer literals (i.e. numbers without a decimal point or an exponent) with or without the @code{n} suffix are @code{BigInt} if their value cannot be represented as a safe integer. A safe integer is defined as a integer whose absolute value is smaller or equal to @code{2**53-1}. Hence @code{typeof 1 === "number "}, @code{typeof 1n === "number"} but @code{typeof 9007199254740992 === "bigint" }.
570
+
571
+ @item All the bigint builtin operators and functions are modified so that their result is returned as a Number if it is a safe integer. Otherwise the result stays a BigInt.
572
+
573
+ @item The builtin operators are modified so that they return an exact result (which can be a BigInt) if their operands are safe integers. Operands between Number and BigInt are accepted provided the Number operand is a safe integer. The integer power with a negative exponent returns a BigFloat as result. The integer division returns a BigFloat as result.
574
+
575
+ @item The @code{^} operator is an alias to the power operator (@code{**}).
576
+
577
+ @item The power operator (both @code{^} and @code{**}) grammar is modified so that @code{-2^2} is allowed and yields @code{-4}.
578
+
579
+ @item The logical xor operator is still available with the @code{^^} operator.
580
+
581
+ @item The modulo operator (@code{%}) returns the Euclidian remainder (always positive) instead of the truncated remainder.
582
+
583
+ @item The integer division operator can be overloaded with @code{Operators.updateBigIntOperators(dictionary)}.
584
+
585
+ @item The integer power operator with a non zero negative exponent can be overloaded with @code{Operators.updateBigIntOperators(dictionary)}.
586
+
587
+ @end itemize
588
+
589
+ @bye