You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For example, the argument of OpArgsNum is duplicated. OpArgsNum is used whenever there is a dynamic closure call (call of unknown closure). The argument to OpArgsNum is copied over twice. This will be then evaluated twice.
This can change the complexity of recursive functions returning closures from linear to exponential.
The text was updated successfully, but these errors were encountered:
We should look through the code carefully and remove all duplication. We cannot duplicate anything -- this is not a constant-factor inefficiency. It can change the asymptotic complexity to exponential!
lukaszcz
changed the title
Arguments to some operations still get duplicated
Nockma compilation: arguments to some operations still get duplicated
Sep 10, 2024
* Closes#3013
* Removes all remaining problems with evaluation duplication that could
potentially lead to an exponential blow-up in the running time.
* Adds the capacity to generate saves of temporary values in the Nock
code generation backend.
* Removes the `TempHeight` transformation on JuvixTree. It is no longer
needed.
* Removes the `ComputeCaseANF` transformation on JuvixCore from the
Anoma pipeline. It is no longer necessary.
For example, the argument of
OpArgsNum
is duplicated.OpArgsNum
is used whenever there is a dynamic closure call (call of unknown closure). The argument toOpArgsNum
is copied over twice. This will be then evaluated twice.This can change the complexity of recursive functions returning closures from linear to exponential.
The text was updated successfully, but these errors were encountered: