Module Stan_math_backend.Lower_expr

Lowering of Stan expressions to C++

val stan_namespace_qualify : string -> string
val fn_renames : string Core.String.Map.t
val constraint_to_string : 'a Middle.Transformation.t -> string option
val functor_suffix : string
val reduce_sum_functor_suffix : string
val variadic_functor_suffix : int -> string
type variadic =
  1. | FixedArgs
  2. | ReduceSum
  3. | VariadicHOF of int
val compare_variadic : variadic -> variadic -> int
val hash_fold_variadic : Ppx_hash_lib.Std.Hash.state -> variadic -> Ppx_hash_lib.Std.Hash.state
val hash_variadic : variadic -> Ppx_hash_lib.Std.Hash.hash_value
val functor_type : string Core.Hashtbl.key -> variadic
val functor_suffix_select : variadic -> string
val is_scalar : Middle.Expr.Typed.t -> bool
val is_matrix : Middle.Expr.Typed.t -> bool

Used to determine if operator/ should be mdivide_right() or divide()

val is_row_vector : Middle.Expr.Typed.t -> bool
val first : 'a list -> 'b
val second : 'a list -> 'b
val default_multiplier : int
val default_offset : int
val transform_args : Middle__Expr.Typed.Meta.t Middle__Expr.Fixed.t Middle.Transformation.t -> Middle__Expr.Typed.Meta.t Middle__Expr.Fixed.t Base__List.t
val is_single_index : 'a Middle.Index.t -> bool
val dont_need_range_check : 'a Middle.Expr.Fixed.t Middle.Index.t -> bool
val suffix_args : 'a Middle.Fun_kind.suffix -> string list
val stantype_prim : Middle.UnsizedType.t -> Cpp.type_
val templates : bool -> bool Middle.Fun_kind.suffix -> Cpp.type_ list
val deserializer : Cpp.expr
val minus_one : Stan_math_backend__Cpp.expr -> Cpp.expr
val plus_one : Stan_math_backend__Cpp.expr -> Cpp.expr
val lower_type : ?mem_pattern:Middle.Mem_pattern.t -> Middle.UnsizedType.t -> Cpp.type_ -> Cpp.type_
val lower_unsizedtype_local : ?mem_pattern:Middle.Mem_pattern.t -> Middle.UnsizedType.autodifftype -> Middle.UnsizedType.t -> Cpp.type_
val lower_binary_fun : string -> Middle.Expr.Typed.Meta.t Middle.Expr.Fixed.t Base__List.t -> Cpp.expr
val vector_literal : ?column:bool -> Cpp.type_ -> Middle.Expr.Typed.Meta.t Middle.Expr.Fixed.t Base__List.t -> Cpp.expr
val lower_binary_op : Cpp.operator -> string -> Middle.Expr.Typed.Meta.t Middle.Expr.Fixed.t Base__List.t -> Cpp.expr
val lower_operator_app : Middle.Operator.t -> Middle.Expr.Typed.Meta.t Middle.Expr.Fixed.t Base__List.t -> Cpp.expr
val lower_misc_special_math_app : Core.String.Map.Key.t -> Middle.Mem_pattern.t -> Middle.UnsizedType.returntype option -> (Middle.Expr.Typed.Meta.t Middle.Expr.Fixed.t Base__List.t -> Cpp.expr) option
val lower_functionals : string Core.Hashtbl.key Core.Hashtbl.key -> bool Middle.Fun_kind.suffix -> Middle.Expr.Typed.Meta.t Middle.Expr.Fixed.t Base__List.t -> Middle.Mem_pattern.t -> (Middle.Expr.Typed.Meta.t Middle.Expr.Fixed.t Base__List.t -> Cpp.expr) option
val lower_fun_app : bool Middle.Fun_kind.suffix -> Core.String.Map.Key.t -> Middle.Expr.Typed.Meta.t Middle.Expr.Fixed.t Base__List.t -> Middle.Mem_pattern.t -> Middle.UnsizedType.returntype option -> Cpp.expr
val lower_user_defined_fun : string -> bool Middle.Fun_kind.suffix -> Middle.Expr.Typed.Meta.t Middle.Expr.Fixed.t Base__List.t -> Cpp.expr
val lower_indexed : Middle.Expr.Typed.t -> Middle.Expr.Typed.t Middle.Index.t list -> string -> Cpp.expr
val lower_indexed_simple : Cpp.expr -> Middle.Expr.Typed.t Middle.Index.t Core__.Import.list -> Cpp.expr
val lower_expr : ?promote_reals:bool -> Middle.Expr.Typed.t -> Cpp.expr
val lower_exprs : ?promote_reals:bool -> Middle.Expr.Typed.Meta.t Middle.Expr.Fixed.t Base__List.t -> Cpp.expr Base__List.t
module Testing : sig ... end