cairo-lang-runner 2.18.0

Basic cairo runner.
Documentation
//! > Test profiling info of circuit.sierra

//! > test_runner_name
test_profiling

//! > cairo_code
use core::circuit::{
    AddInputResultTrait, AddMod, CircuitElement, CircuitInput, CircuitInputs, CircuitModulus,
    CircuitOutputsTrait, EvalCircuitResult, EvalCircuitTrait, MulMod, RangeCheck96, circuit_add,
    circuit_inverse, circuit_mul, circuit_sub, u384, u96,
};

pub fn eval_circuit() -> u384 {
    let in1 = CircuitElement::<CircuitInput<0>> {};
    let in2 = CircuitElement::<CircuitInput<1>> {};
    let add = circuit_add(in1, in2);
    let inv = circuit_inverse(add);
    let sub = circuit_sub(inv, in2);
    let mul = circuit_mul(inv, sub);

    let modulus = TryInto::<_, CircuitModulus>::try_into([7, 0, 0, 0]).unwrap();
    let outputs = (mul, add, inv)
        .new_inputs()
        .next([3, 0, 0, 0])
        .next([6, 0, 0, 0])
        .done()
        .eval(modulus)
        .unwrap();

    outputs.get_output(mul)
}

//! > function_name
eval_circuit

//! > expected_profiling_info
Weight by sierra statement:
  statement 52: 22 (eval_circuit<Circuit<(core::circuit::MulModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::SubModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::CircuitInput::<1>>>, core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>, core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>)>>([0], [1], [35], [33], [9], [38], [39]) { fallthrough([40], [41], [42]) 82([43], [44], [45], [46]) })
  statement 21: 7 (add_circuit_input<Circuit<(core::circuit::MulModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::SubModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::CircuitInput::<1>>>, core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>, core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>)>>([11], [20]) { fallthrough([21]) 33([22]) })
  statement 43: 7 (add_circuit_input<Circuit<(core::circuit::MulModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::SubModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::CircuitInput::<1>>>, core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>, core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>)>>([22], [32]) { fallthrough([33]) 114([34]) })
  statement 7: 6 (try_into_circuit_modulus([8]) { fallthrough([9]) 124() })
  statement 45: 5 (get_circuit_descriptor<Circuit<(core::circuit::MulModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::SubModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::CircuitInput::<1>>>, core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>, core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>)>>() -> ([35]))
  statement 56: 5 (get_circuit_output<Circuit<(core::circuit::MulModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::SubModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::CircuitInput::<1>>>, core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>, core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>)>, core::circuit::MulModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::SubModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::CircuitInput::<1>>>>([42]) -> ([47], [48]))
  statement 80: 5 (store_temp<core::panics::PanicResult::<(core::circuit::u384,)>>([59]) -> ([59]))
  statement 6: 4 (store_temp<Tuple<BoundedInt<0, 79228162514264337593543950335>, BoundedInt<0, 79228162514264337593543950335>, BoundedInt<0, 79228162514264337593543950335>, BoundedInt<0, 79228162514264337593543950335>>>([8]) -> ([8]))
  statement 20: 4 (store_temp<Tuple<U96Guarantee, U96Guarantee, U96Guarantee, U96Guarantee>>([20]) -> ([20]))
  statement 42: 4 (store_temp<Tuple<U96Guarantee, U96Guarantee, U96Guarantee, U96Guarantee>>([32]) -> ([32]))
  statement 19: 2 (store_temp<CircuitInputAccumulator<Circuit<(core::circuit::MulModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::SubModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::CircuitInput::<1>>>, core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>, core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>)>>>([11]) -> ([11]))
  statement 57: 2 (u96_limbs_less_than_guarantee_verify<4>([48]) { fallthrough([49]) 72([50]) })
  statement 59: 2 (u96_limbs_less_than_guarantee_verify<3>([49]) { fallthrough([51]) 69([52]) })
  statement 61: 2 (u96_limbs_less_than_guarantee_verify<2>([51]) { fallthrough([53]) 66([54]) })
  statement 50: 1 (store_temp<BoundedInt<0, 0>>([38]) -> ([38]))
  statement 51: 1 (store_temp<BoundedInt<1, 1>>([39]) -> ([39]))
  statement 53: 1 (branch_align() -> ())
  statement 64: 1 (store_temp<U96Guarantee>([55]) -> ([56]))
  statement 65: 1 (jump() { 74() })
  statement 74: 1 (u96_guarantee_verify([10], [56]) -> ([57]))
  statement 77: 1 (store_temp<AddMod>([40]) -> ([40]))
  statement 78: 1 (store_temp<MulMod>([41]) -> ([41]))
  statement 79: 1 (store_temp<RangeCheck96>([57]) -> ([57]))
  statement 81: 1 (return([40], [41], [57], [59]))
