Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The first commit performs some cleanup, in that it reduces the scope of some local variables for the newton step.
The second commit replaces manually allocated/deallocated buffers with
std::vector
for automatic memory management. This does not change any interfaces, as we can simply pass vector.data() as the pointer to the allocated buffer. It has the advantage that functions can return early safely, without having to worry about memory leaks.I have also removed the short-lived allocation of the
w_0
vector, because we have multiple double arrays of appropriate size that are unused at the moment. If you allowC++11
this could be written somewhat cleaner using astd::move
, for now I have added an explanatory comment.