Skip Menu |

This queue is for tickets about the Algorithm-LBFGS CPAN distribution.

Report information
The Basics
Id: 81251
Status: new
Priority: 0/
Queue: Algorithm-LBFGS

People
Owner: Nobody in particular
Requestors: DKOGAN [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: PATCH - fmin() no longer modifies its input
Currently the fmin() function modifies its input. The attached patch makes a copy first to let the input remain constant.
Subject: 0002-fmin-no-longer-modifies-its-input.patch
From: Dima Kogan <dima@secretsauce.net> Date: Sat, 17 Nov 2012 12:24:54 -0800 Subject: fmin() no longer modifies its input Forwarded: yes --- lib/Algorithm/LBFGS.pm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/Algorithm/LBFGS.pm b/lib/Algorithm/LBFGS.pm index 2cb7c68..90ac036 100644 --- a/lib/Algorithm/LBFGS.pm +++ b/lib/Algorithm/LBFGS.pm @@ -75,11 +75,16 @@ sub fmin { $lbfgs_prgr = $verbose_monitor if ($lbfgs_prgr eq 'verbose'); $lbfgs_prgr = $logging_monitor if ($lbfgs_prgr eq 'logging'); } + + # do_lbfgs() modifies the state vector; I don't want to modify the input so + # I make a copy here + my @x = @$x0; + my $instance = create_lbfgs_instance($lbfgs_eval, $lbfgs_prgr, $user_data); - $self->{status} = status_2pv(do_lbfgs($self->{param}, $instance, $x0)); + $self->{status} = status_2pv(do_lbfgs($self->{param}, $instance, \@x)); destroy_lbfgs_instance($instance); - return $x0; + return \@x; } # query status