Weight by concrete libfunc:
  libfunc eval_circuit<Circuit<(core::circuit::MulModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::SubModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::CircuitInput::<1>>>, core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>, core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>)>>: 22
  libfunc add_circuit_input<Circuit<(core::circuit::MulModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::SubModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::CircuitInput::<1>>>, core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>, core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>)>>: 14
  libfunc store_temp<Tuple<U96Guarantee, U96Guarantee, U96Guarantee, U96Guarantee>>: 8
  libfunc try_into_circuit_modulus: 6
  libfunc get_circuit_descriptor<Circuit<(core::circuit::MulModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::SubModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::CircuitInput::<1>>>, core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>, core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>)>>: 5
  libfunc get_circuit_output<Circuit<(core::circuit::MulModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::SubModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::CircuitInput::<1>>>, core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>, core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>)>, core::circuit::MulModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::SubModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::CircuitInput::<1>>>>: 5
  libfunc store_temp<core::panics::PanicResult::<(core::circuit::u384,)>>: 5
  libfunc store_temp<Tuple<BoundedInt<0, 79228162514264337593543950335>, BoundedInt<0, 79228162514264337593543950335>, BoundedInt<0, 79228162514264337593543950335>, BoundedInt<0, 79228162514264337593543950335>>>: 4
  libfunc store_temp<CircuitInputAccumulator<Circuit<(core::circuit::MulModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::SubModGate::<core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>, core::circuit::CircuitInput::<1>>>, core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>, core::circuit::InverseGate::<core::circuit::AddModGate::<core::circuit::CircuitInput::<0>, core::circuit::CircuitInput::<1>>>)>>>: 2
  libfunc u96_limbs_less_than_guarantee_verify<2>: 2
  libfunc u96_limbs_less_than_guarantee_verify<3>: 2
  libfunc u96_limbs_less_than_guarantee_verify<4>: 2
  libfunc branch_align: 1
  libfunc jump: 1
  libfunc store_temp<AddMod>: 1
  libfunc store_temp<BoundedInt<0, 0>>: 1
  libfunc store_temp<BoundedInt<1, 1>>: 1
  libfunc store_temp<MulMod>: 1
  libfunc store_temp<RangeCheck96>: 1
  libfunc store_temp<U96Guarantee>: 1
  libfunc u96_guarantee_verify: 1
  return: 1
Weight by generic libfunc:
  libfunc store_temp: 25
  libfunc eval_circuit: 22
  libfunc add_circuit_input: 14
  libfunc try_into_circuit_modulus: 6
  libfunc u96_limbs_less_than_guarantee_verify: 6
  libfunc get_circuit_descriptor: 5
  libfunc get_circuit_output: 5
  libfunc branch_align: 1
  libfunc jump: 1
  libfunc u96_guarantee_verify: 1
  return: 1
Weight by user function (inc. generated):
  function test::eval_circuit: 87
Weight by original user function (exc. generated):
  function test::eval_circuit: 87
Weight by Cairo function:
  function core::circuit::EvalCircuitImpl::eval_ex: 25
  function core::circuit::AddInputResultImpl::next: 24
  function core::circuit::U384TryIntoCircuitModulus::try_into: 10
  function lib.cairo::eval_circuit: 9
  function core::circuit::IntoU96GuaranteeImplByNext::into_u96_guarantee: 6
  function core::circuit::CircuitOutputsImpl::get_output: 5
  function core::circuit::EvalCircuitImpl::eval: 5
  function core::circuit::IntoU96GuaranteeImplFinal::into_u96_guarantee: 2
  function core::circuit::DestructU96Guarantee::destruct: 1
Weight by Sierra stack trace:
  test::eval_circuit: 87
Weight by Cairo stack trace:
  test::eval_circuit: 87