Equations
- FloatArray.instInhabited = { default := FloatArray.empty }
Equations
- FloatArray.instEmptyCollection = { emptyCollection := FloatArray.empty }
@[extern lean_float_array_push]
Equations
- { data := ds }.push x✝ = { data := ds.push x✝ }
Instances For
Instances For
instance
FloatArray.instGetElemNatFloatLtSize :
GetElem FloatArray Nat Float fun (xs : FloatArray) (i : Nat) => i < xs.size
Equations
- FloatArray.instGetElemNatFloatLtSize = { getElem := fun (xs : FloatArray) (i : Nat) (h : i < xs.size) => xs.get i h }
instance
FloatArray.instGetElemUSizeFloatLtNatValValSize :
GetElem FloatArray USize Float fun (xs : FloatArray) (i : USize) => ↑i.val < xs.size
Equations
- FloatArray.instGetElemUSizeFloatLtNatValValSize = { getElem := fun (xs : FloatArray) (i : USize) (h : ↑i.val < xs.size) => xs.uget i h }
@[extern lean_float_array_uset]
def
FloatArray.uset
(a : FloatArray)
(i : USize)
:
Float → (h : autoParam (i.toNat < a.size) _auto✝) → FloatArray
Equations
- { data := ds }.uset x✝² x✝¹ x✝ = { data := ds.uset x✝² x✝¹ x✝ }
Instances For
@[extern lean_float_array_fset]
def
FloatArray.set
(ds : FloatArray)
(i : Nat)
:
Float → (h : autoParam (i < ds.size) _auto✝) → FloatArray
Equations
- { data := ds }.set x✝² x✝¹ x✝ = { data := ds.set x✝² x✝¹ x✝ }
Instances For
@[extern lean_float_array_set]
Equations
- { data := ds }.set! x✝¹ x✝ = { data := ds.set! x✝¹ x✝ }
Instances For
Equations
- ds.toList = FloatArray.toList.loop ds 0 []
Instances For
@[inline]
unsafe def
FloatArray.forInUnsafe
{β : Type v}
{m : Type v → Type w}
[Monad m]
(as : FloatArray)
(b : β)
(f : Float → β → m (ForInStep β))
:
m β
We claim this unsafe implementation is correct because an array cannot have more than usizeSz
elements in our runtime.
This is similar to the Array
version.
Equations
- as.forInUnsafe b f = FloatArray.forInUnsafe.loop as f as.usize 0 b
Instances For
@[specialize #[]]
unsafe def
FloatArray.forInUnsafe.loop
{β : Type v}
{m : Type v → Type w}
[Monad m]
(as : FloatArray)
(f : Float → β → m (ForInStep β))
(sz i : USize)
(b : β)
:
m β
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[implemented_by FloatArray.forInUnsafe]
def
FloatArray.forIn
{β : Type v}
{m : Type v → Type w}
[Monad m]
(as : FloatArray)
(b : β)
(f : Float → β → m (ForInStep β))
:
m β
Reference implementation for forIn
Equations
- as.forIn b f = FloatArray.forIn.loop as f as.size ⋯ b
Instances For
def
FloatArray.forIn.loop
{β : Type v}
{m : Type v → Type w}
[Monad m]
(as : FloatArray)
(f : Float → β → m (ForInStep β))
(i : Nat)
(h : i ≤ as.size)
(b : β)
:
m β
Equations
- One or more equations did not get rendered due to their size.
- FloatArray.forIn.loop as f 0 x b = pure b
Instances For
@[inline]
unsafe def
FloatArray.foldlMUnsafe
{β : Type v}
{m : Type v → Type w}
[Monad m]
(f : β → Float → m β)
(init : β)
(as : FloatArray)
(start : Nat := 0)
(stop : Nat := as.size)
:
m β
See comment at forInUnsafe
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[specialize #[]]
unsafe def
FloatArray.foldlMUnsafe.fold
{β : Type v}
{m : Type v → Type w}
[Monad m]
(f : β → Float → m β)
(as : FloatArray)
(i stop : USize)
(b : β)
:
m β
Equations
- FloatArray.foldlMUnsafe.fold f as i stop b = if (i == stop) = true then pure b else do let __do_lift ← f b (as.uget i ⋯) FloatArray.foldlMUnsafe.fold f as (i + 1) stop __do_lift
Instances For
@[implemented_by FloatArray.foldlMUnsafe]
def
FloatArray.foldlM
{β : Type v}
{m : Type v → Type w}
[Monad m]
(f : β → Float → m β)
(init : β)
(as : FloatArray)
(start : Nat := 0)
(stop : Nat := as.size)
:
m β
Reference implementation for foldlM
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[inline]
def
FloatArray.foldl
{β : Type v}
(f : β → Float → β)
(init : β)
(as : FloatArray)
(start : Nat := 0)
(stop : Nat := as.size)
:
β
Equations
- FloatArray.foldl f init as start stop = (FloatArray.foldlM f init as start stop).run
Instances For
Equations
- ds.toFloatArray = List.toFloatArray.loop ds FloatArray.empty
Instances For
Equations
- List.toFloatArray.loop [] x✝ = x✝
- List.toFloatArray.loop (b :: ds) x✝ = List.toFloatArray.loop ds (x✝.push b)
Instances For
Equations
- instToStringFloatArray = { toString := fun (ds : FloatArray) => ds.toList.toString }