halo2/rustdoc/latest/halo2_gadgets/ecc/trait.EccInstructions.html

191 lines
56 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The set of circuit instructions required to use the ECC gadgets."><title>EccInstructions in halo2_gadgets::ecc - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-fa3bb1812debf86c.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="halo2_gadgets" data-themes="" data-resource-suffix="" data-rustdoc-version="1.75.0-nightly (2bbb61989 2023-10-04)" data-channel="nightly" data-search-js="search-8be46b629f5f14a8.js" data-settings-js="settings-74424d7eec62a23e.js" ><script src="../../static.files/storage-fec3eaa3851e447d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c5bd66d33317d69f.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-5d8b3c7633ad77ba.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.10.0/dist/katex.min.css" integrity="sha384-9eLZqc9ds8eNjO3TmqPeYcDj8n+Qfa4nuSiGYa6DjLNcv9BtN69ZIulL9+8CqC9Y" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/katex@0.10.0/dist/katex.min.js" integrity="sha384-K3vbOmF2BtaVai+Qk37uypf7VrgBubhQreNQe9aGsz9lB63dIFiQVlJbr92dw2Lx" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/katex@0.10.0/dist/contrib/auto-render.min.js" integrity="sha384-kmZOZB5ObwgQnS/DuDg6TScgOiWWBiVt0plIRkZCmE6rDZGrEOQeHM5PcHi+nyqe" crossorigin="anonymous"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
renderMathInElement(document.body, {
delimiters: [
{left: "$$", right: "$$", display: true},
{left: "\\(", right: "\\)", display: false},
{left: "$", right: "$", display: false},
{left: "\\[", right: "\\]", display: true}
]
});
});
</script>
</head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="logo-container" href="../../halo2_gadgets/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a></nav><nav class="sidebar"><a class="logo-container" href="../../halo2_gadgets/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2 class="location"><a href="#">EccInstructions</a></h2><div class="sidebar-elems"><section><h3><a href="#required-associated-types">Required Associated Types</a></h3><ul class="block"><li><a href="#associatedtype.FixedPoints">FixedPoints</a></li><li><a href="#associatedtype.NonIdentityPoint">NonIdentityPoint</a></li><li><a href="#associatedtype.Point">Point</a></li><li><a href="#associatedtype.ScalarFixed">ScalarFixed</a></li><li><a href="#associatedtype.ScalarFixedShort">ScalarFixedShort</a></li><li><a href="#associatedtype.ScalarVar">ScalarVar</a></li><li><a href="#associatedtype.X">X</a></li></ul><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.add">add</a></li><li><a href="#tymethod.add_incomplete">add_incomplete</a></li><li><a href="#tymethod.constrain_equal">constrain_equal</a></li><li><a href="#tymethod.extract_p">extract_p</a></li><li><a href="#tymethod.mul">mul</a></li><li><a href="#tymethod.mul_fixed">mul_fixed</a></li><li><a href="#tymethod.mul_fixed_base_field_elem">mul_fixed_base_field_elem</a></li><li><a href="#tymethod.mul_fixed_short">mul_fixed_short</a></li><li><a href="#tymethod.scalar_fixed_from_signed_short">scalar_fixed_from_signed_short</a></li><li><a href="#tymethod.witness_point">witness_point</a></li><li><a href="#tymethod.witness_point_non_id">witness_point_non_id</a></li><li><a href="#tymethod.witness_scalar_fixed">witness_scalar_fixed</a></li><li><a href="#tymethod.witness_scalar_var">witness_scalar_var</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In halo2_gadgets::ecc</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Trait <a href="../index.html">halo2_gadgets</a>::<wbr><a href="index.html">ecc</a>::<wbr><a class="trait" href="#">EccInstructions</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/halo2_gadgets/ecc.rs.html#16-148">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub trait EccInstructions&lt;C: CurveAffine&gt;: <a class="trait" href="../../halo2_proofs/circuit/trait.Chip.html" title="trait halo2_proofs::circuit::Chip">Chip</a>&lt;C::Base&gt; + <a class="trait" href="../utilities/trait.UtilitiesInstructions.html" title="trait halo2_gadgets::utilities::UtilitiesInstructions">UtilitiesInstructions</a>&lt;C::Base&gt; + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> {
type <a href="#associatedtype.ScalarVar" class="associatedtype">ScalarVar</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>;
type <a href="#associatedtype.ScalarFixed" class="associatedtype">ScalarFixed</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>;
type <a href="#associatedtype.ScalarFixedShort" class="associatedtype">ScalarFixedShort</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>;
type <a href="#associatedtype.Point" class="associatedtype">Point</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.NonIdentityPoint" title="type halo2_gadgets::ecc::EccInstructions::NonIdentityPoint">NonIdentityPoint</a>&gt; + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>;
type <a href="#associatedtype.NonIdentityPoint" class="associatedtype">NonIdentityPoint</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>;
type <a href="#associatedtype.X" class="associatedtype">X</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>;
type <a href="#associatedtype.FixedPoints" class="associatedtype">FixedPoints</a>: <a class="trait" href="trait.FixedPoints.html" title="trait halo2_gadgets::ecc::FixedPoints">FixedPoints</a>&lt;C&gt;;
<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 13 methods</span></summary> // Required methods
fn <a href="#tymethod.constrain_equal" class="fn">constrain_equal</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
a: &amp;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>,
b: &amp;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.witness_point" class="fn">witness_point</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
value: <a class="struct" href="../../halo2_proofs/circuit/value/struct.Value.html" title="struct halo2_proofs::circuit::value::Value">Value</a>&lt;C&gt;
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>, <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.witness_point_non_id" class="fn">witness_point_non_id</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
value: <a class="struct" href="../../halo2_proofs/circuit/value/struct.Value.html" title="struct halo2_proofs::circuit::value::Value">Value</a>&lt;C&gt;
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.NonIdentityPoint" title="type halo2_gadgets::ecc::EccInstructions::NonIdentityPoint">NonIdentityPoint</a>, <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.witness_scalar_var" class="fn">witness_scalar_var</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
value: <a class="struct" href="../../halo2_proofs/circuit/value/struct.Value.html" title="struct halo2_proofs::circuit::value::Value">Value</a>&lt;C::Scalar&gt;
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.ScalarVar" title="type halo2_gadgets::ecc::EccInstructions::ScalarVar">ScalarVar</a>, <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.witness_scalar_fixed" class="fn">witness_scalar_fixed</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
value: <a class="struct" href="../../halo2_proofs/circuit/value/struct.Value.html" title="struct halo2_proofs::circuit::value::Value">Value</a>&lt;C::Scalar&gt;
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.ScalarFixed" title="type halo2_gadgets::ecc::EccInstructions::ScalarFixed">ScalarFixed</a>, <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.scalar_fixed_from_signed_short" class="fn">scalar_fixed_from_signed_short</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
magnitude_sign: (Self::<a class="associatedtype" href="../utilities/trait.UtilitiesInstructions.html#associatedtype.Var" title="type halo2_gadgets::utilities::UtilitiesInstructions::Var">Var</a>, Self::<a class="associatedtype" href="../utilities/trait.UtilitiesInstructions.html#associatedtype.Var" title="type halo2_gadgets::utilities::UtilitiesInstructions::Var">Var</a>)
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.ScalarFixedShort" title="type halo2_gadgets::ecc::EccInstructions::ScalarFixedShort">ScalarFixedShort</a>, <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.extract_p" class="fn">extract_p</a>&lt;Point: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>&gt; + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>&gt;(point: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Point</a>) -&gt; Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.X" title="type halo2_gadgets::ecc::EccInstructions::X">X</a>;
<span class="item-spacer"></span> fn <a href="#tymethod.add_incomplete" class="fn">add_incomplete</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
a: &amp;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.NonIdentityPoint" title="type halo2_gadgets::ecc::EccInstructions::NonIdentityPoint">NonIdentityPoint</a>,
b: &amp;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.NonIdentityPoint" title="type halo2_gadgets::ecc::EccInstructions::NonIdentityPoint">NonIdentityPoint</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.NonIdentityPoint" title="type halo2_gadgets::ecc::EccInstructions::NonIdentityPoint">NonIdentityPoint</a>, <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.add" class="fn">add</a>&lt;A: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>&gt; + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>&gt; + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>&gt;(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
a: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;A</a>,
b: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;B</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>, <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.mul" class="fn">mul</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
scalar: &amp;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.ScalarVar" title="type halo2_gadgets::ecc::EccInstructions::ScalarVar">ScalarVar</a>,
base: &amp;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.NonIdentityPoint" title="type halo2_gadgets::ecc::EccInstructions::NonIdentityPoint">NonIdentityPoint</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>, Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.ScalarVar" title="type halo2_gadgets::ecc::EccInstructions::ScalarVar">ScalarVar</a>), <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.mul_fixed" class="fn">mul_fixed</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
scalar: &amp;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.ScalarFixed" title="type halo2_gadgets::ecc::EccInstructions::ScalarFixed">ScalarFixed</a>,
base: &amp;&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.FixedPoints" title="type halo2_gadgets::ecc::EccInstructions::FixedPoints">FixedPoints</a> as <a class="trait" href="trait.FixedPoints.html" title="trait halo2_gadgets::ecc::FixedPoints">FixedPoints</a>&lt;C&gt;&gt;::<a class="associatedtype" href="trait.FixedPoints.html#associatedtype.FullScalar" title="type halo2_gadgets::ecc::FixedPoints::FullScalar">FullScalar</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>, Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.ScalarFixed" title="type halo2_gadgets::ecc::EccInstructions::ScalarFixed">ScalarFixed</a>), <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.mul_fixed_short" class="fn">mul_fixed_short</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
scalar: &amp;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.ScalarFixedShort" title="type halo2_gadgets::ecc::EccInstructions::ScalarFixedShort">ScalarFixedShort</a>,
base: &amp;&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.FixedPoints" title="type halo2_gadgets::ecc::EccInstructions::FixedPoints">FixedPoints</a> as <a class="trait" href="trait.FixedPoints.html" title="trait halo2_gadgets::ecc::FixedPoints">FixedPoints</a>&lt;C&gt;&gt;::<a class="associatedtype" href="trait.FixedPoints.html#associatedtype.ShortScalar" title="type halo2_gadgets::ecc::FixedPoints::ShortScalar">ShortScalar</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>, Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.ScalarFixedShort" title="type halo2_gadgets::ecc::EccInstructions::ScalarFixedShort">ScalarFixedShort</a>), <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.mul_fixed_base_field_elem" class="fn">mul_fixed_base_field_elem</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
base_field_elem: Self::<a class="associatedtype" href="../utilities/trait.UtilitiesInstructions.html#associatedtype.Var" title="type halo2_gadgets::utilities::UtilitiesInstructions::Var">Var</a>,
base: &amp;&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.FixedPoints" title="type halo2_gadgets::ecc::EccInstructions::FixedPoints">FixedPoints</a> as <a class="trait" href="trait.FixedPoints.html" title="trait halo2_gadgets::ecc::FixedPoints">FixedPoints</a>&lt;C&gt;&gt;::<a class="associatedtype" href="trait.FixedPoints.html#associatedtype.Base" title="type halo2_gadgets::ecc::FixedPoints::Base">Base</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>, <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;;
</details>}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The set of circuit instructions required to use the ECC gadgets.</p>
</div></details><h2 id="required-associated-types" class="small-section-header">Required Associated Types<a href="#required-associated-types" class="anchor">§</a></h2><div class="methods"><details class="toggle" open><summary><section id="associatedtype.ScalarVar" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#24">source</a><h4 class="code-header">type <a href="#associatedtype.ScalarVar" class="associatedtype">ScalarVar</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a></h4></section></summary><div class="docblock"><p>Variable representing a scalar used in variable-base scalar mul.</p>
<p>This type is treated as a full-width scalar. However, if <code>Self</code> implements
<a href="trait.BaseFitsInScalarInstructions.html" title="trait halo2_gadgets::ecc::BaseFitsInScalarInstructions"><code>BaseFitsInScalarInstructions</code></a> then this may also be constructed from an element
of the base field.</p>
</div></details><details class="toggle" open><summary><section id="associatedtype.ScalarFixed" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#27">source</a><h4 class="code-header">type <a href="#associatedtype.ScalarFixed" class="associatedtype">ScalarFixed</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a></h4></section></summary><div class="docblock"><p>Variable representing a full-width element of the elliptic curves
scalar field, to be used for fixed-base scalar mul.</p>
</div></details><details class="toggle" open><summary><section id="associatedtype.ScalarFixedShort" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#32">source</a><h4 class="code-header">type <a href="#associatedtype.ScalarFixedShort" class="associatedtype">ScalarFixedShort</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a></h4></section></summary><div class="docblock"><p>Variable representing a signed short element of the elliptic curves
scalar field, to be used for fixed-base scalar mul.</p>
<p>A <code>ScalarFixedShort</code> must be in the range [-(2^64 - 1), 2^64 - 1].</p>
</div></details><details class="toggle" open><summary><section id="associatedtype.Point" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#34">source</a><h4 class="code-header">type <a href="#associatedtype.Point" class="associatedtype">Point</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.NonIdentityPoint" title="type halo2_gadgets::ecc::EccInstructions::NonIdentityPoint">NonIdentityPoint</a>&gt; + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a></h4></section></summary><div class="docblock"><p>Variable representing an elliptic curve point.</p>
</div></details><details class="toggle" open><summary><section id="associatedtype.NonIdentityPoint" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#36">source</a><h4 class="code-header">type <a href="#associatedtype.NonIdentityPoint" class="associatedtype">NonIdentityPoint</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a></h4></section></summary><div class="docblock"><p>Variable representing a non-identity elliptic curve point.</p>
</div></details><details class="toggle" open><summary><section id="associatedtype.X" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#39">source</a><h4 class="code-header">type <a href="#associatedtype.X" class="associatedtype">X</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a></h4></section></summary><div class="docblock"><p>Variable representing the affine short Weierstrass x-coordinate of an
elliptic curve point.</p>
</div></details><details class="toggle" open><summary><section id="associatedtype.FixedPoints" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#44">source</a><h4 class="code-header">type <a href="#associatedtype.FixedPoints" class="associatedtype">FixedPoints</a>: <a class="trait" href="trait.FixedPoints.html" title="trait halo2_gadgets::ecc::FixedPoints">FixedPoints</a>&lt;C&gt;</h4></section></summary><div class="docblock"><p>Enumeration of the set of fixed bases to be used in scalar mul.
TODO: When associated consts can be used as const generics, introduce
<code>Self::NUM_WINDOWS</code>, <code>Self::NUM_WINDOWS_BASE_FIELD</code>, <code>Self::NUM_WINDOWS_SHORT</code>
and use them to differentiate <code>FixedPoints</code> types.</p>
</div></details></div><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.constrain_equal" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#47-52">source</a><h4 class="code-header">fn <a href="#tymethod.constrain_equal" class="fn">constrain_equal</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
a: &amp;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>,
b: &amp;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Constrains point <code>a</code> to be equal in value to point <code>b</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.witness_point" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#57-61">source</a><h4 class="code-header">fn <a href="#tymethod.witness_point" class="fn">witness_point</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
value: <a class="struct" href="../../halo2_proofs/circuit/value/struct.Value.html" title="struct halo2_proofs::circuit::value::Value">Value</a>&lt;C&gt;
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>, <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Witnesses the given point as a private input to the circuit.
This allows the point to be the identity, mapped to (0, 0) in
affine coordinates.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.witness_point_non_id" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#65-69">source</a><h4 class="code-header">fn <a href="#tymethod.witness_point_non_id" class="fn">witness_point_non_id</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
value: <a class="struct" href="../../halo2_proofs/circuit/value/struct.Value.html" title="struct halo2_proofs::circuit::value::Value">Value</a>&lt;C&gt;
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.NonIdentityPoint" title="type halo2_gadgets::ecc::EccInstructions::NonIdentityPoint">NonIdentityPoint</a>, <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Witnesses the given point as a private input to the circuit.
This returns an error if the point is the identity.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.witness_scalar_var" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#72-76">source</a><h4 class="code-header">fn <a href="#tymethod.witness_scalar_var" class="fn">witness_scalar_var</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
value: <a class="struct" href="../../halo2_proofs/circuit/value/struct.Value.html" title="struct halo2_proofs::circuit::value::Value">Value</a>&lt;C::Scalar&gt;
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.ScalarVar" title="type halo2_gadgets::ecc::EccInstructions::ScalarVar">ScalarVar</a>, <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Witnesses a full-width scalar to be used in variable-base multiplication.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.witness_scalar_fixed" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#79-83">source</a><h4 class="code-header">fn <a href="#tymethod.witness_scalar_fixed" class="fn">witness_scalar_fixed</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
value: <a class="struct" href="../../halo2_proofs/circuit/value/struct.Value.html" title="struct halo2_proofs::circuit::value::Value">Value</a>&lt;C::Scalar&gt;
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.ScalarFixed" title="type halo2_gadgets::ecc::EccInstructions::ScalarFixed">ScalarFixed</a>, <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Witnesses a full-width scalar to be used in fixed-base multiplication.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.scalar_fixed_from_signed_short" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#87-91">source</a><h4 class="code-header">fn <a href="#tymethod.scalar_fixed_from_signed_short" class="fn">scalar_fixed_from_signed_short</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
magnitude_sign: (Self::<a class="associatedtype" href="../utilities/trait.UtilitiesInstructions.html#associatedtype.Var" title="type halo2_gadgets::utilities::UtilitiesInstructions::Var">Var</a>, Self::<a class="associatedtype" href="../utilities/trait.UtilitiesInstructions.html#associatedtype.Var" title="type halo2_gadgets::utilities::UtilitiesInstructions::Var">Var</a>)
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.ScalarFixedShort" title="type halo2_gadgets::ecc::EccInstructions::ScalarFixedShort">ScalarFixedShort</a>, <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Converts a magnitude and sign that exists as variables in the circuit into a
signed short scalar to be used in fixed-base scalar multiplication.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.extract_p" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#94">source</a><h4 class="code-header">fn <a href="#tymethod.extract_p" class="fn">extract_p</a>&lt;Point: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>&gt; + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>&gt;(point: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Point</a>) -&gt; Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.X" title="type halo2_gadgets::ecc::EccInstructions::X">X</a></h4></section></summary><div class="docblock"><p>Extracts the x-coordinate of a point.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.add_incomplete" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#99-104">source</a><h4 class="code-header">fn <a href="#tymethod.add_incomplete" class="fn">add_incomplete</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
a: &amp;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.NonIdentityPoint" title="type halo2_gadgets::ecc::EccInstructions::NonIdentityPoint">NonIdentityPoint</a>,
b: &amp;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.NonIdentityPoint" title="type halo2_gadgets::ecc::EccInstructions::NonIdentityPoint">NonIdentityPoint</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.NonIdentityPoint" title="type halo2_gadgets::ecc::EccInstructions::NonIdentityPoint">NonIdentityPoint</a>, <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Performs incomplete point addition, returning <code>a + b</code>.</p>
<p>This returns an error in exceptional cases.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.add" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#107-112">source</a><h4 class="code-header">fn <a href="#tymethod.add" class="fn">add</a>&lt;A: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>&gt; + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>&gt; + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>&gt;(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
a: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;A</a>,
b: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;B</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>, <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Performs complete point addition, returning <code>a + b</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.mul" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#115-120">source</a><h4 class="code-header">fn <a href="#tymethod.mul" class="fn">mul</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
scalar: &amp;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.ScalarVar" title="type halo2_gadgets::ecc::EccInstructions::ScalarVar">ScalarVar</a>,
base: &amp;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.NonIdentityPoint" title="type halo2_gadgets::ecc::EccInstructions::NonIdentityPoint">NonIdentityPoint</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>, Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.ScalarVar" title="type halo2_gadgets::ecc::EccInstructions::ScalarVar">ScalarVar</a>), <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Performs variable-base scalar multiplication, returning <code>[scalar] base</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.mul_fixed" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#123-128">source</a><h4 class="code-header">fn <a href="#tymethod.mul_fixed" class="fn">mul_fixed</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
scalar: &amp;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.ScalarFixed" title="type halo2_gadgets::ecc::EccInstructions::ScalarFixed">ScalarFixed</a>,
base: &amp;&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.FixedPoints" title="type halo2_gadgets::ecc::EccInstructions::FixedPoints">FixedPoints</a> as <a class="trait" href="trait.FixedPoints.html" title="trait halo2_gadgets::ecc::FixedPoints">FixedPoints</a>&lt;C&gt;&gt;::<a class="associatedtype" href="trait.FixedPoints.html#associatedtype.FullScalar" title="type halo2_gadgets::ecc::FixedPoints::FullScalar">FullScalar</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>, Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.ScalarFixed" title="type halo2_gadgets::ecc::EccInstructions::ScalarFixed">ScalarFixed</a>), <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Performs fixed-base scalar multiplication using a full-width scalar, returning <code>[scalar] base</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.mul_fixed_short" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#132-137">source</a><h4 class="code-header">fn <a href="#tymethod.mul_fixed_short" class="fn">mul_fixed_short</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
scalar: &amp;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.ScalarFixedShort" title="type halo2_gadgets::ecc::EccInstructions::ScalarFixedShort">ScalarFixedShort</a>,
base: &amp;&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.FixedPoints" title="type halo2_gadgets::ecc::EccInstructions::FixedPoints">FixedPoints</a> as <a class="trait" href="trait.FixedPoints.html" title="trait halo2_gadgets::ecc::FixedPoints">FixedPoints</a>&lt;C&gt;&gt;::<a class="associatedtype" href="trait.FixedPoints.html#associatedtype.ShortScalar" title="type halo2_gadgets::ecc::FixedPoints::ShortScalar">ShortScalar</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>, Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.ScalarFixedShort" title="type halo2_gadgets::ecc::EccInstructions::ScalarFixedShort">ScalarFixedShort</a>), <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Performs fixed-base scalar multiplication using a short signed scalar, returning
<code>[scalar] base</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.mul_fixed_base_field_elem" class="method"><a class="src rightside" href="../../src/halo2_gadgets/ecc.rs.html#142-147">source</a><h4 class="code-header">fn <a href="#tymethod.mul_fixed_base_field_elem" class="fn">mul_fixed_base_field_elem</a>(
&amp;self,
layouter: &amp;mut impl <a class="trait" href="../../halo2_proofs/circuit/trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;C::Base&gt;,
base_field_elem: Self::<a class="associatedtype" href="../utilities/trait.UtilitiesInstructions.html#associatedtype.Var" title="type halo2_gadgets::utilities::UtilitiesInstructions::Var">Var</a>,
base: &amp;&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.FixedPoints" title="type halo2_gadgets::ecc::EccInstructions::FixedPoints">FixedPoints</a> as <a class="trait" href="trait.FixedPoints.html" title="trait halo2_gadgets::ecc::FixedPoints">FixedPoints</a>&lt;C&gt;&gt;::<a class="associatedtype" href="trait.FixedPoints.html#associatedtype.Base" title="type halo2_gadgets::ecc::FixedPoints::Base">Base</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.EccInstructions.html#associatedtype.Point" title="type halo2_gadgets::ecc::EccInstructions::Point">Point</a>, <a class="enum" href="../../halo2_proofs/plonk/error/enum.Error.html" title="enum halo2_proofs::plonk::error::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Performs fixed-base scalar multiplication using a base field element as the scalar.
In the current implementation, this base field element must be output from another
instruction.</p>
</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><details class="toggle implementors-toggle"><summary><section id="impl-EccInstructions%3CEpAffine%3E-for-EccChip%3CFixed%3E" class="impl"><a class="src rightside" href="../../src/halo2_gadgets/ecc/chip.rs.html#410-595">source</a><a href="#impl-EccInstructions%3CEpAffine%3E-for-EccChip%3CFixed%3E" class="anchor">§</a><h3 class="code-header">impl&lt;Fixed: <a class="trait" href="trait.FixedPoints.html" title="trait halo2_gadgets::ecc::FixedPoints">FixedPoints</a>&lt;Affine&gt;&gt; <a class="trait" href="trait.EccInstructions.html" title="trait halo2_gadgets::ecc::EccInstructions">EccInstructions</a>&lt;EpAffine&gt; for <a class="struct" href="chip/struct.EccChip.html" title="struct halo2_gadgets::ecc::chip::EccChip">EccChip</a>&lt;Fixed&gt;<span class="where fmt-newline">where
&lt;Fixed as <a class="trait" href="trait.FixedPoints.html" title="trait halo2_gadgets::ecc::FixedPoints">FixedPoints</a>&lt;Affine&gt;&gt;::<a class="associatedtype" href="trait.FixedPoints.html#associatedtype.Base" title="type halo2_gadgets::ecc::FixedPoints::Base">Base</a>: <a class="trait" href="chip/trait.FixedPoint.html" title="trait halo2_gadgets::ecc::chip::FixedPoint">FixedPoint</a>&lt;Affine, FixedScalarKind = <a class="enum" href="chip/enum.BaseFieldElem.html" title="enum halo2_gadgets::ecc::chip::BaseFieldElem">BaseFieldElem</a>&gt;,
&lt;Fixed as <a class="trait" href="trait.FixedPoints.html" title="trait halo2_gadgets::ecc::FixedPoints">FixedPoints</a>&lt;Affine&gt;&gt;::<a class="associatedtype" href="trait.FixedPoints.html#associatedtype.FullScalar" title="type halo2_gadgets::ecc::FixedPoints::FullScalar">FullScalar</a>: <a class="trait" href="chip/trait.FixedPoint.html" title="trait halo2_gadgets::ecc::chip::FixedPoint">FixedPoint</a>&lt;Affine, FixedScalarKind = <a class="enum" href="chip/enum.FullScalar.html" title="enum halo2_gadgets::ecc::chip::FullScalar">FullScalar</a>&gt;,
&lt;Fixed as <a class="trait" href="trait.FixedPoints.html" title="trait halo2_gadgets::ecc::FixedPoints">FixedPoints</a>&lt;Affine&gt;&gt;::<a class="associatedtype" href="trait.FixedPoints.html#associatedtype.ShortScalar" title="type halo2_gadgets::ecc::FixedPoints::ShortScalar">ShortScalar</a>: <a class="trait" href="chip/trait.FixedPoint.html" title="trait halo2_gadgets::ecc::chip::FixedPoint">FixedPoint</a>&lt;Affine, FixedScalarKind = <a class="enum" href="chip/enum.ShortScalar.html" title="enum halo2_gadgets::ecc::chip::ShortScalar">ShortScalar</a>&gt;,</span></h3></section></summary><div class="impl-items"><section id="associatedtype.ScalarFixed-1" class="associatedtype trait-impl"><a href="#associatedtype.ScalarFixed-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.ScalarFixed" class="associatedtype">ScalarFixed</a> = <a class="struct" href="chip/struct.EccScalarFixed.html" title="struct halo2_gadgets::ecc::chip::EccScalarFixed">EccScalarFixed</a></h4></section><section id="associatedtype.ScalarFixedShort-1" class="associatedtype trait-impl"><a href="#associatedtype.ScalarFixedShort-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.ScalarFixedShort" class="associatedtype">ScalarFixedShort</a> = <a class="struct" href="chip/struct.EccScalarFixedShort.html" title="struct halo2_gadgets::ecc::chip::EccScalarFixedShort">EccScalarFixedShort</a></h4></section><section id="associatedtype.ScalarVar-1" class="associatedtype trait-impl"><a href="#associatedtype.ScalarVar-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.ScalarVar" class="associatedtype">ScalarVar</a> = <a class="enum" href="chip/enum.ScalarVar.html" title="enum halo2_gadgets::ecc::chip::ScalarVar">ScalarVar</a></h4></section><section id="associatedtype.Point-1" class="associatedtype trait-impl"><a href="#associatedtype.Point-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Point" class="associatedtype">Point</a> = <a class="struct" href="chip/struct.EccPoint.html" title="struct halo2_gadgets::ecc::chip::EccPoint">EccPoint</a></h4></section><section id="associatedtype.NonIdentityPoint-1" class="associatedtype trait-impl"><a href="#associatedtype.NonIdentityPoint-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.NonIdentityPoint" class="associatedtype">NonIdentityPoint</a> = <a class="struct" href="chip/struct.NonIdentityEccPoint.html" title="struct halo2_gadgets::ecc::chip::NonIdentityEccPoint">NonIdentityEccPoint</a></h4></section><section id="associatedtype.X-1" class="associatedtype trait-impl"><a href="#associatedtype.X-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.X" class="associatedtype">X</a> = <a class="struct" href="../../halo2_proofs/circuit/struct.AssignedCell.html" title="struct halo2_proofs::circuit::AssignedCell">AssignedCell</a>&lt;Fp, Fp&gt;</h4></section><section id="associatedtype.FixedPoints-1" class="associatedtype trait-impl"><a href="#associatedtype.FixedPoints-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.FixedPoints" class="associatedtype">FixedPoints</a> = Fixed</h4></section></div></details></div><script src="../../implementors/halo2_gadgets/ecc/trait.EccInstructions.js" async></script></section></div></main></body></html>