Structure naming change
2
.github/workflows/publish.yml
vendored
@ -12,7 +12,7 @@ jobs:
|
|||||||
name: publish
|
name: publish
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [macOS-latest, windows-latest]
|
os: [ macOS-latest, windows-latest ]
|
||||||
runs-on: ${{matrix.os}}
|
runs-on: ${{matrix.os}}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the repo
|
- name: Checkout the repo
|
||||||
|
@ -4,12 +4,14 @@
|
|||||||
### Added
|
### Added
|
||||||
- ScaleOperations interface
|
- ScaleOperations interface
|
||||||
- Field extends ScaleOperations
|
- Field extends ScaleOperations
|
||||||
|
- Basic integration API
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- Exponential operations merged with hyperbolic functions
|
- Exponential operations merged with hyperbolic functions
|
||||||
- Space is replaced by Group. Space is reserved for vector spaces.
|
- Space is replaced by Group. Space is reserved for vector spaces.
|
||||||
- VectorSpace is now a vector space
|
- VectorSpace is now a vector space
|
||||||
- Buffer factories for primitives moved to MutableBuffer.Companion
|
- Buffer factories for primitives moved to MutableBuffer.Companion
|
||||||
|
- NDStructure and NDAlgebra to StructureND and AlgebraND respectively
|
||||||
|
|
||||||
### Deprecated
|
### Deprecated
|
||||||
|
|
||||||
|
@ -13,27 +13,30 @@
|
|||||||
version="1.1"><metadata
|
version="1.1"><metadata
|
||||||
id="metadata8"><rdf:RDF><cc:Work
|
id="metadata8"><rdf:RDF><cc:Work
|
||||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage"/></cc:Work></rdf:RDF></metadata>
|
||||||
id="defs6"><clipPath
|
<defs
|
||||||
|
id="defs6"><clipPath
|
||||||
id="clipPath24"
|
id="clipPath24"
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path22"
|
id="path22"
|
||||||
d="M 0,1590 H 6720 V 4400 H 0 Z" /></clipPath><clipPath
|
d="M 0,1590 H 6720 V 4400 H 0 Z" /></clipPath>
|
||||||
id="clipPath36"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath36"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path34"
|
id="path34"
|
||||||
d="M 3410,0 H 6720 V 1590 H 3410 Z" /></clipPath></defs><g
|
d="M 3410,0 H 6720 V 1590 H 3410 Z" /></clipPath></defs>
|
||||||
transform="matrix(1.3333333,0,0,-1.3333333,0,586.66667)"
|
<g
|
||||||
id="g10"><g
|
transform="matrix(1.3333333,0,0,-1.3333333,0,586.66667)"
|
||||||
|
id="g10"><g
|
||||||
transform="scale(0.1)"
|
transform="scale(0.1)"
|
||||||
id="g12"><path
|
id="g12"><path
|
||||||
id="path14"
|
id="path14"
|
||||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
d="m 1299.34,651.602 h 4653.75 v 3208.87 H 1299.34 Z" /><path
|
d="m 1299.34,651.602 h 4653.75 v 3208.87 H 1299.34 Z" /><path
|
||||||
id="path16"
|
id="path16"
|
||||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
d="m 1651.48,1093.71 h 4076.99 v 114.609 H 1651.48 Z" /><g
|
d="m 1651.48,1093.71 h 4076.99 v 114.609 H 1651.48 Z"/><g
|
||||||
id="g18"><g
|
id="g18"><g
|
||||||
clip-path="url(#clipPath24)"
|
clip-path="url(#clipPath24)"
|
||||||
id="g20"><g
|
id="g20"><g
|
||||||
transform="matrix(6720,0,0,2810.4,0,1589.6)"
|
transform="matrix(6720,0,0,2810.4,0,1589.6)"
|
||||||
@ -45,7 +48,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g30"><g
|
id="g30"><g
|
||||||
clip-path="url(#clipPath36)"
|
clip-path="url(#clipPath36)"
|
||||||
id="g32"><g
|
id="g32"><g
|
||||||
transform="matrix(3312,0,0,1591.2,3410,-1.19998)"
|
transform="matrix(3312,0,0,1591.2,3410,-1.19998)"
|
||||||
|
Before Width: | Height: | Size: 248 KiB After Width: | Height: | Size: 248 KiB |
@ -13,35 +13,37 @@
|
|||||||
version="1.1"><metadata
|
version="1.1"><metadata
|
||||||
id="metadata8"><rdf:RDF><cc:Work
|
id="metadata8"><rdf:RDF><cc:Work
|
||||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage"/></cc:Work></rdf:RDF></metadata>
|
||||||
id="defs6"><clipPath
|
<defs
|
||||||
|
id="defs6"><clipPath
|
||||||
id="clipPath32"
|
id="clipPath32"
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path30"
|
id="path30"
|
||||||
d="M 1780,1750 H 3830 V 3800 H 1780 Z" /></clipPath></defs><g
|
d="M 1780,1750 H 3830 V 3800 H 1780 Z" /></clipPath></defs>
|
||||||
transform="matrix(1.3333333,0,0,-1.3333333,0,633.33333)"
|
<g
|
||||||
id="g10"><g
|
transform="matrix(1.3333333,0,0,-1.3333333,0,633.33333)"
|
||||||
|
id="g10"><g
|
||||||
transform="scale(0.1)"
|
transform="scale(0.1)"
|
||||||
id="g12"><path
|
id="g12"><path
|
||||||
id="path14"
|
id="path14"
|
||||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
d="M 318.789,2616.17 6643.05,4723.79 c 239.45,79.76 496.44,-48.75 576.29,-288.17 79.8,-239.41 -48.72,-496.4 -288.13,-576.21 L 606.949,1751.84 c -239.449,-79.81 -496.437,48.71 -576.2888,288.12 -79.8008,239.45 48.7187,496.45 288.1288,576.21 z" /><path
|
d="M 318.789,2616.17 6643.05,4723.79 c 239.45,79.76 496.44,-48.75 576.29,-288.17 79.8,-239.41 -48.72,-496.4 -288.13,-576.21 L 606.949,1751.84 c -239.449,-79.81 -496.437,48.71 -576.2888,288.12 -79.8008,239.45 48.7187,496.45 288.1288,576.21 z" /><path
|
||||||
id="path16"
|
id="path16"
|
||||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
d="M 3751.56,538.199 6636.91,4443.95 c 109.22,147.89 316.21,178.98 464.11,69.76 147.89,-109.22 178.98,-316.21 69.76,-464.06 L 4285.43,143.91 C 4176.17,-3.98047 3969.18,-35.0781 3821.29,74.1406 3673.44,183.359 3642.3,390.309 3751.56,538.199 Z" /><path
|
d="M 3751.56,538.199 6636.91,4443.95 c 109.22,147.89 316.21,178.98 464.11,69.76 147.89,-109.22 178.98,-316.21 69.76,-464.06 L 4285.43,143.91 C 4176.17,-3.98047 3969.18,-35.0781 3821.29,74.1406 3673.44,183.359 3642.3,390.309 3751.56,538.199 Z"/><path
|
||||||
id="path18"
|
id="path18"
|
||||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
d="M 1400.43,708.48 H 6418.24 V 4168.4 H 1400.43 Z" /><path
|
d="M 1400.43,708.48 H 6418.24 V 4168.4 H 1400.43 Z"/><path
|
||||||
id="path20"
|
id="path20"
|
||||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
d="m 6145.16,1753.83 h -358.6 V 3271.02 L 5158.28,1753.83 H 5005 L 4379.69,3271.02 V 1753.83 h -358.6 v 2044.53 h 505.79 l 554.68,-1345.63 557.97,1345.63 h 505.63 z" /><path
|
d="m 6145.16,1753.83 h -358.6 V 3271.02 L 5158.28,1753.83 H 5005 L 4379.69,3271.02 V 1753.83 h -358.6 v 2044.53 h 505.79 l 554.68,-1345.63 557.97,1345.63 h 505.63 z"/><path
|
||||||
id="path22"
|
id="path22"
|
||||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
d="m 1780.12,1185.24 h 4395.94 v 123.551 H 1780.12 Z" /><path
|
d="m 1780.12,1185.24 h 4395.94 v 123.551 H 1780.12 Z"/><path
|
||||||
id="path24"
|
id="path24"
|
||||||
style="fill:none;stroke:#000000;stroke-width:22.00740051;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
style="fill:none;stroke:#000000;stroke-width:22.00740051;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
d="m 1780.12,3798.09 c 0,-2044.73 0,-2044.73 0,-2044.73 H 3824.84 L 2806.17,2778.24 3824.84,3798.09" /><g
|
d="m 1780.12,3798.09 c 0,-2044.73 0,-2044.73 0,-2044.73 H 3824.84 L 2806.17,2778.24 3824.84,3798.09"/><g
|
||||||
id="g26"><g
|
id="g26"><g
|
||||||
clip-path="url(#clipPath32)"
|
clip-path="url(#clipPath32)"
|
||||||
id="g28"><g
|
id="g28"><g
|
||||||
transform="matrix(2052,0,0,2052,1780,1748)"
|
transform="matrix(2052,0,0,2052,1780,1748)"
|
||||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
@ -13,35 +13,40 @@
|
|||||||
version="1.1"><metadata
|
version="1.1"><metadata
|
||||||
id="metadata8"><rdf:RDF><cc:Work
|
id="metadata8"><rdf:RDF><cc:Work
|
||||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage"/></cc:Work></rdf:RDF></metadata>
|
||||||
id="defs6"><clipPath
|
<defs
|
||||||
|
id="defs6"><clipPath
|
||||||
id="clipPath24"
|
id="clipPath24"
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path22"
|
id="path22"
|
||||||
d="M 0,3010 H 6470 V 4280 H 0 Z" /></clipPath><clipPath
|
d="M 0,3010 H 6470 V 4280 H 0 Z" /></clipPath>
|
||||||
id="clipPath36"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath36"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path34"
|
id="path34"
|
||||||
d="M 0,1590 H 7000 V 3010 H 0 Z" /></clipPath><clipPath
|
d="M 0,1590 H 7000 V 3010 H 0 Z" /></clipPath>
|
||||||
id="clipPath48"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath48"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path46"
|
id="path46"
|
||||||
d="m 0,1580 h 6470 v 10 H 0 Z" /></clipPath><clipPath
|
d="m 0,1580 h 6470 v 10 H 0 Z" /></clipPath>
|
||||||
id="clipPath60"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath60"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path58"
|
id="path58"
|
||||||
d="M 3280,0 H 6460 V 1580 H 3280 Z" /></clipPath></defs><g
|
d="M 3280,0 H 6460 V 1580 H 3280 Z" /></clipPath></defs>
|
||||||
transform="matrix(1.3333333,0,0,-1.3333333,0,570.66667)"
|
<g
|
||||||
id="g10"><g
|
transform="matrix(1.3333333,0,0,-1.3333333,0,570.66667)"
|
||||||
|
id="g10"><g
|
||||||
transform="scale(0.1)"
|
transform="scale(0.1)"
|
||||||
id="g12"><path
|
id="g12"><path
|
||||||
id="path14"
|
id="path14"
|
||||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
d="m 791.328,957.73 h 6401.56 V 3245.31 H 791.328 Z" /><path
|
d="m 791.328,957.73 h 6401.56 V 3245.31 H 791.328 Z" /><path
|
||||||
id="path16"
|
id="path16"
|
||||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
d="m 1049.45,1214.42 h 2988.24 v 86.9883 H 1049.45 Z" /><g
|
d="m 1049.45,1214.42 h 2988.24 v 86.9883 H 1049.45 Z"/><g
|
||||||
id="g18"><g
|
id="g18"><g
|
||||||
clip-path="url(#clipPath24)"
|
clip-path="url(#clipPath24)"
|
||||||
id="g20"><g
|
id="g20"><g
|
||||||
transform="matrix(6470.4,0,0,1272,0,3008)"
|
transform="matrix(6470.4,0,0,1272,0,3008)"
|
||||||
@ -53,7 +58,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g30"><g
|
id="g30"><g
|
||||||
clip-path="url(#clipPath36)"
|
clip-path="url(#clipPath36)"
|
||||||
id="g32"><g
|
id="g32"><g
|
||||||
transform="matrix(7000.8,0,0,1420.8,0,1589.2)"
|
transform="matrix(7000.8,0,0,1420.8,0,1589.2)"
|
||||||
@ -65,7 +70,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g42"><g
|
id="g42"><g
|
||||||
clip-path="url(#clipPath48)"
|
clip-path="url(#clipPath48)"
|
||||||
id="g44"><g
|
id="g44"><g
|
||||||
transform="matrix(6470.4,0,0,12,0,1578)"
|
transform="matrix(6470.4,0,0,12,0,1578)"
|
||||||
@ -77,7 +82,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g54"><g
|
id="g54"><g
|
||||||
clip-path="url(#clipPath60)"
|
clip-path="url(#clipPath60)"
|
||||||
id="g56"><g
|
id="g56"><g
|
||||||
transform="matrix(3180,0,0,1581.6,3280,-1.59972)"
|
transform="matrix(3180,0,0,1581.6,3280,-1.59972)"
|
||||||
|
Before Width: | Height: | Size: 278 KiB After Width: | Height: | Size: 278 KiB |
@ -13,123 +13,144 @@
|
|||||||
version="1.1"><metadata
|
version="1.1"><metadata
|
||||||
id="metadata8"><rdf:RDF><cc:Work
|
id="metadata8"><rdf:RDF><cc:Work
|
||||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage"/></cc:Work></rdf:RDF></metadata>
|
||||||
id="defs6"><clipPath
|
<defs
|
||||||
|
id="defs6"><clipPath
|
||||||
id="clipPath40"
|
id="clipPath40"
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path38"
|
id="path38"
|
||||||
d="m 2370,2780 h 1370 v 10 H 2370 Z" /></clipPath><clipPath
|
d="m 2370,2780 h 1370 v 10 H 2370 Z" /></clipPath>
|
||||||
id="clipPath52"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath52"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path50"
|
id="path50"
|
||||||
d="m 5630,2780 h 860 v 10 h -860 z" /></clipPath><clipPath
|
d="m 5630,2780 h 860 v 10 h -860 z" /></clipPath>
|
||||||
id="clipPath64"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath64"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path62"
|
id="path62"
|
||||||
d="m 970,2690 h 1300 v 90 H 970 Z" /></clipPath><clipPath
|
d="m 970,2690 h 1300 v 90 H 970 Z" /></clipPath>
|
||||||
id="clipPath76"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath76"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path74"
|
id="path74"
|
||||||
d="m 2370,2690 h 1370 v 90 H 2370 Z" /></clipPath><clipPath
|
d="m 2370,2690 h 1370 v 90 H 2370 Z" /></clipPath>
|
||||||
id="clipPath88"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath88"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path86"
|
id="path86"
|
||||||
d="m 5630,2690 h 860 v 90 h -860 z" /></clipPath><clipPath
|
d="m 5630,2690 h 860 v 90 h -860 z" /></clipPath>
|
||||||
id="clipPath100"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath100"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path98"
|
id="path98"
|
||||||
d="m 970,2460 h 1300 v 230 H 970 Z" /></clipPath><clipPath
|
d="m 970,2460 h 1300 v 230 H 970 Z" /></clipPath>
|
||||||
id="clipPath112"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath112"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path110"
|
id="path110"
|
||||||
d="m 2370,2460 h 1370 v 230 H 2370 Z" /></clipPath><clipPath
|
d="m 2370,2460 h 1370 v 230 H 2370 Z" /></clipPath>
|
||||||
id="clipPath124"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath124"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path122"
|
id="path122"
|
||||||
d="m 4900,2460 h 620 v 230 h -620 z" /></clipPath><clipPath
|
d="m 4900,2460 h 620 v 230 h -620 z" /></clipPath>
|
||||||
id="clipPath136"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath136"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path134"
|
id="path134"
|
||||||
d="m 5630,2460 h 860 v 230 h -860 z" /></clipPath><clipPath
|
d="m 5630,2460 h 860 v 230 h -860 z" /></clipPath>
|
||||||
id="clipPath148"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath148"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path146"
|
id="path146"
|
||||||
d="m 970,1480 h 1300 v 980 H 970 Z" /></clipPath><clipPath
|
d="m 970,1480 h 1300 v 980 H 970 Z" /></clipPath>
|
||||||
id="clipPath160"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath160"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path158"
|
id="path158"
|
||||||
d="m 2370,1480 h 1370 v 980 H 2370 Z" /></clipPath><clipPath
|
d="m 2370,1480 h 1370 v 980 H 2370 Z" /></clipPath>
|
||||||
id="clipPath172"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath172"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path170"
|
id="path170"
|
||||||
d="m 3920,1480 h 860 v 980 h -860 z" /></clipPath><clipPath
|
d="m 3920,1480 h 860 v 980 h -860 z" /></clipPath>
|
||||||
id="clipPath184"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath184"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path182"
|
id="path182"
|
||||||
d="m 4900,1480 h 620 v 980 h -620 z" /></clipPath><clipPath
|
d="m 4900,1480 h 620 v 980 h -620 z" /></clipPath>
|
||||||
id="clipPath196"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath196"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path194"
|
id="path194"
|
||||||
d="m 5630,1480 h 860 v 980 h -860 z" /></clipPath><clipPath
|
d="m 5630,1480 h 860 v 980 h -860 z" /></clipPath>
|
||||||
id="clipPath208"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath208"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path206"
|
id="path206"
|
||||||
d="m 2370,1470 h 1370 v 10 H 2370 Z" /></clipPath><clipPath
|
d="m 2370,1470 h 1370 v 10 H 2370 Z" /></clipPath>
|
||||||
id="clipPath220"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath220"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path218"
|
id="path218"
|
||||||
d="m 3920,1470 h 860 v 10 h -860 z" /></clipPath><clipPath
|
d="m 3920,1470 h 860 v 10 h -860 z" /></clipPath>
|
||||||
id="clipPath232"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath232"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path230"
|
id="path230"
|
||||||
d="m 4900,1470 h 620 v 10 h -620 z" /></clipPath><clipPath
|
d="m 4900,1470 h 620 v 10 h -620 z" /></clipPath>
|
||||||
id="clipPath244"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath244"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path242"
|
id="path242"
|
||||||
d="m 5630,1470 h 860 v 10 h -860 z" /></clipPath><clipPath
|
d="m 5630,1470 h 860 v 10 h -860 z" /></clipPath>
|
||||||
id="clipPath256"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath256"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path254"
|
id="path254"
|
||||||
d="m 3920,1450 h 860 v 20 h -860 z" /></clipPath><clipPath
|
d="m 3920,1450 h 860 v 20 h -860 z" /></clipPath>
|
||||||
id="clipPath268"
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"><path
|
id="clipPath268"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
id="path266"
|
id="path266"
|
||||||
d="m 4900,1450 h 620 v 20 h -620 z" /></clipPath></defs><g
|
d="m 4900,1450 h 620 v 20 h -620 z" /></clipPath></defs>
|
||||||
transform="matrix(1.3333333,0,0,-1.3333333,0,529.33333)"
|
<g
|
||||||
id="g10"><g
|
transform="matrix(1.3333333,0,0,-1.3333333,0,529.33333)"
|
||||||
|
id="g10"><g
|
||||||
transform="scale(0.1)"
|
transform="scale(0.1)"
|
||||||
id="g12"><path
|
id="g12"><path
|
||||||
id="path14"
|
id="path14"
|
||||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
d="M 265.859,2205.39 5500.51,3949.84 c 198.16,66.06 410.9,-40.31 476.99,-238.51 66.05,-198.17 -40.31,-410.86 -238.48,-476.92 L 504.379,1489.96 c -198.168,-66.05 -410.8985,40.31 -476.9571,238.48 -66.0938,198.16 40.2773,410.9 238.4371,476.95 z" /><path
|
d="M 265.859,2205.39 5500.51,3949.84 c 198.16,66.06 410.9,-40.31 476.99,-238.51 66.05,-198.17 -40.31,-410.86 -238.48,-476.92 L 504.379,1489.96 c -198.168,-66.05 -410.8985,40.31 -476.9571,238.48 -66.0938,198.16 40.2773,410.9 238.4371,476.95 z" /><path
|
||||||
id="path16"
|
id="path16"
|
||||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
d="m 3096.33,444.379 2388.2,3232.811 c 90.43,122.38 261.76,148.12 384.18,57.73 122.38,-90.39 148.13,-261.72 57.74,-384.1 L 3538.2,117.969 C 3447.77,-4.41016 3276.45,-30.1602 3154.06,60.2305 3031.64,150.66 3005.9,321.949 3096.33,444.379 Z" /><path
|
d="m 3096.33,444.379 2388.2,3232.811 c 90.43,122.38 261.76,148.12 384.18,57.73 122.38,-90.39 148.13,-261.72 57.74,-384.1 L 3538.2,117.969 C 3447.77,-4.41016 3276.45,-30.1602 3154.06,60.2305 3031.64,150.66 3005.9,321.949 3096.33,444.379 Z"/><path
|
||||||
id="path18"
|
id="path18"
|
||||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
d="m 734.691,901.211 h 5982.5 v 2109.69 h -5982.5 z" /><path
|
d="m 734.691,901.211 h 5982.5 v 2109.69 h -5982.5 z"/><path
|
||||||
id="path20"
|
id="path20"
|
||||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
d="m 3724.45,1489.53 h -225.93 v 956.09 l -395.94,-956.09 h -96.56 l -394.07,956.09 v -956.09 h -225.93 v 1288.28 h 318.59 l 349.69,-847.97 351.4,847.97 h 318.75 z" /><path
|
d="m 3724.45,1489.53 h -225.93 v 956.09 l -395.94,-956.09 h -96.56 l -394.07,956.09 v -956.09 h -225.93 v 1288.28 h 318.59 l 349.69,-847.97 351.4,847.97 h 318.75 z"/><path
|
||||||
id="path22"
|
id="path22"
|
||||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
d="M 4767.23,1489.53 H 4564.41 V 1590 c -72.11,-82.42 -172.5,-123.59 -301.25,-123.59 -85,0 -160.39,27.34 -226.09,82.03 -65.62,54.68 -98.44,130.31 -98.44,226.87 0,99.14 32.5,174.46 97.5,225.94 65.08,51.56 140.78,77.34 227.03,77.34 132.58,0 233.01,-39.92 301.25,-119.68 v 139.06 c 0,54.06 -19.96,96.48 -59.84,127.34 -39.92,30.94 -92.73,46.41 -158.44,46.41 -104.29,0 -196.33,-39.3 -276.09,-117.81 L 3986.91,2295 c 105.63,100.39 236.29,150.62 392.04,150.62 114.68,0 208.04,-27.1 280.15,-81.24 72.07,-54.07 108.13,-139.65 108.13,-256.72 z m -424.85,115.94 c 101.64,0 175.67,32.19 222.03,96.56 v 140.94 c -46.36,64.37 -120.39,96.56 -222.03,96.56 -58.04,0 -105.74,-15.47 -143.12,-46.41 -37.31,-30.85 -55.94,-71.36 -55.94,-121.56 0,-50.23 18.63,-90.47 55.94,-120.78 37.38,-30.23 85.08,-45.31 143.12,-45.31 z" /><path
|
d="M 4767.23,1489.53 H 4564.41 V 1590 c -72.11,-82.42 -172.5,-123.59 -301.25,-123.59 -85,0 -160.39,27.34 -226.09,82.03 -65.62,54.68 -98.44,130.31 -98.44,226.87 0,99.14 32.5,174.46 97.5,225.94 65.08,51.56 140.78,77.34 227.03,77.34 132.58,0 233.01,-39.92 301.25,-119.68 v 139.06 c 0,54.06 -19.96,96.48 -59.84,127.34 -39.92,30.94 -92.73,46.41 -158.44,46.41 -104.29,0 -196.33,-39.3 -276.09,-117.81 L 3986.91,2295 c 105.63,100.39 236.29,150.62 392.04,150.62 114.68,0 208.04,-27.1 280.15,-81.24 72.07,-54.07 108.13,-139.65 108.13,-256.72 z m -424.85,115.94 c 101.64,0 175.67,32.19 222.03,96.56 v 140.94 c -46.36,64.37 -120.39,96.56 -222.03,96.56 -58.04,0 -105.74,-15.47 -143.12,-46.41 -37.31,-30.85 -55.94,-71.36 -55.94,-121.56 0,-50.23 18.63,-90.47 55.94,-120.78 37.38,-30.23 85.08,-45.31 143.12,-45.31 z"/><path
|
||||||
id="path24"
|
id="path24"
|
||||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
d="m 5308.32,1466.41 c -78.55,0 -138.12,20.58 -178.75,61.71 -40.55,41.26 -60.78,100.47 -60.78,177.66 v 538.91 h -154.53 v 177.65 h 154.53 v 255 h 202.81 v -255 h 189.22 V 2244.69 H 5271.6 v -488.6 c 0,-33.55 7.7,-60.31 23.13,-80.31 15.5,-19.92 37.42,-29.84 65.78,-29.84 41.13,0 71.4,10.94 90.78,32.81 l 48.28,-152.5 c -42.5,-39.88 -106.25,-59.84 -191.25,-59.84 z" /><path
|
d="m 5308.32,1466.41 c -78.55,0 -138.12,20.58 -178.75,61.71 -40.55,41.26 -60.78,100.47 -60.78,177.66 v 538.91 h -154.53 v 177.65 h 154.53 v 255 h 202.81 v -255 h 189.22 V 2244.69 H 5271.6 v -488.6 c 0,-33.55 7.7,-60.31 23.13,-80.31 15.5,-19.92 37.42,-29.84 65.78,-29.84 41.13,0 71.4,10.94 90.78,32.81 l 48.28,-152.5 c -42.5,-39.88 -106.25,-59.84 -191.25,-59.84 z"/><path
|
||||||
id="path26"
|
id="path26"
|
||||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
d="m 6477.38,1489.53 h -202.65 v 587.19 c 0,68.2 -16.49,116.8 -49.38,145.78 -32.81,28.95 -79.49,43.44 -140,43.44 -47.62,0 -92.65,-12.27 -135.15,-36.72 -42.5,-24.49 -77.31,-54.06 -104.38,-88.75 v -650.94 h -202.66 v 1288.28 h 202.66 V 2295 c 34.77,41.13 81.45,76.48 140,106.09 58.63,29.69 122.07,44.53 190.31,44.53 200.82,0 301.25,-98.55 301.25,-295.62 z" /><path
|
d="m 6477.38,1489.53 h -202.65 v 587.19 c 0,68.2 -16.49,116.8 -49.38,145.78 -32.81,28.95 -79.49,43.44 -140,43.44 -47.62,0 -92.65,-12.27 -135.15,-36.72 -42.5,-24.49 -77.31,-54.06 -104.38,-88.75 v -650.94 h -202.66 v 1288.28 h 202.66 V 2295 c 34.77,41.13 81.45,76.48 140,106.09 58.63,29.69 122.07,44.53 190.31,44.53 200.82,0 301.25,-98.55 301.25,-295.62 z"/><path
|
||||||
id="path28"
|
id="path28"
|
||||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
d="m 973.949,1128.48 h 2769.84 v 80.6211 H 973.949 Z" /><path
|
d="m 973.949,1128.48 h 2769.84 v 80.6211 H 973.949 Z"/><path
|
||||||
id="path30"
|
id="path30"
|
||||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||||
d="m 978.828,2781.72 c 0,-1292.5 0,-1292.5 0,-1292.5 H 2262.3 l -639.45,647.85 639.45,644.65" /><path
|
d="m 978.828,2781.72 c 0,-1292.5 0,-1292.5 0,-1292.5 H 2262.3 l -639.45,647.85 639.45,644.65"/><path
|
||||||
id="path32"
|
id="path32"
|
||||||
style="fill:none;stroke:#000000;stroke-width:13.86260033;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
style="fill:none;stroke:#000000;stroke-width:13.86260033;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
d="m 978.828,2781.72 c 0,-1292.5 0,-1292.5 0,-1292.5 H 2262.3 l -639.45,647.85 639.45,644.65" /><g
|
d="m 978.828,2781.72 c 0,-1292.5 0,-1292.5 0,-1292.5 H 2262.3 l -639.45,647.85 639.45,644.65"/><g
|
||||||
id="g34"><g
|
id="g34"><g
|
||||||
clip-path="url(#clipPath40)"
|
clip-path="url(#clipPath40)"
|
||||||
id="g36"><g
|
id="g36"><g
|
||||||
transform="matrix(1370.4,0,0,12,2370,2778)"
|
transform="matrix(1370.4,0,0,12,2370,2778)"
|
||||||
@ -141,7 +162,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g46"><g
|
id="g46"><g
|
||||||
clip-path="url(#clipPath52)"
|
clip-path="url(#clipPath52)"
|
||||||
id="g48"><g
|
id="g48"><g
|
||||||
transform="matrix(861.6,0,0,12,5630,2778)"
|
transform="matrix(861.6,0,0,12,5630,2778)"
|
||||||
@ -153,7 +174,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g58"><g
|
id="g58"><g
|
||||||
clip-path="url(#clipPath64)"
|
clip-path="url(#clipPath64)"
|
||||||
id="g60"><g
|
id="g60"><g
|
||||||
transform="matrix(1300.8,0,0,91.2,970,2688.8)"
|
transform="matrix(1300.8,0,0,91.2,970,2688.8)"
|
||||||
@ -165,7 +186,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g70"><g
|
id="g70"><g
|
||||||
clip-path="url(#clipPath76)"
|
clip-path="url(#clipPath76)"
|
||||||
id="g72"><g
|
id="g72"><g
|
||||||
transform="matrix(1370.4,0,0,91.2,2370,2688.8)"
|
transform="matrix(1370.4,0,0,91.2,2370,2688.8)"
|
||||||
@ -177,7 +198,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g82"><g
|
id="g82"><g
|
||||||
clip-path="url(#clipPath88)"
|
clip-path="url(#clipPath88)"
|
||||||
id="g84"><g
|
id="g84"><g
|
||||||
transform="matrix(861.6,0,0,91.2,5630,2688.8)"
|
transform="matrix(861.6,0,0,91.2,5630,2688.8)"
|
||||||
@ -189,7 +210,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g94"><g
|
id="g94"><g
|
||||||
clip-path="url(#clipPath100)"
|
clip-path="url(#clipPath100)"
|
||||||
id="g96"><g
|
id="g96"><g
|
||||||
transform="matrix(1300.8,0,0,230.4,970,2459.6)"
|
transform="matrix(1300.8,0,0,230.4,970,2459.6)"
|
||||||
@ -201,7 +222,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g106"><g
|
id="g106"><g
|
||||||
clip-path="url(#clipPath112)"
|
clip-path="url(#clipPath112)"
|
||||||
id="g108"><g
|
id="g108"><g
|
||||||
transform="matrix(1370.4,0,0,230.4,2370,2459.6)"
|
transform="matrix(1370.4,0,0,230.4,2370,2459.6)"
|
||||||
@ -213,7 +234,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g118"><g
|
id="g118"><g
|
||||||
clip-path="url(#clipPath124)"
|
clip-path="url(#clipPath124)"
|
||||||
id="g120"><g
|
id="g120"><g
|
||||||
transform="matrix(621.6,0,0,230.4,4900,2459.6)"
|
transform="matrix(621.6,0,0,230.4,4900,2459.6)"
|
||||||
@ -225,7 +246,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g130"><g
|
id="g130"><g
|
||||||
clip-path="url(#clipPath136)"
|
clip-path="url(#clipPath136)"
|
||||||
id="g132"><g
|
id="g132"><g
|
||||||
transform="matrix(861.6,0,0,230.4,5630,2459.6)"
|
transform="matrix(861.6,0,0,230.4,5630,2459.6)"
|
||||||
@ -237,7 +258,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g142"><g
|
id="g142"><g
|
||||||
clip-path="url(#clipPath148)"
|
clip-path="url(#clipPath148)"
|
||||||
id="g144"><g
|
id="g144"><g
|
||||||
transform="matrix(1300.8,0,0,981.6,970,1478.4)"
|
transform="matrix(1300.8,0,0,981.6,970,1478.4)"
|
||||||
@ -249,7 +270,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g154"><g
|
id="g154"><g
|
||||||
clip-path="url(#clipPath160)"
|
clip-path="url(#clipPath160)"
|
||||||
id="g156"><g
|
id="g156"><g
|
||||||
transform="matrix(1370.4,0,0,981.6,2370,1478.4)"
|
transform="matrix(1370.4,0,0,981.6,2370,1478.4)"
|
||||||
@ -261,7 +282,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g166"><g
|
id="g166"><g
|
||||||
clip-path="url(#clipPath172)"
|
clip-path="url(#clipPath172)"
|
||||||
id="g168"><g
|
id="g168"><g
|
||||||
transform="matrix(861.6,0,0,981.6,3920,1478.4)"
|
transform="matrix(861.6,0,0,981.6,3920,1478.4)"
|
||||||
@ -273,7 +294,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g178"><g
|
id="g178"><g
|
||||||
clip-path="url(#clipPath184)"
|
clip-path="url(#clipPath184)"
|
||||||
id="g180"><g
|
id="g180"><g
|
||||||
transform="matrix(621.6,0,0,981.6,4900,1478.4)"
|
transform="matrix(621.6,0,0,981.6,4900,1478.4)"
|
||||||
@ -285,7 +306,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g190"><g
|
id="g190"><g
|
||||||
clip-path="url(#clipPath196)"
|
clip-path="url(#clipPath196)"
|
||||||
id="g192"><g
|
id="g192"><g
|
||||||
transform="matrix(861.6,0,0,981.6,5630,1478.4)"
|
transform="matrix(861.6,0,0,981.6,5630,1478.4)"
|
||||||
@ -297,7 +318,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g202"><g
|
id="g202"><g
|
||||||
clip-path="url(#clipPath208)"
|
clip-path="url(#clipPath208)"
|
||||||
id="g204"><g
|
id="g204"><g
|
||||||
transform="matrix(1370.4,0,0,12,2370,1468)"
|
transform="matrix(1370.4,0,0,12,2370,1468)"
|
||||||
@ -309,7 +330,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g214"><g
|
id="g214"><g
|
||||||
clip-path="url(#clipPath220)"
|
clip-path="url(#clipPath220)"
|
||||||
id="g216"><g
|
id="g216"><g
|
||||||
transform="matrix(861.6,0,0,12,3920,1468)"
|
transform="matrix(861.6,0,0,12,3920,1468)"
|
||||||
@ -321,7 +342,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g226"><g
|
id="g226"><g
|
||||||
clip-path="url(#clipPath232)"
|
clip-path="url(#clipPath232)"
|
||||||
id="g228"><g
|
id="g228"><g
|
||||||
transform="matrix(621.6,0,0,12,4900,1468)"
|
transform="matrix(621.6,0,0,12,4900,1468)"
|
||||||
@ -333,7 +354,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g238"><g
|
id="g238"><g
|
||||||
clip-path="url(#clipPath244)"
|
clip-path="url(#clipPath244)"
|
||||||
id="g240"><g
|
id="g240"><g
|
||||||
transform="matrix(861.6,0,0,12,5630,1468)"
|
transform="matrix(861.6,0,0,12,5630,1468)"
|
||||||
@ -345,7 +366,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g250"><g
|
id="g250"><g
|
||||||
clip-path="url(#clipPath256)"
|
clip-path="url(#clipPath256)"
|
||||||
id="g252"><g
|
id="g252"><g
|
||||||
transform="matrix(861.6,0,0,21.6,3920,1448.4)"
|
transform="matrix(861.6,0,0,21.6,3920,1448.4)"
|
||||||
@ -357,7 +378,7 @@
|
|||||||
style="image-rendering:optimizeSpeed"
|
style="image-rendering:optimizeSpeed"
|
||||||
height="1"
|
height="1"
|
||||||
width="1" /></g></g></g><g
|
width="1" /></g></g></g><g
|
||||||
id="g262"><g
|
id="g262"><g
|
||||||
clip-path="url(#clipPath268)"
|
clip-path="url(#clipPath268)"
|
||||||
id="g264"><g
|
id="g264"><g
|
||||||
transform="matrix(621.6,0,0,21.6,4900,1448.4)"
|
transform="matrix(621.6,0,0,21.6,4900,1448.4)"
|
||||||
|
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 117 KiB |
@ -113,6 +113,6 @@ tasks.withType<KotlinCompile> {
|
|||||||
kotlinOptions.jvmTarget = "11"
|
kotlinOptions.jvmTarget = "11"
|
||||||
}
|
}
|
||||||
|
|
||||||
readme{
|
readme {
|
||||||
maturity = ru.mipt.npm.gradle.Maturity.EXPERIMENTAL
|
maturity = ru.mipt.npm.gradle.Maturity.EXPERIMENTAL
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@ internal class NDFieldBenchmark {
|
|||||||
@Benchmark
|
@Benchmark
|
||||||
fun autoFieldAdd(blackhole: Blackhole) {
|
fun autoFieldAdd(blackhole: Blackhole) {
|
||||||
with(autoField) {
|
with(autoField) {
|
||||||
var res: NDStructure<Double> = one
|
var res: StructureND<Double> = one
|
||||||
repeat(n) { res += one }
|
repeat(n) { res += one }
|
||||||
blackhole.consume(res)
|
blackhole.consume(res)
|
||||||
}
|
}
|
||||||
@ -22,7 +22,7 @@ internal class NDFieldBenchmark {
|
|||||||
@Benchmark
|
@Benchmark
|
||||||
fun specializedFieldAdd(blackhole: Blackhole) {
|
fun specializedFieldAdd(blackhole: Blackhole) {
|
||||||
with(specializedField) {
|
with(specializedField) {
|
||||||
var res: NDStructure<Double> = one
|
var res: StructureND<Double> = one
|
||||||
repeat(n) { res += 1.0 }
|
repeat(n) { res += 1.0 }
|
||||||
blackhole.consume(res)
|
blackhole.consume(res)
|
||||||
}
|
}
|
||||||
@ -32,7 +32,7 @@ internal class NDFieldBenchmark {
|
|||||||
@Benchmark
|
@Benchmark
|
||||||
fun boxingFieldAdd(blackhole: Blackhole) {
|
fun boxingFieldAdd(blackhole: Blackhole) {
|
||||||
with(genericField) {
|
with(genericField) {
|
||||||
var res: NDStructure<Double> = one
|
var res: StructureND<Double> = one
|
||||||
repeat(n) { res += 1.0 }
|
repeat(n) { res += 1.0 }
|
||||||
blackhole.consume(res)
|
blackhole.consume(res)
|
||||||
}
|
}
|
||||||
@ -41,8 +41,8 @@ internal class NDFieldBenchmark {
|
|||||||
private companion object {
|
private companion object {
|
||||||
private const val dim = 1000
|
private const val dim = 1000
|
||||||
private const val n = 100
|
private const val n = 100
|
||||||
private val autoField = NDAlgebra.auto(RealField, dim, dim)
|
private val autoField = AlgebraND.auto(RealField, dim, dim)
|
||||||
private val specializedField = NDAlgebra.real(dim, dim)
|
private val specializedField = AlgebraND.real(dim, dim)
|
||||||
private val genericField = NDAlgebra.field(RealField, Buffer.Companion::boxing, dim, dim)
|
private val genericField = AlgebraND.field(RealField, Buffer.Companion::boxing, dim, dim)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,8 +5,8 @@ import kotlinx.benchmark.Blackhole
|
|||||||
import kotlinx.benchmark.Scope
|
import kotlinx.benchmark.Scope
|
||||||
import kotlinx.benchmark.State
|
import kotlinx.benchmark.State
|
||||||
import org.jetbrains.bio.viktor.F64Array
|
import org.jetbrains.bio.viktor.F64Array
|
||||||
import space.kscience.kmath.nd.NDAlgebra
|
import space.kscience.kmath.nd.AlgebraND
|
||||||
import space.kscience.kmath.nd.NDStructure
|
import space.kscience.kmath.nd.StructureND
|
||||||
import space.kscience.kmath.nd.auto
|
import space.kscience.kmath.nd.auto
|
||||||
import space.kscience.kmath.nd.real
|
import space.kscience.kmath.nd.real
|
||||||
import space.kscience.kmath.operations.RealField
|
import space.kscience.kmath.operations.RealField
|
||||||
@ -17,7 +17,7 @@ internal class ViktorBenchmark {
|
|||||||
@Benchmark
|
@Benchmark
|
||||||
fun automaticFieldAddition(blackhole: Blackhole) {
|
fun automaticFieldAddition(blackhole: Blackhole) {
|
||||||
with(autoField) {
|
with(autoField) {
|
||||||
var res: NDStructure<Double> = one
|
var res: StructureND<Double> = one
|
||||||
repeat(n) { res += 1.0 }
|
repeat(n) { res += 1.0 }
|
||||||
blackhole.consume(res)
|
blackhole.consume(res)
|
||||||
}
|
}
|
||||||
@ -26,7 +26,7 @@ internal class ViktorBenchmark {
|
|||||||
@Benchmark
|
@Benchmark
|
||||||
fun realFieldAddition(blackhole: Blackhole) {
|
fun realFieldAddition(blackhole: Blackhole) {
|
||||||
with(realField) {
|
with(realField) {
|
||||||
var res: NDStructure<Double> = one
|
var res: StructureND<Double> = one
|
||||||
repeat(n) { res += 1.0 }
|
repeat(n) { res += 1.0 }
|
||||||
blackhole.consume(res)
|
blackhole.consume(res)
|
||||||
}
|
}
|
||||||
@ -54,8 +54,8 @@ internal class ViktorBenchmark {
|
|||||||
private const val n = 100
|
private const val n = 100
|
||||||
|
|
||||||
// automatically build context most suited for given type.
|
// automatically build context most suited for given type.
|
||||||
private val autoField = NDAlgebra.auto(RealField, dim, dim)
|
private val autoField = AlgebraND.auto(RealField, dim, dim)
|
||||||
private val realField = NDAlgebra.real(dim, dim)
|
private val realField = AlgebraND.real(dim, dim)
|
||||||
private val viktorField = ViktorNDField(dim, dim)
|
private val viktorField = ViktorNDField(dim, dim)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,11 +5,11 @@ import kotlinx.benchmark.Blackhole
|
|||||||
import kotlinx.benchmark.Scope
|
import kotlinx.benchmark.Scope
|
||||||
import kotlinx.benchmark.State
|
import kotlinx.benchmark.State
|
||||||
import org.jetbrains.bio.viktor.F64Array
|
import org.jetbrains.bio.viktor.F64Array
|
||||||
import space.kscience.kmath.nd.NDAlgebra
|
import space.kscience.kmath.nd.AlgebraND
|
||||||
import space.kscience.kmath.nd.auto
|
import space.kscience.kmath.nd.auto
|
||||||
import space.kscience.kmath.nd.real
|
import space.kscience.kmath.nd.real
|
||||||
import space.kscience.kmath.operations.RealField
|
import space.kscience.kmath.operations.RealField
|
||||||
import space.kscience.kmath.viktor.ViktorNDField
|
import space.kscience.kmath.viktor.ViktorFieldND
|
||||||
|
|
||||||
@State(Scope.Benchmark)
|
@State(Scope.Benchmark)
|
||||||
internal class ViktorLogBenchmark {
|
internal class ViktorLogBenchmark {
|
||||||
@ -46,8 +46,8 @@ internal class ViktorLogBenchmark {
|
|||||||
private const val n = 100
|
private const val n = 100
|
||||||
|
|
||||||
// automatically build context most suited for given type.
|
// automatically build context most suited for given type.
|
||||||
private val autoField = NDAlgebra.auto(RealField, dim, dim)
|
private val autoField = AlgebraND.auto(RealField, dim, dim)
|
||||||
private val realNdField = NDAlgebra.real(dim, dim)
|
private val realNdField = AlgebraND.real(dim, dim)
|
||||||
private val viktorField = ViktorNDField(intArrayOf(dim, dim))
|
private val viktorField = ViktorFieldND(intArrayOf(dim, dim))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -90,10 +90,10 @@ fun main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
br()
|
br()
|
||||||
h3{
|
h3 {
|
||||||
+"Fit result: $result"
|
+"Fit result: $result"
|
||||||
}
|
}
|
||||||
h3{
|
h3 {
|
||||||
+"Chi2/dof = ${result.value / (x.size - 3)}"
|
+"Chi2/dof = ${result.value / (x.size - 3)}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,17 +2,17 @@ package space.kscience.kmath.operations
|
|||||||
|
|
||||||
import space.kscience.kmath.complex.Complex
|
import space.kscience.kmath.complex.Complex
|
||||||
import space.kscience.kmath.complex.complex
|
import space.kscience.kmath.complex.complex
|
||||||
import space.kscience.kmath.nd.NDAlgebra
|
import space.kscience.kmath.nd.AlgebraND
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
// 2d element
|
// 2d element
|
||||||
val element = NDAlgebra.complex(2, 2).produce { (i, j) ->
|
val element = AlgebraND.complex(2, 2).produce { (i, j) ->
|
||||||
Complex(i.toDouble() - j.toDouble(), i.toDouble() + j.toDouble())
|
Complex(i.toDouble() - j.toDouble(), i.toDouble() + j.toDouble())
|
||||||
}
|
}
|
||||||
println(element)
|
println(element)
|
||||||
|
|
||||||
// 1d element operation
|
// 1d element operation
|
||||||
val result = with(NDAlgebra.complex(8)) {
|
val result = with(AlgebraND.complex(8)) {
|
||||||
val a = produce { (it) -> i * it - it.toDouble() }
|
val a = produce { (it) -> i * it - it.toDouble() }
|
||||||
val b = 3
|
val b = 3
|
||||||
val c = Complex(1.0, 1.0)
|
val c = Complex(1.0, 1.0)
|
||||||
|
@ -4,8 +4,8 @@ package space.kscience.kmath.structures
|
|||||||
|
|
||||||
import space.kscience.kmath.complex.*
|
import space.kscience.kmath.complex.*
|
||||||
import space.kscience.kmath.linear.transpose
|
import space.kscience.kmath.linear.transpose
|
||||||
import space.kscience.kmath.nd.NDAlgebra
|
import space.kscience.kmath.nd.AlgebraND
|
||||||
import space.kscience.kmath.nd.NDStructure
|
import space.kscience.kmath.nd.StructureND
|
||||||
import space.kscience.kmath.nd.as2D
|
import space.kscience.kmath.nd.as2D
|
||||||
import space.kscience.kmath.nd.real
|
import space.kscience.kmath.nd.real
|
||||||
import space.kscience.kmath.operations.invoke
|
import space.kscience.kmath.operations.invoke
|
||||||
@ -15,12 +15,12 @@ fun main() {
|
|||||||
val dim = 1000
|
val dim = 1000
|
||||||
val n = 1000
|
val n = 1000
|
||||||
|
|
||||||
val realField = NDAlgebra.real(dim, dim)
|
val realField = AlgebraND.real(dim, dim)
|
||||||
val complexField: ComplexNDField = NDAlgebra.complex(dim, dim)
|
val complexField: ComplexFieldND = AlgebraND.complex(dim, dim)
|
||||||
|
|
||||||
val realTime = measureTimeMillis {
|
val realTime = measureTimeMillis {
|
||||||
realField {
|
realField {
|
||||||
var res: NDStructure<Double> = one
|
var res: StructureND<Double> = one
|
||||||
repeat(n) {
|
repeat(n) {
|
||||||
res += 1.0
|
res += 1.0
|
||||||
}
|
}
|
||||||
@ -31,7 +31,7 @@ fun main() {
|
|||||||
|
|
||||||
val complexTime = measureTimeMillis {
|
val complexTime = measureTimeMillis {
|
||||||
complexField {
|
complexField {
|
||||||
var res: NDStructure<Complex> = one
|
var res: StructureND<Complex> = one
|
||||||
repeat(n) {
|
repeat(n) {
|
||||||
res += 1.0
|
res += 1.0
|
||||||
}
|
}
|
||||||
|
@ -24,56 +24,56 @@ fun main() {
|
|||||||
val n = 1000
|
val n = 1000
|
||||||
|
|
||||||
// automatically build context most suited for given type.
|
// automatically build context most suited for given type.
|
||||||
val autoField = NDAlgebra.auto(RealField, dim, dim)
|
val autoField = AlgebraND.auto(RealField, dim, dim)
|
||||||
// specialized nd-field for Double. It works as generic Double field as well
|
// specialized nd-field for Double. It works as generic Double field as well
|
||||||
val realField = NDAlgebra.real(dim, dim)
|
val realField = AlgebraND.real(dim, dim)
|
||||||
//A generic boxing field. It should be used for objects, not primitives.
|
//A generic boxing field. It should be used for objects, not primitives.
|
||||||
val boxingField = NDAlgebra.field(RealField, Buffer.Companion::boxing, dim, dim)
|
val boxingField = AlgebraND.field(RealField, Buffer.Companion::boxing, dim, dim)
|
||||||
// Nd4j specialized field.
|
// Nd4j specialized field.
|
||||||
val nd4jField = Nd4jArrayField.real(dim, dim)
|
val nd4jField = Nd4jArrayField.real(dim, dim)
|
||||||
//viktor field
|
//viktor field
|
||||||
val viktorField = ViktorNDField(dim,dim)
|
val viktorField = ViktorNDField(dim, dim)
|
||||||
//parallel processing based on Java Streams
|
//parallel processing based on Java Streams
|
||||||
val parallelField = NDAlgebra.realWithStream(dim,dim)
|
val parallelField = AlgebraND.realWithStream(dim, dim)
|
||||||
|
|
||||||
measureAndPrint("Boxing addition") {
|
measureAndPrint("Boxing addition") {
|
||||||
boxingField {
|
boxingField {
|
||||||
var res: NDStructure<Double> = one
|
var res: StructureND<Double> = one
|
||||||
repeat(n) { res += 1.0 }
|
repeat(n) { res += 1.0 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
measureAndPrint("Specialized addition") {
|
measureAndPrint("Specialized addition") {
|
||||||
realField {
|
realField {
|
||||||
var res: NDStructure<Double> = one
|
var res: StructureND<Double> = one
|
||||||
repeat(n) { res += 1.0 }
|
repeat(n) { res += 1.0 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
measureAndPrint("Nd4j specialized addition") {
|
measureAndPrint("Nd4j specialized addition") {
|
||||||
nd4jField {
|
nd4jField {
|
||||||
var res: NDStructure<Double> = one
|
var res: StructureND<Double> = one
|
||||||
repeat(n) { res += 1.0 }
|
repeat(n) { res += 1.0 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
measureAndPrint("Viktor addition") {
|
measureAndPrint("Viktor addition") {
|
||||||
viktorField {
|
viktorField {
|
||||||
var res: NDStructure<Double> = one
|
var res: StructureND<Double> = one
|
||||||
repeat(n) { res += 1.0 }
|
repeat(n) { res += 1.0 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
measureAndPrint("Parallel stream addition") {
|
measureAndPrint("Parallel stream addition") {
|
||||||
parallelField {
|
parallelField {
|
||||||
var res: NDStructure<Double> = one
|
var res: StructureND<Double> = one
|
||||||
repeat(n) { res += 1.0 }
|
repeat(n) { res += 1.0 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
measureAndPrint("Automatic field addition") {
|
measureAndPrint("Automatic field addition") {
|
||||||
autoField {
|
autoField {
|
||||||
var res: NDStructure<Double> = one
|
var res: StructureND<Double> = one
|
||||||
repeat(n) { res += 1.0 }
|
repeat(n) { res += 1.0 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,11 +12,11 @@ import java.util.stream.IntStream
|
|||||||
* A demonstration implementation of NDField over Real using Java [DoubleStream] for parallel execution
|
* A demonstration implementation of NDField over Real using Java [DoubleStream] for parallel execution
|
||||||
*/
|
*/
|
||||||
@OptIn(UnstableKMathAPI::class)
|
@OptIn(UnstableKMathAPI::class)
|
||||||
class StreamRealNDField(
|
class StreamRealFieldND(
|
||||||
override val shape: IntArray,
|
override val shape: IntArray,
|
||||||
) : NDField<Double, RealField>,
|
) : FieldND<Double, RealField>,
|
||||||
NumbersAddOperations<NDStructure<Double>>,
|
NumbersAddOperations<StructureND<Double>>,
|
||||||
ExtendedField<NDStructure<Double>> {
|
ExtendedField<StructureND<Double>> {
|
||||||
|
|
||||||
private val strides = DefaultStrides(shape)
|
private val strides = DefaultStrides(shape)
|
||||||
override val elementContext: RealField get() = RealField
|
override val elementContext: RealField get() = RealField
|
||||||
@ -28,13 +28,13 @@ class StreamRealNDField(
|
|||||||
return produce { d }
|
return produce { d }
|
||||||
}
|
}
|
||||||
|
|
||||||
private val NDStructure<Double>.buffer: RealBuffer
|
private val StructureND<Double>.buffer: RealBuffer
|
||||||
get() = when {
|
get() = when {
|
||||||
!shape.contentEquals(this@StreamRealNDField.shape) -> throw ShapeMismatchException(
|
!shape.contentEquals(this@StreamRealFieldND.shape) -> throw ShapeMismatchException(
|
||||||
this@StreamRealNDField.shape,
|
this@StreamRealFieldND.shape,
|
||||||
shape
|
shape
|
||||||
)
|
)
|
||||||
this is NDBuffer && this.strides == this@StreamRealNDField.strides -> this.buffer as RealBuffer
|
this is NDBuffer && this.strides == this@StreamRealFieldND.strides -> this.buffer as RealBuffer
|
||||||
else -> RealBuffer(strides.linearSize) { offset -> get(strides.index(offset)) }
|
else -> RealBuffer(strides.linearSize) { offset -> get(strides.index(offset)) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,14 +48,14 @@ class StreamRealNDField(
|
|||||||
return NDBuffer(strides, array.asBuffer())
|
return NDBuffer(strides, array.asBuffer())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun NDStructure<Double>.map(
|
override fun StructureND<Double>.map(
|
||||||
transform: RealField.(Double) -> Double,
|
transform: RealField.(Double) -> Double,
|
||||||
): NDBuffer<Double> {
|
): NDBuffer<Double> {
|
||||||
val array = Arrays.stream(buffer.array).parallel().map { RealField.transform(it) }.toArray()
|
val array = Arrays.stream(buffer.array).parallel().map { RealField.transform(it) }.toArray()
|
||||||
return NDBuffer(strides, array.asBuffer())
|
return NDBuffer(strides, array.asBuffer())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun NDStructure<Double>.mapIndexed(
|
override fun StructureND<Double>.mapIndexed(
|
||||||
transform: RealField.(index: IntArray, Double) -> Double,
|
transform: RealField.(index: IntArray, Double) -> Double,
|
||||||
): NDBuffer<Double> {
|
): NDBuffer<Double> {
|
||||||
val array = IntStream.range(0, strides.linearSize).parallel().mapToDouble { offset ->
|
val array = IntStream.range(0, strides.linearSize).parallel().mapToDouble { offset ->
|
||||||
@ -69,8 +69,8 @@ class StreamRealNDField(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun combine(
|
override fun combine(
|
||||||
a: NDStructure<Double>,
|
a: StructureND<Double>,
|
||||||
b: NDStructure<Double>,
|
b: StructureND<Double>,
|
||||||
transform: RealField.(Double, Double) -> Double,
|
transform: RealField.(Double, Double) -> Double,
|
||||||
): NDBuffer<Double> {
|
): NDBuffer<Double> {
|
||||||
val array = IntStream.range(0, strides.linearSize).parallel().mapToDouble { offset ->
|
val array = IntStream.range(0, strides.linearSize).parallel().mapToDouble { offset ->
|
||||||
@ -79,29 +79,29 @@ class StreamRealNDField(
|
|||||||
return NDBuffer(strides, array.asBuffer())
|
return NDBuffer(strides, array.asBuffer())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun NDStructure<Double>.unaryMinus(): NDStructure<Double> = map { -it }
|
override fun StructureND<Double>.unaryMinus(): StructureND<Double> = map { -it }
|
||||||
|
|
||||||
override fun scale(a: NDStructure<Double>, value: Double): NDStructure<Double> = a.map { it * value }
|
override fun scale(a: StructureND<Double>, value: Double): StructureND<Double> = a.map { it * value }
|
||||||
|
|
||||||
override fun power(arg: NDStructure<Double>, pow: Number): NDBuffer<Double> = arg.map { power(it, pow) }
|
override fun power(arg: StructureND<Double>, pow: Number): NDBuffer<Double> = arg.map { power(it, pow) }
|
||||||
|
|
||||||
override fun exp(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { exp(it) }
|
override fun exp(arg: StructureND<Double>): NDBuffer<Double> = arg.map { exp(it) }
|
||||||
|
|
||||||
override fun ln(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { ln(it) }
|
override fun ln(arg: StructureND<Double>): NDBuffer<Double> = arg.map { ln(it) }
|
||||||
|
|
||||||
override fun sin(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { sin(it) }
|
override fun sin(arg: StructureND<Double>): NDBuffer<Double> = arg.map { sin(it) }
|
||||||
override fun cos(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { cos(it) }
|
override fun cos(arg: StructureND<Double>): NDBuffer<Double> = arg.map { cos(it) }
|
||||||
override fun tan(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { tan(it) }
|
override fun tan(arg: StructureND<Double>): NDBuffer<Double> = arg.map { tan(it) }
|
||||||
override fun asin(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { asin(it) }
|
override fun asin(arg: StructureND<Double>): NDBuffer<Double> = arg.map { asin(it) }
|
||||||
override fun acos(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { acos(it) }
|
override fun acos(arg: StructureND<Double>): NDBuffer<Double> = arg.map { acos(it) }
|
||||||
override fun atan(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { atan(it) }
|
override fun atan(arg: StructureND<Double>): NDBuffer<Double> = arg.map { atan(it) }
|
||||||
|
|
||||||
override fun sinh(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { sinh(it) }
|
override fun sinh(arg: StructureND<Double>): NDBuffer<Double> = arg.map { sinh(it) }
|
||||||
override fun cosh(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { cosh(it) }
|
override fun cosh(arg: StructureND<Double>): NDBuffer<Double> = arg.map { cosh(it) }
|
||||||
override fun tanh(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { tanh(it) }
|
override fun tanh(arg: StructureND<Double>): NDBuffer<Double> = arg.map { tanh(it) }
|
||||||
override fun asinh(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { asinh(it) }
|
override fun asinh(arg: StructureND<Double>): NDBuffer<Double> = arg.map { asinh(it) }
|
||||||
override fun acosh(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { acosh(it) }
|
override fun acosh(arg: StructureND<Double>): NDBuffer<Double> = arg.map { acosh(it) }
|
||||||
override fun atanh(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { atanh(it) }
|
override fun atanh(arg: StructureND<Double>): NDBuffer<Double> = arg.map { atanh(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun NDAlgebra.Companion.realWithStream(vararg shape: Int): StreamRealNDField = StreamRealNDField(shape)
|
fun AlgebraND.Companion.realWithStream(vararg shape: Int): StreamRealFieldND = StreamRealFieldND(shape)
|
@ -1,13 +1,13 @@
|
|||||||
package space.kscience.kmath.structures
|
package space.kscience.kmath.structures
|
||||||
|
|
||||||
import space.kscience.kmath.nd.NDStructure
|
import space.kscience.kmath.nd.StructureND
|
||||||
import space.kscience.kmath.nd.mapToBuffer
|
import space.kscience.kmath.nd.mapToBuffer
|
||||||
import kotlin.system.measureTimeMillis
|
import kotlin.system.measureTimeMillis
|
||||||
|
|
||||||
@Suppress("UNUSED_VARIABLE")
|
@Suppress("UNUSED_VARIABLE")
|
||||||
fun main() {
|
fun main() {
|
||||||
val n = 6000
|
val n = 6000
|
||||||
val structure = NDStructure.buffered(intArrayOf(n, n), Buffer.Companion::auto) { 1.0 }
|
val structure = StructureND.buffered(intArrayOf(n, n), Buffer.Companion::auto) { 1.0 }
|
||||||
structure.mapToBuffer { it + 1 } // warm-up
|
structure.mapToBuffer { it + 1 } // warm-up
|
||||||
val time1 = measureTimeMillis { val res = structure.mapToBuffer { it + 1 } }
|
val time1 = measureTimeMillis { val res = structure.mapToBuffer { it + 1 } }
|
||||||
println("Structure mapping finished in $time1 millis")
|
println("Structure mapping finished in $time1 millis")
|
||||||
|
@ -50,7 +50,7 @@ public object MstGroup : Group<MST>, NumericAlgebra<MST>, ScaleOperations<MST> {
|
|||||||
*/
|
*/
|
||||||
@OptIn(UnstableKMathAPI::class)
|
@OptIn(UnstableKMathAPI::class)
|
||||||
public object MstRing : Ring<MST>, NumbersAddOperations<MST>, ScaleOperations<MST> {
|
public object MstRing : Ring<MST>, NumbersAddOperations<MST>, ScaleOperations<MST> {
|
||||||
public override val zero: MST.Numeric get() = MstGroup.zero
|
public override val zero: MST.Numeric get() = MstGroup.zero
|
||||||
public override val one: MST.Numeric = number(1.0)
|
public override val one: MST.Numeric = number(1.0)
|
||||||
|
|
||||||
public override fun number(value: Number): MST.Numeric = MstGroup.number(value)
|
public override fun number(value: Number): MST.Numeric = MstGroup.number(value)
|
||||||
|
@ -32,7 +32,9 @@ internal class TestESTreeOperationsSupport {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testMultipleCalls() {
|
fun testMultipleCalls() {
|
||||||
val e = RealField.mstInExtendedField { sin(bindSymbol("x")).pow(4) - 6 * bindSymbol("x") / tanh(bindSymbol("x")) }.compile()
|
val e =
|
||||||
|
RealField.mstInExtendedField { sin(bindSymbol("x")).pow(4) - 6 * bindSymbol("x") / tanh(bindSymbol("x")) }
|
||||||
|
.compile()
|
||||||
val r = Random(0)
|
val r = Random(0)
|
||||||
var s = 0.0
|
var s = 0.0
|
||||||
repeat(1000000) { s += e("x" to r.nextDouble()) }
|
repeat(1000000) { s += e("x" to r.nextDouble()) }
|
||||||
|
@ -86,7 +86,7 @@ internal inline fun ClassWriter.visitField(
|
|||||||
descriptor: String,
|
descriptor: String,
|
||||||
signature: String?,
|
signature: String?,
|
||||||
value: Any?,
|
value: Any?,
|
||||||
block: FieldVisitor.() -> Unit
|
block: FieldVisitor.() -> Unit,
|
||||||
): FieldVisitor {
|
): FieldVisitor {
|
||||||
contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }
|
contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }
|
||||||
return visitField(access, name, descriptor, signature, value).apply(block)
|
return visitField(access, name, descriptor, signature, value).apply(block)
|
||||||
|
@ -32,7 +32,9 @@ internal class TestAsmOperationsSupport {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testMultipleCalls() {
|
fun testMultipleCalls() {
|
||||||
val e = RealField.mstInExtendedField { sin(bindSymbol("x")).pow(4) - 6 * bindSymbol("x") / tanh(bindSymbol("x")) }.compile()
|
val e =
|
||||||
|
RealField.mstInExtendedField { sin(bindSymbol("x")).pow(4) - 6 * bindSymbol("x") / tanh(bindSymbol("x")) }
|
||||||
|
.compile()
|
||||||
val r = Random(0)
|
val r = Random(0)
|
||||||
var s = 0.0
|
var s = 0.0
|
||||||
repeat(1000000) { s += e("x" to r.nextDouble()) }
|
repeat(1000000) { s += e("x" to r.nextDouble()) }
|
||||||
|
@ -12,6 +12,6 @@ dependencies {
|
|||||||
api("org.apache.commons:commons-math3:3.6.1")
|
api("org.apache.commons:commons-math3:3.6.1")
|
||||||
}
|
}
|
||||||
|
|
||||||
readme{
|
readme {
|
||||||
maturity = ru.mipt.npm.gradle.Maturity.EXPERIMENTAL
|
maturity = ru.mipt.npm.gradle.Maturity.EXPERIMENTAL
|
||||||
}
|
}
|
@ -80,13 +80,13 @@ public class CMIntegrator(
|
|||||||
@UnstableKMathAPI
|
@UnstableKMathAPI
|
||||||
public var MutableList<IntegrandFeature>.targetAbsoluteAccuracy: Double?
|
public var MutableList<IntegrandFeature>.targetAbsoluteAccuracy: Double?
|
||||||
get() = filterIsInstance<CMIntegrator.TargetAbsoluteAccuracy>().lastOrNull()?.value
|
get() = filterIsInstance<CMIntegrator.TargetAbsoluteAccuracy>().lastOrNull()?.value
|
||||||
set(value){
|
set(value) {
|
||||||
value?.let { add(CMIntegrator.TargetAbsoluteAccuracy(value))}
|
value?.let { add(CMIntegrator.TargetAbsoluteAccuracy(value)) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@UnstableKMathAPI
|
@UnstableKMathAPI
|
||||||
public var MutableList<IntegrandFeature>.targetRelativeAccuracy: Double?
|
public var MutableList<IntegrandFeature>.targetRelativeAccuracy: Double?
|
||||||
get() = filterIsInstance<CMIntegrator.TargetRelativeAccuracy>().lastOrNull()?.value
|
get() = filterIsInstance<CMIntegrator.TargetRelativeAccuracy>().lastOrNull()?.value
|
||||||
set(value){
|
set(value) {
|
||||||
value?.let { add(CMIntegrator.TargetRelativeAccuracy(value))}
|
value?.let { add(CMIntegrator.TargetRelativeAccuracy(value)) }
|
||||||
}
|
}
|
@ -3,7 +3,7 @@ package space.kscience.kmath.commons.linear
|
|||||||
import org.apache.commons.math3.linear.*
|
import org.apache.commons.math3.linear.*
|
||||||
import space.kscience.kmath.linear.*
|
import space.kscience.kmath.linear.*
|
||||||
import space.kscience.kmath.misc.UnstableKMathAPI
|
import space.kscience.kmath.misc.UnstableKMathAPI
|
||||||
import space.kscience.kmath.nd.NDStructure
|
import space.kscience.kmath.nd.StructureND
|
||||||
import space.kscience.kmath.operations.RealField
|
import space.kscience.kmath.operations.RealField
|
||||||
import space.kscience.kmath.structures.RealBuffer
|
import space.kscience.kmath.structures.RealBuffer
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
@ -17,8 +17,8 @@ public class CMMatrix(public val origin: RealMatrix) : Matrix<Double> {
|
|||||||
|
|
||||||
override fun equals(other: Any?): Boolean {
|
override fun equals(other: Any?): Boolean {
|
||||||
if (this === other) return true
|
if (this === other) return true
|
||||||
if (other !is NDStructure<*>) return false
|
if (other !is StructureND<*>) return false
|
||||||
return NDStructure.contentEquals(this, other)
|
return StructureND.contentEquals(this, other)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hashCode(): Int = origin.hashCode()
|
override fun hashCode(): Int = origin.hashCode()
|
||||||
|
@ -14,7 +14,7 @@ public enum class CMDecomposition {
|
|||||||
|
|
||||||
public fun CMLinearSpace.solver(
|
public fun CMLinearSpace.solver(
|
||||||
a: Matrix<Double>,
|
a: Matrix<Double>,
|
||||||
decomposition: CMDecomposition = CMDecomposition.LUP
|
decomposition: CMDecomposition = CMDecomposition.LUP,
|
||||||
): DecompositionSolver = when (decomposition) {
|
): DecompositionSolver = when (decomposition) {
|
||||||
CMDecomposition.LUP -> LUDecomposition(a.toCM().origin).solver
|
CMDecomposition.LUP -> LUDecomposition(a.toCM().origin).solver
|
||||||
CMDecomposition.RRQR -> RRQRDecomposition(a.toCM().origin).solver
|
CMDecomposition.RRQR -> RRQRDecomposition(a.toCM().origin).solver
|
||||||
@ -26,16 +26,16 @@ public fun CMLinearSpace.solver(
|
|||||||
public fun CMLinearSpace.solve(
|
public fun CMLinearSpace.solve(
|
||||||
a: Matrix<Double>,
|
a: Matrix<Double>,
|
||||||
b: Matrix<Double>,
|
b: Matrix<Double>,
|
||||||
decomposition: CMDecomposition = CMDecomposition.LUP
|
decomposition: CMDecomposition = CMDecomposition.LUP,
|
||||||
): CMMatrix = solver(a, decomposition).solve(b.toCM().origin).wrap()
|
): CMMatrix = solver(a, decomposition).solve(b.toCM().origin).wrap()
|
||||||
|
|
||||||
public fun CMLinearSpace.solve(
|
public fun CMLinearSpace.solve(
|
||||||
a: Matrix<Double>,
|
a: Matrix<Double>,
|
||||||
b: Point<Double>,
|
b: Point<Double>,
|
||||||
decomposition: CMDecomposition = CMDecomposition.LUP
|
decomposition: CMDecomposition = CMDecomposition.LUP,
|
||||||
): CMVector = solver(a, decomposition).solve(b.toCM().origin).toPoint()
|
): CMVector = solver(a, decomposition).solve(b.toCM().origin).toPoint()
|
||||||
|
|
||||||
public fun CMLinearSpace.inverse(
|
public fun CMLinearSpace.inverse(
|
||||||
a: Matrix<Double>,
|
a: Matrix<Double>,
|
||||||
decomposition: CMDecomposition = CMDecomposition.LUP
|
decomposition: CMDecomposition = CMDecomposition.LUP,
|
||||||
): CMMatrix = solver(a, decomposition).inverse.wrap()
|
): CMMatrix = solver(a, decomposition).inverse.wrap()
|
||||||
|
@ -33,34 +33,34 @@ public object Transformations {
|
|||||||
|
|
||||||
public fun fourier(
|
public fun fourier(
|
||||||
normalization: DftNormalization = DftNormalization.STANDARD,
|
normalization: DftNormalization = DftNormalization.STANDARD,
|
||||||
direction: TransformType = TransformType.FORWARD
|
direction: TransformType = TransformType.FORWARD,
|
||||||
): SuspendBufferTransform<Complex, Complex> = {
|
): SuspendBufferTransform<Complex, Complex> = {
|
||||||
FastFourierTransformer(normalization).transform(it.toArray(), direction).asBuffer()
|
FastFourierTransformer(normalization).transform(it.toArray(), direction).asBuffer()
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun realFourier(
|
public fun realFourier(
|
||||||
normalization: DftNormalization = DftNormalization.STANDARD,
|
normalization: DftNormalization = DftNormalization.STANDARD,
|
||||||
direction: TransformType = TransformType.FORWARD
|
direction: TransformType = TransformType.FORWARD,
|
||||||
): SuspendBufferTransform<Double, Complex> = {
|
): SuspendBufferTransform<Double, Complex> = {
|
||||||
FastFourierTransformer(normalization).transform(it.asArray(), direction).asBuffer()
|
FastFourierTransformer(normalization).transform(it.asArray(), direction).asBuffer()
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun sine(
|
public fun sine(
|
||||||
normalization: DstNormalization = DstNormalization.STANDARD_DST_I,
|
normalization: DstNormalization = DstNormalization.STANDARD_DST_I,
|
||||||
direction: TransformType = TransformType.FORWARD
|
direction: TransformType = TransformType.FORWARD,
|
||||||
): SuspendBufferTransform<Double, Double> = {
|
): SuspendBufferTransform<Double, Double> = {
|
||||||
FastSineTransformer(normalization).transform(it.asArray(), direction).asBuffer()
|
FastSineTransformer(normalization).transform(it.asArray(), direction).asBuffer()
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun cosine(
|
public fun cosine(
|
||||||
normalization: DctNormalization = DctNormalization.STANDARD_DCT_I,
|
normalization: DctNormalization = DctNormalization.STANDARD_DCT_I,
|
||||||
direction: TransformType = TransformType.FORWARD
|
direction: TransformType = TransformType.FORWARD,
|
||||||
): SuspendBufferTransform<Double, Double> = {
|
): SuspendBufferTransform<Double, Double> = {
|
||||||
FastCosineTransformer(normalization).transform(it.asArray(), direction).asBuffer()
|
FastCosineTransformer(normalization).transform(it.asArray(), direction).asBuffer()
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun hadamard(
|
public fun hadamard(
|
||||||
direction: TransformType = TransformType.FORWARD
|
direction: TransformType = TransformType.FORWARD,
|
||||||
): SuspendBufferTransform<Double, Double> = {
|
): SuspendBufferTransform<Double, Double> = {
|
||||||
FastHadamardTransformer().transform(it.asArray(), direction).asBuffer()
|
FastHadamardTransformer().transform(it.asArray(), direction).asBuffer()
|
||||||
}
|
}
|
||||||
@ -72,7 +72,7 @@ public object Transformations {
|
|||||||
@FlowPreview
|
@FlowPreview
|
||||||
public fun Flow<Buffer<Complex>>.FFT(
|
public fun Flow<Buffer<Complex>>.FFT(
|
||||||
normalization: DftNormalization = DftNormalization.STANDARD,
|
normalization: DftNormalization = DftNormalization.STANDARD,
|
||||||
direction: TransformType = TransformType.FORWARD
|
direction: TransformType = TransformType.FORWARD,
|
||||||
): Flow<Buffer<Complex>> {
|
): Flow<Buffer<Complex>> {
|
||||||
val transform = Transformations.fourier(normalization, direction)
|
val transform = Transformations.fourier(normalization, direction)
|
||||||
return map { transform(it) }
|
return map { transform(it) }
|
||||||
@ -82,7 +82,7 @@ public fun Flow<Buffer<Complex>>.FFT(
|
|||||||
@JvmName("realFFT")
|
@JvmName("realFFT")
|
||||||
public fun Flow<Buffer<Double>>.FFT(
|
public fun Flow<Buffer<Double>>.FFT(
|
||||||
normalization: DftNormalization = DftNormalization.STANDARD,
|
normalization: DftNormalization = DftNormalization.STANDARD,
|
||||||
direction: TransformType = TransformType.FORWARD
|
direction: TransformType = TransformType.FORWARD,
|
||||||
): Flow<Buffer<Complex>> {
|
): Flow<Buffer<Complex>> {
|
||||||
val transform = Transformations.realFourier(normalization, direction)
|
val transform = Transformations.realFourier(normalization, direction)
|
||||||
return map(transform)
|
return map(transform)
|
||||||
@ -96,7 +96,7 @@ public fun Flow<Buffer<Double>>.FFT(
|
|||||||
public fun Flow<Double>.FFT(
|
public fun Flow<Double>.FFT(
|
||||||
bufferSize: Int = Int.MAX_VALUE,
|
bufferSize: Int = Int.MAX_VALUE,
|
||||||
normalization: DftNormalization = DftNormalization.STANDARD,
|
normalization: DftNormalization = DftNormalization.STANDARD,
|
||||||
direction: TransformType = TransformType.FORWARD
|
direction: TransformType = TransformType.FORWARD,
|
||||||
): Flow<Complex> = chunked(bufferSize).FFT(normalization, direction).spread()
|
): Flow<Complex> = chunked(bufferSize).FFT(normalization, direction).spread()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -27,10 +27,10 @@ internal class AutoDiffTest {
|
|||||||
val y = bindSymbol("y")
|
val y = bindSymbol("y")
|
||||||
val z = x * (-sin(x * y) + y) + 2.0
|
val z = x * (-sin(x * y) + y) + 2.0
|
||||||
println(z.derivative(x))
|
println(z.derivative(x))
|
||||||
println(z.derivative(y,x))
|
println(z.derivative(y, x))
|
||||||
assertEquals(z.derivative(x, y), z.derivative(y, x))
|
assertEquals(z.derivative(x, y), z.derivative(y, x))
|
||||||
//check that improper order cause failure
|
//check that improper order cause failure
|
||||||
assertFails { z.derivative(x,x,y) }
|
assertFails { z.derivative(x, x, y) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package space.kscience.kmath.complex
|
package space.kscience.kmath.complex
|
||||||
|
|
||||||
import space.kscience.kmath.misc.UnstableKMathAPI
|
import space.kscience.kmath.misc.UnstableKMathAPI
|
||||||
import space.kscience.kmath.nd.BufferedNDField
|
import space.kscience.kmath.nd.AlgebraND
|
||||||
import space.kscience.kmath.nd.NDAlgebra
|
import space.kscience.kmath.nd.BufferedFieldND
|
||||||
import space.kscience.kmath.nd.NDBuffer
|
import space.kscience.kmath.nd.NDBuffer
|
||||||
import space.kscience.kmath.nd.NDStructure
|
import space.kscience.kmath.nd.StructureND
|
||||||
import space.kscience.kmath.operations.ExtendedField
|
import space.kscience.kmath.operations.ExtendedField
|
||||||
import space.kscience.kmath.operations.NumbersAddOperations
|
import space.kscience.kmath.operations.NumbersAddOperations
|
||||||
import space.kscience.kmath.structures.Buffer
|
import space.kscience.kmath.structures.Buffer
|
||||||
@ -16,11 +16,11 @@ import kotlin.contracts.contract
|
|||||||
* An optimized nd-field for complex numbers
|
* An optimized nd-field for complex numbers
|
||||||
*/
|
*/
|
||||||
@OptIn(UnstableKMathAPI::class)
|
@OptIn(UnstableKMathAPI::class)
|
||||||
public class ComplexNDField(
|
public class ComplexFieldND(
|
||||||
shape: IntArray,
|
shape: IntArray,
|
||||||
) : BufferedNDField<Complex, ComplexField>(shape, ComplexField, Buffer.Companion::complex),
|
) : BufferedFieldND<Complex, ComplexField>(shape, ComplexField, Buffer.Companion::complex),
|
||||||
NumbersAddOperations<NDStructure<Complex>>,
|
NumbersAddOperations<StructureND<Complex>>,
|
||||||
ExtendedField<NDStructure<Complex>> {
|
ExtendedField<StructureND<Complex>> {
|
||||||
|
|
||||||
override val zero: NDBuffer<Complex> by lazy { produce { zero } }
|
override val zero: NDBuffer<Complex> by lazy { produce { zero } }
|
||||||
override val one: NDBuffer<Complex> by lazy { produce { one } }
|
override val one: NDBuffer<Complex> by lazy { produce { one } }
|
||||||
@ -76,44 +76,44 @@ public class ComplexNDField(
|
|||||||
// return BufferedNDFieldElement(this, buffer)
|
// return BufferedNDFieldElement(this, buffer)
|
||||||
// }
|
// }
|
||||||
|
|
||||||
override fun power(arg: NDStructure<Complex>, pow: Number): NDBuffer<Complex> = arg.map { power(it, pow) }
|
override fun power(arg: StructureND<Complex>, pow: Number): NDBuffer<Complex> = arg.map { power(it, pow) }
|
||||||
|
|
||||||
override fun exp(arg: NDStructure<Complex>): NDBuffer<Complex> = arg.map { exp(it) }
|
override fun exp(arg: StructureND<Complex>): NDBuffer<Complex> = arg.map { exp(it) }
|
||||||
|
|
||||||
override fun ln(arg: NDStructure<Complex>): NDBuffer<Complex> = arg.map { ln(it) }
|
override fun ln(arg: StructureND<Complex>): NDBuffer<Complex> = arg.map { ln(it) }
|
||||||
|
|
||||||
override fun sin(arg: NDStructure<Complex>): NDBuffer<Complex> = arg.map { sin(it) }
|
override fun sin(arg: StructureND<Complex>): NDBuffer<Complex> = arg.map { sin(it) }
|
||||||
override fun cos(arg: NDStructure<Complex>): NDBuffer<Complex> = arg.map { cos(it) }
|
override fun cos(arg: StructureND<Complex>): NDBuffer<Complex> = arg.map { cos(it) }
|
||||||
override fun tan(arg: NDStructure<Complex>): NDBuffer<Complex> = arg.map { tan(it) }
|
override fun tan(arg: StructureND<Complex>): NDBuffer<Complex> = arg.map { tan(it) }
|
||||||
override fun asin(arg: NDStructure<Complex>): NDBuffer<Complex> = arg.map { asin(it) }
|
override fun asin(arg: StructureND<Complex>): NDBuffer<Complex> = arg.map { asin(it) }
|
||||||
override fun acos(arg: NDStructure<Complex>): NDBuffer<Complex> = arg.map { acos(it) }
|
override fun acos(arg: StructureND<Complex>): NDBuffer<Complex> = arg.map { acos(it) }
|
||||||
override fun atan(arg: NDStructure<Complex>): NDBuffer<Complex> = arg.map { atan(it) }
|
override fun atan(arg: StructureND<Complex>): NDBuffer<Complex> = arg.map { atan(it) }
|
||||||
|
|
||||||
override fun sinh(arg: NDStructure<Complex>): NDBuffer<Complex> = arg.map { sinh(it) }
|
override fun sinh(arg: StructureND<Complex>): NDBuffer<Complex> = arg.map { sinh(it) }
|
||||||
override fun cosh(arg: NDStructure<Complex>): NDBuffer<Complex> = arg.map { cosh(it) }
|
override fun cosh(arg: StructureND<Complex>): NDBuffer<Complex> = arg.map { cosh(it) }
|
||||||
override fun tanh(arg: NDStructure<Complex>): NDBuffer<Complex> = arg.map { tanh(it) }
|
override fun tanh(arg: StructureND<Complex>): NDBuffer<Complex> = arg.map { tanh(it) }
|
||||||
override fun asinh(arg: NDStructure<Complex>): NDBuffer<Complex> = arg.map { asinh(it) }
|
override fun asinh(arg: StructureND<Complex>): NDBuffer<Complex> = arg.map { asinh(it) }
|
||||||
override fun acosh(arg: NDStructure<Complex>): NDBuffer<Complex> = arg.map { acosh(it) }
|
override fun acosh(arg: StructureND<Complex>): NDBuffer<Complex> = arg.map { acosh(it) }
|
||||||
override fun atanh(arg: NDStructure<Complex>): NDBuffer<Complex> = arg.map { atanh(it) }
|
override fun atanh(arg: StructureND<Complex>): NDBuffer<Complex> = arg.map { atanh(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fast element production using function inlining
|
* Fast element production using function inlining
|
||||||
*/
|
*/
|
||||||
public inline fun BufferedNDField<Complex, ComplexField>.produceInline(initializer: ComplexField.(Int) -> Complex): NDBuffer<Complex> {
|
public inline fun BufferedFieldND<Complex, ComplexField>.produceInline(initializer: ComplexField.(Int) -> Complex): NDBuffer<Complex> {
|
||||||
contract { callsInPlace(initializer, InvocationKind.EXACTLY_ONCE) }
|
contract { callsInPlace(initializer, InvocationKind.EXACTLY_ONCE) }
|
||||||
val buffer = Buffer.complex(strides.linearSize) { offset -> ComplexField.initializer(offset) }
|
val buffer = Buffer.complex(strides.linearSize) { offset -> ComplexField.initializer(offset) }
|
||||||
return NDBuffer(strides, buffer)
|
return NDBuffer(strides, buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public fun NDAlgebra.Companion.complex(vararg shape: Int): ComplexNDField = ComplexNDField(shape)
|
public fun AlgebraND.Companion.complex(vararg shape: Int): ComplexFieldND = ComplexFieldND(shape)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Produce a context for n-dimensional operations inside this real field
|
* Produce a context for n-dimensional operations inside this real field
|
||||||
*/
|
*/
|
||||||
public inline fun <R> ComplexField.nd(vararg shape: Int, action: ComplexNDField.() -> R): R {
|
public inline fun <R> ComplexField.nd(vararg shape: Int, action: ComplexFieldND.() -> R): R {
|
||||||
contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }
|
contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }
|
||||||
return ComplexNDField(shape).action()
|
return ComplexFieldND(shape).action()
|
||||||
}
|
}
|
@ -172,7 +172,7 @@ public object QuaternionField : Field<Quaternion>, Norm<Quaternion, Quaternion>,
|
|||||||
else -> super<Field>.bindSymbol(value)
|
else -> super<Field>.bindSymbol(value)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun number(value: Number): Quaternion =value.toQuaternion()
|
override fun number(value: Number): Quaternion = value.toQuaternion()
|
||||||
|
|
||||||
public override fun sinh(arg: Quaternion): Quaternion = (exp(arg) - exp(-arg)) / 2.0
|
public override fun sinh(arg: Quaternion): Quaternion = (exp(arg) - exp(-arg)) / 2.0
|
||||||
public override fun cosh(arg: Quaternion): Quaternion = (exp(arg) + exp(-arg)) / 2.0
|
public override fun cosh(arg: Quaternion): Quaternion = (exp(arg) + exp(-arg)) / 2.0
|
||||||
|
@ -679,73 +679,91 @@ public final class space/kscience/kmath/misc/CumulativeKt {
|
|||||||
public abstract interface annotation class space/kscience/kmath/misc/UnstableKMathAPI : java/lang/annotation/Annotation {
|
public abstract interface annotation class space/kscience/kmath/misc/UnstableKMathAPI : java/lang/annotation/Annotation {
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/nd/BufferNDAlgebra : space/kscience/kmath/nd/NDAlgebra {
|
public abstract interface class space/kscience/kmath/nd/AlgebraND {
|
||||||
public abstract fun combine (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDBuffer;
|
public static final field Companion Lspace/kscience/kmath/nd/AlgebraND$Companion;
|
||||||
public abstract fun getBuffer (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/structures/Buffer;
|
public abstract fun combine (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public abstract fun getElementContext ()Lspace/kscience/kmath/operations/Algebra;
|
||||||
|
public abstract fun getShape ()[I
|
||||||
|
public abstract fun invoke (Lkotlin/jvm/functions/Function1;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public abstract fun map (Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public abstract fun mapIndexed (Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public abstract fun produce (Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class space/kscience/kmath/nd/AlgebraND$Companion {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class space/kscience/kmath/nd/AlgebraND$DefaultImpls {
|
||||||
|
public static fun invoke (Lspace/kscience/kmath/nd/AlgebraND;Lkotlin/jvm/functions/Function1;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract interface class space/kscience/kmath/nd/BufferAlgebraND : space/kscience/kmath/nd/AlgebraND {
|
||||||
|
public abstract fun combine (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
|
public abstract fun getBuffer (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/structures/Buffer;
|
||||||
public abstract fun getBufferFactory ()Lkotlin/jvm/functions/Function2;
|
public abstract fun getBufferFactory ()Lkotlin/jvm/functions/Function2;
|
||||||
public abstract fun getStrides ()Lspace/kscience/kmath/nd/Strides;
|
public abstract fun getStrides ()Lspace/kscience/kmath/nd/Strides;
|
||||||
public abstract fun map (Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDBuffer;
|
public abstract fun map (Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public abstract fun mapIndexed (Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDBuffer;
|
public abstract fun mapIndexed (Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public abstract fun produce (Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDBuffer;
|
public abstract fun produce (Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/BufferNDAlgebra$DefaultImpls {
|
public final class space/kscience/kmath/nd/BufferAlgebraND$DefaultImpls {
|
||||||
public static fun combine (Lspace/kscience/kmath/nd/BufferNDAlgebra;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDBuffer;
|
public static fun combine (Lspace/kscience/kmath/nd/BufferAlgebraND;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public static fun getBuffer (Lspace/kscience/kmath/nd/BufferNDAlgebra;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/structures/Buffer;
|
public static fun getBuffer (Lspace/kscience/kmath/nd/BufferAlgebraND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/structures/Buffer;
|
||||||
public static fun invoke (Lspace/kscience/kmath/nd/BufferNDAlgebra;Lkotlin/jvm/functions/Function1;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public static fun invoke (Lspace/kscience/kmath/nd/BufferAlgebraND;Lkotlin/jvm/functions/Function1;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public static fun map (Lspace/kscience/kmath/nd/BufferNDAlgebra;Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDBuffer;
|
public static fun map (Lspace/kscience/kmath/nd/BufferAlgebraND;Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public static fun mapIndexed (Lspace/kscience/kmath/nd/BufferNDAlgebra;Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDBuffer;
|
public static fun mapIndexed (Lspace/kscience/kmath/nd/BufferAlgebraND;Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public static fun produce (Lspace/kscience/kmath/nd/BufferNDAlgebra;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDBuffer;
|
public static fun produce (Lspace/kscience/kmath/nd/BufferAlgebraND;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/BufferNDAlgebraKt {
|
public final class space/kscience/kmath/nd/BufferAlgebraNDKt {
|
||||||
public static final fun field (Lspace/kscience/kmath/nd/NDAlgebra$Companion;Lspace/kscience/kmath/operations/Field;Lkotlin/jvm/functions/Function2;[I)Lspace/kscience/kmath/nd/BufferedNDField;
|
public static final fun field (Lspace/kscience/kmath/nd/AlgebraND$Companion;Lspace/kscience/kmath/operations/Field;Lkotlin/jvm/functions/Function2;[I)Lspace/kscience/kmath/nd/BufferedFieldND;
|
||||||
public static final fun group (Lspace/kscience/kmath/nd/NDAlgebra$Companion;Lspace/kscience/kmath/operations/Group;Lkotlin/jvm/functions/Function2;[I)Lspace/kscience/kmath/nd/BufferedNDGroup;
|
public static final fun group (Lspace/kscience/kmath/nd/AlgebraND$Companion;Lspace/kscience/kmath/operations/Group;Lkotlin/jvm/functions/Function2;[I)Lspace/kscience/kmath/nd/BufferedGroupND;
|
||||||
public static final fun ndField (Lspace/kscience/kmath/operations/Field;Lkotlin/jvm/functions/Function2;[ILkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
public static final fun ndField (Lspace/kscience/kmath/operations/Field;Lkotlin/jvm/functions/Function2;[ILkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||||
public static final fun ndGroup (Lspace/kscience/kmath/operations/Group;Lkotlin/jvm/functions/Function2;[ILkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
public static final fun ndGroup (Lspace/kscience/kmath/operations/Group;Lkotlin/jvm/functions/Function2;[ILkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||||
public static final fun ndRing (Lspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function2;[ILkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
public static final fun ndRing (Lspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function2;[ILkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||||
public static final fun ring (Lspace/kscience/kmath/nd/NDAlgebra$Companion;Lspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function2;[I)Lspace/kscience/kmath/nd/BufferedNDRing;
|
public static final fun ring (Lspace/kscience/kmath/nd/AlgebraND$Companion;Lspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function2;[I)Lspace/kscience/kmath/nd/BufferedRingND;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class space/kscience/kmath/nd/BufferedNDField : space/kscience/kmath/nd/BufferedNDRing, space/kscience/kmath/nd/NDField {
|
public class space/kscience/kmath/nd/BufferedFieldND : space/kscience/kmath/nd/BufferedRingND, space/kscience/kmath/nd/FieldND {
|
||||||
public fun <init> ([ILspace/kscience/kmath/operations/Field;Lkotlin/jvm/functions/Function2;)V
|
public fun <init> ([ILspace/kscience/kmath/operations/Field;Lkotlin/jvm/functions/Function2;)V
|
||||||
public fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
public fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
public synthetic fun div (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun div (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public synthetic fun div (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun div (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun div (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun div (Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun div (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun div (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun div (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun div (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun div (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun div (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun divide (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun divide (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun divide (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun divide (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun leftSideNumberOperation (Ljava/lang/String;Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun leftSideNumberOperation (Ljava/lang/String;Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun leftSideNumberOperation (Ljava/lang/String;Ljava/lang/Number;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun leftSideNumberOperation (Ljava/lang/String;Ljava/lang/Number;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun leftSideNumberOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
public fun leftSideNumberOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
public synthetic fun number (Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun number (Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public fun number (Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun number (Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun rightSideNumberOperation (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun rightSideNumberOperation (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public fun rightSideNumberOperation (Ljava/lang/String;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun rightSideNumberOperation (Ljava/lang/String;Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun rightSideNumberOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
public fun rightSideNumberOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
public synthetic fun scale (Ljava/lang/Object;D)Ljava/lang/Object;
|
public synthetic fun scale (Ljava/lang/Object;D)Ljava/lang/Object;
|
||||||
public fun scale (Lspace/kscience/kmath/nd/NDStructure;D)Lspace/kscience/kmath/nd/NDStructure;
|
public fun scale (Lspace/kscience/kmath/nd/StructureND;D)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun times (Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun times (Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun times (Ljava/lang/Number;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun times (Ljava/lang/Number;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun times (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun times (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public fun times (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun times (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class space/kscience/kmath/nd/BufferedNDGroup : space/kscience/kmath/nd/BufferNDAlgebra, space/kscience/kmath/nd/NDGroup {
|
public class space/kscience/kmath/nd/BufferedGroupND : space/kscience/kmath/nd/BufferAlgebraND, space/kscience/kmath/nd/GroupND {
|
||||||
public fun <init> ([ILspace/kscience/kmath/operations/Group;Lkotlin/jvm/functions/Function2;)V
|
public fun <init> ([ILspace/kscience/kmath/operations/Group;Lkotlin/jvm/functions/Function2;)V
|
||||||
public synthetic fun add (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun add (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun add (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun add (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun binaryOperation (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun binaryOperation (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun binaryOperation (Ljava/lang/String;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun binaryOperation (Ljava/lang/String;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
public fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
public synthetic fun bindSymbol (Ljava/lang/String;)Ljava/lang/Object;
|
public synthetic fun bindSymbol (Ljava/lang/String;)Ljava/lang/Object;
|
||||||
public fun bindSymbol (Ljava/lang/String;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun bindSymbol (Ljava/lang/String;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun combine (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun combine (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun combine (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun combine (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun getBuffer (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/structures/Buffer;
|
public fun getBuffer (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/structures/Buffer;
|
||||||
public final fun getBufferFactory ()Lkotlin/jvm/functions/Function2;
|
public final fun getBufferFactory ()Lkotlin/jvm/functions/Function2;
|
||||||
public synthetic fun getElementContext ()Lspace/kscience/kmath/operations/Algebra;
|
public synthetic fun getElementContext ()Lspace/kscience/kmath/operations/Algebra;
|
||||||
public final fun getElementContext ()Lspace/kscience/kmath/operations/Group;
|
public final fun getElementContext ()Lspace/kscience/kmath/operations/Group;
|
||||||
@ -753,41 +771,41 @@ public class space/kscience/kmath/nd/BufferedNDGroup : space/kscience/kmath/nd/B
|
|||||||
public fun getStrides ()Lspace/kscience/kmath/nd/Strides;
|
public fun getStrides ()Lspace/kscience/kmath/nd/Strides;
|
||||||
public synthetic fun getZero ()Ljava/lang/Object;
|
public synthetic fun getZero ()Ljava/lang/Object;
|
||||||
public fun getZero ()Lspace/kscience/kmath/nd/NDBuffer;
|
public fun getZero ()Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public fun invoke (Lkotlin/jvm/functions/Function1;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun invoke (Lkotlin/jvm/functions/Function1;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun map (Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun map (Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun map (Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun map (Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun mapIndexed (Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun mapIndexed (Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun mapIndexed (Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun mapIndexed (Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun minus (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun minus (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun minus (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun minus (Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun minus (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun minus (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun minus (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun minus (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun plus (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun plus (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun plus (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun plus (Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun plus (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun plus (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun plus (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun plus (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun produce (Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun produce (Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun produce (Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun produce (Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun unaryMinus (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun unaryMinus (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun unaryMinus (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun unaryMinus (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun unaryOperation (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun unaryOperation (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun unaryOperation (Ljava/lang/String;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun unaryOperation (Ljava/lang/String;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun unaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
public fun unaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
||||||
public synthetic fun unaryPlus (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun unaryPlus (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun unaryPlus (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun unaryPlus (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class space/kscience/kmath/nd/BufferedNDRing : space/kscience/kmath/nd/BufferedNDGroup, space/kscience/kmath/nd/NDRing {
|
public class space/kscience/kmath/nd/BufferedRingND : space/kscience/kmath/nd/BufferedGroupND, space/kscience/kmath/nd/RingND {
|
||||||
public fun <init> ([ILspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function2;)V
|
public fun <init> ([ILspace/kscience/kmath/operations/Ring;Lkotlin/jvm/functions/Function2;)V
|
||||||
public fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
public fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
public synthetic fun getOne ()Ljava/lang/Object;
|
public synthetic fun getOne ()Ljava/lang/Object;
|
||||||
public fun getOne ()Lspace/kscience/kmath/nd/NDBuffer;
|
public fun getOne ()Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun multiply (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun multiply (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun multiply (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun multiply (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun times (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun times (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun times (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun times (Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun times (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun times (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun times (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun times (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/DefaultStrides : space/kscience/kmath/nd/Strides {
|
public final class space/kscience/kmath/nd/DefaultStrides : space/kscience/kmath/nd/Strides {
|
||||||
@ -807,6 +825,74 @@ public final class space/kscience/kmath/nd/DefaultStrides$Companion {
|
|||||||
public final fun invoke ([I)Lspace/kscience/kmath/nd/Strides;
|
public final fun invoke ([I)Lspace/kscience/kmath/nd/Strides;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public abstract interface class space/kscience/kmath/nd/FieldND : space/kscience/kmath/nd/RingND, space/kscience/kmath/operations/Field, space/kscience/kmath/operations/ScaleOperations {
|
||||||
|
public abstract fun div (Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public abstract fun div (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public abstract fun divide (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class space/kscience/kmath/nd/FieldND$DefaultImpls {
|
||||||
|
public static fun add (Lspace/kscience/kmath/nd/FieldND;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun binaryOperation (Lspace/kscience/kmath/nd/FieldND;Ljava/lang/String;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun binaryOperationFunction (Lspace/kscience/kmath/nd/FieldND;Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
|
public static fun bindSymbol (Lspace/kscience/kmath/nd/FieldND;Ljava/lang/String;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun div (Lspace/kscience/kmath/nd/FieldND;Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun div (Lspace/kscience/kmath/nd/FieldND;Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun div (Lspace/kscience/kmath/nd/FieldND;Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun div (Lspace/kscience/kmath/nd/FieldND;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun divide (Lspace/kscience/kmath/nd/FieldND;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun invoke (Lspace/kscience/kmath/nd/FieldND;Lkotlin/jvm/functions/Function1;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun leftSideNumberOperation (Lspace/kscience/kmath/nd/FieldND;Ljava/lang/String;Ljava/lang/Number;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun leftSideNumberOperationFunction (Lspace/kscience/kmath/nd/FieldND;Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
|
public static fun minus (Lspace/kscience/kmath/nd/FieldND;Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun minus (Lspace/kscience/kmath/nd/FieldND;Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun minus (Lspace/kscience/kmath/nd/FieldND;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun multiply (Lspace/kscience/kmath/nd/FieldND;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun number (Lspace/kscience/kmath/nd/FieldND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun plus (Lspace/kscience/kmath/nd/FieldND;Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun plus (Lspace/kscience/kmath/nd/FieldND;Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun plus (Lspace/kscience/kmath/nd/FieldND;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun rightSideNumberOperation (Lspace/kscience/kmath/nd/FieldND;Ljava/lang/String;Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun rightSideNumberOperationFunction (Lspace/kscience/kmath/nd/FieldND;Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
|
public static fun times (Lspace/kscience/kmath/nd/FieldND;Ljava/lang/Number;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun times (Lspace/kscience/kmath/nd/FieldND;Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun times (Lspace/kscience/kmath/nd/FieldND;Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun times (Lspace/kscience/kmath/nd/FieldND;Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun times (Lspace/kscience/kmath/nd/FieldND;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun unaryOperation (Lspace/kscience/kmath/nd/FieldND;Ljava/lang/String;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun unaryOperationFunction (Lspace/kscience/kmath/nd/FieldND;Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
||||||
|
public static fun unaryPlus (Lspace/kscience/kmath/nd/FieldND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract interface class space/kscience/kmath/nd/GroupND : space/kscience/kmath/nd/AlgebraND, space/kscience/kmath/operations/Group {
|
||||||
|
public static final field Companion Lspace/kscience/kmath/nd/GroupND$Companion;
|
||||||
|
public abstract fun add (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public abstract fun minus (Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public abstract fun minus (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public abstract fun plus (Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public abstract fun plus (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class space/kscience/kmath/nd/GroupND$Companion {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class space/kscience/kmath/nd/GroupND$DefaultImpls {
|
||||||
|
public static fun add (Lspace/kscience/kmath/nd/GroupND;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun binaryOperation (Lspace/kscience/kmath/nd/GroupND;Ljava/lang/String;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun binaryOperationFunction (Lspace/kscience/kmath/nd/GroupND;Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
|
public static fun bindSymbol (Lspace/kscience/kmath/nd/GroupND;Ljava/lang/String;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun invoke (Lspace/kscience/kmath/nd/GroupND;Lkotlin/jvm/functions/Function1;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun minus (Lspace/kscience/kmath/nd/GroupND;Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun minus (Lspace/kscience/kmath/nd/GroupND;Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun minus (Lspace/kscience/kmath/nd/GroupND;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun plus (Lspace/kscience/kmath/nd/GroupND;Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun plus (Lspace/kscience/kmath/nd/GroupND;Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun plus (Lspace/kscience/kmath/nd/GroupND;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun unaryOperation (Lspace/kscience/kmath/nd/GroupND;Ljava/lang/String;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun unaryOperationFunction (Lspace/kscience/kmath/nd/GroupND;Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
||||||
|
public static fun unaryPlus (Lspace/kscience/kmath/nd/GroupND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/MutableNDBuffer : space/kscience/kmath/nd/NDBuffer, space/kscience/kmath/nd/MutableNDStructure {
|
public final class space/kscience/kmath/nd/MutableNDBuffer : space/kscience/kmath/nd/NDBuffer, space/kscience/kmath/nd/MutableNDStructure {
|
||||||
public fun <init> (Lspace/kscience/kmath/nd/Strides;Lspace/kscience/kmath/structures/MutableBuffer;)V
|
public fun <init> (Lspace/kscience/kmath/nd/Strides;Lspace/kscience/kmath/structures/MutableBuffer;)V
|
||||||
public synthetic fun getBuffer ()Lspace/kscience/kmath/structures/Buffer;
|
public synthetic fun getBuffer ()Lspace/kscience/kmath/structures/Buffer;
|
||||||
@ -814,7 +900,7 @@ public final class space/kscience/kmath/nd/MutableNDBuffer : space/kscience/kmat
|
|||||||
public fun set ([ILjava/lang/Object;)V
|
public fun set ([ILjava/lang/Object;)V
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/nd/MutableNDStructure : space/kscience/kmath/nd/NDStructure {
|
public abstract interface class space/kscience/kmath/nd/MutableNDStructure : space/kscience/kmath/nd/StructureND {
|
||||||
public abstract fun set ([ILjava/lang/Object;)V
|
public abstract fun set ([ILjava/lang/Object;)V
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -822,25 +908,7 @@ public final class space/kscience/kmath/nd/MutableNDStructure$DefaultImpls {
|
|||||||
public static fun getDimension (Lspace/kscience/kmath/nd/MutableNDStructure;)I
|
public static fun getDimension (Lspace/kscience/kmath/nd/MutableNDStructure;)I
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/nd/NDAlgebra {
|
public class space/kscience/kmath/nd/NDBuffer : space/kscience/kmath/nd/StructureND {
|
||||||
public static final field Companion Lspace/kscience/kmath/nd/NDAlgebra$Companion;
|
|
||||||
public abstract fun combine (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public abstract fun getElementContext ()Lspace/kscience/kmath/operations/Algebra;
|
|
||||||
public abstract fun getShape ()[I
|
|
||||||
public abstract fun invoke (Lkotlin/jvm/functions/Function1;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public abstract fun map (Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public abstract fun mapIndexed (Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public abstract fun produce (Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/NDAlgebra$Companion {
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/NDAlgebra$DefaultImpls {
|
|
||||||
public static fun invoke (Lspace/kscience/kmath/nd/NDAlgebra;Lkotlin/jvm/functions/Function1;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
}
|
|
||||||
|
|
||||||
public class space/kscience/kmath/nd/NDBuffer : space/kscience/kmath/nd/NDStructure {
|
|
||||||
public fun <init> (Lspace/kscience/kmath/nd/Strides;Lspace/kscience/kmath/structures/Buffer;)V
|
public fun <init> (Lspace/kscience/kmath/nd/Strides;Lspace/kscience/kmath/structures/Buffer;)V
|
||||||
public fun elements ()Lkotlin/sequences/Sequence;
|
public fun elements ()Lkotlin/sequences/Sequence;
|
||||||
public fun equals (Ljava/lang/Object;)Z
|
public fun equals (Ljava/lang/Object;)Z
|
||||||
@ -853,204 +921,107 @@ public class space/kscience/kmath/nd/NDBuffer : space/kscience/kmath/nd/NDStruct
|
|||||||
public fun toString ()Ljava/lang/String;
|
public fun toString ()Ljava/lang/String;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/nd/NDField : space/kscience/kmath/nd/NDRing, space/kscience/kmath/operations/Field, space/kscience/kmath/operations/ScaleOperations {
|
public final class space/kscience/kmath/nd/RealFieldND : space/kscience/kmath/nd/BufferedFieldND, space/kscience/kmath/operations/ExtendedField, space/kscience/kmath/operations/NumbersAddOperations, space/kscience/kmath/operations/ScaleOperations {
|
||||||
public abstract fun div (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public abstract fun div (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public abstract fun divide (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/NDField$DefaultImpls {
|
|
||||||
public static fun add (Lspace/kscience/kmath/nd/NDField;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun binaryOperation (Lspace/kscience/kmath/nd/NDField;Ljava/lang/String;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun binaryOperationFunction (Lspace/kscience/kmath/nd/NDField;Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
|
||||||
public static fun bindSymbol (Lspace/kscience/kmath/nd/NDField;Ljava/lang/String;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun div (Lspace/kscience/kmath/nd/NDField;Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun div (Lspace/kscience/kmath/nd/NDField;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun div (Lspace/kscience/kmath/nd/NDField;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun div (Lspace/kscience/kmath/nd/NDField;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun divide (Lspace/kscience/kmath/nd/NDField;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun invoke (Lspace/kscience/kmath/nd/NDField;Lkotlin/jvm/functions/Function1;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun leftSideNumberOperation (Lspace/kscience/kmath/nd/NDField;Ljava/lang/String;Ljava/lang/Number;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun leftSideNumberOperationFunction (Lspace/kscience/kmath/nd/NDField;Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
|
||||||
public static fun minus (Lspace/kscience/kmath/nd/NDField;Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun minus (Lspace/kscience/kmath/nd/NDField;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun minus (Lspace/kscience/kmath/nd/NDField;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun multiply (Lspace/kscience/kmath/nd/NDField;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun number (Lspace/kscience/kmath/nd/NDField;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun plus (Lspace/kscience/kmath/nd/NDField;Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun plus (Lspace/kscience/kmath/nd/NDField;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun plus (Lspace/kscience/kmath/nd/NDField;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun rightSideNumberOperation (Lspace/kscience/kmath/nd/NDField;Ljava/lang/String;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun rightSideNumberOperationFunction (Lspace/kscience/kmath/nd/NDField;Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
|
||||||
public static fun times (Lspace/kscience/kmath/nd/NDField;Ljava/lang/Number;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun times (Lspace/kscience/kmath/nd/NDField;Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun times (Lspace/kscience/kmath/nd/NDField;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun times (Lspace/kscience/kmath/nd/NDField;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun times (Lspace/kscience/kmath/nd/NDField;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun unaryOperation (Lspace/kscience/kmath/nd/NDField;Ljava/lang/String;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun unaryOperationFunction (Lspace/kscience/kmath/nd/NDField;Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
|
||||||
public static fun unaryPlus (Lspace/kscience/kmath/nd/NDField;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/nd/NDGroup : space/kscience/kmath/nd/NDAlgebra, space/kscience/kmath/operations/Group {
|
|
||||||
public static final field Companion Lspace/kscience/kmath/nd/NDGroup$Companion;
|
|
||||||
public abstract fun add (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public abstract fun minus (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public abstract fun minus (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public abstract fun plus (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public abstract fun plus (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/NDGroup$Companion {
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/NDGroup$DefaultImpls {
|
|
||||||
public static fun add (Lspace/kscience/kmath/nd/NDGroup;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun binaryOperation (Lspace/kscience/kmath/nd/NDGroup;Ljava/lang/String;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun binaryOperationFunction (Lspace/kscience/kmath/nd/NDGroup;Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
|
||||||
public static fun bindSymbol (Lspace/kscience/kmath/nd/NDGroup;Ljava/lang/String;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun invoke (Lspace/kscience/kmath/nd/NDGroup;Lkotlin/jvm/functions/Function1;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun minus (Lspace/kscience/kmath/nd/NDGroup;Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun minus (Lspace/kscience/kmath/nd/NDGroup;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun minus (Lspace/kscience/kmath/nd/NDGroup;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun plus (Lspace/kscience/kmath/nd/NDGroup;Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun plus (Lspace/kscience/kmath/nd/NDGroup;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun plus (Lspace/kscience/kmath/nd/NDGroup;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun unaryOperation (Lspace/kscience/kmath/nd/NDGroup;Ljava/lang/String;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun unaryOperationFunction (Lspace/kscience/kmath/nd/NDGroup;Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
|
||||||
public static fun unaryPlus (Lspace/kscience/kmath/nd/NDGroup;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/nd/NDRing : space/kscience/kmath/nd/NDGroup, space/kscience/kmath/operations/Ring {
|
|
||||||
public static final field Companion Lspace/kscience/kmath/nd/NDRing$Companion;
|
|
||||||
public abstract fun multiply (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public abstract fun times (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public abstract fun times (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/NDRing$Companion {
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/NDRing$DefaultImpls {
|
|
||||||
public static fun add (Lspace/kscience/kmath/nd/NDRing;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun binaryOperation (Lspace/kscience/kmath/nd/NDRing;Ljava/lang/String;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun binaryOperationFunction (Lspace/kscience/kmath/nd/NDRing;Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
|
||||||
public static fun bindSymbol (Lspace/kscience/kmath/nd/NDRing;Ljava/lang/String;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun invoke (Lspace/kscience/kmath/nd/NDRing;Lkotlin/jvm/functions/Function1;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun minus (Lspace/kscience/kmath/nd/NDRing;Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun minus (Lspace/kscience/kmath/nd/NDRing;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun minus (Lspace/kscience/kmath/nd/NDRing;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun multiply (Lspace/kscience/kmath/nd/NDRing;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun plus (Lspace/kscience/kmath/nd/NDRing;Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun plus (Lspace/kscience/kmath/nd/NDRing;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun plus (Lspace/kscience/kmath/nd/NDRing;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun times (Lspace/kscience/kmath/nd/NDRing;Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun times (Lspace/kscience/kmath/nd/NDRing;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun times (Lspace/kscience/kmath/nd/NDRing;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun unaryOperation (Lspace/kscience/kmath/nd/NDRing;Ljava/lang/String;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
public static fun unaryOperationFunction (Lspace/kscience/kmath/nd/NDRing;Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
|
||||||
public static fun unaryPlus (Lspace/kscience/kmath/nd/NDRing;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/nd/NDStructure {
|
|
||||||
public static final field Companion Lspace/kscience/kmath/nd/NDStructure$Companion;
|
|
||||||
public abstract fun elements ()Lkotlin/sequences/Sequence;
|
|
||||||
public abstract fun equals (Ljava/lang/Object;)Z
|
|
||||||
public abstract fun get ([I)Ljava/lang/Object;
|
|
||||||
public abstract fun getDimension ()I
|
|
||||||
public abstract fun getShape ()[I
|
|
||||||
public abstract fun hashCode ()I
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/NDStructure$Companion {
|
|
||||||
public final fun auto (Lkotlin/reflect/KClass;Lspace/kscience/kmath/nd/Strides;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/nd/NDBuffer;
|
|
||||||
public final fun auto (Lkotlin/reflect/KClass;[ILkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/nd/NDBuffer;
|
|
||||||
public final fun buffered (Lspace/kscience/kmath/nd/Strides;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/nd/NDBuffer;
|
|
||||||
public final fun buffered ([ILkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/nd/NDBuffer;
|
|
||||||
public static synthetic fun buffered$default (Lspace/kscience/kmath/nd/NDStructure$Companion;Lspace/kscience/kmath/nd/Strides;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lspace/kscience/kmath/nd/NDBuffer;
|
|
||||||
public static synthetic fun buffered$default (Lspace/kscience/kmath/nd/NDStructure$Companion;[ILkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lspace/kscience/kmath/nd/NDBuffer;
|
|
||||||
public final fun contentEquals (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Z
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/NDStructure$DefaultImpls {
|
|
||||||
public static fun getDimension (Lspace/kscience/kmath/nd/NDStructure;)I
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/NDStructureKt {
|
|
||||||
public static final fun get (Lspace/kscience/kmath/nd/NDStructure;[I)Ljava/lang/Object;
|
|
||||||
public static final fun mapInPlace (Lspace/kscience/kmath/nd/MutableNDStructure;Lkotlin/jvm/functions/Function2;)V
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/RealNDField : space/kscience/kmath/nd/BufferedNDField, space/kscience/kmath/operations/ExtendedField, space/kscience/kmath/operations/NumbersAddOperations, space/kscience/kmath/operations/ScaleOperations {
|
|
||||||
public fun <init> ([I)V
|
public fun <init> ([I)V
|
||||||
public synthetic fun acos (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun acos (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun acos (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun acos (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun acosh (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun acosh (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun acosh (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun acosh (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun asin (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun asin (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun asin (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun asin (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun asinh (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun asinh (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun asinh (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun asinh (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun atan (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun atan (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun atan (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun atan (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun atanh (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun atanh (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun atanh (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun atanh (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public fun combine (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun combine (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun combine (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun combine (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun cos (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun cos (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun cos (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun cos (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun cosh (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun cosh (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun cosh (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun cosh (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun exp (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun exp (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun exp (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun exp (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun getBuffer (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/structures/Buffer;
|
public synthetic fun getBuffer (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/structures/Buffer;
|
||||||
public fun getBuffer-LGjt3BI (Lspace/kscience/kmath/nd/NDStructure;)[D
|
public fun getBuffer-LGjt3BI (Lspace/kscience/kmath/nd/StructureND;)[D
|
||||||
public synthetic fun getOne ()Ljava/lang/Object;
|
public synthetic fun getOne ()Ljava/lang/Object;
|
||||||
public fun getOne ()Lspace/kscience/kmath/nd/NDBuffer;
|
public fun getOne ()Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun getZero ()Ljava/lang/Object;
|
public synthetic fun getZero ()Ljava/lang/Object;
|
||||||
public fun getZero ()Lspace/kscience/kmath/nd/NDBuffer;
|
public fun getZero ()Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun ln (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun ln (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun ln (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun ln (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public fun map (Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun map (Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun map (Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun map (Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun mapIndexed (Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun mapIndexed (Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun mapIndexed (Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun mapIndexed (Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun minus (Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun minus (Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun minus (Ljava/lang/Number;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun minus (Ljava/lang/Number;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun minus (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun minus (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public fun minus (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun minus (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun number (Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun number (Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public fun number (Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun number (Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun number (Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun number (Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun plus (Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun plus (Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun plus (Ljava/lang/Number;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun plus (Ljava/lang/Number;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun plus (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun plus (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public fun plus (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun plus (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun pow (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun pow (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public fun pow (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun pow (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun power (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun power (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public fun power (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun power (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public fun produce (Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun produce (Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun produce (Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun produce (Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun rightSideNumberOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
public fun rightSideNumberOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
public synthetic fun scale (Ljava/lang/Object;D)Ljava/lang/Object;
|
public synthetic fun scale (Ljava/lang/Object;D)Ljava/lang/Object;
|
||||||
public fun scale (Lspace/kscience/kmath/nd/NDStructure;D)Lspace/kscience/kmath/nd/NDStructure;
|
public fun scale (Lspace/kscience/kmath/nd/StructureND;D)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun sin (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun sin (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun sin (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun sin (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun sinh (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun sinh (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun sinh (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun sinh (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun sqrt (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun sqrt (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun sqrt (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun sqrt (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun tan (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun tan (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun tan (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun tan (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun tanh (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun tanh (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun tanh (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun tanh (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public fun unaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
public fun unaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/RealNDFieldKt {
|
public final class space/kscience/kmath/nd/RealFieldNDKt {
|
||||||
public static final fun nd (Lspace/kscience/kmath/operations/RealField;[ILkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
public static final fun nd (Lspace/kscience/kmath/operations/RealField;[ILkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||||
public static final fun real (Lspace/kscience/kmath/nd/NDAlgebra$Companion;[I)Lspace/kscience/kmath/nd/RealNDField;
|
public static final fun real (Lspace/kscience/kmath/nd/AlgebraND$Companion;[I)Lspace/kscience/kmath/nd/RealFieldND;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract interface class space/kscience/kmath/nd/RingND : space/kscience/kmath/nd/GroupND, space/kscience/kmath/operations/Ring {
|
||||||
|
public static final field Companion Lspace/kscience/kmath/nd/RingND$Companion;
|
||||||
|
public abstract fun multiply (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public abstract fun times (Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public abstract fun times (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class space/kscience/kmath/nd/RingND$Companion {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class space/kscience/kmath/nd/RingND$DefaultImpls {
|
||||||
|
public static fun add (Lspace/kscience/kmath/nd/RingND;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun binaryOperation (Lspace/kscience/kmath/nd/RingND;Ljava/lang/String;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun binaryOperationFunction (Lspace/kscience/kmath/nd/RingND;Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
|
public static fun bindSymbol (Lspace/kscience/kmath/nd/RingND;Ljava/lang/String;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun invoke (Lspace/kscience/kmath/nd/RingND;Lkotlin/jvm/functions/Function1;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun minus (Lspace/kscience/kmath/nd/RingND;Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun minus (Lspace/kscience/kmath/nd/RingND;Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun minus (Lspace/kscience/kmath/nd/RingND;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun multiply (Lspace/kscience/kmath/nd/RingND;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun plus (Lspace/kscience/kmath/nd/RingND;Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun plus (Lspace/kscience/kmath/nd/RingND;Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun plus (Lspace/kscience/kmath/nd/RingND;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun times (Lspace/kscience/kmath/nd/RingND;Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun times (Lspace/kscience/kmath/nd/RingND;Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun times (Lspace/kscience/kmath/nd/RingND;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun unaryOperation (Lspace/kscience/kmath/nd/RingND;Ljava/lang/String;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
|
public static fun unaryOperationFunction (Lspace/kscience/kmath/nd/RingND;Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
||||||
|
public static fun unaryPlus (Lspace/kscience/kmath/nd/RingND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/ShapeMismatchException : java/lang/RuntimeException {
|
public final class space/kscience/kmath/nd/ShapeMismatchException : java/lang/RuntimeException {
|
||||||
@ -1059,33 +1030,33 @@ public final class space/kscience/kmath/nd/ShapeMismatchException : java/lang/Ru
|
|||||||
public final fun getExpected ()[I
|
public final fun getExpected ()[I
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/ShortNDRing : space/kscience/kmath/nd/BufferedNDRing, space/kscience/kmath/operations/NumbersAddOperations {
|
public final class space/kscience/kmath/nd/ShortRingND : space/kscience/kmath/nd/BufferedRingND, space/kscience/kmath/operations/NumbersAddOperations {
|
||||||
public fun <init> ([I)V
|
public fun <init> ([I)V
|
||||||
public synthetic fun getOne ()Ljava/lang/Object;
|
public synthetic fun getOne ()Ljava/lang/Object;
|
||||||
public fun getOne ()Lspace/kscience/kmath/nd/NDBuffer;
|
public fun getOne ()Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun getZero ()Ljava/lang/Object;
|
public synthetic fun getZero ()Ljava/lang/Object;
|
||||||
public fun getZero ()Lspace/kscience/kmath/nd/NDBuffer;
|
public fun getZero ()Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun leftSideNumberOperation (Ljava/lang/String;Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun leftSideNumberOperation (Ljava/lang/String;Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun leftSideNumberOperation (Ljava/lang/String;Ljava/lang/Number;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun leftSideNumberOperation (Ljava/lang/String;Ljava/lang/Number;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun leftSideNumberOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
public fun leftSideNumberOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
public synthetic fun minus (Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun minus (Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun minus (Ljava/lang/Number;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun minus (Ljava/lang/Number;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun minus (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun minus (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public fun minus (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun minus (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun number (Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun number (Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public fun number (Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDBuffer;
|
public fun number (Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
public synthetic fun plus (Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun plus (Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun plus (Ljava/lang/Number;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun plus (Ljava/lang/Number;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun plus (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun plus (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public fun plus (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun plus (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun rightSideNumberOperation (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun rightSideNumberOperation (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public fun rightSideNumberOperation (Ljava/lang/String;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun rightSideNumberOperation (Ljava/lang/String;Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun rightSideNumberOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
public fun rightSideNumberOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/ShortNDRingKt {
|
public final class space/kscience/kmath/nd/ShortRingNDKt {
|
||||||
public static final fun nd (Lspace/kscience/kmath/operations/ShortRing;[ILkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
public static final fun nd (Lspace/kscience/kmath/operations/ShortRing;[ILkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||||
public static final fun produceInline (Lspace/kscience/kmath/nd/BufferedNDRing;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDBuffer;
|
public static final fun produceInline (Lspace/kscience/kmath/nd/BufferedRingND;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/nd/Strides {
|
public abstract interface class space/kscience/kmath/nd/Strides {
|
||||||
@ -1101,7 +1072,7 @@ public final class space/kscience/kmath/nd/Strides$DefaultImpls {
|
|||||||
public static fun indices (Lspace/kscience/kmath/nd/Strides;)Lkotlin/sequences/Sequence;
|
public static fun indices (Lspace/kscience/kmath/nd/Strides;)Lkotlin/sequences/Sequence;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/nd/Structure1D : space/kscience/kmath/nd/NDStructure, space/kscience/kmath/structures/Buffer {
|
public abstract interface class space/kscience/kmath/nd/Structure1D : space/kscience/kmath/nd/StructureND, space/kscience/kmath/structures/Buffer {
|
||||||
public abstract fun get ([I)Ljava/lang/Object;
|
public abstract fun get ([I)Ljava/lang/Object;
|
||||||
public abstract fun getDimension ()I
|
public abstract fun getDimension ()I
|
||||||
public abstract fun iterator ()Ljava/util/Iterator;
|
public abstract fun iterator ()Ljava/util/Iterator;
|
||||||
@ -1115,11 +1086,11 @@ public final class space/kscience/kmath/nd/Structure1D$DefaultImpls {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/Structure1DKt {
|
public final class space/kscience/kmath/nd/Structure1DKt {
|
||||||
public static final fun as1D (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/Structure1D;
|
public static final fun as1D (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/Structure1D;
|
||||||
public static final fun asND (Lspace/kscience/kmath/structures/Buffer;)Lspace/kscience/kmath/nd/Structure1D;
|
public static final fun asND (Lspace/kscience/kmath/structures/Buffer;)Lspace/kscience/kmath/nd/Structure1D;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/nd/Structure2D : space/kscience/kmath/nd/NDStructure {
|
public abstract interface class space/kscience/kmath/nd/Structure2D : space/kscience/kmath/nd/StructureND {
|
||||||
public static final field Companion Lspace/kscience/kmath/nd/Structure2D$Companion;
|
public static final field Companion Lspace/kscience/kmath/nd/Structure2D$Companion;
|
||||||
public abstract fun elements ()Lkotlin/sequences/Sequence;
|
public abstract fun elements ()Lkotlin/sequences/Sequence;
|
||||||
public abstract fun get (II)Ljava/lang/Object;
|
public abstract fun get (II)Ljava/lang/Object;
|
||||||
@ -1144,7 +1115,36 @@ public final class space/kscience/kmath/nd/Structure2D$DefaultImpls {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/nd/Structure2DKt {
|
public final class space/kscience/kmath/nd/Structure2DKt {
|
||||||
public static final fun as2D (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/Structure2D;
|
public static final fun as2D (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/Structure2D;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract interface class space/kscience/kmath/nd/StructureND {
|
||||||
|
public static final field Companion Lspace/kscience/kmath/nd/StructureND$Companion;
|
||||||
|
public abstract fun elements ()Lkotlin/sequences/Sequence;
|
||||||
|
public abstract fun equals (Ljava/lang/Object;)Z
|
||||||
|
public abstract fun get ([I)Ljava/lang/Object;
|
||||||
|
public abstract fun getDimension ()I
|
||||||
|
public abstract fun getShape ()[I
|
||||||
|
public abstract fun hashCode ()I
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class space/kscience/kmath/nd/StructureND$Companion {
|
||||||
|
public final fun auto (Lkotlin/reflect/KClass;Lspace/kscience/kmath/nd/Strides;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
|
public final fun auto (Lkotlin/reflect/KClass;[ILkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
|
public final fun buffered (Lspace/kscience/kmath/nd/Strides;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
|
public final fun buffered ([ILkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
|
public static synthetic fun buffered$default (Lspace/kscience/kmath/nd/StructureND$Companion;Lspace/kscience/kmath/nd/Strides;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
|
public static synthetic fun buffered$default (Lspace/kscience/kmath/nd/StructureND$Companion;[ILkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lspace/kscience/kmath/nd/NDBuffer;
|
||||||
|
public final fun contentEquals (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Z
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class space/kscience/kmath/nd/StructureND$DefaultImpls {
|
||||||
|
public static fun getDimension (Lspace/kscience/kmath/nd/StructureND;)I
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class space/kscience/kmath/nd/StructureNDKt {
|
||||||
|
public static final fun get (Lspace/kscience/kmath/nd/StructureND;[I)Ljava/lang/Object;
|
||||||
|
public static final fun mapInPlace (Lspace/kscience/kmath/nd/MutableNDStructure;Lkotlin/jvm/functions/Function2;)V
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class space/kscience/kmath/operations/Algebra {
|
public abstract interface class space/kscience/kmath/operations/Algebra {
|
||||||
@ -1287,7 +1287,7 @@ public final class space/kscience/kmath/operations/BigIntField : space/kscience/
|
|||||||
|
|
||||||
public final class space/kscience/kmath/operations/BigIntKt {
|
public final class space/kscience/kmath/operations/BigIntKt {
|
||||||
public static final fun abs (Lspace/kscience/kmath/operations/BigInt;)Lspace/kscience/kmath/operations/BigInt;
|
public static final fun abs (Lspace/kscience/kmath/operations/BigInt;)Lspace/kscience/kmath/operations/BigInt;
|
||||||
public static final fun bigInt (Lspace/kscience/kmath/nd/NDAlgebra$Companion;[I)Lspace/kscience/kmath/nd/BufferedNDRing;
|
public static final fun bigInt (Lspace/kscience/kmath/nd/AlgebraND$Companion;[I)Lspace/kscience/kmath/nd/BufferedRingND;
|
||||||
public static final fun bigInt (Lspace/kscience/kmath/structures/Buffer$Companion;ILkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/structures/Buffer;
|
public static final fun bigInt (Lspace/kscience/kmath/structures/Buffer$Companion;ILkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/structures/Buffer;
|
||||||
public static final fun bigInt (Lspace/kscience/kmath/structures/MutableBuffer$Companion;ILkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/structures/MutableBuffer;
|
public static final fun bigInt (Lspace/kscience/kmath/structures/MutableBuffer$Companion;ILkotlin/jvm/functions/Function1;)Lspace/kscience/kmath/structures/MutableBuffer;
|
||||||
public static final fun parseBigInteger (Ljava/lang/String;)Lspace/kscience/kmath/operations/BigInt;
|
public static final fun parseBigInteger (Ljava/lang/String;)Lspace/kscience/kmath/operations/BigInt;
|
||||||
|
@ -17,7 +17,7 @@ public class BufferedLinearSpace<T : Any, A : Ring<T>>(
|
|||||||
private fun ndRing(
|
private fun ndRing(
|
||||||
rows: Int,
|
rows: Int,
|
||||||
cols: Int,
|
cols: Int,
|
||||||
): BufferedNDRing<T, A> = NDAlgebra.ring(elementAlgebra, bufferFactory, rows, cols)
|
): BufferedRingND<T, A> = AlgebraND.ring(elementAlgebra, bufferFactory, rows, cols)
|
||||||
|
|
||||||
override fun buildMatrix(rows: Int, columns: Int, initializer: A.(i: Int, j: Int) -> T): Matrix<T> =
|
override fun buildMatrix(rows: Int, columns: Int, initializer: A.(i: Int, j: Int) -> T): Matrix<T> =
|
||||||
ndRing(rows, columns).produce { (i, j) -> elementAlgebra.initializer(i, j) }.as2D()
|
ndRing(rows, columns).produce { (i, j) -> elementAlgebra.initializer(i, j) }.as2D()
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package space.kscience.kmath.linear
|
package space.kscience.kmath.linear
|
||||||
|
|
||||||
import space.kscience.kmath.nd.NDStructure
|
import space.kscience.kmath.nd.StructureND
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The matrix where each element is evaluated each time when is being accessed.
|
* The matrix where each element is evaluated each time when is being accessed.
|
||||||
@ -19,8 +19,8 @@ public class VirtualMatrix<T : Any>(
|
|||||||
|
|
||||||
override fun equals(other: Any?): Boolean {
|
override fun equals(other: Any?): Boolean {
|
||||||
if (this === other) return true
|
if (this === other) return true
|
||||||
if (other !is NDStructure<*>) return false
|
if (other !is StructureND<*>) return false
|
||||||
return NDStructure.contentEquals(this, other)
|
return StructureND.contentEquals(this, other)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hashCode(): Int {
|
override fun hashCode(): Int {
|
||||||
|
@ -21,7 +21,7 @@ public class ShapeMismatchException(public val expected: IntArray, public val ac
|
|||||||
* @param C the type of the element context.
|
* @param C the type of the element context.
|
||||||
* @param N the type of the structure.
|
* @param N the type of the structure.
|
||||||
*/
|
*/
|
||||||
public interface NDAlgebra<T, C : Algebra<T>> {
|
public interface AlgebraND<T, C : Algebra<T>> {
|
||||||
/**
|
/**
|
||||||
* The shape of ND-structures this algebra operates on.
|
* The shape of ND-structures this algebra operates on.
|
||||||
*/
|
*/
|
||||||
@ -35,27 +35,27 @@ public interface NDAlgebra<T, C : Algebra<T>> {
|
|||||||
/**
|
/**
|
||||||
* Produces a new NDStructure using given initializer function.
|
* Produces a new NDStructure using given initializer function.
|
||||||
*/
|
*/
|
||||||
public fun produce(initializer: C.(IntArray) -> T): NDStructure<T>
|
public fun produce(initializer: C.(IntArray) -> T): StructureND<T>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Maps elements from one structure to another one by applying [transform] to them.
|
* Maps elements from one structure to another one by applying [transform] to them.
|
||||||
*/
|
*/
|
||||||
public fun NDStructure<T>.map(transform: C.(T) -> T): NDStructure<T>
|
public fun StructureND<T>.map(transform: C.(T) -> T): StructureND<T>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Maps elements from one structure to another one by applying [transform] to them alongside with their indices.
|
* Maps elements from one structure to another one by applying [transform] to them alongside with their indices.
|
||||||
*/
|
*/
|
||||||
public fun NDStructure<T>.mapIndexed(transform: C.(index: IntArray, T) -> T): NDStructure<T>
|
public fun StructureND<T>.mapIndexed(transform: C.(index: IntArray, T) -> T): StructureND<T>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Combines two structures into one.
|
* Combines two structures into one.
|
||||||
*/
|
*/
|
||||||
public fun combine(a: NDStructure<T>, b: NDStructure<T>, transform: C.(T, T) -> T): NDStructure<T>
|
public fun combine(a: StructureND<T>, b: StructureND<T>, transform: C.(T, T) -> T): StructureND<T>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Element-wise invocation of function working on [T] on a [NDStructure].
|
* Element-wise invocation of function working on [T] on a [StructureND].
|
||||||
*/
|
*/
|
||||||
public operator fun Function1<T, T>.invoke(structure: NDStructure<T>): NDStructure<T> =
|
public operator fun Function1<T, T>.invoke(structure: StructureND<T>): StructureND<T> =
|
||||||
structure.map { value -> this@invoke(value) }
|
structure.map { value -> this@invoke(value) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -67,7 +67,7 @@ public interface NDAlgebra<T, C : Algebra<T>> {
|
|||||||
* @return a feature object or `null` if it isn't present.
|
* @return a feature object or `null` if it isn't present.
|
||||||
*/
|
*/
|
||||||
@UnstableKMathAPI
|
@UnstableKMathAPI
|
||||||
public fun <F : Any> getFeature(structure: NDStructure<T>, type: KClass<F>): F? = structure.getFeature(type)
|
public fun <F : Any> getFeature(structure: StructureND<T>, type: KClass<F>): F? = structure.getFeature(type)
|
||||||
|
|
||||||
public companion object
|
public companion object
|
||||||
}
|
}
|
||||||
@ -81,7 +81,7 @@ public interface NDAlgebra<T, C : Algebra<T>> {
|
|||||||
* @return a feature object or `null` if it isn't present.
|
* @return a feature object or `null` if it isn't present.
|
||||||
*/
|
*/
|
||||||
@UnstableKMathAPI
|
@UnstableKMathAPI
|
||||||
public inline fun <T : Any, reified F : Any> NDAlgebra<T, *>.getFeature(structure: NDStructure<T>): F? =
|
public inline fun <T : Any, reified F : Any> AlgebraND<T, *>.getFeature(structure: StructureND<T>): F? =
|
||||||
getFeature(structure, F::class)
|
getFeature(structure, F::class)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -90,11 +90,11 @@ public inline fun <T : Any, reified F : Any> NDAlgebra<T, *>.getFeature(structur
|
|||||||
* @param structures the structures to check.
|
* @param structures the structures to check.
|
||||||
* @return the array of valid structures.
|
* @return the array of valid structures.
|
||||||
*/
|
*/
|
||||||
internal fun <T, C : Algebra<T>> NDAlgebra<T, C>.checkShape(vararg structures: NDStructure<T>): Array<out NDStructure<T>> =
|
internal fun <T, C : Algebra<T>> AlgebraND<T, C>.checkShape(vararg structures: StructureND<T>): Array<out StructureND<T>> =
|
||||||
structures
|
structures
|
||||||
.map(NDStructure<T>::shape)
|
.map(StructureND<T>::shape)
|
||||||
.singleOrNull { !shape.contentEquals(it) }
|
.singleOrNull { !shape.contentEquals(it) }
|
||||||
?.let<IntArray, Array<out NDStructure<T>>> { throw ShapeMismatchException(shape, it) }
|
?.let<IntArray, Array<out StructureND<T>>> { throw ShapeMismatchException(shape, it) }
|
||||||
?: structures
|
?: structures
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -103,19 +103,19 @@ internal fun <T, C : Algebra<T>> NDAlgebra<T, C>.checkShape(vararg structures: N
|
|||||||
* @param element the structure to check.
|
* @param element the structure to check.
|
||||||
* @return the valid structure.
|
* @return the valid structure.
|
||||||
*/
|
*/
|
||||||
internal fun <T, C : Algebra<T>> NDAlgebra<T, C>.checkShape(element: NDStructure<T>): NDStructure<T> {
|
internal fun <T, C : Algebra<T>> AlgebraND<T, C>.checkShape(element: StructureND<T>): StructureND<T> {
|
||||||
if (!element.shape.contentEquals(shape)) throw ShapeMismatchException(shape, element.shape)
|
if (!element.shape.contentEquals(shape)) throw ShapeMismatchException(shape, element.shape)
|
||||||
return element
|
return element
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Space of [NDStructure].
|
* Space of [StructureND].
|
||||||
*
|
*
|
||||||
* @param T the type of the element contained in ND structure.
|
* @param T the type of the element contained in ND structure.
|
||||||
* @param N the type of ND structure.
|
* @param N the type of ND structure.
|
||||||
* @param S the type of space of structure elements.
|
* @param S the type of space of structure elements.
|
||||||
*/
|
*/
|
||||||
public interface NDGroup<T, S : Group<T>> : Group<NDStructure<T>>, NDAlgebra<T, S> {
|
public interface GroupND<T, S : Group<T>> : Group<StructureND<T>>, AlgebraND<T, S> {
|
||||||
/**
|
/**
|
||||||
* Element-wise addition.
|
* Element-wise addition.
|
||||||
*
|
*
|
||||||
@ -123,7 +123,7 @@ public interface NDGroup<T, S : Group<T>> : Group<NDStructure<T>>, NDAlgebra<T,
|
|||||||
* @param b the augend.
|
* @param b the augend.
|
||||||
* @return the sum.
|
* @return the sum.
|
||||||
*/
|
*/
|
||||||
public override fun add(a: NDStructure<T>, b: NDStructure<T>): NDStructure<T> =
|
public override fun add(a: StructureND<T>, b: StructureND<T>): StructureND<T> =
|
||||||
combine(a, b) { aValue, bValue -> add(aValue, bValue) }
|
combine(a, b) { aValue, bValue -> add(aValue, bValue) }
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
@ -144,7 +144,7 @@ public interface NDGroup<T, S : Group<T>> : Group<NDStructure<T>>, NDAlgebra<T,
|
|||||||
* @param arg the augend.
|
* @param arg the augend.
|
||||||
* @return the sum.
|
* @return the sum.
|
||||||
*/
|
*/
|
||||||
public operator fun NDStructure<T>.plus(arg: T): NDStructure<T> = this.map { value -> add(arg, value) }
|
public operator fun StructureND<T>.plus(arg: T): StructureND<T> = this.map { value -> add(arg, value) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Subtracts an element from ND structure of it.
|
* Subtracts an element from ND structure of it.
|
||||||
@ -153,7 +153,7 @@ public interface NDGroup<T, S : Group<T>> : Group<NDStructure<T>>, NDAlgebra<T,
|
|||||||
* @param arg the divisor.
|
* @param arg the divisor.
|
||||||
* @return the quotient.
|
* @return the quotient.
|
||||||
*/
|
*/
|
||||||
public operator fun NDStructure<T>.minus(arg: T): NDStructure<T> = this.map { value -> add(arg, -value) }
|
public operator fun StructureND<T>.minus(arg: T): StructureND<T> = this.map { value -> add(arg, -value) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds an element to ND structure of it.
|
* Adds an element to ND structure of it.
|
||||||
@ -162,7 +162,7 @@ public interface NDGroup<T, S : Group<T>> : Group<NDStructure<T>>, NDAlgebra<T,
|
|||||||
* @param arg the augend.
|
* @param arg the augend.
|
||||||
* @return the sum.
|
* @return the sum.
|
||||||
*/
|
*/
|
||||||
public operator fun T.plus(arg: NDStructure<T>): NDStructure<T> = arg.map { value -> add(this@plus, value) }
|
public operator fun T.plus(arg: StructureND<T>): StructureND<T> = arg.map { value -> add(this@plus, value) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Subtracts an ND structure from an element of it.
|
* Subtracts an ND structure from an element of it.
|
||||||
@ -171,19 +171,19 @@ public interface NDGroup<T, S : Group<T>> : Group<NDStructure<T>>, NDAlgebra<T,
|
|||||||
* @param arg the divisor.
|
* @param arg the divisor.
|
||||||
* @return the quotient.
|
* @return the quotient.
|
||||||
*/
|
*/
|
||||||
public operator fun T.minus(arg: NDStructure<T>): NDStructure<T> = arg.map { value -> add(-this@minus, value) }
|
public operator fun T.minus(arg: StructureND<T>): StructureND<T> = arg.map { value -> add(-this@minus, value) }
|
||||||
|
|
||||||
public companion object
|
public companion object
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ring of [NDStructure].
|
* Ring of [StructureND].
|
||||||
*
|
*
|
||||||
* @param T the type of the element contained in ND structure.
|
* @param T the type of the element contained in ND structure.
|
||||||
* @param N the type of ND structure.
|
* @param N the type of ND structure.
|
||||||
* @param R the type of ring of structure elements.
|
* @param R the type of ring of structure elements.
|
||||||
*/
|
*/
|
||||||
public interface NDRing<T, R : Ring<T>> : Ring<NDStructure<T>>, NDGroup<T, R> {
|
public interface RingND<T, R : Ring<T>> : Ring<StructureND<T>>, GroupND<T, R> {
|
||||||
/**
|
/**
|
||||||
* Element-wise multiplication.
|
* Element-wise multiplication.
|
||||||
*
|
*
|
||||||
@ -191,7 +191,7 @@ public interface NDRing<T, R : Ring<T>> : Ring<NDStructure<T>>, NDGroup<T, R> {
|
|||||||
* @param b the multiplier.
|
* @param b the multiplier.
|
||||||
* @return the product.
|
* @return the product.
|
||||||
*/
|
*/
|
||||||
public override fun multiply(a: NDStructure<T>, b: NDStructure<T>): NDStructure<T> =
|
public override fun multiply(a: StructureND<T>, b: StructureND<T>): StructureND<T> =
|
||||||
combine(a, b) { aValue, bValue -> multiply(aValue, bValue) }
|
combine(a, b) { aValue, bValue -> multiply(aValue, bValue) }
|
||||||
|
|
||||||
//TODO move to extensions after KEEP-176
|
//TODO move to extensions after KEEP-176
|
||||||
@ -203,7 +203,7 @@ public interface NDRing<T, R : Ring<T>> : Ring<NDStructure<T>>, NDGroup<T, R> {
|
|||||||
* @param arg the multiplier.
|
* @param arg the multiplier.
|
||||||
* @return the product.
|
* @return the product.
|
||||||
*/
|
*/
|
||||||
public operator fun NDStructure<T>.times(arg: T): NDStructure<T> = this.map { value -> multiply(arg, value) }
|
public operator fun StructureND<T>.times(arg: T): StructureND<T> = this.map { value -> multiply(arg, value) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Multiplies an element by a ND structure of it.
|
* Multiplies an element by a ND structure of it.
|
||||||
@ -212,19 +212,19 @@ public interface NDRing<T, R : Ring<T>> : Ring<NDStructure<T>>, NDGroup<T, R> {
|
|||||||
* @param arg the multiplier.
|
* @param arg the multiplier.
|
||||||
* @return the product.
|
* @return the product.
|
||||||
*/
|
*/
|
||||||
public operator fun T.times(arg: NDStructure<T>): NDStructure<T> = arg.map { value -> multiply(this@times, value) }
|
public operator fun T.times(arg: StructureND<T>): StructureND<T> = arg.map { value -> multiply(this@times, value) }
|
||||||
|
|
||||||
public companion object
|
public companion object
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Field of [NDStructure].
|
* Field of [StructureND].
|
||||||
*
|
*
|
||||||
* @param T the type of the element contained in ND structure.
|
* @param T the type of the element contained in ND structure.
|
||||||
* @param N the type of ND structure.
|
* @param N the type of ND structure.
|
||||||
* @param F the type field of structure elements.
|
* @param F the type field of structure elements.
|
||||||
*/
|
*/
|
||||||
public interface NDField<T, F : Field<T>> : Field<NDStructure<T>>, NDRing<T, F>, ScaleOperations<NDStructure<T>> {
|
public interface FieldND<T, F : Field<T>> : Field<StructureND<T>>, RingND<T, F>, ScaleOperations<StructureND<T>> {
|
||||||
/**
|
/**
|
||||||
* Element-wise division.
|
* Element-wise division.
|
||||||
*
|
*
|
||||||
@ -232,7 +232,7 @@ public interface NDField<T, F : Field<T>> : Field<NDStructure<T>>, NDRing<T, F>,
|
|||||||
* @param b the divisor.
|
* @param b the divisor.
|
||||||
* @return the quotient.
|
* @return the quotient.
|
||||||
*/
|
*/
|
||||||
public override fun divide(a: NDStructure<T>, b: NDStructure<T>): NDStructure<T> =
|
public override fun divide(a: StructureND<T>, b: StructureND<T>): StructureND<T> =
|
||||||
combine(a, b) { aValue, bValue -> divide(aValue, bValue) }
|
combine(a, b) { aValue, bValue -> divide(aValue, bValue) }
|
||||||
|
|
||||||
//TODO move to extensions after KEEP-176
|
//TODO move to extensions after KEEP-176
|
||||||
@ -243,7 +243,7 @@ public interface NDField<T, F : Field<T>> : Field<NDStructure<T>>, NDRing<T, F>,
|
|||||||
* @param arg the divisor.
|
* @param arg the divisor.
|
||||||
* @return the quotient.
|
* @return the quotient.
|
||||||
*/
|
*/
|
||||||
public operator fun NDStructure<T>.div(arg: T): NDStructure<T> = this.map { value -> divide(arg, value) }
|
public operator fun StructureND<T>.div(arg: T): StructureND<T> = this.map { value -> divide(arg, value) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Divides an element by an ND structure of it.
|
* Divides an element by an ND structure of it.
|
||||||
@ -252,7 +252,7 @@ public interface NDField<T, F : Field<T>> : Field<NDStructure<T>>, NDRing<T, F>,
|
|||||||
* @param arg the divisor.
|
* @param arg the divisor.
|
||||||
* @return the quotient.
|
* @return the quotient.
|
||||||
*/
|
*/
|
||||||
public operator fun T.div(arg: NDStructure<T>): NDStructure<T> = arg.map { divide(it, this@div) }
|
public operator fun T.div(arg: StructureND<T>): StructureND<T> = arg.map { divide(it, this@div) }
|
||||||
|
|
||||||
// @ThreadLocal
|
// @ThreadLocal
|
||||||
// public companion object {
|
// public companion object {
|
@ -6,7 +6,7 @@ import space.kscience.kmath.structures.BufferFactory
|
|||||||
import kotlin.contracts.InvocationKind
|
import kotlin.contracts.InvocationKind
|
||||||
import kotlin.contracts.contract
|
import kotlin.contracts.contract
|
||||||
|
|
||||||
public interface BufferNDAlgebra<T, A : Algebra<T>> : NDAlgebra<T, A> {
|
public interface BufferAlgebraND<T, A : Algebra<T>> : AlgebraND<T, A> {
|
||||||
public val strides: Strides
|
public val strides: Strides
|
||||||
public val bufferFactory: BufferFactory<T>
|
public val bufferFactory: BufferFactory<T>
|
||||||
|
|
||||||
@ -17,24 +17,24 @@ public interface BufferNDAlgebra<T, A : Algebra<T>> : NDAlgebra<T, A> {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
public val NDStructure<T>.buffer: Buffer<T>
|
public val StructureND<T>.buffer: Buffer<T>
|
||||||
get() = when {
|
get() = when {
|
||||||
!shape.contentEquals(this@BufferNDAlgebra.shape) -> throw ShapeMismatchException(
|
!shape.contentEquals(this@BufferAlgebraND.shape) -> throw ShapeMismatchException(
|
||||||
this@BufferNDAlgebra.shape,
|
this@BufferAlgebraND.shape,
|
||||||
shape
|
shape
|
||||||
)
|
)
|
||||||
this is NDBuffer && this.strides == this@BufferNDAlgebra.strides -> this.buffer
|
this is NDBuffer && this.strides == this@BufferAlgebraND.strides -> this.buffer
|
||||||
else -> bufferFactory(strides.linearSize) { offset -> get(strides.index(offset)) }
|
else -> bufferFactory(strides.linearSize) { offset -> get(strides.index(offset)) }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun NDStructure<T>.map(transform: A.(T) -> T): NDBuffer<T> {
|
override fun StructureND<T>.map(transform: A.(T) -> T): NDBuffer<T> {
|
||||||
val buffer = bufferFactory(strides.linearSize) { offset ->
|
val buffer = bufferFactory(strides.linearSize) { offset ->
|
||||||
elementContext.transform(buffer[offset])
|
elementContext.transform(buffer[offset])
|
||||||
}
|
}
|
||||||
return NDBuffer(strides, buffer)
|
return NDBuffer(strides, buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun NDStructure<T>.mapIndexed(transform: A.(index: IntArray, T) -> T): NDBuffer<T> {
|
override fun StructureND<T>.mapIndexed(transform: A.(index: IntArray, T) -> T): NDBuffer<T> {
|
||||||
val buffer = bufferFactory(strides.linearSize) { offset ->
|
val buffer = bufferFactory(strides.linearSize) { offset ->
|
||||||
elementContext.transform(
|
elementContext.transform(
|
||||||
strides.index(offset),
|
strides.index(offset),
|
||||||
@ -44,7 +44,7 @@ public interface BufferNDAlgebra<T, A : Algebra<T>> : NDAlgebra<T, A> {
|
|||||||
return NDBuffer(strides, buffer)
|
return NDBuffer(strides, buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun combine(a: NDStructure<T>, b: NDStructure<T>, transform: A.(T, T) -> T): NDBuffer<T> {
|
override fun combine(a: StructureND<T>, b: StructureND<T>, transform: A.(T, T) -> T): NDBuffer<T> {
|
||||||
val buffer = bufferFactory(strides.linearSize) { offset ->
|
val buffer = bufferFactory(strides.linearSize) { offset ->
|
||||||
elementContext.transform(a.buffer[offset], b.buffer[offset])
|
elementContext.transform(a.buffer[offset], b.buffer[offset])
|
||||||
}
|
}
|
||||||
@ -52,86 +52,86 @@ public interface BufferNDAlgebra<T, A : Algebra<T>> : NDAlgebra<T, A> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public open class BufferedNDGroup<T, A : Group<T>>(
|
public open class BufferedGroupND<T, A : Group<T>>(
|
||||||
final override val shape: IntArray,
|
final override val shape: IntArray,
|
||||||
final override val elementContext: A,
|
final override val elementContext: A,
|
||||||
final override val bufferFactory: BufferFactory<T>,
|
final override val bufferFactory: BufferFactory<T>,
|
||||||
) : NDGroup<T, A>, BufferNDAlgebra<T, A> {
|
) : GroupND<T, A>, BufferAlgebraND<T, A> {
|
||||||
override val strides: Strides = DefaultStrides(shape)
|
override val strides: Strides = DefaultStrides(shape)
|
||||||
override val zero: NDBuffer<T> by lazy { produce { zero } }
|
override val zero: NDBuffer<T> by lazy { produce { zero } }
|
||||||
override fun NDStructure<T>.unaryMinus(): NDStructure<T> = produce { -get(it) }
|
override fun StructureND<T>.unaryMinus(): StructureND<T> = produce { -get(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
public open class BufferedNDRing<T, R : Ring<T>>(
|
public open class BufferedRingND<T, R : Ring<T>>(
|
||||||
shape: IntArray,
|
shape: IntArray,
|
||||||
elementContext: R,
|
elementContext: R,
|
||||||
bufferFactory: BufferFactory<T>,
|
bufferFactory: BufferFactory<T>,
|
||||||
) : BufferedNDGroup<T, R>(shape, elementContext, bufferFactory), NDRing<T, R> {
|
) : BufferedGroupND<T, R>(shape, elementContext, bufferFactory), RingND<T, R> {
|
||||||
override val one: NDBuffer<T> by lazy { produce { one } }
|
override val one: NDBuffer<T> by lazy { produce { one } }
|
||||||
}
|
}
|
||||||
|
|
||||||
public open class BufferedNDField<T, R : Field<T>>(
|
public open class BufferedFieldND<T, R : Field<T>>(
|
||||||
shape: IntArray,
|
shape: IntArray,
|
||||||
elementContext: R,
|
elementContext: R,
|
||||||
bufferFactory: BufferFactory<T>,
|
bufferFactory: BufferFactory<T>,
|
||||||
) : BufferedNDRing<T, R>(shape, elementContext, bufferFactory), NDField<T, R> {
|
) : BufferedRingND<T, R>(shape, elementContext, bufferFactory), FieldND<T, R> {
|
||||||
|
|
||||||
override fun scale(a: NDStructure<T>, value: Double): NDStructure<T> = a.map { it * value }
|
override fun scale(a: StructureND<T>, value: Double): StructureND<T> = a.map { it * value }
|
||||||
}
|
}
|
||||||
|
|
||||||
// group factories
|
// group factories
|
||||||
public fun <T, A : Group<T>> NDAlgebra.Companion.group(
|
public fun <T, A : Group<T>> AlgebraND.Companion.group(
|
||||||
space: A,
|
space: A,
|
||||||
bufferFactory: BufferFactory<T>,
|
bufferFactory: BufferFactory<T>,
|
||||||
vararg shape: Int,
|
vararg shape: Int,
|
||||||
): BufferedNDGroup<T, A> = BufferedNDGroup(shape, space, bufferFactory)
|
): BufferedGroupND<T, A> = BufferedGroupND(shape, space, bufferFactory)
|
||||||
|
|
||||||
public inline fun <T, A : Group<T>, R> A.ndGroup(
|
public inline fun <T, A : Group<T>, R> A.ndGroup(
|
||||||
noinline bufferFactory: BufferFactory<T>,
|
noinline bufferFactory: BufferFactory<T>,
|
||||||
vararg shape: Int,
|
vararg shape: Int,
|
||||||
action: BufferedNDGroup<T, A>.() -> R,
|
action: BufferedGroupND<T, A>.() -> R,
|
||||||
): R {
|
): R {
|
||||||
contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }
|
contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }
|
||||||
return NDAlgebra.group(this, bufferFactory, *shape).run(action)
|
return AlgebraND.group(this, bufferFactory, *shape).run(action)
|
||||||
}
|
}
|
||||||
|
|
||||||
//ring factories
|
//ring factories
|
||||||
public fun <T, A : Ring<T>> NDAlgebra.Companion.ring(
|
public fun <T, A : Ring<T>> AlgebraND.Companion.ring(
|
||||||
ring: A,
|
ring: A,
|
||||||
bufferFactory: BufferFactory<T>,
|
bufferFactory: BufferFactory<T>,
|
||||||
vararg shape: Int,
|
vararg shape: Int,
|
||||||
): BufferedNDRing<T, A> = BufferedNDRing(shape, ring, bufferFactory)
|
): BufferedRingND<T, A> = BufferedRingND(shape, ring, bufferFactory)
|
||||||
|
|
||||||
public inline fun <T, A : Ring<T>, R> A.ndRing(
|
public inline fun <T, A : Ring<T>, R> A.ndRing(
|
||||||
noinline bufferFactory: BufferFactory<T>,
|
noinline bufferFactory: BufferFactory<T>,
|
||||||
vararg shape: Int,
|
vararg shape: Int,
|
||||||
action: BufferedNDRing<T, A>.() -> R,
|
action: BufferedRingND<T, A>.() -> R,
|
||||||
): R {
|
): R {
|
||||||
contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }
|
contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }
|
||||||
return NDAlgebra.ring(this, bufferFactory, *shape).run(action)
|
return AlgebraND.ring(this, bufferFactory, *shape).run(action)
|
||||||
}
|
}
|
||||||
|
|
||||||
//field factories
|
//field factories
|
||||||
public fun <T, A : Field<T>> NDAlgebra.Companion.field(
|
public fun <T, A : Field<T>> AlgebraND.Companion.field(
|
||||||
field: A,
|
field: A,
|
||||||
bufferFactory: BufferFactory<T>,
|
bufferFactory: BufferFactory<T>,
|
||||||
vararg shape: Int,
|
vararg shape: Int,
|
||||||
): BufferedNDField<T, A> = BufferedNDField(shape, field, bufferFactory)
|
): BufferedFieldND<T, A> = BufferedFieldND(shape, field, bufferFactory)
|
||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
public inline fun <reified T : Any, A : Field<T>> NDAlgebra.Companion.auto(
|
public inline fun <reified T : Any, A : Field<T>> AlgebraND.Companion.auto(
|
||||||
field: A,
|
field: A,
|
||||||
vararg shape: Int,
|
vararg shape: Int,
|
||||||
): NDField<T, A> = when (field) {
|
): FieldND<T, A> = when (field) {
|
||||||
RealField -> RealNDField(shape) as NDField<T, A>
|
RealField -> RealFieldND(shape) as FieldND<T, A>
|
||||||
else -> BufferedNDField(shape, field, Buffer.Companion::auto)
|
else -> BufferedFieldND(shape, field, Buffer.Companion::auto)
|
||||||
}
|
}
|
||||||
|
|
||||||
public inline fun <T, A : Field<T>, R> A.ndField(
|
public inline fun <T, A : Field<T>, R> A.ndField(
|
||||||
noinline bufferFactory: BufferFactory<T>,
|
noinline bufferFactory: BufferFactory<T>,
|
||||||
vararg shape: Int,
|
vararg shape: Int,
|
||||||
action: BufferedNDField<T, A>.() -> R,
|
action: BufferedFieldND<T, A>.() -> R,
|
||||||
): R {
|
): R {
|
||||||
contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }
|
contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }
|
||||||
return NDAlgebra.field(this, bufferFactory, *shape).run(action)
|
return AlgebraND.field(this, bufferFactory, *shape).run(action)
|
||||||
}
|
}
|
@ -10,12 +10,12 @@ import kotlin.contracts.InvocationKind
|
|||||||
import kotlin.contracts.contract
|
import kotlin.contracts.contract
|
||||||
|
|
||||||
@OptIn(UnstableKMathAPI::class)
|
@OptIn(UnstableKMathAPI::class)
|
||||||
public class RealNDField(
|
public class RealFieldND(
|
||||||
shape: IntArray,
|
shape: IntArray,
|
||||||
) : BufferedNDField<Double, RealField>(shape, RealField, ::RealBuffer),
|
) : BufferedFieldND<Double, RealField>(shape, RealField, ::RealBuffer),
|
||||||
NumbersAddOperations<NDStructure<Double>>,
|
NumbersAddOperations<StructureND<Double>>,
|
||||||
ScaleOperations<NDStructure<Double>>,
|
ScaleOperations<StructureND<Double>>,
|
||||||
ExtendedField<NDStructure<Double>> {
|
ExtendedField<StructureND<Double>> {
|
||||||
|
|
||||||
override val zero: NDBuffer<Double> by lazy { produce { zero } }
|
override val zero: NDBuffer<Double> by lazy { produce { zero } }
|
||||||
override val one: NDBuffer<Double> by lazy { produce { one } }
|
override val one: NDBuffer<Double> by lazy { produce { one } }
|
||||||
@ -25,18 +25,18 @@ public class RealNDField(
|
|||||||
return produce { d }
|
return produce { d }
|
||||||
}
|
}
|
||||||
|
|
||||||
override val NDStructure<Double>.buffer: RealBuffer
|
override val StructureND<Double>.buffer: RealBuffer
|
||||||
get() = when {
|
get() = when {
|
||||||
!shape.contentEquals(this@RealNDField.shape) -> throw ShapeMismatchException(
|
!shape.contentEquals(this@RealFieldND.shape) -> throw ShapeMismatchException(
|
||||||
this@RealNDField.shape,
|
this@RealFieldND.shape,
|
||||||
shape
|
shape
|
||||||
)
|
)
|
||||||
this is NDBuffer && this.strides == this@RealNDField.strides -> this.buffer as RealBuffer
|
this is NDBuffer && this.strides == this@RealFieldND.strides -> this.buffer as RealBuffer
|
||||||
else -> RealBuffer(strides.linearSize) { offset -> get(strides.index(offset)) }
|
else -> RealBuffer(strides.linearSize) { offset -> get(strides.index(offset)) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("OVERRIDE_BY_INLINE")
|
@Suppress("OVERRIDE_BY_INLINE")
|
||||||
override inline fun NDStructure<Double>.map(
|
override inline fun StructureND<Double>.map(
|
||||||
transform: RealField.(Double) -> Double,
|
transform: RealField.(Double) -> Double,
|
||||||
): NDBuffer<Double> {
|
): NDBuffer<Double> {
|
||||||
val buffer = RealBuffer(strides.linearSize) { offset -> RealField.transform(buffer.array[offset]) }
|
val buffer = RealBuffer(strides.linearSize) { offset -> RealField.transform(buffer.array[offset]) }
|
||||||
@ -53,7 +53,7 @@ public class RealNDField(
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("OVERRIDE_BY_INLINE")
|
@Suppress("OVERRIDE_BY_INLINE")
|
||||||
override inline fun NDStructure<Double>.mapIndexed(
|
override inline fun StructureND<Double>.mapIndexed(
|
||||||
transform: RealField.(index: IntArray, Double) -> Double,
|
transform: RealField.(index: IntArray, Double) -> Double,
|
||||||
): NDBuffer<Double> = NDBuffer(
|
): NDBuffer<Double> = NDBuffer(
|
||||||
strides,
|
strides,
|
||||||
@ -66,8 +66,8 @@ public class RealNDField(
|
|||||||
|
|
||||||
@Suppress("OVERRIDE_BY_INLINE")
|
@Suppress("OVERRIDE_BY_INLINE")
|
||||||
override inline fun combine(
|
override inline fun combine(
|
||||||
a: NDStructure<Double>,
|
a: StructureND<Double>,
|
||||||
b: NDStructure<Double>,
|
b: StructureND<Double>,
|
||||||
transform: RealField.(Double, Double) -> Double,
|
transform: RealField.(Double, Double) -> Double,
|
||||||
): NDBuffer<Double> {
|
): NDBuffer<Double> {
|
||||||
val buffer = RealBuffer(strides.linearSize) { offset ->
|
val buffer = RealBuffer(strides.linearSize) { offset ->
|
||||||
@ -76,35 +76,35 @@ public class RealNDField(
|
|||||||
return NDBuffer(strides, buffer)
|
return NDBuffer(strides, buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun scale(a: NDStructure<Double>, value: Double): NDStructure<Double> = a.map { it * value }
|
override fun scale(a: StructureND<Double>, value: Double): StructureND<Double> = a.map { it * value }
|
||||||
|
|
||||||
override fun power(arg: NDStructure<Double>, pow: Number): NDBuffer<Double> = arg.map { power(it, pow) }
|
override fun power(arg: StructureND<Double>, pow: Number): NDBuffer<Double> = arg.map { power(it, pow) }
|
||||||
|
|
||||||
override fun exp(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { exp(it) }
|
override fun exp(arg: StructureND<Double>): NDBuffer<Double> = arg.map { exp(it) }
|
||||||
|
|
||||||
override fun ln(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { ln(it) }
|
override fun ln(arg: StructureND<Double>): NDBuffer<Double> = arg.map { ln(it) }
|
||||||
|
|
||||||
override fun sin(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { sin(it) }
|
override fun sin(arg: StructureND<Double>): NDBuffer<Double> = arg.map { sin(it) }
|
||||||
override fun cos(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { cos(it) }
|
override fun cos(arg: StructureND<Double>): NDBuffer<Double> = arg.map { cos(it) }
|
||||||
override fun tan(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { tan(it) }
|
override fun tan(arg: StructureND<Double>): NDBuffer<Double> = arg.map { tan(it) }
|
||||||
override fun asin(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { asin(it) }
|
override fun asin(arg: StructureND<Double>): NDBuffer<Double> = arg.map { asin(it) }
|
||||||
override fun acos(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { acos(it) }
|
override fun acos(arg: StructureND<Double>): NDBuffer<Double> = arg.map { acos(it) }
|
||||||
override fun atan(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { atan(it) }
|
override fun atan(arg: StructureND<Double>): NDBuffer<Double> = arg.map { atan(it) }
|
||||||
|
|
||||||
override fun sinh(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { sinh(it) }
|
override fun sinh(arg: StructureND<Double>): NDBuffer<Double> = arg.map { sinh(it) }
|
||||||
override fun cosh(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { cosh(it) }
|
override fun cosh(arg: StructureND<Double>): NDBuffer<Double> = arg.map { cosh(it) }
|
||||||
override fun tanh(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { tanh(it) }
|
override fun tanh(arg: StructureND<Double>): NDBuffer<Double> = arg.map { tanh(it) }
|
||||||
override fun asinh(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { asinh(it) }
|
override fun asinh(arg: StructureND<Double>): NDBuffer<Double> = arg.map { asinh(it) }
|
||||||
override fun acosh(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { acosh(it) }
|
override fun acosh(arg: StructureND<Double>): NDBuffer<Double> = arg.map { acosh(it) }
|
||||||
override fun atanh(arg: NDStructure<Double>): NDBuffer<Double> = arg.map { atanh(it) }
|
override fun atanh(arg: StructureND<Double>): NDBuffer<Double> = arg.map { atanh(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun NDAlgebra.Companion.real(vararg shape: Int): RealNDField = RealNDField(shape)
|
public fun AlgebraND.Companion.real(vararg shape: Int): RealFieldND = RealFieldND(shape)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Produce a context for n-dimensional operations inside this real field
|
* Produce a context for n-dimensional operations inside this real field
|
||||||
*/
|
*/
|
||||||
public inline fun <R> RealField.nd(vararg shape: Int, action: RealNDField.() -> R): R {
|
public inline fun <R> RealField.nd(vararg shape: Int, action: RealFieldND.() -> R): R {
|
||||||
contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }
|
contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }
|
||||||
return RealNDField(shape).run(action)
|
return RealFieldND(shape).run(action)
|
||||||
}
|
}
|
@ -9,10 +9,10 @@ import kotlin.contracts.InvocationKind
|
|||||||
import kotlin.contracts.contract
|
import kotlin.contracts.contract
|
||||||
|
|
||||||
@OptIn(UnstableKMathAPI::class)
|
@OptIn(UnstableKMathAPI::class)
|
||||||
public class ShortNDRing(
|
public class ShortRingND(
|
||||||
shape: IntArray,
|
shape: IntArray,
|
||||||
) : BufferedNDRing<Short, ShortRing>(shape, ShortRing, Buffer.Companion::auto),
|
) : BufferedRingND<Short, ShortRing>(shape, ShortRing, Buffer.Companion::auto),
|
||||||
NumbersAddOperations<NDStructure<Short>> {
|
NumbersAddOperations<StructureND<Short>> {
|
||||||
|
|
||||||
override val zero: NDBuffer<Short> by lazy { produce { zero } }
|
override val zero: NDBuffer<Short> by lazy { produce { zero } }
|
||||||
override val one: NDBuffer<Short> by lazy { produce { one } }
|
override val one: NDBuffer<Short> by lazy { produce { one } }
|
||||||
@ -26,11 +26,11 @@ public class ShortNDRing(
|
|||||||
/**
|
/**
|
||||||
* Fast element production using function inlining.
|
* Fast element production using function inlining.
|
||||||
*/
|
*/
|
||||||
public inline fun BufferedNDRing<Short, ShortRing>.produceInline(crossinline initializer: ShortRing.(Int) -> Short): NDBuffer<Short> {
|
public inline fun BufferedRingND<Short, ShortRing>.produceInline(crossinline initializer: ShortRing.(Int) -> Short): NDBuffer<Short> {
|
||||||
return NDBuffer(strides, ShortBuffer(ShortArray(strides.linearSize) { offset -> ShortRing.initializer(offset) }))
|
return NDBuffer(strides, ShortBuffer(ShortArray(strides.linearSize) { offset -> ShortRing.initializer(offset) }))
|
||||||
}
|
}
|
||||||
|
|
||||||
public inline fun <R> ShortRing.nd(vararg shape: Int, action: ShortNDRing.() -> R): R {
|
public inline fun <R> ShortRing.nd(vararg shape: Int, action: ShortRingND.() -> R): R {
|
||||||
contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }
|
contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }
|
||||||
return ShortNDRing(shape).run(action)
|
return ShortRingND(shape).run(action)
|
||||||
}
|
}
|
@ -6,7 +6,7 @@ import space.kscience.kmath.structures.asSequence
|
|||||||
/**
|
/**
|
||||||
* A structure that is guaranteed to be one-dimensional
|
* A structure that is guaranteed to be one-dimensional
|
||||||
*/
|
*/
|
||||||
public interface Structure1D<T> : NDStructure<T>, Buffer<T> {
|
public interface Structure1D<T> : StructureND<T>, Buffer<T> {
|
||||||
public override val dimension: Int get() = 1
|
public override val dimension: Int get() = 1
|
||||||
|
|
||||||
public override operator fun get(index: IntArray): T {
|
public override operator fun get(index: IntArray): T {
|
||||||
@ -20,7 +20,7 @@ public interface Structure1D<T> : NDStructure<T>, Buffer<T> {
|
|||||||
/**
|
/**
|
||||||
* A 1D wrapper for nd-structure
|
* A 1D wrapper for nd-structure
|
||||||
*/
|
*/
|
||||||
private inline class Structure1DWrapper<T>(val structure: NDStructure<T>) : Structure1D<T> {
|
private inline class Structure1DWrapper<T>(val structure: StructureND<T>) : Structure1D<T> {
|
||||||
override val shape: IntArray get() = structure.shape
|
override val shape: IntArray get() = structure.shape
|
||||||
override val size: Int get() = structure.shape[0]
|
override val size: Int get() = structure.shape[0]
|
||||||
|
|
||||||
@ -43,9 +43,9 @@ private inline class Buffer1DWrapper<T>(val buffer: Buffer<T>) : Structure1D<T>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represent a [NDStructure] as [Structure1D]. Throw error in case of dimension mismatch
|
* Represent a [StructureND] as [Structure1D]. Throw error in case of dimension mismatch
|
||||||
*/
|
*/
|
||||||
public fun <T> NDStructure<T>.as1D(): Structure1D<T> = this as? Structure1D<T> ?: if (shape.size == 1) {
|
public fun <T> StructureND<T>.as1D(): Structure1D<T> = this as? Structure1D<T> ?: if (shape.size == 1) {
|
||||||
when (this) {
|
when (this) {
|
||||||
is NDBuffer -> Buffer1DWrapper(this.buffer)
|
is NDBuffer -> Buffer1DWrapper(this.buffer)
|
||||||
else -> Structure1DWrapper(this)
|
else -> Structure1DWrapper(this)
|
||||||
|
@ -10,7 +10,7 @@ import kotlin.reflect.KClass
|
|||||||
*
|
*
|
||||||
* @param T the type of items.
|
* @param T the type of items.
|
||||||
*/
|
*/
|
||||||
public interface Structure2D<T> : NDStructure<T> {
|
public interface Structure2D<T> : StructureND<T> {
|
||||||
/**
|
/**
|
||||||
* The number of rows in this structure.
|
* The number of rows in this structure.
|
||||||
*/
|
*/
|
||||||
@ -60,7 +60,7 @@ public interface Structure2D<T> : NDStructure<T> {
|
|||||||
/**
|
/**
|
||||||
* A 2D wrapper for nd-structure
|
* A 2D wrapper for nd-structure
|
||||||
*/
|
*/
|
||||||
private class Structure2DWrapper<T>(val structure: NDStructure<T>) : Structure2D<T> {
|
private class Structure2DWrapper<T>(val structure: StructureND<T>) : Structure2D<T> {
|
||||||
override val shape: IntArray get() = structure.shape
|
override val shape: IntArray get() = structure.shape
|
||||||
|
|
||||||
override val rowNum: Int get() = shape[0]
|
override val rowNum: Int get() = shape[0]
|
||||||
@ -79,16 +79,16 @@ private class Structure2DWrapper<T>(val structure: NDStructure<T>) : Structure2D
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represent a [NDStructure] as [Structure1D]. Throw error in case of dimension mismatch
|
* Represent a [StructureND] as [Structure1D]. Throw error in case of dimension mismatch
|
||||||
*/
|
*/
|
||||||
public fun <T> NDStructure<T>.as2D(): Structure2D<T> = this as? Structure2D<T> ?: when (shape.size) {
|
public fun <T> StructureND<T>.as2D(): Structure2D<T> = this as? Structure2D<T> ?: when (shape.size) {
|
||||||
2 -> Structure2DWrapper(this)
|
2 -> Structure2DWrapper(this)
|
||||||
else -> error("Can't create 2d-structure from ${shape.size}d-structure")
|
else -> error("Can't create 2d-structure from ${shape.size}d-structure")
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Expose inner [NDStructure] if possible
|
* Expose inner [StructureND] if possible
|
||||||
*/
|
*/
|
||||||
internal fun <T> Structure2D<T>.unwrap(): NDStructure<T> =
|
internal fun <T> Structure2D<T>.unwrap(): StructureND<T> =
|
||||||
if (this is Structure2DWrapper) structure
|
if (this is Structure2DWrapper) structure
|
||||||
else this
|
else this
|
@ -16,7 +16,7 @@ import kotlin.reflect.KClass
|
|||||||
*
|
*
|
||||||
* @param T the type of items.
|
* @param T the type of items.
|
||||||
*/
|
*/
|
||||||
public interface NDStructure<T> {
|
public interface StructureND<T> {
|
||||||
/**
|
/**
|
||||||
* The shape of structure, i.e. non-empty sequence of non-negative integers that specify sizes of dimensions of
|
* The shape of structure, i.e. non-empty sequence of non-negative integers that specify sizes of dimensions of
|
||||||
* this structure.
|
* this structure.
|
||||||
@ -56,9 +56,9 @@ public interface NDStructure<T> {
|
|||||||
|
|
||||||
public companion object {
|
public companion object {
|
||||||
/**
|
/**
|
||||||
* Indicates whether some [NDStructure] is equal to another one.
|
* Indicates whether some [StructureND] is equal to another one.
|
||||||
*/
|
*/
|
||||||
public fun contentEquals(st1: NDStructure<*>, st2: NDStructure<*>): Boolean {
|
public fun contentEquals(st1: StructureND<*>, st2: StructureND<*>): Boolean {
|
||||||
if (st1 === st2) return true
|
if (st1 === st2) return true
|
||||||
|
|
||||||
// fast comparison of buffers if possible
|
// fast comparison of buffers if possible
|
||||||
@ -126,15 +126,15 @@ public interface NDStructure<T> {
|
|||||||
* @param index the indices.
|
* @param index the indices.
|
||||||
* @return the value.
|
* @return the value.
|
||||||
*/
|
*/
|
||||||
public operator fun <T> NDStructure<T>.get(vararg index: Int): T = get(index)
|
public operator fun <T> StructureND<T>.get(vararg index: Int): T = get(index)
|
||||||
|
|
||||||
@UnstableKMathAPI
|
@UnstableKMathAPI
|
||||||
public inline fun <reified T : Any> NDStructure<*>.getFeature(): T? = getFeature(T::class)
|
public inline fun <reified T : Any> StructureND<*>.getFeature(): T? = getFeature(T::class)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents mutable [NDStructure].
|
* Represents mutable [StructureND].
|
||||||
*/
|
*/
|
||||||
public interface MutableNDStructure<T> : NDStructure<T> {
|
public interface MutableNDStructure<T> : StructureND<T> {
|
||||||
/**
|
/**
|
||||||
* Inserts an item at the specified indices.
|
* Inserts an item at the specified indices.
|
||||||
*
|
*
|
||||||
@ -252,7 +252,7 @@ public class DefaultStrides private constructor(override val shape: IntArray) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents [NDStructure] over [Buffer].
|
* Represents [StructureND] over [Buffer].
|
||||||
*
|
*
|
||||||
* @param T the type of items.
|
* @param T the type of items.
|
||||||
* @param strides The strides to access elements of [Buffer] by linear indices.
|
* @param strides The strides to access elements of [Buffer] by linear indices.
|
||||||
@ -261,7 +261,7 @@ public class DefaultStrides private constructor(override val shape: IntArray) :
|
|||||||
public open class NDBuffer<T>(
|
public open class NDBuffer<T>(
|
||||||
public val strides: Strides,
|
public val strides: Strides,
|
||||||
buffer: Buffer<T>,
|
buffer: Buffer<T>,
|
||||||
) : NDStructure<T> {
|
) : StructureND<T> {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
if (strides.linearSize != buffer.size) {
|
if (strides.linearSize != buffer.size) {
|
||||||
@ -280,7 +280,7 @@ public open class NDBuffer<T>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun equals(other: Any?): Boolean {
|
override fun equals(other: Any?): Boolean {
|
||||||
return NDStructure.contentEquals(this, other as? NDStructure<*> ?: return false)
|
return StructureND.contentEquals(this, other as? StructureND<*> ?: return false)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hashCode(): Int {
|
override fun hashCode(): Int {
|
||||||
@ -307,7 +307,7 @@ public open class NDBuffer<T>(
|
|||||||
/**
|
/**
|
||||||
* Transform structure to a new structure using provided [BufferFactory] and optimizing if argument is [NDBuffer]
|
* Transform structure to a new structure using provided [BufferFactory] and optimizing if argument is [NDBuffer]
|
||||||
*/
|
*/
|
||||||
public inline fun <T, reified R : Any> NDStructure<T>.mapToBuffer(
|
public inline fun <T, reified R : Any> StructureND<T>.mapToBuffer(
|
||||||
factory: BufferFactory<R> = Buffer.Companion::auto,
|
factory: BufferFactory<R> = Buffer.Companion::auto,
|
||||||
crossinline transform: (T) -> R,
|
crossinline transform: (T) -> R,
|
||||||
): NDBuffer<R> {
|
): NDBuffer<R> {
|
||||||
@ -338,10 +338,10 @@ public class MutableNDBuffer<T>(
|
|||||||
override operator fun set(index: IntArray, value: T): Unit = buffer.set(strides.offset(index), value)
|
override operator fun set(index: IntArray, value: T): Unit = buffer.set(strides.offset(index), value)
|
||||||
}
|
}
|
||||||
|
|
||||||
public inline fun <reified T : Any> NDStructure<T>.combine(
|
public inline fun <reified T : Any> StructureND<T>.combine(
|
||||||
struct: NDStructure<T>,
|
struct: StructureND<T>,
|
||||||
crossinline block: (T, T) -> T,
|
crossinline block: (T, T) -> T,
|
||||||
): NDStructure<T> {
|
): StructureND<T> {
|
||||||
require(shape.contentEquals(struct.shape)) { "Shape mismatch in structure combination" }
|
require(shape.contentEquals(struct.shape)) { "Shape mismatch in structure combination" }
|
||||||
return NDStructure.auto(shape) { block(this[it], struct[it]) }
|
return StructureND.auto(shape) { block(this[it], struct[it]) }
|
||||||
}
|
}
|
@ -1,8 +1,8 @@
|
|||||||
package space.kscience.kmath.operations
|
package space.kscience.kmath.operations
|
||||||
|
|
||||||
import space.kscience.kmath.misc.UnstableKMathAPI
|
import space.kscience.kmath.misc.UnstableKMathAPI
|
||||||
import space.kscience.kmath.nd.BufferedNDRing
|
import space.kscience.kmath.nd.AlgebraND
|
||||||
import space.kscience.kmath.nd.NDAlgebra
|
import space.kscience.kmath.nd.BufferedRingND
|
||||||
import space.kscience.kmath.operations.BigInt.Companion.BASE
|
import space.kscience.kmath.operations.BigInt.Companion.BASE
|
||||||
import space.kscience.kmath.operations.BigInt.Companion.BASE_SIZE
|
import space.kscience.kmath.operations.BigInt.Companion.BASE_SIZE
|
||||||
import space.kscience.kmath.structures.Buffer
|
import space.kscience.kmath.structures.Buffer
|
||||||
@ -464,5 +464,5 @@ public inline fun Buffer.Companion.bigInt(size: Int, initializer: (Int) -> BigIn
|
|||||||
public inline fun MutableBuffer.Companion.bigInt(size: Int, initializer: (Int) -> BigInt): MutableBuffer<BigInt> =
|
public inline fun MutableBuffer.Companion.bigInt(size: Int, initializer: (Int) -> BigInt): MutableBuffer<BigInt> =
|
||||||
boxing(size, initializer)
|
boxing(size, initializer)
|
||||||
|
|
||||||
public fun NDAlgebra.Companion.bigInt(vararg shape: Int): BufferedNDRing<BigInt, BigIntField> =
|
public fun AlgebraND.Companion.bigInt(vararg shape: Int): BufferedRingND<BigInt, BigIntField> =
|
||||||
BufferedNDRing(shape, BigIntField, Buffer.Companion::bigInt)
|
BufferedRingND(shape, BigIntField, Buffer.Companion::bigInt)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package space.kscience.kmath.structures
|
package space.kscience.kmath.structures
|
||||||
|
|
||||||
import space.kscience.kmath.nd.DefaultStrides
|
import space.kscience.kmath.nd.DefaultStrides
|
||||||
import space.kscience.kmath.nd.NDStructure
|
|
||||||
import space.kscience.kmath.nd.Structure2D
|
import space.kscience.kmath.nd.Structure2D
|
||||||
|
import space.kscience.kmath.nd.StructureND
|
||||||
import space.kscience.kmath.nd.as2D
|
import space.kscience.kmath.nd.as2D
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -25,7 +25,7 @@ internal class BufferAccessor2D<T : Any>(
|
|||||||
public fun create(mat: Structure2D<T>): MutableBuffer<T> = create { i, j -> mat[i, j] }
|
public fun create(mat: Structure2D<T>): MutableBuffer<T> = create { i, j -> mat[i, j] }
|
||||||
|
|
||||||
//TODO optimize wrapper
|
//TODO optimize wrapper
|
||||||
public fun MutableBuffer<T>.collect(): Structure2D<T> = NDStructure.buffered(
|
public fun MutableBuffer<T>.collect(): Structure2D<T> = StructureND.buffered(
|
||||||
DefaultStrides(intArrayOf(rowNum, colNum)),
|
DefaultStrides(intArrayOf(rowNum, colNum)),
|
||||||
factory
|
factory
|
||||||
) { (i, j) ->
|
) { (i, j) ->
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package space.kscience.kmath.linear
|
package space.kscience.kmath.linear
|
||||||
|
|
||||||
import space.kscience.kmath.misc.UnstableKMathAPI
|
import space.kscience.kmath.misc.UnstableKMathAPI
|
||||||
import space.kscience.kmath.nd.NDStructure
|
import space.kscience.kmath.nd.StructureND
|
||||||
import space.kscience.kmath.nd.as2D
|
import space.kscience.kmath.nd.as2D
|
||||||
import kotlin.test.Test
|
import kotlin.test.Test
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
@ -50,8 +50,8 @@ class MatrixTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun test2DDot() {
|
fun test2DDot() {
|
||||||
val firstMatrix = NDStructure.auto(2, 3) { (i, j) -> (i + j).toDouble() }.as2D()
|
val firstMatrix = StructureND.auto(2, 3) { (i, j) -> (i + j).toDouble() }.as2D()
|
||||||
val secondMatrix = NDStructure.auto(3, 2) { (i, j) -> (i + j).toDouble() }.as2D()
|
val secondMatrix = StructureND.auto(3, 2) { (i, j) -> (i + j).toDouble() }.as2D()
|
||||||
|
|
||||||
LinearSpace.real.run {
|
LinearSpace.real.run {
|
||||||
// val firstMatrix = produce(2, 3) { i, j -> (i + j).toDouble() }
|
// val firstMatrix = produce(2, 3) { i, j -> (i + j).toDouble() }
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package space.kscience.kmath.structures
|
package space.kscience.kmath.structures
|
||||||
|
|
||||||
import space.kscience.kmath.nd.NDAlgebra
|
import space.kscience.kmath.nd.AlgebraND
|
||||||
import space.kscience.kmath.nd.get
|
import space.kscience.kmath.nd.get
|
||||||
import space.kscience.kmath.nd.real
|
import space.kscience.kmath.nd.real
|
||||||
import space.kscience.kmath.operations.invoke
|
import space.kscience.kmath.operations.invoke
|
||||||
@ -11,12 +11,12 @@ import kotlin.test.assertEquals
|
|||||||
internal class NDFieldTest {
|
internal class NDFieldTest {
|
||||||
@Test
|
@Test
|
||||||
fun verify() {
|
fun verify() {
|
||||||
(NDAlgebra.real(12, 32)) { FieldVerifier(this, one + 3, one - 23, one * 12, 6.66) }
|
(AlgebraND.real(12, 32)) { FieldVerifier(this, one + 3, one - 23, one * 12, 6.66) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testStrides() {
|
fun testStrides() {
|
||||||
val ndArray = NDAlgebra.real(10, 10).produce { (it[0] + it[1]).toDouble() }
|
val ndArray = AlgebraND.real(10, 10).produce { (it[0] + it[1]).toDouble() }
|
||||||
assertEquals(ndArray[5, 5], 10.0)
|
assertEquals(ndArray[5, 5], 10.0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ import kotlin.test.assertEquals
|
|||||||
|
|
||||||
@Suppress("UNUSED_VARIABLE")
|
@Suppress("UNUSED_VARIABLE")
|
||||||
class NumberNDFieldTest {
|
class NumberNDFieldTest {
|
||||||
val algebra = NDAlgebra.real(3, 3)
|
val algebra = AlgebraND.real(3, 3)
|
||||||
val array1 = algebra.produce { (i, j) -> (i + j).toDouble() }
|
val array1 = algebra.produce { (i, j) -> (i + j).toDouble() }
|
||||||
val array2 = algebra.produce { (i, j) -> (i - j).toDouble() }
|
val array2 = algebra.produce { (i, j) -> (i - j).toDouble() }
|
||||||
|
|
||||||
@ -69,15 +69,15 @@ class NumberNDFieldTest {
|
|||||||
val division = array1.combine(array2, Double::div)
|
val division = array1.combine(array2, Double::div)
|
||||||
}
|
}
|
||||||
|
|
||||||
object L2Norm : Norm<NDStructure<out Number>, Double> {
|
object L2Norm : Norm<StructureND<out Number>, Double> {
|
||||||
override fun norm(arg: NDStructure<out Number>): Double =
|
override fun norm(arg: StructureND<out Number>): Double =
|
||||||
kotlin.math.sqrt(arg.elements().sumByDouble { it.second.toDouble() })
|
kotlin.math.sqrt(arg.elements().sumByDouble { it.second.toDouble() })
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testInternalContext() {
|
fun testInternalContext() {
|
||||||
algebra {
|
algebra {
|
||||||
(NDAlgebra.real(*array1.shape)) { with(L2Norm) { 1 + norm(array1) + exp(array2) } }
|
(AlgebraND.real(*array1.shape)) { with(L2Norm) { 1 + norm(array1) + exp(array2) } }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,6 @@ kotlin.sourceSets {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
readme{
|
readme {
|
||||||
maturity = ru.mipt.npm.gradle.Maturity.EXPERIMENTAL
|
maturity = ru.mipt.npm.gradle.Maturity.EXPERIMENTAL
|
||||||
}
|
}
|
@ -83,7 +83,7 @@ public class StatefulChain<S, out R>(
|
|||||||
private val state: S,
|
private val state: S,
|
||||||
private val seed: S.() -> R,
|
private val seed: S.() -> R,
|
||||||
private val forkState: ((S) -> S),
|
private val forkState: ((S) -> S),
|
||||||
private val gen: suspend S.(R) -> R
|
private val gen: suspend S.(R) -> R,
|
||||||
) : Chain<R> {
|
) : Chain<R> {
|
||||||
private val mutex: Mutex = Mutex()
|
private val mutex: Mutex = Mutex()
|
||||||
private var value: R? = null
|
private var value: R? = null
|
||||||
@ -145,7 +145,7 @@ public fun <T, R> Chain<T>.collect(mapper: suspend (Chain<T>) -> R): Chain<R> =
|
|||||||
public fun <T, S, R> Chain<T>.collectWithState(
|
public fun <T, S, R> Chain<T>.collectWithState(
|
||||||
state: S,
|
state: S,
|
||||||
stateFork: (S) -> S,
|
stateFork: (S) -> S,
|
||||||
mapper: suspend S.(Chain<T>) -> R
|
mapper: suspend S.(Chain<T>) -> R,
|
||||||
): Chain<R> = object : Chain<R> {
|
): Chain<R> = object : Chain<R> {
|
||||||
override suspend fun next(): R = state.mapper(this@collectWithState)
|
override suspend fun next(): R = state.mapper(this@collectWithState)
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ public class AsyncFlow<T> internal constructor(internal val deferredFlow: Flow<L
|
|||||||
|
|
||||||
public fun <T, R> Flow<T>.async(
|
public fun <T, R> Flow<T>.async(
|
||||||
dispatcher: CoroutineDispatcher = Dispatchers.Default,
|
dispatcher: CoroutineDispatcher = Dispatchers.Default,
|
||||||
block: suspend CoroutineScope.(T) -> R
|
block: suspend CoroutineScope.(T) -> R,
|
||||||
): AsyncFlow<R> {
|
): AsyncFlow<R> {
|
||||||
val flow = map { LazyDeferred(dispatcher) { block(it) } }
|
val flow = map { LazyDeferred(dispatcher) { block(it) } }
|
||||||
return AsyncFlow(flow)
|
return AsyncFlow(flow)
|
||||||
@ -72,12 +72,12 @@ public suspend fun <T> AsyncFlow<T>.collect(concurrency: Int, collector: FlowCol
|
|||||||
|
|
||||||
public suspend inline fun <T> AsyncFlow<T>.collect(
|
public suspend inline fun <T> AsyncFlow<T>.collect(
|
||||||
concurrency: Int,
|
concurrency: Int,
|
||||||
crossinline action: suspend (value: T) -> Unit
|
crossinline action: suspend (value: T) -> Unit,
|
||||||
): Unit = collect(concurrency, object : FlowCollector<T> {
|
): Unit = collect(concurrency, object : FlowCollector<T> {
|
||||||
override suspend fun emit(value: T): Unit = action(value)
|
override suspend fun emit(value: T): Unit = action(value)
|
||||||
})
|
})
|
||||||
|
|
||||||
public inline fun <T, R> Flow<T>.mapParallel(
|
public inline fun <T, R> Flow<T>.mapParallel(
|
||||||
dispatcher: CoroutineDispatcher = Dispatchers.Default,
|
dispatcher: CoroutineDispatcher = Dispatchers.Default,
|
||||||
crossinline transform: suspend (T) -> R
|
crossinline transform: suspend (T) -> R,
|
||||||
): Flow<R> = flatMapMerge { value -> flow { emit(transform(value)) } }.flowOn(dispatcher)
|
): Flow<R> = flatMapMerge { value -> flow { emit(transform(value)) } }.flowOn(dispatcher)
|
||||||
|
@ -13,7 +13,7 @@ import space.kscience.kmath.structures.VirtualBuffer
|
|||||||
public class RingBuffer<T>(
|
public class RingBuffer<T>(
|
||||||
private val buffer: MutableBuffer<T?>,
|
private val buffer: MutableBuffer<T?>,
|
||||||
private var startIndex: Int = 0,
|
private var startIndex: Int = 0,
|
||||||
size: Int = 0
|
size: Int = 0,
|
||||||
) : Buffer<T> {
|
) : Buffer<T> {
|
||||||
private val mutex: Mutex = Mutex()
|
private val mutex: Mutex = Mutex()
|
||||||
|
|
||||||
|
@ -3,13 +3,13 @@ package space.kscience.kmath.structures
|
|||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import space.kscience.kmath.coroutines.Math
|
import space.kscience.kmath.coroutines.Math
|
||||||
import space.kscience.kmath.nd.DefaultStrides
|
import space.kscience.kmath.nd.DefaultStrides
|
||||||
import space.kscience.kmath.nd.NDStructure
|
import space.kscience.kmath.nd.StructureND
|
||||||
|
|
||||||
public class LazyNDStructure<T>(
|
public class LazyStructureND<T>(
|
||||||
public val scope: CoroutineScope,
|
public val scope: CoroutineScope,
|
||||||
public override val shape: IntArray,
|
public override val shape: IntArray,
|
||||||
public val function: suspend (IntArray) -> T
|
public val function: suspend (IntArray) -> T,
|
||||||
) : NDStructure<T> {
|
) : StructureND<T> {
|
||||||
private val cache: MutableMap<IntArray, Deferred<T>> = hashMapOf()
|
private val cache: MutableMap<IntArray, Deferred<T>> = hashMapOf()
|
||||||
|
|
||||||
public fun deferred(index: IntArray): Deferred<T> = cache.getOrPut(index) {
|
public fun deferred(index: IntArray): Deferred<T> = cache.getOrPut(index) {
|
||||||
@ -26,7 +26,7 @@ public class LazyNDStructure<T>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override fun equals(other: Any?): Boolean {
|
public override fun equals(other: Any?): Boolean {
|
||||||
return NDStructure.contentEquals(this, other as? NDStructure<*> ?: return false)
|
return StructureND.contentEquals(this, other as? StructureND<*> ?: return false)
|
||||||
}
|
}
|
||||||
|
|
||||||
public override fun hashCode(): Int {
|
public override fun hashCode(): Int {
|
||||||
@ -38,21 +38,21 @@ public class LazyNDStructure<T>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun <T> NDStructure<T>.deferred(index: IntArray): Deferred<T> =
|
public fun <T> StructureND<T>.deferred(index: IntArray): Deferred<T> =
|
||||||
if (this is LazyNDStructure<T>) deferred(index) else CompletableDeferred(get(index))
|
if (this is LazyStructureND<T>) deferred(index) else CompletableDeferred(get(index))
|
||||||
|
|
||||||
public suspend fun <T> NDStructure<T>.await(index: IntArray): T =
|
public suspend fun <T> StructureND<T>.await(index: IntArray): T =
|
||||||
if (this is LazyNDStructure<T>) await(index) else get(index)
|
if (this is LazyStructureND<T>) await(index) else get(index)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PENDING would benefit from KEEP-176
|
* PENDING would benefit from KEEP-176
|
||||||
*/
|
*/
|
||||||
public inline fun <T, R> NDStructure<T>.mapAsyncIndexed(
|
public inline fun <T, R> StructureND<T>.mapAsyncIndexed(
|
||||||
scope: CoroutineScope,
|
scope: CoroutineScope,
|
||||||
crossinline function: suspend (T, index: IntArray) -> R
|
crossinline function: suspend (T, index: IntArray) -> R,
|
||||||
): LazyNDStructure<R> = LazyNDStructure(scope, shape) { index -> function(get(index), index) }
|
): LazyStructureND<R> = LazyStructureND(scope, shape) { index -> function(get(index), index) }
|
||||||
|
|
||||||
public inline fun <T, R> NDStructure<T>.mapAsync(
|
public inline fun <T, R> StructureND<T>.mapAsync(
|
||||||
scope: CoroutineScope,
|
scope: CoroutineScope,
|
||||||
crossinline function: suspend (T) -> R
|
crossinline function: suspend (T) -> R,
|
||||||
): LazyNDStructure<R> = LazyNDStructure(scope, shape) { index -> function(get(index)) }
|
): LazyStructureND<R> = LazyStructureND(scope, shape) { index -> function(get(index)) }
|
@ -19,6 +19,6 @@ kotlin.sourceSets {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
readme{
|
readme {
|
||||||
maturity = ru.mipt.npm.gradle.Maturity.PROTOTYPE
|
maturity = ru.mipt.npm.gradle.Maturity.PROTOTYPE
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
package space.kscience.kmath.dimensions
|
package space.kscience.kmath.dimensions
|
||||||
|
|
||||||
import space.kscience.kmath.linear.*
|
import space.kscience.kmath.linear.LinearSpace
|
||||||
|
import space.kscience.kmath.linear.Matrix
|
||||||
|
import space.kscience.kmath.linear.Point
|
||||||
|
import space.kscience.kmath.linear.transpose
|
||||||
import space.kscience.kmath.nd.Structure2D
|
import space.kscience.kmath.nd.Structure2D
|
||||||
import space.kscience.kmath.operations.RealField
|
import space.kscience.kmath.operations.RealField
|
||||||
import space.kscience.kmath.operations.Ring
|
import space.kscience.kmath.operations.Ring
|
||||||
@ -95,7 +98,7 @@ public inline class DMatrixContext<T : Any, out A : Ring<T>>(public val context:
|
|||||||
* Produce a matrix with this context and given dimensions
|
* Produce a matrix with this context and given dimensions
|
||||||
*/
|
*/
|
||||||
public inline fun <reified R : Dimension, reified C : Dimension> produce(
|
public inline fun <reified R : Dimension, reified C : Dimension> produce(
|
||||||
noinline initializer: A.(i: Int, j: Int) -> T
|
noinline initializer: A.(i: Int, j: Int) -> T,
|
||||||
): DMatrix<T, R, C> {
|
): DMatrix<T, R, C> {
|
||||||
val rows = Dimension.dim<R>()
|
val rows = Dimension.dim<R>()
|
||||||
val cols = Dimension.dim<C>()
|
val cols = Dimension.dim<C>()
|
||||||
@ -147,9 +150,10 @@ public inline class DMatrixContext<T : Any, out A : Ring<T>>(public val context:
|
|||||||
/**
|
/**
|
||||||
* A square unit matrix
|
* A square unit matrix
|
||||||
*/
|
*/
|
||||||
public inline fun <reified D : Dimension> DMatrixContext<Double, RealField>.one(): DMatrix<Double, D, D> = produce { i, j ->
|
public inline fun <reified D : Dimension> DMatrixContext<Double, RealField>.one(): DMatrix<Double, D, D> =
|
||||||
if (i == j) 1.0 else 0.0
|
produce { i, j ->
|
||||||
}
|
if (i == j) 1.0 else 0.0
|
||||||
|
}
|
||||||
|
|
||||||
public inline fun <reified R : Dimension, reified C : Dimension> DMatrixContext<Double, RealField>.zero(): DMatrix<Double, R, C> =
|
public inline fun <reified R : Dimension, reified C : Dimension> DMatrixContext<Double, RealField>.zero(): DMatrix<Double, R, C> =
|
||||||
produce { _, _ ->
|
produce { _, _ ->
|
||||||
|
@ -7,6 +7,6 @@ dependencies {
|
|||||||
implementation(project(":kmath-core"))
|
implementation(project(":kmath-core"))
|
||||||
}
|
}
|
||||||
|
|
||||||
readme{
|
readme {
|
||||||
maturity = ru.mipt.npm.gradle.Maturity.PROTOTYPE
|
maturity = ru.mipt.npm.gradle.Maturity.PROTOTYPE
|
||||||
}
|
}
|
@ -2,7 +2,7 @@ package space.kscience.kmath.ejml
|
|||||||
|
|
||||||
import org.ejml.simple.SimpleMatrix
|
import org.ejml.simple.SimpleMatrix
|
||||||
import space.kscience.kmath.linear.Matrix
|
import space.kscience.kmath.linear.Matrix
|
||||||
import space.kscience.kmath.nd.NDStructure
|
import space.kscience.kmath.nd.StructureND
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents featured matrix over EJML [SimpleMatrix].
|
* Represents featured matrix over EJML [SimpleMatrix].
|
||||||
@ -18,8 +18,8 @@ public class EjmlMatrix(public val origin: SimpleMatrix) : Matrix<Double> {
|
|||||||
|
|
||||||
override fun equals(other: Any?): Boolean {
|
override fun equals(other: Any?): Boolean {
|
||||||
if (this === other) return true
|
if (this === other) return true
|
||||||
if (other !is NDStructure<*>) return false
|
if (other !is StructureND<*>) return false
|
||||||
return NDStructure.contentEquals(this, other)
|
return StructureND.contentEquals(this, other)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hashCode(): Int = origin.hashCode()
|
override fun hashCode(): Int = origin.hashCode()
|
||||||
|
@ -7,6 +7,6 @@ import space.kscience.kmath.linear.Matrix
|
|||||||
/**
|
/**
|
||||||
* Optimized dot product for real matrices
|
* Optimized dot product for real matrices
|
||||||
*/
|
*/
|
||||||
public infix fun Matrix<Double>.dot(other: Matrix<Double>): Matrix<Double> = LinearSpace.real.run{
|
public infix fun Matrix<Double>.dot(other: Matrix<Double>): Matrix<Double> = LinearSpace.real.run {
|
||||||
this@dot dot other
|
this@dot dot other
|
||||||
}
|
}
|
@ -6,7 +6,7 @@ import kotlin.test.assertEquals
|
|||||||
|
|
||||||
class GridTest {
|
class GridTest {
|
||||||
@Test
|
@Test
|
||||||
fun testStepGrid(){
|
fun testStepGrid() {
|
||||||
val grid = 0.0..1.0 step 0.2
|
val grid = 0.0..1.0 step 0.2
|
||||||
assertEquals(6, grid.size)
|
assertEquals(6, grid.size)
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,10 @@ readme {
|
|||||||
|
|
||||||
feature("piecewise", "src/commonMain/kotlin/kscience/kmath/functions/Piecewise.kt", "Piecewise functions.")
|
feature("piecewise", "src/commonMain/kotlin/kscience/kmath/functions/Piecewise.kt", "Piecewise functions.")
|
||||||
feature("polynomials", "src/commonMain/kotlin/kscience/kmath/functions/Polynomial.kt", "Polynomial functions.")
|
feature("polynomials", "src/commonMain/kotlin/kscience/kmath/functions/Polynomial.kt", "Polynomial functions.")
|
||||||
feature("linear interpolation", "src/commonMain/kotlin/kscience/kmath/interpolation/LinearInterpolator.kt", "Linear XY interpolator.")
|
feature("linear interpolation",
|
||||||
feature("spline interpolation", "src/commonMain/kotlin/kscience/kmath/interpolation/SplineInterpolator.kt", "Cubic spline XY interpolator.")
|
"src/commonMain/kotlin/kscience/kmath/interpolation/LinearInterpolator.kt",
|
||||||
|
"Linear XY interpolator.")
|
||||||
|
feature("spline interpolation",
|
||||||
|
"src/commonMain/kotlin/kscience/kmath/interpolation/SplineInterpolator.kt",
|
||||||
|
"Cubic spline XY interpolator.")
|
||||||
}
|
}
|
@ -17,6 +17,7 @@ public class IntegrandRelativeAccuracy(public val accuracy: Double) : IntegrandF
|
|||||||
public class IntegrandAbsoluteAccuracy(public val accuracy: Double) : IntegrandFeature
|
public class IntegrandAbsoluteAccuracy(public val accuracy: Double) : IntegrandFeature
|
||||||
|
|
||||||
public class IntegrandCalls(public val calls: Int) : IntegrandFeature
|
public class IntegrandCalls(public val calls: Int) : IntegrandFeature
|
||||||
|
|
||||||
public val Integrand.calls: Int get() = getFeature<IntegrandCalls>()?.calls ?: 0
|
public val Integrand.calls: Int get() = getFeature<IntegrandCalls>()?.calls ?: 0
|
||||||
|
|
||||||
public class IntegrandMaxCalls(public val maxCalls: Int) : IntegrandFeature
|
public class IntegrandMaxCalls(public val maxCalls: Int) : IntegrandFeature
|
||||||
|
@ -3,7 +3,7 @@ package space.kscience.kmath.integration
|
|||||||
/**
|
/**
|
||||||
* A general interface for all integrators
|
* A general interface for all integrators
|
||||||
*/
|
*/
|
||||||
public interface Integrator<I: Integrand> {
|
public interface Integrator<I : Integrand> {
|
||||||
/**
|
/**
|
||||||
* Run one integration pass and return a new [Integrand] with a new set of features
|
* Run one integration pass and return a new [Integrand] with a new set of features
|
||||||
*/
|
*/
|
||||||
|
@ -24,21 +24,21 @@ public interface PolynomialInterpolator<T : Comparable<T>> : Interpolator<T, T>
|
|||||||
|
|
||||||
public fun <T : Comparable<T>> PolynomialInterpolator<T>.interpolatePolynomials(
|
public fun <T : Comparable<T>> PolynomialInterpolator<T>.interpolatePolynomials(
|
||||||
x: Buffer<T>,
|
x: Buffer<T>,
|
||||||
y: Buffer<T>
|
y: Buffer<T>,
|
||||||
): PiecewisePolynomial<T> {
|
): PiecewisePolynomial<T> {
|
||||||
val pointSet = BufferXYPointSet(x, y)
|
val pointSet = BufferXYPointSet(x, y)
|
||||||
return interpolatePolynomials(pointSet)
|
return interpolatePolynomials(pointSet)
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun <T : Comparable<T>> PolynomialInterpolator<T>.interpolatePolynomials(
|
public fun <T : Comparable<T>> PolynomialInterpolator<T>.interpolatePolynomials(
|
||||||
data: Map<T, T>
|
data: Map<T, T>,
|
||||||
): PiecewisePolynomial<T> {
|
): PiecewisePolynomial<T> {
|
||||||
val pointSet = BufferXYPointSet(data.keys.toList().asBuffer(), data.values.toList().asBuffer())
|
val pointSet = BufferXYPointSet(data.keys.toList().asBuffer(), data.values.toList().asBuffer())
|
||||||
return interpolatePolynomials(pointSet)
|
return interpolatePolynomials(pointSet)
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun <T : Comparable<T>> PolynomialInterpolator<T>.interpolatePolynomials(
|
public fun <T : Comparable<T>> PolynomialInterpolator<T>.interpolatePolynomials(
|
||||||
data: List<Pair<T, T>>
|
data: List<Pair<T, T>>,
|
||||||
): PiecewisePolynomial<T> {
|
): PiecewisePolynomial<T> {
|
||||||
val pointSet = BufferXYPointSet(data.map { it.first }.asBuffer(), data.map { it.second }.asBuffer())
|
val pointSet = BufferXYPointSet(data.map { it.first }.asBuffer(), data.map { it.second }.asBuffer())
|
||||||
return interpolatePolynomials(pointSet)
|
return interpolatePolynomials(pointSet)
|
||||||
|
@ -32,7 +32,7 @@ public class NDStructureColumn<T>(public val structure: Structure2D<T>, public v
|
|||||||
|
|
||||||
public class BufferXYPointSet<X, Y>(
|
public class BufferXYPointSet<X, Y>(
|
||||||
public override val x: Buffer<X>,
|
public override val x: Buffer<X>,
|
||||||
public override val y: Buffer<Y>
|
public override val y: Buffer<Y>,
|
||||||
) : XYPointSet<X, Y> {
|
) : XYPointSet<X, Y> {
|
||||||
public override val size: Int
|
public override val size: Int
|
||||||
get() = x.size
|
get() = x.size
|
||||||
|
@ -6,6 +6,6 @@ kotlin.sourceSets.commonMain {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
readme{
|
readme {
|
||||||
maturity = ru.mipt.npm.gradle.Maturity.PROTOTYPE
|
maturity = ru.mipt.npm.gradle.Maturity.PROTOTYPE
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,8 @@ import space.kscience.kmath.operations.RealField
|
|||||||
public interface Counter<T : Any> {
|
public interface Counter<T : Any> {
|
||||||
public fun add(delta: T)
|
public fun add(delta: T)
|
||||||
public val value: T
|
public val value: T
|
||||||
public companion object{
|
|
||||||
|
public companion object {
|
||||||
public fun real(): ObjectCounter<Double> = ObjectCounter(RealField)
|
public fun real(): ObjectCounter<Double> = ObjectCounter(RealField)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ public interface Histogram<T : Any, out B : Bin<T>> {
|
|||||||
public val bins: Iterable<B>
|
public val bins: Iterable<B>
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun interface HistogramBuilder<T : Any> {
|
public fun interface HistogramBuilder<T : Any> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Increment appropriate bin
|
* Increment appropriate bin
|
||||||
|
@ -3,9 +3,9 @@ package space.kscience.kmath.histogram
|
|||||||
import space.kscience.kmath.domains.Domain
|
import space.kscience.kmath.domains.Domain
|
||||||
import space.kscience.kmath.linear.Point
|
import space.kscience.kmath.linear.Point
|
||||||
import space.kscience.kmath.misc.UnstableKMathAPI
|
import space.kscience.kmath.misc.UnstableKMathAPI
|
||||||
import space.kscience.kmath.nd.NDField
|
import space.kscience.kmath.nd.FieldND
|
||||||
import space.kscience.kmath.nd.NDStructure
|
|
||||||
import space.kscience.kmath.nd.Strides
|
import space.kscience.kmath.nd.Strides
|
||||||
|
import space.kscience.kmath.nd.StructureND
|
||||||
import space.kscience.kmath.operations.Group
|
import space.kscience.kmath.operations.Group
|
||||||
import space.kscience.kmath.operations.ScaleOperations
|
import space.kscience.kmath.operations.ScaleOperations
|
||||||
import space.kscience.kmath.operations.SpaceElement
|
import space.kscience.kmath.operations.SpaceElement
|
||||||
@ -22,7 +22,7 @@ public data class DomainBin<T : Comparable<T>>(
|
|||||||
@OptIn(UnstableKMathAPI::class)
|
@OptIn(UnstableKMathAPI::class)
|
||||||
public class IndexedHistogram<T : Comparable<T>, V : Any>(
|
public class IndexedHistogram<T : Comparable<T>, V : Any>(
|
||||||
override val context: IndexedHistogramSpace<T, V>,
|
override val context: IndexedHistogramSpace<T, V>,
|
||||||
public val values: NDStructure<V>,
|
public val values: StructureND<V>,
|
||||||
) : Histogram<T, Bin<T>>, SpaceElement<IndexedHistogram<T, V>, IndexedHistogramSpace<T, V>> {
|
) : Histogram<T, Bin<T>>, SpaceElement<IndexedHistogram<T, V>, IndexedHistogramSpace<T, V>> {
|
||||||
|
|
||||||
override fun get(point: Point<T>): Bin<T>? {
|
override fun get(point: Point<T>): Bin<T>? {
|
||||||
@ -46,7 +46,7 @@ public interface IndexedHistogramSpace<T : Comparable<T>, V : Any>
|
|||||||
: Group<IndexedHistogram<T, V>>, ScaleOperations<IndexedHistogram<T, V>> {
|
: Group<IndexedHistogram<T, V>>, ScaleOperations<IndexedHistogram<T, V>> {
|
||||||
//public val valueSpace: Space<V>
|
//public val valueSpace: Space<V>
|
||||||
public val strides: Strides
|
public val strides: Strides
|
||||||
public val histogramValueSpace: NDField<V, *> //= NDAlgebra.space(valueSpace, Buffer.Companion::boxing, *shape),
|
public val histogramValueSpace: FieldND<V, *> //= NDAlgebra.space(valueSpace, Buffer.Companion::boxing, *shape),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resolve index of the bin including given [point]
|
* Resolve index of the bin including given [point]
|
||||||
|
@ -23,13 +23,13 @@ public class RealHistogramSpace(
|
|||||||
public val dimension: Int get() = lower.size
|
public val dimension: Int get() = lower.size
|
||||||
|
|
||||||
private val shape = IntArray(binNums.size) { binNums[it] + 2 }
|
private val shape = IntArray(binNums.size) { binNums[it] + 2 }
|
||||||
override val histogramValueSpace: RealNDField = NDAlgebra.real(*shape)
|
override val histogramValueSpace: RealFieldND = AlgebraND.real(*shape)
|
||||||
|
|
||||||
override val strides: Strides get() = histogramValueSpace.strides
|
override val strides: Strides get() = histogramValueSpace.strides
|
||||||
private val binSize = RealBuffer(dimension) { (upper[it] - lower[it]) / binNums[it] }
|
private val binSize = RealBuffer(dimension) { (upper[it] - lower[it]) / binNums[it] }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get internal [NDStructure] bin index for given axis
|
* Get internal [StructureND] bin index for given axis
|
||||||
*/
|
*/
|
||||||
private fun getIndex(axis: Int, value: Double): Int = when {
|
private fun getIndex(axis: Int, value: Double): Int = when {
|
||||||
value >= upper[axis] -> binNums[axis] + 1 // overflow
|
value >= upper[axis] -> binNums[axis] + 1 // overflow
|
||||||
@ -69,7 +69,7 @@ public class RealHistogramSpace(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun produce(builder: HistogramBuilder<Double>.() -> Unit): IndexedHistogram<Double, Double> {
|
override fun produce(builder: HistogramBuilder<Double>.() -> Unit): IndexedHistogram<Double, Double> {
|
||||||
val ndCounter = NDStructure.auto(strides) { Counter.real() }
|
val ndCounter = StructureND.auto(strides) { Counter.real() }
|
||||||
val hBuilder = HistogramBuilder<Double> { point, value ->
|
val hBuilder = HistogramBuilder<Double> { point, value ->
|
||||||
val index = getIndex(point)
|
val index = getIndex(point)
|
||||||
ndCounter[index].add(value.toDouble())
|
ndCounter[index].add(value.toDouble())
|
||||||
|
@ -44,7 +44,7 @@ internal class MultivariateHistogramTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testHistogramAlgebra() {
|
fun testHistogramAlgebra() {
|
||||||
RealHistogramSpace.fromRanges(
|
RealHistogramSpace.fromRanges(
|
||||||
(-1.0..1.0),
|
(-1.0..1.0),
|
||||||
(-1.0..1.0),
|
(-1.0..1.0),
|
||||||
(-1.0..1.0)
|
(-1.0..1.0)
|
||||||
|
@ -9,7 +9,8 @@ import space.kscience.kmath.structures.asSequence
|
|||||||
|
|
||||||
|
|
||||||
@UnstableKMathAPI
|
@UnstableKMathAPI
|
||||||
public val UnivariateDomain.center: Double get() = (range.endInclusive - range.start) / 2
|
public val UnivariateDomain.center: Double
|
||||||
|
get() = (range.endInclusive - range.start) / 2
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A univariate bin based an a range
|
* A univariate bin based an a range
|
||||||
|
@ -8,6 +8,6 @@ dependencies {
|
|||||||
api(project(":kmath-ast"))
|
api(project(":kmath-ast"))
|
||||||
}
|
}
|
||||||
|
|
||||||
readme{
|
readme {
|
||||||
maturity = ru.mipt.npm.gradle.Maturity.PROTOTYPE
|
maturity = ru.mipt.npm.gradle.Maturity.PROTOTYPE
|
||||||
}
|
}
|
@ -3,7 +3,7 @@ plugins {
|
|||||||
id("ru.mipt.npm.gradle.native")
|
id("ru.mipt.npm.gradle.native")
|
||||||
}
|
}
|
||||||
|
|
||||||
readme{
|
readme {
|
||||||
description = """
|
description = """
|
||||||
An API and basic implementation for arranging objects in a continous memory block.
|
An API and basic implementation for arranging objects in a continous memory block.
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
|
@ -32,7 +32,8 @@ public fun <T : Any> MemoryReader.read(spec: MemorySpec<T>, offset: Int): T = wi
|
|||||||
/**
|
/**
|
||||||
* Writes the object [value] with [spec] starting from [offset].
|
* Writes the object [value] with [spec] starting from [offset].
|
||||||
*/
|
*/
|
||||||
public fun <T : Any> MemoryWriter.write(spec: MemorySpec<T>, offset: Int, value: T): Unit = with(spec) { write(offset, value) }
|
public fun <T : Any> MemoryWriter.write(spec: MemorySpec<T>, offset: Int, value: T): Unit =
|
||||||
|
with(spec) { write(offset, value) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads array of [size] objects mapped by [spec] at certain [offset].
|
* Reads array of [size] objects mapped by [spec] at certain [offset].
|
||||||
|
@ -13,7 +13,7 @@ import kotlin.contracts.contract
|
|||||||
internal class ByteBufferMemory(
|
internal class ByteBufferMemory(
|
||||||
val buffer: ByteBuffer,
|
val buffer: ByteBuffer,
|
||||||
val startOffset: Int = 0,
|
val startOffset: Int = 0,
|
||||||
override val size: Int = buffer.limit()
|
override val size: Int = buffer.limit(),
|
||||||
) : Memory {
|
) : Memory {
|
||||||
@Suppress("NOTHING_TO_INLINE")
|
@Suppress("NOTHING_TO_INLINE")
|
||||||
private inline fun position(o: Int): Int = startOffset + o
|
private inline fun position(o: Int): Int = startOffset + o
|
||||||
@ -100,7 +100,8 @@ public actual fun Memory.Companion.allocate(length: Int): Memory =
|
|||||||
* Wraps a [Memory] around existing [ByteArray]. This operation is unsafe since the array is not copied
|
* Wraps a [Memory] around existing [ByteArray]. This operation is unsafe since the array is not copied
|
||||||
* and could be mutated independently from the resulting [Memory].
|
* and could be mutated independently from the resulting [Memory].
|
||||||
*/
|
*/
|
||||||
public actual fun Memory.Companion.wrap(array: ByteArray): Memory = ByteBufferMemory(checkNotNull(ByteBuffer.wrap(array)))
|
public actual fun Memory.Companion.wrap(array: ByteArray): Memory =
|
||||||
|
ByteBufferMemory(checkNotNull(ByteBuffer.wrap(array)))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wraps this [ByteBuffer] to [Memory] object.
|
* Wraps this [ByteBuffer] to [Memory] object.
|
||||||
|
@ -4,7 +4,7 @@ package space.kscience.kmath.memory
|
|||||||
internal class NativeMemory(
|
internal class NativeMemory(
|
||||||
val array: ByteArray,
|
val array: ByteArray,
|
||||||
val startOffset: Int = 0,
|
val startOffset: Int = 0,
|
||||||
override val size: Int = array.size
|
override val size: Int = array.size,
|
||||||
) : Memory {
|
) : Memory {
|
||||||
@Suppress("NOTHING_TO_INLINE")
|
@Suppress("NOTHING_TO_INLINE")
|
||||||
private inline fun position(o: Int): Int = startOffset + o
|
private inline fun position(o: Int): Int = startOffset + o
|
||||||
|
@ -7,7 +7,7 @@ import space.kscience.kmath.nd.*
|
|||||||
import space.kscience.kmath.operations.*
|
import space.kscience.kmath.operations.*
|
||||||
import space.kscience.kmath.structures.*
|
import space.kscience.kmath.structures.*
|
||||||
|
|
||||||
internal fun NDAlgebra<*, *>.checkShape(array: INDArray): INDArray {
|
internal fun AlgebraND<*, *>.checkShape(array: INDArray): INDArray {
|
||||||
val arrayShape = array.shape().toIntArray()
|
val arrayShape = array.shape().toIntArray()
|
||||||
if (!shape.contentEquals(arrayShape)) throw ShapeMismatchException(shape, arrayShape)
|
if (!shape.contentEquals(arrayShape)) throw ShapeMismatchException(shape, arrayShape)
|
||||||
return array
|
return array
|
||||||
@ -15,18 +15,18 @@ internal fun NDAlgebra<*, *>.checkShape(array: INDArray): INDArray {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents [NDAlgebra] over [Nd4jArrayAlgebra].
|
* Represents [AlgebraND] over [Nd4jArrayAlgebra].
|
||||||
*
|
*
|
||||||
* @param T the type of ND-structure element.
|
* @param T the type of ND-structure element.
|
||||||
* @param C the type of the element context.
|
* @param C the type of the element context.
|
||||||
*/
|
*/
|
||||||
public interface Nd4jArrayAlgebra<T, C : Algebra<T>> : NDAlgebra<T, C> {
|
public interface Nd4jArrayAlgebra<T, C : Algebra<T>> : AlgebraND<T, C> {
|
||||||
/**
|
/**
|
||||||
* Wraps [INDArray] to [N].
|
* Wraps [INDArray] to [N].
|
||||||
*/
|
*/
|
||||||
public fun INDArray.wrap(): Nd4jArrayStructure<T>
|
public fun INDArray.wrap(): Nd4jArrayStructure<T>
|
||||||
|
|
||||||
public val NDStructure<T>.ndArray: INDArray
|
public val StructureND<T>.ndArray: INDArray
|
||||||
get() = when {
|
get() = when {
|
||||||
!shape.contentEquals(this@Nd4jArrayAlgebra.shape) -> throw ShapeMismatchException(
|
!shape.contentEquals(this@Nd4jArrayAlgebra.shape) -> throw ShapeMismatchException(
|
||||||
this@Nd4jArrayAlgebra.shape,
|
this@Nd4jArrayAlgebra.shape,
|
||||||
@ -44,13 +44,13 @@ public interface Nd4jArrayAlgebra<T, C : Algebra<T>> : NDAlgebra<T, C> {
|
|||||||
return struct
|
return struct
|
||||||
}
|
}
|
||||||
|
|
||||||
public override fun NDStructure<T>.map(transform: C.(T) -> T): Nd4jArrayStructure<T> {
|
public override fun StructureND<T>.map(transform: C.(T) -> T): Nd4jArrayStructure<T> {
|
||||||
val newStruct = ndArray.dup().wrap()
|
val newStruct = ndArray.dup().wrap()
|
||||||
newStruct.elements().forEach { (idx, value) -> newStruct[idx] = elementContext.transform(value) }
|
newStruct.elements().forEach { (idx, value) -> newStruct[idx] = elementContext.transform(value) }
|
||||||
return newStruct
|
return newStruct
|
||||||
}
|
}
|
||||||
|
|
||||||
public override fun NDStructure<T>.mapIndexed(
|
public override fun StructureND<T>.mapIndexed(
|
||||||
transform: C.(index: IntArray, T) -> T,
|
transform: C.(index: IntArray, T) -> T,
|
||||||
): Nd4jArrayStructure<T> {
|
): Nd4jArrayStructure<T> {
|
||||||
val new = Nd4j.create(*this@Nd4jArrayAlgebra.shape).wrap()
|
val new = Nd4j.create(*this@Nd4jArrayAlgebra.shape).wrap()
|
||||||
@ -59,8 +59,8 @@ public interface Nd4jArrayAlgebra<T, C : Algebra<T>> : NDAlgebra<T, C> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override fun combine(
|
public override fun combine(
|
||||||
a: NDStructure<T>,
|
a: StructureND<T>,
|
||||||
b: NDStructure<T>,
|
b: StructureND<T>,
|
||||||
transform: C.(T, T) -> T,
|
transform: C.(T, T) -> T,
|
||||||
): Nd4jArrayStructure<T> {
|
): Nd4jArrayStructure<T> {
|
||||||
val new = Nd4j.create(*shape).wrap()
|
val new = Nd4j.create(*shape).wrap()
|
||||||
@ -70,42 +70,42 @@ public interface Nd4jArrayAlgebra<T, C : Algebra<T>> : NDAlgebra<T, C> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents [NDGroup] over [Nd4jArrayStructure].
|
* Represents [GroupND] over [Nd4jArrayStructure].
|
||||||
*
|
*
|
||||||
* @param T the type of the element contained in ND structure.
|
* @param T the type of the element contained in ND structure.
|
||||||
* @param S the type of space of structure elements.
|
* @param S the type of space of structure elements.
|
||||||
*/
|
*/
|
||||||
public interface Nd4JArrayGroup<T, S : Group<T>> : NDGroup<T, S>, Nd4jArrayAlgebra<T, S> {
|
public interface Nd4JArrayGroup<T, S : Group<T>> : GroupND<T, S>, Nd4jArrayAlgebra<T, S> {
|
||||||
|
|
||||||
public override val zero: Nd4jArrayStructure<T>
|
public override val zero: Nd4jArrayStructure<T>
|
||||||
get() = Nd4j.zeros(*shape).wrap()
|
get() = Nd4j.zeros(*shape).wrap()
|
||||||
|
|
||||||
public override fun add(a: NDStructure<T>, b: NDStructure<T>): Nd4jArrayStructure<T> =
|
public override fun add(a: StructureND<T>, b: StructureND<T>): Nd4jArrayStructure<T> =
|
||||||
a.ndArray.add(b.ndArray).wrap()
|
a.ndArray.add(b.ndArray).wrap()
|
||||||
|
|
||||||
public override operator fun NDStructure<T>.minus(b: NDStructure<T>): Nd4jArrayStructure<T> =
|
public override operator fun StructureND<T>.minus(b: StructureND<T>): Nd4jArrayStructure<T> =
|
||||||
ndArray.sub(b.ndArray).wrap()
|
ndArray.sub(b.ndArray).wrap()
|
||||||
|
|
||||||
public override operator fun NDStructure<T>.unaryMinus(): Nd4jArrayStructure<T> =
|
public override operator fun StructureND<T>.unaryMinus(): Nd4jArrayStructure<T> =
|
||||||
ndArray.neg().wrap()
|
ndArray.neg().wrap()
|
||||||
|
|
||||||
public fun multiply(a: NDStructure<T>, k: Number): Nd4jArrayStructure<T> =
|
public fun multiply(a: StructureND<T>, k: Number): Nd4jArrayStructure<T> =
|
||||||
a.ndArray.mul(k).wrap()
|
a.ndArray.mul(k).wrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents [NDRing] over [Nd4jArrayStructure].
|
* Represents [RingND] over [Nd4jArrayStructure].
|
||||||
*
|
*
|
||||||
* @param T the type of the element contained in ND structure.
|
* @param T the type of the element contained in ND structure.
|
||||||
* @param R the type of ring of structure elements.
|
* @param R the type of ring of structure elements.
|
||||||
*/
|
*/
|
||||||
@OptIn(UnstableKMathAPI::class)
|
@OptIn(UnstableKMathAPI::class)
|
||||||
public interface Nd4jArrayRing<T, R : Ring<T>> : NDRing<T, R>, Nd4JArrayGroup<T, R> {
|
public interface Nd4jArrayRing<T, R : Ring<T>> : RingND<T, R>, Nd4JArrayGroup<T, R> {
|
||||||
|
|
||||||
public override val one: Nd4jArrayStructure<T>
|
public override val one: Nd4jArrayStructure<T>
|
||||||
get() = Nd4j.ones(*shape).wrap()
|
get() = Nd4j.ones(*shape).wrap()
|
||||||
|
|
||||||
public override fun multiply(a: NDStructure<T>, b: NDStructure<T>): Nd4jArrayStructure<T> =
|
public override fun multiply(a: StructureND<T>, b: StructureND<T>): Nd4jArrayStructure<T> =
|
||||||
a.ndArray.mul(b.ndArray).wrap()
|
a.ndArray.mul(b.ndArray).wrap()
|
||||||
//
|
//
|
||||||
// public override operator fun Nd4jArrayStructure<T>.minus(b: Number): Nd4jArrayStructure<T> {
|
// public override operator fun Nd4jArrayStructure<T>.minus(b: Number): Nd4jArrayStructure<T> {
|
||||||
@ -131,19 +131,19 @@ public interface Nd4jArrayRing<T, R : Ring<T>> : NDRing<T, R>, Nd4JArrayGroup<T,
|
|||||||
ThreadLocal.withInitial { hashMapOf() }
|
ThreadLocal.withInitial { hashMapOf() }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an [NDRing] for [Int] values or pull it from cache if it was created previously.
|
* Creates an [RingND] for [Int] values or pull it from cache if it was created previously.
|
||||||
*/
|
*/
|
||||||
public fun int(vararg shape: Int): Nd4jArrayRing<Int, IntRing> =
|
public fun int(vararg shape: Int): Nd4jArrayRing<Int, IntRing> =
|
||||||
intNd4jArrayRingCache.get().getOrPut(shape) { IntNd4jArrayRing(shape) }
|
intNd4jArrayRingCache.get().getOrPut(shape) { IntNd4jArrayRing(shape) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an [NDRing] for [Long] values or pull it from cache if it was created previously.
|
* Creates an [RingND] for [Long] values or pull it from cache if it was created previously.
|
||||||
*/
|
*/
|
||||||
public fun long(vararg shape: Int): Nd4jArrayRing<Long, LongRing> =
|
public fun long(vararg shape: Int): Nd4jArrayRing<Long, LongRing> =
|
||||||
longNd4jArrayRingCache.get().getOrPut(shape) { LongNd4jArrayRing(shape) }
|
longNd4jArrayRingCache.get().getOrPut(shape) { LongNd4jArrayRing(shape) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a most suitable implementation of [NDRing] using reified class.
|
* Creates a most suitable implementation of [RingND] using reified class.
|
||||||
*/
|
*/
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
public inline fun <reified T : Any> auto(vararg shape: Int): Nd4jArrayRing<T, out Ring<T>> = when {
|
public inline fun <reified T : Any> auto(vararg shape: Int): Nd4jArrayRing<T, out Ring<T>> = when {
|
||||||
@ -155,18 +155,18 @@ public interface Nd4jArrayRing<T, R : Ring<T>> : NDRing<T, R>, Nd4JArrayGroup<T,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents [NDField] over [Nd4jArrayStructure].
|
* Represents [FieldND] over [Nd4jArrayStructure].
|
||||||
*
|
*
|
||||||
* @param T the type of the element contained in ND structure.
|
* @param T the type of the element contained in ND structure.
|
||||||
* @param N the type of ND structure.
|
* @param N the type of ND structure.
|
||||||
* @param F the type field of structure elements.
|
* @param F the type field of structure elements.
|
||||||
*/
|
*/
|
||||||
public interface Nd4jArrayField<T, F : Field<T>> : NDField<T, F>, Nd4jArrayRing<T, F> {
|
public interface Nd4jArrayField<T, F : Field<T>> : FieldND<T, F>, Nd4jArrayRing<T, F> {
|
||||||
|
|
||||||
public override fun divide(a: NDStructure<T>, b: NDStructure<T>): Nd4jArrayStructure<T> =
|
public override fun divide(a: StructureND<T>, b: StructureND<T>): Nd4jArrayStructure<T> =
|
||||||
a.ndArray.div(b.ndArray).wrap()
|
a.ndArray.div(b.ndArray).wrap()
|
||||||
|
|
||||||
public operator fun Number.div(b: NDStructure<T>): Nd4jArrayStructure<T> = b.ndArray.rdiv(this).wrap()
|
public operator fun Number.div(b: StructureND<T>): Nd4jArrayStructure<T> = b.ndArray.rdiv(this).wrap()
|
||||||
|
|
||||||
public companion object {
|
public companion object {
|
||||||
private val floatNd4jArrayFieldCache: ThreadLocal<MutableMap<IntArray, FloatNd4jArrayField>> =
|
private val floatNd4jArrayFieldCache: ThreadLocal<MutableMap<IntArray, FloatNd4jArrayField>> =
|
||||||
@ -176,19 +176,19 @@ public interface Nd4jArrayField<T, F : Field<T>> : NDField<T, F>, Nd4jArrayRing<
|
|||||||
ThreadLocal.withInitial { hashMapOf() }
|
ThreadLocal.withInitial { hashMapOf() }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an [NDField] for [Float] values or pull it from cache if it was created previously.
|
* Creates an [FieldND] for [Float] values or pull it from cache if it was created previously.
|
||||||
*/
|
*/
|
||||||
public fun float(vararg shape: Int): Nd4jArrayRing<Float, FloatField> =
|
public fun float(vararg shape: Int): Nd4jArrayRing<Float, FloatField> =
|
||||||
floatNd4jArrayFieldCache.get().getOrPut(shape) { FloatNd4jArrayField(shape) }
|
floatNd4jArrayFieldCache.get().getOrPut(shape) { FloatNd4jArrayField(shape) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an [NDField] for [Double] values or pull it from cache if it was created previously.
|
* Creates an [FieldND] for [Double] values or pull it from cache if it was created previously.
|
||||||
*/
|
*/
|
||||||
public fun real(vararg shape: Int): Nd4jArrayRing<Double, RealField> =
|
public fun real(vararg shape: Int): Nd4jArrayRing<Double, RealField> =
|
||||||
realNd4jArrayFieldCache.get().getOrPut(shape) { RealNd4jArrayField(shape) }
|
realNd4jArrayFieldCache.get().getOrPut(shape) { RealNd4jArrayField(shape) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a most suitable implementation of [NDRing] using reified class.
|
* Creates a most suitable implementation of [RingND] using reified class.
|
||||||
*/
|
*/
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
public inline fun <reified T : Any> auto(vararg shape: Int): Nd4jArrayField<T, out Field<T>> = when {
|
public inline fun <reified T : Any> auto(vararg shape: Int): Nd4jArrayField<T, out Field<T>> = when {
|
||||||
@ -200,44 +200,44 @@ public interface Nd4jArrayField<T, F : Field<T>> : NDField<T, F>, Nd4jArrayRing<
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents [NDField] over [Nd4jArrayRealStructure].
|
* Represents [FieldND] over [Nd4jArrayRealStructure].
|
||||||
*/
|
*/
|
||||||
public class RealNd4jArrayField(public override val shape: IntArray) : Nd4jArrayField<Double, RealField> {
|
public class RealNd4jArrayField(public override val shape: IntArray) : Nd4jArrayField<Double, RealField> {
|
||||||
public override val elementContext: RealField get() = RealField
|
public override val elementContext: RealField get() = RealField
|
||||||
|
|
||||||
public override fun INDArray.wrap(): Nd4jArrayStructure<Double> = checkShape(this).asRealStructure()
|
public override fun INDArray.wrap(): Nd4jArrayStructure<Double> = checkShape(this).asRealStructure()
|
||||||
|
|
||||||
override fun scale(a: NDStructure<Double>, value: Double): Nd4jArrayStructure<Double> {
|
override fun scale(a: StructureND<Double>, value: Double): Nd4jArrayStructure<Double> {
|
||||||
return a.ndArray.mul(value).wrap()
|
return a.ndArray.mul(value).wrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
public override operator fun NDStructure<Double>.div(arg: Double): Nd4jArrayStructure<Double> {
|
public override operator fun StructureND<Double>.div(arg: Double): Nd4jArrayStructure<Double> {
|
||||||
return ndArray.div(arg).wrap()
|
return ndArray.div(arg).wrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
public override operator fun NDStructure<Double>.plus(arg: Double): Nd4jArrayStructure<Double> {
|
public override operator fun StructureND<Double>.plus(arg: Double): Nd4jArrayStructure<Double> {
|
||||||
return ndArray.add(arg).wrap()
|
return ndArray.add(arg).wrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
public override operator fun NDStructure<Double>.minus(arg: Double): Nd4jArrayStructure<Double> {
|
public override operator fun StructureND<Double>.minus(arg: Double): Nd4jArrayStructure<Double> {
|
||||||
return ndArray.sub(arg).wrap()
|
return ndArray.sub(arg).wrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
public override operator fun NDStructure<Double>.times(arg: Double): Nd4jArrayStructure<Double> {
|
public override operator fun StructureND<Double>.times(arg: Double): Nd4jArrayStructure<Double> {
|
||||||
return ndArray.mul(arg).wrap()
|
return ndArray.mul(arg).wrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
public override operator fun Double.div(arg: NDStructure<Double>): Nd4jArrayStructure<Double> {
|
public override operator fun Double.div(arg: StructureND<Double>): Nd4jArrayStructure<Double> {
|
||||||
return arg.ndArray.rdiv(this).wrap()
|
return arg.ndArray.rdiv(this).wrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
public override operator fun Double.minus(arg: NDStructure<Double>): Nd4jArrayStructure<Double> {
|
public override operator fun Double.minus(arg: StructureND<Double>): Nd4jArrayStructure<Double> {
|
||||||
return arg.ndArray.rsub(this).wrap()
|
return arg.ndArray.rsub(this).wrap()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents [NDField] over [Nd4jArrayStructure] of [Float].
|
* Represents [FieldND] over [Nd4jArrayStructure] of [Float].
|
||||||
*/
|
*/
|
||||||
public class FloatNd4jArrayField(public override val shape: IntArray) : Nd4jArrayField<Float, FloatField> {
|
public class FloatNd4jArrayField(public override val shape: IntArray) : Nd4jArrayField<Float, FloatField> {
|
||||||
public override val elementContext: FloatField
|
public override val elementContext: FloatField
|
||||||
@ -245,30 +245,30 @@ public class FloatNd4jArrayField(public override val shape: IntArray) : Nd4jArra
|
|||||||
|
|
||||||
public override fun INDArray.wrap(): Nd4jArrayStructure<Float> = checkShape(this).asFloatStructure()
|
public override fun INDArray.wrap(): Nd4jArrayStructure<Float> = checkShape(this).asFloatStructure()
|
||||||
|
|
||||||
override fun scale(a: NDStructure<Float>, value: Double): NDStructure<Float> =
|
override fun scale(a: StructureND<Float>, value: Double): StructureND<Float> =
|
||||||
a.ndArray.mul(value).wrap()
|
a.ndArray.mul(value).wrap()
|
||||||
|
|
||||||
public override operator fun NDStructure<Float>.div(arg: Float): Nd4jArrayStructure<Float> =
|
public override operator fun StructureND<Float>.div(arg: Float): Nd4jArrayStructure<Float> =
|
||||||
ndArray.div(arg).wrap()
|
ndArray.div(arg).wrap()
|
||||||
|
|
||||||
public override operator fun NDStructure<Float>.plus(arg: Float): Nd4jArrayStructure<Float> =
|
public override operator fun StructureND<Float>.plus(arg: Float): Nd4jArrayStructure<Float> =
|
||||||
ndArray.add(arg).wrap()
|
ndArray.add(arg).wrap()
|
||||||
|
|
||||||
public override operator fun NDStructure<Float>.minus(arg: Float): Nd4jArrayStructure<Float> =
|
public override operator fun StructureND<Float>.minus(arg: Float): Nd4jArrayStructure<Float> =
|
||||||
ndArray.sub(arg).wrap()
|
ndArray.sub(arg).wrap()
|
||||||
|
|
||||||
public override operator fun NDStructure<Float>.times(arg: Float): Nd4jArrayStructure<Float> =
|
public override operator fun StructureND<Float>.times(arg: Float): Nd4jArrayStructure<Float> =
|
||||||
ndArray.mul(arg).wrap()
|
ndArray.mul(arg).wrap()
|
||||||
|
|
||||||
public override operator fun Float.div(arg: NDStructure<Float>): Nd4jArrayStructure<Float> =
|
public override operator fun Float.div(arg: StructureND<Float>): Nd4jArrayStructure<Float> =
|
||||||
arg.ndArray.rdiv(this).wrap()
|
arg.ndArray.rdiv(this).wrap()
|
||||||
|
|
||||||
public override operator fun Float.minus(arg: NDStructure<Float>): Nd4jArrayStructure<Float> =
|
public override operator fun Float.minus(arg: StructureND<Float>): Nd4jArrayStructure<Float> =
|
||||||
arg.ndArray.rsub(this).wrap()
|
arg.ndArray.rsub(this).wrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents [NDRing] over [Nd4jArrayIntStructure].
|
* Represents [RingND] over [Nd4jArrayIntStructure].
|
||||||
*/
|
*/
|
||||||
public class IntNd4jArrayRing(public override val shape: IntArray) : Nd4jArrayRing<Int, IntRing> {
|
public class IntNd4jArrayRing(public override val shape: IntArray) : Nd4jArrayRing<Int, IntRing> {
|
||||||
public override val elementContext: IntRing
|
public override val elementContext: IntRing
|
||||||
@ -276,21 +276,21 @@ public class IntNd4jArrayRing(public override val shape: IntArray) : Nd4jArrayRi
|
|||||||
|
|
||||||
public override fun INDArray.wrap(): Nd4jArrayStructure<Int> = checkShape(this).asIntStructure()
|
public override fun INDArray.wrap(): Nd4jArrayStructure<Int> = checkShape(this).asIntStructure()
|
||||||
|
|
||||||
public override operator fun NDStructure<Int>.plus(arg: Int): Nd4jArrayStructure<Int> =
|
public override operator fun StructureND<Int>.plus(arg: Int): Nd4jArrayStructure<Int> =
|
||||||
ndArray.add(arg).wrap()
|
ndArray.add(arg).wrap()
|
||||||
|
|
||||||
public override operator fun NDStructure<Int>.minus(arg: Int): Nd4jArrayStructure<Int> =
|
public override operator fun StructureND<Int>.minus(arg: Int): Nd4jArrayStructure<Int> =
|
||||||
ndArray.sub(arg).wrap()
|
ndArray.sub(arg).wrap()
|
||||||
|
|
||||||
public override operator fun NDStructure<Int>.times(arg: Int): Nd4jArrayStructure<Int> =
|
public override operator fun StructureND<Int>.times(arg: Int): Nd4jArrayStructure<Int> =
|
||||||
ndArray.mul(arg).wrap()
|
ndArray.mul(arg).wrap()
|
||||||
|
|
||||||
public override operator fun Int.minus(arg: NDStructure<Int>): Nd4jArrayStructure<Int> =
|
public override operator fun Int.minus(arg: StructureND<Int>): Nd4jArrayStructure<Int> =
|
||||||
arg.ndArray.rsub(this).wrap()
|
arg.ndArray.rsub(this).wrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents [NDRing] over [Nd4jArrayStructure] of [Long].
|
* Represents [RingND] over [Nd4jArrayStructure] of [Long].
|
||||||
*/
|
*/
|
||||||
public class LongNd4jArrayRing(public override val shape: IntArray) : Nd4jArrayRing<Long, LongRing> {
|
public class LongNd4jArrayRing(public override val shape: IntArray) : Nd4jArrayRing<Long, LongRing> {
|
||||||
public override val elementContext: LongRing
|
public override val elementContext: LongRing
|
||||||
@ -298,15 +298,15 @@ public class LongNd4jArrayRing(public override val shape: IntArray) : Nd4jArrayR
|
|||||||
|
|
||||||
public override fun INDArray.wrap(): Nd4jArrayStructure<Long> = checkShape(this).asLongStructure()
|
public override fun INDArray.wrap(): Nd4jArrayStructure<Long> = checkShape(this).asLongStructure()
|
||||||
|
|
||||||
public override operator fun NDStructure<Long>.plus(arg: Long): Nd4jArrayStructure<Long> =
|
public override operator fun StructureND<Long>.plus(arg: Long): Nd4jArrayStructure<Long> =
|
||||||
ndArray.add(arg).wrap()
|
ndArray.add(arg).wrap()
|
||||||
|
|
||||||
public override operator fun NDStructure<Long>.minus(arg: Long): Nd4jArrayStructure<Long> =
|
public override operator fun StructureND<Long>.minus(arg: Long): Nd4jArrayStructure<Long> =
|
||||||
ndArray.sub(arg).wrap()
|
ndArray.sub(arg).wrap()
|
||||||
|
|
||||||
public override operator fun NDStructure<Long>.times(arg: Long): Nd4jArrayStructure<Long> =
|
public override operator fun StructureND<Long>.times(arg: Long): Nd4jArrayStructure<Long> =
|
||||||
ndArray.mul(arg).wrap()
|
ndArray.mul(arg).wrap()
|
||||||
|
|
||||||
public override operator fun Long.minus(arg: NDStructure<Long>): Nd4jArrayStructure<Long> =
|
public override operator fun Long.minus(arg: StructureND<Long>): Nd4jArrayStructure<Long> =
|
||||||
arg.ndArray.rsub(this).wrap()
|
arg.ndArray.rsub(this).wrap()
|
||||||
}
|
}
|
||||||
|
@ -2,10 +2,10 @@ package space.kscience.kmath.nd4j
|
|||||||
|
|
||||||
import org.nd4j.linalg.api.ndarray.INDArray
|
import org.nd4j.linalg.api.ndarray.INDArray
|
||||||
import space.kscience.kmath.nd.MutableNDStructure
|
import space.kscience.kmath.nd.MutableNDStructure
|
||||||
import space.kscience.kmath.nd.NDStructure
|
import space.kscience.kmath.nd.StructureND
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a [NDStructure] wrapping an [INDArray] object.
|
* Represents a [StructureND] wrapping an [INDArray] object.
|
||||||
*
|
*
|
||||||
* @param T the type of items.
|
* @param T the type of items.
|
||||||
*/
|
*/
|
||||||
|
@ -8,7 +8,7 @@ import kotlin.test.fail
|
|||||||
internal class Nd4jArrayAlgebraTest {
|
internal class Nd4jArrayAlgebraTest {
|
||||||
@Test
|
@Test
|
||||||
fun testProduce() {
|
fun testProduce() {
|
||||||
val res = with(RealNd4jArrayField(intArrayOf(2, 2))){ produce { it.sum().toDouble() } }
|
val res = with(RealNd4jArrayField(intArrayOf(2, 2))) { produce { it.sum().toDouble() } }
|
||||||
val expected = (Nd4j.create(2, 2) ?: fail()).asRealStructure()
|
val expected = (Nd4j.create(2, 2) ?: fail()).asRealStructure()
|
||||||
expected[intArrayOf(0, 0)] = 0.0
|
expected[intArrayOf(0, 0)] = 0.0
|
||||||
expected[intArrayOf(0, 1)] = 1.0
|
expected[intArrayOf(0, 1)] = 1.0
|
||||||
|
@ -41,9 +41,9 @@ internal class Nd4jArrayStructureTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testHashCode() {
|
fun testHashCode() {
|
||||||
val nd1 = Nd4j.create(doubleArrayOf(1.0, 2.0, 3.0))?:fail()
|
val nd1 = Nd4j.create(doubleArrayOf(1.0, 2.0, 3.0)) ?: fail()
|
||||||
val struct1 = nd1.asRealStructure()
|
val struct1 = nd1.asRealStructure()
|
||||||
val nd2 = Nd4j.create(doubleArrayOf(1.0, 2.0, 3.0))?:fail()
|
val nd2 = Nd4j.create(doubleArrayOf(1.0, 2.0, 3.0)) ?: fail()
|
||||||
val struct2 = nd2.asRealStructure()
|
val struct2 = nd2.asRealStructure()
|
||||||
assertEquals(struct1.hashCode(), struct2.hashCode())
|
assertEquals(struct1.hashCode(), struct2.hashCode())
|
||||||
}
|
}
|
||||||
@ -57,7 +57,7 @@ internal class Nd4jArrayStructureTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testGet() {
|
fun testGet() {
|
||||||
val nd = Nd4j.rand(10, 2, 3, 6)?:fail()
|
val nd = Nd4j.rand(10, 2, 3, 6) ?: fail()
|
||||||
val struct = nd.asIntStructure()
|
val struct = nd.asIntStructure()
|
||||||
assertEquals(nd.getInt(0, 0, 0, 0), struct[0, 0, 0, 0])
|
assertEquals(nd.getInt(0, 0, 0, 0), struct[0, 0, 0, 0])
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,6 @@ kotlin.sourceSets {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
readme{
|
readme {
|
||||||
maturity = ru.mipt.npm.gradle.Maturity.EXPERIMENTAL
|
maturity = ru.mipt.npm.gradle.Maturity.EXPERIMENTAL
|
||||||
}
|
}
|
@ -53,7 +53,7 @@ public fun <T : Comparable<T>> UnivariateDistribution<T>.integral(from: T, to: T
|
|||||||
public fun <T : Any> Sampler<T>.sampleBuffer(
|
public fun <T : Any> Sampler<T>.sampleBuffer(
|
||||||
generator: RandomGenerator,
|
generator: RandomGenerator,
|
||||||
size: Int,
|
size: Int,
|
||||||
bufferFactory: BufferFactory<T> = Buffer.Companion::boxing
|
bufferFactory: BufferFactory<T> = Buffer.Companion::boxing,
|
||||||
): Chain<Buffer<T>> {
|
): Chain<Buffer<T>> {
|
||||||
require(size > 1)
|
require(size > 1)
|
||||||
//creating temporary storage once
|
//creating temporary storage once
|
||||||
|
@ -68,7 +68,7 @@ public fun <T : Any, F : OptimizationProblem<T>> Expression<T>.optimizeWith(
|
|||||||
configuration: F.() -> Unit,
|
configuration: F.() -> Unit,
|
||||||
): OptimizationResult<T> {
|
): OptimizationResult<T> {
|
||||||
require(symbols.isNotEmpty()) { "Must provide a list of symbols for optimization" }
|
require(symbols.isNotEmpty()) { "Must provide a list of symbols for optimization" }
|
||||||
val problem = factory(symbols.toList(),configuration)
|
val problem = factory(symbols.toList(), configuration)
|
||||||
problem.expression(this)
|
problem.expression(this)
|
||||||
return problem.optimize()
|
return problem.optimize()
|
||||||
}
|
}
|
||||||
@ -76,7 +76,7 @@ public fun <T : Any, F : OptimizationProblem<T>> Expression<T>.optimizeWith(
|
|||||||
/**
|
/**
|
||||||
* Optimize differentiable expression using specific [OptimizationProblemFactory]
|
* Optimize differentiable expression using specific [OptimizationProblemFactory]
|
||||||
*/
|
*/
|
||||||
public fun <T : Any, F : OptimizationProblem<T>> DifferentiableExpression<T, Expression<T>>.optimizeWith(
|
public fun <T : Any, F : OptimizationProblem<T>> DifferentiableExpression<T, Expression<T>>.optimizeWith(
|
||||||
factory: OptimizationProblemFactory<T, F>,
|
factory: OptimizationProblemFactory<T, F>,
|
||||||
vararg symbols: Symbol,
|
vararg symbols: Symbol,
|
||||||
configuration: F.() -> Unit,
|
configuration: F.() -> Unit,
|
||||||
|
@ -7,7 +7,7 @@ import space.kscience.kmath.chains.Chain
|
|||||||
*/
|
*/
|
||||||
public class RandomChain<out R>(
|
public class RandomChain<out R>(
|
||||||
public val generator: RandomGenerator,
|
public val generator: RandomGenerator,
|
||||||
private val gen: suspend RandomGenerator.() -> R
|
private val gen: suspend RandomGenerator.() -> R,
|
||||||
) : Chain<R> {
|
) : Chain<R> {
|
||||||
override suspend fun next(): R = generator.gen()
|
override suspend fun next(): R = generator.gen()
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ private fun normalSampler(method: NormalSamplerMethod, provider: UniformRandomPr
|
|||||||
}
|
}
|
||||||
|
|
||||||
public fun Distribution.Companion.normal(
|
public fun Distribution.Companion.normal(
|
||||||
method: NormalSamplerMethod = NormalSamplerMethod.Ziggurat
|
method: NormalSamplerMethod = NormalSamplerMethod.Ziggurat,
|
||||||
): ContinuousSamplerDistribution = object : ContinuousSamplerDistribution() {
|
): ContinuousSamplerDistribution = object : ContinuousSamplerDistribution() {
|
||||||
override fun buildCMSampler(generator: RandomGenerator): ContinuousSampler {
|
override fun buildCMSampler(generator: RandomGenerator): ContinuousSampler {
|
||||||
val provider = generator.asUniformRandomProvider()
|
val provider = generator.asUniformRandomProvider()
|
||||||
@ -66,7 +66,7 @@ public fun Distribution.Companion.normal(
|
|||||||
public fun Distribution.Companion.normal(
|
public fun Distribution.Companion.normal(
|
||||||
mean: Double,
|
mean: Double,
|
||||||
sigma: Double,
|
sigma: Double,
|
||||||
method: NormalSamplerMethod = NormalSamplerMethod.Ziggurat
|
method: NormalSamplerMethod = NormalSamplerMethod.Ziggurat,
|
||||||
): ContinuousSamplerDistribution = object : ContinuousSamplerDistribution() {
|
): ContinuousSamplerDistribution = object : ContinuousSamplerDistribution() {
|
||||||
private val sigma2 = sigma.pow(2)
|
private val sigma2 = sigma.pow(2)
|
||||||
private val norm = sigma * sqrt(PI * 2)
|
private val norm = sigma * sqrt(PI * 2)
|
||||||
|
@ -26,130 +26,130 @@ public final class space/kscience/kmath/viktor/ViktorBuffer : space/kscience/kma
|
|||||||
public final synthetic fun unbox-impl ()Lorg/jetbrains/bio/viktor/F64FlatArray;
|
public final synthetic fun unbox-impl ()Lorg/jetbrains/bio/viktor/F64FlatArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/viktor/ViktorNDField : space/kscience/kmath/nd/NDField, space/kscience/kmath/operations/ExtendedField, space/kscience/kmath/operations/NumbersAddOperations, space/kscience/kmath/operations/ScaleOperations {
|
public final class space/kscience/kmath/viktor/ViktorFieldND : space/kscience/kmath/nd/FieldND, space/kscience/kmath/operations/ExtendedField, space/kscience/kmath/operations/NumbersAddOperations, space/kscience/kmath/operations/ScaleOperations {
|
||||||
public fun <init> ([I)V
|
public fun <init> ([I)V
|
||||||
public synthetic fun acos (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun acos (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun acos-Q7Xurp0 (Lspace/kscience/kmath/nd/NDStructure;)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun acos-8UOKELU (Lspace/kscience/kmath/nd/StructureND;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public synthetic fun acosh (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun acosh (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun acosh (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun acosh (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun add (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun add (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public synthetic fun add (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun add (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun add-s8yP2C4 (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun add-zrEAbyI (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public synthetic fun asin (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun asin (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun asin-Q7Xurp0 (Lspace/kscience/kmath/nd/NDStructure;)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun asin-8UOKELU (Lspace/kscience/kmath/nd/StructureND;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public synthetic fun asinh (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun asinh (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun asinh (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun asinh (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun atan (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun atan (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun atan-Q7Xurp0 (Lspace/kscience/kmath/nd/NDStructure;)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun atan-8UOKELU (Lspace/kscience/kmath/nd/StructureND;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public synthetic fun atanh (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun atanh (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun atanh (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun atanh (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun binaryOperation (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun binaryOperation (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun binaryOperation (Ljava/lang/String;Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun binaryOperation (Ljava/lang/String;Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
public fun binaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
public synthetic fun bindSymbol (Ljava/lang/String;)Ljava/lang/Object;
|
public synthetic fun bindSymbol (Ljava/lang/String;)Ljava/lang/Object;
|
||||||
public fun bindSymbol (Ljava/lang/String;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun bindSymbol (Ljava/lang/String;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun combine (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun combine (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun combine-ZQYDhZg (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function3;)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun combine-WKhNzhk (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function3;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public synthetic fun cos (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun cos (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun cos-Q7Xurp0 (Lspace/kscience/kmath/nd/NDStructure;)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun cos-8UOKELU (Lspace/kscience/kmath/nd/StructureND;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public synthetic fun cosh (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun cosh (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun cosh (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun cosh (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun div (DLspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun div (DLspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun div (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun div (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public synthetic fun div (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun div (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public synthetic fun div (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun div (Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun div (Lspace/kscience/kmath/nd/NDStructure;D)Lspace/kscience/kmath/nd/NDStructure;
|
public fun div (Lspace/kscience/kmath/nd/StructureND;D)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun div (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun div (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun div (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun div (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun div (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun div (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun divide (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun divide (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun divide (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun divide (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun exp (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun exp (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun exp-Q7Xurp0 (Lspace/kscience/kmath/nd/NDStructure;)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun exp-8UOKELU (Lspace/kscience/kmath/nd/StructureND;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public synthetic fun getElementContext ()Lspace/kscience/kmath/operations/Algebra;
|
public synthetic fun getElementContext ()Lspace/kscience/kmath/operations/Algebra;
|
||||||
public fun getElementContext ()Lspace/kscience/kmath/operations/RealField;
|
public fun getElementContext ()Lspace/kscience/kmath/operations/RealField;
|
||||||
public final fun getF64Buffer (Lspace/kscience/kmath/nd/NDStructure;)Lorg/jetbrains/bio/viktor/F64Array;
|
public final fun getF64Buffer (Lspace/kscience/kmath/nd/StructureND;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public synthetic fun getOne ()Ljava/lang/Object;
|
public synthetic fun getOne ()Ljava/lang/Object;
|
||||||
public fun getOne-MSOxzaI ()Lorg/jetbrains/bio/viktor/F64Array;
|
public fun getOne-6kW2wQc ()Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public fun getShape ()[I
|
public fun getShape ()[I
|
||||||
public synthetic fun getZero ()Ljava/lang/Object;
|
public synthetic fun getZero ()Ljava/lang/Object;
|
||||||
public fun getZero-MSOxzaI ()Lorg/jetbrains/bio/viktor/F64Array;
|
public fun getZero-6kW2wQc ()Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public fun invoke (Lkotlin/jvm/functions/Function1;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun invoke (Lkotlin/jvm/functions/Function1;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun leftSideNumberOperation (Ljava/lang/String;Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun leftSideNumberOperation (Ljava/lang/String;Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun leftSideNumberOperation (Ljava/lang/String;Ljava/lang/Number;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun leftSideNumberOperation (Ljava/lang/String;Ljava/lang/Number;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun leftSideNumberOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
public fun leftSideNumberOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
public synthetic fun ln (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun ln (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun ln-Q7Xurp0 (Lspace/kscience/kmath/nd/NDStructure;)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun ln-8UOKELU (Lspace/kscience/kmath/nd/StructureND;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public synthetic fun map (Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun map (Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun map-s8yP2C4 (Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function2;)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun map-zrEAbyI (Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function2;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public synthetic fun mapIndexed (Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun mapIndexed (Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function3;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun mapIndexed-s8yP2C4 (Lspace/kscience/kmath/nd/NDStructure;Lkotlin/jvm/functions/Function3;)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun mapIndexed-zrEAbyI (Lspace/kscience/kmath/nd/StructureND;Lkotlin/jvm/functions/Function3;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public fun minus (DLspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun minus (DLspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun minus (Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun minus (Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun minus (Ljava/lang/Number;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun minus (Ljava/lang/Number;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun minus (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun minus (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public synthetic fun minus (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun minus (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public synthetic fun minus (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun minus (Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun minus (Lspace/kscience/kmath/nd/NDStructure;D)Lspace/kscience/kmath/nd/NDStructure;
|
public fun minus (Lspace/kscience/kmath/nd/StructureND;D)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun minus (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun minus (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun minus (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun minus (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun minus-s8yP2C4 (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun minus-zrEAbyI (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public synthetic fun multiply (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun multiply (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun multiply (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun multiply (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun number (Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun number (Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public fun number-Q7Xurp0 (Ljava/lang/Number;)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun number-8UOKELU (Ljava/lang/Number;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public fun plus (DLspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun plus (DLspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun plus (Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun plus (Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun plus (Ljava/lang/Number;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun plus (Ljava/lang/Number;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun plus (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun plus (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public synthetic fun plus (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun plus (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public synthetic fun plus (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun plus (Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun plus (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun plus (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun plus (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun plus (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun plus-s8yP2C4 (Lspace/kscience/kmath/nd/NDStructure;D)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun plus-zrEAbyI (Lspace/kscience/kmath/nd/StructureND;D)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public fun plus-s8yP2C4 (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun plus-zrEAbyI (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public synthetic fun pow (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun pow (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public fun pow (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun pow (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun power (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun power (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public fun power-s8yP2C4 (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun power-zrEAbyI (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public synthetic fun produce (Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun produce (Lkotlin/jvm/functions/Function2;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun produce-Q7Xurp0 (Lkotlin/jvm/functions/Function2;)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun produce-8UOKELU (Lkotlin/jvm/functions/Function2;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public synthetic fun rightSideNumberOperation (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun rightSideNumberOperation (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public fun rightSideNumberOperation (Ljava/lang/String;Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun rightSideNumberOperation (Ljava/lang/String;Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun rightSideNumberOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
public fun rightSideNumberOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function2;
|
||||||
public synthetic fun scale (Ljava/lang/Object;D)Ljava/lang/Object;
|
public synthetic fun scale (Ljava/lang/Object;D)Ljava/lang/Object;
|
||||||
public fun scale-s8yP2C4 (Lspace/kscience/kmath/nd/NDStructure;D)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun scale-zrEAbyI (Lspace/kscience/kmath/nd/StructureND;D)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public synthetic fun sin (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun sin (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun sin-Q7Xurp0 (Lspace/kscience/kmath/nd/NDStructure;)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun sin-8UOKELU (Lspace/kscience/kmath/nd/StructureND;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public synthetic fun sinh (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun sinh (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun sinh (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun sinh (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun sqrt (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun sqrt (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun sqrt (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun sqrt (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun tan (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun tan (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun tan (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun tan (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun tanh (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun tanh (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun tanh (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun tanh (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun times (DLspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun times (DLspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun times (Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun times (Ljava/lang/Number;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun times (Ljava/lang/Number;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun times (Ljava/lang/Number;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun times (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
public synthetic fun times (Ljava/lang/Object;Ljava/lang/Number;)Ljava/lang/Object;
|
||||||
public synthetic fun times (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun times (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public synthetic fun times (Ljava/lang/Object;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun times (Ljava/lang/Object;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun times (Lspace/kscience/kmath/nd/NDStructure;D)Lspace/kscience/kmath/nd/NDStructure;
|
public fun times (Lspace/kscience/kmath/nd/StructureND;D)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun times (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Object;)Lspace/kscience/kmath/nd/NDStructure;
|
public synthetic fun times (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Object;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun times (Lspace/kscience/kmath/nd/NDStructure;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun times (Lspace/kscience/kmath/nd/StructureND;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun times-s8yP2C4 (Lspace/kscience/kmath/nd/NDStructure;Ljava/lang/Number;)Lorg/jetbrains/bio/viktor/F64Array;
|
public fun times-zrEAbyI (Lspace/kscience/kmath/nd/StructureND;Ljava/lang/Number;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public synthetic fun unaryMinus (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun unaryMinus (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun unaryMinus (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun unaryMinus (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public synthetic fun unaryOperation (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun unaryOperation (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun unaryOperation (Ljava/lang/String;Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun unaryOperation (Ljava/lang/String;Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
public fun unaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
public fun unaryOperationFunction (Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
|
||||||
public synthetic fun unaryPlus (Ljava/lang/Object;)Ljava/lang/Object;
|
public synthetic fun unaryPlus (Ljava/lang/Object;)Ljava/lang/Object;
|
||||||
public fun unaryPlus (Lspace/kscience/kmath/nd/NDStructure;)Lspace/kscience/kmath/nd/NDStructure;
|
public fun unaryPlus (Lspace/kscience/kmath/nd/StructureND;)Lspace/kscience/kmath/nd/StructureND;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/viktor/ViktorNDStructure : space/kscience/kmath/nd/MutableNDStructure {
|
public final class space/kscience/kmath/viktor/ViktorStructureND : space/kscience/kmath/nd/MutableNDStructure {
|
||||||
public static final synthetic fun box-impl (Lorg/jetbrains/bio/viktor/F64Array;)Lspace/kscience/kmath/viktor/ViktorNDStructure;
|
public static final synthetic fun box-impl (Lorg/jetbrains/bio/viktor/F64Array;)Lspace/kscience/kmath/viktor/ViktorStructureND;
|
||||||
public static fun constructor-impl (Lorg/jetbrains/bio/viktor/F64Array;)Lorg/jetbrains/bio/viktor/F64Array;
|
public static fun constructor-impl (Lorg/jetbrains/bio/viktor/F64Array;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
public fun elements ()Lkotlin/sequences/Sequence;
|
public fun elements ()Lkotlin/sequences/Sequence;
|
||||||
public static fun elements-impl (Lorg/jetbrains/bio/viktor/F64Array;)Lkotlin/sequences/Sequence;
|
public static fun elements-impl (Lorg/jetbrains/bio/viktor/F64Array;)Lkotlin/sequences/Sequence;
|
||||||
@ -174,8 +174,8 @@ public final class space/kscience/kmath/viktor/ViktorNDStructure : space/kscienc
|
|||||||
public final synthetic fun unbox-impl ()Lorg/jetbrains/bio/viktor/F64Array;
|
public final synthetic fun unbox-impl ()Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class space/kscience/kmath/viktor/ViktorNDStructureKt {
|
public final class space/kscience/kmath/viktor/ViktorStructureNDKt {
|
||||||
public static final fun ViktorNDField ([I)Lspace/kscience/kmath/viktor/ViktorNDField;
|
public static final fun ViktorNDField ([I)Lspace/kscience/kmath/viktor/ViktorFieldND;
|
||||||
public static final fun asStructure (Lorg/jetbrains/bio/viktor/F64Array;)Lorg/jetbrains/bio/viktor/F64Array;
|
public static final fun asStructure (Lorg/jetbrains/bio/viktor/F64Array;)Lorg/jetbrains/bio/viktor/F64Array;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,6 +9,6 @@ dependencies {
|
|||||||
api("org.jetbrains.bio:viktor:1.0.1")
|
api("org.jetbrains.bio:viktor:1.0.1")
|
||||||
}
|
}
|
||||||
|
|
||||||
readme{
|
readme {
|
||||||
maturity = ru.mipt.npm.gradle.Maturity.DEVELOPMENT
|
maturity = ru.mipt.npm.gradle.Maturity.DEVELOPMENT
|
||||||
}
|
}
|
@ -1,123 +0,0 @@
|
|||||||
package space.kscience.kmath.viktor
|
|
||||||
|
|
||||||
import org.jetbrains.bio.viktor.F64Array
|
|
||||||
import space.kscience.kmath.misc.UnstableKMathAPI
|
|
||||||
import space.kscience.kmath.nd.*
|
|
||||||
import space.kscience.kmath.operations.ExtendedField
|
|
||||||
import space.kscience.kmath.operations.NumbersAddOperations
|
|
||||||
import space.kscience.kmath.operations.RealField
|
|
||||||
import space.kscience.kmath.operations.ScaleOperations
|
|
||||||
|
|
||||||
@Suppress("OVERRIDE_BY_INLINE", "NOTHING_TO_INLINE")
|
|
||||||
public inline class ViktorNDStructure(public val f64Buffer: F64Array) : MutableNDStructure<Double> {
|
|
||||||
public override val shape: IntArray get() = f64Buffer.shape
|
|
||||||
|
|
||||||
public override inline fun get(index: IntArray): Double = f64Buffer.get(*index)
|
|
||||||
|
|
||||||
public override inline fun set(index: IntArray, value: Double) {
|
|
||||||
f64Buffer.set(*index, value = value)
|
|
||||||
}
|
|
||||||
|
|
||||||
public override fun elements(): Sequence<Pair<IntArray, Double>> =
|
|
||||||
DefaultStrides(shape).indices().map { it to get(it) }
|
|
||||||
}
|
|
||||||
|
|
||||||
public fun F64Array.asStructure(): ViktorNDStructure = ViktorNDStructure(this)
|
|
||||||
|
|
||||||
@OptIn(UnstableKMathAPI::class)
|
|
||||||
@Suppress("OVERRIDE_BY_INLINE", "NOTHING_TO_INLINE")
|
|
||||||
public class ViktorNDField(public override val shape: IntArray) : NDField<Double, RealField>,
|
|
||||||
NumbersAddOperations<NDStructure<Double>>, ExtendedField<NDStructure<Double>>,
|
|
||||||
ScaleOperations<NDStructure<Double>> {
|
|
||||||
|
|
||||||
public val NDStructure<Double>.f64Buffer: F64Array
|
|
||||||
get() = when {
|
|
||||||
!shape.contentEquals(this@ViktorNDField.shape) -> throw ShapeMismatchException(
|
|
||||||
this@ViktorNDField.shape,
|
|
||||||
shape
|
|
||||||
)
|
|
||||||
this is ViktorNDStructure && this.f64Buffer.shape.contentEquals(this@ViktorNDField.shape) -> this.f64Buffer
|
|
||||||
else -> produce { this@f64Buffer[it] }.f64Buffer
|
|
||||||
}
|
|
||||||
|
|
||||||
public override val zero: ViktorNDStructure by lazy { F64Array.full(init = 0.0, shape = shape).asStructure() }
|
|
||||||
|
|
||||||
public override val one: ViktorNDStructure by lazy { F64Array.full(init = 1.0, shape = shape).asStructure() }
|
|
||||||
|
|
||||||
private val strides: Strides = DefaultStrides(shape)
|
|
||||||
|
|
||||||
public override val elementContext: RealField get() = RealField
|
|
||||||
|
|
||||||
public override fun produce(initializer: RealField.(IntArray) -> Double): ViktorNDStructure =
|
|
||||||
F64Array(*shape).apply {
|
|
||||||
this@ViktorNDField.strides.indices().forEach { index ->
|
|
||||||
set(value = RealField.initializer(index), indices = index)
|
|
||||||
}
|
|
||||||
}.asStructure()
|
|
||||||
|
|
||||||
override fun NDStructure<Double>.unaryMinus(): NDStructure<Double> = -1 * this
|
|
||||||
|
|
||||||
public override fun NDStructure<Double>.map(transform: RealField.(Double) -> Double): ViktorNDStructure =
|
|
||||||
F64Array(*this@ViktorNDField.shape).apply {
|
|
||||||
this@ViktorNDField.strides.indices().forEach { index ->
|
|
||||||
set(value = RealField.transform(this@map[index]), indices = index)
|
|
||||||
}
|
|
||||||
}.asStructure()
|
|
||||||
|
|
||||||
public override fun NDStructure<Double>.mapIndexed(
|
|
||||||
transform: RealField.(index: IntArray, Double) -> Double,
|
|
||||||
): ViktorNDStructure = F64Array(*this@ViktorNDField.shape).apply {
|
|
||||||
this@ViktorNDField.strides.indices().forEach { index ->
|
|
||||||
set(value = RealField.transform(index, this@mapIndexed[index]), indices = index)
|
|
||||||
}
|
|
||||||
}.asStructure()
|
|
||||||
|
|
||||||
public override fun combine(
|
|
||||||
a: NDStructure<Double>,
|
|
||||||
b: NDStructure<Double>,
|
|
||||||
transform: RealField.(Double, Double) -> Double,
|
|
||||||
): ViktorNDStructure = F64Array(*shape).apply {
|
|
||||||
this@ViktorNDField.strides.indices().forEach { index ->
|
|
||||||
set(value = RealField.transform(a[index], b[index]), indices = index)
|
|
||||||
}
|
|
||||||
}.asStructure()
|
|
||||||
|
|
||||||
public override fun add(a: NDStructure<Double>, b: NDStructure<Double>): ViktorNDStructure =
|
|
||||||
(a.f64Buffer + b.f64Buffer).asStructure()
|
|
||||||
|
|
||||||
public override fun scale(a: NDStructure<Double>, value: Double): ViktorNDStructure =
|
|
||||||
(a.f64Buffer * value.toDouble()).asStructure()
|
|
||||||
|
|
||||||
public override inline fun NDStructure<Double>.plus(b: NDStructure<Double>): ViktorNDStructure =
|
|
||||||
(f64Buffer + b.f64Buffer).asStructure()
|
|
||||||
|
|
||||||
public override inline fun NDStructure<Double>.minus(b: NDStructure<Double>): ViktorNDStructure =
|
|
||||||
(f64Buffer - b.f64Buffer).asStructure()
|
|
||||||
|
|
||||||
public override inline fun NDStructure<Double>.times(k: Number): ViktorNDStructure =
|
|
||||||
(f64Buffer * k.toDouble()).asStructure()
|
|
||||||
|
|
||||||
public override inline fun NDStructure<Double>.plus(arg: Double): ViktorNDStructure =
|
|
||||||
(f64Buffer.plus(arg)).asStructure()
|
|
||||||
|
|
||||||
override fun number(value: Number): ViktorNDStructure =
|
|
||||||
F64Array.full(init = value.toDouble(), shape = shape).asStructure()
|
|
||||||
|
|
||||||
override fun sin(arg: NDStructure<Double>): ViktorNDStructure = arg.map { sin(it) }
|
|
||||||
|
|
||||||
override fun cos(arg: NDStructure<Double>): ViktorNDStructure = arg.map { cos(it) }
|
|
||||||
|
|
||||||
override fun asin(arg: NDStructure<Double>): ViktorNDStructure = arg.map { asin(it) }
|
|
||||||
|
|
||||||
override fun acos(arg: NDStructure<Double>): ViktorNDStructure = arg.map { acos(it) }
|
|
||||||
|
|
||||||
override fun atan(arg: NDStructure<Double>): ViktorNDStructure = arg.map { atan(it) }
|
|
||||||
|
|
||||||
override fun power(arg: NDStructure<Double>, pow: Number): ViktorNDStructure = arg.map { it.pow(pow) }
|
|
||||||
|
|
||||||
override fun exp(arg: NDStructure<Double>): ViktorNDStructure = arg.f64Buffer.exp().asStructure()
|
|
||||||
|
|
||||||
override fun ln(arg: NDStructure<Double>): ViktorNDStructure = arg.f64Buffer.log().asStructure()
|
|
||||||
}
|
|
||||||
|
|
||||||
public fun ViktorNDField(vararg shape: Int): ViktorNDField = ViktorNDField(shape)
|
|
@ -0,0 +1,123 @@
|
|||||||
|
package space.kscience.kmath.viktor
|
||||||
|
|
||||||
|
import org.jetbrains.bio.viktor.F64Array
|
||||||
|
import space.kscience.kmath.misc.UnstableKMathAPI
|
||||||
|
import space.kscience.kmath.nd.*
|
||||||
|
import space.kscience.kmath.operations.ExtendedField
|
||||||
|
import space.kscience.kmath.operations.NumbersAddOperations
|
||||||
|
import space.kscience.kmath.operations.RealField
|
||||||
|
import space.kscience.kmath.operations.ScaleOperations
|
||||||
|
|
||||||
|
@Suppress("OVERRIDE_BY_INLINE", "NOTHING_TO_INLINE")
|
||||||
|
public inline class ViktorStructureND(public val f64Buffer: F64Array) : MutableNDStructure<Double> {
|
||||||
|
public override val shape: IntArray get() = f64Buffer.shape
|
||||||
|
|
||||||
|
public override inline fun get(index: IntArray): Double = f64Buffer.get(*index)
|
||||||
|
|
||||||
|
public override inline fun set(index: IntArray, value: Double) {
|
||||||
|
f64Buffer.set(*index, value = value)
|
||||||
|
}
|
||||||
|
|
||||||
|
public override fun elements(): Sequence<Pair<IntArray, Double>> =
|
||||||
|
DefaultStrides(shape).indices().map { it to get(it) }
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun F64Array.asStructure(): ViktorStructureND = ViktorStructureND(this)
|
||||||
|
|
||||||
|
@OptIn(UnstableKMathAPI::class)
|
||||||
|
@Suppress("OVERRIDE_BY_INLINE", "NOTHING_TO_INLINE")
|
||||||
|
public class ViktorFieldND(public override val shape: IntArray) : FieldND<Double, RealField>,
|
||||||
|
NumbersAddOperations<StructureND<Double>>, ExtendedField<StructureND<Double>>,
|
||||||
|
ScaleOperations<StructureND<Double>> {
|
||||||
|
|
||||||
|
public val StructureND<Double>.f64Buffer: F64Array
|
||||||
|
get() = when {
|
||||||
|
!shape.contentEquals(this@ViktorFieldND.shape) -> throw ShapeMismatchException(
|
||||||
|
this@ViktorFieldND.shape,
|
||||||
|
shape
|
||||||
|
)
|
||||||
|
this is ViktorStructureND && this.f64Buffer.shape.contentEquals(this@ViktorFieldND.shape) -> this.f64Buffer
|
||||||
|
else -> produce { this@f64Buffer[it] }.f64Buffer
|
||||||
|
}
|
||||||
|
|
||||||
|
public override val zero: ViktorStructureND by lazy { F64Array.full(init = 0.0, shape = shape).asStructure() }
|
||||||
|
|
||||||
|
public override val one: ViktorStructureND by lazy { F64Array.full(init = 1.0, shape = shape).asStructure() }
|
||||||
|
|
||||||
|
private val strides: Strides = DefaultStrides(shape)
|
||||||
|
|
||||||
|
public override val elementContext: RealField get() = RealField
|
||||||
|
|
||||||
|
public override fun produce(initializer: RealField.(IntArray) -> Double): ViktorStructureND =
|
||||||
|
F64Array(*shape).apply {
|
||||||
|
this@ViktorFieldND.strides.indices().forEach { index ->
|
||||||
|
set(value = RealField.initializer(index), indices = index)
|
||||||
|
}
|
||||||
|
}.asStructure()
|
||||||
|
|
||||||
|
override fun StructureND<Double>.unaryMinus(): StructureND<Double> = -1 * this
|
||||||
|
|
||||||
|
public override fun StructureND<Double>.map(transform: RealField.(Double) -> Double): ViktorStructureND =
|
||||||
|
F64Array(*this@ViktorFieldND.shape).apply {
|
||||||
|
this@ViktorFieldND.strides.indices().forEach { index ->
|
||||||
|
set(value = RealField.transform(this@map[index]), indices = index)
|
||||||
|
}
|
||||||
|
}.asStructure()
|
||||||
|
|
||||||
|
public override fun StructureND<Double>.mapIndexed(
|
||||||
|
transform: RealField.(index: IntArray, Double) -> Double,
|
||||||
|
): ViktorStructureND = F64Array(*this@ViktorFieldND.shape).apply {
|
||||||
|
this@ViktorFieldND.strides.indices().forEach { index ->
|
||||||
|
set(value = RealField.transform(index, this@mapIndexed[index]), indices = index)
|
||||||
|
}
|
||||||
|
}.asStructure()
|
||||||
|
|
||||||
|
public override fun combine(
|
||||||
|
a: StructureND<Double>,
|
||||||
|
b: StructureND<Double>,
|
||||||
|
transform: RealField.(Double, Double) -> Double,
|
||||||
|
): ViktorStructureND = F64Array(*shape).apply {
|
||||||
|
this@ViktorFieldND.strides.indices().forEach { index ->
|
||||||
|
set(value = RealField.transform(a[index], b[index]), indices = index)
|
||||||
|
}
|
||||||
|
}.asStructure()
|
||||||
|
|
||||||
|
public override fun add(a: StructureND<Double>, b: StructureND<Double>): ViktorStructureND =
|
||||||
|
(a.f64Buffer + b.f64Buffer).asStructure()
|
||||||
|
|
||||||
|
public override fun scale(a: StructureND<Double>, value: Double): ViktorStructureND =
|
||||||
|
(a.f64Buffer * value.toDouble()).asStructure()
|
||||||
|
|
||||||
|
public override inline fun StructureND<Double>.plus(b: StructureND<Double>): ViktorStructureND =
|
||||||
|
(f64Buffer + b.f64Buffer).asStructure()
|
||||||
|
|
||||||
|
public override inline fun StructureND<Double>.minus(b: StructureND<Double>): ViktorStructureND =
|
||||||
|
(f64Buffer - b.f64Buffer).asStructure()
|
||||||
|
|
||||||
|
public override inline fun StructureND<Double>.times(k: Number): ViktorStructureND =
|
||||||
|
(f64Buffer * k.toDouble()).asStructure()
|
||||||
|
|
||||||
|
public override inline fun StructureND<Double>.plus(arg: Double): ViktorStructureND =
|
||||||
|
(f64Buffer.plus(arg)).asStructure()
|
||||||
|
|
||||||
|
override fun number(value: Number): ViktorStructureND =
|
||||||
|
F64Array.full(init = value.toDouble(), shape = shape).asStructure()
|
||||||
|
|
||||||
|
override fun sin(arg: StructureND<Double>): ViktorStructureND = arg.map { sin(it) }
|
||||||
|
|
||||||
|
override fun cos(arg: StructureND<Double>): ViktorStructureND = arg.map { cos(it) }
|
||||||
|
|
||||||
|
override fun asin(arg: StructureND<Double>): ViktorStructureND = arg.map { asin(it) }
|
||||||
|
|
||||||
|
override fun acos(arg: StructureND<Double>): ViktorStructureND = arg.map { acos(it) }
|
||||||
|
|
||||||
|
override fun atan(arg: StructureND<Double>): ViktorStructureND = arg.map { atan(it) }
|
||||||
|
|
||||||
|
override fun power(arg: StructureND<Double>, pow: Number): ViktorStructureND = arg.map { it.pow(pow) }
|
||||||
|
|
||||||
|
override fun exp(arg: StructureND<Double>): ViktorStructureND = arg.f64Buffer.exp().asStructure()
|
||||||
|
|
||||||
|
override fun ln(arg: StructureND<Double>): ViktorStructureND = arg.f64Buffer.log().asStructure()
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun ViktorNDField(vararg shape: Int): ViktorFieldND = ViktorFieldND(shape)
|