@@ -2779,17 +2779,16 @@ sub PDL::mgeigenx {
27792779 my $di = $_ [0]->dims_internal;
27802780 my ($a , $b , %opt ) = @_ ;
27812781 my @adims = $a ->dims;
2782+ $_ = $_ ->new_or_inplace->t for $a , $b ;
27822783 my (%result );
27832784 $_ = $a ->_similar_null for my ($vl , $vr , $beta );
2784- $a = $a ->copy;
2785- $b = $b ->t->copy;
27862785 my @w = map $a ->_similar_null, $a ->_is_complex ? 1 : 1..2;
27872786 $_ = null for my ($rconde , $rcondv , $info , $ilo , $ihi , $rscale , $lscale , $abnrm , $bbnrm );
27882787 my $jobvl = $vector2jobvl {$opt {vector}} || $opt {rcondition} ? 1 : 0;
27892788 my $jobvr = $vector2jobvr {$opt {vector}} || $opt {rcondition} ? 1 : 0;
27902789 my $sense = $rcondition2sense {$opt {rcondition}} || 0;
2791- my $balanc = ($opt {' scale' }?2:0) | ($opt {permute}?1:0);
2792- $a ->t-> _call_method('ggevx', $balanc , $jobvl , $jobvr , $sense , $b , @w ,
2790+ my $balanc = ($opt {scale}?2:0) | ($opt {permute}?1:0);
2791+ $a ->_call_method('ggevx', $balanc , $jobvl , $jobvr , $sense , $b , @w ,
27932792 $beta , $vl , $vr , $ilo , $ihi , $lscale , $rscale ,
27942793 $abnrm , $bbnrm , $rconde , $rcondv , $info );
27952794 (my $w , $vl , $vr ) = _eigen_extract($jobvl , $jobvr , $vl , $vr , @w );
@@ -2799,21 +2798,20 @@ sub PDL::mgeigenx {
27992798 } elsif ($info ) {
28002799 laerror("mgeigenx: Error from hgeqz or tgevc");
28012800 }
2802- $result {'aschur'} = $a if $opt {'schur'};
2803- $result {'bschur'} = $b ->t->sever if $opt {'schur'};
2804- $result {'balance'} = cat $ilo , $ihi if $opt {'permute'};
2801+ $result {qw(aschur bschur)} = map $_ ->t, $a , $b if $opt {schur};
2802+ $result {balance} = cat $ilo , $ihi if $opt {permute};
28052803 @result {qw(info anorm bnorm)} = ($info , $abnrm , $bbnrm );
2806- @result {qw(lscale rscale)} = ($lscale , $rscale ) if $opt {' scale' };
2804+ @result {qw(lscale rscale)} = ($lscale , $rscale ) if $opt {scale};
28072805 # Doesn't use lacpy2 =(sqrt **2 , **2) without unnecessary overflow
28082806 if ($sense & 2) {
2809- $result {' rcondv' } = $rcondv ;
2810- $result {' verror' } = lamch(0) * sqrt($abnrm ->pow(2) + $bbnrm ->pow(2)) /$rcondv if $opt {' error' };
2807+ $result {rcondv} = $rcondv ;
2808+ $result {verror} = lamch(0) * sqrt($abnrm ->pow(2) + $bbnrm ->pow(2)) /$rcondv if $opt {error};
28112809 }
28122810 if ($sense & 1) {
2813- $result {' rconde' } = $rconde ;
2814- $result {' eerror' } = lamch(0) * sqrt($abnrm ->pow(2) + $bbnrm ->pow(2)) /$rconde if $opt {' error' };
2811+ $result {rconde} = $rconde ;
2812+ $result {eerror} = lamch(0) * sqrt($abnrm ->pow(2) + $bbnrm ->pow(2)) /$rconde if $opt {error};
28152813 }
2816- ($w , $beta , ($vector2jobvl {$opt {vector}}?$vl ->t->sever :()), ($vector2jobvr {$opt {vector}}?$vr ->t->sever :()), %result );
2814+ ($w , $beta , ($vector2jobvl {$opt {vector}}?$vl ->t:()), ($vector2jobvr {$opt {vector}}?$vr ->t:()), %result );
28172815}
28182816
28192817=head2 msymeigen
0 commit comments