Skip to content

Instantly share code, notes, and snippets.

@YingboMa
Last active January 15, 2020 03:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save YingboMa/c4780af403fe442be58a2fbcf97b62a5 to your computer and use it in GitHub Desktop.
Save YingboMa/c4780af403fe442be58a2fbcf97b62a5 to your computer and use it in GitHub Desktop.
│ ─ %-1 = invoke perform_step!(::OrdinaryDiffEq.ODEIntegrator{Tsit5,true,Array{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},1},Float64,DiffEqBase.NullParameters,Float
64,Float64,Float64,Array{Array{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},1},1},ODESolution{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},2,Array{
Array{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},1},1},Nothing,Nothing,Array{Float64,1},Array{Array{Array{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float
64,4},1},1},1},ODEProblem{Array{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},1},Tuple{Float64,Float64},true,DiffEqBase.NullParameters,ODEFunction{true,typeof(lorenz),L
inearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple
{}}},DiffEqBase.StandardODEProblem},Tsit5,OrdinaryDiffEq.InterpolationData{ODEFunction{true,typeof(lorenz),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothi
ng,Nothing,Nothing,Nothing,Nothing,Nothing},Array{Array{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},1},1},Array{Float64,1},Array{Array{Array{ForwardDiff.Dual{ForwardD
iff.Tag{var"#25#26",Float64},Float64,4},1},1},1},OrdinaryDiffEq.Tsit5Cache{Array{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},1},Array{ForwardDiff.Dual{ForwardDiff.Tag
{var"#25#26",Float64},Float64,4},1},Array{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},1},OrdinaryDiffEq.Tsit5ConstantCache{Float64,Float64}}},DiffEqBase.DEStats},ODEF
unction{true,typeof(lorenz),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},OrdinaryDiffEq.Tsit5Cache{Array{For
wardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},1},Array{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},1},Array{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#2
6",Float64},Float64,4},1},OrdinaryDiffEq.Tsit5ConstantCache{Float64,Float64}},OrdinaryDiffEq.DEOptions{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},ForwardDiff.Dual{Fo
rwardDiff.Tag{var"#25#26",Float64},Float64,4},Float64,Float64,typeof(DiffEqBase.ODE_DEFAULT_NORM),typeof(LinearAlgebra.opnorm),CallbackSet{Tuple{},Tuple{}},typeof(DiffEqBase.ODE_DEFAULT_I
SOUTOFDOMAIN),typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE),typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK),DataStructures.BinaryHeap{Float64,DataStructures.LessThan},DataStructures.BinaryHea
p{Float64,DataStructures.LessThan},Nothing,Nothing,Int64,Array{Float64,1},Array{Float64,1},Array{Float64,1}},Array{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},1},Forw
ardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},Nothing},::OrdinaryDiffEq.Tsit5Cache{Array{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},1},Array{ForwardDi
ff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},1},Array{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},1},OrdinaryDiffEq.Tsit5ConstantCache{Float64,Float64}},::
Bool)::Core.Compiler.Const(nothing, false)
CodeInfo(
1 ─ %1 = Base.getfield(integrator, :dt)::Float64
│ %2 = Base.getfield(integrator, :uprev)::Array{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},1}
│ %3 = Base.getfield(cache, :tab)::OrdinaryDiffEq.Tsit5ConstantCache{Float64,Float64}
│ %4 = Base.getfield(%3, :a31)::Float64
│ %5 = Base.getfield(%3, :a32)::Float64
│ %6 = Base.getfield(cache, :k1)::Array{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},1}
│ %7 = Base.getfield(cache, :k2)::Array{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},1}
└── %8 = Base.getfield(cache, :tmp)::Array{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},1}
2 ┄ %9 = φ (#1 => 1, #6 => %71)::Int64
│ %10 = φ (#1 => 1, #6 => %72)::Int64
│ %11 = Base.arrayref(false, %7, %9)::ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4}
│ %12 = Base.arrayref(false, %6, %9)::ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4}
│ %13 = Base.getfield(%12, :value)::Float64
│ %14 = Base.mul_float(%4, %13)::Float64
│ %15 = Base.getfield(%12, :partials)::ForwardDiff.Partials{4,Float64}
│ %16 = Base.getfield(%15, :values)::NTuple{4,Float64}
│ %17 = Base.getfield(%16, 1, false)::Float64
│ %18 = Base.mul_float(%17, %4)::Float64
│ %19 = Base.getfield(%16, 2, false)::Float64
│ %20 = Base.mul_float(%19, %4)::Float64
│ %21 = Base.getfield(%16, 3, false)::Float64
│ %22 = Base.mul_float(%21, %4)::Float64
│ %23 = Base.getfield(%16, 4, false)::Float64
│ %24 = Base.mul_float(%23, %4)::Float64
│ %25 = Base.getfield(%11, :value)::Float64
│ %26 = Base.muladd_float(%25, %5, %14)::Float64
│ %27 = Base.getfield(%11, :partials)::ForwardDiff.Partials{4,Float64}
│ %28 = Base.getfield(%27, :values)::NTuple{4,Float64}
│ %29 = Base.getfield(%28, 1, true)::Float64
│ %30 = Base.muladd_float(%29, %5, %18)::Float64
│ %31 = Base.getfield(%11, :partials)::ForwardDiff.Partials{4,Float64}
│ %32 = Base.getfield(%31, :values)::NTuple{4,Float64}
│ %33 = Base.getfield(%32, 2, true)::Float64
│ %34 = Base.muladd_float(%33, %5, %20)::Float64
│ %35 = Base.getfield(%11, :partials)::ForwardDiff.Partials{4,Float64}
│ %36 = Base.getfield(%35, :values)::NTuple{4,Float64}
│ %37 = Base.getfield(%36, 3, true)::Float64
│ %38 = Base.muladd_float(%37, %5, %22)::Float64
│ %39 = Base.getfield(%11, :partials)::ForwardDiff.Partials{4,Float64}
│ %40 = Base.getfield(%39, :values)::NTuple{4,Float64}
│ %41 = Base.getfield(%40, 4, true)::Float64
│ %42 = Base.muladd_float(%41, %5, %24)::Float64
│ %43 = Base.arrayref(false, %2, %9)::ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4}
│ %44 = Base.getfield(%43, :value)::Float64
│ %45 = Base.muladd_float(%26, %1, %44)::Float64
│ %46 = Base.getfield(%43, :partials)::ForwardDiff.Partials{4,Float64}
│ %47 = Base.getfield(%46, :values)::NTuple{4,Float64}
│ %48 = Base.getfield(%47, 1, true)::Float64
│ %49 = Base.muladd_float(%30, %1, %48)::Float64
│ %50 = Base.getfield(%43, :partials)::ForwardDiff.Partials{4,Float64}
│ %51 = Base.getfield(%50, :values)::NTuple{4,Float64}
│ %52 = Base.getfield(%51, 2, true)::Float64
│ %53 = Base.muladd_float(%34, %1, %52)::Float64
│ %54 = Base.getfield(%43, :partials)::ForwardDiff.Partials{4,Float64}
│ %55 = Base.getfield(%54, :values)::NTuple{4,Float64}
│ %56 = Base.getfield(%55, 3, true)::Float64
│ %57 = Base.muladd_float(%38, %1, %56)::Float64
│ %58 = Base.getfield(%43, :partials)::ForwardDiff.Partials{4,Float64}
│ %59 = Base.getfield(%58, :values)::NTuple{4,Float64}
│ %60 = Base.getfield(%59, 4, true)::Float64
│ %61 = Base.muladd_float(%42, %1, %60)::Float64
│ %62 = Core.tuple(%49, %53, %57, %61)::NTuple{4,Float64}
│ %63 = %new(ForwardDiff.Partials{4,Float64}, %62)::ForwardDiff.Partials{4,Float64}
│ %64 = %new(ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4}, %45, %63)::ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4}
│ Base.arrayset(false, %8, %64, %9)::Array{ForwardDiff.Dual{ForwardDiff.Tag{var"#25#26",Float64},Float64,4},1}
│ %66 = (%10 === 3)::Bool
└── goto #4 if not %66
3 ─ goto #5
4 ─ %69 = Base.add_int(%10, 1)::Int64
└── goto #5
5 ┄ %71 = φ (#4 => %69)::Int64
│ %72 = φ (#4 => %69)::Int64
│ %73 = φ (#3 => true, #4 => false)::Bool
│ %74 = Base.not_int(%73)::Bool
└── goto #7 if not %74
6 ─ goto #2
7 ─ return OrdinaryDiffEq.nothing
)
Select a call to descend into or ↩ to ascend. [q]uit.
Toggles: [o]ptimize, [w]arn, [d]ebuginfo, [s]yntax highlight for LLVM/Native.
Show: [L]LVM IR, [N]ative code
Advanced: dump [P]arams cache.
• ↩
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment