feat: add the node modules

Necessary in order to clearly see the squiggle hotwiring.
This commit is contained in:
NunoSempere 2022-12-03 12:44:49 +00:00
parent d670b89c4d
commit b6addc7f05
56140 changed files with 5427867 additions and 1 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
**/node_modules
**/samples-gpt

53
js/node_modules/.yarn-integrity generated vendored Normal file
View File

@ -0,0 +1,53 @@
{
"systemParams": "linux-x64-93",
"modulesFolders": [
"node_modules"
],
"flags": [],
"linkedModules": [],
"topLevelPatterns": [
"@stdlib/random@^0.0.12"
],
"lockfileEntries": {
"@stdlib/array@^0.0.x": "https://registry.yarnpkg.com/@stdlib/array/-/array-0.0.12.tgz#12f40ab95bb36d424cdad991f29fc3cb491ee29e",
"@stdlib/assert@^0.0.x": "https://registry.yarnpkg.com/@stdlib/assert/-/assert-0.0.12.tgz#1648c9016e5041291f55a6464abcc4069c5103ce",
"@stdlib/bigint@^0.0.x": "https://registry.yarnpkg.com/@stdlib/bigint/-/bigint-0.0.11.tgz#c416a1d727001c55f4897e6424124199d638f2fd",
"@stdlib/blas@^0.0.x": "https://registry.yarnpkg.com/@stdlib/blas/-/blas-0.0.12.tgz#7e93e42b4621fc6903bf63264f045047333536c2",
"@stdlib/buffer@^0.0.x": "https://registry.yarnpkg.com/@stdlib/buffer/-/buffer-0.0.11.tgz#6137b00845e6c905181cc7ebfae9f7e47c01b0ce",
"@stdlib/cli@^0.0.x": "https://registry.yarnpkg.com/@stdlib/cli/-/cli-0.0.10.tgz#28e2fbe6865d7f5cd15b7dc5846c99bd3b91674f",
"@stdlib/complex@^0.0.x": "https://registry.yarnpkg.com/@stdlib/complex/-/complex-0.0.12.tgz#3afbc190cd0a9b37fc7c6e508c3aa9fda9106944",
"@stdlib/constants@^0.0.x": "https://registry.yarnpkg.com/@stdlib/constants/-/constants-0.0.11.tgz#78cd56d6c2982b30264843c3d75bde7125e90cd2",
"@stdlib/fs@^0.0.x": "https://registry.yarnpkg.com/@stdlib/fs/-/fs-0.0.12.tgz#662365fd5846a51f075724b4f2888ae88441b70d",
"@stdlib/math@^0.0.x": "https://registry.yarnpkg.com/@stdlib/math/-/math-0.0.11.tgz#eb6638bc03a20fbd6727dd5b977ee0170bda4649",
"@stdlib/ndarray@^0.0.x": "https://registry.yarnpkg.com/@stdlib/ndarray/-/ndarray-0.0.13.tgz#2e8fc645e10f56a645a0ab81598808c0e8f43b82",
"@stdlib/nlp@^0.0.x": "https://registry.yarnpkg.com/@stdlib/nlp/-/nlp-0.0.11.tgz#532ec0f7267b8d639e4c20c6de864e8de8a09054",
"@stdlib/number@^0.0.x": "https://registry.yarnpkg.com/@stdlib/number/-/number-0.0.10.tgz#4030ad8fc3fac19a9afb415c443cee6deea0e65c",
"@stdlib/os@^0.0.x": "https://registry.yarnpkg.com/@stdlib/os/-/os-0.0.12.tgz#08bbf013c62a7153099fa9cbac086ca1349a4677",
"@stdlib/process@^0.0.x": "https://registry.yarnpkg.com/@stdlib/process/-/process-0.0.12.tgz#123325079d89a32f4212f72fb694f8fe3614cf18",
"@stdlib/random@^0.0.12": "https://registry.yarnpkg.com/@stdlib/random/-/random-0.0.12.tgz#e819c3abd602ed5559ba800dba751e49c633ff85",
"@stdlib/random@^0.0.x": "https://registry.yarnpkg.com/@stdlib/random/-/random-0.0.12.tgz#e819c3abd602ed5559ba800dba751e49c633ff85",
"@stdlib/regexp@^0.0.x": "https://registry.yarnpkg.com/@stdlib/regexp/-/regexp-0.0.13.tgz#80b98361dc7a441b47bc3fa964bb0c826759e971",
"@stdlib/stats@^0.0.x": "https://registry.yarnpkg.com/@stdlib/stats/-/stats-0.0.13.tgz#87c973f385379d794707c7b5196a173dba8b07e1",
"@stdlib/streams@^0.0.x": "https://registry.yarnpkg.com/@stdlib/streams/-/streams-0.0.12.tgz#07f5ceae5852590afad8e1cb7ce94174becc8739",
"@stdlib/strided@^0.0.x": "https://registry.yarnpkg.com/@stdlib/strided/-/strided-0.0.12.tgz#86ac48e660cb7f64a45cf07e80cbbfe58be21ae1",
"@stdlib/string@^0.0.x": "https://registry.yarnpkg.com/@stdlib/string/-/string-0.0.14.tgz#4feea4f9089ab72428eebb65fe7b93d90a7f34f4",
"@stdlib/symbol@^0.0.x": "https://registry.yarnpkg.com/@stdlib/symbol/-/symbol-0.0.12.tgz#b9f396b0bf269c2985bb7fe99810a8e26d7288c3",
"@stdlib/time@^0.0.x": "https://registry.yarnpkg.com/@stdlib/time/-/time-0.0.14.tgz#ea6daa438b1d3b019b99f5091117ee4bcef55d60",
"@stdlib/types@^0.0.x": "https://registry.yarnpkg.com/@stdlib/types/-/types-0.0.14.tgz#02d3aab7a9bfaeb86e34ab749772ea22f7b2f7e0",
"@stdlib/utils@^0.0.x": "https://registry.yarnpkg.com/@stdlib/utils/-/utils-0.0.12.tgz#670de5a7b253f04f11a4cba38f790e82393bcb46",
"core-util-is@~1.0.0": "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85",
"debug@^2.6.9": "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f",
"inherits@~2.0.3": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c",
"isarray@~1.0.0": "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11",
"minimist@^1.2.0": "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18",
"ms@2.0.0": "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8",
"process-nextick-args@~2.0.0": "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2",
"readable-stream@^2.1.4": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57",
"safe-buffer@~5.1.0": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d",
"safe-buffer@~5.1.1": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d",
"string_decoder@~1.1.1": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8",
"util-deprecate@~1.0.1": "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
},
"files": [],
"artifacts": {}
}

481
js/node_modules/@stdlib/array/LICENSE generated vendored Normal file
View File

@ -0,0 +1,481 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
Boost Software License - Version 1.0 - August 17th, 2003
Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by this
license (the "Software") to use, reproduce, display, distribute, execute, and
transmit the Software, and to prepare derivative works of the Software, and to
permit third-parties to whom the Software is furnished to do so, all subject to
the following:
The copyright notices in the Software and this entire statement, including the
above license grant, this restriction and the following disclaimer, must be
included in all copies of the Software, in whole or in part, and all derivative
works of the Software, unless such copies or derivative works are solely in the
form of machine-executable object code generated by a source language processor.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES
OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
DEPENDENCIES
The library links against the following external libraries, which have their own
licenses:
* OpenBLAS <https://raw.githubusercontent.com/xianyi/OpenBLAS/
def146efed8d5908ea04e22668feeab7099599a0/LICENSE>
Copyright (c) 2011-2014, The OpenBLAS Project
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
3. Neither the name of the OpenBLAS project nor the names of
its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* Electron <https://raw.githubusercontent.com/electron/electron/
c4cfb3e7110266b9d7ad80e1ae097c4db564501c/LICENSE>
Copyright (c) 2013-2017 GitHub Inc.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* Boost <http://www.boost.org/LICENSE_1_0.txt>
Boost Software License - Version 1.0 - August 17th, 2003
Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:
The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
* Cephes <http://www.netlib.org/cephes/readme>
Copyright (c) 1984-2000 Stephen L. Moshier
Some software in this archive may be from the book _Methods and Programs for
Mathematical Functions_ (Prentice-Hall or Simon & Schuster International, 1989)
or from the Cephes Mathematical Library, a commercial product. In either event,
it is copyrighted by the author. What you see here may be used freely but it
comes with no support or guarantee.
Stephen L. Moshier
moshier@na-net.ornl.gov
ATTRIBUTION
The library contains implementations from the following external libraries,
which have their own licenses:
* FreeBSD <https://svnweb.freebsd.org/>
Copyright (C) 1993-2004 by Sun Microsystems, Inc. All rights reserved.
Developed at SunPro, a Sun Microsystems, Inc. business.
Permission to use, copy, modify, and distribute this
software is freely granted, provided that this notice
is preserved.
* FDLIBM <http://www.netlib.org/fdlibm/>
Copyright (C) 2004 by Sun Microsystems, Inc. All rights reserved.
Developed at SunPro, a Sun Microsystems, Inc. business.
Permission to use, copy, modify, and distribute this
software is freely granted, provided that this notice
is preserved.
* Go <https://raw.githubusercontent.com/golang/go/master/LICENSE>
Copyright (c) 2009 The Go Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* SLATEC Common Mathematical Library <http://www.netlib.no/netlib/slatec/>
Public domain.
* ESLint <https://raw.githubusercontent.com/eslint/eslint/master/LICENSE>
Copyright JS Foundation and other contributors, https://js.foundation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
* StatsFuns.jl <https://raw.githubusercontent.com/JuliaStats/StatsFuns.jl/
e66dd973650c375bc1739c820e5b96bb5bd000a8/LICENSE.md>
Copyright (c) 2015: Dahua Lin.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* SpecialFunctions.jl <https://raw.githubusercontent.com/JuliaMath/
SpecialFunctions.jl/02a173fbe24a61c4b392aec17a9764ac5727feb1/LICENSE>
The MIT License (MIT)
Copyright (c) 2017 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and others:
https://github.com/JuliaMath/SpecialFunctions.jl/graphs/contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
* MT19937 <http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/CODES/
mt19937ar.c>
Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The names of its contributors may not be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

1
js/node_modules/@stdlib/array/NOTICE generated vendored Normal file
View File

@ -0,0 +1 @@
Copyright (c) 2016-2021 The Stdlib Authors.

371
js/node_modules/@stdlib/array/README.md generated vendored Normal file
View File

@ -0,0 +1,371 @@
<!--
@license Apache-2.0
Copyright (c) 2018 The Stdlib Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
# Arrays
[![NPM version][npm-image]][npm-url] [![Build Status][test-image]][test-url] [![Coverage Status][coverage-image]][coverage-url] [![dependencies][dependencies-image]][dependencies-url]
> Arrays.
<section class="installation">
## Installation
```bash
npm install @stdlib/array
```
</section>
<section class="usage">
## Usage
```javascript
var ns = require( '@stdlib/array' );
```
#### ns
Arrays.
```javascript
var o = ns;
// returns {...}
```
The namespace exports the following array constructors:
<!-- <toc pattern="+(int*|float*|uint*|*buffer)"> -->
<div class="namespace-toc">
- <span class="signature">[`ArrayBuffer( size )`][@stdlib/array/buffer]</span><span class="delimiter">: </span><span class="description">constructor which returns an object used to represent a generic, fixed-length raw binary data buffer.</span>
- <span class="signature">[`Float32Array()`][@stdlib/array/float32]</span><span class="delimiter">: </span><span class="description">typed array constructor which returns a typed array representing an array of single-precision floating-point numbers in the platform byte order.</span>
- <span class="signature">[`Float64Array()`][@stdlib/array/float64]</span><span class="delimiter">: </span><span class="description">typed array constructor which returns a typed array representing an array of double-precision floating-point numbers in the platform byte order.</span>
- <span class="signature">[`Int16Array()`][@stdlib/array/int16]</span><span class="delimiter">: </span><span class="description">typed array constructor which returns a typed array representing an array of twos-complement 16-bit signed integers in the platform byte order.</span>
- <span class="signature">[`Int32Array()`][@stdlib/array/int32]</span><span class="delimiter">: </span><span class="description">typed array constructor which returns a typed array representing an array of twos-complement 32-bit signed integers in the platform byte order.</span>
- <span class="signature">[`Int8Array()`][@stdlib/array/int8]</span><span class="delimiter">: </span><span class="description">typed array constructor which returns a typed array representing an array of twos-complement 8-bit signed integers in the platform byte order.</span>
- <span class="signature">[`SharedArrayBuffer( size )`][@stdlib/array/shared-buffer]</span><span class="delimiter">: </span><span class="description">constructor returning an object used to represent a generic, fixed-length raw binary data buffer which can be used to create views of shared memory.</span>
- <span class="signature">[`Uint16Array()`][@stdlib/array/uint16]</span><span class="delimiter">: </span><span class="description">typed array constructor which returns a typed array representing an array of 16-bit unsigned integers in the platform byte order.</span>
- <span class="signature">[`Uint32Array()`][@stdlib/array/uint32]</span><span class="delimiter">: </span><span class="description">typed array constructor which returns a typed array representing an array of 32-bit unsigned integers in the platform byte order.</span>
- <span class="signature">[`Uint8Array()`][@stdlib/array/uint8]</span><span class="delimiter">: </span><span class="description">typed array constructor which returns a typed array representing an array of 8-bit unsigned integers in the platform byte order.</span>
- <span class="signature">[`Uint8ClampedArray()`][@stdlib/array/uint8c]</span><span class="delimiter">: </span><span class="description">typed array constructor which returns a typed array representing an array of 8-bit unsigned integers in the platform byte order clamped to 0-255.</span>
</div>
<!-- </toc> -->
```javascript
var arr = new ns.Int32Array( 5 );
// returns <Int32Array>[ 0, 0, 0, 0, 0 ]
```
Alternatively, use the `typedarray` function to create a typed array of a given data type:
<!-- <toc pattern="typed"> -->
<div class="namespace-toc">
- <span class="signature">[`typedarray()`][@stdlib/array/typed]</span><span class="delimiter">: </span><span class="description">create a typed array.</span>
</div>
<!-- </toc> -->
```javascript
var arr1 = ns.typedarray( 5 );
// returns <Float64Array>[ 0.0, 0.0, 0.0, 0.0, 0.0 ]
var arr2 = ns.typedarray( 5, 'uint8' );
// returns <Uint8Array>[ 0, 0, 0, 0, 0 ]
```
The namespace contains functions to create arrays pre-filled with spaced values:
<!-- <toc pattern="*space"> -->
<div class="namespace-toc">
- <span class="signature">[`datespace( start, stop[, length][, opts] )`][@stdlib/array/datespace]</span><span class="delimiter">: </span><span class="description">generate an array of linearly spaced dates.</span>
- <span class="signature">[`incrspace( start, stop[, increment] )`][@stdlib/array/incrspace]</span><span class="delimiter">: </span><span class="description">generate a linearly spaced numeric array using a provided increment.</span>
- <span class="signature">[`linspace( start, stop[, length] )`][@stdlib/array/linspace]</span><span class="delimiter">: </span><span class="description">generate a linearly spaced numeric array.</span>
- <span class="signature">[`logspace( a, b[, length] )`][@stdlib/array/logspace]</span><span class="delimiter">: </span><span class="description">generate a logarithmically spaced numeric array.</span>
</div>
<!-- </toc> -->
You can use the following functions to retrieve a list of available data types:
<!-- <toc pattern="*dtypes"> -->
<div class="namespace-toc">
- <span class="signature">[`arrayDataTypes()`][@stdlib/array/dtypes]</span><span class="delimiter">: </span><span class="description">list of array data types.</span>
- <span class="signature">[`typedarrayComplexDataTypes()`][@stdlib/array/typed-complex-dtypes]</span><span class="delimiter">: </span><span class="description">list of complex typed array data types.</span>
- <span class="signature">[`typedarrayDataTypes()`][@stdlib/array/typed-dtypes]</span><span class="delimiter">: </span><span class="description">list of typed array data types.</span>
</div>
<!-- </toc> -->
```javascript
var DTYPES = ns.arrayDataTypes();
// returns [ 'float32', 'float64', 'generic', 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c' ]
```
Furthermore, the namespace contains utility functions to retrieve a given constructor:
<!-- <toc keywords="+constructors,+constructor"> -->
<div class="namespace-toc">
- <span class="signature">[`arrayCtors( dtype )`][@stdlib/array/ctors]</span><span class="delimiter">: </span><span class="description">array constructors.</span>
- <span class="signature">[`typedarrayComplexCtors( dtype )`][@stdlib/array/typed-complex-ctors]</span><span class="delimiter">: </span><span class="description">complex typed array constructors.</span>
- <span class="signature">[`typedarrayCtors( dtype )`][@stdlib/array/typed-ctors]</span><span class="delimiter">: </span><span class="description">typed array constructors.</span>
</div>
<!-- </toc> -->
```javascript
var ctor = ns.typedarrayCtors( 'float64' );
// returns <Function>
ctor = ns.typedarrayCtors( 'int' );
// returns null
```
Lastly, the namespace contains various other functions for dealing with arrays, including functions to convert arrays from one data type to another or to serialize them as JSON and vice versa.
<!-- <toc ignore="+(int*|float*|uint*|*buffer)" ignore="typed" ignore="*dtypes" keywords="-constructors,-constructor"> -->
<div class="namespace-toc">
- <span class="signature">[`Complex128Array()`][@stdlib/array/complex128]</span><span class="delimiter">: </span><span class="description">128-bit complex number array.</span>
- <span class="signature">[`Complex64Array()`][@stdlib/array/complex64]</span><span class="delimiter">: </span><span class="description">64-bit complex number array.</span>
- <span class="signature">[`convertArraySame( x, y )`][@stdlib/array/convert-same]</span><span class="delimiter">: </span><span class="description">convert an array to the same data type as a second input array.</span>
- <span class="signature">[`convertArray( arr, dtype )`][@stdlib/array/convert]</span><span class="delimiter">: </span><span class="description">convert an array to an array of a different data type.</span>
- <span class="signature">[`DataView( buffer[, byteOffset[, byteLength]] )`][@stdlib/array/dataview]</span><span class="delimiter">: </span><span class="description">constructor which returns a data view representing a provided array buffer.</span>
- <span class="signature">[`arrayDataType( array )`][@stdlib/array/dtype]</span><span class="delimiter">: </span><span class="description">return the data type of an array.</span>
- <span class="signature">[`filledarray()`][@stdlib/array/filled]</span><span class="delimiter">: </span><span class="description">create a filled array.</span>
- <span class="signature">[`iterator2array( iterator[, out][, mapFcn[, thisArg]] )`][@stdlib/array/from-iterator]</span><span class="delimiter">: </span><span class="description">create (or fill) an array from an iterator.</span>
- <span class="signature">[`arrayMinDataType( value )`][@stdlib/array/min-dtype]</span><span class="delimiter">: </span><span class="description">determine the minimum array data type of the closest "kind" necessary for storing a provided scalar value.</span>
- <span class="signature">[`arrayNextDataType( [dtype] )`][@stdlib/array/next-dtype]</span><span class="delimiter">: </span><span class="description">return the next larger array data type of the same kind.</span>
- <span class="signature">[`typedarraypool()`][@stdlib/array/pool]</span><span class="delimiter">: </span><span class="description">allocate typed arrays from a typed array memory pool.</span>
- <span class="signature">[`arrayPromotionRules( [dtype1, dtype2] )`][@stdlib/array/promotion-rules]</span><span class="delimiter">: </span><span class="description">return the array data type with the smallest size and closest "kind" to which array data types can be **safely** cast.</span>
- <span class="signature">[`reviveTypedArray( key, value )`][@stdlib/array/reviver]</span><span class="delimiter">: </span><span class="description">revive a JSON-serialized typed array.</span>
- <span class="signature">[`arraySafeCasts( [dtype] )`][@stdlib/array/safe-casts]</span><span class="delimiter">: </span><span class="description">return a list of array data types to which a provided array data type can be safely cast.</span>
- <span class="signature">[`arraySameKindCasts( [dtype] )`][@stdlib/array/same-kind-casts]</span><span class="delimiter">: </span><span class="description">return a list of array data types to which a provided array data type can be safely cast or cast within the same "kind".</span>
- <span class="signature">[`arrayShape( arr )`][@stdlib/array/shape]</span><span class="delimiter">: </span><span class="description">determine (nested) array dimensions.</span>
- <span class="signature">[`circarray2iterator( src[, options][, mapFcn[, thisArg]] )`][@stdlib/array/to-circular-iterator]</span><span class="delimiter">: </span><span class="description">create an iterator which repeatedly iterates over the elements of an array-like object.</span>
- <span class="signature">[`array2iteratorRight( src[, mapFcn[, thisArg]] )`][@stdlib/array/to-iterator-right]</span><span class="delimiter">: </span><span class="description">create an iterator from an array-like object, iterating from right to left.</span>
- <span class="signature">[`array2iterator( src[, mapFcn[, thisArg]] )`][@stdlib/array/to-iterator]</span><span class="delimiter">: </span><span class="description">create an iterator from an array-like object.</span>
- <span class="signature">[`typedarray2json( typedarray )`][@stdlib/array/to-json]</span><span class="delimiter">: </span><span class="description">return a JSON representation of a typed array.</span>
- <span class="signature">[`sparsearray2iteratorRight( src[, mapFcn[, thisArg]] )`][@stdlib/array/to-sparse-iterator-right]</span><span class="delimiter">: </span><span class="description">create an iterator from a sparse array-like object, iterating from right to left.</span>
- <span class="signature">[`sparsearray2iterator( src[, mapFcn[, thisArg]] )`][@stdlib/array/to-sparse-iterator]</span><span class="delimiter">: </span><span class="description">create an iterator from a sparse array-like object.</span>
- <span class="signature">[`stridedarray2iterator( N, src, stride, offset[, mapFcn[, thisArg]] )`][@stdlib/array/to-strided-iterator]</span><span class="delimiter">: </span><span class="description">create an iterator from a strided array-like object.</span>
- <span class="signature">[`arrayview2iteratorRight( src[, begin[, end]][, mapFcn[, thisArg]] )`][@stdlib/array/to-view-iterator-right]</span><span class="delimiter">: </span><span class="description">create an iterator from an array-like object view, iterating from right to left.</span>
- <span class="signature">[`arrayview2iterator( src[, begin[, end]][, mapFcn[, thisArg]] )`][@stdlib/array/to-view-iterator]</span><span class="delimiter">: </span><span class="description">create an iterator from an array-like object view.</span>
</div>
<!-- </toc> -->
</section>
<!-- /.usage -->
<section class="examples">
## Examples
<!-- TODO: better examples -->
<!-- eslint no-undef: "error" -->
```javascript
var objectKeys = require( '@stdlib/utils/keys' );
var ns = require( '@stdlib/array' );
console.log( objectKeys( ns ) );
```
</section>
<!-- /.examples -->
<section class="main-repo" >
* * *
## Notice
This package is part of [stdlib][stdlib], a standard library for JavaScript and Node.js, with an emphasis on numerical and scientific computing. The library provides a collection of robust, high performance libraries for mathematics, statistics, streams, utilities, and more.
For more information on the project, filing bug reports and feature requests, and guidance on how to develop [stdlib][stdlib], see the main project [repository][stdlib].
#### Community
[![Chat][chat-image]][chat-url]
---
## License
See [LICENSE][stdlib-license].
## Copyright
Copyright &copy; 2016-2021. The Stdlib [Authors][stdlib-authors].
</section>
<!-- /.stdlib -->
<!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="links">
[npm-image]: http://img.shields.io/npm/v/@stdlib/array.svg
[npm-url]: https://npmjs.org/package/@stdlib/array
[test-image]: https://github.com/stdlib-js/array/actions/workflows/test.yml/badge.svg
[test-url]: https://github.com/stdlib-js/array/actions/workflows/test.yml
[coverage-image]: https://img.shields.io/codecov/c/github/stdlib-js/array/main.svg
[coverage-url]: https://codecov.io/github/stdlib-js/array?branch=main
[dependencies-image]: https://img.shields.io/david/stdlib-js/array.svg
[dependencies-url]: https://david-dm.org/stdlib-js/array/main
[chat-image]: https://img.shields.io/gitter/room/stdlib-js/stdlib.svg
[chat-url]: https://gitter.im/stdlib-js/stdlib/
[stdlib]: https://github.com/stdlib-js/stdlib
[stdlib-authors]: https://github.com/stdlib-js/stdlib/graphs/contributors
[stdlib-license]: https://raw.githubusercontent.com/stdlib-js/array/main/LICENSE
<!-- <toc-links> -->
[@stdlib/array/complex128]: https://www.npmjs.com/package/@stdlib/array/tree/main/complex128
[@stdlib/array/complex64]: https://www.npmjs.com/package/@stdlib/array/tree/main/complex64
[@stdlib/array/convert-same]: https://www.npmjs.com/package/@stdlib/array/tree/main/convert-same
[@stdlib/array/convert]: https://www.npmjs.com/package/@stdlib/array/tree/main/convert
[@stdlib/array/dataview]: https://www.npmjs.com/package/@stdlib/array/tree/main/dataview
[@stdlib/array/dtype]: https://www.npmjs.com/package/@stdlib/array/tree/main/dtype
[@stdlib/array/filled]: https://www.npmjs.com/package/@stdlib/array/tree/main/filled
[@stdlib/array/from-iterator]: https://www.npmjs.com/package/@stdlib/array/tree/main/from-iterator
[@stdlib/array/min-dtype]: https://www.npmjs.com/package/@stdlib/array/tree/main/min-dtype
[@stdlib/array/next-dtype]: https://www.npmjs.com/package/@stdlib/array/tree/main/next-dtype
[@stdlib/array/pool]: https://www.npmjs.com/package/@stdlib/array/tree/main/pool
[@stdlib/array/promotion-rules]: https://www.npmjs.com/package/@stdlib/array/tree/main/promotion-rules
[@stdlib/array/reviver]: https://www.npmjs.com/package/@stdlib/array/tree/main/reviver
[@stdlib/array/safe-casts]: https://www.npmjs.com/package/@stdlib/array/tree/main/safe-casts
[@stdlib/array/same-kind-casts]: https://www.npmjs.com/package/@stdlib/array/tree/main/same-kind-casts
[@stdlib/array/shape]: https://www.npmjs.com/package/@stdlib/array/tree/main/shape
[@stdlib/array/to-circular-iterator]: https://www.npmjs.com/package/@stdlib/array/tree/main/to-circular-iterator
[@stdlib/array/to-iterator-right]: https://www.npmjs.com/package/@stdlib/array/tree/main/to-iterator-right
[@stdlib/array/to-iterator]: https://www.npmjs.com/package/@stdlib/array/tree/main/to-iterator
[@stdlib/array/to-json]: https://www.npmjs.com/package/@stdlib/array/tree/main/to-json
[@stdlib/array/to-sparse-iterator-right]: https://www.npmjs.com/package/@stdlib/array/tree/main/to-sparse-iterator-right
[@stdlib/array/to-sparse-iterator]: https://www.npmjs.com/package/@stdlib/array/tree/main/to-sparse-iterator
[@stdlib/array/to-strided-iterator]: https://www.npmjs.com/package/@stdlib/array/tree/main/to-strided-iterator
[@stdlib/array/to-view-iterator-right]: https://www.npmjs.com/package/@stdlib/array/tree/main/to-view-iterator-right
[@stdlib/array/to-view-iterator]: https://www.npmjs.com/package/@stdlib/array/tree/main/to-view-iterator
[@stdlib/array/ctors]: https://www.npmjs.com/package/@stdlib/array/tree/main/ctors
[@stdlib/array/typed-complex-ctors]: https://www.npmjs.com/package/@stdlib/array/tree/main/typed-complex-ctors
[@stdlib/array/typed-ctors]: https://www.npmjs.com/package/@stdlib/array/tree/main/typed-ctors
[@stdlib/array/dtypes]: https://www.npmjs.com/package/@stdlib/array/tree/main/dtypes
[@stdlib/array/typed-complex-dtypes]: https://www.npmjs.com/package/@stdlib/array/tree/main/typed-complex-dtypes
[@stdlib/array/typed-dtypes]: https://www.npmjs.com/package/@stdlib/array/tree/main/typed-dtypes
[@stdlib/array/datespace]: https://www.npmjs.com/package/@stdlib/array/tree/main/datespace
[@stdlib/array/incrspace]: https://www.npmjs.com/package/@stdlib/array/tree/main/incrspace
[@stdlib/array/linspace]: https://www.npmjs.com/package/@stdlib/array/tree/main/linspace
[@stdlib/array/logspace]: https://www.npmjs.com/package/@stdlib/array/tree/main/logspace
[@stdlib/array/typed]: https://www.npmjs.com/package/@stdlib/array/tree/main/typed
[@stdlib/array/buffer]: https://www.npmjs.com/package/@stdlib/array/tree/main/buffer
[@stdlib/array/float32]: https://www.npmjs.com/package/@stdlib/array/tree/main/float32
[@stdlib/array/float64]: https://www.npmjs.com/package/@stdlib/array/tree/main/float64
[@stdlib/array/int16]: https://www.npmjs.com/package/@stdlib/array/tree/main/int16
[@stdlib/array/int32]: https://www.npmjs.com/package/@stdlib/array/tree/main/int32
[@stdlib/array/int8]: https://www.npmjs.com/package/@stdlib/array/tree/main/int8
[@stdlib/array/shared-buffer]: https://www.npmjs.com/package/@stdlib/array/tree/main/shared-buffer
[@stdlib/array/uint16]: https://www.npmjs.com/package/@stdlib/array/tree/main/uint16
[@stdlib/array/uint32]: https://www.npmjs.com/package/@stdlib/array/tree/main/uint32
[@stdlib/array/uint8]: https://www.npmjs.com/package/@stdlib/array/tree/main/uint8
[@stdlib/array/uint8c]: https://www.npmjs.com/package/@stdlib/array/tree/main/uint8c
<!-- </toc-links> -->
</section>
<!-- /.links -->

235
js/node_modules/@stdlib/array/buffer/README.md generated vendored Normal file
View File

@ -0,0 +1,235 @@
<!--
@license Apache-2.0
Copyright (c) 2018 The Stdlib Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
# ArrayBuffer
> [Constructor][mdn-arraybuffer] which returns an object used to represent a generic, fixed-length raw binary data buffer.
<!-- Section to include introductory text. Make sure to keep an empty line after the intro `section` element and another before the `/section` close. -->
<section class="intro">
</section>
<!-- /.intro -->
<!-- Package usage documentation. -->
<section class="usage">
## Usage
```javascript
var ArrayBuffer = require( '@stdlib/array/buffer' );
```
#### ArrayBuffer( size )
Returns an [`ArrayBuffer`][mdn-arraybuffer] having a specified number of bytes.
<!-- eslint-disable stdlib/require-globals -->
```javascript
var buf = new ArrayBuffer( 5 );
// returns <ArrayBuffer>
```
* * *
### Properties
#### ArrayBuffer.length
Number of input arguments the constructor accepts.
<!-- eslint-disable stdlib/require-globals -->
```javascript
var len = ArrayBuffer.length;
// returns 1
```
#### ArrayBuffer.prototype.byteLength
**Read-only** property which returns the length (in bytes) of the [`ArrayBuffer`][mdn-arraybuffer].
<!-- eslint-disable stdlib/require-globals -->
```javascript
var buf = new ArrayBuffer( 5 );
var byteLength = buf.byteLength;
// returns 5
```
* * *
### Methods
#### ArrayBuffer.isView( arr )
Static method which returns a `boolean` indicating if provided a buffer view.
<!-- eslint-disable stdlib/require-globals -->
```javascript
var Float64Array = require( '@stdlib/array/float64' );
var view = new Float64Array( 10 );
var bool = ArrayBuffer.isView( view );
// returns true
```
#### ArrayBuffer.prototype.slice( \[start\[, end]] )
Copies the bytes of an `ArrayBuffer` to a new [`ArrayBuffer`][mdn-arraybuffer].
<!-- eslint-disable stdlib/require-globals -->
```javascript
var b1 = new ArrayBuffer( 10 );
var b2 = b1.slice();
// returns <ArrayBuffer>
var bool = ( b2 === b1 );
// returns false
```
By default, the method copies from the beginning of the [`ArrayBuffer`][mdn-arraybuffer]. To beginning copying from a different byte index, provide a `start` argument, specifying the starting byte index (inclusive).
<!-- eslint-disable stdlib/require-globals -->
```javascript
var b1 = new ArrayBuffer( 10 );
var b2 = b1.slice( 2 );
var nbytes = b2.byteLength;
// returns 8
```
If `start < 0`, the index is relative to the end of the [`ArrayBuffer`][mdn-arraybuffer].
<!-- eslint-disable stdlib/require-globals -->
```javascript
var b1 = new ArrayBuffer( 10 );
var b2 = b1.slice( -2 );
var nbytes = b2.byteLength;
// returns 2
```
By default, the method copies to the end of the [`ArrayBuffer`][mdn-arraybuffer]. To copy until a particular byte index, provide an `end` index, specifying the ending byte index (exclusive).
<!-- eslint-disable stdlib/require-globals -->
```javascript
var b1 = new ArrayBuffer( 10 );
var b2 = b1.slice( 2, 6 );
var nbytes = b2.byteLength;
// returns 4
```
If `end < 0`, the index is relative to the end of the [`ArrayBuffer`][mdn-arraybuffer].
<!-- eslint-disable stdlib/require-globals -->
```javascript
var b1 = new ArrayBuffer( 10 );
var b2 = b1.slice( 2, -2 );
var nbytes = b2.byteLength;
// returns 6
```
</section>
<!-- /.usage -->
* * *
<!-- Package usage notes. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="notes">
</section>
<!-- /.notes -->
<!-- Package usage examples. -->
<section class="examples">
## Examples
<!-- eslint no-undef: "error" -->
```javascript
var randu = require( '@stdlib/random/base/randu' );
var Float64Array = require( '@stdlib/array/float64' );
var Uint8Array = require( '@stdlib/array/uint8' );
var toBinaryString = require( '@stdlib/number/uint8/base/to-binary-string' );
var ArrayBuffer = require( '@stdlib/array/buffer' );
var bytes;
var buf;
var arr;
var i;
// Create a new ArrayBuffer:
buf = new ArrayBuffer( 64 );
// Create a Float64 array buffer view:
arr = new Float64Array( buf.byteLength/8 );
for ( i = 0; i < arr.length; i++ ) {
arr[ i ] = randu() * 100.0;
}
// Create a "bytes" view of the array buffer:
bytes = new Uint8Array( arr.buffer );
// Print the bytes:
for ( i = 0; i < bytes.length; i++ ) {
console.log( 'byte %d: %s', i, toBinaryString( bytes[ i ] ) );
}
```
</section>
<!-- /.examples -->
<!-- Section to include cited references. If references are included, add a horizontal rule *before* the section. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="references">
</section>
<!-- /.references -->
<!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="links">
[mdn-arraybuffer]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer
</section>
<!-- /.links -->

92
js/node_modules/@stdlib/array/buffer/docs/repl.txt generated vendored Normal file
View File

