feat(course): bo prototype
BIN
circuit/25-1/dz/24.11.pdf
Normal file
@ -1,365 +1,446 @@
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36" version="28.2.8">
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36" version="29.2.1">
|
||||
<diagram name="Страница — 1" id="sO6mBrgkGhevZXLxDi5B">
|
||||
<mxGraphModel dx="834" dy="528" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<mxGraphModel dx="595" dy="402" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-55" value="RA" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="150" y="232.5" width="50" height="80" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-55" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="RA" vertex="1">
|
||||
<mxGeometry height="80" width="50" x="150" y="232.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-56" value="0<div><br></div><div><br></div><div>3</div>" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="130" y="257.5" width="60" height="30" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-56" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="0<div><br></div><div><br></div><div>3</div>" vertex="1">
|
||||
<mxGeometry height="30" width="60" x="130" y="257.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-57" value="RB" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="150" y="353.75" width="50" height="80" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-57" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="RB" vertex="1">
|
||||
<mxGeometry height="80" width="50" x="150" y="353.75" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-58" value="0<div><br></div><div><br></div><div>3</div>" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="130" y="378.75" width="60" height="30" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-58" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="0<div><br></div><div><br></div><div>3</div>" vertex="1">
|
||||
<mxGeometry height="30" width="60" x="130" y="378.75" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-66" value="" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;size=20;rotation=90;" parent="1" vertex="1">
|
||||
<mxGeometry x="540" y="297.5" width="120" height="50" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-66" parent="1" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;size=20;rotation=90;" value="" vertex="1">
|
||||
<mxGeometry height="50" width="120" x="555" y="297.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-67" value="RR" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="570" y="307.5" width="60" height="30" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-67" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="RR" vertex="1">
|
||||
<mxGeometry height="30" width="60" x="585" y="307.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-68" value="0<div><br></div><div><br></div><div><br></div><div>7</div>" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="552.5" y="299.43" width="60" height="30" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-68" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="0<div><br></div><div><br></div><div><br></div><div>7</div>" vertex="1">
|
||||
<mxGeometry height="30" width="60" x="567.5" y="299.43" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-71" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;" parent="1" vertex="1">
|
||||
<mxGeometry x="341.25" y="315" width="210" height="50" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-71" parent="1" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;" value="" vertex="1">
|
||||
<mxGeometry height="50" width="210" x="341.25" y="315" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-72" value="SM" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="414" y="320.56" width="60" height="30" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-72" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="SM" vertex="1">
|
||||
<mxGeometry height="30" width="60" x="414" y="320.56" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-73" value="" style="triangle;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="421.25" y="330.56" width="10" height="10" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-73" parent="1" style="triangle;whiteSpace=wrap;html=1;" value="" vertex="1">
|
||||
<mxGeometry height="10" width="10" x="421.25" y="330.56" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-74" value="<div><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">0</span></div><div><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><br></span></div><div><br></div><div>3</div>" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="400.25" y="269.43" width="60" height="30" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-74" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="<div><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">0</span></div><div><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><br></span></div><div><br></div><div>3</div>" vertex="1">
|
||||
<mxGeometry height="30" width="60" x="400.25" y="269.43" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-76" value="<div><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">0</span></div><div><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><br></span></div><div><br></div><div>3</div>" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="400.25" y="378.74" width="60" height="30" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-76" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="<div><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">0</span></div><div><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><br></span></div><div><br></div><div>3</div>" vertex="1">
|
||||
<mxGeometry height="30" width="60" x="400.25" y="378.74" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-77" value="0&nbsp; &nbsp;RPR" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="505" y="483.18" width="50" height="37.5" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-77" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="0&nbsp; &nbsp;RPR" vertex="1">
|
||||
<mxGeometry height="37.5" width="50" x="505" y="483.18" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-78" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;" parent="1" vertex="1">
|
||||
<mxGeometry x="289.99" y="246.13" width="73.87" height="48.87" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-81" parent="1" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;" value="" vertex="1">
|
||||
<mxGeometry height="48.87" width="73.87" x="290" y="369.31" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-79" value="КС1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="296.92" y="257.5" width="60" height="30" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-82" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="КС1" vertex="1">
|
||||
<mxGeometry height="30" width="60" x="296.93" y="378.74" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-81" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;" parent="1" vertex="1">
|
||||
<mxGeometry x="290" y="369.31" width="73.87" height="48.87" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-82" value="КС2" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="296.93" y="378.74" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-83" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="sDe38s09ArQUHBlkgSVm-57" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-83" edge="1" parent="1" source="sDe38s09ArQUHBlkgSVm-57" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="290" y="411.25" as="sourcePoint" />
|
||||
<mxPoint x="110" y="394.25" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-84" value="B" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-83" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.3434" y="-2" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-84" connectable="0" parent="sDe38s09ArQUHBlkgSVm-83" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="B" vertex="1">
|
||||
<mxGeometry relative="1" x="0.3434" y="-2" as="geometry">
|
||||
<mxPoint x="7" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-91" value="<div><br></div>/<div>4</div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-83" vertex="1" connectable="0">
|
||||
<mxGeometry x="-0.4416" y="1" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-91" connectable="0" parent="sDe38s09ArQUHBlkgSVm-83" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="<div><br></div>/<div>4</div>" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.4416" y="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-85" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="sDe38s09ArQUHBlkgSVm-55" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-85" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="sDe38s09ArQUHBlkgSVm-55" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="110" y="272.5" as="sourcePoint" />
|
||||
<mxPoint x="340" y="342.5" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-86" value="A" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-85" vertex="1" connectable="0">
|
||||
<mxGeometry x="-0.1554" y="2" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-86" connectable="0" parent="sDe38s09ArQUHBlkgSVm-85" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="A" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.1554" y="2" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-90" value="<div><br></div>/<div>4</div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-85" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.5248" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-90" connectable="0" parent="sDe38s09ArQUHBlkgSVm-85" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="<div><br></div>/<div>4</div>" vertex="1">
|
||||
<mxGeometry relative="1" x="0.5248" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-92" value="" style="endArrow=none;html=1;rounded=0;exitX=1.017;exitY=0.476;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="sDe38s09ArQUHBlkgSVm-55" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-92" edge="1" parent="1" source="sDe38s09ArQUHBlkgSVm-55" style="endArrow=none;html=1;rounded=0;exitX=1.017;exitY=0.476;exitDx=0;exitDy=0;exitPerimeter=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="410" y="312.5" as="sourcePoint" />
|
||||
<mxPoint x="300" y="270" as="targetPoint" />
|
||||
<mxPoint x="400" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-95" value="<div><br></div><div>/</div><div>4</div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-92" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.0823" y="-2" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-95" connectable="0" parent="sDe38s09ArQUHBlkgSVm-92" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="<div><br></div><div>/</div><div>4</div>" vertex="1">
|
||||
<mxGeometry relative="1" x="0.0823" y="-2" as="geometry">
|
||||
<mxPoint x="6" y="-2" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-96" value="" style="endArrow=none;html=1;rounded=0;exitX=1.018;exitY=0.464;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="sDe38s09ArQUHBlkgSVm-57" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-96" edge="1" parent="1" source="sDe38s09ArQUHBlkgSVm-57" style="endArrow=none;html=1;rounded=0;exitX=1.018;exitY=0.464;exitDx=0;exitDy=0;exitPerimeter=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="280" y="331.25" as="sourcePoint" />
|
||||
<mxPoint x="302" y="390" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-97" value="<br><div>/</div><div>4</div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-96" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.12" y="2" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-97" connectable="0" parent="sDe38s09ArQUHBlkgSVm-96" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="<br><div>/</div><div>4</div>" vertex="1">
|
||||
<mxGeometry relative="1" x="0.12" y="2" as="geometry">
|
||||
<mxPoint x="23" y="2" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-98" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="sDe38s09ArQUHBlkgSVm-71" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-98" edge="1" parent="1" source="sDe38s09ArQUHBlkgSVm-71" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="430" y="340" as="sourcePoint" />
|
||||
<mxPoint x="500" y="340" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-99" value="<div><br></div><div>/</div><div>4</div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-98" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.338" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-99" connectable="0" parent="sDe38s09ArQUHBlkgSVm-98" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="<div><br></div><div>/</div><div>4</div>" vertex="1">
|
||||
<mxGeometry relative="1" x="0.338" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-100" value="- 3<div>- 6</div>" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="602" y="345.56" width="60" height="30" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-100" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="- 3<div>- 6</div>" vertex="1">
|
||||
<mxGeometry height="30" width="60" x="617" y="345.56" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-101" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="629" y="345.5" as="sourcePoint" />
|
||||
<mxPoint x="629" y="375.5" as="targetPoint" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-101" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="644" y="345.5" as="sourcePoint" />
|
||||
<mxPoint x="644" y="375.5" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-108" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="sDe38s09ArQUHBlkgSVm-78" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="360" y="360" as="sourcePoint" />
|
||||
<mxPoint x="421" y="271" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-109" value="<div><br></div><div>/</div><div>4</div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-108" vertex="1" connectable="0">
|
||||
<mxGeometry x="-0.4527" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-110" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="sDe38s09ArQUHBlkgSVm-66" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-110" edge="1" parent="1" source="sDe38s09ArQUHBlkgSVm-66" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;" target="sDe38s09ArQUHBlkgSVm-112" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="430" y="402.5" as="sourcePoint" />
|
||||
<mxPoint x="690" y="322.5" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-111" value="<br><div>/</div><div>8</div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-110" vertex="1" connectable="0">
|
||||
<mxGeometry x="-0.0715" y="1" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-111" connectable="0" parent="sDe38s09ArQUHBlkgSVm-110" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="<br><div>/</div><div>8</div>" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.0715" y="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-112" value="результат" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="660" y="299.43" width="60" height="30" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-112" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="результат" vertex="1">
|
||||
<mxGeometry height="30" width="60" x="690" y="300.56" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-113" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="353.70000000000005" y="393.74060484183144" as="sourcePoint" />
|
||||
<mxPoint x="418.02" y="393.74190162271805" as="targetPoint" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-113" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="351.70000000000005" y="384.74060484183144" as="sourcePoint" />
|
||||
<mxPoint x="420" y="385" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="IMC0bOtRx6fE2dsl-r5o-3" value="<div><br></div><div>/</div><div>4</div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="sDe38s09ArQUHBlkgSVm-113">
|
||||
<mxGeometry x="-0.0283" relative="1" as="geometry">
|
||||
<mxCell id="IMC0bOtRx6fE2dsl-r5o-3" connectable="0" parent="sDe38s09ArQUHBlkgSVm-113" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="<div><br></div><div>/</div><div>4</div>" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.0283" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-115" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.75;exitDx=0;exitDy=0;" parent="1" source="sDe38s09ArQUHBlkgSVm-81" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="350" y="395" as="sourcePoint" />
|
||||
<mxPoint x="317" y="335" as="targetPoint" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-115" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.75;exitDx=0;exitDy=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="328.63036989196814" y="366.5928401440426" as="sourcePoint" />
|
||||
<mxPoint x="329" y="339" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-116" value="Y0" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-115" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.4619" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-116" connectable="0" parent="sDe38s09ArQUHBlkgSVm-115" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Y6" vertex="1">
|
||||
<mxGeometry relative="1" x="0.4619" as="geometry">
|
||||
<mxPoint y="-8" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-117" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="333.78234380589004" y="370.0215178252056" as="sourcePoint" />
|
||||
<mxPoint x="334" y="335" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-118" value="Y1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-117" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.5763" relative="1" as="geometry">
|
||||
<mxPoint y="-8" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-119" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.75;exitDx=0;exitDy=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="317.99" y="239.07" as="sourcePoint" />
|
||||
<mxPoint x="317.99" y="211.07" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-120" value="Y0" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-119" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.4619" relative="1" as="geometry">
|
||||
<mxPoint y="-8" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-121" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="334.77234380589005" y="246.09151782520559" as="sourcePoint" />
|
||||
<mxPoint x="334.99" y="211.07" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-122" value="Y1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-121" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.5763" relative="1" as="geometry">
|
||||
<mxPoint y="-8" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-123" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="sDe38s09ArQUHBlkgSVm-55" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-123" edge="1" parent="1" source="sDe38s09ArQUHBlkgSVm-55" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="230" y="390" as="sourcePoint" />
|
||||
<mxPoint x="175" y="210" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-124" value="Y2" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-123" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.4058" y="-1" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-124" connectable="0" parent="sDe38s09ArQUHBlkgSVm-123" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Y0" vertex="1">
|
||||
<mxGeometry relative="1" x="0.4058" y="-1" as="geometry">
|
||||
<mxPoint x="-1" y="-7" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-125" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="sDe38s09ArQUHBlkgSVm-57" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-125" edge="1" parent="1" source="sDe38s09ArQUHBlkgSVm-57" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="320" y="390" as="sourcePoint" />
|
||||
<mxPoint x="175" y="330" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-126" value="Y3" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-125" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.6144" y="-2" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-126" connectable="0" parent="sDe38s09ArQUHBlkgSVm-125" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Y0" vertex="1">
|
||||
<mxGeometry relative="1" x="0.6144" y="-2" as="geometry">
|
||||
<mxPoint x="-2" y="-2" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-130" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="300" y="500" as="sourcePoint" />
|
||||
<mxPoint x="250" y="270" as="targetPoint" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-130" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="250" y="500" />
|
||||
</Array>
|
||||
<mxPoint x="300" y="500" as="sourcePoint" />
|
||||
<mxPoint x="250" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-131" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="260" y="390" as="sourcePoint" />
|
||||
<mxPoint x="301" y="490" as="targetPoint" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-131" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="260" y="490" />
|
||||
</Array>
|
||||
<mxPoint x="260" y="390" as="sourcePoint" />
|
||||
<mxPoint x="301" y="490" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-132" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;" parent="1" vertex="1">
|
||||
<mxGeometry x="290" y="471.81" width="73.87" height="48.87" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-132" parent="1" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;" value="" vertex="1">
|
||||
<mxGeometry height="48.87" width="73.87" x="290" y="471.81" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-133" value="КС3" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="296.93" y="481.24" width="60" height="30" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-133" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="КС2" vertex="1">
|
||||
<mxGeometry height="30" width="60" x="296.93" y="481.24" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-136" value="" style="endArrow=none;html=1;rounded=0;exitX=0.033;exitY=0.625;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="sDe38s09ArQUHBlkgSVm-71" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="440" y="220" as="sourcePoint" />
|
||||
<mxPoint x="440" y="210" as="targetPoint" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-136" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;exitX=0.033;exitY=0.625;exitDx=0;exitDy=0;exitPerimeter=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="448" y="244.93000000000006" as="sourcePoint" />
|
||||
<mxPoint x="448" y="213" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-137" value="F0" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-136" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.4918" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-137" connectable="0" parent="sDe38s09ArQUHBlkgSVm-136" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Y1" vertex="1">
|
||||
<mxGeometry relative="1" x="0.4918" as="geometry">
|
||||
<mxPoint x="1" y="-7" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-138" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="sDe38s09ArQUHBlkgSVm-133" target="sDe38s09ArQUHBlkgSVm-77" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="360" y="380" as="sourcePoint" />
|
||||
<mxPoint x="410" y="330" as="targetPoint" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-138" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="sDe38s09ArQUHBlkgSVm-77" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="351.93000000000006" y="503.74" as="sourcePoint" />
|
||||
<mxPoint x="500" y="501.93000000000006" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-139" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0;exitDx=0;exitDy=0;" parent="1" source="sDe38s09ArQUHBlkgSVm-133" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="360" y="380" as="sourcePoint" />
|
||||
<mxPoint x="500" y="301" as="targetPoint" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-139" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="380" y="481" />
|
||||
<mxPoint x="480" y="480" />
|
||||
<mxPoint x="480" y="490" />
|
||||
<mxPoint x="480" y="440" />
|
||||
<mxPoint x="480" y="300" />
|
||||
</Array>
|
||||
<mxPoint x="350" y="490" as="sourcePoint" />
|
||||
<mxPoint x="500" y="301" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-140" value="4<div>/</div><div><br></div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-139" vertex="1" connectable="0">
|
||||
<mxGeometry x="-0.6812" y="-1" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-140" connectable="0" parent="sDe38s09ArQUHBlkgSVm-139" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="5<br><div>/</div><div><br></div>" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.6812" y="-1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-141" value="" style="endArrow=none;html=1;rounded=0;exitX=0.046;exitY=0.628;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="sDe38s09ArQUHBlkgSVm-66" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="440" y="372.5" as="sourcePoint" />
|
||||
<mxPoint x="594" y="232.5" as="targetPoint" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-141" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;exitX=0.046;exitY=0.628;exitDx=0;exitDy=0;exitPerimeter=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="606.5999999999999" y="269.02" as="sourcePoint" />
|
||||
<mxPoint x="607" y="241" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-143" value="Y4" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-141" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.7182" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-143" connectable="0" parent="sDe38s09ArQUHBlkgSVm-141" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Y4" vertex="1">
|
||||
<mxGeometry relative="1" x="0.7182" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-144" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;" parent="1" source="sDe38s09ArQUHBlkgSVm-66" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-144" edge="1" parent="1" source="sDe38s09ArQUHBlkgSVm-66" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="480" y="372.5" as="sourcePoint" />
|
||||
<mxPoint x="610" y="242.5" as="targetPoint" />
|
||||
<mxPoint x="625" y="240" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-145" value="Y5" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-144" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.6297" y="1" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-145" connectable="0" parent="sDe38s09ArQUHBlkgSVm-144" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Y5" vertex="1">
|
||||
<mxGeometry relative="1" x="0.6297" y="1" as="geometry">
|
||||
<mxPoint y="-2" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-146" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;" parent="1" vertex="1">
|
||||
<mxGeometry x="489.06" y="295" width="73.87" height="48.87" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-146" parent="1" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;" value="" vertex="1">
|
||||
<mxGeometry height="48.87" width="100.94" x="475.52" y="308.54" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-147" value="КС4" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="495" y="306.25" width="60" height="30" as="geometry" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-147" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="КС3" vertex="1">
|
||||
<mxGeometry height="30" width="60" x="495" y="306.25" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-148" value="" style="endArrow=none;html=1;rounded=0;exitX=0.153;exitY=0.438;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="sDe38s09ArQUHBlkgSVm-146" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="522.5" y="292.5" as="sourcePoint" />
|
||||
<mxPoint x="530" y="250" as="targetPoint" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-148" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="519" y="290" as="sourcePoint" />
|
||||
<mxPoint x="519" y="262" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-149" value="Y6" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-148" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.3236" y="1" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-149" connectable="0" parent="sDe38s09ArQUHBlkgSVm-148" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Y2" vertex="1">
|
||||
<mxGeometry relative="1" x="0.3236" y="1" as="geometry">
|
||||
<mxPoint x="-3" y="-19" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-150" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.542;entryY=-0.008;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="sDe38s09ArQUHBlkgSVm-66" target="sDe38s09ArQUHBlkgSVm-146" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="470" y="400" as="sourcePoint" />
|
||||
<mxPoint x="520" y="350" as="targetPoint" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-150" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;entryX=0.542;entryY=-0.008;entryDx=0;entryDy=0;entryPerimeter=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="570" y="310" as="sourcePoint" />
|
||||
<mxPoint x="550.8209599999999" y="310.53754" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-151" value="<br><div>/</div><div>4</div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-150" vertex="1" connectable="0">
|
||||
<mxGeometry x="-0.0393" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-151" connectable="0" parent="sDe38s09ArQUHBlkgSVm-150" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="<br><div>/</div><div>4</div>" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.0393" as="geometry">
|
||||
<mxPoint y="-2" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-152" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="sDe38s09ArQUHBlkgSVm-77" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-152" edge="1" parent="1" source="sDe38s09ArQUHBlkgSVm-77" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="410" y="420" as="sourcePoint" />
|
||||
<mxPoint x="530" y="460" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-153" value="Y6" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="sDe38s09ArQUHBlkgSVm-152" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.5411" y="-1" relative="1" as="geometry">
|
||||
<mxCell id="sDe38s09ArQUHBlkgSVm-153" connectable="0" parent="sDe38s09ArQUHBlkgSVm-152" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Y7" vertex="1">
|
||||
<mxGeometry relative="1" x="0.5411" y="-1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="IMC0bOtRx6fE2dsl-r5o-4" value="" style="endArrow=none;html=1;rounded=0;exitX=0.75;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="296.49999999999994" y="414.2125" as="sourcePoint" />
|
||||
<mxPoint x="630" y="360" as="targetPoint" />
|
||||
<mxCell id="IMC0bOtRx6fE2dsl-r5o-4" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="284" y="414" />
|
||||
<mxPoint x="284" y="452" />
|
||||
<mxPoint x="640" y="452" />
|
||||
<mxPoint x="640" y="360" />
|
||||
<mxPoint x="670" y="450" />
|
||||
<mxPoint x="670" y="360" />
|
||||
</Array>
|
||||
<mxPoint x="300" y="414" as="sourcePoint" />
|
||||
<mxPoint x="640" y="360" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-1" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;exitX=0.884;exitY=0.709;exitDx=0;exitDy=0;exitPerimeter=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="350.97000000000014" y="403.0100000000001" as="sourcePoint" />
|
||||
<mxPoint x="371" y="403" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-2" connectable="0" parent="sfdR_fJUOVRd-Uw4pG2y-1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="F0" vertex="1">
|
||||
<mxGeometry relative="1" x="0.5285" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-3" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="400" y="270" as="sourcePoint" />
|
||||
<mxPoint x="420" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-4" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="400" y="280" as="sourcePoint" />
|
||||
<mxPoint x="420" y="280" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-5" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="400" y="290" as="sourcePoint" />
|
||||
<mxPoint x="420" y="290" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-6" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="400" y="300" as="sourcePoint" />
|
||||
<mxPoint x="420" y="300" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-8" connectable="0" parent="sfdR_fJUOVRd-Uw4pG2y-6" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="0" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.7423" as="geometry">
|
||||
<mxPoint x="-2" y="-1" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-7" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0;entryDx=0;entryDy=0;" target="sDe38s09ArQUHBlkgSVm-74" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="400" y="290" as="sourcePoint" />
|
||||
<mxPoint x="430" y="260" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-9" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="570" y="330" as="sourcePoint" />
|
||||
<mxPoint x="590" y="330" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-10" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="570" y="340" as="sourcePoint" />
|
||||
<mxPoint x="590" y="340" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-11" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="570" y="350" as="sourcePoint" />
|
||||
<mxPoint x="590" y="350" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-13" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="570" y="300" as="sourcePoint" />
|
||||
<mxPoint x="590" y="300" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-21" connectable="0" parent="sfdR_fJUOVRd-Uw4pG2y-13" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="R2" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.7038" y="1" as="geometry">
|
||||
<mxPoint x="2" y="3" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-14" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="570" y="310" as="sourcePoint" />
|
||||
<mxPoint x="590" y="310" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-15" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="570" y="320" as="sourcePoint" />
|
||||
<mxPoint x="590" y="320" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-17" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="570" y="280" as="sourcePoint" />
|
||||
<mxPoint x="590" y="280" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-19" connectable="0" parent="sfdR_fJUOVRd-Uw4pG2y-17" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="R0" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.3385" as="geometry">
|
||||
<mxPoint x="-2" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-18" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="570" y="290" as="sourcePoint" />
|
||||
<mxPoint x="590" y="290" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-20" connectable="0" parent="sfdR_fJUOVRd-Uw4pG2y-18" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="R1" vertex="1">
|
||||
<mxGeometry relative="1" x="-0.4731" y="1" as="geometry">
|
||||
<mxPoint y="1" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-23" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="570" y="340" as="sourcePoint" />
|
||||
<mxPoint x="570" y="310" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="sfdR_fJUOVRd-Uw4pG2y-24" edge="1" parent="1" source="sDe38s09ArQUHBlkgSVm-146" style="endArrow=none;html=1;rounded=0;exitX=0.676;exitY=-0.009;exitDx=0;exitDy=0;exitPerimeter=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="560" y="350" as="sourcePoint" />
|
||||
<mxPoint x="570" y="350" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="cDHfcUH87RyFzs359Bgq-1" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="537" y="298" as="sourcePoint" />
|
||||
<mxPoint x="537" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="cDHfcUH87RyFzs359Bgq-2" connectable="0" parent="cDHfcUH87RyFzs359Bgq-1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="Y3" vertex="1">
|
||||
<mxGeometry relative="1" x="0.3236" y="1" as="geometry">
|
||||
<mxPoint x="-3" y="-19" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
</root>
|
||||
|
||||
BIN
circuit/25-2/course_project/img/bo-cs1.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
circuit/25-2/course_project/img/bo-cs2.png
Normal file
|
After Width: | Height: | Size: 137 KiB |
BIN
circuit/25-2/course_project/img/bo-cs3.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 78 KiB |
BIN
circuit/25-2/course_project/img/bo-ra.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
circuit/25-2/course_project/img/bo-rb.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
circuit/25-2/course_project/img/bo-rpr.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
circuit/25-2/course_project/img/bo-rr.png
Normal file
|
After Width: | Height: | Size: 150 KiB |
BIN
circuit/25-2/course_project/img/bo-scheme.png
Normal file
|
After Width: | Height: | Size: 297 KiB |
BIN
circuit/25-2/course_project/img/bo-sm.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
@ -148,7 +148,7 @@ $$[A]_{\text{п}} = a_3, a_2 a_1 a_0$$
|
||||
$b_0 = 1$ & & 0 & 1 & 1 & 1 & & & & \makecell[l]{RA} \\ \hline
|
||||
& 0 & 0 & 1 & 1 & 1 & 0 & 0 & 0 & \makecell[l]{RR} \\
|
||||
& 0 & 0 & 0 & 1 & 1 & 1 & 0 & 0 & \makecell[l]{RR >> 1} \\
|
||||
$b_1 = 0$ & \multicolumn{8}{c}{\text{пропуск такта суммирования}} & \\ \hline
|
||||
$b_1 = 0$ & \multicolumn{9}{l}{\text{пропуск такта суммирования}} \\ \hline
|
||||
& 0 & 0 & 0 & 1 & 1 & 1 & 0 & 0 & \makecell[l]{RR} \\
|
||||
& 0 & 0 & 0 & 0 & 1 & 1 & 1 & 0 & \makecell[l]{RR >> 1} \\
|
||||
$b_2 = 1$ & & 0 & 1 & 1 & 1 & & & & \makecell[l]{RA} \\ \hline
|
||||
@ -222,8 +222,12 @@ $$[A]_{\text{п}} = a_3, a_2 a_1 a_0$$
|
||||
Обознач & Назначение УМНОЖЕНИЕ & ПРОВЕРКА БИТА \\ \hline
|
||||
RA & Регистр 1-го операнда, 4 разряда, множимое, параллельная загрузка, хранение & позиция бита, параллельная загрузка \\ \hline
|
||||
RB & Регистр 2-го операнда, 4 разряда, множитель, параллельная загрузка, хранение & регистр данных, параллельная загрузка \\ \hline
|
||||
RR & Регистр результата, 8 разрядов, параллельная загрузка, хранение, сдвиг вправо на 1 разряд & новое значение регистра RB, 4 разряда, параллельная загрузка, хранение \\ \hline
|
||||
RR & Регистр результата, 8 разрядов, параллельная загрузка, хранение, сдвиг вправо на 1 разряд & новое значение регистра RB, 4 старших разряда, параллельная загрузка, хранение \\ \hline
|
||||
RPR & & Регистр флага CF, 1 разряд, параллельная загрузка, хранение \\ \hline
|
||||
КС1 & Выбор множимого: RB или RR[6:3]. Формирование сигнала F0 для МУУ & \\ \hline
|
||||
КС2 & Формирование знака для КС3 & Новое значение RB с установленным битом для КС3. Формирование RPR \\ \hline
|
||||
КС3 & Загрузка результата суммирования в RR[6:3] или знака в RR[7] & Загрузка нового значения RB с установленным битом в RR[6:3] \\ \hline
|
||||
SM & 4-разрядный сумматор. Пропуск такта & \\ \hline
|
||||
& &
|
||||
\end{tabular}
|
||||
\caption{Элементы функциональной схемы}
|
||||
@ -231,4 +235,186 @@ $$[A]_{\text{п}} = a_3, a_2 a_1 a_0$$
|
||||
\end{minipage}
|
||||
\end{figure}
|
||||
|
||||
\newpage
|
||||
\subsection{Проектирование логических элементов блока операций}
|
||||
\subsubsection{Регистр первого операнда RA}
|
||||
|
||||
Данный регистр является четырёхразрядным регистром хранения. Наиболее подходящим для реализации функций регистра RA является регистр FD4CE
|
||||
|
||||
\begin{minipage}{0.3\textwidth}
|
||||
\centering
|
||||
Таблица управляющих сигналов RA
|
||||
\begin{tabular}{|c|c|}
|
||||
\hline
|
||||
Y0 & Назначение \\ \hline
|
||||
0 & Хранение \\ \hline
|
||||
1 & Загрузка \\ \hline
|
||||
\end{tabular}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.69\textwidth}
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.3\textwidth]{bo-ra}
|
||||
\caption{Логическая схема RA}
|
||||
\label{bo-ra}
|
||||
\end{figure}
|
||||
\end{minipage}
|
||||
|
||||
\subsubsection{Регистр второго операнда RB}
|
||||
|
||||
Данный регистр является четырёхразрядным регистром хранения. Наиболее подходящим для реализации функций регистра RB является регистр FD4CE
|
||||
|
||||
\begin{minipage}{0.3\textwidth}
|
||||
\centering
|
||||
Таблица управляющих сигналов RB
|
||||
\begin{tabular}{|c|c|}
|
||||
\hline
|
||||
Y0 & Назначение \\ \hline
|
||||
0 & Хранение \\ \hline
|
||||
1 & Загрузка \\ \hline
|
||||
\end{tabular}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.69\textwidth}
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.3\textwidth]{bo-rb}
|
||||
\caption{Логическая схема RB}
|
||||
\label{bo-rb}
|
||||
\end{figure}
|
||||
\end{minipage}
|
||||
|
||||
\subsubsection{Регистр результата RR}
|
||||
|
||||
Данный регистр является 8-разрядным регистром с логическим сдвигом вправо на 1 разряд, хранением, параллельной загрузкой. Наиболее подходящим для реализации функции регистра RR является регистр SR8CLE
|
||||
|
||||
\begin{minipage}{0.3\textwidth}
|
||||
\centering
|
||||
Таблица управляющих сигналов RR
|
||||
\begin{tabular}{|c|c|c|}
|
||||
\hline
|
||||
Y5 & Y4 & Назначение \\ \hline
|
||||
0 & 0 & Хранение \\ \hline
|
||||
0 & 1 & Загрузка \\ \hline
|
||||
1 & 0 & SHR \\ \hline
|
||||
\end{tabular}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.69\textwidth}
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.8\textwidth]{bo-rr}
|
||||
\caption{Логическая схема RR}
|
||||
\label{bo-rr}
|
||||
\end{figure}
|
||||
\end{minipage}
|
||||
|
||||
\subsubsection{Регистр признака RPR}
|
||||
|
||||
Данный регистр является 1-разрядным с хранением и загрузкой. Наиболее подходящим для реализации функции регистра RPR является
|
||||
|
||||
\begin{minipage}{0.3\textwidth}
|
||||
\centering
|
||||
Таблица управляющих сигналов RPR
|
||||
\begin{tabular}{|c|c|}
|
||||
\hline
|
||||
Y7 & Назначение \\ \hline
|
||||
0 & Хранение \\ \hline
|
||||
1 & Загрузка \\ \hline
|
||||
\end{tabular}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.69\textwidth}
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.3\textwidth]{bo-rpr}
|
||||
\caption{Логическая схема RPR}
|
||||
\label{bo-rpr}
|
||||
\end{figure}
|
||||
\end{minipage}
|
||||
|
||||
\subsubsection{Комбинационная схема КC1}
|
||||
|
||||
С помощью комбинационной схемы КС1 осуществляется выбор множимого из RB или RR[6:3], а также формируется сигнал F0 для МУУ
|
||||
|
||||
\begin{minipage}{0.3\textwidth}
|
||||
\centering
|
||||
Таблица управляющих сигналов КС1
|
||||
\begin{tabular}{|c|c|}
|
||||
\hline
|
||||
Y6 & Назначение \\ \hline
|
||||
0 & Выбор RB \\ \hline
|
||||
1 & Выбор RR[6:3] \\ \hline
|
||||
\end{tabular}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.69\textwidth}
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.8\textwidth]{bo-cs1}
|
||||
\caption{Логическая схема КС1}
|
||||
\label{bo-cs1}
|
||||
\end{figure}
|
||||
\end{minipage}
|
||||
|
||||
\newpage
|
||||
\subsubsection{Комбинационная схема КC2}
|
||||
|
||||
С помощью комбинационной схемы КС2 осуществляется формирование знака для операции умножени, формирование нового значения RB с установленным битом и формирование флага CF для операции установки бита
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.6\textwidth]{bo-cs2}
|
||||
\caption{Логическая схема КС2}
|
||||
\label{bo-cs2}
|
||||
\end{figure}
|
||||
|
||||
\newpage
|
||||
\subsubsection{Комбинационная схема КC3}
|
||||
|
||||
С помощью комбинационной схемы КС3 осуществляется загрузка промежуточной суммы в RR[6:3] и знака в RR[7] в операции умножения, нового значения RB с установленными битами в RR[6:3] в операции установки бита
|
||||
|
||||
\begin{minipage}{0.3\textwidth}
|
||||
\centering
|
||||
Таблица управляющих сигналов КС3
|
||||
\begin{tabular}{|c|c|c|}
|
||||
\hline
|
||||
Y3 & Y2 & Назначение \\ \hline
|
||||
0 & 0 & сумма в RR[6:3] \\ \hline
|
||||
0 & 1 & знак RR[7] \\ \hline
|
||||
1 & 0 & значение RB в RR[6:3] \\ \hline
|
||||
\end{tabular}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.69\textwidth}
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.8\textwidth]{bo-cs3}
|
||||
\caption{Логическая схема КС3}
|
||||
\label{bo-cs3}
|
||||
\end{figure}
|
||||
\end{minipage}
|
||||
|
||||
\newpage
|
||||
\subsubsection{Сумматор SM}
|
||||
|
||||
4-разрядный, старшие разряды множимого и множителя, carry input установлены в 0
|
||||
|
||||
\begin{minipage}{\textwidth}
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.6\textwidth]{bo-sm}
|
||||
\caption{Логическая схема SM}
|
||||
\label{bo-sm}
|
||||
\end{figure}
|
||||
\end{minipage}
|
||||
|
||||
\newpage
|
||||
\subsection{Логическая схема блока операций}
|
||||
|
||||
\begin{minipage}{\textwidth}
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{bo-scheme}
|
||||
\caption{Логическая схема БО}
|
||||
\label{bo-scheme}
|
||||
\end{figure}
|
||||
\end{minipage}
|
||||
|
||||
|
||||
\end{document}
|
||||
|
||||
@ -1,386 +0,0 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {
|
||||
"collapsed": true
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from numba import cuda\n",
|
||||
"from numba import vectorize\n",
|
||||
"import numpy as np"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {
|
||||
"collapsed": true
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"U8_MAX = 0xFFFFFFFFFFFFFFFF\n",
|
||||
"U32_MAX = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n",
|
||||
"\n",
|
||||
"def bignum_to_u32(num):\n",
|
||||
" res = np.empty(4, np.uint64)\n",
|
||||
" res[0] = num & U8_MAX\n",
|
||||
" res[1] = (num >> 64) & U8_MAX\n",
|
||||
" res[2] = (num >> 128) & U8_MAX\n",
|
||||
" res[3] = (num >> 192) & U8_MAX\n",
|
||||
" return res\n",
|
||||
"\n",
|
||||
"def u32_to_bignum(arr):\n",
|
||||
" return int(arr[3]) << 192 | \\\n",
|
||||
" int(arr[2]) << 128 | \\\n",
|
||||
" int(arr[1]) << 64 | \\\n",
|
||||
" int(arr[0]) \n",
|
||||
"\n",
|
||||
"Gx = bignum_to_u32(55066263022277343669578718895168534326250603453777594175500187360389116729240)\n",
|
||||
"Gy = bignum_to_u32(32670510020758816978083085130507043184471273380659243275938904335757337482424)\n",
|
||||
"p = bignum_to_u32(2**256 - 2**32 - 2**9 - 2**8 - 2**7 - 2**6 - 2**4 - 1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 67,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"@cuda.jit('void(u8[:], u8[:], u8[:])', device=True)\n",
|
||||
"def add_u32(a, b, out):\n",
|
||||
" carry = np.uint64(0)\n",
|
||||
" for i in range(4):\n",
|
||||
" ai = a[i]\n",
|
||||
" bi = b[i]\n",
|
||||
" outi = ai + bi\n",
|
||||
" out[i] = outi + carry\n",
|
||||
" carry = outi < ai or outi == U8_MAX and carry\n",
|
||||
"\n",
|
||||
"@cuda.jit('void(u8[:], u8[:], u8[:])', device=True)\n",
|
||||
"def sub_u32(a, b, out):\n",
|
||||
" borrow = np.uint64(0)\n",
|
||||
" for i in range(4):\n",
|
||||
" ai = a[i]\n",
|
||||
" bi = b[i]\n",
|
||||
" outi = ai - bi\n",
|
||||
" out[i] = outi - borrow\n",
|
||||
" borrow = ai < bi or outi == 0 and borrow\n",
|
||||
"\n",
|
||||
"@cuda.jit('void(u8[:], u8)', device=True)\n",
|
||||
"def shr_u32(out, bits):\n",
|
||||
" bits = np.uint64(bits)\n",
|
||||
" lost = np.uint64(0)\n",
|
||||
" for i in range(4):\n",
|
||||
" outi = out[3 - i]\n",
|
||||
" out[3 - i] = (outi >> bits) | lost\n",
|
||||
" lost = outi << (np.uint64(64) - bits)\n",
|
||||
" \n",
|
||||
"@cuda.jit('void(u8[:], u8[:], u8[:])', device=True)\n",
|
||||
"def mul_u32(a, b, out):\n",
|
||||
" for i in range(4):\n",
|
||||
" out[i] = 0\n",
|
||||
" \n",
|
||||
" for i in range(255, -1, -1):\n",
|
||||
" quad_pos = np.uint64(i // 64)\n",
|
||||
" bit_pos = np.uint64(i % 64)\n",
|
||||
" bit = b[quad_pos] >> bit_pos\n",
|
||||
" if bit % 2 == 1:\n",
|
||||
" add_u32(a, out, out)\n",
|
||||
" \n",
|
||||
" shr_u32(out, 1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 78,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"failed on shr 0b0 0b110000000110100101\n",
|
||||
"failed on shr 0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111011111100100000111011\n",
|
||||
"failed on shr 0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0b111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111010100000101111100111110110011110100011011000010010\n",
|
||||
"failed on shr 0b111111111111111111111111111111111111111111111111111 0b111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110101100000010111101100110100111110011000000011010\n",
|
||||
"failed on shr 0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101011110\n",
|
||||
"failed on shr 0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100010100000001110001001100001111\n",
|
||||
"failed on shr 0b0 0b11110100110111011010100011011110011010000010011101010\n",
|
||||
"failed on shr 0b0 0b10000010101011110110111000000100100010011110111111011101111\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/home/appuser/Miniconda3/lib/python3.6/site-packages/ipykernel_launcher.py:7: RuntimeWarning: overflow encountered in ulong_scalars\n",
|
||||
" import sys\n",
|
||||
"/home/appuser/Miniconda3/lib/python3.6/site-packages/ipykernel_launcher.py:28: RuntimeWarning: overflow encountered in ulong_scalars\n",
|
||||
"/home/appuser/Miniconda3/lib/python3.6/site-packages/ipykernel_launcher.py:17: RuntimeWarning: overflow encountered in ulong_scalars\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"from random import randint\n",
|
||||
"\n",
|
||||
"@cuda.jit('void(u8[:], u8[:], u8[:])')\n",
|
||||
"def mul_u32_ker(a, b, out):\n",
|
||||
" mul_u32(a, b, out)\n",
|
||||
"\n",
|
||||
"for i in range(10):\n",
|
||||
" a = randint(0, U8_MAX)\n",
|
||||
" b = randint(0, U8_MAX)\n",
|
||||
" bit = randint(0, 256)\n",
|
||||
" a32 = bignum_to_u32(a)\n",
|
||||
" b32 = bignum_to_u32(b)\n",
|
||||
" out32 = np.empty(4, np.uint64)\n",
|
||||
" \n",
|
||||
" add_u32.py_func(a32, b32, out32)\n",
|
||||
" out = (a + b) % (U32_MAX + 1)\n",
|
||||
" if out != u32_to_bignum(out32):\n",
|
||||
" print(\"failed on add\")\n",
|
||||
" \n",
|
||||
" sub_u32.py_func(a32, b32, out32)\n",
|
||||
" out = (a - b) % (U32_MAX + 1)\n",
|
||||
" if out != u32_to_bignum(out32):\n",
|
||||
" print(\"failed on sub\")\n",
|
||||
" \n",
|
||||
" shr_u32.py_func(out32, bit)\n",
|
||||
" out >>= bit\n",
|
||||
" if out != u32_to_bignum(out32):\n",
|
||||
" print(\"failed on shr\", bin(out), bin(u32_to_bignum(out32)))\n",
|
||||
" \n",
|
||||
" #mul_u32_ker(a32, b32, out32)\n",
|
||||
" #out = (a * b) % (U32_MAX + 1)\n",
|
||||
" #if out != u32_to_bignum(out32):\n",
|
||||
" # print(\"failed on mul\", a, b, u32_to_bignum(out32))\n",
|
||||
" "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 43,
|
||||
"metadata": {
|
||||
"collapsed": true
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"@cuda.jit(device=True)\n",
|
||||
"def cmp_ge256(a, b):\n",
|
||||
" # return True if a >= b\n",
|
||||
" # compare from most significant word\n",
|
||||
" for i in range(3, -1, -1):\n",
|
||||
" ai = a[i]\n",
|
||||
" bi = b[i]\n",
|
||||
" if ai > bi:\n",
|
||||
" return True\n",
|
||||
" elif ai < bi:\n",
|
||||
" return False\n",
|
||||
" return True # equal\n",
|
||||
"\n",
|
||||
"@cuda.jit(device=True)\n",
|
||||
"def sub256(a, b, out):\n",
|
||||
" # assume a >= b, perform out = a - b\n",
|
||||
" borrow = 0\n",
|
||||
" for i in range(4):\n",
|
||||
" ai = a[i]\n",
|
||||
" bi = b[i]\n",
|
||||
" # compute ai - bi - borrow\n",
|
||||
" tmp = ai - bi\n",
|
||||
" borrow1 = 1 if tmp > ai else 0 # tmp < 0 -> wrapping -> tmp > ai\n",
|
||||
" tmp2 = tmp - borrow\n",
|
||||
" borrow2 = 1 if tmp2 > tmp else 0\n",
|
||||
" out[i] = tmp2\n",
|
||||
" borrow = 1 if (borrow1 or borrow2) else 0\n",
|
||||
" # if borrow != 0 then a < b (but we assumed a>=b)\n",
|
||||
"\n",
|
||||
"# 64x64 -> 128 using 32-bit split\n",
|
||||
"@cuda.jit(device=True)\n",
|
||||
"def mul64wide(x, y):\n",
|
||||
" MASK32 = (1 << 32) - 1\n",
|
||||
" x_lo = x & MASK32\n",
|
||||
" x_hi = x >> 32\n",
|
||||
" y_lo = y & MASK32\n",
|
||||
" y_hi = y >> 32\n",
|
||||
"\n",
|
||||
" p0 = x_lo * y_lo # <= 64 bits\n",
|
||||
" p1 = x_lo * y_hi # <= 64 bits\n",
|
||||
" p2 = x_hi * y_lo # <= 64 bits\n",
|
||||
" p3 = x_hi * y_hi # <= 64 bits\n",
|
||||
"\n",
|
||||
" # combine: p0 + (p1<<32) + (p2<<32) + (p3<<64)\n",
|
||||
" mid = p1 + p2\n",
|
||||
" carry_mid = 0\n",
|
||||
" # lower 64:\n",
|
||||
" low = (p0 + ((mid & MASK32) << 32)) & ((1 << 64) - 1)\n",
|
||||
" # carry from lower additions\n",
|
||||
" if (p0 + ((mid & MASK32) << 32)) >> 64:\n",
|
||||
" carry_mid = 1\n",
|
||||
" high = p3 + (mid >> 32) + carry_mid\n",
|
||||
" # low, high are 64-bit parts of 128-bit product\n",
|
||||
" return low & ((1 << 64) - 1), high & ((1 << 64) - 1)\n",
|
||||
"\n",
|
||||
"@cuda.jit(device=True)\n",
|
||||
"def mul256_full(a, b, out8):\n",
|
||||
" # out8 must be length 8 (little-endian) to hold full 512-bit product\n",
|
||||
" # Initialize\n",
|
||||
" for i in range(8):\n",
|
||||
" out8[i] = 0\n",
|
||||
"\n",
|
||||
" # schoolbook: for i in 0..3, j in 0..3\n",
|
||||
" temp = cuda.local.array(8, dtype=np.uint64) # local accumulator\n",
|
||||
" for i in range(8):\n",
|
||||
" temp[i] = 0\n",
|
||||
"\n",
|
||||
" for i in range(4):\n",
|
||||
" ai = a[i]\n",
|
||||
" for j in range(4):\n",
|
||||
" bj = b[j]\n",
|
||||
" lo, hi = mul64wide(ai, bj) # 128-bit product\n",
|
||||
" k = i + j\n",
|
||||
" # add lo to temp[k], handle carry\n",
|
||||
" s, c = add64_carry(temp[k], lo, 0)\n",
|
||||
" temp[k] = s\n",
|
||||
" # propagate carry to next word together with hi\n",
|
||||
" carry = hi + c\n",
|
||||
" t_idx = k + 1\n",
|
||||
" while carry != 0:\n",
|
||||
" s2, c2 = add64_carry(temp[t_idx], carry, 0)\n",
|
||||
" temp[t_idx] = s2\n",
|
||||
" # compute new carry (0/1) from addition\n",
|
||||
" carry = 1 if c2 else 0\n",
|
||||
" t_idx += 1\n",
|
||||
" # t_idx never exceeds 7 because i+j <= 6, plus propagation safe\n",
|
||||
" # copy to out8\n",
|
||||
" for i in range(8):\n",
|
||||
" out8[i] = temp[i]\n",
|
||||
"\n",
|
||||
"@cuda.jit(device=True)\n",
|
||||
"def mul256_lo(a, b, out4):\n",
|
||||
" # compute full product and keep lower 4 words\n",
|
||||
" out8 = cuda.local.array(8, dtype=np.uint64)\n",
|
||||
" mul256_full(a, b, out8)\n",
|
||||
" for i in range(4):\n",
|
||||
" out4[i] = out8[i]\n",
|
||||
"\n",
|
||||
"# --------------------\n",
|
||||
"# division: binary long division\n",
|
||||
"# --------------------\n",
|
||||
"@cuda.jit(device=True)\n",
|
||||
"def shl1_256_inplace(x):\n",
|
||||
" # x <<= 1 (inplace)\n",
|
||||
" carry = 0\n",
|
||||
" for i in range(4):\n",
|
||||
" new_carry = (x[i] >> 63) & 1\n",
|
||||
" x[i] = (x[i] << 1) & ((1 << 64) - 1)\n",
|
||||
" x[i] |= carry\n",
|
||||
" carry = new_carry\n",
|
||||
"\n",
|
||||
"@cuda.jit(device=True)\n",
|
||||
"def shr1_256_getbit(x):\n",
|
||||
" # shift right by 1, return LSB (bit 0) before shift\n",
|
||||
" lsb = x[0] & 1\n",
|
||||
" carry = 0\n",
|
||||
" for i in range(3, -1, -1):\n",
|
||||
" new_carry = x[i] & 1\n",
|
||||
" x[i] = (x[i] >> 1) | (carry << 63)\n",
|
||||
" carry = new_carry\n",
|
||||
" return lsb\n",
|
||||
"\n",
|
||||
"@cuda.jit(device=True)\n",
|
||||
"def get_bit256(x, idx):\n",
|
||||
" # idx: 0..255, 0 = least significant bit\n",
|
||||
" w = idx // 64\n",
|
||||
" b = idx % 64\n",
|
||||
" return (x[w] >> b) & 1\n",
|
||||
"\n",
|
||||
"@cuda.jit(device=True)\n",
|
||||
"def set_bit256(x, idx):\n",
|
||||
" w = idx // 64\n",
|
||||
" b = idx % 64\n",
|
||||
" x[w] |= (1 << b)\n",
|
||||
"\n",
|
||||
"@cuda.jit(device=True)\n",
|
||||
"def copy256(src, dst):\n",
|
||||
" for i in range(4):\n",
|
||||
" dst[i] = src[i]\n",
|
||||
"\n",
|
||||
"@cuda.jit(device=True)\n",
|
||||
"def zero256(x):\n",
|
||||
" for i in range(4):\n",
|
||||
" x[i] = 0\n",
|
||||
"\n",
|
||||
"@cuda.jit(device=True)\n",
|
||||
"def divmod256(dividend, divisor, q, r):\n",
|
||||
" # Binary long division (restoring), bit-by-bit from MSB..LSB\n",
|
||||
" # q,r are output arrays (4 words). dividend/divisor are input arrays.\n",
|
||||
" # edge cases\n",
|
||||
" zero = True\n",
|
||||
" for i in range(4):\n",
|
||||
" if divisor[i] != 0:\n",
|
||||
" zero = False\n",
|
||||
" break\n",
|
||||
" if zero:\n",
|
||||
" # division by zero — define q=0,r=dividend (user must avoid)\n",
|
||||
" for i in range(4):\n",
|
||||
" q[i] = 0\n",
|
||||
" r[i] = dividend[i]\n",
|
||||
" return\n",
|
||||
"\n",
|
||||
" zero256(q)\n",
|
||||
" zero256(r)\n",
|
||||
" # iterate bits from highest (255) down to 0\n",
|
||||
" for i in range(255, -1, -1):\n",
|
||||
" # left shift r by 1\n",
|
||||
" shl1_256_inplace(r)\n",
|
||||
" # bring in bit i of dividend\n",
|
||||
" if get_bit256(dividend, i):\n",
|
||||
" r[0] |= 1 # set lsb\n",
|
||||
" # if r >= divisor then r -= divisor and set q[i] = 1\n",
|
||||
" if cmp_ge256(r, divisor):\n",
|
||||
" # r = r - divisor\n",
|
||||
" tmp = cuda.local.array(4, dtype=np.uint64)\n",
|
||||
" sub256(r, divisor, tmp)\n",
|
||||
" for k in range(4):\n",
|
||||
" r[k] = tmp[k]\n",
|
||||
" # set q bit i\n",
|
||||
" w = i // 64\n",
|
||||
" b = i % 64\n",
|
||||
" q[w] |= (1 << b)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"collapsed": true
|
||||
},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.6.10"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||