return fixed length array and len to avoid heap allocation
This commit is contained in:
parent
08d4e7d997
commit
01a8efe4d4
@ -2,7 +2,7 @@
|
||||
use crate::integer::Planar64;
|
||||
|
||||
#[inline]
|
||||
pub fn zeroes2(a0:Planar64,a1:Planar64,a2:Planar64) -> Vec<Planar64>{
|
||||
pub fn zeroes2<'a>(a0:Planar64,a1:Planar64,a2:Planar64)->&'a [Planar64]{
|
||||
if a2==Planar64::ZERO{
|
||||
return zeroes1(a0,a1);
|
||||
}
|
||||
@ -12,21 +12,21 @@ pub fn zeroes2(a0:Planar64,a1:Planar64,a2:Planar64) -> Vec<Planar64>{
|
||||
let planar_radicand=Planar64::raw(unsafe{(radicand as f64).sqrt().to_int_unchecked()});
|
||||
//TODO: one or two newtons
|
||||
if Planar64::ZERO<a2{
|
||||
return vec![(-a1-planar_radicand)/(a2*2),(-a1+planar_radicand)/(a2*2)];
|
||||
&[(-a1-planar_radicand)/(a2*2),(-a1+planar_radicand)/(a2*2)]
|
||||
}else{
|
||||
return vec![(-a1+planar_radicand)/(a2*2),(-a1-planar_radicand)/(a2*2)];
|
||||
&[(-a1+planar_radicand)/(a2*2),(-a1-planar_radicand)/(a2*2)]
|
||||
}
|
||||
}else if radicand==0{
|
||||
return vec![a1/(a2*-2)];
|
||||
&[a1/(a2*-2)]
|
||||
}else{
|
||||
return vec![];
|
||||
&[]
|
||||
}
|
||||
}
|
||||
#[inline]
|
||||
pub fn zeroes1(a0:Planar64,a1:Planar64) -> Vec<Planar64> {
|
||||
pub fn zeroes1<'a>(a0:Planar64,a1:Planar64)->&'a [Planar64]{
|
||||
if a1==Planar64::ZERO{
|
||||
return vec![];
|
||||
&[]
|
||||
}else{
|
||||
return vec![-a0/a1];
|
||||
&[-a0/a1]
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user