@ -0,0 +1,92 @@
{{alias}}( size )
Returns an array buffer having a specified number of bytes.
Buffer contents are initialized to 0.
Parameters
----------
size: integer
Number of bytes.
Returns
-------
out: ArrayBuffer
An array buffer.
Examples
--------
> var buf = new {{alias}}( 5 )
<ArrayBuffer>
{{alias}}.length
Number of input arguments the constructor accepts.
Examples
--------
> {{alias}}.length
1
{{alias}}.isView( arr )
Returns a boolean indicating if provided an array buffer view.
Parameters
----------
arr: any
Value to test.
Returns
-------
bool: boolean
Boolean indicating if an input argument is a buffer view.
Examples
--------
> var arr = new {{alias:@stdlib/array/float64}}( 10 );
> {{alias}}.isView( arr )
true
{{alias}}.prototype.byteLength
Read-only property which returns the length (in bytes) of the array buffer.
Examples
--------
> var buf = new {{alias}}( 5 );
> buf.byteLength
5
{{alias}}.prototype.slice( [start[, end]] )
Copies the bytes of an array buffer to a new array buffer.
Parameters
----------
start: integer (optional)
Index at which to start copying buffer contents (inclusive). If
negative, the index is relative to the end of the buffer.
end: integer (optional)
Index at which to stop copying buffer contents (exclusive). If negative,
the index is relative to the end of the buffer.
Returns
-------
out: ArrayBuffer
A new array buffer whose contents have been copied from the calling
array buffer.
Examples
--------
> var b1 = new {{alias}}( 10 );
> var b2 = b1.slice( 2, 6 );
> var bool = ( b1 === b2 )
false
> b2.byteLength
4
See Also
--------

View File

@ -0,0 +1,26 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// TypeScript Version: 2.0
// EXPORTS //
/**
* Constructor which returns an object used to represent a generic, fixed-length raw binary data buffer.
*/
export = ArrayBuffer;

View File

@ -0,0 +1,35 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// tslint:disable: no-construct
// tslint:disable: no-unused-expression
import ArrayBuffer = require( './index' );
// TESTS //
// The function returns a data view instance...
{
new ArrayBuffer( 5 ); // $ExpectType ArrayBuffer
}
// The constructor function has to be invoked with `new`...
{
ArrayBuffer( 5 ); // $ExpectError
}

View File

@ -0,0 +1,28 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MAIN //
var ctor = ( typeof ArrayBuffer === 'function' ) ? ArrayBuffer : void 0; // eslint-disable-line stdlib/require-globals
// EXPORTS //
module.exports = ctor;

52
js/node_modules/@stdlib/array/buffer/lib/index.js generated vendored Normal file
View File

@ -0,0 +1,52 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
/**
* Constructor which returns an object used to represent a generic, fixed-length raw binary data buffer.
*
* @module @stdlib/array/buffer
*
* @example
* var ctor = require( '@stdlib/array/buffer' );
*
* var buf = new ctor( 10 );
* // returns <ArrayBuffer>
*/
// MODULES //
var hasArrayBufferSupport = require( '@stdlib/assert/has-arraybuffer-support' );
var builtin = require( './arraybuffer.js' );
var polyfill = require( './polyfill.js' );
// MAIN //
var ctor;
if ( hasArrayBufferSupport() ) {
ctor = builtin;
} else {
ctor = polyfill;
}
// EXPORTS //
module.exports = ctor;

37
js/node_modules/@stdlib/array/buffer/lib/polyfill.js generated vendored Normal file
View File

@ -0,0 +1,37 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// TODO: write polyfill
// MAIN //
/**
* Constructor which returns an object used to represent a generic, fixed-length raw binary data buffer.
*
* @throws {Error} not implemented
*/
function polyfill() {
throw new Error( 'not implemented' );
}
// EXPORTS //
module.exports = polyfill;

66
js/node_modules/@stdlib/array/buffer/package.json generated vendored Normal file
View File

@ -0,0 +1,66 @@
{
"name": "@stdlib/array/buffer",
"version": "0.0.0",
"description": "ArrayBuffer.",
"license": "Apache-2.0",
"author": {
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
},
"contributors": [
{
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
}
],
"main": "./lib",
"directories": {
"benchmark": "./benchmark",
"doc": "./docs",
"example": "./examples",
"lib": "./lib",
"test": "./test"
},
"types": "./docs/types",
"scripts": {},
"homepage": "https://github.com/stdlib-js/stdlib",
"repository": {
"type": "git",
"url": "git://github.com/stdlib-js/stdlib.git"
},
"bugs": {
"url": "https://github.com/stdlib-js/stdlib/issues"
},
"dependencies": {},
"devDependencies": {},
"engines": {
"node": ">=0.10.0",
"npm": ">2.7.0"
},
"os": [
"aix",
"darwin",
"freebsd",
"linux",
"macos",
"openbsd",
"sunos",
"win32",
"windows"
],
"keywords": [
"stdlib",
"stdtypes",
"types",
"data",
"structure",
"array",
"typed",
"typed array",
"typed-array",
"arraybuffer",
"buffer",
"buf",
"binary"
]
}

127
js/node_modules/@stdlib/array/complex128/README.md generated vendored Normal file
View File

@ -0,0 +1,127 @@
<!--
@license Apache-2.0
Copyright (c) 2021 The Stdlib Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
# Complex128Array
> 128-bit complex number array.
<!-- Section to include introductory text. Make sure to keep an empty line after the intro `section` element and another before the `/section` close. -->
<section class="intro">
</section>
<!-- /.intro -->
<!-- Package usage documentation. -->
<section class="usage">
## Usage
```javascript
var Complex128Array = require( '@stdlib/array/complex128' );
```
<a name="constructor"></a>
#### Complex128Array()
Creates a 128-bit complex number array.
```javascript
var arr = new Complex128Array();
// returns <Complex128Array>
```
<!-- /.usage -->
<!-- Package usage notes. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="notes">
<!-- /.notes -->
<!-- Package usage examples. -->
<section class="examples">
* * *
## Examples
<!-- eslint no-undef: "error" -->
```javascript
var Complex128 = require( '@stdlib/complex/float64' );
var Float64Array = require( '@stdlib/array/float64' );
var Complex128Array = require( '@stdlib/array/complex128' );
var arr;
var out;
// Create a complex array by specifying a length:
out = new Complex128Array( 3 );
console.log( out );
// Create a complex array from an array of complex numbers:
arr = [
new Complex128( 1.0, -1.0 ),
new Complex128( -3.14, 3.14 ),
new Complex128( 0.5, 0.5 )
];
out = new Complex128Array( arr );
console.log( out );
// Create a complex array from an interleaved typed array:
arr = new Float64Array( [ 1.0, -1.0, -3.14, 3.14, 0.5, 0.5 ] );
out = new Complex128Array( arr );
console.log( out );
// Create a complex array from an array buffer:
arr = new Float64Array( [ 1.0, -1.0, -3.14, 3.14, 0.5, 0.5 ] );
out = new Complex128Array( arr.buffer );
console.log( out );
// Create a complex array from an array buffer view:
arr = new Float64Array( [ 1.0, -1.0, -3.14, 3.14, 0.5, 0.5 ] );
out = new Complex128Array( arr.buffer, 16, 2 );
console.log( out );
```
</section>
<!-- /.examples -->
<!-- Section to include cited references. If references are included, add a horizontal rule *before* the section. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="references">
</section>
<!-- /.references -->
<!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="links">
</section>
<!-- /.links -->

View File

@ -0,0 +1,538 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// TypeScript Version: 2.0
/// <reference types="@stdlib/types"/>
import { ArrayLike, TypedArray } from '@stdlib/types/array';
import { ComplexLike } from '@stdlib/types/object';
import ArrayBuffer = require( './../../../buffer' );
import Complex128 = require( '@stdlib/complex/float64' );
/**
* Class for creating a 128-bit complex number array.
*/
declare class Complex128Array {
/**
* 128-bit complex number array constructor.
*
* @param arg - length, typed array, array-like object, or buffer
* @param byteOffset - byte offset (default: 0)
* @param length - view length
* @throws ArrayBuffer byte length must be a multiple of `8`
* @throws array-like object and typed array input arguments must have a length which is a multiple of two
* @throws if provided only a single argument, must provide a valid argument
* @throws byte offset must be a nonnegative integer
* @throws byte offset must be a multiple of `8`
* @throws view length must be a positive multiple of `8`
* @throws must provide sufficient memory to accommodate byte offset and view length requirements
* @throws an iterator must return either a two element array containing real and imaginary components or a complex number
* @returns complex number array
*
* @example
* var arr = new Complex128Array();
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 0
*
* @example
* var arr = new Complex128Array( 2 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var arr = new Complex128Array( [ 1.0, -1.0 ] );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new Complex128Array( buf );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new Complex128Array( buf, 8 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = new Complex128Array( buf, 8, 2 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*/
constructor( arg?: number | TypedArray | ArrayLike<number | ComplexLike> | ArrayBuffer | Iterable<number | ComplexLike>, byteOffset?: number, length?: number ); // tslint:disable-line:max-line-length
/**
* Length (in bytes) of the array.
*
* @example
* var arr = new Complex128Array( 10 );
*
* var byteLength = arr.byteLength;
* // returns 160
*/
readonly byteLength: number;
/**
* Offset (in bytes) of the array from the start of its underlying `ArrayBuffer`.
*
* @example
* var arr = new Complex128Array( 10 );
*
* var byteOffset = arr.byteOffset;
* // returns 0
*/
readonly byteOffset: number;
/**
* Size (in bytes) of each array element.
*
* @example
* var arr = new Complex128Array( 10 );
*
* var nbytes = arr.BYTES_PER_ELEMENT;
* // returns 16
*/
readonly BYTES_PER_ELEMENT: number;
/**
* Number of array elements.
*
* @example
* var arr = new Complex128Array( 10 );
*
* var len = arr.length;
* // returns 10
*/
readonly length: number;
/**
* Returns an array element.
*
* @param i - element index
* @throws index argument must be a nonnegative integer
* @returns array element
*
* @example
* var arr = new Complex128Array( 10 );
*
* var z = arr.get( 0 );
* // returns <Complex128>
*
* arr.set( [ 1.0, -1.0 ], 0 );
*
* z = arr.get( 100 );
* // returns undefined
*/
get( i: number ): Complex128 | void;
/**
* Returns an array element.
*
* @param out - output array
* @param i - element index
* @throws index argument must be a nonnegative integer
* @returns array element
*
* @example
* var arr = new Complex128Array( 10 );
*
* var z = arr.get( 0 );
* // returns <Complex128>
*
* arr.set( [ 1.0, -1.0 ], 0 );
*
* z = arr.get( [ 0.0, 0.0 ], 0 );
* // returns [ 1.0, -1.0 ]
*/
get( out: ArrayLike<number>, i: number ): ArrayLike<number> | void;
/**
* Sets an array element.
*
* ## Notes
*
* - When provided a typed array, real or complex, we must check whether the source array shares the same buffer as the target array and whether the underlying memory overlaps. In particular, we are concerned with the following scenario:
*
* ```text
* buf: ---------------------
* src: ---------------------
* ```
*
* In the above, as we copy values from `src`, we will overwrite values in the `src` view, resulting in duplicated values copied into the end of `buf`, which is not intended. Hence, to avoid overwriting source values, we must **copy** source values to a temporary array.
*
* In the other overlapping scenario,
*
* ```text
* buf: ---------------------
* src: ---------------------
* ```
*
* by the time we begin copying into the overlapping region, we are copying from the end of `src`, a non-overlapping region, which means we don't run the risk of copying copied values, rather than the original `src` values as intended.
*
*
* @param value - value(s)
* @param i - element index at which to start writing values (default: 0)
* @throws index argument must be a nonnegative integer
* @throws array-like objects must have a length which is a multiple of two
* @throws index argument is out-of-bounds
* @throws target array lacks sufficient storage to accommodate source values
*
* @example
* var real = require( `@stdlib/complex/real` );
* var imag = require( `@stdlib/complex/imag` );
*
* var arr = new Complex128Array( 10 );
*
* var z = arr.get( 0 );
* // returns <Complex128>
*
* var re = real( z );
* // returns 0.0
*
* var im = imag( z );
* // returns 0.0
*
* arr.set( [ 1.0, -1.0 ], 0 );
*
* z = arr.get( 0 );
* // returns <Complex128>
*
* re = real( z );
* // returns 1.0
*
* im = imag( z );
* // returns -1.0
*/
set( value: ArrayLike<number | ComplexLike> | Complex128Array | ComplexLike, i?: number ): void; // tslint:disable-line:max-line-length
}
/**
* Interface defining a 128-bit complex number array constructor which is both "newable" and "callable".
*/
interface Constructor {
/**
* 128-bit complex number array constructor.
*
* @param arg - length, typed array, array-like object, or buffer
* @param byteOffset - byte offset (default: 0)
* @param length - view length
* @throws ArrayBuffer byte length must be a multiple of `8`
* @throws array-like object and typed array input arguments must have a length which is a multiple of two
* @throws if provided only a single argument, must provide a valid argument
* @throws byte offset must be a nonnegative integer
* @throws byte offset must be a multiple of `8`
* @throws view length must be a positive multiple of `8`
* @throws must provide sufficient memory to accommodate byte offset and view length requirements
* @throws an iterator must return either a two element array containing real and imaginary components or a complex number
* @returns complex number array
*
* @example
* var arr = new Complex128Array();
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 0
*
* @example
* var arr = new Complex128Array( 2 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var arr = new Complex128Array( [ 1.0, -1.0 ] );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new Complex128Array( buf );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new Complex128Array( buf, 8 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = new Complex128Array( buf, 8, 2 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*/
new( arg?: number | TypedArray | ArrayLike<number | ComplexLike> | ArrayBuffer | Iterable<number | ComplexLike>, byteOffset?: number, length?: number ): Complex128Array; // tslint-disable-line max-line-length
/**
* 128-bit complex number array constructor.
*
* @param arg - length, typed array, array-like object, or buffer
* @param byteOffset - byte offset (default: 0)
* @param length - view length
* @throws ArrayBuffer byte length must be a multiple of `8`
* @throws array-like object and typed array input arguments must have a length which is a multiple of two
* @throws if provided only a single argument, must provide a valid argument
* @throws byte offset must be a nonnegative integer
* @throws byte offset must be a multiple of `8`
* @throws view length must be a positive multiple of `8`
* @throws must provide sufficient memory to accommodate byte offset and view length requirements
* @throws an iterator must return either a two element array containing real and imaginary components or a complex number
* @returns complex number array
*
* @example
* var arr = new Complex128Array();
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 0
*
* @example
* var arr = new Complex128Array( 2 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var arr = new Complex128Array( [ 1.0, -1.0 ] );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new Complex128Array( buf );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new Complex128Array( buf, 8 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = new Complex128Array( buf, 8, 2 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*/
( arg?: number | TypedArray | ArrayLike<number | ComplexLike> | ArrayBuffer | Iterable<number | ComplexLike>, byteOffset?: number, length?: number ): Complex128Array; // tslint-disable-line max-line-length
/**
* Constructor name.
*
* @example
* var str = Complex128Array.name;
* // returns 'Complex128Array'
*/
readonly name: string;
/**
* Size (in bytes) of each array element.
*
* @example
* var nbytes = Complex128Array.BYTES_PER_ELEMENT;
* // returns 16
*/
readonly BYTES_PER_ELEMENT: number;
/**
* Creates a new 128-bit complex number array from an array-like object or an iterable.
*
* @param src - array-like object or iterable
* @param clbk - callback to invoke for each source element
* @param thisArg - context
* @throws array-like objects must have a length which is a multiple of two
* @throws an iterator must return either a two element array containing real and imaginary components or a complex number
* @throws when provided an iterator, a callback must return either a two element array containing real and imaginary components or a complex number
* @returns 128-bit complex number array
*
* @example
* var arr = Complex128Array.from( [ 1.0, -1.0 ] );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var Complex128 = require( `@stdlib/complex/float64` );
*
* var arr = Complex128Array.from( [ new Complex128( 1.0, 1.0 ) ] );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var Complex128 = require( `@stdlib/complex/float64` );
* var real = require( `@stdlib/complex/real` );
* var imag = require( `@stdlib/complex/imag` );
*
* function clbk( v ) {
* return new Complex128( real(v)*2.0, imag(v)*2.0 );
* }
*
* var arr = Complex128Array.from( [ new Complex128( 1.0, 1.0 ) ], clbk );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 1
*/
from( src: ArrayLike<number | ComplexLike> | Iterable<number | ComplexLike>, clbk?: Function, thisArg?: any ): Complex128Array; // tslint:disable-line:max-line-length
/**
* Creates a new 128-bit complex number array from a variable number of arguments.
*
* @param element - array elements
* @returns 128-bit complex number array
*
* @example
* var arr = Complex128Array.of( 1.0, 1.0, 1.0, 1.0 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*/
of( ...elements: Array<number> ): Complex128Array;
}
/**
* 128-bit complex number array constructor.
*
* @param arg - length, typed array, array-like object, or buffer
* @param byteOffset - byte offset (default: 0)
* @param length - view length
* @throws ArrayBuffer byte length must be a multiple of `8`
* @throws array-like object and typed array input arguments must have a length which is a multiple of two
* @throws if provided only a single argument, must provide a valid argument
* @throws byte offset must be a nonnegative integer
* @throws byte offset must be a multiple of `8`
* @throws view length must be a positive multiple of `8`
* @throws must provide sufficient memory to accommodate byte offset and view length requirements
* @throws an iterator must return either a two element array containing real and imaginary components or a complex number
* @returns complex number array
*
* @example
* var arr = new Complex128Array();
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 0
*
* @example
* var arr = new Complex128Array( 2 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var arr = new Complex128Array( [ 1.0, -1.0 ] );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new Complex128Array( buf );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new Complex128Array( buf, 8 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = new Complex128Array( buf, 8, 2 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*/
declare var ctor: Constructor;
// EXPORTS //
export = ctor;

View File

@ -0,0 +1,153 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// tslint:disable:no-unused-expression
import Complex128Array = require( './index' );
import Complex128 = require( '@stdlib/complex/float64' );
import ArrayBuffer = require( './../../../buffer' );
import real = require( '@stdlib/complex/real' );
import imag = require( '@stdlib/complex/imag' );
const clbk = ( v: Complex128 ) => {
return new Complex128( real( v ) * 2.0, imag( v ) * 2.0 );
};
// TESTS //
// The function returns a complex number array...
{
new Complex128Array(); // $ExpectType Complex128Array
Complex128Array(); // $ExpectType Complex128Array
new Complex128Array( 2 ); // $ExpectType Complex128Array
Complex128Array( 2 ); // $ExpectType Complex128Array
new Complex128Array( [ 1.0, -1.0 ] ); // $ExpectType Complex128Array
Complex128Array( [ 1.0, -1.0 ] ); // $ExpectType Complex128Array
const buf = new ArrayBuffer( 16 );
new Complex128Array( buf ); // $ExpectType Complex128Array
Complex128Array( buf ); // $ExpectType Complex128Array
new Complex128Array( buf, 8 ); // $ExpectType Complex128Array
Complex128Array( buf, 8 ); // $ExpectType Complex128Array
new Complex128Array( buf, 8, 2 ); // $ExpectType Complex128Array
Complex128Array( buf, 8, 2 ); // $ExpectType Complex128Array
}
// The compiler throws an error if the function is provided a first argument that is not a number, typed array, array-like object, or array buffer...
{
new Complex128Array( true ); // $ExpectError
new Complex128Array( false ); // $ExpectError
new Complex128Array( null ); // $ExpectError
new Complex128Array( 'abc' ); // $ExpectError
new Complex128Array( {} ); // $ExpectError
new Complex128Array( ( x: number ): number => x ); // $ExpectError
Complex128Array( true ); // $ExpectError
Complex128Array( false ); // $ExpectError
Complex128Array( null ); // $ExpectError
Complex128Array( 'abc' ); // $ExpectError
Complex128Array( {} ); // $ExpectError
Complex128Array( ( x: number ): number => x ); // $ExpectError
}
// The compiler throws an error if the function is provided a second argument that is not a number...
{
const buf = new ArrayBuffer( 16 );
new Complex128Array( buf, true ); // $ExpectError
new Complex128Array( buf, false ); // $ExpectError
new Complex128Array( buf, null ); // $ExpectError
new Complex128Array( buf, 'abc' ); // $ExpectError
new Complex128Array( buf, {} ); // $ExpectError
new Complex128Array( buf, ( x: number ): number => x ); // $ExpectError
Complex128Array( buf, true ); // $ExpectError
Complex128Array( buf, false ); // $ExpectError
Complex128Array( buf, null ); // $ExpectError
Complex128Array( buf, 'abc' ); // $ExpectError
Complex128Array( buf, {} ); // $ExpectError
Complex128Array( buf, ( x: number ): number => x ); // $ExpectError
}
// The compiler throws an error if the function is provided a third argument that is not a number...
{
const buf = new ArrayBuffer( 16 );
new Complex128Array( buf, 8, true ); // $ExpectError
new Complex128Array( buf, 8, false ); // $ExpectError
new Complex128Array( buf, 8, null ); // $ExpectError
new Complex128Array( buf, 8, 'abc' ); // $ExpectError
new Complex128Array( buf, 8, {} ); // $ExpectError
new Complex128Array( buf, 8, ( x: number ): number => x ); // $ExpectError
Complex128Array( buf, 8, true ); // $ExpectError
Complex128Array( buf, 8, false ); // $ExpectError
Complex128Array( buf, 8, null ); // $ExpectError
Complex128Array( buf, 8, 'abc' ); // $ExpectError
Complex128Array( buf, 8, {} ); // $ExpectError
Complex128Array( buf, 8, ( x: number ): number => x ); // $ExpectError
}
// The `from` method returns a complex number array...
{
Complex128Array.from( [ 1.0, 1.0 ] ); // $ExpectType Complex128Array
Complex128Array.from( [ 1.0, 1.0 ], ( x: number ): number => x * x ); // $ExpectType Complex128Array
Complex128Array.from( [ new Complex128( 1.0, 1.0 ) ], clbk, {} ); // $ExpectType Complex128Array
}
// The compiler throws an error if the `from` method is provided a first argument which is not array-like or iterable...
{
Complex128Array.from( true ); // $ExpectError
Complex128Array.from( false ); // $ExpectError
Complex128Array.from( 123 ); // $ExpectError
Complex128Array.from( null ); // $ExpectError
Complex128Array.from( {} ); // $ExpectError
Complex128Array.from( true, clbk ); // $ExpectError
Complex128Array.from( false, clbk ); // $ExpectError
Complex128Array.from( 123, clbk ); // $ExpectError
Complex128Array.from( null, clbk ); // $ExpectError
Complex128Array.from( {}, clbk ); // $ExpectError
Complex128Array.from( true, clbk, {} ); // $ExpectError
Complex128Array.from( false, clbk, {} ); // $ExpectError
Complex128Array.from( 123, clbk, {} ); // $ExpectError
Complex128Array.from( null, clbk, {} ); // $ExpectError
Complex128Array.from( {}, clbk, {} ); // $ExpectError
}
// The compiler throws an error if the `from` method is provided a second argument which is not a function with a supported signature...
{
Complex128Array.from( [ 1, 1 ], true ); // $ExpectError
Complex128Array.from( [ 1, 1 ], false ); // $ExpectError
Complex128Array.from( [ 1, 1 ], 123 ); // $ExpectError
Complex128Array.from( [ 1, 1 ], null ); // $ExpectError
Complex128Array.from( [ 1, 1 ], {} ); // $ExpectError
}
// The `of` method returns a complex number array...
{
Complex128Array.of( 1.0, 1.0, 1.0, 1.0 ); // $ExpectType Complex128Array
}
// The compiler throws an error if the `of` method is provided arguments that are not numbers...
{
Complex128Array.of( 'abc', 'def' ); // $ExpectError
Complex128Array.of( true, false ); // $ExpectError
Complex128Array.of( {}, [] ); // $ExpectError
Complex128Array.of( null, null ); // $ExpectError
}

View File

@ -0,0 +1,61 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MODULES //
var isComplexLike = require( '@stdlib/assert/is-complex-like' );
var real = require( '@stdlib/complex/real' );
var imag = require( '@stdlib/complex/imag' );
// MAIN //
/**
* Returns a strided array of real and imaginary components.
*
* @private
* @param {Float64Array} buf - output array
* @param {Array} arr - array containing complex numbers
* @returns {(Float64Array|null)} output array or null
*/
function fromArray( buf, arr ) {
var len;
var v;
var i;
var j;
len = arr.length;
j = 0;
for ( i = 0; i < len; i++ ) {
v = arr[ i ];
if ( !isComplexLike( v ) ) {
return null;
}
buf[ j ] = real( v );
buf[ j+1 ] = imag( v );
j += 2; // stride
}
return buf;
}
// EXPORTS //
module.exports = fromArray;

View File

@ -0,0 +1,64 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MODULES //
var isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );
var isComplexLike = require( '@stdlib/assert/is-complex-like' );
var real = require( '@stdlib/complex/real' );
var imag = require( '@stdlib/complex/imag' );
// MAIN //
/**
* Returns an array of iterated values.
*
* @private
* @param {Object} it - iterator
* @returns {(Array|TypeError)} array or an error
*/
function fromIterator( it ) {
var out;
var v;
out = [];
while ( true ) {
v = it.next();
if ( v.value ) {
if ( isArrayLikeObject( v.value ) ) {
out.push( v.value[0], v.value[1] );
} else if ( isComplexLike( v.value ) ) {
out.push( real( v.value ), imag( v.value ) );
} else {
return new TypeError( 'invalid argument. An iterator must return either a two-element array containing real and imaginary components or a complex number. Value: `'+v.value+'`.' );
}
}
if ( v.done ) {
break;
}
}
return out;
}
// EXPORTS //
module.exports = fromIterator;

View File

