package octez-libs
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
sha256=55ea1fb8bb3273a7fc270ca8f650d45c56449665619482aad9bc12f3ea736b7e
    
    
  sha512=fec850fc2d17d7490bbabd5147d62aad13b3aaed8774270f8a38ab419670ed03e0fd30cf8642a97984eca5c2446726fe590ad99c015f7ec50919dc7652f25053
    
    
  doc/octez-libs.plompiler/Plompiler/Lib/Num/index.html
Module Lib.NumSource
include module type of struct include C.Num end
type scalar = C.scalarElement of the native scalar field.
type 'a repr = 'a C.reprRepresentation of values.
type 'a t = 'a C.tPlompiler program.
val constant : Csir.Scalar.t -> scalar repr tconstant s returns the constant value s.
range_check ~nb_bits s asserts that s is in the range [0, 2^nb_bits).
val custom : 
  ?qc:Csir.Scalar.t ->
  ?ql:Csir.Scalar.t ->
  ?qr:Csir.Scalar.t ->
  ?qo:Csir.Scalar.t ->
  ?qm:Csir.Scalar.t ->
  ?qx2b:Csir.Scalar.t ->
  ?qx5a:Csir.Scalar.t ->
  scalar repr ->
  scalar repr ->
  scalar repr tcustom ~qc ~ql ~qr ~qo ~qm ~qx2b ~qx5a a b returns a value c for which the following arithmetic constraint is added: qc + ql * a + qr * b + qo * c + qm * a * b + qx2b * b^2 + qx5a * a^5 = 0
Manually adding constraints can be error-prone. Handle with care.
val assert_custom : 
  ?qc:Csir.Scalar.t ->
  ?ql:Csir.Scalar.t ->
  ?qr:Csir.Scalar.t ->
  ?qo:Csir.Scalar.t ->
  ?qm:Csir.Scalar.t ->
  scalar repr ->
  scalar repr ->
  scalar repr ->
  unit repr tassert_custom ~qc ~ql ~qr ~qo ~qm a b c asserts the following arithmetic constraint: qc + ql * a + qr * b + qo * c + qm * a * b + qx2b * b^2 + qx5a * a^5 = 0
Manually adding constraints can be error-prone. Handle with care.
val add : 
  ?qc:Csir.Scalar.t ->
  ?ql:Csir.Scalar.t ->
  ?qr:Csir.Scalar.t ->
  scalar repr ->
  scalar repr ->
  scalar repr tadd ~qc ~ql ~qr a b returns a value c such that ql * a + qr * b + qc = c.
val add_constant : 
  ?ql:Csir.Scalar.t ->
  Csir.Scalar.t ->
  scalar repr ->
  scalar repr tadd_constant ~ql k a returns a value c such that ql * a + k = c.
mul ~qm a b returns a value c such that qm * a * b = c.
div ~den_coeff a b asserts b is non-zero and returns a value c such that a / (b * den_coeff) = c.
is_zero a returns a boolean c representing whether a is zero.
val add_list : 
  ?qc:Csir.Scalar.t ->
  ?coeffs:Csir.Scalar.t list ->
  C.Num.scalar list repr ->
  C.Num.scalar C.Num.repr tval mul_by_constant : 
  Csir.Scalar.t ->
  C.Num.scalar C.Num.repr ->
  C.Num.scalar C.Num.repr C.Num.tval geq : 
  (C.Num.scalar C.Num.repr * Z.t) ->
  (C.Num.scalar C.Num.repr * Z.t) ->
  bool Bool.repr t