From dc00e1d0c4fdd0ee79180b0f5345c5bfe56a816a Mon Sep 17 00:00:00 2001 From: sbosse Date: Mon, 21 Jul 2025 23:09:13 +0200 Subject: [PATCH] Mon 21 Jul 22:43:21 CEST 2025 --- js/numerics/polyfill.js | 134 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 js/numerics/polyfill.js diff --git a/js/numerics/polyfill.js b/js/numerics/polyfill.js new file mode 100644 index 0000000..e1484f0 --- /dev/null +++ b/js/numerics/polyfill.js @@ -0,0 +1,134 @@ +/** + ** ============================== + ** O O O OOOO + ** O O O O O O + ** O O O O O O + ** OOOO OOOO O OOO OOOO + ** O O O O O O O + ** O O O O O O O + ** OOOO OOOO O O OOOO + ** ============================== + ** Dr. Stefan Bosse http://www.sblab.de + ** + ** COPYRIGHT: THIS SOFTWARE, EXECUTABLE AND SOURCE CODE IS OWNED + ** BY THE AUTHOR(S). + ** THIS SOURCE CODE MAY NOT BE COPIED, EXTRACTED, + ** MODIFIED, OR OTHERWISE USED IN A CONTEXT + ** OUTSIDE OF THE SOFTWARE SYSTEM. + ** + ** $AUTHORS: Stefan Bosse + ** $INITIAL: (C) 2006-2019 bLAB + ** $CREATED: 1-1-19 by sbosse. + ** $VERSION: 1.2.1 + ** + ** $INFO: + ** + ** Various core poylfills and extensions + ** + ** $ENDOFINFO + */ +/* TYPED ARRAY */ +var typed_arrays = [ + Int8Array, + Uint8Array, + Int16Array, + Uint16Array, + Int32Array, + Uint32Array, + Float32Array, + Float64Array +]; + +TypedArrayOfName = { + Int8Array:Int8Array, + Uint8Array:Uint8Array, + Int16Array:Int16Array, + Uint16Array:Uint16Array, + Int32Array:Int32Array, + Uint32Array:Uint32Array, + Float32Array:Float32Array, + Float64Array:Float64Array +} + +typed_arrays.forEach(function (typed_array) { + + if (!typed_array.prototype.slice) typed_array.prototype.slice = function (begin, end) { + var len = this.length;; + var size; + var start = begin || 0; + + start = (start >= 0) ? start : Math.max(0, len + start); + end = end || len; + + var up_to = (typeof end == 'number') ? Math.min(end, len) : len; + if (end < 0) up_to = len + end; + + // actual expected size of the slice + size = up_to - start; + + // if size is negative it should return an empty array + if (size <= 0) size = 0; + + var typed_array_constructor = this.constructor; + var cloned = new typed_array_constructor(size); + for (var i = 0; i < size; i++) { + cloned[i] = this[start + i]; + } + + return cloned; + }; + if (!typed_array.prototype.print) typed_array.prototype.print = function () { + var s = '[ ', sep=''; + + for (var i=0;i0?' , ':'') + this[i].toString(); + } + return s+' ]'; + }; + if (!typed_array.prototype.reduce) typed_array.prototype.reduce = function (apply) { + var res=this[0]; + + for (var i=1;i