@ -0,0 +1,70 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MODULES //
var isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );
var isComplexLike = require( '@stdlib/assert/is-complex-like' );
var real = require( '@stdlib/complex/real' );
var imag = require( '@stdlib/complex/imag' );
// MAIN //
/**
* Returns an array of iterated values.
*
* @private
* @param {Object} it - iterator
* @param {Function} clbk - callback to invoke for each iterated value
* @param {*} thisArg - invocation context
* @returns {(Array|TypeError)} array or an error
*/
function fromIteratorMap( it, clbk, thisArg ) {
var out;
var v;
var i;
out = [];
i = 0;
while ( true ) {
v = it.next();
i += 1;
if ( v.value ) {
v = clbk.call( thisArg, v.value, i );
if ( isArrayLikeObject( v ) ) {
out.push( v[ 0 ], v[ 1 ] );
} else if ( isComplexLike( v ) ) {
out.push( real( v ), imag( v ) );
} else {
return new TypeError( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `'+v+'`.' );
}
}
if ( v.done ) {
break;
}
}
return out;
}
// EXPORTS //
module.exports = fromIteratorMap;

94
js/node_modules/@stdlib/array/complex128/lib/index.js generated vendored Normal file
View File

@ -0,0 +1,94 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
/**
* 128-bit complex number array.
*
* @module @stdlib/array/complex128
*
* @example
* var Complex128Array = require( '@stdlib/array/complex128' );
*
* var arr = new Complex128Array();
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 0
*
* @example
* var Complex128Array = require( '@stdlib/array/complex128' );
*
* var arr = new Complex128Array( 2 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var Complex128Array = require( '@stdlib/array/complex128' );
*
* var arr = new Complex128Array( [ 1.0, -1.0 ] );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
* var Complex128Array = require( '@stdlib/array/complex128' );
*
* var buf = new ArrayBuffer( 32 );
* var arr = new Complex128Array( buf );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
* var Complex128Array = require( '@stdlib/array/complex128' );
*
* var buf = new ArrayBuffer( 32 );
* var arr = new Complex128Array( buf, 16 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
* var Complex128Array = require( '@stdlib/array/complex128' );
*
* var buf = new ArrayBuffer( 64 );
* var arr = new Complex128Array( buf, 16, 2 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*/
// MODULES //
var Complex128Array = require( './main.js' );
// EXPORTS //
module.exports = Complex128Array;

883
js/node_modules/@stdlib/array/complex128/lib/main.js generated vendored Normal file
View File

@ -0,0 +1,883 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* eslint-disable no-restricted-syntax */
'use strict';
// MODULES //
var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;
var isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );
var isCollection = require( '@stdlib/assert/is-collection' );
var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' );
var isObject = require( '@stdlib/assert/is-object' );
var isArray = require( '@stdlib/assert/is-array' );
var isFunction = require( '@stdlib/assert/is-function' );
var isComplexLike = require( '@stdlib/assert/is-complex-like' );
var isEven = require( '@stdlib/math/base/assert/is-even' );
var isInteger = require( '@stdlib/math/base/assert/is-integer' );
var hasIteratorSymbolSupport = require( '@stdlib/assert/has-iterator-symbol-support' );
var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' );
var defineProperty = require( '@stdlib/utils/define-property' );
var Float64Array = require( './../../float64' );
var Complex128 = require( '@stdlib/complex/float64' );
var real = require( '@stdlib/complex/real' );
var imag = require( '@stdlib/complex/imag' );
var fromIterator = require( './from_iterator.js' );
var fromIteratorMap = require( './from_iterator_map.js' );
var fromArray = require( './from_array.js' );
// VARIABLES //
var BYTES_PER_ELEMENT = Float64Array.BYTES_PER_ELEMENT * 2;
var HAS_ITERATOR_SYMBOL = hasIteratorSymbolSupport();
// FUNCTIONS //
/**
* Returns a boolean indicating if a value is a complex typed array.
*
* @private
* @param {*} value - value to test
* @returns {boolean} boolean indicating if a value is a complex typed array
*/
function isComplexArray( value ) {
return (
value instanceof Complex128Array ||
(
typeof value === 'object' &&
value !== null &&
(
value.constructor.name === 'Complex64Array' ||
value.constructor.name === 'Complex128Array'
) &&
typeof value._length === 'number' && // eslint-disable-line no-underscore-dangle
// NOTE: we don't perform a more rigorous test here for a typed array for performance reasons, as robustly checking for a typed array instance could require walking the prototype tree and performing relatively expensive constructor checks...
typeof value._buffer === 'object' // eslint-disable-line no-underscore-dangle
)
);
}
/**
* Returns a boolean indicating if a value is a complex typed array constructor.
*
* @private
* @param {*} value - value to test
* @returns {boolean} boolean indicating if a value is a complex typed array constructor
*/
function isComplexArrayConstructor( value ) {
return (
value === Complex128Array ||
// NOTE: weaker test in order to avoid a circular dependency with Complex64Array...
value.name === 'Complex64Array'
);
}
// MAIN //
/**
* 128-bit complex number array constructor.
*
* @constructor
* @param {(NonNegativeInteger|TypedArray|ArrayLikeObject|ArrayBuffer|Iterable)} [arg] - length, typed array, array-like object, or buffer
* @param {NonNegativeInteger} [byteOffset=0] - byte offset
* @param {NonNegativeInteger} [length] - view length
* @throws {RangeError} ArrayBuffer byte length must be a multiple of `16`
* @throws {RangeError} array-like object and typed array input arguments must have a length which is a multiple of two
* @throws {TypeError} if provided only a single argument, must provide a valid argument
* @throws {TypeError} byte offset must be a nonnegative integer
* @throws {RangeError} byte offset must be a multiple of `16`
* @throws {TypeError} view length must be a positive multiple of `16`
* @throws {RangeError} must provide sufficient memory to accommodate byte offset and view length requirements
* @throws {TypeError} an iterator must return either a two element array containing real and imaginary components or a complex number
* @returns {Complex128Array} complex number array
*
* @example
* var arr = new Complex128Array();
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 0
*
* @example
* var arr = new Complex128Array( 2 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var arr = new Complex128Array( [ 1.0, -1.0 ] );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
*
* var buf = new ArrayBuffer( 32 );
* var arr = new Complex128Array( buf );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
*
* var buf = new ArrayBuffer( 32 );
* var arr = new Complex128Array( buf, 16 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
*
* var buf = new ArrayBuffer( 64 );
* var arr = new Complex128Array( buf, 16, 2 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*/
function Complex128Array() {
var byteOffset;
var nargs;
var buf;
var len;
nargs = arguments.length;
if ( !(this instanceof Complex128Array) ) {
if ( nargs === 0 ) {
return new Complex128Array();
}
if ( nargs === 1 ) {
return new Complex128Array( arguments[0] );
}
if ( nargs === 2 ) {
return new Complex128Array( arguments[0], arguments[1] );
}
return new Complex128Array( arguments[0], arguments[1], arguments[2] );
}
// Create the underlying data buffer...
if ( nargs === 0 ) {
buf = new Float64Array( 0 ); // backward-compatibility
} else if ( nargs === 1 ) {
if ( isNonNegativeInteger( arguments[0] ) ) {
buf = new Float64Array( arguments[0]*2 );
} else if ( isCollection( arguments[0] ) ) {
buf = arguments[ 0 ];
len = buf.length;
// If provided a "generic" array, peak at the first value, and, if the value is a complex number, try to process as an array of complex numbers, falling back to "normal" typed array initialization if we fail and ensuring consistency if the first value had not been a complex number...
if ( len && isArray( buf ) && isComplexLike( buf[0] ) ) {
buf = fromArray( new Float64Array( len*2 ), buf );
if ( buf === null ) {
// We failed and we are now forced to allocate a new array :-(
if ( !isEven( len ) ) {
throw new RangeError( 'invalid argument. Array-like object input arguments must have a length which is a multiple of two. Length: `'+len+'`.' );
}
// We failed, so fall back to directly setting values...
buf = new Float64Array( arguments[0] );
}
} else {
if ( !isEven( len ) ) {
throw new RangeError( 'invalid argument. Array-like object and typed array input arguments must have a length which is a multiple of two. Length: `'+len+'`.' );
}
buf = new Float64Array( buf );
}
} else if ( isArrayBuffer( arguments[0] ) ) {
buf = arguments[ 0 ];
if ( !isInteger( buf.byteLength/BYTES_PER_ELEMENT ) ) {
throw new RangeError( 'invalid argument. ArrayBuffer byte length must be a multiple of '+BYTES_PER_ELEMENT+'. Byte length: `'+buf.byteLength+'`.' );
}
buf = new Float64Array( buf );
} else if ( isObject( arguments[0] ) ) {
buf = arguments[ 0 ];
if ( HAS_ITERATOR_SYMBOL === false ) {
throw new TypeError( 'invalid argument. Environment lacks Symbol.iterator support. Must provide a length, ArrayBuffer, typed array, or array-like object. Value: `'+buf+'`.' );
}
if ( !isFunction( buf[ ITERATOR_SYMBOL ] ) ) {
throw new TypeError( 'invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, or an iterable. Value: `'+buf+'`.' );
}
buf = buf[ ITERATOR_SYMBOL ]();
if ( !isFunction( buf.next ) ) {
throw new TypeError( 'invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, or an iterable.' );
}
buf = fromIterator( buf );
if ( buf instanceof Error ) {
throw buf;
}
buf = new Float64Array( buf );
} else {
throw new TypeError( 'invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, or an iterable. Value: `'+arguments[0]+'`.' );
}
} else {
buf = arguments[ 0 ];
if ( !isArrayBuffer( buf ) ) {
throw new TypeError( 'invalid argument. First argument must be an array buffer. Value: `'+buf+'`.' );
}
byteOffset = arguments[ 1 ];
if ( !isNonNegativeInteger( byteOffset ) ) {
throw new TypeError( 'invalid argument. Byte offset must be a nonnegative integer. Value: `'+byteOffset+'`.' );
}
if ( !isInteger( byteOffset/BYTES_PER_ELEMENT ) ) {
throw new RangeError( 'invalid argument. Byte offset must be a multiple of '+BYTES_PER_ELEMENT+'. Value: `'+byteOffset+'`.' );
}
if ( nargs === 2 ) {
len = buf.byteLength - byteOffset;
if ( !isInteger( len/BYTES_PER_ELEMENT ) ) {
throw new RangeError( 'invalid arguments. ArrayBuffer view byte length must be a multiple of '+BYTES_PER_ELEMENT+'. View byte length: `'+len+'`.' );
}
buf = new Float64Array( buf, byteOffset );
} else {
len = arguments[ 2 ];
if ( !isNonNegativeInteger( len ) ) {
throw new TypeError( 'invalid argument. Length must be a nonnegative integer. Value: `'+len+'`.' );
}
if ( (len*BYTES_PER_ELEMENT) > (buf.byteLength-byteOffset) ) {
throw new RangeError( 'invalid arguments. ArrayBuffer has insufficient capacity. Either decrease the array length or provide a bigger buffer. Minimum capacity: `'+(len*BYTES_PER_ELEMENT)+'`.' );
}
buf = new Float64Array( buf, byteOffset, len*2 );
}
}
defineProperty( this, '_buffer', {
'configurable': false,
'enumerable': false,
'writable': false,
'value': buf
});
defineProperty( this, '_length', {
'configurable': false,
'enumerable': false,
'writable': false,
'value': buf.length / 2
});
return this;
}
/**
* Size (in bytes) of each array element.
*
* @name BYTES_PER_ELEMENT
* @memberof Complex128Array
* @type {PositiveInteger}
* @default 16
*
* @example
* var nbytes = Complex128Array.BYTES_PER_ELEMENT;
* // returns 16
*/
defineProperty( Complex128Array, 'BYTES_PER_ELEMENT', {
'configurable': false,
'enumerable': false,
'writable': false,
'value': BYTES_PER_ELEMENT
});
/**
* Constructor name.
*
* @name name
* @memberof Complex128Array
* @type {string}
* @default 'Complex128Array'
*
* @example
* var name = Complex128Array.name;
* // returns 'Complex128Array'
*/
defineProperty( Complex128Array, 'name', {
'configurable': false,
'enumerable': false,
'writable': false,
'value': 'Complex128Array'
});
/**
* Creates a new 128-bit complex number array from an array-like object or an iterable.
*
* @name from
* @memberof Complex128Array
* @type {Function}
* @param {(ArrayLikeObject|Object)} src - array-like object or iterable
* @param {Function} [clbk] - callback to invoke for each source element
* @param {*} [thisArg] - context
* @throws {TypeError} `this` context must be a constructor
* @throws {TypeError} `this` must be a complex number array
* @throws {TypeError} first argument must be an array-like object or an iterable
* @throws {TypeError} second argument must be a function
* @throws {RangeError} array-like objects must have a length which is a multiple of two
* @throws {TypeError} an iterator must return either a two element array containing real and imaginary components or a complex number
* @throws {TypeError} when provided an iterator, a callback must return either a two element array containing real and imaginary components or a complex number
* @returns {Complex128Array} 128-bit complex number array
*
* @example
* var arr = Complex128Array.from( [ 1.0, -1.0 ] );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var Complex128 = require( '@stdlib/complex/float64' );
*
* var arr = Complex128Array.from( [ new Complex128( 1.0, 1.0 ) ] );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var Complex128 = require( '@stdlib/complex/float64' );
* var real = require( '@stdlib/complex/real' );
* var imag = require( '@stdlib/complex/imag' );
*
* function clbk( v ) {
* return new Complex128( real(v)*2.0, imag(v)*2.0 );
* }
*
* var arr = Complex128Array.from( [ new Complex128( 1.0, 1.0 ) ], clbk );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 1
*/
defineProperty( Complex128Array, 'from', {
'configurable': false,
'enumerable': false,
'writable': false,
'value': function from( src ) {
var thisArg;
var nargs;
var clbk;
var out;
var buf;
var tmp;
var len;
var flg;
var v;
var i;
var j;
if ( !isFunction( this ) ) {
throw new TypeError( 'invalid invocation. `this` context must be a constructor.' );
}
if ( !isComplexArrayConstructor( this ) ) {
throw new TypeError( 'invalid invocation. `this` is not a complex number array.' );
}
nargs = arguments.length;
if ( nargs > 1 ) {
clbk = arguments[ 1 ];
if ( !isFunction( clbk ) ) {
throw new TypeError( 'invalid argument. Second argument must be a function. Value: `'+clbk+'`.' );
}
if ( nargs > 2 ) {
thisArg = arguments[ 2 ];
}
}
if ( isCollection( src ) ) {
if ( clbk ) {
// Note: array contents affect how we iterate over a provided data source. If only complex numbers, we can extract real and imaginary components. Otherwise, we assume a strided array where real and imaginary components are interleaved. In the former case, we expect a callback to return real and imaginary components (possibly as a complex number). In the latter case, we expect a callback to return *either* a real or imaginary component.
// Detect whether we've been provided an array of complex numbers...
len = src.length;
for ( i = 0; i < len; i++ ) {
if ( !isComplexLike( src[ i ] ) ) {
flg = true;
break;
}
}
// If an array does not contain only complex numbers, then we assume interleaved real and imaginary components...
if ( flg ) {
if ( !isEven( len ) ) {
throw new RangeError( 'invalid argument. First argument must have a length which is a multiple of two. Length: `'+len+'`.' );
}
out = new this( len/2 );
buf = out._buffer; // eslint-disable-line no-underscore-dangle
for ( i = 0; i < len; i++ ) {
buf[ i ] = clbk.call( thisArg, src[ i ], i );
}
}
// If an array contains only complex numbers, then we need to extract real and imaginary components...
else {
out = new this( len );
buf = out._buffer; // eslint-disable-line no-underscore-dangle
j = 0;
for ( i = 0; i < len; i++ ) {
v = clbk.call( thisArg, src[ i ], i );
if ( isComplexLike( v ) ) {
buf[ j ] = real( v );
buf[ j+1 ] = imag( v );
} else if ( isArrayLikeObject( v ) ) {
buf[ j ] = v[ 0 ];
buf[ j+1 ] = v[ 1 ];
} else {
throw new TypeError( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `'+v+'`.' );
}
j += 2; // stride
}
}
} else {
out = new this( src );
}
} else if ( isObject( src ) && HAS_ITERATOR_SYMBOL && isFunction( src[ ITERATOR_SYMBOL ] ) ) { // eslint-disable-line max-len
buf = src[ ITERATOR_SYMBOL ]();
if ( !isFunction( buf.next ) ) {
throw new TypeError( 'invalid argument. First argument must be an array-like object or an iterable.' );
}
if ( clbk ) {
tmp = fromIteratorMap( buf, clbk, thisArg );
} else {
tmp = fromIterator( buf );
}
if ( tmp instanceof Error ) {
throw tmp;
}
len = tmp.length / 2;
out = new this( len );
buf = out._buffer; // eslint-disable-line no-underscore-dangle
for ( i = 0; i < len; i++ ) {
buf[ i ] = tmp[ i ];
}
} else {
throw new TypeError( 'invalid argument. First argument must be an array-like object or an iterable. Value: `'+src+'`.' );
}
return out;
}
});
/**
* Creates a new 128-bit complex number array from a variable number of arguments.
*
* @name of
* @memberof Complex128Array
* @type {Function}
* @param {...*} element - array elements
* @throws {TypeError} `this` context must be a constructor
* @throws {TypeError} `this` must be a complex number array
* @returns {Complex128Array} 128-bit complex number array
*
* @example
* var arr = Complex128Array.of( 1.0, 1.0, 1.0, 1.0 );
* // returns <Complex128Array>
*
* var len = arr.length;
* // returns 2
*/
defineProperty( Complex128Array, 'of', {
'configurable': false,
'enumerable': false,
'writable': false,
'value': function of() {
var args;
var i;
if ( !isFunction( this ) ) {
throw new TypeError( 'invalid invocation. `this` context must be a constructor.' );
}
if ( !isComplexArrayConstructor( this ) ) {
throw new TypeError( 'invalid invocation. `this` is not a complex number array.' );
}
args = [];
for ( i = 0; i < arguments.length; i++ ) {
args.push( arguments[ i ] );
}
return new this( args );
}
});
/**
* Pointer to the underlying data buffer.
*
* @name buffer
* @memberof Complex128Array.prototype
* @type {ArrayBuffer}
*
* @example
* var arr = new Complex128Array( 10 );
*
* var buf = arr.buffer;
* // returns <ArrayBuffer>
*/
defineProperty( Complex128Array.prototype, 'buffer', {
'configurable': false,
'enumerable': false,
'get': function get() {
return this._buffer.buffer;
}
});
/**
* Size (in bytes) of the array.
*
* @name byteLength
* @memberof Complex128Array.prototype
* @type {NonNegativeInteger}
*
* @example
* var arr = new Complex128Array( 10 );
*
* var byteLength = arr.byteLength;
* // returns 160
*/
defineProperty( Complex128Array.prototype, 'byteLength', {
'configurable': false,
'enumerable': false,
'get': function get() {
return this._buffer.byteLength;
}
});
/**
* Offset (in bytes) of the array from the start of its underlying `ArrayBuffer`.
*
* @name byteOffset
* @memberof Complex128Array.prototype
* @type {NonNegativeInteger}
*
* @example
* var arr = new Complex128Array( 10 );
*
* var byteOffset = arr.byteOffset;
* // returns 0
*/
defineProperty( Complex128Array.prototype, 'byteOffset', {
'configurable': false,
'enumerable': false,
'get': function get() {
return this._buffer.byteOffset;
}
});
/**
* Size (in bytes) of each array element.
*
* @name BYTES_PER_ELEMENT
* @memberof Complex128Array.prototype
* @type {PositiveInteger}
* @default 16
*
* @example
* var arr = new Complex128Array( 10 );
*
* var nbytes = arr.BYTES_PER_ELEMENT;
* // returns 16
*/
defineProperty( Complex128Array.prototype, 'BYTES_PER_ELEMENT', {
'configurable': false,
'enumerable': false,
'writable': false,
'value': Complex128Array.BYTES_PER_ELEMENT
});
/**
* Returns an array element.
*
* @name get
* @memberof Complex128Array.prototype
* @type {Function}
* @param {ArrayLikeObject} [out] - output array
* @param {NonNegativeInteger} i - element index
* @throws {TypeError} `this` must be a complex number array
* @throws {TypeError} index argument must be a nonnegative integer
* @throws {TypeError} output argument must be an array-like object
* @returns {(Complex128|ArrayLikeObject|void)} array element
*
* @example
* var arr = new Complex128Array( 10 );
*
* var z = arr.get( 0 );
* // returns <Complex128>
*
* arr.set( [ 1.0, -1.0 ], 0 );
*
* z = arr.get( [ 0.0, 0.0 ], 0 );
* // returns [ 1.0, -1.0 ]
*
* z = arr.get( 100 );
* // returns undefined
*/
defineProperty( Complex128Array.prototype, 'get', {
'configurable': false,
'enumerable': false,
'writable': false,
'value': function get( i ) {
var idx;
var out;
var buf;
if ( !isComplexArray( this ) ) {
throw new TypeError( 'invalid invocation. `this` is not a complex number array.' );
}
buf = this._buffer;
if ( arguments.length > 1 ) {
idx = arguments[ 1 ];
out = i;
if ( !isArrayLikeObject( out ) || out.length < 2 ) {
throw new TypeError( 'invalid argument. Output argument must be an array-like object. Value: `'+out+'`.' );
}
} else {
idx = i;
}
if ( !isNonNegativeInteger( idx ) ) {
throw new TypeError( 'invalid argument. Index argument must be a nonnegative integer. Value: `'+idx+'`.' );
}
if ( idx >= this._length ) {
return;
}
idx *= 2;
if ( out ) {
out[ 0 ] = buf[ idx ];
out[ 1 ] = buf[ idx+1 ];
return out;
}
return new Complex128( buf[ idx ], buf[ idx+1 ] );
}
});
/**
* Number of array elements.
*
* @name length
* @memberof Complex128Array.prototype
* @type {NonNegativeInteger}
*
* @example
* var arr = new Complex128Array( 10 );
*
* var len = arr.length;
* // returns 10
*/
defineProperty( Complex128Array.prototype, 'length', {
'configurable': false,
'enumerable': false,
'get': function get() {
return this._length;
}
});
/**
* Sets an array element.
*
* ## Notes
*
* - When provided a typed array, real or complex, we must check whether the source array shares the same buffer as the target array and whether the underlying memory overlaps. In particular, we are concerned with the following scenario:
*
* ```text
* buf: ---------------------
* src: ---------------------
* ```
*
* In the above, as we copy values from `src`, we will overwrite values in the `src` view, resulting in duplicated values copied into the end of `buf`, which is not intended. Hence, to avoid overwriting source values, we must **copy** source values to a temporary array.
*
* In the other overlapping scenario,
*
* ```text
* buf: ---------------------
* src: ---------------------
* ```
*
* by the time we begin copying into the overlapping region, we are copying from the end of `src`, a non-overlapping region, which means we don't run the risk of copying copied values, rather than the original `src` values as intended.
*
*
* @name set
* @memberof Complex128Array.prototype
* @type {Function}
* @param {(Collection|Complex|ComplexArray)} value - value(s)
* @param {NonNegativeInteger} [i=0] - element index at which to start writing values
* @throws {TypeError} `this` must be a complex number array
* @throws {TypeError} first argument must be either a complex number, an array-like object, or a complex number array
* @throws {TypeError} index argument must be a nonnegative integer
* @throws {RangeError} array-like objects must have a length which is a multiple of two
* @throws {RangeError} index argument is out-of-bounds
* @throws {RangeError} target array lacks sufficient storage to accommodate source values
* @returns {void}
*
* @example
* var real = require( '@stdlib/complex/real' );
* var imag = require( '@stdlib/complex/imag' );
*
* var arr = new Complex128Array( 10 );
*
* var z = arr.get( 0 );
* // returns <Complex128>
*
* var re = real( z );
* // returns 0.0
*
* var im = imag( z );
* // returns 0.0
*
* arr.set( [ 1.0, -1.0 ], 0 );
*
* z = arr.get( 0 );
* // returns <Complex128>
*
* re = real( z );
* // returns 1.0
*
* im = imag( z );
* // returns -1.0
*/
defineProperty( Complex128Array.prototype, 'set', {
'configurable': false,
'enumerable': false,
'writable': false,
'value': function set( value ) {
/* eslint-disable no-underscore-dangle */
var dbuf;
var idx;
var buf;
var tmp;
var flg;
var N;
var v;
var i;
var j;
if ( !isComplexArray( this ) ) {
throw new TypeError( 'invalid invocation. `this` is not a complex number array.' );
}
buf = this._buffer;
if ( arguments.length > 1 ) {
idx = arguments[ 1 ];
if ( !isNonNegativeInteger( idx ) ) {
throw new TypeError( 'invalid argument. Index argument must be a nonnegative integer. Value: `'+idx+'`.' );
}
} else {
idx = 0;
}
if ( isComplexLike( value ) ) {
if ( idx >= this._length ) {
throw new RangeError( 'invalid argument. Index argument is out-of-bounds. Value: `'+idx+'`.' );
}
idx *= 2;
buf[ idx ] = real( value );
buf[ idx+1 ] = imag( value );
return;
}
if ( isComplexArray( value ) ) {
N = value._length;
if ( idx+N > this._length ) {
throw new RangeError( 'invalid arguments. Target array lacks sufficient storage to accommodate source values.' );
}
dbuf = value._buffer;
// Check for overlapping memory...
j = buf.byteOffset + (idx*BYTES_PER_ELEMENT);
if (
dbuf.buffer === buf.buffer &&
(
dbuf.byteOffset < j &&
dbuf.byteOffset+dbuf.byteLength > j
)
) {
// We need to copy source values...
tmp = new Float64Array( dbuf.length );
for ( i = 0; i < dbuf.length; i++ ) {
tmp[ i ] = dbuf[ i ];
}
dbuf = tmp;
}
idx *= 2;
j = 0;
for ( i = 0; i < N; i++ ) {
buf[ idx ] = dbuf[ j ];
buf[ idx+1 ] = dbuf[ j+1 ];
idx += 2; // stride
j += 2; // stride
}
return;
}
if ( isCollection( value ) ) {
// Detect whether we've been provided an array of complex numbers...
N = value.length;
for ( i = 0; i < N; i++ ) {
if ( !isComplexLike( value[ i ] ) ) {
flg = true;
break;
}
}
// If an array does not contain only complex numbers, then we assume interleaved real and imaginary components...
if ( flg ) {
if ( !isEven( N ) ) {
throw new RangeError( 'invalid argument. Array-like object arguments must have a length which is a multiple of two. Length: `'+N+'`.' );
}
if ( idx+(N/2) > this._length ) {
throw new RangeError( 'invalid arguments. Target array lacks sufficient storage to accommodate source values.' );
}
dbuf = value;
// Check for overlapping memory...
j = buf.byteOffset + (idx*BYTES_PER_ELEMENT);
if (
dbuf.buffer === buf.buffer &&
(
dbuf.byteOffset < j &&
dbuf.byteOffset+dbuf.byteLength > j
)
) {
// We need to copy source values...
tmp = new Float64Array( N );
for ( i = 0; i < N; i++ ) {
tmp[ i ] = dbuf[ i ];
}
dbuf = tmp;
}
idx *= 2;
N /= 2;
j = 0;
for ( i = 0; i < N; i++ ) {
buf[ idx ] = dbuf[ j ];
buf[ idx+1 ] = dbuf[ j+1 ];
idx += 2; // stride
j += 2; // stride
}
return;
}
// If an array contains only complex numbers, then we need to extract real and imaginary components...
if ( idx+N > this._length ) {
throw new RangeError( 'invalid arguments. Target array lacks sufficient storage to accommodate source values.' );
}
idx *= 2;
for ( i = 0; i < N; i++ ) {
v = value[ i ];
buf[ idx ] = real( v );
buf[ idx+1 ] = imag( v );
idx += 2; // stride
}
return;
}
throw new TypeError( 'invalid argument. First argument must be either a complex number, an array-like object, or a complex number array. Value: `'+value+'`.' );
/* eslint-enable no-underscore-dangle */
}
});
// EXPORTS //
module.exports = Complex128Array;

72
js/node_modules/@stdlib/array/complex128/package.json generated vendored Normal file
View File

@ -0,0 +1,72 @@
{
"name": "@stdlib/array/complex128",
"version": "0.0.0",
"description": "Complex128Array.",
"license": "Apache-2.0",
"author": {
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
},
"contributors": [
{
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
}
],
"main": "./lib",
"directories": {
"doc": "./docs",
"example": "./examples",
"lib": "./lib",
"test": "./test"
},
"types": "./docs/types",
"scripts": {},
"homepage": "https://github.com/stdlib-js/stdlib",
"repository": {
"type": "git",
"url": "git://github.com/stdlib-js/stdlib.git"
},
"bugs": {
"url": "https://github.com/stdlib-js/stdlib/issues"
},
"dependencies": {},
"devDependencies": {},
"engines": {
"node": ">=0.10.0",
"npm": ">2.7.0"
},
"os": [
"aix",
"darwin",
"freebsd",
"linux",
"macos",
"openbsd",
"sunos",
"win32",
"windows"
],
"keywords": [
"stdlib",
"stdtypes",
"types",
"data",
"structure",
"array",
"typed",
"typed array",
"typed-array",
"complex128array",
"complex128",
"complex",
"cmplx",
"real",
"imaginary",
"imag",
"double",
"float64",
"double-precision",
"ieee754"
]
}

902
js/node_modules/@stdlib/array/complex64/README.md generated vendored Normal file
View File

@ -0,0 +1,902 @@
<!--
@license Apache-2.0
Copyright (c) 2018 The Stdlib Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
# Complex64Array
> 64-bit complex number array.
<!-- Section to include introductory text. Make sure to keep an empty line after the intro `section` element and another before the `/section` close. -->
<section class="intro">
</section>
<!-- /.intro -->
<!-- Package usage documentation. -->
<section class="usage">
## Usage
```javascript
var Complex64Array = require( '@stdlib/array/complex64' );
```
<a name="constructor"></a>
#### Complex64Array()
Creates a 64-bit complex number array.
```javascript
var arr = new Complex64Array();
// returns <Complex64Array>
```
#### Complex64Array( length )
Creates a 64-bit complex number array having a specified `length`.
```javascript
var arr = new Complex64Array( 10 );
// returns <Complex64Array>
var len = arr.length;
// returns 10
```
#### Complex64Array( typedarray )
Creates a 64-bit complex number array from a [typed array][@stdlib/array/typed] containing interleaves real and imaginary components.
```javascript
var Float32Array = require( '@stdlib/array/float32' );
var buf = new Float32Array( [ 1.0, -1.0, 2.0, -2.0 ] ); // [ re, im, re, im ]
// returns <Float32Array>[ 1.0, -1.0, 2.0, -2.0 ]
var arr = new Complex64Array( buf );
// returns <Complex64Array>
var len = arr.length;
// returns 2
```
#### Complex64Array( obj )
Creates a 64-bit complex number array from an array-like `object` or iterable.
```javascript
var Complex64 = require( '@stdlib/complex/float32' );
// From an array of interleaved real and imaginary components:
var arr1 = new Complex64Array( [ 1.0, -1.0, 2.0, -2.0 ] );
// returns <Complex64Array>
var len = arr1.length;
// returns 2
// From an array containing complex numbers:
var buf = [ new Complex64( 1.0, -1.0 ), new Complex64( 2.0, -2.0 ) ];
var arr2 = new Complex64Array( buf );
len = arr2.length;
// returns 2
```
#### Complex64Array( buffer\[, byteOffset\[, length]] )
Returns a 64-bit complex number array view of an [`ArrayBuffer`][@stdlib/array/buffer].
```javascript
var ArrayBuffer = require( '@stdlib/array/buffer' );
var buf = new ArrayBuffer( 240 );
var arr1 = new Complex64Array( buf );
// returns <Complex64Array>
var len = arr1.length;
// returns 30
var arr2 = new Complex64Array( buf, 8 );
// returns <Complex64Array>
len = arr2.length;
// returns 29
var arr3 = new Complex64Array( buf, 8, 20 );
// returns <Complex64Array>
len = arr3.length;
// returns 20
```
* * *
### Properties
<a name="static-prop-bytes-per-element"></a>
#### Complex64Array.BYTES_PER_ELEMENT
Static property returning the size (in bytes) of each array element.
```javascript
var nbytes = Complex64Array.BYTES_PER_ELEMENT;
// returns 8
```
<a name="static-prop-name"></a>
#### Complex64Array.name
Static property returning the constructor name.
```javascript
var str = Complex64Array.name;
// returns 'Complex64Array'
```
<a name="prop-buffer"></a>
#### Complex64Array.prototype.buffer
Pointer to the underlying data buffer.
```javascript
var arr = new Complex64Array( 2 );
// returns <Complex64Array>
var buf = arr.buffer;
// returns <ArrayBuffer>
```
<a name="prop-byte-length"></a>
#### Complex64Array.prototype.byteLength
Size (in bytes) of the array.
```javascript
var arr = new Complex64Array( 10 );
// returns <Complex64Array>
var nbytes = arr.byteLength;
// returns 80
```
<a name="prop-byte-offset"></a>
#### Complex64Array.prototype.byteOffset
Offset (in bytes) of the array from the start of its underlying `ArrayBuffer`.
```javascript
var ArrayBuffer = require( '@stdlib/array/buffer' );
var arr = new Complex64Array( 10 );
// returns <Complex64Array>
var offset = arr.byteOffset;
// returns 0
var buf = new ArrayBuffer( 240 );
arr = new Complex64Array( buf, 64 );
// returns <Complex64Array>
offset = arr.byteOffset;
// returns 64
```
<a name="prop-bytes-per-element"></a>
#### Complex64Array.prototype.BYTES_PER_ELEMENT
Size (in bytes) of each array element.
```javascript
var arr = new Complex64Array( 10 );
// returns <Complex64Array>
var nbytes = arr.BYTES_PER_ELEMENT;
// returns 8
```
<a name="prop-length"></a>
#### Complex64Array.prototype.length
Number of array elements.
```javascript
var arr = new Complex64Array( 10 );
// returns <Complex64Array>
var len = arr.length;
// returns 10
```
* * *
### Methods
<a name="static-method-from"></a>
#### Complex64Array.from( src\[, clbk\[, thisArg]] )
Creates a new 64-bit complex number array from an array-like `object` or an iterable.
```javascript
var Complex64 = require( '@stdlib/complex/float32' );
// Create an array from interleaved real and imaginary components:
var arr = Complex64Array.from( [ 1.0, -1.0 ] );
// returns <Complex64Array>
var len = arr.length;
// returns 1
// Create an array from an array of complex numbers:
arr = Complex64Array.from( [ new Complex64( 1.0, -1.0 ) ] );
// returns <Complex64Array>
len = arr.length;
// returns 1
```
The iterator returned by an iterable must return either a complex number or an array-like `object` containing a real and imaginary component.
```javascript
var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' );
var Float32Array = require( '@stdlib/array/float32' );
var real = require( '@stdlib/complex/real' );
var imag = require( '@stdlib/complex/imag' );
var iter;
var arr;
var len;
var re;
var im;
var z;
// Define a function which returns an iterator protocol-compliant object...
function iterable() {
var buf = new Float32Array( 2 );
var i = 0;
return {
'next': next
};
function next() {
i += 1;
if ( i < 3 ) {
// Reuse allocated memory...
buf[ 0 ] = i;
buf[ 1 ] = -i;
return {
'value': buf
};
}
return {
'done': true
};
}
}
if ( ITERATOR_SYMBOL === null ) {
console.error( 'Environment does not support iterables.' );
} else {
// Create an iterable:
iter = {};
iter[ ITERATOR_SYMBOL ] = iterable;
// Generate a complex number array:
arr = Complex64Array.from( iter );
// returns <Complex64Array>
len = arr.length;
// returns 2
z = arr.get( 0 );
// returns <Complex64>
re = real( z );
// returns 1.0
im = imag( z );
// returns -1.0
}
```
To invoke a function for each `src` value, provide a callback function. If `src` is an iterable or an array-like `object` containing complex numbers, the callback must return either a complex number
```javascript
var Complex64 = require( '@stdlib/complex/float32' );
var real = require( '@stdlib/complex/real' );
var imag = require( '@stdlib/complex/imag' );
function map( z ) {
return new Complex64( real(z)*2.0, imag(z)*2.0 );
}
// Create a source array:
var src = [ new Complex64( 1.0, -1.0 ) ];
// Create a new complex number array by scaling the source array:
var arr = Complex64Array.from( src, map );
// returns <Complex64Array>
var len = arr.length;
// returns 1
var z = arr.get( 0 );
// returns <Complex64>
var re = real( z );
// returns 2.0
var im = imag( z );
// returns -2.0
```
or an array-like `object` containing real and imaginary components
```javascript
var Float32Array = require( '@stdlib/array/float32' );
var Complex64 = require( '@stdlib/complex/float32' );
var real = require( '@stdlib/complex/real' );
var imag = require( '@stdlib/complex/imag' );
// Return a callback which reuses allocated memory...
function mapFcn() {
var buf = new Float32Array( 2 );
return map;
function map( z ) {
buf[ 0 ] = real( z ) * 2.0;
buf[ 1 ] = imag( z ) * 2.0;
return buf;
}
}
// Create a source array:
var src = [ new Complex64( 1.0, -1.0 ), new Complex64( 2.0, -2.0 ) ];
// Create a new complex number array by scaling the source array:
var arr = Complex64Array.from( src, mapFcn() );
// returns <Complex64Array>
var len = arr.length;
// returns 2
var z = arr.get( 0 );
// returns <Complex64>
var re = real( z );
// returns 2.0
var im = imag( z );
// returns -2.0
z = arr.get( 1 );
// returns <Complex64>
re = real( z );
// returns 4.0
im = imag( z );
// returns -4.0
```
If `src` is an array-like `object` containing interleaved real and imaginary components, the callback is invoked for each component and should return the transformed component value.
```javascript
var Float32Array = require( '@stdlib/array/float32' );
var Complex64 = require( '@stdlib/complex/float32' );
var real = require( '@stdlib/complex/real' );
var imag = require( '@stdlib/complex/imag' );
function map( v ) {
return v * 2.0;
}
// Create a source array:
var src = new Float32Array( [ 1.0, -1.0 ] );
// Create a new complex number array by scaling the source array:
var arr = Complex64Array.from( src, map );
// returns <Complex64Array>
var len = arr.length;
// returns 1
var z = arr.get( 0 );
// returns <Complex64>
var re = real( z );
// returns 2.0
var im = imag( z );
// returns -2.0
```
A callback function is provided two arguments:
- `value`: source value
- `index`: source index
To set the callback execution context, provide a `thisArg`.
```javascript
var Complex64 = require( '@stdlib/complex/float32' );
var real = require( '@stdlib/complex/real' );
var imag = require( '@stdlib/complex/imag' );
function map( z ) {
this.count += 1;
return new Complex64( real(z)*2.0, imag(z)*2.0 );
}
// Create a source array:
var src = [ new Complex64( 1.0, -1.0 ), new Complex64( 1.0, -1.0 ) ];
// Define an execution context:
var ctx = {
'count': 0
};
// Create a new complex number array by scaling the source array:
var arr = Complex64Array.from( src, map, ctx );
// returns <Complex64Array>
var len = arr.length;
// returns 2
var n = ctx.count;
// returns 2
```
<a name="static-method-of"></a>
#### Complex64Array.of( element0\[, element1\[, ...elementN]] )
Creates a new 64-bit complex number array from a variable number of arguments.
```javascript
var Complex64 = require( '@stdlib/complex/float32' );
var arr = Complex64Array.of( 1.0, -1.0, 2.0, -2.0 );
// returns <Complex64Array>
var len = arr.length;
// returns 2
var z1 = new Complex64( 1.0, -1.0 );
var z2 = new Complex64( 2.0, -2.0 );
arr = Complex64Array.of( z1, z2 );
// returns <Complex64Array>
len = arr.length;
// returns 2
```
<a name="method-copy-within"></a>
#### Complex64Array.prototype.copyWithin( target, start\[, end] )
Copies a sequence of elements within the array starting at `start` and ending at `end` (non-inclusive) to the position starting at `target`.
```javascript
var Complex64 = require( '@stdlib/complex/float32' );
var arr = new Complex64Array( 4 );
// Set the array elements:
arr.set( new Complex64( 1.0, -1.0 ), 0 );
arr.set( new Complex64( 2.0, -2.0 ), 1 );
arr.set( new Complex64( 3.0, -3.0 ), 2 );
arr.set( new Complex64( 4.0, -4.0 ), 3 );
// Get the first array element:
var z = arr.get( [ 0.0, 0.0 ], 0 );
// returns [ 1.0, -1.0 ]
// Get the second array element:
z = arr.get( [ 0.0, 0.0 ], 1 );
// returns [ 2.0, -2.0 ]
// Copy the last two elements to the first two elements:
arr.copyWithin( 0, 2 );
// Get the first array element:
z = arr.get( [ 0.0, 0.0 ], 0 );
// returns [ 3.0, -3.0 ]
// Get the second array element:
z = arr.get( [ 0.0, 0.0 ], 1 );
// returns [ 4.0, -4.0 ]
```
By default, `end` equals the number of array elements (i.e., one more than the last array index). To limit the sequence length, provide an `end` argument.
```javascript
var Complex64 = require( '@stdlib/complex/float32' );
var arr = new Complex64Array( 4 );
// Set the array elements:
arr.set( new Complex64( 1.0, -1.0 ), 0 );
arr.set( new Complex64( 2.0, -2.0 ), 1 );
arr.set( new Complex64( 3.0, -3.0 ), 2 );
arr.set( new Complex64( 4.0, -4.0 ), 3 );
// Get the third array element:
var z = arr.get( [ 0.0, 0.0 ], 2 );
// returns [ 3.0, -3.0 ]
// Get the last array element:
z = arr.get( [ 0.0, 0.0 ], 3 );
// returns [ 4.0, -4.0 ]
// Copy the first two elements to the last two elements:
arr.copyWithin( 2, 0, 2 );
// Get the third array element:
z = arr.get( [ 0.0, 0.0 ], 2 );
// returns [ 1.0, -1.0 ]
// Get the last array element:
z = arr.get( [ 0.0, 0.0 ], 3 );
// returns [ 2.0, -2.0 ]
```
When a `target`, `start`, and/or `end` index is negative, the respective index is determined relative to the last array element. The following example achieves the same behavior as the previous example:
```javascript
var Complex64 = require( '@stdlib/complex/float32' );
var arr = new Complex64Array( 4 );
// Set the array elements:
arr.set( new Complex64( 1.0, -1.0 ), 0 );
arr.set( new Complex64( 2.0, -2.0 ), 1 );
arr.set( new Complex64( 3.0, -3.0 ), 2 );
arr.set( new Complex64( 4.0, -4.0 ), 3 );
// Get the third array element:
var z = arr.get( [ 0.0, 0.0 ], 2 );
// returns [ 3.0, -3.0 ]
// Get the last array element:
z = arr.get( [ 0.0, 0.0 ], 3 );
// returns [ 4.0, -4.0 ]
// Copy the first two elements to the last two elements using negative indices:
arr.copyWithin( -2, -4, -2 );
// Get the third array element:
z = arr.get( [ 0.0, 0.0 ], 2 );
// returns [ 1.0, -1.0 ]
// Get the last array element:
z = arr.get( [ 0.0, 0.0 ], 3 );
// returns [ 2.0, -2.0 ]
```
<a name="method-entries"></a>
#### Complex64Array.prototype.entries()
Returns an iterator for iterating over array key-value pairs.
```javascript
var Complex64 = require( '@stdlib/complex/float32' );
var real = require( '@stdlib/complex/real' );
var imag = require( '@stdlib/complex/imag' );
var arr = [
new Complex64( 1.0, -1.0 ),
new Complex64( 2.0, -2.0 ),
new Complex64( 3.0, -3.0 )
];
arr = new Complex64Array( arr );
// Create an iterator:
var it = arr.entries();
// Iterate over the key-value pairs...
var v = it.next().value;
// returns [ 0, <Complex64> ]
var re = real( v[ 1 ] );
// returns 1.0
var im = imag( v[ 1 ] );
// returns -1.0
v = it.next().value;
// returns [ 1, <Complex64> ]
re = real( v[ 1 ] );
// returns 2.0
im = imag( v[ 1 ] );
// returns -2.0
v = it.next().value;
// returns [ 2, <Complex64> ]
re = real( v[ 1 ] );
// returns 3.0
im = imag( v[ 1 ] );
// returns -3.0
var bool = it.next().done;
// returns true
```
<a name="method-get"></a>
#### Complex64Array.prototype.get( \[out,] i )
Returns an array element located at position (index) `i`.
```javascript
var real = require( '@stdlib/complex/real' );
var imag = require( '@stdlib/complex/imag' );
var arr = new Complex64Array( 10 );
// Set the first element:
arr.set( [ 1.0, -1.0 ], 0 );
// Get the first element:
var z = arr.get( 0 );
// returns <Complex64>
var re = real( z );
// returns 1.0
var im = imag( z );
// returns -1.0
```
By default, the method returns a [64-bit complex number][@stdlib/complex/float32]. To return real and imaginary components separately, provide an array-like `object` as the first argument.
```javascript
var arr = new Complex64Array( 10 );
// Set the first element:
arr.set( [ 1.0, -1.0 ], 0 );
// Define an output array:
var out = [ 0.0, 0.0 ];
// Get the first element:
var z = arr.get( out, 0 );
// returns [ 1.0, -1.0 ]
var bool = ( out === z );
// returns true
```
If provided an out-of-bounds index, the method returns `undefined`.
```javascript
var arr = new Complex64Array( 10 );
var z = arr.get( 100 );
// returns undefined
var out = [ 0.0, 0.0 ];
z = arr.get( out, 100 );
// returns undefined
var bool = ( out === z );
// returns false
```
<a name="method-set"></a>
#### Complex64Array.prototype.set( z\[, i] )
Sets one or more array elements.
```javascript
var Complex64 = require( '@stdlib/complex/float32' );
var arr = new Complex64Array( 10 );
// Get the first element:
var z = arr.get( [ 0.0, 0.0 ], 0 );
// returns [ 0.0, 0.0 ]
// Set the first element:
arr.set( new Complex64( 1.0, -1.0 ) );
// Get the first element:
z = arr.get( [ 0.0, 0.0 ], 0 );
// returns [ 1.0, -1.0 ]
```
By default, the method sets array elements starting at position (index) `i = 0`. To set elements starting elsewhere in the array, provide an index argument `i`.
```javascript
var Complex64 = require( '@stdlib/complex/float32' );
var arr = new Complex64Array( 10 );
// Get the fifth element:
var z = arr.get( [ 0.0, 0.0 ], 4 );
// returns [ 0.0, 0.0 ]
// Set the fifth element:
arr.set( new Complex64( 1.0, -1.0 ), 4 );
// Get the fifth element:
z = arr.get( [ 0.0, 0.0 ], 4 );
// returns [ 1.0, -1.0 ]
```
In addition to providing a complex number, to set one or more array elements, provide an array-like `object` containing either complex numbers
```javascript
var Complex64 = require( '@stdlib/complex/float32' );
var arr = new Complex64Array( 10 );
// Define an array of complex numbers:
var buf = [
new Complex64( 1.0, -1.0 ),
new Complex64( 2.0, -2.0 ),
new Complex64( 3.0, -3.0 )
];
// Set the fifth, sixth, and seventh elements:
arr.set( buf, 4 );
// Get the sixth element:
var z = arr.get( [ 0.0, 0.0 ], 5 );
// returns [ 2.0, -2.0 ]
```
or interleaved real and imaginary components
```javascript
var Float32Array = require( '@stdlib/array/float32' );
var arr = new Complex64Array( 10 );
// Define an interleaved array of real and imaginary components:
var buf = new Float32Array( [ 1.0, -1.0, 2.0, -2.0, 3.0, -3.0 ] );
// Set the fifth, sixth, and seventh elements:
arr.set( buf, 4 );
// Get the sixth element:
var z = arr.get( [ 0.0, 0.0 ], 5 );
// returns [ 2.0, -2.0 ]
```
A few notes:
- If `i` is out-of-bounds, the method throws an error.
- If a target array cannot accommodate all values (i.e., the length of source array plus `i` exceeds the target array length), the method throws an error.
- If provided a [typed array][@stdlib/array/typed] which shares an [`ArrayBuffer`][@stdlib/array/buffer] with the target array, the method will intelligently copy the source range to the destination range.
</section>
<!-- /.usage -->
<!-- Package usage notes. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="notes">
* * *
## Notes
- While a `Complex64Array` _strives_ to maintain (but does not **guarantee**) consistency with [typed arrays][@stdlib/array/typed], significant deviations from ECMAScript-defined [typed array][@stdlib/array/typed] behavior are as follows:
- The constructor does **not** require the `new` operator.
- The constructor and associated methods support a broader variety of input argument types in order to better accommodate complex number input.
- Accessing array elements using bracket syntax (e.g., `Z[i]`) is **not** supported. Instead, one **must** use the `.get()` method which returns a value compatible with complex number output.
- The `set` method has extended behavior in order to support complex numbers.
</section>
<!-- /.notes -->
<!-- Package usage examples. -->
<section class="examples">
* * *
## Examples
<!-- eslint no-undef: "error" -->
```javascript
var Complex64 = require( '@stdlib/complex/float32' );
var Float32Array = require( '@stdlib/array/float32' );
var Complex64Array = require( '@stdlib/array/complex64' );
var arr;
var out;
// Create a complex array by specifying a length:
out = new Complex64Array( 3 );
console.log( out );
// Create a complex array from an array of complex numbers:
arr = [
new Complex64( 1.0, -1.0 ),
new Complex64( -3.14, 3.14 ),
new Complex64( 0.5, 0.5 )
];
out = new Complex64Array( arr );
console.log( out );
// Create a complex array from an interleaved typed array:
arr = new Float32Array( [ 1.0, -1.0, -3.14, 3.14, 0.5, 0.5 ] );
out = new Complex64Array( arr );
console.log( out );
// Create a complex array from an array buffer:
arr = new Float32Array( [ 1.0, -1.0, -3.14, 3.14, 0.5, 0.5 ] );
out = new Complex64Array( arr.buffer );
console.log( out );
// Create a complex array from an array buffer view:
arr = new Float32Array( [ 1.0, -1.0, -3.14, 3.14, 0.5, 0.5 ] );
out = new Complex64Array( arr.buffer, 8, 2 );
console.log( out );
```
</section>
<!-- /.examples -->
<!-- Section to include cited references. If references are included, add a horizontal rule *before* the section. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="references">
</section>
<!-- /.references -->
<!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="links">
[@stdlib/array/typed]: https://www.npmjs.com/package/@stdlib/array/tree/main/typed
[@stdlib/array/buffer]: https://www.npmjs.com/package/@stdlib/array/tree/main/buffer
[@stdlib/complex/float32]: https://www.npmjs.com/package/@stdlib/complex-float32
</section>
<!-- /.links -->

View File

@ -0,0 +1,610 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// TypeScript Version: 2.0
/// <reference types="@stdlib/types"/>
import { Iterator as Iter, IterableIterator } from '@stdlib/types/iter';
import { ArrayLike, TypedArray } from '@stdlib/types/array';
import { ComplexLike } from '@stdlib/types/object';
import ArrayBuffer = require( './../../../buffer' );
import Complex64 = require( '@stdlib/complex/float32' );
// Define a union type representing both iterable and non-iterable iterators:
type Iterator = Iter | IterableIterator;
/**
* Class for creating a 64-bit complex number array.
*/
declare class Complex64Array {
/**
* 64-bit complex number array constructor.
*
* @param arg - length, typed array, array-like object, or buffer
* @param byteOffset - byte offset (default: 0)
* @param length - view length
* @throws ArrayBuffer byte length must be a multiple of `8`
* @throws array-like object and typed array input arguments must have a length which is a multiple of two
* @throws if provided only a single argument, must provide a valid argument
* @throws byte offset must be a nonnegative integer
* @throws byte offset must be a multiple of `8`
* @throws view length must be a positive multiple of `8`
* @throws must provide sufficient memory to accommodate byte offset and view length requirements
* @throws an iterator must return either a two element array containing real and imaginary components or a complex number
* @returns complex number array
*
* @example
* var arr = new Complex64Array();
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 0
*
* @example
* var arr = new Complex64Array( 2 );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var arr = new Complex64Array( [ 1.0, -1.0 ] );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new Complex64Array( buf );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new Complex64Array( buf, 8 );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = new Complex64Array( buf, 8, 2 );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 2
*/
constructor( arg?: number | TypedArray | ArrayLike<number | ComplexLike> | ArrayBuffer | Iterable<number | ComplexLike>, byteOffset?: number, length?: number ); // tslint:disable-line:max-line-length
/**
* Length (in bytes) of the array.
*
* @example
* var arr = new Complex64Array( 10 );
*
* var byteLength = arr.byteLength;
* // returns 80
*/
readonly byteLength: number;
/**
* Offset (in bytes) of the array from the start of its underlying `ArrayBuffer`.
*
* @example
* var arr = new Complex64Array( 10 );
*
* var byteOffset = arr.byteOffset;
* // returns 0
*/
readonly byteOffset: number;
/**
* Size (in bytes) of each array element.
*
* @example
* var arr = new Complex64Array( 10 );
*
* var nbytes = arr.BYTES_PER_ELEMENT;
* // returns 8
*/
readonly BYTES_PER_ELEMENT: number;
/**
* Number of array elements.
*
* @example
* var arr = new Complex64Array( 10 );
*
* var len = arr.length;
* // returns 10
*/
readonly length: number;
/**
* Copies a sequence of elements within the array to the position starting at `target`.
*
* @param target - index at which to start copying elements
* @param start - source index at which to copy elements from
* @param end - source index at which to stop copying elements from
* @returns modified array
*
* @example
* var Complex64 = require( `@stdlib/complex/float32` );
* var real = require( `@stdlib/complex/real` );
* var imag = require( `@stdlib/complex/imag` );
*
* var arr = new Complex64Array( 4 );
*
* // Set the array elements:
* arr.set( new Complex64( 1.0, 1.0 ), 0 );
* arr.set( new Complex64( 2.0, 2.0 ), 1 );
* arr.set( new Complex64( 3.0, 3.0 ), 2 );
* arr.set( new Complex64( 4.0, 4.0 ), 3 );
*
* // Copy the first two elements to the last two elements:
* arr.copyWithin( 2, 0, 2 );
*
* // Get the last array element:
* var z = arr.get( 3 );
*
* var re = real( z );
* // returns 2.0
*
* var im = imag( z );
* // returns 2.0
*/
copyWithin( target: number, start: number, end?: number ): Complex64Array;
/**
* Returns an iterator for iterating over array key-value pairs.
*
* @returns iterator
*
* @example
* var Complex64 = require( `@stdlib/complex/float32` );
*
* var arr = [
* new Complex64( 1.0, 1.0 ),
* new Complex64( 2.0, 2.0 ),
* new Complex64( 3.0, 3.0 )
* ];
* arr = new Complex64Array( arr );
*
* // Create an iterator:
* var it = arr.entries();
*
* // Iterate over the key-value pairs...
* var v = it.next().value;
* // returns [ 0, <Complex64> ]
*
* v = it.next().value;
* // returns [ 1, <Complex64> ]
*
* v = it.next().value;
* // returns [ 2, <Complex64> ]
*
* var bool = it.next().done;
* // returns true
*/
entries(): Iterator;
/**
* Returns an array element.
*
* @param i - element index
* @throws index argument must be a nonnegative integer
* @returns array element
*
* @example
* var arr = new Complex64Array( 10 );
*
* var z = arr.get( 0 );
* // returns <Complex64>
*
* arr.set( [ 1.0, -1.0 ], 0 );
*
* z = arr.get( 100 );
* // returns undefined
*/
get( i: number ): Complex64 | void;
/**
* Returns an array element.
*
* @param out - output array
* @param i - element index
* @throws index argument must be a nonnegative integer
* @returns array element
*
* @example
* var arr = new Complex64Array( 10 );
*
* var z = arr.get( 0 );
* // returns <Complex64>
*
* arr.set( [ 1.0, -1.0 ], 0 );
*
* z = arr.get( [ 0.0, 0.0 ], 0 );
* // returns [ 1.0, -1.0 ]
*/
get( out: ArrayLike<number>, i: number ): ArrayLike<number> | void;
/**
* Sets an array element.
*
* ## Notes
*
* - When provided a typed array, real or complex, we must check whether the source array shares the same buffer as the target array and whether the underlying memory overlaps. In particular, we are concerned with the following scenario:
*
* ```text
* buf: ---------------------
* src: ---------------------
* ```
*
* In the above, as we copy values from `src`, we will overwrite values in the `src` view, resulting in duplicated values copied into the end of `buf`, which is not intended. Hence, to avoid overwriting source values, we must **copy** source values to a temporary array.
*
* In the other overlapping scenario,
*
* ```text
* buf: ---------------------
* src: ---------------------
* ```
*
* by the time we begin copying into the overlapping region, we are copying from the end of `src`, a non-overlapping region, which means we don't run the risk of copying copied values, rather than the original `src` values as intended.
*
*
* @param value - value(s)
* @param i - element index at which to start writing values (default: 0)
* @throws index argument must be a nonnegative integer
* @throws array-like objects must have a length which is a multiple of two
* @throws index argument is out-of-bounds
* @throws target array lacks sufficient storage to accommodate source values
*
* @example
* var real = require( `@stdlib/complex/real` );
* var imag = require( `@stdlib/complex/imag` );
*
* var arr = new Complex64Array( 10 );
*
* var z = arr.get( 0 );
* // returns <Complex64>
*
* var re = real( z );
* // returns 0.0
*
* var im = imag( z );
* // returns 0.0
*
* arr.set( [ 1.0, -1.0 ], 0 );
*
* z = arr.get( 0 );
* // returns <Complex64>
*
* re = real( z );
* // returns 1.0
*
* im = imag( z );
* // returns -1.0
*/
set( value: ArrayLike<number | ComplexLike> | Complex64Array | ComplexLike, i?: number ): void; // tslint:disable-line:max-line-length
}
/**
* Interface defining a 64-bit complex number array constructor which is both "newable" and "callable".
*/
interface Constructor {
/**
* 64-bit complex number array constructor.
*
* @param arg - length, typed array, array-like object, or buffer
* @param byteOffset - byte offset (default: 0)
* @param length - view length
* @throws ArrayBuffer byte length must be a multiple of `8`
* @throws array-like object and typed array input arguments must have a length which is a multiple of two
* @throws if provided only a single argument, must provide a valid argument
* @throws byte offset must be a nonnegative integer
* @throws byte offset must be a multiple of `8`
* @throws view length must be a positive multiple of `8`
* @throws must provide sufficient memory to accommodate byte offset and view length requirements
* @throws an iterator must return either a two element array containing real and imaginary components or a complex number
* @returns complex number array
*
* @example
* var arr = new Complex64Array();
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 0
*
* @example
* var arr = new Complex64Array( 2 );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var arr = new Complex64Array( [ 1.0, -1.0 ] );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new Complex64Array( buf );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new Complex64Array( buf, 8 );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = new Complex64Array( buf, 8, 2 );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 2
*/
new( arg?: number | TypedArray | ArrayLike<number | ComplexLike> | ArrayBuffer | Iterable<number | ComplexLike>, byteOffset?: number, length?: number ): Complex64Array; // tslint-disable-line max-line-length
/**
* 64-bit complex number array constructor.
*
* @param arg - length, typed array, array-like object, or buffer
* @param byteOffset - byte offset (default: 0)
* @param length - view length
* @throws ArrayBuffer byte length must be a multiple of `8`
* @throws array-like object and typed array input arguments must have a length which is a multiple of two
* @throws if provided only a single argument, must provide a valid argument
* @throws byte offset must be a nonnegative integer
* @throws byte offset must be a multiple of `8`
* @throws view length must be a positive multiple of `8`
* @throws must provide sufficient memory to accommodate byte offset and view length requirements
* @throws an iterator must return either a two element array containing real and imaginary components or a complex number
* @returns complex number array
*
* @example
* var arr = new Complex64Array();
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 0
*
* @example
* var arr = new Complex64Array( 2 );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var arr = new Complex64Array( [ 1.0, -1.0 ] );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new Complex64Array( buf );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new Complex64Array( buf, 8 );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = new Complex64Array( buf, 8, 2 );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 2
*/
( arg?: number | TypedArray | ArrayLike<number | ComplexLike> | ArrayBuffer | Iterable<number | ComplexLike>, byteOffset?: number, length?: number ): Complex64Array; // tslint-disable-line max-line-length
/**
* Constructor name.
*
* @example
* var str = Complex64Array.name;
* // returns 'Complex64Array'
*/
readonly name: string;
/**
* Size (in bytes) of each array element.
*
* @example
* var nbytes = Complex64Array.BYTES_PER_ELEMENT;
* // returns 8
*/
readonly BYTES_PER_ELEMENT: number;
/**
* Creates a new 64-bit complex number array from an array-like object or an iterable.
*
* @param src - array-like object or iterable
* @param clbk - callback to invoke for each source element
* @param thisArg - context
* @throws array-like objects must have a length which is a multiple of two
* @throws an iterator must return either a two element array containing real and imaginary components or a complex number
* @throws when provided an iterator, a callback must return either a two element array containing real and imaginary components or a complex number
* @returns 64-bit complex number array
*
* @example
* var arr = Complex64Array.from( [ 1.0, -1.0 ] );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var Complex64 = require( `@stdlib/complex/float32` );
*
* var arr = Complex64Array.from( [ new Complex64( 1.0, 1.0 ) ] );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var Complex64 = require( `@stdlib/complex/float32` );
* var real = require( `@stdlib/complex/real` );
* var imag = require( `@stdlib/complex/imag` );
*
* function clbk( v ) {
* return new Complex64( real(v)*2.0, imag(v)*2.0 );
* }
*
* var arr = Complex64Array.from( [ new Complex64( 1.0, 1.0 ) ], clbk );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 1
*/
from( src: ArrayLike<number | ComplexLike> | Iterable<number | ComplexLike>, clbk?: Function, thisArg?: any ): Complex64Array; // tslint:disable-line:max-line-length
/**
* Creates a new 64-bit complex number array from a variable number of arguments.
*
* @param element - array elements
* @returns 64-bit complex number array
*
* @example
* var arr = Complex64Array.of( 1.0, 1.0, 1.0, 1.0 );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 2
*/
of( ...elements: Array<number> ): Complex64Array;
}
/**
* 64-bit complex number array constructor.
*
* @param arg - length, typed array, array-like object, or buffer
* @param byteOffset - byte offset (default: 0)
* @param length - view length
* @throws ArrayBuffer byte length must be a multiple of `8`
* @throws array-like object and typed array input arguments must have a length which is a multiple of two
* @throws if provided only a single argument, must provide a valid argument
* @throws byte offset must be a nonnegative integer
* @throws byte offset must be a multiple of `8`
* @throws view length must be a positive multiple of `8`
* @throws must provide sufficient memory to accommodate byte offset and view length requirements
* @throws an iterator must return either a two element array containing real and imaginary components or a complex number
* @returns complex number array
*
* @example
* var arr = new Complex64Array();
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 0
*
* @example
* var arr = new Complex64Array( 2 );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var arr = new Complex64Array( [ 1.0, -1.0 ] );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new Complex64Array( buf );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new Complex64Array( buf, 8 );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = new Complex64Array( buf, 8, 2 );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 2
*/
declare var ctor: Constructor;
// EXPORTS //
export = ctor;

View File

@ -0,0 +1,153 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// tslint:disable:no-unused-expression
import Complex64Array = require( './index' );
import Complex64 = require( '@stdlib/complex/float32' );
import ArrayBuffer = require( './../../../buffer' );
import real = require( '@stdlib/complex/real' );
import imag = require( '@stdlib/complex/imag' );
const clbk = ( v: Complex64 ) => {
return new Complex64( real( v ) * 2.0, imag( v ) * 2.0 );
};
// TESTS //
// The function returns a complex number array...
{
new Complex64Array(); // $ExpectType Complex64Array
Complex64Array(); // $ExpectType Complex64Array
new Complex64Array( 2 ); // $ExpectType Complex64Array
Complex64Array( 2 ); // $ExpectType Complex64Array
new Complex64Array( [ 1.0, -1.0 ] ); // $ExpectType Complex64Array
Complex64Array( [ 1.0, -1.0 ] ); // $ExpectType Complex64Array
const buf = new ArrayBuffer( 16 );
new Complex64Array( buf ); // $ExpectType Complex64Array
Complex64Array( buf ); // $ExpectType Complex64Array
new Complex64Array( buf, 8 ); // $ExpectType Complex64Array
Complex64Array( buf, 8 ); // $ExpectType Complex64Array
new Complex64Array( buf, 8, 2 ); // $ExpectType Complex64Array
Complex64Array( buf, 8, 2 ); // $ExpectType Complex64Array
}
// The compiler throws an error if the function is provided a first argument that is not a number, typed array, array-like object, or array buffer...
{
new Complex64Array( true ); // $ExpectError
new Complex64Array( false ); // $ExpectError
new Complex64Array( null ); // $ExpectError
new Complex64Array( 'abc' ); // $ExpectError
new Complex64Array( {} ); // $ExpectError
new Complex64Array( ( x: number ): number => x ); // $ExpectError
Complex64Array( true ); // $ExpectError
Complex64Array( false ); // $ExpectError
Complex64Array( null ); // $ExpectError
Complex64Array( 'abc' ); // $ExpectError
Complex64Array( {} ); // $ExpectError
Complex64Array( ( x: number ): number => x ); // $ExpectError
}
// The compiler throws an error if the function is provided a second argument that is not a number...
{
const buf = new ArrayBuffer( 16 );
new Complex64Array( buf, true ); // $ExpectError
new Complex64Array( buf, false ); // $ExpectError
new Complex64Array( buf, null ); // $ExpectError
new Complex64Array( buf, 'abc' ); // $ExpectError
new Complex64Array( buf, {} ); // $ExpectError
new Complex64Array( buf, ( x: number ): number => x ); // $ExpectError
Complex64Array( buf, true ); // $ExpectError
Complex64Array( buf, false ); // $ExpectError
Complex64Array( buf, null ); // $ExpectError
Complex64Array( buf, 'abc' ); // $ExpectError
Complex64Array( buf, {} ); // $ExpectError
Complex64Array( buf, ( x: number ): number => x ); // $ExpectError
}
// The compiler throws an error if the function is provided a third argument that is not a number...
{
const buf = new ArrayBuffer( 16 );
new Complex64Array( buf, 8, true ); // $ExpectError
new Complex64Array( buf, 8, false ); // $ExpectError
new Complex64Array( buf, 8, null ); // $ExpectError
new Complex64Array( buf, 8, 'abc' ); // $ExpectError
new Complex64Array( buf, 8, {} ); // $ExpectError
new Complex64Array( buf, 8, ( x: number ): number => x ); // $ExpectError
Complex64Array( buf, 8, true ); // $ExpectError
Complex64Array( buf, 8, false ); // $ExpectError
Complex64Array( buf, 8, null ); // $ExpectError
Complex64Array( buf, 8, 'abc' ); // $ExpectError
Complex64Array( buf, 8, {} ); // $ExpectError
Complex64Array( buf, 8, ( x: number ): number => x ); // $ExpectError
}
// The `from` method returns a complex number array...
{
Complex64Array.from( [ 1.0, 1.0 ] ); // $ExpectType Complex64Array
Complex64Array.from( [ 1.0, 1.0 ], ( x: number ): number => x * x ); // $ExpectType Complex64Array
Complex64Array.from( [ new Complex64( 1.0, 1.0 ) ], clbk, {} ); // $ExpectType Complex64Array
}
// The compiler throws an error if the `from` method is provided a first argument which is not array-like or iterable...
{
Complex64Array.from( true ); // $ExpectError
Complex64Array.from( false ); // $ExpectError
Complex64Array.from( 123 ); // $ExpectError
Complex64Array.from( null ); // $ExpectError
Complex64Array.from( {} ); // $ExpectError
Complex64Array.from( true, clbk ); // $ExpectError
Complex64Array.from( false, clbk ); // $ExpectError
Complex64Array.from( 123, clbk ); // $ExpectError
Complex64Array.from( null, clbk ); // $ExpectError
Complex64Array.from( {}, clbk ); // $ExpectError
Complex64Array.from( true, clbk, {} ); // $ExpectError
Complex64Array.from( false, clbk, {} ); // $ExpectError
Complex64Array.from( 123, clbk, {} ); // $ExpectError
Complex64Array.from( null, clbk, {} ); // $ExpectError
Complex64Array.from( {}, clbk, {} ); // $ExpectError
}
// The compiler throws an error if the `from` method is provided a second argument which is not a function with a supported signature...
{
Complex64Array.from( [ 1, 1 ], true ); // $ExpectError
Complex64Array.from( [ 1, 1 ], false ); // $ExpectError
Complex64Array.from( [ 1, 1 ], 123 ); // $ExpectError
Complex64Array.from( [ 1, 1 ], null ); // $ExpectError
Complex64Array.from( [ 1, 1 ], {} ); // $ExpectError
}
// The `of` method returns a complex number array...
{
Complex64Array.of( 1.0, 1.0, 1.0, 1.0 ); // $ExpectType Complex64Array
}
// The compiler throws an error if the `of` method is provided arguments that are not numbers...
{
Complex64Array.of( 'abc', 'def' ); // $ExpectError
Complex64Array.of( true, false ); // $ExpectError
Complex64Array.of( {}, [] ); // $ExpectError
Complex64Array.of( null, null ); // $ExpectError
}

View File

@ -0,0 +1,61 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MODULES //
var isComplexLike = require( '@stdlib/assert/is-complex-like' );
var real = require( '@stdlib/complex/real' );
var imag = require( '@stdlib/complex/imag' );
// MAIN //
/**
* Returns a strided array of real and imaginary components.
*
* @private
* @param {Float32Array} buf - output array
* @param {Array} arr - array containing complex numbers
* @returns {(Float32Array|null)} output array or null
*/
function fromArray( buf, arr ) {
var len;
var v;
var i;
var j;
len = arr.length;
j = 0;
for ( i = 0; i < len; i++ ) {
v = arr[ i ];
if ( !isComplexLike( v ) ) {
return null;
}
buf[ j ] = real( v );
buf[ j+1 ] = imag( v );
j += 2; // stride
}
return buf;
}
// EXPORTS //
module.exports = fromArray;

View File

@ -0,0 +1,66 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MODULES //
var isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );
var isComplexLike = require( '@stdlib/assert/is-complex-like' );
var real = require( '@stdlib/complex/real' );
var imag = require( '@stdlib/complex/imag' );
// MAIN //
/**
* Returns an array of iterated values.
*
* @private
* @param {Object} it - iterator
* @returns {(Array|TypeError)} array or an error
*/
function fromIterator( it ) {
var out;
var v;
var z;
out = [];
while ( true ) {
v = it.next();
z = v.value;
if ( z ) {
if ( isArrayLikeObject( z ) && z.length >= 2 ) {
out.push( z[ 0 ], z[ 1 ] );
} else if ( isComplexLike( z ) ) {
out.push( real( z ), imag( z ) );
} else {
return new TypeError( 'invalid argument. An iterator must return either a two-element array containing real and imaginary components or a complex number. Value: `'+z+'`.' );
}
}
if ( v.done ) {
break;
}
}
return out;
}
// EXPORTS //
module.exports = fromIterator;

View File

@ -0,0 +1,72 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MODULES //
var isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );
var isComplexLike = require( '@stdlib/assert/is-complex-like' );
var real = require( '@stdlib/complex/real' );
var imag = require( '@stdlib/complex/imag' );
// MAIN //
/**
* Returns an array of iterated values.
*
* @private
* @param {Object} it - iterator
* @param {Function} clbk - callback to invoke for each iterated value
* @param {*} thisArg - invocation context
* @returns {(Array|TypeError)} array or an error
*/
function fromIteratorMap( it, clbk, thisArg ) {
var out;
var v;
var z;
var i;
out = [];
i = -1;
while ( true ) {
i += 1;
v = it.next();
z = v.value;
if ( z ) {
z = clbk.call( thisArg, z, i );
if ( isArrayLikeObject( z ) && z.length >= 2 ) {
out.push( z[ 0 ], z[ 1 ] );
} else if ( isComplexLike( z ) ) {
out.push( real( z ), imag( z ) );
} else {
return new TypeError( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `'+z+'`.' );
}
}
if ( v.done ) {
break;
}
}
return out;
}
// EXPORTS //
module.exports = fromIteratorMap;

94
js/node_modules/@stdlib/array/complex64/lib/index.js generated vendored Normal file
View File

@ -0,0 +1,94 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
/**
* 64-bit complex number array.
*
* @module @stdlib/array/complex64
*
* @example
* var Complex64Array = require( '@stdlib/array/complex64' );
*
* var arr = new Complex64Array();
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 0
*
* @example
* var Complex64Array = require( '@stdlib/array/complex64' );
*
* var arr = new Complex64Array( 2 );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var Complex64Array = require( '@stdlib/array/complex64' );
*
* var arr = new Complex64Array( [ 1.0, -1.0 ] );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
* var Complex64Array = require( '@stdlib/array/complex64' );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new Complex64Array( buf );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
* var Complex64Array = require( '@stdlib/array/complex64' );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new Complex64Array( buf, 8 );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
* var Complex64Array = require( '@stdlib/array/complex64' );
*
* var buf = new ArrayBuffer( 32 );
* var arr = new Complex64Array( buf, 8, 2 );
* // returns <Complex64Array>
*
* var len = arr.length;
* // returns 2
*/
// MODULES //
var Complex64Array = require( './main.js' );
// EXPORTS //
module.exports = Complex64Array;

1074
js/node_modules/@stdlib/array/complex64/lib/main.js generated vendored Normal file

File diff suppressed because it is too large Load Diff

72
js/node_modules/@stdlib/array/complex64/package.json generated vendored Normal file
View File

@ -0,0 +1,72 @@
{
"name": "@stdlib/array/complex64",
"version": "0.0.0",
"description": "Complex64Array.",
"license": "Apache-2.0",
"author": {
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
},
"contributors": [
{
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
}
],
"main": "./lib",
"directories": {
"benchmark": "./benchmark",
"doc": "./docs",
"example": "./examples",
"lib": "./lib",
"test": "./test"
},
"types": "./docs/types",
"scripts": {},
"homepage": "https://github.com/stdlib-js/stdlib",
"repository": {
"type": "git",
"url": "git://github.com/stdlib-js/stdlib.git"
},
"bugs": {
"url": "https://github.com/stdlib-js/stdlib/issues"
},
"dependencies": {},
"devDependencies": {},
"engines": {
"node": ">=0.10.0",
"npm": ">2.7.0"
},
"os": [
"aix",
"darwin",
"freebsd",
"linux",
"macos",
"openbsd",
"sunos",
"win32",
"windows"
],
"keywords": [
"stdlib",
"stdtypes",
"types",
"data",
"structure",
"array",
"typed",
"typed array",
"typed-array",
"complex64array",
"complex64",
"complex",
"cmplx",
"real",
"imaginary",
"imag",
"float",
"single-precision",
"ieee754"
]
}

139
js/node_modules/@stdlib/array/convert-same/README.md generated vendored Normal file
View File

@ -0,0 +1,139 @@
<!--
@license Apache-2.0
Copyright (c) 2018 The Stdlib Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
# Convert
> Convert an array to the same data type as a second input array.
<!-- Section to include introductory text. Make sure to keep an empty line after the intro `section` element and another before the `/section` close. -->
<section class="intro">
</section>
<!-- /.intro -->
<!-- Package usage documentation. -->
<section class="usage">
## Usage
```javascript
var convertArraySame = require( '@stdlib/array/convert-same' );
```
#### convertArraySame( x, y )
Converts an `array` to the same data type as a second input `array`.
```javascript
var Float32Array = require( '@stdlib/array/float32' );
var y = new Float32Array( 0 );
var x = [ 1.0, 2.0, 3.0 ];
var out = convertArraySame( x, y );
// returns <Float32Array>[ 1.0, 2.0, 3.0 ]
```
The function supports input arrays having the following data types:
- `float32`: single-precision floating-point numbers.
- `float64`: double-precision floating-point numbers.
- `generic`: values of any type.
- `int16`: signed 16-bit integers.
- `int32`: signed 32-bit integers.
- `int8`: signed 8-bit integers.
- `uint16`: unsigned 16-bit integers.
- `uint32`: unsigned 32-bit integers.
- `uint8`: unsigned 8-bit integers.
- `uint8c`: unsigned clamped 8-bit integers.
</section>
<!-- /.usage -->
<!-- Package usage notes. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="notes">
</section>
<!-- /.notes -->
<!-- Package usage examples. -->
<section class="examples">
## Examples
<!-- eslint-disable stdlib/new-cap-error -->
<!-- eslint no-undef: "error" -->
```javascript
var dtypes = require( '@stdlib/array/dtypes' );
var ctors = require( '@stdlib/array/ctors' );
var randu = require( '@stdlib/random/base/randu' );
var floor = require( '@stdlib/math/base/special/floor' );
var convertArraySame = require( '@stdlib/array/convert-same' );
// Create a generic array:
var x = [];
var i;
for ( i = 0; i < 5; i++ ) {
x.push( floor( randu()*1.0e25 ) - 5.0e24 );
}
// Get a list of array data types:
var DTYPES = dtypes();
// Convert the generic array to each array data type:
var ctor;
var out;
var y;
for ( i = 0; i < DTYPES.length; i++ ) {
ctor = ctors( DTYPES[ i ] );
y = new ctor( 0 );
out = convertArraySame( x, y );
console.log( out );
}
```
</section>
<!-- /.examples -->
<!-- Section to include cited references. If references are included, add a horizontal rule *before* the section. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="references">
</section>
<!-- /.references -->
<!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="links">
</section>
<!-- /.links -->

View File

@ -0,0 +1,40 @@
{{alias}}( x, y )
Converts an input array to the same data type as a second input array.
The function supports input arrays having the following data types:
- float32: single-precision floating-point numbers.
- float64: double-precision floating-point numbers.
- generic: values of any type.
- int16: signed 16-bit integers.
- int32: signed 32-bit integers.
- int8: signed 8-bit integers.
- uint16: unsigned 16-bit integers.
- uint32: unsigned 32-bit integers.
- uint8: unsigned 8-bit integers.
- uint8c: unsigned clamped 8-bit integers.
Parameters
----------
x: Array|TypedArray
Array to convert.
y: Array|TypedArray
Array having desired output data type.
Returns
-------
out: Array|TypedArray
Output array.
Examples
--------
> var x = [ 1.0, 2.0, 3.0, 4.0 ];
> var y = new {{alias:@stdlib/array/float32}}( 0 );
> var out = {{alias}}( x, y )
<Float32Array>[ 1.0, 2.0, 3.0, 4.0 ]
See Also
--------

View File

@ -0,0 +1,53 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// TypeScript Version: 2.0
/// <reference types="@stdlib/types"/>
import { TypedArray } from '@stdlib/types/array';
import { Collection } from '@stdlib/types/object';
/**
* Array or typed array.
*/
type ArrayOrTypedArray = Array<any> | TypedArray;
/**
* Converts an array to the same data type as a second input array.
*
* @param x - array to convert
* @param y - array having the desired output data type
* @returns output array
*
* @example
* var Float64Array = require( `@stdlib/array/float64` );
*
* var y = new Float64Array( 0 );
*
* var x = [ 1.0, 2.0, 3.0, 4.0 ];
* var out = convertSame( x, y );
* // returns <Float64Array>[ 1.0, 2.0, 3.0, 4.0 ]
*/
declare function convertSame( x: Collection, y: ArrayOrTypedArray ): ArrayOrTypedArray; // tslint:disable-line:max-line-length unified-signatures
// EXPORTS //
export = convertSame;

View File

@ -0,0 +1,64 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import convertSame = require( './index' );
// TESTS //
// The function returns an array or typed array...
{
const y = new Float64Array( 0 );
convertSame( [ 1.0, 2.0, 3.0, 4.0 ], y ); // $ExpectType ArrayOrTypedArray
}
// The compiler throws an error if the function is provided a first argument which is not array-like...
{
const y = new Float64Array( 0 );
convertSame( 123, y ); // $ExpectError
convertSame( true, y ); // $ExpectError
convertSame( false, y ); // $ExpectError
convertSame( {}, y ); // $ExpectError
convertSame( null, y ); // $ExpectError
convertSame( undefined, y ); // $ExpectError
}
// The compiler throws an error if the function is provided a second argument which is not an array or typed array...
{
const x = [ 1.0, 2.0, 3.0, 4.0 ];
convertSame( x, 'abc' ); // $ExpectError
convertSame( x, 123 ); // $ExpectError
convertSame( x, true ); // $ExpectError
convertSame( x, false ); // $ExpectError
convertSame( x, {} ); // $ExpectError
convertSame( x, null ); // $ExpectError
convertSame( x, undefined ); // $ExpectError
}
// The compiler throws an error if the function is provided an unsupported number of arguments...
{
const x = [ 1.0, 2.0, 3.0, 4.0 ];
const y = new Float64Array( 0 );
convertSame(); // $ExpectError
convertSame( x ); // $ExpectError
convertSame( x, y, 2 ); // $ExpectError
}

View File

@ -0,0 +1,44 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
/**
* Convert an array to the same data type as a second input array.
*
* @module @stdlib/array/convert-same
*
* @example
* var convertSame = require( '@stdlib/array/convert-same' );
* var Float64Array = require( '@stdlib/array/float64' );
*
* var y = new Float64Array( 0 );
*
* var x = [ 1.0, 2.0, 3.0, 4.0 ];
* var out = convertSame( x, y );
* // returns <Float64Array>[ 1.0, 2.0, 3.0, 4.0 ]
*/
// MODULES //
var convertSame = require( './main.js' );
// EXPORTS //
module.exports = convertSame;

80
js/node_modules/@stdlib/array/convert-same/lib/main.js generated vendored Normal file
View File

@ -0,0 +1,80 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MODULES //
var isCollection = require( '@stdlib/assert/is-collection' );
var getType = require( './../../dtype' );
var ctors = require( './../../ctors' );
// MAIN //
/**
* Converts an array to the same data type as a second input array.
*
* @param {Collection} x - array to convert
* @param {(Array|TypedArray)} y - array having the desired output data type
* @throws {TypeError} first argument must be an array-like object
* @throws {TypeError} second argument must have a recognized data type
* @returns {(Array|TypedArray)} output array
*
* @example
* var Float64Array = require( '@stdlib/array/float64' );
*
* var y = new Float64Array( 0 );
*
* var x = [ 1.0, 2.0, 3.0, 4.0 ];
* var out = convertSame( x, y );
* // returns <Float64Array>[ 1.0, 2.0, 3.0, 4.0 ]
*/
function convertSame( x, y ) {
var dtype;
var ctor;
var out;
var len;
var i;
if ( !isCollection( x ) ) {
throw new TypeError( 'invalid argument. First argument must be an array-like object. Value: `' + x + '`.' );
}
dtype = getType( y );
ctor = ctors( dtype );
if ( ctor === null ) {
throw new TypeError( 'invalid argument. Second argument must have a recognized data type. Value: `' + dtype + '`.' );
}
len = x.length;
if ( dtype === 'generic' ) {
out = [];
for ( i = 0; i < len; i++ ) {
out.push( x[ i ] ); // ensure "fast" elements
}
return out;
}
out = new ctor( len );
for ( i = 0; i < len; i++ ) {
out[ i ] = x[ i ];
}
return out;
}
// EXPORTS //
module.exports = convertSame;

View File

@ -0,0 +1,67 @@
{
"name": "@stdlib/array/convert-same",
"version": "0.0.0",
"description": "Convert an array to the same data type as a second input array.",
"license": "Apache-2.0",
"author": {
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
},
"contributors": [
{
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
}
],
"main": "./lib",
"directories": {
"benchmark": "./benchmark",
"doc": "./docs",
"example": "./examples",
"lib": "./lib",
"test": "./test"
},
"types": "./docs/types",
"scripts": {},
"homepage": "https://github.com/stdlib-js/stdlib",
"repository": {
"type": "git",
"url": "git://github.com/stdlib-js/stdlib.git"
},
"bugs": {
"url": "https://github.com/stdlib-js/stdlib/issues"
},
"dependencies": {},
"devDependencies": {},
"engines": {
"node": ">=0.10.0",
"npm": ">2.7.0"
},
"os": [
"aix",
"darwin",
"freebsd",
"linux",
"macos",
"openbsd",
"sunos",
"win32",
"windows"
],
"keywords": [
"stdlib",
"stdtypes",
"types",
"data",
"structure",
"array",
"typed",
"typed array",
"typed-array",
"convert",
"cast",
"transform",
"copy",
"duplicate"
]
}

128
js/node_modules/@stdlib/array/convert/README.md generated vendored Normal file
View File

@ -0,0 +1,128 @@
<!--
@license Apache-2.0
Copyright (c) 2018 The Stdlib Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
# Convert
> Convert an array to an array of a different data type.
<!-- Section to include introductory text. Make sure to keep an empty line after the intro `section` element and another before the `/section` close. -->
<section class="intro">
</section>
<!-- /.intro -->
<!-- Package usage documentation. -->
<section class="usage">
## Usage
```javascript
var convertArray = require( '@stdlib/array/convert' );
```
#### convertArray( arr, dtype )
Converts an `array` to an array of a different data type.
```javascript
var arr = [ 1.0, 2.0, 3.0 ];
var out = convertArray( arr, 'float32' );
// returns <Float32Array>[ 1.0, 2.0, 3.0 ]
```
The function supports the following data types:
- `float32`: single-precision floating-point numbers.
- `float64`: double-precision floating-point numbers.
- `generic`: values of any type.
- `int16`: signed 16-bit integers.
- `int32`: signed 32-bit integers.
- `int8`: signed 8-bit integers.
- `uint16`: unsigned 16-bit integers.
- `uint32`: unsigned 32-bit integers.
- `uint8`: unsigned 8-bit integers.
- `uint8c`: unsigned clamped 8-bit integers.
</section>
<!-- /.usage -->
<!-- Package usage notes. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="notes">
</section>
<!-- /.notes -->
<!-- Package usage examples. -->
<section class="examples">
## Examples
<!-- eslint no-undef: "error" -->
```javascript
var dtypes = require( '@stdlib/array/dtypes' );
var randu = require( '@stdlib/random/base/randu' );
var floor = require( '@stdlib/math/base/special/floor' );
var convertArray = require( '@stdlib/array/convert' );
// Create a generic array:
var arr = [];
var i;
for ( i = 0; i < 5; i++ ) {
arr.push( floor( randu()*1.0e25 ) - 5.0e24 );
}
// Get a list of array data types:
var DTYPES = dtypes();
// Convert the generic array to each array data type:
var out;
for ( i = 0; i < DTYPES.length; i++ ) {
out = convertArray( arr, DTYPES[ i ] );
console.log( out );
}
```
</section>
<!-- /.examples -->
<!-- Section to include cited references. If references are included, add a horizontal rule *before* the section. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="references">
</section>
<!-- /.references -->
<!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="links">
</section>
<!-- /.links -->

39
js/node_modules/@stdlib/array/convert/docs/repl.txt generated vendored Normal file
View File

@ -0,0 +1,39 @@
{{alias}}( arr, dtype )
Converts an input array to an array of a different data type.
The function supports the following data types:
- float32: single-precision floating-point numbers.
- float64: double-precision floating-point numbers.
- generic: values of any type.
- int16: signed 16-bit integers.
- int32: signed 32-bit integers.
- int8: signed 8-bit integers.
- uint16: unsigned 16-bit integers.
- uint32: unsigned 32-bit integers.
- uint8: unsigned 8-bit integers.
- uint8c: unsigned clamped 8-bit integers.
Parameters
----------
arr: Array|TypedArray
Array to convert.
dtype: string
Output data type.
Returns
-------
out: Array|TypedArray
Output array.
Examples
--------
> var arr = [ 1.0, 2.0, 3.0, 4.0 ];
> var out = {{alias}}( arr, 'float32' )
<Float32Array>[ 1.0, 2.0, 3.0, 4.0 ]
See Also
--------

View File

@ -0,0 +1,53 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// TypeScript Version: 2.0
/// <reference types="@stdlib/types"/>
import { TypedArray } from '@stdlib/types/array';
import { Collection } from '@stdlib/types/object';
/**
* Array data type.
*/
type DataType = 'float32' | 'float64' | 'generic' | 'int16' | 'int32' | 'int8' | 'uint16' | 'uint32' | 'uint8' | 'uint8c'; // tslint:disable-line:max-line-length unified-signatures
/**
* Array or typed array.
*/
type ArrayOrTypedArray = Array<any> | TypedArray;
/**
* Converts an array to an array of a different data type.
*
* @param x - array to convert
* @param dtype - output data type
* @returns output array
*
* @example
* var arr = [ 1.0, 2.0, 3.0, 4.0 ];
* var out = convert( arr, 'float64' );
* // returns <Float64Array>[ 1.0, 2.0, 3.0, 4.0 ]
*/
declare function convert( x: Collection, dtype: DataType ): ArrayOrTypedArray;
// EXPORTS //
export = convert;

View File

@ -0,0 +1,56 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import convert = require( './index' );
// TESTS //
// The function returns an array or typed array...
{
convert( [ 1.0, 2.0, 3.0, 4.0 ], 'int32' ); // $ExpectType ArrayOrTypedArray
convert( [ 1.0, 2.0, 3.0, 4.0 ], 'float32' ); // $ExpectType ArrayOrTypedArray
}
// The compiler throws an error if the function is provided a first argument which is not array-like...
{
convert( 123, 'float64' ); // $ExpectError
convert( true, 'float64' ); // $ExpectError
convert( false, 'float64' ); // $ExpectError
convert( {}, 'float64' ); // $ExpectError
convert( null, 'float64' ); // $ExpectError
convert( undefined, 'float64' ); // $ExpectError
}
// The compiler throws an error if the function is provided a second argument which is not a known data type...
{
convert( [ 1, 2, 3, 4 ], 'abc' ); // $ExpectError
convert( [ 1, 2, 3, 4 ], 123 ); // $ExpectError
convert( [ 1, 2, 3, 4 ], [] ); // $ExpectError
convert( [ 1, 2, 3, 4 ], {} ); // $ExpectError
convert( [ 1, 2, 3, 4 ], true ); // $ExpectError
convert( [ 1, 2, 3, 4 ], false ); // $ExpectError
convert( [ 1, 2, 3, 4 ], null ); // $ExpectError
}
// The compiler throws an error if the function is provided an unsupported number of arguments...
{
convert(); // $ExpectError
convert( [ 1.0, 2.0, 3.0, 4.0 ] ); // $ExpectError
convert( [ 1.0, 2.0, 3.0, 4.0 ], 'float64', 2 ); // $ExpectError
}

41
js/node_modules/@stdlib/array/convert/lib/index.js generated vendored Normal file
View File

@ -0,0 +1,41 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
/**
* Convert an array to an array of a different data type.
*
* @module @stdlib/array/convert
*
* @example
* var convert = require( '@stdlib/array/convert' );
*
* var arr = [ 1.0, 2.0, 3.0, 4.0 ];
* var out = convert( arr, 'float64' );
* // returns <Float64Array>[ 1.0, 2.0, 3.0, 4.0 ]
*/
// MODULES //
var convert = require( './main.js' );
// EXPORTS //
module.exports = convert;

73
js/node_modules/@stdlib/array/convert/lib/main.js generated vendored Normal file
View File

@ -0,0 +1,73 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MODULES //
var isCollection = require( '@stdlib/assert/is-collection' );
var ctors = require( './../../ctors' );
// MAIN //
/**
* Converts an array to an array of a different data type.
*
* @param {Collection} x - array to convert
* @param {string} dtype - output data type
* @throws {TypeError} first argument must be an array-like object
* @throws {TypeError} second argument must be a recognized array data type
* @returns {(Array|TypedArray)} output array
*
* @example
* var arr = [ 1.0, 2.0, 3.0, 4.0 ];
* var out = convert( arr, 'float64' );
* // returns <Float64Array>[ 1.0, 2.0, 3.0, 4.0 ]
*/
function convert( x, dtype ) {
var ctor;
var out;
var len;
var i;
if ( !isCollection( x ) ) {
throw new TypeError( 'invalid argument. First argument must be an array-like object. Value: `' + x + '`.' );
}
len = x.length;
ctor = ctors( dtype );
if ( ctor === null ) {
throw new TypeError( 'invalid argument. Second argument must be a recognized array data type. Value: `' + dtype + '`.' );
}
if ( dtype === 'generic' ) {
out = [];
for ( i = 0; i < len; i++ ) {
out.push( x[ i ] ); // ensure "fast" elements
}
return out;
}
out = new ctor( len );
for ( i = 0; i < len; i++ ) {
out[ i ] = x[ i ];
}
return out;
}
// EXPORTS //
module.exports = convert;

67
js/node_modules/@stdlib/array/convert/package.json generated vendored Normal file
View File

@ -0,0 +1,67 @@
{
"name": "@stdlib/array/convert",
"version": "0.0.0",
"description": "Convert an array to an array of a different data type.",
"license": "Apache-2.0",
"author": {
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
},
"contributors": [
{
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
}
],
"main": "./lib",
"directories": {
"benchmark": "./benchmark",
"doc": "./docs",
"example": "./examples",
"lib": "./lib",
"test": "./test"
},
"types": "./docs/types",
"scripts": {},
"homepage": "https://github.com/stdlib-js/stdlib",
"repository": {
"type": "git",
"url": "git://github.com/stdlib-js/stdlib.git"
},
"bugs": {
"url": "https://github.com/stdlib-js/stdlib/issues"
},
"dependencies": {},
"devDependencies": {},
"engines": {
"node": ">=0.10.0",
"npm": ">2.7.0"
},
"os": [
"aix",
"darwin",
"freebsd",
"linux",
"macos",
"openbsd",
"sunos",
"win32",
"windows"
],
"keywords": [
"stdlib",
"stdtypes",
"types",
"data",
"structure",
"array",
"typed",
"typed array",
"typed-array",
"convert",
"cast",
"transform",
"copy",
"duplicate"
]
}

124
js/node_modules/@stdlib/array/ctors/README.md generated vendored Normal file
View File

@ -0,0 +1,124 @@
<!--
@license Apache-2.0
Copyright (c) 2018 The Stdlib Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
# Constructors
> Array constructors.
<!-- Section to include introductory text. Make sure to keep an empty line after the intro `section` element and another before the `/section` close. -->
<section class="intro">
</section>
<!-- /.intro -->
<!-- Package usage documentation. -->
<section class="usage">
## Usage
```javascript
var ctors = require( '@stdlib/array/ctors' );
```
#### ctors( dtype )
Returns an array constructor for a specified data type.
```javascript
var ctor = ctors( 'float64' );
// returns <Function>
```
The function returns constructors for the following data types:
- `float32`: single-precision floating-point numbers.
- `float64`: double-precision floating-point numbers.
- `generic`: values of any type.
- `int16`: signed 16-bit integers.
- `int32`: signed 32-bit integers.
- `int8`: signed 8-bit integers.
- `uint16`: unsigned 16-bit integers.
- `uint32`: unsigned 32-bit integers.
- `uint8`: unsigned 8-bit integers.
- `uint8c`: unsigned clamped 8-bit integers.
If provided an unknown or unsupported data type, the function returns `null`.
```javascript
var ctor = ctors( 'float' );
// returns null
```
</section>
<!-- /.usage -->
<!-- Package usage notes. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="notes">
</section>
<!-- /.notes -->
<!-- Package usage examples. -->
<section class="examples">
## Examples
<!-- eslint no-undef: "error" -->
```javascript
var dtypes = require( '@stdlib/array/dtypes' );
var ctors = require( '@stdlib/array/ctors' );
var DTYPES = dtypes();
var ctor;
var i;
for ( i = 0; i < DTYPES.length; i++ ) {
ctor = ctors( DTYPES[ i ] );
console.log( ctor );
}
```
</section>
<!-- /.examples -->
<!-- Section to include cited references. If references are included, add a horizontal rule *before* the section. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="references">
</section>
<!-- /.references -->
<!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="links">
</section>
<!-- /.links -->

37
js/node_modules/@stdlib/array/ctors/docs/repl.txt generated vendored Normal file
View File

@ -0,0 +1,37 @@
{{alias}}( dtype )
Returns an array constructor.
The function returns constructors for the following data types:
- float32: single-precision floating-point numbers.
- float64: double-precision floating-point numbers.
- generic: values of any type.
- int16: signed 16-bit integers.
- int32: signed 32-bit integers.
- int8: signed 8-bit integers.
- uint16: unsigned 16-bit integers.
- uint32: unsigned 32-bit integers.
- uint8: unsigned 8-bit integers.
- uint8c: unsigned clamped 8-bit integers.
Parameters
----------
dtype: string
Data type.
Returns
-------
out: Function|null
Constructor.
Examples
--------
> var ctor = {{alias}}( 'float64' )
<Function>
> ctor = {{alias}}( 'float' )
null
See Also
--------

View File

@ -0,0 +1,40 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// TypeScript Version: 2.0
/**
* Returns an array constructor.
*
* @param dtype - data type
* @returns constructor or null
*
* @example
* var ctor = ctors( 'float64' );
* // returns <Function>
*
* @example
* var ctor = ctors( 'float' );
* // returns null
*/
declare function ctors( dtype: string ): Function | null;
// EXPORTS //
export = ctors;

33
js/node_modules/@stdlib/array/ctors/docs/types/test.ts generated vendored Normal file
View File

@ -0,0 +1,33 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import ctors = require( './index' );
// TESTS //
// The function returns a function or null..
{
ctors( 'float64' ); // $ExpectType Function | null
ctors( 'float' ); // $ExpectType Function | null
}
// The compiler throws an error if the function is provided an unsupported number of arguments...
{
ctors(); // $ExpectError
ctors( 'int32', 3 ); // $ExpectError
}

53
js/node_modules/@stdlib/array/ctors/lib/ctors.js generated vendored Normal file
View File

@ -0,0 +1,53 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MODULES //
var Float64Array = require( './../../float64' );
var Float32Array = require( './../../float32' );
var Int16Array = require( './../../int16' );
var Int32Array = require( './../../int32' );
var Int8Array = require( './../../int8' );
var Uint16Array = require( './../../uint16' );
var Uint32Array = require( './../../uint32' );
var Uint8Array = require( './../../uint8' );
var Uint8ClampedArray = require( './../../uint8c' );
// MAIN //
// Mapping from data types to constructors...
var ctors = {
'float64': Float64Array,
'float32': Float32Array,
'generic': Array, // TODO: replace with `stdlib` pkg
'int16': Int16Array,
'int32': Int32Array,
'int8': Int8Array,
'uint16': Uint16Array,
'uint32': Uint32Array,
'uint8': Uint8Array,
'uint8c': Uint8ClampedArray
};
// EXPORTS //
module.exports = ctors;

43
js/node_modules/@stdlib/array/ctors/lib/index.js generated vendored Normal file
View File

@ -0,0 +1,43 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
/**
* Array constructors.
*
* @module @stdlib/array/ctors
*
* @example
* var ctors = require( '@stdlib/array/ctors' );
*
* var ctor = ctors( 'float64' );
* // returns <Function>
*
* ctor = ctors( 'int' );
* // returns null
*/
// MODULES //
var ctors = require( './main.js' );
// EXPORTS //
module.exports = ctors;

49
js/node_modules/@stdlib/array/ctors/lib/main.js generated vendored Normal file
View File

@ -0,0 +1,49 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MODULES //
var table = require( './ctors.js' );
// MAIN //
/**
* Returns an array constructor.
*
* @param {string} dtype - data type
* @returns {(Function|null)} constructor or null
*
* @example
* var ctor = ctors( 'float64' );
* // returns <Function>
*
* @example
* var ctor = ctors( 'float' );
* // returns null
*/
function ctors( dtype ) {
return table[ dtype ] || null;
}
// EXPORTS //
module.exports = ctors;

71
js/node_modules/@stdlib/array/ctors/package.json generated vendored Normal file
View File

@ -0,0 +1,71 @@
{
"name": "@stdlib/array/ctors",
"version": "0.0.0",
"description": "Array constructors.",
"license": "Apache-2.0",
"author": {
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
},
"contributors": [
{
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
}
],
"main": "./lib",
"directories": {
"benchmark": "./benchmark",
"doc": "./docs",
"example": "./examples",
"lib": "./lib",
"test": "./test"
},
"types": "./docs/types",
"scripts": {},
"homepage": "https://github.com/stdlib-js/stdlib",
"repository": {
"type": "git",
"url": "git://github.com/stdlib-js/stdlib.git"
},
"bugs": {
"url": "https://github.com/stdlib-js/stdlib/issues"
},
"dependencies": {},
"devDependencies": {},
"engines": {
"node": ">=0.10.0",
"npm": ">2.7.0"
},
"os": [
"aix",
"darwin",
"freebsd",
"linux",
"macos",
"openbsd",
"sunos",
"win32",
"windows"
],
"keywords": [
"stdlib",
"stdtypes",
"types",
"array",
"list",
"dtypes",
"dtype",
"data",
"structure",
"constructors",
"constructor",
"ctors",
"ctor",
"utilities",
"utility",
"utils",
"util"
],
"__stdlib__": {}
}

191
js/node_modules/@stdlib/array/dataview/README.md generated vendored Normal file
View File

@ -0,0 +1,191 @@
<!--
@license Apache-2.0
Copyright (c) 2021 The Stdlib Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
# DataView
> [Constructor][mdn-dataview] which returns a data view representing a provided array buffer.
<!-- Section to include introductory text. Make sure to keep an empty line after the intro `section` element and another before the `/section` close. -->
<section class="intro">
</section>
<!-- /.intro -->
<!-- Package usage documentation. -->
<section class="usage">
## Usage
```javascript
var DataView = require( '@stdlib/array/dataview' );
```
#### DataView( buffer\[, byteOffset\[, byteLength]] )
Returns a [`DataView`][mdn-dataview] representing a provided array buffer.
<!-- eslint-disable stdlib/require-globals -->
```javascript
var ArrayBuffer = require( '@stdlib/array/buffer' );
var buf = new ArrayBuffer( 5 );
// returns <ArrayBuffer>
var dv = new DataView( buf );
// returns <DataView>
```
* * *
### Properties
#### DataView.prototype.buffer
**Read-only** property which returns the underlying array buffer.
<!-- eslint-disable stdlib/require-globals -->
```javascript
var ArrayBuffer = require( '@stdlib/array/buffer' );
var buf1 = new ArrayBuffer( 5 );
var dv = new DataView( buf1 );
var buf2 = dv.buffer;
// returns <ArrayBuffer>
var bool = ( buf1 === buf2 );
// returns true
```
#### DataView.prototype.byteLength
**Read-only** property which returns the length (in bytes) of the [`DataView`][mdn-dataview].
<!-- eslint-disable stdlib/require-globals -->
```javascript
var ArrayBuffer = require( '@stdlib/array/buffer' );
var buf = new ArrayBuffer( 5 );
var dv = new DataView( buf );
var byteLength = dv.byteLength;
// returns 5
```
#### DataView.prototype.byteOffset
**Read-only** property which returns the number of bytes from the [`DataView`][mdn-dataview] to the start of the underlying array buffer.
<!-- eslint-disable stdlib/require-globals -->
```javascript
var ArrayBuffer = require( '@stdlib/array/buffer' );
var buf = new ArrayBuffer( 5 );
var dv = new DataView( buf, 3 );
var byteOffset = dv.byteOffset;
// returns 3
```
* * *
### Methods
TODO: document methods
</section>
<!-- /.usage -->
* * *
<!-- Package usage notes. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="notes">
</section>
<!-- /.notes -->
<!-- Package usage examples. -->
<section class="examples">
## Examples
<!-- eslint no-undef: "error" -->
```javascript
var IS_LITTLE_ENDIAN = require( '@stdlib/assert/is-little-endian' );
var toBinaryString = require( '@stdlib/number/uint8/base/to-binary-string' );
var randu = require( '@stdlib/random/base/randu' );
var Uint8Array = require( '@stdlib/array/uint8' );
var ArrayBuffer = require( '@stdlib/array/buffer' );
var DataView = require( '@stdlib/array/dataview' );
// Create a new ArrayBuffer:
var buf = new ArrayBuffer( 64 );
// Create a new DataView:
var dv = new DataView( buf );
// Set values in the view:
var i;
for ( i = 0; i < dv.byteLength/8; i++ ) {
dv.setFloat64( i*8, randu()*100.0, IS_LITTLE_ENDIAN );
}
// Create a "bytes" view of the underlying array buffer:
var bytes = new Uint8Array( dv.buffer );
// Print the bytes:
for ( i = 0; i < bytes.length; i++ ) {
console.log( 'byte %d: %s', i, toBinaryString( bytes[ i ] ) );
}
```
</section>
<!-- /.examples -->
<!-- Section to include cited references. If references are included, add a horizontal rule *before* the section. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="references">
</section>
<!-- /.references -->
<!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="links">
[mdn-dataview]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView
</section>
<!-- /.links -->

74
js/node_modules/@stdlib/array/dataview/docs/repl.txt generated vendored Normal file
View File

@ -0,0 +1,74 @@
{{alias}}( buffer[, byteOffset[, byteLength]] )
Returns a data view representing a provided array buffer.
Parameters
----------
buffer: ArrayBuffer|SharedArrayBuffer
Array buffer.
byteOffset: integer (optional)
Offset (in bytes) to the first byte in the array buffer for the new view
to reference. Default: 0.
byteLength: integer (optional)
Number of elements in the byte array. If not provided, the view's length
will equal the buffer's length.
Returns
-------
out: DataView
A data view.
Examples
--------
> var buf = new {{alias:@stdlib/array/buffer}}( 5 )
<ArrayBuffer>
> var dv = new {{alias}}( buf )
<DataView>
{{alias}}.prototype.buffer
Read-only property which returns the underyling array buffer.
Examples
--------
> var buf1 = new {{alias:@stdlib/array/buffer}}( 5 );
> var dv = new {{alias}}( buf1 );
> var buf2 = dv.buffer
<ArrayBuffer>
> var b = ( buf1 === buf2 )
true
{{alias}}.prototype.byteLength
Read-only property which returns the length (in bytes) of the view.
Examples
--------
> var buf = new {{alias:@stdlib/array/buffer}}( 5 );
> var dv = new {{alias}}( buf );
> dv.byteLength
5
{{alias}}.prototype.byteOffset
Read-only property which returns the offset (in bytes) of the view to the
start of the underlying array buffer.
Examples
--------
> var buf = new {{alias:@stdlib/array/buffer}}( 5 );
> var dv = new {{alias}}( buf, 2 );
> dv.byteLength
3
> dv.byteOffset
2
TODO: document properties/methods
See Also
--------

View File

@ -0,0 +1,26 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// TypeScript Version: 2.0
// EXPORTS //
/**
* Constructor which returns a data view representing a provided array buffer.
*/
export = DataView;

View File

@ -0,0 +1,38 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// tslint:disable: no-construct
// tslint:disable: no-unused-expression
import ArrayBuffer = require( './../../../buffer' );
import DataView = require( './index' );
// TESTS //
// The function returns a data view instance...
{
const buf = new ArrayBuffer( 5 );
new DataView( buf ); // $ExpectType DataView
}
// The constructor function has to be invoked with `new`...
{
const buf = new ArrayBuffer( 5 );
DataView( buf ); // $ExpectError
}

56
js/node_modules/@stdlib/array/dataview/lib/index.js generated vendored Normal file
View File

@ -0,0 +1,56 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
/**
* Constructor which returns a data view representing a provided array buffer.
*
* @module @stdlib/array/dataview
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
* var DataView = require( '@stdlib/array/dataview' );
*
* var buf = new ArrayBuffer( 10 );
* // returns <ArrayBuffer>
*
* var dv = new DataView( buf );
* // returns <DataView>
*/
// MODULES //
var hasDataViewSupport = require( '@stdlib/assert/has-dataview-support' );
var builtin = require( './main.js' );
var polyfill = require( './polyfill.js' );
// MAIN //
var ctor;
if ( hasDataViewSupport() ) {
ctor = builtin;
} else {
ctor = polyfill;
}
// EXPORTS //
module.exports = ctor;

28
js/node_modules/@stdlib/array/dataview/lib/main.js generated vendored Normal file
View File

@ -0,0 +1,28 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MAIN //
var ctor = ( typeof DataView === 'function' ) ? DataView : void 0; // eslint-disable-line stdlib/require-globals
// EXPORTS //
module.exports = ctor;

37
js/node_modules/@stdlib/array/dataview/lib/polyfill.js generated vendored Normal file
View File

@ -0,0 +1,37 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// TODO: write polyfill
// MAIN //
/**
* Constructor which returns a data view representing a provided array buffer.
*
* @throws {Error} not implemented
*/
function polyfill() {
throw new Error( 'not implemented' );
}
// EXPORTS //
module.exports = polyfill;

67
js/node_modules/@stdlib/array/dataview/package.json generated vendored Normal file
View File

@ -0,0 +1,67 @@
{
"name": "@stdlib/array/dataview",
"version": "0.0.0",
"description": "DataView.",
"license": "Apache-2.0",
"author": {
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
},
"contributors": [
{
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
}
],
"main": "./lib",
"directories": {
"benchmark": "./benchmark",
"doc": "./docs",
"example": "./examples",
"lib": "./lib",
"test": "./test"
},
"types": "./docs/types",
"scripts": {},
"homepage": "https://github.com/stdlib-js/stdlib",
"repository": {
"type": "git",
"url": "git://github.com/stdlib-js/stdlib.git"
},
"bugs": {
"url": "https://github.com/stdlib-js/stdlib/issues"
},
"dependencies": {},
"devDependencies": {},
"engines": {
"node": ">=0.10.0",
"npm": ">2.7.0"
},
"os": [
"aix",
"darwin",
"freebsd",
"linux",
"macos",
"openbsd",
"sunos",
"win32",
"windows"
],
"keywords": [
"stdlib",
"stdtypes",
"types",
"data",
"structure",
"array",
"typed",
"typed array",
"typed-array",
"arraybuffer",
"dataview",
"buffer",
"buf",
"binary"
]
}

161
js/node_modules/@stdlib/array/datespace/README.md generated vendored Normal file
View File

@ -0,0 +1,161 @@
<!--
@license Apache-2.0
Copyright (c) 2021 The Stdlib Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
# Datespace
> Generate an array of linearly spaced [dates][mdn-date-object].
<section class="usage">
## Usage
```javascript
var datespace = require( '@stdlib/array/datespace' );
```
#### datespace( start, stop\[, length]\[, opts] )
Generates an `array` of linearly spaced [`Date`][mdn-date-object] objects. If a `length` is not provided, the default output `array` length is `100`.
```javascript
var end = '2014-12-02T07:00:54.973Z';
var start = new Date( end ) - 60000;
var arr = datespace( start, end, 6 );
/* returns [
'Mon Dec 01 2014 22:59:54 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:06 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:18 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:30 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:42 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:54 GMT-0800 (PST)'
]
*/
```
The `start` and `stop` times may be either [`Date`][mdn-date-object] objects, date strings, Unix timestamps, or JavaScript timestamps.
```javascript
// JavaScript timestamps:
var end = 1417503654973;
var start = new Date( end - 60000 );
var arr = datespace( start, end, 6 );
/* returns [
'Mon Dec 01 2014 22:59:54 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:06 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:18 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:30 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:42 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:54 GMT-0800 (PST)'
]
*/
// Unix timestamps:
end = 1417503655;
start = end - 60;
arr = datespace( start, end, 6 );
/* returns [
'Mon Dec 01 2014 22:59:54 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:06 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:18 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:30 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:42 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:54 GMT-0800 (PST)'
]
*/
```
The output `array` is guaranteed to include the `start` and `end` times. Beware, however, that values between the `start` and `end` are subject to rounding errors. For example,
```javascript
var arr = datespace( 1417503655000, 1417503655001, 3 );
// returns [ 1417503655000, 1417503655000, 1417503655001 ]
```
where sub-millisecond values are truncated by the [`Date`][mdn-date-object] constructor. Duplicate values should only be a problem when the interval separating consecutive times is less than a millisecond. As the interval separating consecutive dates goes to infinity, the quantization noise introduced by millisecond resolution is negligible.
By default, fractional timestamps are floored. To specify that timestamps always be rounded up or to the nearest millisecond **when converted to [`Date`][mdn-date-object] objects**, set the `round` option (default: `floor`).
```javascript
// Equivalent of Math.ceil():
var arr = datespace( 1417503655000, 1417503655001, 3, {
'round': 'ceil'
});
// returns [ 1417503655000, 1417503655001, 1417503655001 ]
// Equivalent of Math.round():
arr = datespace( 1417503655000, 1417503655001, 3, {
'round': 'round'
});
// returns [ 1417503655000, 1417503655001, 1417503655001 ]
```
</section>
<!-- /.usage -->
<section class="notes">
</section>
<!-- /.notes -->
<section class="examples">
## Examples
```javascript
var datespace = require( '@stdlib/array/datespace' );
var start;
var arr;
var end;
end = '2014-12-02T07:00:54.973Z';
start = new Date( end ) - 100000;
// Default behavior:
arr = datespace( start, end );
console.log( arr.join( '\n' ) );
// Specify length:
arr = datespace( start, end, 10 );
console.log( arr.join( '\n' ) );
arr = datespace( start, end, 11 );
console.log( arr.join( '\n' ) );
// Create an array with decremented values:
arr = datespace( end, start, 11 );
console.log( arr.join( '\n' ) );
```
</section>
<!-- /.examples -->
<section class="links">
[mdn-date-object]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
</section>
<!-- /.links -->

44
js/node_modules/@stdlib/array/datespace/docs/repl.txt generated vendored Normal file
View File

@ -0,0 +1,44 @@
{{alias}}( start, stop[, length][ , options] )
Generates an array of linearly spaced dates.
Parameters
----------
start: number
Start time as either a `Date` object, Unix timestamp, JavaScript
timestamp, or date string.
stop: number
Stop time as either a `Date` object, Unix timestamp, JavaScript
timestamp, or date string.
length: integer (optional)
Length of output array. Default: `100`.
options: Object (optional)
Options.
options.round: string (optional)
Specifies how sub-millisecond times should be rounded:
[ 'floor', 'ceil', 'round' ]. Default: 'floor'.
Returns
-------
arr: Array
Array of dates.
Examples
--------
> var stop = '2014-12-02T07:00:54.973Z';
> var start = new Date( stop ) - 60000;
> var arr = {{alias}}( start, stop, 6 )
[...]
// Equivalent of Math.ceil():
> var opts = { 'round': 'ceil' };
> arr = {{alias}}( 1417503655000, 1417503655001, 3, opts )
[...]
See Also
--------

View File

@ -0,0 +1,92 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// TypeScript Version: 2.0
/**
* Interface defining function options.
*/
interface Options {
/**
* Specifies how sub-millisecond times should be rounded (default: 'floor' ).
*/
round?: 'floor' | 'round' | 'ceil';
}
/**
* Generates an array of linearly spaced dates.
*
* @param start - start time as either a `Date` object, Unix timestamp, JavaScript timestamp, or date string
* @param stop - stop time as either a `Date` object, Unix timestamp, JavaScript timestamp, or date string
* @param options - function options
* @param options.round - specifies how sub-millisecond times should be rounded: [ 'floor', 'ceil', 'round' ] (default: 'floor' )
* @throws must provide valid options
* @returns array of dates
*
* @example
* var stop = '2014-12-02T07:00:54.973Z';
* var start = new Date( stop ) - 60000;
*
* var arr = datespace( start, stop, 6 );
* // returns [...]
*
* @example
* // Equivalent of Math.ceil():
* var arr = datespace( 1417503655000, 1417503655001, 3, { 'round': 'ceil' } );
* // returns [...]
*
* // Equivalent of Math.round():
* var arr = datespace( 1417503655000, 1417503655001, 3, { 'round': 'round' } );
* // returns [...]
*/
declare function datespace( start: Date | number | string, stop: Date | number | string, options?: Options ): Array<Date>; // tslint-disable-line max-line-length
/**
* Generates an array of linearly spaced dates.
*
* @param start - start time as either a `Date` object, Unix timestamp, JavaScript timestamp, or date string
* @param stop - stop time as either a `Date` object, Unix timestamp, JavaScript timestamp, or date string
* @param length - output array length (default: 100)
* @param options - function options
* @param options.round - specifies how sub-millisecond times should be rounded: [ 'floor', 'ceil', 'round' ] (default: 'floor' )
* @throws length argument must a positive integer
* @throws must provide valid options
* @returns array of dates
*
* @example
* var stop = '2014-12-02T07:00:54.973Z';
* var start = new Date( stop ) - 60000;
*
* var arr = datespace( start, stop, 6 );
* // returns [...]
*
* @example
* // Equivalent of Math.ceil():
* var arr = datespace( 1417503655000, 1417503655001, 3, { 'round': 'ceil' } );
* // returns [...]
*
* // Equivalent of Math.round():
* var arr = datespace( 1417503655000, 1417503655001, 3, { 'round': 'round' } );
* // returns [...]
*/
declare function datespace( start: Date | number | string, stop: Date | number | string, length: number, options?: Options ): Array<Date>; // tslint-disable-line max-line-length
// EXPORTS //
export = datespace;

View File

@ -0,0 +1,86 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import datespace = require( './index' );
// TESTS //
// The function returns an array of dates...
{
const stop = '2014-12-02T07:00:54.973Z';
const start = new Date( stop ).getTime() - 60000;
datespace( start, stop ); // $ExpectType Date[]
datespace( start, stop, 30 ); // $ExpectType Date[]
datespace( start, stop, { 'round': 'floor' } ); // $ExpectType Date[]
datespace( start, stop, 30, { 'round': 'floor' } ); // $ExpectType Date[]
}
// The function does not compile if provided values other `Date` objects, Unix timestamps, JavaScript timestamps, or date strings for the first two parameters...
{
const stop = '2014-12-02T07:00:54.973Z';
const start = new Date( stop ).getTime() - 60000;
datespace( true, stop ); // $ExpectError
datespace( false, stop ); // $ExpectError
datespace( null, stop ); // $ExpectError
datespace( [], stop ); // $ExpectError
datespace( {}, stop ); // $ExpectError
datespace( ( x: number ): number => x, stop ); // $ExpectError
datespace( start, true ); // $ExpectError
datespace( start, false ); // $ExpectError
datespace( start, [] ); // $ExpectError
datespace( start, {} ); // $ExpectError
datespace( start, ( x: number ): number => x ); // $ExpectError
}
// The function does not compile if provided a value other than a number or object for the third parameter...
{
const stop = '2014-12-02T07:00:54.973Z';
const start = new Date( stop ).getTime() - 60000;
datespace( start, stop, true ); // $ExpectError
datespace( start, stop, false ); // $ExpectError
datespace( start, stop, '5' ); // $ExpectError
datespace( start, stop, [] ); // $ExpectError
datespace( start, stop, ( x: number ): number => x ); // $ExpectError
}
// The compiler throws an error if the function is provided a `round` option which is not a recognized rounding procedure...
{
const stop = '2014-12-02T07:00:54.973Z';
const start = new Date( stop ).getTime() - 60000;
datespace( start, stop, { 'round': 'abc' } ); // $ExpectError
datespace( start, stop, { 'round': 123 } ); // $ExpectError
datespace( start, stop, { 'round': null } ); // $ExpectError
datespace( start, stop, { 'round': [] } ); // $ExpectError
datespace( start, stop, { 'round': {} } ); // $ExpectError
datespace( start, stop, { 'round': ( x: number ): number => x } ); // $ExpectError
datespace( start, stop, 10, { 'round': 'abc' } ); // $ExpectError
datespace( start, stop, 10, { 'round': 123 } ); // $ExpectError
datespace( start, stop, 10, { 'round': null } ); // $ExpectError
datespace( start, stop, 10, { 'round': [] } ); // $ExpectError
datespace( start, stop, 10, { 'round': {} } ); // $ExpectError
datespace( start, stop, 10, { 'round': ( x: number ): number => x } ); // $ExpectError
}
// The function does not compile if provided insufficient arguments...
{
datespace(); // $ExpectError
datespace( new Date() ); // $ExpectError
}

43
js/node_modules/@stdlib/array/datespace/lib/index.js generated vendored Normal file
View File

@ -0,0 +1,43 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
/**
* Generate an array of linearly spaced dates.
*
* @module @stdlib/array/datespace
*
* @example
* var datespace = require( '@stdlib/array/datespace' );
*
* var stop = '2014-12-02T07:00:54.973Z';
* var start = new Date( stop ) - 60000;
*
* var arr = datespace( start, stop, 6 );
* // returns [...]
*/
// MODULES //
var datespace = require( './main.js' );
// EXPORTS //
module.exports = datespace;

192
js/node_modules/@stdlib/array/datespace/lib/main.js generated vendored Normal file
View File

@ -0,0 +1,192 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MODULES //
var hasOwnProp = require( '@stdlib/assert/has-own-property' );
var isInteger = require( '@stdlib/assert/is-integer' );
var isString = require( '@stdlib/assert/is-string' ).isPrimitive;
var isObject = require( '@stdlib/assert/is-object' );
var floor = require( '@stdlib/math/base/special/floor' );
var round = require( '@stdlib/math/base/special/round' );
var ceil = require( '@stdlib/math/base/special/ceil' );
// VARIABLES //
var timestamp = /^\d{10}$|^\d{13}$/;
var rounders = [ 'floor', 'ceil', 'round' ];
// FUNCTIONS //
/**
* Validates a date parameter.
*
* @private
* @param {*} value - value to be validated
* @param {string} name - name to be used in error messages
* @throws {TypeError} value must either be a date string, Date object, Unix timestamp, or JavaScript timestamp
* @throws {Error} numeric date must be either a Unix or Javascript timestamp
* @returns {Date} validated date
*/
function validDate( value, name ) {
var type;
type = typeof value;
if ( type === 'string' ) {
value = Date.parse( value );
if ( value !== value ) {
throw new Error( 'invalid argument. Unable to parse ' + name.toLowerCase() + ' date.' );
}
value = new Date( value );
}
if ( type === 'number' ) {
if ( !timestamp.test( value ) ) {
throw new Error( 'invalid argument. Numeric ' + name.toLowerCase() + ' date must be either a Unix or Javascript timestamp.' );
}
if ( value.toString().length === 10 ) {
value *= 1000; // sec to ms
}
value = new Date( value );
}
if ( !(value instanceof Date) ) {
throw new TypeError( 'invalid argument. ' + name + ' date must either be a date string, Date object, Unix timestamp, or JavaScript timestamp.' );
}
return value;
}
// MAIN //
/**
* Generates an array of linearly spaced dates.
*
* @param {(Date|number|string)} start - start time as either a `Date` object, Unix timestamp, JavaScript timestamp, or date string
* @param {(Date|number|string)} stop - stop time as either a `Date` object, Unix timestamp, JavaScript timestamp, or date string
* @param {number} [length] - output array length (default: 100)
* @param {Object} [options] - function options
* @param {string} [options.round] - specifies how sub-millisecond times should be rounded: [ 'floor', 'ceil', 'round' ] (default: 'floor' )
* @throws {TypeError} length argument must a positive integer
* @throws {Error} must provide valid options
* @returns {Array} array of dates
*
* @example
* var stop = '2014-12-02T07:00:54.973Z';
* var start = new Date( stop ) - 60000;
*
* var arr = datespace( start, stop, 6 );
* // returns [...]
*
* @example
* // Equivalent of Math.ceil():
* var arr = datespace( 1417503655000, 1417503655001, 3, { 'round': 'ceil' } );
* // returns [...]
*
* // Equivalent of Math.round():
* arr = datespace( 1417503655000, 1417503655001, 3, { 'round': 'round' } );
* // returns [...]
*/
function datespace( start, stop, length, options ) {
var opts;
var len;
var flg;
var arr;
var end;
var fcn;
var tmp;
var d;
var i;
len = 100;
flg = true;
opts = {
'round': 'floor'
};
start = validDate( start, 'Start' );
stop = validDate( stop, 'Stop' );
if ( arguments.length > 2 ) {
if ( arguments.length === 3 ) {
if ( isObject( length ) ) {
opts = length;
} else {
len = length;
// Turn off checking the options object...
flg = false;
}
} else {
opts = options;
len = length;
}
if ( len === 0 ) {
return [];
}
if ( !isInteger( len ) || len < 0 ) {
throw new TypeError( 'invalid argument. Length must a positive integer.' );
}
if ( flg ) {
if ( !isObject( opts ) ) {
throw new TypeError( 'invalid argument. Options argument must be an object. Value: `' + opts + '`.' );
}
if ( hasOwnProp( opts, 'round' ) ) {
if ( !isString( opts.round ) ) {
throw new TypeError( 'invalid option. `round` option must be a string.' );
}
if ( rounders.indexOf( opts.round ) === -1 ) {
throw new Error( 'invalid input option. `round` option must be one of [' + rounders.join( ',' ) + '].' );
}
}
}
}
switch ( opts.round ) {
case 'round':
fcn = round;
break;
case 'ceil':
fcn = ceil;
break;
default:
case 'floor':
fcn = floor;
break;
}
// Calculate the increment...
end = len - 1;
d = ( stop.getTime() - start.getTime() ) / end;
// Build the output array...
arr = new Array( len );
tmp = start;
arr[ 0 ] = tmp;
tmp = tmp.getTime();
for ( i = 1; i < end; i++ ) {
tmp += d;
arr[ i ] = new Date( fcn( tmp ) );
}
arr[ end ] = stop;
return arr;
}
// EXPORTS //
module.exports = datespace;

64
js/node_modules/@stdlib/array/datespace/package.json generated vendored Normal file
View File

@ -0,0 +1,64 @@
{
"name": "@stdlib/array/datespace",
"version": "0.0.0",
"description": "Generate an array of linearly spaced dates.",
"license": "Apache-2.0",
"author": {
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
},
"contributors": [
{
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
}
],
"main": "./lib",
"directories": {
"benchmark": "./benchmark",
"doc": "./docs",
"example": "./examples",
"lib": "./lib",
"test": "./test"
},
"types": "./docs/types",
"scripts": {},
"homepage": "https://github.com/stdlib-js/stdlib",
"repository": {
"type": "git",
"url": "git://github.com/stdlib-js/stdlib.git"
},
"bugs": {
"url": "https://github.com/stdlib-js/stdlib/issues"
},
"dependencies": {},
"devDependencies": {},
"engines": {
"node": ">=0.10.0",
"npm": ">2.7.0"
},
"os": [
"aix",
"darwin",
"freebsd",
"linux",
"macos",
"openbsd",
"sunos",
"win32",
"windows"
],
"keywords": [
"stdlib",
"stdmath",
"utilities",
"utils",
"mathematics",
"math",
"generic",
"array",
"matlab",
"linear",
"date"
]
}

963
js/node_modules/@stdlib/array/docs/types/index.d.ts generated vendored Normal file
View File

@ -0,0 +1,963 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// TypeScript Version: 2.0
/* tslint:disable:max-line-length */
/* tslint:disable:max-file-line-count */
import ArrayBuffer = require( './../../buffer' );
import Complex64Array = require( './../../complex64' );
import Complex128Array = require( './../../complex128' );
import convertArray = require( './../../convert' );
import convertArraySame = require( './../../convert-same' );
import arrayCtors = require( './../../ctors' );
import DataView = require( './../../dataview' );
import datespace = require( './../../datespace' );
import arrayDataType = require( './../../dtype' );
import arrayDataTypes = require( './../../dtypes' );
import filledarray = require( './../../filled' );
import Float32Array = require( './../../float32' );
import Float64Array = require( './../../float64' );
import iterator2array = require( './../../from-iterator' );
import incrspace = require( './../../incrspace' );
import Int8Array = require( './../../int8' );
import Int16Array = require( './../../int16' );
import Int32Array = require( './../../int32' );
import linspace = require( './../../linspace' );
import logspace = require( './../../logspace' );
import arrayMinDataType = require( './../../min-dtype' );
import arrayNextDataType = require( './../../next-dtype' );
import typedarraypool = require( './../../pool' );
import arrayPromotionRules = require( './../../promotion-rules' );
import reviveTypedArray = require( './../../reviver' );
import arraySafeCasts = require( './../../safe-casts' );
import arraySameKindCasts = require( './../../same-kind-casts' );
import arrayShape = require( './../../shape' );
import SharedArrayBuffer = require( './../../shared-buffer' );
import circarray2iterator = require( './../../to-circular-iterator' );
import array2iterator = require( './../../to-iterator' );
import array2iteratorRight = require( './../../to-iterator-right' );
import typedarray2json = require( './../../to-json' );
import sparsearray2iterator = require( './../../to-sparse-iterator' );
import sparsearray2iteratorRight = require( './../../to-sparse-iterator-right' );
import stridedarray2iterator = require( './../../to-strided-iterator' );
import arrayview2iterator = require( './../../to-view-iterator' );
import arrayview2iteratorRight = require( './../../to-view-iterator-right' );
import typedarray = require( './../../typed' );
import typedarrayComplexCtors = require( './../../typed-complex-ctors' );
import typedarrayComplexDataTypes = require( './../../typed-complex-dtypes' );
import typedarrayCtors = require( './../../typed-ctors' );
import typedarrayDataTypes = require( './../../typed-dtypes' );
import Uint8Array = require( './../../uint8' );
import Uint8ClampedArray = require( './../../uint8c' );
import Uint16Array = require( './../../uint16' );
import Uint32Array = require( './../../uint32' );
import constants = require( '@stdlib/constants/array' );
/**
* Interface describing the `array` namespace.
*/
interface Namespace {
/**
* Constructor which returns an object used to represent a generic, fixed-length raw binary data buffer.
*/
ArrayBuffer: typeof ArrayBuffer;
/**
* 64-bit complex number array constructor.
*
* @param arg - length, typed array, array-like object, or buffer
* @param byteOffset - byte offset (default: 0)
* @param length - view length
* @throws ArrayBuffer byte length must be a multiple of `8`
* @throws array-like object and typed array input arguments must have a length which is a multiple of two
* @throws if provided only a single argument, must provide a valid argument
* @throws byte offset must be a nonnegative integer
* @throws byte offset must be a multiple of `8`
* @throws view length must be a positive multiple of `8`
* @throws must provide sufficient memory to accommodate byte offset and view length requirements
* @throws an iterator must return either a two element array containing real and imaginary components or a complex number
* @returns complex number array
*
* @example
* var arr = new ns.Complex64Array();
* // returns <ns.Complex64Array>
*
* var len = arr.length;
* // returns 0
*
* @example
* var arr = new ns.Complex64Array( 2 );
* // returns <ns.Complex64Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var arr = new ns.Complex64Array( [ 1.0, -1.0 ] );
* // returns <ns.Complex64Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new ns.Complex64Array( buf );
* // returns <ns.Complex64Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new ns.Complex64Array( buf, 8 );
* // returns <ns.Complex64Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = new ns.Complex64Array( buf, 8, 2 );
* // returns <ns.Complex64Array>
*
* var len = arr.length;
* // returns 2
*/
Complex64Array: typeof Complex64Array;
/**
* 128-bit complex number array constructor.
*
* @param arg - length, typed array, array-like object, or buffer
* @param byteOffset - byte offset (default: 0)
* @param length - view length
* @throws ArrayBuffer byte length must be a multiple of `8`
* @throws array-like object and typed array input arguments must have a length which is a multiple of two
* @throws if provided only a single argument, must provide a valid argument
* @throws byte offset must be a nonnegative integer
* @throws byte offset must be a multiple of `8`
* @throws view length must be a positive multiple of `8`
* @throws must provide sufficient memory to accommodate byte offset and view length requirements
* @throws an iterator must return either a two element array containing real and imaginary components or a complex number
* @returns complex number array
*
* @example
* var arr = new ns.Complex128Array();
* // returns <ns.Complex128Array>
*
* var len = arr.length;
* // returns 0
*
* @example
* var arr = new ns.Complex128Array( 2 );
* // returns <ns.Complex128Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var arr = new ns.Complex128Array( [ 1.0, -1.0 ] );
* // returns <ns.Complex128Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new ns.Complex128Array( buf );
* // returns <ns.Complex128Array>
*
* var len = arr.length;
* // returns 2
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 16 );
* var arr = new ns.Complex128Array( buf, 8 );
* // returns <ns.Complex128Array>
*
* var len = arr.length;
* // returns 1
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = new ns.Complex128Array( buf, 8, 2 );
* // returns <ns.Complex128Array>
*
* var len = arr.length;
* // returns 2
*/
Complex128Array: typeof Complex128Array;
/**
* Converts an array to an array of a different data type.
*
* @param x - array to convert
* @param dtype - output data type
* @returns output array
*
* @example
* var arr = [ 1.0, 2.0, 3.0, 4.0 ];
* var out = ns.convertArray( arr, 'float64' );
* // returns <Float64Array>[ 1.0, 2.0, 3.0, 4.0 ]
*/
convertArray: typeof convertArray;
/**
* Converts an array to the same data type as a second input array.
*
* @param x - array to convert
* @param y - array having the desired output data type
* @returns output array
*
* @example
* var Float64Array = require( `@stdlib/array/float64` );
*
* var y = new Float64Array( 0 );
*
* var x = [ 1.0, 2.0, 3.0, 4.0 ];
* var out = ns.convertArraySame( x, y );
* // returns <Float64Array>[ 1.0, 2.0, 3.0, 4.0 ]
*/
convertArraySame: typeof convertArraySame;
/**
* Returns an array constructor.
*
* @param dtype - data type
* @returns constructor or null
*
* @example
* var ctor = ns.arrayCtors( 'float64' );
* // returns <Function>
*
* @example
* var ctor = ns.arrayCtors( 'float' );
* // returns null
*/
arrayCtors: typeof arrayCtors;
/**
* Constructor which returns a data view representing a provided array buffer.
*/
DataView: typeof DataView;
/**
* Generates an array of linearly spaced dates.
*
* @param start - start time as either a `Date` object, Unix timestamp, JavaScript timestamp, or date string
* @param stop - stop time as either a `Date` object, Unix timestamp, JavaScript timestamp, or date string
* @param length - output array length (default: 100)
* @param options - function options
* @param options.round - specifies how sub-millisecond times should be rounded: [ 'floor', 'ceil', 'round' ] (default: 'floor' )
* @throws length argument must a positive integer
* @throws must provide valid options
* @returns array of dates
*
* @example
* var stop = '2014-12-02T07:00:54.973Z';
* var start = new Date( stop ) - 60000;
*
* var arr = ns.datespace( start, stop, 6 );
* // returns [...]
*
* @example
* // Equivalent of Math.ceil():
* var arr = ns.datespace( 1417503655000, 1417503655001, 3, { 'round': 'ceil' } );
* // returns [...]
*
* // Equivalent of Math.round():
* var arr = ns.datespace( 1417503655000, 1417503655001, 3, { 'round': 'round' } );
* // returns [...]
*/
datespace: typeof datespace;
/**
* Returns the data type of an array.
*
* ## Notes
*
* - If provided an argument having an unknown or unsupported type, the function returns `null`.
*
* @param value - input value
* @returns data type
*
* @example
* var dt = ns.arrayDataType( [ 1, 2, 3 ] );
* // returns 'generic'
*
* var dt = ns.arrayDataType( 'beep' );
* // returns null
*/
arrayDataType: typeof arrayDataType;
/**
* Returns a list of array data types.
*
* @returns list of array data types
*
* @example
* var list = ns.arrayDataTypes();
* // returns [ 'float32', 'float64', 'generic', 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c' ]
*/
arrayDataTypes: typeof arrayDataTypes;
/**
* Returns a filled typed array view of an `ArrayBuffer`.
*
* ## Notes
*
* - Creating a generic array from an `ArrayBuffer` is **not** supported.
*
* @param value - fill value
* @param buffer - `ArrayBuffer`
* @param dtype - data type (default: 'float64')
* @throws must provide a recognized data type
* @returns filled array
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = ns.filledarray( 1.0, buf );
* // returns <Float64Array>[ 1.0, 1.0, 1.0, 1.0 ]
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = ns.filledarray( 1.0, buf, 'float32' );
* // returns <Float32Array>[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 ]
*
*/
filledarray: typeof filledarray;
/**
* Typed array constructor which returns a typed array representing an array of single-precision floating-point numbers in the platform byte order.
*/
Float32Array: typeof Float32Array;
/**
* Typed array constructor which returns a typed array representing an array of double-precision floating-point numbers in the platform byte order.
*/
Float64Array: typeof Float64Array;
/**
* Creates (or fills) an array from an iterator.
*
* @param iterator - source iterator
* @param out - output array
* @param mapFcn - function to invoke for each iterated value
* @param thisArg - execution context
* @returns output array
*
* @example
* var Float64Array = require( `@stdlib/array/float64` );
* var randu = require( `@stdlib/random/iter/randu` );
*
* var iter = randu({
* 'iter': 10
* });
*
* var out = new Float64Array( 10 );
* var arr = ns.iterator2array( iter, out );
* // returns <Array>
*/
iterator2array: typeof iterator2array;
/**
* Generates a linearly spaced numeric array using a provided increment.
*
* @param x1 - first array value
* @param x2 - array element bound
* @param increment - increment (default: 1)
* @throws length of created array must be less than `4294967295` (`2**32 - 1`)
* @returns linearly spaced numeric array
*
* @example
* var arr = ns.incrspace( 0, 11, 2 );
* // returns [ 0, 2, 4, 6, 8, 10 ]
*/
incrspace: typeof incrspace;
/**
* Typed array constructor which returns a typed array representing an array of twos-complement 8-bit signed integers in the platform byte order.
*/
Int8Array: typeof Int8Array;
/**
* Typed array constructor which returns a typed array representing an array of twos-complement 16-bit signed integers in the platform byte order.
*/
Int16Array: typeof Int16Array;
/**
* Typed array constructor which returns a typed array representing an array of twos-complement 32-bit signed integers in the platform byte order.
*/
Int32Array: typeof Int32Array;
/**
* Generates a linearly spaced numeric array.
*
* @param x1 - first array value
* @param x2 - last array value
* @param len - length of output array (default: 100)
* @throws third argument must be a nonnegative integer
* @returns linearly spaced numeric array
*
* @example
* var arr = ns.linspace( 0, 100, 6 );
* // returns [ 0, 20, 40, 60, 80, 100 ]
*/
linspace: typeof linspace;
/**
* Generates a logarithmically spaced numeric array.
*
* @param a - exponent of start value
* @param b - exponent of end value
* @param len - length of output array (default: 10)
* @throws third argument must be a nonnegative integer
* @returns logarithmically spaced numeric array
*
* @example
* var arr = ns.logspace( 0, 2, 6 );
* // returns [ 1, ~2.5, ~6.31, ~15.85, ~39.81, 100 ]
*/
logspace: typeof logspace;
/**
* Returns the minimum array data type of the closest "kind" necessary for storing a provided scalar value.
*
* ## Notes
*
* - The function does *not* provide precision guarantees for non-integer-valued real numbers. In other words, the function returns the smallest possible floating-point (i.e., inexact) data type for storing numbers having decimals.
*
* @param value - scalar value
* @returns array data type
*
* @example
* var dt = ns.arrayMinDataType( 3.141592653589793 );
* // returns 'float32'
*
* @example
* var dt = ns.arrayMinDataType( 3 );
* // returns 'uint8'
*/
arrayMinDataType: typeof arrayMinDataType;
/**
* Returns the next larger array data type of the same kind.
*
* ## Notes
*
* - If not provided a data type, the function returns a table.
* - If a data type does not have a next larger data type or the next larger type is not supported, the function returns `-1`.
* - If provided an unrecognized data type, the function returns `null`.
*
* @param dtype - array data type
* @returns next larger data type(s) or null
*
* @example
* var dt = ns.arrayNextDataType( 'float32' );
* // returns 'float64'
*/
arrayNextDataType: typeof arrayNextDataType;
/**
* Returns an uninitialized typed array.
*
* ## Notes
*
* - Memory is **not** initialized.
* - Memory is lazily allocated.
* - If the function returns `null`, the function was unable to allocate a new typed array from the typed array pool (most likely due to insufficient memory).
*
* @param arg - an array length or an array-like object
* @param dtype - data type (default: 'float64')
* @returns typed array or null
*
* @example
* // Allocate an array of doubles:
* var arr = ns.typedarraypool( 5, 'float64' );
* // e.g., returns <Float64Array>[ 0.0, 0.0, 0.0, 0.0, 0.0 ]
*
* arr[ 0 ] = 3.14;
* arr[ 1 ] = 3.14;
*
* // ...
*
* // Free the allocated memory to be used in a future allocation:
* ns.typedarraypool.free( arr );
*/
typedarraypool: typeof typedarraypool;
/**
* Returns a type promotion table displaying array data types with the smallest size and closest "kind" to which array data types can be safely cast.
*
* @returns promotion rule table
*
* @example
* var table = ns.arrayPromotionRules();
* // returns {...}
*/
arrayPromotionRules: typeof arrayPromotionRules;
/**
* Revives a JSON-serialized typed array.
*
* @param key - key
* @param value - value
* @returns value or typed array
*
* @example
* var parseJSON = require( `@stdlib/utils/parse-json` );
*
* var str = '{"type":"Float64Array","data":[5,3]}';
*
* var arr = parseJSON( str, ns.reviveTypedArray );
* // returns <Float64Array>[ 5.0, 3.0 ]
*/
reviveTypedArray: typeof reviveTypedArray;
/**
* Returns a list of array data types to which a provided array data type can be safely cast.
*
* ## Notes
*
* - If not provided an array data type, the function returns a casting table.
* - If provided an unrecognized array data type, the function returns `null`.
*
* @param dtype - array data type
* @returns list of array data types or null
*
* @example
* var list = ns.arraySafeCasts( 'float32' );
* // returns [...]
*/
arraySafeCasts: typeof arraySafeCasts;
/**
* Returns a list of array data types to which a provided array data type can be safely cast or cast within the same "kind".
*
* ## Notes
*
* - If not provided an array data type, the function returns a casting table.
* - If provided an unrecognized array data type, the function returns `null`.
*
* @param dtype - array data type
* @returns list of array data types or null
*
* @example
* var list = ns.arraySameKindCasts( 'float32' );
* // returns [...]
*/
arraySameKindCasts: typeof arraySameKindCasts;
/**
* Determines (nested) array dimensions.
*
* @param arr - array
* @returns array shape
*
* @example
* var arr = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ];
*
* var shape = ns.arrayShape( arr );
* // returns [ 3, 3 ]
*
* @example
* var arr = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8 ] ];
*
* var shape = ns.arrayShape( arr );
* // returns [ 3 ]
*
* @example
* var arr = [ [ 1, 2, 3 ], [ 4, 5, 6 ], null ];
*
* var shape = ns.arrayShape( arr );
* // returns [ 3 ]
*/
arrayShape: typeof arrayShape;
/**
* Constructor returning an object used to represent a generic, fixed-length raw binary data buffer which can be used to create views of shared memory.
*/
SharedArrayBuffer: typeof SharedArrayBuffer;
/**
* Returns an iterator which repeatedly iterates over each element in an array-like object.
*
* @param src - input value
* @param options - function options
* @param options.iter - number of iterations
* @param options.dir - iteration direction
* @param mapFcn - function to invoke for each iterated value
* @param thisArg - execution context
* @throws must provide valid options
* @returns iterator
*
* @example
* var opts = {
* 'dir': -1
* };
* var it = ns.circarray2iterator( [ 1, 2, 3, 4 ], opts );
* // returns <Object>
*
* var v = it.next().value;
* // returns 4
*
* v = it.next().value;
* // returns 3
*
* v = it.next().value;
* // returns 2
*/
circarray2iterator: typeof circarray2iterator;
/**
* Returns an iterator which iterates over each element in an array-like object.
*
* @param src - input value
* @param mapFc - function to invoke for each iterated value
* @param thisArg - execution context
* @returns iterator
*
* @example
* var iter = ns.array2iterator( [ 1, 2, 3, 4 ] );
*
* var v = iter.next().value;
* // returns 1
*
* v = iter.next().value;
* // returns 2
*
* v = iter.next().value;
* // returns 3
*
* // ...
*/
array2iterator: typeof array2iterator;
/**
* Returns an iterator which iterates from right to left over each element in an array-like object.
*
* ## Notes
*
* - For dynamic array resizing, the only behavior made intentionally consistent with iterating from left to right is when elements are pushed onto the beginning (end) of an array. In other words, iterating from left to right combined with `[].push()` is consistent with iterating from right to left combined with `[].unshift()`.
*
* @param src - input value
* @param mapFcn - function to invoke for each iterated value
* @param thisArg - execution context
* @returns iterator
*
* @example
* var iter = ns.array2iteratorRight( [ 1, 2, 3, 4 ] );
*
* var v = iter.next().value;
* // returns 4
*
* v = iter.next().value;
* // returns 3
*
* v = iter.next().value;
* // returns 2
*
* // ...
*/
array2iteratorRight: typeof array2iteratorRight;
/**
* Returns a JSON representation of a typed array.
*
* ## Notes
*
* - We build a JSON object representing a typed array similar to how Node.js `Buffer` objects are represented. See [Buffer][1].
*
* [1]: https://nodejs.org/api/buffer.html#buffer_buf_tojson
*
* @param arr - typed array to serialize
* @returns JSON representation
*
* @example
* var Float64Array = require( `@stdlib/array/float64` );
*
* var arr = new Float64Array( [ 5.0, 3.0 ] );
* var json = ns.typedarray2json( arr );
* // returns { 'type': 'Float64Array', 'data': [ 5.0, 3.0 ] }
*/
typedarray2json: typeof typedarray2json;
/**
* Returns an iterator which iterates over each element in a sparse array-like object.
*
* @param src - input value
* @param mapFcn - function to invoke for each iterated value
* @param thisArg - execution context
* @returns iterator
*
* @example
* var iter = ns.sparsearray2iterator( [ 1, , 3, 4 ] );
*
* var v = iter.next().value;
* // returns 1
*
* v = iter.next().value;
* // returns 3
*
* v = iter.next().value;
* // returns 4
*/
sparsearray2iterator: typeof sparsearray2iterator;
/**
* Returns an iterator which iterates from right to left over each element in a sparse array-like object.
*
* ## Notes
*
* - For dynamic array resizing, the only behavior made intentionally consistent with iterating from left to right is when elements are pushed onto the beginning (end) of an array. In other words, iterating from left to right combined with `[].push()` is consistent with iterating from right to left combined with `[].unshift()`.
*
* @param src - input value
* @param mapFcn - function to invoke for each iterated value
* @param thisArg - execution context
* @returns iterator
*
* @example
* var iter = ns.sparsearray2iteratorRight( [ 1, , 3, 4 ] );
*
* var v = iter.next().value;
* // returns 4
*
* v = iter.next().value;
* // returns 3
*
* v = iter.next().value;
* // returns 1
*/
sparsearray2iteratorRight: typeof sparsearray2iteratorRight;
/**
* Returns an iterator which iterates over elements in an array-like object according to specified stride parameters.
*
* @param N - number of values to iterate
* @param src - input value
* @param stride - stride length
* @param offset - starting index
* @param mapFcn - function to invoke for each iterated value
* @param thisArg - execution context
* @throws first argument must be a nonnegative integer
* @throws third argument must be an integer
* @throws fourth argument must be a nonnegative integer
* @returns iterator
*
* @example
* var values = [ 1, 2, 3, 4, 5, 6, 7, 8 ];
*
* var N = 4;
* var stride = -2;
* var offset = 6;
*
* var iter = ns.stridedarray2iterator( N, values, stride, offset );
*
* var v = iter.next().value;
* // returns 7
*
* v = iter.next().value;
* // returns 5
*
* v = iter.next().value;
* // returns 3
*
* // ...
*/
stridedarray2iterator: typeof stridedarray2iterator;
/**
* Returns an iterator which iterates over each element in an array-like object view.
*
* @param src - input value
* @param begin - starting index (inclusive) (default: 0)
* @param end - ending index (non-inclusive) (default: src.length)
* @param mapFcn - function to invoke for each iterated value
* @param thisArg - execution context
* @returns iterator
*
* @example
* var iter = ns.arrayview2iterator( [ 1, 2, 3, 4 ], 1, 3 );
*
* var v = iter.next().value;
* // returns 2
*
* v = iter.next().value;
* // returns 3
*
* var bool = iter.next().done;
* // returns true
*/
arrayview2iterator: typeof arrayview2iterator;
/**
* Returns an iterator which iterates from right to left over each element in an array-like object view.
*
* @param src - input value
* @param begin - starting **view** index (inclusive) (default: 0)
* @param end - ending **view** index (non-inclusive) (default: src.length)
* @param mapFcn - function to invoke for each iterated value
* @param thisArg - execution context
* @returns iterator
*
* @example
* var iter = ns.arrayview2iteratorRight( [ 1, 2, 3, 4 ], 1, 3 );
*
* var v = iter.next().value;
* // returns 3
*
* v = iter.next().value;
* // returns 2
*
* var bool = iter.next().done;
* // returns true
*/
arrayview2iteratorRight: typeof arrayview2iteratorRight;
/**
* Creates a typed array.
*
* @param buffer - underlying ArrayBuffer
* @param byteOffset - integer byte offset specifying the location of the first typed array element (default: 0)
* @param length - view length; if not provided, the view spans from the byteOffset to the end of the underlying ArrayBuffer
* @param dtype - data type (default: 'float64')
* @returns typed array
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = ns.typedarray( buf, 8, 2 );
* // returns <Float64Array>[ 0.0, 0.0 ]
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = ns.typedarray( buf, 8, 2, 'int32' );
* // returns <Int32Array>[ 0, 0 ]
*/
typedarray: typeof typedarray;
/**
* Returns a complex typed array constructor.
*
* @param dtype - data type
* @returns constructor or null
*
* @example
* var ctor = ns.typedarrayComplexCtors( 'complex128' );
* // returns <Function>
*
* @example
* var ctor = ns.typedarrayComplexCtors( 'float64' );
* // returns null
*/
typedarrayComplexCtors: typeof typedarrayComplexCtors;
/**
* Returns a list of complex typed array data types.
*
* @returns list of complex typed array data types
*
* @example
* var list = ns.typedarrayComplexDataTypes();
* // returns [ 'complex64', 'complex128' ]
*/
typedarrayComplexDataTypes: typeof typedarrayComplexDataTypes;
/**
* Returns a typed array constructor.
*
* @param dtype - data type
* @returns constructor or null
*
* @example
* var ctor = ns.typedarrayCtors( 'float64' );
* // returns <Function>
*
* @example
* var ctor = ns.typedarrayCtors( 'float' );
* // returns null
*/
typedarrayCtors: typeof typedarrayCtors;
/**
* Returns a list of typed array data types.
*
* @returns list of typed array data types
*
* @example
* var list = ns.typedarrayDataTypes();
* // returns [ 'float32', 'float64', 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c' ]
*/
typedarrayDataTypes: typeof typedarrayDataTypes;
/**
* Typed array constructor which returns a typed array representing an array of 8-bit unsigned integers in the platform byte order.
*/
Uint8Array: typeof Uint8Array;
/**
* Typed array constructor which returns a typed array representing an array of 8-bit unsigned integers in the platform byte order clamped to 0-255.
*/
Uint8ClampedArray: typeof Uint8ClampedArray;
/**
* Typed array constructor which returns a typed array representing an array of 16-bit unsigned integers in the platform byte order.
*/
Uint16Array: typeof Uint16Array;
/**
* Typed array constructor which returns a typed array representing an array of 32-bit unsigned integers in the platform byte order.
*/
Uint32Array: typeof Uint32Array;
/**
* Array constants.
*/
constants: typeof constants;
}
/**
* Arrays.
*/
declare var ns: Namespace;
// EXPORTS //
export = ns;

29
js/node_modules/@stdlib/array/docs/types/test.ts generated vendored Normal file
View File

@ -0,0 +1,29 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* tslint:disable:no-unused-expression */
import array = require( './index' );
// TESTS //
// The exported value is the expected interface...
{
array; // $ExpectType Namespace
}

131
js/node_modules/@stdlib/array/dtype/README.md generated vendored Normal file
View File

@ -0,0 +1,131 @@
<!--
@license Apache-2.0
Copyright (c) 2018 The Stdlib Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
# Data Type
> Return the data type of an array.
<!-- Section to include introductory text. Make sure to keep an empty line after the intro `section` element and another before the `/section` close. -->
<section class="intro">
</section>
<!-- /.intro -->
<!-- Package usage documentation. -->
<section class="usage">
## Usage
```javascript
var dtype = require( '@stdlib/array/dtype' );
```
#### dtype( array )
Returns the [data type][@stdlib/array/dtypes] of an `array`.
```javascript
var Float64Array = require( '@stdlib/array/float64' );
var arr = new Float64Array( 10 );
var dt = dtype( arr );
// returns 'float64'
```
If provided an argument having an unknown or unsupported [data type][@stdlib/array/dtypes], the function returns `null`.
```javascript
var dt = dtype( 'beep' );
// returns null
```
</section>
<!-- /.usage -->
<!-- Package usage notes. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="notes">
</section>
<!-- /.notes -->
<!-- Package usage examples. -->
<section class="examples">
## Examples
<!-- eslint-disable stdlib/new-cap-error -->
<!-- eslint no-undef: "error" -->
```javascript
var dtypes = require( '@stdlib/array/dtypes' );
var ctors = require( '@stdlib/array/ctors' );
var dtype = require( '@stdlib/array/dtype' );
var DTYPES;
var ctor;
var arr;
var len;
var dt;
var i;
// Get a list of supported array data types:
DTYPES = dtypes();
// Array length:
len = 10;
// For each supported data type, create an array and confirm its data type...
for ( i = 0; i < DTYPES.length; i++ ) {
ctor = ctors( DTYPES[ i ] );
arr = new ctor( len );
dt = dtype( arr );
console.log( '%s == %s => %s', DTYPES[ i ], dt, DTYPES[ i ] === dt );
}
```
</section>
<!-- /.examples -->
<!-- Section to include cited references. If references are included, add a horizontal rule *before* the section. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="references">
</section>
<!-- /.references -->
<!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="links">
[@stdlib/array/dtypes]: https://www.npmjs.com/package/@stdlib/array/tree/main/dtypes
</section>
<!-- /.links -->

28
js/node_modules/@stdlib/array/dtype/docs/repl.txt generated vendored Normal file
View File

@ -0,0 +1,28 @@
{{alias}}( array )
Returns the data type of an array.
If provided an argument having an unknown or unsupported type, the function
returns `null`.
Parameters
----------
array: any
Input value.
Returns
-------
out: string|null
Data type.
Examples
--------
> var arr = new {{alias:@stdlib/array/float64}}( 10 );
> var dt = {{alias}}( arr )
'float64'
> dt = {{alias}}( 'beep' )
null
See Also
--------

View File

@ -0,0 +1,47 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// TypeScript Version: 2.0
/// <reference types="@stdlib/types"/>
import { TypedArray } from '@stdlib/types/array';
/**
* Returns the data type of an array.
*
* ## Notes
*
* - If provided an argument having an unknown or unsupported type, the function returns `null`.
*
* @param value - input value
* @returns data type
*
* @example
* var dt = dtype( [ 1, 2, 3 ] );
* // returns 'generic'
*
* var dt = dtype( 'beep' );
* // returns null
*/
declare function dtype( value: TypedArray | Array<any> ): string | null;
// EXPORTS //
export = dtype;

34
js/node_modules/@stdlib/array/dtype/docs/types/test.ts generated vendored Normal file
View File

@ -0,0 +1,34 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import dtype = require( './index' );
// TESTS //
// The function returns a string or null..
{
const x = new Float64Array( 10 );
dtype( x ); // $ExpectType string | null
}
// The compiler throws an error if the function is provided an unsupported number of arguments...
{
dtype(); // $ExpectError
dtype( [ 1, 2, 3 ], 3 ); // $ExpectError
}

40
js/node_modules/@stdlib/array/dtype/lib/ctor2dtype.js generated vendored Normal file
View File

@ -0,0 +1,40 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MAIN //
// Mapping from array constructors to data types...
var ctor2dtypes = {
'Float32Array': 'float32',
'Float64Array': 'float64',
'Array': 'generic',
'Int16Array': 'int16',
'Int32Array': 'int32',
'Int8Array': 'int8',
'Uint16Array': 'uint16',
'Uint32Array': 'uint32',
'Uint8Array': 'uint8',
'Uint8ClampedArray': 'uint8c'
};
// EXPORTS //
module.exports = ctor2dtypes;

52
js/node_modules/@stdlib/array/dtype/lib/ctors.js generated vendored Normal file
View File

@ -0,0 +1,52 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MODULES //
var Float64Array = require( './../../float64' );
var Float32Array = require( './../../float32' );
var Uint32Array = require( './../../uint32' );
var Int32Array = require( './../../int32' );
var Uint16Array = require( './../../uint16' );
var Int16Array = require( './../../int16' );
var Uint8Array = require( './../../uint8' );
var Uint8ClampedArray = require( './../../uint8c' );
var Int8Array = require( './../../int8' );
// MAIN //
// Note: order should match `dtypes` order
var CTORS = [
Float64Array,
Float32Array,
Int32Array,
Uint32Array,
Int16Array,
Uint16Array,
Int8Array,
Uint8Array,
Uint8ClampedArray
];
// EXPORTS //
module.exports = CTORS;

39
js/node_modules/@stdlib/array/dtype/lib/dtypes.js generated vendored Normal file
View File

@ -0,0 +1,39 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MAIN //
// Note: order should match `ctors` order
var DTYPES = [
'float64',
'float32',
'int32',
'uint32',
'int16',
'uint16',
'int8',
'uint8',
'uint8c'
];
// EXPORTS //
module.exports = DTYPES;

49
js/node_modules/@stdlib/array/dtype/lib/index.js generated vendored Normal file
View File

@ -0,0 +1,49 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
/**
* Return the data type of an array.
*
* @module @stdlib/array/dtype
*
* @example
* var Float64Array = require( '@stdlib/array/float64' );
* var dtype = require( '@stdlib/array/dtype' );
*
* var arr = new Float64Array( 10 );
*
* var dt = dtype( arr );
* // returns 'float64'
*
* dt = dtype( {} );
* // returns null
*
* dt = dtype( 'beep' );
* // returns null
*/
// MODULES //
var dtype = require( './main.js' );
// EXPORTS //
module.exports = dtype;

71
js/node_modules/@stdlib/array/dtype/lib/main.js generated vendored Normal file
View File

@ -0,0 +1,71 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MODULES //
var isBuffer = require( '@stdlib/assert/is-buffer' );
var isArray = require( '@stdlib/assert/is-array' );
var constructorName = require( '@stdlib/utils/constructor-name' );
var ctor2dtype = require( './ctor2dtype.js' );
var CTORS = require( './ctors.js' );
var DTYPES = require( './dtypes.js' );
// VARIABLES //
var NTYPES = DTYPES.length;
// MAIN //
/**
* Returns the data type of an array.
*
* @param {*} value - input value
* @returns {(string|null)} data type
*
* @example
* var dt = dtype( [ 1, 2, 3 ] );
* // returns 'generic'
*
* var dt = dtype( 'beep' );
* // returns null
*/
function dtype( value ) {
var i;
if ( isArray( value ) ) {
return 'generic';
}
if ( isBuffer( value ) ) {
return null;
}
for ( i = 0; i < NTYPES; i++ ) {
if ( value instanceof CTORS[ i ] ) {
return DTYPES[ i ];
}
}
// If the above failed, fall back to a more robust (and significantly slower) means for resolving underlying data types:
return ctor2dtype[ constructorName( value ) ] || null;
}
// EXPORTS //
module.exports = dtype;

66
js/node_modules/@stdlib/array/dtype/package.json generated vendored Normal file
View File

@ -0,0 +1,66 @@
{
"name": "@stdlib/array/dtype",
"version": "0.0.0",
"description": "Return the data type of an array.",
"license": "Apache-2.0",
"author": {
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
},
"contributors": [
{
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
}
],
"main": "./lib",
"directories": {
"benchmark": "./benchmark",
"doc": "./docs",
"example": "./examples",
"lib": "./lib",
"test": "./test"
},
"types": "./docs/types",
"scripts": {},
"homepage": "https://github.com/stdlib-js/stdlib",
"repository": {
"type": "git",
"url": "git://github.com/stdlib-js/stdlib.git"
},
"bugs": {
"url": "https://github.com/stdlib-js/stdlib/issues"
},
"dependencies": {},
"devDependencies": {},
"engines": {
"node": ">=0.10.0",
"npm": ">2.7.0"
},
"os": [
"aix",
"darwin",
"freebsd",
"linux",
"macos",
"openbsd",
"sunos",
"win32",
"windows"
],
"keywords": [
"stdlib",
"stdtypes",
"types",
"array",
"dtypes",
"dtype",
"data",
"type",
"utilities",
"utility",
"utils",
"util"
],
"__stdlib__": {}
}

130
js/node_modules/@stdlib/array/dtypes/README.md generated vendored Normal file
View File

@ -0,0 +1,130 @@
<!--
@license Apache-2.0
Copyright (c) 2018 The Stdlib Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
# Data Types
> List of array data types.
<!-- Section to include introductory text. Make sure to keep an empty line after the intro `section` element and another before the `/section` close. -->
<section class="intro">
</section>
<!-- /.intro -->
<!-- Package usage documentation. -->
<section class="usage">
## Usage
```javascript
var dtypes = require( '@stdlib/array/dtypes' );
```
#### dtypes()
Returns a list of array data types.
```javascript
var out = dtypes();
// returns [ 'float32', 'float64', 'generic', 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c' ]
```
The output `array` contains the following data types:
- `float32`: single-precision floating-point numbers.
- `float64`: double-precision floating-point numbers.
- `generic`: values of any type.
- `int16`: signed 16-bit integers.
- `int32`: signed 32-bit integers.
- `int8`: signed 8-bit integers.
- `uint16`: unsigned 16-bit integers.
- `uint32`: unsigned 32-bit integers.
- `uint8`: unsigned 8-bit integers.
- `uint8c`: unsigned clamped 8-bit integers.
</section>
<!-- /.usage -->
<!-- Package usage notes. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="notes">
</section>
<!-- /.notes -->
<!-- Package usage examples. -->
<section class="examples">
## Examples
<!-- eslint no-undef: "error" -->
```javascript
var indexOf = require( '@stdlib/utils/index-of' );
var dtypes = require( '@stdlib/array/dtypes' );
var DTYPES = dtypes();
var bool;
function isdtype( str ) {
if ( indexOf( DTYPES, str ) === -1 ) {
return false;
}
return true;
}
bool = isdtype( 'float64' );
// returns true
bool = isdtype( 'int16' );
// returns true
bool = isdtype( 'uint8' );
// returns true
bool = isdtype( 'beep' );
// returns false
```
</section>
<!-- /.examples -->
<!-- Section to include cited references. If references are included, add a horizontal rule *before* the section. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="references">
</section>
<!-- /.references -->
<!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="links">
</section>
<!-- /.links -->

30
js/node_modules/@stdlib/array/dtypes/docs/repl.txt generated vendored Normal file
View File

@ -0,0 +1,30 @@
{{alias}}()
Returns a list of array data types.
The output array contains the following data types:
- float32: single-precision floating-point numbers.
- float64: double-precision floating-point numbers.
- generic: values of any type.
- int16: signed 16-bit integers.
- int32: signed 32-bit integers.
- int8: signed 8-bit integers.
- uint16: unsigned 16-bit integers.
- uint32: unsigned 32-bit integers.
- uint8: unsigned 8-bit integers.
- uint8c: unsigned clamped 8-bit integers.
Returns
-------
out: Array<string>
List of array data types.
Examples
--------
> var out = {{alias}}()
<Array>
See Also
--------

View File

@ -0,0 +1,35 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// TypeScript Version: 2.0
/**
* Returns a list of array data types.
*
* @returns list of array data types
*
* @example
* var list = dtypes();
* // returns [ 'float32', 'float64', 'generic', 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c' ]
*/
declare function dtypes(): Array<string>;
// EXPORTS //
export = dtypes;

View File

@ -0,0 +1,32 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import dtypes = require( './index' );
// TESTS //
// The function returns a string array..
{
dtypes(); // $ExpectType string[]
}
// The compiler throws an error if the function is provided arguments...
{
dtypes( 1 ); // $ExpectError
dtypes( 1, 2 ); // $ExpectError
}

12
js/node_modules/@stdlib/array/dtypes/lib/dtypes.json generated vendored Normal file
View File

@ -0,0 +1,12 @@
[
"float32",
"float64",
"generic",
"int16",
"int32",
"int8",
"uint16",
"uint32",
"uint8",
"uint8c"
]

40
js/node_modules/@stdlib/array/dtypes/lib/index.js generated vendored Normal file
View File

@ -0,0 +1,40 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
/**
* Return a list of array data types.
*
* @module @stdlib/array/dtypes
*
* @example
* var dtypes = require( '@stdlib/array/dtypes' );
*
* var list = dtypes();
* // returns [ 'float32', 'float64', 'generic', 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c' ]
*/
// MODULES //
var dtypes = require( './main.js' );
// EXPORTS //
module.exports = dtypes;

44
js/node_modules/@stdlib/array/dtypes/lib/main.js generated vendored Normal file
View File

@ -0,0 +1,44 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MODULES //
var DTYPES = require( './dtypes.json' );
// MAIN //
/**
* Returns a list of array data types.
*
* @returns {StringArray} list of array data types
*
* @example
* var list = dtypes();
* // returns [ 'float32', 'float64', 'generic', 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c' ]
*/
function dtypes() {
return DTYPES.slice();
}
// EXPORTS //
module.exports = dtypes;

67
js/node_modules/@stdlib/array/dtypes/package.json generated vendored Normal file
View File

@ -0,0 +1,67 @@
{
"name": "@stdlib/array/dtypes",
"version": "0.0.0",
"description": "List of array data types.",
"license": "Apache-2.0",
"author": {
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
},
"contributors": [
{
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
}
],
"main": "./lib",
"directories": {
"benchmark": "./benchmark",
"doc": "./docs",
"example": "./examples",
"lib": "./lib",
"test": "./test"
},
"types": "./docs/types",
"scripts": {},
"homepage": "https://github.com/stdlib-js/stdlib",
"repository": {
"type": "git",
"url": "git://github.com/stdlib-js/stdlib.git"
},
"bugs": {
"url": "https://github.com/stdlib-js/stdlib/issues"
},
"dependencies": {},
"devDependencies": {},
"engines": {
"node": ">=0.10.0",
"npm": ">2.7.0"
},
"os": [
"aix",
"darwin",
"freebsd",
"linux",
"macos",
"openbsd",
"sunos",
"win32",
"windows"
],
"keywords": [
"stdlib",
"stdtypes",
"types",
"typed",
"array",
"dtypes",
"dtype",
"data",
"type",
"utilities",
"utility",
"utils",
"util"
],
"__stdlib__": {}
}

223
js/node_modules/@stdlib/array/filled/README.md generated vendored Normal file
View File

@ -0,0 +1,223 @@
<!--
@license Apache-2.0
Copyright (c) 2020 The Stdlib Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
# Filled Array
> Create a filled array.
<!-- Section to include introductory text. Make sure to keep an empty line after the intro `section` element and another before the `/section` close. -->
<section class="intro">
</section>
<!-- /.intro -->
<!-- Package usage documentation. -->
<section class="usage">
## Usage
```javascript
var filledarray = require( '@stdlib/array/filled' );
```
#### filledarray( \[dtype] )
Creates a filled array having a specified data type `dtype`.
```javascript
var arr = filledarray();
// returns <Float64Array>
```
The function recognizes the following data types:
- `float64`: double-precision floating-point numbers (IEEE 754)
- `float32`: single-precision floating-point numbers (IEEE 754)
- `int32`: 32-bit two's complement signed integers
- `uint32`: 32-bit unsigned integers
- `int16`: 16-bit two's complement signed integers
- `uint16`: 16-bit unsigned integers
- `int8`: 8-bit two's complement signed integers
- `uint8`: 8-bit unsigned integers
- `uint8c`: 8-bit unsigned integers clamped to `0-255`
- `generic`: generic JavaScript values
By default, the output array data type is `float64` (i.e., a [typed array][mdn-typed-array]). To specify an alternative data type, provide a `dtype` argument.
```javascript
var arr = filledarray( 'int32' );
// returns <Int32Array>
```
#### filledarray( value, length\[, dtype] )
Returns a filled array having a specified `length`.
```javascript
var arr1 = filledarray( 1.0, 5 );
// returns <Float64Array>[ 1.0, 1.0, 1.0, 1.0, 1.0 ]
var arr2 = filledarray( 1, 5, 'uint8' );
// returns <Uint8Array>[ 1, 1, 1, 1, 1 ]
```
#### filledarray( value, array\[, dtype] )
Creates a filled array from another array (or array-like object).
```javascript
var arr0 = {
'0': 0.5,
'1': 0.5,
'2': 0.5,
'length': 3
};
var arr1 = filledarray( 1.0, arr0 );
// returns <Float64Array>[ 1.0, 1.0, 1.0 ]
var arr2 = filledarray( 2.0, arr1 );
// returns <Float64Array>[ 2.0, 2.0, 2.0 ]
var arr3 = filledarray( 3, arr1, 'int32' );
// returns <Int32Array>[ 3, 3, 3 ]
```
#### filledarray( value, iterable\[, dtype] )
Creates a filled array from an iterable.
```javascript
var iterConstant = require( '@stdlib/iter/constant' );
var it = iterConstant( 3.0, {
'iter': 3
});
var arr1 = filledarray( 1.0, it );
// returns <Float64Array>[ 1.0, 1.0, 1.0 ]
var arr2 = filledarray( 1.0, it, 'float32' );
// returns <Float32Array>[ 1.0, 1.0, 1.0 ]
```
#### filledarray( value, buffer\[, byteOffset\[, length]]\[, dtype] )
Returns a filled [typed array][mdn-typed-array] view of an [`ArrayBuffer`][mdn-arraybuffer].
```javascript
var ArrayBuffer = require( '@stdlib/array/buffer' );
var buf = new ArrayBuffer( 32 );
var arr = filledarray( 1.0, buf );
// returns <Float64Array>[ 1.0, 1.0, 1.0, 1.0 ]
buf = new ArrayBuffer( 32 );
arr = filledarray( 1.0, buf, 'float32' );
// returns <Float32Array>[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 ]
buf = new ArrayBuffer( 32 );
arr = filledarray( 1.0, buf, 16 );
// returns <Float64Array>[ 1.0, 1.0 ]
buf = new ArrayBuffer( 32 );
arr = filledarray( 1.0, buf, 16, 'float32' );
// returns <Float32Array>[ 1.0, 1.0, 1.0, 1.0 ]
buf = new ArrayBuffer( 32 );
arr = filledarray( 1.0, buf, 16, 1 );
// returns <Float64Array>[ 1.0 ]
buf = new ArrayBuffer( 32 );
arr = filledarray( 1, buf, 10, 4, 'int16' );
// returns <Int16Array>[ 1, 1, 1, 1 ]
```
</section>
<!-- /.usage -->
<!-- Package usage notes. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="notes">
## Notes
- Creating a generic [array][mdn-array] from an [`ArrayBuffer`][mdn-arraybuffer] is **not** supported.
</section>
<!-- /.notes -->
<!-- Package usage examples. -->
<section class="examples">
## Examples
<!-- eslint no-undef: "error" -->
```javascript
var discreteUniform = require( '@stdlib/random/base/discrete-uniform' );
var dtypes = require( '@stdlib/array/dtypes' );
var filledarray = require( '@stdlib/array/filled' );
// Generate a random number:
var r = discreteUniform( 0, 100 );
// Get the list of supported array data types:
var dt = dtypes();
// Generate filled arrays...
var arr;
var i;
for ( i = 0; i < dt.length; i++ ) {
arr = filledarray( r, 10, dt[ i ] );
console.log( arr );
}
```
</section>
<!-- /.examples -->
<!-- Section to include cited references. If references are included, add a horizontal rule *before* the section. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="references">
</section>
<!-- /.references -->
<!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
<section class="links">
[mdn-array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
[mdn-typed-array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray
[mdn-arraybuffer]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer
</section>
<!-- /.links -->

155
js/node_modules/@stdlib/array/filled/docs/repl.txt generated vendored Normal file
View File

@ -0,0 +1,155 @@
{{alias}}( [dtype] )
Creates a filled array.
The function supports the following data types:
- float64: double-precision floating-point numbers (IEEE 754)
- float32: single-precision floating-point numbers (IEEE 754)
- int32: 32-bit two's complement signed integers
- uint32: 32-bit unsigned integers
- int16: 16-bit two's complement signed integers
- uint16: 16-bit unsigned integers
- int8: 8-bit two's complement signed integers
- uint8: 8-bit unsigned integers
- uint8c: 8-bit unsigned integers clamped to 0-255
- generic: generic JavaScript values
The default array data type is `float64`.
Parameters
----------
dtype: string (optional)
Data type. Default: 'float64'.
Returns
-------
out: TypedArray|Array
Output array.
Examples
--------
> var arr = {{alias}}()
<Float64Array>
> arr = {{alias}}( 'float32' )
<Float32Array>
{{alias}}( value, length[, dtype] )
Returns a filled array having a specified length.
Parameters
----------
value: any
Fill value.
length: integer
Array length.
dtype: string (optional)
Data type. Default: 'float64'.
Returns
-------
out: TypedArray|Array
Output array.
Examples
--------
> var arr = {{alias}}( 1.0, 5 )
<Float64Array>[ 1.0, 1.0, 1.0, 1.0, 1.0 ]
> arr = {{alias}}( 1, 5, 'int32' )
<Int32Array>[ 1, 1, 1, 1, 1 ]
{{alias}}( value, array[, dtype] )
Creates a filled array from another array (or array-like object).
Parameters
----------
value: any
Fill value.
array: ArrayLikeObject
Array from which to generate another array.
dtype: string (optional)
Data type. Default: 'float64'.
Returns
-------
out: TypedArray|Array
Output array.
Examples
--------
> var arr1 = {{alias}}( 2.0, [ 0.5, 0.5, 0.5 ] )
<Float64Array>[ 2.0, 2.0, 2.0 ]
> var arr2 = {{alias}}( 1.0, arr1, 'float32' )
<Float32Array>[ 1.0, 1.0, 1.0 ]
{{alias}}( value, iterable[, dtype] )
Creates a filled array from an iterable.
Parameters
----------
value: any
Fill value.
iterable: Object
Iterable from which to generate an array.
dtype: string (optional)
Data type. Default: 'float64'.
Returns
-------
out: TypedArray|Array
Output array.
Examples
--------
> var arr1 = {{alias:@stdlib/iter/constant}}( 3.0, {'iter': 3} );
> var arr2 = {{alias}}( 1.0, arr1, 'float32' )
<Float32Array>[ 1.0, 1.0, 1.0 ]
{{alias}}( value, buffer[, byteOffset[, length]][, dtype] )
Returns a filled typed array view of an ArrayBuffer.
The 'generic' array data type is *not* supported.
Parameters
----------
value: any
Fill value.
buffer: ArrayBuffer
Underlying ArrayBuffer.
byteOffset: integer (optional)
Integer byte offset specifying the location of the first typed array
element. Default: 0.
length: integer (optional)
View length. If not provided, the view spans from the byteOffset to
the end of the underlying ArrayBuffer.
dtype: string (optional)
Data type. Default: 'float64'.
Returns
-------
out: TypedArray
A typed array.
Examples
--------
> var buf = new {{alias:@stdlib/array/buffer}}( 16 );
> var arr = {{alias}}( 1.0, buf, 0, 4, 'float32' )
<Float32Array>[ 1.0, 1.0, 1.0, 1.0 ]
See Also
--------

View File

@ -0,0 +1,225 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2020 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// TypeScript Version: 2.0
/// <reference types="@stdlib/types"/>
import { TypedArray } from '@stdlib/types/array';
import { Collection } from '@stdlib/types/object';
import { IterableIterator } from '@stdlib/types/iter';
/**
* Array or typed array.
*/
type ArrayOrTypedArray = Array<any> | TypedArray;
/**
* Creates a filled array.
*
* The function recognizes the following data types:
*
* - `float64`: double-precision floating-point numbers (IEEE 754)
* - `float32`: single-precision floating-point numbers (IEEE 754)
* - `int32`: 32-bit two's complement signed integers
* - `uint32`: 32-bit unsigned integers
* - `int16`: 16-bit two's complement signed integers
* - `uint16`: 16-bit unsigned integers
* - `int8`: 8-bit two's complement signed integers
* - `uint8`: 8-bit unsigned integers
* - `uint8c`: 8-bit unsigned integers clamped to `0-255`
* - `generic`: generic JavaScript values
*
* @param dtype - data type (default: 'float64')
* @throws must provide a recognized data type
* @returns filled array
*
* @example
* var arr = filledarray();
* // returns <Float64Array>
*
* @example
* var arr = filledarray( 'float32' );
* // returns <Float32Array>
*/
declare function filledarray( dtype?: string ): ArrayOrTypedArray;
/**
* Creates a filled array having a specified `length`.
*
* @param value - fill value
* @param length - array length
* @param dtype - data type (default: 'float64')
* @throws must provide a recognized data type
* @returns filled array
*
* @example
* var arr = filledarray( 1.0, 5 );
* // returns <Float64Array>[ 0.0, 0.0, 0.0, 0.0, 0.0 ]
*
* @example
* var arr = filledarray( 1.0, 5, 'float32' );
* // returns <Float32Array>[ 0.0, 0.0, 0.0, 0.0, 0.0 ]
*/
declare function filledarray( value: any, length: number, dtype?: string ): ArrayOrTypedArray; // tslint:disable-line:max-line-length
/**
* Creates a filled array from another `array`.
*
* @param value - fill value
* @param array - typed array or array-like object
* @param dtype - data type (default: 'float64')
* @throws must provide a recognized data type
* @returns filled array
*
* @example
* var arr = filledarray( 1.0, [ 5.0, -3.0, 2.0 ] );
* // returns <Float64Array>[ 1.0, 1.0, 1.0 ]
*
* @example
* var arr = filledarray( 1.0, [ 5.0, -3.0, 2.0 ], 'float32' );
* // returns <Float32Array>[ 1.0, 1.0, 1.0 ]
*/
declare function filledarray( value: any, array: Collection, dtype?: string ): ArrayOrTypedArray; // tslint:disable-line:max-line-length unified-signatures
/**
* Creates a filled array from an iterable.
*
* @param value - fill value
* @param iterable - iterable
* @param dtype - data type (default: 'float64')
* @throws must provide a recognized data type
* @returns filled array
*
* @example
* var iterConstant = require( `@stdlib/iter/constant` );
*
* var it = iterConstant( 3.0, {
* 'iter': 3
* });
* var arr = filledarray( 1.0, it );
* // returns <Float64Array>[ 1.0, 1.0, 1.0 ]
*
* @example
* var iterConstant = require( `@stdlib/iter/constant` );
*
* var it = iterConstant( 3.0, {
* 'iter': 3
* });
* var arr = filledarray( 1.0, it, 'float32' );
* // returns <Float32Array>[ 1.0, 1.0, 1.0 ]
*/
declare function filledarray( value: any, iterable: IterableIterator, dtype?: string ): ArrayOrTypedArray; // tslint:disable-line:max-line-length unified-signatures
/**
* Returns a filled typed array view of an `ArrayBuffer`.
*
* ## Notes
*
* - Creating a generic array from an `ArrayBuffer` is **not** supported.
*
* @param value - fill value
* @param buffer - `ArrayBuffer`
* @param byteOffset - byte offset
* @param length - view length
* @param dtype - data type (default: 'float64')
* @throws must provide a recognized data type
* @returns filled array
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = filledarray( 1.0, buf, 8, 2 );
* // returns <Float64Array>[ 1.0, 1.0 ]
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = filledarray( 1.0, buf, 8, 2, 'float32' );
* // returns <Float32Array>[ 1.0, 1.0 ]
*
*/
declare function filledarray( value: any, buffer: ArrayBuffer, byteOffset: number, length: number, dtype?: string ): TypedArray; // tslint:disable-line:max-line-length
/**
* Returns a filled typed array view of an `ArrayBuffer`.
*
* ## Notes
*
* - Creating a generic array from an `ArrayBuffer` is **not** supported.
*
* @param value - fill value
* @param buffer - `ArrayBuffer`
* @param byteOffset - byte offset
* @param dtype - data type (default: 'float64')
* @throws must provide a recognized data type
* @returns filled array
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = filledarray( 1.0, buf, 8 );
* // returns <Float64Array>[ 1.0, 1.0, 1.0 ]
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = filledarray( 1.0, buf, 8, 'float32' );
* // returns <Float32Array>[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 ]
*
*/
declare function filledarray( value: any, buffer: ArrayBuffer, byteOffset: number, dtype?: string ): TypedArray; // tslint:disable-line:max-line-length
/**
* Returns a filled typed array view of an `ArrayBuffer`.
*
* ## Notes
*
* - Creating a generic array from an `ArrayBuffer` is **not** supported.
*
* @param value - fill value
* @param buffer - `ArrayBuffer`
* @param dtype - data type (default: 'float64')
* @throws must provide a recognized data type
* @returns filled array
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = filledarray( 1.0, buf );
* // returns <Float64Array>[ 1.0, 1.0, 1.0, 1.0 ]
*
* @example
* var ArrayBuffer = require( `@stdlib/array/buffer` );
*
* var buf = new ArrayBuffer( 32 );
* var arr = filledarray( 1.0, buf, 'float32' );
* // returns <Float32Array>[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 ]
*
*/
declare function filledarray( value: any, buffer: ArrayBuffer, dtype?: string ): TypedArray; // tslint:disable-line:max-line-length unified-signatures
// EXPORTS //
export = filledarray;

206
js/node_modules/@stdlib/array/filled/docs/types/test.ts generated vendored Normal file
View File

@ -0,0 +1,206 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2020 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/// <reference types="@stdlib/types"/>
import { IterableIterator } from '@stdlib/types/iter';
import filledarray = require( './index' );
/**
* Returns an iterator protocol-compliant object.
*
* @returns iterator protocol-compliant object
*/
function iterator(): IterableIterator {
const obj: IterableIterator = {
[Symbol.iterator]: iterator,
'next': next
};
return obj;
}
/**
* Implements the iterator protocol `next` method.
*
* @returns iterator protocol-compliant object
*/
function next(): any {
return {
'value': 1.0,
'done': false
};
}
// TESTS //
// The function returns an array or typed array...
{
filledarray(); // $ExpectType ArrayOrTypedArray
filledarray( 'float32' ); // $ExpectType ArrayOrTypedArray
filledarray( 1.0, 10 ); // $ExpectType ArrayOrTypedArray
filledarray( 1.0, 10, 'int32' ); // $ExpectType ArrayOrTypedArray
const x = new Float64Array( 10 );
filledarray( 1.0, x ); // $ExpectType ArrayOrTypedArray
filledarray( 1.0, x, 'uint8' ); // $ExpectType ArrayOrTypedArray
const y = [ 2.0, 2.0, 2.0 ];
filledarray( 1.0, y ); // $ExpectType ArrayOrTypedArray
filledarray( 1.0, y, 'float64' ); // $ExpectType ArrayOrTypedArray
const it = iterator();
filledarray( 1.0, it ); // $ExpectType ArrayOrTypedArray
filledarray( 1.0, it, 'uint8c' ); // $ExpectType ArrayOrTypedArray
const buf = new ArrayBuffer( 32 );
filledarray( 1.0, buf ); // $ExpectType TypedArray
filledarray( 1.0, buf, 'uint32' ); // $ExpectType TypedArray
filledarray( 1.0, buf, 8 ); // $ExpectType TypedArray
filledarray( 1.0, buf, 8, 'uint16' ); // $ExpectType TypedArray
filledarray( 1.0, buf, 8, 2 ); // $ExpectType TypedArray
filledarray( 1.0, buf, 8, 2, 'int16' ); // $ExpectType TypedArray
}
// The compiler throws an error if the function is not provided a valid length, typed array, array-like object, or `ArrayBuffer` argument...
{
filledarray( 1.0, false ); // $ExpectError
filledarray( 1.0, true ); // $ExpectError
filledarray( 1.0, null ); // $ExpectError
filledarray( 1.0, {} ); // $ExpectError
filledarray( 1.0, false, 'float64' ); // $ExpectError
filledarray( 1.0, true, 'float64' ); // $ExpectError
filledarray( 1.0, null, 'float64' ); // $ExpectError
filledarray( 1.0, undefined, 'float64' ); // $ExpectError
filledarray( 1.0, {}, 'float64' ); // $ExpectError
filledarray( 1.0, '5', 8 ); // $ExpectError
filledarray( 1.0, 1.0, 8 ); // $ExpectError
filledarray( 1.0, false, 8 ); // $ExpectError
filledarray( 1.0, true, 8 ); // $ExpectError
filledarray( 1.0, null, 8 ); // $ExpectError
filledarray( 1.0, undefined, 8 ); // $ExpectError
filledarray( 1.0, [], 8 ); // $ExpectError
filledarray( 1.0, {}, 8 ); // $ExpectError
filledarray( 1.0, ( x: number ): number => x, 8 ); // $ExpectError
filledarray( 1.0, '5', 8, 'float64' ); // $ExpectError
filledarray( 1.0, 1.0, 8, 'float64' ); // $ExpectError
filledarray( 1.0, false, 8, 'float64' ); // $ExpectError
filledarray( 1.0, true, 8, 'float64' ); // $ExpectError
filledarray( 1.0, null, 8, 'float64' ); // $ExpectError
filledarray( 1.0, undefined, 8, 'float64' ); // $ExpectError
filledarray( 1.0, [], 8, 'float64' ); // $ExpectError
filledarray( 1.0, {}, 8, 'float64' ); // $ExpectError
filledarray( 1.0, ( x: number ): number => x, 8, 'float64' ); // $ExpectError
filledarray( 1.0, '5', 8, 2 ); // $ExpectError
filledarray( 1.0, 1.0, 8, 2 ); // $ExpectError
filledarray( 1.0, false, 8, 2 ); // $ExpectError
filledarray( 1.0, true, 8, 2 ); // $ExpectError
filledarray( 1.0, null, 8, 2 ); // $ExpectError
filledarray( 1.0, undefined, 8, 2 ); // $ExpectError
filledarray( 1.0, [], 8, 2 ); // $ExpectError
filledarray( 1.0, {}, 8, 2 ); // $ExpectError
filledarray( 1.0, ( x: number ): number => x, 8, 2 ); // $ExpectError
filledarray( 1.0, '5', 8, 2, 'float64' ); // $ExpectError
filledarray( 1.0, 1.0, 8, 2, 'float64' ); // $ExpectError
filledarray( 1.0, false, 8, 2, 'float64' ); // $ExpectError
filledarray( 1.0, true, 8, 2, 'float64' ); // $ExpectError
filledarray( 1.0, null, 8, 2, 'float64' ); // $ExpectError
filledarray( 1.0, undefined, 8, 2, 'float64' ); // $ExpectError
filledarray( 1.0, [], 8, 2, 'float64' ); // $ExpectError
filledarray( 1.0, {}, 8, 2, 'float64' ); // $ExpectError
filledarray( 1.0, ( x: number ): number => x, 8, 2, 'float64' ); // $ExpectError
}
// The compiler throws an error if the function is provided a byte offset argument which is not a number...
{
const buf = new ArrayBuffer( 32 );
filledarray( 1.0, buf, false ); // $ExpectError
filledarray( 1.0, buf, true ); // $ExpectError
filledarray( 1.0, buf, null ); // $ExpectError
filledarray( 1.0, buf, [] ); // $ExpectError
filledarray( 1.0, buf, {} ); // $ExpectError
filledarray( 1.0, buf, ( x: number ): number => x ); // $ExpectError
filledarray( 1.0, buf, '5', 'float64' ); // $ExpectError
filledarray( 1.0, buf, false, 'float64' ); // $ExpectError
filledarray( 1.0, buf, true, 'float64' ); // $ExpectError
filledarray( 1.0, buf, null, 'float64' ); // $ExpectError
filledarray( 1.0, buf, undefined, 'float64' ); // $ExpectError
filledarray( 1.0, buf, [], 'float64' ); // $ExpectError
filledarray( 1.0, buf, {}, 'float64' ); // $ExpectError
filledarray( 1.0, buf, ( x: number ): number => x, 'float64' ); // $ExpectError
}
// The compiler throws an error if the function is provided a view length argument which is not a number...
{
const buf = new ArrayBuffer( 32 );
filledarray( 1.0, buf, 8, false ); // $ExpectError
filledarray( 1.0, buf, 8, true ); // $ExpectError
filledarray( 1.0, buf, 8, null ); // $ExpectError
filledarray( 1.0, buf, 8, [] ); // $ExpectError
filledarray( 1.0, buf, 8, {} ); // $ExpectError
filledarray( 1.0, buf, 8, ( x: number ): number => x ); // $ExpectError
filledarray( 1.0, buf, 8, '5', 'float64' ); // $ExpectError
filledarray( 1.0, buf, 8, false, 'float64' ); // $ExpectError
filledarray( 1.0, buf, 8, true, 'float64' ); // $ExpectError
filledarray( 1.0, buf, 8, null, 'float64' ); // $ExpectError
filledarray( 1.0, buf, 8, undefined, 'float64' ); // $ExpectError
filledarray( 1.0, buf, 8, [], 'float64' ); // $ExpectError
filledarray( 1.0, buf, 8, {}, 'float64' ); // $ExpectError
filledarray( 1.0, buf, 8, ( x: number ): number => x, 'float64' ); // $ExpectError
}
// The compiler throws an error if the function is not provided a third argument which is a number...
{
const buf = new ArrayBuffer( 32 );
filledarray( 1.0, buf, false ); // $ExpectError
filledarray( 1.0, buf, true ); // $ExpectError
filledarray( 1.0, buf, null ); // $ExpectError
filledarray( 1.0, buf, [] ); // $ExpectError
filledarray( 1.0, buf, {} ); // $ExpectError
filledarray( 1.0, buf, ( x: number ): number => x ); // $ExpectError
filledarray( 1.0, buf, '5', 'float64' ); // $ExpectError
filledarray( 1.0, buf, false, 'float64' ); // $ExpectError
filledarray( 1.0, buf, true, 'float64' ); // $ExpectError
filledarray( 1.0, buf, null, 'float64' ); // $ExpectError
filledarray( 1.0, buf, undefined, 'float64' ); // $ExpectError
filledarray( 1.0, buf, [], 'float64' ); // $ExpectError
filledarray( 1.0, buf, {}, 'float64' ); // $ExpectError
filledarray( 1.0, buf, ( x: number ): number => x, 'float64' ); // $ExpectError
}
// The compiler throws an error if the function is provided too many arguments...
{
const buf = new ArrayBuffer( 32 );
filledarray( 1.0, buf, 8, 2, 'float64', 1 ); // $ExpectError
}

132
js/node_modules/@stdlib/array/filled/lib/index.js generated vendored Normal file
View File

@ -0,0 +1,132 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2020 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
/**
* Create a filled array.
*
* @module @stdlib/array/filled
*
* @example
* var filledarray = require( '@stdlib/array/filled' );
*
* var arr = filledarray();
* // returns <Float64Array>
*
* @example
* var filledarray = require( '@stdlib/array/filled' );
*
* var arr = filledarray( 1.0, 2 );
* // returns <Float64Array>[ 1.0, 1.0 ]
*
* @example
* var filledarray = require( '@stdlib/array/filled' );
*
* var arr = filledarray( 1.0, 2, 'float32' );
* // returns <Float32Array>[ 1.0, 1.0 ]
*
* @example
* var filledarray = require( '@stdlib/array/filled' );
*
* var arr = filledarray( 1.0, 2, 'generic' );
* // returns [ 1.0, 1.0 ]
*
* @example
* var filledarray = require( '@stdlib/array/filled' );
*
* var arr = filledarray( 1.0, [ 0.5, 0.5 ] );
* // returns <Float64Array>[ 1.0, 1.0 ]
*
* @example
* var filledarray = require( '@stdlib/array/filled' );
*
* var arr = filledarray( 1, [ 5, -3 ], 'int32' );
* // returns <Int32Array>[ 1, 1 ]
*
* @example
* var filledarray = require( '@stdlib/array/filled' );
*
* var arr1 = filledarray( 10, [ 5, 3 ], 'int32' );
* var arr2 = filledarray( 1.0, arr1 );
* // returns <Float64Array>[ 1.0, 1.0 ]
*
* @example
* var filledarray = require( '@stdlib/array/filled' );
*
* var arr1 = filledarray( 1, [ 5, 3 ], 'int32' );
* var arr2 = filledarray( 2, arr1, 'uint32' );
* // returns <Uint32Array>[ 2, 2 ]
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
* var filledarray = require( '@stdlib/array/filled' );
*
* var buf = new ArrayBuffer( 16 );
* var arr = filledarray( 1.0, buf );
* // returns <Float64Array>[ 1.0, 1.0 ]
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
* var filledarray = require( '@stdlib/array/filled' );
*
* var buf = new ArrayBuffer( 16 );
* var arr = filledarray( 1.0, buf, 'float32' );
* // returns <Float32Array>[ 1.0, 1.0, 1.0, 1.0 ]
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
* var filledarray = require( '@stdlib/array/filled' );
*
* var buf = new ArrayBuffer( 16 );
* var arr = filledarray( 1.0, buf, 8 );
* // returns <Float64Array>[ 1.0 ]
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
* var filledarray = require( '@stdlib/array/filled' );
*
* var buf = new ArrayBuffer( 16 );
* var arr = filledarray( 1.0, buf, 8, 'float32' );
* // returns <Float32Array>[ 1.0, 1.0 ]
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
* var filledarray = require( '@stdlib/array/filled' );
*
* var buf = new ArrayBuffer( 32 );
* var arr = filledarray( 1.0, buf, 8, 2 );
* // returns <Float64Array>[ 1.0, 1.0 ]
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
* var filledarray = require( '@stdlib/array/filled' );
*
* var buf = new ArrayBuffer( 32 );
* var arr = filledarray( 1, buf, 8, 2, 'int32' );
* // returns <Int32Array>[ 1, 1 ]
*/
// MODULES //
var filledarray = require( './main.js' );
// EXPORTS //
module.exports = filledarray;

228
js/node_modules/@stdlib/array/filled/lib/main.js generated vendored Normal file
View File

@ -0,0 +1,228 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2020 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MODULES //
var isString = require( '@stdlib/assert/is-string' ).isPrimitive;
var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;
var isCollection = require( '@stdlib/assert/is-collection' );
var isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' );
var isObject = require( '@stdlib/assert/is-object' );
var isFunction = require( '@stdlib/assert/is-function' );
var hasOwnProp = require( '@stdlib/assert/has-own-property' );
var ctors = require( './../../ctors' );
var gfill = require( '@stdlib/blas/ext/base/gfill' );
var hasIteratorSymbolSupport = require( '@stdlib/assert/has-iterator-symbol-support' );
var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' );
// VARIABLES //
var HAS_ITERATOR_SYMBOL = hasIteratorSymbolSupport();
// MAIN //
/**
* Creates a filled array.
*
* @param {*} [value] - fill value
* @param {(NonNegativeInteger|TypedArray|ArrayLikeObject|ArrayBuffer)} [arg] - a length, typed array, array-like object, or buffer
* @param {NonNegativeInteger} [byteOffset=0] - byte offset
* @param {NonNegativeInteger} [length] - view length
* @param {string} [dtype="float64"] - data type
* @throws {TypeError} must provide a recognized data type
* @throws {TypeError} must provide a length, typed array, array-like object, or buffer
* @throws {Error} creating a generic array from an `ArrayBuffer` is not supported
* @returns {(TypedArray|Array)} array or typed array
*
* @example
* var arr = filledarray();
* // returns <Float64Array>
*
* @example
* var arr = filledarray( 1.0, 2 );
* // returns <Float64Array>[ 1.0, 1.0 ]
*
* @example
* var arr = filledarray( 1.0, 2, 'float32' );
* // returns <Float32Array>[ 1.0, 1.0 ]
*
* @example
* var arr = filledarray( 1.0, 2, 'generic' );
* // returns [ 1.0, 1.0 ]
*
* @example
* var arr = filledarray( 1.0, [ 0.5, 0.5 ] );
* // returns <Float64Array>[ 1.0, 1.0 ]
*
* @example
* var arr = filledarray( 1, [ 5, -3 ], 'int32' );
* // returns <Int32Array>[ 1, 1 ]
*
* @example
* var arr1 = filledarray( 2, [ 5, 3 ], 'int32' );
* var arr2 = filledarray( 1.0, arr1 );
* // returns <Float64Array>[ 1.0, 1.0 ]
*
* @example
* var arr1 = filledarray( 2, [ 5, 3 ], 'int32' );
* var arr2 = filledarray( 1, arr1, 'uint32' );
* // returns <Uint32Array>[ 1, 1 ]
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
*
* var buf = new ArrayBuffer( 16 );
* var arr = filledarray( 1.0, buf );
* // returns <Float64Array>[ 1.0, 1.0 ]
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
*
* var buf = new ArrayBuffer( 16 );
* var arr = filledarray( 1.0, buf, 'float32' );
* // returns <Float32Array>[ 1.0, 1.0, 1.0, 1.0 ]
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
*
* var buf = new ArrayBuffer( 16 );
* var arr = filledarray( 1.0, buf, 8 );
* // returns <Float64Array>[ 1.0 ]
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
*
* var buf = new ArrayBuffer( 16 );
* var arr = filledarray( 1.0, buf, 8, 'float32' );
* // returns <Float32Array>[ 1.0, 1.0 ]
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
*
* var buf = new ArrayBuffer( 32 );
* var arr = filledarray( 1.0, buf, 8, 2 );
* // returns <Float64Array>[ 1.0, 1.0 ]
*
* @example
* var ArrayBuffer = require( '@stdlib/array/buffer' );
*
* var buf = new ArrayBuffer( 32 );
* var arr = filledarray( 1, buf, 8, 2, 'int32' );
* // returns <Int32Array>[ 1, 1 ]
*/
function filledarray() {
var value;
var nargs;
var dtype;
var ctor;
var arr;
var len;
var arg;
var v;
var i;
nargs = arguments.length;
nargs -= 1;
if ( nargs >= 0 && isString( arguments[ nargs ] ) ) {
dtype = arguments[ nargs ];
nargs -= 1;
} else {
dtype = 'float64';
}
ctor = ctors( dtype );
if ( ctor === null ) {
throw new TypeError( 'invalid argument. Must provide a recognized data type. Value: `'+dtype+'`.' );
}
if ( dtype === 'generic' ) {
if ( nargs <= 0 ) {
return [];
}
value = arguments[ 0 ];
arg = arguments[ 1 ];
if ( nargs === 1 ) {
if ( isNonNegativeInteger( arg ) ) {
len = arg;
} else if ( isCollection( arg ) ) {
len = arg.length;
}
if ( len !== void 0 ) {
arr = [];
// Manually push elements in order to ensure "fast" elements...
for ( i = 0; i < len; i++ ) {
arr.push( value );
}
return arr;
}
if ( isArrayBuffer( arg ) ) {
throw new Error( 'invalid arguments. Creating a generic array from an ArrayBuffer is not supported.' );
}
if ( isObject( arg ) ) {
if ( HAS_ITERATOR_SYMBOL === false ) {
throw new TypeError( 'invalid argument. Environment lacks Symbol.iterator support. Must provide a length, typed array, or array-like object. Value: `'+arg+'`.' );
}
if ( !isFunction( arg[ ITERATOR_SYMBOL ] ) ) {
throw new TypeError( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `'+arg+'`.' );
}
arg = arg[ ITERATOR_SYMBOL ]();
if ( !isFunction( arg.next ) ) {
throw new TypeError( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable.' );
}
arr = [];
while ( true ) {
v = arg.next();
if ( hasOwnProp( v, 'value' ) ) {
arr.push( value );
}
if ( v.done ) {
break;
}
}
return arr;
}
throw new TypeError( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `'+arg+'`.' );
} else if ( isArrayBuffer( arg ) ) {
throw new Error( 'invalid arguments. Creating a generic array from an ArrayBuffer is not supported.' );
}
throw new TypeError( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `'+arg+'`.' );
}
if ( nargs <= 0 ) {
return new ctor( 0 );
}
if ( nargs === 1 ) {
arr = new ctor( arguments[1] );
} else if ( nargs === 2 ) {
arr = new ctor( arguments[1], arguments[2] );
} else {
arr = new ctor( arguments[1], arguments[2], arguments[3] );
}
value = arguments[ 0 ];
if ( arr.length > 0 && value !== 0 ) { // i.e., nonzero
gfill( arr.length, value, arr, 1 );
}
return arr;
}
// EXPORTS //
module.exports = filledarray;

99
js/node_modules/@stdlib/array/filled/package.json generated vendored Normal file
View File

@ -0,0 +1,99 @@
{
"name": "@stdlib/array/filled",
"version": "0.0.0",
"description": "Create a filled array.",
"license": "Apache-2.0",
"author": {
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
},
"contributors": [
{
"name": "The Stdlib Authors",
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
}
],
"main": "./lib",
"directories": {
"benchmark": "./benchmark",
"doc": "./docs",
"example": "./examples",
"lib": "./lib",
"test": "./test"
},
"types": "./docs/types",
"scripts": {},
"homepage": "https://github.com/stdlib-js/stdlib",
"repository": {
"type": "git",
"url": "git://github.com/stdlib-js/stdlib.git"
},
"bugs": {
"url": "https://github.com/stdlib-js/stdlib/issues"
},
"dependencies": {},
"devDependencies": {},
"engines": {
"node": ">=0.10.0",
"npm": ">2.7.0"
},
"os": [
"aix",
"darwin",
"freebsd",
"linux",
"macos",
"openbsd",
"sunos",
"win32",
"windows"
],
"keywords": [
"stdlib",
"stdtypes",
"types",
"data",
"structure",
"typed",
"array",
"typed array",
"typed-array",
"vector",
"ndarray",
"matrix",
"float64array",
"float32array",
"int32array",
"uint32array",
"int16array",
"uint16array",
"int8array",
"uint8array",
"uint8clampedarray",
"float64",
"double",
"precision",
"double-precision",
"single",
"float",
"single-precision",
"float32",
"ieee754",
"integer",
"int32",
"signed",
"unsigned",
"uint32",
"int16",
"uint16",
"int8",
"uint8",
"uint8c",
"clamped",
"short",
"long",
"generic",
"fill",
"filled"
]
}

1444
js/node_modules/@stdlib/array/float32/README.md generated vendored Normal file

File diff suppressed because it is too large Load Diff

959
js/node_modules/@stdlib/array/float32/docs/repl.txt generated vendored Normal file
View File

@ -0,0 +1,959 @@
{{alias}}()
A typed array constructor which returns a typed array representing an array
of single-precision floating-point numbers in the platform byte order.
Returns
-------
out: Float32Array
A typed array.
Examples
--------
> var arr = new {{alias}}()
<Float32Array>
{{alias}}( length )
Returns a typed array having a specified length.
Parameters
----------
length: integer
Typed array length.
Returns
-------
out: Float32Array
A typed array.
Examples
--------
> var arr = new {{alias}}( 5 )
<Float32Array>[ 0.0, 0.0, 0.0, 0.0, 0.0 ]
{{alias}}( typedarray )
Creates a typed array from another typed array.
Parameters
----------
typedarray: TypedArray
Typed array from which to generate another typed array.
Returns
-------
out: Float32Array
A typed array.
Examples
--------
> var arr1 = new {{alias:@stdlib/array/float64}}( [ 0.5, 0.5, 0.5 ] );
> var arr2 = new {{alias}}( arr1 )
<Float32Array>[ 0.5, 0.5, 0.5 ]
{{alias}}( obj )
Creates a typed array from an array-like object or iterable.
Parameters
----------
obj: Object
Array-like object or iterable from which to generate a typed array.
Returns
-------
out: Float32Array
A typed array.
Examples
--------
> var arr1 = [ 0.5, 0.5, 0.5 ];
> var arr2 = new {{alias}}( arr1 )
<Float32Array>[ 0.5, 0.5, 0.5 ]
{{alias}}( buffer[, byteOffset[, length]] )
Returns a typed array view of an ArrayBuffer.
Parameters
----------
buffer: ArrayBuffer
Underlying ArrayBuffer.
byteOffset: integer (optional)
Integer byte offset specifying the location of the first typed array
element. Default: 0.
length: integer (optional)
View length. If not provided, the view spans from the byteOffset to
the end of the underlying ArrayBuffer.
Returns
-------
out: Float32Array
A typed array.
Examples
--------
> var buf = new {{alias:@stdlib/array/buffer}}( 16 );
> var arr = new {{alias}}( buf, 0, 4 )
<Float32Array>[ 0.0, 0.0, 0.0, 0.0 ]
{{alias}}.from( src[, map[, thisArg]] )
Creates a new typed array from an array-like object or an iterable.
A callback is provided the following arguments:
- value: source value.
- index: source index.
Parameters
----------
src: ArrayLike|Iterable
Source of array elements.
map: Function (optional)
Callback to invoke for each source element.
thisArg: Any (optional)
Callback execution context.
Returns
-------
out: Float32Array
A typed array.
Examples
--------
> function mapFcn( v ) { return v * 2.0; };
> var arr = {{alias}}.from( [ 1.0, -1.0 ], mapFcn )
<Float32Array>[ 2.0, -2.0 ]
{{alias}}.of( element0[, element1[, ...elementN]] )
Creates a new typed array from a variable number of arguments.
Parameters
----------
element0: number
Array element.
element1: number (optional)
Array element.
elementN: number (optional)
Array elements.
Returns
-------
out: Float32Array
A typed array.
Examples
--------
> var arr = {{alias}}.of( 2.0, -2.0 )
<Float32Array>[ 2.0, -2.0 ]
{{alias}}.BYTES_PER_ELEMENT
Number of bytes per view element.
Examples
--------
> {{alias}}.BYTES_PER_ELEMENT
4
{{alias}}.name
Typed array constructor name.
Examples
--------
> {{alias}}.name
'Float32Array'
{{alias}}.prototype.buffer
Read-only property which returns the ArrayBuffer referenced by the typed
array.
Examples
--------
> var arr = new {{alias}}( 5 );
> arr.buffer
<ArrayBuffer>
{{alias}}.prototype.byteLength
Read-only property which returns the length (in bytes) of the typed array.
Examples
--------
> var arr = new {{alias}}( 5 );
> arr.byteLength
20
{{alias}}.prototype.byteOffset
Read-only property which returns the offset (in bytes) of the typed array
from the start of its ArrayBuffer.
Examples
--------
> var arr = new {{alias}}( 5 );
> arr.byteOffset
0
{{alias}}.prototype.BYTES_PER_ELEMENT
Number of bytes per view element.
Examples
--------
> var arr = new {{alias}}( 5 );
> arr.BYTES_PER_ELEMENT
4
{{alias}}.prototype.length
Read-only property which returns the number of view elements.
Examples
--------
> var arr = new {{alias}}( 5 );
> arr.length
5
{{alias}}.prototype.copyWithin( target, start[, end] )
Copies a sequence of elements within the array starting at `start` and
ending at `end` (non-inclusive) to the position starting at `target`.
Parameters
----------
target: integer
Target start index position.
start: integer
Source start index position.
end: integer (optional)
Source end index position. Default: out.length.
Returns
-------
out: Float32Array
Modified array.
Examples
--------
> var arr = new {{alias}}( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] );
> arr.copyWithin( 3, 0, 2 );
> arr[ 3 ]
2.0
> arr[ 4 ]
-2.0
{{alias}}.prototype.entries()
Returns an iterator for iterating over array key-value pairs.
Returns
-------
iter: Iterator
Iterator for iterating over array key-value pairs.
Examples
--------
> var arr = new {{alias}}( [ 1.0, -1.0 ] );
> it = arr.entries();
> it.next().value
[ 0, 1.0 ]
> it.next().value
[ 1, -1.0 ]
> it.next().done
true
{{alias}}.prototype.every( predicate[, thisArg] )
Tests whether all array elements pass a test implemented by a predicate
function.
A predicate function is provided the following arguments:
- value: array element.
- index: array index.
- arr: array on which the method is invoked.
Parameters
----------
predicate: Function
Predicate function which tests array elements. If a predicate function
returns a truthy value, an array element passes; otherwise, an array
element fails.
thisArg: Any (optional)
Callback execution context.
Returns
-------
bool: boolean
Boolean indicating whether all array elements pass.
Examples
--------
> var arr = new {{alias}}( [ 1.0, -1.0 ] );
> function predicate( v ) { return ( v >= 0.0 ); };
> arr.every( predicate )
false
{{alias}}.prototype.fill( value[, start[, end]] )
Fills an array from a start index to an end index (non-inclusive) with a
provided value.
Parameters
----------
value: number
Fill value.
start: integer (optional)
Start index. If less than zero, the start index is resolved relative to
the last array element. Default: 0.
end: integer (optional)
End index (non-inclusive). If less than zero, the end index is resolved
relative to the last array element. Default: out.length.
Returns
-------
out: Float32Array
Modified array.
Examples
--------
> var arr = new {{alias}}( [ 1.0, -1.0 ] );
> arr.fill( 2.0 );
> arr[ 0 ]
2.0
> arr[ 1 ]
2.0
{{alias}}.prototype.filter( predicate[, thisArg] )
Creates a new array which includes those elements for which a predicate
function returns a truthy value.
A predicate function is provided the following arguments:
- value: array element.
- index: array index.
- arr: array on which the method is invoked.
The returned array has the same data type as the host array.
If a predicate function does not return a truthy value for any array
element, the method returns `null`.
Parameters
----------
predicate: Function
Predicate function which filters array elements. If a predicate function
returns a truthy value, an array element is included in the output
array; otherwise, an array element is not included in the output array.
thisArg: Any (optional)
Callback execution context.
Returns
-------
out: Float32Array
A typed array.
Examples
--------
> var arr1 = new {{alias}}( [ 1.0, 0.0, -1.0 ] );
> function predicate( v ) { return ( v >= 0.0 ); };
> var arr2 = arr1.filter( predicate );
> arr2.length
2
{{alias}}.prototype.find( predicate[, thisArg] )
Returns the first array element for which a provided predicate function
returns a truthy value.
A predicate function is provided the following arguments:
- value: array element.
- index: array index.
- arr: array on which the method is invoked.
If a predicate function never returns a truthy value, the method returns
`undefined`.
Parameters
----------
predicate: Function
Predicate function which tests array elements.
thisArg: Any (optional)
Callback execution context.
Returns
-------
value: number|undefined
Array element.
Examples
--------
> var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] );
> function predicate( v ) { return ( v < 0.0 ); };
> var v = arr.find( predicate )
-1.0
{{alias}}.prototype.findIndex( predicate[, thisArg] )
Returns the index of the first array element for which a provided predicate
function returns a truthy value.
A predicate function is provided the following arguments:
- value: array element.
- index: array index.
- arr: array on which the method is invoked.
If a predicate function never returns a truthy value, the method returns
`-1`.
Parameters
----------
predicate: Function
Predicate function which tests array elements.
thisArg: Any (optional)
Callback execution context.
Returns
-------
idx: integer
Array index.
Examples
--------
> var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] );
> function predicate( v ) { return ( v < 0.0 ); };
> var idx = arr.findIndex( predicate )
2
{{alias}}.prototype.forEach( fcn[, thisArg] )
Invokes a callback for each array element.
A provided function is provided the following arguments:
- value: array element.
- index: array index.
- arr: array on which the method is invoked.
Parameters
----------
fcn: Function
Function to invoke for each array element.
thisArg: Any (optional)
Callback execution context.
Examples
--------
> var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] );
> var str = ' ';
> function fcn( v, i ) { str += i + ':' + v + ' '; };
> arr.forEach( fcn );
> str
' 0:1 1:0 2:-1 '
{{alias}}.prototype.includes( searchElement[, fromIndex] )
Returns a boolean indicating whether an array includes a search element.
The method does not distinguish between signed and unsigned zero.
Parameters
----------
searchElement: number
Search element.
fromIndex: integer (optional)
Array index from which to begin searching. If provided a negative value,
the method resolves the start index relative to the last array element.
Default: 0.
Returns
-------
bool: boolean
Boolean indicating whether an array includes a search element.
Examples
--------
> var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] );
> var bool = arr.includes( 2.0 )
false
> bool = arr.includes( -1.0 )
true
{{alias}}.prototype.indexOf( searchElement[, fromIndex] )
Returns the index of the first array element strictly equal to a search
element.
The method does not distinguish between signed and unsigned zero.
If unable to locate a search element, the method returns `-1`.
Parameters
----------
searchElement: number
Search element.
fromIndex: integer (optional)
Array index from which to begin searching. If provided a negative value,
the method resolves the start index relative to the last array element.
Default: 0.
Returns
-------
idx: integer
Array index.
Examples
--------
> var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] );
> var idx = arr.indexOf( 2.0 )
-1
> idx = arr.indexOf( -1.0 )
2
{{alias}}.prototype.join( [separator] )
Serializes an array by joining all array elements as a string.
Parameters
----------
separator: string (optional)
String delineating array elements. Default: ','.
Returns
-------
str: string
Array serialized as a string.
Examples
--------
> var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] );
> arr.join( '|' )
'1|0|-1'
{{alias}}.prototype.keys()
Returns an iterator for iterating over array keys.
Returns
-------
iter: Iterator
Iterator for iterating over array keys.
Examples
--------
> var arr = new {{alias}}( [ 1.0, -1.0 ] );
> it = arr.keys();
> it.next().value
0
> it.next().value
1
> it.next().done
true
{{alias}}.prototype.lastIndexOf( searchElement[, fromIndex] )
Returns the index of the last array element strictly equal to a search
element.
The method iterates from the last array element to the first array element.
The method does not distinguish between signed and unsigned zero.
If unable to locate a search element, the method returns `-1`.
Parameters
----------
searchElement: number
Search element.
fromIndex: integer (optional)
Array index from which to begin searching. If provided a negative value,
the method resolves the start index relative to the last array element.
Default: -1.
Returns
-------
idx: integer
array index.
Examples
--------
> var arr = new {{alias}}( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );
> var idx = arr.lastIndexOf( 2.0 )
-1
> idx = arr.lastIndexOf( 0.0 )
3
{{alias}}.prototype.map( fcn[, thisArg] )
Maps each array element to an element in a new typed array.
A provided function is provided the following arguments:
- value: array element.
- index: array index.
- arr: array on which the method is invoked.
The returned array has the same data type as the host array.
Parameters
----------
fcn: Function
Function which maps array elements to elements in the new array.
thisArg: Any (optional)
Callback execution context.
Returns
-------
out: Float32Array
A typed array.
Examples
--------
> var arr1 = new {{alias}}( [ 1.0, 0.0, -1.0 ] );
> function fcn( v ) { return v * 2.0; };
> var arr2 = arr1.map( fcn );
<Float32Array>[ 2.0, 0.0, -2.0 ]
{{alias}}.prototype.reduce( fcn[, initialValue] )
Applies a function against an accumulator and each element in an array and
returns the accumulated result.
The provided function is provided the following arguments:
- acc: accumulated result.
- value: current array element.
- index: index of the current array element.
- arr: array on which the method is invoked.
If provided an initial value, the method invokes a provided function with
the initial value as the first argument and the first array element as the
second argument.
If not provided an initial value, the method invokes a provided function
with the first array element as the first argument and the second array
element as the second argument.
Parameters
----------
fcn: Function
Function to apply.
initialValue: Any (optional)
Initial accumulation value.
Returns
-------
out: Any
Accumulated result.
Examples
--------
> var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] );
> function fcn( acc, v ) { return acc + (v*v); };
> var v = arr.reduce( fcn, 0.0 )
2.0
{{alias}}.prototype.reduceRight( fcn[, initialValue] )
Applies a function against an accumulator and each element in an array and
returns the accumulated result, iterating from right to left.
The provided function is provided the following arguments:
- acc: accumulated result.
- value: current array element.
- index: index of the current array element.
- arr: array on which the method is invoked.
If provided an initial value, the method invokes a provided function with
the initial value as the first argument and the last array element as the
second argument.
If not provided an initial value, the method invokes a provided function
with the last array element as the first argument and the second-to-last
array element as the second argument.
Parameters
----------
fcn: Function
Function to apply.
initialValue: Any (optional)
Initial accumulation value.
Returns
-------
out: Any
Accumulated result.
Examples
--------
> var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] );
> function fcn( acc, v ) { return acc + (v*v); };
> var v = arr.reduceRight( fcn, 0.0 )
2.0
{{alias}}.prototype.reverse()
Reverses an array *in-place*.
This method mutates the array on which the method is invoked.
Returns
-------
out: Float32Array
Modified array.
Examples
--------
> var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] )
<Float32Array>[ 1.0, 0.0, -1.0 ]
> arr.reverse()
<Float32Array>[ -1.0, 0.0, 1.0 ]
{{alias}}.prototype.set( arr[, offset] )
Sets array elements.
Parameters
----------
arr: ArrayLike
Source array containing array values to set.
offset: integer (optional)
Array index at which to start writing values. Default: 0.
Examples
--------
> var arr = new {{alias}}( [ 1.0, 0.0, -1.0 ] );
> arr.set( [ -2.0, 2.0 ], 1 );
> arr[ 1 ]
-2.0
> arr[ 2 ]
2.0
{{alias}}.prototype.slice( [begin[, end]] )
Copies array elements to a new array with the same underlying data type as
the host array.
If the method is unable to resolve indices to a non-empty array subsequence,
the method returns `null`.
Parameters
----------
begin: integer (optional)
Start element index (inclusive). If less than zero, the start index is
resolved relative to the last array element. Default: 0.
end: integer (optional)
End element index (exclusive). If less than zero, the end index is
resolved relative to the last array element. Default: arr.length.
Returns
-------
out: Float32Array
A typed array.
Examples
--------
> var arr1 = new {{alias}}( [ 1.0, 0.0, -1.0 ] );
> var arr2 = arr1.slice( 1 );
> arr2.length
2
> arr2[ 0 ]
0.0
> arr2[ 1 ]
-1.0
{{alias}}.prototype.some( predicate[, thisArg] )
Tests whether at least one array element passes a test implemented by a
predicate function.
A predicate function is provided the following arguments:
- value: array element.
- index: array index.
- arr: array on which the method is invoked.
Parameters
----------
predicate: Function
Predicate function which tests array elements. If a predicate function
returns a truthy value, a array element passes; otherwise, an array
element fails.
thisArg: Any (optional)
Callback execution context.
Returns
-------
bool: boolean
Boolean indicating whether at least one array element passes.
Examples
--------
> var arr = new {{alias}}( [ 1.0, -1.0 ] );
> function predicate( v ) { return ( v < 0.0 ); };
> arr.some( predicate )
true
{{alias}}.prototype.sort( [compareFunction] )
Sorts an array *in-place*.
The comparison function is provided two array elements per invocation: `a`
and `b`.
The comparison function return value determines the sort order as follows:
- If the comparison function returns a value less than zero, then the method
sorts `a` to an index lower than `b` (i.e., `a` should come *before* `b`).
- If the comparison function returns a value greater than zero, then the
method sorts `a` to an index higher than `b` (i.e., `b` should come *before*
`a`).
- If the comparison function returns zero, then the relative order of `a`
and `b` should remain unchanged.
This method mutates the array on which the method is invoked.
Parameters
----------
compareFunction: Function (optional)
Function which specifies the sort order. The default sort order is
ascending order.
Returns
-------
out: Float32Array
Modified array.
Examples
--------
> var arr = new {{alias}}( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );
> arr.sort()
<Float32Array>[ -2.0, -1.0, 0.0, 1.0, 2.0 ]
{{alias}}.prototype.subarray( [begin[, end]] )
Creates a new typed array over the same underlying ArrayBuffer and with the
same underlying data type as the host array.
If the method is unable to resolve indices to a non-empty array subsequence,
the method returns an empty typed array.
Parameters
----------
begin: integer (optional)
Start element index (inclusive). If less than zero, the start index is
resolved relative to the last array element. Default: 0.
end: integer (optional)
End element index (exclusive). If less than zero, the end index is
resolved relative to the last array element. Default: arr.length.
Returns
-------
out: Float32Array
A new typed array view.
Examples
--------
> var arr1 = new {{alias}}( [ 1.0, -1.0, 0.0, 2.0, -2.0 ] );
> var arr2 = arr1.subarray( 2 )
<Float32Array>[ 0.0, 2.0, -2.0 ]
{{alias}}.prototype.toLocaleString( [locales[, options]] )
Serializes an array as a locale-specific string.
Parameters
----------
locales: string|Array<string> (optional)
A BCP 47 language tag, or an array of such tags.
options: Object (optional)
Options.
Returns
-------
str: string
A typed array string representation.
Examples
--------
> var arr = new {{alias}}( [ 1.0, -1.0, 0.0 ] );
> arr.toLocaleString()
'1,-1,0'
{{alias}}.prototype.toString()
Serializes an array as a string.
Returns
-------
str: string
A typed array string representation.
Examples
--------
> var arr = new {{alias}}( [ 1.0, -1.0, 0.0 ] );
> arr.toString()
'1,-1,0'
{{alias}}.prototype.values()
Returns an iterator for iterating over array elements.
Returns
-------
iter: Iterator
Iterator for iterating over array elements.
Examples
--------
> var arr = new {{alias}}( [ 1.0, -1.0 ] );
> it = arr.values();
> it.next().value
1.0
> it.next().value
-1.0
> it.next().done
true
See Also
--------

View File

@ -0,0 +1,26 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// TypeScript Version: 2.0
// EXPORTS //
/**
* Typed array constructor which returns a typed array representing an array of single-precision floating-point numbers in the platform byte order.
*/
export = Float32Array;

View File

@ -0,0 +1,37 @@
/*
* @license Apache-2.0
*
* Copyright (c) 2021 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// tslint:disable: no-construct
// tslint:disable: no-unused-expression
import Float32Array = require( './index' );
// TESTS //
// The function returns a typed array instance...
{
new Float32Array( 10 ); // $ExpectType Float32Array
new Float32Array( [ 2.1, 3.9, 5.2, 7.3 ] ); // $ExpectType Float32Array
}
// The constructor function has to be invoked with `new`...
{
Float32Array( 10 ); // $ExpectError
Float32Array( [ 2.1, 3.9, 5.2, 7.3 ] ); // $ExpectError
}

View File

@ -0,0 +1,28 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2018 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
// MAIN //
var ctor = ( typeof Float32Array === 'function' ) ? Float32Array : void 0; // eslint-disable-line stdlib/require-globals
// EXPORTS //
module.exports = ctor;

Some files were not shown because too many files have changed in this diff Show More